@jr200-labs/xstate-nats 0.9.24 → 0.10.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.
Files changed (41) hide show
  1. package/README.md +15 -7
  2. package/dist/actions/connection.d.ts.map +1 -1
  3. package/dist/actions/connection.js +6 -0
  4. package/dist/actions/connection.js.map +1 -1
  5. package/dist/actions/kv.d.ts +2 -3
  6. package/dist/actions/kv.d.ts.map +1 -1
  7. package/dist/actions/kv.js +53 -75
  8. package/dist/actions/kv.js.map +1 -1
  9. package/dist/actions/subject.d.ts +1 -3
  10. package/dist/actions/subject.d.ts.map +1 -1
  11. package/dist/actions/subject.js +36 -56
  12. package/dist/actions/subject.js.map +1 -1
  13. package/dist/actions/subscriptions.d.ts +13 -0
  14. package/dist/actions/subscriptions.d.ts.map +1 -0
  15. package/dist/actions/subscriptions.js +53 -0
  16. package/dist/actions/subscriptions.js.map +1 -0
  17. package/dist/machines/kv.d.ts +2 -6
  18. package/dist/machines/kv.d.ts.map +1 -1
  19. package/dist/machines/kv.js +23 -48
  20. package/dist/machines/kv.js.map +1 -1
  21. package/dist/machines/root.d.ts +4 -12
  22. package/dist/machines/root.d.ts.map +1 -1
  23. package/dist/machines/subject.d.ts.map +1 -1
  24. package/dist/machines/subject.js +27 -38
  25. package/dist/machines/subject.js.map +1 -1
  26. package/dist/machines/subscriptions.d.ts +36 -0
  27. package/dist/machines/subscriptions.d.ts.map +1 -0
  28. package/dist/machines/subscriptions.js +32 -0
  29. package/dist/machines/subscriptions.js.map +1 -0
  30. package/package.json +21 -14
  31. package/src/actions/connection.test.ts +18 -0
  32. package/src/actions/connection.ts +9 -0
  33. package/src/actions/kv.ts +64 -89
  34. package/src/actions/subject.ts +48 -69
  35. package/src/actions/subscriptions.test.ts +77 -0
  36. package/src/actions/subscriptions.ts +73 -0
  37. package/src/machines/kv.test.ts +58 -0
  38. package/src/machines/kv.ts +34 -48
  39. package/src/machines/subject.test.ts +30 -3
  40. package/src/machines/subject.ts +34 -38
  41. package/src/machines/subscriptions.ts +52 -0
package/README.md CHANGED
@@ -332,17 +332,17 @@ error messages and credential contents are deliberately excluded from logs and t
332
332
  ### Enabling tracing
333
333
 
334
334
  `@opentelemetry/api` is a peer dependency — the consumer controls the installed
335
- version and registers the SDK. If no provider is registered all telemetry calls
336
- become no-ops. Minimal setup:
335
+ version (1.10+) and registers the SDK. If no provider is registered all telemetry calls
336
+ become no-ops. Minimal setup with OpenTelemetry 3 (Node.js 22.15+):
337
337
 
