@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.
- package/CHANGELOG.md +6 -0
- package/dist/{PgBossConnection-wLwq2r13.cjs → PgBossConnection-B71ssr72.cjs} +2 -2
- package/dist/PgBossConnection-B71ssr72.cjs.map +1 -0
- package/dist/{PgBossConnection-BZUA7Is0.mjs → PgBossConnection-Bj_Wo1lQ.mjs} +2 -2
- package/dist/PgBossConnection-Bj_Wo1lQ.mjs.map +1 -0
- package/dist/{PgBossConnection-Cd4x7NuY.d.mts → PgBossConnection-DCfLGoHx.d.mts} +2 -2
- package/dist/{PgBossConnection-YdhixTjL.d.cts.map → PgBossConnection-DCfLGoHx.d.mts.map} +1 -1
- package/dist/{PgBossConnection-YdhixTjL.d.cts → PgBossConnection-oto_CAbP.d.cts} +2 -2
- package/dist/{PgBossConnection-Cd4x7NuY.d.mts.map → PgBossConnection-oto_CAbP.d.cts.map} +1 -1
- package/dist/{PgBossPublisher-B6VE_5KT.mjs → PgBossPublisher-Bwo7qSoH.mjs} +11 -7
- package/dist/PgBossPublisher-Bwo7qSoH.mjs.map +1 -0
- package/dist/{PgBossPublisher-b0deuqhy.d.mts → PgBossPublisher-CqjigBVC.d.mts} +2 -2
- package/dist/{PgBossPublisher-J6bY44Da.d.cts.map → PgBossPublisher-CqjigBVC.d.mts.map} +1 -1
- package/dist/{PgBossPublisher-kFh3Mnbx.cjs → PgBossPublisher-FTdYh58W.cjs} +11 -7
- package/dist/PgBossPublisher-FTdYh58W.cjs.map +1 -0
- package/dist/{PgBossPublisher-J6bY44Da.d.cts → PgBossPublisher-JIiB1zpA.d.cts} +2 -2
- package/dist/{PgBossPublisher-b0deuqhy.d.mts.map → PgBossPublisher-JIiB1zpA.d.cts.map} +1 -1
- package/dist/{PgBossSubscriber-2z82EaLF.d.mts → PgBossSubscriber-BUiB1JKf.d.mts} +2 -2
- package/dist/{PgBossSubscriber-2z82EaLF.d.mts.map → PgBossSubscriber-BUiB1JKf.d.mts.map} +1 -1
- package/dist/{PgBossSubscriber-CB6vm-LD.d.cts → PgBossSubscriber-Cozijfdj.d.cts} +2 -2
- package/dist/{PgBossSubscriber-CB6vm-LD.d.cts.map → PgBossSubscriber-Cozijfdj.d.cts.map} +1 -1
- package/dist/pgboss/PgBossConnection.cjs +1 -1
- package/dist/pgboss/PgBossConnection.d.cts +1 -1
- package/dist/pgboss/PgBossConnection.d.mts +1 -1
- package/dist/pgboss/PgBossConnection.mjs +1 -1
- package/dist/pgboss/PgBossPublisher.cjs +1 -1
- package/dist/pgboss/PgBossPublisher.d.cts +2 -2
- package/dist/pgboss/PgBossPublisher.d.mts +2 -2
- package/dist/pgboss/PgBossPublisher.mjs +1 -1
- package/dist/pgboss/PgBossSubscriber.d.cts +2 -2
- package/dist/pgboss/PgBossSubscriber.d.mts +2 -2
- package/dist/pgboss/index.cjs +2 -2
- package/dist/pgboss/index.d.cts +3 -3
- package/dist/pgboss/index.d.mts +3 -3
- package/dist/pgboss/index.mjs +2 -2
- package/package.json +3 -3
- package/src/pgboss/PgBossConnection.ts +1 -1
- package/src/pgboss/PgBossPublisher.ts +10 -6
- package/dist/PgBossConnection-BZUA7Is0.mjs.map +0 -1
- package/dist/PgBossConnection-wLwq2r13.cjs.map +0 -1
- package/dist/PgBossPublisher-B6VE_5KT.mjs.map +0 -1
- 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.
|
|
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-
|
|
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-
|
|
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-
|
|
32
|
+
//# sourceMappingURL=PgBossConnection-DCfLGoHx.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PgBossConnection-
|
|
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-
|
|
32
|
+
//# sourceMappingURL=PgBossConnection-oto_CAbP.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PgBossConnection-
|
|
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
|
|
20
|
-
for (const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
20
|
+
//# sourceMappingURL=PgBossPublisher-CqjigBVC.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PgBossPublisher-
|
|
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
|
|
21
|
-
for (const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
20
|
+
//# sourceMappingURL=PgBossPublisher-JIiB1zpA.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PgBossPublisher-
|
|
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-
|
|
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-
|
|
24
|
+
//# sourceMappingURL=PgBossSubscriber-BUiB1JKf.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PgBossSubscriber-
|
|
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-
|
|
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-
|
|
24
|
+
//# sourceMappingURL=PgBossSubscriber-Cozijfdj.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PgBossSubscriber-
|
|
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,3 +1,3 @@
|
|
|
1
1
|
import "../types-Dj23od3e.cjs";
|
|
2
|
-
import { PgBossConnection, PgBossConnectionConfig } from "../PgBossConnection-
|
|
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-
|
|
2
|
+
import { PgBossConnection, PgBossConnectionConfig } from "../PgBossConnection-DCfLGoHx.mjs";
|
|
3
3
|
export { PgBossConnection, PgBossConnectionConfig };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import "../types-Dj23od3e.cjs";
|
|
2
|
-
import "../PgBossConnection-
|
|
3
|
-
import { PgBossPublisher } from "../PgBossPublisher-
|
|
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-
|
|
3
|
-
import { PgBossPublisher } from "../PgBossPublisher-
|
|
2
|
+
import "../PgBossConnection-DCfLGoHx.mjs";
|
|
3
|
+
import { PgBossPublisher } from "../PgBossPublisher-CqjigBVC.mjs";
|
|
4
4
|
export { PgBossPublisher };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import "../types-Dj23od3e.cjs";
|
|
2
|
-
import "../PgBossConnection-
|
|
3
|
-
import { PgBossSubscriber, PgBossSubscriberOptions } from "../PgBossSubscriber-
|
|
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-
|
|
3
|
-
import { PgBossSubscriber, PgBossSubscriberOptions } from "../PgBossSubscriber-
|
|
2
|
+
import "../PgBossConnection-DCfLGoHx.mjs";
|
|
3
|
+
import { PgBossSubscriber, PgBossSubscriberOptions } from "../PgBossSubscriber-BUiB1JKf.mjs";
|
|
4
4
|
export { PgBossSubscriber, PgBossSubscriberOptions };
|
package/dist/pgboss/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require('../types-Byv8N9ma.cjs');
|
|
2
|
-
const require_PgBossConnection = require('../PgBossConnection-
|
|
3
|
-
const require_PgBossPublisher = require('../PgBossPublisher-
|
|
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;
|
package/dist/pgboss/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../types-Dj23od3e.cjs";
|
|
2
|
-
import { PgBossConnection, PgBossConnectionConfig } from "../PgBossConnection-
|
|
3
|
-
import { PgBossPublisher } from "../PgBossPublisher-
|
|
4
|
-
import { PgBossSubscriber, PgBossSubscriberOptions } from "../PgBossSubscriber-
|
|
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 };
|
package/dist/pgboss/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../types-Dh9Jyinx.mjs";
|
|
2
|
-
import { PgBossConnection, PgBossConnectionConfig } from "../PgBossConnection-
|
|
3
|
-
import { PgBossPublisher } from "../PgBossPublisher-
|
|
4
|
-
import { PgBossSubscriber, PgBossSubscriberOptions } from "../PgBossSubscriber-
|
|
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 };
|
package/dist/pgboss/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "../types-BrdcSEnd.mjs";
|
|
2
|
-
import { PgBossConnection } from "../PgBossConnection-
|
|
3
|
-
import { PgBossPublisher } from "../PgBossPublisher-
|
|
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.
|
|
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": ">=
|
|
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": "
|
|
75
|
+
"pg-boss": "~12.18.1",
|
|
76
76
|
"@geekmidas/schema": "^1.0.0"
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -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
|
-
//
|
|
33
|
-
const
|
|
34
|
-
for (const
|
|
35
|
-
|
|
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
|
-
|
|
39
|
-
|
|
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"}
|