@jiangdyjp2/common 1.0.11 → 1.0.12

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.
@@ -0,0 +1,22 @@
1
+ import natsPkg from "node-nats-streaming";
2
+ import { Subjects } from "./subject.js";
3
+ declare const connect: typeof natsPkg.connect, Message: typeof natsPkg.Message;
4
+ type Stan = ReturnType<typeof connect>;
5
+ type Msg = InstanceType<typeof Message>;
6
+ interface Event {
7
+ subject: Subjects;
8
+ data: any;
9
+ }
10
+ export declare abstract class Listener<T extends Event> {
11
+ abstract subject: T['subject'];
12
+ abstract queueGroupName: string;
13
+ abstract onMessage(data: T['data'], msg: Msg): void;
14
+ private client;
15
+ protected ackWait: number;
16
+ constructor(client: Stan);
17
+ subscriptionOptions(): natsPkg.SubscriptionOptions;
18
+ listen(): void;
19
+ parseMessage(msg: Msg): any;
20
+ }
21
+ export {};
22
+ //# 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,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,QAAA,MAAQ,OAAO,0BAAE,OAAO,wBAAY,CAAC;AACrC,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AACvC,KAAK,GAAG,GAAG,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC;AAIxC,UAAU,KAAK;IACX,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;CACb;AAKD,8BAAsB,QAAQ,CAAC,CAAC,SAAS,KAAK;IAI1C,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,GAAG,GAAG,IAAI;IAEnD,OAAO,CAAC,MAAM,CAAO;IACrB,SAAS,CAAC,OAAO,SAAY;gBAEjB,MAAM,EAAE,IAAI;IAIxB,mBAAmB;IASnB,MAAM;IAiBN,YAAY,CAAC,GAAG,EAAE,GAAG;CAMxB"}
@@ -0,0 +1,35 @@
1
+ import natsPkg from "node-nats-streaming";
2
+ import { Subjects } from "./subject.js";
3
+ const { connect, Message } = natsPkg;
4
+ // whenever we try to extend it,
5
+ // we're going to have to provide some custom type of "T" to this.
6
+ // <T extends Event> is a kind of argument for types
7
+ export class Listener {
8
+ client;
9
+ ackWait = 5 * 1000;
10
+ constructor(client) {
11
+ this.client = client;
12
+ }
13
+ subscriptionOptions() {
14
+ return this.client
15
+ .subscriptionOptions()
16
+ .setDeliverAllAvailable()
17
+ .setManualAckMode(true)
18
+ .setAckWait(this.ackWait)
19
+ .setDurableName(this.queueGroupName);
20
+ }
21
+ listen() {
22
+ const subscription = this.client.subscribe(this.subject, this.queueGroupName, this.subscriptionOptions());
23
+ subscription.on('message', (msg) => {
24
+ console.log(`Received event #${this.subject} / ${this.queueGroupName}`);
25
+ const parseData = this.parseMessage(msg);
26
+ this.onMessage(parseData, msg);
27
+ });
28
+ }
29
+ parseMessage(msg) {
30
+ const data = msg.getData();
31
+ return typeof data === 'string'
32
+ ? JSON.parse(data) : JSON.parse(data.toString('utf8'));
33
+ }
34
+ }
35
+ //# sourceMappingURL=base-listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-listener.js","sourceRoot":"","sources":["../../src/events/base-listener.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;AAWrC,kCAAkC;AAClC,kEAAkE;AAClE,oDAAoD;AACpD,MAAM,OAAgB,QAAQ;IAQlB,MAAM,CAAO;IACX,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC;IAE7B,YAAY,MAAY;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,mBAAmB;QACf,OAAO,IAAI,CAAC,MAAM;aACb,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;IAC7C,CAAC;IAED,MAAM;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CACtC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,mBAAmB,EAAE,CAC7B,CAAC;QAEF,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAQ,EAAE,EAAE;YACpC,OAAO,CAAC,GAAG,CACP,mBAAmB,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,cAAc,EAAE,CAC7D,CAAC;YAEF,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CAAC,GAAQ;QACjB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,OAAO,IAAI,KAAK,QAAQ;YAC3B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,CAAC;CAEJ"}
@@ -0,0 +1,16 @@
1
+ import natsPkg from "node-nats-streaming";
2
+ import type { Subjects } from "./subject.js";
3
+ declare const connect: typeof natsPkg.connect;
4
+ type Stan = ReturnType<typeof connect>;
5
+ interface Event {
6
+ subject: Subjects;
7
+ data: any;
8
+ }
9
+ export declare abstract class Publisher<T extends Event> {
10
+ abstract subject: T['subject'];
11
+ private client;
12
+ constructor(client: Stan);
13
+ publish(data: T['data']): Promise<void>;
14
+ }
15
+ export {};
16
+ //# 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,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,QAAA,MAAQ,OAAO,wBAAY,CAAC;AAC5B,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAEvC,UAAU,KAAK;IACX,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,GAAG,CAAA;CACZ;AAED,8BAAsB,SAAS,CAAC,CAAC,SAAS,KAAK;IAC3C,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;CAW1C"}
@@ -0,0 +1,36 @@
1
+ import natsPkg from "node-nats-streaming";
2
+ const { connect } = natsPkg;
3
+ export class Publisher {
4
+ client;
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
+ // import { EventEmitter } from 'events'; // "types": ["node"],
21
+ // console.clear();
22
+ // const stan: InstanceType<typeof Stan> = connect('ticketing', 'abc', {
23
+ // url: 'http://localhost:4222'
24
+ // }); //client
25
+ // (stan as unknown as EventEmitter).on('connect', () => {
26
+ // console.log('publisher connected to NATS');
27
+ // const data = JSON.stringify({
28
+ // id: '123',
29
+ // title: 'concert',
30
+ // price: 20
31
+ // })
32
+ // stan.publish('ticket:created', data, () => {
33
+ // console.log('Envent published!!!!');
34
+ // });
35
+ // });
36
+ //# sourceMappingURL=base-publisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-publisher.js","sourceRoot":"","sources":["../../src/events/base-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAG1C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;AAQ5B,MAAM,OAAgB,SAAS;IAEnB,MAAM,CAAO;IAErB,YAAY,MAAY;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,IAAe;QACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC5D,IAAI,GAAG,EAAE,CAAC;oBACN,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzD,OAAO,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AACD,+DAA+D;AAE/D,mBAAmB;AAEnB,wEAAwE;AACxE,mCAAmC;AACnC,eAAe;AAEf,0DAA0D;AAC1D,kDAAkD;AAElD,oCAAoC;AACpC,qBAAqB;AACrB,4BAA4B;AAC5B,oBAAoB;AACpB,SAAS;AACT,mDAAmD;AACnD,+CAA+C;AAC/C,UAAU;AACV,MAAM"}
@@ -0,0 +1,5 @@
1
+ export declare enum Subjects {
2
+ TicketCreated = "ticket:created",
3
+ TicketUpdated = "ticket:updated"
4
+ }
5
+ //# sourceMappingURL=subject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/events/subject.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAChB,aAAa,mBAAmB;IAChC,aAAa,mBAAmB;CACnC"}
@@ -0,0 +1,6 @@
1
+ export var Subjects;
2
+ (function (Subjects) {
3
+ Subjects["TicketCreated"] = "ticket:created";
4
+ Subjects["TicketUpdated"] = "ticket:updated";
5
+ })(Subjects || (Subjects = {}));
6
+ //# sourceMappingURL=subject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject.js","sourceRoot":"","sources":["../../src/events/subject.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAChB,4CAAgC,CAAA;IAChC,4CAAgC,CAAA;AACpC,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB"}
@@ -0,0 +1,11 @@
1
+ import { Subjects } from "./subject.js";
2
+ export interface TicketCreatedEvent {
3
+ subject: Subjects.TicketCreated;
4
+ data: {
5
+ id: string;
6
+ title: string;
7
+ price: number;
8
+ userId: string;
9
+ };
10
+ }
11
+ //# sourceMappingURL=ticket-created-event.d.ts.map
@@ -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,cAAc,CAAC;AAExC,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC;IAChC,IAAI,EAAE;QACF,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAA;KACjB,CAAA;CACJ"}
@@ -0,0 +1,2 @@
1
+ import { Subjects } from "./subject.js";
2
+ //# sourceMappingURL=ticket-created-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket-created-event.js","sourceRoot":"","sources":["../../src/events/ticket-created-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Subjects } from "./subject.js";
2
+ export interface TicketUpdatedEvent {
3
+ subject: Subjects.TicketUpdated;
4
+ data: {
5
+ id: string;
6
+ title: string;
7
+ price: number;
8
+ userId: string;
9
+ };
10
+ }
11
+ //# sourceMappingURL=ticket-updated-event.d.ts.map
@@ -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,cAAc,CAAC;AAExC,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC;IAChC,IAAI,EAAE;QACF,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAA;KACjB,CAAA;CACJ"}
@@ -0,0 +1,2 @@
1
+ import { Subjects } from "./subject.js";
2
+ //# sourceMappingURL=ticket-updated-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket-updated-event.js","sourceRoot":"","sources":["../../src/events/ticket-updated-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC"}
package/build/index.d.ts CHANGED
@@ -8,4 +8,9 @@ export * from './middlewares/current-user.js';
8
8
  export * from './middlewares/error-handler.js';
9
9
  export * from './middlewares/require-auth.js';
10
10
  export * from './middlewares/validate-request.js';
11
+ export * from './events/base-listener.js';
12
+ export * from './events/base-publisher.js';
13
+ export * from './events/subject.js';
14
+ export * from './events/ticket-created-event.js';
15
+ export * from './events/ticket-updated-event.js';
11
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AAErD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AAErD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAElD,cAAc,2BAA2B,CAAA;AACzC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA"}
package/build/index.js CHANGED
@@ -8,4 +8,9 @@ export * from './middlewares/current-user.js';
8
8
  export * from './middlewares/error-handler.js';
9
9
  export * from './middlewares/require-auth.js';
10
10
  export * from './middlewares/validate-request.js';
11
+ export * from './events/base-listener.js';
12
+ export * from './events/base-publisher.js';
13
+ export * from './events/subject.js';
14
+ export * from './events/ticket-created-event.js';
15
+ export * from './events/ticket-updated-event.js';
11
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AAErD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AAErD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAElD,cAAc,2BAA2B,CAAA;AACzC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jiangdyjp2/common",
3
- "version": "1.0.11",
3
+ "version": "1.0.12",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",
@@ -31,6 +31,7 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "express-validator": "^7.3.1",
34
- "jsonwebtoken": "^9.0.3"
34
+ "jsonwebtoken": "^9.0.3",
35
+ "node-nats-streaming": "^0.3.2"
35
36
  }
36
37
  }
package/readme.txt CHANGED
@@ -112,3 +112,5 @@ npm install -D vitest
112
112
 
113
113
  (14) Libraries ( say @jiangdyjp2/common ) should never ship @types/* in dependencies
114
114
 
115
+ (15) when updated your @jiangdyjp2/common, you need to execute "npm update @jiangdyjp2/common" in auth folder.
116
+