@wordpress/interactivity-router 2.25.0 → 2.26.1-next.719a03cbe.0

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.
Files changed (74) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +22 -0
  3. package/build/assets/dynamic-importmap/fetch.js +60 -0
  4. package/build/assets/dynamic-importmap/fetch.js.map +1 -0
  5. package/build/assets/dynamic-importmap/index.js +91 -0
  6. package/build/assets/dynamic-importmap/index.js.map +1 -0
  7. package/build/assets/dynamic-importmap/loader.js +286 -0
  8. package/build/assets/dynamic-importmap/loader.js.map +1 -0
  9. package/build/assets/dynamic-importmap/resolver.js +220 -0
  10. package/build/assets/dynamic-importmap/resolver.js.map +1 -0
  11. package/build/assets/script-modules.js +64 -0
  12. package/build/assets/script-modules.js.map +1 -0
  13. package/build/assets/scs.js +62 -0
  14. package/build/assets/scs.js.map +1 -0
  15. package/build/assets/styles.js +246 -0
  16. package/build/assets/styles.js.map +1 -0
  17. package/build/full-page.js +43 -0
  18. package/build/full-page.js.map +1 -0
  19. package/build/index.js +140 -38
  20. package/build/index.js.map +1 -1
  21. package/build-module/assets/dynamic-importmap/fetch.js +54 -0
  22. package/build-module/assets/dynamic-importmap/fetch.js.map +1 -0
  23. package/build-module/assets/dynamic-importmap/index.js +72 -0
  24. package/build-module/assets/dynamic-importmap/index.js.map +1 -0
  25. package/build-module/assets/dynamic-importmap/loader.js +279 -0
  26. package/build-module/assets/dynamic-importmap/loader.js.map +1 -0
  27. package/build-module/assets/dynamic-importmap/resolver.js +213 -0
  28. package/build-module/assets/dynamic-importmap/resolver.js.map +1 -0
  29. package/build-module/assets/script-modules.js +55 -0
  30. package/build-module/assets/script-modules.js.map +1 -0
  31. package/build-module/assets/scs.js +56 -0
  32. package/build-module/assets/scs.js.map +1 -0
  33. package/build-module/assets/styles.js +235 -0
  34. package/build-module/assets/styles.js.map +1 -0
  35. package/build-module/full-page.js +39 -0
  36. package/build-module/full-page.js.map +1 -0
  37. package/build-module/index.js +142 -38
  38. package/build-module/index.js.map +1 -1
  39. package/build-types/assets/dynamic-importmap/fetch.d.ts +30 -0
  40. package/build-types/assets/dynamic-importmap/fetch.d.ts.map +1 -0
  41. package/build-types/assets/dynamic-importmap/index.d.ts +42 -0
  42. package/build-types/assets/dynamic-importmap/index.d.ts.map +1 -0
  43. package/build-types/assets/dynamic-importmap/loader.d.ts +68 -0
  44. package/build-types/assets/dynamic-importmap/loader.d.ts.map +1 -0
  45. package/build-types/assets/dynamic-importmap/resolver.d.ts +35 -0
  46. package/build-types/assets/dynamic-importmap/resolver.d.ts.map +1 -0
  47. package/build-types/assets/script-modules.d.ts +26 -0
  48. package/build-types/assets/script-modules.d.ts.map +1 -0
  49. package/build-types/assets/scs.d.ts +24 -0
  50. package/build-types/assets/scs.d.ts.map +1 -0
  51. package/build-types/assets/styles.d.ts +69 -0
  52. package/build-types/assets/styles.d.ts.map +1 -0
  53. package/build-types/full-page.d.ts +3 -0
  54. package/build-types/full-page.d.ts.map +1 -0
  55. package/build-types/index.d.ts +4 -5
  56. package/build-types/index.d.ts.map +1 -1
  57. package/package.json +9 -5
  58. package/src/assets/dynamic-importmap/fetch.ts +58 -0
  59. package/src/assets/dynamic-importmap/index.ts +87 -0
  60. package/src/assets/dynamic-importmap/loader.ts +366 -0
  61. package/src/assets/dynamic-importmap/resolver.ts +292 -0
  62. package/src/assets/script-modules.ts +69 -0
  63. package/src/assets/scs.ts +61 -0
  64. package/src/assets/styles.ts +272 -0
  65. package/src/assets/test/scs.test.ts +367 -0
  66. package/src/assets/test/styles.test.ts +758 -0
  67. package/src/full-page.ts +47 -0
  68. package/src/index.ts +165 -45
  69. package/tsconfig.full-page.json +12 -0
  70. package/tsconfig.full-page.tsbuildinfo +1 -0
  71. package/tsconfig.json +9 -4
  72. package/tsconfig.main.json +21 -0
  73. package/tsconfig.main.tsbuildinfo +1 -0
  74. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,279 @@
