Skip to content

Commit 87adbff

Browse files
committed
microsoft#53526 Do not use Promise in utils
1 parent 1919477 commit 87adbff

9 files changed

Lines changed: 31 additions & 26 deletions

File tree

src/vs/base/node/extfs.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { encode, encodeStream } from 'vs/base/node/encoding';
1414
import * as flow from 'vs/base/node/flow';
1515
import { CancellationToken } from 'vs/base/common/cancellation';
1616
import { IDisposable, toDisposable, Disposable } from 'vs/base/common/lifecycle';
17+
import { TPromise } from 'vs/base/common/winjs.base';
1718

1819
const loop = flow.loop;
1920

@@ -128,40 +129,40 @@ function doCopyFile(source: string, target: string, mode: number, callback: (err
128129
reader.pipe(writer);
129130
}
130131

131-
export function mkdirp(path: string, mode?: number, token?: CancellationToken): Promise<boolean> {
132+
export function mkdirp(path: string, mode?: number, token?: CancellationToken): TPromise<boolean> {
132133
const mkdir = () => {
133134
return nfcall(fs.mkdir, path, mode).then(null, (mkdirErr: NodeJS.ErrnoException) => {
134135

135136
// ENOENT: a parent folder does not exist yet
136137
if (mkdirErr.code === 'ENOENT') {
137-
return Promise.reject(mkdirErr);
138+
return TPromise.wrapError(mkdirErr);
138139
}
139140

140141
// Any other error: check if folder exists and
141142
// return normally in that case if its a folder
142143
return nfcall(fs.stat, path).then((stat: fs.Stats) => {
143144
if (!stat.isDirectory()) {
144-
return Promise.reject(new Error(`'${path}' exists and is not a directory.`));
145+
return TPromise.wrapError(new Error(`'${path}' exists and is not a directory.`));
145146
}
146147

147148
return null;
148149
}, statErr => {
149-
return Promise.reject(mkdirErr); // bubble up original mkdir error
150+
return TPromise.wrapError(mkdirErr); // bubble up original mkdir error
150151
});
151152
});
152153
};
153154

154155
// stop at root
155156
if (path === paths.dirname(path)) {
156-
return Promise.resolve(true);
157+
return TPromise.wrap(true);
157158
}
158159

159160
// recursively mkdir
160161
return mkdir().then(null, (err: NodeJS.ErrnoException) => {
161162

162163
// Respect cancellation
163164
if (token && token.isCancellationRequested) {
164-
return Promise.resolve(false);
165+
return TPromise.as(false);
165166
}
166167

167168
// ENOENT: a parent folder does not exist yet, continue
@@ -171,7 +172,7 @@ export function mkdirp(path: string, mode?: number, token?: CancellationToken):
171172
}
172173

173174
// Any other error
174-
return Promise.reject(err);
175+
return TPromise.wrapError(err);
175176
});
176177
}
177178

src/vs/base/node/pfs.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,22 @@ export function readdir(path: string): Promise<string[]> {
1515
return nfcall(extfs.readdir, path);
1616
}
1717

18-
export function exists(path: string): Promise<boolean> {
19-
return new Promise(c => fs.exists(path, c));
18+
export function exists(path: string): TPromise<boolean> {
19+
return new TPromise(c => fs.exists(path, c));
2020
}
2121

2222
export function chmod(path: string, mode: number): Promise<boolean> {
2323
return nfcall(fs.chmod, path, mode);
2424
}
2525

2626
export import mkdirp = extfs.mkdirp;
27+
import { TPromise } from 'vs/base/common/winjs.base';
2728

2829
export function rimraf(path: string): Promise<void> {
2930
return lstat(path).then(stat => {
3031
if (stat.isDirectory() && !stat.isSymbolicLink()) {
3132
return readdir(path)
32-
.then(children => Promise.all(children.map(child => rimraf(join(path, child)))))
33+
.then(children => TPromise.join(children.map(child => rimraf(join(path, child)))))
3334
.then(() => rmdir(path));
3435
} else {
3536
return unlink(path);
@@ -39,7 +40,7 @@ export function rimraf(path: string): Promise<void> {
3940
return void 0;
4041
}
4142

42-
return Promise.reject(err);
43+
return TPromise.wrapError(err);
4344
});
4445
}
4546

@@ -98,10 +99,11 @@ export function writeFile(path: string, data: string, options?: extfs.IWriteFile
9899
export function writeFile(path: string, data: Buffer, options?: extfs.IWriteFileOptions): Promise<void>;
99100
export function writeFile(path: string, data: Uint8Array, options?: extfs.IWriteFileOptions): Promise<void>;
100101
export function writeFile(path: string, data: NodeJS.ReadableStream, options?: extfs.IWriteFileOptions): Promise<void>;
101-
export function writeFile(path: string, data: any, options?: extfs.IWriteFileOptions): Promise<void> {
102+
export function writeFile(path: string, data: any, options?: extfs.IWriteFileOptions): Promise<void>;
103+
export function writeFile(path: string, data: any, options?: extfs.IWriteFileOptions): any {
102104
const queueKey = toQueueKey(path);
103105

104-
return Promise.resolve(ensureWriteFileQueue(queueKey).queue(() => nfcall(extfs.writeFileAndFlush, path, data, options)));
106+
return ensureWriteFileQueue(queueKey).queue(() => nfcall(extfs.writeFileAndFlush, path, data, options));
105107
}
106108

107109
function toQueueKey(path: string): string {
@@ -134,7 +136,7 @@ function ensureWriteFileQueue(queueKey: string): Queue<void> {
134136
*/
135137
export function readDirsInDir(dirPath: string): Promise<string[]> {
136138
return readdir(dirPath).then(children => {
137-
return Promise.all(children.map(c => dirExists(join(dirPath, c)))).then(exists => {
139+
return TPromise.join(children.map(c => dirExists(join(dirPath, c)))).then(exists => {
138140
return children.filter((_, i) => exists[i]);
139141
});
140142
});
@@ -168,10 +170,10 @@ export function del(path: string, tmp = getTmpDir()): Promise<void> {
168170
return nfcall(extfs.del, path, tmp);
169171
}
170172

171-
export function whenDeleted(path: string): Promise<void> {
173+
export function whenDeleted(path: string): TPromise<void> {
172174

173175
// Complete when wait marker file is deleted
174-
return new Promise<void>(c => {
176+
return new TPromise<void>(c => {
175177
let running = false;
176178
const interval = setInterval(() => {
177179
if (!running) {

src/vs/platform/extensionManagement/node/extensionManagementService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ export class ExtensionManagementService extends Disposable implements IExtension
677677
}
678678

679679
private preUninstallExtension(extension: ILocalExtension): Promise<void> {
680-
return pfs.exists(extension.location.fsPath)
680+
return Promise.resolve(pfs.exists(extension.location.fsPath))
681681
.then(exists => exists ? null : Promise.reject(new Error(nls.localize('notExists', "Could not find extension"))))
682682
.then(() => {
683683
this.logService.info('Uninstalling extension:', extension.identifier.id);

src/vs/platform/node/zip.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ function extractEntry(stream: Readable, fileName: string, mode: number, targetPa
8787
}
8888
});
8989

90-
return mkdirp(targetDirName, void 0, token).then(() => new Promise((c, e) => {
90+
return Promise.resolve(mkdirp(targetDirName, void 0, token)).then(() => new Promise((c, e) => {
9191
if (token.isCancellationRequested) {
9292
return;
9393
}

src/vs/workbench/parts/cli/electron-browser/cli.contribution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ function getSource(): string {
3434
}
3535

3636
function isAvailable(): Promise<boolean> {
37-
return pfs.exists(getSource());
37+
return Promise.resolve(pfs.exists(getSource()));
3838
}
3939

4040
class InstallAction extends Action {

src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import { URLService } from 'vs/platform/url/common/urlService';
4747
import { IExperimentService } from 'vs/workbench/parts/experiments/node/experimentService';
4848
import { TestExperimentService } from 'vs/workbench/parts/experiments/test/electron-browser/experimentService.test';
4949
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
50+
import { TPromise } from 'vs/base/common/winjs.base';
5051

5152
const mockExtensionGallery: IGalleryExtension[] = [
5253
aGalleryExtension('MockExtension1', {
@@ -258,13 +259,13 @@ suite('ExtensionsTipsService Test', () => {
258259
}
259260
});
260261

261-
function setUpFolderWorkspace(folderName: string, recommendedExtensions: string[], ignoredRecommendations: string[] = []): Promise<void> {
262+
function setUpFolderWorkspace(folderName: string, recommendedExtensions: string[], ignoredRecommendations: string[] = []): TPromise<void> {
262263
const id = uuid.generateUuid();
263264
parentResource = path.join(os.tmpdir(), 'vsctests', id);
264265
return setUpFolder(folderName, parentResource, recommendedExtensions, ignoredRecommendations);
265266
}
266267

267-
function setUpFolder(folderName: string, parentDir: string, recommendedExtensions: string[], ignoredRecommendations: string[] = []): Promise<void> {
268+
function setUpFolder(folderName: string, parentDir: string, recommendedExtensions: string[], ignoredRecommendations: string[] = []): TPromise<void> {
268269
const folderDir = path.join(parentDir, folderName);
269270
const workspaceSettingsDir = path.join(folderDir, '.vscode');
270271
return mkdirp(workspaceSettingsDir, 493).then(() => {

src/vs/workbench/services/configuration/node/configuration.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ export class CachedFolderConfiguration extends Disposable implements IFolderConf
400400
}
401401

402402
private createCachedFolder(): Promise<boolean> {
403-
return pfs.exists(this.cachedFolderPath)
403+
return Promise.resolve(pfs.exists(this.cachedFolderPath))
404404
.then(null, () => false)
405405
.then(exists => exists ? exists : pfs.mkdirp(this.cachedFolderPath).then(() => true, () => false));
406406
}

src/vs/workbench/services/configuration/test/electron-browser/configurationEditingService.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import { INotificationService } from 'vs/platform/notification/common/notificati
3636
import { ICommandService } from 'vs/platform/commands/common/commands';
3737
import { CommandService } from 'vs/workbench/services/commands/common/commandService';
3838
import { URI } from 'vs/base/common/uri';
39+
import { TPromise } from 'vs/base/common/winjs.base';
3940

4041
class SettingsTestEnvironmentService extends EnvironmentService {
4142

@@ -82,7 +83,7 @@ suite('ConfigurationEditingService', () => {
8283
.then(() => setUpServices());
8384
});
8485

85-
function setUpWorkspace(): Promise<boolean> {
86+
function setUpWorkspace(): TPromise<boolean> {
8687
const id = uuid.generateUuid();
8788
parentDir = path.join(os.tmpdir(), 'vsctests', id);
8889
workspaceDir = path.join(parentDir, 'workspaceconfig', id);

src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,23 +51,23 @@ function setUpFolderWorkspace(folderName: string): Promise<{ parentDir: string,
5151
function setUpFolder(folderName: string, parentDir: string): Promise<string> {
5252
const folderDir = path.join(parentDir, folderName);
5353
const workspaceSettingsDir = path.join(folderDir, '.vscode');
54-
return pfs.mkdirp(workspaceSettingsDir, 493).then(() => folderDir);
54+
return Promise.resolve(pfs.mkdirp(workspaceSettingsDir, 493).then(() => folderDir));
5555
}
5656

5757
function setUpWorkspace(folders: string[]): Promise<{ parentDir: string, configPath: string }> {
5858

5959
const id = uuid.generateUuid();
6060
const parentDir = path.join(os.tmpdir(), 'vsctests', id);
6161

62-
return pfs.mkdirp(parentDir, 493)
62+
return Promise.resolve(pfs.mkdirp(parentDir, 493)
6363
.then(() => {
6464
const configPath = path.join(parentDir, 'vsctests.code-workspace');
6565
const workspace = { folders: folders.map(path => ({ path })) };
6666
fs.writeFileSync(configPath, JSON.stringify(workspace, null, '\t'));
6767

6868
return Promise.all(folders.map(folder => setUpFolder(folder, parentDir)))
6969
.then(() => ({ parentDir, configPath }));
70-
});
70+
}));
7171

7272
}
7373

0 commit comments

Comments
 (0)