@pie-players/pie-players-shared 0.3.30 → 0.3.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/components/PieItemPlayer.svelte +21 -0
  2. package/dist/components/PiePreviewLayout.svelte +8 -1
  3. package/dist/index.js +4 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/loaders/ElementLoader.d.ts +6 -34
  6. package/dist/loaders/ElementLoader.d.ts.map +1 -1
  7. package/dist/loaders/ElementLoader.js +21 -9
  8. package/dist/loaders/ElementLoader.js.map +1 -1
  9. package/dist/loaders/element-loader-types.d.ts +91 -0
  10. package/dist/loaders/element-loader-types.d.ts.map +1 -0
  11. package/dist/loaders/element-loader-types.js +26 -0
  12. package/dist/loaders/element-loader-types.js.map +1 -0
  13. package/dist/loaders/element-loader.d.ts +92 -0
  14. package/dist/loaders/element-loader.d.ts.map +1 -0
  15. package/dist/loaders/element-loader.js +391 -0
  16. package/dist/loaders/element-loader.js.map +1 -0
  17. package/dist/loaders/esm-adapter.d.ts +40 -0
  18. package/dist/loaders/esm-adapter.d.ts.map +1 -0
  19. package/dist/loaders/esm-adapter.js +274 -0
  20. package/dist/loaders/esm-adapter.js.map +1 -0
  21. package/dist/loaders/iife-adapter.d.ts +86 -0
  22. package/dist/loaders/iife-adapter.d.ts.map +1 -0
  23. package/dist/loaders/iife-adapter.js +365 -0
  24. package/dist/loaders/iife-adapter.js.map +1 -0
  25. package/dist/loaders/index.d.ts +30 -17
  26. package/dist/loaders/index.d.ts.map +1 -1
  27. package/dist/loaders/index.js +26 -14
  28. package/dist/loaders/index.js.map +1 -1
  29. package/dist/pie/index.d.ts +4 -4
  30. package/dist/pie/index.d.ts.map +1 -1
  31. package/dist/pie/index.js +7 -2
  32. package/dist/pie/index.js.map +1 -1
  33. package/dist/pie/initialization.d.ts +26 -1
  34. package/dist/pie/initialization.d.ts.map +1 -1
  35. package/dist/pie/initialization.js +72 -15
  36. package/dist/pie/initialization.js.map +1 -1
  37. package/dist/pie/instrumentation-event-map.d.ts.map +1 -1
  38. package/dist/pie/instrumentation-event-map.js +27 -16
  39. package/dist/pie/instrumentation-event-map.js.map +1 -1
  40. package/dist/pie/stage-tracker.d.ts +51 -0
  41. package/dist/pie/stage-tracker.d.ts.map +1 -0
  42. package/dist/pie/stage-tracker.js +106 -0
  43. package/dist/pie/stage-tracker.js.map +1 -0
  44. package/dist/pie/stages.d.ts +75 -0
  45. package/dist/pie/stages.d.ts.map +1 -0
  46. package/dist/pie/stages.js +58 -0
  47. package/dist/pie/stages.js.map +1 -0
  48. package/dist/pie/use-resource-monitor.svelte.d.ts.map +1 -1
  49. package/dist/pie/use-resource-monitor.svelte.js +88 -75
  50. package/dist/pie/use-resource-monitor.svelte.js.map +1 -1
  51. package/dist/ui/use-promise.svelte.ts +109 -0
  52. package/package.json +6 -1
  53. package/dist/loaders/EsmElementLoader.d.ts +0 -69
  54. package/dist/loaders/EsmElementLoader.d.ts.map +0 -1
  55. package/dist/loaders/EsmElementLoader.js +0 -72
  56. package/dist/loaders/EsmElementLoader.js.map +0 -1
  57. package/dist/loaders/IifeElementLoader.d.ts +0 -61
  58. package/dist/loaders/IifeElementLoader.d.ts.map +0 -1
  59. package/dist/loaders/IifeElementLoader.js +0 -63
  60. package/dist/loaders/IifeElementLoader.js.map +0 -1
  61. package/dist/pie/esm-loader.d.ts +0 -104
  62. package/dist/pie/esm-loader.d.ts.map +0 -1
  63. package/dist/pie/esm-loader.js +0 -358
  64. package/dist/pie/esm-loader.js.map +0 -1
  65. package/dist/pie/iife-loader.d.ts +0 -116
  66. package/dist/pie/iife-loader.d.ts.map +0 -1
  67. package/dist/pie/iife-loader.js +0 -561
  68. package/dist/pie/iife-loader.js.map +0 -1
