diff --git a/build.gradle b/build.gradle --- a/build.gradle +++ b/build.gradle @@ -12,9 +12,11 @@ def distDir = "$packageDir/$platform" def testDir = "$packageDir/$platform" task printVersion { - println "version: $version" - println "packageName: $packageName" - println "platform: $platform" + doLast { + println "version: $version" + println "packageName: $packageName" + println "platform: $platform" + } } @@ -48,10 +50,14 @@ task _legacyJs(type:Copy) { task _buildTs(dependsOn: _npmInstall, type:Exec) { inputs.dir('src/ts') - inputs.file('tsconfig.json') + inputs.file('src/tsconfig.json') outputs.dir(distDir) - commandLine 'node_modules/.bin/tsc', '-p', 'src/tsconfig.json', '--outDir', distDir + commandLine 'node_modules/.bin/tsc', + '-p', 'src/tsconfig.json', + '--outDir', distDir, + '--listFiles', + '--traceResolution' } task _packageMeta(type: Copy) { diff --git a/package-lock.json b/package-lock.json --- a/package-lock.json +++ b/package-lock.json @@ -84,7 +84,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -129,7 +129,7 @@ "dependencies": { "tape": { "version": "2.3.3", - "resolved": "http://registry.npmjs.org/tape/-/tape-2.3.3.tgz", + "resolved": "https://registry.npmjs.org/tape/-/tape-2.3.3.tgz", "integrity": "sha1-Lnzgox3wn41oUWZKcYQuDKUFevc=", "dev": true, "requires": { @@ -289,7 +289,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, @@ -301,7 +301,7 @@ }, "readable-stream": { "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { @@ -354,7 +354,7 @@ }, "string_decoder": { "version": "0.10.31", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, @@ -411,13 +411,13 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, "through2": { "version": "0.2.3", - "resolved": "http://registry.npmjs.org/through2/-/through2-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", "dev": true, "requires": { diff --git a/src/amd/ts/di/RequireJsHelper.ts b/src/amd/ts/di/RequireJsHelper.ts new file mode 100644 --- /dev/null +++ b/src/amd/ts/di/RequireJsHelper.ts @@ -0,0 +1,46 @@ +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 { + 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(fulfill => { + define(shim, ["require"], r => { + trace.debug("shim resolved"); + return r; + }); + require([shim], fulfill); + }); +} diff --git a/src/ts/Uuid.ts b/src/ts/Uuid.ts --- a/src/ts/Uuid.ts +++ b/src/ts/Uuid.ts @@ -6,7 +6,9 @@ // Copyright (c) 2010-2012 Robert Kieffer // MIT License - http://opensource.org/licenses/mit-license.php -declare var window: any; +declare const window: any; +declare const require; +declare const Buffer; const _window: any = "undefined" !== typeof window ? window : null; diff --git a/src/ts/di/Configuration.ts b/src/ts/di/Configuration.ts --- a/src/ts/di/Configuration.ts +++ b/src/ts/di/Configuration.ts @@ -20,7 +20,7 @@ import { Container } from "./Container"; import { ReferenceDescriptor } from "./ReferenceDescriptor"; import { TypeServiceDescriptor } from "./TypeServiceDescriptor"; import { FactoryServiceDescriptor } from "./FactoryServiceDescriptor"; -import { rjs, createContextRequire, RequireFn } from "./RequireJsHelper"; +import { rjs, createContextRequire, RequireFn } from "../../amd/ts/RequireJsHelper"; import { TraceSource } from "../log/TraceSource"; import { ConfigError } from "./ConfigError"; import { Cancellation } from "../Cancellation"; diff --git a/src/ts/di/RequireJsHelper.ts b/src/ts/di/RequireJsHelper.ts deleted file mode 100644 --- a/src/ts/di/RequireJsHelper.ts +++ /dev/null @@ -1,46 +0,0 @@ -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 { - 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(fulfill => { - define(shim, ["require"], r => { - trace.debug("shim resolved"); - return r; - }); - require([shim], fulfill); - }); -} diff --git a/src/tsconfig.json b/src/tsconfig.json --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -7,10 +7,16 @@ "lib": [ "es5", "es2015.promise", - "es2015.symbol" - ] + "es2015.symbol", + "dom" + ], + "rootDirs": [ + "ts", + "amd/ts" + ], + "types": [] }, "include" : [ - "ts/**/*.ts" + "ts/**/*.ts", "amd/ts/**/*.ts" ] } \ No newline at end of file