@kumwe/studio-preview 0.1.0-alpha.4 → 0.1.0-alpha.6

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,8 +1,29 @@
1
- import { isPreviewMessage, STUDIO_CONTRACT_VERSION, } from '@kumwe/studio-protocol';
1
+ import { isPreviewMarker, isPreviewMessage, STUDIO_CONTRACT_VERSION, } from '@kumwe/studio-protocol';
2
+ /** Stable client-side and wire failure surfaced by the preview channel. */
3
+ export class PreviewChannelError extends Error {
4
+ code;
5
+ retryable;
6
+ constructor(code, message, retryable = false) {
7
+ super(message);
8
+ this.name = 'PreviewChannelError';
9
+ this.code = code;
10
+ this.retryable = retryable;
11
+ }
12
+ }
13
+ function snapshotOutboundPayload(payload) {
14
+ try {
15
+ return structuredClone(payload);
16
+ }
17
+ catch {
18
+ throw new PreviewChannelError('studio.preview/invalid-outbound-message', 'Refused an invalid outbound preview message.');
19
+ }
20
+ }
2
21
  export class PreviewClient {
22
+ #activationListeners = new Set();
3
23
  #channelId;
4
24
  #listener;
5
25
  #listeners = new Set();
26
+ #markerInventory = new Set();
6
27
  #pending = new Map();
7
28
  #pendingMeasures = new Map();
8
29
  #pendingReady = new Set();
@@ -11,9 +32,10 @@ export class PreviewClient {
11
32
  #target;
12
33
  #targetOrigin;
13
34
  #timeoutMilliseconds;
35
+ #usedRequestIds = new Set();
14
36
  #disposed = false;
15
37
  #lastInboundSequence = -1;
16
- #latestRenderDigest;
38
+ #latestRenderRequestId;
17
39
  #latestRenderedDigest;
18
40
  #readyPayload;
19
41
  #sequence = 0;
@@ -53,7 +75,11 @@ export class PreviewClient {
53
75
  pending.reject(new Error('Preview client was disposed.'));
54
76
  }
55
77
  this.#pendingReady.clear();
78
+ this.#activationListeners.clear();
56
79
  this.#listeners.clear();
80
+ this.#latestRenderRequestId = undefined;
81
+ this.#latestRenderedDigest = undefined;
82
+ this.#markerInventory.clear();
57
83
  }
58
84
  onMessage(listener) {
59
85
  this.#listeners.add(listener);
@@ -109,54 +135,95 @@ export class PreviewClient {
109
135
  if (options.signal?.aborted === true) {
110
136
  return Promise.reject(new Error('Preview render was aborted.', { cause: options.signal.reason }));
111
137
  }
112
- if (this.#pending.has(payload.draftDigest)) {
113
- return Promise.reject(new Error(`Render ${payload.draftDigest} is already pending.`));
138
+ let request;
139
+ try {
140
+ request = snapshotOutboundPayload(payload);
141
+ }
142
+ catch (error) {
143
+ return Promise.reject(error instanceof Error
144
+ ? error
145
+ : new PreviewChannelError('studio.preview/invalid-outbound-message', 'Refused an invalid outbound preview message.'));
146
+ }
147
+ const message = {
148
+ channelId: this.#channelId,
149
+ contractVersion: STUDIO_CONTRACT_VERSION,
150
+ kind: 'preview-message',
151
+ payload: request,
152
+ sequence: this.#sequence,
153
+ sessionGeneration: this.#sessionGeneration,
154
+ type: 'studio.preview/render',
155
+ };
156
+ try {
157
+ this.#assertOutbound(message);
158
+ }
159
+ catch (error) {
160
+ return Promise.reject(error instanceof Error
161
+ ? error
162
+ : new PreviewChannelError('studio.preview/invalid-outbound-message', 'Refused an invalid outbound preview message.'));
163
+ }
164
+ if (this.#usedRequestIds.has(request.requestId)) {
165
+ return Promise.reject(new PreviewChannelError('studio.preview/request-id-reused', `Preview request ${request.requestId} was already used in this session.`));
114
166
  }
115
- for (const [digest, pending] of this.#pending) {
167
+ for (const [requestId, pending] of this.#pending) {
116
168
  clearTimeout(pending.timeout);
117
169
  pending.cleanup();
118
- pending.reject(new Error(`Preview render ${digest} was superseded by ${payload.draftDigest}.`));
170
+ pending.reject(new Error(`Preview render ${requestId} was superseded by ${request.requestId}.`));
119
171
  }
120
172
  this.#pending.clear();
121
- this.#latestRenderDigest = payload.draftDigest;
173
+ this.#rejectPendingMeasures(new Error(`Preview measurements were superseded by render ${request.requestId}.`));
174
+ this.#usedRequestIds.add(request.requestId);
175
+ this.#latestRenderRequestId = request.requestId;
176
+ this.#latestRenderedDigest = undefined;
177
+ this.#markerInventory.clear();
122
178
  return new Promise((resolve, reject) => {
123
179
  const abort = () => {
124
- const pending = this.#pending.get(payload.draftDigest);
180
+ const pending = this.#pending.get(request.requestId);
125
181
  if (pending !== undefined) {
126
182
  clearTimeout(pending.timeout);
127
- this.#pending.delete(payload.draftDigest);
183
+ this.#pending.delete(request.requestId);
128
184
  pending.cleanup();
129
- if (this.#latestRenderDigest === payload.draftDigest) {
130
- this.#latestRenderDigest = undefined;
185
+ if (this.#latestRenderRequestId === request.requestId) {
186
+ this.#latestRenderRequestId = undefined;
131
187
  }
132
188
  pending.reject(new Error('Preview render was aborted.'));
189
+ this.#revokeRemoteRender(request.draftDigest, 'studio.preview/client-aborted');
133
190
  }
134
191
  };
135
192
  const cleanup = () => {
136
193
  options.signal?.removeEventListener('abort', abort);
137
194
  };
138
195
  const timeout = setTimeout(() => {
139
- const pending = this.#pending.get(payload.draftDigest);
196
+ const pending = this.#pending.get(request.requestId);
140
197
  if (pending !== undefined) {
141
- this.#pending.delete(payload.draftDigest);
198
+ this.#pending.delete(request.requestId);
142
199
  pending.cleanup();
143
- if (this.#latestRenderDigest === payload.draftDigest) {
144
- this.#latestRenderDigest = undefined;
200
+ if (this.#latestRenderRequestId === request.requestId) {
201
+ this.#latestRenderRequestId = undefined;
145
202
  }
146
- pending.reject(new Error(`Preview render ${payload.draftDigest} timed out.`));
203
+ pending.reject(new Error(`Preview render ${request.requestId} timed out.`));
204
+ this.#revokeRemoteRender(request.draftDigest, 'studio.preview/client-timeout');
147
205
  }
148
206
  }, this.#timeoutMilliseconds);
149
- this.#pending.set(payload.draftDigest, { cleanup, reject, resolve, timeout });
150
- options.signal?.addEventListener('abort', abort, { once: true });
151
- this.#post({
152
- channelId: this.#channelId,
153
- contractVersion: STUDIO_CONTRACT_VERSION,
154
- kind: 'preview-message',
155
- payload,
156
- sequence: this.#sequence++,
157
- sessionGeneration: this.#sessionGeneration,
158
- type: 'studio.preview/render',
207
+ this.#pending.set(request.requestId, {
208
+ cleanup,
209
+ payload: request,
210
+ reject,
211
+ resolve,
212
+ timeout,
159
213
  });
214
+ options.signal?.addEventListener('abort', abort, { once: true });
215
+ try {
216
+ this.#post(message);
217
+ }
218
+ catch (error) {
219
+ clearTimeout(timeout);
220
+ cleanup();
221
+ this.#pending.delete(request.requestId);
222
+ if (this.#latestRenderRequestId === request.requestId) {
223
+ this.#latestRenderRequestId = undefined;
224
+ }
225
+ reject(error instanceof Error ? error : new Error('Preview transport failed.'));
226
+ }
160
227
  });
161
228
  }
162
229
  /**
@@ -174,24 +241,55 @@ export class PreviewClient {
174
241
  if (options.signal?.aborted === true) {
175
242
  return Promise.reject(new Error('Preview measure was aborted.', { cause: options.signal.reason }));
176
243
  }
244
+ let request;
245
+ try {
246
+ request = snapshotOutboundPayload(payload);
247
+ }
248
+ catch (error) {
249
+ return Promise.reject(error instanceof Error
250
+ ? error
251
+ : new PreviewChannelError('studio.preview/invalid-outbound-message', 'Refused an invalid outbound preview message.'));
252
+ }
177
253
  if (this.#latestRenderedDigest === undefined) {
178
254
  return Promise.reject(new Error('Preview measure requires a completed render.'));
179
255
  }
180
- if (this.#pendingMeasures.has(payload.requestId)) {
181
- return Promise.reject(new Error(`Measure ${payload.requestId} is already pending.`));
256
+ const message = {
257
+ channelId: this.#channelId,
258
+ contractVersion: STUDIO_CONTRACT_VERSION,
259
+ kind: 'preview-message',
260
+ payload: request,
261
+ sequence: this.#sequence,
262
+ sessionGeneration: this.#sessionGeneration,
263
+ type: 'studio.preview/measure',
264
+ };
265
+ try {
266
+ this.#assertOutbound(message);
267
+ }
268
+ catch (error) {
269
+ return Promise.reject(error instanceof Error
270
+ ? error
271
+ : new PreviewChannelError('studio.preview/invalid-outbound-message', 'Refused an invalid outbound preview message.'));
272
+ }
273
+ if (this.#usedRequestIds.has(request.requestId)) {
274
+ return Promise.reject(new PreviewChannelError('studio.preview/request-id-reused', `Preview request ${request.requestId} was already used in this session.`));
275
+ }
276
+ if (request.markers.some((marker) => !this.#markerInventory.has(marker) ||
277
+ !isPreviewMarker(marker, this.#latestRenderedDigest))) {
278
+ return Promise.reject(new PreviewChannelError('studio.preview/measure-stale-marker', 'Preview measurement markers must belong to the current render inventory.', true));
182
279
  }
183
280
  for (const [requestId, pending] of this.#pendingMeasures) {
184
281
  clearTimeout(pending.timeout);
185
282
  pending.cleanup();
186
- pending.reject(new Error(`Preview measure ${requestId} was superseded by ${payload.requestId}.`));
283
+ pending.reject(new Error(`Preview measure ${requestId} was superseded by ${request.requestId}.`));
187
284
  }
188
285
  this.#pendingMeasures.clear();
286
+ this.#usedRequestIds.add(request.requestId);
189
287
  return new Promise((resolve, reject) => {
190
288
  const abort = () => {
191
- const pending = this.#pendingMeasures.get(payload.requestId);
289
+ const pending = this.#pendingMeasures.get(request.requestId);
192
290
  if (pending !== undefined) {
193
291
  clearTimeout(pending.timeout);
194
- this.#pendingMeasures.delete(payload.requestId);
292
+ this.#pendingMeasures.delete(request.requestId);
195
293
  pending.cleanup();
196
294
  pending.reject(new Error('Preview measure was aborted.'));
197
295
  }
@@ -200,26 +298,100 @@ export class PreviewClient {
200
298
  options.signal?.removeEventListener('abort', abort);
201
299
  };
202
300
  const timeout = setTimeout(() => {
203
- const pending = this.#pendingMeasures.get(payload.requestId);
301
+ const pending = this.#pendingMeasures.get(request.requestId);
204
302
  if (pending !== undefined) {
205
- this.#pendingMeasures.delete(payload.requestId);
303
+ this.#pendingMeasures.delete(request.requestId);
206
304
  pending.cleanup();
207
- pending.reject(new Error(`Preview measure ${payload.requestId} timed out.`));
305
+ pending.reject(new Error(`Preview measure ${request.requestId} timed out.`));
208
306
  }
209
307
  }, this.#timeoutMilliseconds);
210
- this.#pendingMeasures.set(payload.requestId, { cleanup, reject, resolve, timeout });
211
- options.signal?.addEventListener('abort', abort, { once: true });
212
- this.#post({
213
- channelId: this.#channelId,
214
- contractVersion: STUDIO_CONTRACT_VERSION,
215
- kind: 'preview-message',
216
- payload,
217
- sequence: this.#sequence++,
218
- sessionGeneration: this.#sessionGeneration,
219
- type: 'studio.preview/measure',
308
+ this.#pendingMeasures.set(request.requestId, {
309
+ cleanup,
310
+ payload: request,
311
+ reject,
312
+ resolve,
313
+ timeout,
220
314
  });
315
+ options.signal?.addEventListener('abort', abort, { once: true });
316
+ try {
317
+ this.#post(message);
318
+ }
319
+ catch (error) {
320
+ clearTimeout(timeout);
321
+ cleanup();
322
+ this.#pendingMeasures.delete(request.requestId);
323
+ reject(error instanceof Error ? error : new Error('Preview transport failed.'));
324
+ }
221
325
  });
222
326
  }
327
+ /**
328
+ * Drive the preview surface to a semantic viewport role or to bounded
329
+ * explicit dimensions. The two are alternatives, so a payload carrying both
330
+ * is refused before it reaches the channel.
331
+ */
332
+ setViewport(payload) {
333
+ this.#assertActive();
334
+ const hasRole = payload.viewport !== undefined;
335
+ const hasDimensions = payload.width !== undefined || payload.height !== undefined;
336
+ if (hasRole === hasDimensions) {
337
+ throw new RangeError('A viewport message carries either a semantic role or explicit dimensions, never both.');
338
+ }
339
+ const message = {
340
+ channelId: this.#channelId,
341
+ contractVersion: STUDIO_CONTRACT_VERSION,
342
+ kind: 'preview-message',
343
+ payload,
344
+ sequence: this.#sequence,
345
+ sessionGeneration: this.#sessionGeneration,
346
+ type: 'studio.preview/viewport',
347
+ };
348
+ this.#assertOutbound(message);
349
+ this.#rejectPendingMeasures(new PreviewChannelError('studio.preview/measure-viewport-changed', 'Preview measurement was invalidated by a viewport change.', true));
350
+ this.#post(message);
351
+ }
352
+ /**
353
+ * Instruct the renderer to revoke the resources it holds for a superseded
354
+ * draft while the channel stays open. This is not teardown: teardown ends
355
+ * the session, dispose frees a render's resources within it.
356
+ */
357
+ disposeDraft(payload) {
358
+ this.#assertActive();
359
+ const message = {
360
+ channelId: this.#channelId,
361
+ contractVersion: STUDIO_CONTRACT_VERSION,
362
+ kind: 'preview-message',
363
+ payload,
364
+ sequence: this.#sequence,
365
+ sessionGeneration: this.#sessionGeneration,
366
+ type: 'studio.preview/dispose',
367
+ };
368
+ this.#assertOutbound(message);
369
+ for (const [requestId, pending] of this.#pending) {
370
+ if (payload.draftDigest === undefined ||
371
+ pending.payload.draftDigest === payload.draftDigest) {
372
+ clearTimeout(pending.timeout);
373
+ pending.cleanup();
374
+ pending.reject(new PreviewChannelError('studio.preview/render-disposed', `Preview render ${requestId} was disposed before completion.`));
375
+ this.#pending.delete(requestId);
376
+ if (this.#latestRenderRequestId === requestId) {
377
+ this.#latestRenderRequestId = undefined;
378
+ }
379
+ }
380
+ }
381
+ if (payload.draftDigest === undefined || payload.draftDigest === this.#latestRenderedDigest) {
382
+ this.#latestRenderedDigest = undefined;
383
+ this.#markerInventory.clear();
384
+ this.#rejectPendingMeasures(new PreviewChannelError('studio.preview/measure-disposed', 'Preview measurement was disposed with its render.'));
385
+ }
386
+ this.#post(message);
387
+ }
388
+ /** Observe trusted marker interactions the renderer reports. */
389
+ onActivated(listener) {
390
+ this.#activationListeners.add(listener);
391
+ return () => {
392
+ this.#activationListeners.delete(listener);
393
+ };
394
+ }
223
395
  select(payload) {
224
396
  this.#assertActive();
225
397
  this.#post({
@@ -227,7 +399,7 @@ export class PreviewClient {
227
399
  contractVersion: STUDIO_CONTRACT_VERSION,
228
400
  kind: 'preview-message',
229
401
  payload,
230
- sequence: this.#sequence++,
402
+ sequence: this.#sequence,
231
403
  sessionGeneration: this.#sessionGeneration,
232
404
  type: 'studio.preview/select',
233
405
  });
@@ -237,9 +409,44 @@ export class PreviewClient {
237
409
  throw new Error('Preview client was disposed.');
238
410
  }
239
411
  }
412
+ #assertOutbound(message) {
413
+ if (!isPreviewMessage(message)) {
414
+ throw new PreviewChannelError('studio.preview/invalid-outbound-message', 'Refused an invalid outbound preview message.');
415
+ }
416
+ }
240
417
  #post(message) {
418
+ this.#assertOutbound(message);
419
+ this.#sequence += 1;
241
420
  this.#target.postMessage(message, this.#targetOrigin);
242
421
  }
422
+ #rejectPendingMeasures(reason) {
423
+ for (const pending of this.#pendingMeasures.values()) {
424
+ clearTimeout(pending.timeout);
425
+ pending.cleanup();
426
+ pending.reject(reason);
427
+ }
428
+ this.#pendingMeasures.clear();
429
+ }
430
+ #revokeRemoteRender(draftDigest, reason) {
431
+ if (this.#disposed) {
432
+ return;
433
+ }
434
+ try {
435
+ this.#post({
436
+ channelId: this.#channelId,
437
+ contractVersion: STUDIO_CONTRACT_VERSION,
438
+ kind: 'preview-message',
439
+ payload: { draftDigest, reason },
440
+ sequence: this.#sequence,
441
+ sessionGeneration: this.#sessionGeneration,
442
+ type: 'studio.preview/dispose',
443
+ });
444
+ }
445
+ catch {
446
+ // Local cancellation is already complete. A transport exception cannot
447
+ // resurrect the request, and private transport details are not surfaced.
448
+ }
449
+ }
243
450
  #receive(event) {
