@jr200-labs/xstate-nats 0.9.9 → 0.9.10

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.
@@ -14,6 +14,8 @@ export interface Context {
14
14
  retries: number;
15
15
  subjectManagerReady: boolean;
16
16
  kvManagerReady: boolean;
17
+ configureAfterClose: boolean;
18
+ connectAfterClose: boolean;
17
19
  }
18
20
  export type ExternalEvents = {
19
21
  type: 'CONFIGURE';
@@ -495,9 +497,27 @@ export declare const natsMachine: import("xstate").StateMachine<Context, {
495
497
  }, {
496
498
  type: "doReset";
497
499
  params: import("xstate").NonReducibleUnknown;
500
+ } | {
501
+ type: "configureNats";
502
+ params: import("xstate").NonReducibleUnknown;
503
+ } | {
504
+ type: "configureNatsAfterClose";
505
+ params: import("xstate").NonReducibleUnknown;
506
+ } | {
507
+ type: "reconnectAfterClose";
508
+ params: import("xstate").NonReducibleUnknown;
509
+ } | {
510
+ type: "clearDeferredCloseActions";
511
+ params: import("xstate").NonReducibleUnknown;
498
512
  }, {
499
513
  type: "allManagersReady";
500
514
  params: unknown;
515
+ } | {
516
+ type: "shouldConnectAfterClose";
517
+ params: unknown;
518
+ } | {
519
+ type: "shouldConfigureAfterClose";
520
+ params: unknown;
501
521
  }, never, "error" | "not_configured" | "configured" | "connecting" | "initialise_managers" | "connected" | "closing" | "closed", string, import("xstate").NonReducibleUnknown, import("xstate").NonReducibleUnknown, import("xstate").EventObject, import("xstate").MetaObject, {
502
522
  states: {
503
523
  readonly not_configured: {};
@@ -1 +1 @@
1
- {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/machines/root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEtE,OAAO,EAAkB,cAAc,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAA;AACzE,OAAO,EAAuB,cAAc,IAAI,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAExF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGlD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,iBAAiB,CAAA;IACvB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,cAAc,GAAG,IAAI,CAAA;IACjC,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,UAAU,CAAC,EAAE,oBAAoB,CAAA;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,mBAAmB,EAAE,OAAO,CAAA;IAC5B,cAAc,EAAE,OAAO,CAAA;CACxB;AAYD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB,qBAAqB,GACrB,gBAAgB,CAAA;AAIpB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAlBZ,WAAW;gBAAc,cAAc;;UACvC,cAAc;;UACd,MAAM;WAAS,KAAK;;UACpB,WAAW;;UACX,OAAO;;UAKP,WAAW;YAAU,oBAAoB;;UACzC,SAAS;;UACT,YAAY;;UACZ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkQjB,CAAA"}
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/machines/root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEtE,OAAO,EAAkB,cAAc,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAA;AACzE,OAAO,EAAuB,cAAc,IAAI,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAExF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGlD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,iBAAiB,CAAA;IACvB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,cAAc,GAAG,IAAI,CAAA;IACjC,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,UAAU,CAAC,EAAE,oBAAoB,CAAA;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,mBAAmB,EAAE,OAAO,CAAA;IAC5B,cAAc,EAAE,OAAO,CAAA;IACvB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAYD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB,qBAAqB,GACrB,gBAAgB,CAAA;AAIpB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAlBZ,WAAW;gBAAc,cAAc;;UACvC,cAAc;;UACd,MAAM;WAAS,KAAK;;UACpB,WAAW;;UACX,OAAO;;UAKP,WAAW;YAAU,oBAAoB;;UACzC,SAAS;;UACT,YAAY;;UACZ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2VjB,CAAA"}
@@ -15,6 +15,43 @@ export const natsMachine = setup({
15
15
  retries: (_) => 0,
16
16
  subjectManagerReady: (_) => false,
17
17
  kvManagerReady: (_) => false,
18
+ configureAfterClose: (_) => false,
19
+ connectAfterClose: (_) => false,
20
+ }),
21
+ configureNats: assign({
22
+ natsConfig: ({ event }) => {
23
+ if (event.type !== 'CONFIGURE') {
24
+ return undefined;
25
+ }
26
+ return event.config;
27
+ },
28
+ connection: (_) => null,
29
+ error: (_) => undefined,
30
+ retries: (_) => 0,
31
+ subjectManagerReady: (_) => false,
32
+ kvManagerReady: (_) => false,
33
+ configureAfterClose: (_) => false,
34
+ connectAfterClose: (_) => false,
35
+ }),
36
+ configureNatsAfterClose: assign({
37
+ natsConfig: ({ event }) => {
38
+ if (event.type !== 'CONFIGURE') {
39
+ return undefined;
40
+ }
41
+ return event.config;
42
+ },
43
+ error: (_) => undefined,
44
+ retries: (_) => 0,
45
+ subjectManagerReady: (_) => false,
46
+ kvManagerReady: (_) => false,
47
+ configureAfterClose: (_) => true,
48
+ }),
49
+ reconnectAfterClose: assign({
50
+ connectAfterClose: (_) => true,
51
+ }),
52
+ clearDeferredCloseActions: assign({
53
+ configureAfterClose: (_) => false,
54
+ connectAfterClose: (_) => false,
18
55
  }),
19
56
  },
20
57
  guards: {
@@ -24,6 +61,12 @@ export const natsMachine = setup({
24
61
  const kvReady = context.kvManagerReady;
25
62
  return hasValidConnection && subjectReady && kvReady;
26
63
  },
64
+ shouldConnectAfterClose: ({ context }) => {
65
+ return context.connectAfterClose && context.natsConfig !== undefined;
66
+ },
67
+ shouldConfigureAfterClose: ({ context }) => {
68
+ return context.configureAfterClose && context.natsConfig !== undefined;
69
+ },
27
70
  },
28
71
  actors: {
29
72
  connectToNats: connectToNats,
@@ -41,6 +84,8 @@ export const natsMachine = setup({
41
84
  retries: 0,
42
85
  subjectManagerReady: false,
43
86
  kvManagerReady: false,
87
+ configureAfterClose: false,
88
+ connectAfterClose: false,
44
89
  },
45
90
  invoke: [
46
91
  { src: 'subject', id: 'subject', systemId: 'subject' },
@@ -62,11 +107,7 @@ export const natsMachine = setup({
62
107
  on: {
63
108
  CONFIGURE: {
64
109
  target: 'configured',
65
- actions: [
66
- assign({
67
- natsConfig: ({ event }) => event.config,
68
- }),
69
- ],
110
+ actions: ['configureNats'],
70
111
  '*': {
71
112
  actions: [
72
113
  ({ event }) => {
@@ -78,7 +119,11 @@ export const natsMachine = setup({
78
119
  },
79
120
  },
80
121
  configured: {
122
+ entry: ['clearDeferredCloseActions'],
81
123
  on: {
124
+ CONFIGURE: {
125
+ actions: ['configureNats'],
126
+ },
82
127
  CONNECT: {
83
128
  target: 'connecting',
84
129
  },
@@ -96,6 +141,7 @@ export const natsMachine = setup({
96
141
  },
97
142
  },
98
143
  connecting: {
144
+ entry: ['clearDeferredCloseActions'],
99
145
  invoke: [
100
146
  {
101
147
  src: 'connectToNats',
@@ -147,6 +193,7 @@ export const natsMachine = setup({
147
193
  },
148
194
  connected: {
149
195
  entry: [
196
+ 'clearDeferredCloseActions',
150
197
  (event) => {
151
198
  if (event.context.natsConfig?.opts.debug) {
152
199
  console.log('CONNECTED', event.context.connection?.getServer());
@@ -154,11 +201,17 @@ export const natsMachine = setup({
154
201
  },
155
202
  ],
156
203
  on: {
204
+ CONFIGURE: {
205
+ target: 'closing',
206
+ actions: ['configureNatsAfterClose', 'reconnectAfterClose'],
207
+ },
157
208
  DISCONNECT: {
158
209
  target: 'closing',
210
+ actions: ['clearDeferredCloseActions'],
159
211
  },
160
212
  CLOSE: {
161
213
  target: 'closing',
214
+ actions: ['clearDeferredCloseActions'],
162
215
  },
163
216
  'SUBJECT.*': {
164
217
  actions: [
@@ -206,9 +259,19 @@ export const natsMachine = setup({
206
259
  invoke: {
207
260
  src: 'disconnectNats',
208
261
  input: ({ context }) => ({ connection: context.connection }),
209
- onDone: {
210
- target: 'closed',
211
- },
262
+ onDone: [
263
+ {
264
+ guard: 'shouldConnectAfterClose',
265
+ target: 'connecting',
266
+ },
267
+ {
268
+ guard: 'shouldConfigureAfterClose',
269
+ target: 'configured',
270
+ },
271
+ {
272
+ target: 'closed',
273
+ },
274
+ ],
212
275
  onError: {
213
276
  target: 'error',
214
277
  actions: assign({
@@ -216,9 +279,30 @@ export const natsMachine = setup({
216
279
  }),
217
280
  },
218
281
  },
282
+ on: {
283
+ CONFIGURE: {
284
+ actions: ['configureNatsAfterClose'],
285
+ },
286
+ CONNECT: {
287
+ actions: ['reconnectAfterClose'],
288
+ },
289
+ },
219
290
  },
220
291
  closed: {
292
+ entry: [
293
+ assign({
294
+ connection: (_) => null,
295
+ subjectManagerReady: (_) => false,
296
+ kvManagerReady: (_) => false,
297
+ configureAfterClose: (_) => false,
298
+ connectAfterClose: (_) => false,
299
+ }),
300
+ ],
221
301
  on: {
302
+ CONFIGURE: {
303
+ target: 'configured',
304
+ actions: ['configureNats'],
305
+ },
222
306
  RESET: {
223
307
  target: 'not_configured',
224
308
  actions: ['doReset'],
@@ -236,7 +320,12 @@ export const natsMachine = setup({
236
320
  },
237
321
  },
238
322
  error: {
323
+ entry: ['clearDeferredCloseActions'],
239
324
  on: {
325
+ CONFIGURE: {
326
+ target: 'configured',
327
+ actions: ['configureNats'],
328
+ },
240
329
  RESET: {
241
330
  target: 'not_configured',
242
331
  actions: ['doReset'],
@@ -1 +1 @@
1
- {"version":3,"file":"root.js","sourceRoot":"","sources":["../../src/machines/root.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"root.js","sourceRoot":"","sources":["../../src/machines/root.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jr200-labs/xstate-nats",
3
- "version": "0.9.9",
3
+ "version": "0.9.10",
4
4
  "description": "XState machine for NATS",
5
5
  "license": "MIT",
6
6
  "author": "Jayshan Raghunandan",
@@ -64,6 +64,17 @@ const mockConnection = {
64
64
  }),
65
65
  } as any
66
66
 
67
+ function createDeferred<T>() {
68
+ let resolve!: (value: T) => void
69
+ let reject!: (reason?: unknown) => void
70
+ const promise = new Promise<T>((res, rej) => {
71
+ resolve = res
72
+ reject = rej
73
+ })
74
+
75
+ return { promise, resolve, reject }
76
+ }
77
+
67
78
  function createTestMachine() {
68
79
  return natsMachine.provide({
69
80
  actors: {
@@ -230,6 +241,32 @@ describe('natsMachine', () => {
230
241
  actor.stop()
231
242
  })
232
243
 
244
+ it('should reconfigure from closed state', async () => {
245
+ const actor = createActor(createTestMachine())
246
+ actor.start()
247
+ configureAndConnect(actor)
248
+
249
+ await vi.waitFor(() => {
250
+ expect(actor.getSnapshot().value).toBe('connected')
251
+ })
252
+ actor.send({ type: 'DISCONNECT' })
253
+ await vi.waitFor(() => {
254
+ expect(actor.getSnapshot().value).toBe('closed')
255
+ })
256
+
257
+ actor.send({
258
+ type: 'CONFIGURE',
259
+ config: { opts: { debug: true, servers: ['ws://localhost:4223'] }, maxRetries: 5 },
260
+ })
261
+
262
+ expect(actor.getSnapshot().value).toBe('configured')
263
+ expect(actor.getSnapshot().context.natsConfig).toEqual({
264
+ opts: { debug: true, servers: ['ws://localhost:4223'] },
265
+ maxRetries: 5,
266
+ })
267
+ actor.stop()
268
+ })
269
+
233
270
  it('should reset from closed state', async () => {
234
271
  const actor = createActor(createTestMachine())
235
272
  actor.start()
@@ -293,6 +330,121 @@ describe('natsMachine', () => {
293
330
  actor.stop()
294
331
  })
295
332
 
333
+ it('should reconfigure from error state', async () => {
334
+ const failMachine = natsMachine.provide({
335
+ actors: {
336
+ connectToNats: fromPromise(async () => {
337
+ throw new Error('fail')
338
+ }),
339
+ disconnectNats: fromPromise(async () => {}),
340
+ subject: mockSubjectMachine,
341
+ kv: mockKvMachine,
342
+ },
343
+ })
344
+
345
+ const actor = createActor(failMachine)
346
+ actor.start()
347
+ configureAndConnect(actor)
348
+
349
+ await vi.waitFor(() => {
350
+ expect(actor.getSnapshot().value).toBe('error')
351
+ })
352
+
353
+ actor.send({
354
+ type: 'CONFIGURE',
355
+ config: { opts: { debug: true, servers: ['ws://localhost:4224'] }, maxRetries: 1 },
356
+ })
357
+
358
+ expect(actor.getSnapshot().value).toBe('configured')
359
+ expect(actor.getSnapshot().context.error).toBeUndefined()
360
+ expect(actor.getSnapshot().context.natsConfig).toEqual({
361
+ opts: { debug: true, servers: ['ws://localhost:4224'] },
362
+ maxRetries: 1,
363
+ })
364
+ actor.stop()
365
+ })
366
+
367
+ it('should reconnect when configured while connected', async () => {
368
+ const connectInputs: any[] = []
369
+ const machine = natsMachine.provide({
370
+ actors: {
371
+ connectToNats: fromPromise(async ({ input }) => {
372
+ connectInputs.push(input)
373
+ return mockConnection
374
+ }),
375
+ disconnectNats: fromPromise(async () => {}),
376
+ subject: mockSubjectMachine,
377
+ kv: mockKvMachine,
378
+ },
379
+ })
380
+ const actor = createActor(machine)
381
+ actor.start()
382
+ configureAndConnect(actor)
383
+
384
+ await vi.waitFor(() => {
385
+ expect(actor.getSnapshot().value).toBe('connected')
386
+ })
387
+
388
+ actor.send({
389
+ type: 'CONFIGURE',
390
+ config: { opts: { debug: true, servers: ['ws://localhost:4225'] }, maxRetries: 2 },
391
+ })
392
+
393
+ await vi.waitFor(() => {
394
+ expect(actor.getSnapshot().value).toBe('connected')
395
+ })
396
+ expect(connectInputs).toHaveLength(2)
397
+ expect(connectInputs[1].opts).toEqual({ debug: true, servers: ['ws://localhost:4225'] })
398
+ expect(actor.getSnapshot().context.natsConfig).toEqual({
399
+ opts: { debug: true, servers: ['ws://localhost:4225'] },
400
+ maxRetries: 2,
401
+ })
402
+ actor.stop()
403
+ })
404
+
405
+ it('should apply CONFIGURE and CONNECT sent while closing', async () => {
406
+ const disconnect = createDeferred<void>()
407
+ const connectInputs: any[] = []
408
+ const machine = natsMachine.provide({
409
+ actors: {
410
+ connectToNats: fromPromise(async ({ input }) => {
411
+ connectInputs.push(input)
412
+ return mockConnection
413
+ }),
414
+ disconnectNats: fromPromise(async () => disconnect.promise),
415
+ subject: mockSubjectMachine,
416
+ kv: mockKvMachine,
417
+ },
418
+ })
419
+ const actor = createActor(machine)
420
+ actor.start()
421
+ configureAndConnect(actor)
422
+
423
+ await vi.waitFor(() => {
424
+ expect(actor.getSnapshot().value).toBe('connected')
425
+ })
426
+ actor.send({ type: 'DISCONNECT' })
427
+ expect(actor.getSnapshot().value).toBe('closing')
428
+
429
+ actor.send({
430
+ type: 'CONFIGURE',
431
+ config: { opts: { debug: true, servers: ['ws://localhost:4226'] }, maxRetries: 2 },
432
+ })
433
+ actor.send({ type: 'CONNECT' })
434
+ disconnect.resolve()
435
+
436
+ await vi.waitFor(() => {
437
+ expect(actor.getSnapshot().value).toBe('connected')
438
+ })
439
+ expect(connectInputs).toHaveLength(2)
440
+ expect(connectInputs[1].opts).toEqual({ debug: true, servers: ['ws://localhost:4226'] })
441
+ expect(actor.getSnapshot().context.natsConfig).toEqual({
442
+ opts: { debug: true, servers: ['ws://localhost:4226'] },
443
+ maxRetries: 2,
444
+ })
445
+ actor.stop()
446
+ })
447
+
296
448
  it('should forward SUBJECT.* events when connected', async () => {
297
449
  const actor = createActor(createTestMachine())
298
450
  actor.start()
@@ -19,6 +19,8 @@ export interface Context {
19
19
  retries: number
20
20
  subjectManagerReady: boolean
21
21
  kvManagerReady: boolean
22
+ configureAfterClose: boolean
23
+ connectAfterClose: boolean
22
24
  }
23
25
 
24
26
  // internal events and events from nats connection
@@ -54,6 +56,43 @@ export const natsMachine = setup({
54
56
  retries: (_) => 0,
55
57
  subjectManagerReady: (_) => false,
56
58
  kvManagerReady: (_) => false,
59
+ configureAfterClose: (_) => false,
60
+ connectAfterClose: (_) => false,
61
+ }),
62
+ configureNats: assign({
63
+ natsConfig: ({ event }) => {
64
+ if (event.type !== 'CONFIGURE') {
65
+ return undefined
66
+ }
67
+ return event.config
68
+ },
69
+ connection: (_) => null,
70
+ error: (_) => undefined,
71
+ retries: (_) => 0,
72
+ subjectManagerReady: (_) => false,
73
+ kvManagerReady: (_) => false,
74
+ configureAfterClose: (_) => false,
75
+ connectAfterClose: (_) => false,
76
+ }),
77
+ configureNatsAfterClose: assign({
78
+ natsConfig: ({ event }) => {
79
+ if (event.type !== 'CONFIGURE') {
80
+ return undefined
81
+ }
82
+ return event.config
83
+ },
84
+ error: (_) => undefined,
85
+ retries: (_) => 0,
86
+ subjectManagerReady: (_) => false,
87
+ kvManagerReady: (_) => false,
88
+ configureAfterClose: (_) => true,
89
+ }),
90
+ reconnectAfterClose: assign({
91
+ connectAfterClose: (_) => true,
92
+ }),
93
+ clearDeferredCloseActions: assign({
94
+ configureAfterClose: (_) => false,
95
+ connectAfterClose: (_) => false,
57
96
  }),
58
97
  },
59
98
  guards: {
@@ -63,6 +102,12 @@ export const natsMachine = setup({
63
102
  const kvReady = context.kvManagerReady
64
103
  return hasValidConnection && subjectReady && kvReady
65
104
  },
105
+ shouldConnectAfterClose: ({ context }) => {
106
+ return context.connectAfterClose && context.natsConfig !== undefined
107
+ },
108
+ shouldConfigureAfterClose: ({ context }) => {
109
+ return context.configureAfterClose && context.natsConfig !== undefined
110
+ },
66
111
  },
67
112
  actors: {
68
113
  connectToNats: connectToNats,
@@ -80,6 +125,8 @@ export const natsMachine = setup({
80
125
  retries: 0,
81
126
  subjectManagerReady: false,
82
127
  kvManagerReady: false,
128
+ configureAfterClose: false,
129
+ connectAfterClose: false,
83
130
  },
84
131
  invoke: [
85
132
  { src: 'subject', id: 'subject', systemId: 'subject' },
@@ -101,11 +148,7 @@ export const natsMachine = setup({
101
148
  on: {
102
149
  CONFIGURE: {
103
150
  target: 'configured',
104
- actions: [
105
- assign({
106
- natsConfig: ({ event }) => event.config,
107
- }),
108
- ],
151
+ actions: ['configureNats'],
109
152
  '*': {
110
153
  actions: [
111
154
  ({ event }: { event: any }) => {
@@ -117,7 +160,11 @@ export const natsMachine = setup({
117
160
  },
118
161
  },
119
162
  configured: {
163
+ entry: ['clearDeferredCloseActions'],
120
164
  on: {
165
+ CONFIGURE: {
166
+ actions: ['configureNats'],
167
+ },
121
168
  CONNECT: {
122
169
  target: 'connecting',
123
170
  },
@@ -135,6 +182,7 @@ export const natsMachine = setup({
135
182
  },
136
183
  },
137
184
  connecting: {
185
+ entry: ['clearDeferredCloseActions'],
138
186
  invoke: [
139
187
  {
140
188
  src: 'connectToNats',
@@ -186,6 +234,7 @@ export const natsMachine = setup({
186
234
  },
187
235
  connected: {
188
236
  entry: [
237
+ 'clearDeferredCloseActions',
189
238
  (event) => {
190
239
  if (event.context.natsConfig?.opts.debug) {
191
240
  console.log('CONNECTED', event.context.connection?.getServer())
@@ -193,11 +242,17 @@ export const natsMachine = setup({
193
242
  },
194
243
  ],
195
244
  on: {
245
+ CONFIGURE: {
246
+ target: 'closing',
247
+ actions: ['configureNatsAfterClose', 'reconnectAfterClose'],
248
+ },
196
249
  DISCONNECT: {
197
250
  target: 'closing',
251
+ actions: ['clearDeferredCloseActions'],
198
252
  },
199
253
  CLOSE: {
200
254
  target: 'closing',
255
+ actions: ['clearDeferredCloseActions'],
201
256
  },
202
257
  'SUBJECT.*': {
203
258
  actions: [
@@ -248,9 +303,19 @@ export const natsMachine = setup({
248
303
  invoke: {
249
304
  src: 'disconnectNats',
250
305
  input: ({ context }) => ({ connection: context.connection }),
251
- onDone: {
252
- target: 'closed',
253
- },
306
+ onDone: [
307
+ {
308
+ guard: 'shouldConnectAfterClose',
309
+ target: 'connecting',
310
+ },
311
+ {
312
+ guard: 'shouldConfigureAfterClose',
313
+ target: 'configured',
314
+ },
315
+ {
316
+ target: 'closed',
317
+ },
318
+ ],
254
319
  onError: {
255
320
  target: 'error',
256
321
  actions: assign({
@@ -258,9 +323,30 @@ export const natsMachine = setup({
258
323
  }),
259
324
  },
260
325
  },
326
+ on: {
327
+ CONFIGURE: {
328
+ actions: ['configureNatsAfterClose'],
329
+ },
330
+ CONNECT: {
331
+ actions: ['reconnectAfterClose'],
332
+ },
333
+ },
261
334
  },
262
335
  closed: {
336
+ entry: [
337
+ assign({
338
+ connection: (_) => null,
339
+ subjectManagerReady: (_) => false,
340
+ kvManagerReady: (_) => false,
341
+ configureAfterClose: (_) => false,
342
+ connectAfterClose: (_) => false,
343
+ }),
344
+ ],
263
345
  on: {
346
+ CONFIGURE: {
347
+ target: 'configured',
348
+ actions: ['configureNats'],
349
+ },
264
350
  RESET: {
265
351
  target: 'not_configured',
266
352
  actions: ['doReset'],
@@ -278,7 +364,12 @@ export const natsMachine = setup({
278
364
  },
279
365
  },
280
366
  error: {
367
+ entry: ['clearDeferredCloseActions'],
281
368
  on: {
369
+ CONFIGURE: {
370
+ target: 'configured',
371
+ actions: ['configureNats'],
372
+ },
282
373
  RESET: {
283
374
  target: 'not_configured',
284
375
  actions: ['doReset'],