338
338
  ```ts
339
339
  import { trace, propagation, context } from '@opentelemetry/api'
340
340
  import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'
341
341
  import { W3CTraceContextPropagator } from '@opentelemetry/core'
342
- import { BasicTracerProvider, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'
342
+ import { TracerProvider, SimpleSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/sdk-trace'
343
343
 
344
- const provider = new BasicTracerProvider({
345
- spanProcessors: [/* your exporter */],
344
+ const provider = new TracerProvider({
345
+ spanProcessors: [new SimpleSpanProcessor({ exporter: new ConsoleSpanExporter() })],
346
346
  })
347
347
  trace.setGlobalTracerProvider(provider)
348
348
  propagation.setGlobalPropagator(new W3CTraceContextPropagator())
@@ -361,13 +361,21 @@ appear as children of the originating publisher/requester span.
361
361
 
362
362
  ## Examples
363
363
 
364
- Check out the [React example](./examples/react-test/) for a complete working implementation.
364
+ Read the [documentation](https://jr200-labs.github.io/xstate-nats/) and try the
365
+ [interactive browser demo](https://jr200-labs.github.io/xstate-nats/demo.html).
366
+ The default sandbox runs in your browser; live mode uses your own NATS WebSocket broker.
367
+ The canonical demo source lives in [docs/demo](./docs/demo/).
368
+
369
+ ```bash
370
+ pnpm demo:dev # browser playground at localhost:3001
371
+ quarto preview docs # documentation and embedded demo
372
+ ```
365
373
 
366
374
  ## Development
367
375
 
368
376
  ### Prerequisites
369
377
 
370
- - Node.js 22+
378
+ - Node.js 22.15+ (OpenTelemetry 3 development/test tooling)
371
379
  - pnpm
372
380
 
373
381
  ### Setup
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/actions/connection.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAEjB,GAAG,EACH,cAAc,EACd,MAAM,EAIP,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAkB,MAAM,yBAAyB,CAAA;AAkCzE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,8BAA8B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,2BAA2B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,8BAA8B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5D,eAAO,MAAM,aAAa;UAKd,iBAAiB;WAChB,UAAU;sBACC,eAAe;eACtB,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI;gCA6FrD,CAAA;AAED,eAAO,MAAM,cAAc;gBACgB,cAAc,GAAG,IAAI;gCAM/D,CAAA;AAED,eAAO,MAAM,eAAe,QAAS,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,YAiBhE,CAAA"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/actions/connection.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAEjB,GAAG,EACH,cAAc,EACd,MAAM,EAIP,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAkB,MAAM,yBAAyB,CAAA;AAkCzE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,8BAA8B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,2BAA2B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,8BAA8B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5D,eAAO,MAAM,aAAa;UAKd,iBAAiB;WAChB,UAAU;sBACC,eAAe;eACtB,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI;gCA6FrD,CAAA;AAED,eAAO,MAAM,cAAc;gBACgB,cAAc,GAAG,IAAI;gCAM/D,CAAA;AAED,eAAO,MAAM,eAAe,QAAS,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,YA0BhE,CAAA"}
@@ -113,6 +113,12 @@ export const parseNatsResult = (msg) => {
113
113
  if (msg instanceof Error) {
114
114
  return msg;
115
115
  }
116
+ // A binary response must bypass both JSON and lossy UTF-8 fallback decoding.
117
+ if ('data' in msg &&
118
+ msg.headers?.get('Content-Type')?.split(';', 1)[0].trim().toLowerCase() ===
119
+ 'application/octet-stream') {
120
+ return msg.data;
121
+ }
116
122
  let data;
117
123
  try {
118
124
  data = msg.json();
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/actions/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/actions/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAEL,kBAAkB,EAIlB,kBAAkB,EAClB,6BAA6B,EAC7B,SAAS,GACV,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAmB,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAEzE,MAAM,cAAc,GAAG,CAAC,IAAiB,EAAE,SAAwC,EAAE,EAAE;IACrF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAK,CAAC,WAAY,CAAC,CAAA;QAChD,OAAO;YACL,aAAa,EAAE;gBACb,kBAAkB,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBAC7D,6BAA6B,CAC3B,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,IAAK,EACvC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,IAAK,CACxC;aACF;SACF,CAAA;IACH,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACpC,OAAO;YACL,aAAa,EAAE,6BAA6B,CAC1C,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,IAAK,EACvC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,IAAK,CACxC;SACF,CAAA;IACH,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO;YACL,aAAa,EAAE,kBAAkB,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,KAAM,CAAC;SAC7E,CAAA;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;AAC9D,CAAC,CAAA;AASD,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CACtC,KAAK,EAAE,EACL,KAAK,GAQN,EAA2B,EAAE;IAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe;QACvC,CAAC,CAAC,MAAM,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC;QAC7C,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,IAAI,GAAG,WAAW,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAA;IAC5C,MAAM,UAAU,GAAsB;QACpC,GAAG,KAAK,CAAC,IAAI;QACb,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;YAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAA;YACpE,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YAC7C,CAAC;YACD,OAAO,OAAO,EAAE,IAAI,CAAA;QACtB,CAAC,CAAC;KACH,CAAA;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAErC;IAAA,CAAC,KAAK,IAAI,EAAE;QACX,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAA;YACpD,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;YAEvB,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,YAAY;oBACf,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,MAAM,EAAE,CAAC,CAAA;oBAClE,MAAK;gBACP,KAAK,WAAW;oBACd,8DAA8D;oBAC9D,0DAA0D;oBAC1D,QAAQ,CACN,uBAAuB,EACvB,mBAAmB,EACnB,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAC1B,GAAG,EAAE;wBACH,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,CAAA;oBACjE,CAAC,CACF,CAAA;oBACD,MAAK;gBACP,KAAK,OAAO;oBACV,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,CAAA;oBAC3D,MAAK;gBACP,KAAK,OAAO;oBACV,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,CAAA;oBAC3D,MAAK;gBACP,KAAK,KAAK;oBACR,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;oBAC5B,MAAK;gBACP,KAAK,MAAM;oBACT,0DAA0D;oBAC1D,MAAK;gBACP,KAAK,gBAAgB;oBACnB,QAAQ,CACN,uBAAuB,EACvB,mBAAmB,EACnB,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAC1B,GAAG,EAAE;wBACH,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,CAAA;oBACjE,CAAC,CACF,CAAA;oBACD,MAAK;gBACP,KAAK,cAAc;oBACjB,QAAQ,CACN,uBAAuB,EACvB,mBAAmB,EACnB,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAC1B,GAAG,EAAE;wBACH,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,MAAM,EAAE,CAAC,CAAA;oBACpE,CAAC,CACF,CAAA;oBACD,MAAK;gBACP,KAAK,cAAc;oBACjB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;oBACtC,MAAK;gBACP,KAAK,iBAAiB;oBACpB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;oBACzC,MAAK;gBACP,KAAK,QAAQ;oBACX,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAA;oBAC/C,MAAK;YACT,CAAC;QACH,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;QACzC,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;IAEJ,OAAO,EAAE,CAAA;AACX,CAAC,CACF,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CACvC,KAAK,EAAE,EAAE,KAAK,EAAoD,EAAE,EAAE;IACpE,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC9B,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;IAChC,CAAC;AACH,CAAC,CACF,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAiC,EAAE,EAAE;IACnE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,6EAA6E;IAC7E,IACE,MAAM,IAAI,GAAG;QACb,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;YACrE,0BAA0B,EAC5B,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAA;IACjB,CAAC;IAED,IAAI,IAAI,CAAA;IACR,IAAI,CAAC;QACH,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IACnB,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACnB,4CAA4C;QAC5C,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA;IACrB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { NatsConnection, QueuedIterator } from '@nats-io/nats-core';
2
2
  import { Kvm, KvWatchEntry, KvWatchOptions } from '@nats-io/kv';
3
3
  import { Pair } from '../utils';
4
+ import { SubscriptionSyncResult } from './subscriptions';
4
5
  export declare class KvSubscriptionKey extends Pair<string, string> {
5
6
  }
6
7
  export type KvSubscriptionConfig = {
@@ -11,9 +12,7 @@ export type KvSubscriptionConfig = {
11
12
  replayOnReconnect?: boolean;
12
13
  onDownloadBytes?: (bytes: number) => void;
13
14
  };
14
- export declare const kvConsolidateState: import("xstate").PromiseActorLogic<{
15
- subscriptions: Map<string, QueuedIterator<KvWatchEntry>>;
16
- }, {
15
+ export declare const kvConsolidateState: import("xstate").PromiseActorLogic<SubscriptionSyncResult<QueuedIterator<KvWatchEntry>>, {
17
16
  kvm: Kvm | null;
18
17
  connection: NatsConnection | null;
19
18
  currentState: Map<string, QueuedIterator<KvWatchEntry>>;
@@ -1 +1 @@
1
- {"version":3,"file":"kv.d.ts","sourceRoot":"","sources":["../../src/actions/kv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAK/B,qBAAa,iBAAkB,SAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;CAAG;AAE9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7B,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,kBAAkB;mBAWZ,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;;SANjD,GAAG,GAAG,IAAI;gBACH,cAAc,GAAG,IAAI;kBACnB,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;iBAC1C,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC;gCAqGnD,CAAA"}
1
+ {"version":3,"file":"kv.d.ts","sourceRoot":"","sources":["../../src/actions/kv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAI/B,OAAO,EAA+B,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAErF,qBAAa,iBAAkB,SAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;CAAG;AAE9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7B,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,kBAAkB;SAKpB,GAAG,GAAG,IAAI;gBACH,cAAc,GAAG,IAAI;kBACnB,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;iBAC1C,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC;gCA2EnD,CAAA"}
@@ -2,88 +2,66 @@ import { Pair } from '../utils';
2
2
  import { fromPromise } from 'xstate';
3
3
  import { recordError, withSpan } from '../telemetry';
4
4
  import { byteLength } from '../traffic';
5
+ import { reconcileSubscriptionsAsync } from './subscriptions';
5
6
  export class KvSubscriptionKey extends Pair {
6
7
  }
7
8
  export const kvConsolidateState = fromPromise(async ({ input, }) => {
8
9
  if (!input.connection || !input.kvm) {
9
10
  throw new Error('NATS connection or KVM is not available');
10
11
  }
11
- const { currentState, targetState } = input;
12
- const syncedState = new Map(currentState);
13
- // Unsubscribe from items that are in currentState but not in targetState
14
- for (const [kvKey, subscription] of currentState) {
15
- if (!targetState.has(kvKey)) {
16
- try {
17
- syncedState.delete(kvKey);
18
- subscription.stop();
19
- }
20
- catch (error) {
21
- console.error(`Error unsubscribing from subject "${kvKey}"`, error);
22
- }
23
- }
24
- }
25
- // Subscribe to new subjects that are in targetState but not in currentState
26
- for (const [kvKey, config] of targetState) {
27
- if (!currentState.has(kvKey)) {
28
- // the problem is kv key is triggered on successive calls to consolidateState
29
- // the match is not working?
30
- try {
31
- const kv = await input.kvm.open(config.bucket);
32
- const watchOptions = config;
33
- // Short span around the synchronous-ish watch() setup — the watcher
34
- // iterator itself is long-lived, so each received entry gets its
35
- // own span below rather than one indefinite parent.
36
- const watcher = (await withSpan('xstate.nats.kv.watch', 'xstate.nats.kv.error', { bucket: config.bucket, key: config.key }, () => kv.watch(watchOptions)));
37
- syncedState.set(kvKey, watcher);
38
- (async () => {
39
- try {
40
- for await (const e of watcher) {
41
- if (e.operation !== 'DEL') {
42
- await withSpan('xstate.nats.kv.entry', 'xstate.nats.kv.error', {
43
- bucket: config.bucket,
44
- key: config.key,
45
- operation: e.operation,
46
- }, (span) => {
47
- let parsedValue;
48
- let rawValue;
49
- try {
50
- rawValue = e.string();
51
- parsedValue = JSON.parse(rawValue);
52
- }
53
- catch {
54
- rawValue = e.string();
55
- parsedValue = rawValue;
56
- }
57
- try {
58
- // KvWatchEntry does not expose the raw wire payload on this path; the
59
- // UTF-8 byte length of string() is the measurable application payload.
60
- config.onDownloadBytes?.(byteLength(rawValue));
61
- config.callback({
62
- bucket: config.bucket,
63
- key: config.key,
64
- value: parsedValue,
65
- });
66
- }
67
- catch (callbackError) {
68
- recordError(span, 'xstate.nats.kv.error', callbackError);
69
- console.error(`KV_SUBSCRIBE (connected): Callback error for ${kvKey}:`, callbackError);
70
- }
71
- });
72
- }
12
+ const { currentState, targetState, kvm } = input;
13
+ return reconcileSubscriptionsAsync(currentState, targetState, {
14
+ dispose: (subscription) => subscription.stop(),
15
+ create: async (kvKey, config) => {
16
+ const kv = await kvm.open(config.bucket);
17
+ const watchOptions = config;
18
+ // Short span around the synchronous-ish watch() setup — the watcher
19
+ // iterator itself is long-lived, so each received entry gets its
20
+ // own span below rather than one indefinite parent.
21
+ const watcher = (await withSpan('xstate.nats.kv.watch', 'xstate.nats.kv.error', { bucket: config.bucket, key: config.key }, () => kv.watch(watchOptions)));
22
+ (async () => {
23
+ try {
24
+ for await (const e of watcher) {
25
+ if (e.operation !== 'DEL') {
26
+ await withSpan('xstate.nats.kv.entry', 'xstate.nats.kv.error', {
27
+ bucket: config.bucket,
28
+ key: config.key,
29
+ operation: e.operation,
30
+ }, (span) => {
31
+ let parsedValue;
32
+ let rawValue;
33
+ try {
34
+ rawValue = e.string();
35
+ parsedValue = JSON.parse(rawValue);
36
+ }
37
+ catch {
38
+ rawValue = e.string();
39
+ parsedValue = rawValue;
40
+ }
41
+ try {
42
+ // KvWatchEntry does not expose the raw wire payload on this path; the
43
+ // UTF-8 byte length of string() is the measurable application payload.
44
+ config.onDownloadBytes?.(byteLength(rawValue));
45
+ config.callback({
46
+ bucket: config.bucket,
47
+ key: config.key,
48
+ value: parsedValue,
49
+ });
50
+ }
51
+ catch (callbackError) {
52
+ recordError(span, 'xstate.nats.kv.error', callbackError);
53
+ console.error(`KV_SUBSCRIBE (connected): Callback error for ${kvKey}:`, callbackError);
54
+ }
55
+ });
73
56
  }
74
57
  }
75
- catch (error) {
76
- console.error(`KV_SUBSCRIBE (connected): Watcher loop error for ${kvKey}:`, error);
77
- }
78
- })();
79
- }
80
- catch (error) {
81
- console.error(`Error subscribing to subject "${kvKey}"`, error);
82
- }
83
- }
84
- }
85
- return {
86
- subscriptions: syncedState,
87
- };
58
+ }
59
+ catch (error) {
60
+ console.error(`KV_SUBSCRIBE (connected): Watcher loop error for ${kvKey}:`, error);
61
+ }
62
+ })();
63
+ return watcher;
64
+ },
65
+ });
88
66
  });
89
67
  //# sourceMappingURL=kv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kv.js","sourceRoot":"","sources":["../../src/actions/kv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kv.js","sourceRoot":"","sources":["../../src/actions/kv.ts"],"names":[],"mappings":"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"}
@@ -20,9 +20,7 @@ export declare const subjectConsolidateState: ({ input, }: {
20
20
  currentSubscriptions: Map<string, Subscription>;
21
21
  targetSubscriptions: Map<string, SubjectSubscriptionConfig>;
22
22
  };
23
- }) => {
24
- subscriptions: Map<string, Subscription>;
25
- };
23
+ }) => import("./subscriptions").SubscriptionSyncResult<Subscription>;
26
24
  export declare const subjectRequest: ({ input, }: {
27
25
  input: {
28
26
  connection: NatsConnection | null;
@@ -1 +1 @@
1
- {"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/actions/subject.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,OAAO,EACP,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,EAEpB,MAAM,oBAAoB,CAAA;AAU3B,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7B,IAAI,CAAC,EAAE,mBAAmB,CAAA;IAC1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA;AAatE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;CAClD,QAIA;AAED,eAAO,MAAM,uBAAuB,eAEjC;IACD,KAAK,EAAE;QACL,UAAU,EAAE,cAAc,GAAG,IAAI,CAAA;QACjC,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC/C,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAA;KAC5D,CAAA;CACF;IA2EG,aAAa;CAEhB,CAAA;AAED,eAAO,MAAM,cAAc,eAExB;IACD,KAAK,EAAE;QACL,UAAU,EAAE,cAAc,GAAG,IAAI,CAAA;QACjC,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,GAAG,CAAA;QACZ,IAAI,CAAC,EAAE,cAAc,CAAA;QACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;QAC7B,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;QACjD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;QACzC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;KACpD,CAAA;CACF,SAkFA,CAAA;AAED,eAAO,MAAM,cAAc,eAExB;IACD,KAAK,EAAE;QACL,UAAU,EAAE,cAAc,GAAG,IAAI,CAAA;QACjC,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,GAAG,CAAA;QACZ,OAAO,CAAC,EAAE,cAAc,CAAA;QACxB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE;YAAE,EAAE,EAAE,IAAI,CAAA;SAAE,GAAG;YAAE,EAAE,EAAE,KAAK,CAAC;YAAC,KAAK,EAAE,KAAK,CAAA;SAAE,KAAK,IAAI,CAAA;KAC/E,CAAA;CACF,SA0BA,CAAA"}
1
+ {"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/actions/subject.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,OAAO,EACP,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,EAEpB,MAAM,oBAAoB,CAAA;AAW3B,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7B,IAAI,CAAC,EAAE,mBAAmB,CAAA;IAC1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA;AAatE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;CAClD,QAIA;AAED,eAAO,MAAM,uBAAuB,eAEjC;IACD,KAAK,EAAE;QACL,UAAU,EAAE,cAAc,GAAG,IAAI,CAAA;QACjC,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC/C,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAA;KAC5D,CAAA;CACF,mEAuDA,CAAA;AAED,eAAO,MAAM,cAAc,eAExB;IACD,KAAK,EAAE;QACL,UAAU,EAAE,cAAc,GAAG,IAAI,CAAA;QACjC,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,GAAG,CAAA;QACZ,IAAI,CAAC,EAAE,cAAc,CAAA;QACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;QAC7B,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;QACjD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;QACzC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;KACpD,CAAA;CACF,SAkFA,CAAA;AAED,eAAO,MAAM,cAAc,eAExB;IACD,KAAK,EAAE;QACL,UAAU,EAAE,cAAc,GAAG,IAAI,CAAA;QACjC,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,GAAG,CAAA;QACZ,OAAO,CAAC,EAAE,cAAc,CAAA;QACxB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE;YAAE,EAAE,EAAE,IAAI,CAAA;SAAE,GAAG;YAAE,EAAE,EAAE,KAAK,CAAC;YAAC,KAAK,EAAE,KAAK,CAAA;SAAE,KAAK,IAAI,CAAA;KAC/E,CAAA;CACF,SA0BA,CAAA"}
@@ -2,6 +2,7 @@ import { deadline, TimeoutError, } from '@nats-io/nats-core';
2
2
  import { parseNatsResult } from './connection';
3
3
  import { extractContextFromHeaders, injectContextIntoHeaders, recordError, withSpan, } from '../telemetry';
4
4
  import { byteLength } from '../traffic';
5
+ import { reconcileSubscriptions } from './subscriptions';
5
6
  function notifyRequestResult(callback, result) {
6
7
  try {
7
8
  callback?.(result);
@@ -21,63 +22,42 @@ export const subjectConsolidateState = ({ input, }) => {
21
22
  if (!connection) {
22
23
  throw new Error('NATS connection is not available');
23
24
  }
24
- const syncedSubscriptions = new Map(currentSubscriptions);
25
- // Unsubscribe from subjects that are in currentSubscriptions but not in targetSubscriptions
26
- for (const [subject, subscription] of currentSubscriptions) {
27
- if (!targetSubscriptions.has(subject)) {
28
- try {
29
- syncedSubscriptions.delete(subject);
30
- subscription.unsubscribe();
31
- }
32
- catch (error) {
33
- console.error(`Error unsubscribing from subject "${subject}"`, error);
34
- }
35
- }
36
- }
37
- // Subscribe to new subjects that are in targetSubscriptions but not in currentSubscriptions
38
- for (const [subject, subscriptionConfig] of targetSubscriptions) {
39
- if (!currentSubscriptions.has(subject)) {
40
- try {
41
- // Short span around the synchronous subscribe() call. The iterator
42
- // below is long-lived; we don't span its whole lifetime (indefinite
43
- // spans are anti-pattern in most tracing backends).
44
- const sub = withSpan('xstate.nats.subscribe', 'xstate.nats.error', { subject }, () => connection.subscribe(subject, subscriptionConfig.opts));
45
- (async () => {
46
- try {
47
- for await (const msg of sub) {
48
- const parentCtx = extractContextFromHeaders(msg.headers);
49
- const payloadBytes = msg.data?.length ?? 0;
50
- await withSpan('xstate.nats.message', 'xstate.nats.error', {
51
- subject,
52
- 'payload.bytes': payloadBytes,
53
- }, (span) => {
54
- try {
55
- subscriptionConfig.onDownloadBytes?.(payloadBytes);
56
- subscriptionConfig?.callback(parseNatsResult(msg));
57
- }
58
- catch (callbackError) {
59
- // Record on span AND preserve the existing console.error
60
- // so consumers without OTel still see the failure.
61
- recordError(span, 'xstate.nats.error', callbackError);
62
- console.error(`Callback error for subject "${subject}"`, callbackError);
63
- }
64
- }, parentCtx);
65
- }
25
+ return reconcileSubscriptions(currentSubscriptions, targetSubscriptions, {
26
+ dispose: (subscription) => subscription.unsubscribe(),
27
+ create: (subject, subscriptionConfig) => {
28
+ // Short span around the synchronous subscribe() call. The iterator
29
+ // below is long-lived; we don't span its whole lifetime (indefinite
30
+ // spans are anti-pattern in most tracing backends).
31
+ const sub = withSpan('xstate.nats.subscribe', 'xstate.nats.error', { subject }, () => connection.subscribe(subject, subscriptionConfig.opts));
32
+ (async () => {
33
+ try {
34
+ for await (const msg of sub) {
35
+ const parentCtx = extractContextFromHeaders(msg.headers);
36
+ const payloadBytes = msg.data?.length ?? 0;
37
+ await withSpan('xstate.nats.message', 'xstate.nats.error', {
38
+ subject,
39
+ 'payload.bytes': payloadBytes,
40
+ }, (span) => {
41
+ try {
42
+ subscriptionConfig.onDownloadBytes?.(payloadBytes);
43
+ subscriptionConfig?.callback(parseNatsResult(msg));
44
+ }
45
+ catch (callbackError) {
46
+ // Record on span AND preserve the existing console.error
47
+ // so consumers without OTel still see the failure.
48
+ recordError(span, 'xstate.nats.error', callbackError);
49
+ console.error(`Callback error for subject "${subject}"`, callbackError);
50
+ }
51
+ }, parentCtx);
66
52
  }
67
- catch (iteratorError) {
68
- console.error(`Iterator error for subject "${subject}"`, iteratorError);
69
- }
70
- })();
71
- syncedSubscriptions.set(subject, sub);
72
- }
73
- catch (error) {
74
- console.error(`Error subscribing to subject "${subject}"`, error);
75
- }
76
- }
77
- }
78
- return {
79
- subscriptions: syncedSubscriptions,
80
- };
53
+ }
54
+ catch (iteratorError) {
55
+ console.error(`Iterator error for subject "${subject}"`, iteratorError);
56
+ }
57
+ })();
58
+ return sub;
59
+ },
60
+ });
81
61
  };
82
62
  export const subjectRequest = ({ input, }) => {
83
63
  const { connection, subject, payload, opts, callback, onRequestResult, onDownloadBytes, requestHeaders, } = input;
@@ -1 +1 @@
1
- {"version":3,"file":"subject.js","sourceRoot":"","sources":["../../src/actions/subject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subject.js","sourceRoot":"","sources":["../../src/actions/subject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** Shared reconciliation policy; adapters retain their own setup timing and callbacks. */
2
+ export type SubscriptionSyncResult<Subscription> = {
3
+ subscriptions: Map<string, Subscription>;
4
+ error?: Error;
5
+ };
6
+ type Adapter<Config, Subscription, Created> = {
7
+ create: (key: string, config: Config) => Created;
8
+ dispose: (subscription: Subscription) => void;
9
+ };
10
+ export declare function reconcileSubscriptions<Config, Subscription>(current: Map<string, Subscription>, target: Map<string, Config>, adapter: Adapter<Config, Subscription, Subscription>): SubscriptionSyncResult<Subscription>;
11
+ export declare function reconcileSubscriptionsAsync<Config, Subscription>(current: Map<string, Subscription>, target: Map<string, Config>, adapter: Adapter<Config, Subscription, Promise<Subscription>>): Promise<SubscriptionSyncResult<Subscription>>;
12
+ export {};
13
+ //# sourceMappingURL=subscriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.d.ts","sourceRoot":"","sources":["../../src/actions/subscriptions.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,MAAM,MAAM,sBAAsB,CAAC,YAAY,IAAI;IACjD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACxC,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,KAAK,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,IAAI;IAC5C,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAA;IAChD,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAA;CAC9C,CAAA;AAiCD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,EACzD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAClC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,GACnD,sBAAsB,CAAC,YAAY,CAAC,CAUtC;AAED,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,YAAY,EACpE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAClC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,GAC5D,OAAO,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAU/C"}
@@ -0,0 +1,53 @@
1
+ function plan(current, target, dispose) {
2
+ const subscriptions = new Map(current);
3
+ const errors = [];
4
+ const fail = (key, cause) => {
5
+ errors.push(new Error(`Subscription sync failed for "${key}"`, { cause }));
6
+ };
7
+ for (const [key, subscription] of current) {
8
+ if (target.has(key))
9
+ continue;
10
+ try {
11
+ dispose(subscription);
12
+ subscriptions.delete(key);
13
+ }
14
+ catch (cause) {
15
+ // Retain the handle so a failed removal can be retried.
16
+ fail(key, cause);
17
+ }
18
+ }
19
+ return {
20
+ subscriptions,
21
+ additions: [...target].filter(([key]) => !current.has(key)),
22
+ fail,
23
+ result: () => ({
24
+ subscriptions,
25
+ error: errors.length ? new AggregateError(errors, 'Subscription sync failed') : undefined,
26
+ }),
27
+ };
28
+ }
29
+ export function reconcileSubscriptions(current, target, adapter) {
30
+ const sync = plan(current, target, adapter.dispose);
31
+ for (const [key, config] of sync.additions) {
32
+ try {
33
+ sync.subscriptions.set(key, adapter.create(key, config));
34
+ }
35
+ catch (cause) {
36
+ sync.fail(key, cause);
37
+ }
38
+ }
39
+ return sync.result();
40
+ }
41
+ export async function reconcileSubscriptionsAsync(current, target, adapter) {
42
+ const sync = plan(current, target, adapter.dispose);
43
+ for (const [key, config] of sync.additions) {
44
+ try {
45
+ sync.subscriptions.set(key, await adapter.create(key, config));
46
+ }
47
+ catch (cause) {
48
+ sync.fail(key, cause);
49
+ }
50
+ }
51
+ return sync.result();
52
+ }
53
+ //# sourceMappingURL=subscriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../src/actions/subscriptions.ts"],"names":[],"mappings":"AAWA,SAAS,IAAI,CACX,OAAkC,EAClC,MAA2B,EAC3B,OAA6C;IAE7C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;IACtC,MAAM,MAAM,GAAY,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,KAAc,EAAE,EAAE;QAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,iCAAiC,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAC5E,CAAC,CAAA;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,OAAO,EAAE,CAAC;QAC1C,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC7B,IAAI,CAAC;YACH,OAAO,CAAC,YAAY,CAAC,CAAA;YACrB,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wDAAwD;YACxD,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAClB,CAAC;IACH,CAAC;IACD,OAAO;QACL,aAAa;QACb,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI;QACJ,MAAM,EAAE,GAAyC,EAAE,CAAC,CAAC;YACnD,aAAa;YACb,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,SAAS;SAC1F,CAAC;KACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAkC,EAClC,MAA2B,EAC3B,OAAoD;IAEpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IACnD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,OAAkC,EAClC,MAA2B,EAC3B,OAA6D;IAE7D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IACnD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;AACtB,CAAC"}
@@ -168,9 +168,7 @@ export declare const kvManagerLogic: import("xstate").StateMachine<Context, Nats
168
168
  } | {
169
169
  type: 'KV.UNSUBSCRIBE_ALL';
170
170
  }, {
171
- [x: string]: import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<{
172
- subscriptions: Map<string, QueuedIterator<KvWatchEntry>>;
173
- }, {
171
+ [x: string]: import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<import("../actions/subscriptions").SubscriptionSyncResult<QueuedIterator<KvWatchEntry>>, {
174
172
  kvm: Kvm | null;
175
173
  connection: NatsConnection | null;
176
174
  currentState: Map<string, QueuedIterator<KvWatchEntry>>;
@@ -178,9 +176,7 @@ export declare const kvManagerLogic: import("xstate").StateMachine<Context, Nats
178
176
  }, import("xstate").EventObject>> | undefined;
179
177
  }, {
180
178
  src: "kvConsolidateState";
181
- logic: import("xstate").PromiseActorLogic<{
182
- subscriptions: Map<string, QueuedIterator<KvWatchEntry>>;
183
- }, {
179
+ logic: import("xstate").PromiseActorLogic<import("../actions/subscriptions").SubscriptionSyncResult<QueuedIterator<KvWatchEntry>>, {
184
180
  kvm: Kvm | null;
185
181
  connection: NatsConnection | null;
186
182
  currentState: Map<string, QueuedIterator<KvWatchEntry>>;
@@ -1 +1 @@
1
- {"version":3,"file":"kv.d.ts","sourceRoot":"","sources":["../../src/machines/kv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE7E,OAAO,EAAqB,oBAAoB,EAAsB,MAAM,eAAe,CAAA;AAC3F,OAAO,EAGL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EAKtB,MAAM,YAAY,CAAA;AAGnB,KAAK,cAAc,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,sBAAsB,CAAA;AAG9E,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,cAAc,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IACE,IAAI,EAAE,gBAAgB,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;CACrE,GACD;IACE,IAAI,EAAE,kBAAkB,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;CAC5E,GACD;IACE,IAAI,EAAE,kBAAkB,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;CAC5E,GACD;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;CAC9D,GACD;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,GAAG,CAAA;IACV,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;CAC5D,GACD;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;CAC5D,GACD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,GAC9B,qBAAqB,CAAA;AAEzB,MAAM,MAAM,MAAM,GAAG,cAAc,GAAG,cAAc,CAAA;AAEpD,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,gBAAgB,EAAE,cAAc,GAAG,IAAI,CAAA;IACvC,SAAS,EAAE,GAAG,GAAG,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,CAAA;IACxD,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;IACtD,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,kBAAkB,CAAA;IAClC,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AACD,eAAO,MAAM,cAAc;;;;;;;;;;UA3DG,OAAO;WAAS,KAAK;;UAIvC,YAAY;gBAAc,cAAc;;UACxC,cAAc;;UACd,iBAAiB;;UAEjB,gBAAgB;aACb,MAAM;cACL,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI;;UAG9D,kBAAkB;YAChB,MAAM;cACJ,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI;;UAGrE,kBAAkB;YAChB,MAAM;cACJ,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI;;UAGrE,QAAQ;YACN,MAAM;SACT,MAAM;cACD,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI;;UAGvD,QAAQ;YACN,MAAM;SACT,MAAM;WACJ,GAAG;cACA,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI;;UAGrD,WAAW;YACT,MAAM;SACT,MAAM;cACD,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI;;UAErD,cAAc;YAAU,oBAAoB;;UAC5C,gBAAgB;YAAU,MAAM;SAAO,MAAM;;UAC7C,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAmW9B,CAAA"}
1
+ {"version":3,"file":"kv.d.ts","sourceRoot":"","sources":["../../src/machines/kv.ts"],"names":[],"mappings":"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"}