From abd94a7f5a50f43c797a11b53549ae48fff667c3 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 10 Oct 2016 03:43:44 +0200 Subject: add node_modules to address #4364 --- node_modules/systemjs/LICENSE | 10 + node_modules/systemjs/README.md | 149 + .../systemjs/dist/system-csp-production.js | 6 + .../systemjs/dist/system-csp-production.js.map | 1 + .../systemjs/dist/system-csp-production.src.js | 4536 +++++++++++++++++ node_modules/systemjs/dist/system-polyfills.js | 5 + node_modules/systemjs/dist/system-polyfills.js.map | 1 + node_modules/systemjs/dist/system-polyfills.src.js | 1277 +++++ node_modules/systemjs/dist/system-register-only.js | 5 + .../systemjs/dist/system-register-only.js.map | 1 + .../systemjs/dist/system-register-only.src.js | 2198 +++++++++ node_modules/systemjs/dist/system.js | 6 + node_modules/systemjs/dist/system.js.map | 1 + node_modules/systemjs/dist/system.src.js | 5153 ++++++++++++++++++++ node_modules/systemjs/index.js | 48 + node_modules/systemjs/package.json | 100 + 16 files changed, 13497 insertions(+) create mode 100644 node_modules/systemjs/LICENSE create mode 100644 node_modules/systemjs/README.md create mode 100644 node_modules/systemjs/dist/system-csp-production.js create mode 100644 node_modules/systemjs/dist/system-csp-production.js.map create mode 100644 node_modules/systemjs/dist/system-csp-production.src.js create mode 100644 node_modules/systemjs/dist/system-polyfills.js create mode 100644 node_modules/systemjs/dist/system-polyfills.js.map create mode 100644 node_modules/systemjs/dist/system-polyfills.src.js create mode 100644 node_modules/systemjs/dist/system-register-only.js create mode 100644 node_modules/systemjs/dist/system-register-only.js.map create mode 100644 node_modules/systemjs/dist/system-register-only.src.js create mode 100644 node_modules/systemjs/dist/system.js create mode 100644 node_modules/systemjs/dist/system.js.map create mode 100644 node_modules/systemjs/dist/system.src.js create mode 100644 node_modules/systemjs/index.js create mode 100644 node_modules/systemjs/package.json (limited to 'node_modules/systemjs') diff --git a/node_modules/systemjs/LICENSE b/node_modules/systemjs/LICENSE new file mode 100644 index 000000000..1e467a8cf --- /dev/null +++ b/node_modules/systemjs/LICENSE @@ -0,0 +1,10 @@ +MIT License +----------- + +Copyright (C) 2013-2016 Guy Bedford + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/systemjs/README.md b/node_modules/systemjs/README.md new file mode 100644 index 000000000..afe998a27 --- /dev/null +++ b/node_modules/systemjs/README.md @@ -0,0 +1,149 @@ +SystemJS +======== + +[![Build Status][travis-image]][travis-url] +[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/systemjs/systemjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![Support](https://supporterhq.com/api/b/33df4abbec4d39260f49015d2457eafe/SystemJS)](https://supporterhq.com/support/33df4abbec4d39260f49015d2457eafe/SystemJS) + +Universal dynamic module loader - loads ES6 modules, AMD, CommonJS and global scripts in the browser and NodeJS. + +* [Loads any module format](docs/module-formats.md) with [exact circular reference and binding support](https://github.com/ModuleLoader/es6-module-loader/blob/v0.17.0/docs/circular-references-bindings.md). +* Loads [ES6 modules compiled into the `System.register` bundle format for production](docs/production-workflows.md), maintaining circular references support. +* Supports RequireJS-style [map](docs/overview.md#map-config), [paths](https://github.com/ModuleLoader/es6-module-loader/blob/master/docs/loader-config.md#paths-implementation), [bundles](docs/production-workflows.md#bundle-extension) and [global shims](docs/module-formats.md#shim-dependencies). +* [Loader plugins](docs/overview.md#plugin-loaders) allow custom transpilation or asset loading. + +Built to the format ES6-specified loader API from [ES6 Specification Draft Rev 27, Section 15](http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#august_24_2014_draft_rev_27), +and will be updated to the [WhatWG loader API](https://whatwg.github.io/loader/) as soon as it can be considered stable for implementation. + +~19KB minified and gzipped, runs in IE8+ and NodeJS. + +For discussion, join the [Gitter Room](https://gitter.im/systemjs/systemjs). + +Documentation +--- + +* [ES6 Modules Overview](docs/es6-modules-overview.md) +* [SystemJS Overview](docs/overview.md) +* [Config API](docs/config-api.md) +* [Module Formats](docs/module-formats.md) +* [Production Workflows](docs/production-workflows.md) +* [System API](docs/system-api.md) +* [Creating Plugins](docs/creating-plugins.md) + +Basic Use +--- + +### Browser + +```html + + +``` + +The above will support loading all module formats, including ES Modules transpiled into the System.register format. + +To load ES6 code with in-browser transpilation, configure one of the following transpiler plugins: + +* [Babel](https://github.com/systemjs/plugin-babel) +* [TypeScript](https://github.com/frankwallis/plugin-typescript) +* [Traceur](http://github.com/systemjs/plugin-traceur) + +### Promise Polyfill + +SystemJS relies on `Promise` being present in the environment. + +For the best performance in IE and older browsers, it is advisable to load a polyfill like [Bluebird](https://github.com/petkaantonov/bluebird) or [es6-promise](https://github.com/stefanpenner/es6-promise) before SystemJS. + +Otherwise, when Promise is not available, SystemJS will attempt to load the `system-polyfills.js` file located in the dist folder which contains the when.js Promise polyfill. + +### NodeJS + +To load modules in NodeJS, install SystemJS with: + +``` + npm install systemjs +``` + +If transpiling ES6, also install the transpiler plugin, following the instructions from the transpiler project page. + +We can then load modules equivalently in NodeJS as we do in the browser: + +```javascript +var SystemJS = require('systemjs'); + +// loads './app.js' from the current directory +SystemJS.import('./app.js').then(function(m) { + console.log(m); +}); +``` + +If you are using jspm as a package manager you will also need to load the generated configuration. +The best way to do this in node is to get your `System` instance through jspm, which will automatically load your config correctly for you: + +```js +var Loader = require('jspm').Loader; +var SystemJS = new Loader(); + +SystemJS.import('lodash').then(function (_) { + console.log(_); +}); +``` + +### Plugins + +Supported loader plugins: + +* [CSS](https://github.com/systemjs/plugin-css) +* [LESS](https://github.com/systemjs/plugin-less) +* [Image](https://github.com/systemjs/plugin-image) +* [JSON](https://github.com/systemjs/plugin-json) +* [Text](https://github.com/systemjs/plugin-text) +* [Node Binary](https://github.com/systemjs/plugin-node-binary) + +Additional Plugins: + +* [Audio](https://github.com/ozsay/plugin-audio) +* [CoffeeScript](https://github.com/forresto/plugin-coffee) +* [Ember Handlebars](https://github.com/n-fuse/plugin-ember-hbs) +* [Handlebars](https://github.com/davis/plugin-hbs) +* [HTML](https://github.com/Hypercubed/systemjs-plugin-html/) +* [Image (lazy)](https://github.com/laurentgoudet/plugin-lazyimage) +* [Jade](https://github.com/johnsoftek/plugin-jade) +* [Jade VirtualDOM](https://github.com/WorldMaker/system-jade-virtualdom) +* [jst](https://github.com/podio/plugin-jst) +* [JSX](https://github.com/floatdrop/plugin-jsx) +* [Markdown](https://github.com/guybedford/plugin-md) +* [raw](https://github.com/matthewbauer/plugin-raw) +* [SASS](https://github.com/screendriver/plugin-sass) +* [SCSS](https://github.com/kevcjones/plugin-scss) +* [sofe](https://github.com/CanopyTax/sofe) +* [SVG](https://github.com/vuzonp/systemjs-plugin-svg) +* [WebFont](https://github.com/guybedford/plugin-font) +* [WebWorkers](https://github.com/casperlamboo/plugin-worker) +* [YAML](https://github.com/tb/plugin-yaml) + +Guides: + +* [Using plugins](docs/overview.md#plugin-loaders) +* [Creating plugins](docs/creating-plugins.md) + +#### Running the tests + +To install the dependencies correctly, run `bower install` from the root of the repo, then open `test/test.html` in a browser with a local server +or file access flags enabled. + +License +--- + +MIT + +[travis-url]: https://travis-ci.org/systemjs/systemjs +[travis-image]: https://travis-ci.org/systemjs/systemjs.svg?branch=master diff --git a/node_modules/systemjs/dist/system-csp-production.js b/node_modules/systemjs/dist/system-csp-production.js new file mode 100644 index 000000000..048a1e192 --- /dev/null +++ b/node_modules/systemjs/dist/system-csp-production.js @@ -0,0 +1,6 @@ +/* + * SystemJS v0.19.39 + */ +!function(){function e(){!function(e){function t(e,n){if("string"!=typeof e)throw new TypeError("URL must be a string");var r=String(e).replace(/^\s+|\s+$/g,"").match(/^([^:\/?#]+:)?(?:\/\/(?:([^:@\/?#]*)(?::([^:@\/?#]*))?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);if(!r)throw new RangeError("Invalid URL format");var a=r[1]||"",o=r[2]||"",i=r[3]||"",s=r[4]||"",l=r[5]||"",u=r[6]||"",d=r[7]||"",c=r[8]||"",f=r[9]||"";if(void 0!==n){var m=n instanceof t?n:new t(n),p=!a&&!s&&!o;!p||d||c||(c=m.search),p&&"/"!==d[0]&&(d=d?(!m.host&&!m.username||m.pathname?"":"/")+m.pathname.slice(0,m.pathname.lastIndexOf("/")+1)+d:m.pathname);var h=[];d.replace(/^(\.\.?(\/|$))+/,"").replace(/\/(\.(\/|$))+/g,"/").replace(/\/\.\.$/,"/../").replace(/\/?[^\/]*/g,function(e){"/.."===e?h.pop():h.push(e)}),d=h.join("").replace(/^\//,"/"===d[0]?"/":""),p&&(u=m.port,l=m.hostname,s=m.host,i=m.password,o=m.username),a||(a=m.protocol)}d=d.replace(/\\/g,"/"),this.origin=s?a+(""!==a||""!==s?"//":"")+s:"",this.href=a+(a&&s||"file:"==a?"//":"")+(""!==o?o+(""!==i?":"+i:"")+"@":"")+s+d+c+f,this.protocol=a,this.username=o,this.password=i,this.host=s,this.hostname=l,this.port=u,this.pathname=d,this.search=c,this.hash=f}e.URLPolyfill=t}("undefined"!=typeof self?self:global),function(e){function t(e,t){if(!e.originalErr)for(var n=((e.message||e)+(e.stack?"\n"+e.stack:"")).toString().split("\n"),r=[],a=0;as.length?(o[s]&&"/"||"")+t.substr(s.length):"")}else{var d=s.split("*");if(d.length>2)throw new TypeError("Only one wildcard in a path is permitted");var f=d[0].length;f>=a&&t.substr(0,d[0].length)==d[0]&&t.substr(t.length-d[1].length)==d[1]&&(a=f,r=s,n=t.substr(d[0].length,t.length-d[1].length-d[0].length))}}var m=o[r];return"string"==typeof n&&(m=m.replace("*",n)),m}function m(e){for(var t=[],n=[],r=0,a=e.length;r",linkSets:[],dependencies:[],metadata:{}}}function a(e,t,n){return new Promise(u({step:n.address?"fetch":"locate",loader:e,moduleName:t,moduleMetadata:n&&n.metadata||{},moduleSource:n.source,moduleAddress:n.address}))}function o(t,n,r,a){return new Promise(function(e,o){e(t.loaderObj.normalize(n,r,a))}).then(function(n){var r;if(t.modules[n])return r=e(n),r.status="linked",r.module=t.modules[n],r;for(var a=0,o=t.loads.length;a0)){var n=e.startingLoad;if(e.loader.loaderObj.execute===!1){for(var r=[].concat(e.loads),a=0,o=r.length;a "'+r.paths[o]+'" uses wildcards which are being deprecated for simpler trailing "/" folder paths.')}if(e.defaultJSExtensions&&(r.defaultJSExtensions=e.defaultJSExtensions,w.call(r,"The defaultJSExtensions configuration option is deprecated, use packages configuration instead.")),e.pluginFirst&&(r.pluginFirst=e.pluginFirst),e.map){var i="";for(var o in e.map){var s=e.map[o];if("string"!=typeof s){i+=(i.length?", ":"")+'"'+o+'"';var l=r.defaultJSExtensions&&".js"!=o.substr(o.length-3,3),u=r.decanonicalize(o);l&&".js"==u.substr(u.length-3,3)&&(u=u.substr(0,u.length-3));var c="";for(var f in r.packages)u.substr(0,f.length)==f&&(!u[f.length]||"/"==u[f.length])&&c.split("/").lengtha&&(n=o,a=r));return n}function t(e,t,n,r,a){if(!r||"/"==r[r.length-1]||a||t.defaultExtension===!1)return r;var o=!1;if(t.meta&&p(t.meta,r,function(e,t,n){if(0==n||e.lastIndexOf("*")!=e.length-1)return o=!0}),!o&&e.meta&&p(e.meta,n+"/"+r,function(e,t,n){if(0==n||e.lastIndexOf("*")!=e.length-1)return o=!0}),o)return r;var i="."+(t.defaultExtension||"js");return r.substr(r.length-i.length)!=i?r+i:r}function n(e,n,r,a,i){if(!a){if(!n.main)return r+(e.defaultJSExtensions?".js":"");a="./"==n.main.substr(0,2)?n.main.substr(2):n.main}if(n.map){var s="./"+a,l=S(n.map,s);if(l||(s="./"+t(e,n,r,a,i),s!="./"+a&&(l=S(n.map,s))),l){var u=o(e,n,r,l,s,i);if(u)return u}}return r+"/"+t(e,n,r,a,i)}function r(e,t,n,r){if("."==e)throw new Error("Package "+n+' has a map entry for "." which is not permitted.');return!(t.substr(0,e.length)==e&&r.length>e.length)}function o(e,n,a,o,i,s){"/"==i[i.length-1]&&(i=i.substr(0,i.length-1));var l=n.map[o];if("object"==typeof l)throw new Error("Synchronous conditional normalization not supported sync normalizing "+o+" in "+a);if(r(o,l,a,i)&&"string"==typeof l){if("."==l)l=a;else if("./"==l.substr(0,2))return a+"/"+t(e,n,a,l.substr(2)+i.substr(o.length),s);return e.normalizeSync(l+i.substr(o.length),a+"/")}}function l(e,n,r,a,o){if(!a){if(!n.main)return Promise.resolve(r+(e.defaultJSExtensions?".js":""));a="./"==n.main.substr(0,2)?n.main.substr(2):n.main}var i,s;return n.map&&(i="./"+a,s=S(n.map,i),s||(i="./"+t(e,n,r,a,o),i!="./"+a&&(s=S(n.map,i)))),(s?d(e,n,r,s,i,o):Promise.resolve()).then(function(i){return i?Promise.resolve(i):Promise.resolve(r+"/"+t(e,n,r,a,o))})}function u(e,n,r,a,o,i,s){if("."==o)o=r;else if("./"==o.substr(0,2))return Promise.resolve(r+"/"+t(e,n,r,o.substr(2)+i.substr(a.length),s)).then(function(t){return L.call(e,t,r+"/")});return e.normalize(o+i.substr(a.length),r+"/")}function d(e,t,n,a,o,i){"/"==o[o.length-1]&&(o=o.substr(0,o.length-1));var s=t.map[a];if("string"==typeof s)return r(a,s,n,o)?u(e,t,n,a,s,o,i):Promise.resolve();if(e.builder)return Promise.resolve(n+"/#:"+o);var l=[],d=[];for(var c in s){var f=z(c);d.push({condition:f,map:s[c]}),l.push(e.import(f.module,n))}return Promise.all(l).then(function(e){for(var t=0;tl&&(l=n),v(s,t,n&&l>n)}),v(n.metadata,s)}o.format&&!n.metadata.loader&&(n.metadata.format=n.metadata.format||o.format)}return t})}})}(),function(){function t(){if(s&&"interactive"===s.script.readyState)return s.load;for(var e=0;e=0;i--){for(var s=a[i],l=0;l1;)r=a.shift(),e=e[r]=e[r]||{};r=a.shift(),r in e||(e[r]=n)}s(function(e){return function(){this.meta={},e.call(this)}}),i("locate",function(e){return function(t){var n,r=this.meta,a=t.name,o=0;for(var i in r)if(n=i.indexOf("*"),n!==-1&&i.substr(0,n)===a.substr(0,n)&&i.substr(n+1)===a.substr(a.length-i.length+n+1)){var s=i.split("/").length;s>o&&(o=s),v(t.metadata,r[i],o!=s)}return r[a]&&v(t.metadata,r[a]),e.call(this,t)}});var t=/^(\s*\/\*[^\*]*(\*(?!\/)[^\*]*)*\*\/|\s*\/\/[^\n]*|\s*"[^"]+"\s*;?|\s*'[^']+'\s*;?)+/,n=/\/\*[^\*]*(\*(?!\/)[^\*]*)*\*\/|\/\/[^\n]*|"[^"]+"\s*;?|'[^']+'\s*;?/g;i("translate",function(r){return function(a){if("defined"==a.metadata.format)return a.metadata.deps=a.metadata.deps||[],Promise.resolve(a.source);var o=a.source.match(t);if(o)for(var i=o[0].match(n),s=0;s')}else e()}else if("undefined"!=typeof importScripts){var a="";try{throw new Error("_")}catch(e){e.stack.replace(/(?:at|@).*(http.+):[\d]+:[\d]+/,function(e,t){$__curScript={src:t},a=t.replace(/\/[^\/]*$/,"/")})}t&&importScripts(a+"system-polyfills.js"),e()}else $__curScript="undefined"!=typeof __filename?{src:__filename}:null,e()}(); +//# sourceMappingURL=system-csp-production.js.map diff --git a/node_modules/systemjs/dist/system-csp-production.js.map b/node_modules/systemjs/dist/system-csp-production.js.map new file mode 100644 index 000000000..00237ee6e --- /dev/null +++ b/node_modules/systemjs/dist/system-csp-production.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["system-csp-production.src.js"],"names":["bootstrap","global","URLPolyfill","url","baseURL","TypeError","m","String","replace","match","RangeError","protocol","username","password","host","hostname","port","pathname","search","hash","undefined","base","flag","slice","lastIndexOf","output","p","pop","push","join","this","origin","href","self","__global","addToError","err","msg","originalErr","stack","message","toString","split","newStack","i","length","$__curScript","indexOf","src","newMsg","substr","isBrowser","isWindows","newErr","errArgs","Error","fileName","lineNumber","Module","Loader","options","_loader","loaderObj","loads","modules","importPromises","moduleRecords","defineProperty","get","SystemJSLoader","call","paths","systemJSConstructor","SystemProto","hook","name","prototype","hookConstructor","isAbsolute","absURLRegEx","isRel","isPlain","urlResolve","parent","baseURI","URL","baseURIObj","applyPaths","loader","wildcard","pathMatch","maxWildcardPrefixLen","pathsCache","hasOwnProperty","path","pathParts","wildcardPrefixLen","outPath","group","deps","names","indices","l","index","getESModule","exports","esModule","getOwnPropertyDescriptor","defineOrCopyProperty","extend","value","targetObj","sourceObj","propName","d","Object","ex","a","b","prepend","extendMeta","val","Array","concat","extendPkgConfig","pkgCfgA","pkgCfgB","pkgName","warnInvalidProperties","prop","map","meta","depCache","dNormalized","coreResolve","warn","setPkgConfig","cfg","prependConfig","pkg","packages","basePkg","main","warnings","console","readMemberExpression","pParts","shift","getMapMatch","bestMatch","bestMatchLength","curMatchLength","prepareBaseURL","setProduction","isProduction","isBuilder","set","envModule","newModule","browser","node","_nodeRequire","production","dev","build","default","getNodeModule","parentModuleContext","_nodeModulePaths","require","parentName","mapMatch","has","builder","envSet","envCallback","browserConfig","nodeConfig","devConfig","buildConfig","productionConfig","detectRegisterFormat","source","leadingCommentAndMeta","leadingCommentAndMetaRegEx","createEntry","originalIndices","declare","execute","executingRequire","declarative","normalizedDeps","groupIndex","evaluated","module","esmExports","getGlobalValue","globalValue","first","parseCondition","condition","conditionExport","conditionModule","negation","conditionExportIndex","sysConditions","negate","serializeCondition","conditionObj","resolveCondition","bool","normalize","then","normalizedCondition","load","q","interpolateConditional","conditionalMatch","interpolationRegEx","Promise","resolve","conditionValue","booleanConditional","booleanIndex","isWorker","window","importScripts","document","process","platform","assert","item","thisLen","e","obj","opt","getElementsByTagName","bases","location","cwd","nativeURL","createLoad","status","anonCnt","linkSets","dependencies","metadata","loadModule","asyncStartLoadPartwayThrough","step","address","moduleName","moduleMetadata","moduleSource","moduleAddress","requestLoad","request","refererName","refererAddress","reject","proceedToLocate","proceedToFetch","locate","proceedToTranslate","fetch","translate","instantiate","instantiateResult","depsList","loadPromises","depLoad","key","addLoadToLinkSet","all","updateLinkSetOnLoad","exc","exception","linkSetFailed","stepState","existingLoad","done","linkSet","createLinkSet","startingLoad","loadingCount","j","doLink","error","link","_newModule","finishLoad","abrupt","checkError","pLoad","dep","failed","linkIndex","splice","globalLoadsIndex","trace","depMap","forEach","loadIndex","doDynamicExecute","linkError","createImportPromise","promise","constructor","define","delete","import","parentAddress","sourcePromise","pNames","getOwnPropertyNames","configurable","enumerable","freeze","referrerName","referrerAddress","System","fetchTextFromURL","XMLHttpRequest","authorization","fulfill","xhr","responseText","statusText","sameDomain","doTimeout","domainCheck","exec","XDomainRequest","onload","onerror","ontimeout","onprogress","timeout","onreadystatechange","readyState","addEventListener","open","setRequestHeader","withCredentials","setTimeout","send","fs","readFile","data","dataString","opts","headers","Accept","credentials","r","ok","text","scriptSrc","defaultJSExtensions","pluginFirst","loaderErrorStack","skipExt","resolved","httpRequest","systemImport","__useDefault","systemTranslate","format","apply","arguments","entry","JSON","parse","getConfig","curCurScript","config","isEnvConfig","checkHasConfig","transpilerRuntime","loadedTranspilerRuntime","bundles","packageConfigPaths","objMaps","v","defaultJSExtension","decanonicalize","pkgMatch","packageLength","Math","max","normalized","bundle","normalizedBundleDep","c","getPackage","curPkg","pkgLen","curPkgLen","addDefaultExtension","subPath","skipExtensions","defaultExtension","metaMatch","getMetaMatches","metaPattern","matchMeta","matchDepth","applyPackageConfigSync","mapPath","mapped","doMapSync","validMapping","normalizeSync","applyPackageConfig","doMap","doStringMap","conditionPromises","conditions","conditionValues","createPkgConfigPathObj","lastWildcard","regEx","RegExp","getPackageConfigMatch","configPath","exactMatch","packageConfigPath","packageName","loadPackageConfigPath","pkgConfigPath","configLoader","pluginLoader","systemjs","pkgMeta","matchFn","wildcardIndex","dotRel","exactMeta","decanonicalized","isPlugin","parentPackageName","parentPackage","parentMap","parentMapMatch","pkgConfigMatch","isConfigured","configured","bestDepth","getInteractiveScriptLoad","interactiveScript","script","interactiveLoadingScripts","webWorkerImport","integrity","workerLoad","head","curSystem","curRequire","ieEvents","s","createElement","isOpera","opera","attachEvent","loadingCnt","registerQueue","pushRegister","register","reduceRegister_","scriptLoad","complete","evt","cleanup","detachEvent","removeEventListener","removeChild","async","crossOrigin","setAttribute","appendChild","buildGroups","groups","depName","depEntry","defined","depGroupIndex","startEntry","curGroupDeclarative","linkDeclarativeModule","linkDynamicModule","ModuleRecord","getOrCreateModuleRecord","importers","declaration","locked","importerModule","importerIndex","setter","setters","id","depExports","depModule","len","getModule","ensureEvaluated","nameNormalized","__esModule","seen","registerDynamic","pushRegister_","amd","curMeta","del","doLoad","__exec","grouped","normalizePromises","reduceRegister","forEachGlobal","callback","keys","g","forEachGlobalValue","globalName","ignoredGlobalProps","globalSnapshot","prepareGlobal","globals","encapsulate","curDefine","oldGlobals","singleGlobal","multipleExports","stripOrigin","windowOrigin","requireResolve","parentId","getPathVars","moduleId","filename","pluginIndex","dirname","amdDefine","getCJSDeps","requireIndex","commentRegEx","params","fnBracketRegEx","requireAlias","wsRegEx","requireRegEx","requireRegExs","cjsRequirePre","cjsRequirePost","lastIndex","errback","referer","dynamicRequires","factory","req","contextualRequire","depValues","uri","moduleIndex","exportsIndex","toUrl","amdRequire","getParentName","parentPluginIndex","parsePlugin","argumentName","pluginName","argument","plugin","combinePluginParts","checkDefaultExtension","arg","createNormalizeSync","parsed","pluginSyntaxIndex","loaderNormalized","loaderModule","args","result","sourceMap","originalName","file","sources","calledInstantiate","alias","aliasDeps","_export","setMetaProperty","target","curPart","depth","metaRegEx","metaPartRegEx","metaParts","firstChar","metaString","metaName","metaValue","loadedBundles","matched","curModule","parts","substring","SystemJS","version","doPolyfill","scripts","currentScript","defer","curPath","basePath","systemJSBootstrap","write","__filename"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/systemjs/dist/system-csp-production.src.js b/node_modules/systemjs/dist/system-csp-production.src.js new file mode 100644 index 000000000..9c5e56532 --- /dev/null +++ b/node_modules/systemjs/dist/system-csp-production.src.js @@ -0,0 +1,4536 @@ +/* + * SystemJS v0.19.39 + */ +(function() { +function bootstrap() {// from https://gist.github.com/Yaffle/1088850 +(function(global) { +function URLPolyfill(url, baseURL) { + if (typeof url != 'string') + throw new TypeError('URL must be a string'); + var m = String(url).replace(/^\s+|\s+$/g, "").match(/^([^:\/?#]+:)?(?:\/\/(?:([^:@\/?#]*)(?::([^:@\/?#]*))?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/); + if (!m) + throw new RangeError('Invalid URL format'); + var protocol = m[1] || ""; + var username = m[2] || ""; + var password = m[3] || ""; + var host = m[4] || ""; + var hostname = m[5] || ""; + var port = m[6] || ""; + var pathname = m[7] || ""; + var search = m[8] || ""; + var hash = m[9] || ""; + if (baseURL !== undefined) { + var base = baseURL instanceof URLPolyfill ? baseURL : new URLPolyfill(baseURL); + var flag = !protocol && !host && !username; + if (flag && !pathname && !search) + search = base.search; + if (flag && pathname[0] !== "/") + pathname = (pathname ? (((base.host || base.username) && !base.pathname ? "/" : "") + base.pathname.slice(0, base.pathname.lastIndexOf("/") + 1) + pathname) : base.pathname); + // dot segments removal + var output = []; + pathname.replace(/^(\.\.?(\/|$))+/, "") + .replace(/\/(\.(\/|$))+/g, "/") + .replace(/\/\.\.$/, "/../") + .replace(/\/?[^\/]*/g, function (p) { + if (p === "/..") + output.pop(); + else + output.push(p); + }); + pathname = output.join("").replace(/^\//, pathname[0] === "/" ? "/" : ""); + if (flag) { + port = base.port; + hostname = base.hostname; + host = base.host; + password = base.password; + username = base.username; + } + if (!protocol) + protocol = base.protocol; + } + + // convert URLs to use / always + pathname = pathname.replace(/\\/g, '/'); + + this.origin = host ? protocol + (protocol !== "" || host !== "" ? "//" : "") + host : ""; + this.href = protocol + (protocol && host || protocol == "file:" ? "//" : "") + (username !== "" ? username + (password !== "" ? ":" + password : "") + "@" : "") + host + pathname + search + hash; + this.protocol = protocol; + this.username = username; + this.password = password; + this.host = host; + this.hostname = hostname; + this.port = port; + this.pathname = pathname; + this.search = search; + this.hash = hash; +} +global.URLPolyfill = URLPolyfill; +})(typeof self != 'undefined' ? self : global);(function(__global) { + + var isWorker = typeof window == 'undefined' && typeof self != 'undefined' && typeof importScripts != 'undefined'; + var isBrowser = typeof window != 'undefined' && typeof document != 'undefined'; + var isWindows = typeof process != 'undefined' && typeof process.platform != 'undefined' && !!process.platform.match(/^win/); + + if (!__global.console) + __global.console = { assert: function() {} }; + + // IE8 support + var indexOf = Array.prototype.indexOf || function(item) { + for (var i = 0, thisLen = this.length; i < thisLen; i++) { + if (this[i] === item) { + return i; + } + } + return -1; + }; + + var defineProperty; + (function () { + try { + if (!!Object.defineProperty({}, 'a', {})) + defineProperty = Object.defineProperty; + } + catch (e) { + defineProperty = function(obj, prop, opt) { + try { + obj[prop] = opt.value || opt.get.call(obj); + } + catch(e) {} + } + } + })(); + + var errArgs = new Error(0, '_').fileName == '_'; + + function addToError(err, msg) { + // parse the stack removing loader code lines for simplification + if (!err.originalErr) { + var stack = ((err.message || err) + (err.stack ? '\n' + err.stack : '')).toString().split('\n'); + var newStack = []; + for (var i = 0; i < stack.length; i++) { + if (typeof $__curScript == 'undefined' || stack[i].indexOf($__curScript.src) == -1) + newStack.push(stack[i]); + } + } + + var newMsg = '(SystemJS) ' + (newStack ? newStack.join('\n\t') : err.message.substr(11)) + '\n\t' + msg; + + // Convert file:/// URLs to paths in Node + if (!isBrowser) + newMsg = newMsg.replace(isWindows ? /file:\/\/\//g : /file:\/\//g, ''); + + var newErr = errArgs ? new Error(newMsg, err.fileName, err.lineNumber) : new Error(newMsg); + + newErr.stack = newMsg; + + // track the original error + newErr.originalErr = err.originalErr || err; + + return newErr; + } + + function __eval(source, debugName, context) { + try { + new Function(source).call(context); + } + catch(e) { + throw addToError(e, 'Evaluating ' + debugName); + } + } + + var baseURI; + + // environent baseURI detection + if (typeof document != 'undefined' && document.getElementsByTagName) { + baseURI = document.baseURI; + + if (!baseURI) { + var bases = document.getElementsByTagName('base'); + baseURI = bases[0] && bases[0].href || window.location.href; + } + } + else if (typeof location != 'undefined') { + baseURI = __global.location.href; + } + + // sanitize out the hash and querystring + if (baseURI) { + baseURI = baseURI.split('#')[0].split('?')[0]; + baseURI = baseURI.substr(0, baseURI.lastIndexOf('/') + 1); + } + else if (typeof process != 'undefined' && process.cwd) { + baseURI = 'file://' + (isWindows ? '/' : '') + process.cwd() + '/'; + if (isWindows) + baseURI = baseURI.replace(/\\/g, '/'); + } + else { + throw new TypeError('No environment baseURI'); + } + + try { + var nativeURL = new __global.URL('test:///').protocol == 'test:'; + } + catch(e) {} + + var URL = nativeURL ? __global.URL : __global.URLPolyfill; + +/* +********************************************************************************************* + + Dynamic Module Loader Polyfill + + - Implemented exactly to the former 2014-08-24 ES6 Specification Draft Rev 27, Section 15 + http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#august_24_2014_draft_rev_27 + + - Functions are commented with their spec numbers, with spec differences commented. + + - Spec bugs are commented in this code with links. + + - Abstract functions have been combined where possible, and their associated functions + commented. + + - Realm implementation is entirely omitted. + +********************************************************************************************* +*/ + +function Module() {} +// http://www.ecma-international.org/ecma-262/6.0/#sec-@@tostringtag +defineProperty(Module.prototype, 'toString', { + value: function() { + return 'Module'; + } +}); +function Loader(options) { + this._loader = { + loaderObj: this, + loads: [], + modules: {}, + importPromises: {}, + moduleRecords: {} + }; + + // 26.3.3.6 + defineProperty(this, 'global', { + get: function() { + return __global; + } + }); + + // 26.3.3.13 realm not implemented +} + +(function() { + +// Some Helpers + +// logs a linkset snapshot for debugging +/* function snapshot(loader) { + console.log('---Snapshot---'); + for (var i = 0; i < loader.loads.length; i++) { + var load = loader.loads[i]; + var linkSetLog = ' ' + load.name + ' (' + load.status + '): '; + + for (var j = 0; j < load.linkSets.length; j++) { + linkSetLog += '{' + logloads(load.linkSets[j].loads) + '} '; + } + console.log(linkSetLog); + } + console.log(''); +} +function logloads(loads) { + var log = ''; + for (var k = 0; k < loads.length; k++) + log += loads[k].name + (k != loads.length - 1 ? ' ' : ''); + return log; +} */ + + +/* function checkInvariants() { + // see https://bugs.ecmascript.org/show_bug.cgi?id=2603#c1 + + var loads = System._loader.loads; + var linkSets = []; + + for (var i = 0; i < loads.length; i++) { + var load = loads[i]; + console.assert(load.status == 'loading' || load.status == 'loaded', 'Each load is loading or loaded'); + + for (var j = 0; j < load.linkSets.length; j++) { + var linkSet = load.linkSets[j]; + + for (var k = 0; k < linkSet.loads.length; k++) + console.assert(loads.indexOf(linkSet.loads[k]) != -1, 'linkSet loads are a subset of loader loads'); + + if (linkSets.indexOf(linkSet) == -1) + linkSets.push(linkSet); + } + } + + for (var i = 0; i < loads.length; i++) { + var load = loads[i]; + for (var j = 0; j < linkSets.length; j++) { + var linkSet = linkSets[j]; + + if (linkSet.loads.indexOf(load) != -1) + console.assert(load.linkSets.indexOf(linkSet) != -1, 'linkSet contains load -> load contains linkSet'); + + if (load.linkSets.indexOf(linkSet) != -1) + console.assert(linkSet.loads.indexOf(load) != -1, 'load contains linkSet -> linkSet contains load'); + } + } + + for (var i = 0; i < linkSets.length; i++) { + var linkSet = linkSets[i]; + for (var j = 0; j < linkSet.loads.length; j++) { + var load = linkSet.loads[j]; + + for (var k = 0; k < load.dependencies.length; k++) { + var depName = load.dependencies[k].value; + var depLoad; + for (var l = 0; l < loads.length; l++) { + if (loads[l].name != depName) + continue; + depLoad = loads[l]; + break; + } + + // loading records are allowed not to have their dependencies yet + // if (load.status != 'loading') + // console.assert(depLoad, 'depLoad found'); + + // console.assert(linkSet.loads.indexOf(depLoad) != -1, 'linkset contains all dependencies'); + } + } + } +} */ + + // 15.2.3 - Runtime Semantics: Loader State + + // 15.2.3.11 + function createLoaderLoad(object) { + return { + // modules is an object for ES5 implementation + modules: {}, + loads: [], + loaderObj: object + }; + } + + // 15.2.3.2 Load Records and LoadRequest Objects + + var anonCnt = 0; + + // 15.2.3.2.1 + function createLoad(name) { + return { + status: 'loading', + name: name || '', + linkSets: [], + dependencies: [], + metadata: {} + }; + } + + // 15.2.3.2.2 createLoadRequestObject, absorbed into calling functions + + // 15.2.4 + + // 15.2.4.1 + function loadModule(loader, name, options) { + return new Promise(asyncStartLoadPartwayThrough({ + step: options.address ? 'fetch' : 'locate', + loader: loader, + moduleName: name, + // allow metadata for import https://bugs.ecmascript.org/show_bug.cgi?id=3091 + moduleMetadata: options && options.metadata || {}, + moduleSource: options.source, + moduleAddress: options.address + })); + } + + // 15.2.4.2 + function requestLoad(loader, request, refererName, refererAddress) { + // 15.2.4.2.1 CallNormalize + return new Promise(function(resolve, reject) { + resolve(loader.loaderObj.normalize(request, refererName, refererAddress)); + }) + // 15.2.4.2.2 GetOrCreateLoad + .then(function(name) { + var load; + if (loader.modules[name]) { + load = createLoad(name); + load.status = 'linked'; + // https://bugs.ecmascript.org/show_bug.cgi?id=2795 + load.module = loader.modules[name]; + return load; + } + + for (var i = 0, l = loader.loads.length; i < l; i++) { + load = loader.loads[i]; + if (load.name != name) + continue; + return load; + } + + load = createLoad(name); + loader.loads.push(load); + + proceedToLocate(loader, load); + + return load; + }); + } + + // 15.2.4.3 + function proceedToLocate(loader, load) { + proceedToFetch(loader, load, + Promise.resolve() + // 15.2.4.3.1 CallLocate + .then(function() { + return loader.loaderObj.locate({ name: load.name, metadata: load.metadata }); + }) + ); + } + + // 15.2.4.4 + function proceedToFetch(loader, load, p) { + proceedToTranslate(loader, load, + p + // 15.2.4.4.1 CallFetch + .then(function(address) { + // adjusted, see https://bugs.ecmascript.org/show_bug.cgi?id=2602 + if (load.status != 'loading') + return; + load.address = address; + + return loader.loaderObj.fetch({ name: load.name, metadata: load.metadata, address: address }); + }) + ); + } + + // 15.2.4.5 + function proceedToTranslate(loader, load, p) { + p + // 15.2.4.5.1 CallTranslate + .then(function(source) { + if (load.status != 'loading') + return; + + load.address = load.address || load.name; + + return Promise.resolve(loader.loaderObj.translate({ name: load.name, metadata: load.metadata, address: load.address, source: source })) + + // 15.2.4.5.2 CallInstantiate + .then(function(source) { + load.source = source; + return loader.loaderObj.instantiate({ name: load.name, metadata: load.metadata, address: load.address, source: source }); + }) + + // 15.2.4.5.3 InstantiateSucceeded + .then(function(instantiateResult) { + if (instantiateResult === undefined) + throw new TypeError('Declarative modules unsupported in the polyfill.'); + + if (typeof instantiateResult != 'object') + throw new TypeError('Invalid instantiate return value'); + + load.depsList = instantiateResult.deps || []; + load.execute = instantiateResult.execute; + }) + // 15.2.4.6 ProcessLoadDependencies + .then(function() { + load.dependencies = []; + var depsList = load.depsList; + + var loadPromises = []; + for (var i = 0, l = depsList.length; i < l; i++) (function(request, index) { + loadPromises.push( + requestLoad(loader, request, load.name, load.address) + + // 15.2.4.6.1 AddDependencyLoad (load is parentLoad) + .then(function(depLoad) { + + // adjusted from spec to maintain dependency order + // this is due to the System.register internal implementation needs + load.dependencies[index] = { + key: request, + value: depLoad.name + }; + + if (depLoad.status != 'linked') { + var linkSets = load.linkSets.concat([]); + for (var i = 0, l = linkSets.length; i < l; i++) + addLoadToLinkSet(linkSets[i], depLoad); + } + + // console.log('AddDependencyLoad ' + depLoad.name + ' for ' + load.name); + // snapshot(loader); + }) + ); + })(depsList[i], i); + + return Promise.all(loadPromises); + }) + + // 15.2.4.6.2 LoadSucceeded + .then(function() { + // console.log('LoadSucceeded ' + load.name); + // snapshot(loader); + + load.status = 'loaded'; + + var linkSets = load.linkSets.concat([]); + for (var i = 0, l = linkSets.length; i < l; i++) + updateLinkSetOnLoad(linkSets[i], load); + }); + }) + // 15.2.4.5.4 LoadFailed + ['catch'](function(exc) { + load.status = 'failed'; + load.exception = exc; + + var linkSets = load.linkSets.concat([]); + for (var i = 0, l = linkSets.length; i < l; i++) { + linkSetFailed(linkSets[i], load, exc); + } + + console.assert(load.linkSets.length == 0, 'linkSets not removed'); + }); + } + + // 15.2.4.7 PromiseOfStartLoadPartwayThrough absorbed into calling functions + + // 15.2.4.7.1 + function asyncStartLoadPartwayThrough(stepState) { + return function(resolve, reject) { + var loader = stepState.loader; + var name = stepState.moduleName; + var step = stepState.step; + + if (loader.modules[name]) + throw new TypeError('"' + name + '" already exists in the module table'); + + // adjusted to pick up existing loads + var existingLoad; + for (var i = 0, l = loader.loads.length; i < l; i++) { + if (loader.loads[i].name == name) { + existingLoad = loader.loads[i]; + + if (step == 'translate' && !existingLoad.source) { + existingLoad.address = stepState.moduleAddress; + proceedToTranslate(loader, existingLoad, Promise.resolve(stepState.moduleSource)); + } + + // a primary load -> use that existing linkset if it is for the direct load here + // otherwise create a new linkset unit + if (existingLoad.linkSets.length && existingLoad.linkSets[0].loads[0].name == existingLoad.name) + return existingLoad.linkSets[0].done.then(function() { + resolve(existingLoad); + }); + } + } + + var load = existingLoad || createLoad(name); + + load.metadata = stepState.moduleMetadata; + + var linkSet = createLinkSet(loader, load); + + loader.loads.push(load); + + resolve(linkSet.done); + + if (step == 'locate') + proceedToLocate(loader, load); + + else if (step == 'fetch') + proceedToFetch(loader, load, Promise.resolve(stepState.moduleAddress)); + + else { + console.assert(step == 'translate', 'translate step'); + load.address = stepState.moduleAddress; + proceedToTranslate(loader, load, Promise.resolve(stepState.moduleSource)); + } + } + } + + // Declarative linking functions run through alternative implementation: + // 15.2.5.1.1 CreateModuleLinkageRecord not implemented + // 15.2.5.1.2 LookupExport not implemented + // 15.2.5.1.3 LookupModuleDependency not implemented + + // 15.2.5.2.1 + function createLinkSet(loader, startingLoad) { + var linkSet = { + loader: loader, + loads: [], + startingLoad: startingLoad, // added see spec bug https://bugs.ecmascript.org/show_bug.cgi?id=2995 + loadingCount: 0 + }; + linkSet.done = new Promise(function(resolve, reject) { + linkSet.resolve = resolve; + linkSet.reject = reject; + }); + addLoadToLinkSet(linkSet, startingLoad); + return linkSet; + } + // 15.2.5.2.2 + function addLoadToLinkSet(linkSet, load) { + if (load.status == 'failed') + return; + + for (var i = 0, l = linkSet.loads.length; i < l; i++) + if (linkSet.loads[i] == load) + return; + + linkSet.loads.push(load); + load.linkSets.push(linkSet); + + // adjustment, see https://bugs.ecmascript.org/show_bug.cgi?id=2603 + if (load.status != 'loaded') { + linkSet.loadingCount++; + } + + var loader = linkSet.loader; + + for (var i = 0, l = load.dependencies.length; i < l; i++) { + if (!load.dependencies[i]) + continue; + + var name = load.dependencies[i].value; + + if (loader.modules[name]) + continue; + + for (var j = 0, d = loader.loads.length; j < d; j++) { + if (loader.loads[j].name != name) + continue; + + addLoadToLinkSet(linkSet, loader.loads[j]); + break; + } + } + // console.log('add to linkset ' + load.name); + // snapshot(linkSet.loader); + } + + // linking errors can be generic or load-specific + // this is necessary for debugging info + function doLink(linkSet) { + var error = false; + try { + link(linkSet, function(load, exc) { + linkSetFailed(linkSet, load, exc); + error = true; + }); + } + catch(e) { + linkSetFailed(linkSet, null, e); + error = true; + } + return error; + } + + // 15.2.5.2.3 + function updateLinkSetOnLoad(linkSet, load) { + // console.log('update linkset on load ' + load.name); + // snapshot(linkSet.loader); + + console.assert(load.status == 'loaded' || load.status == 'linked', 'loaded or linked'); + + linkSet.loadingCount--; + + if (linkSet.loadingCount > 0) + return; + + // adjusted for spec bug https://bugs.ecmascript.org/show_bug.cgi?id=2995 + var startingLoad = linkSet.startingLoad; + + // non-executing link variation for loader tracing + // on the server. Not in spec. + /***/ + if (linkSet.loader.loaderObj.execute === false) { + var loads = [].concat(linkSet.loads); + for (var i = 0, l = loads.length; i < l; i++) { + var load = loads[i]; + load.module = { + name: load.name, + module: _newModule({}), + evaluated: true + }; + load.status = 'linked'; + finishLoad(linkSet.loader, load); + } + return linkSet.resolve(startingLoad); + } + /***/ + + var abrupt = doLink(linkSet); + + if (abrupt) + return; + + console.assert(linkSet.loads.length == 0, 'loads cleared'); + + linkSet.resolve(startingLoad); + } + + // 15.2.5.2.4 + function linkSetFailed(linkSet, load, exc) { + var loader = linkSet.loader; + var requests; + + checkError: + if (load) { + if (linkSet.loads[0].name == load.name) { + exc = addToError(exc, 'Error loading ' + load.name); + } + else { + for (var i = 0; i < linkSet.loads.length; i++) { + var pLoad = linkSet.loads[i]; + for (var j = 0; j < pLoad.dependencies.length; j++) { + var dep = pLoad.dependencies[j]; + if (dep.value == load.name) { + exc = addToError(exc, 'Error loading ' + load.name + ' as "' + dep.key + '" from ' + pLoad.name); + break checkError; + } + } + } + exc = addToError(exc, 'Error loading ' + load.name + ' from ' + linkSet.loads[0].name); + } + } + else { + exc = addToError(exc, 'Error linking ' + linkSet.loads[0].name); + } + + + var loads = linkSet.loads.concat([]); + for (var i = 0, l = loads.length; i < l; i++) { + var load = loads[i]; + + // store all failed load records + loader.loaderObj.failed = loader.loaderObj.failed || []; + if (indexOf.call(loader.loaderObj.failed, load) == -1) + loader.loaderObj.failed.push(load); + + var linkIndex = indexOf.call(load.linkSets, linkSet); + console.assert(linkIndex != -1, 'link not present'); + load.linkSets.splice(linkIndex, 1); + if (load.linkSets.length == 0) { + var globalLoadsIndex = indexOf.call(linkSet.loader.loads, load); + if (globalLoadsIndex != -1) + linkSet.loader.loads.splice(globalLoadsIndex, 1); + } + } + linkSet.reject(exc); + } + + // 15.2.5.2.5 + function finishLoad(loader, load) { + // add to global trace if tracing + if (loader.loaderObj.trace) { + if (!loader.loaderObj.loads) + loader.loaderObj.loads = {}; + var depMap = {}; + load.dependencies.forEach(function(dep) { + depMap[dep.key] = dep.value; + }); + loader.loaderObj.loads[load.name] = { + name: load.name, + deps: load.dependencies.map(function(dep){ return dep.key }), + depMap: depMap, + address: load.address, + metadata: load.metadata, + source: load.source + }; + } + // if not anonymous, add to the module table + if (load.name) { + console.assert(!loader.modules[load.name] || loader.modules[load.name].module === load.module.module, 'load not in module table'); + loader.modules[load.name] = load.module; + } + var loadIndex = indexOf.call(loader.loads, load); + if (loadIndex != -1) + loader.loads.splice(loadIndex, 1); + for (var i = 0, l = load.linkSets.length; i < l; i++) { + loadIndex = indexOf.call(load.linkSets[i].loads, load); + if (loadIndex != -1) + load.linkSets[i].loads.splice(loadIndex, 1); + } + load.linkSets.splice(0, load.linkSets.length); + } + + function doDynamicExecute(linkSet, load, linkError) { + try { + var module = load.execute(); + } + catch(e) { + linkError(load, e); + return; + } + if (!module || !(module instanceof Module)) + linkError(load, new TypeError('Execution must define a Module instance')); + else + return module; + } + + // 26.3 Loader + + // 26.3.1.1 + // defined at top + + // importPromises adds ability to import a module twice without error - https://bugs.ecmascript.org/show_bug.cgi?id=2601 + function createImportPromise(loader, name, promise) { + var importPromises = loader._loader.importPromises; + return importPromises[name] = promise.then(function(m) { + importPromises[name] = undefined; + return m; + }, function(e) { + importPromises[name] = undefined; + throw e; + }); + } + + Loader.prototype = { + // 26.3.3.1 + constructor: Loader, + // 26.3.3.2 + define: function(name, source, options) { + // check if already defined + if (this._loader.importPromises[name]) + throw new TypeError('Module is already loading.'); + return createImportPromise(this, name, new Promise(asyncStartLoadPartwayThrough({ + step: 'translate', + loader: this._loader, + moduleName: name, + moduleMetadata: options && options.metadata || {}, + moduleSource: source, + moduleAddress: options && options.address + }))); + }, + // 26.3.3.3 + 'delete': function(name) { + var loader = this._loader; + delete loader.importPromises[name]; + delete loader.moduleRecords[name]; + return loader.modules[name] ? delete loader.modules[name] : false; + }, + // 26.3.3.4 entries not implemented + // 26.3.3.5 + get: function(key) { + if (!this._loader.modules[key]) + return; + return this._loader.modules[key].module; + }, + // 26.3.3.7 + has: function(name) { + return !!this._loader.modules[name]; + }, + // 26.3.3.8 + 'import': function(name, parentName, parentAddress) { + if (typeof parentName == 'object') + parentName = parentName.name; + + // run normalize first + var loaderObj = this; + + // added, see https://bugs.ecmascript.org/show_bug.cgi?id=2659 + return Promise.resolve(loaderObj.normalize(name, parentName)) + .then(function(name) { + var loader = loaderObj._loader; + + if (loader.modules[name]) + return loader.modules[name].module; + + return loader.importPromises[name] || createImportPromise(loaderObj, name, + loadModule(loader, name, {}) + .then(function(load) { + delete loader.importPromises[name]; + return load.module.module; + })); + }); + }, + // 26.3.3.9 keys not implemented + // 26.3.3.10 + load: function(name) { + var loader = this._loader; + if (loader.modules[name]) + return Promise.resolve(); + return loader.importPromises[name] || createImportPromise(this, name, new Promise(asyncStartLoadPartwayThrough({ + step: 'locate', + loader: loader, + moduleName: name, + moduleMetadata: {}, + moduleSource: undefined, + moduleAddress: undefined + })) + .then(function() { + delete loader.importPromises[name]; + })); + }, + // 26.3.3.11 + module: function(source, options) { + var load = createLoad(); + load.address = options && options.address; + var linkSet = createLinkSet(this._loader, load); + var sourcePromise = Promise.resolve(source); + var loader = this._loader; + var p = linkSet.done.then(function() { + return load.module.module; + }); + proceedToTranslate(loader, load, sourcePromise); + return p; + }, + // 26.3.3.12 + newModule: function (obj) { + if (typeof obj != 'object') + throw new TypeError('Expected object'); + + var m = new Module(); + + var pNames = []; + if (Object.getOwnPropertyNames && obj != null) + pNames = Object.getOwnPropertyNames(obj); + else + for (var key in obj) + pNames.push(key); + + for (var i = 0; i < pNames.length; i++) (function(key) { + defineProperty(m, key, { + configurable: false, + enumerable: true, + get: function () { + return obj[key]; + }, + set: function() { + throw new Error('Module exports cannot be changed externally.'); + } + }); + })(pNames[i]); + + if (Object.freeze) + Object.freeze(m); + + return m; + }, + // 26.3.3.14 + set: function(name, module) { + if (!(module instanceof Module)) + throw new TypeError('Loader.set(' + name + ', module) must be a module'); + this._loader.modules[name] = { + module: module + }; + }, + // 26.3.3.15 values not implemented + // 26.3.3.16 @@iterator not implemented + // 26.3.3.17 @@toStringTag not implemented + + // 26.3.3.18.1 + normalize: function(name, referrerName, referrerAddress) {}, + // 26.3.3.18.2 + locate: function(load) { + return load.name; + }, + // 26.3.3.18.3 + fetch: function(load) { + }, + // 26.3.3.18.4 + translate: function(load) { + return load.source; + }, + // 26.3.3.18.5 + instantiate: function(load) { + } + }; + + var _newModule = Loader.prototype.newModule; + +/* + * ES6 Module Declarative Linking Code + */ + function link(linkSet, linkError) { + + var loader = linkSet.loader; + + if (!linkSet.loads.length) + return; + + var loads = linkSet.loads.concat([]); + + for (var i = 0; i < loads.length; i++) { + var load = loads[i]; + + var module = doDynamicExecute(linkSet, load, linkError); + if (!module) + return; + load.module = { + name: load.name, + module: module + }; + load.status = 'linked'; + + finishLoad(loader, load); + } + } + +})(); + +var System; + +// SystemJS Loader Class and Extension helpers +function SystemJSLoader() { + Loader.call(this); + + this.paths = {}; + this._loader.paths = {}; + + systemJSConstructor.call(this); +} + +// inline Object.create-style class extension +function SystemProto() {}; +SystemProto.prototype = Loader.prototype; +SystemJSLoader.prototype = new SystemProto(); +SystemJSLoader.prototype.constructor = SystemJSLoader; + +var systemJSConstructor; + +function hook(name, hook) { + SystemJSLoader.prototype[name] = hook(SystemJSLoader.prototype[name] || function() {}); +} +function hookConstructor(hook) { + systemJSConstructor = hook(systemJSConstructor || function() {}); +} + + +var absURLRegEx = /^[^\/]+:\/\//; +function isAbsolute(name) { + return name.match(absURLRegEx); +} +function isRel(name) { + return (name[0] == '.' && (!name[1] || name[1] == '/' || name[1] == '.')) || name[0] == '/'; +} +function isPlain(name) { + return !isRel(name) && !isAbsolute(name); +} + +var baseURIObj = new URL(baseURI); + +function urlResolve(name, parent) { + // url resolution shortpaths + if (name[0] == '.') { + // dot-relative url normalization + if (name[1] == '/' && name[2] != '.') + return (parent && parent.substr(0, parent.lastIndexOf('/') + 1) || baseURI) + name.substr(2); + } + else if (name[0] != '/' && name.indexOf(':') == -1) { + // plain parent normalization + return (parent && parent.substr(0, parent.lastIndexOf('/') + 1) || baseURI) + name; + } + + return new URL(name, parent && parent.replace(/#/g, '%05') || baseURIObj).href.replace(/%05/g, '#'); +} + +// NB no specification provided for System.paths, used ideas discussed in https://github.com/jorendorff/js-loaders/issues/25 +function applyPaths(loader, name) { + // most specific (most number of slashes in path) match wins + var pathMatch = '', wildcard, maxWildcardPrefixLen = 0; + + var paths = loader.paths; + var pathsCache = loader._loader.paths; + + // check to see if we have a paths entry + for (var p in paths) { + if (paths.hasOwnProperty && !paths.hasOwnProperty(p)) + continue; + + // paths sanitization + var path = paths[p]; + if (path !== pathsCache[p]) + path = paths[p] = pathsCache[p] = urlResolve(paths[p], isRel(paths[p]) ? baseURI : loader.baseURL); + + // exact path match + if (p.indexOf('*') === -1) { + if (name == p) + return paths[p]; + + // support trailing / in paths rules + else if (name.substr(0, p.length - 1) == p.substr(0, p.length - 1) && (name.length < p.length || name[p.length - 1] == p[p.length - 1]) && (paths[p][paths[p].length - 1] == '/' || paths[p] == '')) { + return paths[p].substr(0, paths[p].length - 1) + (name.length > p.length ? (paths[p] && '/' || '') + name.substr(p.length) : ''); + } + } + // wildcard path match + else { + var pathParts = p.split('*'); + if (pathParts.length > 2) + throw new TypeError('Only one wildcard in a path is permitted'); + + var wildcardPrefixLen = pathParts[0].length; + if (wildcardPrefixLen >= maxWildcardPrefixLen && + name.substr(0, pathParts[0].length) == pathParts[0] && + name.substr(name.length - pathParts[1].length) == pathParts[1]) { + maxWildcardPrefixLen = wildcardPrefixLen; + pathMatch = p; + wildcard = name.substr(pathParts[0].length, name.length - pathParts[1].length - pathParts[0].length); + } + } + } + + var outPath = paths[pathMatch]; + if (typeof wildcard == 'string') + outPath = outPath.replace('*', wildcard); + + return outPath; +} + +function dedupe(deps) { + var newDeps = []; + for (var i = 0, l = deps.length; i < l; i++) + if (indexOf.call(newDeps, deps[i]) == -1) + newDeps.push(deps[i]) + return newDeps; +} + +function group(deps) { + var names = []; + var indices = []; + for (var i = 0, l = deps.length; i < l; i++) { + var index = indexOf.call(names, deps[i]); + if (index === -1) { + names.push(deps[i]); + indices.push([i]); + } + else { + indices[index].push(i); + } + } + return { names: names, indices: indices }; +} + +var getOwnPropertyDescriptor = true; +try { + Object.getOwnPropertyDescriptor({ a: 0 }, 'a'); +} +catch(e) { + getOwnPropertyDescriptor = false; +} + +// converts any module.exports object into an object ready for SystemJS.newModule +function getESModule(exports) { + var esModule = {}; + // don't trigger getters/setters in environments that support them + if ((typeof exports == 'object' || typeof exports == 'function') && exports !== __global) { + if (getOwnPropertyDescriptor) { + for (var p in exports) { + // The default property is copied to esModule later on + if (p === 'default') + continue; + defineOrCopyProperty(esModule, exports, p); + } + } + else { + extend(esModule, exports); + } + } + esModule['default'] = exports; + defineProperty(esModule, '__useDefault', { + value: true + }); + return esModule; +} + +function defineOrCopyProperty(targetObj, sourceObj, propName) { + try { + var d; + if (d = Object.getOwnPropertyDescriptor(sourceObj, propName)) + defineProperty(targetObj, propName, d); + } + catch (ex) { + // Object.getOwnPropertyDescriptor threw an exception, fall back to normal set property + // we dont need hasOwnProperty here because getOwnPropertyDescriptor would have returned undefined above + targetObj[propName] = sourceObj[propName]; + return false; + } +} + +function extend(a, b, prepend) { + var hasOwnProperty = b && b.hasOwnProperty; + for (var p in b) { + if (hasOwnProperty && !b.hasOwnProperty(p)) + continue; + if (!prepend || !(p in a)) + a[p] = b[p]; + } + return a; +} + +// meta first-level extends where: +// array + array appends +// object + object extends +// other properties replace +function extendMeta(a, b, prepend) { + var hasOwnProperty = b && b.hasOwnProperty; + for (var p in b) { + if (hasOwnProperty && !b.hasOwnProperty(p)) + continue; + var val = b[p]; + if (!(p in a)) + a[p] = val; + else if (val instanceof Array && a[p] instanceof Array) + a[p] = [].concat(prepend ? val : a[p]).concat(prepend ? a[p] : val); + else if (typeof val == 'object' && val !== null && typeof a[p] == 'object') + a[p] = extend(extend({}, a[p]), val, prepend); + else if (!prepend) + a[p] = val; + } +} + +function extendPkgConfig(pkgCfgA, pkgCfgB, pkgName, loader, warnInvalidProperties) { + for (var prop in pkgCfgB) { + if (indexOf.call(['main', 'format', 'defaultExtension', 'basePath'], prop) != -1) { + pkgCfgA[prop] = pkgCfgB[prop]; + } + else if (prop == 'map') { + extend(pkgCfgA.map = pkgCfgA.map || {}, pkgCfgB.map); + } + else if (prop == 'meta') { + extend(pkgCfgA.meta = pkgCfgA.meta || {}, pkgCfgB.meta); + } + else if (prop == 'depCache') { + for (var d in pkgCfgB.depCache) { + var dNormalized; + + if (d.substr(0, 2) == './') + dNormalized = pkgName + '/' + d.substr(2); + else + dNormalized = coreResolve.call(loader, d); + loader.depCache[dNormalized] = (loader.depCache[dNormalized] || []).concat(pkgCfgB.depCache[d]); + } + } + else if (warnInvalidProperties && indexOf.call(['browserConfig', 'nodeConfig', 'devConfig', 'productionConfig'], prop) == -1 && + (!pkgCfgB.hasOwnProperty || pkgCfgB.hasOwnProperty(prop))) { + warn.call(loader, '"' + prop + '" is not a valid package configuration option in package ' + pkgName); + } + } +} + +// deeply-merge (to first level) config with any existing package config +function setPkgConfig(loader, pkgName, cfg, prependConfig) { + var pkg; + + // first package is config by reference for fast path, cloned after that + if (!loader.packages[pkgName]) { + pkg = loader.packages[pkgName] = cfg; + } + else { + var basePkg = loader.packages[pkgName]; + pkg = loader.packages[pkgName] = {}; + + extendPkgConfig(pkg, prependConfig ? cfg : basePkg, pkgName, loader, prependConfig); + extendPkgConfig(pkg, prependConfig ? basePkg : cfg, pkgName, loader, !prependConfig); + } + + // main object becomes main map + if (typeof pkg.main == 'object') { + pkg.map = pkg.map || {}; + pkg.map['./@main'] = pkg.main; + pkg.main['default'] = pkg.main['default'] || './'; + pkg.main = '@main'; + } + + return pkg; +} + +function warn(msg) { + if (this.warnings && typeof console != 'undefined' && console.warn) + console.warn(msg); +} + var fetchTextFromURL; + if (typeof XMLHttpRequest != 'undefined') { + fetchTextFromURL = function(url, authorization, fulfill, reject) { + var xhr = new XMLHttpRequest(); + var sameDomain = true; + var doTimeout = false; + if (!('withCredentials' in xhr)) { + // check if same domain + var domainCheck = /^(\w+:)?\/\/([^\/]+)/.exec(url); + if (domainCheck) { + sameDomain = domainCheck[2] === window.location.host; + if (domainCheck[1]) + sameDomain &= domainCheck[1] === window.location.protocol; + } + } + if (!sameDomain && typeof XDomainRequest != 'undefined') { + xhr = new XDomainRequest(); + xhr.onload = load; + xhr.onerror = error; + xhr.ontimeout = error; + xhr.onprogress = function() {}; + xhr.timeout = 0; + doTimeout = true; + } + function load() { + fulfill(xhr.responseText); + } + function error() { + reject(new Error('XHR error' + (xhr.status ? ' (' + xhr.status + (xhr.statusText ? ' ' + xhr.statusText : '') + ')' : '') + ' loading ' + url)); + } + + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + // in Chrome on file:/// URLs, status is 0 + if (xhr.status == 0) { + if (xhr.responseText) { + load(); + } + else { + // when responseText is empty, wait for load or error event + // to inform if it is a 404 or empty file + xhr.addEventListener('error', error); + xhr.addEventListener('load', load); + } + } + else if (xhr.status === 200) { + load(); + } + else { + error(); + } + } + }; + xhr.open("GET", url, true); + + if (xhr.setRequestHeader) { + xhr.setRequestHeader('Accept', 'application/x-es-module, */*'); + // can set "authorization: true" to enable withCredentials only + if (authorization) { + if (typeof authorization == 'string') + xhr.setRequestHeader('Authorization', authorization); + xhr.withCredentials = true; + } + } + + if (doTimeout) { + setTimeout(function() { + xhr.send(); + }, 0); + } else { + xhr.send(null); + } + }; + } + else if (typeof require != 'undefined' && typeof process != 'undefined') { + var fs; + fetchTextFromURL = function(url, authorization, fulfill, reject) { + if (url.substr(0, 8) != 'file:///') + throw new Error('Unable to fetch "' + url + '". Only file URLs of the form file:/// allowed running in Node.'); + fs = fs || require('fs'); + if (isWindows) + url = url.replace(/\//g, '\\').substr(8); + else + url = url.substr(7); + return fs.readFile(url, function(err, data) { + if (err) { + return reject(err); + } + else { + // Strip Byte Order Mark out if it's the leading char + var dataString = data + ''; + if (dataString[0] === '\ufeff') + dataString = dataString.substr(1); + + fulfill(dataString); + } + }); + }; + } + else if (typeof self != 'undefined' && typeof self.fetch != 'undefined') { + fetchTextFromURL = function(url, authorization, fulfill, reject) { + var opts = { + headers: {'Accept': 'application/x-es-module, */*'} + }; + + if (authorization) { + if (typeof authorization == 'string') + opts.headers['Authorization'] = authorization; + opts.credentials = 'include'; + } + + fetch(url, opts) + .then(function (r) { + if (r.ok) { + return r.text(); + } else { + throw new Error('Fetch error: ' + r.status + ' ' + r.statusText); + } + }) + .then(fulfill, reject); + } + } + else { + throw new TypeError('No environment fetch API available.'); + } +function readMemberExpression(p, value) { + var pParts = p.split('.'); + while (pParts.length) + value = value[pParts.shift()]; + return value; +} + +function getMapMatch(map, name) { + var bestMatch, bestMatchLength = 0; + + for (var p in map) { + if (name.substr(0, p.length) == p && (name.length == p.length || name[p.length] == '/')) { + var curMatchLength = p.split('/').length; + if (curMatchLength <= bestMatchLength) + continue; + bestMatch = p; + bestMatchLength = curMatchLength; + } + } + + return bestMatch; +} + +function prepareBaseURL(loader) { + // ensure baseURl is fully normalized + if (this._loader.baseURL !== this.baseURL) { + if (this.baseURL[this.baseURL.length - 1] != '/') + this.baseURL += '/'; + + this._loader.baseURL = this.baseURL = new URL(this.baseURL, baseURIObj).href; + } +} + +var envModule; +function setProduction(isProduction, isBuilder) { + this.set('@system-env', envModule = this.newModule({ + browser: isBrowser, + node: !!this._nodeRequire, + production: !isBuilder && isProduction, + dev: isBuilder || !isProduction, + build: isBuilder, + 'default': true + })); +} + +hookConstructor(function(constructor) { + return function() { + constructor.call(this); + + // support baseURL + this.baseURL = baseURI; + + // support map and paths + this.map = {}; + + // make the location of the system.js script accessible + if (typeof $__curScript != 'undefined') + this.scriptSrc = $__curScript.src; + + // global behaviour flags + this.warnings = false; + this.defaultJSExtensions = false; + this.pluginFirst = false; + this.loaderErrorStack = false; + + // by default load ".json" files as json + // leading * meta doesn't need normalization + // NB add this in next breaking release + // this.meta['*.json'] = { format: 'json' }; + + // support the empty module, as a concept + this.set('@empty', this.newModule({})); + + setProduction.call(this, false, false); + }; +}); + +// include the node require since we're overriding it +if (typeof require != 'undefined' && typeof process != 'undefined' && !process.browser) + SystemJSLoader.prototype._nodeRequire = require; + +/* + Core SystemJS Normalization + + If a name is relative, we apply URL normalization to the page + If a name is an absolute URL, we leave it as-is + + Plain names (neither of the above) run through the map and paths + normalization phases. + + The paths normalization phase applies last (paths extension), which + defines the `decanonicalize` function and normalizes everything into + a URL. + */ + +var parentModuleContext; +function getNodeModule(name, baseURL) { + if (!isPlain(name)) + throw new Error('Node module ' + name + ' can\'t be loaded as it is not a package require.'); + + if (!parentModuleContext) { + var Module = this._nodeRequire('module'); + var base = baseURL.substr(isWindows ? 8 : 7); + parentModuleContext = new Module(base); + parentModuleContext.paths = Module._nodeModulePaths(base); + } + return parentModuleContext.require(name); +} + +function coreResolve(name, parentName) { + // standard URL resolution + if (isRel(name)) + return urlResolve(name, parentName); + else if (isAbsolute(name)) + return name; + + // plain names not starting with './', '://' and '/' go through custom resolution + var mapMatch = getMapMatch(this.map, name); + + if (mapMatch) { + name = this.map[mapMatch] + name.substr(mapMatch.length); + + if (isRel(name)) + return urlResolve(name); + else if (isAbsolute(name)) + return name; + } + + if (this.has(name)) + return name; + + // dynamically load node-core modules when requiring `@node/fs` for example + if (name.substr(0, 6) == '@node/') { + if (!this._nodeRequire) + throw new TypeError('Error loading ' + name + '. Can only load node core modules in Node.'); + if (this.builder) + this.set(name, this.newModule({})); + else + this.set(name, this.newModule(getESModule(getNodeModule.call(this, name.substr(6), this.baseURL)))); + return name; + } + + // prepare the baseURL to ensure it is normalized + prepareBaseURL.call(this); + + return applyPaths(this, name) || this.baseURL + name; +} + +hook('normalize', function(normalize) { + return function(name, parentName, skipExt) { + var resolved = coreResolve.call(this, name, parentName); + if (this.defaultJSExtensions && !skipExt && resolved.substr(resolved.length - 3, 3) != '.js' && !isPlain(resolved)) + resolved += '.js'; + return resolved; + }; +}); + +// percent encode just '#' in urls if using HTTP requests +var httpRequest = typeof XMLHttpRequest != 'undefined'; +hook('locate', function(locate) { + return function(load) { + return Promise.resolve(locate.call(this, load)) + .then(function(address) { + if (httpRequest) + return address.replace(/#/g, '%23'); + return address; + }); + }; +}); + +/* + * Fetch with authorization + */ +hook('fetch', function() { + return function(load) { + return new Promise(function(resolve, reject) { + fetchTextFromURL(load.address, load.metadata.authorization, resolve, reject); + }); + }; +}); + +/* + __useDefault + + When a module object looks like: + newModule( + __useDefault: true, + default: 'some-module' + }) + + Then importing that module provides the 'some-module' + result directly instead of the full module. + + Useful for eg module.exports = function() {} +*/ +hook('import', function(systemImport) { + return function(name, parentName, parentAddress) { + if (parentName && parentName.name) + warn.call(this, 'SystemJS.import(name, { name: parentName }) is deprecated for SystemJS.import(name, parentName), while importing ' + name + ' from ' + parentName.name); + return systemImport.call(this, name, parentName, parentAddress).then(function(module) { + return module.__useDefault ? module['default'] : module; + }); + }; +}); + +/* + * Allow format: 'detect' meta to enable format detection + */ +hook('translate', function(systemTranslate) { + return function(load) { + if (load.metadata.format == 'detect') + load.metadata.format = undefined; + return systemTranslate.apply(this, arguments); + }; +}); + + +/* + * JSON format support + * + * Supports loading JSON files as a module format itself + * + * Usage: + * + * SystemJS.config({ + * meta: { + * '*.json': { format: 'json' } + * } + * }); + * + * Module is returned as if written: + * + * export default {JSON} + * + * No named exports are provided + * + * Files ending in ".json" are treated as json automatically by SystemJS + */ +hook('instantiate', function(instantiate) { + return function(load) { + if (load.metadata.format == 'json' && !this.builder) { + var entry = load.metadata.entry = createEntry(); + entry.deps = []; + entry.execute = function() { + try { + return JSON.parse(load.source); + } + catch(e) { + throw new Error("Invalid JSON file " + load.name); + } + }; + } + }; +}) + +/* + Extend config merging one deep only + + loader.config({ + some: 'random', + config: 'here', + deep: { + config: { too: 'too' } + } + }); + + <=> + + loader.some = 'random'; + loader.config = 'here' + loader.deep = loader.deep || {}; + loader.deep.config = { too: 'too' }; + + + Normalizes meta and package configs allowing for: + + SystemJS.config({ + meta: { + './index.js': {} + } + }); + + To become + + SystemJS.meta['https://thissite.com/index.js'] = {}; + + For easy normalization canonicalization with latest URL support. + +*/ +function envSet(loader, cfg, envCallback) { + if (envModule.browser && cfg.browserConfig) + envCallback(cfg.browserConfig); + if (envModule.node && cfg.nodeConfig) + envCallback(cfg.nodeConfig); + if (envModule.dev && cfg.devConfig) + envCallback(cfg.devConfig); + if (envModule.build && cfg.buildConfig) + envCallback(cfg.buildConfig); + if (envModule.production && cfg.productionConfig) + envCallback(cfg.productionConfig); +} + +SystemJSLoader.prototype.getConfig = function(name) { + var cfg = {}; + var loader = this; + for (var p in loader) { + if (loader.hasOwnProperty && !loader.hasOwnProperty(p) || p in SystemJSLoader.prototype && p != 'transpiler') + continue; + if (indexOf.call(['_loader', 'amdDefine', 'amdRequire', 'defined', 'failed', 'version', 'loads'], p) == -1) + cfg[p] = loader[p]; + } + cfg.production = envModule.production; + return cfg; +}; + +var curCurScript; +SystemJSLoader.prototype.config = function(cfg, isEnvConfig) { + var loader = this; + + if ('loaderErrorStack' in cfg) { + curCurScript = $__curScript; + if (cfg.loaderErrorStack) + $__curScript = undefined; + else + $__curScript = curCurScript; + } + + if ('warnings' in cfg) + loader.warnings = cfg.warnings; + + // transpiler deprecation path + if (cfg.transpilerRuntime === false) + loader._loader.loadedTranspilerRuntime = true; + + if ('production' in cfg || 'build' in cfg) + setProduction.call(loader, !!cfg.production, !!(cfg.build || envModule && envModule.build)); + + if (!isEnvConfig) { + // if using nodeConfig / browserConfig / productionConfig, take baseURL from there + // these exceptions will be unnecessary when we can properly implement config queuings + var baseURL; + envSet(loader, cfg, function(cfg) { + baseURL = baseURL || cfg.baseURL; + }); + baseURL = baseURL || cfg.baseURL; + + // always configure baseURL first + if (baseURL) { + var hasConfig = false; + function checkHasConfig(obj) { + for (var p in obj) + if (obj.hasOwnProperty(p)) + return true; + } + if (checkHasConfig(loader.packages) || checkHasConfig(loader.meta) || checkHasConfig(loader.depCache) || checkHasConfig(loader.bundles) || checkHasConfig(loader.packageConfigPaths)) + throw new TypeError('Incorrect configuration order. The baseURL must be configured with the first SystemJS.config call.'); + + this.baseURL = baseURL; + prepareBaseURL.call(this); + } + + if (cfg.paths) + extend(loader.paths, cfg.paths); + + envSet(loader, cfg, function(cfg) { + if (cfg.paths) + extend(loader.paths, cfg.paths); + }); + + // warn on wildcard path deprecations + if (this.warnings) { + for (var p in loader.paths) + if (p.indexOf('*') != -1) + warn.call(loader, 'Paths configuration "' + p + '" -> "' + loader.paths[p] + '" uses wildcards which are being deprecated for simpler trailing "/" folder paths.'); + } + } + + if (cfg.defaultJSExtensions) { + loader.defaultJSExtensions = cfg.defaultJSExtensions; + warn.call(loader, 'The defaultJSExtensions configuration option is deprecated, use packages configuration instead.'); + } + + if (cfg.pluginFirst) + loader.pluginFirst = cfg.pluginFirst; + + if (cfg.map) { + var objMaps = ''; + for (var p in cfg.map) { + var v = cfg.map[p]; + + // object map backwards-compat into packages configuration + if (typeof v !== 'string') { + objMaps += (objMaps.length ? ', ' : '') + '"' + p + '"'; + + var defaultJSExtension = loader.defaultJSExtensions && p.substr(p.length - 3, 3) != '.js'; + var prop = loader.decanonicalize(p); + if (defaultJSExtension && prop.substr(prop.length - 3, 3) == '.js') + prop = prop.substr(0, prop.length - 3); + + // if a package main, revert it + var pkgMatch = ''; + for (var pkg in loader.packages) { + if (prop.substr(0, pkg.length) == pkg + && (!prop[pkg.length] || prop[pkg.length] == '/') + && pkgMatch.split('/').length < pkg.split('/').length) + pkgMatch = pkg; + } + if (pkgMatch && loader.packages[pkgMatch].main) + prop = prop.substr(0, prop.length - loader.packages[pkgMatch].main.length - 1); + + var pkg = loader.packages[prop] = loader.packages[prop] || {}; + pkg.map = v; + } + else { + loader.map[p] = v; + } + } + if (objMaps) + warn.call(loader, 'The map configuration for ' + objMaps + ' uses object submaps, which is deprecated in global map.\nUpdate this to use package contextual map with configs like SystemJS.config({ packages: { "' + p + '": { map: {...} } } }).'); + } + + if (cfg.packageConfigPaths) { + var packageConfigPaths = []; + for (var i = 0; i < cfg.packageConfigPaths.length; i++) { + var path = cfg.packageConfigPaths[i]; + var packageLength = Math.max(path.lastIndexOf('*') + 1, path.lastIndexOf('/')); + var normalized = coreResolve.call(loader, path.substr(0, packageLength)); + packageConfigPaths[i] = normalized + path.substr(packageLength); + } + loader.packageConfigPaths = packageConfigPaths; + } + + if (cfg.bundles) { + for (var p in cfg.bundles) { + var bundle = []; + for (var i = 0; i < cfg.bundles[p].length; i++) { + var defaultJSExtension = loader.defaultJSExtensions && cfg.bundles[p][i].substr(cfg.bundles[p][i].length - 3, 3) != '.js'; + var normalizedBundleDep = loader.decanonicalize(cfg.bundles[p][i]); + if (defaultJSExtension && normalizedBundleDep.substr(normalizedBundleDep.length - 3, 3) == '.js') + normalizedBundleDep = normalizedBundleDep.substr(0, normalizedBundleDep.length - 3); + bundle.push(normalizedBundleDep); + } + loader.bundles[p] = bundle; + } + } + + if (cfg.packages) { + for (var p in cfg.packages) { + if (p.match(/^([^\/]+:)?\/\/$/)) + throw new TypeError('"' + p + '" is not a valid package name.'); + + var prop = coreResolve.call(loader, p); + + // allow trailing slash in packages + if (prop[prop.length - 1] == '/') + prop = prop.substr(0, prop.length - 1); + + setPkgConfig(loader, prop, cfg.packages[p], false); + } + } + + for (var c in cfg) { + var v = cfg[c]; + + if (indexOf.call(['baseURL', 'map', 'packages', 'bundles', 'paths', 'warnings', 'packageConfigPaths', + 'loaderErrorStack', 'browserConfig', 'nodeConfig', 'devConfig', 'buildConfig', 'productionConfig'], c) != -1) + continue; + + if (typeof v != 'object' || v instanceof Array) { + loader[c] = v; + } + else { + loader[c] = loader[c] || {}; + + for (var p in v) { + // base-level wildcard meta does not normalize to retain catch-all quality + if (c == 'meta' && p[0] == '*') { + extend(loader[c][p] = loader[c][p] || {}, v[p]); + } + else if (c == 'meta') { + // meta can go through global map, with defaultJSExtensions adding + var resolved = coreResolve.call(loader, p); + if (loader.defaultJSExtensions && resolved.substr(resolved.length - 3, 3) != '.js' && !isPlain(resolved)) + resolved += '.js'; + extend(loader[c][resolved] = loader[c][resolved] || {}, v[p]); + } + else if (c == 'depCache') { + var defaultJSExtension = loader.defaultJSExtensions && p.substr(p.length - 3, 3) != '.js'; + var prop = loader.decanonicalize(p); + if (defaultJSExtension && prop.substr(prop.length - 3, 3) == '.js') + prop = prop.substr(0, prop.length - 3); + loader[c][prop] = [].concat(v[p]); + } + else { + loader[c][p] = v[p]; + } + } + } + } + + envSet(loader, cfg, function(cfg) { + loader.config(cfg, true); + }); +};/* + * Package Configuration Extension + * + * Example: + * + * SystemJS.packages = { + * jquery: { + * main: 'index.js', // when not set, package name is requested directly + * format: 'amd', + * defaultExtension: 'ts', // defaults to 'js', can be set to false + * modules: { + * '*.ts': { + * loader: 'typescript' + * }, + * 'vendor/sizzle.js': { + * format: 'global' + * } + * }, + * map: { + * // map internal require('sizzle') to local require('./vendor/sizzle') + * sizzle: './vendor/sizzle.js', + * // map any internal or external require of 'jquery/vendor/another' to 'another/index.js' + * './vendor/another.js': './another/index.js', + * // test.js / test -> lib/test.js + * './test.js': './lib/test.js', + * + * // environment-specific map configurations + * './index.js': { + * '~browser': './index-node.js', + * './custom-condition.js|~export': './index-custom.js' + * } + * }, + * // allows for setting package-prefixed depCache + * // keys are normalized module names relative to the package itself + * depCache: { + * // import 'package/index.js' loads in parallel package/lib/test.js,package/vendor/sizzle.js + * './index.js': ['./test'], + * './test.js': ['external-dep'], + * 'external-dep/path.js': ['./another.js'] + * } + * } + * }; + * + * Then: + * import 'jquery' -> jquery/index.js + * import 'jquery/submodule' -> jquery/submodule.js + * import 'jquery/submodule.ts' -> jquery/submodule.ts loaded as typescript + * import 'jquery/vendor/another' -> another/index.js + * + * Detailed Behaviours + * - main can have a leading "./" can be added optionally + * - map and defaultExtension are applied to the main + * - defaultExtension adds the extension only if the exact extension is not present + * - defaultJSExtensions applies after map when defaultExtension is not set + * - if a meta value is available for a module, map and defaultExtension are skipped + * - like global map, package map also applies to subpaths (sizzle/x, ./vendor/another/sub) + * - condition module map is '@env' module in package or '@system-env' globally + * - map targets support conditional interpolation ('./x': './x.#{|env}.js') + * - internal package map targets cannot use boolean conditionals + * + * Package Configuration Loading + * + * Not all packages may already have their configuration present in the System config + * For these cases, a list of packageConfigPaths can be provided, which when matched against + * a request, will first request a ".json" file by the package name to derive the package + * configuration from. This allows dynamic loading of non-predetermined code, a key use + * case in SystemJS. + * + * Example: + * + * SystemJS.packageConfigPaths = ['packages/test/package.json', 'packages/*.json']; + * + * // will first request 'packages/new-package/package.json' for the package config + * // before completing the package request to 'packages/new-package/path' + * SystemJS.import('packages/new-package/path'); + * + * // will first request 'packages/test/package.json' before the main + * SystemJS.import('packages/test'); + * + * When a package matches packageConfigPaths, it will always send a config request for + * the package configuration. + * The package name itself is taken to be the match up to and including the last wildcard + * or trailing slash. + * The most specific package config path will be used. + * Any existing package configurations for the package will deeply merge with the + * package config, with the existing package configurations taking preference. + * To opt-out of the package configuration request for a package that matches + * packageConfigPaths, use the { configured: true } package config option. + * + */ +(function() { + + hookConstructor(function(constructor) { + return function() { + constructor.call(this); + this.packages = {}; + this.packageConfigPaths = []; + }; + }); + + function getPackage(loader, normalized) { + // use most specific package + var curPkg, curPkgLen = 0, pkgLen; + for (var p in loader.packages) { + if (normalized.substr(0, p.length) === p && (normalized.length === p.length || normalized[p.length] === '/')) { + pkgLen = p.split('/').length; + if (pkgLen > curPkgLen) { + curPkg = p; + curPkgLen = pkgLen; + } + } + } + return curPkg; + } + + function addDefaultExtension(loader, pkg, pkgName, subPath, skipExtensions) { + // don't apply extensions to folders or if defaultExtension = false + if (!subPath || subPath[subPath.length - 1] == '/' || skipExtensions || pkg.defaultExtension === false) + return subPath; + + var metaMatch = false; + + // exact meta or meta with any content after the last wildcard skips extension + if (pkg.meta) + getMetaMatches(pkg.meta, subPath, function(metaPattern, matchMeta, matchDepth) { + if (matchDepth == 0 || metaPattern.lastIndexOf('*') != metaPattern.length - 1) + return metaMatch = true; + }); + + // exact global meta or meta with any content after the last wildcard skips extension + if (!metaMatch && loader.meta) + getMetaMatches(loader.meta, pkgName + '/' + subPath, function(metaPattern, matchMeta, matchDepth) { + if (matchDepth == 0 || metaPattern.lastIndexOf('*') != metaPattern.length - 1) + return metaMatch = true; + }); + + if (metaMatch) + return subPath; + + // work out what the defaultExtension is and add if not there already + // NB reconsider if default should really be ".js"? + var defaultExtension = '.' + (pkg.defaultExtension || 'js'); + if (subPath.substr(subPath.length - defaultExtension.length) != defaultExtension) + return subPath + defaultExtension; + else + return subPath; + } + + function applyPackageConfigSync(loader, pkg, pkgName, subPath, skipExtensions) { + // main + if (!subPath) { + if (pkg.main) + subPath = pkg.main.substr(0, 2) == './' ? pkg.main.substr(2) : pkg.main; + // also no submap if name is package itself (import 'pkg' -> 'path/to/pkg.js') + else + // NB can add a default package main convention here when defaultJSExtensions is deprecated + // if it becomes internal to the package then it would no longer be an exit path + return pkgName + (loader.defaultJSExtensions ? '.js' : ''); + } + + // map config checking without then with extensions + if (pkg.map) { + var mapPath = './' + subPath; + + var mapMatch = getMapMatch(pkg.map, mapPath); + + // we then check map with the default extension adding + if (!mapMatch) { + mapPath = './' + addDefaultExtension(loader, pkg, pkgName, subPath, skipExtensions); + if (mapPath != './' + subPath) + mapMatch = getMapMatch(pkg.map, mapPath); + } + if (mapMatch) { + var mapped = doMapSync(loader, pkg, pkgName, mapMatch, mapPath, skipExtensions); + if (mapped) + return mapped; + } + } + + // normal package resolution + return pkgName + '/' + addDefaultExtension(loader, pkg, pkgName, subPath, skipExtensions); + } + + function validMapping(mapMatch, mapped, pkgName, path) { + // disallow internal to subpath maps + if (mapMatch == '.') + throw new Error('Package ' + pkgName + ' has a map entry for "." which is not permitted.'); + + // allow internal ./x -> ./x/y or ./x/ -> ./x/y recursive maps + // but only if the path is exactly ./x and not ./x/z + if (mapped.substr(0, mapMatch.length) == mapMatch && path.length > mapMatch.length) + return false; + + return true; + } + + function doMapSync(loader, pkg, pkgName, mapMatch, path, skipExtensions) { + if (path[path.length - 1] == '/') + path = path.substr(0, path.length - 1); + var mapped = pkg.map[mapMatch]; + + if (typeof mapped == 'object') + throw new Error('Synchronous conditional normalization not supported sync normalizing ' + mapMatch + ' in ' + pkgName); + + if (!validMapping(mapMatch, mapped, pkgName, path) || typeof mapped != 'string') + return; + + // package map to main / base-level + if (mapped == '.') + mapped = pkgName; + + // internal package map + else if (mapped.substr(0, 2) == './') + return pkgName + '/' + addDefaultExtension(loader, pkg, pkgName, mapped.substr(2) + path.substr(mapMatch.length), skipExtensions); + + // external map reference + return loader.normalizeSync(mapped + path.substr(mapMatch.length), pkgName + '/'); + } + + function applyPackageConfig(loader, pkg, pkgName, subPath, skipExtensions) { + // main + if (!subPath) { + if (pkg.main) + subPath = pkg.main.substr(0, 2) == './' ? pkg.main.substr(2) : pkg.main; + // also no submap if name is package itself (import 'pkg' -> 'path/to/pkg.js') + else + // NB can add a default package main convention here when defaultJSExtensions is deprecated + // if it becomes internal to the package then it would no longer be an exit path + return Promise.resolve(pkgName + (loader.defaultJSExtensions ? '.js' : '')); + } + + // map config checking without then with extensions + var mapPath, mapMatch; + + if (pkg.map) { + mapPath = './' + subPath; + mapMatch = getMapMatch(pkg.map, mapPath); + + // we then check map with the default extension adding + if (!mapMatch) { + mapPath = './' + addDefaultExtension(loader, pkg, pkgName, subPath, skipExtensions); + if (mapPath != './' + subPath) + mapMatch = getMapMatch(pkg.map, mapPath); + } + } + + return (mapMatch ? doMap(loader, pkg, pkgName, mapMatch, mapPath, skipExtensions) : Promise.resolve()) + .then(function(mapped) { + if (mapped) + return Promise.resolve(mapped); + + // normal package resolution / fallback resolution for no conditional match + return Promise.resolve(pkgName + '/' + addDefaultExtension(loader, pkg, pkgName, subPath, skipExtensions)); + }); + } + + function doStringMap(loader, pkg, pkgName, mapMatch, mapped, path, skipExtensions) { + // NB the interpolation cases should strictly skip subsequent interpolation + // package map to main / base-level + if (mapped == '.') + mapped = pkgName; + + // internal package map + else if (mapped.substr(0, 2) == './') + return Promise.resolve(pkgName + '/' + addDefaultExtension(loader, pkg, pkgName, mapped.substr(2) + path.substr(mapMatch.length), skipExtensions)) + .then(function(name) { + return interpolateConditional.call(loader, name, pkgName + '/'); + }); + + // external map reference + return loader.normalize(mapped + path.substr(mapMatch.length), pkgName + '/'); + } + + function doMap(loader, pkg, pkgName, mapMatch, path, skipExtensions) { + if (path[path.length - 1] == '/') + path = path.substr(0, path.length - 1); + + var mapped = pkg.map[mapMatch]; + + if (typeof mapped == 'string') { + if (!validMapping(mapMatch, mapped, pkgName, path)) + return Promise.resolve(); + return doStringMap(loader, pkg, pkgName, mapMatch, mapped, path, skipExtensions); + } + + // we use a special conditional syntax to allow the builder to handle conditional branch points further + if (loader.builder) + return Promise.resolve(pkgName + '/#:' + path); + + // we load all conditions upfront + var conditionPromises = []; + var conditions = []; + for (var e in mapped) { + var c = parseCondition(e); + conditions.push({ + condition: c, + map: mapped[e] + }); + conditionPromises.push(loader['import'](c.module, pkgName)); + } + + // map object -> conditional map + return Promise.all(conditionPromises) + .then(function(conditionValues) { + // first map condition to match is used + for (var i = 0; i < conditions.length; i++) { + var c = conditions[i].condition; + var value = readMemberExpression(c.prop, conditionValues[i]); + if (!c.negate && value || c.negate && !value) + return conditions[i].map; + } + }) + .then(function(mapped) { + if (mapped) { + if (!validMapping(mapMatch, mapped, pkgName, path)) + return; + return doStringMap(loader, pkg, pkgName, mapMatch, mapped, path, skipExtensions); + } + + // no environment match -> fallback to original subPath by returning undefined + }); + } + + // normalizeSync = decanonicalize + package resolution + SystemJSLoader.prototype.normalizeSync = SystemJSLoader.prototype.decanonicalize = SystemJSLoader.prototype.normalize; + + // decanonicalize must JUST handle package defaultExtension: false case when defaultJSExtensions is set + // to be deprecated! + hook('decanonicalize', function(decanonicalize) { + return function(name, parentName) { + if (this.builder) + return decanonicalize.call(this, name, parentName, true); + + var decanonicalized = decanonicalize.call(this, name, parentName, false); + + if (!this.defaultJSExtensions) + return decanonicalized; + + var pkgName = getPackage(this, decanonicalized); + + var pkg = this.packages[pkgName]; + var defaultExtension = pkg && pkg.defaultExtension; + + if (defaultExtension == undefined && pkg && pkg.meta) + getMetaMatches(pkg.meta, decanonicalized.substr(pkgName), function(metaPattern, matchMeta, matchDepth) { + if (matchDepth == 0 || metaPattern.lastIndexOf('*') != metaPattern.length - 1) { + defaultExtension = false; + return true; + } + }); + + if ((defaultExtension === false || defaultExtension && defaultExtension != '.js') && name.substr(name.length - 3, 3) != '.js' && decanonicalized.substr(decanonicalized.length - 3, 3) == '.js') + decanonicalized = decanonicalized.substr(0, decanonicalized.length - 3); + + return decanonicalized; + }; + }); + + hook('normalizeSync', function(normalizeSync) { + return function(name, parentName, isPlugin) { + var loader = this; + isPlugin = isPlugin === true; + + // apply contextual package map first + // (we assume the parent package config has already been loaded) + if (parentName) + var parentPackageName = getPackage(loader, parentName) || + loader.defaultJSExtensions && parentName.substr(parentName.length - 3, 3) == '.js' && + getPackage(loader, parentName.substr(0, parentName.length - 3)); + + var parentPackage = parentPackageName && loader.packages[parentPackageName]; + + // ignore . since internal maps handled by standard package resolution + if (parentPackage && name[0] != '.') { + var parentMap = parentPackage.map; + var parentMapMatch = parentMap && getMapMatch(parentMap, name); + + if (parentMapMatch && typeof parentMap[parentMapMatch] == 'string') { + var mapped = doMapSync(loader, parentPackage, parentPackageName, parentMapMatch, name, isPlugin); + if (mapped) + return mapped; + } + } + + var defaultJSExtension = loader.defaultJSExtensions && name.substr(name.length - 3, 3) != '.js'; + + // apply map, core, paths, contextual package map + var normalized = normalizeSync.call(loader, name, parentName, false); + + // undo defaultJSExtension + if (defaultJSExtension && normalized.substr(normalized.length - 3, 3) != '.js') + defaultJSExtension = false; + if (defaultJSExtension) + normalized = normalized.substr(0, normalized.length - 3); + + var pkgConfigMatch = getPackageConfigMatch(loader, normalized); + var pkgName = pkgConfigMatch && pkgConfigMatch.packageName || getPackage(loader, normalized); + + if (!pkgName) + return normalized + (defaultJSExtension ? '.js' : ''); + + var subPath = normalized.substr(pkgName.length + 1); + + return applyPackageConfigSync(loader, loader.packages[pkgName] || {}, pkgName, subPath, isPlugin); + }; + }); + + hook('normalize', function(normalize) { + return function(name, parentName, isPlugin) { + var loader = this; + isPlugin = isPlugin === true; + + return Promise.resolve() + .then(function() { + // apply contextual package map first + // (we assume the parent package config has already been loaded) + if (parentName) + var parentPackageName = getPackage(loader, parentName) || + loader.defaultJSExtensions && parentName.substr(parentName.length - 3, 3) == '.js' && + getPackage(loader, parentName.substr(0, parentName.length - 3)); + + var parentPackage = parentPackageName && loader.packages[parentPackageName]; + + // ignore . since internal maps handled by standard package resolution + if (parentPackage && name.substr(0, 2) != './') { + var parentMap = parentPackage.map; + var parentMapMatch = parentMap && getMapMatch(parentMap, name); + + if (parentMapMatch) + return doMap(loader, parentPackage, parentPackageName, parentMapMatch, name, isPlugin); + } + + return Promise.resolve(); + }) + .then(function(mapped) { + if (mapped) + return mapped; + + var defaultJSExtension = loader.defaultJSExtensions && name.substr(name.length - 3, 3) != '.js'; + + // apply map, core, paths, contextual package map + var normalized = normalize.call(loader, name, parentName, false); + + // undo defaultJSExtension + if (defaultJSExtension && normalized.substr(normalized.length - 3, 3) != '.js') + defaultJSExtension = false; + if (defaultJSExtension) + normalized = normalized.substr(0, normalized.length - 3); + + var pkgConfigMatch = getPackageConfigMatch(loader, normalized); + var pkgName = pkgConfigMatch && pkgConfigMatch.packageName || getPackage(loader, normalized); + + if (!pkgName) + return Promise.resolve(normalized + (defaultJSExtension ? '.js' : '')); + + var pkg = loader.packages[pkgName]; + + // if package is already configured or not a dynamic config package, use existing package config + var isConfigured = pkg && (pkg.configured || !pkgConfigMatch); + return (isConfigured ? Promise.resolve(pkg) : loadPackageConfigPath(loader, pkgName, pkgConfigMatch.configPath)) + .then(function(pkg) { + var subPath = normalized.substr(pkgName.length + 1); + + return applyPackageConfig(loader, pkg, pkgName, subPath, isPlugin); + }); + }); + }; + }); + + // check if the given normalized name matches a packageConfigPath + // if so, loads the config + var packageConfigPaths = {}; + + // data object for quick checks against package paths + function createPkgConfigPathObj(path) { + var lastWildcard = path.lastIndexOf('*'); + var length = Math.max(lastWildcard + 1, path.lastIndexOf('/')); + return { + length: length, + regEx: new RegExp('^(' + path.substr(0, length).replace(/[.+?^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '[^\\/]+') + ')(\\/|$)'), + wildcard: lastWildcard != -1 + }; + } + + // most specific match wins + function getPackageConfigMatch(loader, normalized) { + var pkgName, exactMatch = false, configPath; + for (var i = 0; i < loader.packageConfigPaths.length; i++) { + var packageConfigPath = loader.packageConfigPaths[i]; + var p = packageConfigPaths[packageConfigPath] || (packageConfigPaths[packageConfigPath] = createPkgConfigPathObj(packageConfigPath)); + if (normalized.length < p.length) + continue; + var match = normalized.match(p.regEx); + if (match && (!pkgName || (!(exactMatch && p.wildcard) && pkgName.length < match[1].length))) { + pkgName = match[1]; + exactMatch = !p.wildcard; + configPath = pkgName + packageConfigPath.substr(p.length); + } + } + + if (!pkgName) + return; + + return { + packageName: pkgName, + configPath: configPath + }; + } + + function loadPackageConfigPath(loader, pkgName, pkgConfigPath) { + var configLoader = loader.pluginLoader || loader; + + // NB remove this when json is default + (configLoader.meta[pkgConfigPath] = configLoader.meta[pkgConfigPath] || {}).format = 'json'; + configLoader.meta[pkgConfigPath].loader = null; + + return configLoader.load(pkgConfigPath) + .then(function() { + var cfg = configLoader.get(pkgConfigPath)['default']; + + // support "systemjs" prefixing + if (cfg.systemjs) + cfg = cfg.systemjs; + + // modules backwards compatibility + if (cfg.modules) { + cfg.meta = cfg.modules; + warn.call(loader, 'Package config file ' + pkgConfigPath + ' is configured with "modules", which is deprecated as it has been renamed to "meta".'); + } + + return setPkgConfig(loader, pkgName, cfg, true); + }); + } + + function getMetaMatches(pkgMeta, subPath, matchFn) { + // wildcard meta + var meta = {}; + var wildcardIndex; + for (var module in pkgMeta) { + // allow meta to start with ./ for flexibility + var dotRel = module.substr(0, 2) == './' ? './' : ''; + if (dotRel) + module = module.substr(2); + + wildcardIndex = module.indexOf('*'); + if (wildcardIndex === -1) + continue; + + if (module.substr(0, wildcardIndex) == subPath.substr(0, wildcardIndex) + && module.substr(wildcardIndex + 1) == subPath.substr(subPath.length - module.length + wildcardIndex + 1)) { + // alow match function to return true for an exit path + if (matchFn(module, pkgMeta[dotRel + module], module.split('/').length)) + return; + } + } + // exact meta + var exactMeta = pkgMeta[subPath] && pkgMeta.hasOwnProperty && pkgMeta.hasOwnProperty(subPath) ? pkgMeta[subPath] : pkgMeta['./' + subPath]; + if (exactMeta) + matchFn(exactMeta, exactMeta, 0); + } + + hook('locate', function(locate) { + return function(load) { + var loader = this; + return Promise.resolve(locate.call(this, load)) + .then(function(address) { + var pkgName = getPackage(loader, load.name); + if (pkgName) { + var pkg = loader.packages[pkgName]; + var subPath = load.name.substr(pkgName.length + 1); + + var meta = {}; + if (pkg.meta) { + var bestDepth = 0; + + // NB support a main shorthand in meta here? + getMetaMatches(pkg.meta, subPath, function(metaPattern, matchMeta, matchDepth) { + if (matchDepth > bestDepth) + bestDepth = matchDepth; + extendMeta(meta, matchMeta, matchDepth && bestDepth > matchDepth); + }); + + extendMeta(load.metadata, meta); + } + + // format + if (pkg.format && !load.metadata.loader) + load.metadata.format = load.metadata.format || pkg.format; + } + + return address; + }); + }; + }); + +})(); +/* + * Script tag fetch + * + * When load.metadata.scriptLoad is true, we load via script tag injection. + */ +(function() { + + if (typeof document != 'undefined') + var head = document.getElementsByTagName('head')[0]; + + var curSystem; + var curRequire; + + // if doing worker executing, this is set to the load record being executed + var workerLoad = null; + + // interactive mode handling method courtesy RequireJS + var ieEvents = head && (function() { + var s = document.createElement('script'); + var isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]'; + return s.attachEvent && !(s.attachEvent.toString && s.attachEvent.toString().indexOf('[native code') < 0) && !isOpera; + })(); + + // IE interactive-only part + // we store loading scripts array as { script: ')}else e()}else if("undefined"!=typeof importScripts){var a="";try{throw new Error("_")}catch(e){e.stack.replace(/(?:at|@).*(http.+):[\d]+:[\d]+/,function(e,t){$__curScript={src:t},a=t.replace(/\/[^\/]*$/,"/")})}t&&importScripts(a+"system-polyfills.js"),e()}else $__curScript="undefined"!=typeof __filename?{src:__filename}:null,e()}(); +//# sourceMappingURL=system.js.map diff --git a/node_modules/systemjs/dist/system.js.map b/node_modules/systemjs/dist/system.js.map new file mode 100644 index 000000000..95326bbe5 --- /dev/null +++ b/node_modules/systemjs/dist/system.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["system.src.js"],"names":["bootstrap","global","URLPolyfill","url","baseURL","TypeError","m","String","replace","match","RangeError","protocol","username","password","host","hostname","port","pathname","search","hash","undefined","base","flag","slice","lastIndexOf","output","p","pop","push","join","this","origin","href","self","__global","addToError","err","msg","originalErr","stack","message","toString","split","newStack","i","length","$__curScript","indexOf","src","newMsg","substr","isBrowser","isWindows","newErr","errArgs","Error","fileName","lineNumber","Module","Loader","options","_loader","loaderObj","loads","modules","importPromises","moduleRecords","defineProperty","get","SystemJSLoader","call","paths","systemJSConstructor","SystemProto","hook","name","prototype","hookConstructor","isAbsolute","absURLRegEx","isRel","isPlain","urlResolve","parent","baseURI","URL","baseURIObj","applyPaths","loader","wildcard","pathMatch","maxWildcardPrefixLen","pathsCache","hasOwnProperty","path","pathParts","wildcardPrefixLen","outPath","group","deps","names","indices","l","index","getESModule","exports","esModule","getOwnPropertyDescriptor","defineOrCopyProperty","extend","value","targetObj","sourceObj","propName","d","Object","ex","a","b","prepend","extendMeta","val","Array","concat","extendPkgConfig","pkgCfgA","pkgCfgB","pkgName","warnInvalidProperties","prop","map","meta","depCache","dNormalized","coreResolve","warn","setPkgConfig","cfg","prependConfig","pkg","packages","basePkg","main","warnings","console","readMemberExpression","pParts","shift","getMapMatch","bestMatch","bestMatchLength","curMatchLength","prepareBaseURL","setProduction","isProduction","isBuilder","set","envModule","newModule","browser","node","_nodeRequire","production","dev","build","default","getNodeModule","parentModuleContext","_nodeModulePaths","require","parentName","mapMatch","has","builder","envSet","envCallback","browserConfig","nodeConfig","devConfig","buildConfig","productionConfig","detectRegisterFormat","source","leadingCommentAndMeta","leadingCommentAndMetaRegEx","createEntry","originalIndices","declare","execute","executingRequire","declarative","normalizedDeps","groupIndex","evaluated","module","esmExports","getGlobalValue","globalValue","first","parseCondition","condition","conditionExport","conditionModule","negation","conditionExportIndex","sysConditions","negate","serializeCondition","conditionObj","resolveCondition","bool","normalize","then","normalizedCondition","load","q","interpolateConditional","conditionalMatch","interpolationRegEx","Promise","resolve","conditionValue","booleanConditional","booleanIndex","isWorker","window","importScripts","document","process","platform","assert","item","thisLen","e","obj","opt","getElementsByTagName","bases","location","cwd","nativeURL","createLoad","status","anonCnt","linkSets","dependencies","metadata","loadModule","asyncStartLoadPartwayThrough","step","address","moduleName","moduleMetadata","moduleSource","moduleAddress","requestLoad","request","refererName","refererAddress","reject","proceedToLocate","proceedToFetch","locate","proceedToTranslate","fetch","translate","instantiate","instantiateResult","depsList","loadPromises","depLoad","key","addLoadToLinkSet","all","updateLinkSetOnLoad","exc","exception","linkSetFailed","stepState","existingLoad","done","linkSet","createLinkSet","startingLoad","loadingCount","j","doLink","error","link","_newModule","finishLoad","abrupt","checkError","pLoad","dep","failed","linkIndex","splice","globalLoadsIndex","trace","depMap","forEach","loadIndex","doDynamicExecute","linkError","createImportPromise","promise","constructor","define","delete","import","parentAddress","sourcePromise","pNames","getOwnPropertyNames","configurable","enumerable","freeze","referrerName","referrerAddress","System","fetchTextFromURL","XMLHttpRequest","authorization","fulfill","xhr","responseText","statusText","sameDomain","doTimeout","domainCheck","exec","XDomainRequest","onload","onerror","ontimeout","onprogress","timeout","onreadystatechange","readyState","addEventListener","open","setRequestHeader","withCredentials","setTimeout","send","fs","readFile","data","dataString","opts","headers","Accept","credentials","r","ok","text","transpile","transpiler","pluginLoader","__useDefault","transpileFunction","Compiler","traceurTranspile","createLanguageService","typescriptTranspile","babelTranspile","traceur","traceurOptions","script","sourceMaps","filename","inputSourceMap","sourceMap","compiler","doTraceurCompile","compile","babel","babelOptions","code","ast","transform","ts","typescriptOptions","target","ScriptTarget","ES5","inlineSourceMap","ModuleKind","__exec","sourceMapString","hasBuffer","sourceMapPrefix","Buffer","btoa","unescape","encodeURIComponent","getSource","wrap","lastLineIndex","format","JSON","stringify","preExec","curLoad","callCounter","curSystem","SystemJS","postExec","scriptExec","head","body","documentElement","createElement","_e","apply","arguments","integrity","setAttribute","nonce","appendChild","removeChild","register","reduceRegister_","useVm","vm","supportsScriptExec","runInThisContext","eval","scripts","chrome","extension","navigator","userAgent","scriptSrc","defaultJSExtensions","pluginFirst","loaderErrorStack","skipExt","resolved","httpRequest","systemImport","systemTranslate","entry","parse","getConfig","curCurScript","config","isEnvConfig","checkHasConfig","transpilerRuntime","loadedTranspilerRuntime","bundles","packageConfigPaths","objMaps","v","defaultJSExtension","decanonicalize","pkgMatch","packageLength","Math","max","normalized","bundle","normalizedBundleDep","c","getPackage","curPkg","pkgLen","curPkgLen","addDefaultExtension","subPath","skipExtensions","defaultExtension","metaMatch","getMetaMatches","metaPattern","matchMeta","matchDepth","applyPackageConfigSync","mapPath","mapped","doMapSync","validMapping","normalizeSync","applyPackageConfig","doMap","doStringMap","conditionPromises","conditions","conditionValues","createPkgConfigPathObj","lastWildcard","regEx","RegExp","getPackageConfigMatch","configPath","exactMatch","packageConfigPath","packageName","loadPackageConfigPath","pkgConfigPath","configLoader","systemjs","pkgMeta","matchFn","wildcardIndex","dotRel","exactMeta","decanonicalized","isPlugin","parentPackageName","parentPackage","parentMap","parentMapMatch","pkgConfigMatch","isConfigured","configured","bestDepth","getInteractiveScriptLoad","interactiveScript","interactiveLoadingScripts","webWorkerImport","workerLoad","curRequire","ieEvents","s","isOpera","opera","attachEvent","loadingCnt","registerQueue","pushRegister","scriptLoad","complete","evt","cleanup","detachEvent","removeEventListener","async","crossOrigin","buildGroups","groups","depName","depEntry","defined","depGroupIndex","startEntry","curGroupDeclarative","linkDeclarativeModule","linkDynamicModule","ModuleRecord","getOrCreateModuleRecord","importers","declaration","locked","importerModule","importerIndex","setter","setters","id","depExports","depModule","len","getModule","ensureEvaluated","nameNormalized","__esModule","seen","registerDynamic","pushRegister_","amd","curMeta","del","doLoad","grouped","normalizePromises","esmRegEx","traceurRuntimeRegEx","babelHelpersRegEx","args","depInject","loadedTranspiler","transpilerPromise","loaderModule","originalName","file","sources","originalSource","$traceurRuntime","babelHelpers","__globalName","g","globals","gl","exportName","retrieveGlobal","prepareGlobal","encapsulateGlobal","reduceRegister","forEachGlobal","callback","keys","forEachGlobalValue","globalName","ignoredGlobalProps","globalSnapshot","encapsulate","curDefine","oldGlobals","singleGlobal","multipleExports","getCJSDeps","inLocation","locations","cjsRequireRegEx","lastIndex","commentRegEx","stringRegEx","stringLocations","commentLocations","cjsExportsRegEx","hashBangRegEx","metaDeps","cjsRequireDetection","_require","requireResolve","cjsDeferDepsExecute","pathVars","getPathVars","__cjsWrapper","dirname","cjsWrapper","stripOrigin","windowOrigin","parentId","moduleId","pluginIndex","amdDefine","requireIndex","params","fnBracketRegEx","requireAlias","wsRegEx","requireRegEx","requireRegExs","cjsRequirePre","cjsRequirePost","errback","referer","dynamicRequires","factory","req","contextualRequire","depValues","uri","moduleIndex","exportsIndex","toUrl","amdRequire","amdRegEx","builderExecute","getParentName","parentPluginIndex","parsePlugin","argumentName","pluginName","argument","plugin","combinePluginParts","checkDefaultExtension","arg","createNormalizeSync","parsed","pluginSyntaxIndex","loaderNormalized","result","calledInstantiate","alias","aliasDeps","_export","setMetaProperty","curPart","depth","metaRegEx","metaPartRegEx","metaParts","firstChar","metaString","metaName","metaValue","loadedBundles","matched","curModule","parts","substring","version","doPolyfill","currentScript","defer","curPath","basePath","systemJSBootstrap","write","__filename"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/systemjs/dist/system.src.js b/node_modules/systemjs/dist/system.src.js new file mode 100644 index 000000000..3734388df --- /dev/null +++ b/node_modules/systemjs/dist/system.src.js @@ -0,0 +1,5153 @@ +/* + * SystemJS v0.19.39 + */ +(function() { +function bootstrap() {// from https://gist.github.com/Yaffle/1088850 +(function(global) { +function URLPolyfill(url, baseURL) { + if (typeof url != 'string') + throw new TypeError('URL must be a string'); + var m = String(url).replace(/^\s+|\s+$/g, "").match(/^([^:\/?#]+:)?(?:\/\/(?:([^:@\/?#]*)(?::([^:@\/?#]*))?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/); + if (!m) + throw new RangeError('Invalid URL format'); + var protocol = m[1] || ""; + var username = m[2] || ""; + var password = m[3] || ""; + var host = m[4] || ""; + var hostname = m[5] || ""; + var port = m[6] || ""; + var pathname = m[7] || ""; + var search = m[8] || ""; + var hash = m[9] || ""; + if (baseURL !== undefined) { + var base = baseURL instanceof URLPolyfill ? baseURL : new URLPolyfill(baseURL); + var flag = !protocol && !host && !username; + if (flag && !pathname && !search) + search = base.search; + if (flag && pathname[0] !== "/") + pathname = (pathname ? (((base.host || base.username) && !base.pathname ? "/" : "") + base.pathname.slice(0, base.pathname.lastIndexOf("/") + 1) + pathname) : base.pathname); + // dot segments removal + var output = []; + pathname.replace(/^(\.\.?(\/|$))+/, "") + .replace(/\/(\.(\/|$))+/g, "/") + .replace(/\/\.\.$/, "/../") + .replace(/\/?[^\/]*/g, function (p) { + if (p === "/..") + output.pop(); + else + output.push(p); + }); + pathname = output.join("").replace(/^\//, pathname[0] === "/" ? "/" : ""); + if (flag) { + port = base.port; + hostname = base.hostname; + host = base.host; + password = base.password; + username = base.username; + } + if (!protocol) + protocol = base.protocol; + } + + // convert URLs to use / always + pathname = pathname.replace(/\\/g, '/'); + + this.origin = host ? protocol + (protocol !== "" || host !== "" ? "//" : "") + host : ""; + this.href = protocol + (protocol && host || protocol == "file:" ? "//" : "") + (username !== "" ? username + (password !== "" ? ":" + password : "") + "@" : "") + host + pathname + search + hash; + this.protocol = protocol; + this.username = username; + this.password = password; + this.host = host; + this.hostname = hostname; + this.port = port; + this.pathname = pathname; + this.search = search; + this.hash = hash; +} +global.URLPolyfill = URLPolyfill; +})(typeof self != 'undefined' ? self : global);(function(__global) { + + var isWorker = typeof window == 'undefined' && typeof self != 'undefined' && typeof importScripts != 'undefined'; + var isBrowser = typeof window != 'undefined' && typeof document != 'undefined'; + var isWindows = typeof process != 'undefined' && typeof process.platform != 'undefined' && !!process.platform.match(/^win/); + + if (!__global.console) + __global.console = { assert: function() {} }; + + // IE8 support + var indexOf = Array.prototype.indexOf || function(item) { + for (var i = 0, thisLen = this.length; i < thisLen; i++) { + if (this[i] === item) { + return i; + } + } + return -1; + }; + + var defineProperty; + (function () { + try { + if (!!Object.defineProperty({}, 'a', {})) + defineProperty = Object.defineProperty; + } + catch (e) { + defineProperty = function(obj, prop, opt) { + try { + obj[prop] = opt.value || opt.get.call(obj); + } + catch(e) {} + } + } + })(); + + var errArgs = new Error(0, '_').fileName == '_'; + + function addToError(err, msg) { + // parse the stack removing loader code lines for simplification + if (!err.originalErr) { + var stack = ((err.message || err) + (err.stack ? '\n' + err.stack : '')).toString().split('\n'); + var newStack = []; + for (var i = 0; i < stack.length; i++) { + if (typeof $__curScript == 'undefined' || stack[i].indexOf($__curScript.src) == -1) + newStack.push(stack[i]); + } + } + + var newMsg = '(SystemJS) ' + (newStack ? newStack.join('\n\t') : err.message.substr(11)) + '\n\t' + msg; + + // Convert file:/// URLs to paths in Node + if (!isBrowser) + newMsg = newMsg.replace(isWindows ? /file:\/\/\//g : /file:\/\//g, ''); + + var newErr = errArgs ? new Error(newMsg, err.fileName, err.lineNumber) : new Error(newMsg); + + newErr.stack = newMsg; + + // track the original error + newErr.originalErr = err.originalErr || err; + + return newErr; + } + + function __eval(source, debugName, context) { + try { + new Function(source).call(context); + } + catch(e) { + throw addToError(e, 'Evaluating ' + debugName); + } + } + + var baseURI; + + // environent baseURI detection + if (typeof document != 'undefined' && document.getElementsByTagName) { + baseURI = document.baseURI; + + if (!baseURI) { + var bases = document.getElementsByTagName('base'); + baseURI = bases[0] && bases[0].href || window.location.href; + } + } + else if (typeof location != 'undefined') { + baseURI = __global.location.href; + } + + // sanitize out the hash and querystring + if (baseURI) { + baseURI = baseURI.split('#')[0].split('?')[0]; + baseURI = baseURI.substr(0, baseURI.lastIndexOf('/') + 1); + } + else if (typeof process != 'undefined' && process.cwd) { + baseURI = 'file://' + (isWindows ? '/' : '') + process.cwd() + '/'; + if (isWindows) + baseURI = baseURI.replace(/\\/g, '/'); + } + else { + throw new TypeError('No environment baseURI'); + } + + try { + var nativeURL = new __global.URL('test:///').protocol == 'test:'; + } + catch(e) {} + + var URL = nativeURL ? __global.URL : __global.URLPolyfill; + +/* +********************************************************************************************* + + Dynamic Module Loader Polyfill + + - Implemented exactly to the former 2014-08-24 ES6 Specification Draft Rev 27, Section 15 + http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#august_24_2014_draft_rev_27 + + - Functions are commented with their spec numbers, with spec differences commented. + + - Spec bugs are commented in this code with links. + + - Abstract functions have been combined where possible, and their associated functions + commented. + + - Realm implementation is entirely omitted. + +********************************************************************************************* +*/ + +function Module() {} +// http://www.ecma-international.org/ecma-262/6.0/#sec-@@tostringtag +defineProperty(Module.prototype, 'toString', { + value: function() { + return 'Module'; + } +}); +function Loader(options) { + this._loader = { + loaderObj: this, + loads: [], + modules: {}, + importPromises: {}, + moduleRecords: {} + }; + + // 26.3.3.6 + defineProperty(this, 'global', { + get: function() { + return __global; + } + }); + + // 26.3.3.13 realm not implemented +} + +(function() { + +// Some Helpers + +// logs a linkset snapshot for debugging +/* function snapshot(loader) { + console.log('---Snapshot---'); + for (var i = 0; i < loader.loads.length; i++) { + var load = loader.loads[i]; + var linkSetLog = ' ' + load.name + ' (' + load.status + '): '; + + for (var j = 0; j < load.linkSets.length; j++) { + linkSetLog += '{' + logloads(load.linkSets[j].loads) + '} '; + } + console.log(linkSetLog); + } + console.log(''); +} +function logloads(loads) { + var log = ''; + for (var k = 0; k < loads.length; k++) + log += loads[k].name + (k != loads.length - 1 ? ' ' : ''); + return log; +} */ + + +/* function checkInvariants() { + // see https://bugs.ecmascript.org/show_bug.cgi?id=2603#c1 + + var loads = System._loader.loads; + var linkSets = []; + + for (var i = 0; i < loads.length; i++) { + var load = loads[i]; + console.assert(load.status == 'loading' || load.status == 'loaded', 'Each load is loading or loaded'); + + for (var j = 0; j < load.linkSets.length; j++) { + var linkSet = load.linkSets[j]; + + for (var k = 0; k < linkSet.loads.length; k++) + console.assert(loads.indexOf(linkSet.loads[k]) != -1, 'linkSet loads are a subset of loader loads'); + + if (linkSets.indexOf(linkSet) == -1) + linkSets.push(linkSet); + } + } + + for (var i = 0; i < loads.length; i++) { + var load = loads[i]; + for (var j = 0; j < linkSets.length; j++) { + var linkSet = linkSets[j]; + + if (linkSet.loads.indexOf(load) != -1) + console.assert(load.linkSets.indexOf(linkSet) != -1, 'linkSet contains load -> load contains linkSet'); + + if (load.linkSets.indexOf(linkSet) != -1) + console.assert(linkSet.loads.indexOf(load) != -1, 'load contains linkSet -> linkSet contains load'); + } + } + + for (var i = 0; i < linkSets.length; i++) { + var linkSet = linkSets[i]; + for (var j = 0; j < linkSet.loads.length; j++) { + var load = linkSet.loads[j]; + + for (var k = 0; k < load.dependencies.length; k++) { + var depName = load.dependencies[k].value; + var depLoad; + for (var l = 0; l < loads.length; l++) { + if (loads[l].name != depName) + continue; + depLoad = loads[l]; + break; + } + + // loading records are allowed not to have their dependencies yet + // if (load.status != 'loading') + // console.assert(depLoad, 'depLoad found'); + + // console.assert(linkSet.loads.indexOf(depLoad) != -1, 'linkset contains all dependencies'); + } + } + } +} */ + + // 15.2.3 - Runtime Semantics: Loader State + + // 15.2.3.11 + function createLoaderLoad(object) { + return { + // modules is an object for ES5 implementation + modules: {}, + loads: [], + loaderObj: object + }; + } + + // 15.2.3.2 Load Records and LoadRequest Objects + + var anonCnt = 0; + + // 15.2.3.2.1 + function createLoad(name) { + return { + status: 'loading', + name: name || '', + linkSets: [], + dependencies: [], + metadata: {} + }; + } + + // 15.2.3.2.2 createLoadRequestObject, absorbed into calling functions + + // 15.2.4 + + // 15.2.4.1 + function loadModule(loader, name, options) { + return new Promise(asyncStartLoadPartwayThrough({ + step: options.address ? 'fetch' : 'locate', + loader: loader, + moduleName: name, + // allow metadata for import https://bugs.ecmascript.org/show_bug.cgi?id=3091 + moduleMetadata: options && options.metadata || {}, + moduleSource: options.source, + moduleAddress: options.address + })); + } + + // 15.2.4.2 + function requestLoad(loader, request, refererName, refererAddress) { + // 15.2.4.2.1 CallNormalize + return new Promise(function(resolve, reject) { + resolve(loader.loaderObj.normalize(request, refererName, refererAddress)); + }) + // 15.2.4.2.2 GetOrCreateLoad + .then(function(name) { + var load; + if (loader.modules[name]) { + load = createLoad(name); + load.status = 'linked'; + // https://bugs.ecmascript.org/show_bug.cgi?id=2795 + load.module = loader.modules[name]; + return load; + } + + for (var i = 0, l = loader.loads.length; i < l; i++) { + load = loader.loads[i]; + if (load.name != name) + continue; + return load; + } + + load = createLoad(name); + loader.loads.push(load); + + proceedToLocate(loader, load); + + return load; + }); + } + + // 15.2.4.3 + function proceedToLocate(loader, load) { + proceedToFetch(loader, load, + Promise.resolve() + // 15.2.4.3.1 CallLocate + .then(function() { + return loader.loaderObj.locate({ name: load.name, metadata: load.metadata }); + }) + ); + } + + // 15.2.4.4 + function proceedToFetch(loader, load, p) { + proceedToTranslate(loader, load, + p + // 15.2.4.4.1 CallFetch + .then(function(address) { + // adjusted, see https://bugs.ecmascript.org/show_bug.cgi?id=2602 + if (load.status != 'loading') + return; + load.address = address; + + return loader.loaderObj.fetch({ name: load.name, metadata: load.metadata, address: address }); + }) + ); + } + + // 15.2.4.5 + function proceedToTranslate(loader, load, p) { + p + // 15.2.4.5.1 CallTranslate + .then(function(source) { + if (load.status != 'loading') + return; + + load.address = load.address || load.name; + + return Promise.resolve(loader.loaderObj.translate({ name: load.name, metadata: load.metadata, address: load.address, source: source })) + + // 15.2.4.5.2 CallInstantiate + .then(function(source) { + load.source = source; + return loader.loaderObj.instantiate({ name: load.name, metadata: load.metadata, address: load.address, source: source }); + }) + + // 15.2.4.5.3 InstantiateSucceeded + .then(function(instantiateResult) { + if (instantiateResult === undefined) + throw new TypeError('Declarative modules unsupported in the polyfill.'); + + if (typeof instantiateResult != 'object') + throw new TypeError('Invalid instantiate return value'); + + load.depsList = instantiateResult.deps || []; + load.execute = instantiateResult.execute; + }) + // 15.2.4.6 ProcessLoadDependencies + .then(function() { + load.dependencies = []; + var depsList = load.depsList; + + var loadPromises = []; + for (var i = 0, l = depsList.length; i < l; i++) (function(request, index) { + loadPromises.push( + requestLoad(loader, request, load.name, load.address) + + // 15.2.4.6.1 AddDependencyLoad (load is parentLoad) + .then(function(depLoad) { + + // adjusted from spec to maintain dependency order + // this is due to the System.register internal implementation needs + load.dependencies[index] = { + key: request, + value: depLoad.name + }; + + if (depLoad.status != 'linked') { + var linkSets = load.linkSets.concat([]); + for (var i = 0, l = linkSets.length; i < l; i++) + addLoadToLinkSet(linkSets[i], depLoad); + } + + // console.log('AddDependencyLoad ' + depLoad.name + ' for ' + load.name); + // snapshot(loader); + }) + ); + })(depsList[i], i); + + return Promise.all(loadPromises); + }) + + // 15.2.4.6.2 LoadSucceeded + .then(function() { + // console.log('LoadSucceeded ' + load.name); + // snapshot(loader); + + load.status = 'loaded'; + + var linkSets = load.linkSets.concat([]); + for (var i = 0, l = linkSets.length; i < l; i++) + updateLinkSetOnLoad(linkSets[i], load); + }); + }) + // 15.2.4.5.4 LoadFailed + ['catch'](function(exc) { + load.status = 'failed'; + load.exception = exc; + + var linkSets = load.linkSets.concat([]); + for (var i = 0, l = linkSets.length; i < l; i++) { + linkSetFailed(linkSets[i], load, exc); + } + + console.assert(load.linkSets.length == 0, 'linkSets not removed'); + }); + } + + // 15.2.4.7 PromiseOfStartLoadPartwayThrough absorbed into calling functions + + // 15.2.4.7.1 + function asyncStartLoadPartwayThrough(stepState) { + return function(resolve, reject) { + var loader = stepState.loader; + var name = stepState.moduleName; + var step = stepState.step; + + if (loader.modules[name]) + throw new TypeError('"' + name + '" already exists in the module table'); + + // adjusted to pick up existing loads + var existingLoad; + for (var i = 0, l = loader.loads.length; i < l; i++) { + if (loader.loads[i].name == name) { + existingLoad = loader.loads[i]; + + if (step == 'translate' && !existingLoad.source) { + existingLoad.address = stepState.moduleAddress; + proceedToTranslate(loader, existingLoad, Promise.resolve(stepState.moduleSource)); + } + + // a primary load -> use that existing linkset if it is for the direct load here + // otherwise create a new linkset unit + if (existingLoad.linkSets.length && existingLoad.linkSets[0].loads[0].name == existingLoad.name) + return existingLoad.linkSets[0].done.then(function() { + resolve(existingLoad); + }); + } + } + + var load = existingLoad || createLoad(name); + + load.metadata = stepState.moduleMetadata; + + var linkSet = createLinkSet(loader, load); + + loader.loads.push(load); + + resolve(linkSet.done); + + if (step == 'locate') + proceedToLocate(loader, load); + + else if (step == 'fetch') + proceedToFetch(loader, load, Promise.resolve(stepState.moduleAddress)); + + else { + console.assert(step == 'translate', 'translate step'); + load.address = stepState.moduleAddress; + proceedToTranslate(loader, load, Promise.resolve(stepState.moduleSource)); + } + } + } + + // Declarative linking functions run through alternative implementation: + // 15.2.5.1.1 CreateModuleLinkageRecord not implemented + // 15.2.5.1.2 LookupExport not implemented + // 15.2.5.1.3 LookupModuleDependency not implemented + + // 15.2.5.2.1 + function createLinkSet(loader, startingLoad) { + var linkSet = { + loader: loader, + loads: [], + startingLoad: startingLoad, // added see spec bug https://bugs.ecmascript.org/show_bug.cgi?id=2995 + loadingCount: 0 + }; + linkSet.done = new Promise(function(resolve, reject) { + linkSet.resolve = resolve; + linkSet.reject = reject; + }); + addLoadToLinkSet(linkSet, startingLoad); + return linkSet; + } + // 15.2.5.2.2 + function addLoadToLinkSet(linkSet, load) { + if (load.status == 'failed') + return; + + for (var i = 0, l = linkSet.loads.length; i < l; i++) + if (linkSet.loads[i] == load) + return; + + linkSet.loads.push(load); + load.linkSets.push(linkSet); + + // adjustment, see https://bugs.ecmascript.org/show_bug.cgi?id=2603 + if (load.status != 'loaded') { + linkSet.loadingCount++; + } + + var loader = linkSet.loader; + + for (var i = 0, l = load.dependencies.length; i < l; i++) { + if (!load.dependencies[i]) + continue; + + var name = load.dependencies[i].value; + + if (loader.modules[name]) + continue; + + for (var j = 0, d = loader.loads.length; j < d; j++) { + if (loader.loads[j].name != name) + continue; + + addLoadToLinkSet(linkSet, loader.loads[j]); + break; + } + } + // console.log('add to linkset ' + load.name); + // snapshot(linkSet.loader); + } + + // linking errors can be generic or load-specific + // this is necessary for debugging info + function doLink(linkSet) { + var error = false; + try { + link(linkSet, function(load, exc) { + linkSetFailed(linkSet, load, exc); + error = true; + }); + } + catch(e) { + linkSetFailed(linkSet, null, e); + error = true; + } + return error; + } + + // 15.2.5.2.3 + function updateLinkSetOnLoad(linkSet, load) { + // console.log('update linkset on load ' + load.name); + // snapshot(linkSet.loader); + + console.assert(load.status == 'loaded' || load.status == 'linked', 'loaded or linked'); + + linkSet.loadingCount--; + + if (linkSet.loadingCount > 0) + return; + + // adjusted for spec bug https://bugs.ecmascript.org/show_bug.cgi?id=2995 + var startingLoad = linkSet.startingLoad; + + // non-executing link variation for loader tracing + // on the server. Not in spec. + /***/ + if (linkSet.loader.loaderObj.execute === false) { + var loads = [].concat(linkSet.loads); + for (var i = 0, l = loads.length; i < l; i++) { + var load = loads[i]; + load.module = { + name: load.name, + module: _newModule({}), + evaluated: true + }; + load.status = 'linked'; + finishLoad(linkSet.loader, load); + } + return linkSet.resolve(startingLoad); + } + /***/ + + var abrupt = doLink(linkSet); + + if (abrupt) + return; + + console.assert(linkSet.loads.length == 0, 'loads cleared'); + + linkSet.resolve(startingLoad); + } + + // 15.2.5.2.4 + function linkSetFailed(linkSet, load, exc) { + var loader = linkSet.loader; + var requests; + + checkError: + if (load) { + if (linkSet.loads[0].name == load.name) { + exc = addToError(exc, 'Error loading ' + load.name); + } + else { + for (var i = 0; i < linkSet.loads.length; i++) { + var pLoad = linkSet.loads[i]; + for (var j = 0; j < pLoad.dependencies.length; j++) { + var dep = pLoad.dependencies[j]; + if (dep.value == load.name) { + exc = addToError(exc, 'Error loading ' + load.name + ' as "' + dep.key + '" from ' + pLoad.name); + break checkError; + } + } + } + exc = addToError(exc, 'Error loading ' + load.name + ' from ' + linkSet.loads[0].name); + } + } + else { + exc = addToError(exc, 'Error linking ' + linkSet.loads[0].name); + } + + + var loads = linkSet.loads.concat([]); + for (var i = 0, l = loads.length; i < l; i++) { + var load = loads[i]; + + // store all failed load records + loader.loaderObj.failed = loader.loaderObj.failed || []; + if (indexOf.call(loader.loaderObj.failed, load) == -1) + loader.loaderObj.failed.push(load); + + var linkIndex = indexOf.call(load.linkSets, linkSet); + console.assert(linkIndex != -1, 'link not present'); + load.linkSets.splice(linkIndex, 1); + if (load.linkSets.length == 0) { + var globalLoadsIndex = indexOf.call(linkSet.loader.loads, load); + if (globalLoadsIndex != -1) + linkSet.loader.loads.splice(globalLoadsIndex, 1); + } + } + linkSet.reject(exc); + } + + // 15.2.5.2.5 + function finishLoad(loader, load) { + // add to global trace if tracing + if (loader.loaderObj.trace) { + if (!loader.loaderObj.loads) + loader.loaderObj.loads = {}; + var depMap = {}; + load.dependencies.forEach(function(dep) { + depMap[dep.key] = dep.value; + }); + loader.loaderObj.loads[load.name] = { + name: load.name, + deps: load.dependencies.map(function(dep){ return dep.key }), + depMap: depMap, + address: load.address, + metadata: load.metadata, + source: load.source + }; + } + // if not anonymous, add to the module table + if (load.name) { + console.assert(!loader.modules[load.name] || loader.modules[load.name].module === load.module.module, 'load not in module table'); + loader.modules[load.name] = load.module; + } + var loadIndex = indexOf.call(loader.loads, load); + if (loadIndex != -1) + loader.loads.splice(loadIndex, 1); + for (var i = 0, l = load.linkSets.length; i < l; i++) { + loadIndex = indexOf.call(load.linkSets[i].loads, load); + if (loadIndex != -1) + load.linkSets[i].loads.splice(loadIndex, 1); + } + load.linkSets.splice(0, load.linkSets.length); + } + + function doDynamicExecute(linkSet, load, linkError) { + try { + var module = load.execute(); + } + catch(e) { + linkError(load, e); + return; + } + if (!module || !(module instanceof Module)) + linkError(load, new TypeError('Execution must define a Module instance')); + else + return module; + } + + // 26.3 Loader + + // 26.3.1.1 + // defined at top + + // importPromises adds ability to import a module twice without error - https://bugs.ecmascript.org/show_bug.cgi?id=2601 + function createImportPromise(loader, name, promise) { + var importPromises = loader._loader.importPromises; + return importPromises[name] = promise.then(function(m) { + importPromises[name] = undefined; + return m; + }, function(e) { + importPromises[name] = undefined; + throw e; + }); + } + + Loader.prototype = { + // 26.3.3.1 + constructor: Loader, + // 26.3.3.2 + define: function(name, source, options) { + // check if already defined + if (this._loader.importPromises[name]) + throw new TypeError('Module is already loading.'); + return createImportPromise(this, name, new Promise(asyncStartLoadPartwayThrough({ + step: 'translate', + loader: this._loader, + moduleName: name, + moduleMetadata: options && options.metadata || {}, + moduleSource: source, + moduleAddress: options && options.address + }))); + }, + // 26.3.3.3 + 'delete': function(name) { + var loader = this._loader; + delete loader.importPromises[name]; + delete loader.moduleRecords[name]; + return loader.modules[name] ? delete loader.modules[name] : false; + }, + // 26.3.3.4 entries not implemented + // 26.3.3.5 + get: function(key) { + if (!this._loader.modules[key]) + return; + return this._loader.modules[key].module; + }, + // 26.3.3.7 + has: function(name) { + return !!this._loader.modules[name]; + }, + // 26.3.3.8 + 'import': function(name, parentName, parentAddress) { + if (typeof parentName == 'object') + parentName = parentName.name; + + // run normalize first + var loaderObj = this; + + // added, see https://bugs.ecmascript.org/show_bug.cgi?id=2659 + return Promise.resolve(loaderObj.normalize(name, parentName)) + .then(function(name) { + var loader = loaderObj._loader; + + if (loader.modules[name]) + return loader.modules[name].module; + + return loader.importPromises[name] || createImportPromise(loaderObj, name, + loadModule(loader, name, {}) + .then(function(load) { + delete loader.importPromises[name]; + return load.module.module; + })); + }); + }, + // 26.3.3.9 keys not implemented + // 26.3.3.10 + load: function(name) { + var loader = this._loader; + if (loader.modules[name]) + return Promise.resolve(); + return loader.importPromises[name] || createImportPromise(this, name, new Promise(asyncStartLoadPartwayThrough({ + step: 'locate', + loader: loader, + moduleName: name, + moduleMetadata: {}, + moduleSource: undefined, + moduleAddress: undefined + })) + .then(function() { + delete loader.importPromises[name]; + })); + }, + // 26.3.3.11 + module: function(source, options) { + var load = createLoad(); + load.address = options && options.address; + var linkSet = createLinkSet(this._loader, load); + var sourcePromise = Promise.resolve(source); + var loader = this._loader; + var p = linkSet.done.then(function() { + return load.module.module; + }); + proceedToTranslate(loader, load, sourcePromise); + return p; + }, + // 26.3.3.12 + newModule: function (obj) { + if (typeof obj != 'object') + throw new TypeError('Expected object'); + + var m = new Module(); + + var pNames = []; + if (Object.getOwnPropertyNames && obj != null) + pNames = Object.getOwnPropertyNames(obj); + else + for (var key in obj) + pNames.push(key); + + for (var i = 0; i < pNames.length; i++) (function(key) { + defineProperty(m, key, { + configurable: false, + enumerable: true, + get: function () { + return obj[key]; + }, + set: function() { + throw new Error('Module exports cannot be changed externally.'); + } + }); + })(pNames[i]); + + if (Object.freeze) + Object.freeze(m); + + return m; + }, + // 26.3.3.14 + set: function(name, module) { + if (!(module instanceof Module)) + throw new TypeError('Loader.set(' + name + ', module) must be a module'); + this._loader.modules[name] = { + module: module + }; + }, + // 26.3.3.15 values not implemented + // 26.3.3.16 @@iterator not implemented + // 26.3.3.17 @@toStringTag not implemented + + // 26.3.3.18.1 + normalize: function(name, referrerName, referrerAddress) {}, + // 26.3.3.18.2 + locate: function(load) { + return load.name; + }, + // 26.3.3.18.3 + fetch: function(load) { + }, + // 26.3.3.18.4 + translate: function(load) { + return load.source; + }, + // 26.3.3.18.5 + instantiate: function(load) { + } + }; + + var _newModule = Loader.prototype.newModule; + +/* + * ES6 Module Declarative Linking Code + */ + function link(linkSet, linkError) { + + var loader = linkSet.loader; + + if (!linkSet.loads.length) + return; + + var loads = linkSet.loads.concat([]); + + for (var i = 0; i < loads.length; i++) { + var load = loads[i]; + + var module = doDynamicExecute(linkSet, load, linkError); + if (!module) + return; + load.module = { + name: load.name, + module: module + }; + load.status = 'linked'; + + finishLoad(loader, load); + } + } + +})(); + +var System; + + var fetchTextFromURL; + if (typeof XMLHttpRequest != 'undefined') { + fetchTextFromURL = function(url, authorization, fulfill, reject) { + var xhr = new XMLHttpRequest(); + var sameDomain = true; + var doTimeout = false; + if (!('withCredentials' in xhr)) { + // check if same domain + var domainCheck = /^(\w+:)?\/\/([^\/]+)/.exec(url); + if (domainCheck) { + sameDomain = domainCheck[2] === window.location.host; + if (domainCheck[1]) + sameDomain &= domainCheck[1] === window.location.protocol; + } + } + if (!sameDomain && typeof XDomainRequest != 'undefined') { + xhr = new XDomainRequest(); + xhr.onload = load; + xhr.onerror = error; + xhr.ontimeout = error; + xhr.onprogress = function() {}; + xhr.timeout = 0; + doTimeout = true; + } + function load() { + fulfill(xhr.responseText); + } + function error() { + reject(new Error('XHR error' + (xhr.status ? ' (' + xhr.status + (xhr.statusText ? ' ' + xhr.statusText : '') + ')' : '') + ' loading ' + url)); + } + + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + // in Chrome on file:/// URLs, status is 0 + if (xhr.status == 0) { + if (xhr.responseText) { + load(); + } + else { + // when responseText is empty, wait for load or error event + // to inform if it is a 404 or empty file + xhr.addEventListener('error', error); + xhr.addEventListener('load', load); + } + } + else if (xhr.status === 200) { + load(); + } + else { + error(); + } + } + }; + xhr.open("GET", url, true); + + if (xhr.setRequestHeader) { + xhr.setRequestHeader('Accept', 'application/x-es-module, */*'); + // can set "authorization: true" to enable withCredentials only + if (authorization) { + if (typeof authorization == 'string') + xhr.setRequestHeader('Authorization', authorization); + xhr.withCredentials = true; + } + } + + if (doTimeout) { + setTimeout(function() { + xhr.send(); + }, 0); + } else { + xhr.send(null); + } + }; + } + else if (typeof require != 'undefined' && typeof process != 'undefined') { + var fs; + fetchTextFromURL = function(url, authorization, fulfill, reject) { + if (url.substr(0, 8) != 'file:///') + throw new Error('Unable to fetch "' + url + '". Only file URLs of the form file:/// allowed running in Node.'); + fs = fs || require('fs'); + if (isWindows) + url = url.replace(/\//g, '\\').substr(8); + else + url = url.substr(7); + return fs.readFile(url, function(err, data) { + if (err) { + return reject(err); + } + else { + // Strip Byte Order Mark out if it's the leading char + var dataString = data + ''; + if (dataString[0] === '\ufeff') + dataString = dataString.substr(1); + + fulfill(dataString); + } + }); + }; + } + else if (typeof self != 'undefined' && typeof self.fetch != 'undefined') { + fetchTextFromURL = function(url, authorization, fulfill, reject) { + var opts = { + headers: {'Accept': 'application/x-es-module, */*'} + }; + + if (authorization) { + if (typeof authorization == 'string') + opts.headers['Authorization'] = authorization; + opts.credentials = 'include'; + } + + fetch(url, opts) + .then(function (r) { + if (r.ok) { + return r.text(); + } else { + throw new Error('Fetch error: ' + r.status + ' ' + r.statusText); + } + }) + .then(fulfill, reject); + } + } + else { + throw new TypeError('No environment fetch API available.'); + } +/* + * Traceur, Babel and TypeScript transpile hook for Loader + */ +var transpile = (function() { + + // use Traceur by default + Loader.prototype.transpiler = 'traceur'; + + function transpile(load) { + var self = this; + + return Promise.resolve(__global[self.transpiler == 'typescript' ? 'ts' : self.transpiler] + || (self.pluginLoader || self)['import'](self.transpiler)) + .then(function(transpiler) { + if (transpiler.__useDefault) + transpiler = transpiler['default']; + + var transpileFunction; + if (transpiler.Compiler) + transpileFunction = traceurTranspile; + else if (transpiler.createLanguageService) + transpileFunction = typescriptTranspile; + else + transpileFunction = babelTranspile; + + // note __moduleName will be part of the transformer meta in future when we have the spec for this + return '(function(__moduleName){' + transpileFunction.call(self, load, transpiler) + '\n})("' + load.name + '");\n//# sourceURL=' + load.address + '!transpiled'; + }); + }; + + function traceurTranspile(load, traceur) { + var options = this.traceurOptions || {}; + options.modules = 'instantiate'; + options.script = false; + if (options.sourceMaps === undefined) + options.sourceMaps = 'inline'; + options.filename = load.address; + options.inputSourceMap = load.metadata.sourceMap; + options.moduleName = false; + + var compiler = new traceur.Compiler(options); + + return doTraceurCompile(load.source, compiler, options.filename); + } + function doTraceurCompile(source, compiler, filename) { + try { + return compiler.compile(source, filename); + } + catch(e) { + // on older versions of traceur (<0.9.3), an array of errors is thrown + // rather than a single error. + if (e.length) { + throw e[0]; + } + throw e; + } + } + + function babelTranspile(load, babel) { + var options = this.babelOptions || {}; + options.modules = 'system'; + if (options.sourceMap === undefined) + options.sourceMap = 'inline'; + options.inputSourceMap = load.metadata.sourceMap; + options.filename = load.address; + options.code = true; + options.ast = false; + + return babel.transform(load.source, options).code; + } + + function typescriptTranspile(load, ts) { + var options = this.typescriptOptions || {}; + options.target = options.target || ts.ScriptTarget.ES5; + if (options.sourceMap === undefined) + options.sourceMap = true; + if (options.sourceMap && options.inlineSourceMap !== false) + options.inlineSourceMap = true; + + options.module = ts.ModuleKind.System; + + return ts.transpile(load.source, options, load.address); + } + + return transpile; +})(); +// SystemJS Loader Class and Extension helpers +function SystemJSLoader() { + Loader.call(this); + + this.paths = {}; + this._loader.paths = {}; + + systemJSConstructor.call(this); +} + +// inline Object.create-style class extension +function SystemProto() {}; +SystemProto.prototype = Loader.prototype; +SystemJSLoader.prototype = new SystemProto(); +SystemJSLoader.prototype.constructor = SystemJSLoader; + +var systemJSConstructor; + +function hook(name, hook) { + SystemJSLoader.prototype[name] = hook(SystemJSLoader.prototype[name] || function() {}); +} +function hookConstructor(hook) { + systemJSConstructor = hook(systemJSConstructor || function() {}); +} + + +var absURLRegEx = /^[^\/]+:\/\//; +function isAbsolute(name) { + return name.match(absURLRegEx); +} +function isRel(name) { + return (name[0] == '.' && (!name[1] || name[1] == '/' || name[1] == '.')) || name[0] == '/'; +} +function isPlain(name) { + return !isRel(name) && !isAbsolute(name); +} + +var baseURIObj = new URL(baseURI); + +function urlResolve(name, parent) { + // url resolution shortpaths + if (name[0] == '.') { + // dot-relative url normalization + if (name[1] == '/' && name[2] != '.') + return (parent && parent.substr(0, parent.lastIndexOf('/') + 1) || baseURI) + name.substr(2); + } + else if (name[0] != '/' && name.indexOf(':') == -1) { + // plain parent normalization + return (parent && parent.substr(0, parent.lastIndexOf('/') + 1) || baseURI) + name; + } + + return new URL(name, parent && parent.replace(/#/g, '%05') || baseURIObj).href.replace(/%05/g, '#'); +} + +// NB no specification provided for System.paths, used ideas discussed in https://github.com/jorendorff/js-loaders/issues/25 +function applyPaths(loader, name) { + // most specific (most number of slashes in path) match wins + var pathMatch = '', wildcard, maxWildcardPrefixLen = 0; + + var paths = loader.paths; + var pathsCache = loader._loader.paths; + + // check to see if we have a paths entry + for (var p in paths) { + if (paths.hasOwnProperty && !paths.hasOwnProperty(p)) + continue; + + // paths sanitization + var path = paths[p]; + if (path !== pathsCache[p]) + path = paths[p] = pathsCache[p] = urlResolve(paths[p], isRel(paths[p]) ? baseURI : loader.baseURL); + + // exact path match + if (p.indexOf('*') === -1) { + if (name == p) + return paths[p]; + + // support trailing / in paths rules + else if (name.substr(0, p.length - 1) == p.substr(0, p.length - 1) && (name.length < p.length || name[p.length - 1] == p[p.length - 1]) && (paths[p][paths[p].length - 1] == '/' || paths[p] == '')) { + return paths[p].substr(0, paths[p].length - 1) + (name.length > p.length ? (paths[p] && '/' || '') + name.substr(p.length) : ''); + } + } + // wildcard path match + else { + var pathParts = p.split('*'); + if (pathParts.length > 2) + throw new TypeError('Only one wildcard in a path is permitted'); + + var wildcardPrefixLen = pathParts[0].length; + if (wildcardPrefixLen >= maxWildcardPrefixLen && + name.substr(0, pathParts[0].length) == pathParts[0] && + name.substr(name.length - pathParts[1].length) == pathParts[1]) { + maxWildcardPrefixLen = wildcardPrefixLen; + pathMatch = p; + wildcard = name.substr(pathParts[0].length, name.length - pathParts[1].length - pathParts[0].length); + } + } + } + + var outPath = paths[pathMatch]; + if (typeof wildcard == 'string') + outPath = outPath.replace('*', wildcard); + + return outPath; +} + +function dedupe(deps) { + var newDeps = []; + for (var i = 0, l = deps.length; i < l; i++) + if (indexOf.call(newDeps, deps[i]) == -1) + newDeps.push(deps[i]) + return newDeps; +} + +function group(deps) { + var names = []; + var indices = []; + for (var i = 0, l = deps.length; i < l; i++) { + var index = indexOf.call(names, deps[i]); + if (index === -1) { + names.push(deps[i]); + indices.push([i]); + } + else { + indices[index].push(i); + } + } + return { names: names, indices: indices }; +} + +var getOwnPropertyDescriptor = true; +try { + Object.getOwnPropertyDescriptor({ a: 0 }, 'a'); +} +catch(e) { + getOwnPropertyDescriptor = false; +} + +// converts any module.exports object into an object ready for SystemJS.newModule +function getESModule(exports) { + var esModule = {}; + // don't trigger getters/setters in environments that support them + if ((typeof exports == 'object' || typeof exports == 'function') && exports !== __global) { + if (getOwnPropertyDescriptor) { + for (var p in exports) { + // The default property is copied to esModule later on + if (p === 'default') + continue; + defineOrCopyProperty(esModule, exports, p); + } + } + else { + extend(esModule, exports); + } + } + esModule['default'] = exports; + defineProperty(esModule, '__useDefault', { + value: true + }); + return esModule; +} + +function defineOrCopyProperty(targetObj, sourceObj, propName) { + try { + var d; + if (d = Object.getOwnPropertyDescriptor(sourceObj, propName)) + defineProperty(targetObj, propName, d); + } + catch (ex) { + // Object.getOwnPropertyDescriptor threw an exception, fall back to normal set property + // we dont need hasOwnProperty here because getOwnPropertyDescriptor would have returned undefined above + targetObj[propName] = sourceObj[propName]; + return false; + } +} + +function extend(a, b, prepend) { + var hasOwnProperty = b && b.hasOwnProperty; + for (var p in b) { + if (hasOwnProperty && !b.hasOwnProperty(p)) + continue; + if (!prepend || !(p in a)) + a[p] = b[p]; + } + return a; +} + +// meta first-level extends where: +// array + array appends +// object + object extends +// other properties replace +function extendMeta(a, b, prepend) { + var hasOwnProperty = b && b.hasOwnProperty; + for (var p in b) { + if (hasOwnProperty && !b.hasOwnProperty(p)) + continue; + var val = b[p]; + if (!(p in a)) + a[p] = val; + else if (val instanceof Array && a[p] instanceof Array) + a[p] = [].concat(prepend ? val : a[p]).concat(prepend ? a[p] : val); + else if (typeof val == 'object' && val !== null && typeof a[p] == 'object') + a[p] = extend(extend({}, a[p]), val, prepend); + else if (!prepend) + a[p] = val; + } +} + +function extendPkgConfig(pkgCfgA, pkgCfgB, pkgName, loader, warnInvalidProperties) { + for (var prop in pkgCfgB) { + if (indexOf.call(['main', 'format', 'defaultExtension', 'basePath'], prop) != -1) { + pkgCfgA[prop] = pkgCfgB[prop]; + } + else if (prop == 'map') { + extend(pkgCfgA.map = pkgCfgA.map || {}, pkgCfgB.map); + } + else if (prop == 'meta') { + extend(pkgCfgA.meta = pkgCfgA.meta || {}, pkgCfgB.meta); + } + else if (prop == 'depCache') { + for (var d in pkgCfgB.depCache) { + var dNormalized; + + if (d.substr(0, 2) == './') + dNormalized = pkgName + '/' + d.substr(2); + else + dNormalized = coreResolve.call(loader, d); + loader.depCache[dNormalized] = (loader.depCache[dNormalized] || []).concat(pkgCfgB.depCache[d]); + } + } + else if (warnInvalidProperties && indexOf.call(['browserConfig', 'nodeConfig', 'devConfig', 'productionConfig'], prop) == -1 && + (!pkgCfgB.hasOwnProperty || pkgCfgB.hasOwnProperty(prop))) { + warn.call(loader, '"' + prop + '" is not a valid package configuration option in package ' + pkgName); + } + } +} + +// deeply-merge (to first level) config with any existing package config +function setPkgConfig(loader, pkgName, cfg, prependConfig) { + var pkg; + + // first package is config by reference for fast path, cloned after that + if (!loader.packages[pkgName]) { + pkg = loader.packages[pkgName] = cfg; + } + else { + var basePkg = loader.packages[pkgName]; + pkg = loader.packages[pkgName] = {}; + + extendPkgConfig(pkg, prependConfig ? cfg : basePkg, pkgName, loader, prependConfig); + extendPkgConfig(pkg, prependConfig ? basePkg : cfg, pkgName, loader, !prependConfig); + } + + // main object becomes main map + if (typeof pkg.main == 'object') { + pkg.map = pkg.map || {}; + pkg.map['./@main'] = pkg.main; + pkg.main['default'] = pkg.main['default'] || './'; + pkg.main = '@main'; + } + + return pkg; +} + +function warn(msg) { + if (this.warnings && typeof console != 'undefined' && console.warn) + console.warn(msg); +} +// we define a __exec for globally-scoped execution +// used by module format implementations +var __exec; + +(function() { + + var hasBuffer = typeof Buffer != 'undefined'; + try { + if (hasBuffer && new Buffer('a').toString('base64') != 'YQ==') + hasBuffer = false; + } + catch(e) { + hasBuffer = false; + } + + var sourceMapPrefix = '\n//# sourceMappingURL=data:application/json;base64,'; + function inlineSourceMap(sourceMapString) { + if (hasBuffer) + return sourceMapPrefix + new Buffer(sourceMapString).toString('base64'); + else if (typeof btoa != 'undefined') + return sourceMapPrefix + btoa(unescape(encodeURIComponent(sourceMapString))); + else + return ''; + } + + function getSource(load, wrap) { + var lastLineIndex = load.source.lastIndexOf('\n'); + + // wrap ES formats with a System closure for System global encapsulation + if (load.metadata.format == 'global') + wrap = false; + + var sourceMap = load.metadata.sourceMap; + if (sourceMap) { + if (typeof sourceMap != 'object') + throw new TypeError('load.metadata.sourceMap must be set to an object.'); + + sourceMap = JSON.stringify(sourceMap); + } + + return (wrap ? '(function(System, SystemJS) {' : '') + load.source + (wrap ? '\n})(System, System);' : '') + // adds the sourceURL comment if not already present + + (load.source.substr(lastLineIndex, 15) != '\n//# sourceURL=' + ? '\n//# sourceURL=' + load.address + (sourceMap ? '!transpiled' : '') : '') + // add sourceMappingURL if load.metadata.sourceMap is set + + (sourceMap && inlineSourceMap(sourceMap) || ''); + } + + var curLoad; + + // System.register, System.registerDynamic, AMD define pipeline + // if currently evalling code here, immediately reduce the registered entry against the load record + hook('pushRegister_', function() { + return function(register) { + if (!curLoad) + return false; + + this.reduceRegister_(curLoad, register); + return true; + }; + }); + + // System clobbering protection (mostly for Traceur) + var curSystem; + var callCounter = 0; + function preExec(loader, load) { + curLoad = load; + if (callCounter++ == 0) + curSystem = __global.System; + __global.System = __global.SystemJS = loader; + } + function postExec() { + if (--callCounter == 0) + __global.System = __global.SystemJS = curSystem; + curLoad = undefined; + } + + var useVm; + var vm; + __exec = function(load) { + if (!load.source) + return; + if ((load.metadata.integrity || load.metadata.nonce) && supportsScriptExec) + return scriptExec.call(this, load); + try { + preExec(this, load); + curLoad = load; + // global scoped eval for node (avoids require scope leak) + if (!vm && this._nodeRequire) { + vm = this._nodeRequire('vm'); + useVm = vm.runInThisContext("typeof System !== 'undefined' && System") === this; + } + if (useVm) + vm.runInThisContext(getSource(load, true), { filename: load.address + (load.metadata.sourceMap ? '!transpiled' : '') }); + else + (0, eval)(getSource(load, true)); + postExec(); + } + catch(e) { + postExec(); + throw addToError(e, 'Evaluating ' + load.address); + } + }; + + var supportsScriptExec = false; + if (isBrowser && typeof document != 'undefined' && document.getElementsByTagName) { + var scripts = document.getElementsByTagName('script'); + $__curScript = scripts[scripts.length - 1]; + + if (!(window.chrome && window.chrome.extension || navigator.userAgent.match(/^Node\.js/))) + supportsScriptExec = true; + } + + // script execution via injecting a script tag into the page + // this allows CSP integrity and nonce to be set for CSP environments + var head; + function scriptExec(load) { + if (!head) + head = document.head || document.body || document.documentElement; + + var script = document.createElement('script'); + script.text = getSource(load, false); + var onerror = window.onerror; + var e; + window.onerror = function(_e) { + e = addToError(_e, 'Evaluating ' + load.address); + if (onerror) + onerror.apply(this, arguments); + } + preExec(this, load); + + if (load.metadata.integrity) + script.setAttribute('integrity', load.metadata.integrity); + if (load.metadata.nonce) + script.setAttribute('nonce', load.metadata.nonce); + + head.appendChild(script); + head.removeChild(script); + postExec(); + window.onerror = onerror; + if (e) + throw e; + } + +})(); +function readMemberExpression(p, value) { + var pParts = p.split('.'); + while (pParts.length) + value = value[pParts.shift()]; + return value; +} + +function getMapMatch(map, name) { + var bestMatch, bestMatchLength = 0; + + for (var p in map) { + if (name.substr(0, p.length) == p && (name.length == p.length || name[p.length] == '/')) { + var curMatchLength = p.split('/').length; + if (curMatchLength <= bestMatchLength) + continue; + bestMatch = p; + bestMatchLength = curMatchLength; + } + } + + return bestMatch; +} + +function prepareBaseURL(loader) { + // ensure baseURl is fully normalized + if (this._loader.baseURL !== this.baseURL) { + if (this.baseURL[this.baseURL.length - 1] != '/') + this.baseURL += '/'; + + this._loader.baseURL = this.baseURL = new URL(this.baseURL, baseURIObj).href; + } +} + +var envModule; +function setProduction(isProduction, isBuilder) { + this.set('@system-env', envModule = this.newModule({ + browser: isBrowser, + node: !!this._nodeRequire, + production: !isBuilder && isProduction, + dev: isBuilder || !isProduction, + build: isBuilder, + 'default': true + })); +} + +hookConstructor(function(constructor) { + return function() { + constructor.call(this); + + // support baseURL + this.baseURL = baseURI; + + // support map and paths + this.map = {}; + + // make the location of the system.js script accessible + if (typeof $__curScript != 'undefined') + this.scriptSrc = $__curScript.src; + + // global behaviour flags + this.warnings = false; + this.defaultJSExtensions = false; + this.pluginFirst = false; + this.loaderErrorStack = false; + + // by default load ".json" files as json + // leading * meta doesn't need normalization + // NB add this in next breaking release + // this.meta['*.json'] = { format: 'json' }; + + // support the empty module, as a concept + this.set('@empty', this.newModule({})); + + setProduction.call(this, false, false); + }; +}); + +// include the node require since we're overriding it +if (typeof require != 'undefined' && typeof process != 'undefined' && !process.browser) + SystemJSLoader.prototype._nodeRequire = require; + +/* + Core SystemJS Normalization + + If a name is relative, we apply URL normalization to the page + If a name is an absolute URL, we leave it as-is + + Plain names (neither of the above) run through the map and paths + normalization phases. + + The paths normalization phase applies last (paths extension), which + defines the `decanonicalize` function and normalizes everything into + a URL. + */ + +var parentModuleContext; +function getNodeModule(name, baseURL) { + if (!isPlain(name)) + throw new Error('Node module ' + name + ' can\'t be loaded as it is not a package require.'); + + if (!parentModuleContext) { + var Module = this._nodeRequire('module'); + var base = baseURL.substr(isWindows ? 8 : 7); + parentModuleContext = new Module(base); + parentModuleContext.paths = Module._nodeModulePaths(base); + } + return parentModuleContext.require(name); +} + +function coreResolve(name, parentName) { + // standard URL resolution + if (isRel(name)) + return urlResolve(name, parentName); + else if (isAbsolute(name)) + return name; + + // plain names not starting with './', '://' and '/' go through custom resolution + var mapMatch = getMapMatch(this.map, name); + + if (mapMatch) { + name = this.map[mapMatch] + name.substr(mapMatch.length); + + if (isRel(name)) + return urlResolve(name); + else if (isAbsolute(name)) + return name; + } + + if (this.has(name)) + return name; + + // dynamically load node-core modules when requiring `@node/fs` for example + if (name.substr(0, 6) == '@node/') { + if (!this._nodeRequire) + throw new TypeError('Error loading ' + name + '. Can only load node core modules in Node.'); + if (this.builder) + this.set(name, this.newModule({})); + else + this.set(name, this.newModule(getESModule(getNodeModule.call(this, name.substr(6), this.baseURL)))); + return name; + } + + // prepare the baseURL to ensure it is normalized + prepareBaseURL.call(this); + + return applyPaths(this, name) || this.baseURL + name; +} + +hook('normalize', function(normalize) { + return function(name, parentName, skipExt) { + var resolved = coreResolve.call(this, name, parentName); + if (this.defaultJSExtensions && !skipExt && resolved.substr(resolved.length - 3, 3) != '.js' && !isPlain(resolved)) + resolved += '.js'; + return resolved; + }; +}); + +// percent encode just '#' in urls if using HTTP requests +var httpRequest = typeof XMLHttpRequest != 'undefined'; +hook('locate', function(locate) { + return function(load) { + return Promise.resolve(locate.call(this, load)) + .then(function(address) { + if (httpRequest) + return address.replace(/#/g, '%23'); + return address; + }); + }; +}); + +/* + * Fetch with authorization + */ +hook('fetch', function() { + return function(load) { + return new Promise(function(resolve, reject) { + fetchTextFromURL(load.address, load.metadata.authorization, resolve, reject); + }); + }; +}); + +/* + __useDefault + + When a module object looks like: + newModule( + __useDefault: true, + default: 'some-module' + }) + + Then importing that module provides the 'some-module' + result directly instead of the full module. + + Useful for eg module.exports = function() {} +*/ +hook('import', function(systemImport) { + return function(name, parentName, parentAddress) { + if (parentName && parentName.name) + warn.call(this, 'SystemJS.import(name, { name: parentName }) is deprecated for SystemJS.import(name, parentName), while importing ' + name + ' from ' + parentName.name); + return systemImport.call(this, name, parentName, parentAddress).then(function(module) { + return module.__useDefault ? module['default'] : module; + }); + }; +}); + +/* + * Allow format: 'detect' meta to enable format detection + */ +hook('translate', function(systemTranslate) { + return function(load) { + if (load.metadata.format == 'detect') + load.metadata.format = undefined; + return systemTranslate.apply(this, arguments); + }; +}); + + +/* + * JSON format support + * + * Supports loading JSON files as a module format itself + * + * Usage: + * + * SystemJS.config({ + * meta: { + * '*.json': { format: 'json' } + * } + * }); + * + * Module is returned as if written: + * + * export default {JSON} + * + * No named exports are provided + * + * Files ending in ".json" are treated as json automatically by SystemJS + */ +hook('instantiate', function(instantiate) { + return function(load) { + if (load.metadata.format == 'json' && !this.builder) { + var entry = load.metadata.entry = createEntry(); + entry.deps = []; + entry.execute = function() { + try { + return JSON.parse(load.source); + } + catch(e) { + throw new Error("Invalid JSON file " + load.name); + } + }; + } + }; +}) + +/* + Extend config merging one deep only + + loader.config({ + some: 'random', + config: 'here', + deep: { + config: { too: 'too' } + } + }); + + <=> + + loader.some = 'random'; + loader.config = 'here' + loader.deep = loader.deep || {}; + loader.deep.config = { too: 'too' }; + + + Normalizes meta and package configs allowing for: + + SystemJS.config({ + meta: { + './index.js': {} + } + }); + + To become + + SystemJS.meta['https://thissite.com/index.js'] = {}; + + For easy normalization canonicalization with latest URL support. + +*/ +function envSet(loader, cfg, envCallback) { + if (envModule.browser && cfg.browserConfig) + envCallback(cfg.browserConfig); + if (envModule.node && cfg.nodeConfig) + envCallback(cfg.nodeConfig); + if (envModule.dev && cfg.devConfig) + envCallback(cfg.devConfig); + if (envModule.build && cfg.buildConfig) + envCallback(cfg.buildConfig); + if (envModule.production && cfg.productionConfig) + envCallback(cfg.productionConfig); +} + +SystemJSLoader.prototype.getConfig = function(name) { + var cfg = {}; + var loader = this; + for (var p in loader) { + if (loader.hasOwnProperty && !loader.hasOwnProperty(p) || p in SystemJSLoader.prototype && p != 'transpiler') + continue; + if (indexOf.call(['_loader', 'amdDefine', 'amdRequire', 'defined', 'failed', 'version', 'loads'], p) == -1) + cfg[p] = loader[p]; + } + cfg.production = envModule.production; + return cfg; +}; + +var curCurScript; +SystemJSLoader.prototype.config = function(cfg, isEnvConfig) { + var loader = this; + + if ('loaderErrorStack' in cfg) { + curCurScript = $__curScript; + if (cfg.loaderErrorStack) + $__curScript = undefined; + else + $__curScript = curCurScript; + } + + if ('warnings' in cfg) + loader.warnings = cfg.warnings; + + // transpiler deprecation path + if (cfg.transpilerRuntime === false) + loader._loader.loadedTranspilerRuntime = true; + + if ('production' in cfg || 'build' in cfg) + setProduction.call(loader, !!cfg.production, !!(cfg.build || envModule && envModule.build)); + + if (!isEnvConfig) { + // if using nodeConfig / browserConfig / productionConfig, take baseURL from there + // these exceptions will be unnecessary when we can properly implement config queuings + var baseURL; + envSet(loader, cfg, function(cfg) { + baseURL = baseURL || cfg.baseURL; + }); + baseURL = baseURL || cfg.baseURL; + + // always configure baseURL first + if (baseURL) { + var hasConfig = false; + function checkHasConfig(obj) { + for (var p in obj) + if (obj.hasOwnProperty(p)) + return true; + } + if (checkHasConfig(loader.packages) || checkHasConfig(loader.meta) || checkHasConfig(loader.depCache) || checkHasConfig(loader.bundles) || checkHasConfig(loader.packageConfigPaths)) + throw new TypeError('Incorrect configuration order. The baseURL must be configured with the first SystemJS.config call.'); + + this.baseURL = baseURL; + prepareBaseURL.call(this); + } + + if (cfg.paths) + extend(loader.paths, cfg.paths); + + envSet(loader, cfg, function(cfg) { + if (cfg.paths) + extend(loader.paths, cfg.paths); + }); + + // warn on wildcard path deprecations + if (this.warnings) { + for (var p in loader.paths) + if (p.indexOf('*') != -1) + warn.call(loader, 'Paths configuration "' + p + '" -> "' + loader.paths[p] + '" uses wildcards which are being deprecated for simpler trailing "/" folder paths.'); + } + } + + if (cfg.defaultJSExtensions) { + loader.defaultJSExtensions = cfg.defaultJSExtensions; + warn.call(loader, 'The defaultJSExtensions configuration option is deprecated, use packages configuration instead.'); + } + + if (cfg.pluginFirst) + loader.pluginFirst = cfg.pluginFirst; + + if (cfg.map) { + var objMaps = ''; + for (var p in cfg.map) { + var v = cfg.map[p]; + + // object map backwards-compat into packages configuration + if (typeof v !== 'string') { + objMaps += (objMaps.length ? ', ' : '') + '"' + p + '"'; + + var defaultJSExtension = loader.defaultJSExtensions && p.substr(p.length - 3, 3) != '.js'; + var prop = loader.decanonicalize(p); + if (defaultJSExtension && prop.substr(prop.length - 3, 3) == '.js') + prop = prop.substr(0, prop.length - 3); + + // if a package main, revert it + var pkgMatch = ''; + for (var pkg in loader.packages) { + if (prop.substr(0, pkg.length) == pkg + && (!prop[pkg.length] || prop[pkg.length] == '/') + && pkgMatch.split('/').length < pkg.split('/').length) + pkgMatch = pkg; + } + if (pkgMatch && loader.packages[pkgMatch].main) + prop = prop.substr(0, prop.length - loader.packages[pkgMatch].main.length - 1); + + var pkg = loader.packages[prop] = loader.packages[prop] || {}; + pkg.map = v; + } + else { + loader.map[p] = v; + } + } + if (objMaps) + warn.call(loader, 'The map configuration for ' + objMaps + ' uses object submaps, which is deprecated in global map.\nUpdate this to use package contextual map with configs like SystemJS.config({ packages: { "' + p + '": { map: {...} } } }).'); + } + + if (cfg.packageConfigPaths) { + var packageConfigPaths = []; + for (var i = 0; i < cfg.packageConfigPaths.length; i++) { + var path = cfg.packageConfigPaths[i]; + var packageLength = Math.max(path.lastIndexOf('*') + 1, path.lastIndexOf('/')); + var normalized = coreResolve.call(loader, path.substr(0, packageLength)); + packageConfigPaths[i] = normalized + path.substr(packageLength); + } + loader.packageConfigPaths = packageConfigPaths; + } + + if (cfg.bundles) { + for (var p in cfg.bundles) { + var bundle = []; + for (var i = 0; i < cfg.bundles[p].length; i++) { + var defaultJSExtension = loader.defaultJSExtensions && cfg.bundles[p][i].substr(cfg.bundles[p][i].length - 3, 3) != '.js'; + var normalizedBundleDep = loader.decanonicalize(cfg.bundles[p][i]); + if (defaultJSExtension && normalizedBundleDep.substr(normalizedBundleDep.length - 3, 3) == '.js') + normalizedBundleDep = normalizedBundleDep.substr(0, normalizedBundleDep.length - 3); + bundle.push(normalizedBundleDep); + } + loader.bundles[p] = bundle; + } + } + + if (cfg.packages) { + for (var p in cfg.packages) { + if (p.match(/^([^\/]+:)?\/\/$/)) + throw new TypeError('"' + p + '" is not a valid package name.'); + + var prop = coreResolve.call(loader, p); + + // allow trailing slash in packages + if (prop[prop.length - 1] == '/') + prop = prop.substr(0, prop.length - 1); + + setPkgConfig(loader, prop, cfg.packages[p], false); + } + } + + for (var c in cfg) { + var v = cfg[c]; + + if (indexOf.call(['baseURL', 'map', 'packages', 'bundles', 'paths', 'warnings', 'packageConfigPaths', + 'loaderErrorStack', 'browserConfig', 'nodeConfig', 'devConfig', 'buildConfig', 'productionConfig'], c) != -1) + continue; + + if (typeof v != 'object' || v instanceof Array) { + loader[c] = v; + } + else { + loader[c] = loader[c] || {}; + + for (var p in v) { + // base-level wildcard meta does not normalize to retain catch-all quality + if (c == 'meta' && p[0] == '*') { + extend(loader[c][p] = loader[c][p] || {}, v[p]); + } + else if (c == 'meta') { + // meta can go through global map, with defaultJSExtensions adding + var resolved = coreResolve.call(loader, p); + if (loader.defaultJSExtensions && resolved.substr(resolved.length - 3, 3) != '.js' && !isPlain(resolved)) + resolved += '.js'; + extend(loader[c][resolved] = loader[c][resolved] || {}, v[p]); + } + else if (c == 'depCache') { + var defaultJSExtension = loader.defaultJSExtensions && p.substr(p.length - 3, 3) != '.js'; + var prop = loader.decanonicalize(p); + if (defaultJSExtension && prop.substr(prop.length - 3, 3) == '.js') + prop = prop.substr(0, prop.length - 3); + loader[c][prop] = [].concat(v[p]); + } + else { + loader[c][p] = v[p]; + } + } + } + } + + envSet(loader, cfg, function(cfg) { + loader.config(cfg, true); + }); +};/* + * Package Configuration Extension + * + * Example: + * + * SystemJS.packages = { + * jquery: { + * main: 'index.js', // when not set, package name is requested directly + * format: 'amd', + * defaultExtension: 'ts', // defaults to 'js', can be set to false + * modules: { + * '*.ts': { + * loader: 'typescript' + * }, + * 'vendor/sizzle.js': { + * format: 'global' + * } + * }, + * map: { + * // map internal require('sizzle') to local require('./vendor/sizzle') + * sizzle: './vendor/sizzle.js', + * // map any internal or external require of 'jquery/vendor/another' to 'another/index.js' + * './vendor/another.js': './another/index.js', + * // test.js / test -> lib/test.js + * './test.js': './lib/test.js', + * + * // environment-specific map configurations + * './index.js': { + * '~browser': './index-node.js', + * './custom-condition.js|~export': './index-custom.js' + * } + * }, + * // allows for setting package-prefixed depCache + * // keys are normalized module names relative to the package itself + * depCache: { + * // import 'package/index.js' loads in parallel package/lib/test.js,package/vendor/sizzle.js + * './index.js': ['./test'], + * './test.js': ['external-dep'], + * 'external-dep/path.js': ['./another.js'] + * } + * } + * }; + * + * Then: + * import 'jquery' -> jquery/index.js + * import 'jquery/submodule' -> jquery/submodule.js + * import 'jquery/submodule.ts' -> jquery/submodule.ts loaded as typescript + * import 'jquery/vendor/another' -> another/index.js + * + * Detailed Behaviours + * - main can have a leading "./" can be added optionally + * - map and defaultExtension are applied to the main + * - defaultExtension adds the extension only if the exact extension is not present + * - defaultJSExtensions applies after map when defaultExtension is not set + * - if a meta value is available for a module, map and defaultExtension are skipped + * - like global map, package map also applies to subpaths (sizzle/x, ./vendor/another/sub) + * - condition module map is '@env' module in package or '@system-env' globally + * - map targets support conditional interpolation ('./x': './x.#{|env}.js') + * - internal package map targets cannot use boolean conditionals + * + * Package Configuration Loading + * + * Not all packages may already have their configuration present in the System config + * For these cases, a list of packageConfigPaths can be provided, which when matched against + * a request, will first request a ".json" file by the package name to derive the package + * configuration from. This allows dynamic loading of non-predetermined code, a key use + * case in SystemJS. + * + * Example: + * + * SystemJS.packageConfigPaths = ['packages/test/package.json', 'packages/*.json']; + * + * // will first request 'packages/new-package/package.json' for the package config + * // before completing the package request to 'packages/new-package/path' + * SystemJS.import('packages/new-package/path'); + * + * // will first request 'packages/test/package.json' before the main + * SystemJS.import('packages/test'); + * + * When a package matches packageConfigPaths, it will always send a config request for + * the package configuration. + * The package name itself is taken to be the match up to and including the last wildcard + * or trailing slash. + * The most specific package config path will be used. + * Any existing package configurations for the package will deeply merge with the + * package config, with the existing package configurations taking preference. + * To opt-out of the package configuration request for a package that matches + * packageConfigPaths, use the { configured: true } package config option. + * + */ +(function() { + + hookConstructor(function(constructor) { + return function() { + constructor.call(this); + this.packages = {}; + this.packageConfigPaths = []; + }; + }); + + function getPackage(loader, normalized) { + // use most specific package + var curPkg, curPkgLen = 0, pkgLen; + for (var p in loader.packages) { + if (normalized.substr(0, p.length) === p && (normalized.length === p.length || normalized[p.length] === '/')) { + pkgLen = p.split('/').length; + if (pkgLen > curPkgLen) { + curPkg = p; + curPkgLen = pkgLen; + } + } + } + return curPkg; + } + + function addDefaultExtension(loader, pkg, pkgName, subPath, skipExtensions) { + // don't apply extensions to folders or if defaultExtension = false + if (!subPath || subPath[subPath.length - 1] == '/' || skipExtensions || pkg.defaultExtension === false) + return subPath; + + var metaMatch = false; + + // exact meta or meta with any content after the last wildcard skips extension + if (pkg.meta) + getMetaMatches(pkg.meta, subPath, function(metaPattern, matchMeta, matchDepth) { + if (matchDepth == 0 || metaPattern.lastIndexOf('*') != metaPattern.length - 1) + return metaMatch = true; + }); + + // exact global meta or meta with any content after the last wildcard skips extension + if (!metaMatch && loader.meta) + getMetaMatches(loader.meta, pkgName + '/' + subPath, function(metaPattern, matchMeta, matchDepth) { + if (matchDepth == 0 || metaPattern.lastIndexOf('*') != metaPattern.length - 1) + return metaMatch = true; + }); + + if (metaMatch) + return subPath; + + // work out what the defaultExtension is and add if not there already + // NB reconsider if default should really be ".js"? + var defaultExtension = '.' + (pkg.defaultExtension || 'js'); + if (subPath.substr(subPath.length - defaultExtension.length) != defaultExtension) + return subPath + defaultExtension; + else + return subPath; + } + + function applyPackageConfigSync(loader, pkg, pkgName, subPath, skipExtensions) { + // main + if (!subPath) { + if (pkg.main) + subPath = pkg.main.substr(0, 2) == './' ? pkg.main.substr(2) : pkg.main; + // also no submap if name is package itself (import 'pkg' -> 'path/to/pkg.js') + else + // NB can add a default package main convention here when defaultJSExtensions is deprecated + // if it becomes internal to the package then it would no longer be an exit path + return pkgName + (loader.defaultJSExtensions ? '.js' : ''); + } + + // map config checking without then with extensions + if (pkg.map) { + var mapPath = './' + subPath; + + var mapMatch = getMapMatch(pkg.map, mapPath); + + // we then check map with the default extension adding + if (!mapMatch) { + mapPath = './' + addDefaultExtension(loader, pkg, pkgName, subPath, skipExtensions); + if (mapPath != './' + subPath) + mapMatch = getMapMatch(pkg.map, mapPath); + } + if (mapMatch) { + var mapped = doMapSync(loader, pkg, pkgName, mapMatch, mapPath, skipExtensions); + if (mapped) + return mapped; + } + } + + // normal package resolution + return pkgName + '/' + addDefaultExtension(loader, pkg, pkgName, subPath, skipExtensions); + } + + function validMapping(mapMatch, mapped, pkgName, path) { + // disallow internal to subpath maps + if (mapMatch == '.') + throw new Error('Package ' + pkgName + ' has a map entry for "." which is not permitted.'); + + // allow internal ./x -> ./x/y or ./x/ -> ./x/y recursive maps + // but only if the path is exactly ./x and not ./x/z + if (mapped.substr(0, mapMatch.length) == mapMatch && path.length > mapMatch.length) + return false; + + return true; + } + + function doMapSync(loader, pkg, pkgName, mapMatch, path, skipExtensions) { + if (path[path.length - 1] == '/') + path = path.substr(0, path.length - 1); + var mapped = pkg.map[mapMatch]; + + if (typeof mapped == 'object') + throw new Error('Synchronous conditional normalization not supported sync normalizing ' + mapMatch + ' in ' + pkgName); + + if (!validMapping(mapMatch, mapped, pkgName, path) || typeof mapped != 'string') + return; + + // package map to main / base-level + if (mapped == '.') + mapped = pkgName; + + // internal package map + else if (mapped.substr(0, 2) == './') + return pkgName + '/' + addDefaultExtension(loader, pkg, pkgName, mapped.substr(2) + path.substr(mapMatch.length), skipExtensions); + + // external map reference + return loader.normalizeSync(mapped + path.substr(mapMatch.length), pkgName + '/'); + } + + function applyPackageConfig(loader, pkg, pkgName, subPath, skipExtensions) { + // main + if (!subPath) { + if (pkg.main) + subPath = pkg.main.substr(0, 2) == './' ? pkg.main.substr(2) : pkg.main; + // also no submap if name is package itself (import 'pkg' -> 'path/to/pkg.js') + else + // NB can add a default package main convention here when defaultJSExtensions is deprecated + // if it becomes internal to the package then it would no longer be an exit path + return Promise.resolve(pkgName + (loader.defaultJSExtensions ? '.js' : '')); + } + + // map config checking without then with extensions + var mapPath, mapMatch; + + if (pkg.map) { + mapPath = './' + subPath; + mapMatch = getMapMatch(pkg.map, mapPath); + + // we then check map with the default extension adding + if (!mapMatch) { + mapPath = './' + addDefaultExtension(loader, pkg, pkgName, subPath, skipExtensions); + if (mapPath != './' + subPath) + mapMatch = getMapMatch(pkg.map, mapPath); + } + } + + return (mapMatch ? doMap(loader, pkg, pkgName, mapMatch, mapPath, skipExtensions) : Promise.resolve()) + .then(function(mapped) { + if (mapped) + return Promise.resolve(mapped); + + // normal package resolution / fallback resolution for no conditional match + return Promise.resolve(pkgName + '/' + addDefaultExtension(loader, pkg, pkgName, subPath, skipExtensions)); + }); + } + + function doStringMap(loader, pkg, pkgName, mapMatch, mapped, path, skipExtensions) { + // NB the interpolation cases should strictly skip subsequent interpolation + // package map to main / base-level + if (mapped == '.') + mapped = pkgName; + + // internal package map + else if (mapped.substr(0, 2) == './') + return Promise.resolve(pkgName + '/' + addDefaultExtension(loader, pkg, pkgName, mapped.substr(2) + path.substr(mapMatch.length), skipExtensions)) + .then(function(name) { + return interpolateConditional.call(loader, name, pkgName + '/'); + }); + + // external map reference + return loader.normalize(mapped + path.substr(mapMatch.length), pkgName + '/'); + } + + function doMap(loader, pkg, pkgName, mapMatch, path, skipExtensions) { + if (path[path.length - 1] == '/') + path = path.substr(0, path.length - 1); + + var mapped = pkg.map[mapMatch]; + + if (typeof mapped == 'string') { + if (!validMapping(mapMatch, mapped, pkgName, path)) + return Promise.resolve(); + return doStringMap(loader, pkg, pkgName, mapMatch, mapped, path, skipExtensions); + } + + // we use a special conditional syntax to allow the builder to handle conditional branch points further + if (loader.builder) + return Promise.resolve(pkgName + '/#:' + path); + + // we load all conditions upfront + var conditionPromises = []; + var conditions = []; + for (var e in mapped) { + var c = parseCondition(e); + conditions.push({ + condition: c, + map: mapped[e] + }); + conditionPromises.push(loader['import'](c.module, pkgName)); + } + + // map object -> conditional map + return Promise.all(conditionPromises) + .then(function(conditionValues) { + // first map condition to match is used + for (var i = 0; i < conditions.length; i++) { + var c = conditions[i].condition; + var value = readMemberExpression(c.prop, conditionValues[i]); + if (!c.negate && value || c.negate && !value) + return conditions[i].map; + } + }) + .then(function(mapped) { + if (mapped) { + if (!validMapping(mapMatch, mapped, pkgName, path)) + return; + return doStringMap(loader, pkg, pkgName, mapMatch, mapped, path, skipExtensions); + } + + // no environment match -> fallback to original subPath by returning undefined + }); + } + + // normalizeSync = decanonicalize + package resolution + SystemJSLoader.prototype.normalizeSync = SystemJSLoader.prototype.decanonicalize = SystemJSLoader.prototype.normalize; + + // decanonicalize must JUST handle package defaultExtension: false case when defaultJSExtensions is set + // to be deprecated! + hook('decanonicalize', function(decanonicalize) { + return function(name, parentName) { + if (this.builder) + return decanonicalize.call(this, name, parentName, true); + + var decanonicalized = decanonicalize.call(this, name, parentName, false); + + if (!this.defaultJSExtensions) + return decanonicalized; + + var pkgName = getPackage(this, decanonicalized); + + var pkg = this.packages[pkgName]; + var defaultExtension = pkg && pkg.defaultExtension; + + if (defaultExtension == undefined && pkg && pkg.meta) + getMetaMatches(pkg.meta, decanonicalized.substr(pkgName), function(metaPattern, matchMeta, matchDepth) { + if (matchDepth == 0 || metaPattern.lastIndexOf('*') != metaPattern.length - 1) { + defaultExtension = false; + return true; + } + }); + + if ((defaultExtension === false || defaultExtension && defaultExtension != '.js') && name.substr(name.length - 3, 3) != '.js' && decanonicalized.substr(decanonicalized.length - 3, 3) == '.js') + decanonicalized = decanonicalized.substr(0, decanonicalized.length - 3); + + return decanonicalized; + }; + }); + + hook('normalizeSync', function(normalizeSync) { + return function(name, parentName, isPlugin) { + var loader = this; + isPlugin = isPlugin === true; + + // apply contextual package map first + // (we assume the parent package config has already been loaded) + if (parentName) + var parentPackageName = getPackage(loader, parentName) || + loader.defaultJSExtensions && parentName.substr(parentName.length - 3, 3) == '.js' && + getPackage(loader, parentName.substr(0, parentName.length - 3)); + + var parentPackage = parentPackageName && loader.packages[parentPackageName]; + + // ignore . since internal maps handled by standard package resolution + if (parentPackage && name[0] != '.') { + var parentMap = parentPackage.map; + var parentMapMatch = parentMap && getMapMatch(parentMap, name); + + if (parentMapMatch && typeof parentMap[parentMapMatch] == 'string') { + var mapped = doMapSync(loader, parentPackage, parentPackageName, parentMapMatch, name, isPlugin); + if (mapped) + return mapped; + } + } + + var defaultJSExtension = loader.defaultJSExtensions && name.substr(name.length - 3, 3) != '.js'; + + // apply map, core, paths, contextual package map + var normalized = normalizeSync.call(loader, name, parentName, false); + + // undo defaultJSExtension + if (defaultJSExtension && normalized.substr(normalized.length - 3, 3) != '.js') + defaultJSExtension = false; + if (defaultJSExtension) + normalized = normalized.substr(0, normalized.length - 3); + + var pkgConfigMatch = getPackageConfigMatch(loader, normalized); + var pkgName = pkgConfigMatch && pkgConfigMatch.packageName || getPackage(loader, normalized); + + if (!pkgName) + return normalized + (defaultJSExtension ? '.js' : ''); + + var subPath = normalized.substr(pkgName.length + 1); + + return applyPackageConfigSync(loader, loader.packages[pkgName] || {}, pkgName, subPath, isPlugin); + }; + }); + + hook('normalize', function(normalize) { + return function(name, parentName, isPlugin) { + var loader = this; + isPlugin = isPlugin === true; + + return Promise.resolve() + .then(function() { + // apply contextual package map first + // (we assume the parent package config has already been loaded) + if (parentName) + var parentPackageName = getPackage(loader, parentName) || + loader.defaultJSExtensions && parentName.substr(parentName.length - 3, 3) == '.js' && + getPackage(loader, parentName.substr(0, parentName.length - 3)); + + var parentPackage = parentPackageName && loader.packages[parentPackageName]; + + // ignore . since internal maps handled by standard package resolution + if (parentPackage && name.substr(0, 2) != './') { + var parentMap = parentPackage.map; + var parentMapMatch = parentMap && getMapMatch(parentMap, name); + + if (parentMapMatch) + return doMap(loader, parentPackage, parentPackageName, parentMapMatch, name, isPlugin); + } + + return Promise.resolve(); + }) + .then(function(mapped) { + if (mapped) + return mapped; + + var defaultJSExtension = loader.defaultJSExtensions && name.substr(name.length - 3, 3) != '.js'; + + // apply map, core, paths, contextual package map + var normalized = normalize.call(loader, name, parentName, false); + + // undo defaultJSExtension + if (defaultJSExtension && normalized.substr(normalized.length - 3, 3) != '.js') + defaultJSExtension = false; + if (defaultJSExtension) + normalized = normalized.substr(0, normalized.length - 3); + + var pkgConfigMatch = getPackageConfigMatch(loader, normalized); + var pkgName = pkgConfigMatch && pkgConfigMatch.packageName || getPackage(loader, normalized); + + if (!pkgName) + return Promise.resolve(normalized + (defaultJSExtension ? '.js' : '')); + + var pkg = loader.packages[pkgName]; + + // if package is already configured or not a dynamic config package, use existing package config + var isConfigured = pkg && (pkg.configured || !pkgConfigMatch); + return (isConfigured ? Promise.resolve(pkg) : loadPackageConfigPath(loader, pkgName, pkgConfigMatch.configPath)) + .then(function(pkg) { + var subPath = normalized.substr(pkgName.length + 1); + + return applyPackageConfig(loader, pkg, pkgName, subPath, isPlugin); + }); + }); + }; + }); + + // check if the given normalized name matches a packageConfigPath + // if so, loads the config + var packageConfigPaths = {}; + + // data object for quick checks against package paths + function createPkgConfigPathObj(path) { + var lastWildcard = path.lastIndexOf('*'); + var length = Math.max(lastWildcard + 1, path.lastIndexOf('/')); + return { + length: length, + regEx: new RegExp('^(' + path.substr(0, length).replace(/[.+?^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '[^\\/]+') + ')(\\/|$)'), + wildcard: lastWildcard != -1 + }; + } + + // most specific match wins + function getPackageConfigMatch(loader, normalized) { + var pkgName, exactMatch = false, configPath; + for (var i = 0; i < loader.packageConfigPaths.length; i++) { + var packageConfigPath = loader.packageConfigPaths[i]; + var p = packageConfigPaths[packageConfigPath] || (packageConfigPaths[packageConfigPath] = createPkgConfigPathObj(packageConfigPath)); + if (normalized.length < p.length) + continue; + var match = normalized.match(p.regEx); + if (match && (!pkgName || (!(exactMatch && p.wildcard) && pkgName.length < match[1].length))) { + pkgName = match[1]; + exactMatch = !p.wildcard; + configPath = pkgName + packageConfigPath.substr(p.length); + } + } + + if (!pkgName) + return; + + return { + packageName: pkgName, + configPath: configPath + }; + } + + function loadPackageConfigPath(loader, pkgName, pkgConfigPath) { + var configLoader = loader.pluginLoader || loader; + + // NB remove this when json is default + (configLoader.meta[pkgConfigPath] = configLoader.meta[pkgConfigPath] || {}).format = 'json'; + configLoader.meta[pkgConfigPath].loader = null; + + return configLoader.load(pkgConfigPath) + .then(function() { + var cfg = configLoader.get(pkgConfigPath)['default']; + + // support "systemjs" prefixing + if (cfg.systemjs) + cfg = cfg.systemjs; + + // modules backwards compatibility + if (cfg.modules) { + cfg.meta = cfg.modules; + warn.call(loader, 'Package config file ' + pkgConfigPath + ' is configured with "modules", which is deprecated as it has been renamed to "meta".'); + } + + return setPkgConfig(loader, pkgName, cfg, true); + }); + } + + function getMetaMatches(pkgMeta, subPath, matchFn) { + // wildcard meta + var meta = {}; + var wildcardIndex; + for (var module in pkgMeta) { + // allow meta to start with ./ for flexibility + var dotRel = module.substr(0, 2) == './' ? './' : ''; + if (dotRel) + module = module.substr(2); + + wildcardIndex = module.indexOf('*'); + if (wildcardIndex === -1) + continue; + + if (module.substr(0, wildcardIndex) == subPath.substr(0, wildcardIndex) + && module.substr(wildcardIndex + 1) == subPath.substr(subPath.length - module.length + wildcardIndex + 1)) { + // alow match function to return true for an exit path + if (matchFn(module, pkgMeta[dotRel + module], module.split('/').length)) + return; + } + } + // exact meta + var exactMeta = pkgMeta[subPath] && pkgMeta.hasOwnProperty && pkgMeta.hasOwnProperty(subPath) ? pkgMeta[subPath] : pkgMeta['./' + subPath]; + if (exactMeta) + matchFn(exactMeta, exactMeta, 0); + } + + hook('locate', function(locate) { + return function(load) { + var loader = this; + return Promise.resolve(locate.call(this, load)) + .then(function(address) { + var pkgName = getPackage(loader, load.name); + if (pkgName) { + var pkg = loader.packages[pkgName]; + var subPath = load.name.substr(pkgName.length + 1); + + var meta = {}; + if (pkg.meta) { + var bestDepth = 0; + + // NB support a main shorthand in meta here? + getMetaMatches(pkg.meta, subPath, function(metaPattern, matchMeta, matchDepth) { + if (matchDepth > bestDepth) + bestDepth = matchDepth; + extendMeta(meta, matchMeta, matchDepth && bestDepth > matchDepth); + }); + + extendMeta(load.metadata, meta); + } + + // format + if (pkg.format && !load.metadata.loader) + load.metadata.format = load.metadata.format || pkg.format; + } + + return address; + }); + }; + }); + +})(); +/* + * Script tag fetch + * + * When load.metadata.scriptLoad is true, we load via script tag injection. + */ +(function() { + + if (typeof document != 'undefined') + var head = document.getElementsByTagName('head')[0]; + + var curSystem; + var curRequire; + + // if doing worker executing, this is set to the load record being executed + var workerLoad = null; + + // interactive mode handling method courtesy RequireJS + var ieEvents = head && (function() { + var s = document.createElement('script'); + var isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]'; + return s.attachEvent && !(s.attachEvent.toString && s.attachEvent.toString().indexOf('[native code') < 0) && !isOpera; + })(); + + // IE interactive-only part + // we store loading scripts array as { script: