@rsdk/nats.common 5.8.0-next.0 → 5.8.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -9,3 +9,4 @@ export { DefaultNatsConfig } from './client/client.config';
9
9
  export { NatsClientPlugin } from './client/client.plugin';
10
10
  export { NatsStreamIndicatorModuleGenerator } from './stream-indicator/stream.indicator.generator';
11
11
  export { getStreamIndicatorKey } from './utils/get-stream-indicator-key.fn';
12
+ export { JSONMessageCodec, MessageCodec, MessagePayload, MessageType, ProtoMessageCodec, isMessageType, X_RESPONSE_FORMAT_HEADER, } from './message';
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ 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.getStreamIndicatorKey = exports.NatsStreamIndicatorModuleGenerator = exports.NatsClientPlugin = exports.DefaultNatsConfig = exports.handleNatsException = exports.NatsClientModule = exports.InjectNatsJetStreamClient = exports.InjectNatsClient = exports.NATS_TOPIC_RSDK_METADATA_SCOPE = exports.TopicType = exports.getSubjectName = exports.getStreamName = void 0;
17
+ exports.X_RESPONSE_FORMAT_HEADER = exports.isMessageType = exports.ProtoMessageCodec = exports.JSONMessageCodec = exports.getStreamIndicatorKey = exports.NatsStreamIndicatorModuleGenerator = exports.NatsClientPlugin = 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
18
  var get_stream_name_fn_1 = require("./utils/get-stream-name.fn");
19
19
  Object.defineProperty(exports, "getStreamName", { enumerable: true, get: function () { return get_stream_name_fn_1.getStreamName; } });
20
20
  var get_subject_name_fn_1 = require("./utils/get-subject-name.fn");
