@rsdk/nats.common 5.4.0-next.1 → 5.4.0-next.3
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 +10 -0
- package/dist/client/client.constants.d.ts +5 -1
- package/dist/client/client.constants.js +8 -2
- package/dist/client/client.constants.js.map +1 -1
- package/dist/client/client.decorators.d.ts +2 -2
- package/dist/client/client.decorators.js +8 -4
- package/dist/client/client.decorators.js.map +1 -1
- package/dist/client/client.metadata.d.ts +1 -1
- package/dist/client/client.module.d.ts +7 -0
- package/dist/client/client.module.js +23 -7
- package/dist/client/client.module.js.map +1 -1
- package/dist/client/client.provider.d.ts +4 -2
- package/dist/client/client.provider.js +8 -13
- package/dist/client/client.provider.js.map +1 -1
- package/dist/client/jetstream-client.provider.d.ts +2 -0
- package/dist/client/jetstream-client.provider.js +12 -0
- package/dist/client/jetstream-client.provider.js.map +1 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.js +25 -15
- package/dist/index.js.map +1 -1
- package/dist/utils/get-stream-name.fn.d.ts +5 -0
- package/dist/utils/get-stream-name.fn.js +11 -0
- package/dist/utils/get-stream-name.fn.js.map +1 -0
- package/dist/utils/get-subject-name.fn.d.ts +5 -0
- package/dist/utils/get-subject-name.fn.js +11 -0
- package/dist/utils/get-subject-name.fn.js.map +1 -0
- package/package.json +3 -2
- package/src/client/client.constants.ts +14 -1
- package/src/client/client.decorators.ts +17 -5
- package/src/client/client.metadata.ts +1 -1
- package/src/client/client.module.ts +48 -7
- package/src/client/client.provider.ts +12 -16
- package/src/client/jetstream-client.provider.ts +13 -0
- package/src/index.ts +7 -17
- package/src/utils/get-stream-name.fn.ts +8 -0
- package/src/utils/get-subject-name.fn.ts +11 -0
- package/dist/client/producer.provider.d.ts +0 -4
- package/dist/client/producer.provider.js +0 -12
- package/dist/client/producer.provider.js.map +0 -1
- package/dist/event.codec.d.ts +0 -22
- package/dist/event.codec.js +0 -32
- package/dist/event.codec.js.map +0 -1
- package/dist/event.type.d.ts +0 -23
- package/dist/event.type.js +0 -18
- package/dist/event.type.js.map +0 -1
- package/dist/exceptions/payload-format.exception.d.ts +0 -5
- package/dist/exceptions/payload-format.exception.js +0 -11
- package/dist/exceptions/payload-format.exception.js.map +0 -1
- package/dist/payload.format.d.ts +0 -31
- package/dist/payload.format.js +0 -46
- package/dist/payload.format.js.map +0 -1
- package/src/client/producer.provider.ts +0 -17
- package/src/event.codec.ts +0 -37
- package/src/event.type.ts +0 -38
- package/src/exceptions/payload-format.exception.ts +0 -10
- package/src/payload.format.ts +0 -51
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [5.4.0-next.3](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.2...v5.4.0-next.3) (2024-11-25)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @rsdk/nats.common
|
|
9
|
+
|
|
10
|
+
## [5.4.0-next.2](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.1...v5.4.0-next.2) (2024-11-25)
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* **nats:** nats transport/kv/os + examples + docs ([#306](https://github.com/R-Vision/rsdk/issues/306)) ([de67eed](https://github.com/R-Vision/rsdk/commit/de67eed8b4cb17ec9d359067eae1e0c35d6cc736))
|
|
15
|
+
|
|
6
16
|
## [5.4.0-next.1](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.0...v5.4.0-next.1) (2024-11-08)
|
|
7
17
|
|
|
8
18
|
**Note:** Version bump only for package @rsdk/nats.common
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
+
export declare const NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE = "NATS_CLIENT_FOR_PACKAGE";
|
|
2
|
+
export declare const NATS_JET_STREAM_INJECTION_TOKEN_FOR_PACKAGE = "NATS_JET_STREAM_FOR_PACKAGE";
|
|
1
3
|
export declare const NATS_CLIENT_INJECTION_TOKEN: unique symbol;
|
|
2
|
-
export declare const
|
|
4
|
+
export declare const NATS_JETSTREAM_CLIENT_INJECTION_TOKEN: unique symbol;
|
|
5
|
+
export declare const createNatsClientToken: (name: string) => string;
|
|
6
|
+
export declare const createNatsJetStreamToken: (name: string) => string;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createNatsJetStreamToken = exports.createNatsClientToken = exports.NATS_JETSTREAM_CLIENT_INJECTION_TOKEN = exports.NATS_CLIENT_INJECTION_TOKEN = exports.NATS_JET_STREAM_INJECTION_TOKEN_FOR_PACKAGE = exports.NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE = void 0;
|
|
4
|
+
exports.NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE = 'NATS_CLIENT_FOR_PACKAGE';
|
|
5
|
+
exports.NATS_JET_STREAM_INJECTION_TOKEN_FOR_PACKAGE = 'NATS_JET_STREAM_FOR_PACKAGE';
|
|
4
6
|
exports.NATS_CLIENT_INJECTION_TOKEN = Symbol('NatsClient');
|
|
5
|
-
exports.
|
|
7
|
+
exports.NATS_JETSTREAM_CLIENT_INJECTION_TOKEN = Symbol('NatsJetStreamClient');
|
|
8
|
+
const createNatsClientToken = (name) => `NATS_CLIENT_${name.toUpperCase()}`;
|
|
9
|
+
exports.createNatsClientToken = createNatsClientToken;
|
|
10
|
+
const createNatsJetStreamToken = (name) => `NATS_JET_STREAM_${name.toUpperCase()}`;
|
|
11
|
+
exports.createNatsJetStreamToken = createNatsJetStreamToken;
|
|
6
12
|
//# sourceMappingURL=client.constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.constants.js","sourceRoot":"","sources":["../../src/client/client.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,2BAA2B,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AACnD,QAAA,
|
|
1
|
+
{"version":3,"file":"client.constants.js","sourceRoot":"","sources":["../../src/client/client.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,uCAAuC,GAClD,yBAAyB,CAAC;AACf,QAAA,2CAA2C,GACtD,6BAA6B,CAAC;AAEnB,QAAA,2BAA2B,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AACnD,QAAA,qCAAqC,GAAG,MAAM,CACzD,qBAAqB,CACtB,CAAC;AAEK,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAU,EAAE,CAC5D,eAAe,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;AADzB,QAAA,qBAAqB,yBACI;AAE/B,MAAM,wBAAwB,GAAG,CAAC,IAAY,EAAU,EAAE,CAC/D,mBAAmB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;AAD7B,QAAA,wBAAwB,4BACK"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const InjectNatsClient: () => ParameterDecorator;
|
|
2
|
-
export declare const
|
|
1
|
+
export declare const InjectNatsClient: (connectionName?: string) => ParameterDecorator;
|
|
2
|
+
export declare const InjectNatsJetStreamClient: (connectionName?: string) => ParameterDecorator;
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.InjectNatsJetStreamClient = exports.InjectNatsClient = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
5
|
const client_constants_1 = require("./client.constants");
|
|
6
|
-
const InjectNatsClient = () => (0, common_1.Inject)(
|
|
6
|
+
const InjectNatsClient = (connectionName) => (0, common_1.Inject)(connectionName
|
|
7
|
+
? (0, client_constants_1.createNatsClientToken)(connectionName)
|
|
8
|
+
: client_constants_1.NATS_CLIENT_INJECTION_TOKEN);
|
|
7
9
|
exports.InjectNatsClient = InjectNatsClient;
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
+
const InjectNatsJetStreamClient = (connectionName) => (0, common_1.Inject)(connectionName
|
|
11
|
+
? (0, client_constants_1.createNatsJetStreamToken)(connectionName)
|
|
12
|
+
: client_constants_1.NATS_JETSTREAM_CLIENT_INJECTION_TOKEN);
|
|
13
|
+
exports.InjectNatsJetStreamClient = InjectNatsJetStreamClient;
|
|
10
14
|
//# sourceMappingURL=client.decorators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.decorators.js","sourceRoot":"","sources":["../../src/client/client.decorators.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,
|
|
1
|
+
{"version":3,"file":"client.decorators.js","sourceRoot":"","sources":["../../src/client/client.decorators.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,yDAK4B;AAErB,MAAM,gBAAgB,GAAG,CAAC,cAAuB,EAAsB,EAAE,CAC9E,IAAA,eAAM,EACJ,cAAc;IACZ,CAAC,CAAC,IAAA,wCAAqB,EAAC,cAAc,CAAC;IACvC,CAAC,CAAC,8CAA2B,CAChC,CAAC;AALS,QAAA,gBAAgB,oBAKzB;AAEG,MAAM,yBAAyB,GAAG,CACvC,cAAuB,EACH,EAAE,CACtB,IAAA,eAAM,EACJ,cAAc;IACZ,CAAC,CAAC,IAAA,2CAAwB,EAAC,cAAc,CAAC;IAC1C,CAAC,CAAC,wDAAqC,CAC1C,CAAC;AAPS,QAAA,yBAAyB,6BAOlC"}
|
|
@@ -1,2 +1,9 @@
|
|
|
1
|
+
import type { DynamicModule } from '@nestjs/common';
|
|
2
|
+
import type { Constructor } from '@rsdk/common';
|
|
3
|
+
import { DefaultNatsConfig } from './client.config';
|
|
1
4
|
export declare class NatsClientModule {
|
|
5
|
+
static forRoot(connections?: {
|
|
6
|
+
connectionName: string;
|
|
7
|
+
config: Constructor<DefaultNatsConfig>;
|
|
8
|
+
}[]): DynamicModule;
|
|
2
9
|
}
|
|
@@ -5,23 +5,39 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
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
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var NatsClientModule_1;
|
|
8
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
10
|
exports.NatsClientModule = void 0;
|
|
10
11
|
const common_1 = require("@nestjs/common");
|
|
11
|
-
const core_1 = require("@rsdk/core");
|
|
12
12
|
const client_config_1 = require("./client.config");
|
|
13
|
+
const client_constants_1 = require("./client.constants");
|
|
13
14
|
const client_provider_1 = require("./client.provider");
|
|
14
|
-
const
|
|
15
|
+
const jetstream_client_provider_1 = require("./jetstream-client.provider");
|
|
15
16
|
const topics_service_1 = require("./topics.service");
|
|
16
|
-
let NatsClientModule = class NatsClientModule {
|
|
17
|
+
let NatsClientModule = NatsClientModule_1 = class NatsClientModule {
|
|
18
|
+
static forRoot(connections) {
|
|
19
|
+
const providers = [];
|
|
20
|
+
if (connections) {
|
|
21
|
+
for (const { connectionName, config } of connections) {
|
|
22
|
+
providers.push((0, client_provider_1.createNatsProvider)(config, (0, client_constants_1.createNatsClientToken)(connectionName)), (0, jetstream_client_provider_1.createNatsJetStreamProvider)((0, client_constants_1.createNatsClientToken)(connectionName), (0, client_constants_1.createNatsJetStreamToken)(connectionName)));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
providers.push((0, client_provider_1.createNatsProvider)(client_config_1.DefaultNatsConfig, client_constants_1.NATS_CLIENT_INJECTION_TOKEN), (0, jetstream_client_provider_1.createNatsJetStreamProvider)(client_constants_1.NATS_CLIENT_INJECTION_TOKEN, client_constants_1.NATS_JETSTREAM_CLIENT_INJECTION_TOKEN));
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
module: NatsClientModule_1,
|
|
30
|
+
providers,
|
|
31
|
+
exports: providers,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
17
34
|
};
|
|
18
35
|
exports.NatsClientModule = NatsClientModule;
|
|
19
|
-
exports.NatsClientModule = NatsClientModule = __decorate([
|
|
36
|
+
exports.NatsClientModule = NatsClientModule = NatsClientModule_1 = __decorate([
|
|
20
37
|
(0, common_1.Global)(),
|
|
21
38
|
(0, common_1.Module)({
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
exports: [producer_provider_1.natsProducerProvider, client_provider_1.natsProvider, topics_service_1.TopicsService],
|
|
39
|
+
providers: [topics_service_1.TopicsService],
|
|
40
|
+
exports: [topics_service_1.TopicsService],
|
|
25
41
|
})
|
|
26
42
|
], NatsClientModule);
|
|
27
43
|
//# sourceMappingURL=client.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.module.js","sourceRoot":"","sources":["../../src/client/client.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.module.js","sourceRoot":"","sources":["../../src/client/client.module.ts"],"names":[],"mappings":";;;;;;;;;;AACA,2CAAgD;AAGhD,mDAAoD;AACpD,yDAK4B;AAC5B,uDAAuD;AACvD,2EAA0E;AAC1E,qDAAiD;AAO1C,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAC3B,MAAM,CAAC,OAAO,CACZ,WAGG;QAEH,MAAM,SAAS,GAAe,EAAE,CAAC;QAEjC,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;gBACrD,SAAS,CAAC,IAAI,CACZ,IAAA,oCAAkB,EAAC,MAAM,EAAE,IAAA,wCAAqB,EAAC,cAAc,CAAC,CAAC,EACjE,IAAA,uDAA2B,EACzB,IAAA,wCAAqB,EAAC,cAAc,CAAC,EACrC,IAAA,2CAAwB,EAAC,cAAc,CAAC,CACzC,CACF,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CACZ,IAAA,oCAAkB,EAAC,iCAAiB,EAAE,8CAA2B,CAAC,EAClE,IAAA,uDAA2B,EACzB,8CAA2B,EAC3B,wDAAqC,CACtC,CACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,kBAAgB;YACxB,SAAS;YACT,OAAO,EAAE,SAAS;SACnB,CAAC;IACJ,CAAC;CACF,CAAA;AAnCY,4CAAgB;2BAAhB,gBAAgB;IAL5B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,8BAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACW,gBAAgB,CAmC5B"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import type { FactoryProvider } from '@nestjs/common';
|
|
2
|
-
|
|
1
|
+
import type { FactoryProvider, InjectionToken } from '@nestjs/common';
|
|
2
|
+
import type { Constructor } from '@rsdk/common';
|
|
3
|
+
import type { DefaultNatsConfig } from './client.config';
|
|
4
|
+
export declare const createNatsProvider: (config: Constructor<DefaultNatsConfig>, token: InjectionToken) => FactoryProvider;
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const core_1 = require("@rsdk/core");
|
|
3
|
+
exports.createNatsProvider = void 0;
|
|
5
4
|
const nats_1 = require("nats");
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
async useFactory(config, name) {
|
|
12
|
-
return await (0, nats_1.connect)({
|
|
13
|
-
name: `${name}-${process.pid}`,
|
|
14
|
-
...config,
|
|
15
|
-
});
|
|
5
|
+
const createNatsProvider = (config, token) => ({
|
|
6
|
+
inject: [config],
|
|
7
|
+
provide: token,
|
|
8
|
+
async useFactory(config) {
|
|
9
|
+
return await (0, nats_1.connect)(config);
|
|
16
10
|
},
|
|
17
|
-
};
|
|
11
|
+
});
|
|
12
|
+
exports.createNatsProvider = createNatsProvider;
|
|
18
13
|
//# sourceMappingURL=client.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.provider.js","sourceRoot":"","sources":["../../src/client/client.provider.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"client.provider.js","sourceRoot":"","sources":["../../src/client/client.provider.ts"],"names":[],"mappings":";;;AAGA,+BAA+B;AAIxB,MAAM,kBAAkB,GAAG,CAChC,MAAsC,EACtC,KAAqB,EACJ,EAAE,CAAC,CAAC;IACrB,MAAM,EAAE,CAAC,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK;IACd,KAAK,CAAC,UAAU,CAAC,MAAyB;QACxC,OAAO,MAAM,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC,CAAC;AATU,QAAA,kBAAkB,sBAS5B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createNatsJetStreamProvider = void 0;
|
|
4
|
+
const createNatsJetStreamProvider = (natsClientToken, natsJetStreamToken) => ({
|
|
5
|
+
inject: [natsClientToken],
|
|
6
|
+
provide: natsJetStreamToken,
|
|
7
|
+
useFactory(client) {
|
|
8
|
+
return client.jetstream();
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
exports.createNatsJetStreamProvider = createNatsJetStreamProvider;
|
|
12
|
+
//# sourceMappingURL=jetstream-client.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jetstream-client.provider.js","sourceRoot":"","sources":["../../src/client/jetstream-client.provider.ts"],"names":[],"mappings":";;;AAGO,MAAM,2BAA2B,GAAG,CACzC,eAA+B,EAC/B,kBAAkC,EACjB,EAAE,CAAC,CAAC;IACrB,MAAM,EAAE,CAAC,eAAe,CAAC;IACzB,OAAO,EAAE,kBAAkB;IAC3B,UAAU,CAAC,MAAsB;QAC/B,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;CACF,CAAC,CAAC;AATU,QAAA,2BAA2B,+BASrC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export { PayloadFormat, DEFAULT_PAYLOAD_FORMAT, X_FORMAT_HEADER, X_TYPE_HEADER, } from './payload.format';
|
|
1
|
+
export { getStreamName } from './utils/get-stream-name.fn';
|
|
2
|
+
export { getSubjectName } from './utils/get-subject-name.fn';
|
|
4
3
|
export { NatsTopicMetadata, NatsTopicMetadataByEventType, NatsTopicMetadataByTopic, TopicType, NATS_TOPIC_RSDK_METADATA_SCOPE, } from './client/client.metadata';
|
|
5
|
-
export
|
|
6
|
-
export
|
|
4
|
+
export * from './client/client.constants';
|
|
5
|
+
export { InjectNatsClient, InjectNatsJetStreamClient, } from './client/client.decorators';
|
|
7
6
|
export { NatsClientModule } from './client/client.module';
|
|
8
7
|
export { handleNatsException } from './exceptions/exception.handler';
|
|
8
|
+
export { DefaultNatsConfig } from './client/client.config';
|
package/dist/index.js
CHANGED
|
@@ -1,25 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
var
|
|
5
|
-
Object.defineProperty(exports, "
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(exports, "ProtoEventCodec", { enumerable: true, get: function () { return event_codec_1.ProtoEventCodec; } });
|
|
9
|
-
Object.defineProperty(exports, "JSONEventCodec", { enumerable: true, get: function () { return event_codec_1.JSONEventCodec; } });
|
|
10
|
-
var payload_format_1 = require("./payload.format");
|
|
11
|
-
Object.defineProperty(exports, "PayloadFormat", { enumerable: true, get: function () { return payload_format_1.PayloadFormat; } });
|
|
12
|
-
Object.defineProperty(exports, "DEFAULT_PAYLOAD_FORMAT", { enumerable: true, get: function () { return payload_format_1.DEFAULT_PAYLOAD_FORMAT; } });
|
|
13
|
-
Object.defineProperty(exports, "X_FORMAT_HEADER", { enumerable: true, get: function () { return payload_format_1.X_FORMAT_HEADER; } });
|
|
14
|
-
Object.defineProperty(exports, "X_TYPE_HEADER", { enumerable: true, get: function () { return payload_format_1.X_TYPE_HEADER; } });
|
|
17
|
+
exports.DefaultNatsConfig = exports.handleNatsException = exports.NatsClientModule = exports.InjectNatsJetStreamClient = exports.InjectNatsClient = exports.NATS_TOPIC_RSDK_METADATA_SCOPE = exports.TopicType = exports.getSubjectName = exports.getStreamName = void 0;
|
|
18
|
+
var get_stream_name_fn_1 = require("./utils/get-stream-name.fn");
|
|
19
|
+
Object.defineProperty(exports, "getStreamName", { enumerable: true, get: function () { return get_stream_name_fn_1.getStreamName; } });
|
|
20
|
+
var get_subject_name_fn_1 = require("./utils/get-subject-name.fn");
|
|
21
|
+
Object.defineProperty(exports, "getSubjectName", { enumerable: true, get: function () { return get_subject_name_fn_1.getSubjectName; } });
|
|
15
22
|
var client_metadata_1 = require("./client/client.metadata");
|
|
16
23
|
Object.defineProperty(exports, "TopicType", { enumerable: true, get: function () { return client_metadata_1.TopicType; } });
|
|
17
24
|
Object.defineProperty(exports, "NATS_TOPIC_RSDK_METADATA_SCOPE", { enumerable: true, get: function () { return client_metadata_1.NATS_TOPIC_RSDK_METADATA_SCOPE; } });
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
Object.defineProperty(exports, "
|
|
25
|
+
__exportStar(require("./client/client.constants"), exports);
|
|
26
|
+
var client_decorators_1 = require("./client/client.decorators");
|
|
27
|
+
Object.defineProperty(exports, "InjectNatsClient", { enumerable: true, get: function () { return client_decorators_1.InjectNatsClient; } });
|
|
28
|
+
Object.defineProperty(exports, "InjectNatsJetStreamClient", { enumerable: true, get: function () { return client_decorators_1.InjectNatsJetStreamClient; } });
|
|
21
29
|
var client_module_1 = require("./client/client.module");
|
|
22
30
|
Object.defineProperty(exports, "NatsClientModule", { enumerable: true, get: function () { return client_module_1.NatsClientModule; } });
|
|
23
31
|
var exception_handler_1 = require("./exceptions/exception.handler");
|
|
24
32
|
Object.defineProperty(exports, "handleNatsException", { enumerable: true, get: function () { return exception_handler_1.handleNatsException; } });
|
|
33
|
+
var client_config_1 = require("./client/client.config");
|
|
34
|
+
Object.defineProperty(exports, "DefaultNatsConfig", { enumerable: true, get: function () { return client_config_1.DefaultNatsConfig; } });
|
|
25
35
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iEAA2D;AAAlD,mHAAA,aAAa,OAAA;AACtB,mEAA6D;AAApD,qHAAA,cAAc,OAAA;AACvB,4DAMkC;AAFhC,4GAAA,SAAS,OAAA;AACT,iIAAA,8BAA8B,OAAA;AAEhC,4DAA0C;AAC1C,gEAGoC;AAFlC,qHAAA,gBAAgB,OAAA;AAChB,8HAAA,yBAAyB,OAAA;AAE3B,wDAA0D;AAAjD,iHAAA,gBAAgB,OAAA;AACzB,oEAAqE;AAA5D,wHAAA,mBAAmB,OAAA;AAC5B,wDAA2D;AAAlD,kHAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getStreamName = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Генерирует имя стрима из EventType
|
|
6
|
+
*/
|
|
7
|
+
const getStreamName = (eventType) => {
|
|
8
|
+
return `events-${eventType.$group.replaceAll('.', '-')}`;
|
|
9
|
+
};
|
|
10
|
+
exports.getStreamName = getStreamName;
|
|
11
|
+
//# sourceMappingURL=get-stream-name.fn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-stream-name.fn.js","sourceRoot":"","sources":["../../src/utils/get-stream-name.fn.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACI,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAU,EAAE;IAC5D,OAAO,UAAU,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AAC3D,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSubjectName = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Генерирует имя subject из EventType
|
|
6
|
+
*/
|
|
7
|
+
const getSubjectName = (eventType, partitionKey) => {
|
|
8
|
+
return `events.${eventType.$type}${partitionKey ? `.${partitionKey}` : ''}`;
|
|
9
|
+
};
|
|
10
|
+
exports.getSubjectName = getSubjectName;
|
|
11
|
+
//# sourceMappingURL=get-subject-name.fn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-subject-name.fn.js","sourceRoot":"","sources":["../../src/utils/get-subject-name.fn.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACI,MAAM,cAAc,GAAG,CAC5B,SAAoB,EACpB,YAAqB,EACb,EAAE;IACV,OAAO,UAAU,SAAS,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9E,CAAC,CAAC;AALW,QAAA,cAAc,kBAKzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsdk/nats.common",
|
|
3
|
-
"version": "5.4.0-next.
|
|
3
|
+
"version": "5.4.0-next.3",
|
|
4
4
|
"description": "Common functionality for nats consumers and producers",
|
|
5
5
|
"license": "Apache License 2.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"@nestjs/microservices": "^10.0.0",
|
|
17
17
|
"@rsdk/common": "*",
|
|
18
18
|
"@rsdk/core": "*",
|
|
19
|
+
"@rsdk/events.common": "*",
|
|
19
20
|
"@rsdk/logging": "*",
|
|
20
21
|
"@rsdk/metadata": "*",
|
|
21
22
|
"nats": "^2.28.2",
|
|
@@ -26,5 +27,5 @@
|
|
|
26
27
|
"lodash": "^4.17.21",
|
|
27
28
|
"protobufjs": "^7.2.3"
|
|
28
29
|
},
|
|
29
|
-
"gitHead": "
|
|
30
|
+
"gitHead": "8b755915540bab9a033e50b22fc0223e6a23f6be"
|
|
30
31
|
}
|
|
@@ -1,2 +1,15 @@
|
|
|
1
|
+
export const NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE =
|
|
2
|
+
'NATS_CLIENT_FOR_PACKAGE';
|
|
3
|
+
export const NATS_JET_STREAM_INJECTION_TOKEN_FOR_PACKAGE =
|
|
4
|
+
'NATS_JET_STREAM_FOR_PACKAGE';
|
|
5
|
+
|
|
1
6
|
export const NATS_CLIENT_INJECTION_TOKEN = Symbol('NatsClient');
|
|
2
|
-
export const
|
|
7
|
+
export const NATS_JETSTREAM_CLIENT_INJECTION_TOKEN = Symbol(
|
|
8
|
+
'NatsJetStreamClient',
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
export const createNatsClientToken = (name: string): string =>
|
|
12
|
+
`NATS_CLIENT_${name.toUpperCase()}`;
|
|
13
|
+
|
|
14
|
+
export const createNatsJetStreamToken = (name: string): string =>
|
|
15
|
+
`NATS_JET_STREAM_${name.toUpperCase()}`;
|
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import { Inject } from '@nestjs/common';
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
+
createNatsClientToken,
|
|
5
|
+
createNatsJetStreamToken,
|
|
4
6
|
NATS_CLIENT_INJECTION_TOKEN,
|
|
5
|
-
|
|
7
|
+
NATS_JETSTREAM_CLIENT_INJECTION_TOKEN,
|
|
6
8
|
} from './client.constants';
|
|
7
9
|
|
|
8
|
-
export const InjectNatsClient = (): ParameterDecorator =>
|
|
9
|
-
Inject(
|
|
10
|
+
export const InjectNatsClient = (connectionName?: string): ParameterDecorator =>
|
|
11
|
+
Inject(
|
|
12
|
+
connectionName
|
|
13
|
+
? createNatsClientToken(connectionName)
|
|
14
|
+
: NATS_CLIENT_INJECTION_TOKEN,
|
|
15
|
+
);
|
|
10
16
|
|
|
11
|
-
export const
|
|
12
|
-
|
|
17
|
+
export const InjectNatsJetStreamClient = (
|
|
18
|
+
connectionName?: string,
|
|
19
|
+
): ParameterDecorator =>
|
|
20
|
+
Inject(
|
|
21
|
+
connectionName
|
|
22
|
+
? createNatsJetStreamToken(connectionName)
|
|
23
|
+
: NATS_JETSTREAM_CLIENT_INJECTION_TOKEN,
|
|
24
|
+
);
|
|
@@ -1,15 +1,56 @@
|
|
|
1
|
+
import type { DynamicModule, Provider } from '@nestjs/common';
|
|
1
2
|
import { Global, Module } from '@nestjs/common';
|
|
2
|
-
import {
|
|
3
|
+
import type { Constructor } from '@rsdk/common';
|
|
3
4
|
|
|
4
5
|
import { DefaultNatsConfig } from './client.config';
|
|
5
|
-
import {
|
|
6
|
-
|
|
6
|
+
import {
|
|
7
|
+
createNatsClientToken,
|
|
8
|
+
createNatsJetStreamToken,
|
|
9
|
+
NATS_CLIENT_INJECTION_TOKEN,
|
|
10
|
+
NATS_JETSTREAM_CLIENT_INJECTION_TOKEN,
|
|
11
|
+
} from './client.constants';
|
|
12
|
+
import { createNatsProvider } from './client.provider';
|
|
13
|
+
import { createNatsJetStreamProvider } from './jetstream-client.provider';
|
|
7
14
|
import { TopicsService } from './topics.service';
|
|
8
15
|
|
|
9
16
|
@Global()
|
|
10
17
|
@Module({
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
exports: [natsProducerProvider, natsProvider, TopicsService],
|
|
18
|
+
providers: [TopicsService],
|
|
19
|
+
exports: [TopicsService],
|
|
14
20
|
})
|
|
15
|
-
export class NatsClientModule {
|
|
21
|
+
export class NatsClientModule {
|
|
22
|
+
static forRoot(
|
|
23
|
+
connections?: {
|
|
24
|
+
connectionName: string;
|
|
25
|
+
config: Constructor<DefaultNatsConfig>;
|
|
26
|
+
}[],
|
|
27
|
+
): DynamicModule {
|
|
28
|
+
const providers: Provider[] = [];
|
|
29
|
+
|
|
30
|
+
if (connections) {
|
|
31
|
+
for (const { connectionName, config } of connections) {
|
|
32
|
+
providers.push(
|
|
33
|
+
createNatsProvider(config, createNatsClientToken(connectionName)),
|
|
34
|
+
createNatsJetStreamProvider(
|
|
35
|
+
createNatsClientToken(connectionName),
|
|
36
|
+
createNatsJetStreamToken(connectionName),
|
|
37
|
+
),
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
} else {
|
|
41
|
+
providers.push(
|
|
42
|
+
createNatsProvider(DefaultNatsConfig, NATS_CLIENT_INJECTION_TOKEN),
|
|
43
|
+
createNatsJetStreamProvider(
|
|
44
|
+
NATS_CLIENT_INJECTION_TOKEN,
|
|
45
|
+
NATS_JETSTREAM_CLIENT_INJECTION_TOKEN,
|
|
46
|
+
),
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return {
|
|
51
|
+
module: NatsClientModule,
|
|
52
|
+
providers,
|
|
53
|
+
exports: providers,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
import type { FactoryProvider } from '@nestjs/common';
|
|
2
|
-
import {
|
|
1
|
+
import type { FactoryProvider, InjectionToken } from '@nestjs/common';
|
|
2
|
+
import type { Constructor } from '@rsdk/common';
|
|
3
3
|
import type { NatsConnection } from 'nats';
|
|
4
4
|
import { connect } from 'nats';
|
|
5
5
|
|
|
6
|
-
import { DefaultNatsConfig } from './client.config';
|
|
7
|
-
import { NATS_CLIENT_INJECTION_TOKEN } from './client.constants';
|
|
6
|
+
import type { DefaultNatsConfig } from './client.config';
|
|
8
7
|
|
|
9
|
-
export const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
): Promise<NatsConnection> {
|
|
16
|
-
return await connect(
|
|
17
|
-
name: `${name}-${process.pid}`,
|
|
18
|
-
...config,
|
|
19
|
-
});
|
|
8
|
+
export const createNatsProvider = (
|
|
9
|
+
config: Constructor<DefaultNatsConfig>,
|
|
10
|
+
token: InjectionToken,
|
|
11
|
+
): FactoryProvider => ({
|
|
12
|
+
inject: [config],
|
|
13
|
+
provide: token,
|
|
14
|
+
async useFactory(config: DefaultNatsConfig): Promise<NatsConnection> {
|
|
15
|
+
return await connect(config);
|
|
20
16
|
},
|
|
21
|
-
};
|
|
17
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { FactoryProvider, InjectionToken } from '@nestjs/common';
|
|
2
|
+
import type { JetStreamClient, NatsConnection } from 'nats';
|
|
3
|
+
|
|
4
|
+
export const createNatsJetStreamProvider = (
|
|
5
|
+
natsClientToken: InjectionToken,
|
|
6
|
+
natsJetStreamToken: InjectionToken,
|
|
7
|
+
): FactoryProvider => ({
|
|
8
|
+
inject: [natsClientToken],
|
|
9
|
+
provide: natsJetStreamToken,
|
|
10
|
+
useFactory(client: NatsConnection): JetStreamClient {
|
|
11
|
+
return client.jetstream();
|
|
12
|
+
},
|
|
13
|
+
});
|
package/src/index.ts
CHANGED
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
export {
|
|
2
|
-
|
|
3
|
-
EventPayload,
|
|
4
|
-
isEventType,
|
|
5
|
-
getSubjectName,
|
|
6
|
-
} from './event.type';
|
|
7
|
-
export { EventCodec, ProtoEventCodec, JSONEventCodec } from './event.codec';
|
|
8
|
-
export {
|
|
9
|
-
PayloadFormat,
|
|
10
|
-
DEFAULT_PAYLOAD_FORMAT,
|
|
11
|
-
X_FORMAT_HEADER,
|
|
12
|
-
X_TYPE_HEADER,
|
|
13
|
-
} from './payload.format';
|
|
1
|
+
export { getStreamName } from './utils/get-stream-name.fn';
|
|
2
|
+
export { getSubjectName } from './utils/get-subject-name.fn';
|
|
14
3
|
export {
|
|
15
4
|
NatsTopicMetadata,
|
|
16
5
|
NatsTopicMetadataByEventType,
|
|
@@ -18,10 +7,11 @@ export {
|
|
|
18
7
|
TopicType,
|
|
19
8
|
NATS_TOPIC_RSDK_METADATA_SCOPE,
|
|
20
9
|
} from './client/client.metadata';
|
|
10
|
+
export * from './client/client.constants';
|
|
21
11
|
export {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
} from './client/client.
|
|
25
|
-
export type { Producer } from './client/producer.provider';
|
|
12
|
+
InjectNatsClient,
|
|
13
|
+
InjectNatsJetStreamClient,
|
|
14
|
+
} from './client/client.decorators';
|
|
26
15
|
export { NatsClientModule } from './client/client.module';
|
|
27
16
|
export { handleNatsException } from './exceptions/exception.handler';
|
|
17
|
+
export { DefaultNatsConfig } from './client/client.config';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { EventType } from '@rsdk/events.common';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Генерирует имя subject из EventType
|
|
5
|
+
*/
|
|
6
|
+
export const getSubjectName = (
|
|
7
|
+
eventType: EventType,
|
|
8
|
+
partitionKey?: string,
|
|
9
|
+
): string => {
|
|
10
|
+
return `events.${eventType.$type}${partitionKey ? `.${partitionKey}` : ''}`;
|
|
11
|
+
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.natsProducerProvider = void 0;
|
|
4
|
-
const client_constants_1 = require("./client.constants");
|
|
5
|
-
exports.natsProducerProvider = {
|
|
6
|
-
inject: [client_constants_1.NATS_CLIENT_INJECTION_TOKEN],
|
|
7
|
-
provide: client_constants_1.NATS_PRODUCER_INJECTION_TOKEN,
|
|
8
|
-
async useFactory(client) {
|
|
9
|
-
return client.jetstream();
|
|
10
|
-
},
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=producer.provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"producer.provider.js","sourceRoot":"","sources":["../../src/client/producer.provider.ts"],"names":[],"mappings":";;;AAGA,yDAG4B;AAIf,QAAA,oBAAoB,GAAoB;IACnD,MAAM,EAAE,CAAC,8CAA2B,CAAC;IACrC,OAAO,EAAE,gDAA6B;IACtC,KAAK,CAAC,UAAU,CAAC,MAAsB;QACrC,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;CACF,CAAC"}
|
package/dist/event.codec.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { Payload } from 'nats';
|
|
2
|
-
import type { EventPayload, EventType } from './event.type';
|
|
3
|
-
export interface EventCodec<E extends EventType> {
|
|
4
|
-
decode<P extends EventPayload<E> = EventPayload<E>>(payload: Payload): P;
|
|
5
|
-
encode<P extends EventPayload<E> = EventPayload<E>>(payload: P): Payload;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Protobuf-encoding strategy
|
|
9
|
-
*/
|
|
10
|
-
export declare class ProtoEventCodec<E extends EventType> implements EventCodec<E> {
|
|
11
|
-
readonly eventType: E;
|
|
12
|
-
constructor(eventType: E);
|
|
13
|
-
decode<P extends EventPayload<E>>(buffer: Buffer): P;
|
|
14
|
-
encode<P extends EventPayload<E>>(payload: P): Buffer;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* JSON-encoding strategy
|
|
18
|
-
*/
|
|
19
|
-
export declare class JSONEventCodec<E extends EventType> implements EventCodec<E> {
|
|
20
|
-
decode<P extends EventPayload<E>>(payload: string): P;
|
|
21
|
-
encode<P extends EventPayload<E>>(payload: P): Payload;
|
|
22
|
-
}
|
package/dist/event.codec.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JSONEventCodec = exports.ProtoEventCodec = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Protobuf-encoding strategy
|
|
6
|
-
*/
|
|
7
|
-
class ProtoEventCodec {
|
|
8
|
-
eventType;
|
|
9
|
-
constructor(eventType) {
|
|
10
|
-
this.eventType = eventType;
|
|
11
|
-
}
|
|
12
|
-
decode(buffer) {
|
|
13
|
-
return this.eventType.decode(buffer);
|
|
14
|
-
}
|
|
15
|
-
encode(payload) {
|
|
16
|
-
return Buffer.from(this.eventType.encode(payload).finish());
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.ProtoEventCodec = ProtoEventCodec;
|
|
20
|
-
/**
|
|
21
|
-
* JSON-encoding strategy
|
|
22
|
-
*/
|
|
23
|
-
class JSONEventCodec {
|
|
24
|
-
decode(payload) {
|
|
25
|
-
return JSON.parse(payload);
|
|
26
|
-
}
|
|
27
|
-
encode(payload) {
|
|
28
|
-
return JSON.stringify(payload);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.JSONEventCodec = JSONEventCodec;
|
|
32
|
-
//# sourceMappingURL=event.codec.js.map
|
package/dist/event.codec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event.codec.js","sourceRoot":"","sources":["../src/event.codec.ts"],"names":[],"mappings":";;;AAUA;;GAEG;AACH,MAAa,eAAe;IACL;IAArB,YAAqB,SAAY;QAAZ,cAAS,GAAT,SAAS,CAAG;IAAG,CAAC;IAErC,MAAM,CAA4B,MAAc;QAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAA4B,OAAU;QAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF;AAVD,0CAUC;AAED;;GAEG;AACH,MAAa,cAAc;IACzB,MAAM,CAA4B,OAAe;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAA4B,OAAU;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;CACF;AARD,wCAQC"}
|
package/dist/event.type.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { Reader, Writer } from 'protobufjs/minimal';
|
|
2
|
-
/**
|
|
3
|
-
* Генерируется при компиляции proto-файлов
|
|
4
|
-
*/
|
|
5
|
-
export interface EventType<T = any> {
|
|
6
|
-
$group: string;
|
|
7
|
-
$partitionKeyField: string | null;
|
|
8
|
-
$type: string;
|
|
9
|
-
encode(message: T): Writer;
|
|
10
|
-
decode(data: Uint8Array | Reader): T;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Выводит тип payload из EventType
|
|
14
|
-
*/
|
|
15
|
-
export type EventPayload<E extends EventType> = E extends EventType<infer P> ? P : never;
|
|
16
|
-
/**
|
|
17
|
-
* Проверяет, является ли переданный тип EventType
|
|
18
|
-
*/
|
|
19
|
-
export declare const isEventType: <T = any>(x: any) => x is EventType<T>;
|
|
20
|
-
/**
|
|
21
|
-
* Генерирует имя subject из EventType
|
|
22
|
-
*/
|
|
23
|
-
export declare const getSubjectName: (eventType: EventType, partitionKey?: string) => string;
|
package/dist/event.type.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getSubjectName = exports.isEventType = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Проверяет, является ли переданный тип EventType
|
|
6
|
-
*/
|
|
7
|
-
const isEventType = (x) => typeof x === 'object' &&
|
|
8
|
-
typeof x.$type === 'string' &&
|
|
9
|
-
typeof x.$group === 'string';
|
|
10
|
-
exports.isEventType = isEventType;
|
|
11
|
-
/**
|
|
12
|
-
* Генерирует имя subject из EventType
|
|
13
|
-
*/
|
|
14
|
-
const getSubjectName = (eventType, partitionKey) => {
|
|
15
|
-
return `events.${eventType.$type}${partitionKey ? `.${partitionKey}` : ''}`;
|
|
16
|
-
};
|
|
17
|
-
exports.getSubjectName = getSubjectName;
|
|
18
|
-
//# sourceMappingURL=event.type.js.map
|
package/dist/event.type.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event.type.js","sourceRoot":"","sources":["../src/event.type.ts"],"names":[],"mappings":";;;AAqBA;;GAEG;AACI,MAAM,WAAW,GAAG,CAAU,CAAM,EAAqB,EAAE,CAChE,OAAO,CAAC,KAAK,QAAQ;IACrB,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;IAC3B,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;AAHlB,QAAA,WAAW,eAGO;AAE/B;;GAEG;AACI,MAAM,cAAc,GAAG,CAC5B,SAAoB,EACpB,YAAqB,EACb,EAAE;IACV,OAAO,UAAU,SAAS,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9E,CAAC,CAAC;AALW,QAAA,cAAc,kBAKzB"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PayloadFormatException = void 0;
|
|
4
|
-
const core_1 = require("@rsdk/core");
|
|
5
|
-
class PayloadFormatException extends core_1.BootstrapException {
|
|
6
|
-
constructor(value, allowed) {
|
|
7
|
-
super(`PayloadFormat has wrong value: ${value}, allowed: ${allowed.join(',')}`);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.PayloadFormatException = PayloadFormatException;
|
|
11
|
-
//# sourceMappingURL=payload-format.exception.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payload-format.exception.js","sourceRoot":"","sources":["../../src/exceptions/payload-format.exception.ts"],"names":[],"mappings":";;;AACA,qCAAgD;AAEhD,MAAa,sBAAuB,SAAQ,yBAAkB;IAC5D,YAAY,KAAa,EAAE,OAAoB;QAC7C,KAAK,CACH,kCAAkC,KAAK,cAAc,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACzE,CAAC;IACJ,CAAC;CACF;AAND,wDAMC"}
|
package/dist/payload.format.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Способ сериализации данных события
|
|
3
|
-
*/
|
|
4
|
-
export declare enum PayloadFormat {
|
|
5
|
-
PROTOBUF = "protobuf",
|
|
6
|
-
JSON = "json"
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Проверяет, является ли переданная строка - одним
|
|
10
|
-
* из значений перечисления PayloadFormat
|
|
11
|
-
*/
|
|
12
|
-
export declare const isPayloadFormat: (value: string) => value is PayloadFormat;
|
|
13
|
-
/**
|
|
14
|
-
* Проверяет, является ли переданная строка - одним
|
|
15
|
-
* из значений перечисления PayloadFormat. В случае,
|
|
16
|
-
* если передано неверное значение - бросает ошибку
|
|
17
|
-
*/
|
|
18
|
-
export declare const assertIsPayloadFormat: (value: string) => asserts value is PayloadFormat;
|
|
19
|
-
/**
|
|
20
|
-
* Заголовок в kafka, через который передаётся способ
|
|
21
|
-
* сериализации
|
|
22
|
-
*/
|
|
23
|
-
export declare const X_FORMAT_HEADER = "X-Format";
|
|
24
|
-
/**
|
|
25
|
-
* Сериализация по умолчанию (protobuf)
|
|
26
|
-
*/
|
|
27
|
-
export declare const DEFAULT_PAYLOAD_FORMAT = PayloadFormat.PROTOBUF;
|
|
28
|
-
/**
|
|
29
|
-
* Заголовок в nats, через который передаётся тип сообщения
|
|
30
|
-
*/
|
|
31
|
-
export declare const X_TYPE_HEADER = "X-Type";
|
package/dist/payload.format.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.X_TYPE_HEADER = exports.DEFAULT_PAYLOAD_FORMAT = exports.X_FORMAT_HEADER = exports.assertIsPayloadFormat = exports.isPayloadFormat = exports.PayloadFormat = void 0;
|
|
4
|
-
const common_1 = require("@rsdk/common");
|
|
5
|
-
const payload_format_exception_1 = require("./exceptions/payload-format.exception");
|
|
6
|
-
/**
|
|
7
|
-
* Способ сериализации данных события
|
|
8
|
-
*/
|
|
9
|
-
var PayloadFormat;
|
|
10
|
-
(function (PayloadFormat) {
|
|
11
|
-
PayloadFormat["PROTOBUF"] = "protobuf";
|
|
12
|
-
PayloadFormat["JSON"] = "json";
|
|
13
|
-
})(PayloadFormat || (exports.PayloadFormat = PayloadFormat = {}));
|
|
14
|
-
const allowed = common_1.Enum.values(PayloadFormat);
|
|
15
|
-
/**
|
|
16
|
-
* Проверяет, является ли переданная строка - одним
|
|
17
|
-
* из значений перечисления PayloadFormat
|
|
18
|
-
*/
|
|
19
|
-
const isPayloadFormat = (value) => allowed.includes(value);
|
|
20
|
-
exports.isPayloadFormat = isPayloadFormat;
|
|
21
|
-
/**
|
|
22
|
-
* Проверяет, является ли переданная строка - одним
|
|
23
|
-
* из значений перечисления PayloadFormat. В случае,
|
|
24
|
-
* если передано неверное значение - бросает ошибку
|
|
25
|
-
*/
|
|
26
|
-
const assertIsPayloadFormat = (value) => {
|
|
27
|
-
if ((0, exports.isPayloadFormat)(value)) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
throw new payload_format_exception_1.PayloadFormatException(value, allowed);
|
|
31
|
-
};
|
|
32
|
-
exports.assertIsPayloadFormat = assertIsPayloadFormat;
|
|
33
|
-
/**
|
|
34
|
-
* Заголовок в kafka, через который передаётся способ
|
|
35
|
-
* сериализации
|
|
36
|
-
*/
|
|
37
|
-
exports.X_FORMAT_HEADER = 'X-Format';
|
|
38
|
-
/**
|
|
39
|
-
* Сериализация по умолчанию (protobuf)
|
|
40
|
-
*/
|
|
41
|
-
exports.DEFAULT_PAYLOAD_FORMAT = PayloadFormat.PROTOBUF;
|
|
42
|
-
/**
|
|
43
|
-
* Заголовок в nats, через который передаётся тип сообщения
|
|
44
|
-
*/
|
|
45
|
-
exports.X_TYPE_HEADER = 'X-Type';
|
|
46
|
-
//# sourceMappingURL=payload.format.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payload.format.js","sourceRoot":"","sources":["../src/payload.format.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEpC,oFAA+E;AAE/E;;GAEG;AACH,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,8BAAa,CAAA;AACf,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB;AAED,MAAM,OAAO,GAAG,aAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAE3C;;;GAGG;AACI,MAAM,eAAe,GAAG,CAAC,KAAa,EAA0B,EAAE,CACvE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AADb,QAAA,eAAe,mBACF;AAE1B;;;;GAIG;AACI,MAAM,qBAAqB,GAAG,CACnC,KAAa,EACmB,EAAE;IAClC,IAAI,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,MAAM,IAAI,iDAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC,CAAC;AARW,QAAA,qBAAqB,yBAQhC;AAEF;;;GAGG;AACU,QAAA,eAAe,GAAG,UAAU,CAAC;AAE1C;;GAEG;AACU,QAAA,sBAAsB,GAAG,aAAa,CAAC,QAAQ,CAAC;AAE7D;;GAEG;AACU,QAAA,aAAa,GAAG,QAAQ,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { FactoryProvider } from '@nestjs/common';
|
|
2
|
-
import type { JetStreamClient, NatsConnection } from 'nats';
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
NATS_CLIENT_INJECTION_TOKEN,
|
|
6
|
-
NATS_PRODUCER_INJECTION_TOKEN,
|
|
7
|
-
} from './client.constants';
|
|
8
|
-
|
|
9
|
-
export type Producer = JetStreamClient;
|
|
10
|
-
|
|
11
|
-
export const natsProducerProvider: FactoryProvider = {
|
|
12
|
-
inject: [NATS_CLIENT_INJECTION_TOKEN],
|
|
13
|
-
provide: NATS_PRODUCER_INJECTION_TOKEN,
|
|
14
|
-
async useFactory(client: NatsConnection): Promise<Producer> {
|
|
15
|
-
return client.jetstream();
|
|
16
|
-
},
|
|
17
|
-
};
|
package/src/event.codec.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type { Payload } from 'nats';
|
|
2
|
-
|
|
3
|
-
import type { EventPayload, EventType } from './event.type';
|
|
4
|
-
|
|
5
|
-
export interface EventCodec<E extends EventType> {
|
|
6
|
-
decode<P extends EventPayload<E> = EventPayload<E>>(payload: Payload): P;
|
|
7
|
-
|
|
8
|
-
encode<P extends EventPayload<E> = EventPayload<E>>(payload: P): Payload;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Protobuf-encoding strategy
|
|
13
|
-
*/
|
|
14
|
-
export class ProtoEventCodec<E extends EventType> implements EventCodec<E> {
|
|
15
|
-
constructor(readonly eventType: E) {}
|
|
16
|
-
|
|
17
|
-
decode<P extends EventPayload<E>>(buffer: Buffer): P {
|
|
18
|
-
return this.eventType.decode(buffer);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
encode<P extends EventPayload<E>>(payload: P): Buffer {
|
|
22
|
-
return Buffer.from(this.eventType.encode(payload).finish());
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* JSON-encoding strategy
|
|
28
|
-
*/
|
|
29
|
-
export class JSONEventCodec<E extends EventType> implements EventCodec<E> {
|
|
30
|
-
decode<P extends EventPayload<E>>(payload: string): P {
|
|
31
|
-
return JSON.parse(payload);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
encode<P extends EventPayload<E>>(payload: P): Payload {
|
|
35
|
-
return JSON.stringify(payload);
|
|
36
|
-
}
|
|
37
|
-
}
|
package/src/event.type.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { Reader, Writer } from 'protobufjs/minimal';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Генерируется при компиляции proto-файлов
|
|
5
|
-
*/
|
|
6
|
-
export interface EventType<T = any> {
|
|
7
|
-
$group: string;
|
|
8
|
-
$partitionKeyField: string | null;
|
|
9
|
-
$type: string;
|
|
10
|
-
|
|
11
|
-
encode(message: T): Writer;
|
|
12
|
-
|
|
13
|
-
decode(data: Uint8Array | Reader): T;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Выводит тип payload из EventType
|
|
18
|
-
*/
|
|
19
|
-
export type EventPayload<E extends EventType> =
|
|
20
|
-
E extends EventType<infer P> ? P : never;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Проверяет, является ли переданный тип EventType
|
|
24
|
-
*/
|
|
25
|
-
export const isEventType = <T = any>(x: any): x is EventType<T> =>
|
|
26
|
-
typeof x === 'object' &&
|
|
27
|
-
typeof x.$type === 'string' &&
|
|
28
|
-
typeof x.$group === 'string';
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Генерирует имя subject из EventType
|
|
32
|
-
*/
|
|
33
|
-
export const getSubjectName = (
|
|
34
|
-
eventType: EventType,
|
|
35
|
-
partitionKey?: string,
|
|
36
|
-
): string => {
|
|
37
|
-
return `events.${eventType.$type}${partitionKey ? `.${partitionKey}` : ''}`;
|
|
38
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { EnumValue } from '@rsdk/common';
|
|
2
|
-
import { BootstrapException } from '@rsdk/core';
|
|
3
|
-
|
|
4
|
-
export class PayloadFormatException extends BootstrapException {
|
|
5
|
-
constructor(value: string, allowed: EnumValue[]) {
|
|
6
|
-
super(
|
|
7
|
-
`PayloadFormat has wrong value: ${value}, allowed: ${allowed.join(',')}`,
|
|
8
|
-
);
|
|
9
|
-
}
|
|
10
|
-
}
|
package/src/payload.format.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { Enum } from '@rsdk/common';
|
|
2
|
-
|
|
3
|
-
import { PayloadFormatException } from './exceptions/payload-format.exception';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Способ сериализации данных события
|
|
7
|
-
*/
|
|
8
|
-
export enum PayloadFormat {
|
|
9
|
-
PROTOBUF = 'protobuf',
|
|
10
|
-
JSON = 'json',
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const allowed = Enum.values(PayloadFormat);
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Проверяет, является ли переданная строка - одним
|
|
17
|
-
* из значений перечисления PayloadFormat
|
|
18
|
-
*/
|
|
19
|
-
export const isPayloadFormat = (value: string): value is PayloadFormat =>
|
|
20
|
-
allowed.includes(value);
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Проверяет, является ли переданная строка - одним
|
|
24
|
-
* из значений перечисления PayloadFormat. В случае,
|
|
25
|
-
* если передано неверное значение - бросает ошибку
|
|
26
|
-
*/
|
|
27
|
-
export const assertIsPayloadFormat = (
|
|
28
|
-
value: string,
|
|
29
|
-
): asserts value is PayloadFormat => {
|
|
30
|
-
if (isPayloadFormat(value)) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
throw new PayloadFormatException(value, allowed);
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Заголовок в kafka, через который передаётся способ
|
|
39
|
-
* сериализации
|
|
40
|
-
*/
|
|
41
|
-
export const X_FORMAT_HEADER = 'X-Format';
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Сериализация по умолчанию (protobuf)
|
|
45
|
-
*/
|
|
46
|
-
export const DEFAULT_PAYLOAD_FORMAT = PayloadFormat.PROTOBUF;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Заголовок в nats, через который передаётся тип сообщения
|
|
50
|
-
*/
|
|
51
|
-
export const X_TYPE_HEADER = 'X-Type';
|