1
+ /* wp:polyfill */
2
+ /**
3
+ * This code is derived from the following projects:
4
+ *
5
+ * 1. dynamic-importmap (https://github.com/keller-mark/dynamic-importmap)
6
+ * 2. es-module-shims (https://github.com/guybedford/es-module-shims)
7
+ *
8
+ * The original implementation was created by Guy Bedford in es-module-shims,
9
+ * then adapted by Mark Keller in dynamic-importmap, and further modified
10
+ * for use in this project.
11
+ *
12
+ * Both projects are licensed under the MIT license.
13
+ *
14
+ * MIT License: https://opensource.org/licenses/MIT
15
+ */
16
+
17
+ /**
18
+ * External dependencies
19
+ */
20
+ import * as lexer from 'es-module-lexer';
21
+
22
+ /**
23
+ * Internal dependencies
24
+ */
25
+ import { fetchModule } from './fetch';
26
+ import { resolve } from './resolver';
27
+ export const initPromise = lexer.init;
28
+
29
+ /**
30
+ * Script element containing the initial page's import map.
31
+ */
32
+ const initialImportMapElement = window.document.querySelector('script#wp-importmap[type=importmap]');
33
+
34
+ /**
35
+ * Data from the initial page's import map.
36
+ *
37
+ * Pages containing any of the imports present on the original page
38
+ * in their import maps should ignore them, as those imports would
39
+ * be handled natively.
40
+ */
41
+ export const initialImportMap = initialImportMapElement ? JSON.parse(initialImportMapElement.text) : {
42
+ imports: {},
43
+ scopes: {}
44
+ };
45
+ const skip = id => Object.keys(initialImportMap.imports).includes(id);
46
+ const fetchCache = {};
47
+ export const registry = {};
48
+
49
+ // Init registry with importamp content.
50
+ Object.keys(initialImportMap.imports).forEach(id => {
51
+ registry[id] = {
52
+ blobUrl: id
53
+ };
54
+ });
55
+ async function loadAll(load, seen) {
56
+ if (load.blobUrl || seen[load.url]) {
57
+ return;
58
+ }
59
+ seen[load.url] = 1;
60
+ await load.linkPromise;
61
+ await Promise.all(load.deps.map(dep => loadAll(dep, seen)));
62
+ }
63
+ function urlJsString(url) {
64
+ return `'${url.replace(/'/g, "\\'")}'`;
65
+ }
66
+ const createBlob = (source, type = 'text/javascript') => URL.createObjectURL(new Blob([source], {
67
+ type
68
+ }));
69
+ function resolveDeps(load, seen) {
70
+ if (load.blobUrl || !seen[load.url]) {
71
+ return;
72
+ }
73
+ seen[load.url] = 0;
74
+ for (const dep of load.deps) {
75
+ resolveDeps(dep, seen);
76
+ }
77
+ const [imports, exports] = load.analysis;
78
+ const source = load.source;
79
+ let resolvedSource = '';
80
+ if (!imports.length) {
81
+ resolvedSource += source;
82
+ } else {
83
+ let lastIndex = 0;
84
+ let depIndex = 0;
85
+ const dynamicImportEndStack = [];
86
+ function pushStringTo(originalIndex) {
87
+ while (dynamicImportEndStack.length && dynamicImportEndStack[dynamicImportEndStack.length - 1] < originalIndex) {
88
+ const dynamicImportEnd = dynamicImportEndStack.pop();
89
+ resolvedSource += `${source.slice(lastIndex, dynamicImportEnd)}, ${urlJsString(load.responseUrl)}`;
90
+ lastIndex = dynamicImportEnd;
91
+ }
92
+ resolvedSource += source.slice(lastIndex, originalIndex);
93
+ lastIndex = originalIndex;
94
+ }
95
+ for (const {
96
+ s: start,
97
+ ss: statementStart,
98
+ se: statementEnd,
99
+ d: dynamicImportIndex
100
+ } of imports) {
101
+ // static import
102
+ if (dynamicImportIndex === -1) {
103
+ const depLoad = load.deps[depIndex++];
104
+ let blobUrl = depLoad.blobUrl;
105
+ const cycleShell = !blobUrl;
106
+ if (cycleShell) {
107
+ // Circular shell creation
108
+ if (!(blobUrl = depLoad.shellUrl)) {
109
+ blobUrl = depLoad.shellUrl = createBlob(`export function u$_(m){${depLoad.analysis[1].map(({
110
+ s,
111
+ e
112
+ }, i) => {
113
+ const q = depLoad.source[s] === '"' || depLoad.source[s] === "'";
114
+ return `e$_${i}=m${q ? `[` : '.'}${depLoad.source.slice(s, e)}${q ? `]` : ''}`;
115
+ }).join(',')}}${depLoad.analysis[1].length ? `let ${depLoad.analysis[1].map((_, i) => `e$_${i}`).join(',')};` : ''}export {${depLoad.analysis[1].map(({
116
+ s,
117
+ e
118
+ }, i) => `e$_${i} as ${depLoad.source.slice(s, e)}`).join(',')}}\n//# sourceURL=${depLoad.responseUrl}?cycle`);
119
+ }
120
+ }
121
+ pushStringTo(start - 1);
122
+ resolvedSource += `/*${source.slice(start - 1, statementEnd)}*/${urlJsString(blobUrl)}`;
123
+
124
+ // circular shell execution
125
+ if (!cycleShell && depLoad.shellUrl) {
126
+ resolvedSource += `;import*as m$_${depIndex} from'${depLoad.blobUrl}';import{u$_ as u$_${depIndex}}from'${depLoad.shellUrl}';u$_${depIndex}(m$_${depIndex})`;
127
+ depLoad.shellUrl = undefined;
128
+ }
129
+ lastIndex = statementEnd;
130
+ }
131
+ // import.meta
132
+ else if (dynamicImportIndex === -2) {
133
+ throw Error('The import.meta property is not supported.');
134
+ }
135
+ // dynamic import
136
+ else {
137
+ pushStringTo(statementStart);
138
+ resolvedSource += `wpInteractivityRouterImport(`;
139
+ dynamicImportEndStack.push(statementEnd - 1);
140
+ lastIndex = start;
141
+ }
142
+ }
143
+
144
+ // progressive cycle binding updates
145
+ if (load.shellUrl) {
146
+ resolvedSource += `\n;import{u$_}from'${load.shellUrl}';try{u$_({${exports.filter(e => e.ln).map(({
147
+ s,
148
+ e,
149
+ ln
150
+ }) => `${source.slice(s, e)}:${ln}`).join(',')}})}catch(_){};\n`;
151
+ }
152
+ pushStringTo(source.length);
153
+ }
154
+
155
+ // ensure we have a proper sourceURL
156
+ let hasSourceURL = false;
157
+ resolvedSource = resolvedSource.replace(sourceMapURLRegEx, (match, isMapping, url) => {
158
+ hasSourceURL = !isMapping;
159
+ return match.replace(url, () => new URL(url, load.responseUrl).toString());
160
+ });
161
+ if (!hasSourceURL) {
162
+ resolvedSource += '\n//# sourceURL=' + load.responseUrl;
163
+ }
164
+ load.blobUrl = createBlob(resolvedSource);
165
+ load.source = undefined; // free memory
166
+ }
167
+ const sourceMapURLRegEx = /\n\/\/# source(Mapping)?URL=([^\n]+)\s*((;|\/\/[^#][^\n]*)\s*)*$/;
168
+ function getOrCreateLoad(url, fetchOpts, parent) {
169
+ let load = registry[url];
170
+ if (load) {
171
+ return load;
172
+ }
173
+ load = {
174
+ url
175
+ };
176
+ if (registry[url]) {
177
+ // If there's a naming conflict, keep incrementing until unique
178
+ let i = 0;
179
+ while (registry[load.url + ++i]) {
180
+ /* no-op */
181
+ }
182
+ load.url += i;
183
+ }
184
+ registry[load.url] = load;
185
+ load.fetchPromise = (async () => {
186
+ let source;
187
+ ({
188
+ responseUrl: load.responseUrl,
189
+ source: source
190
+ } = await (fetchCache[url] || fetchModule(url, fetchOpts, parent)));
191
+ try {
192
+ load.analysis = lexer.parse(source, load.url);
193
+ } catch (e) {
194
+ // eslint-disable-next-line no-console
195
+ console.error(e);
196
+ load.analysis = [[], [], false, false];
197
+ }
198
+ load.source = source;
199
+ return load;
200
+ })();
201
+ load.linkPromise = load.fetchPromise.then(async () => {
202
+ let childFetchOpts = fetchOpts;
203
+ load.deps = (await Promise.all(load.analysis[0].map(async ({
204
+ n,
205
+ d
206
+ }) => {
207
+ if (d !== -1 || !n) {
208
+ return undefined;
209
+ }
210
+ const responseUrl = resolve(n, load.responseUrl || load.url);
211
+ if (skip && skip(responseUrl)) {
212
+ return {
213
+ blobUrl: responseUrl
214
+ };
215
+ }
216
+ // remove integrity for child fetches
217
+ if (childFetchOpts.integrity) {
218
+ childFetchOpts = {
219
+ ...childFetchOpts,
220
+ integrity: undefined
221
+ };
222
+ }
223
+ return getOrCreateLoad(responseUrl, childFetchOpts, load.responseUrl).fetchPromise;
224
+ }))).filter(l => l);
225
+ });
226
+ return load;
227
+ }
228
+ const dynamicImport = u => import(/* webpackIgnore: true */u);
229
+
230
+ /**
231
+ * Resolves the passed module URL and fetches the corresponding module
232
+ * and their dependencies, returning a `ModuleLoad` object once all
233
+ * of them have been fetched.
234
+ *
235
+ * @param url Module URL.
236
+ * @param fetchOpts Fetch options.
237
+ * @return A promise with a `ModuleLoad` instance.
238
+ */
239
+ export async function preloadModule(url, fetchOpts) {
240
+ await initPromise;
241
+ const load = getOrCreateLoad(url, fetchOpts, null);
242
+ const seen = {};
243
+ await loadAll(load, seen);
244
+ resolveDeps(load, seen);
245
+ // microtask scheduling – can help ensure Blob is fully ready
246
+ await Promise.resolve();
247
+ return load;
248
+ }
249
+
250
+ /**
251
+ * Imports the module represented by the passed `ModuleLoad` instance.
252
+ *
253
+ * @param load The `ModuleLoad` instance representing the module.
254
+ * @return A promise with the imported module.
255
+ */
256
+ export async function importPreloadedModule(load) {
257
+ const module = await dynamicImport(load.blobUrl);
258
+ // if the preloaded module ended up with a shell (circular refs), finalize it
259
+ if (load.shellUrl) {
260
+ (await dynamicImport(load.shellUrl)).u$_(module);
261
+ }
262
+ return module;
263
+ }
264
+
265
+ /**
266
+ * Imports the module represented by the passed module URL.
267
+ *
268
+ * The module URL and all its dependencies are resolved using the
269
+ * current status of the internal dynamic import map.
270
+ *
271
+ * @param url Module URL.
272
+ * @param fetchOpts Fetch options.
273
+ * @return A promise with the imported module.
274
+ */
275
+ export async function topLevelLoad(url, fetchOpts) {
276
+ const load = await preloadModule(url, fetchOpts);
277
+ return importPreloadedModule(load);
278
+ }
279
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["lexer","fetchModule","resolve","initPromise","init","initialImportMapElement","window","document","querySelector","initialImportMap","JSON","parse","text","imports","scopes","skip","id","Object","keys","includes","fetchCache","registry","forEach","blobUrl","loadAll","load","seen","url","linkPromise","Promise","all","deps","map","dep","urlJsString","replace","createBlob","source","type","URL","createObjectURL","Blob","resolveDeps","exports","analysis","resolvedSource","length","lastIndex","depIndex","dynamicImportEndStack","pushStringTo","originalIndex","dynamicImportEnd","pop","slice","responseUrl","s","start","ss","statementStart","se","statementEnd","d","dynamicImportIndex","depLoad","cycleShell","shellUrl","e","i","q","join","_","undefined","Error","push","filter","ln","hasSourceURL","sourceMapURLRegEx","match","isMapping","toString","getOrCreateLoad","fetchOpts","parent","fetchPromise","console","error","then","childFetchOpts","n","integrity","l","dynamicImport","u","preloadModule","importPreloadedModule","module","u$_","topLevelLoad"],"sources":["@wordpress/interactivity-router/src/assets/dynamic-importmap/loader.ts"],"sourcesContent":["/**\n * This code is derived from the following projects:\n *\n * 1. dynamic-importmap (https://github.com/keller-mark/dynamic-importmap)\n * 2. es-module-shims (https://github.com/guybedford/es-module-shims)\n *\n * The original implementation was created by Guy Bedford in es-module-shims,\n * then adapted by Mark Keller in dynamic-importmap, and further modified\n * for use in this project.\n *\n * Both projects are licensed under the MIT license.\n *\n * MIT License: https://opensource.org/licenses/MIT\n */\n\n/**\n * External dependencies\n */\nimport * as lexer from 'es-module-lexer';\n\n/**\n * Internal dependencies\n */\nimport { fetchModule } from './fetch';\nimport { resolve } from './resolver';\n\nexport interface ModuleLoad {\n\turl?: string; // original URL\n\tresponseUrl?: string; // response url\n\tfetchPromise?: Promise< ModuleLoad >; // fetch promise\n\tsource?: string; // source code\n\tlinkPromise?: Promise< void >; // link-promise (dependency fetch)\n\tanalysis?: ReturnType< typeof lexer.parse >; // analysis ([ imports, exports, ... ])\n\tdeps?: ModuleLoad[]; // deps\n\tblobUrl?: string; // blobUrl\n\tshellUrl?: string; // shellUrl for circular references\n}\n\nexport const initPromise = lexer.init;\n\n/**\n * Script element containing the initial page's import map.\n */\nconst initialImportMapElement =\n\twindow.document.querySelector< HTMLScriptElement >(\n\t\t'script#wp-importmap[type=importmap]'\n\t);\n\n/**\n * Data from the initial page's import map.\n *\n * Pages containing any of the imports present on the original page\n * in their import maps should ignore them, as those imports would\n * be handled natively.\n */\nexport const initialImportMap = initialImportMapElement\n\t? JSON.parse( initialImportMapElement.text )\n\t: { imports: {}, scopes: {} };\n\nconst skip = ( id ) => Object.keys( initialImportMap.imports ).includes( id );\n\nconst fetchCache: Record< string, Promise< ModuleLoad > > = {};\nexport const registry = {};\n\n// Init registry with importamp content.\nObject.keys( initialImportMap.imports ).forEach( ( id ) => {\n\tregistry[ id ] = {\n\t\tblobUrl: id,\n\t};\n} );\n\nasync function loadAll( load: ModuleLoad, seen: Record< string, any > ) {\n\tif ( load.blobUrl || seen[ load.url ] ) {\n\t\treturn;\n\t}\n\tseen[ load.url ] = 1;\n\tawait load.linkPromise;\n\tawait Promise.all( load.deps.map( ( dep ) => loadAll( dep, seen ) ) );\n}\n\nfunction urlJsString( url: string ) {\n\treturn `'${ url.replace( /'/g, \"\\\\'\" ) }'`;\n}\n\nconst createBlob = ( source: string, type = 'text/javascript' ) =>\n\tURL.createObjectURL( new Blob( [ source ], { type } ) );\n\nfunction resolveDeps( load: ModuleLoad, seen: Record< string, any > ) {\n\tif ( load.blobUrl || ! seen[ load.url ] ) {\n\t\treturn;\n\t}\n\tseen[ load.url ] = 0;\n\n\tfor ( const dep of load.deps ) {\n\t\tresolveDeps( dep, seen );\n\t}\n\n\tconst [ imports, exports ] = load.analysis;\n\tconst source = load.source;\n\n\tlet resolvedSource = '';\n\n\tif ( ! imports.length ) {\n\t\tresolvedSource += source;\n\t} else {\n\t\tlet lastIndex = 0;\n\t\tlet depIndex = 0;\n\t\tconst dynamicImportEndStack = [];\n\n\t\tfunction pushStringTo( originalIndex: number ) {\n\t\t\twhile (\n\t\t\t\tdynamicImportEndStack.length &&\n\t\t\t\tdynamicImportEndStack[ dynamicImportEndStack.length - 1 ] <\n\t\t\t\t\toriginalIndex\n\t\t\t) {\n\t\t\t\tconst dynamicImportEnd = dynamicImportEndStack.pop();\n\t\t\t\tresolvedSource += `${ source.slice(\n\t\t\t\t\tlastIndex,\n\t\t\t\t\tdynamicImportEnd\n\t\t\t\t) }, ${ urlJsString( load.responseUrl ) }`;\n\t\t\t\tlastIndex = dynamicImportEnd;\n\t\t\t}\n\t\t\tresolvedSource += source.slice( lastIndex, originalIndex );\n\t\t\tlastIndex = originalIndex;\n\t\t}\n\n\t\tfor ( const {\n\t\t\ts: start,\n\t\t\tss: statementStart,\n\t\t\tse: statementEnd,\n\t\t\td: dynamicImportIndex,\n\t\t} of imports ) {\n\t\t\t// static import\n\t\t\tif ( dynamicImportIndex === -1 ) {\n\t\t\t\tconst depLoad = load.deps[ depIndex++ ];\n\t\t\t\tlet blobUrl = depLoad.blobUrl;\n\t\t\t\tconst cycleShell = ! blobUrl;\n\t\t\t\tif ( cycleShell ) {\n\t\t\t\t\t// Circular shell creation\n\t\t\t\t\tif ( ! ( blobUrl = depLoad.shellUrl ) ) {\n\t\t\t\t\t\tblobUrl = depLoad.shellUrl = createBlob(\n\t\t\t\t\t\t\t`export function u$_(m){${ depLoad.analysis[ 1 ]\n\t\t\t\t\t\t\t\t.map( ( { s, e }, i ) => {\n\t\t\t\t\t\t\t\t\tconst q =\n\t\t\t\t\t\t\t\t\t\tdepLoad.source[ s ] === '\"' ||\n\t\t\t\t\t\t\t\t\t\tdepLoad.source[ s ] === \"'\";\n\t\t\t\t\t\t\t\t\treturn `e$_${ i }=m${\n\t\t\t\t\t\t\t\t\t\tq ? `[` : '.'\n\t\t\t\t\t\t\t\t\t}${ depLoad.source.slice( s, e ) }${\n\t\t\t\t\t\t\t\t\t\tq ? `]` : ''\n\t\t\t\t\t\t\t\t\t}`;\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t.join( ',' ) }}${\n\t\t\t\t\t\t\t\tdepLoad.analysis[ 1 ].length\n\t\t\t\t\t\t\t\t\t? `let ${ depLoad.analysis[ 1 ]\n\t\t\t\t\t\t\t\t\t\t\t.map( ( _, i ) => `e$_${ i }` )\n\t\t\t\t\t\t\t\t\t\t\t.join( ',' ) };`\n\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t}export {${ depLoad.analysis[ 1 ]\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t( { s, e }, i ) =>\n\t\t\t\t\t\t\t\t\t\t`e$_${ i } as ${ depLoad.source.slice(\n\t\t\t\t\t\t\t\t\t\t\ts,\n\t\t\t\t\t\t\t\t\t\t\te\n\t\t\t\t\t\t\t\t\t\t) }`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( ',' ) }}\\n//# sourceURL=${\n\t\t\t\t\t\t\t\tdepLoad.responseUrl\n\t\t\t\t\t\t\t}?cycle`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpushStringTo( start - 1 );\n\t\t\t\tresolvedSource += `/*${ source.slice(\n\t\t\t\t\tstart - 1,\n\t\t\t\t\tstatementEnd\n\t\t\t\t) }*/${ urlJsString( blobUrl ) }`;\n\n\t\t\t\t// circular shell execution\n\t\t\t\tif ( ! cycleShell && depLoad.shellUrl ) {\n\t\t\t\t\tresolvedSource += `;import*as m$_${ depIndex } from'${ depLoad.blobUrl }';import{u$_ as u$_${ depIndex }}from'${ depLoad.shellUrl }';u$_${ depIndex }(m$_${ depIndex })`;\n\t\t\t\t\tdepLoad.shellUrl = undefined;\n\t\t\t\t}\n\t\t\t\tlastIndex = statementEnd;\n\t\t\t}\n\t\t\t// import.meta\n\t\t\telse if ( dynamicImportIndex === -2 ) {\n\t\t\t\tthrow Error( 'The import.meta property is not supported.' );\n\t\t\t}\n\t\t\t// dynamic import\n\t\t\telse {\n\t\t\t\tpushStringTo( statementStart );\n\t\t\t\tresolvedSource += `wpInteractivityRouterImport(`;\n\t\t\t\tdynamicImportEndStack.push( statementEnd - 1 );\n\t\t\t\tlastIndex = start;\n\t\t\t}\n\t\t}\n\n\t\t// progressive cycle binding updates\n\t\tif ( load.shellUrl ) {\n\t\t\tresolvedSource += `\\n;import{u$_}from'${\n\t\t\t\tload.shellUrl\n\t\t\t}';try{u$_({${ exports\n\t\t\t\t.filter( ( e ) => e.ln )\n\t\t\t\t.map( ( { s, e, ln } ) => `${ source.slice( s, e ) }:${ ln }` )\n\t\t\t\t.join( ',' ) }})}catch(_){};\\n`;\n\t\t}\n\n\t\tpushStringTo( source.length );\n\t}\n\n\t// ensure we have a proper sourceURL\n\tlet hasSourceURL = false;\n\tresolvedSource = resolvedSource.replace(\n\t\tsourceMapURLRegEx,\n\t\t( match, isMapping, url ) => {\n\t\t\thasSourceURL = ! isMapping;\n\t\t\treturn match.replace( url, () =>\n\t\t\t\tnew URL( url, load.responseUrl ).toString()\n\t\t\t);\n\t\t}\n\t);\n\tif ( ! hasSourceURL ) {\n\t\tresolvedSource += '\\n//# sourceURL=' + load.responseUrl;\n\t}\n\n\tload.blobUrl = createBlob( resolvedSource );\n\tload.source = undefined; // free memory\n}\n\nconst sourceMapURLRegEx =\n\t/\\n\\/\\/# source(Mapping)?URL=([^\\n]+)\\s*((;|\\/\\/[^#][^\\n]*)\\s*)*$/;\n\nfunction getOrCreateLoad(\n\turl: string,\n\tfetchOpts: RequestInit,\n\tparent: string\n): ModuleLoad {\n\tlet load: ModuleLoad = registry[ url ];\n\tif ( load ) {\n\t\treturn load;\n\t}\n\n\tload = { url };\n\n\tif ( registry[ url ] ) {\n\t\t// If there's a naming conflict, keep incrementing until unique\n\t\tlet i = 0;\n\t\twhile ( registry[ load.url + ++i ] ) {\n\t\t\t/* no-op */\n\t\t}\n\t\tload.url += i;\n\t}\n\tregistry[ load.url ] = load;\n\n\tload.fetchPromise = ( async () => {\n\t\tlet source;\n\t\t( { responseUrl: load.responseUrl, source: source } =\n\t\t\tawait ( fetchCache[ url ] ||\n\t\t\t\tfetchModule( url, fetchOpts, parent ) ) );\n\t\ttry {\n\t\t\tload.analysis = lexer.parse( source, load.url );\n\t\t} catch ( e ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( e );\n\t\t\tload.analysis = [ [], [], false, false ];\n\t\t}\n\t\tload.source = source;\n\t\treturn load;\n\t} )();\n\n\tload.linkPromise = load.fetchPromise.then( async () => {\n\t\tlet childFetchOpts = fetchOpts;\n\t\tload.deps = (\n\t\t\tawait Promise.all(\n\t\t\t\tload.analysis[ 0 ].map( async ( { n, d } ) => {\n\t\t\t\t\tif ( d !== -1 || ! n ) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tconst responseUrl = resolve(\n\t\t\t\t\t\tn,\n\t\t\t\t\t\tload.responseUrl || load.url\n\t\t\t\t\t);\n\t\t\t\t\tif ( skip && skip( responseUrl ) ) {\n\t\t\t\t\t\treturn { blobUrl: responseUrl } as ModuleLoad;\n\t\t\t\t\t}\n\t\t\t\t\t// remove integrity for child fetches\n\t\t\t\t\tif ( childFetchOpts.integrity ) {\n\t\t\t\t\t\tchildFetchOpts = {\n\t\t\t\t\t\t\t...childFetchOpts,\n\t\t\t\t\t\t\tintegrity: undefined,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn getOrCreateLoad(\n\t\t\t\t\t\tresponseUrl,\n\t\t\t\t\t\tchildFetchOpts,\n\t\t\t\t\t\tload.responseUrl\n\t\t\t\t\t).fetchPromise;\n\t\t\t\t} )\n\t\t\t)\n\t\t).filter( ( l ) => l );\n\t} );\n\n\treturn load;\n}\n\nconst dynamicImport = ( u: string ) => import( /* webpackIgnore: true */ u );\n\n/**\n * Resolves the passed module URL and fetches the corresponding module\n * and their dependencies, returning a `ModuleLoad` object once all\n * of them have been fetched.\n *\n * @param url Module URL.\n * @param fetchOpts Fetch options.\n * @return A promise with a `ModuleLoad` instance.\n */\nexport async function preloadModule(\n\turl: string,\n\tfetchOpts?: RequestInit\n): Promise< ModuleLoad > {\n\tawait initPromise;\n\tconst load = getOrCreateLoad( url, fetchOpts, null );\n\tconst seen = {};\n\tawait loadAll( load, seen );\n\tresolveDeps( load, seen );\n\t// microtask scheduling – can help ensure Blob is fully ready\n\tawait Promise.resolve();\n\treturn load;\n}\n\n/**\n * Imports the module represented by the passed `ModuleLoad` instance.\n *\n * @param load The `ModuleLoad` instance representing the module.\n * @return A promise with the imported module.\n */\nexport async function importPreloadedModule< Module = unknown >(\n\tload: ModuleLoad\n): Promise< Module > {\n\tconst module = await dynamicImport( load.blobUrl );\n\t// if the preloaded module ended up with a shell (circular refs), finalize it\n\tif ( load.shellUrl ) {\n\t\t( await dynamicImport( load.shellUrl ) ).u$_( module );\n\t}\n\treturn module;\n}\n\n/**\n * Imports the module represented by the passed module URL.\n *\n * The module URL and all its dependencies are resolved using the\n * current status of the internal dynamic import map.\n *\n * @param url Module URL.\n * @param fetchOpts Fetch options.\n * @return A promise with the imported module.\n */\nexport async function topLevelLoad< Module = unknown >(\n\turl: string,\n\tfetchOpts?: RequestInit\n): Promise< Module > {\n\tconst load = await preloadModule( url, fetchOpts );\n\treturn importPreloadedModule< Module >( load );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,213 @@
1
+ /* wp:polyfill */
2
+ /**
3
+ * This code is derived from the following projects:
4
+ *
5
+ * 1. dynamic-importmap (https://github.com/keller-mark/dynamic-importmap)
6
+ * 2. es-module-shims (https://github.com/guybedford/es-module-shims)
7
+ *
8
+ * The original implementation was created by Guy Bedford in es-module-shims,
9
+ * then adapted by Mark Keller in dynamic-importmap, and further modified
10
+ * for use in this project.
11
+ *
12
+ * Both projects are licensed under the MIT license.
13
+ *
14
+ * MIT License: https://opensource.org/licenses/MIT
15
+ */
16
+
17
+ const backslashRegEx = /\\/g;
18
+ function isURL(url) {
19
+ if (url.indexOf(':') === -1) {
20
+ return false;
21
+ }
22
+ try {
23
+ new URL(url);
24
+ return true;
25
+ } catch (_) {
26
+ return false;
27
+ }
28
+ }
29
+ function resolveIfNotPlainOrUrl(relUrl, parentUrl) {
30
+ const hIdx = parentUrl.indexOf('#'),
31
+ qIdx = parentUrl.indexOf('?');
32
+ if (hIdx + qIdx > -2) {
33
+ parentUrl = parentUrl.slice(0,
34
+ // eslint-disable-next-line no-nested-ternary
35
+ hIdx === -1 ? qIdx : qIdx === -1 || qIdx > hIdx ? hIdx : qIdx);
36
+ }
37
+ if (relUrl.indexOf('\\') !== -1) {
38
+ relUrl = relUrl.replace(backslashRegEx, '/');
39
+ }
40
+ // protocol-relative
41
+ if (relUrl[0] === '/' && relUrl[1] === '/') {
42
+ return parentUrl.slice(0, parentUrl.indexOf(':') + 1) + relUrl;
43
+ }
44
+ // relative-url
45
+ else if (relUrl[0] === '.' && (relUrl[1] === '/' || relUrl[1] === '.' && (relUrl[2] === '/' || relUrl.length === 2 && (relUrl += '/')) || relUrl.length === 1 && (relUrl += '/')) || relUrl[0] === '/') {
46
+ const parentProtocol = parentUrl.slice(0, parentUrl.indexOf(':') + 1);
47
+ // Disabled, but these cases will give inconsistent results for deep backtracking
48
+ //if (parentUrl[parentProtocol.length] !== '/')
49
+ // throw new Error('Cannot resolve');
50
+ // read pathname from parent URL
51
+ // pathname taken to be part after leading "/"
52
+ let pathname;
53
+ if (parentUrl[parentProtocol.length + 1] === '/') {
54
+ // resolving to a :// so we need to read out the auth and host
55
+ if (parentProtocol !== 'file:') {
56
+ pathname = parentUrl.slice(parentProtocol.length + 2);
57
+ pathname = pathname.slice(pathname.indexOf('/') + 1);
58
+ } else {
59
+ pathname = parentUrl.slice(8);
60
+ }
61
+ } else {
62
+ // resolving to :/ so pathname is the /... part
63
+ pathname = parentUrl.slice(parentProtocol.length + (parentUrl[parentProtocol.length] === '/'));
64
+ }
65
+ if (relUrl[0] === '/') {
66
+ return parentUrl.slice(0, parentUrl.length - pathname.length - 1) + relUrl;
67
+ }
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
+ const segmented = pathname.slice(0, pathname.lastIndexOf('/') + 1) + relUrl;
73
+ const output = [];
74
+ let segmentIndex = -1;
75
+ for (let i = 0; i < segmented.length; i++) {
76
+ // busy reading a segment - only terminate on '/'
77
+ if (segmentIndex !== -1) {
78
+ if (segmented[i] === '/') {
79
+ output.push(segmented.slice(segmentIndex, i + 1));
80
+ segmentIndex = -1;
81
+ }
82
+ continue;
83
+ }
84
+ // new segment - check if it is relative
85
+ else if (segmented[i] === '.') {
86
+ // ../ segment
87
+ if (segmented[i + 1] === '.' && (segmented[i + 2] === '/' || i + 2 === segmented.length)) {
88
+ output.pop();
89
+ i += 2;
90
+ continue;
91
+ }
92
+ // ./ segment
93
+ else if (segmented[i + 1] === '/' || i + 1 === segmented.length) {
94
+ i += 1;
95
+ continue;
96
+ }
97
+ }
98
+ // it is the start of a new segment
99
+ while (segmented[i] === '/') {
100
+ i++;
101
+ }
102
+ segmentIndex = i;
103
+ }
104
+ // finish reading out the last segment
105
+ if (segmentIndex !== -1) {
106
+ output.push(segmented.slice(segmentIndex));
107
+ }
108
+ return parentUrl.slice(0, parentUrl.length - pathname.length) + output.join('');
109
+ }
110
+ }
111
+ function resolveUrl(relUrl, parentUrl) {
112
+ return resolveIfNotPlainOrUrl(relUrl, parentUrl) || (isURL(relUrl) ? relUrl : resolveIfNotPlainOrUrl('./' + relUrl, parentUrl));
113
+ }
114
+ function getMatch(path, matchObj) {
115
+ if (matchObj[path]) {
116
+ return path;
117
+ }
118
+ let sepIndex = path.length;
119
+ do {
120
+ const segment = path.slice(0, sepIndex + 1);
121
+ if (segment in matchObj) {
122
+ return segment;
123
+ }
124
+ } while ((sepIndex = path.lastIndexOf('/', sepIndex - 1)) !== -1);
125
+ }
126
+ function applyPackages(id, packages) {
127
+ const pkgName = getMatch(id, packages);
128
+ if (pkgName) {
129
+ const pkg = packages[pkgName];
130
+ if (pkg === null) {
131
+ return;
132
+ }
133
+ return pkg + id.slice(pkgName.length);
134
+ }
135
+ }
136
+ function resolveImportMap(importMap, resolvedOrPlain, parentUrl) {
137
+ let scopeUrl = parentUrl && getMatch(parentUrl, importMap.scopes);
138
+ while (scopeUrl) {
139
+ const packageResolution = applyPackages(resolvedOrPlain, importMap.scopes[scopeUrl]);
140
+ if (packageResolution) {
141
+ return packageResolution;
142
+ }
143
+ scopeUrl = getMatch(scopeUrl.slice(0, scopeUrl.lastIndexOf('/')), importMap.scopes);
144
+ }
145
+ return applyPackages(resolvedOrPlain, importMap.imports) || resolvedOrPlain.indexOf(':') !== -1 && resolvedOrPlain;
146
+ }
147
+ function resolveAndComposePackages(packages, outPackages, baseUrl, parentMap) {
148
+ for (const p in packages) {
149
+ const resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl) || p;
150
+ const target = packages[p];
151
+ if (typeof target !== 'string') {
152
+ continue;
153
+ }
154
+ const mapped = resolveImportMap(parentMap, resolveIfNotPlainOrUrl(target, baseUrl) || target, baseUrl);
155
+ if (mapped) {
156
+ outPackages[resolvedLhs] = mapped;
157
+ continue;
158
+ }
159
+ // console.warn(
160
+ // `Mapping "${ p }" -> "${ packages[ p ] }" does not resolve`
161
+ // );
162
+ }
163
+ }
164
+ function resolveAndComposeImportMap(json, baseUrl, parentMap) {
165
+ const outMap = {
166
+ imports: Object.assign({}, parentMap.imports),
167
+ scopes: Object.assign({}, parentMap.scopes)
168
+ };
169
+ if (json.imports) {
170
+ resolveAndComposePackages(json.imports, outMap.imports, baseUrl, parentMap);
171
+ }
172
+ if (json.scopes) {
173
+ for (const s in json.scopes) {
174
+ const resolvedScope = resolveUrl(s, baseUrl);
175
+ resolveAndComposePackages(json.scopes[s], outMap.scopes[resolvedScope] || (outMap.scopes[resolvedScope] = {}), baseUrl, parentMap);
176
+ }
177
+ }
178
+ return outMap;
179
+ }
180
+ let importMap = {
181
+ imports: {},
182
+ scopes: {}
183
+ };
184
+
185
+ // TODO: check if this baseURI should change per document, and so
186
+ // it need to be passed as a parameter to methods like `resolve`.
187
+ const baseUrl = document.baseURI;
188
+ const pageBaseUrl = baseUrl;
189
+
190
+ /**
191
+ * Extends the internal dynamic import map with the passed one.
192
+ *
193
+ * @param importMapIn Import map.
194
+ * @param importMapIn.imports Imports declaration.
195
+ * @param importMapIn.scopes Scopes declaration.
196
+ */
197
+ export function addImportMap(importMapIn) {
198
+ importMap = resolveAndComposeImportMap(importMapIn, pageBaseUrl, importMap);
199
+ }
200
+
201
+ /**
202
+ * Resolves the URL of the passed module ID against the current internal
203
+ * dynamic import map.
204
+ *
205
+ * @param id Module ID.
206
+ * @param parentUrl Parent URL, in case the module ID is relative.
207
+ * @return Resolved module URL.
208
+ */
209
+ export function resolve(id, parentUrl) {
210
+ const urlResolved = resolveIfNotPlainOrUrl(id, parentUrl);
211
+ return resolveImportMap(importMap, urlResolved || id, parentUrl) || id;
212
+ }
213
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["backslashRegEx","isURL","url","indexOf","URL","_","resolveIfNotPlainOrUrl","relUrl","parentUrl","hIdx","qIdx","slice","replace","length","parentProtocol","pathname","segmented","lastIndexOf","output","segmentIndex","i","push","pop","join","resolveUrl","getMatch","path","matchObj","sepIndex","segment","applyPackages","id","packages","pkgName","pkg","resolveImportMap","importMap","resolvedOrPlain","scopeUrl","scopes","packageResolution","imports","resolveAndComposePackages","outPackages","baseUrl","parentMap","p","resolvedLhs","target","mapped","resolveAndComposeImportMap","json","outMap","Object","assign","s","resolvedScope","document","baseURI","pageBaseUrl","addImportMap","importMapIn","resolve","urlResolved"],"sources":["@wordpress/interactivity-router/src/assets/dynamic-importmap/resolver.ts"],"sourcesContent":["/**\n * This code is derived from the following projects:\n *\n * 1. dynamic-importmap (https://github.com/keller-mark/dynamic-importmap)\n * 2. es-module-shims (https://github.com/guybedford/es-module-shims)\n *\n * The original implementation was created by Guy Bedford in es-module-shims,\n * then adapted by Mark Keller in dynamic-importmap, and further modified\n * for use in this project.\n *\n * Both projects are licensed under the MIT license.\n *\n * MIT License: https://opensource.org/licenses/MIT\n */\n\nconst backslashRegEx = /\\\\/g;\n\nfunction isURL( url: string ) {\n\tif ( url.indexOf( ':' ) === -1 ) {\n\t\treturn false;\n\t}\n\ttry {\n\t\tnew URL( url );\n\t\treturn true;\n\t} catch ( _ ) {\n\t\treturn false;\n\t}\n}\n\nfunction resolveIfNotPlainOrUrl( relUrl, parentUrl ) {\n\tconst hIdx = parentUrl.indexOf( '#' ),\n\t\tqIdx = parentUrl.indexOf( '?' );\n\tif ( hIdx + qIdx > -2 ) {\n\t\tparentUrl = parentUrl.slice(\n\t\t\t0,\n\t\t\t// eslint-disable-next-line no-nested-ternary\n\t\t\thIdx === -1 ? qIdx : qIdx === -1 || qIdx > hIdx ? hIdx : qIdx\n\t\t);\n\t}\n\tif ( relUrl.indexOf( '\\\\' ) !== -1 ) {\n\t\trelUrl = relUrl.replace( backslashRegEx, '/' );\n\t}\n\t// protocol-relative\n\tif ( relUrl[ 0 ] === '/' && relUrl[ 1 ] === '/' ) {\n\t\treturn parentUrl.slice( 0, parentUrl.indexOf( ':' ) + 1 ) + relUrl;\n\t}\n\t// relative-url\n\telse if (\n\t\t( relUrl[ 0 ] === '.' &&\n\t\t\t( relUrl[ 1 ] === '/' ||\n\t\t\t\t( relUrl[ 1 ] === '.' &&\n\t\t\t\t\t( relUrl[ 2 ] === '/' ||\n\t\t\t\t\t\t( relUrl.length === 2 && ( relUrl += '/' ) ) ) ) ||\n\t\t\t\t( relUrl.length === 1 && ( relUrl += '/' ) ) ) ) ||\n\t\trelUrl[ 0 ] === '/'\n\t) {\n\t\tconst parentProtocol = parentUrl.slice(\n\t\t\t0,\n\t\t\tparentUrl.indexOf( ':' ) + 1\n\t\t);\n\t\t// Disabled, but these cases will give inconsistent results for deep backtracking\n\t\t//if (parentUrl[parentProtocol.length] !== '/')\n\t\t// throw new Error('Cannot resolve');\n\t\t// read pathname from parent URL\n\t\t// pathname taken to be part after leading \"/\"\n\t\tlet pathname;\n\t\tif ( parentUrl[ parentProtocol.length + 1 ] === '/' ) {\n\t\t\t// resolving to a :// so we need to read out the auth and host\n\t\t\tif ( parentProtocol !== 'file:' ) {\n\t\t\t\tpathname = parentUrl.slice( parentProtocol.length + 2 );\n\t\t\t\tpathname = pathname.slice( pathname.indexOf( '/' ) + 1 );\n\t\t\t} else {\n\t\t\t\tpathname = parentUrl.slice( 8 );\n\t\t\t}\n\t\t} else {\n\t\t\t// resolving to :/ so pathname is the /... part\n\t\t\tpathname = parentUrl.slice(\n\t\t\t\tparentProtocol.length +\n\t\t\t\t\t( parentUrl[ parentProtocol.length ] === '/' )\n\t\t\t);\n\t\t}\n\n\t\tif ( relUrl[ 0 ] === '/' ) {\n\t\t\treturn (\n\t\t\t\tparentUrl.slice( 0, parentUrl.length - pathname.length - 1 ) +\n\t\t\t\trelUrl\n\t\t\t);\n\t\t}\n\n\t\t// join together and split for removal of .. and . segments\n\t\t// looping the string instead of anything fancy for perf reasons\n\t\t// '../../../../../z' resolved to 'x/y' is just 'z'\n\t\tconst segmented =\n\t\t\tpathname.slice( 0, pathname.lastIndexOf( '/' ) + 1 ) + relUrl;\n\n\t\tconst output = [];\n\t\tlet segmentIndex = -1;\n\t\tfor ( let i = 0; i < segmented.length; i++ ) {\n\t\t\t// busy reading a segment - only terminate on '/'\n\t\t\tif ( segmentIndex !== -1 ) {\n\t\t\t\tif ( segmented[ i ] === '/' ) {\n\t\t\t\t\toutput.push( segmented.slice( segmentIndex, i + 1 ) );\n\t\t\t\t\tsegmentIndex = -1;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// new segment - check if it is relative\n\t\t\telse if ( segmented[ i ] === '.' ) {\n\t\t\t\t// ../ segment\n\t\t\t\tif (\n\t\t\t\t\tsegmented[ i + 1 ] === '.' &&\n\t\t\t\t\t( segmented[ i + 2 ] === '/' || i + 2 === segmented.length )\n\t\t\t\t) {\n\t\t\t\t\toutput.pop();\n\t\t\t\t\ti += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// ./ segment\n\t\t\t\telse if (\n\t\t\t\t\tsegmented[ i + 1 ] === '/' ||\n\t\t\t\t\ti + 1 === segmented.length\n\t\t\t\t) {\n\t\t\t\t\ti += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// it is the start of a new segment\n\t\t\twhile ( segmented[ i ] === '/' ) {\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tsegmentIndex = i;\n\t\t}\n\t\t// finish reading out the last segment\n\t\tif ( segmentIndex !== -1 ) {\n\t\t\toutput.push( segmented.slice( segmentIndex ) );\n\t\t}\n\t\treturn (\n\t\t\tparentUrl.slice( 0, parentUrl.length - pathname.length ) +\n\t\t\toutput.join( '' )\n\t\t);\n\t}\n}\n\nfunction resolveUrl( relUrl, parentUrl ) {\n\treturn (\n\t\tresolveIfNotPlainOrUrl( relUrl, parentUrl ) ||\n\t\t( isURL( relUrl )\n\t\t\t? relUrl\n\t\t\t: resolveIfNotPlainOrUrl( './' + relUrl, parentUrl ) )\n\t);\n}\n\nfunction getMatch( path, matchObj ) {\n\tif ( matchObj[ path ] ) {\n\t\treturn path;\n\t}\n\tlet sepIndex = path.length;\n\tdo {\n\t\tconst segment = path.slice( 0, sepIndex + 1 );\n\t\tif ( segment in matchObj ) {\n\t\t\treturn segment;\n\t\t}\n\t} while ( ( sepIndex = path.lastIndexOf( '/', sepIndex - 1 ) ) !== -1 );\n}\n\nfunction applyPackages( id, packages ) {\n\tconst pkgName = getMatch( id, packages );\n\tif ( pkgName ) {\n\t\tconst pkg = packages[ pkgName ];\n\t\tif ( pkg === null ) {\n\t\t\treturn;\n\t\t}\n\t\treturn pkg + id.slice( pkgName.length );\n\t}\n}\n\nfunction resolveImportMap( importMap, resolvedOrPlain, parentUrl ) {\n\tlet scopeUrl = parentUrl && getMatch( parentUrl, importMap.scopes );\n\twhile ( scopeUrl ) {\n\t\tconst packageResolution = applyPackages(\n\t\t\tresolvedOrPlain,\n\t\t\timportMap.scopes[ scopeUrl ]\n\t\t);\n\t\tif ( packageResolution ) {\n\t\t\treturn packageResolution;\n\t\t}\n\t\tscopeUrl = getMatch(\n\t\t\tscopeUrl.slice( 0, scopeUrl.lastIndexOf( '/' ) ),\n\t\t\timportMap.scopes\n\t\t);\n\t}\n\treturn (\n\t\tapplyPackages( resolvedOrPlain, importMap.imports ) ||\n\t\t( resolvedOrPlain.indexOf( ':' ) !== -1 && resolvedOrPlain )\n\t);\n}\n\nfunction resolveAndComposePackages(\n\tpackages,\n\toutPackages,\n\tbaseUrl,\n\tparentMap\n) {\n\tfor ( const p in packages ) {\n\t\tconst resolvedLhs = resolveIfNotPlainOrUrl( p, baseUrl ) || p;\n\t\tconst target = packages[ p ];\n\t\tif ( typeof target !== 'string' ) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst mapped = resolveImportMap(\n\t\t\tparentMap,\n\t\t\tresolveIfNotPlainOrUrl( target, baseUrl ) || target,\n\t\t\tbaseUrl\n\t\t);\n\t\tif ( mapped ) {\n\t\t\toutPackages[ resolvedLhs ] = mapped;\n\t\t\tcontinue;\n\t\t}\n\t\t// console.warn(\n\t\t// \t`Mapping \"${ p }\" -> \"${ packages[ p ] }\" does not resolve`\n\t\t// );\n\t}\n}\n\nfunction resolveAndComposeImportMap( json, baseUrl, parentMap ) {\n\tconst outMap = {\n\t\timports: Object.assign( {}, parentMap.imports ),\n\t\tscopes: Object.assign( {}, parentMap.scopes ),\n\t};\n\n\tif ( json.imports ) {\n\t\tresolveAndComposePackages(\n\t\t\tjson.imports,\n\t\t\toutMap.imports,\n\t\t\tbaseUrl,\n\t\t\tparentMap\n\t\t);\n\t}\n\n\tif ( json.scopes ) {\n\t\tfor ( const s in json.scopes ) {\n\t\t\tconst resolvedScope = resolveUrl( s, baseUrl );\n\t\t\tresolveAndComposePackages(\n\t\t\t\tjson.scopes[ s ],\n\t\t\t\toutMap.scopes[ resolvedScope ] ||\n\t\t\t\t\t( outMap.scopes[ resolvedScope ] = {} ),\n\t\t\t\tbaseUrl,\n\t\t\t\tparentMap\n\t\t\t);\n\t\t}\n\t}\n\n\treturn outMap;\n}\n\nlet importMap = { imports: {}, scopes: {} };\n\n// TODO: check if this baseURI should change per document, and so\n// it need to be passed as a parameter to methods like `resolve`.\nconst baseUrl = document.baseURI;\nconst pageBaseUrl = baseUrl;\n\n/**\n * Extends the internal dynamic import map with the passed one.\n *\n * @param importMapIn Import map.\n * @param importMapIn.imports Imports declaration.\n * @param importMapIn.scopes Scopes declaration.\n */\nexport function addImportMap( importMapIn: {\n\timports?: Record< string, string >;\n\tscopes?: Record< string, any >;\n} ) {\n\timportMap = resolveAndComposeImportMap(\n\t\timportMapIn,\n\t\tpageBaseUrl,\n\t\timportMap\n\t);\n}\n\n/**\n * Resolves the URL of the passed module ID against the current internal\n * dynamic import map.\n *\n * @param id Module ID.\n * @param parentUrl Parent URL, in case the module ID is relative.\n * @return Resolved module URL.\n */\nexport function resolve( id: string, parentUrl: string ): string {\n\tconst urlResolved = resolveIfNotPlainOrUrl( id, parentUrl );\n\treturn resolveImportMap( importMap, urlResolved || id, parentUrl ) || id;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { initialImportMap, importPreloadedModule, preloadWithMap } from './dynamic-importmap';
5
+
6
+ /**
7
+ * IDs of modules that should be resolved by the browser rather than
8
+ * processed internally.
9
+ */
10
+ const resolvedScriptModules = new Set();
11
+
12
+ /**
13
+ * Marks the specified module as natively resolved.
14
+ * @param url Script module URL.
15
+ */
16
+ export const markScriptModuleAsResolved = url => {
17
+ resolvedScriptModules.add(url);
18
+ };
19
+
20
+ /**
21
+ * Resolves and fetches modules present in the passed document, using the
22
+ * document's import map to resolve them.
23
+ *
24
+ * @param doc Document containing the modules to preload.
25
+ * @return Array of promises that resolve to a `ScriptModuleLoad` instance.
26
+ */
27
+ export const preloadScriptModules = doc => {
28
+ // Extract the import map from the document.
29
+ const importMapElement = doc.querySelector('script#wp-importmap[type=importmap]');
30
+ const importMap = importMapElement ? JSON.parse(importMapElement.text) : {
31
+ imports: {},
32
+ scopes: {}
33
+ };
34
+
35
+ // Remove imports also in the initial page's import map.
36
+ // Those should be handled natively.
37
+ for (const key in initialImportMap.imports) {
38
+ delete importMap.imports[key];
39
+ }
40
+
41
+ // Get the URL of all modules contained in the document.
42
+ const moduleUrls = [...doc.querySelectorAll('script[type=module][src]')].map(s => s.src);
43
+
44
+ // Resolve and fetch those not resolved natively.
45
+ return moduleUrls.filter(url => !resolvedScriptModules.has(url)).map(url => preloadWithMap(url, importMap));
46
+ };
47
+
48
+ /**
49
+ * Imports modules respresented by the passed `ScriptModuleLoad` instances.
50
+ *
51
+ * @param modules Array of `MoudleLoad` instances.
52
+ * @return Promise that resolves once all modules are imported.
53
+ */
54
+ export const importScriptModules = modules => Promise.all(modules.map(m => importPreloadedModule(m)));
55
+ //# sourceMappingURL=script-modules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["initialImportMap","importPreloadedModule","preloadWithMap","resolvedScriptModules","Set","markScriptModuleAsResolved","url","add","preloadScriptModules","doc","importMapElement","querySelector","importMap","JSON","parse","text","imports","scopes","key","moduleUrls","querySelectorAll","map","s","src","filter","has","importScriptModules","modules","Promise","all","m"],"sources":["@wordpress/interactivity-router/src/assets/script-modules.ts"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\tinitialImportMap,\n\timportPreloadedModule,\n\tpreloadWithMap,\n\ttype ModuleLoad,\n} from './dynamic-importmap';\n\n/**\n * IDs of modules that should be resolved by the browser rather than\n * processed internally.\n */\nconst resolvedScriptModules = new Set< string >();\n\n/**\n * Marks the specified module as natively resolved.\n * @param url Script module URL.\n */\nexport const markScriptModuleAsResolved = ( url: string ) => {\n\tresolvedScriptModules.add( url );\n};\n\n/**\n * Resolves and fetches modules present in the passed document, using the\n * document's import map to resolve them.\n *\n * @param doc Document containing the modules to preload.\n * @return Array of promises that resolve to a `ScriptModuleLoad` instance.\n */\nexport const preloadScriptModules = ( doc: Document ) => {\n\t// Extract the import map from the document.\n\tconst importMapElement = doc.querySelector< HTMLScriptElement >(\n\t\t'script#wp-importmap[type=importmap]'\n\t);\n\tconst importMap = importMapElement\n\t\t? JSON.parse( importMapElement.text )\n\t\t: { imports: {}, scopes: {} };\n\n\t// Remove imports also in the initial page's import map.\n\t// Those should be handled natively.\n\tfor ( const key in initialImportMap.imports ) {\n\t\tdelete importMap.imports[ key ];\n\t}\n\n\t// Get the URL of all modules contained in the document.\n\tconst moduleUrls = [\n\t\t...doc.querySelectorAll< HTMLScriptElement >(\n\t\t\t'script[type=module][src]'\n\t\t),\n\t].map( ( s ) => s.src );\n\n\t// Resolve and fetch those not resolved natively.\n\treturn moduleUrls\n\t\t.filter( ( url ) => ! resolvedScriptModules.has( url ) )\n\t\t.map( ( url ) => preloadWithMap( url, importMap ) );\n};\n\n/**\n * Imports modules respresented by the passed `ScriptModuleLoad` instances.\n *\n * @param modules Array of `MoudleLoad` instances.\n * @return Promise that resolves once all modules are imported.\n */\nexport const importScriptModules = ( modules: ScriptModuleLoad[] ) =>\n\tPromise.all( modules.map( ( m ) => importPreloadedModule( m ) ) );\n\nexport type ScriptModuleLoad = ModuleLoad;\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,gBAAgB,EAChBC,qBAAqB,EACrBC,cAAc,QAER,qBAAqB;;AAE5B;AACA;AACA;AACA;AACA,MAAMC,qBAAqB,GAAG,IAAIC,GAAG,CAAW,CAAC;;AAEjD;AACA;AACA;AACA;AACA,OAAO,MAAMC,0BAA0B,GAAKC,GAAW,IAAM;EAC5DH,qBAAqB,CAACI,GAAG,CAAED,GAAI,CAAC;AACjC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,oBAAoB,GAAKC,GAAa,IAAM;EACxD;EACA,MAAMC,gBAAgB,GAAGD,GAAG,CAACE,aAAa,CACzC,qCACD,CAAC;EACD,MAAMC,SAAS,GAAGF,gBAAgB,GAC/BG,IAAI,CAACC,KAAK,CAAEJ,gBAAgB,CAACK,IAAK,CAAC,GACnC;IAAEC,OAAO,EAAE,CAAC,CAAC;IAAEC,MAAM,EAAE,CAAC;EAAE,CAAC;;EAE9B;EACA;EACA,KAAM,MAAMC,GAAG,IAAIlB,gBAAgB,CAACgB,OAAO,EAAG;IAC7C,OAAOJ,SAAS,CAACI,OAAO,CAAEE,GAAG,CAAE;EAChC;;EAEA;EACA,MAAMC,UAAU,GAAG,CAClB,GAAGV,GAAG,CAACW,gBAAgB,CACtB,0BACD,CAAC,CACD,CAACC,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACC,GAAI,CAAC;;EAEvB;EACA,OAAOJ,UAAU,CACfK,MAAM,CAAIlB,GAAG,IAAM,CAAEH,qBAAqB,CAACsB,GAAG,CAAEnB,GAAI,CAAE,CAAC,CACvDe,GAAG,CAAIf,GAAG,IAAMJ,cAAc,CAAEI,GAAG,EAAEM,SAAU,CAAE,CAAC;AACrD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMc,mBAAmB,GAAKC,OAA2B,IAC/DC,OAAO,CAACC,GAAG,CAAEF,OAAO,CAACN,GAAG,CAAIS,CAAC,IAAM7B,qBAAqB,CAAE6B,CAAE,CAAE,CAAE,CAAC","ignoreList":[]}