now resolving paths with npm
This commit is contained in:
		
							
								
								
									
										3
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -4,13 +4,16 @@ import * as q from 'q'; | ||||
| /** | ||||
|  * defines a LazyModule | ||||
|  */ | ||||
| export declare type TLoader = 'npm' | 'systemjs'; | ||||
| export declare class LazyModule<T> { | ||||
|     name: string; | ||||
|     nameIsPath: boolean; | ||||
|     cwd: string; | ||||
|     whenLoaded: q.Promise<T>; | ||||
|     loader: TLoader; | ||||
|     private whenLoadedDeferred; | ||||
|     constructor(nameArg: string, cwdArg?: string); | ||||
|     setLoader(loaderArg: TLoader): void; | ||||
|     /** | ||||
|      * loads the module | ||||
|      */ | ||||
|   | ||||
							
								
								
									
										18
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -17,11 +17,9 @@ class Smartsystem { | ||||
| } | ||||
| // create the internal smartsystem | ||||
| let smartsystem = new Smartsystem(); | ||||
| /** | ||||
|  * defines a LazyModule | ||||
|  */ | ||||
| class LazyModule { | ||||
|     constructor(nameArg, cwdArg = process.cwd()) { | ||||
|         this.loader = 'npm'; | ||||
|         this.name = nameArg; | ||||
|         this.cwd = cwdArg; | ||||
|         smartsystem.addLazyModule(this); // add module to smartsystem instance | ||||
| @@ -32,13 +30,23 @@ class LazyModule { | ||||
|         this.whenLoadedDeferred = q.defer(); | ||||
|         this.whenLoaded = this.whenLoadedDeferred.promise; | ||||
|     } | ||||
|     setLoader(loaderArg) { | ||||
|         this.loader = loaderArg; | ||||
|     } | ||||
|     /** | ||||
|      * loads the module | ||||
|      */ | ||||
|     load() { | ||||
|         let done = q.defer(); | ||||
|         let loadedModule; | ||||
|         systemjs.import(this.name).then((m) => { | ||||
|         let loadingPath; | ||||
|         if (this.loader === 'npm') { | ||||
|             loadingPath = require.resolve(this.name); | ||||
|         } | ||||
|         else { | ||||
|             loadingPath = this.name; | ||||
|         } | ||||
|         systemjs.import(loadingPath).then((m) => { | ||||
|             loadedModule = m; | ||||
|             this.whenLoadedDeferred.resolve(loadedModule); | ||||
|             done.resolve(loadedModule); | ||||
| @@ -52,4 +60,4 @@ class LazyModule { | ||||
|     } | ||||
| } | ||||
| exports.LazyModule = LazyModule; | ||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQXVCO0FBRXZCLDZCQUE0QjtBQUM1Qix1QkFBc0I7QUFDdEIsNkJBQStCO0FBQy9CLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUVsQztJQUFBO1FBQ0ksZ0JBQVcsR0FBRyxJQUFJLGVBQVMsRUFBbUIsQ0FBQTtJQVFsRCxDQUFDO0lBTkc7O09BRUc7SUFDSCxhQUFhLENBQUMsYUFBOEI7UUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDdkMsQ0FBQztDQUNKO0FBRUQsa0NBQWtDO0FBQ2xDLElBQUksV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUE7QUFFbkM7O0dBRUc7QUFDSDtJQU1JLFlBQVksT0FBZSxFQUFFLE1BQU0sR0FBVyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ3ZELElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFBO1FBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFBO1FBQ2pCLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxxQ0FBcUM7UUFDckUsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLDZCQUE2QjtRQUN0RSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDN0MsQ0FBQztRQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFLLENBQUE7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFBO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUk7UUFDQSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFLLENBQUE7UUFDdkIsSUFBSSxZQUFlLENBQUE7UUFDbkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM5QixZQUFZLEdBQUcsQ0FBQyxDQUFBO1lBQ2hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM5QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsR0FBRyxJQUF1QjtJQUVuQyxDQUFDO0NBQ0o7QUF0Q0QsZ0NBc0NDIn0= | ||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQXVCO0FBRXZCLDZCQUE0QjtBQUM1Qix1QkFBc0I7QUFDdEIsNkJBQStCO0FBQy9CLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUVsQztJQUFBO1FBQ0ksZ0JBQVcsR0FBRyxJQUFJLGVBQVMsRUFBbUIsQ0FBQTtJQVFsRCxDQUFDO0lBTkc7O09BRUc7SUFDSCxhQUFhLENBQUMsYUFBOEI7UUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDdkMsQ0FBQztDQUNKO0FBRUQsa0NBQWtDO0FBQ2xDLElBQUksV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUE7QUFRbkM7SUFPSSxZQUFZLE9BQWUsRUFBRSxNQUFNLEdBQVcsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUYzRCxXQUFNLEdBQVksS0FBSyxDQUFBO1FBR25CLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFBO1FBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFBO1FBQ2pCLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxxQ0FBcUM7UUFDckUsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLDZCQUE2QjtRQUN0RSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUMsQ0FBQztRQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFLLENBQUE7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFBO0lBQ3JELENBQUM7SUFFRCxTQUFTLENBQUMsU0FBa0I7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUE7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNBLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUssQ0FBQTtRQUN2QixJQUFJLFlBQWUsQ0FBQTtRQUNuQixJQUFJLFdBQW1CLENBQUE7UUFDdkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1QyxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUMzQixDQUFDO1FBQ0QsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLFlBQVksR0FBRyxDQUFDLENBQUE7WUFDaEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzlCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVEsQ0FBQyxHQUFHLElBQXVCO0lBRW5DLENBQUM7Q0FDSjtBQWpERCxnQ0FpREMifQ== | ||||
| @@ -1,4 +1,4 @@ | ||||
| "use strict"; | ||||
| exports.exportedTestBoolean = true; | ||||
| console.log('moduleExample loaded successfully'); | ||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlRXhhbXBsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1vZHVsZUV4YW1wbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFXLFFBQUEsbUJBQW1CLEdBQUcsSUFBSSxDQUFBO0FBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUMsQ0FBQSJ9 | ||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlRXhhbXBsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1vZHVsZUV4YW1wbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFXLFFBQUEsbUJBQW1CLEdBQUcsSUFBSSxDQUFBO0FBRXJDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUMsQ0FBQSJ9 | ||||
| @@ -1,2 +1,3 @@ | ||||
| export let exportedTestBoolean = true | ||||
| import * as q from 'q' | ||||
| console.log('moduleExample loaded successfully') | ||||
|   | ||||
							
								
								
									
										18
									
								
								ts/index.ts
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								ts/index.ts
									
									
									
									
									
								
							| @@ -22,11 +22,15 @@ let smartsystem = new Smartsystem() | ||||
| /** | ||||
|  * defines a LazyModule | ||||
|  */ | ||||
|  | ||||
| export type TLoader = 'npm' | 'systemjs' | ||||
|  | ||||
| export class LazyModule<T> { | ||||
|     name: string | ||||
|     nameIsPath: boolean | ||||
|     cwd: string | ||||
|     whenLoaded: q.Promise<T> | ||||
|     loader: TLoader = 'npm' | ||||
|     private whenLoadedDeferred: q.Deferred<T> | ||||
|     constructor(nameArg: string, cwdArg: string = process.cwd()) { | ||||
|         this.name = nameArg | ||||
| @@ -34,19 +38,29 @@ export class LazyModule<T> { | ||||
|         smartsystem.addLazyModule(this) // add module to smartsystem instance | ||||
|         this.nameIsPath = /\.\//.test(this.name) // figure out if name is path | ||||
|         if (this.nameIsPath) { | ||||
|             this.name = path.join(this.cwd,this.name) | ||||
|             this.name = path.join(this.cwd, this.name) | ||||
|         } | ||||
|         this.whenLoadedDeferred = q.defer<T>() | ||||
|         this.whenLoaded = this.whenLoadedDeferred.promise | ||||
|     } | ||||
|  | ||||
|     setLoader(loaderArg: TLoader) { | ||||
|         this.loader = loaderArg | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * loads the module | ||||
|      */ | ||||
|     load(): q.Promise<T> { | ||||
|         let done = q.defer<T>() | ||||
|         let loadedModule: T | ||||
|         systemjs.import(this.name).then((m) => { | ||||
|         let loadingPath: string | ||||
|         if (this.loader === 'npm') { | ||||
|             loadingPath = require.resolve(this.name) | ||||
|         } else { | ||||
|             loadingPath = this.name | ||||
|         } | ||||
|         systemjs.import(loadingPath).then((m) => { | ||||
|             loadedModule = m | ||||
|             this.whenLoadedDeferred.resolve(loadedModule) | ||||
|             done.resolve(loadedModule) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user