@ooneex/pub-sub 1.1.11 → 1.2.0

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/index.d.ts CHANGED
@@ -23,6 +23,7 @@ interface IPubSubClient<Data extends Record<string, ScalarType> = Record<string,
23
23
  subscribe: (channel: string, handler: PubSubMessageHandlerType<Data>) => Promise<void>;
24
24
  unsubscribe: (channel: string) => Promise<void>;
25
25
  unsubscribeAll: () => Promise<void>;
26
+ close: () => void;
26
27
  }
27
28
  interface IPubSub<Data extends Record<string, ScalarType> = Record<string, ScalarType>> {
28
29
  getChannel: () => Promise<string> | string;
@@ -78,5 +79,6 @@ declare class RedisPubSubClient<Data extends Record<string, ScalarType3>> implem
78
79
  subscribe(channel: string, handler: PubSubMessageHandlerType<Data>): Promise<void>;
79
80
  unsubscribe(channel: string): Promise<void>;
80
81
  unsubscribeAll(): Promise<void>;
82
+ close(): void;
81
83
  }
82
84
  export { decorator, RedisPubSubOptionsType, RedisPubSubClient as RedisPubSub, PubSubMessageHandlerType, PubSubException, PubSubClassType, PubSub, IPubSubClient, IPubSub };
package/dist/index.js CHANGED
@@ -110,16 +110,16 @@ class RedisPubSubClient {
110
110
  await this.client.publish(config.channel, message);
111
111
  } catch (error) {
112
112
  throw new PubSubException(`Failed to publish message to channel "${config.channel}": ${error}`, "PUBLISH_FAILED");
113
- } finally {
114
- this.client.close();
115
113
  }
116
114
  }
117
115
  async subscribe(channel, handler) {
118
116
  try {
119
117
  await this.connectSubscriber();
120
118
  await this.subscriber?.subscribe(channel, (message, ch) => {
121
- const data = JSON.parse(message);
122
- handler({ data, channel: ch });
119
+ try {
120
+ const data = JSON.parse(message);
121
+ handler({ data, channel: ch });
122
+ } catch {}
123
123
  });
124
124
  } catch (error) {
125
125
  throw new PubSubException(`Failed to subscribe to channel "${channel}": ${error}`, "SUBSCRIBE_FAILED");
@@ -145,6 +145,11 @@ class RedisPubSubClient {
145
145
  throw new PubSubException(`Failed to unsubscribe from all channels: ${error}`, "UNSUBSCRIBE_ALL_FAILED");
146
146
  }
147
147
  }
148
+ close() {
149
+ this.subscriber?.close();
150
+ this.subscriber = null;
151
+ this.client.close();
152
+ }
148
153
  }
