@rsdk/kafka.producer.direct 3.0.1-next.0 → 3.1.0-next.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/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
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
+ ## [3.1.0-next.0](https://github.com/R-Vision/rsdk/compare/v3.0.2...v3.1.0-next.0) (2023-08-08)
7
+
8
+ ### Features
9
+
10
+ * **kafka:** added option to consume by topic name ([#93](https://github.com/R-Vision/rsdk/issues/93)) ([09b4c1b](https://github.com/R-Vision/rsdk/commit/09b4c1bd515c1c2c3ccda17851fbe79e64ea8ac5))
11
+
12
+ ## [3.0.2](https://github.com/R-Vision/rsdk/compare/v3.0.1...v3.0.2) (2023-08-07)
13
+
14
+ **Note:** Version bump only for package @rsdk/kafka.producer.direct
15
+
16
+ ## [3.0.1](https://github.com/R-Vision/rsdk/compare/v3.0.0...v3.0.1) (2023-08-07)
17
+
18
+ ### Bug Fixes
19
+
20
+ * **deps:** correctly peerDependencies ([349628f](https://github.com/R-Vision/rsdk/commit/349628f10da46a30d6c8b9f9387e010869318212))
21
+
6
22
  ## [3.0.1-next.0](https://github.com/R-Vision/rsdk/compare/v3.0.0...v3.0.1-next.0) (2023-08-07)
7
23
 
8
24
  ### Bug Fixes
@@ -2,13 +2,13 @@ import type { EventType } from '@rsdk/kafka.common';
2
2
  import type { KafkaProducer, PublishOptions } from '@rsdk/kafka.producer';
3
3
  import { BaseProducer } from '@rsdk/kafka.producer';
4
4
  import type { Producer } from 'kafkajs';
5
- export declare class DirectProducer<T extends EventType> extends BaseProducer<T> implements KafkaProducer<T> {
5
+ export declare class DirectProducer<T extends EventType, P = T extends EventType<infer P> ? P : never> extends BaseProducer<T, P> implements KafkaProducer<P> {
6
6
  readonly eventType: T;
7
7
  private readonly client;
8
8
  static logger: import("@rsdk/logging").ILogger;
9
9
  constructor(eventType: T, client: Producer);
10
10
  static getTopicName(eventType: EventType): string;
11
- publish(payload: T, options?: PublishOptions): Promise<void>;
11
+ publish(payload: P, options?: PublishOptions): Promise<void>;
12
12
  private getMessage;
13
13
  private getPayload;
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"direct.producer.js","sourceRoot":"","sources":["../src/direct.producer.ts"],"names":[],"mappings":";;;AACA,qDAAiE;AAEjE,yDAAoD;AACpD,2CAA8C;AAE9C,6CAAyC;AAEzC,MAAa,cACX,SAAQ,6BAAe;IAMH;IACD;IAJnB,MAAM,CAAC,MAAM,GAAG,uBAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAErD,YACoB,SAAY,EACb,MAAgB;QAEjC,KAAK,CAAC,SAAS,CAAC,CAAC;QAHC,cAAS,GAAT,SAAS,CAAG;QACb,WAAM,GAAN,MAAM,CAAU;IAGnC,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,SAAoB;QACtC,OAAO,UAAU,SAAS,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAU,EAAE,OAAwB;QAChD,MAAM,SAAS,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE9D,IAAI;YACF,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACrB,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;aAC9C,CAAC,CAAC;SACJ;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,0CAA2B,CAC7B,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAC3C;gBACE,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,OAAO;aACjB,CACF,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SACvB;IACH,CAAC;IAEO,UAAU,CAAC,OAAU,EAAE,OAAwB;QACrD,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,EAAE,IAAA,wBAAU,GAAE;gBAChB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;gBAC1B,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI;oBACvB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;iBAC3C,CAAC;aACH;YACD,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;gBAClB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC3C,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;aAC3C,CAAC;YACF,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;SAC5D,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,OAAU,EAAE,OAAwB;QACrD,OAAO,OAAO,EAAE,YAAY;YAC1B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;YAC9B,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACvE,CAAC;;AAzDH,wCA0DC"}
1
+ {"version":3,"file":"direct.producer.js","sourceRoot":"","sources":["../src/direct.producer.ts"],"names":[],"mappings":";;;AACA,qDAAiE;AAEjE,yDAAoD;AACpD,2CAA8C;AAE9C,6CAAyC;AAEzC,MAAa,cAIX,SAAQ,6BAAkB;IAMN;IACD;IAJnB,MAAM,CAAC,MAAM,GAAG,uBAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAErD,YACoB,SAAY,EACb,MAAgB;QAEjC,KAAK,CAAC,SAAS,CAAC,CAAC;QAHC,cAAS,GAAT,SAAS,CAAG;QACb,WAAM,GAAN,MAAM,CAAU;IAGnC,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,SAAoB;QACtC,OAAO,UAAU,SAAS,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAU,EAAE,OAAwB;QAChD,MAAM,SAAS,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE9D,IAAI;YACF,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACrB,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;aAC9C,CAAC,CAAC;SACJ;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,0CAA2B,CAC7B,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAC3C;gBACE,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,OAAO;aACjB,CACF,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SACvB;IACH,CAAC;IAEO,UAAU,CAAC,OAAU,EAAE,OAAwB;QACrD,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,EAAE,IAAA,wBAAU,GAAE;gBAChB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;gBAC1B,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI;oBACvB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;iBAC3C,CAAC;aACH;YACD,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;gBAClB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC3C,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;aAC3C,CAAC;YACF,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;SAC5D,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,OAAU,EAAE,OAAwB;QACrD,OAAO,OAAO,EAAE,YAAY;YAC1B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;YAC9B,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACvE,CAAC;;AA5DH,wCA6DC"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.kafkaProducerDirectAutodocResolver = exports.KafkaProducerDirectAutodocResolver = void 0;
4
4
  const autodoc_protocol_1 = require("@rsdk/autodoc.protocol");
5
+ const kafka_common_1 = require("@rsdk/kafka.common");
5
6
  const constants_1 = require("../constants");
6
7
  class KafkaProducerDirectAutodocResolver {
7
8
  getNode(rsdkMetadataProvider) {
@@ -9,11 +10,13 @@ class KafkaProducerDirectAutodocResolver {
9
10
  if (!resources) {
10
11
  return null;
11
12
  }
12
- return new autodoc_protocol_1.Composite(new autodoc_protocol_1.Table(resources.map((resource) => {
13
+ return new autodoc_protocol_1.Composite(new autodoc_protocol_1.Table(resources
14
+ .filter((resource) => resource.value.type === kafka_common_1.KafkaTopicType.Produce)
15
+ .map((resource) => {
13
16
  const { topicName, group: group, partitionKeyField, eventType, } = resource.value;
14
17
  return {
15
18
  TopicName: topicName,
16
- Group: group,
19
+ Group: group ?? '-',
17
20
  PartitionKeyField: partitionKeyField ?? '-',
18
21
  EventType: eventType?.$type ?? '-',
19
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"autodoc.resolver.js","sourceRoot":"","sources":["../../src/metadata/autodoc.resolver.ts"],"names":[],"mappings":";;;AACA,6DAA0D;AAI1D,4CAAkE;AAElE,MAAa,kCAAkC;IAC7C,OAAO,CAAC,oBAA0C;QAChD,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CACxC,8CAAkC,CACnC,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,4BAAS,CAClB,IAAI,wBAAK,CACP,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACzB,MAAM,EACJ,SAAS,EACT,KAAK,EAAE,KAAK,EACZ,iBAAiB,EACjB,SAAS,GACV,GAAG,QAAQ,CAAC,KAAK,CAAC;YAEnB,OAAO;gBACL,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,KAAK;gBACZ,iBAAiB,EAAE,iBAAiB,IAAI,GAAG;gBAC3C,SAAS,EAAE,SAAS,EAAE,KAAK,IAAI,GAAG;aACnC,CAAC;QACJ,CAAC,CAAC,CACH,EACD,uBAAuB,CACxB,CAAC;IACJ,CAAC;CACF;AA/BD,gFA+BC;AAEY,QAAA,kCAAkC,GAC7C,IAAI,kCAAkC,EAAE,CAAC"}
1
+ {"version":3,"file":"autodoc.resolver.js","sourceRoot":"","sources":["../../src/metadata/autodoc.resolver.ts"],"names":[],"mappings":";;;AACA,6DAA0D;AAE1D,qDAAoD;AAIpD,4CAAkE;AAElE,MAAa,kCAAkC;IAC7C,OAAO,CAAC,oBAA0C;QAChD,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CACxC,8CAAkC,CACnC,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,4BAAS,CAClB,IAAI,wBAAK,CACP,SAAS;aACN,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,6BAAc,CAAC,OAAO,CAAC;aACpE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChB,MAAM,EACJ,SAAS,EACT,KAAK,EAAE,KAAK,EACZ,iBAAiB,EACjB,SAAS,GACV,GAAkC,QAAQ,CAAC,KAAK,CAAC;YAElD,OAAO;gBACL,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,KAAK,IAAI,GAAG;gBACnB,iBAAiB,EAAE,iBAAiB,IAAI,GAAG;gBAC3C,SAAS,EAAE,SAAS,EAAE,KAAK,IAAI,GAAG;aACnC,CAAC;QACJ,CAAC,CAAC,CACL,EACD,uBAAuB,CACxB,CAAC;IACJ,CAAC;CACF;AAjCD,gFAiCC;AAEY,QAAA,kCAAkC,GAC7C,IAAI,kCAAkC,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/kafka.producer.direct",
3
- "version": "3.0.1-next.0",
3
+ "version": "3.1.0-next.0",
4
4
  "description": "Publishing messages directly to kafka",
5
5
  "license": "Apache License 2.0",
6
6
  "publishConfig": {
@@ -13,17 +13,17 @@
13
13
  "peerDependencies": {
14
14
  "@nestjs/common": "^10.1.3",
15
15
  "@nestjs/microservices": "^10.1.3",
16
- "@rsdk/autodoc.protocol": "^3.0.0",
17
- "@rsdk/common": "^3.0.0",
18
- "@rsdk/core": "^3.0.1-next.0",
19
- "@rsdk/kafka.common": "^3.0.1-next.0",
20
- "@rsdk/kafka.producer": "^3.0.1-next.0",
21
- "@rsdk/logging": "^3.0.0",
22
- "@rsdk/metadata": "^3.0.0",
16
+ "@rsdk/autodoc.protocol": "^3.1.0-next.0",
17
+ "@rsdk/common": "^3.1.0-next.0",
18
+ "@rsdk/core": "^3.1.0-next.0",
19
+ "@rsdk/kafka.common": "^3.1.0-next.0",
20
+ "@rsdk/kafka.producer": "^3.1.0-next.0",
21
+ "@rsdk/logging": "^3.1.0-next.0",
22
+ "@rsdk/metadata": "^3.1.0-next.0",
23
23
  "kafkajs": "^2.2.4"
24
24
  },
25
25
  "dependencies": {
26
26
  "lodash": "^4.17.21"
27
27
  },
28
- "gitHead": "fc4e33568c2e79d62977fc6e17175e08893cb196"
28
+ "gitHead": "55598931db264fb6d5b5c4787c48298ed86bbc0d"
29
29
  }
@@ -6,9 +6,12 @@ import { LoggerFactory } from '@rsdk/logging';
6
6
  import type { Message, Producer } from 'kafkajs';
7
7
  import { randomUUID } from 'node:crypto';
8
8
 
9
- export class DirectProducer<T extends EventType>
10
- extends BaseProducer<T>
11
- implements KafkaProducer<T>
9
+ export class DirectProducer<
10
+ T extends EventType,
11
+ P = T extends EventType<infer P> ? P : never,
12
+ >
13
+ extends BaseProducer<T, P>
14
+ implements KafkaProducer<P>
12
15
  {
13
16
  static logger = LoggerFactory.create(DirectProducer);
14
17
 
@@ -23,7 +26,7 @@ export class DirectProducer<T extends EventType>
23
26
  return `events.${eventType.$group}`;
24
27
  }
25
28
 
26
- async publish(payload: T, options?: PublishOptions): Promise<void> {
29
+ async publish(payload: P, options?: PublishOptions): Promise<void> {
27
30
  const topicName = DirectProducer.getTopicName(this.eventType);
28
31
 
29
32
  try {
@@ -42,7 +45,7 @@ export class DirectProducer<T extends EventType>
42
45
  }
43
46
  }
44
47
 
45
- private getMessage(payload: T, options?: PublishOptions): Message {
48
+ private getMessage(payload: P, options?: PublishOptions): Message {
46
49
  return {
47
50
  headers: {
48
51
  id: randomUUID(),
@@ -59,7 +62,7 @@ export class DirectProducer<T extends EventType>
59
62
  };
60
63
  }
61
64
 
62
- private getPayload(payload: T, options?: PublishOptions): string {
65
+ private getPayload(payload: P, options?: PublishOptions): string {
63
66
  return options?.partitionKey
64
67
  ? String(options.partitionKey)
65
68
  : this.getPartitionKey(payload, this.eventType.$partitionKeyField);
@@ -1,6 +1,8 @@
1
1
  import type { DocumentResolver } from '@rsdk/autodoc.protocol';
2
2
  import { Composite, Table } from '@rsdk/autodoc.protocol';
3
3
  import type { KafkaTopicMetadata } from '@rsdk/kafka.common';
4
+ import { KafkaTopicType } from '@rsdk/kafka.common';
5
+ import type { KafkaTopicMetadataByEventType } from '@rsdk/kafka.common/dist/metadata/kafka.metadata';
4
6
  import type { RsdkMetadataProvider } from '@rsdk/metadata';
5
7
 
6
8
  import { KAFKA_PRODUCED_RSDK_METADATA_SCOPE } from '../constants';
@@ -17,21 +19,23 @@ export class KafkaProducerDirectAutodocResolver implements DocumentResolver {
17
19
 
18
20
  return new Composite(
19
21
  new Table(
20
- resources.map((resource) => {
21
- const {
22
- topicName,
23
- group: group,
24
- partitionKeyField,
25
- eventType,
26
- } = resource.value;
22
+ resources
23
+ .filter((resource) => resource.value.type === KafkaTopicType.Produce)
24
+ .map((resource) => {
25
+ const {
26
+ topicName,
27
+ group: group,
28
+ partitionKeyField,
29
+ eventType,
30
+ } = <KafkaTopicMetadataByEventType>resource.value;
27
31
 
28
- return {
29
- TopicName: topicName,
30
- Group: group,
31
- PartitionKeyField: partitionKeyField ?? '-',
32
- EventType: eventType?.$type ?? '-',
33
- };
34
- }),
32
+ return {
33
+ TopicName: topicName,
34
+ Group: group ?? '-',
35
+ PartitionKeyField: partitionKeyField ?? '-',
36
+ EventType: eventType?.$type ?? '-',
37
+ };
38
+ }),
35
39
  ),
36
40
  'Kafka producer direct',
37
41
  );