@pie-players/pie-players-shared 0.3.30 → 0.3.31
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.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/loaders/ElementLoader.d.ts +6 -34
- package/dist/loaders/ElementLoader.d.ts.map +1 -1
- package/dist/loaders/ElementLoader.js +21 -9
- package/dist/loaders/ElementLoader.js.map +1 -1
- package/dist/loaders/element-loader-types.d.ts +91 -0
- package/dist/loaders/element-loader-types.d.ts.map +1 -0
- package/dist/loaders/element-loader-types.js +26 -0
- package/dist/loaders/element-loader-types.js.map +1 -0
- package/dist/loaders/element-loader.d.ts +92 -0
- package/dist/loaders/element-loader.d.ts.map +1 -0
- package/dist/loaders/element-loader.js +391 -0
- package/dist/loaders/element-loader.js.map +1 -0
- package/dist/loaders/esm-adapter.d.ts +40 -0
- package/dist/loaders/esm-adapter.d.ts.map +1 -0
- package/dist/loaders/esm-adapter.js +274 -0
- package/dist/loaders/esm-adapter.js.map +1 -0
- package/dist/loaders/iife-adapter.d.ts +86 -0
- package/dist/loaders/iife-adapter.d.ts.map +1 -0
- package/dist/loaders/iife-adapter.js +365 -0
- package/dist/loaders/iife-adapter.js.map +1 -0
- package/dist/loaders/index.d.ts +30 -17
- package/dist/loaders/index.d.ts.map +1 -1
- package/dist/loaders/index.js +26 -14
- package/dist/loaders/index.js.map +1 -1
- package/dist/pie/index.d.ts +4 -4
- package/dist/pie/index.d.ts.map +1 -1
- package/dist/pie/index.js +7 -2
- package/dist/pie/index.js.map +1 -1
- package/dist/pie/initialization.d.ts +26 -1
- package/dist/pie/initialization.d.ts.map +1 -1
- package/dist/pie/initialization.js +72 -15
- package/dist/pie/initialization.js.map +1 -1
- package/dist/pie/instrumentation-event-map.d.ts.map +1 -1
- package/dist/pie/instrumentation-event-map.js +27 -16
- package/dist/pie/instrumentation-event-map.js.map +1 -1
- package/dist/pie/stage-tracker.d.ts +51 -0
- package/dist/pie/stage-tracker.d.ts.map +1 -0
- package/dist/pie/stage-tracker.js +106 -0
- package/dist/pie/stage-tracker.js.map +1 -0
- package/dist/pie/stages.d.ts +75 -0
- package/dist/pie/stages.d.ts.map +1 -0
- package/dist/pie/stages.js +58 -0
- package/dist/pie/stages.js.map +1 -0
- package/dist/pie/use-resource-monitor.svelte.d.ts.map +1 -1
- package/dist/pie/use-resource-monitor.svelte.js +88 -75
- package/dist/pie/use-resource-monitor.svelte.js.map +1 -1
- package/dist/ui/use-promise.svelte.ts +109 -0
- package/package.json +6 -1
- package/dist/loaders/EsmElementLoader.d.ts +0 -69
- package/dist/loaders/EsmElementLoader.d.ts.map +0 -1
- package/dist/loaders/EsmElementLoader.js +0 -72
- package/dist/loaders/EsmElementLoader.js.map +0 -1
- package/dist/loaders/IifeElementLoader.d.ts +0 -61
- package/dist/loaders/IifeElementLoader.d.ts.map +0 -1
- package/dist/loaders/IifeElementLoader.js +0 -63
- package/dist/loaders/IifeElementLoader.js.map +0 -1
- package/dist/pie/esm-loader.d.ts +0 -104
- package/dist/pie/esm-loader.d.ts.map +0 -1
- package/dist/pie/esm-loader.js +0 -358
- package/dist/pie/esm-loader.js.map +0 -1
- package/dist/pie/iife-loader.d.ts +0 -116
- package/dist/pie/iife-loader.d.ts.map +0 -1
- package/dist/pie/iife-loader.js +0 -561
- package/dist/pie/iife-loader.js.map +0 -1
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ElementLoader primitive — the one place where "these tags are registered
|
|
3
|
+
* with customElements" is decided.
|
|
4
|
+
*
|
|
5
|
+
* Owns the truthful promise contract end-to-end:
|
|
6
|
+
*
|
|
7
|
+
* ensureRegistered(elements, options) resolves iff every requested tag
|
|
8
|
+
* is in `customElements` at the moment of resolution. On partial
|
|
9
|
+
* success it rejects with an `ElementLoaderError` carrying the set of
|
|
10
|
+
* unregistered tags and a per-tag `RegistrationFailureReason` map.
|
|
11
|
+
*
|
|
12
|
+
* The primitive delegates the actual fetch/register work to a backend
|
|
13
|
+
* adapter (IIFE or ESM) but always verifies the outcome via
|
|
14
|
+
* `customElements.whenDefined`. An adapter cannot silently under-register
|
|
15
|
+
* — the primitive will catch it and surface a timeout reason.
|
|
16
|
+
*
|
|
17
|
+
* See packages/players-shared/tests/element-loader-contract.test.ts for
|
|
18
|
+
* the executable specification of every failure mode this primitive is
|
|
19
|
+
* required to catch.
|
|
20
|
+
*/
|
|
21
|
+
import { DEFAULT_IIFE_BUNDLE_RETRY_CONFIG } from "../loader-config.js";
|
|
22
|
+
import { AdapterFailure, } from "./element-loader-types.js";
|
|
23
|
+
import { createEsmBackend, } from "./esm-adapter.js";
|
|
24
|
+
import { createIifeBackend, } from "./iife-adapter.js";
|
|
25
|
+
export { AdapterFailure } from "./element-loader-types.js";
|
|
26
|
+
/**
|
|
27
|
+
* Aggregate error thrown by `ensureRegistered` when one or more requested
|
|
28
|
+
* tags were not registered by the time verification timed out.
|
|
29
|
+
*/
|
|
30
|
+
export class ElementLoaderError extends Error {
|
|
31
|
+
name = "ElementLoaderError";
|
|
32
|
+
unregisteredTags;
|
|
33
|
+
reasons;
|
|
34
|
+
constructor(message, unregisteredTags, reasons) {
|
|
35
|
+
super(message);
|
|
36
|
+
this.unregisteredTags = unregisteredTags;
|
|
37
|
+
this.reasons = reasons;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Thrown by `assertRegistered` when any requested tag is missing from
|
|
42
|
+
* `customElements`. Carries enough detail for the host to diagnose what
|
|
43
|
+
* pre-registration step was skipped.
|
|
44
|
+
*/
|
|
45
|
+
export class ElementAssertionError extends Error {
|
|
46
|
+
name = "ElementAssertionError";
|
|
47
|
+
expectedTags;
|
|
48
|
+
missingTags;
|
|
49
|
+
currentlyRegisteredTags;
|
|
50
|
+
constructor(expected, missing, currentlyRegistered) {
|
|
51
|
+
super(buildAssertionMessage(expected, missing, currentlyRegistered));
|
|
52
|
+
this.expectedTags = expected;
|
|
53
|
+
this.missingTags = missing;
|
|
54
|
+
this.currentlyRegisteredTags = currentlyRegistered;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function buildAssertionMessage(expected, missing, registered) {
|
|
58
|
+
const expectedStr = expected.join(", ");
|
|
59
|
+
const missingStr = missing.join(", ");
|
|
60
|
+
const registeredStr = registered.length
|
|
61
|
+
? registered.join(", ")
|
|
62
|
+
: "(none enumerable)";
|
|
63
|
+
return (`ElementLoader.assertRegistered: expected [${expectedStr}], ` +
|
|
64
|
+
`missing [${missingStr}]. customElements contains: [${registeredStr}].`);
|
|
65
|
+
}
|
|
66
|
+
const DEFAULT_WHEN_DEFINED_TIMEOUT_MS = 5000;
|
|
67
|
+
const DEFAULT_LOAD_TIMEOUT_MS = DEFAULT_IIFE_BUNDLE_RETRY_CONFIG.timeoutMs;
|
|
68
|
+
// Module-scoped in-flight cache. Key: backend signature + sorted elements.
|
|
69
|
+
// Keeps concurrent identical requests collapsed to one backend call.
|
|
70
|
+
const inFlightRequests = new Map();
|
|
71
|
+
/**
|
|
72
|
+
* Resolve iff every tag in `elements` is registered with `customElements`.
|
|
73
|
+
* Reject with `ElementLoaderError` otherwise.
|
|
74
|
+
*
|
|
75
|
+
* The primitive is the sole authority on registration state:
|
|
76
|
+
* - Empty element map resolves immediately (no backend call).
|
|
77
|
+
* - Already-registered tags resolve immediately (no backend call).
|
|
78
|
+
* - Concurrent identical requests share one backend call.
|
|
79
|
+
* - After the adapter's `load` settles, a post-load verification pass
|
|
80
|
+
* (bounded `customElements.whenDefined`) checks every tag. Any missing
|
|
81
|
+
* tag becomes a rejection.
|
|
82
|
+
*/
|
|
83
|
+
export async function ensureRegistered(elements, options) {
|
|
84
|
+
if (!elements || Object.keys(elements).length === 0)
|
|
85
|
+
return;
|
|
86
|
+
const tags = Object.keys(elements);
|
|
87
|
+
const timeoutMs = options.whenDefinedTimeoutMs ?? DEFAULT_WHEN_DEFINED_TIMEOUT_MS;
|
|
88
|
+
const loadTimeoutMs = options.loadTimeoutMs ?? DEFAULT_LOAD_TIMEOUT_MS;
|
|
89
|
+
// Fast path: everything already registered. Skip backend and dedup
|
|
90
|
+
// bookkeeping entirely.
|
|
91
|
+
if (allAlreadyRegistered(tags))
|
|
92
|
+
return;
|
|
93
|
+
const dedupKey = buildDedupKey(options.backend, elements);
|
|
94
|
+
const existing = inFlightRequests.get(dedupKey);
|
|
95
|
+
if (existing)
|
|
96
|
+
return existing;
|
|
97
|
+
const backend = resolveBackend(options.backend);
|
|
98
|
+
const doc = resolveDoc(options.doc);
|
|
99
|
+
const promise = runEnsureRegistered(elements, tags, backend, { doc, whenDefinedTimeoutMs: timeoutMs }, timeoutMs, loadTimeoutMs);
|
|
100
|
+
inFlightRequests.set(dedupKey, promise);
|
|
101
|
+
try {
|
|
102
|
+
await promise;
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
if (inFlightRequests.get(dedupKey) === promise) {
|
|
106
|
+
inFlightRequests.delete(dedupKey);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async function runEnsureRegistered(elements, tags, backend, context, timeoutMs, loadTimeoutMs) {
|
|
111
|
+
let adapterError;
|
|
112
|
+
try {
|
|
113
|
+
await raceWithLoadTimeout(backend.load(elements, context), tags, loadTimeoutMs);
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
adapterError = err instanceof Error ? err : new Error(String(err));
|
|
117
|
+
}
|
|
118
|
+
const verification = await Promise.all(tags.map(async (tag) => {
|
|
119
|
+
if (isRegistered(tag))
|
|
120
|
+
return { tag, ok: true };
|
|
121
|
+
try {
|
|
122
|
+
await whenDefinedWithTimeout(tag, timeoutMs);
|
|
123
|
+
return { tag, ok: true };
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return { tag, ok: false };
|
|
127
|
+
}
|
|
128
|
+
}));
|
|
129
|
+
const unregistered = new Set();
|
|
130
|
+
const reasons = new Map();
|
|
131
|
+
for (const v of verification) {
|
|
132
|
+
if (v.ok)
|
|
133
|
+
continue;
|
|
134
|
+
unregistered.add(v.tag);
|
|
135
|
+
const adapterReason = extractAdapterReason(adapterError, v.tag);
|
|
136
|
+
reasons.set(v.tag, adapterReason ?? { kind: "timeout", tag: v.tag, timeoutMs });
|
|
137
|
+
}
|
|
138
|
+
if (unregistered.size > 0) {
|
|
139
|
+
throw new ElementLoaderError(`Element registration failed; missing tags: ${[...unregistered].join(", ")}`, unregistered, reasons);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Race the backend's `load()` against a cumulative deadline.
|
|
144
|
+
*
|
|
145
|
+
* On timeout, synthesize an `AdapterFailure` whose `reasons` map carries
|
|
146
|
+
* a `kind: "timeout"` entry per requested tag. The verification pass in
|
|
147
|
+
* `runEnsureRegistered` will then produce a normal `ElementLoaderError`
|
|
148
|
+
* with structured per-tag reasons — same surface shape as any other
|
|
149
|
+
* adapter rejection.
|
|
150
|
+
*/
|
|
151
|
+
async function raceWithLoadTimeout(loadPromise, tags, loadTimeoutMs) {
|
|
152
|
+
let timer;
|
|
153
|
+
try {
|
|
154
|
+
await Promise.race([
|
|
155
|
+
loadPromise,
|
|
156
|
+
new Promise((_, reject) => {
|
|
157
|
+
timer = setTimeout(() => {
|
|
158
|
+
const reasons = new Map();
|
|
159
|
+
for (const tag of tags) {
|
|
160
|
+
reasons.set(tag, {
|
|
161
|
+
kind: "timeout",
|
|
162
|
+
tag,
|
|
163
|
+
timeoutMs: loadTimeoutMs,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
reject(new AdapterFailure(reasons));
|
|
167
|
+
}, loadTimeoutMs);
|
|
168
|
+
}),
|
|
169
|
+
]);
|
|
170
|
+
}
|
|
171
|
+
finally {
|
|
172
|
+
if (timer)
|
|
173
|
+
clearTimeout(timer);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Synchronously assert that every tag is already in `customElements`.
|
|
178
|
+
* Throws `ElementAssertionError` with diagnostic detail otherwise.
|
|
179
|
+
*
|
|
180
|
+
* Used by hosts that opt into the "preloaded" strategy — they pre-register
|
|
181
|
+
* elements out-of-band and want a loud failure if anything is missing.
|
|
182
|
+
*/
|
|
183
|
+
export function assertRegistered(tags) {
|
|
184
|
+
if (!tags || tags.length === 0)
|
|
185
|
+
return;
|
|
186
|
+
const missing = tags.filter((tag) => !isRegistered(tag));
|
|
187
|
+
if (missing.length === 0)
|
|
188
|
+
return;
|
|
189
|
+
throw new ElementAssertionError(tags, missing, snapshotRegisteredTags());
|
|
190
|
+
}
|
|
191
|
+
// ─── Internals ───────────────────────────────────────────────────────────────
|
|
192
|
+
function resolveBackend(backend) {
|
|
193
|
+
if (isDirectBackend(backend))
|
|
194
|
+
return backend;
|
|
195
|
+
if ("kind" in backend) {
|
|
196
|
+
if (backend.kind === "iife")
|
|
197
|
+
return createIifeBackend(backend);
|
|
198
|
+
if (backend.kind === "esm")
|
|
199
|
+
return createEsmBackend(backend);
|
|
200
|
+
}
|
|
201
|
+
throw new Error("ElementLoader: invalid backend option");
|
|
202
|
+
}
|
|
203
|
+
function isDirectBackend(backend) {
|
|
204
|
+
return (typeof backend.load === "function" &&
|
|
205
|
+
!("kind" in backend));
|
|
206
|
+
}
|
|
207
|
+
function resolveDoc(doc) {
|
|
208
|
+
if (doc)
|
|
209
|
+
return doc;
|
|
210
|
+
if (typeof document !== "undefined")
|
|
211
|
+
return document;
|
|
212
|
+
throw new Error("ElementLoader: no Document available; pass options.doc explicitly");
|
|
213
|
+
}
|
|
214
|
+
function buildDedupKey(backend, elements) {
|
|
215
|
+
const backendKey = backendKeyOf(backend);
|
|
216
|
+
const entries = Object.entries(elements).sort(([a], [b]) => a.localeCompare(b));
|
|
217
|
+
return `${backendKey}|${JSON.stringify(entries)}`;
|
|
218
|
+
}
|
|
219
|
+
const backendIds = new WeakMap();
|
|
220
|
+
let nextBackendId = 0;
|
|
221
|
+
const functionIds = new WeakMap();
|
|
222
|
+
let nextFunctionId = 0;
|
|
223
|
+
const opaqueObjectIds = new WeakMap();
|
|
224
|
+
let nextOpaqueObjectId = 0;
|
|
225
|
+
function backendKeyOf(backend) {
|
|
226
|
+
if (isDirectBackend(backend)) {
|
|
227
|
+
let id = backendIds.get(backend);
|
|
228
|
+
if (!id) {
|
|
229
|
+
id = `b${++nextBackendId}`;
|
|
230
|
+
backendIds.set(backend, id);
|
|
231
|
+
}
|
|
232
|
+
return `backend#${id}`;
|
|
233
|
+
}
|
|
234
|
+
if ("kind" in backend) {
|
|
235
|
+
if (backend.kind === "iife") {
|
|
236
|
+
return `iife#${fingerprintValue({
|
|
237
|
+
kind: "iife",
|
|
238
|
+
bundleHost: backend.bundleHost,
|
|
239
|
+
bundleType: backend.bundleType ?? "",
|
|
240
|
+
needsControllers: backend.needsControllers ?? true,
|
|
241
|
+
bundleInfo: backend.bundleInfo ?? null,
|
|
242
|
+
debugEnabled: backend.debugEnabled ?? null,
|
|
243
|
+
bundleRetry: backend.bundleRetry ?? null,
|
|
244
|
+
onBundleRetryStatus: backend.onBundleRetryStatus ?? null,
|
|
245
|
+
trackPageActions: backend.trackPageActions ?? false,
|
|
246
|
+
instrumentationProvider: backend.instrumentationProvider ?? null,
|
|
247
|
+
})}`;
|
|
248
|
+
}
|
|
249
|
+
if (backend.kind === "esm") {
|
|
250
|
+
return `esm#${fingerprintValue({
|
|
251
|
+
kind: "esm",
|
|
252
|
+
cdnBaseUrl: backend.cdnBaseUrl,
|
|
253
|
+
moduleResolution: backend.moduleResolution ?? "url",
|
|
254
|
+
view: backend.view ?? "delivery",
|
|
255
|
+
viewConfig: backend.viewConfig ?? null,
|
|
256
|
+
loadControllers: backend.loadControllers ?? true,
|
|
257
|
+
debugEnabled: backend.debugEnabled ?? null,
|
|
258
|
+
})}`;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return "unknown";
|
|
262
|
+
}
|
|
263
|
+
function fingerprintValue(value) {
|
|
264
|
+
return JSON.stringify(normalizeForFingerprint(value, new Map()));
|
|
265
|
+
}
|
|
266
|
+
function normalizeForFingerprint(value, seen) {
|
|
267
|
+
if (value === null || value === undefined)
|
|
268
|
+
return value;
|
|
269
|
+
const primitiveType = typeof value;
|
|
270
|
+
if (primitiveType === "string" ||
|
|
271
|
+
primitiveType === "number" ||
|
|
272
|
+
primitiveType === "boolean") {
|
|
273
|
+
return value;
|
|
274
|
+
}
|
|
275
|
+
if (primitiveType === "function") {
|
|
276
|
+
return { __functionRef: getFunctionRefId(value) };
|
|
277
|
+
}
|
|
278
|
+
if (primitiveType !== "object") {
|
|
279
|
+
return String(value);
|
|
280
|
+
}
|
|
281
|
+
const objectValue = value;
|
|
282
|
+
const existing = seen.get(objectValue);
|
|
283
|
+
if (existing)
|
|
284
|
+
return { __cycleRef: existing };
|
|
285
|
+
const cycleRefId = `cycle#${seen.size + 1}`;
|
|
286
|
+
seen.set(objectValue, cycleRefId);
|
|
287
|
+
if (Array.isArray(value)) {
|
|
288
|
+
return value.map((entry) => normalizeForFingerprint(entry, seen));
|
|
289
|
+
}
|
|
290
|
+
if (!isPlainObject(value)) {
|
|
291
|
+
return { __objectRef: getOpaqueObjectRefId(objectValue) };
|
|
292
|
+
}
|
|
293
|
+
const normalized = {};
|
|
294
|
+
for (const key of Object.keys(value).sort()) {
|
|
295
|
+
normalized[key] = normalizeForFingerprint(value[key], seen);
|
|
296
|
+
}
|
|
297
|
+
return normalized;
|
|
298
|
+
}
|
|
299
|
+
function isPlainObject(value) {
|
|
300
|
+
if (!value || typeof value !== "object")
|
|
301
|
+
return false;
|
|
302
|
+
const prototype = Object.getPrototypeOf(value);
|
|
303
|
+
return prototype === Object.prototype || prototype === null;
|
|
304
|
+
}
|
|
305
|
+
function getFunctionRefId(fn) {
|
|
306
|
+
let id = functionIds.get(fn);
|
|
307
|
+
if (!id) {
|
|
308
|
+
id = `fn#${++nextFunctionId}`;
|
|
309
|
+
functionIds.set(fn, id);
|
|
310
|
+
}
|
|
311
|
+
return id;
|
|
312
|
+
}
|
|
313
|
+
function getOpaqueObjectRefId(value) {
|
|
314
|
+
let id = opaqueObjectIds.get(value);
|
|
315
|
+
if (!id) {
|
|
316
|
+
id = `obj#${++nextOpaqueObjectId}`;
|
|
317
|
+
opaqueObjectIds.set(value, id);
|
|
318
|
+
}
|
|
319
|
+
return id;
|
|
320
|
+
}
|
|
321
|
+
function allAlreadyRegistered(tags) {
|
|
322
|
+
return tags.every((tag) => isRegistered(tag));
|
|
323
|
+
}
|
|
324
|
+
function isRegistered(tag) {
|
|
325
|
+
if (typeof customElements === "undefined")
|
|
326
|
+
return false;
|
|
327
|
+
return customElements.get(tag) !== undefined;
|
|
328
|
+
}
|
|
329
|
+
async function whenDefinedWithTimeout(tag, timeoutMs) {
|
|
330
|
+
if (typeof customElements === "undefined") {
|
|
331
|
+
throw new Error(`no customElements to await ${tag}`);
|
|
332
|
+
}
|
|
333
|
+
let timer;
|
|
334
|
+
try {
|
|
335
|
+
return await Promise.race([
|
|
336
|
+
customElements.whenDefined(tag).then(() => undefined),
|
|
337
|
+
new Promise((_, reject) => {
|
|
338
|
+
timer = setTimeout(() => reject(new Error(`Timeout waiting for ${tag}`)), timeoutMs);
|
|
339
|
+
}),
|
|
340
|
+
]);
|
|
341
|
+
}
|
|
342
|
+
finally {
|
|
343
|
+
if (timer)
|
|
344
|
+
clearTimeout(timer);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
function snapshotRegisteredTags() {
|
|
348
|
+
if (typeof customElements === "undefined")
|
|
349
|
+
return [];
|
|
350
|
+
// Standard `CustomElementRegistry` does not expose iteration. Tests install
|
|
351
|
+
// a scripted registry with a `__pieSnapshot` extension to make diagnostic
|
|
352
|
+
// messages assertable. Production falls through to an empty list —
|
|
353
|
+
// still strictly better than today's "missing tags: X" error which leaks
|
|
354
|
+
// no registry state at all.
|
|
355
|
+
const reg = customElements;
|
|
356
|
+
if (typeof reg.__pieSnapshot === "function") {
|
|
357
|
+
try {
|
|
358
|
+
return reg.__pieSnapshot();
|
|
359
|
+
}
|
|
360
|
+
catch {
|
|
361
|
+
return [];
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
return [];
|
|
365
|
+
}
|
|
366
|
+
function extractAdapterReason(err, tag) {
|
|
367
|
+
if (!err)
|
|
368
|
+
return undefined;
|
|
369
|
+
if (err instanceof AdapterFailure)
|
|
370
|
+
return err.reasons.get(tag);
|
|
371
|
+
return { kind: "backend-rejected", tag, cause: err.message };
|
|
372
|
+
}
|
|
373
|
+
// ─── Test-only helpers ───────────────────────────────────────────────────────
|
|
374
|
+
/**
|
|
375
|
+
* Internal helpers for test harnesses. Not part of the public runtime API;
|
|
376
|
+
* production code should never reach for these.
|
|
377
|
+
*
|
|
378
|
+
* @internal
|
|
379
|
+
*/
|
|
380
|
+
export const __testing = {
|
|
381
|
+
resetDedupState() {
|
|
382
|
+
inFlightRequests.clear();
|
|
383
|
+
},
|
|
384
|
+
inFlightCount() {
|
|
385
|
+
return inFlightRequests.size;
|
|
386
|
+
},
|
|
387
|
+
dedupKeyFor(elements, backend) {
|
|
388
|
+
return buildDedupKey(backend, elements);
|
|
389
|
+
},
|
|
390
|
+
};
|
|
391
|
+
//# sourceMappingURL=element-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element-loader.js","sourceRoot":"","sources":["../../src/loaders/element-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ESM backend adapter for the ElementLoader primitive.
|
|
3
|
+
*
|
|
4
|
+
* Loads PIE elements via dynamic `import()` from an ESM CDN (esm.sh,
|
|
5
|
+
* jsDelivr, etc.), optionally resolving bare specifiers through an
|
|
6
|
+
* `<script type="importmap">` injected into the host document. On any
|
|
7
|
+
* per-tag failure (module load, non-constructor element class, define
|
|
8
|
+
* failure), throws `AdapterFailure` with a structured `reasons` map.
|
|
9
|
+
*
|
|
10
|
+
* Like the IIFE adapter, this module does not gate its own promise on
|
|
11
|
+
* `customElements.whenDefined`; the primitive performs that verification
|
|
12
|
+
* uniformly. Here the adapter's job is narrowly to fetch, extract, and
|
|
13
|
+
* call `customElements.define`.
|
|
14
|
+
*/
|
|
15
|
+
import { type ElementLoaderBackend } from "./element-loader-types.js";
|
|
16
|
+
/** View configuration: how a PIE package's subpath maps to a tag suffix. */
|
|
17
|
+
export type ViewConfig = {
|
|
18
|
+
subpath: string;
|
|
19
|
+
tagSuffix: string;
|
|
20
|
+
fallback?: string;
|
|
21
|
+
};
|
|
22
|
+
export declare const BUILT_IN_VIEWS: Record<string, ViewConfig>;
|
|
23
|
+
export type EsmBackendConfig = {
|
|
24
|
+
kind: "esm";
|
|
25
|
+
/** Base URL for the ESM CDN (e.g., "https://esm.sh"). */
|
|
26
|
+
cdnBaseUrl: string;
|
|
27
|
+
/** `"url"` loads via fully-qualified URLs; `"import-map"` uses bare specifiers. */
|
|
28
|
+
moduleResolution?: "url" | "import-map";
|
|
29
|
+
/** View to load (`delivery`, `author`, `print`, or a custom name). */
|
|
30
|
+
view?: string;
|
|
31
|
+
/** Custom view configuration (overrides built-ins). */
|
|
32
|
+
viewConfig?: ViewConfig;
|
|
33
|
+
/** Whether to also load controller modules. */
|
|
34
|
+
loadControllers?: boolean;
|
|
35
|
+
/** Debug flag hook. */
|
|
36
|
+
debugEnabled?: () => boolean;
|
|
37
|
+
};
|
|
38
|
+
export type EsmBackend = ElementLoaderBackend & {};
|
|
39
|
+
export declare function createEsmBackend(config: EsmBackendConfig): EsmBackend;
|
|
40
|
+
//# sourceMappingURL=esm-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esm-adapter.d.ts","sourceRoot":"","sources":["../../src/loaders/esm-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,EAGN,KAAK,oBAAoB,EAGzB,MAAM,2BAA2B,CAAC;AAEnC,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAIrD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,KAAK,CAAC;IACZ,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC;IACxC,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB;IACvB,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;CAC7B,CAAC;AAqBF,MAAM,MAAM,UAAU,GAAG,oBAAoB,GAAG,EAG/C,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAsMrE"}
|