@geekmidas/events 1.1.0 → 1.1.1

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.
Files changed (42) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{PgBossConnection-wLwq2r13.cjs → PgBossConnection-B71ssr72.cjs} +2 -2
  3. package/dist/PgBossConnection-B71ssr72.cjs.map +1 -0
  4. package/dist/{PgBossConnection-BZUA7Is0.mjs → PgBossConnection-Bj_Wo1lQ.mjs} +2 -2
  5. package/dist/PgBossConnection-Bj_Wo1lQ.mjs.map +1 -0
  6. package/dist/{PgBossConnection-Cd4x7NuY.d.mts → PgBossConnection-DCfLGoHx.d.mts} +2 -2
  7. package/dist/{PgBossConnection-YdhixTjL.d.cts.map → PgBossConnection-DCfLGoHx.d.mts.map} +1 -1
  8. package/dist/{PgBossConnection-YdhixTjL.d.cts → PgBossConnection-oto_CAbP.d.cts} +2 -2
  9. package/dist/{PgBossConnection-Cd4x7NuY.d.mts.map → PgBossConnection-oto_CAbP.d.cts.map} +1 -1
  10. package/dist/{PgBossPublisher-B6VE_5KT.mjs → PgBossPublisher-Bwo7qSoH.mjs} +11 -7
  11. package/dist/PgBossPublisher-Bwo7qSoH.mjs.map +1 -0
  12. package/dist/{PgBossPublisher-b0deuqhy.d.mts → PgBossPublisher-CqjigBVC.d.mts} +2 -2
  13. package/dist/{PgBossPublisher-J6bY44Da.d.cts.map → PgBossPublisher-CqjigBVC.d.mts.map} +1 -1
  14. package/dist/{PgBossPublisher-kFh3Mnbx.cjs → PgBossPublisher-FTdYh58W.cjs} +11 -7
  15. package/dist/PgBossPublisher-FTdYh58W.cjs.map +1 -0
  16. package/dist/{PgBossPublisher-J6bY44Da.d.cts → PgBossPublisher-JIiB1zpA.d.cts} +2 -2
  17. package/dist/{PgBossPublisher-b0deuqhy.d.mts.map → PgBossPublisher-JIiB1zpA.d.cts.map} +1 -1
  18. package/dist/{PgBossSubscriber-2z82EaLF.d.mts → PgBossSubscriber-BUiB1JKf.d.mts} +2 -2
  19. package/dist/{PgBossSubscriber-2z82EaLF.d.mts.map → PgBossSubscriber-BUiB1JKf.d.mts.map} +1 -1
  20. package/dist/{PgBossSubscriber-CB6vm-LD.d.cts → PgBossSubscriber-Cozijfdj.d.cts} +2 -2
  21. package/dist/{PgBossSubscriber-CB6vm-LD.d.cts.map → PgBossSubscriber-Cozijfdj.d.cts.map} +1 -1
  22. package/dist/pgboss/PgBossConnection.cjs +1 -1
  23. package/dist/pgboss/PgBossConnection.d.cts +1 -1
  24. package/dist/pgboss/PgBossConnection.d.mts +1 -1
  25. package/dist/pgboss/PgBossConnection.mjs +1 -1
  26. package/dist/pgboss/PgBossPublisher.cjs +1 -1
  27. package/dist/pgboss/PgBossPublisher.d.cts +2 -2
  28. package/dist/pgboss/PgBossPublisher.d.mts +2 -2
  29. package/dist/pgboss/PgBossPublisher.mjs +1 -1
  30. package/dist/pgboss/PgBossSubscriber.d.cts +2 -2
  31. package/dist/pgboss/PgBossSubscriber.d.mts +2 -2
  32. package/dist/pgboss/index.cjs +2 -2
  33. package/dist/pgboss/index.d.cts +3 -3
  34. package/dist/pgboss/index.d.mts +3 -3
  35. package/dist/pgboss/index.mjs +2 -2
  36. package/package.json +3 -3
  37. package/src/pgboss/PgBossConnection.ts +1 -1
  38. package/src/pgboss/PgBossPublisher.ts +10 -6
  39. package/dist/PgBossConnection-BZUA7Is0.mjs.map +0 -1
  40. package/dist/PgBossConnection-wLwq2r13.cjs.map +0 -1
  41. package/dist/PgBossPublisher-B6VE_5KT.mjs.map +0 -1
  42. package/dist/PgBossPublisher-kFh3Mnbx.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @geekmidas/events
2
2
 
3
+ ## 1.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - ⬆️ [`bf6c028`](https://github.com/geekmidas/toolbox/commit/bf6c0286c046794c322ebf7765378fc6ae1f9155) Thanks [@geekmidas](https://github.com/geekmidas)! - Upgrade pg-boss to 12
8
+
3
9
  ## 1.1.0
4
10
 
5
11
  ### Minor Changes
@@ -34,7 +34,7 @@ var PgBossConnection = class PgBossConnection {
34
34
  }