@@ -1,104 +0,0 @@
1
- /**
2
- * ESM PIE Loader
3
- *
4
- * Dynamically loads PIE elements from ESM CDN (esm.sh, jsDelivr, etc.)
5
- * using import maps for version resolution.
6
- *
7
- * Supports loading different views/variants of elements (delivery, author, print,
8
- * or custom UI variants) by importing from different subpaths.
9
- *
10
- * Integrates with the existing PIE registry system to enable shared
11
- * initialization code to work with ESM-loaded elements.
12
- */
13
- export interface EsmLoaderConfig {
14
- cdnBaseUrl: string;
15
- debugEnabled?: () => boolean;
16
- /**
17
- * Module resolution mode.
18
- * - "url" (default): load using fully-qualified CDN URLs
19
- * - "import-map": load using bare specifiers resolved by injected import maps
20
- */
21
- moduleResolution?: "url" | "import-map";
22
- }
23
- /**
24
- * View configuration for element loading
25
- * Maps view names to their subpath and tag suffix
26
- */
27
- export interface ViewConfig {
28
- /** Subpath to import from (e.g., '/author', '/print', '/delivery-mobile') */
29
- subpath: string;
30
- /** Suffix to append to tag name (e.g., '-config', '-print', '') */
31
- tagSuffix: string;
32
- /** Optional fallback view if this view doesn't exist */
33
- fallback?: string;
34
- }
35
- /**
36
- * Options for loading elements
37
- */
38
- export interface EsmLoadOptions {
39
- /**
40
- * View to load (e.g., 'delivery', 'author', 'print', 'delivery-mobile')
41
- * Can be any subpath defined in the element's package.json exports
42
- */
43
- view: string;
44
- /** Whether to also load controller modules */
45
- loadControllers?: boolean;
46
- /** Custom view configuration (overrides built-in views) */
47
- viewConfig?: ViewConfig;
48
- }
49
- /**
50
- * Built-in view configurations
51
- * Extensible - elements can define custom views (e.g., 'delivery-mobile', 'delivery-a11y')
52
- */
53
- export declare const BUILT_IN_VIEWS: Record<string, ViewConfig>;
54
- export declare class EsmPieLoader {
55
- private cdnBaseUrl;
56
- private moduleResolution;
57
- private importMapInjected;
58
- constructor(config: EsmLoaderConfig);
59
- private extractPackageName;
60
- private generateImportMap;
61
- private isJsDelivrNpm;
62
- private resolvePackageUrl;
63
- private resolveControllerUrl;
64
- private resolveSubpathUrl;
65
- private injectImportMap;
66
- private assertRuntimeSupport;
67
- private normalizeImportError;
68
- private resolveElementSpecifier;
69
- private resolveControllerSpecifier;
70
- private loadElement;
71
- getController(tag: string): any | null;
72
- elementsHaveLoaded(elements: Array<{
73
- name: string;
74
- tag: string;
75
- }>): Promise<{
76
- elements: typeof elements;
77
- val: boolean;
78
- }>;
79
- /**
80
- * Load PIE elements with specified view/variant
81
- *
82
- * @param contentConfig - Item config with elements
83
- * @param doc - Document to inject import maps into
84
- * @param options - Loading options (view, controllers, etc.)
85
- *
86
- * @example
87
- * // Load delivery view with controllers
88
- * await loader.load(config, document, { view: 'delivery', loadControllers: true });
89
- *
90
- * @example
91
- * // Load author view (configuration UI)
92
- * await loader.load(config, document, { view: 'author', loadControllers: false });
93
- *
94
- * @example
95
- * // Load custom mobile-optimized view with fallback
96
- * await loader.load(config, document, {
97
- * view: 'delivery-mobile',
98
- * viewConfig: { subpath: '/delivery-mobile', tagSuffix: '', fallback: 'delivery' },
99
- * loadControllers: true
100
- * });
101
- */
102
- load(contentConfig: any, doc: Document, options: EsmLoadOptions): Promise<void>;
103
- }
104
- //# sourceMappingURL=esm-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"esm-loader.d.ts","sourceRoot":"","sources":["../../src/pie/esm-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,MAAM,WAAW,eAAe;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;IAC7B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,UAAU,CAAC;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAmBrD,CAAC;AAEF,qBAAa,YAAY;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,MAAM,EAAE,eAAe;IAUnC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,iBAAiB;IA0CzB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,oBAAoB;IAmC5B,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,0BAA0B;YAUpB,WAAW;IAsJlB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAKhC,kBAAkB,CAC9B,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,GAC5C,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IAUvD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACU,IAAI,CAChB,aAAa,EAAE,GAAG,EAClB,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;CAwDhB"}
@@ -1,358 +0,0 @@
1
- /**
2
- * ESM PIE Loader
3
- *
4
- * Dynamically loads PIE elements from ESM CDN (esm.sh, jsDelivr, etc.)
5
- * using import maps for version resolution.
6
- *
7
- * Supports loading different views/variants of elements (delivery, author, print,
8
- * or custom UI variants) by importing from different subpaths.
9
- *
10
- * Integrates with the existing PIE registry system to enable shared
11
- * initialization code to work with ESM-loaded elements.
12
- */
13
- import { createPieLogger } from "./logger.js";
14
- import { pieRegistry } from "./registry.js";
15
- import { defineCustomElementSafely } from "./custom-element-define.js";
16
- import { validateCustomElementTag } from "./tag-names.js";
17
- import { isCustomElementConstructor, Status } from "./types.js";
18
- // Logger factory - will be initialized when loader is created
19
- let logger;
20
- /**
21
- * Built-in view configurations
22
- * Extensible - elements can define custom views (e.g., 'delivery-mobile', 'delivery-a11y')
23
- */
24
- export const BUILT_IN_VIEWS = {
25
- delivery: {
26
- subpath: "",
27
- tagSuffix: "",
28
- },
29
- author: {
30
- subpath: "/author",
31
- tagSuffix: "-config",
32
- fallback: "delivery", // Fall back to delivery if author doesn't exist
33
- },
34
- print: {
35
- subpath: "/print",
36
- tagSuffix: "-print",
37
- fallback: "delivery",
38
- },
39
- // Custom views can follow patterns like:
40
- // 'delivery-mobile': { subpath: '/delivery-mobile', tagSuffix: '', fallback: 'delivery' }
41
- // 'delivery-a11y': { subpath: '/delivery-a11y', tagSuffix: '', fallback: 'delivery' }
42
- // 'delivery-simple': { subpath: '/delivery-simple', tagSuffix: '', fallback: 'delivery' }
43
- };
44
- export class EsmPieLoader {
45
- cdnBaseUrl;
46
- moduleResolution;
47
- importMapInjected = false;
48
- constructor(config) {
49
- this.cdnBaseUrl = config.cdnBaseUrl.replace(/\/+$/, "");
50
- this.moduleResolution = config.moduleResolution || "url";
51
- // Initialize logger with debug function
52
- logger = createPieLogger("esm-loader", config.debugEnabled || (() => false));
53
- }
54
- extractPackageName(packageVersion) {
55
- // Extract package name from version string
56
- // e.g., "@pie-element/multiple-choice@11.0.1-esmbeta.3" => "@pie-element/multiple-choice"
57
- const parts = packageVersion.split("@");
58
- return parts.length >= 3 ? `@${parts[1]}` : parts[0];
59
- }
60
- generateImportMap(elements, options) {
61
- const imports = {};
62
- const viewConfig = options.viewConfig ||
63
- BUILT_IN_VIEWS[options.view] ||
64
- BUILT_IN_VIEWS.delivery;
65
- for (const [_tag, packageVersion] of Object.entries(elements)) {
66
- const packageName = this.extractPackageName(packageVersion);
67
- // Add root package import (for delivery/default view)
68
- imports[packageName] = this.resolvePackageUrl(packageVersion);
69
- // Add view-specific subpath if not root
70
- if (viewConfig.subpath) {
71
- imports[`${packageName}${viewConfig.subpath}`] = this.resolveSubpathUrl(packageVersion, viewConfig.subpath);
72
- }
73
- // Add controller path if requested
74
- if (options.loadControllers) {
75
- imports[`${packageName}/controller`] =
76
- this.resolveControllerUrl(packageVersion);
77
- }
78
- // Add fallback view if specified
79
- if (viewConfig.fallback) {
80
- const fallbackConfig = BUILT_IN_VIEWS[viewConfig.fallback];
81
- if (fallbackConfig?.subpath) {
82
- imports[`${packageName}${fallbackConfig.subpath}`] =
83
- this.resolveSubpathUrl(packageVersion, fallbackConfig.subpath);
84
- }
85
- }
86
- }
87
- return { imports };
88
- }
89
- isJsDelivrNpm() {
90
- return this.cdnBaseUrl.includes("cdn.jsdelivr.net/npm");
91
- }
92
- resolvePackageUrl(packageVersion) {
93
- // jsDelivr requires `+esm` to serve ESM-compatible output.
94
- // Example: https://cdn.jsdelivr.net/npm/@pie-element/passage@5.3.3/+esm
95
- if (this.isJsDelivrNpm()) {
96
- return `${this.cdnBaseUrl}/${packageVersion}/+esm`;
97
- }
98
- // Default: treat baseUrl as a direct ESM CDN base (esm.sh, etc.)
99
- return `${this.cdnBaseUrl}/${packageVersion}`;
100
- }
101
- resolveControllerUrl(packageVersion) {
102
- if (this.isJsDelivrNpm()) {
103
- return `${this.cdnBaseUrl}/${packageVersion}/controller/+esm`;
104
- }
105
- return `${this.cdnBaseUrl}/${packageVersion}/controller`;
106
- }
107
- resolveSubpathUrl(packageVersion, subpath) {
108
- // Remove leading slash from subpath if present
109
- const cleanSubpath = subpath.startsWith("/") ? subpath.slice(1) : subpath;
110
- if (this.isJsDelivrNpm()) {
111
- return `${this.cdnBaseUrl}/${packageVersion}/${cleanSubpath}/+esm`;
112
- }
113
- return `${this.cdnBaseUrl}/${packageVersion}/${cleanSubpath}`;
114
- }
115
- injectImportMap(importMap, doc) {
116
- const script = doc.createElement("script");
117
- script.type = "importmap";
118
- script.textContent = JSON.stringify(importMap, null, 2);
119
- doc.head.appendChild(script);
120
- }
121
- assertRuntimeSupport(doc) {
122
- if (!doc?.head) {
123
- throw new Error(`ESM loader requires a browser document with a <head> to load modules (moduleResolution=${this.moduleResolution}).`);
124
- }
125
- if (typeof customElements === "undefined") {
126
- throw new Error(`ESM loader requires Custom Elements support in this environment (moduleResolution=${this.moduleResolution}).`);
127
- }
128
- if (this.moduleResolution === "import-map") {
129
- const htmlScriptElement = HTMLScriptElement;
130
- const supportsImportMap = typeof HTMLScriptElement !== "undefined" &&
131
- typeof htmlScriptElement.supports === "function" &&
132
- htmlScriptElement.supports("importmap");
133
- if (!supportsImportMap) {
134
- throw new Error('This browser does not support import maps. Use moduleResolution="url" or switch to iife/preloaded strategy.');
135
- }
136
- }
137
- }
138
- normalizeImportError(err, specifier, context) {
139
- const message = err instanceof Error ? err.message : String(err);
140
- const lower = message.toLowerCase();
141
- const likelyCspOrPolicy = lower.includes("refused") ||
142
- lower.includes("content security policy") ||
143
- lower.includes("failed to fetch dynamically imported module") ||
144
- lower.includes("blocked");
145
- const likelyResolutionIssue = lower.includes("failed to resolve module specifier") ||
146
- lower.includes("cannot find module");
147
- const hints = [];
148
- if (this.moduleResolution === "import-map" && likelyResolutionIssue) {
149
- hints.push("Import-map resolution failed. Ensure the import map contains this specifier, or use moduleResolution=\"url\".");
150
- }
151
- if (likelyCspOrPolicy) {
152
- hints.push(`Check CSP allows module loading from ${this.cdnBaseUrl} (script-src/connect-src) and allows import maps if moduleResolution="import-map".`);
153
- }
154
- const prefix = `Failed to load ${context} module: ${specifier}`;
155
- if (hints.length === 0) {
156
- return new Error(`${prefix}. ${message}`);
157
- }
158
- return new Error(`${prefix}. ${message} Hints: ${hints.join(" ")}`);
159
- }
160
- resolveElementSpecifier(packageName, packageVersion, viewConfig) {
161
- if (this.moduleResolution === "import-map") {
162
- return viewConfig.subpath ? `${packageName}${viewConfig.subpath}` : packageName;
163
- }
164
- return viewConfig.subpath
165
- ? this.resolveSubpathUrl(packageVersion, viewConfig.subpath)
166
- : this.resolvePackageUrl(packageVersion);
167
- }
168
- resolveControllerSpecifier(packageName, packageVersion) {
169
- if (this.moduleResolution === "import-map") {
170
- return `${packageName}/controller`;
171
- }
172
- return this.resolveControllerUrl(packageVersion);
173
- }
174
- async loadElement(tag, packageVersion, options) {
175
- const registry = pieRegistry();
176
- const viewConfig = options.viewConfig ||
177
- BUILT_IN_VIEWS[options.view] ||
178
- BUILT_IN_VIEWS.delivery;
179
- try {
180
- const packageName = this.extractPackageName(packageVersion);
181
- const actualTag = validateCustomElementTag(`${tag}${viewConfig.tagSuffix}`, `element tag for ${packageName}`);
182
- logger.debug(`Loading element ${actualTag} from ${packageName} (${packageVersion})`);
183
- logger.debug(`View: ${options.view}, subpath: ${viewConfig.subpath}`);
184
- // Determine import specifier based on resolution mode and view
185
- const importSpecifier = this.resolveElementSpecifier(packageName, packageVersion, viewConfig);
186
- let module;
187
- let ElementClass;
188
- try {
189
- // @vite-ignore - Dynamic import from runtime specifier (URL or import-map bare path)
190
- module = await import(/* @vite-ignore */ importSpecifier);
191
- logger.debug(`Module loaded for ${actualTag}:`, module);
192
- logger.debug(`Module exports:`, Object.keys(module));
193
- // Try different export patterns based on view
194
- if (options.view === "author") {
195
- ElementClass = module.default || module.Configure || module.Element;
196
- }
197
- else if (options.view === "print") {
198
- ElementClass = module.default || module.Print || module.Element;
199
- }
200
- else {
201
- ElementClass = module.default || module.Element;
202
- }
203
- }
204
- catch (err) {
205
- // If loading fails and there's a fallback, try the fallback
206
- if (viewConfig.fallback) {
207
- logger.debug(`Primary element import failed for ${importSpecifier}; attempting fallback view "${viewConfig.fallback}"`);
208
- const fallbackConfig = BUILT_IN_VIEWS[viewConfig.fallback];
209
- const fallbackSpecifier = this.resolveElementSpecifier(packageName, packageVersion, fallbackConfig || BUILT_IN_VIEWS.delivery);
210
- try {
211
- // @vite-ignore - Dynamic import from runtime specifier (URL or import-map bare path)
212
- module = await import(/* @vite-ignore */ fallbackSpecifier);
213
- }
214
- catch (fallbackErr) {
215
- throw this.normalizeImportError(fallbackErr, fallbackSpecifier, "fallback element");
216
- }
217
- ElementClass = module.default || module.Element;
218
- logger.debug(`Loaded fallback view for ${actualTag}`);
219
- }
220
- else {
221
- throw this.normalizeImportError(err, importSpecifier, "element");
222
- }
223
- }
224
- if (!ElementClass) {
225
- throw new Error(`No suitable element class found in ${importSpecifier} for view ${options.view}`);
226
- }
227
- // Load controller separately if needed
228
- let controller = null;
229
- if (options.loadControllers) {
230
- const controllerSpecifier = this.resolveControllerSpecifier(packageName, packageVersion);
231
- try {
232
- // @vite-ignore - Dynamic import from runtime specifier (URL or import-map bare path)
233
- const controllerModule = await import(/* @vite-ignore */ controllerSpecifier);
234
- logger.debug(`Controller module loaded for ${actualTag}:`, controllerModule);
235
- // Controller exports as 'default'
236
- controller = controllerModule.default || controllerModule;
237
- if (controller) {
238
- logger.debug(`Controller registered for ${actualTag}`);
239
- }
240
- else {
241
- logger.warn(`No controller export found for ${actualTag}`);
242
- }
243
- }
244
- catch (err) {
245
- logger.warn(`Failed to load controller for ${actualTag}:`, this.normalizeImportError(err, controllerSpecifier, "controller"));
246
- }
247
- }
248
- // Register in the global PIE registry (used by shared initialization code)
249
- registry[actualTag] = {
250
- package: packageVersion,
251
- status: Status.loading,
252
- tagName: actualTag,
253
- element: ElementClass,
254
- controller: controller,
255
- config: null,
256
- bundleType: "esm", // Mark as ESM-loaded
257
- };
258
- // Register custom element with the tag name (including suffix)
259
- if (isCustomElementConstructor(ElementClass)) {
260
- const defineResult = defineCustomElementSafely(actualTag, class extends ElementClass {
261
- }, `element tag for ${packageName}`);
262
- if (defineResult.status === "defined") {
263
- logger.debug(`Registered custom element: ${actualTag}`);
264
- }
265
- else {
266
- logger.debug(`Element ${actualTag} already registered`);
267
- }
268
- registry[actualTag] = {
269
- ...registry[actualTag],
270
- status: Status.loaded,
271
- };
272
- }
273
- else {
274
- logger.warn(`No Element export found in module`);
275
- }
276
- }
277
- catch (err) {
278
- logger.error(`Failed to load element ${tag}:`, err);
279
- throw err;
280
- }
281
- }
282
- getController(tag) {
283
- const registry = pieRegistry();
284
- return registry[tag]?.controller || null;
285
- }
286
- async elementsHaveLoaded(elements) {
287
- // Wait for versioned tags to be defined
288
- const promises = elements.map((el) => {
289
- logger.debug(`Waiting for ${el.tag} to be defined`);
290
- return customElements.whenDefined(el.tag);
291
- });
292
- await Promise.all(promises);
293
- return { elements, val: true };
294
- }
295
- /**
296
- * Load PIE elements with specified view/variant
297
- *
298
- * @param contentConfig - Item config with elements
299
- * @param doc - Document to inject import maps into
300
- * @param options - Loading options (view, controllers, etc.)
301
- *
302
- * @example
303
- * // Load delivery view with controllers
304
- * await loader.load(config, document, { view: 'delivery', loadControllers: true });
305
- *
306
- * @example
307
- * // Load author view (configuration UI)
308
- * await loader.load(config, document, { view: 'author', loadControllers: false });
309
- *
310
- * @example
311
- * // Load custom mobile-optimized view with fallback
312
- * await loader.load(config, document, {
313
- * view: 'delivery-mobile',
314
- * viewConfig: { subpath: '/delivery-mobile', tagSuffix: '', fallback: 'delivery' },
315
- * loadControllers: true
316
- * });
317
- */
318
- async load(contentConfig, doc, options) {
319
- logger.debug("load() called with options:", options);
320
- logger.debug("contentConfig:", contentConfig);
321
- if (!contentConfig?.elements) {
322
- logger.warn("No elements in config");
323
- return;
324
- }
325
- this.assertRuntimeSupport(doc);
326
- const viewConfig = options.viewConfig ||
327
- BUILT_IN_VIEWS[options.view] ||
328
- BUILT_IN_VIEWS.delivery;
329
- // 0. Generate and inject import map when import-map mode is enabled
330
- if (this.moduleResolution === "import-map") {
331
- if (!this.importMapInjected) {
332
- logger.debug("Generating import map for view:", options.view);
333
- const importMap = this.generateImportMap(contentConfig.elements, options);
334
- logger.debug("Import map:", importMap);
335
- this.injectImportMap(importMap, doc);
336
- this.importMapInjected = true;
337
- logger.debug("Import map injected");
338
- }
339
- else {
340
- logger.debug("Import map already injected, skipping");
341
- }
342
- }
343
- else {
344
- logger.debug(`Skipping import map injection (moduleResolution=${this.moduleResolution})`);
345
- }
346
- // 2. Dynamically import and register each element
347
- const elementTags = Object.keys(contentConfig.elements);
348
- logger.debug("Loading elements:", elementTags);
349
- await Promise.all(elementTags.map((tag) => this.loadElement(tag, contentConfig.elements[tag], options)));
350
- logger.debug("All elements loaded");
351
- // 3. Wait for all custom elements to be defined
352
- logger.debug("Waiting for custom elements to be defined");
353
- const tagsWithSuffix = elementTags.map((tag) => validateCustomElementTag(`${tag}${viewConfig.tagSuffix}`, `element tag for view "${options.view}"`));
354
- await Promise.all(tagsWithSuffix.map((tag) => customElements.whenDefined(tag)));
355
- logger.debug("All custom elements defined");
356
- }
357
- }
358
- //# sourceMappingURL=esm-loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"esm-loader.js","sourceRoot":"","sources":["../../src/pie/esm-loader.ts"],"names":[],"mappings":"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"}
@@ -1,116 +0,0 @@
1
- /**
2
- * IIFE PIE Loader
3
- *
4
- * Dynamically loads PIE elements from IIFE bundles served by the PIE build service.
5
- * Matches the behavior of the original pie-player from @pie-players/pie-player-components.
6
- *
7
- * Integrates with the existing PIE registry system to enable shared
8
- * initialization code to work with IIFE-loaded elements.
9
- */
10
- import { BundleType } from "./types.js";
11
- import { type IifeBundleRetryConfig } from "../loader-config.js";
12
- import type { InstrumentationProvider } from "../instrumentation/types.js";
13
- export interface IifeLoaderConfig {
14
- /**
15
- * Base URL for the PIE bundle service
16
- * This service builds and serves IIFE bundles dynamically based on element versions
17
- * @example "https://proxy.pie-api.com/bundles/"
18
- * @default "https://proxy.pie-api.com/bundles/"
19
- */
20
- bundleHost: string;
21
- /**
22
- * Debug function (returns whether debug is enabled)
23
- */
24
- debugEnabled?: () => boolean;
25
- /**
26
- * Timeout (ms) for `customElements.whenDefined(...)` waiting.
27
- * Prevents infinite loading hangs.
28
- */
29
- whenDefinedTimeoutMs?: number;
30
- /**
31
- * Retry policy for transient bundle load failures.
32
- */
33
- bundleRetry?: IifeBundleRetryConfig;
34
- /**
35
- * Enable IIFE retry instrumentation events.
36
- */
37
- trackPageActions?: boolean;
38
- /**
39
- * Instrumentation provider used when tracking retry events.
40
- */
41
- instrumentationProvider?: InstrumentationProvider;
42
- /**
43
- * Optional callback that reports active retry/building status.
44
- */
45
- onBundleRetryStatus?: (status: IifeBundleRetryStatus) => void;
46
- }
47
- export interface IifeBundleRetryStatus {
48
- state: "retrying" | "completed" | "timeout" | "cancelled";
49
- url: string;
50
- attempt: number;
51
- elapsedMs: number;
52
- timeoutMs: number;
53
- retryDelayMs?: number;
54
- reason?: string;
55
- }
56
- export declare const DEFAULT_BUNDLE_HOST = "https://proxy.pie-api.com/bundles/";
57
- export declare class IifePieLoader {
58
- private config;
59
- constructor(config: IifeLoaderConfig);
60
- private ensurePieHelpers;
61
- private getRequestedPackageNames;
62
- private isReusableActiveBundle;
63
- private clearActiveBundleState;
64
- private removePieBundleScripts;
65
- private getActivePieBundleScriptUrls;
66
- private buildLoadDiagnostics;
67
- private isRecoverableRegistrationError;
68
- private registerWithReloadRecovery;
69
- private withGlobalLoadQueue;
70
- private toErrorMessage;
71
- private getBundleRetryConfig;
72
- private emitBundleRetryStatus;
73
- private getInstrumentationProvider;
74
- private trackRetryEvent;
75
- private trackRetryError;
76
- private wait;
77
- /**
78
- * Get the bundle URL based on config elements
79
- */
80
- private getBundleUrl;
81
- /**
82
- * Load an IIFE bundle from the specified URL
83
- */
84
- private loadBundleScript;
85
- private loadBundleScriptWithRetry;
86
- private whenDefinedWithTimeout;
87
- private createEmptyConfigure;
88
- /**
89
- * Register elements from the loaded IIFE bundle into the PIE registry
90
- */
91
- private registerElementsFromBundle;
92
- /**
93
- * Load PIE elements from IIFE bundle
94
- *
95
- * @param contentConfig - Item config with elements
96
- * @param doc - Document to inject script into
97
- * @param bundleType - Type of bundle (BundleType.player, BundleType.clientPlayer, or BundleType.editor)
98
- * @param needsControllers - Whether controllers are needed
99
- */
100
- load(contentConfig: any, doc: Document, bundleType: BundleType, needsControllers: boolean): Promise<void>;
101
- /**
102
- * Get controller for a specific element tag
103
- */
104
- getController(tag: string): any | null;
105
- /**
106
- * Wait for elements to be fully loaded
107
- */
108
- elementsHaveLoaded(elements: Array<{
109
- name: string;
110
- tag: string;
111
- }>): Promise<{
112
- elements: typeof elements;
113
- val: boolean;
114
- }>;
115
- }
116
- //# sourceMappingURL=iife-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"iife-loader.d.ts","sourceRoot":"","sources":["../../src/pie/iife-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,UAAU,EAAsC,MAAM,YAAY,CAAC;AAE5E,OAAO,EAEN,KAAK,qBAAqB,EAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAM3E,MAAM,WAAW,gBAAgB;IAChC;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;IAE7B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;IAEpC;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAElD;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAC9D;AAED,MAAM,WAAW,qBAAqB;IACrC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,eAAO,MAAM,mBAAmB,uCAAuC,CAAC;AAYxE,qBAAa,aAAa;IACzB,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IASpC,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,4BAA4B;IAcpC,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,8BAA8B;YASxB,0BAA0B;IAuDxC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,IAAI;IAIZ;;OAEG;IACH,OAAO,CAAC,YAAY;IAkCpB;;OAEG;YACW,gBAAgB;YAsBhB,yBAAyB;IA+FvC,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;YACW,0BAA0B;IA2HxC;;;;;;;OAOG;IACU,IAAI,CAChB,aAAa,EAAE,GAAG,EAClB,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,OAAO,GACvB,OAAO,CAAC,IAAI,CAAC;IAsGhB;;OAEG;IACI,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAK7C;;OAEG;IACU,kBAAkB,CAC9B,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,GAC5C,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;CAQvD"}