@palmetto/nestjs-pubsub 3.5.3 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -6
- package/dist/main.d.ts +3 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +5 -1
- package/dist/pubsub-kafka-module.d.ts +9 -0
- package/dist/pubsub-kafka-module.d.ts.map +1 -0
- package/dist/pubsub-kafka-module.js +41 -0
- package/dist/pubsub-module.d.ts.map +1 -1
- package/dist/pubsub-module.js +31 -5
- package/dist/pubsub-provider-module.d.ts.map +1 -1
- package/dist/pubsub-provider-module.js +0 -1
- package/dist/subscriber-batch.d.ts +9 -0
- package/dist/subscriber-batch.d.ts.map +1 -0
- package/dist/subscriber-batch.js +13 -0
- package/dist/subscriber.d.ts +2 -1
- package/dist/subscriber.d.ts.map +1 -1
- package/dist/subscriber.js +2 -1
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -28,27 +28,43 @@ GoogleCloud pubsub:
|
|
|
28
28
|
yarn add @google-cloud/pubsub
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
+
Kafka:
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
yarn add @confluentinc/kafka-javascript
|
|
35
|
+
```
|
|
36
|
+
|
|
31
37
|
## Usage
|
|
32
38
|
|
|
33
39
|
### Add to your `AppModule` imports
|
|
34
40
|
|
|
35
41
|
```ts
|
|
36
42
|
import {
|
|
37
|
-
RABBITMQ_TRANSPORT,
|
|
38
|
-
RabbitQueueExchangeConfiguration,
|
|
39
43
|
BULLMQ_TRANSPORT,
|
|
40
44
|
BullMqQueueConfiguration,
|
|
41
45
|
IdMetaSchema,
|
|
46
|
+
KAFKA_TRANSPORT,
|
|
47
|
+
KafkaPubSubConnectionConfig
|
|
48
|
+
KafkaPubSubSubscriberConfiguration,
|
|
49
|
+
MessageResult,
|
|
42
50
|
Publisher,
|
|
51
|
+
RABBITMQ_TRANSPORT,
|
|
52
|
+
RabbitMqConnectionConfig,
|
|
53
|
+
RabbitQueueExchangeConfiguration,
|
|
43
54
|
} from "@palmetto/pubsub";
|
|
44
55
|
|
|
45
56
|
import {
|
|
57
|
+
PubSubBullMqModule,
|
|
58
|
+
PubSubKafkaBatchSubscriber,
|
|
59
|
+
PubSubKafkaModule,
|
|
60
|
+
PubSubRabbitMqModule,
|
|
46
61
|
PubSubRabbitSubscriber,
|
|
47
|
-
PubSubBullMqSubscriber,
|
|
48
62
|
} from "@palmetto/nestjs-pubsub";
|
|
49
63
|
|
|
50
64
|
import { Injectable, Module } from "@nestjs/common";
|
|
51
65
|
|
|
66
|
+
import type { ConnectionOptions } from "bullmq";
|
|
67
|
+
|
|
52
68
|
import { z } from "zod";
|
|
53
69
|
|
|
54
70
|
// MyModel* objects define the model you are publishing or subscribing using RabbitMQ
|
|
@@ -61,6 +77,7 @@ const MyModelConfig: RabbitQueueExchangeConfiguration = {
|
|
|
61
77
|
name: "my-model",
|
|
62
78
|
schema: MyModelSchema,
|
|
63
79
|
transport: RABBITMQ_TRANSPORT,
|
|
80
|
+
quorum: true,
|
|
64
81
|
exchangeType: "direct",
|
|
65
82
|
};
|
|
66
83
|
|
|
@@ -76,13 +93,23 @@ const MyOtherModelConfig: BullMqQueueConfiguration = {
|
|
|
76
93
|
transport: BULLMQ_TRANSPORT,
|
|
77
94
|
};
|
|
78
95
|
|
|
96
|
+
const MyKafkaModelConfig: KafkaPubSubSubscriberConfiguration = {
|
|
97
|
+
name: "my-model-kafka",
|
|
98
|
+
schema: MyModelSchema,
|
|
99
|
+
transport: KAFKA_TRASPORT,
|
|
100
|
+
topicName: "my-model-topic",
|
|
101
|
+
subscriberConfig: {
|
|
102
|
+
groupId: "my-model-consumer-group-id",
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
|
|
79
106
|
// MyModelHandler demonstrates a subscriber to the MyModel event over RabbitMQ
|
|
80
107
|
@Injectable()
|
|
81
108
|
class MyModelHandler {
|
|
82
109
|
constructor(private readonly publisher: Publisher) {}
|
|
83
110
|
|
|
84
111
|
@PubSubRabbitSubscriber(MyModelConfig)
|
|
85
|
-
async handler(message: MyModel) {
|
|
112
|
+
async handler(message: MyModel): Promise<MessageResult> {
|
|
86
113
|
// here, we're publishing a new message to bullmq based on the message we received
|
|
87
114
|
const newMessage: MyOtherModel = {
|
|
88
115
|
message: message.message,
|
|
@@ -90,6 +117,16 @@ class MyModelHandler {
|
|
|
90
117
|
};
|
|
91
118
|
|
|
92
119
|
await publisher.publish(MyOtherModelConfig, newMessage);
|
|
120
|
+
return MessageResult.Ok;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@PubSubKafkaBatchSubscriber(MyKafkaModelConfig)
|
|
124
|
+
async batchHandler(
|
|
125
|
+
messages: BatchMessage<MyModel, KafkaPubSubMessageContext>[],
|
|
126
|
+
batchContext: KafkaBatchContext,
|
|
127
|
+
): Promise<MessageResult> {
|
|
128
|
+
// process the batch of messages
|
|
129
|
+
return MessageResult.Ok;
|
|
93
130
|
}
|
|
94
131
|
}
|
|
95
132
|
@Module({
|
|
@@ -99,7 +136,7 @@ class MyModelHandler {
|
|
|
99
136
|
PubSubRabbitMqModule.registerAsync({
|
|
100
137
|
imports: [AppConfigModule],
|
|
101
138
|
inject: [AppConfig],
|
|
102
|
-
useFactory(appConfig: AppConfig) {
|
|
139
|
+
useFactory(appConfig: AppConfig): RabbitMqConnectionConfig {
|
|
103
140
|
return {
|
|
104
141
|
host: appConfig.get("rabbit.url"),
|
|
105
142
|
};
|
|
@@ -108,7 +145,7 @@ class MyModelHandler {
|
|
|
108
145
|
PubSubBullMqModule.registerAsync({
|
|
109
146
|
imports: [AppConfigModule],
|
|
110
147
|
inject: [AppConfig],
|
|
111
|
-
useFactory(appConfig: AppConfig) {
|
|
148
|
+
useFactory(appConfig: AppConfig): ConnectionOptions {
|
|
112
149
|
return {
|
|
113
150
|
host: appConfig.get("redis.host"),
|
|
114
151
|
username: appConfig.get("bullmq.username"),
|
|
@@ -116,6 +153,22 @@ class MyModelHandler {
|
|
|
116
153
|
};
|
|
117
154
|
},
|
|
118
155
|
}),
|
|
156
|
+
PubSubKafkaModule.registerAsync({
|
|
157
|
+
imports: [AppConfigModule],
|
|
158
|
+
inject: [AppConfig],
|
|
159
|
+
useFactory(appConfig: AppConfig): KafkaPubSubConnectionConfig {
|
|
160
|
+
return {
|
|
161
|
+
brokers: [appConfig.get("kafka.host")],
|
|
162
|
+
kafkaJS: {
|
|
163
|
+
sasl: {
|
|
164
|
+
mechanism: "plain",
|
|
165
|
+
username: "admin",
|
|
166
|
+
password: "admin-secret",
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
},
|
|
171
|
+
}),
|
|
119
172
|
],
|
|
120
173
|
providers: [MyModelHandler],
|
|
121
174
|
})
|
package/dist/main.d.ts
CHANGED
|
@@ -2,5 +2,7 @@ export * from "./pubsub-module.js";
|
|
|
2
2
|
export * from "./pubsub-bullmq-module.js";
|
|
3
3
|
export * from "./pubsub-rabbitmq-module.js";
|
|
4
4
|
export * from "./pubsub-gcppubsub-module.js";
|
|
5
|
-
export
|
|
5
|
+
export * from "./pubsub-kafka-module.js";
|
|
6
|
+
export { type HandlerMethod, PubSubBullMqSubscriber, PubSubRabbitSubscriber, PubSubGcpSubscriber, PubSubKafkaSubscriber, } from "./subscriber.js";
|
|
7
|
+
export { type BatchMessage, type BatchHandlerMethod, PubSubKafkaBatchSubscriber, } from "./subscriber-batch.js";
|
|
6
8
|
//# sourceMappingURL=main.d.ts.map
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EACL,KAAK,aAAa,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,OAAO,EACL,KAAK,aAAa,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC"}
|
package/dist/main.js
CHANGED
|
@@ -14,12 +14,16 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.PubSubGcpSubscriber = exports.PubSubRabbitSubscriber = exports.PubSubBullMqSubscriber = void 0;
|
|
17
|
+
exports.PubSubKafkaBatchSubscriber = exports.PubSubKafkaSubscriber = exports.PubSubGcpSubscriber = exports.PubSubRabbitSubscriber = exports.PubSubBullMqSubscriber = void 0;
|
|
18
18
|
__exportStar(require("./pubsub-module.js"), exports);
|
|
19
19
|
__exportStar(require("./pubsub-bullmq-module.js"), exports);
|
|
20
20
|
__exportStar(require("./pubsub-rabbitmq-module.js"), exports);
|
|
21
21
|
__exportStar(require("./pubsub-gcppubsub-module.js"), exports);
|
|
22
|
+
__exportStar(require("./pubsub-kafka-module.js"), exports);
|
|
22
23
|
var subscriber_js_1 = require("./subscriber.js");
|
|
23
24
|
Object.defineProperty(exports, "PubSubBullMqSubscriber", { enumerable: true, get: function () { return subscriber_js_1.PubSubBullMqSubscriber; } });
|
|
24
25
|
Object.defineProperty(exports, "PubSubRabbitSubscriber", { enumerable: true, get: function () { return subscriber_js_1.PubSubRabbitSubscriber; } });
|
|
25
26
|
Object.defineProperty(exports, "PubSubGcpSubscriber", { enumerable: true, get: function () { return subscriber_js_1.PubSubGcpSubscriber; } });
|
|
27
|
+
Object.defineProperty(exports, "PubSubKafkaSubscriber", { enumerable: true, get: function () { return subscriber_js_1.PubSubKafkaSubscriber; } });
|
|
28
|
+
var subscriber_batch_js_1 = require("./subscriber-batch.js");
|
|
29
|
+
Object.defineProperty(exports, "PubSubKafkaBatchSubscriber", { enumerable: true, get: function () { return subscriber_batch_js_1.PubSubKafkaBatchSubscriber; } });
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { KafkaPubSubConnectionConfig } from "@palmetto/pubsub";
|
|
2
|
+
declare const ConfigurableModuleClass: import("@nestjs/common").ConfigurableModuleCls<KafkaPubSubConnectionConfig, "register", "create", {}>;
|
|
3
|
+
/**
|
|
4
|
+
* This module requires @palmetto/pubsub
|
|
5
|
+
*/
|
|
6
|
+
export declare class PubSubKafkaModule extends ConfigurableModuleClass {
|
|
7
|
+
}
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=pubsub-kafka-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pubsub-kafka-module.d.ts","sourceRoot":"","sources":["../src/pubsub-kafka-module.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,2BAA2B,EAC5B,MAAM,kBAAkB,CAAC;AAO1B,QAAA,MAAQ,uBAAuB,uGACuC,CAAC;AAEvE;;GAEG;AACH,qBAgCa,iBAAkB,SAAQ,uBAAuB;CAAG"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.PubSubKafkaModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const pubsub_1 = require("@palmetto/pubsub");
|
|
12
|
+
const pubsub_provider_module_1 = require("./pubsub-provider-module");
|
|
13
|
+
const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new common_1.ConfigurableModuleBuilder().build();
|
|
14
|
+
/**
|
|
15
|
+
* This module requires @palmetto/pubsub
|
|
16
|
+
*/
|
|
17
|
+
let PubSubKafkaModule = class PubSubKafkaModule extends ConfigurableModuleClass {
|
|
18
|
+
};
|
|
19
|
+
exports.PubSubKafkaModule = PubSubKafkaModule;
|
|
20
|
+
exports.PubSubKafkaModule = PubSubKafkaModule = __decorate([
|
|
21
|
+
(0, common_1.Module)({
|
|
22
|
+
imports: [pubsub_provider_module_1.PubSubProviderFactoryModule],
|
|
23
|
+
providers: [
|
|
24
|
+
{
|
|
25
|
+
provide: pubsub_1.KafkaPubSubConnection,
|
|
26
|
+
useFactory: (config) => pubsub_1.KafkaPubSubConnection.create(config, new common_1.Logger(pubsub_1.KafkaPubSubConnection.name)),
|
|
27
|
+
inject: [MODULE_OPTIONS_TOKEN],
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
provide: pubsub_1.KafkaPubSubProvider,
|
|
31
|
+
useFactory: (providers, connection) => {
|
|
32
|
+
const provider = new pubsub_1.KafkaPubSubProvider(connection, new common_1.Logger(pubsub_1.KafkaPubSubProvider.name));
|
|
33
|
+
providers.addProvider(provider);
|
|
34
|
+
return provider;
|
|
35
|
+
},
|
|
36
|
+
inject: [pubsub_provider_module_1.PubSubProviderFactory, pubsub_1.KafkaPubSubConnection],
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
exports: [pubsub_1.KafkaPubSubConnection, pubsub_1.KafkaPubSubProvider],
|
|
40
|
+
})
|
|
41
|
+
], PubSubKafkaModule);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pubsub-module.d.ts","sourceRoot":"","sources":["../src/pubsub-module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pubsub-module.d.ts","sourceRoot":"","sources":["../src/pubsub-module.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,QAAA,MAAQ,uBAAuB,+FAC+B,CAAC;AAwJ/D,qBAmBa,YAAa,SAAQ,uBAAuB;CAAG"}
|
package/dist/pubsub-module.js
CHANGED
|
@@ -28,6 +28,7 @@ const common_1 = require("@nestjs/common");
|
|
|
28
28
|
const nestjs_discovery_1 = require("@golevelup/nestjs-discovery");
|
|
29
29
|
const subscriber_1 = require("./subscriber");
|
|
30
30
|
const pubsub_provider_module_1 = require("./pubsub-provider-module");
|
|
31
|
+
const subscriber_batch_1 = require("./subscriber-batch");
|
|
31
32
|
const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new common_1.ConfigurableModuleBuilder().build();
|
|
32
33
|
function isPublisherProvider(obj) {
|
|
33
34
|
return "publish" in obj && typeof obj.publish === "function";
|
|
@@ -60,7 +61,6 @@ let PubSubManager = PubSubManager_1 = class PubSubManager {
|
|
|
60
61
|
}
|
|
61
62
|
onApplicationBootstrap() {
|
|
62
63
|
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
var _a;
|
|
64
64
|
if (this.bootstrapped) {
|
|
65
65
|
this.logger.warn("already bootstrapped");
|
|
66
66
|
return;
|
|
@@ -76,9 +76,23 @@ let PubSubManager = PubSubManager_1 = class PubSubManager {
|
|
|
76
76
|
this.subscriber.addProvider(provider);
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
yield this.bootstrapSubscribers();
|
|
80
|
+
yield this.bootstrapBatchSubscribers();
|
|
81
|
+
this.logger.debug("bootstrapping completed");
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
disableSubscribers() {
|
|
85
|
+
var _a;
|
|
86
|
+
if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.disableSubscribers) {
|
|
87
|
+
this.logger.warn("pubsub subscribers are disabled via module options. No subscriber methods will be registered.");
|
|
88
|
+
this.logger.debug("bootstrapping completed");
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
bootstrapSubscribers() {
|
|
94
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
if (this.disableSubscribers()) {
|
|
82
96
|
return;
|
|
83
97
|
}
|
|
84
98
|
const handlers = (yield this.discover.providerMethodsWithMetaAtKey(subscriber_1.EVENT_HANDLER)).concat(yield this.discover.controllerMethodsWithMetaAtKey(subscriber_1.EVENT_HANDLER));
|
|
@@ -87,7 +101,19 @@ let PubSubManager = PubSubManager_1 = class PubSubManager {
|
|
|
87
101
|
yield this.subscriber.subscribe(handler.meta, (msg, context) => method.handler.call(method.parentClass.instance, msg, context));
|
|
88
102
|
this.logger.log(`Added subscriber method ${method.parentClass.name}.${method.methodName} for ${handler.meta.transport}:${handler.meta.name}`);
|
|
89
103
|
}
|
|
90
|
-
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
bootstrapBatchSubscribers() {
|
|
107
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
108
|
+
if (this.disableSubscribers()) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const handlers = (yield this.discover.providerMethodsWithMetaAtKey(subscriber_batch_1.BATCH_EVENT_HANDLER)).concat(yield this.discover.controllerMethodsWithMetaAtKey(subscriber_batch_1.BATCH_EVENT_HANDLER));
|
|
112
|
+
for (const handler of handlers) {
|
|
113
|
+
const method = handler.discoveredMethod;
|
|
114
|
+
yield this.subscriber.subscribeBatch(handler.meta, (msgs, batchContext) => method.handler.call(method.parentClass.instance, msgs, batchContext));
|
|
115
|
+
this.logger.log(`Added batch subscriber method ${method.parentClass.name}.${method.methodName} for ${handler.meta.transport}:${handler.meta.name}`);
|
|
116
|
+
}
|
|
91
117
|
});
|
|
92
118
|
}
|
|
93
119
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pubsub-provider-module.d.ts","sourceRoot":"","sources":["../src/pubsub-provider-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,qBACa,qBAAqB;IAChC,SAAgB,SAAS,EAAE,gBAAgB,EAAE,CAAM;IAEnD,WAAW,CAAC,QAAQ,EAAE,gBAAgB;CAMvC;AAED,
|
|
1
|
+
{"version":3,"file":"pubsub-provider-module.d.ts","sourceRoot":"","sources":["../src/pubsub-provider-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,qBACa,qBAAqB;IAChC,SAAgB,SAAS,EAAE,gBAAgB,EAAE,CAAM;IAEnD,WAAW,CAAC,QAAQ,EAAE,gBAAgB;CAMvC;AAED,qBAIa,2BAA2B;CAAG"}
|
|
@@ -30,5 +30,4 @@ exports.PubSubProviderFactoryModule = PubSubProviderFactoryModule = __decorate([
|
|
|
30
30
|
providers: [PubSubProviderFactory],
|
|
31
31
|
exports: [PubSubProviderFactory],
|
|
32
32
|
})
|
|
33
|
-
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
34
33
|
], PubSubProviderFactoryModule);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MessageContext, MessageResult, KafkaPubSubMessageContext, KafkaPubSubSubscriberConfiguration, BatchContext, KafkaBatchContext } from "@palmetto/pubsub";
|
|
2
|
+
export declare const BATCH_EVENT_HANDLER: unique symbol;
|
|
3
|
+
export interface BatchMessage<TMessage, TMessageContext extends MessageContext> {
|
|
4
|
+
message: TMessage;
|
|
5
|
+
context: TMessageContext;
|
|
6
|
+
}
|
|
7
|
+
export type BatchHandlerMethod<TMessageContext extends MessageContext, TBatchContext extends BatchContext> = (messages: BatchMessage<never, TMessageContext>[], context: TBatchContext) => Promise<MessageResult> | MessageResult;
|
|
8
|
+
export declare const PubSubKafkaBatchSubscriber: (config: KafkaPubSubSubscriberConfiguration) => <T extends BatchHandlerMethod<KafkaPubSubMessageContext, KafkaBatchContext>>(target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T>;
|
|
9
|
+
//# sourceMappingURL=subscriber-batch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriber-batch.d.ts","sourceRoot":"","sources":["../src/subscriber-batch.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,cAAc,EACd,aAAa,EACb,yBAAyB,EACzB,kCAAkC,EAClC,YAAY,EACZ,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,mBAAmB,eAAgC,CAAC;AAEjE,MAAM,WAAW,YAAY,CAC3B,QAAQ,EACR,eAAe,SAAS,cAAc;IAEtC,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,MAAM,kBAAkB,CAC5B,eAAe,SAAS,cAAc,EACtC,aAAa,SAAS,YAAY,IAChC,CACF,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,EAChD,OAAO,EAAE,aAAa,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;AA0B5C,eAAO,MAAM,0BAA0B,mDAhBnC,CAAC,yEAA2D,EAE5D,QAAQ,MAAM,EACd,aAAa,MAAM,GAAG,MAAM,EAC5B,YAAY,uBAAuB,CAAC,CAAC,CAAC,+BAgBzC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PubSubKafkaBatchSubscriber = exports.BATCH_EVENT_HANDLER = void 0;
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-unnecessary-type-parameters */
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
exports.BATCH_EVENT_HANDLER = Symbol("BATCH_EVENT_HANDLER");
|
|
7
|
+
const BatchEventSubscriber = (config) => {
|
|
8
|
+
return function (target, propertyKey, descriptor) {
|
|
9
|
+
(0, common_1.SetMetadata)(exports.BATCH_EVENT_HANDLER, Object.assign({}, config))(target, propertyKey, descriptor);
|
|
10
|
+
return descriptor;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
exports.PubSubKafkaBatchSubscriber = (BatchEventSubscriber);
|
package/dist/subscriber.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { MessageContext, MessageResult, BullMqMessageContext, BullMqQueueConfiguration, RabbitMqMessageContext, RabbitQueueExchangeConfiguration, GcpPubSubConfiguration, GcpPubSubMessageContext } from "@palmetto/pubsub";
|
|
1
|
+
import { MessageContext, MessageResult, BullMqMessageContext, BullMqQueueConfiguration, RabbitMqMessageContext, RabbitQueueExchangeConfiguration, GcpPubSubConfiguration, GcpPubSubMessageContext, KafkaPubSubMessageContext, KafkaPubSubSubscriberConfiguration } from "@palmetto/pubsub";
|
|
2
2
|
export declare const EVENT_HANDLER: unique symbol;
|
|
3
3
|
export type HandlerMethod<TMessageContext extends MessageContext> = (msg: never, context: TMessageContext) => Promise<MessageResult> | MessageResult;
|
|
4
4
|
export declare const PubSubRabbitSubscriber: (config: RabbitQueueExchangeConfiguration) => <T extends HandlerMethod<RabbitMqMessageContext>>(target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T>;
|
|
5
5
|
export declare const PubSubBullMqSubscriber: (config: BullMqQueueConfiguration) => <T extends HandlerMethod<BullMqMessageContext>>(target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T>;
|
|
6
6
|
export declare const PubSubGcpSubscriber: (config: GcpPubSubConfiguration) => <T extends HandlerMethod<GcpPubSubMessageContext>>(target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T>;
|
|
7
|
+
export declare const PubSubKafkaSubscriber: (config: KafkaPubSubSubscriberConfiguration) => <T extends HandlerMethod<KafkaPubSubMessageContext>>(target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T>;
|
|
7
8
|
//# sourceMappingURL=subscriber.d.ts.map
|
package/dist/subscriber.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriber.d.ts","sourceRoot":"","sources":["../src/subscriber.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,gCAAgC,EAChC,sBAAsB,EACtB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"subscriber.d.ts","sourceRoot":"","sources":["../src/subscriber.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,gCAAgC,EAChC,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,kCAAkC,EACnC,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,aAAa,eAA0B,CAAC;AAErD,MAAM,MAAM,aAAa,CAAC,eAAe,SAAS,cAAc,IAAI,CAClE,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;AAmB5C,eAAO,MAAM,sBAAsB,iDAXhB,CAAC,8CAAuC,EACvD,QAAQ,MAAM,EACd,aAAa,MAAM,GAAG,MAAM,EAC5B,YAAY,uBAAuB,CAAC,CAAC,CAAC,+BAWzC,CAAC;AACF,eAAO,MAAM,sBAAsB,yCAfhB,CAAC,4CAAuC,EACvD,QAAQ,MAAM,EACd,aAAa,MAAM,GAAG,MAAM,EAC5B,YAAY,uBAAuB,CAAC,CAAC,CAAC,+BAezC,CAAC;AACF,eAAO,MAAM,mBAAmB,uCAnBb,CAAC,+CAAuC,EACvD,QAAQ,MAAM,EACd,aAAa,MAAM,GAAG,MAAM,EAC5B,YAAY,uBAAuB,CAAC,CAAC,CAAC,+BAmBzC,CAAC;AACF,eAAO,MAAM,qBAAqB,mDAvBf,CAAC,iDAAuC,EACvD,QAAQ,MAAM,EACd,aAAa,MAAM,GAAG,MAAM,EAC5B,YAAY,uBAAuB,CAAC,CAAC,CAAC,+BAuBzC,CAAC"}
|
package/dist/subscriber.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PubSubGcpSubscriber = exports.PubSubBullMqSubscriber = exports.PubSubRabbitSubscriber = exports.EVENT_HANDLER = void 0;
|
|
3
|
+
exports.PubSubKafkaSubscriber = exports.PubSubGcpSubscriber = exports.PubSubBullMqSubscriber = exports.PubSubRabbitSubscriber = exports.EVENT_HANDLER = void 0;
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-unnecessary-type-parameters */
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
6
|
exports.EVENT_HANDLER = Symbol("EVENT_HANDLER");
|
|
@@ -13,3 +13,4 @@ const EventSubscriber = (config) => {
|
|
|
13
13
|
exports.PubSubRabbitSubscriber = (EventSubscriber);
|
|
14
14
|
exports.PubSubBullMqSubscriber = (EventSubscriber);
|
|
15
15
|
exports.PubSubGcpSubscriber = (EventSubscriber);
|
|
16
|
+
exports.PubSubKafkaSubscriber = (EventSubscriber);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@palmetto/nestjs-pubsub",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/palmetto/galaxy"
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
"test-runner": "../../scripts/test-runner.sh yarn run -T $0 --project @palmetto/nestjs-pubsub"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@nestjs/common": "11.1
|
|
29
|
-
"@nestjs/core": "11.1
|
|
30
|
-
"@nestjs/testing": "11.1
|
|
31
|
-
"@palmetto/nestjs-errors": "^3.
|
|
32
|
-
"@palmetto/pubsub": "^3.
|
|
28
|
+
"@nestjs/common": "11.2.1",
|
|
29
|
+
"@nestjs/core": "11.2.1",
|
|
30
|
+
"@nestjs/testing": "11.2.1",
|
|
31
|
+
"@palmetto/nestjs-errors": "^3.3.3",
|
|
32
|
+
"@palmetto/pubsub": "^3.8.0",
|
|
33
33
|
"@palmetto/trace": "^0.1.1",
|
|
34
34
|
"@types/node": "^24.13",
|
|
35
35
|
"typescript": "5.9.3",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"@nestjs/common": "^11",
|
|
56
56
|
"@nestjs/core": "^11",
|
|
57
57
|
"@palmetto/nestjs-errors": "^3 || ^2",
|
|
58
|
-
"@palmetto/pubsub": "^3.
|
|
58
|
+
"@palmetto/pubsub": "^3.8.0",
|
|
59
59
|
"zod": "^4.1"
|
|
60
60
|
}
|
|
61
61
|
}
|