1+ // Copyright (c) Microsoft Corporation. All rights reserved.
2+ // Licensed under the MIT License.
3+
4+ 'use strict' ;
5+
16import { ModuleNotInstalledError } from './errors/moduleNotInstalledError' ;
2- // tslint:disable-next-line:no-require-imports no-var-requires
3- const tmp = require ( 'tmp' ) ;
47
58export function isNotInstalledError ( error : Error ) : boolean {
69 const isError = typeof ( error ) === 'object' && error !== null ;
@@ -16,73 +19,3 @@ export function isNotInstalledError(error: Error): boolean {
1619 const isModuleNoInstalledError = error . message . indexOf ( 'No module named' ) >= 0 ;
1720 return errorObj . code === 'ENOENT' || errorObj . code === 127 || isModuleNoInstalledError ;
1821}
19-
20- // tslint:disable-next-line:interface-name
21- export interface Deferred < T > {
22- readonly promise : Promise < T > ;
23- readonly resolved : boolean ;
24- readonly rejected : boolean ;
25- readonly completed : boolean ;
26- resolve ( value ?: T | PromiseLike < T > ) ;
27- // tslint:disable-next-line:no-any
28- reject ( reason ?: any ) ;
29- }
30-
31- class DeferredImpl < T > implements Deferred < T > {
32- private _resolve ! : ( value ?: T | PromiseLike < T > ) => void ;
33- // tslint:disable-next-line:no-any
34- private _reject ! : ( reason ?: any ) => void ;
35- private _resolved : boolean = false ;
36- private _rejected : boolean = false ;
37- private _promise : Promise < T > ;
38- // tslint:disable-next-line:no-any
39- constructor ( private scope : any = null ) {
40- // tslint:disable-next-line:promise-must-complete
41- this . _promise = new Promise < T > ( ( res , rej ) => {
42- this . _resolve = res ;
43- this . _reject = rej ;
44- } ) ;
45- }
46- public resolve ( value ?: T | PromiseLike < T > ) {
47- this . _resolve . apply ( this . scope ? this . scope : this , arguments ) ;
48- this . _resolved = true ;
49- }
50- // tslint:disable-next-line:no-any
51- public reject ( reason ?: any ) {
52- this . _reject . apply ( this . scope ? this . scope : this , arguments ) ;
53- this . _rejected = true ;
54- }
55- get promise ( ) : Promise < T > {
56- return this . _promise ;
57- }
58- get resolved ( ) : boolean {
59- return this . _resolved ;
60- }
61- get rejected ( ) : boolean {
62- return this . _rejected ;
63- }
64- get completed ( ) : boolean {
65- return this . _rejected || this . _resolved ;
66- }
67- }
68- // tslint:disable-next-line:no-any
69- export function createDeferred < T > ( scope : any = null ) : Deferred < T > {
70- return new DeferredImpl < T > ( scope ) ;
71- }
72-
73- export function createTemporaryFile ( extension : string , temporaryDirectory ?: string ) : Promise < { filePath : string ; cleanupCallback : Function } > {
74- // tslint:disable-next-line:no-any
75- const options : any = { postfix : extension } ;
76- if ( temporaryDirectory ) {
77- options . dir = temporaryDirectory ;
78- }
79-
80- return new Promise < { filePath : string ; cleanupCallback : Function } > ( ( resolve , reject ) => {
81- tmp . file ( options , ( err , tmpFile , fd , cleanupCallback ) => {
82- if ( err ) {
83- return reject ( err ) ;
84- }
85- resolve ( { filePath : tmpFile , cleanupCallback : cleanupCallback } ) ;
86- } ) ;
87- } ) ;
88- }
0 commit comments