244
451
  if (event.origin !== this.#targetOrigin ||
245
452
  event.source !== this.#target ||
@@ -250,23 +457,57 @@ export class PreviewClient {
250
457
  return;
251
458
  }
252
459
  this.#lastInboundSequence = event.data.sequence;
460
+ if (event.data.type === 'studio.preview/activated') {
461
+ if (!this.#markerInventory.has(event.data.payload.marker) ||
462
+ !isPreviewMarker(event.data.payload.marker, this.#latestRenderedDigest)) {
463
+ return;
464
+ }
465
+ for (const listener of this.#activationListeners) {
466
+ listener(event.data.payload);
467
+ }
468
+ return;
469
+ }
253
470
  if (event.data.type === 'studio.preview/rendered') {
254
- if (event.data.payload.draftDigest !== this.#latestRenderDigest) {
471
+ if (event.data.payload.requestId !== this.#latestRenderRequestId) {
472
+ return;
473
+ }
474
+ const pending = this.#pending.get(event.data.payload.requestId);
475
+ if (pending !== undefined && event.data.payload.draftDigest !== pending.payload.draftDigest) {
476
+ clearTimeout(pending.timeout);
477
+ pending.cleanup();
478
+ this.#pending.delete(event.data.payload.requestId);
479
+ this.#latestRenderRequestId = undefined;
480
+ pending.reject(new PreviewChannelError('studio.preview/render-correlation-mismatch', 'Preview response digest did not match its render request.'));
255
481
  return;
256
482
  }
257
- const pending = this.#pending.get(event.data.payload.draftDigest);
258
483
  if (pending !== undefined) {
259
484
  clearTimeout(pending.timeout);
260
485
  pending.cleanup();
261
- this.#pending.delete(event.data.payload.draftDigest);
262
- this.#latestRenderDigest = undefined;
486
+ this.#pending.delete(event.data.payload.requestId);
487
+ this.#latestRenderRequestId = undefined;
263
488
  this.#latestRenderedDigest = event.data.payload.draftDigest;
489
+ this.#markerInventory.clear();
490
+ for (const marker of event.data.payload.markers) {
491
+ this.#markerInventory.add(marker);
492
+ }
264
493
  pending.resolve(event.data.payload);
265
494
  }
266
495
  }
267
496
  else if (event.data.type === 'studio.preview/measurements') {
268
497
  const pending = this.#pendingMeasures.get(event.data.payload.requestId);
269
498
  if (pending !== undefined) {
499
+ const responseMarkers = [
500
+ ...Object.keys(event.data.payload.measurements),
501
+ ...event.data.payload.unknown,
502
+ ];
503
+ if (responseMarkers.length !== pending.payload.markers.length ||
504
+ pending.payload.markers.some((marker) => !responseMarkers.includes(marker))) {
505
+ clearTimeout(pending.timeout);
506
+ pending.cleanup();
507
+ this.#pendingMeasures.delete(event.data.payload.requestId);
508
+ pending.reject(new PreviewChannelError('studio.preview/invalid-measurements', 'Preview measurements did not exactly partition the requested marker inventory.'));
509
+ return;
510
+ }
270
511
  clearTimeout(pending.timeout);
271
512
  pending.cleanup();
272
513
  this.#pendingMeasures.delete(event.data.payload.requestId);
@@ -292,16 +533,17 @@ export class PreviewClient {
292
533
  if (pendingRender !== undefined) {
293
534
  clearTimeout(pendingRender.timeout);
294
535
  pendingRender.cleanup();
295
- pendingRender.reject(new Error(message));
536
+ pendingRender.reject(new PreviewChannelError(event.data.payload.code, message, event.data.payload.retryable));
296
537
  this.#pending.delete(correlationId);
297
- if (this.#latestRenderDigest === correlationId) {
298
- this.#latestRenderDigest = undefined;
538
+ if (this.#latestRenderRequestId === correlationId) {
539
+ this.#latestRenderRequestId = undefined;
540
+ this.#markerInventory.clear();
299
541
  }
300
542
  }
301
543
  if (pendingMeasure !== undefined) {
302
544
  clearTimeout(pendingMeasure.timeout);
303
545
  pendingMeasure.cleanup();
304
- pendingMeasure.reject(new Error(message));
546
+ pendingMeasure.reject(new PreviewChannelError(event.data.payload.code, message, event.data.payload.retryable));
305
547
  this.#pendingMeasures.delete(correlationId);
306
548
  }
307
549
  }
@@ -318,7 +560,9 @@ export class PreviewClient {
318
560
  pending.reject(new Error(message));
319
561
  }
320
562
  this.#pendingMeasures.clear();
321
- this.#latestRenderDigest = undefined;
563
+ this.#latestRenderRequestId = undefined;
564
+ this.#latestRenderedDigest = undefined;
565
+ this.#markerInventory.clear();
322
566
  }
323
567
  }
324
568
  else if (event.data.type === 'studio.preview/ready') {
@@ -350,8 +594,9 @@ export class PreviewClient {
350
594
  pending.reject(new Error(reason));
351
595
  }
352
596
  this.#pendingMeasures.clear();
353
- this.#latestRenderDigest = undefined;
597
+ this.#latestRenderRequestId = undefined;
354
598
  this.#latestRenderedDigest = undefined;
599
+ this.#markerInventory.clear();
355
600
  // A reloaded renderer announces itself again; the cached payload may
356
601
  // no longer describe it.
357
602
  this.#readyPayload = undefined;
@@ -372,7 +617,7 @@ export class PreviewClient {
372
617
  contractVersion: STUDIO_CONTRACT_VERSION,
373
618
  kind: 'preview-message',
374
619
  payload: { reason },
375
- sequence: this.#sequence++,
620
+ sequence: this.#sequence,
376
621
  sessionGeneration: this.#sessionGeneration,
377
622
  type: 'studio.preview/teardown',
378
623
  });
@@ -1 +1 @@
1
- {"version":3,"file":"preview-client.js","sourceRoot":"","sources":["../src/preview-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preview-client.js","sourceRoot":"","sources":["../src/preview-client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import { type LocalName, type PreviewMarkerRect, type PreviewRenderedPayload, type PreviewRenderPayload, type PreviewSelectPayload, type PreviewViewportMetrics, type QualifiedName, type StableId } from '@kumwe/studio-protocol';
1
+ import { type LocalName, type PreviewMarkerRect, type PreviewRenderedPayload, type PreviewRenderPayload, type PreviewActivatedPayload, type PreviewDisposePayload, type PreviewSelectPayload, type PreviewViewportPayload, type PreviewViewportMetrics, type QualifiedName, type StableId } from '@kumwe/studio-protocol';
2
2
  import { type PreviewMessageSource, type PreviewMessageTarget } from './preview-client.js';
3
- export type PreviewRenderCallback = (payload: PreviewRenderPayload) => Promise<PreviewRenderedPayload>;
3
+ /** Render work is attempt-scoped; implementations should stop promptly when the signal aborts. */
4
+ export type PreviewRenderCallback = (payload: PreviewRenderPayload, signal: AbortSignal) => Promise<PreviewRenderedPayload>;
4
5
  /**
5
6
  * Raw measurement produced by the embedding renderer. The responder never reads the
6
7
  * DOM itself: the renderer supplies marker rectangles and viewport metrics, keeping
@@ -11,8 +12,11 @@ export interface PreviewMeasurement {
11
12
  rects: Record<StableId, PreviewMarkerRect[]>;
12
13
  viewport: PreviewViewportMetrics;
13
14
  }
14
- export type PreviewMeasureCallback = (markers: StableId[]) => Promise<PreviewMeasurement>;
15
+ /** Measurement work is render-generation-scoped and receives the same cancellation discipline. */
16
+ export type PreviewMeasureCallback = (markers: StableId[], signal: AbortSignal) => Promise<PreviewMeasurement>;
15
17
  export type PreviewSelectListener = (payload: PreviewSelectPayload) => void;
18
+ export type PreviewViewportListener = (payload: PreviewViewportPayload) => void;
19
+ export type PreviewDisposeListener = (payload: PreviewDisposePayload) => void;
16
20
  export interface PreviewHostOptions {
17
21
  channelId: string;
18
22
  /** Renderer-supplied marker measurer; without one, measure requests are answered as unavailable. */
@@ -42,6 +46,16 @@ export declare class PreviewHost {
42
46
  */
43
47
  announce(): void;
44
48
  dispose(): void;
49
+ /**
50
+ * Report a trusted interaction with a marked region. The renderer reports
51
+ * intent, never raw input events, and the marker carries nothing beyond the
52
+ * node identity the render already published.
53
+ */
54
+ announceActivation(payload: PreviewActivatedPayload): void;
55
+ /** Observe viewport instructions the client drives the surface with. */
56
+ onViewport(listener: PreviewViewportListener): () => void;
57
+ /** Observe requests to revoke the resources held for a superseded draft. */
58
+ onDispose(listener: PreviewDisposeListener): () => void;
45
59
  onSelect(listener: PreviewSelectListener): () => void;
46
60
  /**
47
61
  * Announce that the renderer reloaded: any in-flight render or measurement is
@@ -1 +1 @@
1
- {"version":3,"file":"preview-host.d.ts","sourceRoot":"","sources":["../src/preview-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,iBAAiB,EAGtB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,QAAQ,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,qBAAqB,GAAG,CAClC,OAAO,EAAE,oBAAoB,KAC1B,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAErC;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC7C,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAE1F,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,oGAAoG;IACpG,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,SAAS,EAAE,CAAC;CACxB;AAED;;;;;;GAMG;AACH,qBAAa,WAAW;;gBAmBH,OAAO,EAAE,kBAAkB;IAgB9C;;;;OAIG;IACI,QAAQ,IAAI,IAAI;IAiBhB,OAAO,IAAI,IAAI;IAYf,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAO5D;;;OAGG;IACI,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAiB1C,sEAAsE;IAC/D,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;CA2O7C"}
1
+ {"version":3,"file":"preview-host.d.ts","sourceRoot":"","sources":["../src/preview-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACd,KAAK,iBAAiB,EAGtB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,QAAQ,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAE7B,kGAAkG;AAClG,MAAM,MAAM,qBAAqB,GAAG,CAClC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAErC;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC7C,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED,kGAAkG;AAClG,MAAM,MAAM,sBAAsB,GAAG,CACnC,OAAO,EAAE,QAAQ,EAAE,EACnB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEjC,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAE5E,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;AAEhF,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,oGAAoG;IACpG,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,SAAS,EAAE,CAAC;CACxB;AAgBD;;;;;;GAMG;AACH,qBAAa,WAAW;;gBAyBH,OAAO,EAAE,kBAAkB;IAgB9C;;;;OAIG;IACI,QAAQ,IAAI,IAAI;IAiBhB,OAAO,IAAI,IAAI;IAetB;;;;OAIG;IACI,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAmBjE,wEAAwE;IACjE,UAAU,CAAC,QAAQ,EAAE,uBAAuB,GAAG,MAAM,IAAI;IAOhE,4EAA4E;IACrE,SAAS,CAAC,QAAQ,EAAE,sBAAsB,GAAG,MAAM,IAAI;IAOvD,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAO5D;;;OAGG;IACI,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAkB1C,sEAAsE;IAC/D,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;CAiX7C"}