@geekmidas/events 10.0.0-alpha.71 → 10.0.0-alpha.72
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/README.md +46 -1
- package/dist/basic/index.cjs +19 -0
- package/dist/basic/index.cjs.map +1 -1
- package/dist/basic/index.d.cts +8 -1
- package/dist/basic/index.d.cts.map +1 -1
- package/dist/basic/index.d.mts +8 -1
- package/dist/basic/index.d.mts.map +1 -1
- package/dist/basic/index.mjs +19 -1
- package/dist/basic/index.mjs.map +1 -1
- package/dist/index.cjs +33 -137
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +15 -33
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +15 -33
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +30 -138
- package/dist/index.mjs.map +1 -1
- package/dist/pgboss/index.cjs +38 -21
- package/dist/pgboss/index.cjs.map +1 -1
- package/dist/pgboss/index.d.cts +9 -1
- package/dist/pgboss/index.d.cts.map +1 -1
- package/dist/pgboss/index.d.mts +9 -1
- package/dist/pgboss/index.d.mts.map +1 -1
- package/dist/pgboss/index.mjs +38 -21
- package/dist/pgboss/index.mjs.map +1 -1
- package/dist/rabbitmq/index.cjs +28 -12
- package/dist/rabbitmq/index.cjs.map +1 -1
- package/dist/rabbitmq/index.d.cts +9 -1
- package/dist/rabbitmq/index.d.cts.map +1 -1
- package/dist/rabbitmq/index.d.mts +9 -1
- package/dist/rabbitmq/index.d.mts.map +1 -1
- package/dist/rabbitmq/index.mjs +29 -12
- package/dist/rabbitmq/index.mjs.map +1 -1
- package/dist/{types-gGaoT8qc.d.cts → registry-DIx25Q5s.d.cts} +108 -2
- package/dist/registry-DIx25Q5s.d.cts.map +1 -0
- package/dist/{types-gGaoT8qc.d.mts → registry-DIx25Q5s.d.mts} +108 -2
- package/dist/registry-DIx25Q5s.d.mts.map +1 -0
- package/dist/registry-DLnflkMm.mjs +99 -0
- package/dist/registry-DLnflkMm.mjs.map +1 -0
- package/dist/registry-DNk5GnGq.cjs +122 -0
- package/dist/registry-DNk5GnGq.cjs.map +1 -0
- package/dist/sns/index.cjs +261 -244
- package/dist/sns/index.cjs.map +1 -1
- package/dist/sns/index.d.cts +9 -1
- package/dist/sns/index.d.cts.map +1 -1
- package/dist/sns/index.d.mts +9 -1
- package/dist/sns/index.d.mts.map +1 -1
- package/dist/sns/index.mjs +261 -244
- package/dist/sns/index.mjs.map +1 -1
- package/dist/sqs/index.cjs +21 -0
- package/dist/sqs/index.cjs.map +1 -1
- package/dist/sqs/index.d.cts +9 -1
- package/dist/sqs/index.d.cts.map +1 -1
- package/dist/sqs/index.d.mts +9 -1
- package/dist/sqs/index.d.mts.map +1 -1
- package/dist/sqs/index.mjs +21 -1
- package/dist/sqs/index.mjs.map +1 -1
- package/package.json +3 -3
- package/dist/PgBossConnection-CywKoAZU.cjs +0 -2
- package/dist/PgBossConnection-DjoqT84r.mjs +0 -2
- package/dist/RabbitMQConnection-C9eccBL8.cjs +0 -2
- package/dist/RabbitMQConnection-CAp7VqyT.mjs +0 -2
- package/dist/SNSConnection-BWDC1wAF.cjs +0 -2
- package/dist/SNSConnection-ezQvVrDv.mjs +0 -2
- package/dist/types-gGaoT8qc.d.cts.map +0 -1
- package/dist/types-gGaoT8qc.d.mts.map +0 -1
package/README.md
CHANGED
|
@@ -28,8 +28,38 @@ pnpm add amqplib
|
|
|
28
28
|
|
|
29
29
|
# For AWS SQS/SNS
|
|
30
30
|
pnpm add @aws-sdk/client-sqs @aws-sdk/client-sns
|
|
31
|
+
|
|
32
|
+
# For pg-boss (PostgreSQL)
|
|
33
|
+
pnpm add pg-boss
|
|
31
34
|
```
|
|
32
35
|
|
|
36
|
+
### Registering a Broker
|
|
37
|
+
|
|
38
|
+
Each broker is a driver on its own subpath — the only module that imports its
|
|
39
|
+
peer dependency — and the core uses whichever ones the process registered. A
|
|
40
|
+
bundle therefore contains only the brokers its entry point registers.
|
|
41
|
+
|
|
42
|
+
| Subpath | Driver |
|
|
43
|
+
| --- | --- |
|
|
44
|
+
| `@geekmidas/events/basic` | `basicEventsDriver` |
|
|
45
|
+
| `@geekmidas/events/pgboss` | `pgbossEventsDriver` |
|
|
46
|
+
| `@geekmidas/events/rabbitmq` | `rabbitmqEventsDriver` |
|
|
47
|
+
| `@geekmidas/events/sns` | `snsEventsDriver` |
|
|
48
|
+
| `@geekmidas/events/sqs` | `sqsEventsDriver` |
|
|
49
|
+
|
|
50
|
+
Code generated by `gkm` (dev, build, test, Lambda handlers) registers its
|
|
51
|
+
target's broker. A script that builds its own publisher registers it once:
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
import { registerEventsDriver } from '@geekmidas/events';
|
|
55
|
+
import { pgbossEventsDriver } from '@geekmidas/events/pgboss';
|
|
56
|
+
|
|
57
|
+
registerEventsDriver(pgbossEventsDriver);
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Without it, `Publisher.fromConnectionString('pgboss://…')` throws
|
|
61
|
+
`UnregisteredEventsScheme`, which names the subpath and the call to add.
|
|
62
|
+
|
|
33
63
|
## Quick Start
|
|
34
64
|
|
|
35
65
|
### 1. Define Your Message Types
|
|
@@ -46,7 +76,14 @@ type UserEvents =
|
|
|
46
76
|
### 2. Create Publisher and Subscriber
|
|
47
77
|
|
|
48
78
|
```typescript
|
|
49
|
-
import {
|
|
79
|
+
import {
|
|
80
|
+
Publisher,
|
|
81
|
+
registerEventsDriver,
|
|
82
|
+
Subscriber,
|
|
83
|
+
} from '@geekmidas/events';
|
|
84
|
+
import { rabbitmqEventsDriver } from '@geekmidas/events/rabbitmq';
|
|
85
|
+
|
|
86
|
+
registerEventsDriver(rabbitmqEventsDriver);
|
|
50
87
|
|
|
51
88
|
// Create publisher from connection string
|
|
52
89
|
const publisher = await Publisher.fromConnectionString<UserEvents>(
|
|
@@ -411,6 +448,14 @@ Then use `endpoint: 'http://localhost:4566'` in your configuration.
|
|
|
411
448
|
|
|
412
449
|
## API Reference
|
|
413
450
|
|
|
451
|
+
### Registry
|
|
452
|
+
|
|
453
|
+
```typescript
|
|
454
|
+
function registerEventsDriver(driver: EventsDriver): void
|
|
455
|
+
function eventsDriverFor(scheme: string): EventsDriver // throws UnregisteredEventsScheme
|
|
456
|
+
function registeredEventsSchemes(): string[]
|
|
457
|
+
```
|
|
458
|
+
|
|
414
459
|
### Publisher
|
|
415
460
|
|
|
416
461
|
```typescript
|
package/dist/basic/index.cjs
CHANGED
|
@@ -63,8 +63,27 @@ var BasicSubscriber = class {
|
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
65
|
//#endregion
|
|
66
|
+
//#region src/basic/driver.ts
|
|
67
|
+
/**
|
|
68
|
+
* `basic://` — an in-process `EventEmitter`. Register it with
|
|
69
|
+
* `registerEventsDriver(basicEventsDriver)`.
|
|
70
|
+
*/
|
|
71
|
+
const basicEventsDriver = {
|
|
72
|
+
scheme: "basic",
|
|
73
|
+
connect: (url) => BasicConnection.fromConnectionString(url),
|
|
74
|
+
async publisher(url) {
|
|
75
|
+
return new BasicPublisher(await BasicConnection.fromConnectionString(url));
|
|
76
|
+
},
|
|
77
|
+
publisherFor: (connection) => new BasicPublisher(connection),
|
|
78
|
+
async subscriber(url) {
|
|
79
|
+
return new BasicSubscriber(await BasicConnection.fromConnectionString(url));
|
|
80
|
+
},
|
|
81
|
+
subscriberFor: (connection) => new BasicSubscriber(connection)
|
|
82
|
+
};
|
|
83
|
+
//#endregion
|
|
66
84
|
exports.BasicConnection = BasicConnection;
|
|
67
85
|
exports.BasicPublisher = BasicPublisher;
|
|
68
86
|
exports.BasicSubscriber = BasicSubscriber;
|
|
87
|
+
exports.basicEventsDriver = basicEventsDriver;
|
|
69
88
|
|
|
70
89
|
//# sourceMappingURL=index.cjs.map
|
package/dist/basic/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["EventEmitter"],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts"],"sourcesContent":["import { EventEmitter } from 'node:events';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport class BasicConnection implements EventConnection {\n\treadonly type = EventPublisherType.Basic;\n\tprivate emitter: EventEmitter;\n\tprivate connected = false;\n\n\tconstructor() {\n\t\tthis.emitter = new EventEmitter();\n\t}\n\n\t/**\n\t * Create a BasicConnection from a connection string\n\t * Format: basic://\n\t */\n\tstatic async fromConnectionString(\n\t\t_connectionString: string,\n\t): Promise<BasicConnection> {\n\t\t// Basic connection doesn't need any configuration\n\t\tconst connection = new BasicConnection();\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.emitter.removeAllListeners();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying EventEmitter\n\t * Used by BasicPublisher and BasicSubscriber\n\t */\n\tget eventEmitter(): EventEmitter {\n\t\treturn this.emitter;\n\t}\n}\n","import type { EventPublisher, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync publish(messages: TMessage[]) {\n\t\tconst emitter = this.connection.eventEmitter;\n\t\tfor (const message of messages) {\n\t\t\temitter.emit(message.type, message);\n\t\t}\n\t}\n}\n","import type { EventSubscriber, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync subscribe(\n\t\tmessages: TMessage['type'][],\n\t\tlistener: (payload: TMessage) => Promise<void>,\n\t): Promise<void> {\n\t\tconst emitter = this.connection.eventEmitter;\n\n\t\tfor (const messageType of messages) {\n\t\t\temitter.on(messageType, (message: TMessage) => {\n\t\t\t\tlistener(message).catch((_error) => {});\n\t\t\t});\n\t\t}\n\t}\n}\n"],"mappings":";;;;AAIA,IAAa,kBAAb,MAAa,gBAA2C;CACvD,OAAS;CACT;CACA,YAAoB;CAEpB,cAAc;EACb,KAAK,UAAU,IAAIA,YAAAA,aAAa;CACjC;;;;;CAMA,aAAa,qBACZ,mBAC2B;EAE3B,MAAM,aAAa,IAAI,gBAAgB;EACvC,MAAM,WAAW,QAAQ;EACzB,OAAO;CACR;CAEA,MAAM,UAAyB;EAC9B,KAAK,YAAY;CAClB;CAEA,MAAM,QAAuB;EAC5B,KAAK,QAAQ,mBAAmB;EAChC,KAAK,YAAY;CAClB;CAEA,cAAuB;EACtB,OAAO,KAAK;CACb;;;;;CAMA,IAAI,eAA6B;EAChC,OAAO,KAAK;CACb;AACD;;;AC3CA,IAAa,iBAAb,MAEA;CACqB;CAApB,YAAY,YAAqC;EAA7B,KAAA,aAAA;CAA8B;CAElD,MAAM,QAAQ,UAAsB;EACnC,MAAM,UAAU,KAAK,WAAW;EAChC,KAAK,MAAM,WAAW,UACrB,QAAQ,KAAK,QAAQ,MAAM,OAAO;CAEpC;AACD;;;ACXA,IAAa,kBAAb,MAEA;CACqB;CAApB,YAAY,YAAqC;EAA7B,KAAA,aAAA;CAA8B;CAElD,MAAM,UACL,UACA,UACgB;EAChB,MAAM,UAAU,KAAK,WAAW;EAEhC,KAAK,MAAM,eAAe,UACzB,QAAQ,GAAG,cAAc,YAAsB;GAC9C,SAAS,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC;EACvC,CAAC;CAEH;AACD"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["EventEmitter"],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts","../../src/basic/driver.ts"],"sourcesContent":["import { EventEmitter } from 'node:events';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport class BasicConnection implements EventConnection {\n\treadonly type = EventPublisherType.Basic;\n\tprivate emitter: EventEmitter;\n\tprivate connected = false;\n\n\tconstructor() {\n\t\tthis.emitter = new EventEmitter();\n\t}\n\n\t/**\n\t * Create a BasicConnection from a connection string\n\t * Format: basic://\n\t */\n\tstatic async fromConnectionString(\n\t\t_connectionString: string,\n\t): Promise<BasicConnection> {\n\t\t// Basic connection doesn't need any configuration\n\t\tconst connection = new BasicConnection();\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.emitter.removeAllListeners();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying EventEmitter\n\t * Used by BasicPublisher and BasicSubscriber\n\t */\n\tget eventEmitter(): EventEmitter {\n\t\treturn this.emitter;\n\t}\n}\n","import type { EventPublisher, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync publish(messages: TMessage[]) {\n\t\tconst emitter = this.connection.eventEmitter;\n\t\tfor (const message of messages) {\n\t\t\temitter.emit(message.type, message);\n\t\t}\n\t}\n}\n","import type { EventSubscriber, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync subscribe(\n\t\tmessages: TMessage['type'][],\n\t\tlistener: (payload: TMessage) => Promise<void>,\n\t): Promise<void> {\n\t\tconst emitter = this.connection.eventEmitter;\n\n\t\tfor (const messageType of messages) {\n\t\t\temitter.on(messageType, (message: TMessage) => {\n\t\t\t\tlistener(message).catch((_error) => {});\n\t\t\t});\n\t\t}\n\t}\n}\n","import type { EventsDriver } from '../registry';\nimport { EventPublisherType } from '../types';\nimport { BasicConnection } from './BasicConnection';\nimport { BasicPublisher } from './BasicPublisher';\nimport { BasicSubscriber } from './BasicSubscriber';\n\n/**\n * `basic://` — an in-process `EventEmitter`. Register it with\n * `registerEventsDriver(basicEventsDriver)`.\n */\nexport const basicEventsDriver: EventsDriver = {\n\tscheme: EventPublisherType.Basic,\n\tconnect: (url) => BasicConnection.fromConnectionString(url),\n\tasync publisher(url) {\n\t\treturn new BasicPublisher(await BasicConnection.fromConnectionString(url));\n\t},\n\tpublisherFor: (connection) =>\n\t\tnew BasicPublisher(connection as BasicConnection),\n\tasync subscriber(url) {\n\t\treturn new BasicSubscriber(await BasicConnection.fromConnectionString(url));\n\t},\n\tsubscriberFor: (connection) =>\n\t\tnew BasicSubscriber(connection as BasicConnection),\n};\n"],"mappings":";;;;AAIA,IAAa,kBAAb,MAAa,gBAA2C;CACvD,OAAS;CACT;CACA,YAAoB;CAEpB,cAAc;EACb,KAAK,UAAU,IAAIA,YAAAA,aAAa;CACjC;;;;;CAMA,aAAa,qBACZ,mBAC2B;EAE3B,MAAM,aAAa,IAAI,gBAAgB;EACvC,MAAM,WAAW,QAAQ;EACzB,OAAO;CACR;CAEA,MAAM,UAAyB;EAC9B,KAAK,YAAY;CAClB;CAEA,MAAM,QAAuB;EAC5B,KAAK,QAAQ,mBAAmB;EAChC,KAAK,YAAY;CAClB;CAEA,cAAuB;EACtB,OAAO,KAAK;CACb;;;;;CAMA,IAAI,eAA6B;EAChC,OAAO,KAAK;CACb;AACD;;;AC3CA,IAAa,iBAAb,MAEA;CACqB;CAApB,YAAY,YAAqC;EAA7B,KAAA,aAAA;CAA8B;CAElD,MAAM,QAAQ,UAAsB;EACnC,MAAM,UAAU,KAAK,WAAW;EAChC,KAAK,MAAM,WAAW,UACrB,QAAQ,KAAK,QAAQ,MAAM,OAAO;CAEpC;AACD;;;ACXA,IAAa,kBAAb,MAEA;CACqB;CAApB,YAAY,YAAqC;EAA7B,KAAA,aAAA;CAA8B;CAElD,MAAM,UACL,UACA,UACgB;EAChB,MAAM,UAAU,KAAK,WAAW;EAEhC,KAAK,MAAM,eAAe,UACzB,QAAQ,GAAG,cAAc,YAAsB;GAC9C,SAAS,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC;EACvC,CAAC;CAEH;AACD;;;;;;;ACVA,MAAa,oBAAkC;CAC9C,QAAA;CACA,UAAU,QAAQ,gBAAgB,qBAAqB,GAAG;CAC1D,MAAM,UAAU,KAAK;EACpB,OAAO,IAAI,eAAe,MAAM,gBAAgB,qBAAqB,GAAG,CAAC;CAC1E;CACA,eAAe,eACd,IAAI,eAAe,UAA6B;CACjD,MAAM,WAAW,KAAK;EACrB,OAAO,IAAI,gBAAgB,MAAM,gBAAgB,qBAAqB,GAAG,CAAC;CAC3E;CACA,gBAAgB,eACf,IAAI,gBAAgB,UAA6B;AACnD"}
|
package/dist/basic/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { d as EventPublisher, f as EventPublisherType, g as PublishableMessage, p as EventSubscriber, t as EventsDriver, u as EventConnection } from "../registry-DIx25Q5s.cjs";
|
|
2
2
|
import { EventEmitter } from "node:events";
|
|
3
3
|
//#region src/basic/BasicConnection.d.ts
|
|
4
4
|
export declare class BasicConnection implements EventConnection {
|
|
@@ -35,4 +35,11 @@ export declare class BasicSubscriber<TMessage extends PublishableMessage<string,
|
|
|
35
35
|
subscribe(messages: TMessage['type'][], listener: (payload: TMessage) => Promise<void>): Promise<void>;
|
|
36
36
|
}
|
|
37
37
|
//#endregion
|
|
38
|
+
//#region src/basic/driver.d.ts
|
|
39
|
+
/**
|
|
40
|
+
* `basic://` — an in-process `EventEmitter`. Register it with
|
|
41
|
+
* `registerEventsDriver(basicEventsDriver)`.
|
|
42
|
+
*/
|
|
43
|
+
export declare const basicEventsDriver: EventsDriver;
|
|
44
|
+
//#endregion
|
|
38
45
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts"],"mappings":";;;qBAIa,2BAA2B;WAC9B,OAAI,mBAAA;UACL;UACA;EAER;;;;;SAQa,qBACZ,4BACE,QAAQ;EAOL,WAAW;EAIX,SAAS;EAKf;;;;;MAQI,gBAAgB;;;;qBCxCR,eAAe,iBAAiB,4CACjC,eAAe;UAEN;EAApB,YAAoB,YAAY;EAE1B,QAAQ,UAAU,aAAU;;;;qBCLtB,gBAAgB,iBAAiB,4CAClC,gBAAgB;UAEP;EAApB,YAAoB,YAAY;EAE1B,UACL,UAAU,oBACV,WAAW,SAAS,aAAa,gBAC/B"}
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts","../../src/basic/driver.ts"],"mappings":";;;qBAIa,2BAA2B;WAC9B,OAAI,mBAAA;UACL;UACA;EAER;;;;;SAQa,qBACZ,4BACE,QAAQ;EAOL,WAAW;EAIX,SAAS;EAKf;;;;;MAQI,gBAAgB;;;;qBCxCR,eAAe,iBAAiB,4CACjC,eAAe;UAEN;EAApB,YAAoB,YAAY;EAE1B,QAAQ,UAAU,aAAU;;;;qBCLtB,gBAAgB,iBAAiB,4CAClC,gBAAgB;UAEP;EAApB,YAAoB,YAAY;EAE1B,UACL,UAAU,oBACV,WAAW,SAAS,aAAa,gBAC/B;;;;;;;;qBCDS,mBAAmB"}
|
package/dist/basic/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { d as EventPublisher, f as EventPublisherType, g as PublishableMessage, p as EventSubscriber, t as EventsDriver, u as EventConnection } from "../registry-DIx25Q5s.mjs";
|
|
2
2
|
import { EventEmitter } from "node:events";
|
|
3
3
|
//#region src/basic/BasicConnection.d.ts
|
|
4
4
|
export declare class BasicConnection implements EventConnection {
|
|
@@ -35,4 +35,11 @@ export declare class BasicSubscriber<TMessage extends PublishableMessage<string,
|
|
|
35
35
|
subscribe(messages: TMessage['type'][], listener: (payload: TMessage) => Promise<void>): Promise<void>;
|
|
36
36
|
}
|
|
37
37
|
//#endregion
|
|
38
|
+
//#region src/basic/driver.d.ts
|
|
39
|
+
/**
|
|
40
|
+
* `basic://` — an in-process `EventEmitter`. Register it with
|
|
41
|
+
* `registerEventsDriver(basicEventsDriver)`.
|
|
42
|
+
*/
|
|
43
|
+
export declare const basicEventsDriver: EventsDriver;
|
|
44
|
+
//#endregion
|
|
38
45
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts"],"mappings":";;;qBAIa,2BAA2B;WAC9B,OAAI,mBAAA;UACL;UACA;EAER;;;;;SAQa,qBACZ,4BACE,QAAQ;EAOL,WAAW;EAIX,SAAS;EAKf;;;;;MAQI,gBAAgB;;;;qBCxCR,eAAe,iBAAiB,4CACjC,eAAe;UAEN;EAApB,YAAoB,YAAY;EAE1B,QAAQ,UAAU,aAAU;;;;qBCLtB,gBAAgB,iBAAiB,4CAClC,gBAAgB;UAEP;EAApB,YAAoB,YAAY;EAE1B,UACL,UAAU,oBACV,WAAW,SAAS,aAAa,gBAC/B"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts","../../src/basic/driver.ts"],"mappings":";;;qBAIa,2BAA2B;WAC9B,OAAI,mBAAA;UACL;UACA;EAER;;;;;SAQa,qBACZ,4BACE,QAAQ;EAOL,WAAW;EAIX,SAAS;EAKf;;;;;MAQI,gBAAgB;;;;qBCxCR,eAAe,iBAAiB,4CACjC,eAAe;UAEN;EAApB,YAAoB,YAAY;EAE1B,QAAQ,UAAU,aAAU;;;;qBCLtB,gBAAgB,iBAAiB,4CAClC,gBAAgB;UAEP;EAApB,YAAoB,YAAY;EAE1B,UACL,UAAU,oBACV,WAAW,SAAS,aAAa,gBAC/B;;;;;;;;qBCDS,mBAAmB"}
|
package/dist/basic/index.mjs
CHANGED
|
@@ -62,6 +62,24 @@ var BasicSubscriber = class {
|
|
|
62
62
|
}
|
|
63
63
|
};
|
|
64
64
|
//#endregion
|
|
65
|
-
|
|
65
|
+
//#region src/basic/driver.ts
|
|
66
|
+
/**
|
|
67
|
+
* `basic://` — an in-process `EventEmitter`. Register it with
|
|
68
|
+
* `registerEventsDriver(basicEventsDriver)`.
|
|
69
|
+
*/
|
|
70
|
+
const basicEventsDriver = {
|
|
71
|
+
scheme: "basic",
|
|
72
|
+
connect: (url) => BasicConnection.fromConnectionString(url),
|
|
73
|
+
async publisher(url) {
|
|
74
|
+
return new BasicPublisher(await BasicConnection.fromConnectionString(url));
|
|
75
|
+
},
|
|
76
|
+
publisherFor: (connection) => new BasicPublisher(connection),
|
|
77
|
+
async subscriber(url) {
|
|
78
|
+
return new BasicSubscriber(await BasicConnection.fromConnectionString(url));
|
|
79
|
+
},
|
|
80
|
+
subscriberFor: (connection) => new BasicSubscriber(connection)
|
|
81
|
+
};
|
|
82
|
+
//#endregion
|
|
83
|
+
export { BasicConnection, BasicPublisher, BasicSubscriber, basicEventsDriver };
|
|
66
84
|
|
|
67
85
|
//# sourceMappingURL=index.mjs.map
|
package/dist/basic/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts"],"sourcesContent":["import { EventEmitter } from 'node:events';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport class BasicConnection implements EventConnection {\n\treadonly type = EventPublisherType.Basic;\n\tprivate emitter: EventEmitter;\n\tprivate connected = false;\n\n\tconstructor() {\n\t\tthis.emitter = new EventEmitter();\n\t}\n\n\t/**\n\t * Create a BasicConnection from a connection string\n\t * Format: basic://\n\t */\n\tstatic async fromConnectionString(\n\t\t_connectionString: string,\n\t): Promise<BasicConnection> {\n\t\t// Basic connection doesn't need any configuration\n\t\tconst connection = new BasicConnection();\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.emitter.removeAllListeners();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying EventEmitter\n\t * Used by BasicPublisher and BasicSubscriber\n\t */\n\tget eventEmitter(): EventEmitter {\n\t\treturn this.emitter;\n\t}\n}\n","import type { EventPublisher, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync publish(messages: TMessage[]) {\n\t\tconst emitter = this.connection.eventEmitter;\n\t\tfor (const message of messages) {\n\t\t\temitter.emit(message.type, message);\n\t\t}\n\t}\n}\n","import type { EventSubscriber, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync subscribe(\n\t\tmessages: TMessage['type'][],\n\t\tlistener: (payload: TMessage) => Promise<void>,\n\t): Promise<void> {\n\t\tconst emitter = this.connection.eventEmitter;\n\n\t\tfor (const messageType of messages) {\n\t\t\temitter.on(messageType, (message: TMessage) => {\n\t\t\t\tlistener(message).catch((_error) => {});\n\t\t\t});\n\t\t}\n\t}\n}\n"],"mappings":";;;AAIA,IAAa,kBAAb,MAAa,gBAA2C;CACvD,OAAS;CACT;CACA,YAAoB;CAEpB,cAAc;EACb,KAAK,UAAU,IAAI,aAAa;CACjC;;;;;CAMA,aAAa,qBACZ,mBAC2B;EAE3B,MAAM,aAAa,IAAI,gBAAgB;EACvC,MAAM,WAAW,QAAQ;EACzB,OAAO;CACR;CAEA,MAAM,UAAyB;EAC9B,KAAK,YAAY;CAClB;CAEA,MAAM,QAAuB;EAC5B,KAAK,QAAQ,mBAAmB;EAChC,KAAK,YAAY;CAClB;CAEA,cAAuB;EACtB,OAAO,KAAK;CACb;;;;;CAMA,IAAI,eAA6B;EAChC,OAAO,KAAK;CACb;AACD;;;AC3CA,IAAa,iBAAb,MAEA;CACqB;CAApB,YAAY,YAAqC;EAA7B,KAAA,aAAA;CAA8B;CAElD,MAAM,QAAQ,UAAsB;EACnC,MAAM,UAAU,KAAK,WAAW;EAChC,KAAK,MAAM,WAAW,UACrB,QAAQ,KAAK,QAAQ,MAAM,OAAO;CAEpC;AACD;;;ACXA,IAAa,kBAAb,MAEA;CACqB;CAApB,YAAY,YAAqC;EAA7B,KAAA,aAAA;CAA8B;CAElD,MAAM,UACL,UACA,UACgB;EAChB,MAAM,UAAU,KAAK,WAAW;EAEhC,KAAK,MAAM,eAAe,UACzB,QAAQ,GAAG,cAAc,YAAsB;GAC9C,SAAS,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC;EACvC,CAAC;CAEH;AACD"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts","../../src/basic/driver.ts"],"sourcesContent":["import { EventEmitter } from 'node:events';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport class BasicConnection implements EventConnection {\n\treadonly type = EventPublisherType.Basic;\n\tprivate emitter: EventEmitter;\n\tprivate connected = false;\n\n\tconstructor() {\n\t\tthis.emitter = new EventEmitter();\n\t}\n\n\t/**\n\t * Create a BasicConnection from a connection string\n\t * Format: basic://\n\t */\n\tstatic async fromConnectionString(\n\t\t_connectionString: string,\n\t): Promise<BasicConnection> {\n\t\t// Basic connection doesn't need any configuration\n\t\tconst connection = new BasicConnection();\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.emitter.removeAllListeners();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying EventEmitter\n\t * Used by BasicPublisher and BasicSubscriber\n\t */\n\tget eventEmitter(): EventEmitter {\n\t\treturn this.emitter;\n\t}\n}\n","import type { EventPublisher, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync publish(messages: TMessage[]) {\n\t\tconst emitter = this.connection.eventEmitter;\n\t\tfor (const message of messages) {\n\t\t\temitter.emit(message.type, message);\n\t\t}\n\t}\n}\n","import type { EventSubscriber, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync subscribe(\n\t\tmessages: TMessage['type'][],\n\t\tlistener: (payload: TMessage) => Promise<void>,\n\t): Promise<void> {\n\t\tconst emitter = this.connection.eventEmitter;\n\n\t\tfor (const messageType of messages) {\n\t\t\temitter.on(messageType, (message: TMessage) => {\n\t\t\t\tlistener(message).catch((_error) => {});\n\t\t\t});\n\t\t}\n\t}\n}\n","import type { EventsDriver } from '../registry';\nimport { EventPublisherType } from '../types';\nimport { BasicConnection } from './BasicConnection';\nimport { BasicPublisher } from './BasicPublisher';\nimport { BasicSubscriber } from './BasicSubscriber';\n\n/**\n * `basic://` — an in-process `EventEmitter`. Register it with\n * `registerEventsDriver(basicEventsDriver)`.\n */\nexport const basicEventsDriver: EventsDriver = {\n\tscheme: EventPublisherType.Basic,\n\tconnect: (url) => BasicConnection.fromConnectionString(url),\n\tasync publisher(url) {\n\t\treturn new BasicPublisher(await BasicConnection.fromConnectionString(url));\n\t},\n\tpublisherFor: (connection) =>\n\t\tnew BasicPublisher(connection as BasicConnection),\n\tasync subscriber(url) {\n\t\treturn new BasicSubscriber(await BasicConnection.fromConnectionString(url));\n\t},\n\tsubscriberFor: (connection) =>\n\t\tnew BasicSubscriber(connection as BasicConnection),\n};\n"],"mappings":";;;AAIA,IAAa,kBAAb,MAAa,gBAA2C;CACvD,OAAS;CACT;CACA,YAAoB;CAEpB,cAAc;EACb,KAAK,UAAU,IAAI,aAAa;CACjC;;;;;CAMA,aAAa,qBACZ,mBAC2B;EAE3B,MAAM,aAAa,IAAI,gBAAgB;EACvC,MAAM,WAAW,QAAQ;EACzB,OAAO;CACR;CAEA,MAAM,UAAyB;EAC9B,KAAK,YAAY;CAClB;CAEA,MAAM,QAAuB;EAC5B,KAAK,QAAQ,mBAAmB;EAChC,KAAK,YAAY;CAClB;CAEA,cAAuB;EACtB,OAAO,KAAK;CACb;;;;;CAMA,IAAI,eAA6B;EAChC,OAAO,KAAK;CACb;AACD;;;AC3CA,IAAa,iBAAb,MAEA;CACqB;CAApB,YAAY,YAAqC;EAA7B,KAAA,aAAA;CAA8B;CAElD,MAAM,QAAQ,UAAsB;EACnC,MAAM,UAAU,KAAK,WAAW;EAChC,KAAK,MAAM,WAAW,UACrB,QAAQ,KAAK,QAAQ,MAAM,OAAO;CAEpC;AACD;;;ACXA,IAAa,kBAAb,MAEA;CACqB;CAApB,YAAY,YAAqC;EAA7B,KAAA,aAAA;CAA8B;CAElD,MAAM,UACL,UACA,UACgB;EAChB,MAAM,UAAU,KAAK,WAAW;EAEhC,KAAK,MAAM,eAAe,UACzB,QAAQ,GAAG,cAAc,YAAsB;GAC9C,SAAS,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC;EACvC,CAAC;CAEH;AACD;;;;;;;ACVA,MAAa,oBAAkC;CAC9C,QAAA;CACA,UAAU,QAAQ,gBAAgB,qBAAqB,GAAG;CAC1D,MAAM,UAAU,KAAK;EACpB,OAAO,IAAI,eAAe,MAAM,gBAAgB,qBAAqB,GAAG,CAAC;CAC1E;CACA,eAAe,eACd,IAAI,eAAe,UAA6B;CACjD,MAAM,WAAW,KAAK;EACrB,OAAO,IAAI,gBAAgB,MAAM,gBAAgB,qBAAqB,GAAG,CAAC;CAC3E;CACA,gBAAgB,eACf,IAAI,gBAAgB,UAA6B;AACnD"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,178 +1,70 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_types = require("./types-BcZjLxVV.cjs");
|
|
3
|
+
const require_registry = require("./registry-DNk5GnGq.cjs");
|
|
3
4
|
//#region src/EventConnection.ts
|
|
4
5
|
var EventConnectionFactory = class {
|
|
5
6
|
/**
|
|
6
|
-
* Create an EventConnection from a connection string
|
|
7
|
-
*
|
|
7
|
+
* Create an EventConnection from a connection string, through whichever
|
|
8
|
+
* driver is registered for its scheme — see `registerEventsDriver`.
|
|
9
|
+
*
|
|
10
|
+
* @throws {UnregisteredEventsScheme} when the broker's driver is not
|
|
11
|
+
* registered.
|
|
8
12
|
*/
|
|
9
13
|
static async fromConnectionString(connectionStr) {
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
case "basic": {
|
|
13
|
-
const { BasicConnection } = await Promise.resolve().then(() => require("./basic/index.cjs"));
|
|
14
|
-
return BasicConnection.fromConnectionString(connectionStr);
|
|
15
|
-
}
|
|
16
|
-
case "rabbitmq": {
|
|
17
|
-
const { RabbitMQConnection } = await Promise.resolve().then(() => require("./rabbitmq/index.cjs"));
|
|
18
|
-
return RabbitMQConnection.fromConnectionString(connectionStr);
|
|
19
|
-
}
|
|
20
|
-
case "sqs": {
|
|
21
|
-
const { SQSConnection } = await Promise.resolve().then(() => require("./sqs/index.cjs"));
|
|
22
|
-
return SQSConnection.fromConnectionString(connectionStr);
|
|
23
|
-
}
|
|
24
|
-
case "sns": {
|
|
25
|
-
const { SNSConnection } = await Promise.resolve().then(() => require("./sns/index.cjs"));
|
|
26
|
-
return SNSConnection.fromConnectionString(connectionStr);
|
|
27
|
-
}
|
|
28
|
-
case "pgboss": {
|
|
29
|
-
const { PgBossConnection } = await Promise.resolve().then(() => require("./pgboss/index.cjs"));
|
|
30
|
-
return PgBossConnection.fromConnectionString(connectionStr);
|
|
31
|
-
}
|
|
32
|
-
default: throw new require_types.UnsupportedEventTransport(protocol, "connection");
|
|
33
|
-
}
|
|
14
|
+
const scheme = new URL(connectionStr).protocol;
|
|
15
|
+
return require_registry.eventsDriverFor(scheme, "connection").connect(connectionStr);
|
|
34
16
|
}
|
|
35
17
|
};
|
|
36
18
|
//#endregion
|
|
37
19
|
//#region src/Publisher.ts
|
|
20
|
+
/**
|
|
21
|
+
* Publishers for a connection string or a connection, through whichever
|
|
22
|
+
* driver is registered for its scheme — see `registerEventsDriver`.
|
|
23
|
+
*/
|
|
38
24
|
var Publisher = class {
|
|
39
25
|
/**
|
|
40
26
|
* Create a publisher from a connection string
|
|
41
27
|
* This creates both a connection and a publisher
|
|
28
|
+
*
|
|
29
|
+
* @throws {UnregisteredEventsScheme} when the broker's driver is not
|
|
30
|
+
* registered.
|
|
42
31
|
*/
|
|
43
32
|
static async fromConnectionString(connectionStr, options = {}) {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
case "basic": {
|
|
47
|
-
const { BasicConnection, BasicPublisher } = await Promise.resolve().then(() => require("./basic/index.cjs"));
|
|
48
|
-
return new BasicPublisher(await BasicConnection.fromConnectionString(connectionStr));
|
|
49
|
-
}
|
|
50
|
-
case "rabbitmq": {
|
|
51
|
-
const { RabbitMQPublisher } = await Promise.resolve().then(() => require("./rabbitmq/index.cjs"));
|
|
52
|
-
return RabbitMQPublisher.fromConnectionString(connectionStr);
|
|
53
|
-
}
|
|
54
|
-
case "sqs": {
|
|
55
|
-
const { SQSPublisher } = await Promise.resolve().then(() => require("./sqs/index.cjs"));
|
|
56
|
-
return SQSPublisher.fromConnectionString(connectionStr);
|
|
57
|
-
}
|
|
58
|
-
case "sns": {
|
|
59
|
-
const { SNSPublisher } = await Promise.resolve().then(() => require("./sns/index.cjs"));
|
|
60
|
-
return SNSPublisher.fromConnectionString(connectionStr);
|
|
61
|
-
}
|
|
62
|
-
case "pgboss": {
|
|
63
|
-
const { PgBossPublisher } = await Promise.resolve().then(() => require("./pgboss/index.cjs"));
|
|
64
|
-
return PgBossPublisher.fromConnectionString(connectionStr, options);
|
|
65
|
-
}
|
|
66
|
-
default: throw new require_types.UnsupportedEventTransport(url.protocol.replace(":", ""), "publisher");
|
|
67
|
-
}
|
|
33
|
+
const scheme = new URL(connectionStr).protocol;
|
|
34
|
+
return require_registry.eventsDriverFor(scheme, "publisher").publisher(connectionStr, options);
|
|
68
35
|
}
|
|
69
36
|
/**
|
|
70
37
|
* Create a publisher from an existing connection
|
|
71
38
|
* This allows sharing connections between publishers and subscribers
|
|
72
39
|
*/
|
|
73
|
-
static async fromConnection(connection) {
|
|
74
|
-
|
|
75
|
-
case "basic": {
|
|
76
|
-
const { BasicPublisher } = await Promise.resolve().then(() => require("./basic/index.cjs"));
|
|
77
|
-
const { BasicConnection } = await Promise.resolve().then(() => require("./basic/index.cjs"));
|
|
78
|
-
return new BasicPublisher(connection);
|
|
79
|
-
}
|
|
80
|
-
case "rabbitmq": {
|
|
81
|
-
const { RabbitMQPublisher } = await Promise.resolve().then(() => require("./rabbitmq/index.cjs"));
|
|
82
|
-
const { RabbitMQConnection } = await Promise.resolve().then(() => require("./rabbitmq/index.cjs"));
|
|
83
|
-
return new RabbitMQPublisher(connection);
|
|
84
|
-
}
|
|
85
|
-
case "sqs": {
|
|
86
|
-
const { SQSPublisher } = await Promise.resolve().then(() => require("./sqs/index.cjs"));
|
|
87
|
-
const { SQSConnection } = await Promise.resolve().then(() => require("./sqs/index.cjs"));
|
|
88
|
-
return new SQSPublisher(connection);
|
|
89
|
-
}
|
|
90
|
-
case "sns": {
|
|
91
|
-
const { SNSPublisher } = await Promise.resolve().then(() => require("./sns/index.cjs"));
|
|
92
|
-
const { SNSConnection } = await Promise.resolve().then(() => require("./sns/index.cjs"));
|
|
93
|
-
return new SNSPublisher(connection);
|
|
94
|
-
}
|
|
95
|
-
case "pgboss": {
|
|
96
|
-
const { PgBossPublisher } = await Promise.resolve().then(() => require("./pgboss/index.cjs"));
|
|
97
|
-
const { PgBossConnection } = await Promise.resolve().then(() => require("./pgboss/index.cjs"));
|
|
98
|
-
return new PgBossPublisher(connection);
|
|
99
|
-
}
|
|
100
|
-
default: throw new require_types.UnsupportedEventTransport(connection.type, "publisher");
|
|
101
|
-
}
|
|
40
|
+
static async fromConnection(connection, options = {}) {
|
|
41
|
+
return require_registry.eventsDriverFor(connection.type, "publisher").publisherFor(connection, options);
|
|
102
42
|
}
|
|
103
43
|
};
|
|
104
44
|
//#endregion
|
|
105
45
|
//#region src/Subscriber.ts
|
|
46
|
+
/**
|
|
47
|
+
* Subscribers for a connection string or a connection, through whichever
|
|
48
|
+
* driver is registered for its scheme — see `registerEventsDriver`.
|
|
49
|
+
*/
|
|
106
50
|
var Subscriber = class {
|
|
107
51
|
/**
|
|
108
52
|
* Create a subscriber from a connection string
|
|
109
53
|
* This creates both a connection and a subscriber
|
|
54
|
+
*
|
|
55
|
+
* @throws {UnregisteredEventsScheme} when the broker's driver is not
|
|
56
|
+
* registered.
|
|
110
57
|
*/
|
|
111
58
|
static async fromConnectionString(connectionStr) {
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
case "basic": {
|
|
115
|
-
const { BasicConnection, BasicSubscriber } = await Promise.resolve().then(() => require("./basic/index.cjs"));
|
|
116
|
-
return new BasicSubscriber(await BasicConnection.fromConnectionString(connectionStr));
|
|
117
|
-
}
|
|
118
|
-
case "rabbitmq": {
|
|
119
|
-
const { RabbitMQSubscriber } = await Promise.resolve().then(() => require("./rabbitmq/index.cjs"));
|
|
120
|
-
return RabbitMQSubscriber.fromConnectionString(connectionStr);
|
|
121
|
-
}
|
|
122
|
-
case "sns": {
|
|
123
|
-
const { SNSSubscriber } = await Promise.resolve().then(() => require("./sns/index.cjs"));
|
|
124
|
-
return SNSSubscriber.fromConnectionString(connectionStr);
|
|
125
|
-
}
|
|
126
|
-
case "sqs": {
|
|
127
|
-
if (new URL(connectionStr).searchParams.get("topicArn")) {
|
|
128
|
-
const { SNSSubscriber } = await Promise.resolve().then(() => require("./sns/index.cjs"));
|
|
129
|
-
const snsConnectionStr = connectionStr.replace("sqs://", "sns://");
|
|
130
|
-
return SNSSubscriber.fromConnectionString(snsConnectionStr);
|
|
131
|
-
}
|
|
132
|
-
const { SQSSubscriber } = await Promise.resolve().then(() => require("./sqs/index.cjs"));
|
|
133
|
-
const { SQSConnection } = await Promise.resolve().then(() => require("./sqs/index.cjs"));
|
|
134
|
-
return new SQSSubscriber(await SQSConnection.fromConnectionString(connectionStr));
|
|
135
|
-
}
|
|
136
|
-
case "pgboss": {
|
|
137
|
-
const { PgBossSubscriber } = await Promise.resolve().then(() => require("./pgboss/index.cjs"));
|
|
138
|
-
return PgBossSubscriber.fromConnectionString(connectionStr);
|
|
139
|
-
}
|
|
140
|
-
default: throw new require_types.UnsupportedEventTransport(url.protocol.replace(":", ""), "subscriber");
|
|
141
|
-
}
|
|
59
|
+
const scheme = new URL(connectionStr).protocol;
|
|
60
|
+
return require_registry.eventsDriverFor(scheme, "subscriber").subscriber(connectionStr);
|
|
142
61
|
}
|
|
143
62
|
/**
|
|
144
63
|
* Create a subscriber from an existing connection
|
|
145
64
|
* This allows sharing connections between publishers and subscribers
|
|
146
65
|
*/
|
|
147
66
|
static async fromConnection(connection, options = {}) {
|
|
148
|
-
|
|
149
|
-
case "basic": {
|
|
150
|
-
const { BasicSubscriber } = await Promise.resolve().then(() => require("./basic/index.cjs"));
|
|
151
|
-
const { BasicConnection } = await Promise.resolve().then(() => require("./basic/index.cjs"));
|
|
152
|
-
return new BasicSubscriber(connection);
|
|
153
|
-
}
|
|
154
|
-
case "rabbitmq": {
|
|
155
|
-
const { RabbitMQSubscriber } = await Promise.resolve().then(() => require("./rabbitmq/index.cjs"));
|
|
156
|
-
const { RabbitMQConnection } = await Promise.resolve().then(() => require("./rabbitmq/index.cjs"));
|
|
157
|
-
return new RabbitMQSubscriber(connection);
|
|
158
|
-
}
|
|
159
|
-
case "sns": {
|
|
160
|
-
const { SNSSubscriber } = await Promise.resolve().then(() => require("./sns/index.cjs"));
|
|
161
|
-
const { SNSConnection } = await Promise.resolve().then(() => require("./sns/index.cjs"));
|
|
162
|
-
return new SNSSubscriber(connection);
|
|
163
|
-
}
|
|
164
|
-
case "sqs": {
|
|
165
|
-
const { SQSSubscriber } = await Promise.resolve().then(() => require("./sqs/index.cjs"));
|
|
166
|
-
const { SQSConnection } = await Promise.resolve().then(() => require("./sqs/index.cjs"));
|
|
167
|
-
return new SQSSubscriber(connection);
|
|
168
|
-
}
|
|
169
|
-
case "pgboss": {
|
|
170
|
-
const { PgBossSubscriber } = await Promise.resolve().then(() => require("./pgboss/index.cjs"));
|
|
171
|
-
const { PgBossConnection } = await Promise.resolve().then(() => require("./pgboss/index.cjs"));
|
|
172
|
-
return new PgBossSubscriber(connection, options);
|
|
173
|
-
}
|
|
174
|
-
default: throw new require_types.UnsupportedEventTransport(connection.type, "subscriber");
|
|
175
|
-
}
|
|
67
|
+
return require_registry.eventsDriverFor(connection.type, "subscriber").subscriberFor(connection, options);
|
|
176
68
|
}
|
|
177
69
|
};
|
|
178
70
|
//#endregion
|
|
@@ -180,6 +72,10 @@ exports.EventConnectionFactory = EventConnectionFactory;
|
|
|
180
72
|
exports.EventPublisherType = require_types.EventPublisherType;
|
|
181
73
|
exports.Publisher = Publisher;
|
|
182
74
|
exports.Subscriber = Subscriber;
|
|
75
|
+
exports.UnregisteredEventsScheme = require_registry.UnregisteredEventsScheme;
|
|
183
76
|
exports.UnsupportedEventTransport = require_types.UnsupportedEventTransport;
|
|
77
|
+
exports.eventsDriverFor = require_registry.eventsDriverFor;
|
|
78
|
+
exports.registerEventsDriver = require_registry.registerEventsDriver;
|
|
79
|
+
exports.registeredEventsSchemes = require_registry.registeredEventsSchemes;
|
|
184
80
|
|
|
185
81
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["UnsupportedEventTransport","UnsupportedEventTransport","UnsupportedEventTransport"],"sources":["../src/EventConnection.ts","../src/Publisher.ts","../src/Subscriber.ts"],"sourcesContent":["import type { EventConnection } from './types';\nimport { EventPublisherType, UnsupportedEventTransport } from './types';\n\nexport class EventConnectionFactory {\n\t/**\n\t * Create an EventConnection from a connection string\n\t * Dynamically imports the appropriate connection implementation\n\t */\n\tstatic async fromConnectionString(\n\t\tconnectionStr: string,\n\t): Promise<EventConnection> {\n\t\tconst url = new URL(connectionStr);\n\t\tconst protocol = url.protocol.replace(':', '') as EventPublisherType;\n\n\t\tswitch (protocol) {\n\t\t\tcase EventPublisherType.Basic: {\n\t\t\t\tconst { BasicConnection } = await import('./basic');\n\t\t\t\treturn BasicConnection.fromConnectionString(connectionStr);\n\t\t\t}\n\t\t\tcase EventPublisherType.RabbitMQ: {\n\t\t\t\tconst { RabbitMQConnection } = await import('./rabbitmq');\n\t\t\t\treturn RabbitMQConnection.fromConnectionString(connectionStr);\n\t\t\t}\n\t\t\tcase EventPublisherType.SQS: {\n\t\t\t\tconst { SQSConnection } = await import('./sqs');\n\t\t\t\treturn SQSConnection.fromConnectionString(connectionStr);\n\t\t\t}\n\t\t\tcase EventPublisherType.SNS: {\n\t\t\t\tconst { SNSConnection } = await import('./sns');\n\t\t\t\treturn SNSConnection.fromConnectionString(connectionStr);\n\t\t\t}\n\t\t\tcase EventPublisherType.PgBoss: {\n\t\t\t\tconst { PgBossConnection } = await import('./pgboss');\n\t\t\t\treturn PgBossConnection.fromConnectionString(connectionStr);\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tthrow new UnsupportedEventTransport(protocol, 'connection');\n\t\t}\n\t}\n}\n\nexport type { EventConnection } from './types';\nexport { EventPublisherType } from './types';\n","import type {\n\tEventConnection,\n\tEventPublisher,\n\tPublishableMessage,\n} from './types';\nimport { EventPublisherType, UnsupportedEventTransport } from './types';\n\n/** How a publisher is used, beyond the address it reaches. */\nexport interface PublisherOptions {\n\t/**\n\t * The topic this publisher fans out to. SNS and RabbitMQ name the topic in\n\t * their address already; pg-boss has one address for every topic and queue,\n\t * so it is told here that a message goes to every subscriber rather than to\n\t * one queue.\n\t */\n\ttopic?: string;\n}\n\nexport class Publisher {\n\t/**\n\t * Create a publisher from a connection string\n\t * This creates both a connection and a publisher\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(\n\t\tconnectionStr: EventPublisherConnectionString,\n\t\toptions: PublisherOptions = {},\n\t): Promise<EventPublisher<TMessage>> {\n\t\tconst url = new URL(connectionStr);\n\t\tswitch (url.protocol.replace(':', '')) {\n\t\t\tcase EventPublisherType.Basic: {\n\t\t\t\tconst { BasicConnection, BasicPublisher } = await import('./basic');\n\t\t\t\tconst connection =\n\t\t\t\t\tawait BasicConnection.fromConnectionString(connectionStr);\n\t\t\t\treturn new BasicPublisher<TMessage>(connection);\n\t\t\t}\n\t\t\tcase EventPublisherType.RabbitMQ: {\n\t\t\t\tconst { RabbitMQPublisher } = await import('./rabbitmq');\n\t\t\t\treturn RabbitMQPublisher.fromConnectionString<TMessage>(connectionStr);\n\t\t\t}\n\t\t\tcase EventPublisherType.SQS: {\n\t\t\t\tconst { SQSPublisher } = await import('./sqs');\n\t\t\t\treturn SQSPublisher.fromConnectionString<TMessage>(connectionStr);\n\t\t\t}\n\t\t\tcase EventPublisherType.SNS: {\n\t\t\t\tconst { SNSPublisher } = await import('./sns');\n\t\t\t\treturn SNSPublisher.fromConnectionString<TMessage>(connectionStr);\n\t\t\t}\n\t\t\tcase EventPublisherType.PgBoss: {\n\t\t\t\tconst { PgBossPublisher } = await import('./pgboss');\n\t\t\t\treturn PgBossPublisher.fromConnectionString<TMessage>(\n\t\t\t\t\tconnectionStr,\n\t\t\t\t\toptions,\n\t\t\t\t);\n\t\t\t}\n\t\t\t// Future implementations for EventBridge, Kafka, etc.\n\t\t\tdefault:\n\t\t\t\tthrow new UnsupportedEventTransport(\n\t\t\t\t\turl.protocol.replace(':', ''),\n\t\t\t\t\t'publisher',\n\t\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Create a publisher from an existing connection\n\t * This allows sharing connections between publishers and subscribers\n\t */\n\tstatic async fromConnection<TMessage extends PublishableMessage<string, any>>(\n\t\tconnection: EventConnection,\n\t): Promise<EventPublisher<TMessage>> {\n\t\tswitch (connection.type) {\n\t\t\tcase EventPublisherType.Basic: {\n\t\t\t\tconst { BasicPublisher } = await import('./basic');\n\t\t\t\tconst { BasicConnection } = await import('./basic');\n\t\t\t\treturn new BasicPublisher<TMessage>(\n\t\t\t\t\tconnection as InstanceType<typeof BasicConnection>,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase EventPublisherType.RabbitMQ: {\n\t\t\t\tconst { RabbitMQPublisher } = await import('./rabbitmq');\n\t\t\t\tconst { RabbitMQConnection } = await import('./rabbitmq');\n\t\t\t\treturn new RabbitMQPublisher<TMessage>(\n\t\t\t\t\tconnection as InstanceType<typeof RabbitMQConnection>,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase EventPublisherType.SQS: {\n\t\t\t\tconst { SQSPublisher } = await import('./sqs');\n\t\t\t\tconst { SQSConnection } = await import('./sqs');\n\t\t\t\treturn new SQSPublisher<TMessage>(\n\t\t\t\t\tconnection as InstanceType<typeof SQSConnection>,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase EventPublisherType.SNS: {\n\t\t\t\tconst { SNSPublisher } = await import('./sns');\n\t\t\t\tconst { SNSConnection } = await import('./sns');\n\t\t\t\treturn new SNSPublisher<TMessage>(\n\t\t\t\t\tconnection as InstanceType<typeof SNSConnection>,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase EventPublisherType.PgBoss: {\n\t\t\t\tconst { PgBossPublisher } = await import('./pgboss');\n\t\t\t\tconst { PgBossConnection } = await import('./pgboss');\n\t\t\t\treturn new PgBossPublisher<TMessage>(\n\t\t\t\t\tconnection as InstanceType<typeof PgBossConnection>,\n\t\t\t\t);\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tthrow new UnsupportedEventTransport(connection.type, 'publisher');\n\t\t}\n\t}\n}\n\nexport type EventPublisherConnectionString =\n\t`${EventPublisherType}://${string}`;\n","import type {\n\tEventConnection,\n\tEventSubscriber,\n\tPublishableMessage,\n} from './types';\nimport { EventPublisherType, UnsupportedEventTransport } from './types';\n\nexport class Subscriber {\n\t/**\n\t * Create a subscriber from a connection string\n\t * This creates both a connection and a subscriber\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(\n\t\tconnectionStr: EventSubscriberConnectionString,\n\t): Promise<EventSubscriber<TMessage>> {\n\t\tconst url = new URL(connectionStr);\n\t\tswitch (url.protocol.replace(':', '')) {\n\t\t\tcase EventPublisherType.Basic: {\n\t\t\t\tconst { BasicConnection, BasicSubscriber } = await import('./basic');\n\t\t\t\tconst connection =\n\t\t\t\t\tawait BasicConnection.fromConnectionString(connectionStr);\n\t\t\t\treturn new BasicSubscriber<TMessage>(connection);\n\t\t\t}\n\t\t\tcase EventPublisherType.RabbitMQ: {\n\t\t\t\tconst { RabbitMQSubscriber } = await import('./rabbitmq');\n\t\t\t\treturn RabbitMQSubscriber.fromConnectionString<TMessage>(connectionStr);\n\t\t\t}\n\t\t\tcase EventPublisherType.SNS: {\n\t\t\t\tconst { SNSSubscriber } = await import('./sns');\n\t\t\t\treturn SNSSubscriber.fromConnectionString<TMessage>(connectionStr);\n\t\t\t}\n\t\t\tcase EventPublisherType.SQS: {\n\t\t\t\tconst url = new URL(connectionStr);\n\t\t\t\tconst topicArn = url.searchParams.get('topicArn');\n\n\t\t\t\t// If topicArn is present, use managed SNS→SQS subscription\n\t\t\t\tif (topicArn) {\n\t\t\t\t\tconst { SNSSubscriber } = await import('./sns');\n\t\t\t\t\t// Convert SQS connection string to SNS connection string\n\t\t\t\t\tconst snsConnectionStr = connectionStr.replace('sqs://', 'sns://');\n\t\t\t\t\treturn SNSSubscriber.fromConnectionString<TMessage>(snsConnectionStr);\n\t\t\t\t}\n\n\t\t\t\t// Direct SQS subscriber\n\t\t\t\tconst { SQSSubscriber } = await import('./sqs');\n\t\t\t\tconst { SQSConnection } = await import('./sqs');\n\t\t\t\tconst connection =\n\t\t\t\t\tawait SQSConnection.fromConnectionString(connectionStr);\n\t\t\t\treturn new SQSSubscriber<TMessage>(connection);\n\t\t\t}\n\t\t\tcase EventPublisherType.PgBoss: {\n\t\t\t\tconst { PgBossSubscriber } = await import('./pgboss');\n\t\t\t\treturn PgBossSubscriber.fromConnectionString<TMessage>(connectionStr);\n\t\t\t}\n\t\t\t// Future implementations for EventBridge, Kafka, etc.\n\t\t\tdefault:\n\t\t\t\tthrow new UnsupportedEventTransport(\n\t\t\t\t\turl.protocol.replace(':', ''),\n\t\t\t\t\t'subscriber',\n\t\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Create a subscriber from an existing connection\n\t * This allows sharing connections between publishers and subscribers\n\t */\n\tstatic async fromConnection<TMessage extends PublishableMessage<string, any>>(\n\t\tconnection: EventConnection,\n\t\t/**\n\t\t * Subscribing to a topic as a named subscriber. pg-boss needs both to\n\t\t * give each subscriber its own queue; the other transports carry the\n\t\t * topic in their address and ignore it.\n\t\t */\n\t\toptions: { topic?: string; subscription?: string } = {},\n\t): Promise<EventSubscriber<TMessage>> {\n\t\tswitch (connection.type) {\n\t\t\tcase EventPublisherType.Basic: {\n\t\t\t\tconst { BasicSubscriber } = await import('./basic');\n\t\t\t\tconst { BasicConnection } = await import('./basic');\n\t\t\t\treturn new BasicSubscriber<TMessage>(\n\t\t\t\t\tconnection as InstanceType<typeof BasicConnection>,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase EventPublisherType.RabbitMQ: {\n\t\t\t\tconst { RabbitMQSubscriber } = await import('./rabbitmq');\n\t\t\t\tconst { RabbitMQConnection } = await import('./rabbitmq');\n\t\t\t\treturn new RabbitMQSubscriber<TMessage>(\n\t\t\t\t\tconnection as InstanceType<typeof RabbitMQConnection>,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase EventPublisherType.SNS: {\n\t\t\t\tconst { SNSSubscriber } = await import('./sns');\n\t\t\t\tconst { SNSConnection } = await import('./sns');\n\t\t\t\treturn new SNSSubscriber<TMessage>(\n\t\t\t\t\tconnection as InstanceType<typeof SNSConnection>,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase EventPublisherType.SQS: {\n\t\t\t\tconst { SQSSubscriber } = await import('./sqs');\n\t\t\t\tconst { SQSConnection } = await import('./sqs');\n\t\t\t\treturn new SQSSubscriber<TMessage>(\n\t\t\t\t\tconnection as InstanceType<typeof SQSConnection>,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase EventPublisherType.PgBoss: {\n\t\t\t\tconst { PgBossSubscriber } = await import('./pgboss');\n\t\t\t\tconst { PgBossConnection } = await import('./pgboss');\n\t\t\t\treturn new PgBossSubscriber<TMessage>(\n\t\t\t\t\tconnection as InstanceType<typeof PgBossConnection>,\n\t\t\t\t\toptions,\n\t\t\t\t);\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tthrow new UnsupportedEventTransport(connection.type, 'subscriber');\n\t\t}\n\t}\n}\n\nexport type EventSubscriberConnectionString =\n\t`${EventPublisherType}://${string}`;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["eventsDriverFor","eventsDriverFor","eventsDriverFor"],"sources":["../src/EventConnection.ts","../src/Publisher.ts","../src/Subscriber.ts"],"sourcesContent":["import { eventsDriverFor } from './registry';\nimport type { EventConnection } from './types';\n\nexport class EventConnectionFactory {\n\t/**\n\t * Create an EventConnection from a connection string, through whichever\n\t * driver is registered for its scheme — see `registerEventsDriver`.\n\t *\n\t * @throws {UnregisteredEventsScheme} when the broker's driver is not\n\t * registered.\n\t */\n\tstatic async fromConnectionString(\n\t\tconnectionStr: string,\n\t): Promise<EventConnection> {\n\t\tconst scheme = new URL(connectionStr).protocol;\n\t\treturn eventsDriverFor(scheme, 'connection').connect(connectionStr);\n\t}\n}\n\nexport type { EventConnection } from './types';\nexport { EventPublisherType } from './types';\n","import { eventsDriverFor } from './registry';\nimport type {\n\tEventConnection,\n\tEventPublisher,\n\tEventPublisherType,\n\tPublishableMessage,\n} from './types';\n\n/** How a publisher is used, beyond the address it reaches. */\nexport interface PublisherOptions {\n\t/**\n\t * The topic this publisher fans out to. SNS and RabbitMQ name the topic in\n\t * their address already; pg-boss has one address for every topic and queue,\n\t * so it is told here that a message goes to every subscriber rather than to\n\t * one queue.\n\t */\n\ttopic?: string;\n}\n\n/**\n * Publishers for a connection string or a connection, through whichever\n * driver is registered for its scheme — see `registerEventsDriver`.\n */\nexport class Publisher {\n\t/**\n\t * Create a publisher from a connection string\n\t * This creates both a connection and a publisher\n\t *\n\t * @throws {UnregisteredEventsScheme} when the broker's driver is not\n\t * registered.\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(\n\t\tconnectionStr: EventPublisherConnectionString,\n\t\toptions: PublisherOptions = {},\n\t): Promise<EventPublisher<TMessage>> {\n\t\tconst scheme = new URL(connectionStr).protocol;\n\t\treturn eventsDriverFor(scheme, 'publisher').publisher<TMessage>(\n\t\t\tconnectionStr,\n\t\t\toptions,\n\t\t);\n\t}\n\n\t/**\n\t * Create a publisher from an existing connection\n\t * This allows sharing connections between publishers and subscribers\n\t */\n\tstatic async fromConnection<TMessage extends PublishableMessage<string, any>>(\n\t\tconnection: EventConnection,\n\t\toptions: PublisherOptions = {},\n\t): Promise<EventPublisher<TMessage>> {\n\t\treturn eventsDriverFor(connection.type, 'publisher').publisherFor<TMessage>(\n\t\t\tconnection,\n\t\t\toptions,\n\t\t);\n\t}\n}\n\nexport type EventPublisherConnectionString =\n\t`${EventPublisherType}://${string}`;\n","import { eventsDriverFor, type SubscriberOptions } from './registry';\nimport type {\n\tEventConnection,\n\tEventPublisherType,\n\tEventSubscriber,\n\tPublishableMessage,\n} from './types';\n\n/**\n * Subscribers for a connection string or a connection, through whichever\n * driver is registered for its scheme — see `registerEventsDriver`.\n */\nexport class Subscriber {\n\t/**\n\t * Create a subscriber from a connection string\n\t * This creates both a connection and a subscriber\n\t *\n\t * @throws {UnregisteredEventsScheme} when the broker's driver is not\n\t * registered.\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(\n\t\tconnectionStr: EventSubscriberConnectionString,\n\t): Promise<EventSubscriber<TMessage>> {\n\t\tconst scheme = new URL(connectionStr).protocol;\n\t\treturn eventsDriverFor(scheme, 'subscriber').subscriber<TMessage>(\n\t\t\tconnectionStr,\n\t\t);\n\t}\n\n\t/**\n\t * Create a subscriber from an existing connection\n\t * This allows sharing connections between publishers and subscribers\n\t */\n\tstatic async fromConnection<TMessage extends PublishableMessage<string, any>>(\n\t\tconnection: EventConnection,\n\t\t/**\n\t\t * Subscribing to a topic as a named subscriber. pg-boss needs both to\n\t\t * give each subscriber its own queue; the other transports carry the\n\t\t * topic in their address and ignore it.\n\t\t */\n\t\toptions: SubscriberOptions = {},\n\t): Promise<EventSubscriber<TMessage>> {\n\t\treturn eventsDriverFor(\n\t\t\tconnection.type,\n\t\t\t'subscriber',\n\t\t).subscriberFor<TMessage>(connection, options);\n\t}\n}\n\nexport type EventSubscriberConnectionString =\n\t`${EventPublisherType}://${string}`;\n"],"mappings":";;;;AAGA,IAAa,yBAAb,MAAoC;;;;;;;;CAQnC,aAAa,qBACZ,eAC2B;EAC3B,MAAM,SAAS,IAAI,IAAI,aAAa,CAAC,CAAC;EACtC,OAAOA,iBAAAA,gBAAgB,QAAQ,YAAY,CAAC,CAAC,QAAQ,aAAa;CACnE;AACD;;;;;;;ACMA,IAAa,YAAb,MAAuB;;;;;;;;CAQtB,aAAa,qBAGZ,eACA,UAA4B,CAAC,GACO;EACpC,MAAM,SAAS,IAAI,IAAI,aAAa,CAAC,CAAC;EACtC,OAAOC,iBAAAA,gBAAgB,QAAQ,WAAW,CAAC,CAAC,UAC3C,eACA,OACD;CACD;;;;;CAMA,aAAa,eACZ,YACA,UAA4B,CAAC,GACO;EACpC,OAAOA,iBAAAA,gBAAgB,WAAW,MAAM,WAAW,CAAC,CAAC,aACpD,YACA,OACD;CACD;AACD;;;;;;;AC7CA,IAAa,aAAb,MAAwB;;;;;;;;CAQvB,aAAa,qBAGZ,eACqC;EACrC,MAAM,SAAS,IAAI,IAAI,aAAa,CAAC,CAAC;EACtC,OAAOC,iBAAAA,gBAAgB,QAAQ,YAAY,CAAC,CAAC,WAC5C,aACD;CACD;;;;;CAMA,aAAa,eACZ,YAMA,UAA6B,CAAC,GACO;EACrC,OAAOA,iBAAAA,gBACN,WAAW,MACX,YACD,CAAC,CAAC,cAAwB,YAAY,OAAO;CAC9C;AACD"}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,43 +1,28 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { _ as UnsupportedEventTransport, a as registerEventsDriver, c as Publisher, d as EventPublisher, f as EventPublisherType, g as PublishableMessage, h as MappedEvent, i as eventsDriverFor, l as PublisherOptions, m as ExtractPublisherMessage, n as SubscriberOptions, o as registeredEventsSchemes, p as EventSubscriber, r as UnregisteredEventsScheme, s as EventPublisherConnectionString, t as EventsDriver, u as EventConnection } from "./registry-DIx25Q5s.cjs";
|
|
2
2
|
//#region src/EventConnection.d.ts
|
|
3
3
|
export declare class EventConnectionFactory {
|
|
4
4
|
/**
|
|
5
|
-
* Create an EventConnection from a connection string
|
|
6
|
-
*
|
|
5
|
+
* Create an EventConnection from a connection string, through whichever
|
|
6
|
+
* driver is registered for its scheme — see `registerEventsDriver`.
|
|
7
|
+
*
|
|
8
|
+
* @throws {UnregisteredEventsScheme} when the broker's driver is not
|
|
9
|
+
* registered.
|
|
7
10
|
*/
|
|
8
11
|
static fromConnectionString(connectionStr: string): Promise<EventConnection>;
|
|
9
12
|
}
|
|
10
13
|
//#endregion
|
|
11
|
-
//#region src/Publisher.d.ts
|
|
12
|
-
/** How a publisher is used, beyond the address it reaches. */
|
|
13
|
-
interface PublisherOptions {
|
|
14
|
-
/**
|
|
15
|
-
* The topic this publisher fans out to. SNS and RabbitMQ name the topic in
|
|
16
|
-
* their address already; pg-boss has one address for every topic and queue,
|
|
17
|
-
* so it is told here that a message goes to every subscriber rather than to
|
|
18
|
-
* one queue.
|
|
19
|
-
*/
|
|
20
|
-
topic?: string;
|
|
21
|
-
}
|
|
22
|
-
export declare class Publisher {
|
|
23
|
-
/**
|
|
24
|
-
* Create a publisher from a connection string
|
|
25
|
-
* This creates both a connection and a publisher
|
|
26
|
-
*/
|
|
27
|
-
static fromConnectionString<TMessage extends PublishableMessage<string, any>>(connectionStr: EventPublisherConnectionString, options?: PublisherOptions): Promise<EventPublisher<TMessage>>;
|
|
28
|
-
/**
|
|
29
|
-
* Create a publisher from an existing connection
|
|
30
|
-
* This allows sharing connections between publishers and subscribers
|
|
31
|
-
*/
|
|
32
|
-
static fromConnection<TMessage extends PublishableMessage<string, any>>(connection: EventConnection): Promise<EventPublisher<TMessage>>;
|
|
33
|
-
}
|
|
34
|
-
type EventPublisherConnectionString = `${EventPublisherType}://${string}`;
|
|
35
|
-
//#endregion
|
|
36
14
|
//#region src/Subscriber.d.ts
|
|
15
|
+
/**
|
|
16
|
+
* Subscribers for a connection string or a connection, through whichever
|
|
17
|
+
* driver is registered for its scheme — see `registerEventsDriver`.
|
|
18
|
+
*/
|
|
37
19
|
export declare class Subscriber {
|
|
38
20
|
/**
|
|
39
21
|
* Create a subscriber from a connection string
|
|
40
22
|
* This creates both a connection and a subscriber
|
|
23
|
+
*
|
|
24
|
+
* @throws {UnregisteredEventsScheme} when the broker's driver is not
|
|
25
|
+
* registered.
|
|
41
26
|
*/
|
|
42
27
|
static fromConnectionString<TMessage extends PublishableMessage<string, any>>(connectionStr: EventSubscriberConnectionString): Promise<EventSubscriber<TMessage>>;
|
|
43
28
|
/**
|
|
@@ -50,12 +35,9 @@ export declare class Subscriber {
|
|
|
50
35
|
* give each subscriber its own queue; the other transports carry the
|
|
51
36
|
* topic in their address and ignore it.
|
|
52
37
|
*/
|
|
53
|
-
options?:
|
|
54
|
-
topic?: string;
|
|
55
|
-
subscription?: string;
|
|
56
|
-
}): Promise<EventSubscriber<TMessage>>;
|
|
38
|
+
options?: SubscriberOptions): Promise<EventSubscriber<TMessage>>;
|
|
57
39
|
}
|
|
58
40
|
type EventSubscriberConnectionString = `${EventPublisherType}://${string}`;
|
|
59
41
|
//#endregion
|
|
60
|
-
export { type EventConnection, type EventPublisher, type EventPublisherConnectionString, EventPublisherType, type EventSubscriber, type EventSubscriberConnectionString, type ExtractPublisherMessage, type MappedEvent, type PublishableMessage, type PublisherOptions, UnsupportedEventTransport };
|
|
42
|
+
export { type EventConnection, type EventPublisher, type EventPublisherConnectionString, EventPublisherType, type EventSubscriber, type EventSubscriberConnectionString, type EventsDriver, type ExtractPublisherMessage, type MappedEvent, type PublishableMessage, Publisher, type PublisherOptions, type SubscriberOptions, UnregisteredEventsScheme, UnsupportedEventTransport, eventsDriverFor, registerEventsDriver, registeredEventsSchemes };
|
|
61
43
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/EventConnection.ts","../src/
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/EventConnection.ts","../src/Subscriber.ts"],"mappings":";;qBAGa;;;;;;;;SAQC,qBACZ,wBACE,QAAQ;;;;;;;;qBCDC;;;;;;;;SAQC,qBACZ,iBAAiB,iCAEjB,eAAe,kCACb,QAAQ,gBAAgB;;;;;SAWd,eAAe,iBAAiB,iCAC5C,YAAY,iBAMZ;;;;;;EAAA,UAAS,oBACP,QAAQ,gBAAgB;;KAQhB,qCACR"}
|