@@ -38,4 +38,9 @@ var stream_indicator_generator_1 = require("./stream-indicator/stream.indicator.
38
38
  Object.defineProperty(exports, "NatsStreamIndicatorModuleGenerator", { enumerable: true, get: function () { return stream_indicator_generator_1.NatsStreamIndicatorModuleGenerator; } });
39
39
  var get_stream_indicator_key_fn_1 = require("./utils/get-stream-indicator-key.fn");
40
40
  Object.defineProperty(exports, "getStreamIndicatorKey", { enumerable: true, get: function () { return get_stream_indicator_key_fn_1.getStreamIndicatorKey; } });
41
+ var message_1 = require("./message");
42
+ Object.defineProperty(exports, "JSONMessageCodec", { enumerable: true, get: function () { return message_1.JSONMessageCodec; } });
43
+ Object.defineProperty(exports, "ProtoMessageCodec", { enumerable: true, get: function () { return message_1.ProtoMessageCodec; } });
44
+ Object.defineProperty(exports, "isMessageType", { enumerable: true, get: function () { return message_1.isMessageType; } });
45
+ Object.defineProperty(exports, "X_RESPONSE_FORMAT_HEADER", { enumerable: true, get: function () { return message_1.X_RESPONSE_FORMAT_HEADER; } });
41
46
  //# 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":";;;;;;;;;;;;;;;;;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;AAC1B,wDAA0D;AAAjD,iHAAA,gBAAgB,OAAA;AACzB,4FAAmG;AAA1F,gJAAA,kCAAkC,OAAA;AAC3C,mFAA4E;AAAnE,oIAAA,qBAAqB,OAAA"}
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;AAC1B,wDAA0D;AAAjD,iHAAA,gBAAgB,OAAA;AACzB,4FAAmG;AAA1F,gJAAA,kCAAkC,OAAA;AAC3C,mFAA4E;AAAnE,oIAAA,qBAAqB,OAAA;AAC9B,qCAQmB;AAPjB,2GAAA,gBAAgB,OAAA;AAIhB,4GAAA,iBAAiB,OAAA;AACjB,wGAAA,aAAa,OAAA;AACb,mHAAA,wBAAwB,OAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './message.codec';
2
+ export * from './message.type';
3
+ export * from './message.const';
@@ -0,0 +1,20 @@
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
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./message.codec"), exports);
18
+ __exportStar(require("./message.type"), exports);
19
+ __exportStar(require("./message.const"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/message/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,iDAA+B;AAC/B,kDAAgC"}
@@ -0,0 +1,21 @@
1
+ import type { MessagePayload, MessageType } from './message.type';
2
+ export interface MessageCodec<E extends MessageType> {
3
+ decode<P extends MessagePayload<E> = MessagePayload<E>>(buffer: Buffer): P;
4
+ encode<P extends MessagePayload<E> = MessagePayload<E>>(payload: P): Buffer;
5
+ }
6
+ /**
7
+ * Protobuf-encoding strategy
8
+ */
9
+ export declare class ProtoMessageCodec<E extends MessageType> implements MessageCodec<E> {
10
+ readonly eventType: E;
11
+ constructor(eventType: E);
12
+ decode<P extends MessagePayload<E>>(buffer: Buffer): P;
13
+ encode<P extends MessagePayload<E>>(payload: P): Buffer;
14
+ }
15
+ /**
16
+ * JSON-encoding strategy
17
+ */
18
+ export declare class JSONMessageCodec<E extends MessageType> implements MessageCodec<E> {
19
+ decode<P extends MessagePayload<E>>(buffer: Buffer): P;
20
+ encode<P extends MessagePayload<E>>(payload: P): Buffer;
21
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JSONMessageCodec = exports.ProtoMessageCodec = void 0;
4
+ /**
5
+ * Protobuf-encoding strategy
6
+ */
7
+ class ProtoMessageCodec {
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.ProtoMessageCodec = ProtoMessageCodec;
20
+ /**
21
+ * JSON-encoding strategy
22
+ */
23
+ class JSONMessageCodec {
24
+ decode(buffer) {
25
+ return JSON.parse(buffer.toString());
26
+ }
27
+ encode(payload) {
28
+ return Buffer.from(JSON.stringify(payload));
29
+ }
30
+ }
31
+ exports.JSONMessageCodec = JSONMessageCodec;
32
+ //# sourceMappingURL=message.codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.codec.js","sourceRoot":"","sources":["../../src/message/message.codec.ts"],"names":[],"mappings":";;;AAQA;;GAEG;AACH,MAAa,iBAAiB;IAGP;IAArB,YAAqB,SAAY;QAAZ,cAAS,GAAT,SAAS,CAAG;IAAG,CAAC;IAErC,MAAM,CAA8B,MAAc;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAA8B,OAAU;QAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF;AAZD,8CAYC;AAED;;GAEG;AACH,MAAa,gBAAgB;IAG3B,MAAM,CAA8B,MAAc;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAA8B,OAAU;QAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,CAAC;CACF;AAVD,4CAUC"}
@@ -0,0 +1 @@
1
+ export declare const X_RESPONSE_FORMAT_HEADER = "X-Response-Format";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.X_RESPONSE_FORMAT_HEADER = void 0;
4
+ exports.X_RESPONSE_FORMAT_HEADER = 'X-Response-Format';
5
+ //# sourceMappingURL=message.const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.const.js","sourceRoot":"","sources":["../../src/message/message.const.ts"],"names":[],"mappings":";;;AAAa,QAAA,wBAAwB,GAAG,mBAAmB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Reader, Writer } from 'protobufjs/minimal';
2
+ /**
3
+ * Генерируется при компиляции proto-файлов
4
+ */
5
+ export interface MessageType<T = any> {
6
+ $type: string;
7
+ encode(message: T): Writer;
8
+ decode(data: Uint8Array | Reader): T;
9
+ }
10
+ /**
11
+ * Проверяет, является ли переданный тип MessageType
12
+ */
13
+ export declare const isMessageType: <T = any>(x: any) => x is MessageType<T>;
14
+ /**
15
+ * Выводит тип payload из <MessageType>
16
+ */
17
+ export type MessagePayload<E extends MessageType> = E extends MessageType<infer P> ? P : never;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isMessageType = void 0;
4
+ /**
5
+ * Проверяет, является ли переданный тип MessageType
6
+ */
7
+ const isMessageType = (x) => typeof x === 'object' &&
8
+ typeof x.$type === 'string' &&
9
+ Object.hasOwn(x, 'encode') &&
10
+ Object.hasOwn(x, 'decode');
11
+ exports.isMessageType = isMessageType;
12
+ //# sourceMappingURL=message.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.type.js","sourceRoot":"","sources":["../../src/message/message.type.ts"],"names":[],"mappings":";;;AAWA;;GAEG;AACI,MAAM,aAAa,GAAG,CAAU,CAAM,EAAuB,EAAE,CACpE,OAAO,CAAC,KAAK,QAAQ;IACrB,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;IAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC;IAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAJhB,QAAA,aAAa,iBAIG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/nats.common",
3
- "version": "5.8.0-next.0",
3
+ "version": "5.8.0-next.1",
4
4
  "description": "Common functionality for nats consumers and producers",
5
5
  "license": "Apache License 2.0",
6
6
  "publishConfig": {
@@ -27,5 +27,5 @@
27
27
  "lodash": "^4.17.21",
28
28
  "protobufjs": "^7.2.3"
29
29
  },
30
- "gitHead": "de5c3829f258c1b3365ada47cfc0ff691673b405"
30
+ "gitHead": "466ee102dcc2bce0b90df8f561c3e73d889c8468"
31
31
  }
package/src/index.ts CHANGED
@@ -18,3 +18,12 @@ export { DefaultNatsConfig } from './client/client.config';
18
18
  export { NatsClientPlugin } from './client/client.plugin';
19
19
  export { NatsStreamIndicatorModuleGenerator } from './stream-indicator/stream.indicator.generator';
20
20
  export { getStreamIndicatorKey } from './utils/get-stream-indicator-key.fn';
21
+ export {
22
+ JSONMessageCodec,
23
+ MessageCodec,
24
+ MessagePayload,
25
+ MessageType,
26
+ ProtoMessageCodec,
27
+ isMessageType,
28
+ X_RESPONSE_FORMAT_HEADER,
29
+ } from './message';
@@ -0,0 +1,3 @@
1
+ export * from './message.codec';
2
+ export * from './message.type';
3
+ export * from './message.const';
@@ -0,0 +1,39 @@
1
+ import type { MessagePayload, MessageType } from './message.type';
2
+
3
+ export interface MessageCodec<E extends MessageType> {
4
+ decode<P extends MessagePayload<E> = MessagePayload<E>>(buffer: Buffer): P;
5
+
6
+ encode<P extends MessagePayload<E> = MessagePayload<E>>(payload: P): Buffer;
7
+ }
8
+
9
+ /**
10
+ * Protobuf-encoding strategy
11
+ */
12
+ export class ProtoMessageCodec<E extends MessageType>
13
+ implements MessageCodec<E>
14
+ {
15
+ constructor(readonly eventType: E) {}
16
+
17
+ decode<P extends MessagePayload<E>>(buffer: Buffer): P {
18
+ return this.eventType.decode(buffer);
19
+ }
20
+
21
+ encode<P extends MessagePayload<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 JSONMessageCodec<E extends MessageType>
30
+ implements MessageCodec<E>
31
+ {
32
+ decode<P extends MessagePayload<E>>(buffer: Buffer): P {
33
+ return JSON.parse(buffer.toString());
34
+ }
35
+
36
+ encode<P extends MessagePayload<E>>(payload: P): Buffer {
37
+ return Buffer.from(JSON.stringify(payload));
38
+ }
39
+ }
@@ -0,0 +1 @@
1
+ export const X_RESPONSE_FORMAT_HEADER = 'X-Response-Format';
@@ -0,0 +1,25 @@
1
+ import type { Reader, Writer } from 'protobufjs/minimal';
2
+
3
+ /**
4
+ * Генерируется при компиляции proto-файлов
5
+ */
6
+ export interface MessageType<T = any> {
7
+ $type: string;
8
+ encode(message: T): Writer;
9
+ decode(data: Uint8Array | Reader): T;
10
+ }
11
+
12
+ /**
13
+ * Проверяет, является ли переданный тип MessageType
14
+ */
15
+ export const isMessageType = <T = any>(x: any): x is MessageType<T> =>
16
+ typeof x === 'object' &&
17
+ typeof x.$type === 'string' &&
18
+ Object.hasOwn(x, 'encode') &&
19
+ Object.hasOwn(x, 'decode');
20
+
21
+ /**
22
+ * Выводит тип payload из <MessageType>
23
+ */
24
+ export type MessagePayload<E extends MessageType> =
25
+ E extends MessageType<infer P> ? P : never;