homebridge-plugin-utils 2.1.0 → 2.2.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.
Files changed (38) hide show
  1. package/build/tsconfig.json +15 -0
  2. package/dist/cli/index.d.ts +20 -3
  3. package/dist/cli/index.js +77 -7
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/docChrome.d.ts +4 -1
  6. package/dist/docChrome.js +3 -0
  7. package/dist/docChrome.js.map +1 -1
  8. package/dist/ffmpeg/fmp4-builders.d.ts +77 -0
  9. package/dist/ffmpeg/fmp4-builders.js +163 -0
  10. package/dist/ffmpeg/fmp4-builders.js.map +1 -0
  11. package/dist/ffmpeg/index.d.ts +1 -0
  12. package/dist/ffmpeg/index.js +1 -0
  13. package/dist/ffmpeg/index.js.map +1 -1
  14. package/dist/ffmpeg/options.d.ts +17 -0
  15. package/dist/ffmpeg/options.js +47 -22
  16. package/dist/ffmpeg/options.js.map +1 -1
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.js +2 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/timer-registry.d.ts +100 -0
  21. package/dist/timer-registry.js +184 -0
  22. package/dist/timer-registry.js.map +1 -0
  23. package/dist/ui/webUi-featureOptions/state.mjs +68 -11
  24. package/dist/ui/webUi-featureOptions/utils.mjs +16 -5
  25. package/dist/ui/webUi-featureOptions/views/connectionError.mjs +27 -10
  26. package/dist/ui/webUi-featureOptions/views/deviceInfo.mjs +7 -0
  27. package/dist/ui/webUi-featureOptions/views/header.mjs +22 -5
  28. package/dist/ui/webUi-featureOptions/views/nav.mjs +31 -38
  29. package/dist/ui/webUi-featureOptions/views/options.mjs +11 -5
  30. package/dist/ui/webUi-featureOptions.mjs +66 -43
  31. package/dist/ui/webUi.mjs +5 -0
  32. package/dist/util.d.ts +29 -4
  33. package/dist/util.js +34 -0
  34. package/dist/util.js.map +1 -1
  35. package/dist/webui-loader.d.ts +80 -0
  36. package/dist/webui-loader.js +373 -0
  37. package/dist/webui-loader.js.map +1 -0
  38. package/package.json +4 -4
@@ -4,7 +4,7 @@
4
4
  */
5
5
  "use strict";
6
6
 
7
- import { delay, toastError } from "./webUi-featureOptions/utils.mjs";
7
+ import { delay, errorMessage, toastError } from "./webUi-featureOptions/utils.mjs";
8
8
  import { initialState, reducer } from "./webUi-featureOptions/state.mjs";
9
9
  import { FeatureOptionsStore } from "./webUi-featureOptions/store.mjs";
10
10
  import { buildCatalogIndex } from "./featureOptions.js";
