@xeonr/renderer-sdk 1.6.0 → 1.8.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.
@@ -1,5 +1,14 @@
1
1
  import { type ReactElement } from 'react';
2
- import { type WorkerContext } from './worker.js';
2
+ import { type WorkerContext, type WorkerManifest } from './worker.js';
3
+ /**
4
+ * The canonical output contract for every renderer that uses
5
+ * defineRendererWorker — both thumbnails are required, image/png.
6
+ * Surfaced as a named export so renderers can drop a one-liner
7
+ * worker.manifest.yaml referring back to it (or skip the YAML entirely
8
+ * and let the SDK self-enforce). The vite plugin reads either form;
9
+ * having the constant here keeps the source of truth in one place.
10
+ */
11
+ export declare const DEFAULT_RENDERER_WORKER_MANIFEST: WorkerManifest;
3
12
  export interface RendererWorkerOptions {
4
13
  /** Rendered container size in CSS pixels. Defaults to 1024×768 —
5
14
  * matches what the old default-workers renderer pool drew at and
@@ -19,6 +28,13 @@ export type RendererWorkerRenderFn = (args: {
19
28
  ctx: WorkerContext;
20
29
  }) => ReactElement;
21
30
  /** Register a renderer worker entry. Mounts the passed React element
22
- * twice (light + dark) and ships each capture as a thumbnail. */
31
+ * twice (light + dark) and ships each capture as a thumbnail.
32
+ *
33
+ * Both outputs are declared in DEFAULT_RENDERER_WORKER_MANIFEST and
34
+ * passed through to defineWorker so the SDK enforces required-output
35
+ * presence at handler exit — a renderer that crashes between the two
36
+ * captures fails the run with MissingOutputError rather than silently
37
+ * shipping only the light thumbnail.
38
+ */
23
39
  export declare function defineRendererWorker(render: RendererWorkerRenderFn, options?: RendererWorkerOptions): void;
24
40
  //# sourceMappingURL=worker-renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-renderer.d.ts","sourceRoot":"","sources":["../src/worker-renderer.tsx"],"names":[],"mappings":"AA0BA,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/D,MAAM,WAAW,qBAAqB;IACrC;;mEAE+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;4EACwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;+BAE2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE;IAC3C,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,GAAG,EAAE,aAAa,CAAC;CACnB,KAAK,YAAY,CAAC;AAEnB;iEACiE;AACjE,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,GAAE,qBAA0B,GACjC,IAAI,CAsBN"}
1
+ {"version":3,"file":"worker-renderer.d.ts","sourceRoot":"","sources":["../src/worker-renderer.tsx"],"names":[],"mappings":"AA0BA,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAgB,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAGpF;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC,EAAE,cAO9C,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACrC;;mEAE+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;4EACwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;+BAE2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE;IAC3C,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,GAAG,EAAE,aAAa,CAAC;CACnB,KAAK,YAAY,CAAC;AAEnB;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,GAAE,qBAA0B,GACjC,IAAI,CAyBN"}
@@ -27,27 +27,53 @@ import { createRoot } from 'react-dom/client';
27
27
  import { StrictMode } from 'react';
28
28
  import { defineWorker } from './worker.js';
29
29
  import { WorkerRendererProvider } from './react/worker.js';
30
+ /**
31
+ * The canonical output contract for every renderer that uses
32
+ * defineRendererWorker — both thumbnails are required, image/png.
33
+ * Surfaced as a named export so renderers can drop a one-liner
34
+ * worker.manifest.yaml referring back to it (or skip the YAML entirely
35
+ * and let the SDK self-enforce). The vite plugin reads either form;
36
+ * having the constant here keeps the source of truth in one place.
37
+ */
38
+ export const DEFAULT_RENDERER_WORKER_MANIFEST = {
39
+ outputs: [
40
+ { slot: 'common:thumbnail_light', kind: 'blob', required: true, mimeHint: 'image/png',
41
+ description: 'Light-theme captured thumbnail.' },
42
+ { slot: 'common:thumbnail_dark', kind: 'blob', required: true, mimeHint: 'image/png',
43
+ description: 'Dark-theme captured thumbnail.' },
44
+ ],
45
+ };
30
46
  /** Register a renderer worker entry. Mounts the passed React element
31
- * twice (light + dark) and ships each capture as a thumbnail. */
47
+ * twice (light + dark) and ships each capture as a thumbnail.
48
+ *
49
+ * Both outputs are declared in DEFAULT_RENDERER_WORKER_MANIFEST and
50
+ * passed through to defineWorker so the SDK enforces required-output
51
+ * presence at handler exit — a renderer that crashes between the two
52
+ * captures fails the run with MissingOutputError rather than silently
53
+ * shipping only the light thumbnail.
54
+ */
32
55
  export function defineRendererWorker(render, options = {}) {
33
- defineWorker(async (ctx) => {
34
- const width = options.width ?? 1024;
35
- const height = options.height ?? 768;
36
- const pixelRatio = options.pixelRatio ?? 2;
37
- const settleMs = options.settleMs ?? 500;
38
- // html-to-image is a 30KB+ dep — lazy-load so portal/dashboard
39
- // bundles don't pull it.
40
- const { toPng } = await import('html-to-image');
41
- for (const theme of ['light', 'dark']) {
42
- ctx.log.info('render.theme.start', { theme });
43
- const png = await renderAndCapture({
44
- render: () => render({ theme, ctx }),
45
- ctx, theme, width, height, pixelRatio, settleMs, toPng,
46
- });
47
- const outputName = theme === 'light' ? 'common:thumbnail_light' : 'common:thumbnail_dark';
48
- await ctx.outputBlob(outputName, png, 'image/png');
49
- ctx.log.info('render.theme.done', { theme, bytes: png.byteLength });
50
- }
56
+ defineWorker({
57
+ manifest: DEFAULT_RENDERER_WORKER_MANIFEST,
58
+ handler: async (ctx) => {
59
+ const width = options.width ?? 1024;
60
+ const height = options.height ?? 768;
61
+ const pixelRatio = options.pixelRatio ?? 2;
62
+ const settleMs = options.settleMs ?? 500;
63
+ // html-to-image is a 30KB+ dep — lazy-load so portal/dashboard
64
+ // bundles don't pull it.
65
+ const { toPng } = await import('html-to-image');
66
+ for (const theme of ['light', 'dark']) {
67
+ ctx.log.info('render.theme.start', { theme });
68
+ const png = await renderAndCapture({
69
+ render: () => render({ theme, ctx }),
70
+ ctx, theme, width, height, pixelRatio, settleMs, toPng,
71
+ });
72
+ const outputName = theme === 'light' ? 'common:thumbnail_light' : 'common:thumbnail_dark';
73
+ await ctx.outputBlob(outputName, png, 'image/png');
74
+ ctx.log.info('render.theme.done', { theme, bytes: png.byteLength });
75
+ }
76
+ },
51
77
  });
52
78
  }
53
79
  async function renderAndCapture(args) {
@@ -1 +1 @@
1
- {"version":3,"file":"worker-renderer.js","sourceRoot":"","sources":["../src/worker-renderer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-renderer.js","sourceRoot":"","sources":["../src/worker-renderer.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,qEAAqE;AACrE,qDAAqD;AACrD,EAAE;AACF,oDAAoD;AACpD,EAAE;AACF,gFAAgF;AAChF,2CAA2C;AAC3C,EAAE;AACF,4EAA4E;AAC5E,EAAE;AACF,6DAA6D;AAC7D,4BAA4B;AAC5B,sEAAsE;AACtE,kEAAkE;AAClE,mBAAmB;AACnB,qEAAqE;AACrE,oEAAoE;AACpE,EAAE;AACF,oEAAoE;AACpE,oEAAoE;AACpE,wEAAwE;AACxE,kEAAkE;AAClE,+DAA+D;AAE/D,OAAO,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAqB,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,YAAY,EAA2C,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAmB;IAC/D,OAAO,EAAE;QACR,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW;YACpF,WAAW,EAAE,iCAAiC,EAAE;QACjD,EAAE,IAAI,EAAE,uBAAuB,EAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW;YACpF,WAAW,EAAE,gCAAgC,EAAE;KAChD;CACD,CAAC;AAsBF;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CACnC,MAA8B,EAC9B,UAAiC,EAAE;IAEnC,YAAY,CAAC;QACZ,QAAQ,EAAE,gCAAgC;QAC1C,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACvB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;YACpC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC;YACrC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;YAEzC,+DAA+D;YAC/D,yBAAyB;YACzB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YAEhD,KAAK,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,MAAM,CAAU,EAAE,CAAC;gBAChD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC9C,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC;oBAClC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;oBACpC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK;iBACtD,CAAC,CAAC;gBACH,MAAM,UAAU,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,uBAAuB,CAAC;gBAC1F,MAAM,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;gBACnD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YACrE,CAAC;QACD,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAaD,KAAK,UAAU,gBAAgB,CAAC,IAAiB;IAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAChD,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;IAC1C,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC;IAC5C,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IACnC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IAC1B,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;IAC3B,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACpC,gEAAgE;IAChE,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IAC9B,qEAAqE;IACrE,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACrC,SAAS,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAErC,IAAI,IAAI,GAAgB,IAAI,CAAC;IAC7B,IAAI,CAAC;QACJ,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7B,qEAAqE;QACrE,mEAAmE;QACnE,kEAAkE;QAClE,kEAAkE;QAClE,+DAA+D;QAC/D,mDAAmD;QACnD,IAAI,CAAC,MAAM,CACV,KAAC,UAAU,cACV,KAAC,sBAAsB,IAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,YACtD,IAAI,CAAC,MAAM,EAAE,GACU,GACb,CACb,CAAC;QAEF,qEAAqE;QACrE,iEAAiE;QACjE,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvD,kEAAkE;QAClE,mEAAmE;QACnE,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YAC3C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,eAAe,EAAE,OAAO;SACxB,CAAC,CAAC;QACH,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;YAAS,CAAC;QACV,IAAI,CAAC;YAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;QAC5D,SAAS,CAAC,MAAM,EAAE,CAAC;IACpB,CAAC;AACF,CAAC;AAED,SAAS,UAAU;IAClB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAiB;IAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,MAAM,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAChB,IAAI,GAAG,CAAC,QAAQ;YAAE,OAAO;QACzB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACpC,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CACF,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,GAAG,CAAC;AACZ,CAAC"}
package/dist/worker.d.ts CHANGED
@@ -86,12 +86,69 @@ interface DefineWorkerOptions {
86
86
  /** Override the bridge — only used by the dev harness to inject the
87
87
  * mock. Production code never sets this. */
88
88
  bridge?: WorkerBridge;
89
+ /** Worker output declarations (forwarded from the call-site
90
+ * defineWorker({manifest, handler}) form). Used to enforce required-
91
+ * output presence and reject undeclared slots. */
92
+ manifest?: WorkerManifest;
89
93
  }
90
94
  type WorkerHandler = (ctx: WorkerContext) => Promise<void> | void;
91
- /** Register the worker handler. Call once at module top level — the SDK
95
+ /**
96
+ * Output declaration for a single slot the worker emits. Together with
97
+ * the handler, the WorkerManifest lets the pipeline runner cross-check
98
+ * the puppeteer step's OutputBinding[] slot names at publish time and
99
+ * at run end — `MissingOutputError` if a required slot wasn't emitted,
100
+ * `SchemaValidationError` if the worker emits an undeclared slot.
101
+ *
102
+ * The vite plugin extracts this declaration from the worker entry's
103
+ * AST at build time and writes it into the renderer archive's
104
+ * `config.json` under `worker.outputs[]` so the controller can read it
105
+ * without executing the bundle.
106
+ */
107
+ export interface WorkerOutputDecl {
108
+ /** Slot name. Stable across rebuilds; matched by puppeteer
109
+ * PipelineStep spec's OutputBinding.slot. */
110
+ slot: string;
111
+ /** What kind of output the worker emits at this slot:
112
+ * - `blob` → ctx.outputBlob(slot, body, mime)
113
+ * - `kv` → ctx.output(slot, value)
114
+ * The runner uses this to gate bridge calls. */
115
+ kind: 'blob' | 'kv';
116
+ /** Required (default) or optional. Required + not-emitted = MissingOutputError. */
117
+ required?: boolean;
118
+ /** For blob slots: a default mime hint the controller can fall
119
+ * back to when the worker doesn't set Content-Type explicitly. */
120
+ mimeHint?: string;
121
+ /** Authoring-time docstring shown in the admin UI's step picker. */
122
+ description?: string;
123
+ }
124
+ export interface WorkerManifest {
125
+ outputs: WorkerOutputDecl[];
126
+ }
127
+ interface DefineWorkerArgs extends DefineWorkerOptions {
128
+ /** The worker's declared output surface. When provided, the SDK
129
+ * enforces at run end that every required slot was emitted and
130
+ * rejects emissions of undeclared slots up-front. Optional — older
131
+ * workers that pre-date the spec model still work without it (gates
132
+ * only enforce what's declared). */
133
+ manifest?: WorkerManifest;
134
+ handler: WorkerHandler;
135
+ }
136
+ /**
137
+ * Register the worker handler. Call once at module top level — the SDK
92
138
  * waits for the bridge to be ready, runs the handler, captures any
93
- * thrown error, and reports outcome to the controller. */
94
- export declare function defineWorker(handler: WorkerHandler, options?: DefineWorkerOptions): void;
139
+ * thrown error, and reports outcome to the controller.
140
+ *
141
+ * Two signatures:
142
+ * defineWorker(async (ctx) => { … }) // handler only
143
+ * defineWorker({ manifest: {...}, handler: async (...) }) // with outputs
144
+ *
145
+ * The object form is preferred for new workers — its `manifest.outputs`
146
+ * is the contract the puppeteer step's `OutputBinding[]` slots bind
147
+ * against. The vite plugin (renderer-plugin-vite) reads the manifest
148
+ * at build time and writes it into `config.json` so the runner can
149
+ * cross-check it without loading the bundle.
150
+ */
151
+ export declare function defineWorker(handlerOrArgs: WorkerHandler | DefineWorkerArgs, options?: DefineWorkerOptions): void;
95
152
  /** Install an in-page mock bridge backed by static fixtures. The Vite
96
153
  * plugin injects a `<script>` that calls this before the user's
97
154
  * `worker.tsx` loads, so `pnpm dev` runs the handler against
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;+DAI+D;AAC/D,UAAU,YAAY;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD;;+CAE2C;IAC3C,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,iBAAiB,CAAC,EAAE,YAAY,CAAC;KACjC;CACD;AAED,MAAM,WAAW,aAAa;IAC7B,2EAA2E;IAC3E,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7C,kEAAkE;IAClE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,0EAA0E;IAC1E,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C;+DAC2D;IAC3D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD;qEACiE;IACjE,UAAU,CACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,GAAG,UAAU,EAC3B,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,qEAAqE;IACrE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC;6CACyC;IACzC,GAAG,EAAE;QACJ,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QACzD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QACzD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAC1D,CAAC;IACF;;2EAEuE;IACvE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB;kEAC8D;IAC9D,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED,UAAU,mBAAmB;IAC5B;gDAC4C;IAC5C,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;sDAEkD;IAClD,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAChC;iDAC6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb;;;sDAGkD;IAClD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;sEACkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED,UAAU,gBAAiB,SAAQ,mBAAmB;IACrD;;;;wCAIoC;IACpC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,aAAa,CAAC;CACvB;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAC3B,aAAa,EAAE,aAAa,GAAG,gBAAgB,EAC/C,OAAO,GAAE,mBAAwB,GAC/B,IAAI,CAkBN;AA8ID;;;sEAGsE;AACtE,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,4CAA4C;IAC5C,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC9E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,GAAE,iBAAsB,GAAG,IAAI,CAgCvE"}
package/dist/worker.js CHANGED
@@ -29,21 +29,39 @@
29
29
  * outputs are written).
30
30
  */
31
31
  let installed = false;
32
- /** Register the worker handler. Call once at module top level — the SDK
32
+ /**
33
+ * Register the worker handler. Call once at module top level — the SDK
33
34
  * waits for the bridge to be ready, runs the handler, captures any
34
- * thrown error, and reports outcome to the controller. */
35
- export function defineWorker(handler, options = {}) {
35
+ * thrown error, and reports outcome to the controller.
36
+ *
37
+ * Two signatures:
38
+ * defineWorker(async (ctx) => { … }) // handler only
39
+ * defineWorker({ manifest: {...}, handler: async (...) }) // with outputs
40
+ *
41
+ * The object form is preferred for new workers — its `manifest.outputs`
42
+ * is the contract the puppeteer step's `OutputBinding[]` slots bind
43
+ * against. The vite plugin (renderer-plugin-vite) reads the manifest
44
+ * at build time and writes it into `config.json` so the runner can
45
+ * cross-check it without loading the bundle.
46
+ */
47
+ export function defineWorker(handlerOrArgs, options = {}) {
36
48
  if (installed) {
37
49
  throw new Error('[uplim:worker] defineWorker called twice — only one handler per worker entry.');
38
50
  }
39
51
  installed = true;
52
+ const args = typeof handlerOrArgs === 'function'
53
+ ? { handler: handlerOrArgs, ...options }
54
+ : handlerOrArgs;
40
55
  if (typeof window === 'undefined') {
41
56
  // Worker entry imported in a non-browser context (SSR test, type
42
57
  // resolution). Skip registration silently — the handler will
43
58
  // re-register when the bundle actually loads in headless Chrome.
44
59
  return;
45
60
  }
46
- void runWorker(handler, options);
61
+ void runWorker(args.handler, {
62
+ bridge: args.bridge,
63
+ manifest: args.manifest,
64
+ });
47
65
  }
48
66
  async function runWorker(handler, options) {
49
67
  const bridge = options.bridge ?? (await waitForBridge());
@@ -51,7 +69,17 @@ async function runWorker(handler, options) {
51
69
  console.error('[uplim:worker] No bridge available. In production this means the puppeteer controller never connected; in dev, install the Vite worker harness.');
52
70
  return;
53
71
  }
54
- const ctx = makeContext(bridge);
72
+ // Manifest-aware bridge wrapper: track every slot the handler emits
73
+ // so we can enforce required-output presence at handler exit. Also
74
+ // rejects emissions of undeclared slots up-front when a manifest is
75
+ // supplied (worker code can't write outputs the manifest didn't
76
+ // declare — keeps the contract honest at run time too, not just at
77
+ // publish time).
78
+ const emitted = new Set();
79
+ const guardedBridge = options.manifest
80
+ ? wrapBridgeWithManifest(bridge, options.manifest, emitted)
81
+ : bridge;
82
+ const ctx = makeContext(guardedBridge);
55
83
  // Surface uncaught errors as fail() so a malformed handler doesn't
56
84
  // leave the controller waiting on a ready that never comes.
57
85
  const onError = (ev) => {
@@ -64,6 +92,15 @@ async function runWorker(handler, options) {
64
92
  window.addEventListener('unhandledrejection', onRejection);
65
93
  try {
66
94
  await handler(ctx);
95
+ if (options.manifest) {
96
+ const missing = options.manifest.outputs
97
+ .filter((o) => o.required !== false && !emitted.has(o.slot))
98
+ .map((o) => o.slot);
99
+ if (missing.length > 0) {
100
+ await bridge.fail(`MissingOutputError: required worker outputs not emitted: ${missing.join(', ')}`);
101
+ return;
102
+ }
103
+ }
67
104
  await bridge.ready();
68
105
  }
69
106
  catch (e) {
@@ -74,6 +111,39 @@ async function runWorker(handler, options) {
74
111
  window.removeEventListener('unhandledrejection', onRejection);
75
112
  }
76
113
  }
114
+ /** wrapBridgeWithManifest intercepts setOutput / mintBlobOutputUrl /
115
+ * commitBlobOutput to (a) reject emissions of slots the manifest didn't
116
+ * declare, (b) record which slots were emitted for the post-handler
117
+ * required-output check. The bridge object itself is unwrapped — calls
118
+ * still hit the underlying controller; this layer only validates. */
119
+ function wrapBridgeWithManifest(bridge, manifest, emitted) {
120
+ const declared = new Map(manifest.outputs.map((o) => [o.slot, o]));
121
+ const ensureDeclared = (slot, kind) => {
122
+ const decl = declared.get(slot);
123
+ if (!decl) {
124
+ throw new Error(`SchemaValidationError: worker output "${slot}" not declared in worker manifest`);
125
+ }
126
+ if (decl.kind !== kind) {
127
+ throw new Error(`SchemaValidationError: worker output "${slot}" declared as ${decl.kind}, emitted as ${kind}`);
128
+ }
129
+ };
130
+ return {
131
+ ...bridge,
132
+ setOutput: async (name, value) => {
133
+ ensureDeclared(name, 'kv');
134
+ emitted.add(name);
135
+ return bridge.setOutput(name, value);
136
+ },
137
+ mintBlobOutputUrl: async (name, contentType) => {
138
+ ensureDeclared(name, 'blob');
139
+ return bridge.mintBlobOutputUrl(name, contentType);
140
+ },
141
+ commitBlobOutput: async (name, contentType, sizeBytes) => {
142
+ emitted.add(name);
143
+ return bridge.commitBlobOutput(name, contentType, sizeBytes);
144
+ },
145
+ };
146
+ }
77
147
  /** Poll for `window.__uplWorkerBridge` (the controller installs it via
78
148
  * page.exposeFunction during page navigation, which races handler load).
79
149
  * Bounded to 30s — beyond that something is wrong with the controller. */
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,90 +1,91 @@
1
1
  {
2
- "name": "@xeonr/renderer-sdk",
3
- "version": "1.6.0",
4
- "type": "module",
5
- "license": "ISC",
6
- "description": "SDK for building custom renderers for upl.im integrations",
7
- "files": [
8
- "dist",
9
- "renderer.css"
10
- ],
11
- "main": "./dist/index.js",
12
- "types": "./dist/index.d.ts",
13
- "exports": {
14
- ".": {
15
- "default": "./dist/index.js",
16
- "types": "./dist/index.d.ts"
17
- },
18
- "./react": {
19
- "default": "./dist/react/index.js",
20
- "types": "./dist/react/index.d.ts"
21
- },
22
- "./react/dom": {
23
- "default": "./dist/react/dom.js",
24
- "types": "./dist/react/dom.d.ts"
25
- },
26
- "./react/worker": {
27
- "default": "./dist/react/worker.js",
28
- "types": "./dist/react/worker.d.ts"
29
- },
30
- "./protocol": {
31
- "default": "./dist/protocol.js",
32
- "types": "./dist/protocol.d.ts"
33
- },
34
- "./worker": {
35
- "default": "./dist/worker.js",
36
- "types": "./dist/worker.d.ts"
37
- },
38
- "./worker-renderer": {
39
- "default": "./dist/worker-renderer.js",
40
- "types": "./dist/worker-renderer.d.ts"
41
- },
42
- "./renderer.css": "./renderer.css",
43
- "./*": {
44
- "default": "./dist/*.js",
45
- "types": "./dist/*.d.ts"
46
- }
47
- },
48
- "peerDependencies": {
49
- "react": ">=18.0.0",
50
- "react-dom": ">=18.0.0",
51
- "@bufbuild/protobuf": ">=2.0.0",
52
- "@xeonr/uploads-protocol": "*",
53
- "@xeonr/uploads-sdk": "*",
54
- "html-to-image": "^1.11.13"
55
- },
56
- "peerDependenciesMeta": {
57
- "react": {
58
- "optional": true
59
- },
60
- "react-dom": {
61
- "optional": true
62
- },
63
- "@bufbuild/protobuf": {
64
- "optional": true
65
- },
66
- "@xeonr/uploads-protocol": {
67
- "optional": true
68
- },
69
- "@xeonr/uploads-sdk": {
70
- "optional": true
71
- },
72
- "html-to-image": {
73
- "optional": true
74
- }
75
- },
76
- "devDependencies": {
77
- "@types/react": "^19.0.0",
78
- "@types/react-dom": "^19.0.0",
79
- "@bufbuild/protobuf": "^2.0.0",
80
- "html-to-image": "^1.11.13",
81
- "react": "^19.0.0",
82
- "react-dom": "^19.0.0",
83
- "typescript": "^5.8.3",
84
- "@xeonr/uploads-protocol": "1.0.6",
85
- "@xeonr/uploads-sdk": "1.0.6"
86
- },
87
- "scripts": {
88
- "build": "tsc"
89
- }
90
- }
2
+ "name": "@xeonr/renderer-sdk",
3
+ "version": "1.8.0",
4
+ "type": "module",
5
+ "license": "ISC",
6
+ "description": "SDK for building custom renderers for upl.im integrations",
7
+ "files": [
8
+ "dist",
9
+ "renderer.css"
10
+ ],
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "prepare": "tsc"
14
+ },
15
+ "main": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "default": "./dist/index.js",
20
+ "types": "./dist/index.d.ts"
21
+ },
22
+ "./react": {
23
+ "default": "./dist/react/index.js",
24
+ "types": "./dist/react/index.d.ts"
25
+ },
26
+ "./react/dom": {
27
+ "default": "./dist/react/dom.js",
28
+ "types": "./dist/react/dom.d.ts"
29
+ },
30
+ "./react/worker": {
31
+ "default": "./dist/react/worker.js",
32
+ "types": "./dist/react/worker.d.ts"
33
+ },
34
+ "./protocol": {
35
+ "default": "./dist/protocol.js",
36
+ "types": "./dist/protocol.d.ts"
37
+ },
38
+ "./worker": {
39
+ "default": "./dist/worker.js",
40
+ "types": "./dist/worker.d.ts"
41
+ },
42
+ "./worker-renderer": {
43
+ "default": "./dist/worker-renderer.js",
44
+ "types": "./dist/worker-renderer.d.ts"
45
+ },
46
+ "./renderer.css": "./renderer.css",
47
+ "./*": {
48
+ "default": "./dist/*.js",
49
+ "types": "./dist/*.d.ts"
50
+ }
51
+ },
52
+ "peerDependencies": {
53
+ "react": ">=18.0.0",
54
+ "react-dom": ">=18.0.0",
55
+ "@bufbuild/protobuf": ">=2.0.0",
56
+ "@xeonr/uploads-protocol": "*",
57
+ "@xeonr/uploads-sdk": "*",
58
+ "html-to-image": "^1.11.13"
59
+ },
60
+ "peerDependenciesMeta": {
61
+ "react": {
62
+ "optional": true
63
+ },
64
+ "react-dom": {
65
+ "optional": true
66
+ },
67
+ "@bufbuild/protobuf": {
68
+ "optional": true
69
+ },
70
+ "@xeonr/uploads-protocol": {
71
+ "optional": true
72
+ },
73
+ "@xeonr/uploads-sdk": {
74
+ "optional": true
75
+ },
76
+ "html-to-image": {
77
+ "optional": true
78
+ }
79
+ },
80
+ "devDependencies": {
81
+ "@types/react": "^19.0.0",
82
+ "@types/react-dom": "^19.0.0",
83
+ "@bufbuild/protobuf": "^2.0.0",
84
+ "@xeonr/uploads-protocol": "workspace:*",
85
+ "@xeonr/uploads-sdk": "workspace:*",
86
+ "html-to-image": "^1.11.13",
87
+ "react": "^19.0.0",
88
+ "react-dom": "^19.0.0",
89
+ "typescript": "^5.8.3"
90
+ }
91
+ }