@jr200-labs/xstate-nats 0.9.0 → 0.9.8
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.
- package/dist/actions/subject.d.ts +7 -0
- package/dist/actions/subject.d.ts.map +1 -1
- package/dist/actions/subject.js +3 -1
- package/dist/actions/subject.js.map +1 -1
- package/dist/machines/root.d.ts +3 -0
- package/dist/machines/root.d.ts.map +1 -1
- package/dist/machines/subject.d.ts +3 -1
- package/dist/machines/subject.d.ts.map +1 -1
- package/dist/machines/subject.js +1 -0
- package/dist/machines/subject.js.map +1 -1
- package/package.json +23 -20
- package/src/actions/subject.test.ts +6 -0
- package/src/actions/subject.ts +6 -1
- package/src/machines/subject.ts +3 -0
|
@@ -4,6 +4,12 @@ export type SubjectSubscriptionConfig = {
|
|
|
4
4
|
callback: (data: any) => void;
|
|
5
5
|
opts?: SubscriptionOptions;
|
|
6
6
|
};
|
|
7
|
+
export type RequestResult = {
|
|
8
|
+
ok: true;
|
|
9
|
+
} | {
|
|
10
|
+
ok: false;
|
|
11
|
+
error: Error;
|
|
12
|
+
};
|
|
7
13
|
export declare const subjectConsolidateState: ({ input, }: {
|
|
8
14
|
input: {
|
|
9
15
|
connection: NatsConnection | null;
|
|
@@ -20,6 +26,7 @@ export declare const subjectRequest: ({ input, }: {
|
|
|
20
26
|
payload: any;
|
|
21
27
|
opts?: RequestOptions;
|
|
22
28
|
callback: (data: any) => void;
|
|
29
|
+
onRequestResult?: (result: RequestResult) => void;
|
|
23
30
|
};
|
|
24
31
|
}) => void;
|
|
25
32
|
export declare const subjectPublish: ({ input, }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/actions/subject.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAS3B,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;CAC3B,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,YAErC;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;;CA2EA,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,YAE5B;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;
|
|
1
|
+
{"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/actions/subject.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAS3B,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;CAC3B,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;AAEtE,eAAO,MAAM,uBAAuB,GAAI,YAErC;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;;CA2EA,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,YAE5B;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;KAClD,CAAA;CACF,SA8CA,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,YAE5B;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,SA+BA,CAAA"}
|
package/dist/actions/subject.js
CHANGED
|
@@ -62,7 +62,7 @@ export const subjectConsolidateState = ({ input, }) => {
|
|
|
62
62
|
};
|
|
63
63
|
};
|
|
64
64
|
export const subjectRequest = ({ input, }) => {
|
|
65
|
-
const { connection, subject, payload, opts, callback } = input;
|
|
65
|
+
const { connection, subject, payload, opts, callback, onRequestResult } = input;
|
|
66
66
|
if (!connection) {
|
|
67
67
|
throw new Error('NATS connection is not available');
|
|
68
68
|
}
|
|
@@ -87,6 +87,7 @@ export const subjectRequest = ({ input, }) => {
|
|
|
87
87
|
.request(subject, payload, requestOpts)
|
|
88
88
|
.then((msg) => {
|
|
89
89
|
callback(parseNatsResult(msg));
|
|
90
|
+
onRequestResult?.({ ok: true });
|
|
90
91
|
})
|
|
91
92
|
.catch((err) => {
|
|
92
93
|
// Record on span manually so we can swallow the rejection here —
|
|
@@ -94,6 +95,7 @@ export const subjectRequest = ({ input, }) => {
|
|
|
94
95
|
// to callers and changing that now would be a breaking behaviour.
|
|
95
96
|
recordError(span, 'xstate.nats.error', err);
|
|
96
97
|
console.error(`RequestReply error for subject "${subject}"`, err);
|
|
98
|
+
onRequestResult?.({ ok: false, error: err });
|
|
97
99
|
});
|
|
98
100
|
});
|
|
99
101
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subject.js","sourceRoot":"","sources":["../../src/actions/subject.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,WAAW,EACX,QAAQ,GACT,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"subject.js","sourceRoot":"","sources":["../../src/actions/subject.ts"],"names":[],"mappings":"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"}
|
package/dist/machines/root.d.ts
CHANGED
|
@@ -132,6 +132,7 @@ export declare const natsMachine: import("xstate").StateMachine<Context, {
|
|
|
132
132
|
payload: any;
|
|
133
133
|
opts?: import("@nats-io/nats-core").RequestOptions;
|
|
134
134
|
callback: (data: any) => void;
|
|
135
|
+
onRequestResult?: (result: import("../actions/subject").RequestResult) => void;
|
|
135
136
|
} | {
|
|
136
137
|
type: "SUBJECT.SUBSCRIBE";
|
|
137
138
|
config: import("../actions/subject").SubjectSubscriptionConfig;
|
|
@@ -189,6 +190,7 @@ export declare const natsMachine: import("xstate").StateMachine<Context, {
|
|
|
189
190
|
payload: any;
|
|
190
191
|
opts?: import("@nats-io/nats-core").RequestOptions;
|
|
191
192
|
callback: (data: any) => void;
|
|
193
|
+
onRequestResult?: (result: import("../actions/subject").RequestResult) => void;
|
|
192
194
|
} | {
|
|
193
195
|
type: "SUBJECT.SUBSCRIBE";
|
|
194
196
|
config: import("../actions/subject").SubjectSubscriptionConfig;
|
|
@@ -347,6 +349,7 @@ export declare const natsMachine: import("xstate").StateMachine<Context, {
|
|
|
347
349
|
payload: any;
|
|
348
350
|
opts?: import("@nats-io/nats-core").RequestOptions;
|
|
349
351
|
callback: (data: any) => void;
|
|
352
|
+
onRequestResult?: (result: import("../actions/subject").RequestResult) => void;
|
|
350
353
|
} | {
|
|
351
354
|
type: "SUBJECT.SUBSCRIBE";
|
|
352
355
|
config: import("../actions/subject").SubjectSubscriptionConfig;
|
|
@@ -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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwPjB,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Subscription, PublishOptions, NatsConnection, RequestOptions } from '@nats-io/nats-core';
|
|
2
|
-
import { SubjectSubscriptionConfig } from '../actions/subject';
|
|
2
|
+
import { RequestResult, SubjectSubscriptionConfig } from '../actions/subject';
|
|
3
3
|
type InternalEvents = {
|
|
4
4
|
type: 'ERROR';
|
|
5
5
|
error: Error;
|
|
@@ -28,6 +28,7 @@ export type ExternalEvents = {
|
|
|
28
28
|
payload: any;
|
|
29
29
|
opts?: RequestOptions;
|
|
30
30
|
callback: (data: any) => void;
|
|
31
|
+
onRequestResult?: (result: RequestResult) => void;
|
|
31
32
|
} | {
|
|
32
33
|
type: 'SUBJECT.SUBSCRIBE';
|
|
33
34
|
config: SubjectSubscriptionConfig;
|
|
@@ -70,6 +71,7 @@ export declare const subjectManagerLogic: import("xstate").StateMachine<Context,
|
|
|
70
71
|
payload: any;
|
|
71
72
|
opts?: RequestOptions;
|
|
72
73
|
callback: (data: any) => void;
|
|
74
|
+
onRequestResult?: (result: RequestResult) => void;
|
|
73
75
|
} | {
|
|
74
76
|
type: "SUBJECT.SUBSCRIBE";
|
|
75
77
|
config: SubjectSubscriptionConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/machines/subject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEjG,OAAO,EACL,yBAAyB,EAI1B,MAAM,oBAAoB,CAAA;AAG3B,KAAK,cAAc,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA;AAGrD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,cAAc,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,GAChC;IACE,IAAI,EAAE,iBAAiB,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,GAAG,CAAA;IACZ,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;CAC/E,GACD;IACE,IAAI,EAAE,iBAAiB,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,GAAG,CAAA;IACZ,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/machines/subject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEjG,OAAO,EACL,aAAa,EACb,yBAAyB,EAI1B,MAAM,oBAAoB,CAAA;AAG3B,KAAK,cAAc,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA;AAGrD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,cAAc,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,GAChC;IACE,IAAI,EAAE,iBAAiB,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,GAAG,CAAA;IACZ,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;CAC/E,GACD;IACE,IAAI,EAAE,iBAAiB,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,GAAG,CAAA;IACZ,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7B,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;CAClD,GACD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,yBAAyB,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,yBAAyB,CAAA;CAAE,CAAA;AAEvC,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,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACxC,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAA;IAC3D,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,eAAO,MAAM,mBAAmB;UAjCpB,iBAAiB;gBAAc,cAAc;;UAC7C,mBAAmB;;UACnB,sBAAsB;;UAEtB,iBAAiB;aACd,MAAM;aACN,GAAG;WACL,cAAc;sBACH,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI;;UAGxE,iBAAiB;aACd,MAAM;aACN,GAAG;WACL,cAAc;cACX,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;sBACX,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI;;UAE3C,mBAAmB;YAAU,yBAAyB;;UACtD,qBAAqB;aAAW,MAAM;;UACtC,yBAAyB;;;;;;;;;;;;;EA4KnC,CAAA"}
|
package/dist/machines/subject.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subject.js","sourceRoot":"","sources":["../../src/machines/subject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"subject.js","sourceRoot":"","sources":["../../src/machines/subject.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.
|
|
3
|
+
"version": "0.9.8",
|
|
4
4
|
"description": "XState machine for NATS",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Jayshan Raghunandan",
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"url": "git+https://github.com/jr200-labs/xstate-nats.git"
|
|
10
10
|
},
|
|
11
11
|
"type": "module",
|
|
12
|
+
"packageManager": "pnpm@11.5.2",
|
|
12
13
|
"main": "./dist/index.js",
|
|
13
14
|
"module": "./dist/index.js",
|
|
14
15
|
"types": "./dist/index.d.ts",
|
|
@@ -24,6 +25,16 @@
|
|
|
24
25
|
"README.md",
|
|
25
26
|
"LICENSE"
|
|
26
27
|
],
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "tsc",
|
|
30
|
+
"test": "vitest run",
|
|
31
|
+
"test:run": "vitest run",
|
|
32
|
+
"test:watch": "vitest",
|
|
33
|
+
"prettier": "prettier --write \"**/*.{ts,mjs,js,json,md,yml,yaml}\"",
|
|
34
|
+
"lint": "tsc --noEmit && eslint \"src/**/*.{ts,tsx}\"",
|
|
35
|
+
"prepare": "husky",
|
|
36
|
+
"prepublishOnly": "pnpm build && pnpm test"
|
|
37
|
+
},
|
|
27
38
|
"keywords": [
|
|
28
39
|
"xstate",
|
|
29
40
|
"nats",
|
|
@@ -31,11 +42,11 @@
|
|
|
31
42
|
"websocket"
|
|
32
43
|
],
|
|
33
44
|
"dependencies": {
|
|
34
|
-
"@nats-io/jetstream": "^3.
|
|
35
|
-
"@nats-io/kv": "^3.
|
|
36
|
-
"@nats-io/nats-core": "^3.
|
|
37
|
-
"@nats-io/obj": "^3.
|
|
38
|
-
"xstate": "^5.
|
|
45
|
+
"@nats-io/jetstream": "^3.4.0",
|
|
46
|
+
"@nats-io/kv": "^3.4.0",
|
|
47
|
+
"@nats-io/nats-core": "^3.4.0",
|
|
48
|
+
"@nats-io/obj": "^3.4.0",
|
|
49
|
+
"xstate": "^5.32.0"
|
|
39
50
|
},
|
|
40
51
|
"peerDependencies": {
|
|
41
52
|
"@opentelemetry/api": "^1.9.1"
|
|
@@ -46,22 +57,14 @@
|
|
|
46
57
|
"@opentelemetry/context-async-hooks": "^2.7.1",
|
|
47
58
|
"@opentelemetry/core": "^2.7.1",
|
|
48
59
|
"@opentelemetry/sdk-trace-base": "^2.7.1",
|
|
49
|
-
"@vitest/coverage-v8": "^4.1.
|
|
50
|
-
"eslint": "^10.
|
|
60
|
+
"@vitest/coverage-v8": "^4.1.8",
|
|
61
|
+
"eslint": "^10.4.1",
|
|
51
62
|
"globals": "^17.6.0",
|
|
52
63
|
"husky": "^9.1.7",
|
|
53
64
|
"prettier": "^3.8.3",
|
|
54
|
-
"syncpack": "^15.
|
|
65
|
+
"syncpack": "^15.3.1",
|
|
55
66
|
"typescript": "^6.0.3",
|
|
56
|
-
"typescript-eslint": "^8.
|
|
57
|
-
"vitest": "^4.1.
|
|
58
|
-
},
|
|
59
|
-
"scripts": {
|
|
60
|
-
"build": "tsc",
|
|
61
|
-
"test": "vitest run",
|
|
62
|
-
"test:run": "vitest run",
|
|
63
|
-
"test:watch": "vitest",
|
|
64
|
-
"prettier": "prettier --write \"**/*.{ts,mjs,js,json,md,yml,yaml}\"",
|
|
65
|
-
"lint": "tsc --noEmit && eslint \"src/**/*.{ts,tsx}\""
|
|
67
|
+
"typescript-eslint": "^8.60.1",
|
|
68
|
+
"vitest": "^4.1.8"
|
|
66
69
|
}
|
|
67
|
-
}
|
|
70
|
+
}
|
|
@@ -317,6 +317,7 @@ describe('subjectRequest', () => {
|
|
|
317
317
|
connection.request.mockResolvedValue(mockMsg)
|
|
318
318
|
|
|
319
319
|
const callback = vi.fn()
|
|
320
|
+
const onRequestResult = vi.fn()
|
|
320
321
|
subjectRequest({
|
|
321
322
|
input: {
|
|
322
323
|
connection,
|
|
@@ -324,6 +325,7 @@ describe('subjectRequest', () => {
|
|
|
324
325
|
payload: { data: 1 },
|
|
325
326
|
opts: { timeout: 5000 } as any,
|
|
326
327
|
callback,
|
|
328
|
+
onRequestResult,
|
|
327
329
|
},
|
|
328
330
|
})
|
|
329
331
|
|
|
@@ -331,6 +333,7 @@ describe('subjectRequest', () => {
|
|
|
331
333
|
await vi.waitFor(() => {
|
|
332
334
|
expect(callback).toHaveBeenCalled()
|
|
333
335
|
})
|
|
336
|
+
expect(onRequestResult).toHaveBeenCalledWith({ ok: true })
|
|
334
337
|
|
|
335
338
|
expect(connection.request).toHaveBeenCalledWith(
|
|
336
339
|
'test.request',
|
|
@@ -344,6 +347,7 @@ describe('subjectRequest', () => {
|
|
|
344
347
|
connection.request.mockRejectedValue(new Error('request failed'))
|
|
345
348
|
|
|
346
349
|
const callback = vi.fn()
|
|
350
|
+
const onRequestResult = vi.fn()
|
|
347
351
|
const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {})
|
|
348
352
|
|
|
349
353
|
subjectRequest({
|
|
@@ -352,6 +356,7 @@ describe('subjectRequest', () => {
|
|
|
352
356
|
subject: 'test.fail',
|
|
353
357
|
payload: {},
|
|
354
358
|
callback,
|
|
359
|
+
onRequestResult,
|
|
355
360
|
},
|
|
356
361
|
})
|
|
357
362
|
|
|
@@ -364,6 +369,7 @@ describe('subjectRequest', () => {
|
|
|
364
369
|
|
|
365
370
|
consoleSpy.mockRestore()
|
|
366
371
|
expect(callback).not.toHaveBeenCalled()
|
|
372
|
+
expect(onRequestResult).toHaveBeenCalledWith({ ok: false, error: expect.any(Error) })
|
|
367
373
|
})
|
|
368
374
|
})
|
|
369
375
|
|
package/src/actions/subject.ts
CHANGED
|
@@ -20,6 +20,8 @@ export type SubjectSubscriptionConfig = {
|
|
|
20
20
|
opts?: SubscriptionOptions
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
export type RequestResult = { ok: true } | { ok: false; error: Error }
|
|
24
|
+
|
|
23
25
|
export const subjectConsolidateState = ({
|
|
24
26
|
input,
|
|
25
27
|
}: {
|
|
@@ -114,9 +116,10 @@ export const subjectRequest = ({
|
|
|
114
116
|
payload: any
|
|
115
117
|
opts?: RequestOptions
|
|
116
118
|
callback: (data: any) => void
|
|
119
|
+
onRequestResult?: (result: RequestResult) => void
|
|
117
120
|
}
|
|
118
121
|
}) => {
|
|
119
|
-
const { connection, subject, payload, opts, callback } = input
|
|
122
|
+
const { connection, subject, payload, opts, callback, onRequestResult } = input
|
|
120
123
|
if (!connection) {
|
|
121
124
|
throw new Error('NATS connection is not available')
|
|
122
125
|
}
|
|
@@ -149,6 +152,7 @@ export const subjectRequest = ({
|
|
|
149
152
|
.request(subject, payload, requestOpts)
|
|
150
153
|
.then((msg: Msg) => {
|
|
151
154
|
callback(parseNatsResult(msg))
|
|
155
|
+
onRequestResult?.({ ok: true })
|
|
152
156
|
})
|
|
153
157
|
.catch((err) => {
|
|
154
158
|
// Record on span manually so we can swallow the rejection here —
|
|
@@ -156,6 +160,7 @@ export const subjectRequest = ({
|
|
|
156
160
|
// to callers and changing that now would be a breaking behaviour.
|
|
157
161
|
recordError(span, 'xstate.nats.error', err)
|
|
158
162
|
console.error(`RequestReply error for subject "${subject}"`, err)
|
|
163
|
+
onRequestResult?.({ ok: false, error: err as Error })
|
|
159
164
|
})
|
|
160
165
|
},
|
|
161
166
|
)
|
package/src/machines/subject.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Subscription, PublishOptions, NatsConnection, RequestOptions } from '@nats-io/nats-core'
|
|
2
2
|
import { assign, sendParent, setup } from 'xstate'
|
|
3
3
|
import {
|
|
4
|
+
RequestResult,
|
|
4
5
|
SubjectSubscriptionConfig,
|
|
5
6
|
subjectConsolidateState,
|
|
6
7
|
subjectRequest,
|
|
@@ -28,6 +29,7 @@ export type ExternalEvents =
|
|
|
28
29
|
payload: any
|
|
29
30
|
opts?: RequestOptions
|
|
30
31
|
callback: (data: any) => void
|
|
32
|
+
onRequestResult?: (result: RequestResult) => void
|
|
31
33
|
}
|
|
32
34
|
| { type: 'SUBJECT.SUBSCRIBE'; config: SubjectSubscriptionConfig }
|
|
33
35
|
| { type: 'SUBJECT.UNSUBSCRIBE'; subject: string }
|
|
@@ -138,6 +140,7 @@ export const subjectManagerLogic = setup({
|
|
|
138
140
|
payload: event.payload,
|
|
139
141
|
opts: event.opts,
|
|
140
142
|
callback: event.callback,
|
|
143
|
+
onRequestResult: event.onRequestResult,
|
|
141
144
|
},
|
|
142
145
|
})
|
|
143
146
|
return {}
|