@@ -197,18 +197,20 @@ export class webUiFeatureOptions {
197
197
  *
198
198
  * 1. Synchronous page-shell setup: hide schema form, update menu state, reveal the feature-options page. The user sees the layout immediately; the async I/O
199
199
  * below populates each region against the visible shell.
200
- * 2. Tear down any prior show() cycle via hide() (it flushes any pending edit before tearing down), then re-sync the session against the host config; a sync
201
- * failure toasts the error message and bails.
202
- * 3. Create the page abort controller. Every effect and view registers listeners with this signal so cleanup() tears them all down in one operation.
203
- * 4. Fire the plugin I/O requests in parallel: controllers (if configured) and the feature catalog. The plugin config is already held by the session, so there
200
+ * 2. Tear down any prior show() cycle via hide() (it flushes any pending edit before tearing down).
201
+ * 3. Create the page abort controller, clear stale containers, create the store, and mount every view. The views mount here - before any data loads, against the
202
+ * loading placeholder - so the connection-error view already exists to render a config-sync failure into the visible shell.
203
+ * 4. Re-sync the session against the host config. A read failure routes into the connection-error view (with the config-read copy) and bails, so a failed sync
204
+ * shows the retry affordance rather than stranding a blank frame; the sync also lands before getControllers and the options read below, so both see fresh config.
205
+ * 5. Fire the plugin I/O requests in parallel: controllers (if configured) and the feature catalog. The plugin config is already held by the session, so there
204
206
  * is no config fetch to overlap here - the base options come from the session's primary entry.
205
- * 5. Adopt the design tokens. Synchronous - tokens are static declarations with no I/O dependencies.
206
- * 6. Fire the theme effect, persist effect, keyboard effect in parallel. The theme effect's I/O (Bootstrap probe) runs in the background.
207
+ * 6. Adopt the design tokens (synchronous), then fire the theme, persist, and keyboard effects. The theme effect's I/O (Bootstrap probe) runs in the background.
207
208
  * 7. Once controllers resolves: if controller-based mode with empty controllers, show the no-controllers message and return.
208
- * 8. Pre-fire the devices fetch for the initial controller so it overlaps with the feature catalog.
209
- * 9. Once the feature catalog resolves: build the catalog, dispatch model:loaded, mount all views.
210
- * 10. Once devices resolve: dispatch devices:loaded. If a controller is selected and the result carried a connection-failure error, dispatch connection:error
211
- * with that message and return; otherwise set the initial scope.
209
+ * 8. Record and pre-fire the initial controller's devices fetch (a `devices:requested` mints its sequence) so it overlaps with the feature catalog.
210
+ * 9. Once the feature catalog resolves: build the catalog and dispatch model:loaded - the mounted views transition off their loading placeholder and render.
211
+ * 10. Once devices resolve: dispatch devices:loaded carrying the outcome and its sequence. The reducer applies it only when it still answers the pending request and
212
+ * folds a fetch failure into the connection-error transition; the orchestrator gates its follow-ups on that verdict - a superseded outcome or a connection-error
213
+ * status returns without revealing, otherwise it sets the initial scope.
212
214
  * 11. Reveal regions that views render into.
213
215
  *
214
216
  * @param {import("./pluginConfigSession.mjs").PluginConfigSession} session - The config session supplied by the orchestrator; the page's single source of
@@ -230,31 +232,43 @@ export class webUiFeatureOptions {
230
232
  // the menu or the connection-error retry must drain the previous cycle's debounced edit before this cycle's store replaces it.
231
233
  await this.hide();
232
234
 
235
+ // Fresh page-level abort controller for this show() cycle.
236
+ this.#pageAbort = new AbortController();
237
+
238
+ const signal = this.#pageAbort.signal;
239
+
240
+ // Clear stale DOM from any prior cycle before the views start populating regions.
241
+ clearContainers();
242
+
243
+ // Initialize the store with empty state. The reducer transitions through loading -> ready once model:loaded dispatches.
244
+ this.#store = new FeatureOptionsStore({ initialState: initialState(), reducer });
245
+
246
+ // Mount every view before any data loads. Each view registers its effects against the loading placeholder and yields until model:loaded fires, so mounting
247
+ // here renders nothing yet - but the connection-error view exists from this point on, so a config-sync failure below renders its retry affordance instead of
248
+ // stranding a blank frame. Each mount is a no-op if its required page element is missing, so the orchestrator does not need to validate the page skeleton up front.
249
+ this.#mountViews(signal);
250
+
233
251
  // Re-read the host config into the session before the page renders against it. show() is the single entry chokepoint (launch, first-run, the menu, and the
234
252
  // connection-error retry), so re-syncing here makes "every show is fresh" an unconditional guarantee: an edit made in the Settings tab while this page was hidden
235
253
  // is reflected on return rather than rendering against a frozen snapshot. The sync lands before getControllers reads session.platform and before the options read
236
- // below, so both derive from the re-read config. A read failure surfaces as a toast and bails, so the page never renders against a config the session could not read.
254
+ // below, so both derive from the re-read config. A read failure routes into the already-mounted connection-error view rather than a bare toast: the store and
255
+ // views exist by now, so the page shows the retry affordance instead of stranding a blank frame.
237
256
  try {
238
257
 
239
258
  await this.#session.sync();
240
259
  } catch(err) {
241
260
 
242
- toastError(err);
261
+ this.#store.dispatch({
262
+
263
+ guidance: "Retry once the Homebridge server is reachable again.",
264
+ headline: "Unable to read the plugin configuration.",
265
+ message: errorMessage(err),
266
+ type: "connection:error"
267
+ });
243
268
 
244
269
  return;
245
270
  }
