@invinite-org/chartlang-host-worker 1.0.1 → 1.1.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAExF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACrC,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAClC,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACvF,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI,CAAC;IAChF,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,IAAI,IAAI,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,KAAK,IAAI,eAAe,CAAC;IACzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;CAC1C,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type {\n CandleEvent,\n PlotOverride,\n RunnerEmissions,\n} from \"@invinite-org/chartlang-adapter-kit\";\nimport type { Bar, CompiledScriptObject, ScriptManifest } from \"@invinite-org/chartlang-core\";\n\n/**\n * Resource caps a `ScriptHost` reports to its consumer. Phase-1 `host-worker`\n * enforces `maxCpuMsPerStep` via measurement-only watchdog inside the worker\n * boot; `maxHeapBytes` is advisory (no browser API exists for reliable\n * per-worker heap caps — Phase 5's QuickJS host adds real limits).\n * `maxRingBufferBars` is forwarded for runtime sizing decisions.\n *\n * `maxLoadTimeoutMs` bounds how long `host.load()` is allowed to wait for the\n * worker's `loaded` reply before rejecting with a descriptive timeout error.\n * A silently-dead worker (failed module fetch, exception during boot, OS-level\n * crash) would otherwise leave `load()` pending forever.\n *\n * @since 0.1\n * @stable\n * @example\n * const limits: HostLimits = {\n * maxHeapBytes: 64 * 1024 * 1024,\n * maxCpuMsPerStep: 50,\n * maxRingBufferBars: 5_000,\n * maxLoadTimeoutMs: 30_000,\n * };\n */\nexport type HostLimits = {\n readonly maxHeapBytes: number;\n readonly maxCpuMsPerStep: number;\n readonly maxRingBufferBars: number;\n readonly maxLoadTimeoutMs: number;\n};\n\n/**\n * The minimal compiled-script shape the host streams across the postMessage\n * boundary. Mirrors `@invinite-org/chartlang-compiler`'s `CompiledScript`\n * without naming it — keeps `host-worker` free of a compiler dependency while\n * still pinning the wire contract (Phase 1 walking skeleton).\n *\n * @since 0.1\n * @stable\n * @example\n * const cs: HostCompiledScript = {\n * moduleSource: \"export default { manifest: {...}, compute: () => {} };\",\n * manifest: {\n * apiVersion: 1,\n * kind: \"indicator\",\n * name: \"demo\",\n * inputs: {},\n * capabilities: [\"indicators\"],\n * requestedIntervals: [],\n * userPickableInterval: false,\n * seriesCapacities: {},\n * maxLookback: 0,\n * },\n * };\n */\nexport type HostCompiledScript = {\n readonly moduleSource: string;\n readonly manifest: ScriptManifest;\n};\n\n/**\n * Host-side lifecycle handle the worker host returns. Mirrors PLAN §8.1 — the\n * Phase-1 Web Worker host owns the only declaration; Phase-5's QuickJS host\n * re-uses the same shape. Methods cross the worker boundary via structured\n * clones; `dispose` terminates the worker.\n *\n * @since 0.1\n * @stable\n * @example\n * declare const host: ScriptHost;\n * await host.load({\n * moduleSource: \"export default { manifest: m, compute: () => {} };\",\n * manifest: m,\n * });\n * await host.push({ kind: \"history\", bars: [] });\n * const emissions = await host.drain();\n * host.dispose();\n * void emissions;\n */\nexport type ScriptHost = {\n load(compiled: HostCompiledScript): Promise<void>;\n push(event: CandleEvent): Promise<void>;\n /**\n * Live-swap the per-slot presentation overrides keyed by\n * `PlotEmission.slotId`. Presentation-only — no recompute; the next\n * `drain` reflects the new map. @since 0.8\n */\n setPlotOverrides(overrides: Readonly<Record<string, PlotOverride>>): void;\n drain(): Promise<RunnerEmissions>;\n dispose(): void;\n readonly limits: HostLimits;\n};\n\n/**\n * Duck-typed slice of the browser `Worker` / `MessagePort` surface the host\n * needs. Tests supply a `MessageChannel` port; production supplies a real\n * `Worker`. `terminate` is optional because `MessagePort` doesn't expose it —\n * the host feature-detects before calling.\n *\n * The `addEventListener(\"error\", ...)` overload models the browser `Worker`'s\n * boot/runtime failure channel. `MessagePort`-backed fakes accept the\n * subscription but never fire it; the host unconditionally subscribes and\n * relies on the boundary's natural no-op.\n *\n * @since 0.1\n * @stable\n * @example\n * const ch = new MessageChannel();\n * const worker: WorkerLike = ch.port1;\n * void worker;\n */\nexport type WorkerLike = {\n addEventListener(type: \"message\", listener: (ev: MessageEvent<unknown>) => void): void;\n addEventListener(type: \"error\", listener: (ev: WorkerErrorEvent) => void): void;\n postMessage(msg: unknown): void;\n terminate?(): void;\n};\n\n/**\n * The minimum subset of `ErrorEvent` the host reads when a real `Worker`\n * fails to boot or crashes. Defined locally because `MessagePort` doesn't\n * dispatch `ErrorEvent` and we don't want to drag a DOM-typed alias through\n * the worker boundary.\n *\n * @since 0.1\n * @stable\n * @example\n * const ev: WorkerErrorEvent = { message: \"boot failed\" };\n * void ev;\n */\nexport type WorkerErrorEvent = {\n readonly message?: string;\n readonly filename?: string;\n readonly error?: unknown;\n};\n\n/**\n * The runtime-level surface a worker boot stands up around a compiled script.\n * Re-declared here so the boot module doesn't pull `createScriptRunner`'s\n * typings through `@invinite-org/chartlang-runtime`'s barrel during dynamic\n * import resolution.\n *\n * @since 0.1\n * @stable\n * @example\n * // declare const r: ScriptRunnerHandle;\n * // await r.onBarClose({ time: 0, open: 1, high: 1, low: 1, close: 1, volume: 0, symbol: \"\", interval: \"\" });\n * declare const r: ScriptRunnerHandle;\n * void r;\n */\nexport type ScriptRunnerHandle = {\n onHistory(bars: ReadonlyArray<Bar>): Promise<void>;\n onBarClose(bar: Bar): Promise<void>;\n onBarTick(bar: Bar): Promise<void>;\n push(event: CandleEvent): Promise<void>;\n drain(): RunnerEmissions;\n setPlotOverrides(overrides: Readonly<Record<string, PlotOverride>>): void;\n dispose(): Promise<void>;\n};\n\n/**\n * The default ESM-export shape the worker boot expects from a dynamically\n * imported compiled module. Matches `@invinite-org/chartlang-compiler`'s\n * bundled output:\n *\n * - **Single-script** files export `default` + `__manifest:\n * ScriptManifest` (and may omit `__manifest`).\n * - **Multi-export / composition** files (§22.10) additionally export\n * one named const per drawn sibling (`mod[exportName]`), an array\n * `__manifest: ReadonlyArray<ScriptManifest>`, and (when the default\n * manifest carries `dependencies`) `__dependencies` carrying every\n * private-dep compiled object.\n *\n * The `[exportName: string]: unknown` index signature keeps sibling\n * reads narrow without forcing every host caller to assert types — the\n * host walks `mod[exportName]` with the local\n * `isCompiledScriptObject` guard before forwarding.\n *\n * @since 0.1 — widened in 0.7 for indicator-composition bundles.\n * @stable\n * @example\n * const m: CompiledModuleExport = {\n * default: { manifest: {} as ScriptManifest, compute: () => {} },\n * };\n * void m;\n */\nexport type CompiledModuleExport = {\n readonly default: CompiledScriptObject;\n /**\n * Sidecar manifest. Single object for back-compat single-script\n * bundles; array of `ScriptManifest` (default first) for\n * multi-export composition bundles.\n *\n * @since 0.7\n */\n readonly __manifest?: ScriptManifest | ReadonlyArray<ScriptManifest>;\n /**\n * Inlined private deps a multi-export bundle exposes for host\n * mounting. Each entry's `compiled` is the `defineIndicator(...)`\n * return value bound to a module-local `const <localId>` in the\n * consumer's source.\n *\n * @since 0.7\n */\n readonly __dependencies?: ReadonlyArray<{\n readonly localId: string;\n readonly compiled: CompiledScriptObject;\n /**\n * Merged `.withInputs({...})` overrides the consumer applied\n * to its alias binding. Forwarded to the runtime so the\n * `DepRunner` evaluates the producer's `compute` with the\n * consumer-supplied inputs instead of the producer's\n * manifest defaults. Omitted for direct\n * `defineIndicator(...)` private deps that don't apply\n * overrides.\n *\n * @since 0.7\n */\n readonly inputOverrides?: Readonly<Record<string, unknown>>;\n }>;\n readonly [exportName: string]: unknown;\n};\n"]}