149
154
  RedisPubSubClient = __legacyDecorateClassTS([
150
155
  injectable(),
@@ -161,4 +166,4 @@ export {
161
166
  PubSub
162
167
  };
163
168
 
164
- //# debugId=8FFF57400EB6EB8664756E2164756E21
169
+ //# debugId=6978E0A4F8C5CD4064756E2164756E21
package/dist/index.js.map CHANGED
@@ -5,9 +5,9 @@
5
5
  "import { container, EContainerScope } from \"@ooneex/container\";\nimport type { PubSubClassType } from \"./types\";\n\nexport const decorator = {\n pubSub: (scope: EContainerScope = EContainerScope.Singleton) => {\n return (target: PubSubClassType): void => {\n container.add(target, scope);\n };\n },\n};\n",
6
6
  "import type { ScalarType } from \"@ooneex/types\";\nimport type { ServerWebSocket } from \"bun\";\nimport type { IPubSub, IPubSubClient } from \"./types\";\n\nexport abstract class PubSub<Data extends Record<string, ScalarType> = Record<string, ScalarType>>\n implements IPubSub<Data>\n{\n protected ws: ServerWebSocket | undefined;\n\n constructor(protected readonly client: IPubSubClient<Data>) {}\n\n public abstract getChannel(): string | Promise<string>;\n public abstract handler(context: { data: Data; channel: string }): Promise<void> | void;\n\n public async publish(data: Data, options?: { ws?: ServerWebSocket }): Promise<void> {\n this.ws = options?.ws;\n await this.client.publish({\n channel: await this.getChannel(),\n data,\n });\n }\n\n public async subscribe(ws?: ServerWebSocket): Promise<void> {\n this.ws = ws;\n await this.client.subscribe(await this.getChannel(), this.handler.bind(this));\n }\n\n public async unsubscribe(ws?: ServerWebSocket): Promise<void> {\n this.ws = ws;\n await this.client.unsubscribe(await this.getChannel());\n }\n\n public async unsubscribeAll(ws?: ServerWebSocket): Promise<void> {\n this.ws = ws;\n await this.client.unsubscribeAll();\n }\n}\n",
7
7
  "import { Exception } from \"@ooneex/exception\";\nimport { HttpStatus } from \"@ooneex/http-status\";\n\nexport class PubSubException extends Exception {\n constructor(message: string, key: string, data: Record<string, unknown> = {}) {\n super(message, {\n key,\n status: HttpStatus.Code.InternalServerError,\n data,\n });\n this.name = \"PubSubException\";\n }\n}\n",
8
- "import { AppEnv } from \"@ooneex/app-env\";\nimport { inject, injectable } from \"@ooneex/container\";\nimport type { ScalarType } from \"@ooneex/types\";\nimport { PubSubException } from \"./PubSubException\";\nimport type { IPubSubClient, PubSubMessageHandlerType, RedisPubSubOptionsType } from \"./types\";\n\n@injectable()\nexport class RedisPubSubClient<Data extends Record<string, ScalarType>> implements IPubSubClient<Data> {\n private client: Bun.RedisClient;\n private subscriber: Bun.RedisClient | null = null;\n\n constructor(\n @inject(AppEnv) private readonly env: AppEnv,\n options: RedisPubSubOptionsType = {},\n ) {\n const connectionString = options.connectionString || this.env.PUBSUB_REDIS_URL;\n\n if (!connectionString) {\n throw new PubSubException(\n \"Redis connection string is required. Please provide a connection string either through the constructor options or set the PUBSUB_REDIS_URL environment variable.\",\n \"CONNECTION_FAILED\",\n );\n }\n\n const { connectionString: _, ...userOptions } = options;\n\n const defaultOptions = {\n connectionTimeout: 10_000,\n idleTimeout: 30_000,\n autoReconnect: true,\n maxRetries: 3,\n enableOfflineQueue: true,\n enableAutoPipelining: true,\n };\n\n const clientOptions = { ...defaultOptions, ...userOptions };\n\n this.client = new Bun.RedisClient(connectionString, clientOptions);\n }\n\n private async connect(): Promise<void> {\n if (!this.client.connected) {\n await this.client.connect();\n }\n }\n\n private async connectSubscriber(): Promise<void> {\n if (!this.subscriber) {\n this.subscriber = await this.client.duplicate();\n }\n\n if (!this.subscriber.connected) {\n await this.subscriber.connect();\n }\n }\n\n public async publish(config: { channel: string; data: Data }): Promise<void> {\n try {\n await this.connect();\n const message = JSON.stringify(config.data);\n await this.client.publish(config.channel, message);\n } catch (error) {\n throw new PubSubException(`Failed to publish message to channel \"${config.channel}\": ${error}`, \"PUBLISH_FAILED\");\n } finally {\n this.client.close();\n }\n }\n\n public async subscribe(channel: string, handler: PubSubMessageHandlerType<Data>): Promise<void> {\n try {\n await this.connectSubscriber();\n await this.subscriber?.subscribe(channel, (message: string, ch: string) => {\n const data = JSON.parse(message) as Data;\n handler({ data, channel: ch });\n });\n } catch (error) {\n throw new PubSubException(`Failed to subscribe to channel \"${channel}\": ${error}`, \"SUBSCRIBE_FAILED\");\n }\n }\n\n public async unsubscribe(channel: string): Promise<void> {\n try {\n if (!this.subscriber) {\n return;\n }\n\n await this.subscriber.unsubscribe(channel);\n } catch (error) {\n throw new PubSubException(`Failed to unsubscribe from channel \"${channel}\": ${error}`, \"UNSUBSCRIBE_FAILED\");\n }\n }\n\n public async unsubscribeAll(): Promise<void> {\n try {\n if (!this.subscriber) {\n return;\n }\n\n await this.subscriber.unsubscribe();\n } catch (error) {\n throw new PubSubException(`Failed to unsubscribe from all channels: ${error}`, \"UNSUBSCRIBE_ALL_FAILED\");\n }\n }\n}\n"
8
+ "import { AppEnv } from \"@ooneex/app-env\";\nimport { inject, injectable } from \"@ooneex/container\";\nimport type { ScalarType } from \"@ooneex/types\";\nimport { PubSubException } from \"./PubSubException\";\nimport type { IPubSubClient, PubSubMessageHandlerType, RedisPubSubOptionsType } from \"./types\";\n\n@injectable()\nexport class RedisPubSubClient<Data extends Record<string, ScalarType>> implements IPubSubClient<Data> {\n private client: Bun.RedisClient;\n private subscriber: Bun.RedisClient | null = null;\n\n constructor(\n @inject(AppEnv) private readonly env: AppEnv,\n options: RedisPubSubOptionsType = {},\n ) {\n const connectionString = options.connectionString || this.env.PUBSUB_REDIS_URL;\n\n if (!connectionString) {\n throw new PubSubException(\n \"Redis connection string is required. Please provide a connection string either through the constructor options or set the PUBSUB_REDIS_URL environment variable.\",\n \"CONNECTION_FAILED\",\n );\n }\n\n const { connectionString: _, ...userOptions } = options;\n\n const defaultOptions = {\n connectionTimeout: 10_000,\n idleTimeout: 30_000,\n autoReconnect: true,\n maxRetries: 3,\n enableOfflineQueue: true,\n enableAutoPipelining: true,\n };\n\n const clientOptions = { ...defaultOptions, ...userOptions };\n\n this.client = new Bun.RedisClient(connectionString, clientOptions);\n }\n\n private async connect(): Promise<void> {\n if (!this.client.connected) {\n await this.client.connect();\n }\n }\n\n private async connectSubscriber(): Promise<void> {\n if (!this.subscriber) {\n this.subscriber = await this.client.duplicate();\n }\n\n if (!this.subscriber.connected) {\n await this.subscriber.connect();\n }\n }\n\n public async publish(config: { channel: string; data: Data }): Promise<void> {\n try {\n await this.connect();\n const message = JSON.stringify(config.data);\n await this.client.publish(config.channel, message);\n } catch (error) {\n throw new PubSubException(`Failed to publish message to channel \"${config.channel}\": ${error}`, \"PUBLISH_FAILED\");\n }\n }\n\n public async subscribe(channel: string, handler: PubSubMessageHandlerType<Data>): Promise<void> {\n try {\n await this.connectSubscriber();\n await this.subscriber?.subscribe(channel, (message: string, ch: string) => {\n try {\n const data = JSON.parse(message) as Data;\n handler({ data, channel: ch });\n } catch {\n // Ignore malformed messages\n }\n });\n } catch (error) {\n throw new PubSubException(`Failed to subscribe to channel \"${channel}\": ${error}`, \"SUBSCRIBE_FAILED\");\n }\n }\n\n public async unsubscribe(channel: string): Promise<void> {\n try {\n if (!this.subscriber) {\n return;\n }\n\n await this.subscriber.unsubscribe(channel);\n } catch (error) {\n throw new PubSubException(`Failed to unsubscribe from channel \"${channel}\": ${error}`, \"UNSUBSCRIBE_FAILED\");\n }\n }\n\n public async unsubscribeAll(): Promise<void> {\n try {\n if (!this.subscriber) {\n return;\n }\n\n await this.subscriber.unsubscribe();\n } catch (error) {\n throw new PubSubException(`Failed to unsubscribe from all channels: ${error}`, \"UNSUBSCRIBE_ALL_FAILED\");\n }\n }\n\n public close(): void {\n this.subscriber?.close();\n this.subscriber = null;\n this.client.close();\n }\n}\n"
9
9
  ],
10
- "mappings": "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",
11
- "debugId": "8FFF57400EB6EB8664756E2164756E21",
10
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAGO,IAAM,YAAY;AAAA,EACvB,QAAQ,CAAC,QAAyB,gBAAgB,cAAc;AAAA,IAC9D,OAAO,CAAC,WAAkC;AAAA,MACxC,UAAU,IAAI,QAAQ,KAAK;AAAA;AAAA;AAGjC;;ACLO,MAAe,OAEtB;AAAA,EAGiC;AAAA,EAFrB;AAAA,EAEV,WAAW,CAAoB,QAA6B;AAAA,IAA7B;AAAA;AAAA,OAKlB,QAAO,CAAC,MAAY,SAAmD;AAAA,IAClF,KAAK,KAAK,SAAS;AAAA,IACnB,MAAM,KAAK,OAAO,QAAQ;AAAA,MACxB,SAAS,MAAM,KAAK,WAAW;AAAA,MAC/B;AAAA,IACF,CAAC;AAAA;AAAA,OAGU,UAAS,CAAC,IAAqC;AAAA,IAC1D,KAAK,KAAK;AAAA,IACV,MAAM,KAAK,OAAO,UAAU,MAAM,KAAK,WAAW,GAAG,KAAK,QAAQ,KAAK,IAAI,CAAC;AAAA;AAAA,OAGjE,YAAW,CAAC,IAAqC;AAAA,IAC5D,KAAK,KAAK;AAAA,IACV,MAAM,KAAK,OAAO,YAAY,MAAM,KAAK,WAAW,CAAC;AAAA;AAAA,OAG1C,eAAc,CAAC,IAAqC;AAAA,IAC/D,KAAK,KAAK;AAAA,IACV,MAAM,KAAK,OAAO,eAAe;AAAA;AAErC;;ACpCA;AACA;AAAA;AAEO,MAAM,wBAAwB,UAAU;AAAA,EAC7C,WAAW,CAAC,SAAiB,KAAa,OAAgC,CAAC,GAAG;AAAA,IAC5E,MAAM,SAAS;AAAA,MACb;AAAA,MACA,QAAQ,WAAW,KAAK;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,IACD,KAAK,OAAO;AAAA;AAEhB;;ACZA;AACA;AAMO,MAAM,kBAA0F;AAAA,EAKlE;AAAA,EAJ3B;AAAA,EACA,aAAqC;AAAA,EAE7C,WAAW,CACwB,KACjC,UAAkC,CAAC,GACnC;AAAA,IAFiC;AAAA,IAGjC,MAAM,mBAAmB,QAAQ,oBAAoB,KAAK,IAAI;AAAA,IAE9D,IAAI,CAAC,kBAAkB;AAAA,MACrB,MAAM,IAAI,gBACR,oKACA,mBACF;AAAA,IACF;AAAA,IAEA,QAAQ,kBAAkB,MAAM,gBAAgB;AAAA,IAEhD,MAAM,iBAAiB;AAAA,MACrB,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,oBAAoB;AAAA,MACpB,sBAAsB;AAAA,IACxB;AAAA,IAEA,MAAM,gBAAgB,KAAK,mBAAmB,YAAY;AAAA,IAE1D,KAAK,SAAS,IAAI,IAAI,YAAY,kBAAkB,aAAa;AAAA;AAAA,OAGrD,QAAO,GAAkB;AAAA,IACrC,IAAI,CAAC,KAAK,OAAO,WAAW;AAAA,MAC1B,MAAM,KAAK,OAAO,QAAQ;AAAA,IAC5B;AAAA;AAAA,OAGY,kBAAiB,GAAkB;AAAA,IAC/C,IAAI,CAAC,KAAK,YAAY;AAAA,MACpB,KAAK,aAAa,MAAM,KAAK,OAAO,UAAU;AAAA,IAChD;AAAA,IAEA,IAAI,CAAC,KAAK,WAAW,WAAW;AAAA,MAC9B,MAAM,KAAK,WAAW,QAAQ;AAAA,IAChC;AAAA;AAAA,OAGW,QAAO,CAAC,QAAwD;AAAA,IAC3E,IAAI;AAAA,MACF,MAAM,KAAK,QAAQ;AAAA,MACnB,MAAM,UAAU,KAAK,UAAU,OAAO,IAAI;AAAA,MAC1C,MAAM,KAAK,OAAO,QAAQ,OAAO,SAAS,OAAO;AAAA,MACjD,OAAO,OAAO;AAAA,MACd,MAAM,IAAI,gBAAgB,yCAAyC,OAAO,aAAa,SAAS,gBAAgB;AAAA;AAAA;AAAA,OAIvG,UAAS,CAAC,SAAiB,SAAwD;AAAA,IAC9F,IAAI;AAAA,MACF,MAAM,KAAK,kBAAkB;AAAA,MAC7B,MAAM,KAAK,YAAY,UAAU,SAAS,CAAC,SAAiB,OAAe;AAAA,QACzE,IAAI;AAAA,UACF,MAAM,OAAO,KAAK,MAAM,OAAO;AAAA,UAC/B,QAAQ,EAAE,MAAM,SAAS,GAAG,CAAC;AAAA,UAC7B,MAAM;AAAA,OAGT;AAAA,MACD,OAAO,OAAO;AAAA,MACd,MAAM,IAAI,gBAAgB,mCAAmC,aAAa,SAAS,kBAAkB;AAAA;AAAA;AAAA,OAI5F,YAAW,CAAC,SAAgC;AAAA,IACvD,IAAI;AAAA,MACF,IAAI,CAAC,KAAK,YAAY;AAAA,QACpB;AAAA,MACF;AAAA,MAEA,MAAM,KAAK,WAAW,YAAY,OAAO;AAAA,MACzC,OAAO,OAAO;AAAA,MACd,MAAM,IAAI,gBAAgB,uCAAuC,aAAa,SAAS,oBAAoB;AAAA;AAAA;AAAA,OAIlG,eAAc,GAAkB;AAAA,IAC3C,IAAI;AAAA,MACF,IAAI,CAAC,KAAK,YAAY;AAAA,QACpB;AAAA,MACF;AAAA,MAEA,MAAM,KAAK,WAAW,YAAY;AAAA,MAClC,OAAO,OAAO;AAAA,MACd,MAAM,IAAI,gBAAgB,4CAA4C,SAAS,wBAAwB;AAAA;AAAA;AAAA,EAIpG,KAAK,GAAS;AAAA,IACnB,KAAK,YAAY,MAAM;AAAA,IACvB,KAAK,aAAa;AAAA,IAClB,KAAK,OAAO,MAAM;AAAA;AAEtB;AAxGa,oBAAN;AAAA,EADN,WAAW;AAAA,EAMP,kCAAO,MAAM;AAAA,EALX;AAAA;AAAA;AAAA;AAAA,GAAM;",
11
+ "debugId": "6978E0A4F8C5CD4064756E2164756E21",
12
12
  "names": []
13
13
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ooneex/pub-sub",
3
3
  "description": "Publish-subscribe messaging system for decoupled, event-driven communication between application components with typed event channels",
4
- "version": "1.1.11",
4
+ "version": "1.2.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist",
@@ -28,13 +28,13 @@
28
28
  "test": "bun test tests"
29
29
  },
30
30
  "dependencies": {
31
- "@ooneex/app-env": "1.3.4",
32
- "@ooneex/container": "1.4.0",
33
- "@ooneex/exception": "1.2.6",
34
- "@ooneex/http-status": "1.1.9"
31
+ "@ooneex/app-env": "^1.4.0",
32
+ "@ooneex/container": "^1.4.4",
33
+ "@ooneex/exception": "^1.2.7",
34
+ "@ooneex/http-status": "^1.1.9"
35
35
  },
36
36
  "devDependencies": {
37
- "@ooneex/types": "1.3.4"
37
+ "@ooneex/types": "^1.3.5"
38
38
  },
39
39
  "keywords": [
40
40
  "bun",