246
271
 
247
- // Fresh page-level abort controller for this show() cycle.
248
- this.#pageAbort = new AbortController();
249
-
250
- const signal = this.#pageAbort.signal;
251
-
252
- // Clear stale DOM from any prior cycle before the views start populating regions.
253
- clearContainers();
254
-
255
- // Initialize the store with empty state. The reducer transitions through loading -> ready once model:loaded dispatches.
256
- this.#store = new FeatureOptionsStore({ initialState: initialState(), reducer });
257
-
258
272
  // Fire every independent I/O in parallel. The independent sources: controllers (optional), the /getOptions catalog, and the Homebridge lighting mode (via the
259
273
  // theme effect's host). The plugin config is not fetched here - the session already holds it - so getControllers receives the injected platform config rather
260
274
  // than reaching for it. None depend on each other; firing them concurrently means total wall-clock time is bounded by the slowest.
@@ -302,6 +316,12 @@ export class webUiFeatureOptions {
302
316
  }
303
317
 
304
318
  const initialController = controllers?.[0] ?? null;
319
+
320
+ // Record this fetch at the store's chokepoint before firing it, then read back the minted sequence - the store's ticket for this fetch. The sequence, not the
321
+ // controller, is the fetch identity, so a controller click racing this initial fetch resolves last-request-wins at the reducer.
322
+ this.#store.dispatch({ controllerId: initialController?.serialNumber ?? null, type: "devices:requested" });
323
+
324
+ const devicesSeq = this.#store.state.devicesRequest.seq;
305
325
  const devicesPromise = this.#devicesFor(initialController);
306
326
 
307
327
  // Wait for the feature catalog. Build the catalog (catalog index + validators) and dispatch model:loaded so the store transitions to "ready" and views can mount
@@ -339,9 +359,6 @@ export class webUiFeatureOptions {
339
359
  type: "model:loaded"
340
360
  });
341
361
 
342
- // Mount every view. Each mount is a no-op if its required page element is missing, so the orchestrator does not need to validate the page skeleton up front.
343
- this.#mountViews(signal);
344
-
345
362
  // Wait for the theme's matchMedia listener registration before any user interaction can trigger a theme change. By this point, themeInitPromise has almost
346
363
  // always already resolved - it ran in parallel with every other fetch above.
347
364
  await themeInitPromise;
@@ -359,25 +376,28 @@ export class webUiFeatureOptions {
359
376
  return;
360
377
  }
361
378
 
