@wordpress/asset-loader 1.1.0 → 1.1.1-next.dc3f6d3c1.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.
- package/build/index.js +61 -1
- package/build/index.js.map +2 -2
- package/build-module/index.js +61 -1
- package/build-module/index.js.map +2 -2
- package/build-types/index.d.ts +2 -1
- package/build-types/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +98 -4
- package/tsconfig.tsbuildinfo +1 -1
package/build/index.js
CHANGED
|
@@ -23,6 +23,41 @@ __export(index_exports, {
|
|
|
23
23
|
default: () => index_default
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(index_exports);
|
|
26
|
+
function injectImportMap(scriptModules) {
|
|
27
|
+
if (!scriptModules || Object.keys(scriptModules).length === 0) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const existingMapElement = document.querySelector(
|
|
31
|
+
"script#wp-importmap[type=importmap]"
|
|
32
|
+
);
|
|
33
|
+
if (existingMapElement) {
|
|
34
|
+
try {
|
|
35
|
+
const existingMap = JSON.parse(existingMapElement.text);
|
|
36
|
+
if (!existingMap.imports) {
|
|
37
|
+
existingMap.imports = {};
|
|
38
|
+
}
|
|
39
|
+
existingMap.imports = {
|
|
40
|
+
...existingMap.imports,
|
|
41
|
+
...scriptModules
|
|
42
|
+
};
|
|
43
|
+
existingMapElement.text = JSON.stringify(existingMap, null, 2);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
console.error("Failed to parse or update import map:", error);
|
|
46
|
+
}
|
|
47
|
+
} else {
|
|
48
|
+
const script = document.createElement("script");
|
|
49
|
+
script.type = "importmap";
|
|
50
|
+
script.id = "wp-importmap";
|
|
51
|
+
script.text = JSON.stringify(
|
|
52
|
+
{
|
|
53
|
+
imports: scriptModules
|
|
54
|
+
},
|
|
55
|
+
null,
|
|
56
|
+
2
|
|
57
|
+
);
|
|
58
|
+
document.head.appendChild(script);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
26
61
|
function loadStylesheet(handle, styleData) {
|
|
27
62
|
return new Promise((resolve) => {
|
|
28
63
|
if (!styleData.src) {
|
|
@@ -141,7 +176,10 @@ async function performScriptLoad(scriptElements, destination) {
|
|
|
141
176
|
await Promise.all(parallel);
|
|
142
177
|
parallel = [];
|
|
143
178
|
}
|
|
144
|
-
async function loadAssets(scriptsData, inlineScripts, stylesData, inlineStyles) {
|
|
179
|
+
async function loadAssets(scriptsData, inlineScripts, stylesData, inlineStyles, htmlTemplates, scriptModules) {
|
|
180
|
+
if (scriptModules) {
|
|
181
|
+
injectImportMap(scriptModules);
|
|
182
|
+
}
|
|
145
183
|
const orderedStyles = buildDependencyOrderedList(stylesData);
|
|
146
184
|
const orderedScripts = buildDependencyOrderedList(scriptsData);
|
|
147
185
|
const stylePromises = [];
|
|
@@ -180,6 +218,28 @@ async function loadAssets(scriptsData, inlineScripts, stylesData, inlineStyles)
|
|
|
180
218
|
await performScriptLoad(scriptElementsBody, document.body);
|
|
181
219
|
})();
|
|
182
220
|
await Promise.all([Promise.all(stylePromises), scriptsPromise]);
|
|
221
|
+
if (htmlTemplates && htmlTemplates.length > 0) {
|
|
222
|
+
htmlTemplates.forEach((templateHtml) => {
|
|
223
|
+
const scriptMatch = templateHtml.match(
|
|
224
|
+
/<script([^>]*)>(.*?)<\/script>/is
|
|
225
|
+
);
|
|
226
|
+
if (scriptMatch) {
|
|
227
|
+
const attributes = scriptMatch[1];
|
|
228
|
+
const content = scriptMatch[2];
|
|
229
|
+
const script = document.createElement("script");
|
|
230
|
+
const idMatch = attributes.match(/id=["']([^"']+)["']/);
|
|
231
|
+
if (idMatch) {
|
|
232
|
+
script.id = idMatch[1];
|
|
233
|
+
}
|
|
234
|
+
const typeMatch = attributes.match(/type=["']([^"']+)["']/);
|
|
235
|
+
if (typeMatch) {
|
|
236
|
+
script.type = typeMatch[1];
|
|
237
|
+
}
|
|
238
|
+
script.textContent = content;
|
|
239
|
+
document.body.appendChild(script);
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
183
243
|
}
|
|
184
244
|
var index_default = loadAssets;
|
|
185
245
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["type Style = {\n\tsrc: string;\n\tdeps?: string[];\n\tversion?: string;\n\tmedia?: string;\n};\n\ntype InlineStyle = string | string[];\n\ntype Script = {\n\tsrc: string;\n\tdeps?: string[];\n\tversion?: string;\n\tin_footer?: boolean;\n};\n\ntype InlineScript = string | string[];\n\nfunction loadStylesheet( handle: string, styleData: Style ): Promise< void > {\n\treturn new Promise( ( resolve ) => {\n\t\tif ( ! styleData.src ) {\n\t\t\tresolve(); // No external file to load\n\t\t\treturn;\n\t\t}\n\n\t\tconst existingLink = document.getElementById( handle + '-css' );\n\t\tif ( existingLink ) {\n\t\t\tresolve(); // Already loaded\n\t\t\treturn;\n\t\t}\n\n\t\tconst link = document.createElement( 'link' );\n\t\tlink.rel = 'stylesheet';\n\t\tlink.href =\n\t\t\tstyleData.src +\n\t\t\t( styleData.version ? '?ver=' + styleData.version : '' );\n\t\tlink.id = handle + '-css';\n\t\tlink.media = styleData.media || 'all';\n\n\t\tlink.onload = () => resolve();\n\t\tlink.onerror = () => {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( `Failed to load stylesheet: ${ handle }` );\n\t\t\tresolve();\n\t\t};\n\n\t\tdocument.head.appendChild( link );\n\t} );\n}\n\nfunction loadScript( handle: string, scriptData: Script ): HTMLScriptElement {\n\t// If no external script source, just mark as processed and resolve\n\tif ( ! scriptData.src ) {\n\t\t// Still mark as processed with an ID so we don't repeat processing\n\t\tconst marker = document.createElement( 'script' );\n\t\tmarker.id = handle + '-js';\n\t\tmarker.textContent = '// Processed: ' + handle;\n\t\treturn marker;\n\t}\n\n\tconst script = document.createElement( 'script' );\n\tscript.src =\n\t\tscriptData.src +\n\t\t( scriptData.version ? '?ver=' + scriptData.version : '' );\n\tscript.id = handle + '-js';\n\tscript.async = false;\n\n\treturn script;\n}\n\n// Function to inject inline styles\nfunction injectInlineStyle(\n\thandle: string,\n\tinlineStyle: InlineStyle,\n\tposition: 'before' | 'after'\n) {\n\t// Handle both string and array formats\n\tlet styleContent = '';\n\tif ( Array.isArray( inlineStyle ) ) {\n\t\tstyleContent = inlineStyle.join( '\\n' );\n\t} else if ( typeof inlineStyle === 'string' ) {\n\t\tstyleContent = inlineStyle;\n\t}\n\n\tif ( styleContent && styleContent.trim() ) {\n\t\tconst styleId = handle + '-' + position + '-inline-css';\n\t\tif ( ! document.getElementById( styleId ) ) {\n\t\t\tconst style = document.createElement( 'style' );\n\t\t\tstyle.id = styleId;\n\t\t\tstyle.textContent = styleContent.trim();\n\t\t\tdocument.head.appendChild( style );\n\t\t}\n\t}\n}\n\nfunction injectInlineScript(\n\thandle: string,\n\tinlineScript: InlineScript,\n\tposition: 'before' | 'after'\n): HTMLScriptElement {\n\tlet scriptContent = inlineScript;\n\tif ( Array.isArray( scriptContent ) ) {\n\t\tscriptContent = scriptContent.join( '\\n' );\n\t}\n\n\tconst script = document.createElement( 'script' );\n\tscript.id = handle + '-' + position + '-js';\n\tscript.textContent = scriptContent.trim();\n\n\treturn script;\n}\n\n// Function to create dependency-ordered list respecting WordPress dependency graph\nfunction buildDependencyOrderedList< T extends Style | Script >(\n\tassetsData: Record< string, T >\n) {\n\tconst visited = new Set();\n\tconst visiting = new Set();\n\tconst orderedList: string[] = [];\n\n\tfunction visit( handle: string ) {\n\t\tif ( visited.has( handle ) ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( visiting.has( handle ) ) {\n\t\t\t// Circular dependency detected, skip to avoid infinite loop\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(\n\t\t\t\t`Circular dependency detected for handle: ${ handle }`\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tvisiting.add( handle );\n\n\t\tif ( assetsData[ handle ] ) {\n\t\t\t// Visit all dependencies first\n\t\t\tconst deps = assetsData[ handle ].deps || [];\n\t\t\tdeps.forEach( ( dep ) => {\n\t\t\t\tif ( assetsData[ dep ] ) {\n\t\t\t\t\tvisit( dep );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tvisiting.delete( handle );\n\t\tvisited.add( handle );\n\n\t\tif ( assetsData[ handle ] ) {\n\t\t\torderedList.push( handle );\n\t\t}\n\t}\n\n\t// Visit all handles\n\tObject.keys( assetsData ).forEach( ( handle ) => {\n\t\tvisit( handle );\n\t} );\n\n\treturn orderedList;\n}\n\nasync function performScriptLoad(\n\tscriptElements: HTMLScriptElement[],\n\tdestination: HTMLElement\n) {\n\tlet parallel = [];\n\tfor ( const scriptElement of scriptElements ) {\n\t\tif ( scriptElement.src ) {\n\t\t\t// External scripts can be loaded in parallel. They will be executed in DOM order\n\t\t\t// because the `script` tags have an `async = false` attribute. Therefore cross-script\n\t\t\t// dependencies are guaranteed to be satisfied.\n\t\t\tconst loader = Promise.withResolvers< void >();\n\t\t\tscriptElement.onload = () => loader.resolve();\n\t\t\tscriptElement.onerror = () => {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error( `Failed to load script: ${ scriptElement.id }` );\n\t\t\t\tloader.resolve();\n\t\t\t};\n\t\t\tparallel.push( loader.promise );\n\t\t} else {\n\t\t\t// We've encountered an inline script. Inline scripts are executed immediately after\n\t\t\t// inserting them to the DOM. Therefore we need to wait for all external scripts to load.\n\t\t\tawait Promise.all( parallel );\n\t\t\tparallel = [];\n\t\t}\n\t\t// Append the `script` element (external or inline) to the DOM and trigger the load.\n\t\tdestination.appendChild( scriptElement );\n\t}\n\t// Wait for all the remainingexternal scripts to load.\n\tawait Promise.all( parallel );\n\tparallel = [];\n}\n\n// Main async function to load all assets and return editor settings\nasync function loadAssets(\n\tscriptsData: Record< string, Script >,\n\tinlineScripts: Record< 'before' | 'after', Record< string, InlineScript > >,\n\tstylesData: Record< string, Style >,\n\tinlineStyles: Record< 'before' | 'after', Record< string, InlineStyle > >\n): Promise< void > {\n\t// Build dependency-ordered lists\n\tconst orderedStyles = buildDependencyOrderedList( stylesData );\n\tconst orderedScripts = buildDependencyOrderedList( scriptsData );\n\n\tconst stylePromises: Promise< void >[] = [];\n\n\t// Load stylesheets in dependency order\n\tfor ( const handle of orderedStyles ) {\n\t\tconst beforeInline = inlineStyles.before?.[ handle ];\n\t\tif ( beforeInline ) {\n\t\t\tinjectInlineStyle( handle, beforeInline, 'before' );\n\t\t}\n\t\tstylePromises.push( loadStylesheet( handle, stylesData[ handle ] ) );\n\t\tconst afterInline = inlineStyles.after?.[ handle ];\n\t\tif ( afterInline ) {\n\t\t\tinjectInlineStyle( handle, afterInline, 'after' );\n\t\t}\n\t}\n\n\t// Load scripts in dependency order\n\tconst scriptElementsHead: HTMLScriptElement[] = [];\n\tconst scriptElementsBody: HTMLScriptElement[] = [];\n\n\tfor ( const handle of orderedScripts ) {\n\t\tconst inFooter = scriptsData[ handle ].in_footer || false;\n\t\tconst scriptElements = inFooter\n\t\t\t? scriptElementsBody\n\t\t\t: scriptElementsHead;\n\n\t\tconst beforeInline = inlineScripts.before?.[ handle ];\n\t\tif ( beforeInline ) {\n\t\t\tscriptElements.push(\n\t\t\t\tinjectInlineScript( handle, beforeInline, 'before' )\n\t\t\t);\n\t\t}\n\n\t\tscriptElements.push( loadScript( handle, scriptsData[ handle ] ) );\n\n\t\tconst afterInline = inlineScripts.after?.[ handle ];\n\t\tif ( afterInline ) {\n\t\t\tscriptElements.push(\n\t\t\t\tinjectInlineScript( handle, afterInline, 'after' )\n\t\t\t);\n\t\t}\n\t}\n\n\tconst scriptsPromise = ( async () => {\n\t\tawait performScriptLoad( scriptElementsHead, document.head );\n\t\tawait performScriptLoad( scriptElementsBody, document.body );\n\t} )();\n\n\tawait Promise.all( [ Promise.all( stylePromises ), scriptsPromise ] );\n}\n\nexport default loadAssets;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"sourcesContent": ["type Style = {\n\tsrc: string;\n\tdeps?: string[];\n\tversion?: string;\n\tmedia?: string;\n};\ntype InlineStyle = string | string[];\ntype Script = {\n\tsrc: string;\n\tdeps?: string[];\n\tversion?: string;\n\tin_footer?: boolean;\n};\ntype InlineScript = string | string[];\ntype ScriptModules = Record< string, string >;\n\n/**\n * Injects or extends the import map with new module entries.\n *\n * @param scriptModules - Object mapping module specifiers to URLs\n */\nfunction injectImportMap( scriptModules: Record< string, string > ): void {\n\tif ( ! scriptModules || Object.keys( scriptModules ).length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Find the existing import map script element\n\tconst existingMapElement = document.querySelector< HTMLScriptElement >(\n\t\t'script#wp-importmap[type=importmap]'\n\t);\n\n\tif ( existingMapElement ) {\n\t\ttry {\n\t\t\t// Parse the existing import map\n\t\t\tconst existingMap = JSON.parse( existingMapElement.text );\n\n\t\t\t// Ensure the imports object exists\n\t\t\tif ( ! existingMap.imports ) {\n\t\t\t\texistingMap.imports = {};\n\t\t\t}\n\n\t\t\t// Merge new imports with existing ones (new entries take precedence)\n\t\t\texistingMap.imports = {\n\t\t\t\t...existingMap.imports,\n\t\t\t\t...scriptModules,\n\t\t\t};\n\n\t\t\t// Update the script element's content\n\t\t\texistingMapElement.text = JSON.stringify( existingMap, null, 2 );\n\t\t} catch ( error ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( 'Failed to parse or update import map:', error );\n\t\t}\n\t} else {\n\t\t// If no import map exists, create a new one\n\t\tconst script = document.createElement( 'script' );\n\t\tscript.type = 'importmap';\n\t\tscript.id = 'wp-importmap';\n\t\tscript.text = JSON.stringify(\n\t\t\t{\n\t\t\t\timports: scriptModules,\n\t\t\t},\n\t\t\tnull,\n\t\t\t2\n\t\t);\n\t\tdocument.head.appendChild( script );\n\t}\n}\n\nfunction loadStylesheet( handle: string, styleData: Style ): Promise< void > {\n\treturn new Promise( ( resolve ) => {\n\t\tif ( ! styleData.src ) {\n\t\t\tresolve(); // No external file to load\n\t\t\treturn;\n\t\t}\n\n\t\tconst existingLink = document.getElementById( handle + '-css' );\n\t\tif ( existingLink ) {\n\t\t\tresolve(); // Already loaded\n\t\t\treturn;\n\t\t}\n\n\t\tconst link = document.createElement( 'link' );\n\t\tlink.rel = 'stylesheet';\n\t\tlink.href =\n\t\t\tstyleData.src +\n\t\t\t( styleData.version ? '?ver=' + styleData.version : '' );\n\t\tlink.id = handle + '-css';\n\t\tlink.media = styleData.media || 'all';\n\n\t\tlink.onload = () => resolve();\n\t\tlink.onerror = () => {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( `Failed to load stylesheet: ${ handle }` );\n\t\t\tresolve();\n\t\t};\n\n\t\tdocument.head.appendChild( link );\n\t} );\n}\n\nfunction loadScript( handle: string, scriptData: Script ): HTMLScriptElement {\n\t// If no external script source, just mark as processed and resolve\n\tif ( ! scriptData.src ) {\n\t\t// Still mark as processed with an ID so we don't repeat processing\n\t\tconst marker = document.createElement( 'script' );\n\t\tmarker.id = handle + '-js';\n\t\tmarker.textContent = '// Processed: ' + handle;\n\t\treturn marker;\n\t}\n\n\tconst script = document.createElement( 'script' );\n\tscript.src =\n\t\tscriptData.src +\n\t\t( scriptData.version ? '?ver=' + scriptData.version : '' );\n\tscript.id = handle + '-js';\n\tscript.async = false;\n\n\treturn script;\n}\n\n// Function to inject inline styles\nfunction injectInlineStyle(\n\thandle: string,\n\tinlineStyle: InlineStyle,\n\tposition: 'before' | 'after'\n) {\n\t// Handle both string and array formats\n\tlet styleContent = '';\n\tif ( Array.isArray( inlineStyle ) ) {\n\t\tstyleContent = inlineStyle.join( '\\n' );\n\t} else if ( typeof inlineStyle === 'string' ) {\n\t\tstyleContent = inlineStyle;\n\t}\n\n\tif ( styleContent && styleContent.trim() ) {\n\t\tconst styleId = handle + '-' + position + '-inline-css';\n\t\tif ( ! document.getElementById( styleId ) ) {\n\t\t\tconst style = document.createElement( 'style' );\n\t\t\tstyle.id = styleId;\n\t\t\tstyle.textContent = styleContent.trim();\n\t\t\tdocument.head.appendChild( style );\n\t\t}\n\t}\n}\n\nfunction injectInlineScript(\n\thandle: string,\n\tinlineScript: InlineScript,\n\tposition: 'before' | 'after'\n): HTMLScriptElement {\n\tlet scriptContent = inlineScript;\n\tif ( Array.isArray( scriptContent ) ) {\n\t\tscriptContent = scriptContent.join( '\\n' );\n\t}\n\n\tconst script = document.createElement( 'script' );\n\tscript.id = handle + '-' + position + '-js';\n\tscript.textContent = scriptContent.trim();\n\n\treturn script;\n}\n\n// Function to create dependency-ordered list respecting WordPress dependency graph\nfunction buildDependencyOrderedList< T extends Style | Script >(\n\tassetsData: Record< string, T >\n) {\n\tconst visited = new Set();\n\tconst visiting = new Set();\n\tconst orderedList: string[] = [];\n\n\tfunction visit( handle: string ) {\n\t\tif ( visited.has( handle ) ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( visiting.has( handle ) ) {\n\t\t\t// Circular dependency detected, skip to avoid infinite loop\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(\n\t\t\t\t`Circular dependency detected for handle: ${ handle }`\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tvisiting.add( handle );\n\n\t\tif ( assetsData[ handle ] ) {\n\t\t\t// Visit all dependencies first\n\t\t\tconst deps = assetsData[ handle ].deps || [];\n\t\t\tdeps.forEach( ( dep ) => {\n\t\t\t\tif ( assetsData[ dep ] ) {\n\t\t\t\t\tvisit( dep );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tvisiting.delete( handle );\n\t\tvisited.add( handle );\n\n\t\tif ( assetsData[ handle ] ) {\n\t\t\torderedList.push( handle );\n\t\t}\n\t}\n\n\t// Visit all handles\n\tObject.keys( assetsData ).forEach( ( handle ) => {\n\t\tvisit( handle );\n\t} );\n\n\treturn orderedList;\n}\n\nasync function performScriptLoad(\n\tscriptElements: HTMLScriptElement[],\n\tdestination: HTMLElement\n) {\n\tlet parallel = [];\n\tfor ( const scriptElement of scriptElements ) {\n\t\tif ( scriptElement.src ) {\n\t\t\t// External scripts can be loaded in parallel. They will be executed in DOM order\n\t\t\t// because the `script` tags have an `async = false` attribute. Therefore cross-script\n\t\t\t// dependencies are guaranteed to be satisfied.\n\t\t\tconst loader = Promise.withResolvers< void >();\n\t\t\tscriptElement.onload = () => loader.resolve();\n\t\t\tscriptElement.onerror = () => {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error( `Failed to load script: ${ scriptElement.id }` );\n\t\t\t\tloader.resolve();\n\t\t\t};\n\t\t\tparallel.push( loader.promise );\n\t\t} else {\n\t\t\t// We've encountered an inline script. Inline scripts are executed immediately after\n\t\t\t// inserting them to the DOM. Therefore we need to wait for all external scripts to load.\n\t\t\tawait Promise.all( parallel );\n\t\t\tparallel = [];\n\t\t}\n\t\t// Append the `script` element (external or inline) to the DOM and trigger the load.\n\t\tdestination.appendChild( scriptElement );\n\t}\n\t// Wait for all the remainingexternal scripts to load.\n\tawait Promise.all( parallel );\n\tparallel = [];\n}\n\n// Main async function to load all assets and return editor settings\nasync function loadAssets(\n\tscriptsData: Record< string, Script >,\n\tinlineScripts: Record< 'before' | 'after', Record< string, InlineScript > >,\n\tstylesData: Record< string, Style >,\n\tinlineStyles: Record< 'before' | 'after', Record< string, InlineStyle > >,\n\thtmlTemplates?: string[],\n\tscriptModules?: ScriptModules\n): Promise< void > {\n\t// Inject import map first so script modules can be resolved\n\tif ( scriptModules ) {\n\t\tinjectImportMap( scriptModules );\n\t}\n\n\t// Build dependency-ordered lists\n\tconst orderedStyles = buildDependencyOrderedList( stylesData );\n\tconst orderedScripts = buildDependencyOrderedList( scriptsData );\n\n\tconst stylePromises: Promise< void >[] = [];\n\n\t// Load stylesheets in dependency order\n\tfor ( const handle of orderedStyles ) {\n\t\tconst beforeInline = inlineStyles.before?.[ handle ];\n\t\tif ( beforeInline ) {\n\t\t\tinjectInlineStyle( handle, beforeInline, 'before' );\n\t\t}\n\t\tstylePromises.push( loadStylesheet( handle, stylesData[ handle ] ) );\n\t\tconst afterInline = inlineStyles.after?.[ handle ];\n\t\tif ( afterInline ) {\n\t\t\tinjectInlineStyle( handle, afterInline, 'after' );\n\t\t}\n\t}\n\n\t// Load scripts in dependency order\n\tconst scriptElementsHead: HTMLScriptElement[] = [];\n\tconst scriptElementsBody: HTMLScriptElement[] = [];\n\n\tfor ( const handle of orderedScripts ) {\n\t\tconst inFooter = scriptsData[ handle ].in_footer || false;\n\t\tconst scriptElements = inFooter\n\t\t\t? scriptElementsBody\n\t\t\t: scriptElementsHead;\n\n\t\tconst beforeInline = inlineScripts.before?.[ handle ];\n\t\tif ( beforeInline ) {\n\t\t\tscriptElements.push(\n\t\t\t\tinjectInlineScript( handle, beforeInline, 'before' )\n\t\t\t);\n\t\t}\n\n\t\tscriptElements.push( loadScript( handle, scriptsData[ handle ] ) );\n\n\t\tconst afterInline = inlineScripts.after?.[ handle ];\n\t\tif ( afterInline ) {\n\t\t\tscriptElements.push(\n\t\t\t\tinjectInlineScript( handle, afterInline, 'after' )\n\t\t\t);\n\t\t}\n\t}\n\n\tconst scriptsPromise = ( async () => {\n\t\tawait performScriptLoad( scriptElementsHead, document.head );\n\t\tawait performScriptLoad( scriptElementsBody, document.body );\n\t} )();\n\n\tawait Promise.all( [ Promise.all( stylePromises ), scriptsPromise ] );\n\n\t// Inject HTML templates (e.g., wp.media templates) into the DOM\n\t// Note: We can't use innerHTML for script tags, so we need to parse and create elements properly\n\tif ( htmlTemplates && htmlTemplates.length > 0 ) {\n\t\thtmlTemplates.forEach( ( templateHtml ) => {\n\t\t\t// Extract the script tag attributes and content\n\t\t\tconst scriptMatch = templateHtml.match(\n\t\t\t\t/<script([^>]*)>(.*?)<\\/script>/is\n\t\t\t);\n\t\t\tif ( scriptMatch ) {\n\t\t\t\tconst attributes = scriptMatch[ 1 ];\n\t\t\t\tconst content = scriptMatch[ 2 ];\n\n\t\t\t\t// Create a new script element\n\t\t\t\tconst script = document.createElement( 'script' );\n\n\t\t\t\t// Extract and set the id attribute\n\t\t\t\tconst idMatch = attributes.match( /id=[\"']([^\"']+)[\"']/ );\n\t\t\t\tif ( idMatch ) {\n\t\t\t\t\tscript.id = idMatch[ 1 ];\n\t\t\t\t}\n\n\t\t\t\t// Extract and set the type attribute\n\t\t\t\tconst typeMatch = attributes.match( /type=[\"']([^\"']+)[\"']/ );\n\t\t\t\tif ( typeMatch ) {\n\t\t\t\t\tscript.type = typeMatch[ 1 ];\n\t\t\t\t}\n\n\t\t\t\t// Set the content\n\t\t\t\tscript.textContent = content;\n\n\t\t\t\t// Append to body\n\t\t\t\tdocument.body.appendChild( script );\n\t\t\t}\n\t\t} );\n\t}\n}\n\nexport default loadAssets;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/build-module/index.js
CHANGED
|
@@ -1,4 +1,39 @@
|
|
|
1
1
|
// packages/asset-loader/src/index.ts
|
|
2
|
+
function injectImportMap(scriptModules) {
|
|
3
|
+
if (!scriptModules || Object.keys(scriptModules).length === 0) {
|
|
4
|
+
return;
|
|
5
|
+
}
|
|
6
|
+
const existingMapElement = document.querySelector(
|
|
7
|
+
"script#wp-importmap[type=importmap]"
|
|
8
|
+
);
|
|
9
|
+
if (existingMapElement) {
|
|
10
|
+
try {
|
|
11
|
+
const existingMap = JSON.parse(existingMapElement.text);
|
|
12
|
+
if (!existingMap.imports) {
|
|
13
|
+
existingMap.imports = {};
|
|
14
|
+
}
|
|
15
|
+
existingMap.imports = {
|
|
16
|
+
...existingMap.imports,
|
|
17
|
+
...scriptModules
|
|
18
|
+
};
|
|
19
|
+
existingMapElement.text = JSON.stringify(existingMap, null, 2);
|
|
20
|
+
} catch (error) {
|
|
21
|
+
console.error("Failed to parse or update import map:", error);
|
|
22
|
+
}
|
|
23
|
+
} else {
|
|
24
|
+
const script = document.createElement("script");
|
|
25
|
+
script.type = "importmap";
|
|
26
|
+
script.id = "wp-importmap";
|
|
27
|
+
script.text = JSON.stringify(
|
|
28
|
+
{
|
|
29
|
+
imports: scriptModules
|
|
30
|
+
},
|
|
31
|
+
null,
|
|
32
|
+
2
|
|
33
|
+
);
|
|
34
|
+
document.head.appendChild(script);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
2
37
|
function loadStylesheet(handle, styleData) {
|
|
3
38
|
return new Promise((resolve) => {
|
|
4
39
|
if (!styleData.src) {
|
|
@@ -117,7 +152,10 @@ async function performScriptLoad(scriptElements, destination) {
|
|
|
117
152
|
await Promise.all(parallel);
|
|
118
153
|
parallel = [];
|
|
119
154
|
}
|
|
120
|
-
async function loadAssets(scriptsData, inlineScripts, stylesData, inlineStyles) {
|
|
155
|
+
async function loadAssets(scriptsData, inlineScripts, stylesData, inlineStyles, htmlTemplates, scriptModules) {
|
|
156
|
+
if (scriptModules) {
|
|
157
|
+
injectImportMap(scriptModules);
|
|
158
|
+
}
|
|
121
159
|
const orderedStyles = buildDependencyOrderedList(stylesData);
|
|
122
160
|
const orderedScripts = buildDependencyOrderedList(scriptsData);
|
|
123
161
|
const stylePromises = [];
|
|
@@ -156,6 +194,28 @@ async function loadAssets(scriptsData, inlineScripts, stylesData, inlineStyles)
|
|
|
156
194
|
await performScriptLoad(scriptElementsBody, document.body);
|
|
157
195
|
})();
|
|
158
196
|
await Promise.all([Promise.all(stylePromises), scriptsPromise]);
|
|
197
|
+
if (htmlTemplates && htmlTemplates.length > 0) {
|
|
198
|
+
htmlTemplates.forEach((templateHtml) => {
|
|
199
|
+
const scriptMatch = templateHtml.match(
|
|
200
|
+
/<script([^>]*)>(.*?)<\/script>/is
|
|
201
|
+
);
|
|
202
|
+
if (scriptMatch) {
|
|
203
|
+
const attributes = scriptMatch[1];
|
|
204
|
+
const content = scriptMatch[2];
|
|
205
|
+
const script = document.createElement("script");
|
|
206
|
+
const idMatch = attributes.match(/id=["']([^"']+)["']/);
|
|
207
|
+
if (idMatch) {
|
|
208
|
+
script.id = idMatch[1];
|
|
209
|
+
}
|
|
210
|
+
const typeMatch = attributes.match(/type=["']([^"']+)["']/);
|
|
211
|
+
if (typeMatch) {
|
|
212
|
+
script.type = typeMatch[1];
|
|
213
|
+
}
|
|
214
|
+
script.textContent = content;
|
|
215
|
+
document.body.appendChild(script);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
159
219
|
}
|
|
160
220
|
var index_default = loadAssets;
|
|
161
221
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["type Style = {\n\tsrc: string;\n\tdeps?: string[];\n\tversion?: string;\n\tmedia?: string;\n};\n\ntype InlineStyle = string | string[];\n\ntype Script = {\n\tsrc: string;\n\tdeps?: string[];\n\tversion?: string;\n\tin_footer?: boolean;\n};\n\ntype InlineScript = string | string[];\n\nfunction loadStylesheet( handle: string, styleData: Style ): Promise< void > {\n\treturn new Promise( ( resolve ) => {\n\t\tif ( ! styleData.src ) {\n\t\t\tresolve(); // No external file to load\n\t\t\treturn;\n\t\t}\n\n\t\tconst existingLink = document.getElementById( handle + '-css' );\n\t\tif ( existingLink ) {\n\t\t\tresolve(); // Already loaded\n\t\t\treturn;\n\t\t}\n\n\t\tconst link = document.createElement( 'link' );\n\t\tlink.rel = 'stylesheet';\n\t\tlink.href =\n\t\t\tstyleData.src +\n\t\t\t( styleData.version ? '?ver=' + styleData.version : '' );\n\t\tlink.id = handle + '-css';\n\t\tlink.media = styleData.media || 'all';\n\n\t\tlink.onload = () => resolve();\n\t\tlink.onerror = () => {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( `Failed to load stylesheet: ${ handle }` );\n\t\t\tresolve();\n\t\t};\n\n\t\tdocument.head.appendChild( link );\n\t} );\n}\n\nfunction loadScript( handle: string, scriptData: Script ): HTMLScriptElement {\n\t// If no external script source, just mark as processed and resolve\n\tif ( ! scriptData.src ) {\n\t\t// Still mark as processed with an ID so we don't repeat processing\n\t\tconst marker = document.createElement( 'script' );\n\t\tmarker.id = handle + '-js';\n\t\tmarker.textContent = '// Processed: ' + handle;\n\t\treturn marker;\n\t}\n\n\tconst script = document.createElement( 'script' );\n\tscript.src =\n\t\tscriptData.src +\n\t\t( scriptData.version ? '?ver=' + scriptData.version : '' );\n\tscript.id = handle + '-js';\n\tscript.async = false;\n\n\treturn script;\n}\n\n// Function to inject inline styles\nfunction injectInlineStyle(\n\thandle: string,\n\tinlineStyle: InlineStyle,\n\tposition: 'before' | 'after'\n) {\n\t// Handle both string and array formats\n\tlet styleContent = '';\n\tif ( Array.isArray( inlineStyle ) ) {\n\t\tstyleContent = inlineStyle.join( '\\n' );\n\t} else if ( typeof inlineStyle === 'string' ) {\n\t\tstyleContent = inlineStyle;\n\t}\n\n\tif ( styleContent && styleContent.trim() ) {\n\t\tconst styleId = handle + '-' + position + '-inline-css';\n\t\tif ( ! document.getElementById( styleId ) ) {\n\t\t\tconst style = document.createElement( 'style' );\n\t\t\tstyle.id = styleId;\n\t\t\tstyle.textContent = styleContent.trim();\n\t\t\tdocument.head.appendChild( style );\n\t\t}\n\t}\n}\n\nfunction injectInlineScript(\n\thandle: string,\n\tinlineScript: InlineScript,\n\tposition: 'before' | 'after'\n): HTMLScriptElement {\n\tlet scriptContent = inlineScript;\n\tif ( Array.isArray( scriptContent ) ) {\n\t\tscriptContent = scriptContent.join( '\\n' );\n\t}\n\n\tconst script = document.createElement( 'script' );\n\tscript.id = handle + '-' + position + '-js';\n\tscript.textContent = scriptContent.trim();\n\n\treturn script;\n}\n\n// Function to create dependency-ordered list respecting WordPress dependency graph\nfunction buildDependencyOrderedList< T extends Style | Script >(\n\tassetsData: Record< string, T >\n) {\n\tconst visited = new Set();\n\tconst visiting = new Set();\n\tconst orderedList: string[] = [];\n\n\tfunction visit( handle: string ) {\n\t\tif ( visited.has( handle ) ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( visiting.has( handle ) ) {\n\t\t\t// Circular dependency detected, skip to avoid infinite loop\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(\n\t\t\t\t`Circular dependency detected for handle: ${ handle }`\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tvisiting.add( handle );\n\n\t\tif ( assetsData[ handle ] ) {\n\t\t\t// Visit all dependencies first\n\t\t\tconst deps = assetsData[ handle ].deps || [];\n\t\t\tdeps.forEach( ( dep ) => {\n\t\t\t\tif ( assetsData[ dep ] ) {\n\t\t\t\t\tvisit( dep );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tvisiting.delete( handle );\n\t\tvisited.add( handle );\n\n\t\tif ( assetsData[ handle ] ) {\n\t\t\torderedList.push( handle );\n\t\t}\n\t}\n\n\t// Visit all handles\n\tObject.keys( assetsData ).forEach( ( handle ) => {\n\t\tvisit( handle );\n\t} );\n\n\treturn orderedList;\n}\n\nasync function performScriptLoad(\n\tscriptElements: HTMLScriptElement[],\n\tdestination: HTMLElement\n) {\n\tlet parallel = [];\n\tfor ( const scriptElement of scriptElements ) {\n\t\tif ( scriptElement.src ) {\n\t\t\t// External scripts can be loaded in parallel. They will be executed in DOM order\n\t\t\t// because the `script` tags have an `async = false` attribute. Therefore cross-script\n\t\t\t// dependencies are guaranteed to be satisfied.\n\t\t\tconst loader = Promise.withResolvers< void >();\n\t\t\tscriptElement.onload = () => loader.resolve();\n\t\t\tscriptElement.onerror = () => {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error( `Failed to load script: ${ scriptElement.id }` );\n\t\t\t\tloader.resolve();\n\t\t\t};\n\t\t\tparallel.push( loader.promise );\n\t\t} else {\n\t\t\t// We've encountered an inline script. Inline scripts are executed immediately after\n\t\t\t// inserting them to the DOM. Therefore we need to wait for all external scripts to load.\n\t\t\tawait Promise.all( parallel );\n\t\t\tparallel = [];\n\t\t}\n\t\t// Append the `script` element (external or inline) to the DOM and trigger the load.\n\t\tdestination.appendChild( scriptElement );\n\t}\n\t// Wait for all the remainingexternal scripts to load.\n\tawait Promise.all( parallel );\n\tparallel = [];\n}\n\n// Main async function to load all assets and return editor settings\nasync function loadAssets(\n\tscriptsData: Record< string, Script >,\n\tinlineScripts: Record< 'before' | 'after', Record< string, InlineScript > >,\n\tstylesData: Record< string, Style >,\n\tinlineStyles: Record< 'before' | 'after', Record< string, InlineStyle > >\n): Promise< void > {\n\t// Build dependency-ordered lists\n\tconst orderedStyles = buildDependencyOrderedList( stylesData );\n\tconst orderedScripts = buildDependencyOrderedList( scriptsData );\n\n\tconst stylePromises: Promise< void >[] = [];\n\n\t// Load stylesheets in dependency order\n\tfor ( const handle of orderedStyles ) {\n\t\tconst beforeInline = inlineStyles.before?.[ handle ];\n\t\tif ( beforeInline ) {\n\t\t\tinjectInlineStyle( handle, beforeInline, 'before' );\n\t\t}\n\t\tstylePromises.push( loadStylesheet( handle, stylesData[ handle ] ) );\n\t\tconst afterInline = inlineStyles.after?.[ handle ];\n\t\tif ( afterInline ) {\n\t\t\tinjectInlineStyle( handle, afterInline, 'after' );\n\t\t}\n\t}\n\n\t// Load scripts in dependency order\n\tconst scriptElementsHead: HTMLScriptElement[] = [];\n\tconst scriptElementsBody: HTMLScriptElement[] = [];\n\n\tfor ( const handle of orderedScripts ) {\n\t\tconst inFooter = scriptsData[ handle ].in_footer || false;\n\t\tconst scriptElements = inFooter\n\t\t\t? scriptElementsBody\n\t\t\t: scriptElementsHead;\n\n\t\tconst beforeInline = inlineScripts.before?.[ handle ];\n\t\tif ( beforeInline ) {\n\t\t\tscriptElements.push(\n\t\t\t\tinjectInlineScript( handle, beforeInline, 'before' )\n\t\t\t);\n\t\t}\n\n\t\tscriptElements.push( loadScript( handle, scriptsData[ handle ] ) );\n\n\t\tconst afterInline = inlineScripts.after?.[ handle ];\n\t\tif ( afterInline ) {\n\t\t\tscriptElements.push(\n\t\t\t\tinjectInlineScript( handle, afterInline, 'after' )\n\t\t\t);\n\t\t}\n\t}\n\n\tconst scriptsPromise = ( async () => {\n\t\tawait performScriptLoad( scriptElementsHead, document.head );\n\t\tawait performScriptLoad( scriptElementsBody, document.body );\n\t} )();\n\n\tawait Promise.all( [ Promise.all( stylePromises ), scriptsPromise ] );\n}\n\nexport default loadAssets;\n"],
|
|
5
|
-
"mappings": ";
|
|
4
|
+
"sourcesContent": ["type Style = {\n\tsrc: string;\n\tdeps?: string[];\n\tversion?: string;\n\tmedia?: string;\n};\ntype InlineStyle = string | string[];\ntype Script = {\n\tsrc: string;\n\tdeps?: string[];\n\tversion?: string;\n\tin_footer?: boolean;\n};\ntype InlineScript = string | string[];\ntype ScriptModules = Record< string, string >;\n\n/**\n * Injects or extends the import map with new module entries.\n *\n * @param scriptModules - Object mapping module specifiers to URLs\n */\nfunction injectImportMap( scriptModules: Record< string, string > ): void {\n\tif ( ! scriptModules || Object.keys( scriptModules ).length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Find the existing import map script element\n\tconst existingMapElement = document.querySelector< HTMLScriptElement >(\n\t\t'script#wp-importmap[type=importmap]'\n\t);\n\n\tif ( existingMapElement ) {\n\t\ttry {\n\t\t\t// Parse the existing import map\n\t\t\tconst existingMap = JSON.parse( existingMapElement.text );\n\n\t\t\t// Ensure the imports object exists\n\t\t\tif ( ! existingMap.imports ) {\n\t\t\t\texistingMap.imports = {};\n\t\t\t}\n\n\t\t\t// Merge new imports with existing ones (new entries take precedence)\n\t\t\texistingMap.imports = {\n\t\t\t\t...existingMap.imports,\n\t\t\t\t...scriptModules,\n\t\t\t};\n\n\t\t\t// Update the script element's content\n\t\t\texistingMapElement.text = JSON.stringify( existingMap, null, 2 );\n\t\t} catch ( error ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( 'Failed to parse or update import map:', error );\n\t\t}\n\t} else {\n\t\t// If no import map exists, create a new one\n\t\tconst script = document.createElement( 'script' );\n\t\tscript.type = 'importmap';\n\t\tscript.id = 'wp-importmap';\n\t\tscript.text = JSON.stringify(\n\t\t\t{\n\t\t\t\timports: scriptModules,\n\t\t\t},\n\t\t\tnull,\n\t\t\t2\n\t\t);\n\t\tdocument.head.appendChild( script );\n\t}\n}\n\nfunction loadStylesheet( handle: string, styleData: Style ): Promise< void > {\n\treturn new Promise( ( resolve ) => {\n\t\tif ( ! styleData.src ) {\n\t\t\tresolve(); // No external file to load\n\t\t\treturn;\n\t\t}\n\n\t\tconst existingLink = document.getElementById( handle + '-css' );\n\t\tif ( existingLink ) {\n\t\t\tresolve(); // Already loaded\n\t\t\treturn;\n\t\t}\n\n\t\tconst link = document.createElement( 'link' );\n\t\tlink.rel = 'stylesheet';\n\t\tlink.href =\n\t\t\tstyleData.src +\n\t\t\t( styleData.version ? '?ver=' + styleData.version : '' );\n\t\tlink.id = handle + '-css';\n\t\tlink.media = styleData.media || 'all';\n\n\t\tlink.onload = () => resolve();\n\t\tlink.onerror = () => {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( `Failed to load stylesheet: ${ handle }` );\n\t\t\tresolve();\n\t\t};\n\n\t\tdocument.head.appendChild( link );\n\t} );\n}\n\nfunction loadScript( handle: string, scriptData: Script ): HTMLScriptElement {\n\t// If no external script source, just mark as processed and resolve\n\tif ( ! scriptData.src ) {\n\t\t// Still mark as processed with an ID so we don't repeat processing\n\t\tconst marker = document.createElement( 'script' );\n\t\tmarker.id = handle + '-js';\n\t\tmarker.textContent = '// Processed: ' + handle;\n\t\treturn marker;\n\t}\n\n\tconst script = document.createElement( 'script' );\n\tscript.src =\n\t\tscriptData.src +\n\t\t( scriptData.version ? '?ver=' + scriptData.version : '' );\n\tscript.id = handle + '-js';\n\tscript.async = false;\n\n\treturn script;\n}\n\n// Function to inject inline styles\nfunction injectInlineStyle(\n\thandle: string,\n\tinlineStyle: InlineStyle,\n\tposition: 'before' | 'after'\n) {\n\t// Handle both string and array formats\n\tlet styleContent = '';\n\tif ( Array.isArray( inlineStyle ) ) {\n\t\tstyleContent = inlineStyle.join( '\\n' );\n\t} else if ( typeof inlineStyle === 'string' ) {\n\t\tstyleContent = inlineStyle;\n\t}\n\n\tif ( styleContent && styleContent.trim() ) {\n\t\tconst styleId = handle + '-' + position + '-inline-css';\n\t\tif ( ! document.getElementById( styleId ) ) {\n\t\t\tconst style = document.createElement( 'style' );\n\t\t\tstyle.id = styleId;\n\t\t\tstyle.textContent = styleContent.trim();\n\t\t\tdocument.head.appendChild( style );\n\t\t}\n\t}\n}\n\nfunction injectInlineScript(\n\thandle: string,\n\tinlineScript: InlineScript,\n\tposition: 'before' | 'after'\n): HTMLScriptElement {\n\tlet scriptContent = inlineScript;\n\tif ( Array.isArray( scriptContent ) ) {\n\t\tscriptContent = scriptContent.join( '\\n' );\n\t}\n\n\tconst script = document.createElement( 'script' );\n\tscript.id = handle + '-' + position + '-js';\n\tscript.textContent = scriptContent.trim();\n\n\treturn script;\n}\n\n// Function to create dependency-ordered list respecting WordPress dependency graph\nfunction buildDependencyOrderedList< T extends Style | Script >(\n\tassetsData: Record< string, T >\n) {\n\tconst visited = new Set();\n\tconst visiting = new Set();\n\tconst orderedList: string[] = [];\n\n\tfunction visit( handle: string ) {\n\t\tif ( visited.has( handle ) ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( visiting.has( handle ) ) {\n\t\t\t// Circular dependency detected, skip to avoid infinite loop\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(\n\t\t\t\t`Circular dependency detected for handle: ${ handle }`\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tvisiting.add( handle );\n\n\t\tif ( assetsData[ handle ] ) {\n\t\t\t// Visit all dependencies first\n\t\t\tconst deps = assetsData[ handle ].deps || [];\n\t\t\tdeps.forEach( ( dep ) => {\n\t\t\t\tif ( assetsData[ dep ] ) {\n\t\t\t\t\tvisit( dep );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tvisiting.delete( handle );\n\t\tvisited.add( handle );\n\n\t\tif ( assetsData[ handle ] ) {\n\t\t\torderedList.push( handle );\n\t\t}\n\t}\n\n\t// Visit all handles\n\tObject.keys( assetsData ).forEach( ( handle ) => {\n\t\tvisit( handle );\n\t} );\n\n\treturn orderedList;\n}\n\nasync function performScriptLoad(\n\tscriptElements: HTMLScriptElement[],\n\tdestination: HTMLElement\n) {\n\tlet parallel = [];\n\tfor ( const scriptElement of scriptElements ) {\n\t\tif ( scriptElement.src ) {\n\t\t\t// External scripts can be loaded in parallel. They will be executed in DOM order\n\t\t\t// because the `script` tags have an `async = false` attribute. Therefore cross-script\n\t\t\t// dependencies are guaranteed to be satisfied.\n\t\t\tconst loader = Promise.withResolvers< void >();\n\t\t\tscriptElement.onload = () => loader.resolve();\n\t\t\tscriptElement.onerror = () => {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error( `Failed to load script: ${ scriptElement.id }` );\n\t\t\t\tloader.resolve();\n\t\t\t};\n\t\t\tparallel.push( loader.promise );\n\t\t} else {\n\t\t\t// We've encountered an inline script. Inline scripts are executed immediately after\n\t\t\t// inserting them to the DOM. Therefore we need to wait for all external scripts to load.\n\t\t\tawait Promise.all( parallel );\n\t\t\tparallel = [];\n\t\t}\n\t\t// Append the `script` element (external or inline) to the DOM and trigger the load.\n\t\tdestination.appendChild( scriptElement );\n\t}\n\t// Wait for all the remainingexternal scripts to load.\n\tawait Promise.all( parallel );\n\tparallel = [];\n}\n\n// Main async function to load all assets and return editor settings\nasync function loadAssets(\n\tscriptsData: Record< string, Script >,\n\tinlineScripts: Record< 'before' | 'after', Record< string, InlineScript > >,\n\tstylesData: Record< string, Style >,\n\tinlineStyles: Record< 'before' | 'after', Record< string, InlineStyle > >,\n\thtmlTemplates?: string[],\n\tscriptModules?: ScriptModules\n): Promise< void > {\n\t// Inject import map first so script modules can be resolved\n\tif ( scriptModules ) {\n\t\tinjectImportMap( scriptModules );\n\t}\n\n\t// Build dependency-ordered lists\n\tconst orderedStyles = buildDependencyOrderedList( stylesData );\n\tconst orderedScripts = buildDependencyOrderedList( scriptsData );\n\n\tconst stylePromises: Promise< void >[] = [];\n\n\t// Load stylesheets in dependency order\n\tfor ( const handle of orderedStyles ) {\n\t\tconst beforeInline = inlineStyles.before?.[ handle ];\n\t\tif ( beforeInline ) {\n\t\t\tinjectInlineStyle( handle, beforeInline, 'before' );\n\t\t}\n\t\tstylePromises.push( loadStylesheet( handle, stylesData[ handle ] ) );\n\t\tconst afterInline = inlineStyles.after?.[ handle ];\n\t\tif ( afterInline ) {\n\t\t\tinjectInlineStyle( handle, afterInline, 'after' );\n\t\t}\n\t}\n\n\t// Load scripts in dependency order\n\tconst scriptElementsHead: HTMLScriptElement[] = [];\n\tconst scriptElementsBody: HTMLScriptElement[] = [];\n\n\tfor ( const handle of orderedScripts ) {\n\t\tconst inFooter = scriptsData[ handle ].in_footer || false;\n\t\tconst scriptElements = inFooter\n\t\t\t? scriptElementsBody\n\t\t\t: scriptElementsHead;\n\n\t\tconst beforeInline = inlineScripts.before?.[ handle ];\n\t\tif ( beforeInline ) {\n\t\t\tscriptElements.push(\n\t\t\t\tinjectInlineScript( handle, beforeInline, 'before' )\n\t\t\t);\n\t\t}\n\n\t\tscriptElements.push( loadScript( handle, scriptsData[ handle ] ) );\n\n\t\tconst afterInline = inlineScripts.after?.[ handle ];\n\t\tif ( afterInline ) {\n\t\t\tscriptElements.push(\n\t\t\t\tinjectInlineScript( handle, afterInline, 'after' )\n\t\t\t);\n\t\t}\n\t}\n\n\tconst scriptsPromise = ( async () => {\n\t\tawait performScriptLoad( scriptElementsHead, document.head );\n\t\tawait performScriptLoad( scriptElementsBody, document.body );\n\t} )();\n\n\tawait Promise.all( [ Promise.all( stylePromises ), scriptsPromise ] );\n\n\t// Inject HTML templates (e.g., wp.media templates) into the DOM\n\t// Note: We can't use innerHTML for script tags, so we need to parse and create elements properly\n\tif ( htmlTemplates && htmlTemplates.length > 0 ) {\n\t\thtmlTemplates.forEach( ( templateHtml ) => {\n\t\t\t// Extract the script tag attributes and content\n\t\t\tconst scriptMatch = templateHtml.match(\n\t\t\t\t/<script([^>]*)>(.*?)<\\/script>/is\n\t\t\t);\n\t\t\tif ( scriptMatch ) {\n\t\t\t\tconst attributes = scriptMatch[ 1 ];\n\t\t\t\tconst content = scriptMatch[ 2 ];\n\n\t\t\t\t// Create a new script element\n\t\t\t\tconst script = document.createElement( 'script' );\n\n\t\t\t\t// Extract and set the id attribute\n\t\t\t\tconst idMatch = attributes.match( /id=[\"']([^\"']+)[\"']/ );\n\t\t\t\tif ( idMatch ) {\n\t\t\t\t\tscript.id = idMatch[ 1 ];\n\t\t\t\t}\n\n\t\t\t\t// Extract and set the type attribute\n\t\t\t\tconst typeMatch = attributes.match( /type=[\"']([^\"']+)[\"']/ );\n\t\t\t\tif ( typeMatch ) {\n\t\t\t\t\tscript.type = typeMatch[ 1 ];\n\t\t\t\t}\n\n\t\t\t\t// Set the content\n\t\t\t\tscript.textContent = content;\n\n\t\t\t\t// Append to body\n\t\t\t\tdocument.body.appendChild( script );\n\t\t\t}\n\t\t} );\n\t}\n}\n\nexport default loadAssets;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/build-types/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ type Script = {
|
|
|
12
12
|
in_footer?: boolean;
|
|
13
13
|
};
|
|
14
14
|
type InlineScript = string | string[];
|
|
15
|
-
|
|
15
|
+
type ScriptModules = Record<string, string>;
|
|
16
|
+
declare function loadAssets(scriptsData: Record<string, Script>, inlineScripts: Record<'before' | 'after', Record<string, InlineScript>>, stylesData: Record<string, Style>, inlineStyles: Record<'before' | 'after', Record<string, InlineStyle>>, htmlTemplates?: string[], scriptModules?: ScriptModules): Promise<void>;
|
|
16
17
|
export default loadAssets;
|
|
17
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AACF,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AACrC,KAAK,MAAM,GAAG;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AACF,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AACtC,KAAK,aAAa,GAAG,MAAM,CAAE,MAAM,EAAE,MAAM,CAAE,CAAC;AAuO9C,iBAAe,UAAU,CACxB,WAAW,EAAE,MAAM,CAAE,MAAM,EAAE,MAAM,CAAE,EACrC,aAAa,EAAE,MAAM,CAAE,QAAQ,GAAG,OAAO,EAAE,MAAM,CAAE,MAAM,EAAE,YAAY,CAAE,CAAE,EAC3E,UAAU,EAAE,MAAM,CAAE,MAAM,EAAE,KAAK,CAAE,EACnC,YAAY,EAAE,MAAM,CAAE,QAAQ,GAAG,OAAO,EAAE,MAAM,CAAE,MAAM,EAAE,WAAW,CAAE,CAAE,EACzE,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,aAAa,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAE,IAAI,CAAE,CA8FjB;AAED,eAAe,UAAU,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/asset-loader",
|
|
3
|
-
"version": "1.1.0",
|
|
3
|
+
"version": "1.1.1-next.dc3f6d3c1.0",
|
|
4
4
|
"description": "Utility to dynamically load WordPress scripts and styles with dependency resolution.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"publishConfig": {
|
|
41
41
|
"access": "public"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "f73b5e69b34fbaccfb8c47783f4f993059ff1a41"
|
|
44
44
|
}
|
package/src/index.ts
CHANGED
|
@@ -4,17 +4,68 @@ type Style = {
|
|
|
4
4
|
version?: string;
|
|
5
5
|
media?: string;
|
|
6
6
|
};
|
|
7
|
-
|
|
8
7
|
type InlineStyle = string | string[];
|
|
9
|
-
|
|
10
8
|
type Script = {
|
|
11
9
|
src: string;
|
|
12
10
|
deps?: string[];
|
|
13
11
|
version?: string;
|
|
14
12
|
in_footer?: boolean;
|
|
15
13
|
};
|
|
16
|
-
|
|
17
14
|
type InlineScript = string | string[];
|
|
15
|
+
type ScriptModules = Record< string, string >;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Injects or extends the import map with new module entries.
|
|
19
|
+
*
|
|
20
|
+
* @param scriptModules - Object mapping module specifiers to URLs
|
|
21
|
+
*/
|
|
22
|
+
function injectImportMap( scriptModules: Record< string, string > ): void {
|
|
23
|
+
if ( ! scriptModules || Object.keys( scriptModules ).length === 0 ) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Find the existing import map script element
|
|
28
|
+
const existingMapElement = document.querySelector< HTMLScriptElement >(
|
|
29
|
+
'script#wp-importmap[type=importmap]'
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
if ( existingMapElement ) {
|
|
33
|
+
try {
|
|
34
|
+
// Parse the existing import map
|
|
35
|
+
const existingMap = JSON.parse( existingMapElement.text );
|
|
36
|
+
|
|
37
|
+
// Ensure the imports object exists
|
|
38
|
+
if ( ! existingMap.imports ) {
|
|
39
|
+
existingMap.imports = {};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Merge new imports with existing ones (new entries take precedence)
|
|
43
|
+
existingMap.imports = {
|
|
44
|
+
...existingMap.imports,
|
|
45
|
+
...scriptModules,
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// Update the script element's content
|
|
49
|
+
existingMapElement.text = JSON.stringify( existingMap, null, 2 );
|
|
50
|
+
} catch ( error ) {
|
|
51
|
+
// eslint-disable-next-line no-console
|
|
52
|
+
console.error( 'Failed to parse or update import map:', error );
|
|
53
|
+
}
|
|
54
|
+
} else {
|
|
55
|
+
// If no import map exists, create a new one
|
|
56
|
+
const script = document.createElement( 'script' );
|
|
57
|
+
script.type = 'importmap';
|
|
58
|
+
script.id = 'wp-importmap';
|
|
59
|
+
script.text = JSON.stringify(
|
|
60
|
+
{
|
|
61
|
+
imports: scriptModules,
|
|
62
|
+
},
|
|
63
|
+
null,
|
|
64
|
+
2
|
|
65
|
+
);
|
|
66
|
+
document.head.appendChild( script );
|
|
67
|
+
}
|
|
68
|
+
}
|
|
18
69
|
|
|
19
70
|
function loadStylesheet( handle: string, styleData: Style ): Promise< void > {
|
|
20
71
|
return new Promise( ( resolve ) => {
|
|
@@ -196,8 +247,15 @@ async function loadAssets(
|
|
|
196
247
|
scriptsData: Record< string, Script >,
|
|
197
248
|
inlineScripts: Record< 'before' | 'after', Record< string, InlineScript > >,
|
|
198
249
|
stylesData: Record< string, Style >,
|
|
199
|
-
inlineStyles: Record< 'before' | 'after', Record< string, InlineStyle >
|
|
250
|
+
inlineStyles: Record< 'before' | 'after', Record< string, InlineStyle > >,
|
|
251
|
+
htmlTemplates?: string[],
|
|
252
|
+
scriptModules?: ScriptModules
|
|
200
253
|
): Promise< void > {
|
|
254
|
+
// Inject import map first so script modules can be resolved
|
|
255
|
+
if ( scriptModules ) {
|
|
256
|
+
injectImportMap( scriptModules );
|
|
257
|
+
}
|
|
258
|
+
|
|
201
259
|
// Build dependency-ordered lists
|
|
202
260
|
const orderedStyles = buildDependencyOrderedList( stylesData );
|
|
203
261
|
const orderedScripts = buildDependencyOrderedList( scriptsData );
|
|
@@ -250,6 +308,42 @@ async function loadAssets(
|
|
|
250
308
|
} )();
|
|
251
309
|
|
|
252
310
|
await Promise.all( [ Promise.all( stylePromises ), scriptsPromise ] );
|
|
311
|
+
|
|
312
|
+
// Inject HTML templates (e.g., wp.media templates) into the DOM
|
|
313
|
+
// Note: We can't use innerHTML for script tags, so we need to parse and create elements properly
|
|
314
|
+
if ( htmlTemplates && htmlTemplates.length > 0 ) {
|
|
315
|
+
htmlTemplates.forEach( ( templateHtml ) => {
|
|
316
|
+
// Extract the script tag attributes and content
|
|
317
|
+
const scriptMatch = templateHtml.match(
|
|
318
|
+
/<script([^>]*)>(.*?)<\/script>/is
|
|
319
|
+
);
|
|
320
|
+
if ( scriptMatch ) {
|
|
321
|
+
const attributes = scriptMatch[ 1 ];
|
|
322
|
+
const content = scriptMatch[ 2 ];
|
|
323
|
+
|
|
324
|
+
// Create a new script element
|
|
325
|
+
const script = document.createElement( 'script' );
|
|
326
|
+
|
|
327
|
+
// Extract and set the id attribute
|
|
328
|
+
const idMatch = attributes.match( /id=["']([^"']+)["']/ );
|
|
329
|
+
if ( idMatch ) {
|
|
330
|
+
script.id = idMatch[ 1 ];
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// Extract and set the type attribute
|
|
334
|
+
const typeMatch = attributes.match( /type=["']([^"']+)["']/ );
|
|
335
|
+
if ( typeMatch ) {
|
|
336
|
+
script.type = typeMatch[ 1 ];
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
// Set the content
|
|
340
|
+
script.textContent = content;
|
|
341
|
+
|
|
342
|
+
// Append to body
|
|
343
|
+
document.body.appendChild( script );
|
|
344
|
+
}
|
|
345
|
+
} );
|
|
346
|
+
}
|
|
253
347
|
}
|
|
254
348
|
|
|
255
349
|
export default loadAssets;
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/typescript/lib/lib.es2024.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/typescript/lib/lib.esnext.promise.d.ts","../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../node_modules/typescript/lib/lib.esnext.error.d.ts","../../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/index.ts"],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"d996b738f5bceb47adf7455d124bf95945dd1bdb7ae59eaa5e63f10314b5e510","signature":"6679d5210ebacdd10d67701f2eb77317d930d4024959c1b6e86cd85588a9cd74"}],"root":[83],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"checkJs":true,"composite":true,"declaration":true,"declarationDir":"./build-types","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":false,"jsx":1,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"rootDir":"./src","skipDefaultLibCheck":true,"strict":true,"target":99},"latestChangedDtsFile":"./build-types/index.d.ts","version":"5.9.3"}
|
|
1
|
+
{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/typescript/lib/lib.es2024.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/typescript/lib/lib.esnext.promise.d.ts","../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../node_modules/typescript/lib/lib.esnext.error.d.ts","../../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/index.ts"],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"e91484a069b19135ee1841b8cac46d1bd511f1142d5eb257fc3f9765c1708e03","signature":"a89c94bf9be67c44067e73c782565cc2d1d0811b4a1eba32466182d000ce8873"}],"root":[83],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"checkJs":true,"composite":true,"declaration":true,"declarationDir":"./build-types","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":false,"jsx":1,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"rootDir":"./src","skipDefaultLibCheck":true,"strict":true,"target":99},"latestChangedDtsFile":"./build-types/index.d.ts","version":"5.9.3"}
|