UNPKG

@gongt/ts-stl-client

Version:
137 lines (133 loc) 4.13 kB
"use strict"; /// <reference types="systemjs"/> Object.defineProperty(exports, "__esModule", { value: true }); const check_environment_1 = require("@gongt/ts-stl-library/check-environment"); const create_logger_1 = require("@gongt/ts-stl-library/debug/create-logger"); const levels_1 = require("@gongt/ts-stl-library/debug/levels"); const warn = create_logger_1.createLogger(levels_1.LOG_LEVEL.WARN, 'jspm-pass'); const silly = create_logger_1.createLogger(levels_1.LOG_LEVEL.SILLY, 'jspm-pass'); const cjsConfig = { format: 'cjs', defaultExtension: 'js', main: 'index.js', }; const resolved = {}; function resolveModule(module, withDeps) { if (check_environment_1.IS_CLIENT) { return null; } if (resolved[module]) { return resolved[module]; } let path; try { path = require.resolve(module + '/package.json'); } catch (e) { warn('can not resolve node_module: %s', module); return resolved[module] = { name: module, }; } const pkg = require(path); // silly('module "%s" %s es6', path, pkg.es6? 'IS' : 'is NOT'); const ret = [{ name: module, es6: !!pkg.es6, }]; if (!withDeps) { return ret[0]; } if (pkg.dependencies) { const deps1 = Object.keys(pkg.dependencies || {}); const subRet = deps1.map(m => resolveModule(m, true)); for (let item of subRet) { if (item) { if (Array.isArray(item)) { ret.push(...item); } else { ret.push(item); } } } } return resolved[module] = ret; } class JspmPackagePassing { constructor() { this.scripts = ''; this.modules = []; this.configData = { map: {}, meta: {}, packages: {}, paths: {}, }; } pathMap(from, to) { this.configData.map[from] = to; } registerNodeModules(module, withDeps = false) { const ret = resolveModule(module, withDeps); if (ret) { if (Array.isArray(ret)) { this.modules.push(...ret); } else { this.modules.push(ret); } } if (!this.configData.map[module]) { this.pathMap(module, 'node_modules/' + module); } } manualRegisterModule(moduleName, def) { this.configData.packages[moduleName] = def; } script(script) { this.scripts += script + '\n\n'; } registerExtension(extension, loader = extension) { const tag = '*.' + extension; if (!this.configData.meta.hasOwnProperty(tag)) { this.configData.meta[tag] = {}; } this.configData.meta[tag].loader = loader; } config() { return this.configData; } toJSON() { throw new TypeError('jspm config can not encode as json, must use toString()'); } static getHeader() { return `<script type="text/javascript">window.CLASS_SUPPORT = window.CLASS_SUPPORT || (function(){ try { eval('"use strict"; class foo {}'); return true; } catch (e) { return false; } })();</script>`.replace(/\s*\n\s*/g, ''); } toString() { return `(function(){ var isIE = /*@cc_on!@*/false || !!document.documentMode; var config = ${JSON.stringify(this.config())}; var myModuleConfig = ${JSON.stringify(cjsConfig)}; var modules = ${JSON.stringify(this.modules)}; modules.forEach(function (mdl) { var name = mdl.name; // config.map[name] = config.paths[name]; config.packages[name] = myModuleConfig; }); config.packageConfigPaths = SystemJS.getConfig().packageConfigPaths; if(modules.length){ config.packageConfigPaths.unshift('node_modules/@*/*/package.json'); config.packageConfigPaths.unshift('node_modules/*/package.json'); } /* scripts */ ${this.scripts} SystemJS.config(config); return config; })();`; } } exports.JspmPackagePassing = JspmPackagePassing; //# sourceMappingURL=jspm-package-passing.js.map