35
35
  this.connecting = (async () => {
36
36
  try {
37
- const boss = new pg_boss.default({
37
+ const boss = new pg_boss.PgBoss({
38
38
  connectionString: this.config.connectionString,
39
39
  ...this.config.schema && { schema: this.config.schema }
40
40
  });
@@ -77,4 +77,4 @@ Object.defineProperty(exports, 'PgBossConnection', {
77
77
  return PgBossConnection;
78
78
  }
79
79
  });
80
- //# sourceMappingURL=PgBossConnection-wLwq2r13.cjs.map
80
+ //# sourceMappingURL=PgBossConnection-B71ssr72.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgBossConnection-B71ssr72.cjs","names":["EventPublisherType","config: PgBossConnectionConfig","connectionString: string","PgBoss"],"sources":["../src/pgboss/PgBossConnection.ts"],"sourcesContent":["import { PgBoss } from 'pg-boss';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface PgBossConnectionConfig {\n\tconnectionString: string;\n\tschema?: string;\n}\n\nexport class PgBossConnection implements EventConnection {\n\treadonly type = EventPublisherType.PgBoss;\n\tprivate boss?: PgBoss;\n\tprivate connecting?: Promise<void>;\n\n\tconstructor(private config: PgBossConnectionConfig) {}\n\n\t/**\n\t * Create a PgBossConnection from a connection string.\n\t * Format: pgboss://user:pass@host:5432/database?schema=pgboss\n\t */\n\tstatic async fromConnectionString(\n\t\tconnectionString: string,\n\t): Promise<PgBossConnection> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst postgresUrl = `postgres://${url.username ? `${url.username}:${url.password}@` : ''}${url.host}${url.pathname}`;\n\n\t\tconst config: PgBossConnectionConfig = {\n\t\t\tconnectionString: postgresUrl,\n\t\t\tschema: params.get('schema') || undefined,\n\t\t};\n\n\t\tconst connection = new PgBossConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tif (this.boss) return;\n\n\t\tif (this.connecting) {\n\t\t\tawait this.connecting;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.connecting = (async () => {\n\t\t\ttry {\n\t\t\t\tconst boss = new PgBoss({\n\t\t\t\t\tconnectionString: this.config.connectionString,\n\t\t\t\t\t...(this.config.schema && { schema: this.config.schema }),\n\t\t\t\t});\n\n\t\t\t\tawait boss.start();\n\t\t\t\tthis.boss = boss;\n\t\t\t} catch (error) {\n\t\t\t\tthis.cleanup();\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t})();\n\n\t\tawait this.connecting;\n\t\tthis.connecting = undefined;\n\t}\n\n\tasync close(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.boss?.stop({ graceful: true });\n\t\t} catch {\n\t\t\t// Ignore errors during close\n\t\t} finally {\n\t\t\tthis.cleanup();\n\t\t}\n\t}\n\n\tisConnected(): boolean {\n\t\treturn !!this.boss;\n\t}\n\n\tprivate cleanup(): void {\n\t\tthis.boss = undefined;\n\t\tthis.connecting = undefined;\n\t}\n\n\t/**\n\t * Get the underlying pg-boss instance for publishing/subscribing\n\t */\n\tget instance(): PgBoss | undefined {\n\t\treturn this.boss;\n\t}\n}\n"],"mappings":";;;;;AASA,IAAa,mBAAb,MAAa,iBAA4C;CACxD,AAAS,OAAOA,iCAAmB;CACnC,AAAQ;CACR,AAAQ;CAER,YAAoBC,QAAgC;EAAhC;CAAkC;;;;;CAMtD,aAAa,qBACZC,kBAC4B;EAC5B,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,eAAe,aAAa,IAAI,YAAY,EAAE,IAAI,SAAS,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,IAAI,KAAK,EAAE,IAAI,SAAS;EAEnH,MAAMD,SAAiC;GACtC,kBAAkB;GAClB,QAAQ,OAAO,IAAI,SAAS;EAC5B;EAED,MAAM,aAAa,IAAI,iBAAiB;AACxC,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAC9B,MAAI,KAAK,KAAM;AAEf,MAAI,KAAK,YAAY;AACpB,SAAM,KAAK;AACX;EACA;AAED,OAAK,aAAa,CAAC,YAAY;AAC9B,OAAI;IACH,MAAM,OAAO,IAAIE,eAAO;KACvB,kBAAkB,KAAK,OAAO;KAC9B,GAAI,KAAK,OAAO,UAAU,EAAE,QAAQ,KAAK,OAAO,OAAQ;IACxD;AAED,UAAM,KAAK,OAAO;AAClB,SAAK,OAAO;GACZ,SAAQ,OAAO;AACf,SAAK,SAAS;AACd,UAAM;GACN;EACD,IAAG;AAEJ,QAAM,KAAK;AACX,OAAK;CACL;CAED,MAAM,QAAuB;AAC5B,MAAI;AACH,SAAM,KAAK,MAAM,KAAK,EAAE,UAAU,KAAM,EAAC;EACzC,QAAO,CAEP,UAAS;AACT,QAAK,SAAS;EACd;CACD;CAED,cAAuB;AACtB,WAAS,KAAK;CACd;CAED,AAAQ,UAAgB;AACvB,OAAK;AACL,OAAK;CACL;;;;CAKD,IAAI,WAA+B;AAClC,SAAO,KAAK;CACZ;AACD"}
@@ -1,5 +1,5 @@
1
1
  import { EventPublisherType } from "./types-BrdcSEnd.mjs";
2
- import PgBoss from "pg-boss";
2
+ import { PgBoss } from "pg-boss";
3
3
 
4
4
  //#region src/pgboss/PgBossConnection.ts
5
5
  var PgBossConnection = class PgBossConnection {
@@ -71,4 +71,4 @@ var PgBossConnection = class PgBossConnection {
71
71
 
72
72
  //#endregion
73
73
  export { PgBossConnection };
74
- //# sourceMappingURL=PgBossConnection-BZUA7Is0.mjs.map
74
+ //# sourceMappingURL=PgBossConnection-Bj_Wo1lQ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgBossConnection-Bj_Wo1lQ.mjs","names":["config: PgBossConnectionConfig","connectionString: string"],"sources":["../src/pgboss/PgBossConnection.ts"],"sourcesContent":["import { PgBoss } from 'pg-boss';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface PgBossConnectionConfig {\n\tconnectionString: string;\n\tschema?: string;\n}\n\nexport class PgBossConnection implements EventConnection {\n\treadonly type = EventPublisherType.PgBoss;\n\tprivate boss?: PgBoss;\n\tprivate connecting?: Promise<void>;\n\n\tconstructor(private config: PgBossConnectionConfig) {}\n\n\t/**\n\t * Create a PgBossConnection from a connection string.\n\t * Format: pgboss://user:pass@host:5432/database?schema=pgboss\n\t */\n\tstatic async fromConnectionString(\n\t\tconnectionString: string,\n\t): Promise<PgBossConnection> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst postgresUrl = `postgres://${url.username ? `${url.username}:${url.password}@` : ''}${url.host}${url.pathname}`;\n\n\t\tconst config: PgBossConnectionConfig = {\n\t\t\tconnectionString: postgresUrl,\n\t\t\tschema: params.get('schema') || undefined,\n\t\t};\n\n\t\tconst connection = new PgBossConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tif (this.boss) return;\n\n\t\tif (this.connecting) {\n\t\t\tawait this.connecting;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.connecting = (async () => {\n\t\t\ttry {\n\t\t\t\tconst boss = new PgBoss({\n\t\t\t\t\tconnectionString: this.config.connectionString,\n\t\t\t\t\t...(this.config.schema && { schema: this.config.schema }),\n\t\t\t\t});\n\n\t\t\t\tawait boss.start();\n\t\t\t\tthis.boss = boss;\n\t\t\t} catch (error) {\n\t\t\t\tthis.cleanup();\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t})();\n\n\t\tawait this.connecting;\n\t\tthis.connecting = undefined;\n\t}\n\n\tasync close(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.boss?.stop({ graceful: true });\n\t\t} catch {\n\t\t\t// Ignore errors during close\n\t\t} finally {\n\t\t\tthis.cleanup();\n\t\t}\n\t}\n\n\tisConnected(): boolean {\n\t\treturn !!this.boss;\n\t}\n\n\tprivate cleanup(): void {\n\t\tthis.boss = undefined;\n\t\tthis.connecting = undefined;\n\t}\n\n\t/**\n\t * Get the underlying pg-boss instance for publishing/subscribing\n\t */\n\tget instance(): PgBoss | undefined {\n\t\treturn this.boss;\n\t}\n}\n"],"mappings":";;;;AASA,IAAa,mBAAb,MAAa,iBAA4C;CACxD,AAAS,OAAO,mBAAmB;CACnC,AAAQ;CACR,AAAQ;CAER,YAAoBA,QAAgC;EAAhC;CAAkC;;;;;CAMtD,aAAa,qBACZC,kBAC4B;EAC5B,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,eAAe,aAAa,IAAI,YAAY,EAAE,IAAI,SAAS,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,IAAI,KAAK,EAAE,IAAI,SAAS;EAEnH,MAAMD,SAAiC;GACtC,kBAAkB;GAClB,QAAQ,OAAO,IAAI,SAAS;EAC5B;EAED,MAAM,aAAa,IAAI,iBAAiB;AACxC,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAC9B,MAAI,KAAK,KAAM;AAEf,MAAI,KAAK,YAAY;AACpB,SAAM,KAAK;AACX;EACA;AAED,OAAK,aAAa,CAAC,YAAY;AAC9B,OAAI;IACH,MAAM,OAAO,IAAI,OAAO;KACvB,kBAAkB,KAAK,OAAO;KAC9B,GAAI,KAAK,OAAO,UAAU,EAAE,QAAQ,KAAK,OAAO,OAAQ;IACxD;AAED,UAAM,KAAK,OAAO;AAClB,SAAK,OAAO;GACZ,SAAQ,OAAO;AACf,SAAK,SAAS;AACd,UAAM;GACN;EACD,IAAG;AAEJ,QAAM,KAAK;AACX,OAAK;CACL;CAED,MAAM,QAAuB;AAC5B,MAAI;AACH,SAAM,KAAK,MAAM,KAAK,EAAE,UAAU,KAAM,EAAC;EACzC,QAAO,CAEP,UAAS;AACT,QAAK,SAAS;EACd;CACD;CAED,cAAuB;AACtB,WAAS,KAAK;CACd;CAED,AAAQ,UAAgB;AACvB,OAAK;AACL,OAAK;CACL;;;;CAKD,IAAI,WAA+B;AAClC,SAAO,KAAK;CACZ;AACD"}
@@ -1,5 +1,5 @@
1
1
  import { EventConnection, EventPublisherType } from "./types-Dh9Jyinx.mjs";
2
- import PgBoss from "pg-boss";
2
+ import { PgBoss } from "pg-boss";
3
3
 
4
4
  //#region src/pgboss/PgBossConnection.d.ts
5
5
  interface PgBossConnectionConfig {
@@ -29,4 +29,4 @@ declare class PgBossConnection implements EventConnection {
29
29
  //# sourceMappingURL=PgBossConnection.d.ts.map
30
30
  //#endregion
31
31
  export { PgBossConnection, PgBossConnectionConfig };
32
- //# sourceMappingURL=PgBossConnection-Cd4x7NuY.d.mts.map
32
+ //# sourceMappingURL=PgBossConnection-DCfLGoHx.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PgBossConnection-YdhixTjL.d.cts","names":[],"sources":["../src/pgboss/PgBossConnection.ts"],"sourcesContent":[],"mappings":";;;;UAIiB,sBAAA;EAAA,gBAAA,EAAA,MAAA;EAKJ,MAAA,CAAA,EAAA,MAAA;;AACC,cADD,gBAAA,YAA4B,eAC3B,CAAA;EAAA,QAIe,MAAA;EAAsB,SAQvC,IAAA,GAZE,kBAAA,CAAA,MAAA;EAYc,QAAxB,IAAA;EAAO,QAgBO,UAAA;EAAO,WA2BT,CAAA,MAAA,EAnDa,sBAmDb;EAAO;;AAxDiC;;yDAapD,QAAQ;aAgBM;WA2BF;;;;;;kBAsBC"}
1
+ {"version":3,"file":"PgBossConnection-DCfLGoHx.d.mts","names":[],"sources":["../src/pgboss/PgBossConnection.ts"],"sourcesContent":[],"mappings":";;;;UAIiB,sBAAA;EAAA,gBAAA,EAAA,MAAA;EAKJ,MAAA,CAAA,EAAA,MAAA;;AACC,cADD,gBAAA,YAA4B,eAC3B,CAAA;EAAA,QAIe,MAAA;EAAsB,SAQvC,IAAA,GAZE,kBAAA,CAAA,MAAA;EAYc,QAAxB,IAAA;EAAO,QAgBO,UAAA;EAAO,WA2BT,CAAA,MAAA,EAnDa,sBAmDb;EAAO;;AAxDiC;;yDAapD,QAAQ;aAgBM;WA2BF;;;;;;kBAsBC"}
@@ -1,5 +1,5 @@
1
1
  import { EventConnection, EventPublisherType } from "./types-Dj23od3e.cjs";
2
- import PgBoss from "pg-boss";
2
+ import { PgBoss } from "pg-boss";
3
3
 
4
4
  //#region src/pgboss/PgBossConnection.d.ts
5
5
  interface PgBossConnectionConfig {
@@ -29,4 +29,4 @@ declare class PgBossConnection implements EventConnection {
29
29
  //# sourceMappingURL=PgBossConnection.d.ts.map
30
30
  //#endregion
31
31
  export { PgBossConnection, PgBossConnectionConfig };
32
- //# sourceMappingURL=PgBossConnection-YdhixTjL.d.cts.map
32
+ //# sourceMappingURL=PgBossConnection-oto_CAbP.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PgBossConnection-Cd4x7NuY.d.mts","names":[],"sources":["../src/pgboss/PgBossConnection.ts"],"sourcesContent":[],"mappings":";;;;UAIiB,sBAAA;EAAA,gBAAA,EAAA,MAAA;EAKJ,MAAA,CAAA,EAAA,MAAA;;AACC,cADD,gBAAA,YAA4B,eAC3B,CAAA;EAAA,QAIe,MAAA;EAAsB,SAQvC,IAAA,GAZE,kBAAA,CAAA,MAAA;EAYc,QAAxB,IAAA;EAAO,QAgBO,UAAA;EAAO,WA2BT,CAAA,MAAA,EAnDa,sBAmDb;EAAO;;AAxDiC;;yDAapD,QAAQ;aAgBM;WA2BF;;;;;;kBAsBC"}
1
+ {"version":3,"file":"PgBossConnection-oto_CAbP.d.cts","names":[],"sources":["../src/pgboss/PgBossConnection.ts"],"sourcesContent":[],"mappings":";;;;UAIiB,sBAAA;EAAA,gBAAA,EAAA,MAAA;EAKJ,MAAA,CAAA,EAAA,MAAA;;AACC,cADD,gBAAA,YAA4B,eAC3B,CAAA;EAAA,QAIe,MAAA;EAAsB,SAQvC,IAAA,GAZE,kBAAA,CAAA,MAAA;EAYc,QAAxB,IAAA;EAAO,QAgBO,UAAA;EAAO,WA2BT,CAAA,MAAA,EAnDa,sBAmDb;EAAO;;AAxDiC;;yDAapD,QAAQ;aAgBM;WA2BF;;;;;;kBAsBC"}
@@ -16,16 +16,20 @@ var PgBossPublisher = class PgBossPublisher {
16
16
  if (!this.connection.isConnected()) await this.connection.connect();
17
17
  const boss = this.connection.instance;
18
18
  if (!boss) throw new Error("PgBoss instance not initialized");
19
- const queueNames = [...new Set(messages.map((m) => m.type))];
20
- for (const name of queueNames) await boss.createQueue(name);
21
- await boss.insert(messages.map((m) => ({
22
- name: m.type,
23
- data: m.payload
24
- })));
19
+ const groups = /* @__PURE__ */ new Map();
20
+ for (const m of messages) {
21
+ const list = groups.get(m.type) ?? [];
22
+ list.push({ data: m.payload });
23
+ groups.set(m.type, list);
24
+ }
25
+ for (const [name, jobs] of groups) {
26
+ await boss.createQueue(name);
27
+ await boss.insert(name, jobs);
28
+ }
25
29
  }
26
30
  async close() {}
27
31
  };
28
32
 
29
33
  //#endregion
30
34
  export { PgBossPublisher };
31
- //# sourceMappingURL=PgBossPublisher-B6VE_5KT.mjs.map
35
+ //# sourceMappingURL=PgBossPublisher-Bwo7qSoH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgBossPublisher-Bwo7qSoH.mjs","names":["connection: PgBossConnection","connectionString: string","messages: TMessage[]"],"sources":["../src/pgboss/PgBossPublisher.ts"],"sourcesContent":["import type { EventPublisher, PublishableMessage } from '../types';\nimport type { PgBossConnection } from './PgBossConnection';\n\nexport class PgBossPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(private connection: PgBossConnection) {}\n\n\t/**\n\t * Create a PgBossPublisher from a connection string.\n\t * Format: pgboss://user:pass@host:5432/database?schema=pgboss\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<PgBossPublisher<TMessage>> {\n\t\tconst { PgBossConnection } = await import('./PgBossConnection');\n\t\tconst connection =\n\t\t\tawait PgBossConnection.fromConnectionString(connectionString);\n\t\treturn new PgBossPublisher<TMessage>(connection);\n\t}\n\n\tasync publish(messages: TMessage[]): Promise<void> {\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\tconst boss = this.connection.instance;\n\t\tif (!boss) {\n\t\t\tthrow new Error('PgBoss instance not initialized');\n\t\t}\n\n\t\t// Group jobs by queue name (v11+ requires per-queue insert calls)\n\t\tconst groups = new Map<string, { data: TMessage['payload'] }[]>();\n\t\tfor (const m of messages) {\n\t\t\tconst list = groups.get(m.type) ?? [];\n\t\t\tlist.push({ data: m.payload });\n\t\t\tgroups.set(m.type, list);\n\t\t}\n\n\t\tfor (const [name, jobs] of groups) {\n\t\t\tawait boss.createQueue(name);\n\t\t\tawait boss.insert(name, jobs);\n\t\t}\n\t}\n\n\tasync close(): Promise<void> {\n\t\t// Publisher doesn't own the connection\n\t}\n}\n"],"mappings":";AAGA,IAAa,kBAAb,MAAa,gBAEb;CACC,YAAoBA,YAA8B;EAA9B;CAAgC;;;;;CAMpD,aAAa,qBAEXC,kBAA8D;EAC/D,MAAM,EAAE,kBAAkB,GAAG,MAAM,OAAO;EAC1C,MAAM,aACL,MAAM,iBAAiB,qBAAqB,iBAAiB;AAC9D,SAAO,IAAI,gBAA0B;CACrC;CAED,MAAM,QAAQC,UAAqC;AAClD,OAAK,KAAK,WAAW,aAAa,CACjC,OAAM,KAAK,WAAW,SAAS;EAGhC,MAAM,OAAO,KAAK,WAAW;AAC7B,OAAK,KACJ,OAAM,IAAI,MAAM;EAIjB,MAAM,yBAAS,IAAI;AACnB,OAAK,MAAM,KAAK,UAAU;GACzB,MAAM,OAAO,OAAO,IAAI,EAAE,KAAK,IAAI,CAAE;AACrC,QAAK,KAAK,EAAE,MAAM,EAAE,QAAS,EAAC;AAC9B,UAAO,IAAI,EAAE,MAAM,KAAK;EACxB;AAED,OAAK,MAAM,CAAC,MAAM,KAAK,IAAI,QAAQ;AAClC,SAAM,KAAK,YAAY,KAAK;AAC5B,SAAM,KAAK,OAAO,MAAM,KAAK;EAC7B;CACD;CAED,MAAM,QAAuB,CAE5B;AACD"}
@@ -1,5 +1,5 @@
1
1
  import { EventPublisher, PublishableMessage } from "./types-Dh9Jyinx.mjs";
2
- import { PgBossConnection } from "./PgBossConnection-Cd4x7NuY.mjs";
2
+ import { PgBossConnection } from "./PgBossConnection-DCfLGoHx.mjs";
3
3
 
4
4
  //#region src/pgboss/PgBossPublisher.d.ts
5
5
  declare class PgBossPublisher<TMessage extends PublishableMessage<string, any>> implements EventPublisher<TMessage> {
@@ -17,4 +17,4 @@ declare class PgBossPublisher<TMessage extends PublishableMessage<string, any>>
17
17
 
18
18
  //#endregion
19
19
  export { PgBossPublisher };
20
- //# sourceMappingURL=PgBossPublisher-b0deuqhy.d.mts.map
20
+ //# sourceMappingURL=PgBossPublisher-CqjigBVC.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PgBossPublisher-J6bY44Da.d.cts","names":[],"sources":["../src/pgboss/PgBossPublisher.ts"],"sourcesContent":[],"mappings":";;;;cAGa,iCAAiC,4CAClC,eAAe;;EADd,WAAA,CAAA,UAAe,EAGK,gBAHL;EAAA;;;;EAGqB,OAO9B,oBAAA,CAAA,iBAAA,kBAAA,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EACW,OADX,CACmB,eADnB,CACmC,QADnC,CAAA,CAAA;EAAkB,OACiB,CAAA,QAAA,EAO7B,QAP6B,EAAA,CAAA,EAOhB,OAPgB,CAAA,IAAA,CAAA;EAAQ,KAAxB,CAAA,CAAA,EA2BtB,OA3BsB,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"PgBossPublisher-CqjigBVC.d.mts","names":[],"sources":["../src/pgboss/PgBossPublisher.ts"],"sourcesContent":[],"mappings":";;;;cAGa,iCAAiC,4CAClC,eAAe;;EADd,WAAA,CAAA,UAAe,EAGK,gBAHL;EAAA;;;;EAGqB,OAO9B,oBAAA,CAAA,iBAAA,kBAAA,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EACW,OADX,CACmB,eADnB,CACmC,QADnC,CAAA,CAAA;EAAkB,OACiB,CAAA,QAAA,EAO7B,QAP6B,EAAA,CAAA,EAOhB,OAPgB,CAAA,IAAA,CAAA;EAAQ,KAAxB,CAAA,CAAA,EA+BtB,OA/BsB,CAAA,IAAA,CAAA"}
@@ -17,12 +17,16 @@ var PgBossPublisher = class PgBossPublisher {
17
17
  if (!this.connection.isConnected()) await this.connection.connect();
18
18
  const boss = this.connection.instance;
19
19
  if (!boss) throw new Error("PgBoss instance not initialized");
20
- const queueNames = [...new Set(messages.map((m) => m.type))];
21
- for (const name of queueNames) await boss.createQueue(name);
22
- await boss.insert(messages.map((m) => ({
23
- name: m.type,
24
- data: m.payload
25
- })));
20
+ const groups = /* @__PURE__ */ new Map();
21
+ for (const m of messages) {
22
+ const list = groups.get(m.type) ?? [];
23
+ list.push({ data: m.payload });
24
+ groups.set(m.type, list);
25
+ }
26
+ for (const [name, jobs] of groups) {
27
+ await boss.createQueue(name);
28
+ await boss.insert(name, jobs);
29
+ }
26
30
  }
27
31
  async close() {}
28
32
  };
@@ -34,4 +38,4 @@ Object.defineProperty(exports, 'PgBossPublisher', {
34
38
  return PgBossPublisher;
35
39
  }
36
40
  });
37
- //# sourceMappingURL=PgBossPublisher-kFh3Mnbx.cjs.map
41
+ //# sourceMappingURL=PgBossPublisher-FTdYh58W.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgBossPublisher-FTdYh58W.cjs","names":["connection: PgBossConnection","connectionString: string","messages: TMessage[]"],"sources":["../src/pgboss/PgBossPublisher.ts"],"sourcesContent":["import type { EventPublisher, PublishableMessage } from '../types';\nimport type { PgBossConnection } from './PgBossConnection';\n\nexport class PgBossPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(private connection: PgBossConnection) {}\n\n\t/**\n\t * Create a PgBossPublisher from a connection string.\n\t * Format: pgboss://user:pass@host:5432/database?schema=pgboss\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<PgBossPublisher<TMessage>> {\n\t\tconst { PgBossConnection } = await import('./PgBossConnection');\n\t\tconst connection =\n\t\t\tawait PgBossConnection.fromConnectionString(connectionString);\n\t\treturn new PgBossPublisher<TMessage>(connection);\n\t}\n\n\tasync publish(messages: TMessage[]): Promise<void> {\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\tconst boss = this.connection.instance;\n\t\tif (!boss) {\n\t\t\tthrow new Error('PgBoss instance not initialized');\n\t\t}\n\n\t\t// Group jobs by queue name (v11+ requires per-queue insert calls)\n\t\tconst groups = new Map<string, { data: TMessage['payload'] }[]>();\n\t\tfor (const m of messages) {\n\t\t\tconst list = groups.get(m.type) ?? [];\n\t\t\tlist.push({ data: m.payload });\n\t\t\tgroups.set(m.type, list);\n\t\t}\n\n\t\tfor (const [name, jobs] of groups) {\n\t\t\tawait boss.createQueue(name);\n\t\t\tawait boss.insert(name, jobs);\n\t\t}\n\t}\n\n\tasync close(): Promise<void> {\n\t\t// Publisher doesn't own the connection\n\t}\n}\n"],"mappings":";;AAGA,IAAa,kBAAb,MAAa,gBAEb;CACC,YAAoBA,YAA8B;EAA9B;CAAgC;;;;;CAMpD,aAAa,qBAEXC,kBAA8D;EAC/D,MAAM,EAAE,kBAAkB,GAAG,2CAAM;EACnC,MAAM,aACL,MAAM,iBAAiB,qBAAqB,iBAAiB;AAC9D,SAAO,IAAI,gBAA0B;CACrC;CAED,MAAM,QAAQC,UAAqC;AAClD,OAAK,KAAK,WAAW,aAAa,CACjC,OAAM,KAAK,WAAW,SAAS;EAGhC,MAAM,OAAO,KAAK,WAAW;AAC7B,OAAK,KACJ,OAAM,IAAI,MAAM;EAIjB,MAAM,yBAAS,IAAI;AACnB,OAAK,MAAM,KAAK,UAAU;GACzB,MAAM,OAAO,OAAO,IAAI,EAAE,KAAK,IAAI,CAAE;AACrC,QAAK,KAAK,EAAE,MAAM,EAAE,QAAS,EAAC;AAC9B,UAAO,IAAI,EAAE,MAAM,KAAK;EACxB;AAED,OAAK,MAAM,CAAC,MAAM,KAAK,IAAI,QAAQ;AAClC,SAAM,KAAK,YAAY,KAAK;AAC5B,SAAM,KAAK,OAAO,MAAM,KAAK;EAC7B;CACD;CAED,MAAM,QAAuB,CAE5B;AACD"}
@@ -1,5 +1,5 @@
1
1
  import { EventPublisher, PublishableMessage } from "./types-Dj23od3e.cjs";
2
- import { PgBossConnection } from "./PgBossConnection-YdhixTjL.cjs";
2
+ import { PgBossConnection } from "./PgBossConnection-oto_CAbP.cjs";
3
3
 
4
4
  //#region src/pgboss/PgBossPublisher.d.ts
5
5
  declare class PgBossPublisher<TMessage extends PublishableMessage<string, any>> implements EventPublisher<TMessage> {
@@ -17,4 +17,4 @@ declare class PgBossPublisher<TMessage extends PublishableMessage<string, any>>
17
17
 
18
18
  //#endregion
19
19
  export { PgBossPublisher };
20
- //# sourceMappingURL=PgBossPublisher-J6bY44Da.d.cts.map
20
+ //# sourceMappingURL=PgBossPublisher-JIiB1zpA.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PgBossPublisher-b0deuqhy.d.mts","names":[],"sources":["../src/pgboss/PgBossPublisher.ts"],"sourcesContent":[],"mappings":";;;;cAGa,iCAAiC,4CAClC,eAAe;;EADd,WAAA,CAAA,UAAe,EAGK,gBAHL;EAAA;;;;EAGqB,OAO9B,oBAAA,CAAA,iBAAA,kBAAA,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EACW,OADX,CACmB,eADnB,CACmC,QADnC,CAAA,CAAA;EAAkB,OACiB,CAAA,QAAA,EAO7B,QAP6B,EAAA,CAAA,EAOhB,OAPgB,CAAA,IAAA,CAAA;EAAQ,KAAxB,CAAA,CAAA,EA2BtB,OA3BsB,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"PgBossPublisher-JIiB1zpA.d.cts","names":[],"sources":["../src/pgboss/PgBossPublisher.ts"],"sourcesContent":[],"mappings":";;;;cAGa,iCAAiC,4CAClC,eAAe;;EADd,WAAA,CAAA,UAAe,EAGK,gBAHL;EAAA;;;;EAGqB,OAO9B,oBAAA,CAAA,iBAAA,kBAAA,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EACW,OADX,CACmB,eADnB,CACmC,QADnC,CAAA,CAAA;EAAkB,OACiB,CAAA,QAAA,EAO7B,QAP6B,EAAA,CAAA,EAOhB,OAPgB,CAAA,IAAA,CAAA;EAAQ,KAAxB,CAAA,CAAA,EA+BtB,OA/BsB,CAAA,IAAA,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { EventSubscriber, PublishableMessage } from "./types-Dh9Jyinx.mjs";
2
- import { PgBossConnection } from "./PgBossConnection-Cd4x7NuY.mjs";
2
+ import { PgBossConnection } from "./PgBossConnection-DCfLGoHx.mjs";
3
3
 
4
4
  //#region src/pgboss/PgBossSubscriber.d.ts
5
5
  interface PgBossSubscriberOptions {
@@ -21,4 +21,4 @@ declare class PgBossSubscriber<TMessage extends PublishableMessage<string, any>>
21
21
 
22
22
  //#endregion
23
23
  export { PgBossSubscriber, PgBossSubscriberOptions };
24
- //# sourceMappingURL=PgBossSubscriber-2z82EaLF.d.mts.map
24
+ //# sourceMappingURL=PgBossSubscriber-BUiB1JKf.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PgBossSubscriber-2z82EaLF.d.mts","names":[],"sources":["../src/pgboss/PgBossSubscriber.ts"],"sourcesContent":[],"mappings":";;;;UAGiB,uBAAA;;EAAA,sBAAA,CAAA,EAAA,MAAuB;AAKxC;AAA6B,cAAhB,gBAAgB,CAAA,iBAAkB,kBAAlB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YACjB,eADiB,CACD,QADC,CAAA,CAAA;EAAA,QAAkB,UAAA;EAAkB,QACrC,OAAA;EAAQ,WAGd,CAAA,UAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EACH,uBADG;EAAgB;;;;EAUgB,OAAxB,oBAAA,CAAA,iBADX,kBACW,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EAAA,OAAA,CAAQ,gBAAR,CAAyB,QAAzB,CAAA,CAAA;EAAO,SAqBzB,CAAA,QAAA,EAAA,QAAA,CAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,OAAA,EACU,QADV,EAAA,GACuB,OADvB,CAAA,IAAA,CAAA,CAAA,EAER,OAFQ,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"PgBossSubscriber-BUiB1JKf.d.mts","names":[],"sources":["../src/pgboss/PgBossSubscriber.ts"],"sourcesContent":[],"mappings":";;;;UAGiB,uBAAA;;EAAA,sBAAA,CAAA,EAAA,MAAuB;AAKxC;AAA6B,cAAhB,gBAAgB,CAAA,iBAAkB,kBAAlB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YACjB,eADiB,CACD,QADC,CAAA,CAAA;EAAA,QAAkB,UAAA;EAAkB,QACrC,OAAA;EAAQ,WAGd,CAAA,UAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EACH,uBADG;EAAgB;;;;EAUgB,OAAxB,oBAAA,CAAA,iBADX,kBACW,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EAAA,OAAA,CAAQ,gBAAR,CAAyB,QAAzB,CAAA,CAAA;EAAO,SAqBzB,CAAA,QAAA,EAAA,QAAA,CAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,OAAA,EACU,QADV,EAAA,GACuB,OADvB,CAAA,IAAA,CAAA,CAAA,EAER,OAFQ,CAAA,IAAA,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { EventSubscriber, PublishableMessage } from "./types-Dj23od3e.cjs";
2
- import { PgBossConnection } from "./PgBossConnection-YdhixTjL.cjs";
2
+ import { PgBossConnection } from "./PgBossConnection-oto_CAbP.cjs";
3
3
 
4
4
  //#region src/pgboss/PgBossSubscriber.d.ts
5
5
  interface PgBossSubscriberOptions {
@@ -21,4 +21,4 @@ declare class PgBossSubscriber<TMessage extends PublishableMessage<string, any>>
21
21
 
22
22
  //#endregion
23
23
  export { PgBossSubscriber, PgBossSubscriberOptions };
24
- //# sourceMappingURL=PgBossSubscriber-CB6vm-LD.d.cts.map
24
+ //# sourceMappingURL=PgBossSubscriber-Cozijfdj.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PgBossSubscriber-CB6vm-LD.d.cts","names":[],"sources":["../src/pgboss/PgBossSubscriber.ts"],"sourcesContent":[],"mappings":";;;;UAGiB,uBAAA;;EAAA,sBAAA,CAAA,EAAA,MAAuB;AAKxC;AAA6B,cAAhB,gBAAgB,CAAA,iBAAkB,kBAAlB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YACjB,eADiB,CACD,QADC,CAAA,CAAA;EAAA,QAAkB,UAAA;EAAkB,QACrC,OAAA;EAAQ,WAGd,CAAA,UAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EACH,uBADG;EAAgB;;;;EAUgB,OAAxB,oBAAA,CAAA,iBADX,kBACW,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EAAA,OAAA,CAAQ,gBAAR,CAAyB,QAAzB,CAAA,CAAA;EAAO,SAqBzB,CAAA,QAAA,EAAA,QAAA,CAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,OAAA,EACU,QADV,EAAA,GACuB,OADvB,CAAA,IAAA,CAAA,CAAA,EAER,OAFQ,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"PgBossSubscriber-Cozijfdj.d.cts","names":[],"sources":["../src/pgboss/PgBossSubscriber.ts"],"sourcesContent":[],"mappings":";;;;UAGiB,uBAAA;;EAAA,sBAAA,CAAA,EAAA,MAAuB;AAKxC;AAA6B,cAAhB,gBAAgB,CAAA,iBAAkB,kBAAlB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YACjB,eADiB,CACD,QADC,CAAA,CAAA;EAAA,QAAkB,UAAA;EAAkB,QACrC,OAAA;EAAQ,WAGd,CAAA,UAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EACH,uBADG;EAAgB;;;;EAUgB,OAAxB,oBAAA,CAAA,iBADX,kBACW,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EAAA,OAAA,CAAQ,gBAAR,CAAyB,QAAzB,CAAA,CAAA;EAAO,SAqBzB,CAAA,QAAA,EAAA,QAAA,CAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,OAAA,EACU,QADV,EAAA,GACuB,OADvB,CAAA,IAAA,CAAA,CAAA,EAER,OAFQ,CAAA,IAAA,CAAA"}
@@ -1,4 +1,4 @@
1
1
  require('../types-Byv8N9ma.cjs');
2
- const require_PgBossConnection = require('../PgBossConnection-wLwq2r13.cjs');
2
+ const require_PgBossConnection = require('../PgBossConnection-B71ssr72.cjs');
3
3
 
4
4
  exports.PgBossConnection = require_PgBossConnection.PgBossConnection;
@@ -1,3 +1,3 @@
1
1
  import "../types-Dj23od3e.cjs";
2
- import { PgBossConnection, PgBossConnectionConfig } from "../PgBossConnection-YdhixTjL.cjs";
2
+ import { PgBossConnection, PgBossConnectionConfig } from "../PgBossConnection-oto_CAbP.cjs";
3
3
  export { PgBossConnection, PgBossConnectionConfig };
@@ -1,3 +1,3 @@
1
1
  import "../types-Dh9Jyinx.mjs";
2
- import { PgBossConnection, PgBossConnectionConfig } from "../PgBossConnection-Cd4x7NuY.mjs";
2
+ import { PgBossConnection, PgBossConnectionConfig } from "../PgBossConnection-DCfLGoHx.mjs";
3
3
  export { PgBossConnection, PgBossConnectionConfig };
@@ -1,4 +1,4 @@
1
1
  import "../types-BrdcSEnd.mjs";
2
- import { PgBossConnection } from "../PgBossConnection-BZUA7Is0.mjs";
2
+ import { PgBossConnection } from "../PgBossConnection-Bj_Wo1lQ.mjs";
3
3
 
4
4
  export { PgBossConnection };
@@ -1,3 +1,3 @@
1
- const require_PgBossPublisher = require('../PgBossPublisher-kFh3Mnbx.cjs');
1
+ const require_PgBossPublisher = require('../PgBossPublisher-FTdYh58W.cjs');
2
2
 
3
3
  exports.PgBossPublisher = require_PgBossPublisher.PgBossPublisher;
@@ -1,4 +1,4 @@
1
1
  import "../types-Dj23od3e.cjs";
2
- import "../PgBossConnection-YdhixTjL.cjs";
3
- import { PgBossPublisher } from "../PgBossPublisher-J6bY44Da.cjs";
2
+ import "../PgBossConnection-oto_CAbP.cjs";
3
+ import { PgBossPublisher } from "../PgBossPublisher-JIiB1zpA.cjs";
4
4
  export { PgBossPublisher };
@@ -1,4 +1,4 @@
1
1
  import "../types-Dh9Jyinx.mjs";
2
- import "../PgBossConnection-Cd4x7NuY.mjs";
3
- import { PgBossPublisher } from "../PgBossPublisher-b0deuqhy.mjs";
2
+ import "../PgBossConnection-DCfLGoHx.mjs";
3
+ import { PgBossPublisher } from "../PgBossPublisher-CqjigBVC.mjs";
4
4
  export { PgBossPublisher };
@@ -1,3 +1,3 @@
1
- import { PgBossPublisher } from "../PgBossPublisher-B6VE_5KT.mjs";
1
+ import { PgBossPublisher } from "../PgBossPublisher-Bwo7qSoH.mjs";
2
2
 
3
3
  export { PgBossPublisher };
@@ -1,4 +1,4 @@
1
1
  import "../types-Dj23od3e.cjs";
2
- import "../PgBossConnection-YdhixTjL.cjs";
3
- import { PgBossSubscriber, PgBossSubscriberOptions } from "../PgBossSubscriber-CB6vm-LD.cjs";
2
+ import "../PgBossConnection-oto_CAbP.cjs";
3
+ import { PgBossSubscriber, PgBossSubscriberOptions } from "../PgBossSubscriber-Cozijfdj.cjs";
4
4
  export { PgBossSubscriber, PgBossSubscriberOptions };
@@ -1,4 +1,4 @@
1
1
  import "../types-Dh9Jyinx.mjs";
2
- import "../PgBossConnection-Cd4x7NuY.mjs";
3
- import { PgBossSubscriber, PgBossSubscriberOptions } from "../PgBossSubscriber-2z82EaLF.mjs";
2
+ import "../PgBossConnection-DCfLGoHx.mjs";
3
+ import { PgBossSubscriber, PgBossSubscriberOptions } from "../PgBossSubscriber-BUiB1JKf.mjs";
4
4
  export { PgBossSubscriber, PgBossSubscriberOptions };
@@ -1,6 +1,6 @@
1
1
  require('../types-Byv8N9ma.cjs');
2
- const require_PgBossConnection = require('../PgBossConnection-wLwq2r13.cjs');
3
- const require_PgBossPublisher = require('../PgBossPublisher-kFh3Mnbx.cjs');
2
+ const require_PgBossConnection = require('../PgBossConnection-B71ssr72.cjs');
3
+ const require_PgBossPublisher = require('../PgBossPublisher-FTdYh58W.cjs');
4
4
  const require_PgBossSubscriber = require('../PgBossSubscriber-BubVfuWm.cjs');
5
5
 
6
6
  exports.PgBossConnection = require_PgBossConnection.PgBossConnection;
@@ -1,5 +1,5 @@
1
1
  import "../types-Dj23od3e.cjs";
2
- import { PgBossConnection, PgBossConnectionConfig } from "../PgBossConnection-YdhixTjL.cjs";
3
- import { PgBossPublisher } from "../PgBossPublisher-J6bY44Da.cjs";
4
- import { PgBossSubscriber, PgBossSubscriberOptions } from "../PgBossSubscriber-CB6vm-LD.cjs";
2
+ import { PgBossConnection, PgBossConnectionConfig } from "../PgBossConnection-oto_CAbP.cjs";
3
+ import { PgBossPublisher } from "../PgBossPublisher-JIiB1zpA.cjs";
4
+ import { PgBossSubscriber, PgBossSubscriberOptions } from "../PgBossSubscriber-Cozijfdj.cjs";
5
5
  export { PgBossConnection, PgBossConnectionConfig, PgBossPublisher, PgBossSubscriber, PgBossSubscriberOptions };
@@ -1,5 +1,5 @@
1
1
  import "../types-Dh9Jyinx.mjs";
2
- import { PgBossConnection, PgBossConnectionConfig } from "../PgBossConnection-Cd4x7NuY.mjs";
3
- import { PgBossPublisher } from "../PgBossPublisher-b0deuqhy.mjs";
4
- import { PgBossSubscriber, PgBossSubscriberOptions } from "../PgBossSubscriber-2z82EaLF.mjs";
2
+ import { PgBossConnection, PgBossConnectionConfig } from "../PgBossConnection-DCfLGoHx.mjs";
3
+ import { PgBossPublisher } from "../PgBossPublisher-CqjigBVC.mjs";
4
+ import { PgBossSubscriber, PgBossSubscriberOptions } from "../PgBossSubscriber-BUiB1JKf.mjs";
5
5
  export { PgBossConnection, PgBossConnectionConfig, PgBossPublisher, PgBossSubscriber, PgBossSubscriberOptions };
@@ -1,6 +1,6 @@
1
1
  import "../types-BrdcSEnd.mjs";
2
- import { PgBossConnection } from "../PgBossConnection-BZUA7Is0.mjs";
3
- import { PgBossPublisher } from "../PgBossPublisher-B6VE_5KT.mjs";
2
+ import { PgBossConnection } from "../PgBossConnection-Bj_Wo1lQ.mjs";
3
+ import { PgBossPublisher } from "../PgBossPublisher-Bwo7qSoH.mjs";
4
4
  import { PgBossSubscriber } from "../PgBossSubscriber-DopATe80.mjs";
5
5
 
6
6
  export { PgBossConnection, PgBossPublisher, PgBossSubscriber };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geekmidas/events",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -49,7 +49,7 @@
49
49
  "amqplib": "^0.10.3",
50
50
  "@aws-sdk/client-sqs": "~3.908.0",
51
51
  "@aws-sdk/client-sns": "~3.908.0",
52
- "pg-boss": ">=10.0.0",
52
+ "pg-boss": ">=12.0.0",
53
53
  "@geekmidas/schema": "^1.0.0"
54
54
  },
55
55
  "peerDependenciesMeta": {
@@ -72,7 +72,7 @@
72
72
  "devDependencies": {
73
73
  "@types/amqplib": "~0.10.7",
74
74
  "@types/lodash.chunk": "~4.2.0",
75
- "pg-boss": "^10.0.0",
75
+ "pg-boss": "~12.18.1",
76
76
  "@geekmidas/schema": "^1.0.0"
77
77
  }
78
78
  }
@@ -1,4 +1,4 @@
1
- import PgBoss from 'pg-boss';
1
+ import { PgBoss } from 'pg-boss';
2
2
  import type { EventConnection } from '../types';
3
3
  import { EventPublisherType } from '../types';
4
4
 
@@ -29,14 +29,18 @@ export class PgBossPublisher<TMessage extends PublishableMessage<string, any>>
29
29
  throw new Error('PgBoss instance not initialized');
30
30
  }
31
31
 
32
- // Ensure queues exist
33
- const queueNames = [...new Set(messages.map((m) => m.type))];
34
- for (const name of queueNames) {
35
- await boss.createQueue(name);
32
+ // Group jobs by queue name (v11+ requires per-queue insert calls)
33
+ const groups = new Map<string, { data: TMessage['payload'] }[]>();
34
+ for (const m of messages) {
35
+ const list = groups.get(m.type) ?? [];
36
+ list.push({ data: m.payload });
37
+ groups.set(m.type, list);
36
38
  }
37
39
 
38
- // Batch insert — each JobInsert carries its queue name
39
- await boss.insert(messages.map((m) => ({ name: m.type, data: m.payload })));
40
+ for (const [name, jobs] of groups) {
41
+ await boss.createQueue(name);
42
+ await boss.insert(name, jobs);
43
+ }
40
44
  }
41
45
 
42
46
  async close(): Promise<void> {
@@ -1 +0,0 @@
1
- {"version":3,"file":"PgBossConnection-BZUA7Is0.mjs","names":["config: PgBossConnectionConfig","connectionString: string"],"sources":["../src/pgboss/PgBossConnection.ts"],"sourcesContent":["import PgBoss from 'pg-boss';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface PgBossConnectionConfig {\n\tconnectionString: string;\n\tschema?: string;\n}\n\nexport class PgBossConnection implements EventConnection {\n\treadonly type = EventPublisherType.PgBoss;\n\tprivate boss?: PgBoss;\n\tprivate connecting?: Promise<void>;\n\n\tconstructor(private config: PgBossConnectionConfig) {}\n\n\t/**\n\t * Create a PgBossConnection from a connection string.\n\t * Format: pgboss://user:pass@host:5432/database?schema=pgboss\n\t */\n\tstatic async fromConnectionString(\n\t\tconnectionString: string,\n\t): Promise<PgBossConnection> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst postgresUrl = `postgres://${url.username ? `${url.username}:${url.password}@` : ''}${url.host}${url.pathname}`;\n\n\t\tconst config: PgBossConnectionConfig = {\n\t\t\tconnectionString: postgresUrl,\n\t\t\tschema: params.get('schema') || undefined,\n\t\t};\n\n\t\tconst connection = new PgBossConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tif (this.boss) return;\n\n\t\tif (this.connecting) {\n\t\t\tawait this.connecting;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.connecting = (async () => {\n\t\t\ttry {\n\t\t\t\tconst boss = new PgBoss({\n\t\t\t\t\tconnectionString: this.config.connectionString,\n\t\t\t\t\t...(this.config.schema && { schema: this.config.schema }),\n\t\t\t\t});\n\n\t\t\t\tawait boss.start();\n\t\t\t\tthis.boss = boss;\n\t\t\t} catch (error) {\n\t\t\t\tthis.cleanup();\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t})();\n\n\t\tawait this.connecting;\n\t\tthis.connecting = undefined;\n\t}\n\n\tasync close(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.boss?.stop({ graceful: true });\n\t\t} catch {\n\t\t\t// Ignore errors during close\n\t\t} finally {\n\t\t\tthis.cleanup();\n\t\t}\n\t}\n\n\tisConnected(): boolean {\n\t\treturn !!this.boss;\n\t}\n\n\tprivate cleanup(): void {\n\t\tthis.boss = undefined;\n\t\tthis.connecting = undefined;\n\t}\n\n\t/**\n\t * Get the underlying pg-boss instance for publishing/subscribing\n\t */\n\tget instance(): PgBoss | undefined {\n\t\treturn this.boss;\n\t}\n}\n"],"mappings":";;;;AASA,IAAa,mBAAb,MAAa,iBAA4C;CACxD,AAAS,OAAO,mBAAmB;CACnC,AAAQ;CACR,AAAQ;CAER,YAAoBA,QAAgC;EAAhC;CAAkC;;;;;CAMtD,aAAa,qBACZC,kBAC4B;EAC5B,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,eAAe,aAAa,IAAI,YAAY,EAAE,IAAI,SAAS,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,IAAI,KAAK,EAAE,IAAI,SAAS;EAEnH,MAAMD,SAAiC;GACtC,kBAAkB;GAClB,QAAQ,OAAO,IAAI,SAAS;EAC5B;EAED,MAAM,aAAa,IAAI,iBAAiB;AACxC,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAC9B,MAAI,KAAK,KAAM;AAEf,MAAI,KAAK,YAAY;AACpB,SAAM,KAAK;AACX;EACA;AAED,OAAK,aAAa,CAAC,YAAY;AAC9B,OAAI;IACH,MAAM,OAAO,IAAI,OAAO;KACvB,kBAAkB,KAAK,OAAO;KAC9B,GAAI,KAAK,OAAO,UAAU,EAAE,QAAQ,KAAK,OAAO,OAAQ;IACxD;AAED,UAAM,KAAK,OAAO;AAClB,SAAK,OAAO;GACZ,SAAQ,OAAO;AACf,SAAK,SAAS;AACd,UAAM;GACN;EACD,IAAG;AAEJ,QAAM,KAAK;AACX,OAAK;CACL;CAED,MAAM,QAAuB;AAC5B,MAAI;AACH,SAAM,KAAK,MAAM,KAAK,EAAE,UAAU,KAAM,EAAC;EACzC,QAAO,CAEP,UAAS;AACT,QAAK,SAAS;EACd;CACD;CAED,cAAuB;AACtB,WAAS,KAAK;CACd;CAED,AAAQ,UAAgB;AACvB,OAAK;AACL,OAAK;CACL;;;;CAKD,IAAI,WAA+B;AAClC,SAAO,KAAK;CACZ;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PgBossConnection-wLwq2r13.cjs","names":["EventPublisherType","config: PgBossConnectionConfig","connectionString: string","PgBoss"],"sources":["../src/pgboss/PgBossConnection.ts"],"sourcesContent":["import PgBoss from 'pg-boss';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface PgBossConnectionConfig {\n\tconnectionString: string;\n\tschema?: string;\n}\n\nexport class PgBossConnection implements EventConnection {\n\treadonly type = EventPublisherType.PgBoss;\n\tprivate boss?: PgBoss;\n\tprivate connecting?: Promise<void>;\n\n\tconstructor(private config: PgBossConnectionConfig) {}\n\n\t/**\n\t * Create a PgBossConnection from a connection string.\n\t * Format: pgboss://user:pass@host:5432/database?schema=pgboss\n\t */\n\tstatic async fromConnectionString(\n\t\tconnectionString: string,\n\t): Promise<PgBossConnection> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst postgresUrl = `postgres://${url.username ? `${url.username}:${url.password}@` : ''}${url.host}${url.pathname}`;\n\n\t\tconst config: PgBossConnectionConfig = {\n\t\t\tconnectionString: postgresUrl,\n\t\t\tschema: params.get('schema') || undefined,\n\t\t};\n\n\t\tconst connection = new PgBossConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tif (this.boss) return;\n\n\t\tif (this.connecting) {\n\t\t\tawait this.connecting;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.connecting = (async () => {\n\t\t\ttry {\n\t\t\t\tconst boss = new PgBoss({\n\t\t\t\t\tconnectionString: this.config.connectionString,\n\t\t\t\t\t...(this.config.schema && { schema: this.config.schema }),\n\t\t\t\t});\n\n\t\t\t\tawait boss.start();\n\t\t\t\tthis.boss = boss;\n\t\t\t} catch (error) {\n\t\t\t\tthis.cleanup();\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t})();\n\n\t\tawait this.connecting;\n\t\tthis.connecting = undefined;\n\t}\n\n\tasync close(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.boss?.stop({ graceful: true });\n\t\t} catch {\n\t\t\t// Ignore errors during close\n\t\t} finally {\n\t\t\tthis.cleanup();\n\t\t}\n\t}\n\n\tisConnected(): boolean {\n\t\treturn !!this.boss;\n\t}\n\n\tprivate cleanup(): void {\n\t\tthis.boss = undefined;\n\t\tthis.connecting = undefined;\n\t}\n\n\t/**\n\t * Get the underlying pg-boss instance for publishing/subscribing\n\t */\n\tget instance(): PgBoss | undefined {\n\t\treturn this.boss;\n\t}\n}\n"],"mappings":";;;;;AASA,IAAa,mBAAb,MAAa,iBAA4C;CACxD,AAAS,OAAOA,iCAAmB;CACnC,AAAQ;CACR,AAAQ;CAER,YAAoBC,QAAgC;EAAhC;CAAkC;;;;;CAMtD,aAAa,qBACZC,kBAC4B;EAC5B,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,eAAe,aAAa,IAAI,YAAY,EAAE,IAAI,SAAS,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,IAAI,KAAK,EAAE,IAAI,SAAS;EAEnH,MAAMD,SAAiC;GACtC,kBAAkB;GAClB,QAAQ,OAAO,IAAI,SAAS;EAC5B;EAED,MAAM,aAAa,IAAI,iBAAiB;AACxC,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAC9B,MAAI,KAAK,KAAM;AAEf,MAAI,KAAK,YAAY;AACpB,SAAM,KAAK;AACX;EACA;AAED,OAAK,aAAa,CAAC,YAAY;AAC9B,OAAI;IACH,MAAM,OAAO,IAAIE,gBAAO;KACvB,kBAAkB,KAAK,OAAO;KAC9B,GAAI,KAAK,OAAO,UAAU,EAAE,QAAQ,KAAK,OAAO,OAAQ;IACxD;AAED,UAAM,KAAK,OAAO;AAClB,SAAK,OAAO;GACZ,SAAQ,OAAO;AACf,SAAK,SAAS;AACd,UAAM;GACN;EACD,IAAG;AAEJ,QAAM,KAAK;AACX,OAAK;CACL;CAED,MAAM,QAAuB;AAC5B,MAAI;AACH,SAAM,KAAK,MAAM,KAAK,EAAE,UAAU,KAAM,EAAC;EACzC,QAAO,CAEP,UAAS;AACT,QAAK,SAAS;EACd;CACD;CAED,cAAuB;AACtB,WAAS,KAAK;CACd;CAED,AAAQ,UAAgB;AACvB,OAAK;AACL,OAAK;CACL;;;;CAKD,IAAI,WAA+B;AAClC,SAAO,KAAK;CACZ;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PgBossPublisher-B6VE_5KT.mjs","names":["connection: PgBossConnection","connectionString: string","messages: TMessage[]"],"sources":["../src/pgboss/PgBossPublisher.ts"],"sourcesContent":["import type { EventPublisher, PublishableMessage } from '../types';\nimport type { PgBossConnection } from './PgBossConnection';\n\nexport class PgBossPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(private connection: PgBossConnection) {}\n\n\t/**\n\t * Create a PgBossPublisher from a connection string.\n\t * Format: pgboss://user:pass@host:5432/database?schema=pgboss\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<PgBossPublisher<TMessage>> {\n\t\tconst { PgBossConnection } = await import('./PgBossConnection');\n\t\tconst connection =\n\t\t\tawait PgBossConnection.fromConnectionString(connectionString);\n\t\treturn new PgBossPublisher<TMessage>(connection);\n\t}\n\n\tasync publish(messages: TMessage[]): Promise<void> {\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\tconst boss = this.connection.instance;\n\t\tif (!boss) {\n\t\t\tthrow new Error('PgBoss instance not initialized');\n\t\t}\n\n\t\t// Ensure queues exist\n\t\tconst queueNames = [...new Set(messages.map((m) => m.type))];\n\t\tfor (const name of queueNames) {\n\t\t\tawait boss.createQueue(name);\n\t\t}\n\n\t\t// Batch insert — each JobInsert carries its queue name\n\t\tawait boss.insert(messages.map((m) => ({ name: m.type, data: m.payload })));\n\t}\n\n\tasync close(): Promise<void> {\n\t\t// Publisher doesn't own the connection\n\t}\n}\n"],"mappings":";AAGA,IAAa,kBAAb,MAAa,gBAEb;CACC,YAAoBA,YAA8B;EAA9B;CAAgC;;;;;CAMpD,aAAa,qBAEXC,kBAA8D;EAC/D,MAAM,EAAE,kBAAkB,GAAG,MAAM,OAAO;EAC1C,MAAM,aACL,MAAM,iBAAiB,qBAAqB,iBAAiB;AAC9D,SAAO,IAAI,gBAA0B;CACrC;CAED,MAAM,QAAQC,UAAqC;AAClD,OAAK,KAAK,WAAW,aAAa,CACjC,OAAM,KAAK,WAAW,SAAS;EAGhC,MAAM,OAAO,KAAK,WAAW;AAC7B,OAAK,KACJ,OAAM,IAAI,MAAM;EAIjB,MAAM,aAAa,CAAC,GAAG,IAAI,IAAI,SAAS,IAAI,CAAC,MAAM,EAAE,KAAK,CAAE;AAC5D,OAAK,MAAM,QAAQ,WAClB,OAAM,KAAK,YAAY,KAAK;AAI7B,QAAM,KAAK,OAAO,SAAS,IAAI,CAAC,OAAO;GAAE,MAAM,EAAE;GAAM,MAAM,EAAE;EAAS,GAAE,CAAC;CAC3E;CAED,MAAM,QAAuB,CAE5B;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PgBossPublisher-kFh3Mnbx.cjs","names":["connection: PgBossConnection","connectionString: string","messages: TMessage[]"],"sources":["../src/pgboss/PgBossPublisher.ts"],"sourcesContent":["import type { EventPublisher, PublishableMessage } from '../types';\nimport type { PgBossConnection } from './PgBossConnection';\n\nexport class PgBossPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(private connection: PgBossConnection) {}\n\n\t/**\n\t * Create a PgBossPublisher from a connection string.\n\t * Format: pgboss://user:pass@host:5432/database?schema=pgboss\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<PgBossPublisher<TMessage>> {\n\t\tconst { PgBossConnection } = await import('./PgBossConnection');\n\t\tconst connection =\n\t\t\tawait PgBossConnection.fromConnectionString(connectionString);\n\t\treturn new PgBossPublisher<TMessage>(connection);\n\t}\n\n\tasync publish(messages: TMessage[]): Promise<void> {\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\tconst boss = this.connection.instance;\n\t\tif (!boss) {\n\t\t\tthrow new Error('PgBoss instance not initialized');\n\t\t}\n\n\t\t// Ensure queues exist\n\t\tconst queueNames = [...new Set(messages.map((m) => m.type))];\n\t\tfor (const name of queueNames) {\n\t\t\tawait boss.createQueue(name);\n\t\t}\n\n\t\t// Batch insert — each JobInsert carries its queue name\n\t\tawait boss.insert(messages.map((m) => ({ name: m.type, data: m.payload })));\n\t}\n\n\tasync close(): Promise<void> {\n\t\t// Publisher doesn't own the connection\n\t}\n}\n"],"mappings":";;AAGA,IAAa,kBAAb,MAAa,gBAEb;CACC,YAAoBA,YAA8B;EAA9B;CAAgC;;;;;CAMpD,aAAa,qBAEXC,kBAA8D;EAC/D,MAAM,EAAE,kBAAkB,GAAG,2CAAM;EACnC,MAAM,aACL,MAAM,iBAAiB,qBAAqB,iBAAiB;AAC9D,SAAO,IAAI,gBAA0B;CACrC;CAED,MAAM,QAAQC,UAAqC;AAClD,OAAK,KAAK,WAAW,aAAa,CACjC,OAAM,KAAK,WAAW,SAAS;EAGhC,MAAM,OAAO,KAAK,WAAW;AAC7B,OAAK,KACJ,OAAM,IAAI,MAAM;EAIjB,MAAM,aAAa,CAAC,GAAG,IAAI,IAAI,SAAS,IAAI,CAAC,MAAM,EAAE,KAAK,CAAE;AAC5D,OAAK,MAAM,QAAQ,WAClB,OAAM,KAAK,YAAY,KAAK;AAI7B,QAAM,KAAK,OAAO,SAAS,IAAI,CAAC,OAAO;GAAE,MAAM,EAAE;GAAM,MAAM,EAAE;EAAS,GAAE,CAAC;CAC3E;CAED,MAAM,QAAuB,CAE5B;AACD"}