362
- this.#store.dispatch({ controllerId: initialController?.serialNumber ?? null, devices, type: "devices:loaded" });
379
+ this.#store.dispatch({ controllerId: initialController?.serialNumber ?? null, devices, error, seq: devicesSeq, type: "devices:loaded" });
380
+
381
+ // Gate every follow-up on the reducer's own verdict: my outcome applied only when the sequence I carried is the one the reducer recorded. A controller click that
382
+ // raced this initial fetch would have superseded it - its outcome owns the store, and this stale continuation must neither reveal the page over it nor overwrite
383
+ // its scope.
384
+ if(this.#store.state.devicesAppliedSeq !== devicesSeq) {
363
385
 
364
- // Connection-error short-circuit: a selected controller whose probe reported a failure. The failure message arrives with the device-list response - it travels
365
- // back on the DeviceListResult rather than through a separate request - so a non-empty error is the failure signal and dispatching connection:error hands the
366
- // header to the connection-error view. A zero-device result with an empty error is a legitimately empty controller and falls through to the scope logic below,
367
- // never the connection-error view. Do not transition the scope to a device-view here (there are no devices); leave it at global so any subsequent retry re-shows
368
- // from a known scope.
369
- if((initialController !== null) && error.length) {
386
+ return;
387
+ }
370
388
 
371
- this.#store.dispatch({ message: error, type: "connection:error" });
389
+ // My outcome applied and it turned the store to connection-error: a selected controller whose probe reported a failure. The failure message travelled back on the
390
+ // DeviceListResult rather than through a separate request, and the reducer folded it into the connection-error transition. The connection-error view reveals
391
+ // #headerInfo itself when it renders the error block (it is the sole owner of the error display, content and reveal together), so the orchestrator only returns
392
+ // here. The sidebar, search panel, and config table stay hidden - hide() set them so at show() start and the success-path revealRegions() never runs on this
393
+ // branch - because the user has no devices to navigate to.
394
+ if(this.#store.state.status.kind === "connection-error") {
372
395
 
373
- // The connection-error view reveals #headerInfo itself when it renders the error block (it is the sole owner of the error display, content and reveal together),
374
- // so the orchestrator only transitions state here and returns. The sidebar, search panel, and config table stay hidden - hide() set them so at show() start and
375
- // the success-path revealRegions() never runs on this branch - because the user has no devices to navigate to.
376
396
  return;
377
397
  }
378
398
 
379
- // Set the initial scope. Controller-based mode lands on the first controller's controller-as-device entry (devices[0]). Device-only mode lands on global so
380
- // the user sees the global options first.
399
+ // Set the initial scope. My outcome applied, so the local `devices` is the applied list. Controller-based mode lands on the first controller's controller-as-device
400
+ // entry (devices[0]). Device-only mode lands on global so the user sees the global options first.
381
401
  if((initialController !== null) && (devices.length > 0)) {
382
402
 
383
403
  this.#store.dispatch({
@@ -579,8 +599,10 @@ export class webUiFeatureOptions {
579
599
 
580
600
  if(configTable) {
581
601
 
582
- // The localStorage namespace key is the Homebridge platform identifier - the primary entry's `platform` field, read from the session.
583
- mountOptionsView({ configTable, platform: this.#session?.platform?.platform, signal, store });
602
+ // The localStorage namespace key is the Homebridge platform identifier - the primary entry's `platform` field. Passed as a thunk, not a frozen string: the
603
+ // views mount before the session re-syncs, so the options view reads the identifier through the thunk inside its model:loaded effect (post-sync) rather
604
+ // than capturing a possibly pre-sync value here.
605
+ mountOptionsView({ configTable, platform: () => this.#session?.platform?.platform, signal, store });
584
606
  }
585
607
 
586
608
  if(controllersContainer && devicesContainer) {
@@ -689,7 +711,8 @@ const sameOptionsSet = (a, b) => {
689
711
  };
690
712
 
691
713
  // Show the "no controllers configured" helper text when the plugin operates in controller-based mode but getControllers returns an empty result. Replaces the
692
- // header content in place; the orchestrator returns from show() without dispatching model:loaded so views never mount.
714
+ // header content in place; the orchestrator returns from show() without dispatching model:loaded, so the already-mounted views stay on their loading placeholder and
715
+ // never render over this message.
693
716
  const showNoControllersMessage = () => {
694
717
 
695
718
  const headerInfo = document.getElementById("headerInfo");
package/dist/ui/webUi.mjs CHANGED
@@ -87,6 +87,11 @@ export class webUi {
87
87
  } finally {
88
88
 
89
89
  homebridge.hideSpinner();
90
+
91
+ // Stand the boot monitor down. Once show() settles the app owns the surface either way - on success the UI rendered, on failure the toast above displayed the
92
+ // diagnostic - so any earlier boot-phase error the monitor may have caught was non-fatal, and it should retract any panel it raised. The optional chain tolerates
93
+ // a stamped region that carries no boot monitor.
94
+ globalThis.webUiBoot?.ready?.();
90
95
  }
91
96
  }
92
97
 
package/dist/util.d.ts CHANGED
@@ -354,28 +354,28 @@ export interface HomebridgePluginLogging {
354
354
  * @param message - The message string, with optional format specifiers.
355
355
  * @param parameters - Optional parameters for message formatting.
356
356
  */
357
- debug: (message: string, ...parameters: unknown[]) => void;
357
+ readonly debug: (message: string, ...parameters: unknown[]) => void;
358
358
  /**
359
359
  * Logs an error-level message.
360
360
  *
361
361
  * @param message - The message string, with optional format specifiers.
362
362
  * @param parameters - Optional parameters for message formatting.
363
363
  */
364
- error: (message: string, ...parameters: unknown[]) => void;
364
+ readonly error: (message: string, ...parameters: unknown[]) => void;
365
365
  /**
366
366
  * Logs an info-level message.
367
367
  *
368
368
  * @param message - The message string, with optional format specifiers.
369
369
  * @param parameters - Optional parameters for message formatting.
370
370
  */
371
- info: (message: string, ...parameters: unknown[]) => void;
371
+ readonly info: (message: string, ...parameters: unknown[]) => void;
372
372
  /**
373
373
  * Logs a warning-level message.
374
374
  *
375
375
  * @param message - The message string, with optional format specifiers.
376
376
  * @param parameters - Optional parameters for message formatting.
377
377
  */
378
- warn: (message: string, ...parameters: unknown[]) => void;
378
+ readonly warn: (message: string, ...parameters: unknown[]) => void;
379
379
  }
380
380
  /**
381
381
  * A shippable no-op {@link HomebridgePluginLogging}: every method accepts the logging signature and discards its arguments. A module-scope singleton - the methods are
@@ -393,6 +393,31 @@ export declare const noOpLog: HomebridgePluginLogging;
393
393
  * @category Utilities
394
394
  */
395
395
  export type Logger = HomebridgePluginLogging | Logging;
396
+ /**
397
+ * Derive a prefixed {@link HomebridgePluginLogging} from a base logger. Each level prepends the supplied prefix and the family's ": " separator to the
398
+ * message and passes the message and its parameters through to the base logger unchanged, so formatting happens exactly once, at the sink, behind
399
+ * whatever gates the sink applies. The prefix is a supplier evaluated on every call: identity that can change at runtime (a renamed accessory, a
400
+ * retitled controller) flows into the very next line without any re-wiring, and a captured string can never freeze it.
401
+ *
402
+ * Printf-style tokens behave as if the caller had written the prefix into its own format string: the composed prefix-plus-message string is what meets
403
+ * the parameters at the sink.
404
+ *
405
+ * @param base - The logger that receives the prefixed calls and owns formatting and gating.
406
+ * @param prefix - Supplier for the prefix, evaluated on every call.
407
+ *
408
+ * @returns A {@link HomebridgePluginLogging} whose four levels route to the corresponding levels of `base`.
409
+ *
410
+ * @example
411
+ *
412
+ * ```ts
413
+ * const log = prefixedLog(platformLog, () => this.name);
414
+ *
415
+ * log.info("Connected to %s.", address);
416
+ * ```
417
+ *
418
+ * @category Utilities
419
+ */
420
+ export declare function prefixedLog(base: Logger, prefix: () => string): HomebridgePluginLogging;
396
421
  export { formatBps, formatBytes, formatMs, formatPercent, formatSeconds } from "./formatters.ts";
397
422
  /**
398
423
  * Render an arbitrary thrown value as a clean log-suffix string. Real `Error` instances surface their `.message`; everything else is coerced through `String(...)`.
package/dist/util.js CHANGED
@@ -292,6 +292,40 @@ export const noOpLog = {
292
292
  info: () => { },
293
293
  warn: () => { }
294
294
  };
295
+ /**
296
+ * Derive a prefixed {@link HomebridgePluginLogging} from a base logger. Each level prepends the supplied prefix and the family's ": " separator to the
297
+ * message and passes the message and its parameters through to the base logger unchanged, so formatting happens exactly once, at the sink, behind
298
+ * whatever gates the sink applies. The prefix is a supplier evaluated on every call: identity that can change at runtime (a renamed accessory, a
299
+ * retitled controller) flows into the very next line without any re-wiring, and a captured string can never freeze it.
300
+ *
301
+ * Printf-style tokens behave as if the caller had written the prefix into its own format string: the composed prefix-plus-message string is what meets
302
+ * the parameters at the sink.
303
+ *
304
+ * @param base - The logger that receives the prefixed calls and owns formatting and gating.
305
+ * @param prefix - Supplier for the prefix, evaluated on every call.
306
+ *
307
+ * @returns A {@link HomebridgePluginLogging} whose four levels route to the corresponding levels of `base`.
308
+ *
309
+ * @example
310
+ *
311
+ * ```ts
312
+ * const log = prefixedLog(platformLog, () => this.name);
313
+ *
314
+ * log.info("Connected to %s.", address);
315
+ * ```
316
+ *
317
+ * @category Utilities
318
+ */
319
+ export function prefixedLog(base, prefix) {
320
+ // Compose the prefixed format string once per call: the live prefix, the family's ": " separator, and the caller's message, in that order.
321
+ const prefixed = (message) => prefix() + ": " + message;
322
+ return {
323
+ debug: (message, ...parameters) => base.debug(prefixed(message), ...parameters),
324
+ error: (message, ...parameters) => base.error(prefixed(message), ...parameters),
325
+ info: (message, ...parameters) => base.info(prefixed(message), ...parameters),
326
+ warn: (message, ...parameters) => base.warn(prefixed(message), ...parameters)
327
+ };
328
+ }
295
329
  // Re-export the magnitude-and-percentage formatters from the browser-safe `formatters.ts` module. `featureOptions.ts` imports them directly from there (so it can
296
330
  // ship into `dist/ui/` without dragging in any of util.ts's Node-only imports); util.ts surfaces them here so server-side consumers see the same public API they
297
331
  // always did. The single SSOT is `formatters.ts`; this file is just a forwarding seam.
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * The opening marker of the auto-generated webUI boot region. Follows the family's uniform marked-region template (see `docChrome.ts`); the text doubles as an
3
+ * in-document warning not to edit the region by hand.
4
+ *
5
+ * @category WebUI Loader
6
+ */
7
+ export declare const WEBUI_LOADER_BEGIN = "<!-- WEBUI LOADER:BEGIN - Auto-generated by homebridge-plugin-utils. Do not edit this region by hand. -->";
8
+ /**
9
+ * The closing marker of the auto-generated webUI boot region. See {@link WEBUI_LOADER_BEGIN}.
10
+ *
11
+ * @category WebUI Loader
12
+ */
13
+ export declare const WEBUI_LOADER_END = "<!-- WEBUI LOADER:END -->";
14
+ /**
15
+ * The validated shape of a plugin's webUI loader config: the entry module the loader dynamically imports, and the list of hand-authored modules (the entry aside) that
16
+ * sit outside the package's hashed versioning and therefore each need a cache-bust.
17
+ *
18
+ * @category WebUI Loader
19
+ */
20
+ export interface WebUiLoaderConfig {
21
+ readonly bust: readonly string[];
22
+ readonly entry: string;
23
+ }
24
+ /**
25
+ * Read and validate the plugin's webUI loader config comment from an `index.html`. The comment is the plugin's sole declaration - its entry module and its cache-bust
26
+ * list - and everything else about the rendered region is a family constant or a fact the CLI supplies, so this is where a mistake in that declaration surfaces with a
27
+ * message naming the file and the defect.
28
+ *
29
+ * Rejects, each with a framed error naming `htmlPath`: an absent config comment, a duplicated one (the region it drives would be ambiguous), an unterminated one,
30
+ * invalid JSON, a mis-shaped object (a missing/non-string `entry`, or a `bust` that is not a string array), and a config comment sitting INSIDE the marked region (the
31
+ * first stamp would erase it, so it must live outside the marker pair).
32
+ *
33
+ * @param html - The full `index.html` text.
34
+ * @param htmlPath - The path the html was read from, named in every diagnostic.
35
+ *
36
+ * @returns The validated {@link WebUiLoaderConfig}.
37
+ *
38
+ * @throws `Error` naming `htmlPath` and the defect for an absent, duplicated, unterminated, invalid-JSON, mis-shaped, or inside-the-region config comment.
39
+ *
40
+ * @category WebUI Loader
41
+ */
42
+ export declare function parseWebUiLoaderConfig(html: string, htmlPath: string): WebUiLoaderConfig;
43
+ /**
44
+ * Render the webUI boot region from the plugin's config plus the destination and package facts the CLI supplies. The region carries, in boot order, a hidden status
45
+ * panel, a classic-script boot monitor, and the importmap/cache-bust module loader. The loader reproduces the proven runtime semantics of the hand-authored block: a
46
+ * single `Date.now()` cache-bust stamp shared across the page load, a `bust()` helper that resolves a path against `import.meta.url` and appends the stamp, a
47
+ * `cache: "no-store"` fetch of the manifest, an importmap, and a dynamic import of the entry, all wrapped in a stage-instrumented `try`/`catch` that routes a boot
48
+ * failure to the monitor with the stage that failed, without adding any await or work to the happy path.
49
+ *
50
+ * The catch classifies by stage. A manifest-stage failure reports directly, with no capability probe: the importmap is not injected yet, so probing resolution there
51
+ * would misroute every ordinary delivery failure into the browser bucket. At the import stage the map is injected, so an engine without `import.meta.resolve` predates
52
+ * the loader's floor, and a probe of the injected prefix that throws proves the map never applied - either is the browser bucket - while a resolving probe leaves the
53
+ * failure in the delivery bucket. The probe proves the map applied, not that the delivered module content is sound: a top-level throw inside a delivered module is
54
+ * indistinguishable from a fetch failure here and knowingly folds into the delivery bucket, where the panel's raw error line disambiguates it for support.
55
+ *
56
+ * Every importmap module entry keeps the BARE module path as its KEY with the busted URL as its VALUE - the entry module ITSELF plus every declared `bust` entry, so
57
+ * the most important module (the entry) is never served stale. The trailing-slash `<packageName>/` prefix entry maps the bare package specifier to the hashed-versioned
58
+ * subdir, and transitive imports inherit it through relative-URL resolution.
59
+ *
60
+ * `libPath` is the destination-relative segment the CLI derives from its `dest` basename (`"./lib/"` for the family convention), so the manifest fetch path and the
61
+ * prefix URL are path-correct for any destination rather than a hardcoded `./lib/` that is only coincidentally right for one plugin.
62
+ *
63
+ * @param args
64
+ * @param args.bust - The hand-authored modules (the entry aside) that each need a cache-bust.
65
+ * @param args.entry - The entry module the loader dynamically imports; it is cache-busted alongside the `bust` list.
66
+ * @param args.libPath - The destination-relative segment (e.g. `"./lib/"`) the manifest fetch and the importmap prefix resolve against.
67
+ * @param args.packageName - The mirrored package's name; the importmap prefix maps `<packageName>/` to the hashed-versioned subdir, and the import-stage probe resolves
68
+ * `<packageName>/webUi.mjs` against it.
69
+ *
70
+ * @returns The marked-region content - the status panel, the boot monitor, and the `<script type="module">` loader - to splice between the marker pair.
71
+ *
72
+ * @category WebUI Loader
73
+ */
74
+ export declare function renderWebUiBootRegion({ bust, entry, libPath, packageName }: {
75
+ bust: readonly string[];
76
+ entry: string;
77
+ libPath: string;
78
+ packageName: string;
79
+ }): string;
80
+ //# sourceMappingURL=webui-loader.d.ts.map