@wcstack/autoloader 1.29.0 → 1.31.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/dist/auto.min.js +1 -1
- package/dist/auto.min.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.esm.js +117 -29
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/auto.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e="*",t="vanilla",n={postfix:".js",loader:async function(e){return(await import(`${e}`)).default}},o={scanImportmap:!0,loaders:{[t]:n,[e]:t},observable:!0,tagNames:{autoloader:"wcs-autoloader"}},
|
|
1
|
+
const e="*",t="vanilla",n={postfix:".js",loader:async function(e){return(await import(`${e}`)).default}},o={scanImportmap:!0,loaders:{[t]:n,[e]:t},observable:!0,tagNames:{autoloader:"wcs-autoloader"}},r="@components/";function a(e){if(e.startsWith(r)){if(e.endsWith("/")){const t=e.slice(12,e.length-1),[n,o]=t.split("|",2);if(""===n)throw new Error("Invalid importmap key: "+e);return{key:e,prefix:n.replaceAll("/","-").toLowerCase(),loaderKey:o??null,isNameSpaced:!0}}{const t=e.slice(12),[n,o]=t.split("|",2),[r,a]=(o??"").split(",",2);if(""===n)throw new Error("Invalid importmap key: "+e);return{key:e,tagName:n.replaceAll("/","-").toLowerCase(),loaderKey:r||null,extends:a||null,isNameSpaced:!1}}}return null}function l(t,n,o){let r;if(null===n||n===e||""===n){let n=null;const a=[];for(const[t,n]of Object.entries(o)){if(t===e)continue;const r="string"==typeof n?o[n]:n;"string"!=typeof r&&a.push(r)}a.sort((e,t)=>t.postfix.length-e.postfix.length);for(const e of a)if(t.endsWith(e.postfix)){n=e;break}n?r=n:(r=o[e],"string"==typeof r&&(r=o[r]))}else if(r=o[n],!r)throw new Error("Loader not found: "+n);if("string"==typeof r)throw new Error("Loader redirection is not supported here");return r}const i=new Set,s=new Map;let c=new WeakMap;function m(e){if(e===globalThis.customElements)return s;let t=c.get(e);return void 0===t&&(t=new Map,c.set(e,t)),t}const u=new Map;if("undefined"!=typeof window){[[HTMLButtonElement,"button"],[HTMLInputElement,"input"],[HTMLAnchorElement,"a"],[HTMLImageElement,"img"],[HTMLDivElement,"div"],[HTMLSpanElement,"span"],[HTMLParagraphElement,"p"],[HTMLUListElement,"ul"],[HTMLOListElement,"ol"],[HTMLLIElement,"li"],[HTMLTableElement,"table"],[HTMLFormElement,"form"],[HTMLLabelElement,"label"],[HTMLSelectElement,"select"],[HTMLTextAreaElement,"textarea"],[HTMLHeadingElement,"h1"],[HTMLQuoteElement,"blockquote"],[HTMLPreElement,"pre"],[HTMLBRElement,"br"],[HTMLHRElement,"hr"],[HTMLModElement,"ins"],[HTMLTableCaptionElement,"caption"],[HTMLTableColElement,"col"],[HTMLTableSectionElement,"tbody"],[HTMLTableRowElement,"tr"],[HTMLTableCellElement,"td"],[HTMLFieldSetElement,"fieldset"],[HTMLLegendElement,"legend"],[HTMLDListElement,"dl"],[HTMLOptGroupElement,"optgroup"],[HTMLOptionElement,"option"],[HTMLStyleElement,"style"],[HTMLScriptElement,"script"],[HTMLTemplateElement,"template"],[HTMLCanvasElement,"canvas"],[HTMLIFrameElement,"iframe"],[HTMLObjectElement,"object"],[HTMLEmbedElement,"embed"],[HTMLVideoElement,"video"],[HTMLAudioElement,"audio"],[HTMLTrackElement,"track"],[HTMLMapElement,"map"],[HTMLAreaElement,"area"],[HTMLSourceElement,"source"],[HTMLParamElement,"param"],[HTMLMeterElement,"meter"],[HTMLProgressElement,"progress"],[HTMLOutputElement,"output"],[HTMLDetailsElement,"details"],[HTMLDialogElement,"dialog"],[HTMLMenuElement,"menu"],[HTMLSlotElement,"slot"],[HTMLTimeElement,"time"],[HTMLDataElement,"data"],[HTMLPictureElement,"picture"]].forEach(([e,t])=>{void 0!==e&&u.set(e,t)})}async function d(e,t,n){try{if(customElements.get(t))return;const o=await n.loader(e.key);if(null!==o){let n=e.extends;if(null===n&&(n=function(e){for(const[t,n]of u)if(e.prototype instanceof t)return n;return null}(o)),customElements.get(t))return;null===n?customElements.define(t,o):customElements.define(t,o,{extends:n})}}catch(e){i.has(t)||(console.error(`Failed to eager load component '${t}':`,e),i.add(t))}}function f(e){if("object"!=typeof e||null===e)return null;const t=e;return"function"!=typeof t.get||"function"!=typeof t.whenDefined||"function"!=typeof t.define?null:t}function p(e){const t=e.tagName.toLowerCase();let n,o;if(t.includes("-"))n=t,o=null;else{const r=e.getAttribute("is");if(null===r)throw new Error("Custom element without a dash or 'is' attribute found: "+t);if(!r.includes("-"))throw new Error("Custom element 'is' attribute without a dash found: "+t);n=r,o=t}return{name:n,extends:o}}const E=new WeakSet,L=new WeakSet;async function M(e,t,n){e.shadowRoot&&(E.has(e)||await async function(e,t,n){E.add(e),await y(e.shadowRoot,t,n)}(e,t,n))}async function T(e,t,n,o){const r=function(e,t){for(const[n,o]of Object.entries(t))if(e.startsWith(n+"-"))return o;return null}(e.name,n);if(null===r)throw new Error("No matching namespace found for lazy loaded component: "+e.name);const a=m(o),s=a.get(e.name);if(void 0!==s)return void await s;const c=async function(e,t,n,o){try{let r;try{r=l("",n.loaderKey,t.loaders)}catch(t){throw new Error("Loader redirection is not supported for lazy loaded components: "+e.name)}const a=e.name.slice(n.prefix.length+1);if(""===a)throw new Error("Invalid component name for lazy loaded component: "+e.name);const i=n.key+a+r.postfix;if(o.get(e.name))return;const s=await r.loader(i);if(null===s)throw new Error("Loader returned null for component: "+e.name);if(o.get(e.name))return;null===e.extends?o.define(e.name,s):o.define(e.name,s,{extends:e.extends})}catch(t){console.error(`Failed to lazy load component '${e.name}':`,t),i.add(e.name)}}(e,t,r,o);a.set(e.name,c);try{await c}finally{a.delete(e.name)}}async function h(e,t,n,o){const r=[],a=(e.ownerDocument??e).createTreeWalker(e,NodeFilter.SHOW_ELEMENT,e=>(e=>(e instanceof Element&&(e.tagName.includes("-")||e.getAttribute("is")?.includes("-")))??!1)(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP);for(;a.nextNode();)r.push(a.currentNode);const l=[],s=new Set;for(const e of r){const r=p(e);void 0===o.get(r.name)?(L.has(e)||(L.add(e),o.whenDefined(r.name).then(async()=>{await M(e,t,n)})),s.has(r.name)||i.has(r.name)||(s.add(r.name),l.push(r))):await M(e,t,n)}let c=0;for(const e of l)await T(e,t,n,o),c++;return c}async function w(e,t,n,o){for(;await h(e,t,n,o)>0;);}async function y(e,t,n){if(0===Object.keys(n).length)return null;const o=function(e=null){if(null!=e){const t=e.customElementRegistry;if(null===t)return null;if(void 0!==t)return f(t)}return f(globalThis.customElements)}(e);if(null===o)return console.error("Cannot autoload components: the root has a null custom element registry."),null;try{await w(e,t,n,o)}catch(e){throw new Error("Failed to lazy load components: "+e)}if(!t.observable)return null;const r=new MutationObserver(async()=>{try{await w(e,t,n,o)}catch(e){console.error("Failed to lazy load components: "+e)}});return r.observe(e,{childList:!0,subtree:!0}),r}class H extends HTMLElement{static _instance=null;_initialized=!1;_prefixMap=null;_observer=null;constructor(){if(super(),H._instance)throw new Error(`${o.tagNames.autoloader} can only be instantiated once.`);H._instance=this;const e=function(){const e={imports:{}};return document.querySelectorAll('script[type="importmap"]').forEach(t=>{try{const n=JSON.parse(t.innerHTML);n.imports&&(e.imports=Object.assign(e.imports,n.imports))}catch(e){throw new Error("Failed to parse importmap JSON: "+e)}}),Object.keys(e.imports).length>0?e:null}();if(e){const{prefixMap:t,loadMap:n}=function(e){const t={},n={};for(const[o,r]of Object.entries(e.imports)){const e=a(o);null!==e&&(e.isNameSpaced?t[e.prefix]=e:n[e.tagName]=e)}return{prefixMap:t,loadMap:n}}(e);this._prefixMap=t,async function(e,t){const n=[];for(const[o,r]of Object.entries(e)){let e;try{e=l(r.key,r.loaderKey,t)}catch(e){throw new Error("Loader redirection is not supported for eager loaded components: "+o)}n.push(d(r,o,e))}await Promise.all(n)}(n,o.loaders).catch(e=>{console.error("Failed to eager load components:",e)})}}async connectedCallback(){this._initialized||(this._initialized=!0,this._prefixMap&&("loading"===document.readyState&&await new Promise(e=>document.addEventListener("DOMContentLoaded",()=>e(),{once:!0})),this._observer=await y(document,o,this._prefixMap)))}disconnectedCallback(){this._observer?.disconnect(),this._observer=null,H._instance===this&&(H._instance=null)}}function g(e=customElements){e.get(o.tagNames.autoloader)||e.define(o.tagNames.autoloader,H)}var b;g(b);
|
|
2
2
|
//# sourceMappingURL=auto.min.js.map
|
package/dist/auto.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto.min.js","sources":["../src/config.ts","../src/vanilla.ts","../src/importmap.ts","../src/resolveLoader.ts","../src/tags.ts","../src/eagerload.ts","../src/lazyLoad.ts","../src/components/Autoloader.ts","../src/registerComponents.ts","../src/bootstrapAutoloader.ts"],"sourcesContent":["\nimport { IConfig, ILoader, IWritableConfig } from \"./types.js\"\nimport { load } from \"./vanilla.js\"\n\ninterface IInternalConfig extends IConfig {\n scanImportmap: boolean;\n loaders: Record<string, ILoader | string>;\n observable: boolean;\n tagNames: {\n autoloader: string;\n };\n}\n\nexport const DEFAULT_KEY = \"*\";\n\nexport const VANILLA_KEY = \"vanilla\";\n\nexport const VANILLA_LOADER = {\n postfix: \".js\",\n loader: load\n}\n\nconst _config: IInternalConfig = {\n scanImportmap: true,\n loaders: {\n [VANILLA_KEY]: VANILLA_LOADER,\n [DEFAULT_KEY]: VANILLA_KEY\n },\n observable: true,\n tagNames: {\n autoloader: \"wcs-autoloader\"\n }\n}\n\nfunction deepFreeze<T>(obj: T): T {\n if (obj === null || typeof obj !== \"object\") return obj;\n Object.freeze(obj);\n for (const key of Object.keys(obj)) {\n deepFreeze((obj as Record<string, unknown>)[key]);\n }\n return obj;\n}\n\nfunction deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== \"object\") return obj;\n const clone: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n clone[key] = deepClone((obj as Record<string, unknown>)[key]);\n }\n return clone as T;\n}\n\nlet frozenConfig: IConfig | null = null;\n\n// 後方互換のため config もエクスポート(読み取り専用として使用)\nexport const config: IConfig = _config as IConfig;\n\nexport function getConfig(): IConfig {\n if (!frozenConfig) {\n frozenConfig = deepFreeze(deepClone(_config));\n }\n return frozenConfig;\n}\n\nexport function setConfig(partialConfig: IWritableConfig): void {\n if (typeof partialConfig.scanImportmap === \"boolean\") {\n _config.scanImportmap = partialConfig.scanImportmap;\n }\n if (partialConfig.loaders) {\n Object.assign(_config.loaders, partialConfig.loaders);\n }\n if (typeof partialConfig.observable === \"boolean\") {\n _config.observable = partialConfig.observable;\n }\n if (partialConfig.tagNames) {\n Object.assign(_config.tagNames, partialConfig.tagNames);\n }\n frozenConfig = null;\n}\n","\nexport async function load(path: string): Promise<CustomElementConstructor> {\n const module = await import(`${path}`);\n return module.default as CustomElementConstructor;\n}\n","import { IImportMap, IKeyInfo, ILoadMap, IPrefixMap } from \"./types.js\";\n\nconst COMPONENT_KEYWORD = \"@components/\";\n\nexport function loadImportmap(): IImportMap | null {\n const importmap: IImportMap = { imports: {} };\n document.querySelectorAll('script[type=\"importmap\"]').forEach((script) => {\n try {\n const json = JSON.parse(script.innerHTML);\n if (json.imports) {\n importmap.imports = Object.assign(importmap.imports, json.imports);\n }\n } catch (e) {\n throw new Error(\"Failed to parse importmap JSON: \" + e);\n }\n });\n return Object.keys(importmap.imports).length > 0\n ? importmap\n : null;\n}\n\nfunction getKeyInfoFromImportmapKey(key: string): IKeyInfo | null {\n if (key.startsWith(COMPONENT_KEYWORD)) {\n if (key.endsWith(\"/\")) {\n const prefixWithLoader = key.slice(COMPONENT_KEYWORD.length, key.length - 1);\n const [ prefix, loaderKey ] = prefixWithLoader.split(\"|\", 2);\n if (prefix === \"\") {\n throw new Error(\"Invalid importmap key: \" + key);\n }\n return {\n key,\n prefix: prefix.replaceAll(\"/\", \"-\").toLowerCase(),\n loaderKey: loaderKey ?? null,\n isNameSpaced: true\n };\n } else {\n const tagNamePart = key.slice(COMPONENT_KEYWORD.length);\n const [ tagName, loaderKeyPart ] = tagNamePart.split(\"|\", 2);\n const [ loaderKey, extendsText ] = (loaderKeyPart ?? \"\").split(\",\", 2);\n if (tagName === \"\") {\n throw new Error(\"Invalid importmap key: \" + key);\n }\n return {\n key,\n tagName: tagName.replaceAll(\"/\", \"-\").toLowerCase(),\n loaderKey: loaderKey || null,\n extends: extendsText || null,\n isNameSpaced: false\n };\n }\n }\n return null;\n}\n\nexport function buildMap(importmap: IImportMap): {\n prefixMap: IPrefixMap, loadMap: ILoadMap\n} {\n const prefixMap: IPrefixMap = {};\n const loadMap: ILoadMap = {};\n for (const [key, _value] of Object.entries(importmap.imports)) {\n const keyInfo = getKeyInfoFromImportmapKey(key);\n if (keyInfo === null) {\n continue;\n }\n if (keyInfo.isNameSpaced) {\n prefixMap[keyInfo.prefix] = keyInfo;\n } else {\n loadMap[keyInfo.tagName] = keyInfo;\n }\n }\n return { prefixMap, loadMap };\n}","import { DEFAULT_KEY } from \"./config.js\";\nimport { ILoader } from \"./types.js\";\n\nexport function resolveLoader(\n path: string,\n loaderKey: string | null,\n loaders: Record<string, ILoader | string>\n): ILoader {\n let loader: ILoader | string;\n\n if (loaderKey === null || loaderKey === DEFAULT_KEY || loaderKey === \"\") {\n // Try to resolve by postfix\n let resolvedLoader: ILoader | null = null;\n \n const candidates: ILoader[] = [];\n for (const [key, l] of Object.entries(loaders)) {\n if (key === DEFAULT_KEY) continue;\n const currentLoader = typeof l === \"string\" ? loaders[l] : l;\n if (typeof currentLoader === \"string\") continue; // Should not happen if config is correct\n candidates.push(currentLoader);\n }\n\n // Sort by postfix length descending to match longest extension first\n candidates.sort((a, b) => b.postfix.length - a.postfix.length);\n\n for (const currentLoader of candidates) {\n if (path.endsWith(currentLoader.postfix)) {\n resolvedLoader = currentLoader;\n break;\n }\n }\n\n if (resolvedLoader) {\n loader = resolvedLoader;\n } else {\n loader = loaders[DEFAULT_KEY];\n if (typeof loader === \"string\") {\n loader = loaders[loader];\n }\n }\n } else {\n loader = loaders[loaderKey];\n if (!loader) {\n throw new Error(\"Loader not found: \" + loaderKey);\n }\n }\n\n if (typeof loader === \"string\") {\n throw new Error(\"Loader redirection is not supported here\");\n }\n return loader;\n}\n","\nexport const failedTags = new Set<string>();\nexport const loadingTags = new Set<string>();\n\nexport function resetState() {\n failedTags.clear();\n loadingTags.clear();\n}\n\n","import { resolveLoader } from \"./resolveLoader.js\";\nimport { failedTags } from \"./tags.js\";\nimport { IEagerLoadInfo, ILoader } from \"./types.js\";\n\nconst EXTENDS_MAP = new Map<any, string>();\n\nif (typeof window !== \"undefined\") {\n const map = [\n [HTMLButtonElement, \"button\"],\n [HTMLInputElement, \"input\"],\n [HTMLAnchorElement, \"a\"],\n [HTMLImageElement, \"img\"],\n [HTMLDivElement, \"div\"],\n [HTMLSpanElement, \"span\"],\n [HTMLParagraphElement, \"p\"],\n [HTMLUListElement, \"ul\"],\n [HTMLOListElement, \"ol\"],\n [HTMLLIElement, \"li\"],\n [HTMLTableElement, \"table\"],\n [HTMLFormElement, \"form\"],\n [HTMLLabelElement, \"label\"],\n [HTMLSelectElement, \"select\"],\n [HTMLTextAreaElement, \"textarea\"],\n [HTMLHeadingElement, \"h1\"],\n [HTMLQuoteElement, \"blockquote\"],\n [HTMLPreElement, \"pre\"],\n [HTMLBRElement, \"br\"],\n [HTMLHRElement, \"hr\"],\n [HTMLModElement, \"ins\"],\n [HTMLTableCaptionElement, \"caption\"],\n [HTMLTableColElement, \"col\"],\n [HTMLTableSectionElement, \"tbody\"],\n [HTMLTableRowElement, \"tr\"],\n [HTMLTableCellElement, \"td\"],\n [HTMLFieldSetElement, \"fieldset\"],\n [HTMLLegendElement, \"legend\"],\n [HTMLDListElement, \"dl\"],\n [HTMLOptGroupElement, \"optgroup\"],\n [HTMLOptionElement, \"option\"],\n [HTMLStyleElement, \"style\"],\n [HTMLScriptElement, \"script\"],\n [HTMLTemplateElement, \"template\"],\n [HTMLCanvasElement, \"canvas\"],\n [HTMLIFrameElement, \"iframe\"],\n [HTMLObjectElement, \"object\"],\n [HTMLEmbedElement, \"embed\"],\n [HTMLVideoElement, \"video\"],\n [HTMLAudioElement, \"audio\"],\n [HTMLTrackElement, \"track\"],\n [HTMLMapElement, \"map\"],\n [HTMLAreaElement, \"area\"],\n [HTMLSourceElement, \"source\"],\n [HTMLParamElement, \"param\"],\n [HTMLMeterElement, \"meter\"],\n [HTMLProgressElement, \"progress\"],\n [HTMLOutputElement, \"output\"],\n [HTMLDetailsElement, \"details\"],\n [HTMLDialogElement, \"dialog\"],\n [HTMLMenuElement, \"menu\"],\n [HTMLSlotElement, \"slot\"],\n [HTMLTimeElement, \"time\"],\n [HTMLDataElement, \"data\"],\n [HTMLPictureElement, \"picture\"],\n ] as const;\n\n map.forEach(([cls, tag]) => {\n /* istanbul ignore next */\n if (typeof cls !== \"undefined\") {\n EXTENDS_MAP.set(cls, tag);\n }\n });\n}\n\nfunction resolveExtends(componentConstructor: CustomElementConstructor): string | null {\n for (const [cls, tag] of EXTENDS_MAP) {\n if (componentConstructor.prototype instanceof cls) {\n return tag;\n }\n }\n return null;\n}\n\nasync function eagerLoadItem(info: IEagerLoadInfo, tagName:string, loader: ILoader): Promise<void> {\n try {\n if (customElements.get(tagName)) {\n // すでに定義済み\n return;\n }\n const componentConstructor = await loader.loader(info.key);\n if (componentConstructor !== null) {\n let extendsName = info.extends;\n if (extendsName === null) {\n extendsName = resolveExtends(componentConstructor);\n }\n\n if (customElements.get(tagName)) {\n // すでに定義済み\n return;\n }\n if (extendsName === null) {\n customElements.define(tagName, componentConstructor);\n } else {\n customElements.define(tagName, componentConstructor, { extends: extendsName });\n }\n }\n } catch(e) {\n if (!failedTags.has(tagName)) {\n console.error(`Failed to eager load component '${tagName}':`, e);\n failedTags.add(tagName);\n }\n }\n\n}\n\nexport async function eagerLoad(\n loadMap: Record<string, IEagerLoadInfo>, \n loaders: Record<string, ILoader | string>\n): Promise<void> {\n const promises: Promise<void>[] = [];\n for(const [tagName, info] of Object.entries(loadMap)) {\n let loader: ILoader;\n try {\n loader = resolveLoader(info.key, info.loaderKey, loaders);\n } catch (_e) {\n throw new Error(\"Loader redirection is not supported for eager loaded components: \" + tagName);\n }\n promises.push(eagerLoadItem(info, tagName, loader));\n }\n await Promise.all(promises);\n}\n","import { resolveLoader } from \"./resolveLoader.js\";\nimport { failedTags, loadingTags } from \"./tags.js\";\nimport { IConfig, ILoader, INameSpaceInfo, IPrefixMap, ITagInfo } from \"./types.js\";\n\nconst isCustomElement = (node: Node): boolean => {\n return (node instanceof Element && (node.tagName.includes(\"-\") || node.getAttribute(\"is\")?.includes(\"-\"))) ?? false;\n}\n\nexport function getCustomTagInfo(e: Element): ITagInfo {\n const elementTagName = e.tagName.toLowerCase();\n let name;\n let extendsName;\n if (elementTagName.includes(\"-\")) {\n name = elementTagName;\n extendsName = null;\n } else {\n const tagName = e.getAttribute(\"is\");\n if (tagName === null) {\n throw new Error(\"Custom element without a dash or 'is' attribute found: \" + elementTagName);\n }\n if (!tagName.includes(\"-\")) {\n throw new Error(\"Custom element 'is' attribute without a dash found: \" + elementTagName);\n }\n name = tagName;\n extendsName = elementTagName;\n }\n return { name, extends: extendsName };\n}\n\nconst observedCustomElements: WeakSet<Element> = new WeakSet<Element>();\n\nasync function observeShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\n observedCustomElements.add(element);\n await handlerForLazyLoad(element.shadowRoot!, config, prefixMap);\n}\n\nasync function checkObserveShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\n if (element.shadowRoot) {\n if (!observedCustomElements.has(element)) {\n await observeShadowRoot(element, config, prefixMap);\n }\n }\n}\n\nfunction matchNameSpace(tagName: string, prefixMap: IPrefixMap): INameSpaceInfo | null {\n for (const [prefix, info] of Object.entries(prefixMap)) {\n if (tagName.startsWith(prefix + \"-\")) {\n return info;\n }\n }\n return null;\n}\n\nasync function tagLoad(tagInfo: ITagInfo, config: IConfig, prefixMap: IPrefixMap): Promise<void> {\n const info: INameSpaceInfo | null = matchNameSpace(tagInfo.name, prefixMap);\n if (info === null) {\n throw new Error(\"No matching namespace found for lazy loaded component: \" + tagInfo.name);\n }\n \n if (loadingTags.has(tagInfo.name)) {\n await customElements.whenDefined(tagInfo.name);\n return;\n } \n loadingTags.add(tagInfo.name);\n try {\n let loader: ILoader;\n try {\n loader = resolveLoader(\"\", info.loaderKey, config.loaders);\n } catch (_e) {\n throw new Error(\"Loader redirection is not supported for lazy loaded components: \" + tagInfo.name);\n }\n\n const file: string = tagInfo.name.slice(info.prefix.length + 1);\n if (file === \"\") {\n throw new Error(\"Invalid component name for lazy loaded component: \" + tagInfo.name);\n }\n const path = info.key + file + loader.postfix;\n\n if (customElements.get(tagInfo.name)) {\n // すでに定義済み\n return;\n }\n const componentConstructor = await loader.loader(path);\n if (componentConstructor !== null) {\n if (customElements.get(tagInfo.name)) {\n // すでに定義済み\n return;\n }\n if (tagInfo.extends === null) {\n customElements.define(tagInfo.name, componentConstructor);\n } else {\n customElements.define(tagInfo.name, componentConstructor, { extends: tagInfo.extends });\n }\n } else {\n throw new Error(\"Loader returned null for component: \" + tagInfo.name);\n }\n } catch(e) {\n console.error(`Failed to lazy load component '${tagInfo.name}':`, e);\n failedTags.add(tagInfo.name);\n } finally {\n loadingTags.delete(tagInfo.name);\n }\n}\n\n//\nasync function lazyLoad(root: Node, config: IConfig, prefixMap: IPrefixMap): Promise<number> {\n const elements: Element[] = [];\n\n // Create TreeWalker (target element and comment nodes)\n const walker = document.createTreeWalker(\n root, \n NodeFilter.SHOW_ELEMENT,\n (node: Node): number => {\n return isCustomElement(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n } \n );\n \n // Move to next node with TreeWalker and add matching nodes to array\n while (walker.nextNode()) {\n elements.push(walker.currentNode as Element);\n }\n\n const tagInfos: ITagInfo[] = [];\n const tagNames = new Set<string>();\n for(const element of elements) {\n const tagInfo = getCustomTagInfo(element);\n const customClass = customElements.get(tagInfo.name);\n if (customClass === undefined) {\n // undefined\n customElements.whenDefined(tagInfo.name).then(async () => {\n // upgraded\n await checkObserveShadowRoot(element, config, prefixMap);\n });\n if (!tagNames.has(tagInfo.name) && !failedTags.has(tagInfo.name)) {\n tagNames.add(tagInfo.name);\n tagInfos.push(tagInfo);\n }\n } else {\n // upgraded\n await checkObserveShadowRoot(element, config, prefixMap);\n }\n }\n let tagCount = 0;\n for(const tagInfo of tagInfos) {\n await tagLoad(tagInfo, config, prefixMap);\n tagCount++;\n }\n return tagCount;\n\n}\n\nasync function lazyLoads(\n root: Document | ShadowRoot, \n config: IConfig, \n prefixMap: IPrefixMap\n): Promise<void> {\n while(await lazyLoad(root, config, prefixMap) > 0) {\n // Repeat until no more tags to load\n }\n}\n\nexport async function handlerForLazyLoad(\n root: Document | ShadowRoot,\n config: IConfig,\n prefixMap: IPrefixMap\n): Promise<MutationObserver | null> {\n if (Object.keys(prefixMap).length === 0) {\n return null;\n }\n try {\n await lazyLoads(root, config, prefixMap);\n } catch(e) {\n throw new Error(\"Failed to lazy load components: \" + e);\n }\n\n if (!config.observable) {\n return null;\n }\n const mo = new MutationObserver(async (): Promise<void> => {\n try {\n await lazyLoads(root, config, prefixMap);\n } catch(e) {\n console.error(\"Failed to lazy load components: \" + e);\n }\n });\n mo.observe(root, { childList: true, subtree: true });\n return mo;\n}\n","import { config } from \"../config.js\";\nimport { buildMap, loadImportmap } from \"../importmap.js\";\nimport { eagerLoad } from \"../eagerload.js\";\nimport { handlerForLazyLoad } from \"../lazyLoad.js\";\nimport { IPrefixMap } from \"../types.js\";\n\nexport class Autoloader extends HTMLElement {\n private static _instance: Autoloader | null = null;\n private _initialized = false;\n private _prefixMap: IPrefixMap | null = null;\n private _observer: MutationObserver | null = null;\n\n constructor() {\n super();\n if (Autoloader._instance) {\n throw new Error(\n `${config.tagNames.autoloader} can only be instantiated once.`\n );\n }\n Autoloader._instance = this;\n\n const importmap = loadImportmap();\n if (importmap) {\n const { prefixMap, loadMap } = buildMap(importmap);\n this._prefixMap = prefixMap;\n eagerLoad(loadMap, config.loaders).catch((e) => {\n console.error(\"Failed to eager load components:\", e);\n });\n }\n }\n\n async connectedCallback() {\n if (!this._initialized) {\n this._initialized = true;\n if (this._prefixMap) {\n if (document.readyState === \"loading\") {\n await new Promise<void>((r) =>\n document.addEventListener(\"DOMContentLoaded\", () => r(), {\n once: true,\n })\n );\n }\n this._observer = await handlerForLazyLoad(\n document,\n config,\n this._prefixMap\n );\n }\n }\n }\n\n disconnectedCallback() {\n this._observer?.disconnect();\n this._observer = null;\n if (Autoloader._instance === this) {\n Autoloader._instance = null;\n }\n }\n}\n","import { Autoloader } from \"./components/Autoloader.js\";\nimport { config } from \"./config.js\";\n\nexport function registerComponents() {\n if (!customElements.get(config.tagNames.autoloader)) {\n customElements.define(config.tagNames.autoloader, Autoloader);\n }\n}\n","import { setConfig } from \"./config.js\";\nimport { registerComponents } from \"./registerComponents.js\";\nimport { IWritableConfig } from \"./types.js\";\n\nexport function bootstrapAutoloader(config?: IWritableConfig): void {\n if (config) {\n setConfig(config);\n }\n registerComponents();\n}\n"],"names":["DEFAULT_KEY","VANILLA_KEY","VANILLA_LOADER","postfix","loader","async","path","import","default","config","scanImportmap","loaders","observable","tagNames","autoloader","COMPONENT_KEYWORD","getKeyInfoFromImportmapKey","key","startsWith","endsWith","prefixWithLoader","slice","length","prefix","loaderKey","split","Error","replaceAll","toLowerCase","isNameSpaced","tagNamePart","tagName","loaderKeyPart","extendsText","extends","resolveLoader","resolvedLoader","candidates","l","Object","entries","currentLoader","push","sort","a","b","failedTags","Set","loadingTags","EXTENDS_MAP","Map","window","HTMLButtonElement","HTMLInputElement","HTMLAnchorElement","HTMLImageElement","HTMLDivElement","HTMLSpanElement","HTMLParagraphElement","HTMLUListElement","HTMLOListElement","HTMLLIElement","HTMLTableElement","HTMLFormElement","HTMLLabelElement","HTMLSelectElement","HTMLTextAreaElement","HTMLHeadingElement","HTMLQuoteElement","HTMLPreElement","HTMLBRElement","HTMLHRElement","HTMLModElement","HTMLTableCaptionElement","HTMLTableColElement","HTMLTableSectionElement","HTMLTableRowElement","HTMLTableCellElement","HTMLFieldSetElement","HTMLLegendElement","HTMLDListElement","HTMLOptGroupElement","HTMLOptionElement","HTMLStyleElement","HTMLScriptElement","HTMLTemplateElement","HTMLCanvasElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","HTMLVideoElement","HTMLAudioElement","HTMLTrackElement","HTMLMapElement","HTMLAreaElement","HTMLSourceElement","HTMLParamElement","HTMLMeterElement","HTMLProgressElement","HTMLOutputElement","HTMLDetailsElement","HTMLDialogElement","HTMLMenuElement","HTMLSlotElement","HTMLTimeElement","HTMLDataElement","HTMLPictureElement","forEach","cls","tag","set","eagerLoadItem","info","customElements","get","componentConstructor","extendsName","prototype","resolveExtends","define","e","has","console","error","add","getCustomTagInfo","elementTagName","name","includes","getAttribute","observedCustomElements","WeakSet","checkObserveShadowRoot","element","prefixMap","shadowRoot","handlerForLazyLoad","observeShadowRoot","tagLoad","tagInfo","matchNameSpace","whenDefined","_e","file","delete","lazyLoad","root","elements","walker","document","createTreeWalker","NodeFilter","SHOW_ELEMENT","node","Element","isCustomElement","FILTER_ACCEPT","FILTER_SKIP","nextNode","currentNode","tagInfos","undefined","then","tagCount","lazyLoads","keys","mo","MutationObserver","observe","childList","subtree","Autoloader","HTMLElement","static","_initialized","_prefixMap","_observer","constructor","super","_instance","this","importmap","imports","querySelectorAll","script","json","JSON","parse","innerHTML","assign","loadImportmap","loadMap","_value","keyInfo","buildMap","promises","Promise","all","eagerLoad","catch","connectedCallback","readyState","r","addEventListener","once","disconnectedCallback","disconnect","registerComponents"],"mappings":"AAaO,MAAMA,EAAc,IAEdC,EAAc,UAEdC,EAAiB,CAC5BC,QAAS,MACTC,OClBKC,eAAoBC,GAEzB,aADqBC,OAAO,GAAGD,MACjBE,OAChB,GDmDaC,EAjCoB,CAC/BC,eAAe,EACfC,QAAS,CACPV,CAACA,GAAcC,EACfF,CAACA,GAAcC,GAEjBW,YAAY,EACZC,SAAU,CACRC,WAAY,mBE5BVC,EAAoB,eAmB1B,SAASC,EAA2BC,GAClC,GAAIA,EAAIC,WAAWH,GAAoB,CACrC,GAAIE,EAAIE,SAAS,KAAM,CACrB,MAAMC,EAAmBH,EAAII,MAAMN,GAA0BE,EAAIK,OAAS,IAClEC,EAAQC,GAAcJ,EAAiBK,MAAM,IAAK,GAC1D,GAAe,KAAXF,EACF,MAAM,IAAIG,MAAM,0BAA4BT,GAE9C,MAAO,CACLA,MACAM,OAAQA,EAAOI,WAAW,IAAK,KAAKC,cACpCJ,UAAWA,GAAa,KACxBK,cAAc,EAElB,CAAO,CACL,MAAMC,EAAcb,EAAII,MAAMN,KACtBgB,EAASC,GAAkBF,EAAYL,MAAM,IAAK,IAClDD,EAAWS,IAAiBD,GAAiB,IAAIP,MAAM,IAAK,GACpE,GAAgB,KAAZM,EACF,MAAM,IAAIL,MAAM,0BAA4BT,GAE9C,MAAO,CACLA,MACAc,QAASA,EAAQJ,WAAW,IAAK,KAAKC,cACtCJ,UAAWA,GAAa,KACxBU,QAASD,GAAe,KACxBJ,cAAc,EAElB,CACF,CACA,OAAO,IACT,UCjDgBM,EACd7B,EACAkB,EACAb,GAEA,IAAIP,EAEJ,GAAkB,OAAdoB,GAAsBA,IAAcxB,GAA6B,KAAdwB,EAAkB,CAEvE,IAAIY,EAAiC,KAErC,MAAMC,EAAwB,GAC9B,IAAK,MAAOpB,EAAKqB,KAAMC,OAAOC,QAAQ7B,GAAU,CAC9C,GAAIM,IAAQjB,EAAa,SACzB,MAAMyC,EAA6B,iBAANH,EAAiB3B,EAAQ2B,GAAKA,EAC9B,iBAAlBG,GACXJ,EAAWK,KAAKD,EAClB,CAGAJ,EAAWM,KAAK,CAACC,EAAGC,IAAMA,EAAE1C,QAAQmB,OAASsB,EAAEzC,QAAQmB,QAEvD,IAAK,MAAMmB,KAAiBJ,EAC1B,GAAI/B,EAAKa,SAASsB,EAActC,SAAU,CACxCiC,EAAiBK,EACjB,KACF,CAGEL,EACFhC,EAASgC,GAEThC,EAASO,EAAQX,GACK,iBAAXI,IACTA,EAASO,EAAQP,IAGvB,MAEE,GADAA,EAASO,EAAQa,IACZpB,EACH,MAAM,IAAIsB,MAAM,qBAAuBF,GAI3C,GAAsB,iBAAXpB,EACT,MAAM,IAAIsB,MAAM,4CAElB,OAAOtB,CACT,CClDO,MAAM0C,EAAa,IAAIC,IACjBC,EAAc,IAAID,ICEzBE,EAAc,IAAIC,IAExB,GAAsB,oBAAXC,OAAwB,CACrB,CACV,CAACC,kBAAmB,UACpB,CAACC,iBAAkB,SACnB,CAACC,kBAAmB,KACpB,CAACC,iBAAkB,OACnB,CAACC,eAAgB,OACjB,CAACC,gBAAiB,QAClB,CAACC,qBAAsB,KACvB,CAACC,iBAAkB,MACnB,CAACC,iBAAkB,MACnB,CAACC,cAAe,MAChB,CAACC,iBAAkB,SACnB,CAACC,gBAAiB,QAClB,CAACC,iBAAkB,SACnB,CAACC,kBAAmB,UACpB,CAACC,oBAAqB,YACtB,CAACC,mBAAoB,MACrB,CAACC,iBAAkB,cACnB,CAACC,eAAgB,OACjB,CAACC,cAAe,MAChB,CAACC,cAAe,MAChB,CAACC,eAAgB,OACjB,CAACC,wBAAyB,WAC1B,CAACC,oBAAqB,OACtB,CAACC,wBAAyB,SAC1B,CAACC,oBAAqB,MACtB,CAACC,qBAAsB,MACvB,CAACC,oBAAqB,YACtB,CAACC,kBAAmB,UACpB,CAACC,iBAAkB,MACnB,CAACC,oBAAqB,YACtB,CAACC,kBAAmB,UACpB,CAACC,iBAAkB,SACnB,CAACC,kBAAmB,UACpB,CAACC,oBAAqB,YACtB,CAACC,kBAAmB,UACpB,CAACC,kBAAmB,UACpB,CAACC,kBAAmB,UACpB,CAACC,iBAAkB,SACnB,CAACC,iBAAkB,SACnB,CAACC,iBAAkB,SACnB,CAACC,iBAAkB,SACnB,CAACC,eAAgB,OACjB,CAACC,gBAAiB,QAClB,CAACC,kBAAmB,UACpB,CAACC,iBAAkB,SACnB,CAACC,iBAA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"}
|
|
1
|
+
{"version":3,"file":"auto.min.js","sources":["../src/config.ts","../src/vanilla.ts","../src/importmap.ts","../src/resolveLoader.ts","../src/tags.ts","../src/eagerload.ts","../src/platform/customElementRegistry.ts","../src/lazyLoad.ts","../src/components/Autoloader.ts","../src/registerComponents.ts","../src/bootstrapAutoloader.ts"],"sourcesContent":["\nimport { IConfig, ILoader, IWritableConfig } from \"./types.js\"\nimport { load } from \"./vanilla.js\"\n\ninterface IInternalConfig extends IConfig {\n scanImportmap: boolean;\n loaders: Record<string, ILoader | string>;\n observable: boolean;\n tagNames: {\n autoloader: string;\n };\n}\n\nexport const DEFAULT_KEY = \"*\";\n\nexport const VANILLA_KEY = \"vanilla\";\n\nexport const VANILLA_LOADER = {\n postfix: \".js\",\n loader: load\n}\n\nconst _config: IInternalConfig = {\n scanImportmap: true,\n loaders: {\n [VANILLA_KEY]: VANILLA_LOADER,\n [DEFAULT_KEY]: VANILLA_KEY\n },\n observable: true,\n tagNames: {\n autoloader: \"wcs-autoloader\"\n }\n}\n\nfunction deepFreeze<T>(obj: T): T {\n if (obj === null || typeof obj !== \"object\") return obj;\n Object.freeze(obj);\n for (const key of Object.keys(obj)) {\n deepFreeze((obj as Record<string, unknown>)[key]);\n }\n return obj;\n}\n\nfunction deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== \"object\") return obj;\n const clone: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n clone[key] = deepClone((obj as Record<string, unknown>)[key]);\n }\n return clone as T;\n}\n\nlet frozenConfig: IConfig | null = null;\n\n// 後方互換のため config もエクスポート(読み取り専用として使用)\nexport const config: IConfig = _config as IConfig;\n\nexport function getConfig(): IConfig {\n if (!frozenConfig) {\n frozenConfig = deepFreeze(deepClone(_config));\n }\n return frozenConfig;\n}\n\nexport function setConfig(partialConfig: IWritableConfig): void {\n if (typeof partialConfig.scanImportmap === \"boolean\") {\n _config.scanImportmap = partialConfig.scanImportmap;\n }\n if (partialConfig.loaders) {\n Object.assign(_config.loaders, partialConfig.loaders);\n }\n if (typeof partialConfig.observable === \"boolean\") {\n _config.observable = partialConfig.observable;\n }\n if (partialConfig.tagNames) {\n Object.assign(_config.tagNames, partialConfig.tagNames);\n }\n frozenConfig = null;\n}\n","\nexport async function load(path: string): Promise<CustomElementConstructor> {\n const module = await import(`${path}`);\n return module.default as CustomElementConstructor;\n}\n","import { IImportMap, IKeyInfo, ILoadMap, IPrefixMap } from \"./types.js\";\n\nconst COMPONENT_KEYWORD = \"@components/\";\n\nexport function loadImportmap(): IImportMap | null {\n const importmap: IImportMap = { imports: {} };\n document.querySelectorAll('script[type=\"importmap\"]').forEach((script) => {\n try {\n const json = JSON.parse(script.innerHTML);\n if (json.imports) {\n importmap.imports = Object.assign(importmap.imports, json.imports);\n }\n } catch (e) {\n throw new Error(\"Failed to parse importmap JSON: \" + e);\n }\n });\n return Object.keys(importmap.imports).length > 0\n ? importmap\n : null;\n}\n\nfunction getKeyInfoFromImportmapKey(key: string): IKeyInfo | null {\n if (key.startsWith(COMPONENT_KEYWORD)) {\n if (key.endsWith(\"/\")) {\n const prefixWithLoader = key.slice(COMPONENT_KEYWORD.length, key.length - 1);\n const [ prefix, loaderKey ] = prefixWithLoader.split(\"|\", 2);\n if (prefix === \"\") {\n throw new Error(\"Invalid importmap key: \" + key);\n }\n return {\n key,\n prefix: prefix.replaceAll(\"/\", \"-\").toLowerCase(),\n loaderKey: loaderKey ?? null,\n isNameSpaced: true\n };\n } else {\n const tagNamePart = key.slice(COMPONENT_KEYWORD.length);\n const [ tagName, loaderKeyPart ] = tagNamePart.split(\"|\", 2);\n const [ loaderKey, extendsText ] = (loaderKeyPart ?? \"\").split(\",\", 2);\n if (tagName === \"\") {\n throw new Error(\"Invalid importmap key: \" + key);\n }\n return {\n key,\n tagName: tagName.replaceAll(\"/\", \"-\").toLowerCase(),\n loaderKey: loaderKey || null,\n extends: extendsText || null,\n isNameSpaced: false\n };\n }\n }\n return null;\n}\n\nexport function buildMap(importmap: IImportMap): {\n prefixMap: IPrefixMap, loadMap: ILoadMap\n} {\n const prefixMap: IPrefixMap = {};\n const loadMap: ILoadMap = {};\n for (const [key, _value] of Object.entries(importmap.imports)) {\n const keyInfo = getKeyInfoFromImportmapKey(key);\n if (keyInfo === null) {\n continue;\n }\n if (keyInfo.isNameSpaced) {\n prefixMap[keyInfo.prefix] = keyInfo;\n } else {\n loadMap[keyInfo.tagName] = keyInfo;\n }\n }\n return { prefixMap, loadMap };\n}","import { DEFAULT_KEY } from \"./config.js\";\nimport { ILoader } from \"./types.js\";\n\nexport function resolveLoader(\n path: string,\n loaderKey: string | null,\n loaders: Record<string, ILoader | string>\n): ILoader {\n let loader: ILoader | string;\n\n if (loaderKey === null || loaderKey === DEFAULT_KEY || loaderKey === \"\") {\n // Try to resolve by postfix\n let resolvedLoader: ILoader | null = null;\n \n const candidates: ILoader[] = [];\n for (const [key, l] of Object.entries(loaders)) {\n if (key === DEFAULT_KEY) continue;\n const currentLoader = typeof l === \"string\" ? loaders[l] : l;\n if (typeof currentLoader === \"string\") continue; // Should not happen if config is correct\n candidates.push(currentLoader);\n }\n\n // Sort by postfix length descending to match longest extension first\n candidates.sort((a, b) => b.postfix.length - a.postfix.length);\n\n for (const currentLoader of candidates) {\n if (path.endsWith(currentLoader.postfix)) {\n resolvedLoader = currentLoader;\n break;\n }\n }\n\n if (resolvedLoader) {\n loader = resolvedLoader;\n } else {\n loader = loaders[DEFAULT_KEY];\n if (typeof loader === \"string\") {\n loader = loaders[loader];\n }\n }\n } else {\n loader = loaders[loaderKey];\n if (!loader) {\n throw new Error(\"Loader not found: \" + loaderKey);\n }\n }\n\n if (typeof loader === \"string\") {\n throw new Error(\"Loader redirection is not supported here\");\n }\n return loader;\n}\n","\nexport const failedTags = new Set<string>();\n\n// The in-flight load per tag, so a second caller can await the load itself\n// rather than the definition. A load that fails never defines its tag, so\n// waiting on whenDefined() instead would wait forever.\nexport const loadingTags = new Map<string, Promise<void>>();\n\n// Scoped registries each need their own define() call for the same tag, so an\n// in-flight load in one registry must not make another registry skip its own.\n// The module import itself is shared by the loader's own cache. The global\n// registry keeps using the exported `loadingTags` so direct inspection works.\nlet loadingTagsByRegistry = new WeakMap<object, Map<string, Promise<void>>>();\n\nexport function getLoadingTags(registry: object): Map<string, Promise<void>> {\n if (registry === (globalThis as { readonly customElements?: unknown }).customElements) {\n return loadingTags;\n }\n let tags = loadingTagsByRegistry.get(registry);\n if (tags === undefined) {\n tags = new Map();\n loadingTagsByRegistry.set(registry, tags);\n }\n return tags;\n}\n\nexport function resetState() {\n failedTags.clear();\n loadingTags.clear();\n loadingTagsByRegistry = new WeakMap();\n}\n\n","import { resolveLoader } from \"./resolveLoader.js\";\nimport { failedTags } from \"./tags.js\";\nimport { IEagerLoadInfo, ILoader } from \"./types.js\";\n\nconst EXTENDS_MAP = new Map<any, string>();\n\nif (typeof window !== \"undefined\") {\n const map = [\n [HTMLButtonElement, \"button\"],\n [HTMLInputElement, \"input\"],\n [HTMLAnchorElement, \"a\"],\n [HTMLImageElement, \"img\"],\n [HTMLDivElement, \"div\"],\n [HTMLSpanElement, \"span\"],\n [HTMLParagraphElement, \"p\"],\n [HTMLUListElement, \"ul\"],\n [HTMLOListElement, \"ol\"],\n [HTMLLIElement, \"li\"],\n [HTMLTableElement, \"table\"],\n [HTMLFormElement, \"form\"],\n [HTMLLabelElement, \"label\"],\n [HTMLSelectElement, \"select\"],\n [HTMLTextAreaElement, \"textarea\"],\n [HTMLHeadingElement, \"h1\"],\n [HTMLQuoteElement, \"blockquote\"],\n [HTMLPreElement, \"pre\"],\n [HTMLBRElement, \"br\"],\n [HTMLHRElement, \"hr\"],\n [HTMLModElement, \"ins\"],\n [HTMLTableCaptionElement, \"caption\"],\n [HTMLTableColElement, \"col\"],\n [HTMLTableSectionElement, \"tbody\"],\n [HTMLTableRowElement, \"tr\"],\n [HTMLTableCellElement, \"td\"],\n [HTMLFieldSetElement, \"fieldset\"],\n [HTMLLegendElement, \"legend\"],\n [HTMLDListElement, \"dl\"],\n [HTMLOptGroupElement, \"optgroup\"],\n [HTMLOptionElement, \"option\"],\n [HTMLStyleElement, \"style\"],\n [HTMLScriptElement, \"script\"],\n [HTMLTemplateElement, \"template\"],\n [HTMLCanvasElement, \"canvas\"],\n [HTMLIFrameElement, \"iframe\"],\n [HTMLObjectElement, \"object\"],\n [HTMLEmbedElement, \"embed\"],\n [HTMLVideoElement, \"video\"],\n [HTMLAudioElement, \"audio\"],\n [HTMLTrackElement, \"track\"],\n [HTMLMapElement, \"map\"],\n [HTMLAreaElement, \"area\"],\n [HTMLSourceElement, \"source\"],\n [HTMLParamElement, \"param\"],\n [HTMLMeterElement, \"meter\"],\n [HTMLProgressElement, \"progress\"],\n [HTMLOutputElement, \"output\"],\n [HTMLDetailsElement, \"details\"],\n [HTMLDialogElement, \"dialog\"],\n [HTMLMenuElement, \"menu\"],\n [HTMLSlotElement, \"slot\"],\n [HTMLTimeElement, \"time\"],\n [HTMLDataElement, \"data\"],\n [HTMLPictureElement, \"picture\"],\n ] as const;\n\n map.forEach(([cls, tag]) => {\n /* istanbul ignore next */\n if (typeof cls !== \"undefined\") {\n EXTENDS_MAP.set(cls, tag);\n }\n });\n}\n\nfunction resolveExtends(componentConstructor: CustomElementConstructor): string | null {\n for (const [cls, tag] of EXTENDS_MAP) {\n if (componentConstructor.prototype instanceof cls) {\n return tag;\n }\n }\n return null;\n}\n\nasync function eagerLoadItem(info: IEagerLoadInfo, tagName:string, loader: ILoader): Promise<void> {\n try {\n if (customElements.get(tagName)) {\n // すでに定義済み\n return;\n }\n const componentConstructor = await loader.loader(info.key);\n if (componentConstructor !== null) {\n let extendsName = info.extends;\n if (extendsName === null) {\n extendsName = resolveExtends(componentConstructor);\n }\n\n if (customElements.get(tagName)) {\n // すでに定義済み\n return;\n }\n if (extendsName === null) {\n customElements.define(tagName, componentConstructor);\n } else {\n customElements.define(tagName, componentConstructor, { extends: extendsName });\n }\n }\n } catch(e) {\n if (!failedTags.has(tagName)) {\n console.error(`Failed to eager load component '${tagName}':`, e);\n failedTags.add(tagName);\n }\n }\n\n}\n\nexport async function eagerLoad(\n loadMap: Record<string, IEagerLoadInfo>, \n loaders: Record<string, ILoader | string>\n): Promise<void> {\n const promises: Promise<void>[] = [];\n for(const [tagName, info] of Object.entries(loadMap)) {\n let loader: ILoader;\n try {\n loader = resolveLoader(info.key, info.loaderKey, loaders);\n } catch (_e) {\n throw new Error(\"Loader redirection is not supported for eager loaded components: \" + tagName);\n }\n promises.push(eagerLoadItem(info, tagName, loader));\n }\n await Promise.all(promises);\n}\n","export interface ICustomElementRegistryAdapter {\n get(name: string): CustomElementConstructor | undefined;\n whenDefined(name: string): Promise<CustomElementConstructor>;\n define(\n name: string,\n constructor: CustomElementConstructor,\n options?: ElementDefinitionOptions,\n ): void;\n}\n\ninterface ICustomElementRegistryOwner {\n /**\n * Scoped registry hook, as exposed by `Element` / `Document` / `ShadowRoot`.\n * `undefined` on platforms without scoped custom element registries; `null`\n * when the node deliberately carries a null registry and has not been handed\n * to `registry.initialize()`.\n */\n readonly customElementRegistry?: unknown;\n}\n\nfunction toAdapter(registry: unknown): ICustomElementRegistryAdapter | null {\n if (typeof registry !== \"object\" || registry === null) return null;\n\n const candidate = registry as Partial<ICustomElementRegistryAdapter>;\n if (\n typeof candidate.get !== \"function\"\n || typeof candidate.whenDefined !== \"function\"\n || typeof candidate.define !== \"function\"\n ) {\n return null;\n }\n return candidate as ICustomElementRegistryAdapter;\n}\n\n/**\n * Resolve the registry that governs `root`.\n *\n * Scoped registries do not inherit from the global one, so defining a lazily\n * loaded tag globally leaves a scoped subtree's elements un-upgraded forever --\n * and the `whenDefined` used to chase their shadow content never resolves.\n * Autoloading therefore has to define into the registry the scanned root itself\n * resolves against. Roots on platforms without scoped registries report\n * `undefined` and fall back to the global registry.\n */\nexport function getCustomElementRegistry(\n root: Node | null = null,\n): ICustomElementRegistryAdapter | null {\n if (root !== null && typeof root !== \"undefined\") {\n const scoped = (root as ICustomElementRegistryOwner).customElementRegistry;\n if (scoped === null) return null;\n if (typeof scoped !== \"undefined\") return toAdapter(scoped);\n }\n return toAdapter((globalThis as { readonly customElements?: unknown }).customElements);\n}\n","import { resolveLoader } from \"./resolveLoader.js\";\nimport { failedTags, getLoadingTags } from \"./tags.js\";\nimport {\n ICustomElementRegistryAdapter,\n getCustomElementRegistry,\n} from \"./platform/customElementRegistry.js\";\nimport { IConfig, ILoader, INameSpaceInfo, IPrefixMap, ITagInfo } from \"./types.js\";\n\nconst isCustomElement = (node: Node): boolean => {\n return (node instanceof Element && (node.tagName.includes(\"-\") || node.getAttribute(\"is\")?.includes(\"-\"))) ?? false;\n}\n\nexport function getCustomTagInfo(e: Element): ITagInfo {\n const elementTagName = e.tagName.toLowerCase();\n let name;\n let extendsName;\n if (elementTagName.includes(\"-\")) {\n name = elementTagName;\n extendsName = null;\n } else {\n const tagName = e.getAttribute(\"is\");\n if (tagName === null) {\n throw new Error(\"Custom element without a dash or 'is' attribute found: \" + elementTagName);\n }\n if (!tagName.includes(\"-\")) {\n throw new Error(\"Custom element 'is' attribute without a dash found: \" + elementTagName);\n }\n name = tagName;\n extendsName = elementTagName;\n }\n return { name, extends: extendsName };\n}\n\nconst observedCustomElements: WeakSet<Element> = new WeakSet<Element>();\n\n// Elements that already carry a whenDefined() follow-up. `lazyLoads` rescans\n// until nothing more loads, and the MutationObserver reruns it on every DOM\n// change, so without this an element whose tag never gets defined collects one\n// never-settling continuation per scan.\nconst upgradeWatchedElements: WeakSet<Element> = new WeakSet<Element>();\n\nasync function observeShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\n observedCustomElements.add(element);\n await handlerForLazyLoad(element.shadowRoot!, config, prefixMap);\n}\n\nasync function checkObserveShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\n if (element.shadowRoot) {\n if (!observedCustomElements.has(element)) {\n await observeShadowRoot(element, config, prefixMap);\n }\n }\n}\n\nfunction matchNameSpace(tagName: string, prefixMap: IPrefixMap): INameSpaceInfo | null {\n for (const [prefix, info] of Object.entries(prefixMap)) {\n if (tagName.startsWith(prefix + \"-\")) {\n return info;\n }\n }\n return null;\n}\n\nasync function tagLoad(\n tagInfo: ITagInfo,\n config: IConfig,\n prefixMap: IPrefixMap,\n registry: ICustomElementRegistryAdapter,\n): Promise<void> {\n const info: INameSpaceInfo | null = matchNameSpace(tagInfo.name, prefixMap);\n if (info === null) {\n throw new Error(\"No matching namespace found for lazy loaded component: \" + tagInfo.name);\n }\n\n const loadingTags = getLoadingTags(registry);\n const inFlight = loadingTags.get(tagInfo.name);\n if (inFlight !== undefined) {\n // Wait on the load itself, never on the definition: a load that fails never\n // defines the tag, so whenDefined() would stay pending forever and wedge\n // every caller above — including the one that installs the MutationObserver,\n // which stops all further lazy loading on the page.\n await inFlight;\n return;\n }\n\n const load = performTagLoad(tagInfo, config, info, registry);\n loadingTags.set(tagInfo.name, load);\n try {\n await load;\n } finally {\n loadingTags.delete(tagInfo.name);\n }\n}\n\n// Never rejects: a failure is reported and recorded in `failedTags`, which keeps\n// the tag out of later scans.\nasync function performTagLoad(\n tagInfo: ITagInfo,\n config: IConfig,\n info: INameSpaceInfo,\n registry: ICustomElementRegistryAdapter,\n): Promise<void> {\n try {\n let loader: ILoader;\n try {\n loader = resolveLoader(\"\", info.loaderKey, config.loaders);\n } catch (_e) {\n throw new Error(\"Loader redirection is not supported for lazy loaded components: \" + tagInfo.name);\n }\n\n const file: string = tagInfo.name.slice(info.prefix.length + 1);\n if (file === \"\") {\n throw new Error(\"Invalid component name for lazy loaded component: \" + tagInfo.name);\n }\n const path = info.key + file + loader.postfix;\n\n if (registry.get(tagInfo.name)) {\n // すでに定義済み\n return;\n }\n const componentConstructor = await loader.loader(path);\n if (componentConstructor !== null) {\n if (registry.get(tagInfo.name)) {\n // すでに定義済み\n return;\n }\n if (tagInfo.extends === null) {\n registry.define(tagInfo.name, componentConstructor);\n } else {\n registry.define(tagInfo.name, componentConstructor, { extends: tagInfo.extends });\n }\n } else {\n throw new Error(\"Loader returned null for component: \" + tagInfo.name);\n }\n } catch(e) {\n console.error(`Failed to lazy load component '${tagInfo.name}':`, e);\n failedTags.add(tagInfo.name);\n }\n}\n\n//\nasync function lazyLoad(\n root: Node,\n config: IConfig,\n prefixMap: IPrefixMap,\n registry: ICustomElementRegistryAdapter,\n): Promise<number> {\n const elements: Element[] = [];\n\n // Create TreeWalker (target element and comment nodes)\n const walker = (root.ownerDocument ?? (root as Document)).createTreeWalker(\n root,\n NodeFilter.SHOW_ELEMENT,\n (node: Node): number => {\n return isCustomElement(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n } \n );\n \n // Move to next node with TreeWalker and add matching nodes to array\n while (walker.nextNode()) {\n elements.push(walker.currentNode as Element);\n }\n\n const tagInfos: ITagInfo[] = [];\n const tagNames = new Set<string>();\n for(const element of elements) {\n const tagInfo = getCustomTagInfo(element);\n const customClass = registry.get(tagInfo.name);\n if (customClass === undefined) {\n // undefined\n if (!upgradeWatchedElements.has(element)) {\n upgradeWatchedElements.add(element);\n registry.whenDefined(tagInfo.name).then(async () => {\n // upgraded\n await checkObserveShadowRoot(element, config, prefixMap);\n });\n }\n if (!tagNames.has(tagInfo.name) && !failedTags.has(tagInfo.name)) {\n tagNames.add(tagInfo.name);\n tagInfos.push(tagInfo);\n }\n } else {\n // upgraded\n await checkObserveShadowRoot(element, config, prefixMap);\n }\n }\n let tagCount = 0;\n for(const tagInfo of tagInfos) {\n await tagLoad(tagInfo, config, prefixMap, registry);\n tagCount++;\n }\n return tagCount;\n\n}\n\nasync function lazyLoads(\n root: Document | ShadowRoot,\n config: IConfig,\n prefixMap: IPrefixMap,\n registry: ICustomElementRegistryAdapter,\n): Promise<void> {\n while(await lazyLoad(root, config, prefixMap, registry) > 0) {\n // Repeat until no more tags to load\n }\n}\n\nexport async function handlerForLazyLoad(\n root: Document | ShadowRoot,\n config: IConfig,\n prefixMap: IPrefixMap\n): Promise<MutationObserver | null> {\n if (Object.keys(prefixMap).length === 0) {\n return null;\n }\n // Definitions must land in the registry this root resolves against: a scoped\n // registry does not see global definitions, so defining globally would leave\n // these elements un-upgraded and the whenDefined below pending forever.\n const registry = getCustomElementRegistry(root);\n if (registry === null) {\n // A null-registry root cannot receive definitions at all until someone calls\n // registry.initialize() on it, so there is nothing autoloading can do here.\n console.error(\n \"Cannot autoload components: the root has a null custom element registry.\",\n );\n return null;\n }\n try {\n await lazyLoads(root, config, prefixMap, registry);\n } catch(e) {\n throw new Error(\"Failed to lazy load components: \" + e);\n }\n\n if (!config.observable) {\n return null;\n }\n const mo = new MutationObserver(async (): Promise<void> => {\n try {\n await lazyLoads(root, config, prefixMap, registry);\n } catch(e) {\n console.error(\"Failed to lazy load components: \" + e);\n }\n });\n mo.observe(root, { childList: true, subtree: true });\n return mo;\n}\n","import { config } from \"../config.js\";\nimport { buildMap, loadImportmap } from \"../importmap.js\";\nimport { eagerLoad } from \"../eagerload.js\";\nimport { handlerForLazyLoad } from \"../lazyLoad.js\";\nimport { IPrefixMap } from \"../types.js\";\n\nexport class Autoloader extends HTMLElement {\n private static _instance: Autoloader | null = null;\n private _initialized = false;\n private _prefixMap: IPrefixMap | null = null;\n private _observer: MutationObserver | null = null;\n\n constructor() {\n super();\n if (Autoloader._instance) {\n throw new Error(\n `${config.tagNames.autoloader} can only be instantiated once.`\n );\n }\n Autoloader._instance = this;\n\n const importmap = loadImportmap();\n if (importmap) {\n const { prefixMap, loadMap } = buildMap(importmap);\n this._prefixMap = prefixMap;\n eagerLoad(loadMap, config.loaders).catch((e) => {\n console.error(\"Failed to eager load components:\", e);\n });\n }\n }\n\n async connectedCallback() {\n if (!this._initialized) {\n this._initialized = true;\n if (this._prefixMap) {\n if (document.readyState === \"loading\") {\n await new Promise<void>((r) =>\n document.addEventListener(\"DOMContentLoaded\", () => r(), {\n once: true,\n })\n );\n }\n this._observer = await handlerForLazyLoad(\n document,\n config,\n this._prefixMap\n );\n }\n }\n }\n\n disconnectedCallback() {\n this._observer?.disconnect();\n this._observer = null;\n if (Autoloader._instance === this) {\n Autoloader._instance = null;\n }\n }\n}\n","import { Autoloader } from \"./components/Autoloader.js\";\nimport { config } from \"./config.js\";\n\n/**\n * Register this package's tags. Pass a scoped `CustomElementRegistry` to define\n * them for a single shadow tree -- scoped registries do not inherit the global\n * one, so a tree using one needs its own definitions.\n */\nexport function registerComponents(registry: CustomElementRegistry = customElements) {\n if (!registry.get(config.tagNames.autoloader)) {\n registry.define(config.tagNames.autoloader, Autoloader);\n }\n}\n","import { setConfig } from \"./config.js\";\nimport { registerComponents } from \"./registerComponents.js\";\nimport { IWritableConfig } from \"./types.js\";\n\nexport function bootstrapAutoloader(config?: IWritableConfig, registry?: CustomElementRegistry): void {\n if (config) {\n setConfig(config);\n }\n registerComponents(registry);\n}\n"],"names":["DEFAULT_KEY","VANILLA_KEY","VANILLA_LOADER","postfix","loader","async","path","import","default","config","scanImportmap","loaders","observable","tagNames","autoloader","COMPONENT_KEYWORD","getKeyInfoFromImportmapKey","key","startsWith","endsWith","prefixWithLoader","slice","length","prefix","loaderKey","split","Error","replaceAll","toLowerCase","isNameSpaced","tagNamePart","tagName","loaderKeyPart","extendsText","extends","resolveLoader","resolvedLoader","candidates","l","Object","entries","currentLoader","push","sort","a","b","failedTags","Set","loadingTags","Map","loadingTagsByRegistry","WeakMap","getLoadingTags","registry","globalThis","customElements","tags","get","undefined","set","EXTENDS_MAP","window","HTMLButtonElement","HTMLInputElement","HTMLAnchorElement","HTMLImageElement","HTMLDivElement","HTMLSpanElement","HTMLParagraphElement","HTMLUListElement","HTMLOListElement","HTMLLIElement","HTMLTableElement","HTMLFormElement","HTMLLabelElement","HTMLSelectElement","HTMLTextAreaElement","HTMLHeadingElement","HTMLQuoteElement","HTMLPreElement","HTMLBRElement","HTMLHRElement","HTMLModElement","HTMLTableCaptionElement","HTMLTableColElement","HTMLTableSectionElement","HTMLTableRowElement","HTMLTableCellElement","HTMLFieldSetElement","HTMLLegendElement","HTMLDListElement","HTMLOptGroupElement","HTMLOptionElement","HTMLStyleElement","HTMLScriptElement","HTMLTemplateElement","HTMLCanvasElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","HTMLVideoElement","HTMLAudioElement","HTMLTrackElement","HTMLMapElement","HTMLAreaElement","HTMLSourceElement","HTMLParamElement","HTMLMeterElement","HTMLProgressElement","HTMLOutputElement","HTMLDetailsElement","HTMLDialogElement","HTMLMenuElement","HTMLSlotElement","HTMLTimeElement","HTMLDataElement","HTMLPictureElement","forEach","cls","tag","eagerLoadItem","info","componentConstructor","extendsName","prototype","resolveExtends","define","e","has","console","error","add","toAdapter","candidate","whenDefined","getCustomTagInfo","elementTagName","name","includes","getAttribute","observedCustomElements","WeakSet","upgradeWatchedElements","checkObserveShadowRoot","element","prefixMap","shadowRoot","handlerForLazyLoad","observeShadowRoot","tagLoad","tagInfo","matchNameSpace","inFlight","load","_e","file","performTagLoad","delete","lazyLoad","root","elements","walker","ownerDocument","createTreeWalker","NodeFilter","SHOW_ELEMENT","node","Element","isCustomElement","FILTER_ACCEPT","FILTER_SKIP","nextNode","currentNode","tagInfos","then","tagCount","lazyLoads","keys","scoped","customElementRegistry","getCustomElementRegistry","mo","MutationObserver","observe","childList","subtree","Autoloader","HTMLElement","static","_initialized","_prefixMap","_observer","constructor","super","_instance","this","importmap","imports","document","querySelectorAll","script","json","JSON","parse","innerHTML","assign","loadImportmap","loadMap","_value","keyInfo","buildMap","promises","Promise","all","eagerLoad","catch","connectedCallback","readyState","r","addEventListener","once","disconnectedCallback","disconnect","registerComponents"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ interface IWritableConfig {
|
|
|
22
22
|
tagNames?: IWritableTagNames;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
declare function bootstrapAutoloader(config?: IWritableConfig): void;
|
|
25
|
+
declare function bootstrapAutoloader(config?: IWritableConfig, registry?: CustomElementRegistry): void;
|
|
26
26
|
|
|
27
27
|
declare function getConfig(): IConfig;
|
|
28
28
|
|
package/dist/index.esm.js
CHANGED
|
@@ -177,7 +177,26 @@ function resolveLoader(path, loaderKey, loaders) {
|
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
const failedTags = new Set();
|
|
180
|
-
|
|
180
|
+
// The in-flight load per tag, so a second caller can await the load itself
|
|
181
|
+
// rather than the definition. A load that fails never defines its tag, so
|
|
182
|
+
// waiting on whenDefined() instead would wait forever.
|
|
183
|
+
const loadingTags = new Map();
|
|
184
|
+
// Scoped registries each need their own define() call for the same tag, so an
|
|
185
|
+
// in-flight load in one registry must not make another registry skip its own.
|
|
186
|
+
// The module import itself is shared by the loader's own cache. The global
|
|
187
|
+
// registry keeps using the exported `loadingTags` so direct inspection works.
|
|
188
|
+
let loadingTagsByRegistry = new WeakMap();
|
|
189
|
+
function getLoadingTags(registry) {
|
|
190
|
+
if (registry === globalThis.customElements) {
|
|
191
|
+
return loadingTags;
|
|
192
|
+
}
|
|
193
|
+
let tags = loadingTagsByRegistry.get(registry);
|
|
194
|
+
if (tags === undefined) {
|
|
195
|
+
tags = new Map();
|
|
196
|
+
loadingTagsByRegistry.set(registry, tags);
|
|
197
|
+
}
|
|
198
|
+
return tags;
|
|
199
|
+
}
|
|
181
200
|
|
|
182
201
|
const EXTENDS_MAP = new Map();
|
|
183
202
|
if (typeof window !== "undefined") {
|
|
@@ -299,6 +318,38 @@ async function eagerLoad(loadMap, loaders) {
|
|
|
299
318
|
await Promise.all(promises);
|
|
300
319
|
}
|
|
301
320
|
|
|
321
|
+
function toAdapter(registry) {
|
|
322
|
+
if (typeof registry !== "object" || registry === null)
|
|
323
|
+
return null;
|
|
324
|
+
const candidate = registry;
|
|
325
|
+
if (typeof candidate.get !== "function"
|
|
326
|
+
|| typeof candidate.whenDefined !== "function"
|
|
327
|
+
|| typeof candidate.define !== "function") {
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
return candidate;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Resolve the registry that governs `root`.
|
|
334
|
+
*
|
|
335
|
+
* Scoped registries do not inherit from the global one, so defining a lazily
|
|
336
|
+
* loaded tag globally leaves a scoped subtree's elements un-upgraded forever --
|
|
337
|
+
* and the `whenDefined` used to chase their shadow content never resolves.
|
|
338
|
+
* Autoloading therefore has to define into the registry the scanned root itself
|
|
339
|
+
* resolves against. Roots on platforms without scoped registries report
|
|
340
|
+
* `undefined` and fall back to the global registry.
|
|
341
|
+
*/
|
|
342
|
+
function getCustomElementRegistry(root = null) {
|
|
343
|
+
if (root !== null && typeof root !== "undefined") {
|
|
344
|
+
const scoped = root.customElementRegistry;
|
|
345
|
+
if (scoped === null)
|
|
346
|
+
return null;
|
|
347
|
+
if (typeof scoped !== "undefined")
|
|
348
|
+
return toAdapter(scoped);
|
|
349
|
+
}
|
|
350
|
+
return toAdapter(globalThis.customElements);
|
|
351
|
+
}
|
|
352
|
+
|
|
302
353
|
const isCustomElement = (node) => {
|
|
303
354
|
return (node instanceof Element && (node.tagName.includes("-") || node.getAttribute("is")?.includes("-"))) ?? false;
|
|
304
355
|
};
|
|
@@ -324,6 +375,11 @@ function getCustomTagInfo(e) {
|
|
|
324
375
|
return { name, extends: extendsName };
|
|
325
376
|
}
|
|
326
377
|
const observedCustomElements = new WeakSet();
|
|
378
|
+
// Elements that already carry a whenDefined() follow-up. `lazyLoads` rescans
|
|
379
|
+
// until nothing more loads, and the MutationObserver reruns it on every DOM
|
|
380
|
+
// change, so without this an element whose tag never gets defined collects one
|
|
381
|
+
// never-settling continuation per scan.
|
|
382
|
+
const upgradeWatchedElements = new WeakSet();
|
|
327
383
|
async function observeShadowRoot(element, config, prefixMap) {
|
|
328
384
|
observedCustomElements.add(element);
|
|
329
385
|
await handlerForLazyLoad(element.shadowRoot, config, prefixMap);
|
|
@@ -343,16 +399,33 @@ function matchNameSpace(tagName, prefixMap) {
|
|
|
343
399
|
}
|
|
344
400
|
return null;
|
|
345
401
|
}
|
|
346
|
-
async function tagLoad(tagInfo, config, prefixMap) {
|
|
402
|
+
async function tagLoad(tagInfo, config, prefixMap, registry) {
|
|
347
403
|
const info = matchNameSpace(tagInfo.name, prefixMap);
|
|
348
404
|
if (info === null) {
|
|
349
405
|
throw new Error("No matching namespace found for lazy loaded component: " + tagInfo.name);
|
|
350
406
|
}
|
|
351
|
-
|
|
352
|
-
|
|
407
|
+
const loadingTags = getLoadingTags(registry);
|
|
408
|
+
const inFlight = loadingTags.get(tagInfo.name);
|
|
409
|
+
if (inFlight !== undefined) {
|
|
410
|
+
// Wait on the load itself, never on the definition: a load that fails never
|
|
411
|
+
// defines the tag, so whenDefined() would stay pending forever and wedge
|
|
412
|
+
// every caller above — including the one that installs the MutationObserver,
|
|
413
|
+
// which stops all further lazy loading on the page.
|
|
414
|
+
await inFlight;
|
|
353
415
|
return;
|
|
354
416
|
}
|
|
355
|
-
|
|
417
|
+
const load = performTagLoad(tagInfo, config, info, registry);
|
|
418
|
+
loadingTags.set(tagInfo.name, load);
|
|
419
|
+
try {
|
|
420
|
+
await load;
|
|
421
|
+
}
|
|
422
|
+
finally {
|
|
423
|
+
loadingTags.delete(tagInfo.name);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
// Never rejects: a failure is reported and recorded in `failedTags`, which keeps
|
|
427
|
+
// the tag out of later scans.
|
|
428
|
+
async function performTagLoad(tagInfo, config, info, registry) {
|
|
356
429
|
try {
|
|
357
430
|
let loader;
|
|
358
431
|
try {
|
|
@@ -366,21 +439,21 @@ async function tagLoad(tagInfo, config, prefixMap) {
|
|
|
366
439
|
throw new Error("Invalid component name for lazy loaded component: " + tagInfo.name);
|
|
367
440
|
}
|
|
368
441
|
const path = info.key + file + loader.postfix;
|
|
369
|
-
if (
|
|
442
|
+
if (registry.get(tagInfo.name)) {
|
|
370
443
|
// すでに定義済み
|
|
371
444
|
return;
|
|
372
445
|
}
|
|
373
446
|
const componentConstructor = await loader.loader(path);
|
|
374
447
|
if (componentConstructor !== null) {
|
|
375
|
-
if (
|
|
448
|
+
if (registry.get(tagInfo.name)) {
|
|
376
449
|
// すでに定義済み
|
|
377
450
|
return;
|
|
378
451
|
}
|
|
379
452
|
if (tagInfo.extends === null) {
|
|
380
|
-
|
|
453
|
+
registry.define(tagInfo.name, componentConstructor);
|
|
381
454
|
}
|
|
382
455
|
else {
|
|
383
|
-
|
|
456
|
+
registry.define(tagInfo.name, componentConstructor, { extends: tagInfo.extends });
|
|
384
457
|
}
|
|
385
458
|
}
|
|
386
459
|
else {
|
|
@@ -391,15 +464,12 @@ async function tagLoad(tagInfo, config, prefixMap) {
|
|
|
391
464
|
console.error(`Failed to lazy load component '${tagInfo.name}':`, e);
|
|
392
465
|
failedTags.add(tagInfo.name);
|
|
393
466
|
}
|
|
394
|
-
finally {
|
|
395
|
-
loadingTags.delete(tagInfo.name);
|
|
396
|
-
}
|
|
397
467
|
}
|
|
398
468
|
//
|
|
399
|
-
async function lazyLoad(root, config, prefixMap) {
|
|
469
|
+
async function lazyLoad(root, config, prefixMap, registry) {
|
|
400
470
|
const elements = [];
|
|
401
471
|
// Create TreeWalker (target element and comment nodes)
|
|
402
|
-
const walker =
|
|
472
|
+
const walker = (root.ownerDocument ?? root).createTreeWalker(root, NodeFilter.SHOW_ELEMENT, (node) => {
|
|
403
473
|
return isCustomElement(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
|
|
404
474
|
});
|
|
405
475
|
// Move to next node with TreeWalker and add matching nodes to array
|
|
@@ -410,13 +480,16 @@ async function lazyLoad(root, config, prefixMap) {
|
|
|
410
480
|
const tagNames = new Set();
|
|
411
481
|
for (const element of elements) {
|
|
412
482
|
const tagInfo = getCustomTagInfo(element);
|
|
413
|
-
const customClass =
|
|
483
|
+
const customClass = registry.get(tagInfo.name);
|
|
414
484
|
if (customClass === undefined) {
|
|
415
485
|
// undefined
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
486
|
+
if (!upgradeWatchedElements.has(element)) {
|
|
487
|
+
upgradeWatchedElements.add(element);
|
|
488
|
+
registry.whenDefined(tagInfo.name).then(async () => {
|
|
489
|
+
// upgraded
|
|
490
|
+
await checkObserveShadowRoot(element, config, prefixMap);
|
|
491
|
+
});
|
|
492
|
+
}
|
|
420
493
|
if (!tagNames.has(tagInfo.name) && !failedTags.has(tagInfo.name)) {
|
|
421
494
|
tagNames.add(tagInfo.name);
|
|
422
495
|
tagInfos.push(tagInfo);
|
|
@@ -429,13 +502,13 @@ async function lazyLoad(root, config, prefixMap) {
|
|
|
429
502
|
}
|
|
430
503
|
let tagCount = 0;
|
|
431
504
|
for (const tagInfo of tagInfos) {
|
|
432
|
-
await tagLoad(tagInfo, config, prefixMap);
|
|
505
|
+
await tagLoad(tagInfo, config, prefixMap, registry);
|
|
433
506
|
tagCount++;
|
|
434
507
|
}
|
|
435
508
|
return tagCount;
|
|
436
509
|
}
|
|
437
|
-
async function lazyLoads(root, config, prefixMap) {
|
|
438
|
-
while (await lazyLoad(root, config, prefixMap) > 0) {
|
|
510
|
+
async function lazyLoads(root, config, prefixMap, registry) {
|
|
511
|
+
while (await lazyLoad(root, config, prefixMap, registry) > 0) {
|
|
439
512
|
// Repeat until no more tags to load
|
|
440
513
|
}
|
|
441
514
|
}
|
|
@@ -443,8 +516,18 @@ async function handlerForLazyLoad(root, config, prefixMap) {
|
|
|
443
516
|
if (Object.keys(prefixMap).length === 0) {
|
|
444
517
|
return null;
|
|
445
518
|
}
|
|
519
|
+
// Definitions must land in the registry this root resolves against: a scoped
|
|
520
|
+
// registry does not see global definitions, so defining globally would leave
|
|
521
|
+
// these elements un-upgraded and the whenDefined below pending forever.
|
|
522
|
+
const registry = getCustomElementRegistry(root);
|
|
523
|
+
if (registry === null) {
|
|
524
|
+
// A null-registry root cannot receive definitions at all until someone calls
|
|
525
|
+
// registry.initialize() on it, so there is nothing autoloading can do here.
|
|
526
|
+
console.error("Cannot autoload components: the root has a null custom element registry.");
|
|
527
|
+
return null;
|
|
528
|
+
}
|
|
446
529
|
try {
|
|
447
|
-
await lazyLoads(root, config, prefixMap);
|
|
530
|
+
await lazyLoads(root, config, prefixMap, registry);
|
|
448
531
|
}
|
|
449
532
|
catch (e) {
|
|
450
533
|
throw new Error("Failed to lazy load components: " + e);
|
|
@@ -454,7 +537,7 @@ async function handlerForLazyLoad(root, config, prefixMap) {
|
|
|
454
537
|
}
|
|
455
538
|
const mo = new MutationObserver(async () => {
|
|
456
539
|
try {
|
|
457
|
-
await lazyLoads(root, config, prefixMap);
|
|
540
|
+
await lazyLoads(root, config, prefixMap, registry);
|
|
458
541
|
}
|
|
459
542
|
catch (e) {
|
|
460
543
|
console.error("Failed to lazy load components: " + e);
|
|
@@ -506,17 +589,22 @@ class Autoloader extends HTMLElement {
|
|
|
506
589
|
}
|
|
507
590
|
}
|
|
508
591
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
592
|
+
/**
|
|
593
|
+
* Register this package's tags. Pass a scoped `CustomElementRegistry` to define
|
|
594
|
+
* them for a single shadow tree -- scoped registries do not inherit the global
|
|
595
|
+
* one, so a tree using one needs its own definitions.
|
|
596
|
+
*/
|
|
597
|
+
function registerComponents(registry = customElements) {
|
|
598
|
+
if (!registry.get(config.tagNames.autoloader)) {
|
|
599
|
+
registry.define(config.tagNames.autoloader, Autoloader);
|
|
512
600
|
}
|
|
513
601
|
}
|
|
514
602
|
|
|
515
|
-
function bootstrapAutoloader(config) {
|
|
603
|
+
function bootstrapAutoloader(config, registry) {
|
|
516
604
|
if (config) {
|
|
517
605
|
setConfig(config);
|
|
518
606
|
}
|
|
519
|
-
registerComponents();
|
|
607
|
+
registerComponents(registry);
|
|
520
608
|
}
|
|
521
609
|
|
|
522
610
|
export { bootstrapAutoloader, getConfig };
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/vanilla.ts","../src/config.ts","../src/importmap.ts","../src/resolveLoader.ts","../src/tags.ts","../src/eagerload.ts","../src/lazyLoad.ts","../src/components/Autoloader.ts","../src/registerComponents.ts","../src/bootstrapAutoloader.ts"],"sourcesContent":["\nexport async function load(path: string): Promise<CustomElementConstructor> {\n const module = await import(`${path}`);\n return module.default as CustomElementConstructor;\n}\n","\nimport { IConfig, ILoader, IWritableConfig } from \"./types.js\"\nimport { load } from \"./vanilla.js\"\n\ninterface IInternalConfig extends IConfig {\n scanImportmap: boolean;\n loaders: Record<string, ILoader | string>;\n observable: boolean;\n tagNames: {\n autoloader: string;\n };\n}\n\nexport const DEFAULT_KEY = \"*\";\n\nexport const VANILLA_KEY = \"vanilla\";\n\nexport const VANILLA_LOADER = {\n postfix: \".js\",\n loader: load\n}\n\nconst _config: IInternalConfig = {\n scanImportmap: true,\n loaders: {\n [VANILLA_KEY]: VANILLA_LOADER,\n [DEFAULT_KEY]: VANILLA_KEY\n },\n observable: true,\n tagNames: {\n autoloader: \"wcs-autoloader\"\n }\n}\n\nfunction deepFreeze<T>(obj: T): T {\n if (obj === null || typeof obj !== \"object\") return obj;\n Object.freeze(obj);\n for (const key of Object.keys(obj)) {\n deepFreeze((obj as Record<string, unknown>)[key]);\n }\n return obj;\n}\n\nfunction deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== \"object\") return obj;\n const clone: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n clone[key] = deepClone((obj as Record<string, unknown>)[key]);\n }\n return clone as T;\n}\n\nlet frozenConfig: IConfig | null = null;\n\n// 後方互換のため config もエクスポート(読み取り専用として使用)\nexport const config: IConfig = _config as IConfig;\n\nexport function getConfig(): IConfig {\n if (!frozenConfig) {\n frozenConfig = deepFreeze(deepClone(_config));\n }\n return frozenConfig;\n}\n\nexport function setConfig(partialConfig: IWritableConfig): void {\n if (typeof partialConfig.scanImportmap === \"boolean\") {\n _config.scanImportmap = partialConfig.scanImportmap;\n }\n if (partialConfig.loaders) {\n Object.assign(_config.loaders, partialConfig.loaders);\n }\n if (typeof partialConfig.observable === \"boolean\") {\n _config.observable = partialConfig.observable;\n }\n if (partialConfig.tagNames) {\n Object.assign(_config.tagNames, partialConfig.tagNames);\n }\n frozenConfig = null;\n}\n","import { IImportMap, IKeyInfo, ILoadMap, IPrefixMap } from \"./types.js\";\n\nconst COMPONENT_KEYWORD = \"@components/\";\n\nexport function loadImportmap(): IImportMap | null {\n const importmap: IImportMap = { imports: {} };\n document.querySelectorAll('script[type=\"importmap\"]').forEach((script) => {\n try {\n const json = JSON.parse(script.innerHTML);\n if (json.imports) {\n importmap.imports = Object.assign(importmap.imports, json.imports);\n }\n } catch (e) {\n throw new Error(\"Failed to parse importmap JSON: \" + e);\n }\n });\n return Object.keys(importmap.imports).length > 0\n ? importmap\n : null;\n}\n\nfunction getKeyInfoFromImportmapKey(key: string): IKeyInfo | null {\n if (key.startsWith(COMPONENT_KEYWORD)) {\n if (key.endsWith(\"/\")) {\n const prefixWithLoader = key.slice(COMPONENT_KEYWORD.length, key.length - 1);\n const [ prefix, loaderKey ] = prefixWithLoader.split(\"|\", 2);\n if (prefix === \"\") {\n throw new Error(\"Invalid importmap key: \" + key);\n }\n return {\n key,\n prefix: prefix.replaceAll(\"/\", \"-\").toLowerCase(),\n loaderKey: loaderKey ?? null,\n isNameSpaced: true\n };\n } else {\n const tagNamePart = key.slice(COMPONENT_KEYWORD.length);\n const [ tagName, loaderKeyPart ] = tagNamePart.split(\"|\", 2);\n const [ loaderKey, extendsText ] = (loaderKeyPart ?? \"\").split(\",\", 2);\n if (tagName === \"\") {\n throw new Error(\"Invalid importmap key: \" + key);\n }\n return {\n key,\n tagName: tagName.replaceAll(\"/\", \"-\").toLowerCase(),\n loaderKey: loaderKey || null,\n extends: extendsText || null,\n isNameSpaced: false\n };\n }\n }\n return null;\n}\n\nexport function buildMap(importmap: IImportMap): {\n prefixMap: IPrefixMap, loadMap: ILoadMap\n} {\n const prefixMap: IPrefixMap = {};\n const loadMap: ILoadMap = {};\n for (const [key, _value] of Object.entries(importmap.imports)) {\n const keyInfo = getKeyInfoFromImportmapKey(key);\n if (keyInfo === null) {\n continue;\n }\n if (keyInfo.isNameSpaced) {\n prefixMap[keyInfo.prefix] = keyInfo;\n } else {\n loadMap[keyInfo.tagName] = keyInfo;\n }\n }\n return { prefixMap, loadMap };\n}","import { DEFAULT_KEY } from \"./config.js\";\nimport { ILoader } from \"./types.js\";\n\nexport function resolveLoader(\n path: string,\n loaderKey: string | null,\n loaders: Record<string, ILoader | string>\n): ILoader {\n let loader: ILoader | string;\n\n if (loaderKey === null || loaderKey === DEFAULT_KEY || loaderKey === \"\") {\n // Try to resolve by postfix\n let resolvedLoader: ILoader | null = null;\n \n const candidates: ILoader[] = [];\n for (const [key, l] of Object.entries(loaders)) {\n if (key === DEFAULT_KEY) continue;\n const currentLoader = typeof l === \"string\" ? loaders[l] : l;\n if (typeof currentLoader === \"string\") continue; // Should not happen if config is correct\n candidates.push(currentLoader);\n }\n\n // Sort by postfix length descending to match longest extension first\n candidates.sort((a, b) => b.postfix.length - a.postfix.length);\n\n for (const currentLoader of candidates) {\n if (path.endsWith(currentLoader.postfix)) {\n resolvedLoader = currentLoader;\n break;\n }\n }\n\n if (resolvedLoader) {\n loader = resolvedLoader;\n } else {\n loader = loaders[DEFAULT_KEY];\n if (typeof loader === \"string\") {\n loader = loaders[loader];\n }\n }\n } else {\n loader = loaders[loaderKey];\n if (!loader) {\n throw new Error(\"Loader not found: \" + loaderKey);\n }\n }\n\n if (typeof loader === \"string\") {\n throw new Error(\"Loader redirection is not supported here\");\n }\n return loader;\n}\n","\nexport const failedTags = new Set<string>();\nexport const loadingTags = new Set<string>();\n\nexport function resetState() {\n failedTags.clear();\n loadingTags.clear();\n}\n\n","import { resolveLoader } from \"./resolveLoader.js\";\nimport { failedTags } from \"./tags.js\";\nimport { IEagerLoadInfo, ILoader } from \"./types.js\";\n\nconst EXTENDS_MAP = new Map<any, string>();\n\nif (typeof window !== \"undefined\") {\n const map = [\n [HTMLButtonElement, \"button\"],\n [HTMLInputElement, \"input\"],\n [HTMLAnchorElement, \"a\"],\n [HTMLImageElement, \"img\"],\n [HTMLDivElement, \"div\"],\n [HTMLSpanElement, \"span\"],\n [HTMLParagraphElement, \"p\"],\n [HTMLUListElement, \"ul\"],\n [HTMLOListElement, \"ol\"],\n [HTMLLIElement, \"li\"],\n [HTMLTableElement, \"table\"],\n [HTMLFormElement, \"form\"],\n [HTMLLabelElement, \"label\"],\n [HTMLSelectElement, \"select\"],\n [HTMLTextAreaElement, \"textarea\"],\n [HTMLHeadingElement, \"h1\"],\n [HTMLQuoteElement, \"blockquote\"],\n [HTMLPreElement, \"pre\"],\n [HTMLBRElement, \"br\"],\n [HTMLHRElement, \"hr\"],\n [HTMLModElement, \"ins\"],\n [HTMLTableCaptionElement, \"caption\"],\n [HTMLTableColElement, \"col\"],\n [HTMLTableSectionElement, \"tbody\"],\n [HTMLTableRowElement, \"tr\"],\n [HTMLTableCellElement, \"td\"],\n [HTMLFieldSetElement, \"fieldset\"],\n [HTMLLegendElement, \"legend\"],\n [HTMLDListElement, \"dl\"],\n [HTMLOptGroupElement, \"optgroup\"],\n [HTMLOptionElement, \"option\"],\n [HTMLStyleElement, \"style\"],\n [HTMLScriptElement, \"script\"],\n [HTMLTemplateElement, \"template\"],\n [HTMLCanvasElement, \"canvas\"],\n [HTMLIFrameElement, \"iframe\"],\n [HTMLObjectElement, \"object\"],\n [HTMLEmbedElement, \"embed\"],\n [HTMLVideoElement, \"video\"],\n [HTMLAudioElement, \"audio\"],\n [HTMLTrackElement, \"track\"],\n [HTMLMapElement, \"map\"],\n [HTMLAreaElement, \"area\"],\n [HTMLSourceElement, \"source\"],\n [HTMLParamElement, \"param\"],\n [HTMLMeterElement, \"meter\"],\n [HTMLProgressElement, \"progress\"],\n [HTMLOutputElement, \"output\"],\n [HTMLDetailsElement, \"details\"],\n [HTMLDialogElement, \"dialog\"],\n [HTMLMenuElement, \"menu\"],\n [HTMLSlotElement, \"slot\"],\n [HTMLTimeElement, \"time\"],\n [HTMLDataElement, \"data\"],\n [HTMLPictureElement, \"picture\"],\n ] as const;\n\n map.forEach(([cls, tag]) => {\n /* istanbul ignore next */\n if (typeof cls !== \"undefined\") {\n EXTENDS_MAP.set(cls, tag);\n }\n });\n}\n\nfunction resolveExtends(componentConstructor: CustomElementConstructor): string | null {\n for (const [cls, tag] of EXTENDS_MAP) {\n if (componentConstructor.prototype instanceof cls) {\n return tag;\n }\n }\n return null;\n}\n\nasync function eagerLoadItem(info: IEagerLoadInfo, tagName:string, loader: ILoader): Promise<void> {\n try {\n if (customElements.get(tagName)) {\n // すでに定義済み\n return;\n }\n const componentConstructor = await loader.loader(info.key);\n if (componentConstructor !== null) {\n let extendsName = info.extends;\n if (extendsName === null) {\n extendsName = resolveExtends(componentConstructor);\n }\n\n if (customElements.get(tagName)) {\n // すでに定義済み\n return;\n }\n if (extendsName === null) {\n customElements.define(tagName, componentConstructor);\n } else {\n customElements.define(tagName, componentConstructor, { extends: extendsName });\n }\n }\n } catch(e) {\n if (!failedTags.has(tagName)) {\n console.error(`Failed to eager load component '${tagName}':`, e);\n failedTags.add(tagName);\n }\n }\n\n}\n\nexport async function eagerLoad(\n loadMap: Record<string, IEagerLoadInfo>, \n loaders: Record<string, ILoader | string>\n): Promise<void> {\n const promises: Promise<void>[] = [];\n for(const [tagName, info] of Object.entries(loadMap)) {\n let loader: ILoader;\n try {\n loader = resolveLoader(info.key, info.loaderKey, loaders);\n } catch (_e) {\n throw new Error(\"Loader redirection is not supported for eager loaded components: \" + tagName);\n }\n promises.push(eagerLoadItem(info, tagName, loader));\n }\n await Promise.all(promises);\n}\n","import { resolveLoader } from \"./resolveLoader.js\";\nimport { failedTags, loadingTags } from \"./tags.js\";\nimport { IConfig, ILoader, INameSpaceInfo, IPrefixMap, ITagInfo } from \"./types.js\";\n\nconst isCustomElement = (node: Node): boolean => {\n return (node instanceof Element && (node.tagName.includes(\"-\") || node.getAttribute(\"is\")?.includes(\"-\"))) ?? false;\n}\n\nexport function getCustomTagInfo(e: Element): ITagInfo {\n const elementTagName = e.tagName.toLowerCase();\n let name;\n let extendsName;\n if (elementTagName.includes(\"-\")) {\n name = elementTagName;\n extendsName = null;\n } else {\n const tagName = e.getAttribute(\"is\");\n if (tagName === null) {\n throw new Error(\"Custom element without a dash or 'is' attribute found: \" + elementTagName);\n }\n if (!tagName.includes(\"-\")) {\n throw new Error(\"Custom element 'is' attribute without a dash found: \" + elementTagName);\n }\n name = tagName;\n extendsName = elementTagName;\n }\n return { name, extends: extendsName };\n}\n\nconst observedCustomElements: WeakSet<Element> = new WeakSet<Element>();\n\nasync function observeShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\n observedCustomElements.add(element);\n await handlerForLazyLoad(element.shadowRoot!, config, prefixMap);\n}\n\nasync function checkObserveShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\n if (element.shadowRoot) {\n if (!observedCustomElements.has(element)) {\n await observeShadowRoot(element, config, prefixMap);\n }\n }\n}\n\nfunction matchNameSpace(tagName: string, prefixMap: IPrefixMap): INameSpaceInfo | null {\n for (const [prefix, info] of Object.entries(prefixMap)) {\n if (tagName.startsWith(prefix + \"-\")) {\n return info;\n }\n }\n return null;\n}\n\nasync function tagLoad(tagInfo: ITagInfo, config: IConfig, prefixMap: IPrefixMap): Promise<void> {\n const info: INameSpaceInfo | null = matchNameSpace(tagInfo.name, prefixMap);\n if (info === null) {\n throw new Error(\"No matching namespace found for lazy loaded component: \" + tagInfo.name);\n }\n \n if (loadingTags.has(tagInfo.name)) {\n await customElements.whenDefined(tagInfo.name);\n return;\n } \n loadingTags.add(tagInfo.name);\n try {\n let loader: ILoader;\n try {\n loader = resolveLoader(\"\", info.loaderKey, config.loaders);\n } catch (_e) {\n throw new Error(\"Loader redirection is not supported for lazy loaded components: \" + tagInfo.name);\n }\n\n const file: string = tagInfo.name.slice(info.prefix.length + 1);\n if (file === \"\") {\n throw new Error(\"Invalid component name for lazy loaded component: \" + tagInfo.name);\n }\n const path = info.key + file + loader.postfix;\n\n if (customElements.get(tagInfo.name)) {\n // すでに定義済み\n return;\n }\n const componentConstructor = await loader.loader(path);\n if (componentConstructor !== null) {\n if (customElements.get(tagInfo.name)) {\n // すでに定義済み\n return;\n }\n if (tagInfo.extends === null) {\n customElements.define(tagInfo.name, componentConstructor);\n } else {\n customElements.define(tagInfo.name, componentConstructor, { extends: tagInfo.extends });\n }\n } else {\n throw new Error(\"Loader returned null for component: \" + tagInfo.name);\n }\n } catch(e) {\n console.error(`Failed to lazy load component '${tagInfo.name}':`, e);\n failedTags.add(tagInfo.name);\n } finally {\n loadingTags.delete(tagInfo.name);\n }\n}\n\n//\nasync function lazyLoad(root: Node, config: IConfig, prefixMap: IPrefixMap): Promise<number> {\n const elements: Element[] = [];\n\n // Create TreeWalker (target element and comment nodes)\n const walker = document.createTreeWalker(\n root, \n NodeFilter.SHOW_ELEMENT,\n (node: Node): number => {\n return isCustomElement(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n } \n );\n \n // Move to next node with TreeWalker and add matching nodes to array\n while (walker.nextNode()) {\n elements.push(walker.currentNode as Element);\n }\n\n const tagInfos: ITagInfo[] = [];\n const tagNames = new Set<string>();\n for(const element of elements) {\n const tagInfo = getCustomTagInfo(element);\n const customClass = customElements.get(tagInfo.name);\n if (customClass === undefined) {\n // undefined\n customElements.whenDefined(tagInfo.name).then(async () => {\n // upgraded\n await checkObserveShadowRoot(element, config, prefixMap);\n });\n if (!tagNames.has(tagInfo.name) && !failedTags.has(tagInfo.name)) {\n tagNames.add(tagInfo.name);\n tagInfos.push(tagInfo);\n }\n } else {\n // upgraded\n await checkObserveShadowRoot(element, config, prefixMap);\n }\n }\n let tagCount = 0;\n for(const tagInfo of tagInfos) {\n await tagLoad(tagInfo, config, prefixMap);\n tagCount++;\n }\n return tagCount;\n\n}\n\nasync function lazyLoads(\n root: Document | ShadowRoot, \n config: IConfig, \n prefixMap: IPrefixMap\n): Promise<void> {\n while(await lazyLoad(root, config, prefixMap) > 0) {\n // Repeat until no more tags to load\n }\n}\n\nexport async function handlerForLazyLoad(\n root: Document | ShadowRoot,\n config: IConfig,\n prefixMap: IPrefixMap\n): Promise<MutationObserver | null> {\n if (Object.keys(prefixMap).length === 0) {\n return null;\n }\n try {\n await lazyLoads(root, config, prefixMap);\n } catch(e) {\n throw new Error(\"Failed to lazy load components: \" + e);\n }\n\n if (!config.observable) {\n return null;\n }\n const mo = new MutationObserver(async (): Promise<void> => {\n try {\n await lazyLoads(root, config, prefixMap);\n } catch(e) {\n console.error(\"Failed to lazy load components: \" + e);\n }\n });\n mo.observe(root, { childList: true, subtree: true });\n return mo;\n}\n","import { config } from \"../config.js\";\nimport { buildMap, loadImportmap } from \"../importmap.js\";\nimport { eagerLoad } from \"../eagerload.js\";\nimport { handlerForLazyLoad } from \"../lazyLoad.js\";\nimport { IPrefixMap } from \"../types.js\";\n\nexport class Autoloader extends HTMLElement {\n private static _instance: Autoloader | null = null;\n private _initialized = false;\n private _prefixMap: IPrefixMap | null = null;\n private _observer: MutationObserver | null = null;\n\n constructor() {\n super();\n if (Autoloader._instance) {\n throw new Error(\n `${config.tagNames.autoloader} can only be instantiated once.`\n );\n }\n Autoloader._instance = this;\n\n const importmap = loadImportmap();\n if (importmap) {\n const { prefixMap, loadMap } = buildMap(importmap);\n this._prefixMap = prefixMap;\n eagerLoad(loadMap, config.loaders).catch((e) => {\n console.error(\"Failed to eager load components:\", e);\n });\n }\n }\n\n async connectedCallback() {\n if (!this._initialized) {\n this._initialized = true;\n if (this._prefixMap) {\n if (document.readyState === \"loading\") {\n await new Promise<void>((r) =>\n document.addEventListener(\"DOMContentLoaded\", () => r(), {\n once: true,\n })\n );\n }\n this._observer = await handlerForLazyLoad(\n document,\n config,\n this._prefixMap\n );\n }\n }\n }\n\n disconnectedCallback() {\n this._observer?.disconnect();\n this._observer = null;\n if (Autoloader._instance === this) {\n Autoloader._instance = null;\n }\n }\n}\n","import { Autoloader } from \"./components/Autoloader.js\";\nimport { config } from \"./config.js\";\n\nexport function registerComponents() {\n if (!customElements.get(config.tagNames.autoloader)) {\n customElements.define(config.tagNames.autoloader, Autoloader);\n }\n}\n","import { setConfig } from \"./config.js\";\nimport { registerComponents } from \"./registerComponents.js\";\nimport { IWritableConfig } from \"./types.js\";\n\nexport function bootstrapAutoloader(config?: IWritableConfig): void {\n if (config) {\n setConfig(config);\n }\n registerComponents();\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/vanilla.ts","../src/config.ts","../src/importmap.ts","../src/resolveLoader.ts","../src/tags.ts","../src/eagerload.ts","../src/platform/customElementRegistry.ts","../src/lazyLoad.ts","../src/components/Autoloader.ts","../src/registerComponents.ts","../src/bootstrapAutoloader.ts"],"sourcesContent":["\nexport async function load(path: string): Promise<CustomElementConstructor> {\n const module = await import(`${path}`);\n return module.default as CustomElementConstructor;\n}\n","\nimport { IConfig, ILoader, IWritableConfig } from \"./types.js\"\nimport { load } from \"./vanilla.js\"\n\ninterface IInternalConfig extends IConfig {\n scanImportmap: boolean;\n loaders: Record<string, ILoader | string>;\n observable: boolean;\n tagNames: {\n autoloader: string;\n };\n}\n\nexport const DEFAULT_KEY = \"*\";\n\nexport const VANILLA_KEY = \"vanilla\";\n\nexport const VANILLA_LOADER = {\n postfix: \".js\",\n loader: load\n}\n\nconst _config: IInternalConfig = {\n scanImportmap: true,\n loaders: {\n [VANILLA_KEY]: VANILLA_LOADER,\n [DEFAULT_KEY]: VANILLA_KEY\n },\n observable: true,\n tagNames: {\n autoloader: \"wcs-autoloader\"\n }\n}\n\nfunction deepFreeze<T>(obj: T): T {\n if (obj === null || typeof obj !== \"object\") return obj;\n Object.freeze(obj);\n for (const key of Object.keys(obj)) {\n deepFreeze((obj as Record<string, unknown>)[key]);\n }\n return obj;\n}\n\nfunction deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== \"object\") return obj;\n const clone: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n clone[key] = deepClone((obj as Record<string, unknown>)[key]);\n }\n return clone as T;\n}\n\nlet frozenConfig: IConfig | null = null;\n\n// 後方互換のため config もエクスポート(読み取り専用として使用)\nexport const config: IConfig = _config as IConfig;\n\nexport function getConfig(): IConfig {\n if (!frozenConfig) {\n frozenConfig = deepFreeze(deepClone(_config));\n }\n return frozenConfig;\n}\n\nexport function setConfig(partialConfig: IWritableConfig): void {\n if (typeof partialConfig.scanImportmap === \"boolean\") {\n _config.scanImportmap = partialConfig.scanImportmap;\n }\n if (partialConfig.loaders) {\n Object.assign(_config.loaders, partialConfig.loaders);\n }\n if (typeof partialConfig.observable === \"boolean\") {\n _config.observable = partialConfig.observable;\n }\n if (partialConfig.tagNames) {\n Object.assign(_config.tagNames, partialConfig.tagNames);\n }\n frozenConfig = null;\n}\n","import { IImportMap, IKeyInfo, ILoadMap, IPrefixMap } from \"./types.js\";\n\nconst COMPONENT_KEYWORD = \"@components/\";\n\nexport function loadImportmap(): IImportMap | null {\n const importmap: IImportMap = { imports: {} };\n document.querySelectorAll('script[type=\"importmap\"]').forEach((script) => {\n try {\n const json = JSON.parse(script.innerHTML);\n if (json.imports) {\n importmap.imports = Object.assign(importmap.imports, json.imports);\n }\n } catch (e) {\n throw new Error(\"Failed to parse importmap JSON: \" + e);\n }\n });\n return Object.keys(importmap.imports).length > 0\n ? importmap\n : null;\n}\n\nfunction getKeyInfoFromImportmapKey(key: string): IKeyInfo | null {\n if (key.startsWith(COMPONENT_KEYWORD)) {\n if (key.endsWith(\"/\")) {\n const prefixWithLoader = key.slice(COMPONENT_KEYWORD.length, key.length - 1);\n const [ prefix, loaderKey ] = prefixWithLoader.split(\"|\", 2);\n if (prefix === \"\") {\n throw new Error(\"Invalid importmap key: \" + key);\n }\n return {\n key,\n prefix: prefix.replaceAll(\"/\", \"-\").toLowerCase(),\n loaderKey: loaderKey ?? null,\n isNameSpaced: true\n };\n } else {\n const tagNamePart = key.slice(COMPONENT_KEYWORD.length);\n const [ tagName, loaderKeyPart ] = tagNamePart.split(\"|\", 2);\n const [ loaderKey, extendsText ] = (loaderKeyPart ?? \"\").split(\",\", 2);\n if (tagName === \"\") {\n throw new Error(\"Invalid importmap key: \" + key);\n }\n return {\n key,\n tagName: tagName.replaceAll(\"/\", \"-\").toLowerCase(),\n loaderKey: loaderKey || null,\n extends: extendsText || null,\n isNameSpaced: false\n };\n }\n }\n return null;\n}\n\nexport function buildMap(importmap: IImportMap): {\n prefixMap: IPrefixMap, loadMap: ILoadMap\n} {\n const prefixMap: IPrefixMap = {};\n const loadMap: ILoadMap = {};\n for (const [key, _value] of Object.entries(importmap.imports)) {\n const keyInfo = getKeyInfoFromImportmapKey(key);\n if (keyInfo === null) {\n continue;\n }\n if (keyInfo.isNameSpaced) {\n prefixMap[keyInfo.prefix] = keyInfo;\n } else {\n loadMap[keyInfo.tagName] = keyInfo;\n }\n }\n return { prefixMap, loadMap };\n}","import { DEFAULT_KEY } from \"./config.js\";\nimport { ILoader } from \"./types.js\";\n\nexport function resolveLoader(\n path: string,\n loaderKey: string | null,\n loaders: Record<string, ILoader | string>\n): ILoader {\n let loader: ILoader | string;\n\n if (loaderKey === null || loaderKey === DEFAULT_KEY || loaderKey === \"\") {\n // Try to resolve by postfix\n let resolvedLoader: ILoader | null = null;\n \n const candidates: ILoader[] = [];\n for (const [key, l] of Object.entries(loaders)) {\n if (key === DEFAULT_KEY) continue;\n const currentLoader = typeof l === \"string\" ? loaders[l] : l;\n if (typeof currentLoader === \"string\") continue; // Should not happen if config is correct\n candidates.push(currentLoader);\n }\n\n // Sort by postfix length descending to match longest extension first\n candidates.sort((a, b) => b.postfix.length - a.postfix.length);\n\n for (const currentLoader of candidates) {\n if (path.endsWith(currentLoader.postfix)) {\n resolvedLoader = currentLoader;\n break;\n }\n }\n\n if (resolvedLoader) {\n loader = resolvedLoader;\n } else {\n loader = loaders[DEFAULT_KEY];\n if (typeof loader === \"string\") {\n loader = loaders[loader];\n }\n }\n } else {\n loader = loaders[loaderKey];\n if (!loader) {\n throw new Error(\"Loader not found: \" + loaderKey);\n }\n }\n\n if (typeof loader === \"string\") {\n throw new Error(\"Loader redirection is not supported here\");\n }\n return loader;\n}\n","\nexport const failedTags = new Set<string>();\n\n// The in-flight load per tag, so a second caller can await the load itself\n// rather than the definition. A load that fails never defines its tag, so\n// waiting on whenDefined() instead would wait forever.\nexport const loadingTags = new Map<string, Promise<void>>();\n\n// Scoped registries each need their own define() call for the same tag, so an\n// in-flight load in one registry must not make another registry skip its own.\n// The module import itself is shared by the loader's own cache. The global\n// registry keeps using the exported `loadingTags` so direct inspection works.\nlet loadingTagsByRegistry = new WeakMap<object, Map<string, Promise<void>>>();\n\nexport function getLoadingTags(registry: object): Map<string, Promise<void>> {\n if (registry === (globalThis as { readonly customElements?: unknown }).customElements) {\n return loadingTags;\n }\n let tags = loadingTagsByRegistry.get(registry);\n if (tags === undefined) {\n tags = new Map();\n loadingTagsByRegistry.set(registry, tags);\n }\n return tags;\n}\n\nexport function resetState() {\n failedTags.clear();\n loadingTags.clear();\n loadingTagsByRegistry = new WeakMap();\n}\n\n","import { resolveLoader } from \"./resolveLoader.js\";\nimport { failedTags } from \"./tags.js\";\nimport { IEagerLoadInfo, ILoader } from \"./types.js\";\n\nconst EXTENDS_MAP = new Map<any, string>();\n\nif (typeof window !== \"undefined\") {\n const map = [\n [HTMLButtonElement, \"button\"],\n [HTMLInputElement, \"input\"],\n [HTMLAnchorElement, \"a\"],\n [HTMLImageElement, \"img\"],\n [HTMLDivElement, \"div\"],\n [HTMLSpanElement, \"span\"],\n [HTMLParagraphElement, \"p\"],\n [HTMLUListElement, \"ul\"],\n [HTMLOListElement, \"ol\"],\n [HTMLLIElement, \"li\"],\n [HTMLTableElement, \"table\"],\n [HTMLFormElement, \"form\"],\n [HTMLLabelElement, \"label\"],\n [HTMLSelectElement, \"select\"],\n [HTMLTextAreaElement, \"textarea\"],\n [HTMLHeadingElement, \"h1\"],\n [HTMLQuoteElement, \"blockquote\"],\n [HTMLPreElement, \"pre\"],\n [HTMLBRElement, \"br\"],\n [HTMLHRElement, \"hr\"],\n [HTMLModElement, \"ins\"],\n [HTMLTableCaptionElement, \"caption\"],\n [HTMLTableColElement, \"col\"],\n [HTMLTableSectionElement, \"tbody\"],\n [HTMLTableRowElement, \"tr\"],\n [HTMLTableCellElement, \"td\"],\n [HTMLFieldSetElement, \"fieldset\"],\n [HTMLLegendElement, \"legend\"],\n [HTMLDListElement, \"dl\"],\n [HTMLOptGroupElement, \"optgroup\"],\n [HTMLOptionElement, \"option\"],\n [HTMLStyleElement, \"style\"],\n [HTMLScriptElement, \"script\"],\n [HTMLTemplateElement, \"template\"],\n [HTMLCanvasElement, \"canvas\"],\n [HTMLIFrameElement, \"iframe\"],\n [HTMLObjectElement, \"object\"],\n [HTMLEmbedElement, \"embed\"],\n [HTMLVideoElement, \"video\"],\n [HTMLAudioElement, \"audio\"],\n [HTMLTrackElement, \"track\"],\n [HTMLMapElement, \"map\"],\n [HTMLAreaElement, \"area\"],\n [HTMLSourceElement, \"source\"],\n [HTMLParamElement, \"param\"],\n [HTMLMeterElement, \"meter\"],\n [HTMLProgressElement, \"progress\"],\n [HTMLOutputElement, \"output\"],\n [HTMLDetailsElement, \"details\"],\n [HTMLDialogElement, \"dialog\"],\n [HTMLMenuElement, \"menu\"],\n [HTMLSlotElement, \"slot\"],\n [HTMLTimeElement, \"time\"],\n [HTMLDataElement, \"data\"],\n [HTMLPictureElement, \"picture\"],\n ] as const;\n\n map.forEach(([cls, tag]) => {\n /* istanbul ignore next */\n if (typeof cls !== \"undefined\") {\n EXTENDS_MAP.set(cls, tag);\n }\n });\n}\n\nfunction resolveExtends(componentConstructor: CustomElementConstructor): string | null {\n for (const [cls, tag] of EXTENDS_MAP) {\n if (componentConstructor.prototype instanceof cls) {\n return tag;\n }\n }\n return null;\n}\n\nasync function eagerLoadItem(info: IEagerLoadInfo, tagName:string, loader: ILoader): Promise<void> {\n try {\n if (customElements.get(tagName)) {\n // すでに定義済み\n return;\n }\n const componentConstructor = await loader.loader(info.key);\n if (componentConstructor !== null) {\n let extendsName = info.extends;\n if (extendsName === null) {\n extendsName = resolveExtends(componentConstructor);\n }\n\n if (customElements.get(tagName)) {\n // すでに定義済み\n return;\n }\n if (extendsName === null) {\n customElements.define(tagName, componentConstructor);\n } else {\n customElements.define(tagName, componentConstructor, { extends: extendsName });\n }\n }\n } catch(e) {\n if (!failedTags.has(tagName)) {\n console.error(`Failed to eager load component '${tagName}':`, e);\n failedTags.add(tagName);\n }\n }\n\n}\n\nexport async function eagerLoad(\n loadMap: Record<string, IEagerLoadInfo>, \n loaders: Record<string, ILoader | string>\n): Promise<void> {\n const promises: Promise<void>[] = [];\n for(const [tagName, info] of Object.entries(loadMap)) {\n let loader: ILoader;\n try {\n loader = resolveLoader(info.key, info.loaderKey, loaders);\n } catch (_e) {\n throw new Error(\"Loader redirection is not supported for eager loaded components: \" + tagName);\n }\n promises.push(eagerLoadItem(info, tagName, loader));\n }\n await Promise.all(promises);\n}\n","export interface ICustomElementRegistryAdapter {\n get(name: string): CustomElementConstructor | undefined;\n whenDefined(name: string): Promise<CustomElementConstructor>;\n define(\n name: string,\n constructor: CustomElementConstructor,\n options?: ElementDefinitionOptions,\n ): void;\n}\n\ninterface ICustomElementRegistryOwner {\n /**\n * Scoped registry hook, as exposed by `Element` / `Document` / `ShadowRoot`.\n * `undefined` on platforms without scoped custom element registries; `null`\n * when the node deliberately carries a null registry and has not been handed\n * to `registry.initialize()`.\n */\n readonly customElementRegistry?: unknown;\n}\n\nfunction toAdapter(registry: unknown): ICustomElementRegistryAdapter | null {\n if (typeof registry !== \"object\" || registry === null) return null;\n\n const candidate = registry as Partial<ICustomElementRegistryAdapter>;\n if (\n typeof candidate.get !== \"function\"\n || typeof candidate.whenDefined !== \"function\"\n || typeof candidate.define !== \"function\"\n ) {\n return null;\n }\n return candidate as ICustomElementRegistryAdapter;\n}\n\n/**\n * Resolve the registry that governs `root`.\n *\n * Scoped registries do not inherit from the global one, so defining a lazily\n * loaded tag globally leaves a scoped subtree's elements un-upgraded forever --\n * and the `whenDefined` used to chase their shadow content never resolves.\n * Autoloading therefore has to define into the registry the scanned root itself\n * resolves against. Roots on platforms without scoped registries report\n * `undefined` and fall back to the global registry.\n */\nexport function getCustomElementRegistry(\n root: Node | null = null,\n): ICustomElementRegistryAdapter | null {\n if (root !== null && typeof root !== \"undefined\") {\n const scoped = (root as ICustomElementRegistryOwner).customElementRegistry;\n if (scoped === null) return null;\n if (typeof scoped !== \"undefined\") return toAdapter(scoped);\n }\n return toAdapter((globalThis as { readonly customElements?: unknown }).customElements);\n}\n","import { resolveLoader } from \"./resolveLoader.js\";\nimport { failedTags, getLoadingTags } from \"./tags.js\";\nimport {\n ICustomElementRegistryAdapter,\n getCustomElementRegistry,\n} from \"./platform/customElementRegistry.js\";\nimport { IConfig, ILoader, INameSpaceInfo, IPrefixMap, ITagInfo } from \"./types.js\";\n\nconst isCustomElement = (node: Node): boolean => {\n return (node instanceof Element && (node.tagName.includes(\"-\") || node.getAttribute(\"is\")?.includes(\"-\"))) ?? false;\n}\n\nexport function getCustomTagInfo(e: Element): ITagInfo {\n const elementTagName = e.tagName.toLowerCase();\n let name;\n let extendsName;\n if (elementTagName.includes(\"-\")) {\n name = elementTagName;\n extendsName = null;\n } else {\n const tagName = e.getAttribute(\"is\");\n if (tagName === null) {\n throw new Error(\"Custom element without a dash or 'is' attribute found: \" + elementTagName);\n }\n if (!tagName.includes(\"-\")) {\n throw new Error(\"Custom element 'is' attribute without a dash found: \" + elementTagName);\n }\n name = tagName;\n extendsName = elementTagName;\n }\n return { name, extends: extendsName };\n}\n\nconst observedCustomElements: WeakSet<Element> = new WeakSet<Element>();\n\n// Elements that already carry a whenDefined() follow-up. `lazyLoads` rescans\n// until nothing more loads, and the MutationObserver reruns it on every DOM\n// change, so without this an element whose tag never gets defined collects one\n// never-settling continuation per scan.\nconst upgradeWatchedElements: WeakSet<Element> = new WeakSet<Element>();\n\nasync function observeShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\n observedCustomElements.add(element);\n await handlerForLazyLoad(element.shadowRoot!, config, prefixMap);\n}\n\nasync function checkObserveShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\n if (element.shadowRoot) {\n if (!observedCustomElements.has(element)) {\n await observeShadowRoot(element, config, prefixMap);\n }\n }\n}\n\nfunction matchNameSpace(tagName: string, prefixMap: IPrefixMap): INameSpaceInfo | null {\n for (const [prefix, info] of Object.entries(prefixMap)) {\n if (tagName.startsWith(prefix + \"-\")) {\n return info;\n }\n }\n return null;\n}\n\nasync function tagLoad(\n tagInfo: ITagInfo,\n config: IConfig,\n prefixMap: IPrefixMap,\n registry: ICustomElementRegistryAdapter,\n): Promise<void> {\n const info: INameSpaceInfo | null = matchNameSpace(tagInfo.name, prefixMap);\n if (info === null) {\n throw new Error(\"No matching namespace found for lazy loaded component: \" + tagInfo.name);\n }\n\n const loadingTags = getLoadingTags(registry);\n const inFlight = loadingTags.get(tagInfo.name);\n if (inFlight !== undefined) {\n // Wait on the load itself, never on the definition: a load that fails never\n // defines the tag, so whenDefined() would stay pending forever and wedge\n // every caller above — including the one that installs the MutationObserver,\n // which stops all further lazy loading on the page.\n await inFlight;\n return;\n }\n\n const load = performTagLoad(tagInfo, config, info, registry);\n loadingTags.set(tagInfo.name, load);\n try {\n await load;\n } finally {\n loadingTags.delete(tagInfo.name);\n }\n}\n\n// Never rejects: a failure is reported and recorded in `failedTags`, which keeps\n// the tag out of later scans.\nasync function performTagLoad(\n tagInfo: ITagInfo,\n config: IConfig,\n info: INameSpaceInfo,\n registry: ICustomElementRegistryAdapter,\n): Promise<void> {\n try {\n let loader: ILoader;\n try {\n loader = resolveLoader(\"\", info.loaderKey, config.loaders);\n } catch (_e) {\n throw new Error(\"Loader redirection is not supported for lazy loaded components: \" + tagInfo.name);\n }\n\n const file: string = tagInfo.name.slice(info.prefix.length + 1);\n if (file === \"\") {\n throw new Error(\"Invalid component name for lazy loaded component: \" + tagInfo.name);\n }\n const path = info.key + file + loader.postfix;\n\n if (registry.get(tagInfo.name)) {\n // すでに定義済み\n return;\n }\n const componentConstructor = await loader.loader(path);\n if (componentConstructor !== null) {\n if (registry.get(tagInfo.name)) {\n // すでに定義済み\n return;\n }\n if (tagInfo.extends === null) {\n registry.define(tagInfo.name, componentConstructor);\n } else {\n registry.define(tagInfo.name, componentConstructor, { extends: tagInfo.extends });\n }\n } else {\n throw new Error(\"Loader returned null for component: \" + tagInfo.name);\n }\n } catch(e) {\n console.error(`Failed to lazy load component '${tagInfo.name}':`, e);\n failedTags.add(tagInfo.name);\n }\n}\n\n//\nasync function lazyLoad(\n root: Node,\n config: IConfig,\n prefixMap: IPrefixMap,\n registry: ICustomElementRegistryAdapter,\n): Promise<number> {\n const elements: Element[] = [];\n\n // Create TreeWalker (target element and comment nodes)\n const walker = (root.ownerDocument ?? (root as Document)).createTreeWalker(\n root,\n NodeFilter.SHOW_ELEMENT,\n (node: Node): number => {\n return isCustomElement(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n } \n );\n \n // Move to next node with TreeWalker and add matching nodes to array\n while (walker.nextNode()) {\n elements.push(walker.currentNode as Element);\n }\n\n const tagInfos: ITagInfo[] = [];\n const tagNames = new Set<string>();\n for(const element of elements) {\n const tagInfo = getCustomTagInfo(element);\n const customClass = registry.get(tagInfo.name);\n if (customClass === undefined) {\n // undefined\n if (!upgradeWatchedElements.has(element)) {\n upgradeWatchedElements.add(element);\n registry.whenDefined(tagInfo.name).then(async () => {\n // upgraded\n await checkObserveShadowRoot(element, config, prefixMap);\n });\n }\n if (!tagNames.has(tagInfo.name) && !failedTags.has(tagInfo.name)) {\n tagNames.add(tagInfo.name);\n tagInfos.push(tagInfo);\n }\n } else {\n // upgraded\n await checkObserveShadowRoot(element, config, prefixMap);\n }\n }\n let tagCount = 0;\n for(const tagInfo of tagInfos) {\n await tagLoad(tagInfo, config, prefixMap, registry);\n tagCount++;\n }\n return tagCount;\n\n}\n\nasync function lazyLoads(\n root: Document | ShadowRoot,\n config: IConfig,\n prefixMap: IPrefixMap,\n registry: ICustomElementRegistryAdapter,\n): Promise<void> {\n while(await lazyLoad(root, config, prefixMap, registry) > 0) {\n // Repeat until no more tags to load\n }\n}\n\nexport async function handlerForLazyLoad(\n root: Document | ShadowRoot,\n config: IConfig,\n prefixMap: IPrefixMap\n): Promise<MutationObserver | null> {\n if (Object.keys(prefixMap).length === 0) {\n return null;\n }\n // Definitions must land in the registry this root resolves against: a scoped\n // registry does not see global definitions, so defining globally would leave\n // these elements un-upgraded and the whenDefined below pending forever.\n const registry = getCustomElementRegistry(root);\n if (registry === null) {\n // A null-registry root cannot receive definitions at all until someone calls\n // registry.initialize() on it, so there is nothing autoloading can do here.\n console.error(\n \"Cannot autoload components: the root has a null custom element registry.\",\n );\n return null;\n }\n try {\n await lazyLoads(root, config, prefixMap, registry);\n } catch(e) {\n throw new Error(\"Failed to lazy load components: \" + e);\n }\n\n if (!config.observable) {\n return null;\n }\n const mo = new MutationObserver(async (): Promise<void> => {\n try {\n await lazyLoads(root, config, prefixMap, registry);\n } catch(e) {\n console.error(\"Failed to lazy load components: \" + e);\n }\n });\n mo.observe(root, { childList: true, subtree: true });\n return mo;\n}\n","import { config } from \"../config.js\";\nimport { buildMap, loadImportmap } from \"../importmap.js\";\nimport { eagerLoad } from \"../eagerload.js\";\nimport { handlerForLazyLoad } from \"../lazyLoad.js\";\nimport { IPrefixMap } from \"../types.js\";\n\nexport class Autoloader extends HTMLElement {\n private static _instance: Autoloader | null = null;\n private _initialized = false;\n private _prefixMap: IPrefixMap | null = null;\n private _observer: MutationObserver | null = null;\n\n constructor() {\n super();\n if (Autoloader._instance) {\n throw new Error(\n `${config.tagNames.autoloader} can only be instantiated once.`\n );\n }\n Autoloader._instance = this;\n\n const importmap = loadImportmap();\n if (importmap) {\n const { prefixMap, loadMap } = buildMap(importmap);\n this._prefixMap = prefixMap;\n eagerLoad(loadMap, config.loaders).catch((e) => {\n console.error(\"Failed to eager load components:\", e);\n });\n }\n }\n\n async connectedCallback() {\n if (!this._initialized) {\n this._initialized = true;\n if (this._prefixMap) {\n if (document.readyState === \"loading\") {\n await new Promise<void>((r) =>\n document.addEventListener(\"DOMContentLoaded\", () => r(), {\n once: true,\n })\n );\n }\n this._observer = await handlerForLazyLoad(\n document,\n config,\n this._prefixMap\n );\n }\n }\n }\n\n disconnectedCallback() {\n this._observer?.disconnect();\n this._observer = null;\n if (Autoloader._instance === this) {\n Autoloader._instance = null;\n }\n }\n}\n","import { Autoloader } from \"./components/Autoloader.js\";\nimport { config } from \"./config.js\";\n\n/**\n * Register this package's tags. Pass a scoped `CustomElementRegistry` to define\n * them for a single shadow tree -- scoped registries do not inherit the global\n * one, so a tree using one needs its own definitions.\n */\nexport function registerComponents(registry: CustomElementRegistry = customElements) {\n if (!registry.get(config.tagNames.autoloader)) {\n registry.define(config.tagNames.autoloader, Autoloader);\n }\n}\n","import { setConfig } from \"./config.js\";\nimport { registerComponents } from \"./registerComponents.js\";\nimport { IWritableConfig } from \"./types.js\";\n\nexport function bootstrapAutoloader(config?: IWritableConfig, registry?: CustomElementRegistry): void {\n if (config) {\n setConfig(config);\n }\n registerComponents(registry);\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED