diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-04-20 03:09:25 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-04-24 16:14:29 +0200 |
commit | 82f2b76e25a4a67e01ec67e5ebe39d14ad771ea8 (patch) | |
tree | 965f6eb89b84d65a62b49008fd972c004832ccd1 /thirdparty/systemjs/lib/esm.js | |
parent | e6e0cbc387c2a77b48e4065c229daa65bf1aa0fa (diff) |
Reorganize module loading.
We now use webpack instead of SystemJS, effectively bundling modules
into one file (plus commons chunks) for every entry point. This results
in a much smaller extension size (almost half). Furthermore we use
yarn/npm even for extension run-time dependencies. This relieves us
from manually vendoring and building dependencies. It's also easier to
understand for new developers familiar with node.
Diffstat (limited to 'thirdparty/systemjs/lib/esm.js')
-rw-r--r-- | thirdparty/systemjs/lib/esm.js | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/thirdparty/systemjs/lib/esm.js b/thirdparty/systemjs/lib/esm.js deleted file mode 100644 index 84ac0f353..000000000 --- a/thirdparty/systemjs/lib/esm.js +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Extension to detect ES6 and auto-load Traceur or Babel for processing - */ -(function() { - // good enough ES6 module detection regex - format detections not designed to be accurate, but to handle the 99% use case - var esmRegEx = /(^\s*|[}\);\n]\s*)(import\s*(['"]|(\*\s+as\s+)?[^"'\(\)\n;]+\s*from\s*['"]|\{)|export\s+\*\s+from\s+["']|export\s*(\{|default|function|class|var|const|let|async\s+function))/; - - var traceurRuntimeRegEx = /\$traceurRuntime\s*\./; - var babelHelpersRegEx = /babelHelpers\s*\./; - - hook('translate', function(translate) { - return function(load) { - var loader = this; - var args = arguments; - return translate.apply(loader, args) - .then(function(source) { - // detect & transpile ES6 - if (load.metadata.format == 'esm' || load.metadata.format == 'es6' || !load.metadata.format && source.match(esmRegEx)) { - if (load.metadata.format == 'es6') - warn.call(loader, 'Module ' + load.name + ' has metadata setting its format to "es6", which is deprecated.\nThis should be updated to "esm".'); - - load.metadata.format = 'esm'; - - if (load.metadata.deps) { - var depInject = ''; - for (var i = 0; i < load.metadata.deps.length; i++) - depInject += 'import "' + load.metadata.deps[i] + '"; '; - load.source = depInject + source; - } - - if (loader.transpiler === false) { - // we accept translation to esm for builds though to enable eg rollup optimizations - if (loader.builder) - return source; - throw new TypeError('Unable to dynamically transpile ES module as SystemJS.transpiler set to false.'); - } - - // setting _loader.loadedTranspiler = false tells the next block to - // do checks for setting transpiler metadata - loader._loader.loadedTranspiler = loader._loader.loadedTranspiler || false; - if (loader.pluginLoader) - loader.pluginLoader._loader.loadedTranspiler = loader._loader.loadedTranspiler || false; - - // do transpilation - return (loader._loader.transpilerPromise || ( - loader._loader.transpilerPromise = Promise.resolve( - __global[loader.transpiler == 'typescript' ? 'ts' : loader.transpiler] || (loader.pluginLoader || loader).normalize(loader.transpiler) - .then(function(normalized) { - loader._loader.transpilerNormalized = normalized; - return (loader.pluginLoader || loader).load(normalized) - .then(function() { - return (loader.pluginLoader || loader).get(normalized); - }); - }) - ))).then(function(transpiler) { - loader._loader.loadedTranspilerRuntime = true; - - // translate hooks means this is a transpiler plugin instead of a raw implementation - if (transpiler.translate) { - // if transpiler is the same as the plugin loader, then don't run twice - if (transpiler == load.metadata.loaderModule) - return load.source; - load.metadata.loaderModule = transpiler; - load.metadata.loader = loader._loader.transpilerNormalized; - - // convert the source map into an object for transpilation chaining - if (typeof load.metadata.sourceMap == 'string') - load.metadata.sourceMap = JSON.parse(load.metadata.sourceMap); - - return Promise.resolve(transpiler.translate.apply(loader, args)) - .then(function(source) { - // sanitize sourceMap if an object not a JSON string - var sourceMap = load.metadata.sourceMap; - if (sourceMap && typeof sourceMap == 'object') { - var originalName = load.address.split('!')[0]; - - // force set the filename of the original file - if (!sourceMap.file || sourceMap.file == load.address) - sourceMap.file = originalName + '!transpiled'; - - // force set the sources list if only one source - if (!sourceMap.sources || sourceMap.sources.length <= 1 && (!sourceMap.sources[0] || sourceMap.sources[0] == load.address)) - sourceMap.sources = [originalName]; - } - - if (load.metadata.format == 'esm' && !loader.builder && detectRegisterFormat(source)) - load.metadata.format = 'register'; - return source; - }); - } - - // legacy builder support - if (loader.builder) - load.metadata.originalSource = load.source; - - // defined in es6-module-loader/src/transpile.js - return transpile.call(loader, load) - .then(function(source) { - // clear sourceMap as transpiler embeds it - load.metadata.sourceMap = undefined; - return source; - }); - }, function(err) { - throw addToError(err, 'Unable to load transpiler to transpile ' + load.name); - }); - } - - // skip transpiler and transpiler runtime loading when transpiler is disabled - if (loader.transpiler === false) - return source; - - // load the transpiler correctly - if (loader._loader.loadedTranspiler === false && (loader.transpiler == 'traceur' || loader.transpiler == 'typescript' || loader.transpiler == 'babel') - && load.name == loader.normalizeSync(loader.transpiler)) { - - // always load transpiler as a global - if (source.length > 100 && !load.metadata.format) { - load.metadata.format = 'global'; - - if (loader.transpiler === 'traceur') - load.metadata.exports = 'traceur'; - if (loader.transpiler === 'typescript') - load.metadata.exports = 'ts'; - } - - loader._loader.loadedTranspiler = true; - } - - // load the transpiler runtime correctly - if (loader._loader.loadedTranspilerRuntime === false) { - if (load.name == loader.normalizeSync('traceur-runtime') - || load.name == loader.normalizeSync('babel/external-helpers*')) { - if (source.length > 100) - load.metadata.format = load.metadata.format || 'global'; - - loader._loader.loadedTranspilerRuntime = true; - } - } - - // detect transpiler runtime usage to load runtimes - if ((load.metadata.format == 'register' || load.metadata.bundle) && loader._loader.loadedTranspilerRuntime !== true) { - if (loader.transpiler == 'traceur' && !__global.$traceurRuntime && load.source.match(traceurRuntimeRegEx)) { - loader._loader.loadedTranspilerRuntime = loader._loader.loadedTranspilerRuntime || false; - return loader['import']('traceur-runtime').then(function() { - return source; - }); - } - if (loader.transpiler == 'babel' && !__global.babelHelpers && load.source.match(babelHelpersRegEx)) { - loader._loader.loadedTranspilerRuntime = loader._loader.loadedTranspilerRuntime || false; - return loader['import']('babel/external-helpers').then(function() { - return source; - }); - } - } - - return source; - }); - }; - }); - -})(); |