##// END OF EJS Templates
working on multi-platform support
working on multi-platform support

File last commit:

r48:2ef1241803ee di-typescript
r48:2ef1241803ee di-typescript
Show More
RequireJsHelper.ts
46 lines | 1.3 KiB | video/mp2t | TypeScriptLexer
/ src / amd / ts / di / RequireJsHelper.ts
import { Uuid } from "../Uuid";
import { argumentNotEmptyString } from "../safe";
import { TraceSource } from "../log/TraceSource";
export interface RequireFn {
(module: string): any;
(modules: string[], cb?: (...args: any[]) => any): void;
}
declare const require: RequireFn;
export const rjs = require;
declare function define(name: string, modules: string[], cb?: (...args: any[]) => any, eb?: (e) => any): void;
declare function define(modules: string[], cb?: (...args: any[]) => any, eb?: (e) => any): void;
interface RequireJsResolverParams {
contextRequire: RequireFn;
}
const trace = TraceSource.get("@implab/core/di/RequireJsHelper");
export async function createContextRequire(moduleName: string): Promise<RequireFn> {
argumentNotEmptyString(moduleName, "moduleName");
const parts = moduleName.split("/");
if (parts[0] === ".")
throw new Error("An absolute module path is required");
if (parts.length > 1)
parts.splice(-1, 1, Uuid());
else
parts.push(Uuid());
const shim = parts.join("/");
trace.debug(`define shim ${shim}`);
return new Promise<RequireFn>(fulfill => {
define(shim, ["require"], r => {
trace.debug("shim resolved");
return r;
});
require([shim], fulfill);
});
}