@appstrata/protocol 0.1.1 → 1.0.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.
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Uses the message protocol for handshake and RPC-based capability operations.
5
5
  */
6
- import { LifecyclePhase, type SignagePlayer, type AppContext, type Capability, type LogLevel, type EstimatedEndOptions, type NoContentOptions, type StorageApi, type ProxyApi, type MediaCacheApi, type StaticApi, type InteractionApi } from "@appstrata/core";
6
+ import { LifecyclePhase, type SignagePlayer, type AppContext, type Capability, type LogLevel, type StorageApi, type ProxyApi, type MediaCacheApi, type StaticApi, type InteractionApi } from "@appstrata/core";
7
7
  import type { Transport } from "../transport/index.js";
8
8
  /**
9
9
  * ProxyPlayer - App-side SignagePlayer that communicates with the Host via the message protocol.
@@ -19,9 +19,6 @@ export declare class ProxyPlayer implements SignagePlayer {
19
19
  private readyPromise;
20
20
  private resolveReady;
21
21
  private isReady;
22
- private _terminated;
23
- private _startTime;
24
- private _pendingTotalDuration;
25
22
  private initHandlers;
26
23
  private showHandlers;
27
24
  private startHandlers;
@@ -59,9 +56,7 @@ export declare class ProxyPlayer implements SignagePlayer {
59
56
  onStop(handler: () => void): void;
60
57
  private invokeLateSubscriber;
61
58
  onContextChange(handler: (context: AppContext) => void): void;
62
- notifyComplete(): void;
63
- notifyEstimatedEnd(options: EstimatedEndOptions): void;
64
- notifyNoContent(options?: NoContentOptions): void;
59
+ markComplete(): void;
65
60
  get storage(): StorageApi | undefined;
66
61
  get proxy(): ProxyApi | undefined;
67
62
  get mediaCache(): MediaCacheApi | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/client/proxy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EAEd,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,QAAQ,EAIb,KAAK,aAAa,EAGlB,KAAK,SAAS,EACd,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAWzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAavD;;;;GAIG;AACH,qBAAa,WAAY,YAAW,aAAa;IAC/C,QAAQ,CAAC,UAAU,WAAW;IAC9B,cAAc,EAAE,cAAc,CAAuB;IAErD,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,GAAG,CAAY;IAGvB,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,qBAAqB,CAAuB;IAGpD,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,qBAAqB,CAA4C;IACzE,OAAO,CAAC,mBAAmB,CAAgD;IAE3E;;;;OAIG;gBACS,SAAS,EAAE,SAAS;IAuChC;;OAEG;IACH,OAAO,CAAC,SAAS;IAmBjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgCnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAqCnB,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,uBAAuB;IAczB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAKjC,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAS7D,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAcpD,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAOjC,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAOlC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAOjC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAOjC,OAAO,CAAC,oBAAoB;IAY5B,eAAe,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAQ7D,cAAc,IAAI,IAAI;IAStB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAkCtD,eAAe,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI;IA+BjD,IAAI,OAAO,IAAI,UAAU,GAAG,SAAS,CAwBpC;IAED,IAAI,KAAK,IAAI,QAAQ,GAAG,SAAS,CAqBhC;IAED,IAAI,UAAU,IAAI,aAAa,GAAG,SAAS,CA8B1C;IAED,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAoBlC;IAED,IAAI,WAAW,IAAI,cAAc,GAAG,SAAS,CAW5C;IAMD,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;CAI5D"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/client/proxy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EAEd,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,QAAQ,EAIb,KAAK,aAAa,EAGlB,KAAK,SAAS,EACd,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAavD;;;;GAIG;AACH,qBAAa,WAAY,YAAW,aAAa;IAC/C,QAAQ,CAAC,UAAU,WAAW;IAC9B,cAAc,EAAE,cAAc,CAAuB;IAErD,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,GAAG,CAAY;IAGvB,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,qBAAqB,CAA4C;IACzE,OAAO,CAAC,mBAAmB,CAAgD;IAE3E;;;;OAIG;gBACS,SAAS,EAAE,SAAS;IAuChC;;OAEG;IACH,OAAO,CAAC,SAAS;IAmBjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgCnB;;OAEG;IACH,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,uBAAuB;IAczB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAKjC,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAS7D,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAcpD,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAOjC,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAOlC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAOjC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAOjC,OAAO,CAAC,oBAAoB;IAY5B,eAAe,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAQ7D,YAAY,IAAI,IAAI;IAUpB,IAAI,OAAO,IAAI,UAAU,GAAG,SAAS,CAwBpC;IAED,IAAI,KAAK,IAAI,QAAQ,GAAG,SAAS,CAqBhC;IAED,IAAI,UAAU,IAAI,aAAa,GAAG,SAAS,CA8B1C;IAED,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAoBlC;IAED,IAAI,WAAW,IAAI,cAAc,GAAG,SAAS,CAW5C;IAMD,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;CAI5D"}
@@ -4,14 +4,6 @@
4
4
  * Uses the message protocol for handshake and RPC-based capability operations.
5
5
  */
