@wcstack/autoloader 1.5.1 → 1.6.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/index.d.ts +12 -1
- package/dist/index.esm.js +27 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -3,9 +3,18 @@ interface ILoader {
|
|
|
3
3
|
readonly postfix: string;
|
|
4
4
|
readonly loader: LoaderFunction;
|
|
5
5
|
}
|
|
6
|
+
interface ITagNames {
|
|
7
|
+
readonly autoloader: string;
|
|
8
|
+
}
|
|
6
9
|
interface IWritableTagNames {
|
|
7
10
|
autoloader?: string;
|
|
8
11
|
}
|
|
12
|
+
interface IConfig {
|
|
13
|
+
readonly scanImportmap: boolean;
|
|
14
|
+
readonly loaders: Record<string, ILoader | string>;
|
|
15
|
+
readonly observable: boolean;
|
|
16
|
+
readonly tagNames: ITagNames;
|
|
17
|
+
}
|
|
9
18
|
interface IWritableConfig {
|
|
10
19
|
scanImportmap?: boolean;
|
|
11
20
|
loaders?: Record<string, ILoader | string>;
|
|
@@ -15,5 +24,7 @@ interface IWritableConfig {
|
|
|
15
24
|
|
|
16
25
|
declare function bootstrapAutoloader(config?: IWritableConfig): void;
|
|
17
26
|
|
|
18
|
-
|
|
27
|
+
declare function getConfig(): IConfig;
|
|
28
|
+
|
|
29
|
+
export { bootstrapAutoloader, getConfig };
|
|
19
30
|
export type { ILoader, IWritableConfig, IWritableTagNames, LoaderFunction };
|
package/dist/index.esm.js
CHANGED
|
@@ -20,8 +20,33 @@ const _config = {
|
|
|
20
20
|
autoloader: "wcs-autoloader"
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
|
+
function deepFreeze(obj) {
|
|
24
|
+
if (obj === null || typeof obj !== "object")
|
|
25
|
+
return obj;
|
|
26
|
+
Object.freeze(obj);
|
|
27
|
+
for (const key of Object.keys(obj)) {
|
|
28
|
+
deepFreeze(obj[key]);
|
|
29
|
+
}
|
|
30
|
+
return obj;
|
|
31
|
+
}
|
|
32
|
+
function deepClone(obj) {
|
|
33
|
+
if (obj === null || typeof obj !== "object")
|
|
34
|
+
return obj;
|
|
35
|
+
const clone = {};
|
|
36
|
+
for (const key of Object.keys(obj)) {
|
|
37
|
+
clone[key] = deepClone(obj[key]);
|
|
38
|
+
}
|
|
39
|
+
return clone;
|
|
40
|
+
}
|
|
41
|
+
let frozenConfig = null;
|
|
23
42
|
// 後方互換のため config もエクスポート(読み取り専用として使用)
|
|
24
43
|
const config = _config;
|
|
44
|
+
function getConfig() {
|
|
45
|
+
if (!frozenConfig) {
|
|
46
|
+
frozenConfig = deepFreeze(deepClone(_config));
|
|
47
|
+
}
|
|
48
|
+
return frozenConfig;
|
|
49
|
+
}
|
|
25
50
|
function setConfig(partialConfig) {
|
|
26
51
|
if (typeof partialConfig.scanImportmap === "boolean") {
|
|
27
52
|
_config.scanImportmap = partialConfig.scanImportmap;
|
|
@@ -35,6 +60,7 @@ function setConfig(partialConfig) {
|
|
|
35
60
|
if (partialConfig.tagNames) {
|
|
36
61
|
Object.assign(_config.tagNames, partialConfig.tagNames);
|
|
37
62
|
}
|
|
63
|
+
frozenConfig = null;
|
|
38
64
|
}
|
|
39
65
|
|
|
40
66
|
const COMPONENT_KEYWORD = "@components/";
|
|
@@ -493,5 +519,5 @@ function bootstrapAutoloader(config) {
|
|
|
493
519
|
registerComponents();
|
|
494
520
|
}
|
|
495
521
|
|
|
496
|
-
export { bootstrapAutoloader };
|
|
522
|
+
export { bootstrapAutoloader, getConfig };
|
|
497
523
|
//# sourceMappingURL=index.esm.js.map
|
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":["\r\nexport async function load(path: string): Promise<CustomElementConstructor> {\r\n const module = await import(`${path}`);\r\n return module.default as CustomElementConstructor;\r\n}\r\n","\r\nimport { IConfig, ILoader, IWritableConfig } from \"./types.js\"\r\nimport { load } from \"./vanilla.js\"\r\n\r\ninterface IInternalConfig extends IConfig {\r\n scanImportmap: boolean;\r\n loaders: Record<string, ILoader | string>;\r\n observable: boolean;\r\n tagNames: {\r\n autoloader: string;\r\n };\r\n}\r\n\r\nexport const DEFAULT_KEY = \"*\";\r\n\r\nexport const VANILLA_KEY = \"vanilla\";\r\n\r\nexport const VANILLA_LOADER = {\r\n postfix: \".js\",\r\n loader: load\r\n}\r\n\r\nconst _config: IInternalConfig = {\r\n scanImportmap: true,\r\n loaders: {\r\n [VANILLA_KEY]: VANILLA_LOADER,\r\n [DEFAULT_KEY]: VANILLA_KEY\r\n },\r\n observable: true,\r\n tagNames: {\r\n autoloader: \"wcs-autoloader\"\r\n }\r\n}\r\n\r\nfunction deepFreeze<T>(obj: T): T {\r\n if (obj === null || typeof obj !== \"object\") return obj;\r\n Object.freeze(obj);\r\n for (const key of Object.keys(obj)) {\r\n deepFreeze((obj as Record<string, unknown>)[key]);\r\n }\r\n return obj;\r\n}\r\n\r\nfunction deepClone<T>(obj: T): T {\r\n if (obj === null || typeof obj !== \"object\") return obj;\r\n const clone: Record<string, unknown> = {};\r\n for (const key of Object.keys(obj)) {\r\n clone[key] = deepClone((obj as Record<string, unknown>)[key]);\r\n }\r\n return clone as T;\r\n}\r\n\r\nlet frozenConfig: IConfig | null = null;\r\n\r\n// 後方互換のため config もエクスポート(読み取り専用として使用)\r\nexport const config: IConfig = _config as IConfig;\r\n\r\nexport function getConfig(): IConfig {\r\n if (!frozenConfig) {\r\n frozenConfig = deepFreeze(deepClone(_config));\r\n }\r\n return frozenConfig;\r\n}\r\n\r\nexport function setConfig(partialConfig: IWritableConfig): void {\r\n if (typeof partialConfig.scanImportmap === \"boolean\") {\r\n _config.scanImportmap = partialConfig.scanImportmap;\r\n }\r\n if (partialConfig.loaders) {\r\n Object.assign(_config.loaders, partialConfig.loaders);\r\n }\r\n if (typeof partialConfig.observable === \"boolean\") {\r\n _config.observable = partialConfig.observable;\r\n }\r\n if (partialConfig.tagNames) {\r\n Object.assign(_config.tagNames, partialConfig.tagNames);\r\n }\r\n frozenConfig = null;\r\n}\r\n","import { IImportMap, IKeyInfo, ILoadMap, IPrefixMap } from \"./types.js\";\r\n\r\nconst COMPONENT_KEYWORD = \"@components/\";\r\n\r\nexport function loadImportmap(): IImportMap | null {\r\n const importmap: IImportMap = { imports: {} };\r\n document.querySelectorAll('script[type=\"importmap\"]').forEach((script) => {\r\n try {\r\n const json = JSON.parse(script.innerHTML);\r\n if (json.imports) {\r\n importmap.imports = Object.assign(importmap.imports, json.imports);\r\n }\r\n } catch (e) {\r\n throw new Error(\"Failed to parse importmap JSON: \" + e);\r\n }\r\n });\r\n return Object.keys(importmap.imports).length > 0\r\n ? importmap\r\n : null;\r\n}\r\n\r\nfunction getKeyInfoFromImportmapKey(key: string): IKeyInfo | null {\r\n if (key.startsWith(COMPONENT_KEYWORD)) {\r\n if (key.endsWith(\"/\")) {\r\n const prefixWithLoader = key.slice(COMPONENT_KEYWORD.length, key.length - 1);\r\n const [ prefix, loaderKey ] = prefixWithLoader.split(\"|\", 2);\r\n if (prefix === \"\") {\r\n throw new Error(\"Invalid importmap key: \" + key);\r\n }\r\n return {\r\n key,\r\n prefix: prefix.replaceAll(\"/\", \"-\").toLowerCase(),\r\n loaderKey: loaderKey ?? null,\r\n isNameSpaced: true\r\n };\r\n } else {\r\n const tagNamePart = key.slice(COMPONENT_KEYWORD.length);\r\n const [ tagName, loaderKeyPart ] = tagNamePart.split(\"|\", 2);\r\n const [ loaderKey, extendsText ] = (loaderKeyPart ?? \"\").split(\",\", 2);\r\n if (tagName === \"\") {\r\n throw new Error(\"Invalid importmap key: \" + key);\r\n }\r\n return {\r\n key,\r\n tagName: tagName.replaceAll(\"/\", \"-\").toLowerCase(),\r\n loaderKey: loaderKey || null,\r\n extends: extendsText || null,\r\n isNameSpaced: false\r\n };\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function buildMap(importmap: IImportMap): {\r\n prefixMap: IPrefixMap, loadMap: ILoadMap\r\n} {\r\n const prefixMap: IPrefixMap = {};\r\n const loadMap: ILoadMap = {};\r\n for (const [key, _value] of Object.entries(importmap.imports)) {\r\n const keyInfo = getKeyInfoFromImportmapKey(key);\r\n if (keyInfo === null) {\r\n continue;\r\n }\r\n if (keyInfo.isNameSpaced) {\r\n prefixMap[keyInfo.prefix] = keyInfo;\r\n } else {\r\n loadMap[keyInfo.tagName] = keyInfo;\r\n }\r\n }\r\n return { prefixMap, loadMap };\r\n}","import { DEFAULT_KEY } from \"./config.js\";\r\nimport { ILoader } from \"./types.js\";\r\n\r\nexport function resolveLoader(\r\n path: string,\r\n loaderKey: string | null,\r\n loaders: Record<string, ILoader | string>\r\n): ILoader {\r\n let loader: ILoader | string;\r\n\r\n if (loaderKey === null || loaderKey === DEFAULT_KEY || loaderKey === \"\") {\r\n // Try to resolve by postfix\r\n let resolvedLoader: ILoader | null = null;\r\n \r\n const candidates: ILoader[] = [];\r\n for (const [key, l] of Object.entries(loaders)) {\r\n if (key === DEFAULT_KEY) continue;\r\n const currentLoader = typeof l === \"string\" ? loaders[l] : l;\r\n if (typeof currentLoader === \"string\") continue; // Should not happen if config is correct\r\n candidates.push(currentLoader);\r\n }\r\n\r\n // Sort by postfix length descending to match longest extension first\r\n candidates.sort((a, b) => b.postfix.length - a.postfix.length);\r\n\r\n for (const currentLoader of candidates) {\r\n if (path.endsWith(currentLoader.postfix)) {\r\n resolvedLoader = currentLoader;\r\n break;\r\n }\r\n }\r\n\r\n if (resolvedLoader) {\r\n loader = resolvedLoader;\r\n } else {\r\n loader = loaders[DEFAULT_KEY];\r\n if (typeof loader === \"string\") {\r\n loader = loaders[loader];\r\n }\r\n }\r\n } else {\r\n loader = loaders[loaderKey];\r\n if (!loader) {\r\n throw new Error(\"Loader not found: \" + loaderKey);\r\n }\r\n }\r\n\r\n if (typeof loader === \"string\") {\r\n throw new Error(\"Loader redirection is not supported here\");\r\n }\r\n return loader;\r\n}\r\n","\r\nexport const failedTags = new Set<string>();\r\nexport const loadingTags = new Set<string>();\r\n\r\nexport function resetState() {\r\n failedTags.clear();\r\n loadingTags.clear();\r\n}\r\n\r\n","import { resolveLoader } from \"./resolveLoader.js\";\r\nimport { failedTags } from \"./tags.js\";\r\nimport { IEagerLoadInfo, ILoader } from \"./types.js\";\r\n\r\nconst EXTENDS_MAP = new Map<any, string>();\r\n\r\nif (typeof window !== \"undefined\") {\r\n const map = [\r\n [HTMLButtonElement, \"button\"],\r\n [HTMLInputElement, \"input\"],\r\n [HTMLAnchorElement, \"a\"],\r\n [HTMLImageElement, \"img\"],\r\n [HTMLDivElement, \"div\"],\r\n [HTMLSpanElement, \"span\"],\r\n [HTMLParagraphElement, \"p\"],\r\n [HTMLUListElement, \"ul\"],\r\n [HTMLOListElement, \"ol\"],\r\n [HTMLLIElement, \"li\"],\r\n [HTMLTableElement, \"table\"],\r\n [HTMLFormElement, \"form\"],\r\n [HTMLLabelElement, \"label\"],\r\n [HTMLSelectElement, \"select\"],\r\n [HTMLTextAreaElement, \"textarea\"],\r\n [HTMLHeadingElement, \"h1\"],\r\n [HTMLQuoteElement, \"blockquote\"],\r\n [HTMLPreElement, \"pre\"],\r\n [HTMLBRElement, \"br\"],\r\n [HTMLHRElement, \"hr\"],\r\n [HTMLModElement, \"ins\"],\r\n [HTMLTableCaptionElement, \"caption\"],\r\n [HTMLTableColElement, \"col\"],\r\n [HTMLTableSectionElement, \"tbody\"],\r\n [HTMLTableRowElement, \"tr\"],\r\n [HTMLTableCellElement, \"td\"],\r\n [HTMLFieldSetElement, \"fieldset\"],\r\n [HTMLLegendElement, \"legend\"],\r\n [HTMLDListElement, \"dl\"],\r\n [HTMLOptGroupElement, \"optgroup\"],\r\n [HTMLOptionElement, \"option\"],\r\n [HTMLStyleElement, \"style\"],\r\n [HTMLScriptElement, \"script\"],\r\n [HTMLTemplateElement, \"template\"],\r\n [HTMLCanvasElement, \"canvas\"],\r\n [HTMLIFrameElement, \"iframe\"],\r\n [HTMLObjectElement, \"object\"],\r\n [HTMLEmbedElement, \"embed\"],\r\n [HTMLVideoElement, \"video\"],\r\n [HTMLAudioElement, \"audio\"],\r\n [HTMLTrackElement, \"track\"],\r\n [HTMLMapElement, \"map\"],\r\n [HTMLAreaElement, \"area\"],\r\n [HTMLSourceElement, \"source\"],\r\n [HTMLParamElement, \"param\"],\r\n [HTMLMeterElement, \"meter\"],\r\n [HTMLProgressElement, \"progress\"],\r\n [HTMLOutputElement, \"output\"],\r\n [HTMLDetailsElement, \"details\"],\r\n [HTMLDialogElement, \"dialog\"],\r\n [HTMLMenuElement, \"menu\"],\r\n [HTMLSlotElement, \"slot\"],\r\n [HTMLTimeElement, \"time\"],\r\n [HTMLDataElement, \"data\"],\r\n [HTMLPictureElement, \"picture\"],\r\n ] as const;\r\n\r\n map.forEach(([cls, tag]) => {\r\n /* istanbul ignore next */\r\n if (typeof cls !== \"undefined\") {\r\n EXTENDS_MAP.set(cls, tag);\r\n }\r\n });\r\n}\r\n\r\nfunction resolveExtends(componentConstructor: CustomElementConstructor): string | null {\r\n for (const [cls, tag] of EXTENDS_MAP) {\r\n if (componentConstructor.prototype instanceof cls) {\r\n return tag;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nasync function eagerLoadItem(info: IEagerLoadInfo, tagName:string, loader: ILoader): Promise<void> {\r\n try {\r\n if (customElements.get(tagName)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n const componentConstructor = await loader.loader(info.key);\r\n if (componentConstructor !== null) {\r\n let extendsName = info.extends;\r\n if (extendsName === null) {\r\n extendsName = resolveExtends(componentConstructor);\r\n }\r\n\r\n if (customElements.get(tagName)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n if (extendsName === null) {\r\n customElements.define(tagName, componentConstructor);\r\n } else {\r\n customElements.define(tagName, componentConstructor, { extends: extendsName });\r\n }\r\n }\r\n } catch(e) {\r\n if (!failedTags.has(tagName)) {\r\n console.error(`Failed to eager load component '${tagName}':`, e);\r\n failedTags.add(tagName);\r\n }\r\n }\r\n\r\n}\r\n\r\nexport async function eagerLoad(\r\n loadMap: Record<string, IEagerLoadInfo>, \r\n loaders: Record<string, ILoader | string>\r\n): Promise<void> {\r\n const promises: Promise<void>[] = [];\r\n for(const [tagName, info] of Object.entries(loadMap)) {\r\n let loader: ILoader;\r\n try {\r\n loader = resolveLoader(info.key, info.loaderKey, loaders);\r\n } catch (_e) {\r\n throw new Error(\"Loader redirection is not supported for eager loaded components: \" + tagName);\r\n }\r\n promises.push(eagerLoadItem(info, tagName, loader));\r\n }\r\n await Promise.all(promises);\r\n}\r\n","import { resolveLoader } from \"./resolveLoader.js\";\r\nimport { failedTags, loadingTags } from \"./tags.js\";\r\nimport { IConfig, ILoader, INameSpaceInfo, IPrefixMap, ITagInfo } from \"./types.js\";\r\n\r\nconst isCustomElement = (node: Node): boolean => {\r\n return (node instanceof Element && (node.tagName.includes(\"-\") || node.getAttribute(\"is\")?.includes(\"-\"))) ?? false;\r\n}\r\n\r\nexport function getCustomTagInfo(e: Element): ITagInfo {\r\n const elementTagName = e.tagName.toLowerCase();\r\n let name;\r\n let extendsName;\r\n if (elementTagName.includes(\"-\")) {\r\n name = elementTagName;\r\n extendsName = null;\r\n } else {\r\n const tagName = e.getAttribute(\"is\");\r\n if (tagName === null) {\r\n throw new Error(\"Custom element without a dash or 'is' attribute found: \" + elementTagName);\r\n }\r\n if (!tagName.includes(\"-\")) {\r\n throw new Error(\"Custom element 'is' attribute without a dash found: \" + elementTagName);\r\n }\r\n name = tagName;\r\n extendsName = elementTagName;\r\n }\r\n return { name, extends: extendsName };\r\n}\r\n\r\nconst observedCustomElements: WeakSet<Element> = new WeakSet<Element>();\r\n\r\nasync function observeShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\r\n observedCustomElements.add(element);\r\n await handlerForLazyLoad(element.shadowRoot!, config, prefixMap);\r\n}\r\n\r\nasync function checkObserveShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\r\n if (element.shadowRoot) {\r\n if (!observedCustomElements.has(element)) {\r\n await observeShadowRoot(element, config, prefixMap);\r\n }\r\n }\r\n}\r\n\r\nfunction matchNameSpace(tagName: string, prefixMap: IPrefixMap): INameSpaceInfo | null {\r\n for (const [prefix, info] of Object.entries(prefixMap)) {\r\n if (tagName.startsWith(prefix + \"-\")) {\r\n return info;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nasync function tagLoad(tagInfo: ITagInfo, config: IConfig, prefixMap: IPrefixMap): Promise<void> {\r\n const info: INameSpaceInfo | null = matchNameSpace(tagInfo.name, prefixMap);\r\n if (info === null) {\r\n throw new Error(\"No matching namespace found for lazy loaded component: \" + tagInfo.name);\r\n }\r\n \r\n if (loadingTags.has(tagInfo.name)) {\r\n await customElements.whenDefined(tagInfo.name);\r\n return;\r\n } \r\n loadingTags.add(tagInfo.name);\r\n try {\r\n let loader: ILoader;\r\n try {\r\n loader = resolveLoader(\"\", info.loaderKey, config.loaders);\r\n } catch (_e) {\r\n throw new Error(\"Loader redirection is not supported for lazy loaded components: \" + tagInfo.name);\r\n }\r\n\r\n const file: string = tagInfo.name.slice(info.prefix.length + 1);\r\n if (file === \"\") {\r\n throw new Error(\"Invalid component name for lazy loaded component: \" + tagInfo.name);\r\n }\r\n const path = info.key + file + loader.postfix;\r\n\r\n if (customElements.get(tagInfo.name)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n const componentConstructor = await loader.loader(path);\r\n if (componentConstructor !== null) {\r\n if (customElements.get(tagInfo.name)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n if (tagInfo.extends === null) {\r\n customElements.define(tagInfo.name, componentConstructor);\r\n } else {\r\n customElements.define(tagInfo.name, componentConstructor, { extends: tagInfo.extends });\r\n }\r\n } else {\r\n throw new Error(\"Loader returned null for component: \" + tagInfo.name);\r\n }\r\n } catch(e) {\r\n console.error(`Failed to lazy load component '${tagInfo.name}':`, e);\r\n failedTags.add(tagInfo.name);\r\n } finally {\r\n loadingTags.delete(tagInfo.name);\r\n }\r\n}\r\n\r\n//\r\nasync function lazyLoad(root: Node, config: IConfig, prefixMap: IPrefixMap): Promise<number> {\r\n const elements: Element[] = [];\r\n\r\n // Create TreeWalker (target element and comment nodes)\r\n const walker = document.createTreeWalker(\r\n root, \r\n NodeFilter.SHOW_ELEMENT,\r\n (node: Node): number => {\r\n return isCustomElement(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\r\n } \r\n );\r\n \r\n // Move to next node with TreeWalker and add matching nodes to array\r\n while (walker.nextNode()) {\r\n elements.push(walker.currentNode as Element);\r\n }\r\n\r\n const tagInfos: ITagInfo[] = [];\r\n const tagNames = new Set<string>();\r\n for(const element of elements) {\r\n const tagInfo = getCustomTagInfo(element);\r\n const customClass = customElements.get(tagInfo.name);\r\n if (customClass === undefined) {\r\n // undefined\r\n customElements.whenDefined(tagInfo.name).then(async () => {\r\n // upgraded\r\n await checkObserveShadowRoot(element, config, prefixMap);\r\n });\r\n if (!tagNames.has(tagInfo.name) && !failedTags.has(tagInfo.name)) {\r\n tagNames.add(tagInfo.name);\r\n tagInfos.push(tagInfo);\r\n }\r\n } else {\r\n // upgraded\r\n await checkObserveShadowRoot(element, config, prefixMap);\r\n }\r\n }\r\n let tagCount = 0;\r\n for(const tagInfo of tagInfos) {\r\n await tagLoad(tagInfo, config, prefixMap);\r\n tagCount++;\r\n }\r\n return tagCount;\r\n\r\n}\r\n\r\nasync function lazyLoads(\r\n root: Document | ShadowRoot, \r\n config: IConfig, \r\n prefixMap: IPrefixMap\r\n): Promise<void> {\r\n while(await lazyLoad(root, config, prefixMap) > 0) {\r\n // Repeat until no more tags to load\r\n }\r\n}\r\n\r\nexport async function handlerForLazyLoad(\r\n root: Document | ShadowRoot,\r\n config: IConfig,\r\n prefixMap: IPrefixMap\r\n): Promise<MutationObserver | null> {\r\n if (Object.keys(prefixMap).length === 0) {\r\n return null;\r\n }\r\n try {\r\n await lazyLoads(root, config, prefixMap);\r\n } catch(e) {\r\n throw new Error(\"Failed to lazy load components: \" + e);\r\n }\r\n\r\n if (!config.observable) {\r\n return null;\r\n }\r\n const mo = new MutationObserver(async (): Promise<void> => {\r\n try {\r\n await lazyLoads(root, config, prefixMap);\r\n } catch(e) {\r\n console.error(\"Failed to lazy load components: \" + e);\r\n }\r\n });\r\n mo.observe(root, { childList: true, subtree: true });\r\n return mo;\r\n}\r\n","import { config } from \"../config.js\";\r\nimport { buildMap, loadImportmap } from \"../importmap.js\";\r\nimport { eagerLoad } from \"../eagerload.js\";\r\nimport { handlerForLazyLoad } from \"../lazyLoad.js\";\r\nimport { IPrefixMap } from \"../types.js\";\r\n\r\nexport class Autoloader extends HTMLElement {\r\n private static _instance: Autoloader | null = null;\r\n private _initialized = false;\r\n private _prefixMap: IPrefixMap | null = null;\r\n private _observer: MutationObserver | null = null;\r\n\r\n constructor() {\r\n super();\r\n if (Autoloader._instance) {\r\n throw new Error(\r\n `${config.tagNames.autoloader} can only be instantiated once.`\r\n );\r\n }\r\n Autoloader._instance = this;\r\n\r\n const importmap = loadImportmap();\r\n if (importmap) {\r\n const { prefixMap, loadMap } = buildMap(importmap);\r\n this._prefixMap = prefixMap;\r\n eagerLoad(loadMap, config.loaders).catch((e) => {\r\n console.error(\"Failed to eager load components:\", e);\r\n });\r\n }\r\n }\r\n\r\n async connectedCallback() {\r\n if (!this._initialized) {\r\n this._initialized = true;\r\n if (this._prefixMap) {\r\n if (document.readyState === \"loading\") {\r\n await new Promise<void>((r) =>\r\n document.addEventListener(\"DOMContentLoaded\", () => r(), {\r\n once: true,\r\n })\r\n );\r\n }\r\n this._observer = await handlerForLazyLoad(\r\n document,\r\n config,\r\n this._prefixMap\r\n );\r\n }\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n this._observer?.disconnect();\r\n this._observer = null;\r\n if (Autoloader._instance === this) {\r\n Autoloader._instance = null;\r\n }\r\n }\r\n}\r\n","import { Autoloader } from \"./components/Autoloader.js\";\r\nimport { config } from \"./config.js\";\r\n\r\nexport function registerComponents() {\r\n if (!customElements.get(config.tagNames.autoloader)) {\r\n customElements.define(config.tagNames.autoloader, Autoloader);\r\n }\r\n}\r\n","import { setConfig } from \"./config.js\";\r\nimport { registerComponents } from \"./registerComponents.js\";\r\nimport { IWritableConfig } from \"./types.js\";\r\n\r\nexport function bootstrapAutoloader(config?: IWritableConfig): void {\r\n if (config) {\r\n setConfig(config);\r\n }\r\n registerComponents();\r\n}\r\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/lazyLoad.ts","../src/components/Autoloader.ts","../src/registerComponents.ts","../src/bootstrapAutoloader.ts"],"sourcesContent":["\r\nexport async function load(path: string): Promise<CustomElementConstructor> {\r\n const module = await import(`${path}`);\r\n return module.default as CustomElementConstructor;\r\n}\r\n","\r\nimport { IConfig, ILoader, IWritableConfig } from \"./types.js\"\r\nimport { load } from \"./vanilla.js\"\r\n\r\ninterface IInternalConfig extends IConfig {\r\n scanImportmap: boolean;\r\n loaders: Record<string, ILoader | string>;\r\n observable: boolean;\r\n tagNames: {\r\n autoloader: string;\r\n };\r\n}\r\n\r\nexport const DEFAULT_KEY = \"*\";\r\n\r\nexport const VANILLA_KEY = \"vanilla\";\r\n\r\nexport const VANILLA_LOADER = {\r\n postfix: \".js\",\r\n loader: load\r\n}\r\n\r\nconst _config: IInternalConfig = {\r\n scanImportmap: true,\r\n loaders: {\r\n [VANILLA_KEY]: VANILLA_LOADER,\r\n [DEFAULT_KEY]: VANILLA_KEY\r\n },\r\n observable: true,\r\n tagNames: {\r\n autoloader: \"wcs-autoloader\"\r\n }\r\n}\r\n\r\nfunction deepFreeze<T>(obj: T): T {\r\n if (obj === null || typeof obj !== \"object\") return obj;\r\n Object.freeze(obj);\r\n for (const key of Object.keys(obj)) {\r\n deepFreeze((obj as Record<string, unknown>)[key]);\r\n }\r\n return obj;\r\n}\r\n\r\nfunction deepClone<T>(obj: T): T {\r\n if (obj === null || typeof obj !== \"object\") return obj;\r\n const clone: Record<string, unknown> = {};\r\n for (const key of Object.keys(obj)) {\r\n clone[key] = deepClone((obj as Record<string, unknown>)[key]);\r\n }\r\n return clone as T;\r\n}\r\n\r\nlet frozenConfig: IConfig | null = null;\r\n\r\n// 後方互換のため config もエクスポート(読み取り専用として使用)\r\nexport const config: IConfig = _config as IConfig;\r\n\r\nexport function getConfig(): IConfig {\r\n if (!frozenConfig) {\r\n frozenConfig = deepFreeze(deepClone(_config));\r\n }\r\n return frozenConfig;\r\n}\r\n\r\nexport function setConfig(partialConfig: IWritableConfig): void {\r\n if (typeof partialConfig.scanImportmap === \"boolean\") {\r\n _config.scanImportmap = partialConfig.scanImportmap;\r\n }\r\n if (partialConfig.loaders) {\r\n Object.assign(_config.loaders, partialConfig.loaders);\r\n }\r\n if (typeof partialConfig.observable === \"boolean\") {\r\n _config.observable = partialConfig.observable;\r\n }\r\n if (partialConfig.tagNames) {\r\n Object.assign(_config.tagNames, partialConfig.tagNames);\r\n }\r\n frozenConfig = null;\r\n}\r\n","import { IImportMap, IKeyInfo, ILoadMap, IPrefixMap } from \"./types.js\";\r\n\r\nconst COMPONENT_KEYWORD = \"@components/\";\r\n\r\nexport function loadImportmap(): IImportMap | null {\r\n const importmap: IImportMap = { imports: {} };\r\n document.querySelectorAll('script[type=\"importmap\"]').forEach((script) => {\r\n try {\r\n const json = JSON.parse(script.innerHTML);\r\n if (json.imports) {\r\n importmap.imports = Object.assign(importmap.imports, json.imports);\r\n }\r\n } catch (e) {\r\n throw new Error(\"Failed to parse importmap JSON: \" + e);\r\n }\r\n });\r\n return Object.keys(importmap.imports).length > 0\r\n ? importmap\r\n : null;\r\n}\r\n\r\nfunction getKeyInfoFromImportmapKey(key: string): IKeyInfo | null {\r\n if (key.startsWith(COMPONENT_KEYWORD)) {\r\n if (key.endsWith(\"/\")) {\r\n const prefixWithLoader = key.slice(COMPONENT_KEYWORD.length, key.length - 1);\r\n const [ prefix, loaderKey ] = prefixWithLoader.split(\"|\", 2);\r\n if (prefix === \"\") {\r\n throw new Error(\"Invalid importmap key: \" + key);\r\n }\r\n return {\r\n key,\r\n prefix: prefix.replaceAll(\"/\", \"-\").toLowerCase(),\r\n loaderKey: loaderKey ?? null,\r\n isNameSpaced: true\r\n };\r\n } else {\r\n const tagNamePart = key.slice(COMPONENT_KEYWORD.length);\r\n const [ tagName, loaderKeyPart ] = tagNamePart.split(\"|\", 2);\r\n const [ loaderKey, extendsText ] = (loaderKeyPart ?? \"\").split(\",\", 2);\r\n if (tagName === \"\") {\r\n throw new Error(\"Invalid importmap key: \" + key);\r\n }\r\n return {\r\n key,\r\n tagName: tagName.replaceAll(\"/\", \"-\").toLowerCase(),\r\n loaderKey: loaderKey || null,\r\n extends: extendsText || null,\r\n isNameSpaced: false\r\n };\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function buildMap(importmap: IImportMap): {\r\n prefixMap: IPrefixMap, loadMap: ILoadMap\r\n} {\r\n const prefixMap: IPrefixMap = {};\r\n const loadMap: ILoadMap = {};\r\n for (const [key, _value] of Object.entries(importmap.imports)) {\r\n const keyInfo = getKeyInfoFromImportmapKey(key);\r\n if (keyInfo === null) {\r\n continue;\r\n }\r\n if (keyInfo.isNameSpaced) {\r\n prefixMap[keyInfo.prefix] = keyInfo;\r\n } else {\r\n loadMap[keyInfo.tagName] = keyInfo;\r\n }\r\n }\r\n return { prefixMap, loadMap };\r\n}","import { DEFAULT_KEY } from \"./config.js\";\r\nimport { ILoader } from \"./types.js\";\r\n\r\nexport function resolveLoader(\r\n path: string,\r\n loaderKey: string | null,\r\n loaders: Record<string, ILoader | string>\r\n): ILoader {\r\n let loader: ILoader | string;\r\n\r\n if (loaderKey === null || loaderKey === DEFAULT_KEY || loaderKey === \"\") {\r\n // Try to resolve by postfix\r\n let resolvedLoader: ILoader | null = null;\r\n \r\n const candidates: ILoader[] = [];\r\n for (const [key, l] of Object.entries(loaders)) {\r\n if (key === DEFAULT_KEY) continue;\r\n const currentLoader = typeof l === \"string\" ? loaders[l] : l;\r\n if (typeof currentLoader === \"string\") continue; // Should not happen if config is correct\r\n candidates.push(currentLoader);\r\n }\r\n\r\n // Sort by postfix length descending to match longest extension first\r\n candidates.sort((a, b) => b.postfix.length - a.postfix.length);\r\n\r\n for (const currentLoader of candidates) {\r\n if (path.endsWith(currentLoader.postfix)) {\r\n resolvedLoader = currentLoader;\r\n break;\r\n }\r\n }\r\n\r\n if (resolvedLoader) {\r\n loader = resolvedLoader;\r\n } else {\r\n loader = loaders[DEFAULT_KEY];\r\n if (typeof loader === \"string\") {\r\n loader = loaders[loader];\r\n }\r\n }\r\n } else {\r\n loader = loaders[loaderKey];\r\n if (!loader) {\r\n throw new Error(\"Loader not found: \" + loaderKey);\r\n }\r\n }\r\n\r\n if (typeof loader === \"string\") {\r\n throw new Error(\"Loader redirection is not supported here\");\r\n }\r\n return loader;\r\n}\r\n","\r\nexport const failedTags = new Set<string>();\r\nexport const loadingTags = new Set<string>();\r\n\r\nexport function resetState() {\r\n failedTags.clear();\r\n loadingTags.clear();\r\n}\r\n\r\n","import { resolveLoader } from \"./resolveLoader.js\";\r\nimport { failedTags } from \"./tags.js\";\r\nimport { IEagerLoadInfo, ILoader } from \"./types.js\";\r\n\r\nconst EXTENDS_MAP = new Map<any, string>();\r\n\r\nif (typeof window !== \"undefined\") {\r\n const map = [\r\n [HTMLButtonElement, \"button\"],\r\n [HTMLInputElement, \"input\"],\r\n [HTMLAnchorElement, \"a\"],\r\n [HTMLImageElement, \"img\"],\r\n [HTMLDivElement, \"div\"],\r\n [HTMLSpanElement, \"span\"],\r\n [HTMLParagraphElement, \"p\"],\r\n [HTMLUListElement, \"ul\"],\r\n [HTMLOListElement, \"ol\"],\r\n [HTMLLIElement, \"li\"],\r\n [HTMLTableElement, \"table\"],\r\n [HTMLFormElement, \"form\"],\r\n [HTMLLabelElement, \"label\"],\r\n [HTMLSelectElement, \"select\"],\r\n [HTMLTextAreaElement, \"textarea\"],\r\n [HTMLHeadingElement, \"h1\"],\r\n [HTMLQuoteElement, \"blockquote\"],\r\n [HTMLPreElement, \"pre\"],\r\n [HTMLBRElement, \"br\"],\r\n [HTMLHRElement, \"hr\"],\r\n [HTMLModElement, \"ins\"],\r\n [HTMLTableCaptionElement, \"caption\"],\r\n [HTMLTableColElement, \"col\"],\r\n [HTMLTableSectionElement, \"tbody\"],\r\n [HTMLTableRowElement, \"tr\"],\r\n [HTMLTableCellElement, \"td\"],\r\n [HTMLFieldSetElement, \"fieldset\"],\r\n [HTMLLegendElement, \"legend\"],\r\n [HTMLDListElement, \"dl\"],\r\n [HTMLOptGroupElement, \"optgroup\"],\r\n [HTMLOptionElement, \"option\"],\r\n [HTMLStyleElement, \"style\"],\r\n [HTMLScriptElement, \"script\"],\r\n [HTMLTemplateElement, \"template\"],\r\n [HTMLCanvasElement, \"canvas\"],\r\n [HTMLIFrameElement, \"iframe\"],\r\n [HTMLObjectElement, \"object\"],\r\n [HTMLEmbedElement, \"embed\"],\r\n [HTMLVideoElement, \"video\"],\r\n [HTMLAudioElement, \"audio\"],\r\n [HTMLTrackElement, \"track\"],\r\n [HTMLMapElement, \"map\"],\r\n [HTMLAreaElement, \"area\"],\r\n [HTMLSourceElement, \"source\"],\r\n [HTMLParamElement, \"param\"],\r\n [HTMLMeterElement, \"meter\"],\r\n [HTMLProgressElement, \"progress\"],\r\n [HTMLOutputElement, \"output\"],\r\n [HTMLDetailsElement, \"details\"],\r\n [HTMLDialogElement, \"dialog\"],\r\n [HTMLMenuElement, \"menu\"],\r\n [HTMLSlotElement, \"slot\"],\r\n [HTMLTimeElement, \"time\"],\r\n [HTMLDataElement, \"data\"],\r\n [HTMLPictureElement, \"picture\"],\r\n ] as const;\r\n\r\n map.forEach(([cls, tag]) => {\r\n /* istanbul ignore next */\r\n if (typeof cls !== \"undefined\") {\r\n EXTENDS_MAP.set(cls, tag);\r\n }\r\n });\r\n}\r\n\r\nfunction resolveExtends(componentConstructor: CustomElementConstructor): string | null {\r\n for (const [cls, tag] of EXTENDS_MAP) {\r\n if (componentConstructor.prototype instanceof cls) {\r\n return tag;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nasync function eagerLoadItem(info: IEagerLoadInfo, tagName:string, loader: ILoader): Promise<void> {\r\n try {\r\n if (customElements.get(tagName)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n const componentConstructor = await loader.loader(info.key);\r\n if (componentConstructor !== null) {\r\n let extendsName = info.extends;\r\n if (extendsName === null) {\r\n extendsName = resolveExtends(componentConstructor);\r\n }\r\n\r\n if (customElements.get(tagName)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n if (extendsName === null) {\r\n customElements.define(tagName, componentConstructor);\r\n } else {\r\n customElements.define(tagName, componentConstructor, { extends: extendsName });\r\n }\r\n }\r\n } catch(e) {\r\n if (!failedTags.has(tagName)) {\r\n console.error(`Failed to eager load component '${tagName}':`, e);\r\n failedTags.add(tagName);\r\n }\r\n }\r\n\r\n}\r\n\r\nexport async function eagerLoad(\r\n loadMap: Record<string, IEagerLoadInfo>, \r\n loaders: Record<string, ILoader | string>\r\n): Promise<void> {\r\n const promises: Promise<void>[] = [];\r\n for(const [tagName, info] of Object.entries(loadMap)) {\r\n let loader: ILoader;\r\n try {\r\n loader = resolveLoader(info.key, info.loaderKey, loaders);\r\n } catch (_e) {\r\n throw new Error(\"Loader redirection is not supported for eager loaded components: \" + tagName);\r\n }\r\n promises.push(eagerLoadItem(info, tagName, loader));\r\n }\r\n await Promise.all(promises);\r\n}\r\n","import { resolveLoader } from \"./resolveLoader.js\";\r\nimport { failedTags, loadingTags } from \"./tags.js\";\r\nimport { IConfig, ILoader, INameSpaceInfo, IPrefixMap, ITagInfo } from \"./types.js\";\r\n\r\nconst isCustomElement = (node: Node): boolean => {\r\n return (node instanceof Element && (node.tagName.includes(\"-\") || node.getAttribute(\"is\")?.includes(\"-\"))) ?? false;\r\n}\r\n\r\nexport function getCustomTagInfo(e: Element): ITagInfo {\r\n const elementTagName = e.tagName.toLowerCase();\r\n let name;\r\n let extendsName;\r\n if (elementTagName.includes(\"-\")) {\r\n name = elementTagName;\r\n extendsName = null;\r\n } else {\r\n const tagName = e.getAttribute(\"is\");\r\n if (tagName === null) {\r\n throw new Error(\"Custom element without a dash or 'is' attribute found: \" + elementTagName);\r\n }\r\n if (!tagName.includes(\"-\")) {\r\n throw new Error(\"Custom element 'is' attribute without a dash found: \" + elementTagName);\r\n }\r\n name = tagName;\r\n extendsName = elementTagName;\r\n }\r\n return { name, extends: extendsName };\r\n}\r\n\r\nconst observedCustomElements: WeakSet<Element> = new WeakSet<Element>();\r\n\r\nasync function observeShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\r\n observedCustomElements.add(element);\r\n await handlerForLazyLoad(element.shadowRoot!, config, prefixMap);\r\n}\r\n\r\nasync function checkObserveShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\r\n if (element.shadowRoot) {\r\n if (!observedCustomElements.has(element)) {\r\n await observeShadowRoot(element, config, prefixMap);\r\n }\r\n }\r\n}\r\n\r\nfunction matchNameSpace(tagName: string, prefixMap: IPrefixMap): INameSpaceInfo | null {\r\n for (const [prefix, info] of Object.entries(prefixMap)) {\r\n if (tagName.startsWith(prefix + \"-\")) {\r\n return info;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nasync function tagLoad(tagInfo: ITagInfo, config: IConfig, prefixMap: IPrefixMap): Promise<void> {\r\n const info: INameSpaceInfo | null = matchNameSpace(tagInfo.name, prefixMap);\r\n if (info === null) {\r\n throw new Error(\"No matching namespace found for lazy loaded component: \" + tagInfo.name);\r\n }\r\n \r\n if (loadingTags.has(tagInfo.name)) {\r\n await customElements.whenDefined(tagInfo.name);\r\n return;\r\n } \r\n loadingTags.add(tagInfo.name);\r\n try {\r\n let loader: ILoader;\r\n try {\r\n loader = resolveLoader(\"\", info.loaderKey, config.loaders);\r\n } catch (_e) {\r\n throw new Error(\"Loader redirection is not supported for lazy loaded components: \" + tagInfo.name);\r\n }\r\n\r\n const file: string = tagInfo.name.slice(info.prefix.length + 1);\r\n if (file === \"\") {\r\n throw new Error(\"Invalid component name for lazy loaded component: \" + tagInfo.name);\r\n }\r\n const path = info.key + file + loader.postfix;\r\n\r\n if (customElements.get(tagInfo.name)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n const componentConstructor = await loader.loader(path);\r\n if (componentConstructor !== null) {\r\n if (customElements.get(tagInfo.name)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n if (tagInfo.extends === null) {\r\n customElements.define(tagInfo.name, componentConstructor);\r\n } else {\r\n customElements.define(tagInfo.name, componentConstructor, { extends: tagInfo.extends });\r\n }\r\n } else {\r\n throw new Error(\"Loader returned null for component: \" + tagInfo.name);\r\n }\r\n } catch(e) {\r\n console.error(`Failed to lazy load component '${tagInfo.name}':`, e);\r\n failedTags.add(tagInfo.name);\r\n } finally {\r\n loadingTags.delete(tagInfo.name);\r\n }\r\n}\r\n\r\n//\r\nasync function lazyLoad(root: Node, config: IConfig, prefixMap: IPrefixMap): Promise<number> {\r\n const elements: Element[] = [];\r\n\r\n // Create TreeWalker (target element and comment nodes)\r\n const walker = document.createTreeWalker(\r\n root, \r\n NodeFilter.SHOW_ELEMENT,\r\n (node: Node): number => {\r\n return isCustomElement(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\r\n } \r\n );\r\n \r\n // Move to next node with TreeWalker and add matching nodes to array\r\n while (walker.nextNode()) {\r\n elements.push(walker.currentNode as Element);\r\n }\r\n\r\n const tagInfos: ITagInfo[] = [];\r\n const tagNames = new Set<string>();\r\n for(const element of elements) {\r\n const tagInfo = getCustomTagInfo(element);\r\n const customClass = customElements.get(tagInfo.name);\r\n if (customClass === undefined) {\r\n // undefined\r\n customElements.whenDefined(tagInfo.name).then(async () => {\r\n // upgraded\r\n await checkObserveShadowRoot(element, config, prefixMap);\r\n });\r\n if (!tagNames.has(tagInfo.name) && !failedTags.has(tagInfo.name)) {\r\n tagNames.add(tagInfo.name);\r\n tagInfos.push(tagInfo);\r\n }\r\n } else {\r\n // upgraded\r\n await checkObserveShadowRoot(element, config, prefixMap);\r\n }\r\n }\r\n let tagCount = 0;\r\n for(const tagInfo of tagInfos) {\r\n await tagLoad(tagInfo, config, prefixMap);\r\n tagCount++;\r\n }\r\n return tagCount;\r\n\r\n}\r\n\r\nasync function lazyLoads(\r\n root: Document | ShadowRoot, \r\n config: IConfig, \r\n prefixMap: IPrefixMap\r\n): Promise<void> {\r\n while(await lazyLoad(root, config, prefixMap) > 0) {\r\n // Repeat until no more tags to load\r\n }\r\n}\r\n\r\nexport async function handlerForLazyLoad(\r\n root: Document | ShadowRoot,\r\n config: IConfig,\r\n prefixMap: IPrefixMap\r\n): Promise<MutationObserver | null> {\r\n if (Object.keys(prefixMap).length === 0) {\r\n return null;\r\n }\r\n try {\r\n await lazyLoads(root, config, prefixMap);\r\n } catch(e) {\r\n throw new Error(\"Failed to lazy load components: \" + e);\r\n }\r\n\r\n if (!config.observable) {\r\n return null;\r\n }\r\n const mo = new MutationObserver(async (): Promise<void> => {\r\n try {\r\n await lazyLoads(root, config, prefixMap);\r\n } catch(e) {\r\n console.error(\"Failed to lazy load components: \" + e);\r\n }\r\n });\r\n mo.observe(root, { childList: true, subtree: true });\r\n return mo;\r\n}\r\n","import { config } from \"../config.js\";\r\nimport { buildMap, loadImportmap } from \"../importmap.js\";\r\nimport { eagerLoad } from \"../eagerload.js\";\r\nimport { handlerForLazyLoad } from \"../lazyLoad.js\";\r\nimport { IPrefixMap } from \"../types.js\";\r\n\r\nexport class Autoloader extends HTMLElement {\r\n private static _instance: Autoloader | null = null;\r\n private _initialized = false;\r\n private _prefixMap: IPrefixMap | null = null;\r\n private _observer: MutationObserver | null = null;\r\n\r\n constructor() {\r\n super();\r\n if (Autoloader._instance) {\r\n throw new Error(\r\n `${config.tagNames.autoloader} can only be instantiated once.`\r\n );\r\n }\r\n Autoloader._instance = this;\r\n\r\n const importmap = loadImportmap();\r\n if (importmap) {\r\n const { prefixMap, loadMap } = buildMap(importmap);\r\n this._prefixMap = prefixMap;\r\n eagerLoad(loadMap, config.loaders).catch((e) => {\r\n console.error(\"Failed to eager load components:\", e);\r\n });\r\n }\r\n }\r\n\r\n async connectedCallback() {\r\n if (!this._initialized) {\r\n this._initialized = true;\r\n if (this._prefixMap) {\r\n if (document.readyState === \"loading\") {\r\n await new Promise<void>((r) =>\r\n document.addEventListener(\"DOMContentLoaded\", () => r(), {\r\n once: true,\r\n })\r\n );\r\n }\r\n this._observer = await handlerForLazyLoad(\r\n document,\r\n config,\r\n this._prefixMap\r\n );\r\n }\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n this._observer?.disconnect();\r\n this._observer = null;\r\n if (Autoloader._instance === this) {\r\n Autoloader._instance = null;\r\n }\r\n }\r\n}\r\n","import { Autoloader } from \"./components/Autoloader.js\";\r\nimport { config } from \"./config.js\";\r\n\r\nexport function registerComponents() {\r\n if (!customElements.get(config.tagNames.autoloader)) {\r\n customElements.define(config.tagNames.autoloader, Autoloader);\r\n }\r\n}\r\n","import { setConfig } from \"./config.js\";\r\nimport { registerComponents } from \"./registerComponents.js\";\r\nimport { IWritableConfig } from \"./types.js\";\r\n\r\nexport function bootstrapAutoloader(config?: IWritableConfig): void {\r\n if (config) {\r\n setConfig(config);\r\n }\r\n registerComponents();\r\n}\r\n"],"names":[],"mappings":"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"}
|
package/dist/index.esm.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"}};function a(e){if(null===e||"object"!=typeof e)return e;Object.freeze(e);for(const t of Object.keys(e))a(e[t]);return e}function r(e){if(null===e||"object"!=typeof e)return e;const t={};for(const n of Object.keys(e))t[n]=r(e[n]);return t}let l=null;const s=o;function i(){return l||(l=a(r(o))),l}const c="@components/";function m(e){if(e.startsWith(c)){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),[a,r]=(o??"").split(",",2);if(""===n)throw new Error("Invalid importmap key: "+e);return{key:e,tagName:n.replaceAll("/","-").toLowerCase(),loaderKey:a||null,extends:r||null,isNameSpaced:!1}}}return null}function u(t,n,o){let a;if(null===n||n===e||""===n){let n=null;const r=[];for(const[t,n]of Object.entries(o)){if(t===e)continue;const a="string"==typeof n?o[n]:n;"string"!=typeof a&&r.push(a)}r.sort((e,t)=>t.postfix.length-e.postfix.length);for(const e of r)if(t.endsWith(e.postfix)){n=e;break}n?a=n:(a=o[e],"string"==typeof a&&(a=o[a]))}else if(a=o[n],!a)throw new Error("Loader not found: "+n);if("string"==typeof a)throw new Error("Loader redirection is not supported here");return a}const d=new Set,f=new Set,p=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&&p.set(e,t)})}async function E(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 p)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){d.has(t)||(console.error(`Failed to eager load component '${t}':`,e),d.add(t))}}function L(e){const t=e.tagName.toLowerCase();let n,o;if(t.includes("-"))n=t,o=null;else{const a=e.getAttribute("is");if(null===a)throw new Error("Custom element without a dash or 'is' attribute found: "+t);if(!a.includes("-"))throw new Error("Custom element 'is' attribute without a dash found: "+t);n=a,o=t}return{name:n,extends:o}}const M=new WeakSet;async function T(e,t,n){e.shadowRoot&&(M.has(e)||await async function(e,t,n){M.add(e),await b(e.shadowRoot,t,n)}(e,t,n))}async function h(e,t,n){const o=function(e,t){for(const[n,o]of Object.entries(t))if(e.startsWith(n+"-"))return o;return null}(e.name,n);if(null===o)throw new Error("No matching namespace found for lazy loaded component: "+e.name);if(f.has(e.name))await customElements.whenDefined(e.name);else{f.add(e.name);try{let n;try{n=u("",o.loaderKey,t.loaders)}catch(t){throw new Error("Loader redirection is not supported for lazy loaded components: "+e.name)}const a=e.name.slice(o.prefix.length+1);if(""===a)throw new Error("Invalid component name for lazy loaded component: "+e.name);const r=o.key+a+n.postfix;if(customElements.get(e.name))return;const l=await n.loader(r);if(null===l)throw new Error("Loader returned null for component: "+e.name);if(customElements.get(e.name))return;null===e.extends?customElements.define(e.name,l):customElements.define(e.name,l,{extends:e.extends})}catch(t){console.error(`Failed to lazy load component '${e.name}':`,t),d.add(e.name)}finally{f.delete(e.name)}}}async function w(e,t,n){const o=[],a=document.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();)o.push(a.currentNode);const r=[],l=new Set;for(const e of o){const o=L(e);void 0===customElements.get(o.name)?(customElements.whenDefined(o.name).then(async()=>{await T(e,t,n)}),l.has(o.name)||d.has(o.name)||(l.add(o.name),r.push(o))):await T(e,t,n)}let s=0;for(const e of r)await h(e,t,n),s++;return s}async function H(e,t,n){for(;await w(e,t,n)>0;);}async function b(e,t,n){if(0===Object.keys(n).length)return null;try{await H(e,t,n)}catch(e){throw new Error("Failed to lazy load components: "+e)}if(!t.observable)return null;const o=new MutationObserver(async()=>{try{await H(e,t,n)}catch(e){console.error("Failed to lazy load components: "+e)}});return o.observe(e,{childList:!0,subtree:!0}),o}class y extends HTMLElement{static _instance=null;_initialized=!1;_prefixMap=null;_observer=null;constructor(){if(super(),y._instance)throw new Error(`${s.tagNames.autoloader} can only be instantiated once.`);y._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,a]of Object.entries(e.imports)){const e=m(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,a]of Object.entries(e)){let e;try{e=u(a.key,a.loaderKey,t)}catch(e){throw new Error("Loader redirection is not supported for eager loaded components: "+o)}n.push(E(a,o,e))}await Promise.all(n)}(n,s.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 b(document,s,this._prefixMap)))}disconnectedCallback(){this._observer?.disconnect(),this._observer=null,y._instance===this&&(y._instance=null)}}function g(){customElements.get(s.tagNames.autoloader)||customElements.define(s.tagNames.autoloader,y)}function x(e){var t;e&&("boolean"==typeof(t=e).scanImportmap&&(o.scanImportmap=t.scanImportmap),t.loaders&&Object.assign(o.loaders,t.loaders),"boolean"==typeof t.observable&&(o.observable=t.observable),t.tagNames&&Object.assign(o.tagNames,t.tagNames),l=null),g()}export{x as bootstrapAutoloader,i as getConfig};
|
|
2
2
|
//# sourceMappingURL=index.esm.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.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":["\r\nimport { IConfig, ILoader, IWritableConfig } from \"./types.js\"\r\nimport { load } from \"./vanilla.js\"\r\n\r\ninterface IInternalConfig extends IConfig {\r\n scanImportmap: boolean;\r\n loaders: Record<string, ILoader | string>;\r\n observable: boolean;\r\n tagNames: {\r\n autoloader: string;\r\n };\r\n}\r\n\r\nexport const DEFAULT_KEY = \"*\";\r\n\r\nexport const VANILLA_KEY = \"vanilla\";\r\n\r\nexport const VANILLA_LOADER = {\r\n postfix: \".js\",\r\n loader: load\r\n}\r\n\r\nconst _config: IInternalConfig = {\r\n scanImportmap: true,\r\n loaders: {\r\n [VANILLA_KEY]: VANILLA_LOADER,\r\n [DEFAULT_KEY]: VANILLA_KEY\r\n },\r\n observable: true,\r\n tagNames: {\r\n autoloader: \"wcs-autoloader\"\r\n }\r\n}\r\n\r\nfunction deepFreeze<T>(obj: T): T {\r\n if (obj === null || typeof obj !== \"object\") return obj;\r\n Object.freeze(obj);\r\n for (const key of Object.keys(obj)) {\r\n deepFreeze((obj as Record<string, unknown>)[key]);\r\n }\r\n return obj;\r\n}\r\n\r\nfunction deepClone<T>(obj: T): T {\r\n if (obj === null || typeof obj !== \"object\") return obj;\r\n const clone: Record<string, unknown> = {};\r\n for (const key of Object.keys(obj)) {\r\n clone[key] = deepClone((obj as Record<string, unknown>)[key]);\r\n }\r\n return clone as T;\r\n}\r\n\r\nlet frozenConfig: IConfig | null = null;\r\n\r\n// 後方互換のため config もエクスポート(読み取り専用として使用)\r\nexport const config: IConfig = _config as IConfig;\r\n\r\nexport function getConfig(): IConfig {\r\n if (!frozenConfig) {\r\n frozenConfig = deepFreeze(deepClone(_config));\r\n }\r\n return frozenConfig;\r\n}\r\n\r\nexport function setConfig(partialConfig: IWritableConfig): void {\r\n if (typeof partialConfig.scanImportmap === \"boolean\") {\r\n _config.scanImportmap = partialConfig.scanImportmap;\r\n }\r\n if (partialConfig.loaders) {\r\n Object.assign(_config.loaders, partialConfig.loaders);\r\n }\r\n if (typeof partialConfig.observable === \"boolean\") {\r\n _config.observable = partialConfig.observable;\r\n }\r\n if (partialConfig.tagNames) {\r\n Object.assign(_config.tagNames, partialConfig.tagNames);\r\n }\r\n frozenConfig = null;\r\n}\r\n","\r\nexport async function load(path: string): Promise<CustomElementConstructor> {\r\n const module = await import(`${path}`);\r\n return module.default as CustomElementConstructor;\r\n}\r\n","import { IImportMap, IKeyInfo, ILoadMap, IPrefixMap } from \"./types.js\";\r\n\r\nconst COMPONENT_KEYWORD = \"@components/\";\r\n\r\nexport function loadImportmap(): IImportMap | null {\r\n const importmap: IImportMap = { imports: {} };\r\n document.querySelectorAll('script[type=\"importmap\"]').forEach((script) => {\r\n try {\r\n const json = JSON.parse(script.innerHTML);\r\n if (json.imports) {\r\n importmap.imports = Object.assign(importmap.imports, json.imports);\r\n }\r\n } catch (e) {\r\n throw new Error(\"Failed to parse importmap JSON: \" + e);\r\n }\r\n });\r\n return Object.keys(importmap.imports).length > 0\r\n ? importmap\r\n : null;\r\n}\r\n\r\nfunction getKeyInfoFromImportmapKey(key: string): IKeyInfo | null {\r\n if (key.startsWith(COMPONENT_KEYWORD)) {\r\n if (key.endsWith(\"/\")) {\r\n const prefixWithLoader = key.slice(COMPONENT_KEYWORD.length, key.length - 1);\r\n const [ prefix, loaderKey ] = prefixWithLoader.split(\"|\", 2);\r\n if (prefix === \"\") {\r\n throw new Error(\"Invalid importmap key: \" + key);\r\n }\r\n return {\r\n key,\r\n prefix: prefix.replaceAll(\"/\", \"-\").toLowerCase(),\r\n loaderKey: loaderKey ?? null,\r\n isNameSpaced: true\r\n };\r\n } else {\r\n const tagNamePart = key.slice(COMPONENT_KEYWORD.length);\r\n const [ tagName, loaderKeyPart ] = tagNamePart.split(\"|\", 2);\r\n const [ loaderKey, extendsText ] = (loaderKeyPart ?? \"\").split(\",\", 2);\r\n if (tagName === \"\") {\r\n throw new Error(\"Invalid importmap key: \" + key);\r\n }\r\n return {\r\n key,\r\n tagName: tagName.replaceAll(\"/\", \"-\").toLowerCase(),\r\n loaderKey: loaderKey || null,\r\n extends: extendsText || null,\r\n isNameSpaced: false\r\n };\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function buildMap(importmap: IImportMap): {\r\n prefixMap: IPrefixMap, loadMap: ILoadMap\r\n} {\r\n const prefixMap: IPrefixMap = {};\r\n const loadMap: ILoadMap = {};\r\n for (const [key, _value] of Object.entries(importmap.imports)) {\r\n const keyInfo = getKeyInfoFromImportmapKey(key);\r\n if (keyInfo === null) {\r\n continue;\r\n }\r\n if (keyInfo.isNameSpaced) {\r\n prefixMap[keyInfo.prefix] = keyInfo;\r\n } else {\r\n loadMap[keyInfo.tagName] = keyInfo;\r\n }\r\n }\r\n return { prefixMap, loadMap };\r\n}","import { DEFAULT_KEY } from \"./config.js\";\r\nimport { ILoader } from \"./types.js\";\r\n\r\nexport function resolveLoader(\r\n path: string,\r\n loaderKey: string | null,\r\n loaders: Record<string, ILoader | string>\r\n): ILoader {\r\n let loader: ILoader | string;\r\n\r\n if (loaderKey === null || loaderKey === DEFAULT_KEY || loaderKey === \"\") {\r\n // Try to resolve by postfix\r\n let resolvedLoader: ILoader | null = null;\r\n \r\n const candidates: ILoader[] = [];\r\n for (const [key, l] of Object.entries(loaders)) {\r\n if (key === DEFAULT_KEY) continue;\r\n const currentLoader = typeof l === \"string\" ? loaders[l] : l;\r\n if (typeof currentLoader === \"string\") continue; // Should not happen if config is correct\r\n candidates.push(currentLoader);\r\n }\r\n\r\n // Sort by postfix length descending to match longest extension first\r\n candidates.sort((a, b) => b.postfix.length - a.postfix.length);\r\n\r\n for (const currentLoader of candidates) {\r\n if (path.endsWith(currentLoader.postfix)) {\r\n resolvedLoader = currentLoader;\r\n break;\r\n }\r\n }\r\n\r\n if (resolvedLoader) {\r\n loader = resolvedLoader;\r\n } else {\r\n loader = loaders[DEFAULT_KEY];\r\n if (typeof loader === \"string\") {\r\n loader = loaders[loader];\r\n }\r\n }\r\n } else {\r\n loader = loaders[loaderKey];\r\n if (!loader) {\r\n throw new Error(\"Loader not found: \" + loaderKey);\r\n }\r\n }\r\n\r\n if (typeof loader === \"string\") {\r\n throw new Error(\"Loader redirection is not supported here\");\r\n }\r\n return loader;\r\n}\r\n","\r\nexport const failedTags = new Set<string>();\r\nexport const loadingTags = new Set<string>();\r\n\r\nexport function resetState() {\r\n failedTags.clear();\r\n loadingTags.clear();\r\n}\r\n\r\n","import { resolveLoader } from \"./resolveLoader.js\";\r\nimport { failedTags } from \"./tags.js\";\r\nimport { IEagerLoadInfo, ILoader } from \"./types.js\";\r\n\r\nconst EXTENDS_MAP = new Map<any, string>();\r\n\r\nif (typeof window !== \"undefined\") {\r\n const map = [\r\n [HTMLButtonElement, \"button\"],\r\n [HTMLInputElement, \"input\"],\r\n [HTMLAnchorElement, \"a\"],\r\n [HTMLImageElement, \"img\"],\r\n [HTMLDivElement, \"div\"],\r\n [HTMLSpanElement, \"span\"],\r\n [HTMLParagraphElement, \"p\"],\r\n [HTMLUListElement, \"ul\"],\r\n [HTMLOListElement, \"ol\"],\r\n [HTMLLIElement, \"li\"],\r\n [HTMLTableElement, \"table\"],\r\n [HTMLFormElement, \"form\"],\r\n [HTMLLabelElement, \"label\"],\r\n [HTMLSelectElement, \"select\"],\r\n [HTMLTextAreaElement, \"textarea\"],\r\n [HTMLHeadingElement, \"h1\"],\r\n [HTMLQuoteElement, \"blockquote\"],\r\n [HTMLPreElement, \"pre\"],\r\n [HTMLBRElement, \"br\"],\r\n [HTMLHRElement, \"hr\"],\r\n [HTMLModElement, \"ins\"],\r\n [HTMLTableCaptionElement, \"caption\"],\r\n [HTMLTableColElement, \"col\"],\r\n [HTMLTableSectionElement, \"tbody\"],\r\n [HTMLTableRowElement, \"tr\"],\r\n [HTMLTableCellElement, \"td\"],\r\n [HTMLFieldSetElement, \"fieldset\"],\r\n [HTMLLegendElement, \"legend\"],\r\n [HTMLDListElement, \"dl\"],\r\n [HTMLOptGroupElement, \"optgroup\"],\r\n [HTMLOptionElement, \"option\"],\r\n [HTMLStyleElement, \"style\"],\r\n [HTMLScriptElement, \"script\"],\r\n [HTMLTemplateElement, \"template\"],\r\n [HTMLCanvasElement, \"canvas\"],\r\n [HTMLIFrameElement, \"iframe\"],\r\n [HTMLObjectElement, \"object\"],\r\n [HTMLEmbedElement, \"embed\"],\r\n [HTMLVideoElement, \"video\"],\r\n [HTMLAudioElement, \"audio\"],\r\n [HTMLTrackElement, \"track\"],\r\n [HTMLMapElement, \"map\"],\r\n [HTMLAreaElement, \"area\"],\r\n [HTMLSourceElement, \"source\"],\r\n [HTMLParamElement, \"param\"],\r\n [HTMLMeterElement, \"meter\"],\r\n [HTMLProgressElement, \"progress\"],\r\n [HTMLOutputElement, \"output\"],\r\n [HTMLDetailsElement, \"details\"],\r\n [HTMLDialogElement, \"dialog\"],\r\n [HTMLMenuElement, \"menu\"],\r\n [HTMLSlotElement, \"slot\"],\r\n [HTMLTimeElement, \"time\"],\r\n [HTMLDataElement, \"data\"],\r\n [HTMLPictureElement, \"picture\"],\r\n ] as const;\r\n\r\n map.forEach(([cls, tag]) => {\r\n /* istanbul ignore next */\r\n if (typeof cls !== \"undefined\") {\r\n EXTENDS_MAP.set(cls, tag);\r\n }\r\n });\r\n}\r\n\r\nfunction resolveExtends(componentConstructor: CustomElementConstructor): string | null {\r\n for (const [cls, tag] of EXTENDS_MAP) {\r\n if (componentConstructor.prototype instanceof cls) {\r\n return tag;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nasync function eagerLoadItem(info: IEagerLoadInfo, tagName:string, loader: ILoader): Promise<void> {\r\n try {\r\n if (customElements.get(tagName)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n const componentConstructor = await loader.loader(info.key);\r\n if (componentConstructor !== null) {\r\n let extendsName = info.extends;\r\n if (extendsName === null) {\r\n extendsName = resolveExtends(componentConstructor);\r\n }\r\n\r\n if (customElements.get(tagName)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n if (extendsName === null) {\r\n customElements.define(tagName, componentConstructor);\r\n } else {\r\n customElements.define(tagName, componentConstructor, { extends: extendsName });\r\n }\r\n }\r\n } catch(e) {\r\n if (!failedTags.has(tagName)) {\r\n console.error(`Failed to eager load component '${tagName}':`, e);\r\n failedTags.add(tagName);\r\n }\r\n }\r\n\r\n}\r\n\r\nexport async function eagerLoad(\r\n loadMap: Record<string, IEagerLoadInfo>, \r\n loaders: Record<string, ILoader | string>\r\n): Promise<void> {\r\n const promises: Promise<void>[] = [];\r\n for(const [tagName, info] of Object.entries(loadMap)) {\r\n let loader: ILoader;\r\n try {\r\n loader = resolveLoader(info.key, info.loaderKey, loaders);\r\n } catch (_e) {\r\n throw new Error(\"Loader redirection is not supported for eager loaded components: \" + tagName);\r\n }\r\n promises.push(eagerLoadItem(info, tagName, loader));\r\n }\r\n await Promise.all(promises);\r\n}\r\n","import { resolveLoader } from \"./resolveLoader.js\";\r\nimport { failedTags, loadingTags } from \"./tags.js\";\r\nimport { IConfig, ILoader, INameSpaceInfo, IPrefixMap, ITagInfo } from \"./types.js\";\r\n\r\nconst isCustomElement = (node: Node): boolean => {\r\n return (node instanceof Element && (node.tagName.includes(\"-\") || node.getAttribute(\"is\")?.includes(\"-\"))) ?? false;\r\n}\r\n\r\nexport function getCustomTagInfo(e: Element): ITagInfo {\r\n const elementTagName = e.tagName.toLowerCase();\r\n let name;\r\n let extendsName;\r\n if (elementTagName.includes(\"-\")) {\r\n name = elementTagName;\r\n extendsName = null;\r\n } else {\r\n const tagName = e.getAttribute(\"is\");\r\n if (tagName === null) {\r\n throw new Error(\"Custom element without a dash or 'is' attribute found: \" + elementTagName);\r\n }\r\n if (!tagName.includes(\"-\")) {\r\n throw new Error(\"Custom element 'is' attribute without a dash found: \" + elementTagName);\r\n }\r\n name = tagName;\r\n extendsName = elementTagName;\r\n }\r\n return { name, extends: extendsName };\r\n}\r\n\r\nconst observedCustomElements: WeakSet<Element> = new WeakSet<Element>();\r\n\r\nasync function observeShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\r\n observedCustomElements.add(element);\r\n await handlerForLazyLoad(element.shadowRoot!, config, prefixMap);\r\n}\r\n\r\nasync function checkObserveShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\r\n if (element.shadowRoot) {\r\n if (!observedCustomElements.has(element)) {\r\n await observeShadowRoot(element, config, prefixMap);\r\n }\r\n }\r\n}\r\n\r\nfunction matchNameSpace(tagName: string, prefixMap: IPrefixMap): INameSpaceInfo | null {\r\n for (const [prefix, info] of Object.entries(prefixMap)) {\r\n if (tagName.startsWith(prefix + \"-\")) {\r\n return info;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nasync function tagLoad(tagInfo: ITagInfo, config: IConfig, prefixMap: IPrefixMap): Promise<void> {\r\n const info: INameSpaceInfo | null = matchNameSpace(tagInfo.name, prefixMap);\r\n if (info === null) {\r\n throw new Error(\"No matching namespace found for lazy loaded component: \" + tagInfo.name);\r\n }\r\n \r\n if (loadingTags.has(tagInfo.name)) {\r\n await customElements.whenDefined(tagInfo.name);\r\n return;\r\n } \r\n loadingTags.add(tagInfo.name);\r\n try {\r\n let loader: ILoader;\r\n try {\r\n loader = resolveLoader(\"\", info.loaderKey, config.loaders);\r\n } catch (_e) {\r\n throw new Error(\"Loader redirection is not supported for lazy loaded components: \" + tagInfo.name);\r\n }\r\n\r\n const file: string = tagInfo.name.slice(info.prefix.length + 1);\r\n if (file === \"\") {\r\n throw new Error(\"Invalid component name for lazy loaded component: \" + tagInfo.name);\r\n }\r\n const path = info.key + file + loader.postfix;\r\n\r\n if (customElements.get(tagInfo.name)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n const componentConstructor = await loader.loader(path);\r\n if (componentConstructor !== null) {\r\n if (customElements.get(tagInfo.name)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n if (tagInfo.extends === null) {\r\n customElements.define(tagInfo.name, componentConstructor);\r\n } else {\r\n customElements.define(tagInfo.name, componentConstructor, { extends: tagInfo.extends });\r\n }\r\n } else {\r\n throw new Error(\"Loader returned null for component: \" + tagInfo.name);\r\n }\r\n } catch(e) {\r\n console.error(`Failed to lazy load component '${tagInfo.name}':`, e);\r\n failedTags.add(tagInfo.name);\r\n } finally {\r\n loadingTags.delete(tagInfo.name);\r\n }\r\n}\r\n\r\n//\r\nasync function lazyLoad(root: Node, config: IConfig, prefixMap: IPrefixMap): Promise<number> {\r\n const elements: Element[] = [];\r\n\r\n // Create TreeWalker (target element and comment nodes)\r\n const walker = document.createTreeWalker(\r\n root, \r\n NodeFilter.SHOW_ELEMENT,\r\n (node: Node): number => {\r\n return isCustomElement(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\r\n } \r\n );\r\n \r\n // Move to next node with TreeWalker and add matching nodes to array\r\n while (walker.nextNode()) {\r\n elements.push(walker.currentNode as Element);\r\n }\r\n\r\n const tagInfos: ITagInfo[] = [];\r\n const tagNames = new Set<string>();\r\n for(const element of elements) {\r\n const tagInfo = getCustomTagInfo(element);\r\n const customClass = customElements.get(tagInfo.name);\r\n if (customClass === undefined) {\r\n // undefined\r\n customElements.whenDefined(tagInfo.name).then(async () => {\r\n // upgraded\r\n await checkObserveShadowRoot(element, config, prefixMap);\r\n });\r\n if (!tagNames.has(tagInfo.name) && !failedTags.has(tagInfo.name)) {\r\n tagNames.add(tagInfo.name);\r\n tagInfos.push(tagInfo);\r\n }\r\n } else {\r\n // upgraded\r\n await checkObserveShadowRoot(element, config, prefixMap);\r\n }\r\n }\r\n let tagCount = 0;\r\n for(const tagInfo of tagInfos) {\r\n await tagLoad(tagInfo, config, prefixMap);\r\n tagCount++;\r\n }\r\n return tagCount;\r\n\r\n}\r\n\r\nasync function lazyLoads(\r\n root: Document | ShadowRoot, \r\n config: IConfig, \r\n prefixMap: IPrefixMap\r\n): Promise<void> {\r\n while(await lazyLoad(root, config, prefixMap) > 0) {\r\n // Repeat until no more tags to load\r\n }\r\n}\r\n\r\nexport async function handlerForLazyLoad(\r\n root: Document | ShadowRoot,\r\n config: IConfig,\r\n prefixMap: IPrefixMap\r\n): Promise<MutationObserver | null> {\r\n if (Object.keys(prefixMap).length === 0) {\r\n return null;\r\n }\r\n try {\r\n await lazyLoads(root, config, prefixMap);\r\n } catch(e) {\r\n throw new Error(\"Failed to lazy load components: \" + e);\r\n }\r\n\r\n if (!config.observable) {\r\n return null;\r\n }\r\n const mo = new MutationObserver(async (): Promise<void> => {\r\n try {\r\n await lazyLoads(root, config, prefixMap);\r\n } catch(e) {\r\n console.error(\"Failed to lazy load components: \" + e);\r\n }\r\n });\r\n mo.observe(root, { childList: true, subtree: true });\r\n return mo;\r\n}\r\n","import { config } from \"../config.js\";\r\nimport { buildMap, loadImportmap } from \"../importmap.js\";\r\nimport { eagerLoad } from \"../eagerload.js\";\r\nimport { handlerForLazyLoad } from \"../lazyLoad.js\";\r\nimport { IPrefixMap } from \"../types.js\";\r\n\r\nexport class Autoloader extends HTMLElement {\r\n private static _instance: Autoloader | null = null;\r\n private _initialized = false;\r\n private _prefixMap: IPrefixMap | null = null;\r\n private _observer: MutationObserver | null = null;\r\n\r\n constructor() {\r\n super();\r\n if (Autoloader._instance) {\r\n throw new Error(\r\n `${config.tagNames.autoloader} can only be instantiated once.`\r\n );\r\n }\r\n Autoloader._instance = this;\r\n\r\n const importmap = loadImportmap();\r\n if (importmap) {\r\n const { prefixMap, loadMap } = buildMap(importmap);\r\n this._prefixMap = prefixMap;\r\n eagerLoad(loadMap, config.loaders).catch((e) => {\r\n console.error(\"Failed to eager load components:\", e);\r\n });\r\n }\r\n }\r\n\r\n async connectedCallback() {\r\n if (!this._initialized) {\r\n this._initialized = true;\r\n if (this._prefixMap) {\r\n if (document.readyState === \"loading\") {\r\n await new Promise<void>((r) =>\r\n document.addEventListener(\"DOMContentLoaded\", () => r(), {\r\n once: true,\r\n })\r\n );\r\n }\r\n this._observer = await handlerForLazyLoad(\r\n document,\r\n config,\r\n this._prefixMap\r\n );\r\n }\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n this._observer?.disconnect();\r\n this._observer = null;\r\n if (Autoloader._instance === this) {\r\n Autoloader._instance = null;\r\n }\r\n }\r\n}\r\n","import { Autoloader } from \"./components/Autoloader.js\";\r\nimport { config } from \"./config.js\";\r\n\r\nexport function registerComponents() {\r\n if (!customElements.get(config.tagNames.autoloader)) {\r\n customElements.define(config.tagNames.autoloader, Autoloader);\r\n }\r\n}\r\n","import { setConfig } from \"./config.js\";\r\nimport { registerComponents } from \"./registerComponents.js\";\r\nimport { IWritableConfig } from \"./types.js\";\r\n\r\nexport function bootstrapAutoloader(config?: IWritableConfig): void {\r\n if (config) {\r\n setConfig(config);\r\n }\r\n registerComponents();\r\n}\r\n"],"names":["DEFAULT_KEY","VANILLA_KEY","VANILLA_LOADER","postfix","loader","async","path","import","default","_config","scanImportmap","loaders","observable","tagNames","autoloader","config","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","bootstrapAutoloader","partialConfig"],"mappings":"AAaO,MAAMA,EAAc,IAEdC,EAAc,UAEdC,EAAiB,CAC5BC,QAAS,MACTC,OClBKC,eAAoBC,GAEzB,aADqBC,OAAO,GAAGD,MACjBE,OAChB,GDkBMC,EAA2B,CAC/BC,eAAe,EACfC,QAAS,CACPV,CAACA,GAAcC,EACfF,CAACA,GAAcC,GAEjBW,YAAY,EACZC,SAAU,CACRC,WAAY,mBAyBHC,EAAkBN,EErD/B,MAAMO,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,EACd9B,EACAmB,EACAd,GAEA,IAAIP,EAEJ,GAAkB,OAAdqB,GAAsBA,IAAczB,GAA6B,KAAdyB,EAAkB,CAEvE,IAAIY,EAAiC,KAErC,MAAMC,EAAwB,GAC9B,IAAK,MAAOpB,EAAKqB,KAAMC,OAAOC,QAAQ9B,GAAU,CAC9C,GAAIO,IAAQlB,EAAa,SACzB,MAAM0C,EAA6B,iBAANH,EAAiB5B,EAAQ4B,GAAKA,EAC9B,iBAAlBG,GACXJ,EAAWK,KAAKD,EAClB,CAGAJ,EAAWM,KAAK,CAACC,EAAGC,IAAMA,EAAE3C,QAAQoB,OAASsB,EAAE1C,QAAQoB,QAEvD,IAAK,MAAMmB,KAAiBJ,EAC1B,GAAIhC,EAAKc,SAASsB,EAAcvC,SAAU,CACxCkC,EAAiBK,EACjB,KACF,CAGEL,EACFjC,EAASiC,GAETjC,EAASO,EAAQX,GACK,iBAAXI,IACTA,EAASO,EAAQP,IAGvB,MAEE,GADAA,EAASO,EAAQc,IACZrB,EACH,MAAM,IAAIuB,MAAM,qBAAuBF,GAI3C,GAAsB,iBAAXrB,EACT,MAAM,IAAIuB,MAAM,4CAElB,OAAOvB,CACT,CClDO,MAAM2C,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,iBAA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"}
|
|
1
|
+
{"version":3,"file":"index.esm.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":["\r\nimport { IConfig, ILoader, IWritableConfig } from \"./types.js\"\r\nimport { load } from \"./vanilla.js\"\r\n\r\ninterface IInternalConfig extends IConfig {\r\n scanImportmap: boolean;\r\n loaders: Record<string, ILoader | string>;\r\n observable: boolean;\r\n tagNames: {\r\n autoloader: string;\r\n };\r\n}\r\n\r\nexport const DEFAULT_KEY = \"*\";\r\n\r\nexport const VANILLA_KEY = \"vanilla\";\r\n\r\nexport const VANILLA_LOADER = {\r\n postfix: \".js\",\r\n loader: load\r\n}\r\n\r\nconst _config: IInternalConfig = {\r\n scanImportmap: true,\r\n loaders: {\r\n [VANILLA_KEY]: VANILLA_LOADER,\r\n [DEFAULT_KEY]: VANILLA_KEY\r\n },\r\n observable: true,\r\n tagNames: {\r\n autoloader: \"wcs-autoloader\"\r\n }\r\n}\r\n\r\nfunction deepFreeze<T>(obj: T): T {\r\n if (obj === null || typeof obj !== \"object\") return obj;\r\n Object.freeze(obj);\r\n for (const key of Object.keys(obj)) {\r\n deepFreeze((obj as Record<string, unknown>)[key]);\r\n }\r\n return obj;\r\n}\r\n\r\nfunction deepClone<T>(obj: T): T {\r\n if (obj === null || typeof obj !== \"object\") return obj;\r\n const clone: Record<string, unknown> = {};\r\n for (const key of Object.keys(obj)) {\r\n clone[key] = deepClone((obj as Record<string, unknown>)[key]);\r\n }\r\n return clone as T;\r\n}\r\n\r\nlet frozenConfig: IConfig | null = null;\r\n\r\n// 後方互換のため config もエクスポート(読み取り専用として使用)\r\nexport const config: IConfig = _config as IConfig;\r\n\r\nexport function getConfig(): IConfig {\r\n if (!frozenConfig) {\r\n frozenConfig = deepFreeze(deepClone(_config));\r\n }\r\n return frozenConfig;\r\n}\r\n\r\nexport function setConfig(partialConfig: IWritableConfig): void {\r\n if (typeof partialConfig.scanImportmap === \"boolean\") {\r\n _config.scanImportmap = partialConfig.scanImportmap;\r\n }\r\n if (partialConfig.loaders) {\r\n Object.assign(_config.loaders, partialConfig.loaders);\r\n }\r\n if (typeof partialConfig.observable === \"boolean\") {\r\n _config.observable = partialConfig.observable;\r\n }\r\n if (partialConfig.tagNames) {\r\n Object.assign(_config.tagNames, partialConfig.tagNames);\r\n }\r\n frozenConfig = null;\r\n}\r\n","\r\nexport async function load(path: string): Promise<CustomElementConstructor> {\r\n const module = await import(`${path}`);\r\n return module.default as CustomElementConstructor;\r\n}\r\n","import { IImportMap, IKeyInfo, ILoadMap, IPrefixMap } from \"./types.js\";\r\n\r\nconst COMPONENT_KEYWORD = \"@components/\";\r\n\r\nexport function loadImportmap(): IImportMap | null {\r\n const importmap: IImportMap = { imports: {} };\r\n document.querySelectorAll('script[type=\"importmap\"]').forEach((script) => {\r\n try {\r\n const json = JSON.parse(script.innerHTML);\r\n if (json.imports) {\r\n importmap.imports = Object.assign(importmap.imports, json.imports);\r\n }\r\n } catch (e) {\r\n throw new Error(\"Failed to parse importmap JSON: \" + e);\r\n }\r\n });\r\n return Object.keys(importmap.imports).length > 0\r\n ? importmap\r\n : null;\r\n}\r\n\r\nfunction getKeyInfoFromImportmapKey(key: string): IKeyInfo | null {\r\n if (key.startsWith(COMPONENT_KEYWORD)) {\r\n if (key.endsWith(\"/\")) {\r\n const prefixWithLoader = key.slice(COMPONENT_KEYWORD.length, key.length - 1);\r\n const [ prefix, loaderKey ] = prefixWithLoader.split(\"|\", 2);\r\n if (prefix === \"\") {\r\n throw new Error(\"Invalid importmap key: \" + key);\r\n }\r\n return {\r\n key,\r\n prefix: prefix.replaceAll(\"/\", \"-\").toLowerCase(),\r\n loaderKey: loaderKey ?? null,\r\n isNameSpaced: true\r\n };\r\n } else {\r\n const tagNamePart = key.slice(COMPONENT_KEYWORD.length);\r\n const [ tagName, loaderKeyPart ] = tagNamePart.split(\"|\", 2);\r\n const [ loaderKey, extendsText ] = (loaderKeyPart ?? \"\").split(\",\", 2);\r\n if (tagName === \"\") {\r\n throw new Error(\"Invalid importmap key: \" + key);\r\n }\r\n return {\r\n key,\r\n tagName: tagName.replaceAll(\"/\", \"-\").toLowerCase(),\r\n loaderKey: loaderKey || null,\r\n extends: extendsText || null,\r\n isNameSpaced: false\r\n };\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function buildMap(importmap: IImportMap): {\r\n prefixMap: IPrefixMap, loadMap: ILoadMap\r\n} {\r\n const prefixMap: IPrefixMap = {};\r\n const loadMap: ILoadMap = {};\r\n for (const [key, _value] of Object.entries(importmap.imports)) {\r\n const keyInfo = getKeyInfoFromImportmapKey(key);\r\n if (keyInfo === null) {\r\n continue;\r\n }\r\n if (keyInfo.isNameSpaced) {\r\n prefixMap[keyInfo.prefix] = keyInfo;\r\n } else {\r\n loadMap[keyInfo.tagName] = keyInfo;\r\n }\r\n }\r\n return { prefixMap, loadMap };\r\n}","import { DEFAULT_KEY } from \"./config.js\";\r\nimport { ILoader } from \"./types.js\";\r\n\r\nexport function resolveLoader(\r\n path: string,\r\n loaderKey: string | null,\r\n loaders: Record<string, ILoader | string>\r\n): ILoader {\r\n let loader: ILoader | string;\r\n\r\n if (loaderKey === null || loaderKey === DEFAULT_KEY || loaderKey === \"\") {\r\n // Try to resolve by postfix\r\n let resolvedLoader: ILoader | null = null;\r\n \r\n const candidates: ILoader[] = [];\r\n for (const [key, l] of Object.entries(loaders)) {\r\n if (key === DEFAULT_KEY) continue;\r\n const currentLoader = typeof l === \"string\" ? loaders[l] : l;\r\n if (typeof currentLoader === \"string\") continue; // Should not happen if config is correct\r\n candidates.push(currentLoader);\r\n }\r\n\r\n // Sort by postfix length descending to match longest extension first\r\n candidates.sort((a, b) => b.postfix.length - a.postfix.length);\r\n\r\n for (const currentLoader of candidates) {\r\n if (path.endsWith(currentLoader.postfix)) {\r\n resolvedLoader = currentLoader;\r\n break;\r\n }\r\n }\r\n\r\n if (resolvedLoader) {\r\n loader = resolvedLoader;\r\n } else {\r\n loader = loaders[DEFAULT_KEY];\r\n if (typeof loader === \"string\") {\r\n loader = loaders[loader];\r\n }\r\n }\r\n } else {\r\n loader = loaders[loaderKey];\r\n if (!loader) {\r\n throw new Error(\"Loader not found: \" + loaderKey);\r\n }\r\n }\r\n\r\n if (typeof loader === \"string\") {\r\n throw new Error(\"Loader redirection is not supported here\");\r\n }\r\n return loader;\r\n}\r\n","\r\nexport const failedTags = new Set<string>();\r\nexport const loadingTags = new Set<string>();\r\n\r\nexport function resetState() {\r\n failedTags.clear();\r\n loadingTags.clear();\r\n}\r\n\r\n","import { resolveLoader } from \"./resolveLoader.js\";\r\nimport { failedTags } from \"./tags.js\";\r\nimport { IEagerLoadInfo, ILoader } from \"./types.js\";\r\n\r\nconst EXTENDS_MAP = new Map<any, string>();\r\n\r\nif (typeof window !== \"undefined\") {\r\n const map = [\r\n [HTMLButtonElement, \"button\"],\r\n [HTMLInputElement, \"input\"],\r\n [HTMLAnchorElement, \"a\"],\r\n [HTMLImageElement, \"img\"],\r\n [HTMLDivElement, \"div\"],\r\n [HTMLSpanElement, \"span\"],\r\n [HTMLParagraphElement, \"p\"],\r\n [HTMLUListElement, \"ul\"],\r\n [HTMLOListElement, \"ol\"],\r\n [HTMLLIElement, \"li\"],\r\n [HTMLTableElement, \"table\"],\r\n [HTMLFormElement, \"form\"],\r\n [HTMLLabelElement, \"label\"],\r\n [HTMLSelectElement, \"select\"],\r\n [HTMLTextAreaElement, \"textarea\"],\r\n [HTMLHeadingElement, \"h1\"],\r\n [HTMLQuoteElement, \"blockquote\"],\r\n [HTMLPreElement, \"pre\"],\r\n [HTMLBRElement, \"br\"],\r\n [HTMLHRElement, \"hr\"],\r\n [HTMLModElement, \"ins\"],\r\n [HTMLTableCaptionElement, \"caption\"],\r\n [HTMLTableColElement, \"col\"],\r\n [HTMLTableSectionElement, \"tbody\"],\r\n [HTMLTableRowElement, \"tr\"],\r\n [HTMLTableCellElement, \"td\"],\r\n [HTMLFieldSetElement, \"fieldset\"],\r\n [HTMLLegendElement, \"legend\"],\r\n [HTMLDListElement, \"dl\"],\r\n [HTMLOptGroupElement, \"optgroup\"],\r\n [HTMLOptionElement, \"option\"],\r\n [HTMLStyleElement, \"style\"],\r\n [HTMLScriptElement, \"script\"],\r\n [HTMLTemplateElement, \"template\"],\r\n [HTMLCanvasElement, \"canvas\"],\r\n [HTMLIFrameElement, \"iframe\"],\r\n [HTMLObjectElement, \"object\"],\r\n [HTMLEmbedElement, \"embed\"],\r\n [HTMLVideoElement, \"video\"],\r\n [HTMLAudioElement, \"audio\"],\r\n [HTMLTrackElement, \"track\"],\r\n [HTMLMapElement, \"map\"],\r\n [HTMLAreaElement, \"area\"],\r\n [HTMLSourceElement, \"source\"],\r\n [HTMLParamElement, \"param\"],\r\n [HTMLMeterElement, \"meter\"],\r\n [HTMLProgressElement, \"progress\"],\r\n [HTMLOutputElement, \"output\"],\r\n [HTMLDetailsElement, \"details\"],\r\n [HTMLDialogElement, \"dialog\"],\r\n [HTMLMenuElement, \"menu\"],\r\n [HTMLSlotElement, \"slot\"],\r\n [HTMLTimeElement, \"time\"],\r\n [HTMLDataElement, \"data\"],\r\n [HTMLPictureElement, \"picture\"],\r\n ] as const;\r\n\r\n map.forEach(([cls, tag]) => {\r\n /* istanbul ignore next */\r\n if (typeof cls !== \"undefined\") {\r\n EXTENDS_MAP.set(cls, tag);\r\n }\r\n });\r\n}\r\n\r\nfunction resolveExtends(componentConstructor: CustomElementConstructor): string | null {\r\n for (const [cls, tag] of EXTENDS_MAP) {\r\n if (componentConstructor.prototype instanceof cls) {\r\n return tag;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nasync function eagerLoadItem(info: IEagerLoadInfo, tagName:string, loader: ILoader): Promise<void> {\r\n try {\r\n if (customElements.get(tagName)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n const componentConstructor = await loader.loader(info.key);\r\n if (componentConstructor !== null) {\r\n let extendsName = info.extends;\r\n if (extendsName === null) {\r\n extendsName = resolveExtends(componentConstructor);\r\n }\r\n\r\n if (customElements.get(tagName)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n if (extendsName === null) {\r\n customElements.define(tagName, componentConstructor);\r\n } else {\r\n customElements.define(tagName, componentConstructor, { extends: extendsName });\r\n }\r\n }\r\n } catch(e) {\r\n if (!failedTags.has(tagName)) {\r\n console.error(`Failed to eager load component '${tagName}':`, e);\r\n failedTags.add(tagName);\r\n }\r\n }\r\n\r\n}\r\n\r\nexport async function eagerLoad(\r\n loadMap: Record<string, IEagerLoadInfo>, \r\n loaders: Record<string, ILoader | string>\r\n): Promise<void> {\r\n const promises: Promise<void>[] = [];\r\n for(const [tagName, info] of Object.entries(loadMap)) {\r\n let loader: ILoader;\r\n try {\r\n loader = resolveLoader(info.key, info.loaderKey, loaders);\r\n } catch (_e) {\r\n throw new Error(\"Loader redirection is not supported for eager loaded components: \" + tagName);\r\n }\r\n promises.push(eagerLoadItem(info, tagName, loader));\r\n }\r\n await Promise.all(promises);\r\n}\r\n","import { resolveLoader } from \"./resolveLoader.js\";\r\nimport { failedTags, loadingTags } from \"./tags.js\";\r\nimport { IConfig, ILoader, INameSpaceInfo, IPrefixMap, ITagInfo } from \"./types.js\";\r\n\r\nconst isCustomElement = (node: Node): boolean => {\r\n return (node instanceof Element && (node.tagName.includes(\"-\") || node.getAttribute(\"is\")?.includes(\"-\"))) ?? false;\r\n}\r\n\r\nexport function getCustomTagInfo(e: Element): ITagInfo {\r\n const elementTagName = e.tagName.toLowerCase();\r\n let name;\r\n let extendsName;\r\n if (elementTagName.includes(\"-\")) {\r\n name = elementTagName;\r\n extendsName = null;\r\n } else {\r\n const tagName = e.getAttribute(\"is\");\r\n if (tagName === null) {\r\n throw new Error(\"Custom element without a dash or 'is' attribute found: \" + elementTagName);\r\n }\r\n if (!tagName.includes(\"-\")) {\r\n throw new Error(\"Custom element 'is' attribute without a dash found: \" + elementTagName);\r\n }\r\n name = tagName;\r\n extendsName = elementTagName;\r\n }\r\n return { name, extends: extendsName };\r\n}\r\n\r\nconst observedCustomElements: WeakSet<Element> = new WeakSet<Element>();\r\n\r\nasync function observeShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\r\n observedCustomElements.add(element);\r\n await handlerForLazyLoad(element.shadowRoot!, config, prefixMap);\r\n}\r\n\r\nasync function checkObserveShadowRoot(element: Element, config: IConfig, prefixMap: IPrefixMap) {\r\n if (element.shadowRoot) {\r\n if (!observedCustomElements.has(element)) {\r\n await observeShadowRoot(element, config, prefixMap);\r\n }\r\n }\r\n}\r\n\r\nfunction matchNameSpace(tagName: string, prefixMap: IPrefixMap): INameSpaceInfo | null {\r\n for (const [prefix, info] of Object.entries(prefixMap)) {\r\n if (tagName.startsWith(prefix + \"-\")) {\r\n return info;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nasync function tagLoad(tagInfo: ITagInfo, config: IConfig, prefixMap: IPrefixMap): Promise<void> {\r\n const info: INameSpaceInfo | null = matchNameSpace(tagInfo.name, prefixMap);\r\n if (info === null) {\r\n throw new Error(\"No matching namespace found for lazy loaded component: \" + tagInfo.name);\r\n }\r\n \r\n if (loadingTags.has(tagInfo.name)) {\r\n await customElements.whenDefined(tagInfo.name);\r\n return;\r\n } \r\n loadingTags.add(tagInfo.name);\r\n try {\r\n let loader: ILoader;\r\n try {\r\n loader = resolveLoader(\"\", info.loaderKey, config.loaders);\r\n } catch (_e) {\r\n throw new Error(\"Loader redirection is not supported for lazy loaded components: \" + tagInfo.name);\r\n }\r\n\r\n const file: string = tagInfo.name.slice(info.prefix.length + 1);\r\n if (file === \"\") {\r\n throw new Error(\"Invalid component name for lazy loaded component: \" + tagInfo.name);\r\n }\r\n const path = info.key + file + loader.postfix;\r\n\r\n if (customElements.get(tagInfo.name)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n const componentConstructor = await loader.loader(path);\r\n if (componentConstructor !== null) {\r\n if (customElements.get(tagInfo.name)) {\r\n // すでに定義済み\r\n return;\r\n }\r\n if (tagInfo.extends === null) {\r\n customElements.define(tagInfo.name, componentConstructor);\r\n } else {\r\n customElements.define(tagInfo.name, componentConstructor, { extends: tagInfo.extends });\r\n }\r\n } else {\r\n throw new Error(\"Loader returned null for component: \" + tagInfo.name);\r\n }\r\n } catch(e) {\r\n console.error(`Failed to lazy load component '${tagInfo.name}':`, e);\r\n failedTags.add(tagInfo.name);\r\n } finally {\r\n loadingTags.delete(tagInfo.name);\r\n }\r\n}\r\n\r\n//\r\nasync function lazyLoad(root: Node, config: IConfig, prefixMap: IPrefixMap): Promise<number> {\r\n const elements: Element[] = [];\r\n\r\n // Create TreeWalker (target element and comment nodes)\r\n const walker = document.createTreeWalker(\r\n root, \r\n NodeFilter.SHOW_ELEMENT,\r\n (node: Node): number => {\r\n return isCustomElement(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\r\n } \r\n );\r\n \r\n // Move to next node with TreeWalker and add matching nodes to array\r\n while (walker.nextNode()) {\r\n elements.push(walker.currentNode as Element);\r\n }\r\n\r\n const tagInfos: ITagInfo[] = [];\r\n const tagNames = new Set<string>();\r\n for(const element of elements) {\r\n const tagInfo = getCustomTagInfo(element);\r\n const customClass = customElements.get(tagInfo.name);\r\n if (customClass === undefined) {\r\n // undefined\r\n customElements.whenDefined(tagInfo.name).then(async () => {\r\n // upgraded\r\n await checkObserveShadowRoot(element, config, prefixMap);\r\n });\r\n if (!tagNames.has(tagInfo.name) && !failedTags.has(tagInfo.name)) {\r\n tagNames.add(tagInfo.name);\r\n tagInfos.push(tagInfo);\r\n }\r\n } else {\r\n // upgraded\r\n await checkObserveShadowRoot(element, config, prefixMap);\r\n }\r\n }\r\n let tagCount = 0;\r\n for(const tagInfo of tagInfos) {\r\n await tagLoad(tagInfo, config, prefixMap);\r\n tagCount++;\r\n }\r\n return tagCount;\r\n\r\n}\r\n\r\nasync function lazyLoads(\r\n root: Document | ShadowRoot, \r\n config: IConfig, \r\n prefixMap: IPrefixMap\r\n): Promise<void> {\r\n while(await lazyLoad(root, config, prefixMap) > 0) {\r\n // Repeat until no more tags to load\r\n }\r\n}\r\n\r\nexport async function handlerForLazyLoad(\r\n root: Document | ShadowRoot,\r\n config: IConfig,\r\n prefixMap: IPrefixMap\r\n): Promise<MutationObserver | null> {\r\n if (Object.keys(prefixMap).length === 0) {\r\n return null;\r\n }\r\n try {\r\n await lazyLoads(root, config, prefixMap);\r\n } catch(e) {\r\n throw new Error(\"Failed to lazy load components: \" + e);\r\n }\r\n\r\n if (!config.observable) {\r\n return null;\r\n }\r\n const mo = new MutationObserver(async (): Promise<void> => {\r\n try {\r\n await lazyLoads(root, config, prefixMap);\r\n } catch(e) {\r\n console.error(\"Failed to lazy load components: \" + e);\r\n }\r\n });\r\n mo.observe(root, { childList: true, subtree: true });\r\n return mo;\r\n}\r\n","import { config } from \"../config.js\";\r\nimport { buildMap, loadImportmap } from \"../importmap.js\";\r\nimport { eagerLoad } from \"../eagerload.js\";\r\nimport { handlerForLazyLoad } from \"../lazyLoad.js\";\r\nimport { IPrefixMap } from \"../types.js\";\r\n\r\nexport class Autoloader extends HTMLElement {\r\n private static _instance: Autoloader | null = null;\r\n private _initialized = false;\r\n private _prefixMap: IPrefixMap | null = null;\r\n private _observer: MutationObserver | null = null;\r\n\r\n constructor() {\r\n super();\r\n if (Autoloader._instance) {\r\n throw new Error(\r\n `${config.tagNames.autoloader} can only be instantiated once.`\r\n );\r\n }\r\n Autoloader._instance = this;\r\n\r\n const importmap = loadImportmap();\r\n if (importmap) {\r\n const { prefixMap, loadMap } = buildMap(importmap);\r\n this._prefixMap = prefixMap;\r\n eagerLoad(loadMap, config.loaders).catch((e) => {\r\n console.error(\"Failed to eager load components:\", e);\r\n });\r\n }\r\n }\r\n\r\n async connectedCallback() {\r\n if (!this._initialized) {\r\n this._initialized = true;\r\n if (this._prefixMap) {\r\n if (document.readyState === \"loading\") {\r\n await new Promise<void>((r) =>\r\n document.addEventListener(\"DOMContentLoaded\", () => r(), {\r\n once: true,\r\n })\r\n );\r\n }\r\n this._observer = await handlerForLazyLoad(\r\n document,\r\n config,\r\n this._prefixMap\r\n );\r\n }\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n this._observer?.disconnect();\r\n this._observer = null;\r\n if (Autoloader._instance === this) {\r\n Autoloader._instance = null;\r\n }\r\n }\r\n}\r\n","import { Autoloader } from \"./components/Autoloader.js\";\r\nimport { config } from \"./config.js\";\r\n\r\nexport function registerComponents() {\r\n if (!customElements.get(config.tagNames.autoloader)) {\r\n customElements.define(config.tagNames.autoloader, Autoloader);\r\n }\r\n}\r\n","import { setConfig } from \"./config.js\";\r\nimport { registerComponents } from \"./registerComponents.js\";\r\nimport { IWritableConfig } from \"./types.js\";\r\n\r\nexport function bootstrapAutoloader(config?: IWritableConfig): void {\r\n if (config) {\r\n setConfig(config);\r\n }\r\n registerComponents();\r\n}\r\n"],"names":["DEFAULT_KEY","VANILLA_KEY","VANILLA_LOADER","postfix","loader","async","path","import","default","_config","scanImportmap","loaders","observable","tagNames","autoloader","deepFreeze","obj","Object","freeze","key","keys","deepClone","clone","frozenConfig","config","getConfig","COMPONENT_KEYWORD","getKeyInfoFromImportmapKey","startsWith","endsWith","prefixWithLoader","slice","length","prefix","loaderKey","split","Error","replaceAll","toLowerCase","isNameSpaced","tagNamePart","tagName","loaderKeyPart","extendsText","extends","resolveLoader","resolvedLoader","candidates","l","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","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","bootstrapAutoloader","partialConfig"],"mappings":"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"}
|
package/package.json
CHANGED