@dj_ticketing/common 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/events/base-listener.d.ts +19 -0
- package/build/events/base-listener.d.ts.map +1 -0
- package/build/events/base-listener.js +33 -0
- package/build/events/base-listener.js.map +1 -0
- package/build/events/base-publisher.d.ts +14 -0
- package/build/events/base-publisher.d.ts.map +1 -0
- package/build/events/base-publisher.js +21 -0
- package/build/events/base-publisher.js.map +1 -0
- package/build/events/subjects.d.ts +5 -0
- package/build/events/subjects.d.ts.map +1 -0
- package/build/events/subjects.js +9 -0
- package/build/events/subjects.js.map +1 -0
- package/build/events/ticket-created-event.d.ts +11 -0
- package/build/events/ticket-created-event.d.ts.map +1 -0
- package/build/events/ticket-created-event.js +3 -0
- package/build/events/ticket-created-event.js.map +1 -0
- package/build/events/ticket-updated-event.d.ts +11 -0
- package/build/events/ticket-updated-event.d.ts.map +1 -0
- package/build/events/ticket-updated-event.js +3 -0
- package/build/events/ticket-updated-event.js.map +1 -0
- package/build/events/types/order.status.d.ts +7 -0
- package/build/events/types/order.status.d.ts.map +1 -0
- package/build/events/types/order.status.js +19 -0
- package/build/events/types/order.status.js.map +1 -0
- package/build/index.d.ts +5 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +5 -0
- package/build/index.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Message, Stan } from 'node-nats-streaming';
|
|
2
|
+
import { Subjects } from './subjects';
|
|
3
|
+
interface Event {
|
|
4
|
+
subject: Subjects;
|
|
5
|
+
data: any;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class Listener<T extends Event> {
|
|
8
|
+
abstract subject: T['subject'];
|
|
9
|
+
abstract queueGroupName: string;
|
|
10
|
+
abstract onMessage(data: T['data'], msg: Message): void;
|
|
11
|
+
private client;
|
|
12
|
+
protected ackWait: number;
|
|
13
|
+
constructor(client: Stan);
|
|
14
|
+
subscriptionOptions(): import("node-nats-streaming").SubscriptionOptions;
|
|
15
|
+
listen(): void;
|
|
16
|
+
parseMessage(msg: Message): any;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=base-listener.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-listener.d.ts","sourceRoot":"","sources":["../../src/events/base-listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,UAAU,KAAK;IACb,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;CACX;AAED,8BAAsB,QAAQ,CAAC,CAAC,SAAS,KAAK;IAC5C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI;IACvD,OAAO,CAAC,MAAM,CAAO;IACrB,SAAS,CAAC,OAAO,SAAY;gBAEjB,MAAM,EAAE,IAAI;IAIxB,mBAAmB;IASnB,MAAM;IAeN,YAAY,CAAC,GAAG,EAAE,OAAO;CAM1B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Listener = void 0;
|
|
4
|
+
class Listener {
|
|
5
|
+
constructor(client) {
|
|
6
|
+
this.ackWait = 5 * 1000;
|
|
7
|
+
this.client = client;
|
|
8
|
+
}
|
|
9
|
+
subscriptionOptions() {
|
|
10
|
+
return this.client
|
|
11
|
+
.subscriptionOptions()
|
|
12
|
+
.setDeliverAllAvailable()
|
|
13
|
+
.setManualAckMode(true)
|
|
14
|
+
.setAckWait(this.ackWait)
|
|
15
|
+
.setDurableName(this.queueGroupName);
|
|
16
|
+
}
|
|
17
|
+
listen() {
|
|
18
|
+
const subscription = this.client.subscribe(this.subject, this.queueGroupName, this.subscriptionOptions());
|
|
19
|
+
subscription.on('message', (msg) => {
|
|
20
|
+
console.log(`Message received: ${this.subject} / ${this.queueGroupName}`);
|
|
21
|
+
const parsedData = this.parseMessage(msg);
|
|
22
|
+
this.onMessage(parsedData, msg);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
parseMessage(msg) {
|
|
26
|
+
const data = msg.getData();
|
|
27
|
+
return typeof data === 'string'
|
|
28
|
+
? JSON.parse(data)
|
|
29
|
+
: JSON.parse(data.toString('utf8'));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.Listener = Listener;
|
|
33
|
+
//# sourceMappingURL=base-listener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-listener.js","sourceRoot":"","sources":["../../src/events/base-listener.ts"],"names":[],"mappings":";;;AAQA,MAAsB,QAAQ;IAO5B,YAAY,MAAY;QAFd,YAAO,GAAG,CAAC,GAAG,IAAI,CAAC;QAG3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,MAAM;aACf,mBAAmB,EAAE;aACrB,sBAAsB,EAAE;aACxB,gBAAgB,CAAC,IAAI,CAAC;aACtB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;aACxB,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC;IAED,MAAM;QACJ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CACxC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,mBAAmB,EAAE,CAC3B,CAAC;QAEF,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAY,EAAE,EAAE;YAC1C,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAE1E,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,GAAY;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,OAAO,IAAI,KAAK,QAAQ;YAC7B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAClB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC;CACF;AAzCD,4BAyCC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Stan } from 'node-nats-streaming';
|
|
2
|
+
import { Subjects } from './subjects';
|
|
3
|
+
interface Event {
|
|
4
|
+
subject: Subjects;
|
|
5
|
+
data: any;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class Publisher<T extends Event> {
|
|
8
|
+
abstract subject: T['subject'];
|
|
9
|
+
private client;
|
|
10
|
+
constructor(client: Stan);
|
|
11
|
+
publish(data: T['data']): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=base-publisher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-publisher.d.ts","sourceRoot":"","sources":["../../src/events/base-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,UAAU,KAAK;IACb,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;CACX;AAED,8BAAsB,SAAS,CAAC,CAAC,SAAS,KAAK;IAC7C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/B,OAAO,CAAC,MAAM,CAAO;gBAET,MAAM,EAAE,IAAI;IAIxB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAWxC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Publisher = void 0;
|
|
4
|
+
class Publisher {
|
|
5
|
+
constructor(client) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
}
|
|
8
|
+
publish(data) {
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
this.client.publish(this.subject, JSON.stringify(data), (err) => {
|
|
11
|
+
if (err) {
|
|
12
|
+
return reject(err);
|
|
13
|
+
}
|
|
14
|
+
console.log('Event published to subject', this.subject);
|
|
15
|
+
resolve();
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.Publisher = Publisher;
|
|
21
|
+
//# sourceMappingURL=base-publisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-publisher.js","sourceRoot":"","sources":["../../src/events/base-publisher.ts"],"names":[],"mappings":";;;AAQA,MAAsB,SAAS;IAI7B,YAAY,MAAY;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,IAAe;QACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC9D,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAnBD,8BAmBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subjects.d.ts","sourceRoot":"","sources":["../../src/events/subjects.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,aAAa,mBAAmB;IAChC,aAAa,mBAAmB;CACjC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Subjects = void 0;
|
|
4
|
+
var Subjects;
|
|
5
|
+
(function (Subjects) {
|
|
6
|
+
Subjects["TicketCreated"] = "ticket:created";
|
|
7
|
+
Subjects["TicketUpdated"] = "ticket:updated";
|
|
8
|
+
})(Subjects || (exports.Subjects = Subjects = {}));
|
|
9
|
+
//# sourceMappingURL=subjects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subjects.js","sourceRoot":"","sources":["../../src/events/subjects.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,4CAAgC,CAAA;IAChC,4CAAgC,CAAA;AAClC,CAAC,EAHW,QAAQ,wBAAR,QAAQ,QAGnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticket-created-event.d.ts","sourceRoot":"","sources":["../../src/events/ticket-created-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC;IAChC,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticket-created-event.js","sourceRoot":"","sources":["../../src/events/ticket-created-event.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticket-updated-event.d.ts","sourceRoot":"","sources":["../../src/events/ticket-updated-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC;IAChC,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticket-updated-event.js","sourceRoot":"","sources":["../../src/events/ticket-updated-event.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order.status.d.ts","sourceRoot":"","sources":["../../../src/events/types/order.status.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IAGrB,OAAO,YAAY;IAKnB,SAAS,cAAc;IAGvB,eAAe,qBAAqB;IAIpC,QAAQ,aAAa;CACtB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrderStatus = void 0;
|
|
4
|
+
var OrderStatus;
|
|
5
|
+
(function (OrderStatus) {
|
|
6
|
+
// When the order has been created, but the
|
|
7
|
+
// ticket it is trying to order has not been reserved
|
|
8
|
+
OrderStatus["Created"] = "created";
|
|
9
|
+
// The ticket the order is trying to reserve has already
|
|
10
|
+
// been reserved, or when the user has cancelled the order.
|
|
11
|
+
// The order expires before payment
|
|
12
|
+
OrderStatus["Cancelled"] = "cancelled";
|
|
13
|
+
// The order has successfully reserved the ticket
|
|
14
|
+
OrderStatus["AwaitingPayment"] = "awaiting:payment";
|
|
15
|
+
// The order has reserved the ticket and the user has
|
|
16
|
+
// provided payment successfully
|
|
17
|
+
OrderStatus["Complete"] = "complete";
|
|
18
|
+
})(OrderStatus || (exports.OrderStatus = OrderStatus = {}));
|
|
19
|
+
//# sourceMappingURL=order.status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order.status.js","sourceRoot":"","sources":["../../../src/events/types/order.status.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAgBX;AAhBD,WAAY,WAAW;IACrB,2CAA2C;IAC3C,qDAAqD;IACrD,kCAAmB,CAAA;IAEnB,wDAAwD;IACxD,2DAA2D;IAC3D,mCAAmC;IACnC,sCAAuB,CAAA;IAEvB,iDAAiD;IACjD,mDAAoC,CAAA;IAEpC,qDAAqD;IACrD,gCAAgC;IAChC,oCAAqB,CAAA;AACvB,CAAC,EAhBW,WAAW,2BAAX,WAAW,QAgBtB"}
|
package/build/index.d.ts
CHANGED
|
@@ -8,6 +8,11 @@ export * from './middlewares/current-user';
|
|
|
8
8
|
export * from './middlewares/error-handler';
|
|
9
9
|
export * from './middlewares/require-auth';
|
|
10
10
|
export * from './middlewares/validate-request';
|
|
11
|
+
export * from './events/base-listener';
|
|
12
|
+
export * from './events/base-publisher';
|
|
13
|
+
export * from './events/subjects';
|
|
14
|
+
export * from './events/ticket-created-event';
|
|
15
|
+
export * from './events/ticket-updated-event';
|
|
11
16
|
import 'express';
|
|
12
17
|
declare global {
|
|
13
18
|
namespace Express {
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAElD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAE/C,OAAO,SAAS,CAAC;AAEjB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,OAAO,CAAC;QAChB,UAAU,OAAO;YACf,OAAO,CAAC,EAAE;gBACR,GAAG,CAAC,EAAE,MAAM,CAAC;aACd,GAAG,IAAI,CAAC;SACV;KACF;CACF;AAED,OAAO,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAElD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAE/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAE9C,OAAO,SAAS,CAAC;AAEjB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,OAAO,CAAC;QAChB,UAAU,OAAO;YACf,OAAO,CAAC,EAAE;gBACR,GAAG,CAAC,EAAE,MAAM,CAAC;aACd,GAAG,IAAI,CAAC;SACV;KACF;CACF;AAED,OAAO,EAAE,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -24,5 +24,10 @@ __exportStar(require("./middlewares/current-user"), exports);
|
|
|
24
24
|
__exportStar(require("./middlewares/error-handler"), exports);
|
|
25
25
|
__exportStar(require("./middlewares/require-auth"), exports);
|
|
26
26
|
__exportStar(require("./middlewares/validate-request"), exports);
|
|
27
|
+
__exportStar(require("./events/base-listener"), exports);
|
|
28
|
+
__exportStar(require("./events/base-publisher"), exports);
|
|
29
|
+
__exportStar(require("./events/subjects"), exports);
|
|
30
|
+
__exportStar(require("./events/ticket-created-event"), exports);
|
|
31
|
+
__exportStar(require("./events/ticket-updated-event"), exports);
|
|
27
32
|
require("express");
|
|
28
33
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,wDAAsC;AACtC,qEAAmD;AACnD,gEAA8C;AAC9C,2DAAyC;AACzC,oEAAkD;AAElD,6DAA2C;AAC3C,8DAA4C;AAC5C,6DAA2C;AAC3C,iEAA+C;AAE/C,mBAAiB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,wDAAsC;AACtC,qEAAmD;AACnD,gEAA8C;AAC9C,2DAAyC;AACzC,oEAAkD;AAElD,6DAA2C;AAC3C,8DAA4C;AAC5C,6DAA2C;AAC3C,iEAA+C;AAE/C,yDAAuC;AACvC,0DAAwC;AACxC,oDAAkC;AAClC,gEAA8C;AAC9C,gEAA8C;AAE9C,mBAAiB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dj_ticketing/common",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./build/index.js",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"cookie-session": "^2.1.1",
|
|
28
28
|
"express": "^4.22.1",
|
|
29
29
|
"express-validator": "^7.3.1",
|
|
30
|
-
"jsonwebtoken": "^9.0.3"
|
|
30
|
+
"jsonwebtoken": "^9.0.3",
|
|
31
|
+
"node-nats-streaming": "^0.3.2"
|
|
31
32
|
}
|
|
32
33
|
}
|