everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
43 lines • 1.85 kB
text/typescript
import { BosEnv } from "../merge.mjs";
//#region src/ui/slot.d.ts
/**
* The host's entry-URL SlotResolver: one pure derivation from a stamped
* config slot to the URLs each surface loads. `EntrySlot` is structural —
* the version-manifest derivation (atomic-deploys 04) stamps exactly these
* fields onto `RuntimeConfig` slots, so they satisfy it as-is. Each surface
* of `entryUrls` resolves (and throws) lazily — a caller reading only `web`
* never trips the ssr surface's resolution, and vice versa.
*/
interface EntrySlot {
/** slot identity, verbatim in resolution errors */
name: string;
url?: string;
/** browser-facing base (ADR 0011) — the base rule is publicUrl ?? url, inside this module */
publicUrl?: string;
/** pin-derived hashed browser entry (absent in development) */
entryUrl?: string;
ssrUrl?: string;
/** pin-derived hashed SSR entry */
ssrEntryUrl?: string;
integrity?: string;
ssrIntegrity?: string;
/** dev-only freshness token (localUiRemoteEntry's container mtime) */
containerVersion?: string;
/** pin-derived hashed browser manifest — absent for local slots, which no
* pin derivation ever stamps (atomic-deploys 08) and the resolver drops
* even if one were stamped */
browserManifestUrl?: string;
localPath?: string;
}
interface EntryUrls {
/** browser script src / registration entry — bustered fixed name in dev, hashed in prod */
readonly web: string;
/** server container entry; undefined when the slot has no SSR coordinates */
readonly ssr?: string;
/** pin-derived hashed mf-manifest; undefined ⟺ local slot (atomic-deploys 08, STRUCTURAL) */
readonly browserManifest?: string;
}
declare function entryUrls(slot: EntrySlot, env: BosEnv): EntryUrls;
//#endregion
export { EntrySlot, EntryUrls, entryUrls };
//# sourceMappingURL=slot.d.mts.map