vendease-common
Advanced tools
Comparing version 2.0.3 to 2.1.1
@@ -9,12 +9,11 @@ import { Msg, JsMsg } from "nats"; | ||
} | ||
export declare abstract class BaseStream<T extends Event> extends Stream { | ||
export declare abstract class BaseStream extends Stream { | ||
protected readonly options: NatsJetStreamServerOptions; | ||
abstract subject: T["subject"]; | ||
abstract queueGroupName: string; | ||
protected abstract onMessage(data: T["data"], msg: Msg | JsMsg): Promise<void>; | ||
protected abstract onMessage<T extends Event>(data: T["data"], msg: Msg | JsMsg): Promise<void>; | ||
constructor(options: NatsJetStreamServerOptions); | ||
protected handleMessage(data: T["data"], msg: Msg | JsMsg): Promise<void>; | ||
protected handleMessage<T extends Event>(data: T["data"], msg: Msg | JsMsg): Promise<void>; | ||
listen(): Promise<void>; | ||
publish(data: T["data"]): Promise<void>; | ||
publish<T extends Event>(subject: string, data: T["data"]): Promise<void>; | ||
} | ||
export {}; |
@@ -32,7 +32,7 @@ "use strict"; | ||
} | ||
publish(data) { | ||
publish(subject, data) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
try { | ||
yield this.publishMessage(this.subject, data); | ||
app_1.logger.info(`Event published to subject [${this.subject}]`); | ||
yield this.publishMessage(subject, data); | ||
app_1.logger.info(`Event published to subject [${subject}]`); | ||
} | ||
@@ -39,0 +39,0 @@ catch (error) { |
@@ -34,6 +34,6 @@ "use strict"; | ||
}; | ||
class ExampleStream extends __1.BaseStream { | ||
// Singleton | ||
class SingleInstanceStream extends __1.BaseStream { | ||
constructor() { | ||
super(...arguments); | ||
this.subject = v1_1.Subjects.CompanyCreated; | ||
this.queueGroupName = "sample group"; | ||
@@ -44,2 +44,14 @@ } | ||
console.log(data); | ||
console.log(msg.subject); | ||
/** | ||
switch(msg.subject){ | ||
case "Subjects.UserCreated": | ||
return this.handleUserCreated(data) | ||
case Subjects.CompanyCreated: | ||
return this.handleCompanyCreated(data) | ||
default: | ||
return "i probably don't understand this message" | ||
} | ||
**/ | ||
msg.ack(); | ||
@@ -51,7 +63,6 @@ }); | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const stream = new ExampleStream(config); | ||
const stream = new SingleInstanceStream(config); | ||
yield stream.connect(); | ||
yield stream.publish({ id: 10, name: "company" }); | ||
yield stream.publish({ id: 20, name: "company" }); | ||
yield stream.publish({ id: 30, name: "company" }); | ||
yield stream.publish(v1_1.Subjects.UserCreated, { id: 20, first_name: "bola", last_name: "tinubu" }); | ||
yield stream.publish(v1_1.Subjects.CompanyCreated, { id: 20, name: "dayo's company company created" }); | ||
yield stream.listen(); | ||
@@ -58,0 +69,0 @@ yield stream.close(); |
@@ -19,6 +19,5 @@ import { Msg, JsMsg } from "nats"; | ||
protected get subjects(): string[]; | ||
setStream(stream: string): void; | ||
setConsumer(name: string): void; | ||
set stream(stream: string); | ||
protected publishMessage(subject: string, data: any): Promise<void>; | ||
protected consume(callback: (data: any, msg: Msg | JsMsg) => Promise<void>): Promise<void>; | ||
} |
@@ -82,8 +82,5 @@ "use strict"; | ||
} | ||
setStream(stream) { | ||
set stream(stream) { | ||
this.currentStream = stream; | ||
} | ||
setConsumer(name) { | ||
this.consumer = name; | ||
} | ||
publishMessage(subject, data) { | ||
@@ -90,0 +87,0 @@ return __awaiter(this, void 0, void 0, function* () { |
{ | ||
"name": "vendease-common", | ||
"version": "2.0.3", | ||
"version": "2.1.1", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "./build/index.js", |
@@ -31,9 +31,24 @@ # vendease backend common | ||
} | ||
class ExampleStream extends BaseStream<ICreateCompany> { | ||
subject: Subjects.CompanyCreated = Subjects.CompanyCreated; | ||
interface IUserCreatedCompany { | ||
subject: Subjects.UserCreated; | ||
data: { id: number; first_name: string; last_name: string }; | ||
} | ||
// Singleton | ||
class SingleInstanceStream extends BaseStream { | ||
queueGroupName: string = "sample group"; | ||
protected async onMessage(data: any, msg: JsMsg): Promise<void> { | ||
// consume data | ||
console.log(data); | ||
console.log(msg.subject); | ||
switch (msg.subject) { | ||
case "Subjects.UserCreated": | ||
return this.handleUserCreated(data); | ||
case Subjects.CompanyCreated: | ||
return this.handleCompanyCreated(data); | ||
default: | ||
return "i probably don't understand this message"; | ||
} | ||
msg.ack(); | ||
@@ -44,8 +59,8 @@ } | ||
export async function testConnection() { | ||
const stream = new ExampleStream(CONFIG); | ||
const stream = new SingleInstanceStream(config); | ||
await stream.connect(); | ||
await stream.publish({ id: 10, name: "company" }); | ||
await stream.publish({ id: 20, name: "company" }); | ||
await stream.publish({ id: 30, name: "company" }); | ||
await stream.publish<IUserCreatedCompany>(Subjects.UserCreated, { id: 20, first_name: "bola", last_name: "tinubu" }); | ||
await stream.publish<ICreateCompany>(Subjects.CompanyCreated, { id: 20, name: "dayo's company company created" }); | ||
@@ -52,0 +67,0 @@ await stream.listen(); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
426160
11912
70