6
6
  import { LifecyclePhase, createLogger } from "@appstrata/core";
7
- const PHASE_ORDER = {
8
- [LifecyclePhase.None]: 0,
9
- [LifecyclePhase.Init]: 1,
10
- [LifecyclePhase.Show]: 2,
11
- [LifecyclePhase.Start]: 3,
12
- [LifecyclePhase.Hide]: 4,
13
- [LifecyclePhase.Stop]: 5,
14
- };
15
7
  import { RpcClient } from "./rpc.js";
16
8
  const logger = createLogger("ProxyPlayer");
17
9
  import { wireContextToAppContext, isReadyMessage, isEventMessage, generateRequestId, } from "../messages.js";
@@ -32,10 +24,6 @@ export class ProxyPlayer {
32
24
  // Context state
33
25
  this.context = null;
34
26
  this.isReady = false;
35
- // Playback control state
36
- this._terminated = false;
37
- this._startTime = null;
38
- this._pendingTotalDuration = null;
39
27
  // Lifecycle handlers
40
28
  this.initHandlers = new Set();
41
29
  this.showHandlers = new Set();
@@ -129,28 +117,15 @@ export class ProxyPlayer {
129
117
  */
130
118
  handleEvent(msg) {
131
119
  const eventName = msg.name;
132
- const suppressible = this._terminated && this.context?.duration == null;
133
120
  if (eventName === "show") {
134
- if (suppressible)
135
- return;
136
121
  this.lifecyclePhase = LifecyclePhase.Show;
137
122
  this.fireLifecycleHandlers(this.showHandlers);
138
123
  }
139
124
  else if (eventName === "start") {
140
- if (suppressible)
141
- return;
142
125
  this.lifecyclePhase = LifecyclePhase.Start;
143
- this._startTime = Date.now();
144
- if (this._pendingTotalDuration != null) {
145
- const expectedFinishTime = this._startTime + this._pendingTotalDuration * 1000;
146
- this._pendingTotalDuration = null;
147
- this.rpc.notify("notifyEstimatedEnd", { expectedFinishTime });
148
- }
149
126
  this.fireLifecycleHandlers(this.startHandlers);
150
127
  }
151
128
  else if (eventName === "hide") {
152
- if (suppressible && PHASE_ORDER[this.lifecyclePhase] < PHASE_ORDER[LifecyclePhase.Show])
153
- return;
154
129
  this.lifecyclePhase = LifecyclePhase.Hide;
155
130
  this.fireLifecycleHandlers(this.hideHandlers);
156
131
  }
@@ -228,13 +203,13 @@ export class ProxyPlayer {
228
203
  }
229
204
  onShow(handler) {
230
205
  this.showHandlers.add(handler);
231
- if (this.lifecyclePhase === LifecyclePhase.Show && !(this._terminated && this.context?.duration == null)) {
206
+ if (this.lifecyclePhase === LifecyclePhase.Show) {
232
207
  this.invokeLateSubscriber(handler);
233
208
  }
234
209
  }
235
210
  onStart(handler) {
236
211
  this.startHandlers.add(handler);
237
- if (this.lifecyclePhase === LifecyclePhase.Start && !(this._terminated && this.context?.duration == null)) {
212
+ if (this.lifecyclePhase === LifecyclePhase.Start) {
238
213
  this.invokeLateSubscriber(handler);
239
214
  }
240
215
  }
@@ -267,74 +242,10 @@ export class ProxyPlayer {
267
242
  // ═══════════════════════════════════════════════════════════════════════
268
243
  // PLAYBACK CONTROL
269
244
  // ═══════════════════════════════════════════════════════════════════════
270
- notifyComplete() {
271
- if (this._terminated) {
272
- logger.warn("ignoring notifyComplete() call after session ended");
273
- return;
274
- }
275
- this._terminated = true;
276
- this.rpc.notify("notifyComplete");
277
- }
278
- notifyEstimatedEnd(options) {
279
- if (this._terminated) {
280
- logger.warn("ignoring notifyEstimatedEnd() call after session ended");
281
- return;
282
- }
283
- if ('finishTime' in options && 'totalDuration' in options) {
284
- logger.warn("EstimatedEndOptions has both finishTime and totalDuration, using finishTime");
285
- }
286
- if ('finishTime' in options && options.finishTime != null) {
287
- if (options.finishTime <= Date.now()) {
288
- logger.warn("notifyEstimatedEnd: finishTime must not be in the past");
289
- return;
290
- }
291
- this._pendingTotalDuration = null;
292
- this.rpc.notify("notifyEstimatedEnd", {
293
- expectedFinishTime: options.finishTime,
294
- });
295
- }
296
- else if ('totalDuration' in options && options.totalDuration != null) {
297
- if (options.totalDuration <= 0) {
298
- logger.warn("notifyEstimatedEnd: totalDuration must be positive");
299
- return;
300
- }
301
- if (this._startTime != null) {
302
- this.rpc.notify("notifyEstimatedEnd", {
303
- expectedFinishTime: this._startTime + options.totalDuration * 1000,
304
- });
305
- }
306
- else {
307
- this._pendingTotalDuration = options.totalDuration;
308
- }
309
- }
310
- }
311
- notifyNoContent(options) {
312
- if (this._terminated) {
313
- logger.warn("ignoring notifyNoContent() call after session ended");
314
- return;
315
- }
316
- this._terminated = true;
317
- const wirePayload = {};
318
- if (options?.reason) {
319
- wirePayload.reason = options.reason;
320
- }
321
- if (options && 'retryIn' in options && options.retryIn != null) {
322
- if (options.retryIn <= 0) {
323
- logger.warn("notifyNoContent: retryIn must be positive");
324
- }
325
- else {
326
- wirePayload.retryNotBefore = Date.now() + options.retryIn * 1000;
327
- }
328
- }
329
- else if (options && 'retryAt' in options && options.retryAt != null) {
330
- if (options.retryAt <= Date.now()) {
331
- logger.warn("notifyNoContent: retryAt must not be in the past");
332
- }
333
- else {
334
- wirePayload.retryNotBefore = options.retryAt;
335
- }
336
- }
337
- this.rpc.notify("notifyNoContent", wirePayload);
245
+ markComplete() {
246
+ this.rpc.call("markComplete").catch((error) => {
247
+ logger.error("markComplete failed", error);
248
+ });
338
249
  }
339
250
  // ═══════════════════════════════════════════════════════════════════════
340
251
  // CAPABILITY APIS
@@ -1 +1 @@
1
- {"version":3,"file":"message-bridge.d.ts","sourceRoot":"","sources":["../../src/host/message-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAmC,KAAK,UAAU,EAAE,KAAK,aAAa,EAA0B,MAAM,iBAAiB,CAAC;AAG/H,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAkBvD,MAAM,WAAW,mBAAmB;IAElC;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,MAAM,EAAE,aAAa,CAAC;IAEtB;;;OAGG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IAEtC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CAErB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA4E;IAC1F,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,UAAU,CAAC,CAAgC;IACnD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,wBAAwB,CAAC,CAAa;IAC9C,OAAO,CAAC,aAAa,CAAsB;gBAE/B,MAAM,EAAE,mBAAmB;IAqBvC;;OAEG;IACH,KAAK,IAAI,IAAI;IAcb;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;YACW,aAAa;IAsD3B;;OAEG;YACW,mBAAmB;IAoEjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;;;;;;OAQG;YACW,SAAS;IAyBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAoBxB,QAAQ,IAAI,IAAI;IAIhB,SAAS,IAAI,IAAI;IAIjB,QAAQ,IAAI,IAAI;IAIhB,QAAQ,IAAI,IAAI;IAIhB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAK5C;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;CAUhB"}
1
+ {"version":3,"file":"message-bridge.d.ts","sourceRoot":"","sources":["../../src/host/message-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAmC,KAAK,UAAU,EAAE,KAAK,aAAa,EAA0B,MAAM,iBAAiB,CAAC;AAG/H,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAkBvD,MAAM,WAAW,mBAAmB;IAElC;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,MAAM,EAAE,aAAa,CAAC;IAEtB;;;OAGG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IAEtC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CAErB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA4E;IAC1F,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,UAAU,CAAC,CAAgC;IACnD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,wBAAwB,CAAC,CAAa;IAC9C,OAAO,CAAC,aAAa,CAAsB;gBAE/B,MAAM,EAAE,mBAAmB;IAqBvC;;OAEG;IACH,KAAK,IAAI,IAAI;IAcb;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;YACW,aAAa;IAsD3B;;OAEG;YACW,mBAAmB;IAkEjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;;;;;;OAQG;YACW,SAAS;IAyBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAoBxB,QAAQ,IAAI,IAAI;IAIhB,SAAS,IAAI,IAAI;IAIjB,QAAQ,IAAI,IAAI;IAIhB,QAAQ,IAAI,IAAI;IAIhB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAK5C;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;CAUhB"}
@@ -182,9 +182,7 @@ export class MessageBridge {
182
182
  const player = this.config.player;
183
183
  const handlers = {
184
184
  // Core operations
185
- "notifyComplete": () => player.notifyComplete(),
186
- "notifyEstimatedEnd": () => player.notifyEstimatedEnd(payload),
187
- "notifyNoContent": () => player.notifyNoContent(payload),
185
+ "markComplete": () => player.markComplete(),
188
186
  // Storage operations
189
187
  "storage.get": async () => {
190
188
  this.requireCapability(player.storage, "Storage");
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAM5D;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,QAAQ,EAAE,oBAAoB,CAAC;IAE/B,uCAAuC;IACvC,OAAO,EAAE,KAAK,CAAC;IAEf,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IAEb,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAElB,kCAAkC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,IAAI,EAAE,OAAO,CAAC;IAEd,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAE7B,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,SAAS,EAAE,QAAQ,EAAE,CAAC;IAGtB,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IAGpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IAGvB,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;IAGF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,IAAI,EAAE,OAAO,CAAC;IAEd,2BAA2B;IAC3B,OAAO,EAAE,cAAc,CAAC;IAExB,wGAAwG;IACxG,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,WAAW,CAAC;IAElB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,IAAI,EAAE,SAAS,CAAC;IAEhB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IAEX,6CAA6C;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,UAAU,CAAC;IAEjB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAElB,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IAEX,sCAAsC;IACtC,EAAE,EAAE,OAAO,CAAC;IAEZ,kCAAkC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,yCAAyC;IACzC,KAAK,CAAC,EAAE;QACN,iBAAiB;QACjB,IAAI,EAAE,MAAM,CAAC;QAEb,mCAAmC;QACnC,OAAO,CAAC,EAAE,MAAM,CAAC;QAEjB,+BAA+B;QAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAMD;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,IAAI,EAAE,OAAO,CAAC;IAEd,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAOD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,eAAe,CAaxE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,GAAG,IAAI,YAAY,CAExE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,GAAG,IAAI,YAAY,CAExE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,GAAG,IAAI,eAAe,CAE9E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,GAAG,IAAI,cAAc,CAE5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,GAAG,IAAI,eAAe,CAE9E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,GAAG,IAAI,YAAY,CAExE;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAU1C;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,cAAc,GAAG,UAAU,CAiB/E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,cAAc,CA6BpE"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
package/dist/messages.js CHANGED
@@ -87,19 +87,8 @@ export function generateRequestId() {
87
87
  */
88
88
  export function wireContextToAppContext(wireContext) {
89
89
  const capabilities = wireContext.capabilities || [];
90
- let duration;
91
- if (wireContext.duration === -1) {
92
- duration = undefined;
93
- }
94
- else if (wireContext.duration === -2) {
95
- duration = Infinity;
96
- }
97
- else {
98
- duration = wireContext.duration;
99
- }
100
90
  return {
101
91
  ...wireContext,
102
- duration,
103
92
  hasCapability: (capability) => capabilities.includes(capability)
104
93
  };
105
94
  }
@@ -120,22 +109,10 @@ export function appContextToWire(context) {
120
109
  capabilities.push(cap);
121
110
  }
122
111
  }
123
- // Convert duration: null/undefined -> -1, Infinity -> -2
124
- let wireDuration;
125
- if (context.duration == null) {
126
- wireDuration = -1;
127
- }
128
- else if (context.duration === Infinity) {
129
- wireDuration = -2;
130
- }
131
- else {
132
- wireDuration = context.duration;
133
- }
134
112
  // Copy all properties except hasCapability, then add capabilities array
135
113
  const { hasCapability, ...rest } = context;
136
114
  return {
137
115
  ...rest,
138
- duration: wireDuration,
139
116
  capabilities,
140
117
  };
141
118
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appstrata/protocol",
3
- "version": "0.1.1",
3
+ "version": "1.0.0",
4
4
  "description": "AppStrata protocol implementation - messages, transport, client and host",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -41,7 +41,7 @@
41
41
  "access": "restricted"
42
42
  },
43
43
  "dependencies": {
44
- "@appstrata/core": "0.1.1"
44
+ "@appstrata/core": "1.0.0"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@jest/globals": "^29.7.0",