@jsenv/core 27.0.0-alpha.5 → 27.0.0-alpha.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/event_source_client.js +545 -0
- package/dist/event_source_client.js.map +187 -0
- package/dist/html_supervisor_installer.js +1236 -0
- package/dist/html_supervisor_installer.js.map +337 -0
- package/dist/html_supervisor_setup.js +95 -0
- package/dist/html_supervisor_setup.js.map +57 -0
- package/dist/import_meta_hot.js +86 -0
- package/dist/import_meta_hot.js.map +42 -0
- package/main.js +8 -1
- package/package.json +22 -21
- package/readme.md +4 -12
- package/src/build/build.js +749 -437
- package/src/build/build_urls_generator.js +56 -22
- package/src/build/graph_utils.js +31 -0
- package/src/build/{inject_version_mappings.js → inject_global_version_mappings.js} +33 -15
- package/src/build/inject_service_worker_urls.js +79 -0
- package/src/build/resync_ressource_hints.js +68 -0
- package/src/build/start_build_server.js +255 -0
- package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +2 -2
- package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +3 -1
- package/src/dev/start_dev_server.js +136 -30
- package/src/execute/execute.js +31 -6
- package/src/execute/run.js +19 -56
- package/src/execute/runtimes/browsers/from_playwright.js +201 -147
- package/src/execute/runtimes/node/controllable_file.mjs +26 -10
- package/src/execute/runtimes/node/node_execution_performance.js +67 -0
- package/src/execute/runtimes/node/node_process.js +280 -39
- package/src/jsenv_root_directory_url.js +1 -0
- package/src/omega/{runtime_support/default_runtime_support.js → compat/default_runtime_compat.js} +3 -5
- package/src/omega/{runtime_support/features_compatibility.js → compat/features_compats.js} +66 -4
- package/src/omega/compat/runtime_compat.js +50 -0
- package/src/omega/errors.js +51 -58
- package/src/omega/fetched_content_compliance.js +24 -0
- package/src/omega/file_url_converter.js +8 -50
- package/src/omega/kitchen.js +482 -292
- package/src/omega/omega_server.js +2 -3
- package/src/omega/server/file_service.js +38 -25
- package/src/omega/server/user_agent.js +4 -2
- package/src/omega/url_graph/url_graph_load.js +14 -7
- package/src/omega/url_graph/url_graph_report.js +17 -15
- package/src/omega/url_graph/url_info_transformations.js +26 -9
- package/src/omega/url_graph.js +91 -16
- package/src/omega/web_workers.js +42 -0
- package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/autoreload_preference.js +0 -0
- package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/event_source_client.js +2 -2
- package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/reload.js +0 -0
- package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/url_helpers.js +0 -0
- package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +46 -0
- package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_server.js +204 -0
- package/src/plugins/autoreload/jsenv_plugin_autoreload.js +27 -0
- package/src/plugins/autoreload/jsenv_plugin_hmr.js +35 -0
- package/src/plugins/bundling/css/bundle_css.js +21 -0
- package/src/plugins/bundling/js_classic_workers/bundle_js_classic_workers.js +13 -0
- package/src/{build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js → plugins/bundling/js_module/bundle_js_module.js} +150 -79
- package/src/plugins/bundling/jsenv_plugin_bundling.js +54 -0
- package/src/{omega/core_plugins → plugins}/commonjs_globals/jsenv_plugin_commonjs_globals.js +54 -41
- package/src/plugins/file_urls/jsenv_plugin_file_urls.js +66 -0
- package/src/{omega/core_plugins → plugins}/filesystem_magic/jsenv_plugin_filesystem_magic.js +8 -5
- package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_document.js +0 -0
- package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_notification.js +0 -0
- package/src/plugins/html_supervisor/client/html_supervisor_installer.js +242 -0
- package/src/plugins/html_supervisor/client/html_supervisor_setup.js +79 -0
- package/src/{omega/core_plugins → plugins}/html_supervisor/client/perf_browser.js +0 -0
- package/src/{omega/core_plugins → plugins}/html_supervisor/client/uneval_exception.js +0 -0
- package/src/{omega/core_plugins → plugins}/html_supervisor/jsenv_plugin_html_supervisor.js +83 -58
- package/src/plugins/http_urls/jsenv_plugin_http_urls.js +12 -0
- package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/babel_plugin_metadata_import_meta_hot.js +4 -5
- package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/client/import_meta_hot.js +3 -1
- package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/html_hot_dependencies.js +2 -2
- package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +105 -0
- package/src/{omega/core_plugins → plugins}/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +33 -8
- package/src/plugins/import_meta_url/client/import_meta_url_browser.js +52 -0
- package/src/plugins/import_meta_url/client/import_meta_url_commonjs.mjs +9 -0
- package/src/{omega/core_plugins → plugins}/importmap/jsenv_plugin_importmap.js +39 -33
- package/src/plugins/inject_globals/jsenv_plugin_inject_globals.js +67 -0
- package/src/{omega/core_plugins → plugins}/inline/client/inline_content.js +0 -0
- package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_data_urls.js +18 -14
- package/src/{omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js → plugins/inline/jsenv_plugin_html_inline_content.js} +65 -44
- package/src/plugins/inline/jsenv_plugin_inline.js +36 -0
- package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_inline_query_param.js +6 -6
- package/src/plugins/inline/jsenv_plugin_js_inline_content.js +296 -0
- package/src/plugins/leading_slash/jsenv_plugin_leading_slash.js +13 -0
- package/src/plugins/minification/css/minify_css.js +9 -0
- package/src/plugins/minification/html/minify_html.js +15 -0
- package/src/{build/plugins/minify_js/jsenv_plugin_minify_js.js → plugins/minification/js/minify_js.js} +6 -22
- package/src/plugins/minification/jsenv_plugin_minification.js +78 -0
- package/src/plugins/minification/json/minify_json.js +8 -0
- package/src/plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +146 -0
- package/src/{omega → plugins}/plugin_controller.js +42 -11
- package/src/plugins/plugins.js +91 -0
- package/src/plugins/transpilation/as_js_classic/client/s.js +808 -0
- package/src/plugins/transpilation/as_js_classic/client/s.js.md +1 -0
- package/src/plugins/transpilation/as_js_classic/helpers/babel_plugin_transform_import_meta_url.js +47 -0
- package/src/plugins/transpilation/as_js_classic/helpers/systemjs_old.js +43 -0
- package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +183 -0
- package/src/plugins/transpilation/as_js_classic/jsenv_plugin_script_type_module_as_classic.js +256 -0
- package/src/plugins/transpilation/as_js_classic/jsenv_plugin_workers_type_module_as_classic.js +55 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +0 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/client/global_this.js +0 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_babel_helpers_as_jsenv_imports.js +0 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_structure.js +4 -22
- package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugins_compatibility.js +0 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/jsenv_plugin_babel.js +37 -21
- package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +30 -6
- package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/.eslintrc.cjs +0 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/new_stylesheet.js +0 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +0 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/client/regenerator_runtime.js +0 -0
- package/src/plugins/transpilation/css_parcel/jsenv_plugin_css_parcel.js +18 -0
- package/src/plugins/transpilation/fetch_original_url_info.js +30 -0
- package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +181 -0
- package/src/plugins/transpilation/jsenv_plugin_top_level_await.js +70 -0
- package/src/plugins/transpilation/jsenv_plugin_transpilation.js +44 -0
- package/src/plugins/url_analysis/css/css_urls.js +42 -0
- package/src/plugins/url_analysis/html/html_urls.js +273 -0
- package/src/plugins/url_analysis/js/js_urls.js +67 -0
- package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +18 -0
- package/src/plugins/url_analysis/webmanifest/webmanifest_urls.js +17 -0
- package/src/{omega/core_plugins → plugins}/url_resolution/jsenv_plugin_url_resolution.js +12 -5
- package/src/{omega/core_plugins → plugins}/url_version/jsenv_plugin_url_version.js +12 -15
- package/src/test/execute_plan.js +30 -18
- package/src/test/execute_test_plan.js +23 -8
- package/src/test/logs_file_execution.js +8 -7
- package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +0 -30
- package/src/dev/plugins/autoreload/client/event_source_connection.js +0 -195
- package/src/dev/plugins/autoreload/jsenv_plugin_autoreload.js +0 -374
- package/src/dev/plugins/autoreload/sse_service.js +0 -149
- package/src/execute/runtimes/node/controlled_process.js +0 -316
- package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +0 -67
- package/src/omega/core_plugins/html_supervisor/client/html_supervisor_installer.js +0 -168
- package/src/omega/core_plugins/html_supervisor/client/html_supervisor_setup.js +0 -77
- package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +0 -98
- package/src/omega/core_plugins/import_assertions/helpers/json_module.js +0 -12
- package/src/omega/core_plugins/import_assertions/helpers/text_module.js +0 -6
- package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +0 -211
- package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +0 -13
- package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +0 -210
- package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +0 -12
- package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +0 -77
- package/src/omega/core_plugins.js +0 -39
- package/src/omega/runtime_support/runtime_support.js +0 -20
- package/src/omega/url_mentions/css_url_mentions.js +0 -63
- package/src/omega/url_mentions/html_url_mentions.js +0 -185
- package/src/omega/url_mentions/js_module_url_mentions.js +0 -91
- package/src/omega/url_mentions/parse_url_mentions.js +0 -37
- package/src/omega/url_mentions/worker_classic_url_mentions.js +0 -37
|
@@ -0,0 +1,808 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* SJS 6.12.1
|
|
3
|
+
* Minimal SystemJS Build
|
|
4
|
+
*/
|
|
5
|
+
(function () {
|
|
6
|
+
|
|
7
|
+
function errMsg(errCode, msg) {
|
|
8
|
+
return (msg || "") + " (SystemJS https://git.io/JvFET#" + errCode + ")";
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
var hasSymbol = typeof Symbol !== 'undefined';
|
|
12
|
+
var hasSelf = typeof self !== 'undefined';
|
|
13
|
+
var hasDocument = typeof document !== 'undefined';
|
|
14
|
+
|
|
15
|
+
var envGlobal = hasSelf ? self : global;
|
|
16
|
+
|
|
17
|
+
var baseUrl;
|
|
18
|
+
|
|
19
|
+
if (hasDocument) {
|
|
20
|
+
var baseEl = document.querySelector('base[href]');
|
|
21
|
+
if (baseEl)
|
|
22
|
+
baseUrl = baseEl.href;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (!baseUrl && typeof location !== 'undefined') {
|
|
26
|
+
baseUrl = location.href.split('#')[0].split('?')[0];
|
|
27
|
+
var lastSepIndex = baseUrl.lastIndexOf('/');
|
|
28
|
+
if (lastSepIndex !== -1)
|
|
29
|
+
baseUrl = baseUrl.slice(0, lastSepIndex + 1);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var backslashRegEx = /\\/g;
|
|
33
|
+
function resolveIfNotPlainOrUrl (relUrl, parentUrl) {
|
|
34
|
+
if (relUrl.indexOf('\\') !== -1)
|
|
35
|
+
relUrl = relUrl.replace(backslashRegEx, '/');
|
|
36
|
+
// protocol-relative
|
|
37
|
+
if (relUrl[0] === '/' && relUrl[1] === '/') {
|
|
38
|
+
return parentUrl.slice(0, parentUrl.indexOf(':') + 1) + relUrl;
|
|
39
|
+
}
|
|
40
|
+
// relative-url
|
|
41
|
+
else if (relUrl[0] === '.' && (relUrl[1] === '/' || relUrl[1] === '.' && (relUrl[2] === '/' || relUrl.length === 2 && (relUrl += '/')) ||
|
|
42
|
+
relUrl.length === 1 && (relUrl += '/')) ||
|
|
43
|
+
relUrl[0] === '/') {
|
|
44
|
+
var parentProtocol = parentUrl.slice(0, parentUrl.indexOf(':') + 1);
|
|
45
|
+
// Disabled, but these cases will give inconsistent results for deep backtracking
|
|
46
|
+
//if (parentUrl[parentProtocol.length] !== '/')
|
|
47
|
+
// throw Error('Cannot resolve');
|
|
48
|
+
// read pathname from parent URL
|
|
49
|
+
// pathname taken to be part after leading "/"
|
|
50
|
+
var pathname;
|
|
51
|
+
if (parentUrl[parentProtocol.length + 1] === '/') {
|
|
52
|
+
// resolving to a :// so we need to read out the auth and host
|
|
53
|
+
if (parentProtocol !== 'file:') {
|
|
54
|
+
pathname = parentUrl.slice(parentProtocol.length + 2);
|
|
55
|
+
pathname = pathname.slice(pathname.indexOf('/') + 1);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
pathname = parentUrl.slice(8);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// resolving to :/ so pathname is the /... part
|
|
63
|
+
pathname = parentUrl.slice(parentProtocol.length + (parentUrl[parentProtocol.length] === '/'));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (relUrl[0] === '/')
|
|
67
|
+
return parentUrl.slice(0, parentUrl.length - pathname.length - 1) + relUrl;
|
|
68
|
+
|
|
69
|
+
// join together and split for removal of .. and . segments
|
|
70
|
+
// looping the string instead of anything fancy for perf reasons
|
|
71
|
+
// '../../../../../z' resolved to 'x/y' is just 'z'
|
|
72
|
+
var segmented = pathname.slice(0, pathname.lastIndexOf('/') + 1) + relUrl;
|
|
73
|
+
|
|
74
|
+
var output = [];
|
|
75
|
+
var segmentIndex = -1;
|
|
76
|
+
for (var i = 0; i < segmented.length; i++) {
|
|
77
|
+
// busy reading a segment - only terminate on '/'
|
|
78
|
+
if (segmentIndex !== -1) {
|
|
79
|
+
if (segmented[i] === '/') {
|
|
80
|
+
output.push(segmented.slice(segmentIndex, i + 1));
|
|
81
|
+
segmentIndex = -1;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// new segment - check if it is relative
|
|
86
|
+
else if (segmented[i] === '.') {
|
|
87
|
+
// ../ segment
|
|
88
|
+
if (segmented[i + 1] === '.' && (segmented[i + 2] === '/' || i + 2 === segmented.length)) {
|
|
89
|
+
output.pop();
|
|
90
|
+
i += 2;
|
|
91
|
+
}
|
|
92
|
+
// ./ segment
|
|
93
|
+
else if (segmented[i + 1] === '/' || i + 1 === segmented.length) {
|
|
94
|
+
i += 1;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// the start of a new segment as below
|
|
98
|
+
segmentIndex = i;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// it is the start of a new segment
|
|
102
|
+
else {
|
|
103
|
+
segmentIndex = i;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// finish reading out the last segment
|
|
107
|
+
if (segmentIndex !== -1)
|
|
108
|
+
output.push(segmented.slice(segmentIndex));
|
|
109
|
+
return parentUrl.slice(0, parentUrl.length - pathname.length) + output.join('');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/*
|
|
114
|
+
* Import maps implementation
|
|
115
|
+
*
|
|
116
|
+
* To make lookups fast we pre-resolve the entire import map
|
|
117
|
+
* and then match based on backtracked hash lookups
|
|
118
|
+
*
|
|
119
|
+
*/
|
|
120
|
+
|
|
121
|
+
function resolveUrl (relUrl, parentUrl) {
|
|
122
|
+
return resolveIfNotPlainOrUrl(relUrl, parentUrl) || (relUrl.indexOf(':') !== -1 ? relUrl : resolveIfNotPlainOrUrl('./' + relUrl, parentUrl));
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function resolveAndComposePackages (packages, outPackages, baseUrl, parentMap, parentUrl) {
|
|
126
|
+
for (var p in packages) {
|
|
127
|
+
var resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl) || p;
|
|
128
|
+
var rhs = packages[p];
|
|
129
|
+
// package fallbacks not currently supported
|
|
130
|
+
if (typeof rhs !== 'string')
|
|
131
|
+
continue;
|
|
132
|
+
var mapped = resolveImportMap(parentMap, resolveIfNotPlainOrUrl(rhs, baseUrl) || rhs, parentUrl);
|
|
133
|
+
if (!mapped) {
|
|
134
|
+
targetWarning('W1', p, rhs);
|
|
135
|
+
}
|
|
136
|
+
else
|
|
137
|
+
outPackages[resolvedLhs] = mapped;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function resolveAndComposeImportMap (json, baseUrl, outMap) {
|
|
142
|
+
if (json.imports)
|
|
143
|
+
resolveAndComposePackages(json.imports, outMap.imports, baseUrl, outMap, null);
|
|
144
|
+
|
|
145
|
+
var u;
|
|
146
|
+
for (u in json.scopes || {}) {
|
|
147
|
+
var resolvedScope = resolveUrl(u, baseUrl);
|
|
148
|
+
resolveAndComposePackages(json.scopes[u], outMap.scopes[resolvedScope] || (outMap.scopes[resolvedScope] = {}), baseUrl, outMap, resolvedScope);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
for (u in json.depcache || {})
|
|
152
|
+
outMap.depcache[resolveUrl(u, baseUrl)] = json.depcache[u];
|
|
153
|
+
|
|
154
|
+
for (u in json.integrity || {})
|
|
155
|
+
outMap.integrity[resolveUrl(u, baseUrl)] = json.integrity[u];
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function getMatch (path, matchObj) {
|
|
159
|
+
if (matchObj[path])
|
|
160
|
+
return path;
|
|
161
|
+
var sepIndex = path.length;
|
|
162
|
+
do {
|
|
163
|
+
var segment = path.slice(0, sepIndex + 1);
|
|
164
|
+
if (segment in matchObj)
|
|
165
|
+
return segment;
|
|
166
|
+
} while ((sepIndex = path.lastIndexOf('/', sepIndex - 1)) !== -1)
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
function applyPackages (id, packages) {
|
|
170
|
+
var pkgName = getMatch(id, packages);
|
|
171
|
+
if (pkgName) {
|
|
172
|
+
var pkg = packages[pkgName];
|
|
173
|
+
if (pkg === null) return;
|
|
174
|
+
if (id.length > pkgName.length && pkg[pkg.length - 1] !== '/') {
|
|
175
|
+
targetWarning('W2', pkgName, pkg);
|
|
176
|
+
}
|
|
177
|
+
else
|
|
178
|
+
return pkg + id.slice(pkgName.length);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
function targetWarning (code, match, target, msg) {
|
|
183
|
+
console.warn(errMsg(code, [target, match].join(', ') ));
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function resolveImportMap (importMap, resolvedOrPlain, parentUrl) {
|
|
187
|
+
var scopes = importMap.scopes;
|
|
188
|
+
var scopeUrl = parentUrl && getMatch(parentUrl, scopes);
|
|
189
|
+
while (scopeUrl) {
|
|
190
|
+
var packageResolution = applyPackages(resolvedOrPlain, scopes[scopeUrl]);
|
|
191
|
+
if (packageResolution)
|
|
192
|
+
return packageResolution;
|
|
193
|
+
scopeUrl = getMatch(scopeUrl.slice(0, scopeUrl.lastIndexOf('/')), scopes);
|
|
194
|
+
}
|
|
195
|
+
return applyPackages(resolvedOrPlain, importMap.imports) || resolvedOrPlain.indexOf(':') !== -1 && resolvedOrPlain;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/*
|
|
199
|
+
* SystemJS Core
|
|
200
|
+
*
|
|
201
|
+
* Provides
|
|
202
|
+
* - System.import
|
|
203
|
+
* - System.register support for
|
|
204
|
+
* live bindings, function hoisting through circular references,
|
|
205
|
+
* reexports, dynamic import, import.meta.url, top-level await
|
|
206
|
+
* - System.getRegister to get the registration
|
|
207
|
+
* - Symbol.toStringTag support in Module objects
|
|
208
|
+
* - Hookable System.createContext to customize import.meta
|
|
209
|
+
* - System.onload(err, id, deps) handler for tracing / hot-reloading
|
|
210
|
+
*
|
|
211
|
+
* Core comes with no System.prototype.resolve or
|
|
212
|
+
* System.prototype.instantiate implementations
|
|
213
|
+
*/
|
|
214
|
+
|
|
215
|
+
var toStringTag = hasSymbol && Symbol.toStringTag;
|
|
216
|
+
var REGISTRY = hasSymbol ? Symbol() : '@';
|
|
217
|
+
|
|
218
|
+
function SystemJS () {
|
|
219
|
+
this[REGISTRY] = {};
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
var systemJSPrototype = SystemJS.prototype;
|
|
223
|
+
|
|
224
|
+
systemJSPrototype.import = function (id, parentUrl) {
|
|
225
|
+
var loader = this;
|
|
226
|
+
return Promise.resolve(loader.prepareImport())
|
|
227
|
+
.then(function() {
|
|
228
|
+
return loader.resolve(String(id), parentUrl);
|
|
229
|
+
})
|
|
230
|
+
.then(function (id) {
|
|
231
|
+
var load = getOrCreateLoad(loader, id);
|
|
232
|
+
return load.C || topLevelLoad(loader, load);
|
|
233
|
+
});
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
// Hookable createContext function -> allowing eg custom import meta
|
|
237
|
+
systemJSPrototype.createContext = function (parentId) {
|
|
238
|
+
var loader = this;
|
|
239
|
+
return {
|
|
240
|
+
url: parentId,
|
|
241
|
+
resolve: function (id, parentUrl) {
|
|
242
|
+
return Promise.resolve(loader.resolve(id, parentUrl || parentId));
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
};
|
|
246
|
+
function loadToId (load) {
|
|
247
|
+
return load.id;
|
|
248
|
+
}
|
|
249
|
+
function triggerOnload (loader, load, err, isErrSource) {
|
|
250
|
+
loader.onload(err, load.id, load.d && load.d.map(loadToId), !!isErrSource);
|
|
251
|
+
if (err)
|
|
252
|
+
throw err;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
var lastRegister;
|
|
256
|
+
systemJSPrototype.register = function (deps, declare) {
|
|
257
|
+
lastRegister = [deps, declare];
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
/*
|
|
261
|
+
* getRegister provides the last anonymous System.register call
|
|
262
|
+
*/
|
|
263
|
+
systemJSPrototype.getRegister = function () {
|
|
264
|
+
var _lastRegister = lastRegister;
|
|
265
|
+
lastRegister = undefined;
|
|
266
|
+
return _lastRegister;
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
function getOrCreateLoad (loader, id, firstParentUrl) {
|
|
270
|
+
var load = loader[REGISTRY][id];
|
|
271
|
+
if (load)
|
|
272
|
+
return load;
|
|
273
|
+
|
|
274
|
+
var importerSetters = [];
|
|
275
|
+
var ns = Object.create(null);
|
|
276
|
+
if (toStringTag)
|
|
277
|
+
Object.defineProperty(ns, toStringTag, { value: 'Module' });
|
|
278
|
+
|
|
279
|
+
var instantiatePromise = Promise.resolve()
|
|
280
|
+
.then(function () {
|
|
281
|
+
return loader.instantiate(id, firstParentUrl);
|
|
282
|
+
})
|
|
283
|
+
.then(function (registration) {
|
|
284
|
+
if (!registration)
|
|
285
|
+
throw Error(errMsg(2, id ));
|
|
286
|
+
function _export (name, value) {
|
|
287
|
+
// note if we have hoisted exports (including reexports)
|
|
288
|
+
load.h = true;
|
|
289
|
+
var changed = false;
|
|
290
|
+
if (typeof name === 'string') {
|
|
291
|
+
if (!(name in ns) || ns[name] !== value) {
|
|
292
|
+
ns[name] = value;
|
|
293
|
+
changed = true;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
for (var p in name) {
|
|
298
|
+
var value = name[p];
|
|
299
|
+
if (!(p in ns) || ns[p] !== value) {
|
|
300
|
+
ns[p] = value;
|
|
301
|
+
changed = true;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (name && name.__esModule) {
|
|
306
|
+
ns.__esModule = name.__esModule;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
if (changed)
|
|
310
|
+
for (var i = 0; i < importerSetters.length; i++) {
|
|
311
|
+
var setter = importerSetters[i];
|
|
312
|
+
if (setter) setter(ns);
|
|
313
|
+
}
|
|
314
|
+
return value;
|
|
315
|
+
}
|
|
316
|
+
var declared = registration[1](_export, registration[1].length === 2 ? {
|
|
317
|
+
import: function (importId) {
|
|
318
|
+
return loader.import(importId, id);
|
|
319
|
+
},
|
|
320
|
+
meta: loader.createContext(id)
|
|
321
|
+
} : undefined);
|
|
322
|
+
load.e = declared.execute || function () {};
|
|
323
|
+
return [registration[0], declared.setters || []];
|
|
324
|
+
}, function (err) {
|
|
325
|
+
load.e = null;
|
|
326
|
+
load.er = err;
|
|
327
|
+
throw err;
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
var linkPromise = instantiatePromise
|
|
331
|
+
.then(function (instantiation) {
|
|
332
|
+
return Promise.all(instantiation[0].map(function (dep, i) {
|
|
333
|
+
var setter = instantiation[1][i];
|
|
334
|
+
return Promise.resolve(loader.resolve(dep, id))
|
|
335
|
+
.then(function (depId) {
|
|
336
|
+
var depLoad = getOrCreateLoad(loader, depId, id);
|
|
337
|
+
// depLoad.I may be undefined for already-evaluated
|
|
338
|
+
return Promise.resolve(depLoad.I)
|
|
339
|
+
.then(function () {
|
|
340
|
+
if (setter) {
|
|
341
|
+
depLoad.i.push(setter);
|
|
342
|
+
// only run early setters when there are hoisted exports of that module
|
|
343
|
+
// the timing works here as pending hoisted export calls will trigger through importerSetters
|
|
344
|
+
if (depLoad.h || !depLoad.I)
|
|
345
|
+
setter(depLoad.n);
|
|
346
|
+
}
|
|
347
|
+
return depLoad;
|
|
348
|
+
});
|
|
349
|
+
});
|
|
350
|
+
}))
|
|
351
|
+
.then(function (depLoads) {
|
|
352
|
+
load.d = depLoads;
|
|
353
|
+
});
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
// Capital letter = a promise function
|
|
357
|
+
return load = loader[REGISTRY][id] = {
|
|
358
|
+
id: id,
|
|
359
|
+
// importerSetters, the setters functions registered to this dependency
|
|
360
|
+
// we retain this to add more later
|
|
361
|
+
i: importerSetters,
|
|
362
|
+
// module namespace object
|
|
363
|
+
n: ns,
|
|
364
|
+
|
|
365
|
+
// instantiate
|
|
366
|
+
I: instantiatePromise,
|
|
367
|
+
// link
|
|
368
|
+
L: linkPromise,
|
|
369
|
+
// whether it has hoisted exports
|
|
370
|
+
h: false,
|
|
371
|
+
|
|
372
|
+
// On instantiate completion we have populated:
|
|
373
|
+
// dependency load records
|
|
374
|
+
d: undefined,
|
|
375
|
+
// execution function
|
|
376
|
+
e: undefined,
|
|
377
|
+
|
|
378
|
+
// On execution we have populated:
|
|
379
|
+
// the execution error if any
|
|
380
|
+
er: undefined,
|
|
381
|
+
// in the case of TLA, the execution promise
|
|
382
|
+
E: undefined,
|
|
383
|
+
|
|
384
|
+
// On execution, L, I, E cleared
|
|
385
|
+
|
|
386
|
+
// Promise for top-level completion
|
|
387
|
+
C: undefined,
|
|
388
|
+
|
|
389
|
+
// parent instantiator / executor
|
|
390
|
+
p: undefined
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
function instantiateAll (loader, load, parent, loaded) {
|
|
395
|
+
if (!loaded[load.id]) {
|
|
396
|
+
loaded[load.id] = true;
|
|
397
|
+
// load.L may be undefined for already-instantiated
|
|
398
|
+
return Promise.resolve(load.L)
|
|
399
|
+
.then(function () {
|
|
400
|
+
if (!load.p || load.p.e === null)
|
|
401
|
+
load.p = parent;
|
|
402
|
+
return Promise.all(load.d.map(function (dep) {
|
|
403
|
+
return instantiateAll(loader, dep, parent, loaded);
|
|
404
|
+
}));
|
|
405
|
+
})
|
|
406
|
+
.catch(function (err) {
|
|
407
|
+
if (load.er)
|
|
408
|
+
throw err;
|
|
409
|
+
load.e = null;
|
|
410
|
+
throw err;
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
function topLevelLoad (loader, load) {
|
|
416
|
+
return load.C = instantiateAll(loader, load, load, {})
|
|
417
|
+
.then(function () {
|
|
418
|
+
return postOrderExec(loader, load, {});
|
|
419
|
+
})
|
|
420
|
+
.then(function () {
|
|
421
|
+
return load.n;
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
// the closest we can get to call(undefined)
|
|
426
|
+
var nullContext = Object.freeze(Object.create(null));
|
|
427
|
+
|
|
428
|
+
// returns a promise if and only if a top-level await subgraph
|
|
429
|
+
// throws on sync errors
|
|
430
|
+
function postOrderExec (loader, load, seen) {
|
|
431
|
+
if (seen[load.id])
|
|
432
|
+
return;
|
|
433
|
+
seen[load.id] = true;
|
|
434
|
+
|
|
435
|
+
if (!load.e) {
|
|
436
|
+
if (load.er)
|
|
437
|
+
throw load.er;
|
|
438
|
+
if (load.E)
|
|
439
|
+
return load.E;
|
|
440
|
+
return;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
// deps execute first, unless circular
|
|
444
|
+
var depLoadPromises;
|
|
445
|
+
load.d.forEach(function (depLoad) {
|
|
446
|
+
try {
|
|
447
|
+
var depLoadPromise = postOrderExec(loader, depLoad, seen);
|
|
448
|
+
if (depLoadPromise)
|
|
449
|
+
(depLoadPromises = depLoadPromises || []).push(depLoadPromise);
|
|
450
|
+
}
|
|
451
|
+
catch (err) {
|
|
452
|
+
load.e = null;
|
|
453
|
+
load.er = err;
|
|
454
|
+
throw err;
|
|
455
|
+
}
|
|
456
|
+
});
|
|
457
|
+
if (depLoadPromises)
|
|
458
|
+
return Promise.all(depLoadPromises).then(doExec);
|
|
459
|
+
|
|
460
|
+
return doExec();
|
|
461
|
+
|
|
462
|
+
function doExec () {
|
|
463
|
+
try {
|
|
464
|
+
var execPromise = load.e.call(nullContext);
|
|
465
|
+
if (execPromise) {
|
|
466
|
+
execPromise = execPromise.then(function () {
|
|
467
|
+
load.C = load.n;
|
|
468
|
+
load.E = null; // indicates completion
|
|
469
|
+
if (!true) ;
|
|
470
|
+
}, function (err) {
|
|
471
|
+
load.er = err;
|
|
472
|
+
load.E = null;
|
|
473
|
+
if (!true) ;
|
|
474
|
+
throw err;
|
|
475
|
+
});
|
|
476
|
+
return load.E = execPromise;
|
|
477
|
+
}
|
|
478
|
+
// (should be a promise, but a minify optimization to leave out Promise.resolve)
|
|
479
|
+
load.C = load.n;
|
|
480
|
+
load.L = load.I = undefined;
|
|
481
|
+
}
|
|
482
|
+
catch (err) {
|
|
483
|
+
load.er = err;
|
|
484
|
+
throw err;
|
|
485
|
+
}
|
|
486
|
+
finally {
|
|
487
|
+
load.e = null;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
envGlobal.System = new SystemJS();
|
|
493
|
+
|
|
494
|
+
/*
|
|
495
|
+
* SystemJS browser attachments for script and import map processing
|
|
496
|
+
*/
|
|
497
|
+
|
|
498
|
+
var importMapPromise = Promise.resolve();
|
|
499
|
+
var importMap = { imports: {}, scopes: {}, depcache: {}, integrity: {} };
|
|
500
|
+
systemJSPrototype.importMap = importMap;
|
|
501
|
+
systemJSPrototype.baseUrl = baseUrl;
|
|
502
|
+
|
|
503
|
+
// Scripts are processed immediately, on the first System.import, and on DOMReady.
|
|
504
|
+
// Import map scripts are processed only once (by being marked) and in order for each phase.
|
|
505
|
+
// This is to avoid using DOM mutation observers in core, although that would be an alternative.
|
|
506
|
+
var processFirst = hasDocument;
|
|
507
|
+
systemJSPrototype.prepareImport = function (doProcessScripts) {
|
|
508
|
+
if (processFirst || doProcessScripts) {
|
|
509
|
+
processScripts();
|
|
510
|
+
processFirst = false;
|
|
511
|
+
}
|
|
512
|
+
return importMapPromise;
|
|
513
|
+
};
|
|
514
|
+
if (hasDocument) {
|
|
515
|
+
processScripts();
|
|
516
|
+
window.addEventListener('DOMContentLoaded', processScripts);
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
function processScripts () {
|
|
520
|
+
[].forEach.call(document.querySelectorAll('script'), function (script) {
|
|
521
|
+
if (script.sp) // sp marker = systemjs processed
|
|
522
|
+
return;
|
|
523
|
+
// TODO: deprecate systemjs-module in next major now that we have auto import
|
|
524
|
+
if (script.type === 'systemjs-module') {
|
|
525
|
+
script.sp = true;
|
|
526
|
+
if (!script.src)
|
|
527
|
+
return;
|
|
528
|
+
System.import(script.src.slice(0, 7) === 'import:' ? script.src.slice(7) : resolveUrl(script.src, baseUrl)).catch(function (e) {
|
|
529
|
+
// if there is a script load error, dispatch an "error" event
|
|
530
|
+
// on the script tag.
|
|
531
|
+
if (e.message.indexOf('https://git.io/JvFET#3') > -1) {
|
|
532
|
+
var event = document.createEvent('Event');
|
|
533
|
+
event.initEvent('error', false, false);
|
|
534
|
+
script.dispatchEvent(event);
|
|
535
|
+
}
|
|
536
|
+
return Promise.reject(e);
|
|
537
|
+
});
|
|
538
|
+
}
|
|
539
|
+
else if (script.type === 'systemjs-importmap') {
|
|
540
|
+
script.sp = true;
|
|
541
|
+
// The passThrough property is for letting the module types fetch implementation know that this is not a SystemJS module.
|
|
542
|
+
var fetchPromise = script.src ? (System.fetch || fetch)(script.src, { integrity: script.integrity, passThrough: true }).then(function (res) {
|
|
543
|
+
if (!res.ok)
|
|
544
|
+
throw Error(res.status );
|
|
545
|
+
return res.text();
|
|
546
|
+
}).catch(function (err) {
|
|
547
|
+
err.message = errMsg('W4', script.src ) + '\n' + err.message;
|
|
548
|
+
console.warn(err);
|
|
549
|
+
if (typeof script.onerror === 'function') {
|
|
550
|
+
script.onerror();
|
|
551
|
+
}
|
|
552
|
+
return '{}';
|
|
553
|
+
}) : script.innerHTML;
|
|
554
|
+
importMapPromise = importMapPromise.then(function () {
|
|
555
|
+
return fetchPromise;
|
|
556
|
+
}).then(function (text) {
|
|
557
|
+
extendImportMap(importMap, text, script.src || baseUrl);
|
|
558
|
+
return importMap
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
});
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
function extendImportMap (importMap, newMapText, newMapUrl) {
|
|
565
|
+
var newMap = {};
|
|
566
|
+
try {
|
|
567
|
+
newMap = JSON.parse(newMapText);
|
|
568
|
+
} catch (err) {
|
|
569
|
+
console.warn(Error((errMsg('W5') )));
|
|
570
|
+
}
|
|
571
|
+
resolveAndComposeImportMap(newMap, newMapUrl, importMap);
|
|
572
|
+
}
|
|
573
|
+
System.extendImportMap = extendImportMap
|
|
574
|
+
|
|
575
|
+
/*
|
|
576
|
+
* Script instantiation loading
|
|
577
|
+
*/
|
|
578
|
+
|
|
579
|
+
if (hasDocument) {
|
|
580
|
+
window.addEventListener('error', function (evt) {
|
|
581
|
+
lastWindowErrorUrl = evt.filename;
|
|
582
|
+
lastWindowError = evt.error;
|
|
583
|
+
});
|
|
584
|
+
var baseOrigin = location.origin;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
systemJSPrototype.createScript = function (url) {
|
|
588
|
+
var script = document.createElement('script');
|
|
589
|
+
script.async = true;
|
|
590
|
+
// Only add cross origin for actual cross origin
|
|
591
|
+
// this is because Safari triggers for all
|
|
592
|
+
// - https://bugs.webkit.org/show_bug.cgi?id=171566
|
|
593
|
+
if (url.indexOf(baseOrigin + '/'))
|
|
594
|
+
script.crossOrigin = 'anonymous';
|
|
595
|
+
var integrity = importMap.integrity[url];
|
|
596
|
+
if (integrity)
|
|
597
|
+
script.integrity = integrity;
|
|
598
|
+
script.src = url;
|
|
599
|
+
return script;
|
|
600
|
+
};
|
|
601
|
+
|
|
602
|
+
// Auto imports -> script tags can be inlined directly for load phase
|
|
603
|
+
var lastAutoImportDeps, lastAutoImportTimeout;
|
|
604
|
+
var autoImportCandidates = {};
|
|
605
|
+
var systemRegister = systemJSPrototype.register;
|
|
606
|
+
var inlineScriptCount = 0;
|
|
607
|
+
systemJSPrototype.register = function (deps, declare, autoUrl) {
|
|
608
|
+
if (hasDocument && document.readyState === 'loading' && typeof deps !== 'string') {
|
|
609
|
+
var scripts = document.querySelectorAll('script');
|
|
610
|
+
var lastScript = scripts[scripts.length - 1];
|
|
611
|
+
var lastAutoImportUrl
|
|
612
|
+
lastAutoImportDeps = deps;
|
|
613
|
+
if (lastScript && lastScript.src) {
|
|
614
|
+
lastAutoImportUrl = lastScript.src;
|
|
615
|
+
}
|
|
616
|
+
else if (autoUrl) {
|
|
617
|
+
lastAutoImportUrl = autoUrl
|
|
618
|
+
}
|
|
619
|
+
else {
|
|
620
|
+
inlineScriptCount++
|
|
621
|
+
lastAutoImportUrl = document.location.href + "__inline_script__" + inlineScriptCount;
|
|
622
|
+
}
|
|
623
|
+
// if this is already a System load, then the instantiate has already begun
|
|
624
|
+
// so this re-import has no consequence
|
|
625
|
+
var loader = this;
|
|
626
|
+
lastAutoImportTimeout = setTimeout(function () {
|
|
627
|
+
autoImportCandidates[lastAutoImportUrl] = [deps, declare];
|
|
628
|
+
loader.import(lastAutoImportUrl);
|
|
629
|
+
});
|
|
630
|
+
}
|
|
631
|
+
else {
|
|
632
|
+
lastAutoImportDeps = undefined;
|
|
633
|
+
}
|
|
634
|
+
return systemRegister.call(this, deps, declare);
|
|
635
|
+
};
|
|
636
|
+
|
|
637
|
+
var lastWindowErrorUrl, lastWindowError;
|
|
638
|
+
systemJSPrototype.instantiate = function (url, firstParentUrl) {
|
|
639
|
+
var autoImportRegistration = autoImportCandidates[url];
|
|
640
|
+
if (autoImportRegistration) {
|
|
641
|
+
delete autoImportCandidates[url];
|
|
642
|
+
return autoImportRegistration;
|
|
643
|
+
}
|
|
644
|
+
var loader = this;
|
|
645
|
+
return Promise.resolve(systemJSPrototype.createScript(url)).then(function (script) {
|
|
646
|
+
return new Promise(function (resolve, reject) {
|
|
647
|
+
script.addEventListener('error', function () {
|
|
648
|
+
reject(Error(errMsg(3, [url, firstParentUrl].join(', ') )));
|
|
649
|
+
});
|
|
650
|
+
script.addEventListener('load', function () {
|
|
651
|
+
document.head.removeChild(script);
|
|
652
|
+
// Note that if an error occurs that isn't caught by this if statement,
|
|
653
|
+
// that getRegister will return null and a "did not instantiate" error will be thrown.
|
|
654
|
+
if (lastWindowErrorUrl === url) {
|
|
655
|
+
reject(lastWindowError);
|
|
656
|
+
}
|
|
657
|
+
else {
|
|
658
|
+
var register = loader.getRegister(url);
|
|
659
|
+
// Clear any auto import registration for dynamic import scripts during load
|
|
660
|
+
if (register && register[0] === lastAutoImportDeps)
|
|
661
|
+
clearTimeout(lastAutoImportTimeout);
|
|
662
|
+
resolve(register);
|
|
663
|
+
}
|
|
664
|
+
});
|
|
665
|
+
document.head.appendChild(script);
|
|
666
|
+
});
|
|
667
|
+
});
|
|
668
|
+
};
|
|
669
|
+
|
|
670
|
+
/*
|
|
671
|
+
* Fetch loader, sets up shouldFetch and fetch hooks
|
|
672
|
+
*/
|
|
673
|
+
systemJSPrototype.shouldFetch = function () {
|
|
674
|
+
return false;
|
|
675
|
+
};
|
|
676
|
+
if (typeof fetch !== 'undefined')
|
|
677
|
+
systemJSPrototype.fetch = fetch;
|
|
678
|
+
|
|
679
|
+
var instantiate = systemJSPrototype.instantiate;
|
|
680
|
+
var jsContentTypeRegEx = /^(text|application)\/(x-)?javascript(;|$)/;
|
|
681
|
+
systemJSPrototype.instantiate = function (url, parent) {
|
|
682
|
+
var loader = this;
|
|
683
|
+
if (!this.shouldFetch(url))
|
|
684
|
+
return instantiate.apply(this, arguments);
|
|
685
|
+
return this.fetch(url, {
|
|
686
|
+
credentials: 'same-origin',
|
|
687
|
+
integrity: importMap.integrity[url]
|
|
688
|
+
})
|
|
689
|
+
.then(function (res) {
|
|
690
|
+
if (!res.ok)
|
|
691
|
+
throw Error(errMsg(7, [res.status, res.statusText, url, parent].join(', ') ));
|
|
692
|
+
var contentType = res.headers.get('content-type');
|
|
693
|
+
if (!contentType || !jsContentTypeRegEx.test(contentType))
|
|
694
|
+
throw Error(errMsg(4, contentType ));
|
|
695
|
+
return res.text().then(function (source) {
|
|
696
|
+
if (source.indexOf('//# sourceURL=') < 0)
|
|
697
|
+
source += '\n//# sourceURL=' + url;
|
|
698
|
+
(0, eval)(source);
|
|
699
|
+
return loader.getRegister(url);
|
|
700
|
+
});
|
|
701
|
+
});
|
|
702
|
+
};
|
|
703
|
+
|
|
704
|
+
systemJSPrototype.resolve = function (id, parentUrl) {
|
|
705
|
+
parentUrl = parentUrl || !true || baseUrl;
|
|
706
|
+
return resolveImportMap((importMap), resolveIfNotPlainOrUrl(id, parentUrl) || id, parentUrl) || throwUnresolved(id, parentUrl);
|
|
707
|
+
};
|
|
708
|
+
|
|
709
|
+
function throwUnresolved (id, parentUrl) {
|
|
710
|
+
throw Error(errMsg(8, [id, parentUrl].join(', ') ));
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
var systemInstantiate = systemJSPrototype.instantiate;
|
|
714
|
+
systemJSPrototype.instantiate = function (url, firstParentUrl) {
|
|
715
|
+
var preloads = (importMap).depcache[url];
|
|
716
|
+
if (preloads) {
|
|
717
|
+
for (var i = 0; i < preloads.length; i++)
|
|
718
|
+
getOrCreateLoad(this, this.resolve(preloads[i], url), url);
|
|
719
|
+
}
|
|
720
|
+
return systemInstantiate.call(this, url, firstParentUrl);
|
|
721
|
+
};
|
|
722
|
+
|
|
723
|
+
/*
|
|
724
|
+
* Supports loading System.register in workers
|
|
725
|
+
*/
|
|
726
|
+
|
|
727
|
+
if (hasSelf && typeof importScripts === 'function') {
|
|
728
|
+
systemJSPrototype.instantiate = function (url) {
|
|
729
|
+
var loader = this;
|
|
730
|
+
return self.fetch(url, {
|
|
731
|
+
credentials: 'same-origin',
|
|
732
|
+
}).then(function (response) {
|
|
733
|
+
if (!response.ok) {
|
|
734
|
+
throw Error(errMsg(7, [response.status, response.statusText, url].join(', ') ));
|
|
735
|
+
}
|
|
736
|
+
return response.text()
|
|
737
|
+
}).then(function (source) {
|
|
738
|
+
if (source.indexOf('//# sourceURL=') < 0) source += '\n//# sourceURL=' + url;
|
|
739
|
+
(0, eval)(source);
|
|
740
|
+
return loader.getRegister(url);
|
|
741
|
+
})
|
|
742
|
+
};
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
}());
|
|
746
|
+
|
|
747
|
+
(function(){
|
|
748
|
+
var envGlobal = typeof self !== 'undefined' ? self : global;
|
|
749
|
+
var System = envGlobal.System;
|
|
750
|
+
|
|
751
|
+
var registerRegistry = Object.create(null)
|
|
752
|
+
var register = System.register;
|
|
753
|
+
System.registerRegistry = registerRegistry;
|
|
754
|
+
System.register = function (name, deps, declare) {
|
|
755
|
+
if (typeof name !== 'string') return register.apply(this, arguments);
|
|
756
|
+
var define = [deps, declare];
|
|
757
|
+
return System.prepareImport().then(function () {
|
|
758
|
+
var url = System.resolve(`./${name}`);
|
|
759
|
+
registerRegistry[url] = define;
|
|
760
|
+
return register.call(System, deps, declare, url);
|
|
761
|
+
})
|
|
762
|
+
};
|
|
763
|
+
|
|
764
|
+
var instantiate = System.instantiate;
|
|
765
|
+
System.instantiate = function (url, firstParentUrl) {
|
|
766
|
+
var result = registerRegistry[url];
|
|
767
|
+
|
|
768
|
+
if (result) {
|
|
769
|
+
registerRegistry[url] = null;
|
|
770
|
+
return result;
|
|
771
|
+
} else {
|
|
772
|
+
return instantiate.call(this, url, firstParentUrl);
|
|
773
|
+
}
|
|
774
|
+
};
|
|
775
|
+
|
|
776
|
+
var getRegister = System.getRegister;
|
|
777
|
+
System.getRegister = function (url) {
|
|
778
|
+
// Calling getRegister() because other extras need to know it was called so they can perform side effects
|
|
779
|
+
var register = getRegister.call(this, url);
|
|
780
|
+
var result = registerRegistry[url] || register;
|
|
781
|
+
return result;
|
|
782
|
+
};
|
|
783
|
+
}());
|
|
784
|
+
|
|
785
|
+
(function () {
|
|
786
|
+
// worker or service worker
|
|
787
|
+
if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {
|
|
788
|
+
// auto import first register
|
|
789
|
+
var messageEvents = []
|
|
790
|
+
var messageCallback = (event) => {
|
|
791
|
+
messageEvents.push(event)
|
|
792
|
+
}
|
|
793
|
+
self.addEventListener('message', messageCallback)
|
|
794
|
+
var register = System.register;
|
|
795
|
+
System.register = function(deps, declare) {
|
|
796
|
+
System.register = register;
|
|
797
|
+
System.registerRegistry[self.location.href] = [deps, declare];
|
|
798
|
+
return System.import(self.location.href).then((result) => {
|
|
799
|
+
self.removeEventListener('message', messageCallback)
|
|
800
|
+
messageEvents.forEach((messageEvent) => {
|
|
801
|
+
self.dispatchEvent(messageEvent)
|
|
802
|
+
})
|
|
803
|
+
messageEvents = null
|
|
804
|
+
return result
|
|
805
|
+
})
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
}());
|