@hastehaul/common 1.0.13 → 1.0.15

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.
Files changed (68) hide show
  1. package/build/connections-wrappers/nats-wrapper.d.ts +19 -0
  2. package/build/connections-wrappers/nats-wrapper.js +19 -0
  3. package/build/errors/bad-request-error.d.ts +24 -2
  4. package/build/errors/bad-request-error.js +22 -0
  5. package/build/errors/custom-error.d.ts +24 -0
  6. package/build/errors/custom-error.js +11 -0
  7. package/build/errors/database-error.d.ts +24 -2
  8. package/build/errors/database-error.js +23 -1
  9. package/build/errors/index.d.ts +25 -0
  10. package/build/errors/index.js +26 -0
  11. package/build/errors/not-found-error.d.ts +24 -2
  12. package/build/errors/not-found-error.js +22 -0
  13. package/build/errors/system-error.d.ts +25 -2
  14. package/build/errors/system-error.js +24 -1
  15. package/build/events/base/base-consumer.d.ts +57 -0
  16. package/build/events/base/base-consumer.js +33 -0
  17. package/build/events/base/base-publisher.d.ts +19 -0
  18. package/build/events/base/base-publisher.js +13 -0
  19. package/build/events/base/base-stream.d.ts +21 -0
  20. package/build/events/base/base-stream.js +12 -0
  21. package/build/events/base/index.d.ts +21 -0
  22. package/build/events/base/index.js +38 -0
  23. package/build/events/common/enums/durable-names/index.d.ts +5 -0
  24. package/build/events/common/enums/durable-names/order-dname.d.ts +12 -0
  25. package/build/events/common/enums/durable-names/order-dname.js +12 -0
  26. package/build/events/common/enums/durable-names/payment-dname.d.ts +9 -0
  27. package/build/events/common/enums/durable-names/payment-dname.js +9 -0
  28. package/build/events/common/enums/index.d.ts +15 -0
  29. package/build/events/common/enums/index.js +16 -0
  30. package/build/events/common/enums/streams/index.d.ts +5 -0
  31. package/build/events/common/enums/streams/order-stream.d.ts +6 -0
  32. package/build/events/common/enums/streams/order-stream.js +6 -0
  33. package/build/events/common/enums/streams/payment-stream.d.ts +6 -0
  34. package/build/events/common/enums/streams/payment-stream.js +6 -0
  35. package/build/events/common/enums/subjects/index.d.ts +5 -0
  36. package/build/events/common/enums/subjects/main-subjects.d.ts +29 -0
  37. package/build/events/common/enums/subjects/main-subjects.js +11 -0
  38. package/build/events/common/enums/subjects/order-subjects.d.ts +12 -0
  39. package/build/events/common/enums/subjects/order-subjects.js +12 -0
  40. package/build/events/common/enums/subjects/payment-subjects.d.ts +9 -0
  41. package/build/events/common/enums/subjects/payment-subjects.js +9 -0
  42. package/build/events/common/index.d.ts +14 -0
  43. package/build/events/common/index.js +31 -0
  44. package/build/events/common/interfaces/index.d.ts +13 -0
  45. package/build/events/common/interfaces/index.js +33 -0
  46. package/build/events/common/interfaces/order-events-interfaces/index.d.ts +18 -0
  47. package/build/events/common/interfaces/order-events-interfaces/index.js +35 -0
  48. package/build/events/common/interfaces/order-events-interfaces/order-cancelled-event.d.ts +36 -0
  49. package/build/events/common/interfaces/order-events-interfaces/order-completed-event.d.ts +36 -0
  50. package/build/events/common/interfaces/order-events-interfaces/order-requested-event.d.ts +36 -0
  51. package/build/events/common/interfaces/payment-event-interfaces/index.d.ts +0 -0
  52. package/build/events/common/interfaces/payment-event-interfaces/index.js +3 -0
  53. package/build/events/common/interfaces/stream-interfaces/index.d.ts +1 -0
  54. package/build/events/common/interfaces/stream-interfaces/index.js +18 -0
  55. package/build/events/common/interfaces/stream-interfaces/order-stream-interface.d.ts +17 -0
  56. package/build/events/index.d.ts +14 -0
  57. package/build/events/index.js +31 -0
  58. package/build/index.d.ts +1 -0
  59. package/build/index.js +1 -0
  60. package/build/utils/base_classes/index.d.ts +18 -0
  61. package/build/utils/base_classes/index.js +19 -0
  62. package/build/utils/base_classes/listeners/base-namespace.d.ts +15 -0
  63. package/build/utils/base_classes/listeners/base-namespace.js +7 -0
  64. package/build/utils/enums.d.ts +1 -1
  65. package/build/utils/enums.js +1 -1
  66. package/build/utils/index.d.ts +18 -0
  67. package/build/utils/index.js +19 -0
  68. package/package.json +1 -1
@@ -1,8 +1,27 @@
1
1
  import { ConnectionOptions, NatsConnection } from 'nats';
2
+ /**
3
+ * A wrapper class for the NATS client to manage connections and provide a centralized client instance.
4
+ */
2
5
  declare class NatsWrapper {
3
6
  private _client?;
7
+ /**
8
+ * Get the NATS client instance.
9
+ *
10
+ * @throws {Error} - Throws an error if the NATS client is accessed before connecting.
11
+ * @returns {NatsConnection} - The NATS client instance.
12
+ */
4
13
  get client(): NatsConnection;
14
+ /**
15
+ * Connect to the NATS server using the specified connection options.
16
+ *
17
+ * The client instance will be stored in the `_client` property for later access.
18
+ *
19
+ * @param {ConnectionOptions} opts - The options for connecting to the NATS server.
20
+ */
5
21
  connect(opts?: ConnectionOptions): Promise<void>;
6
22
  }
23
+ /**
24
+ * Singleton instance of the NatsWrapper class to provide a centralized NATS client connection.
25
+ */
7
26
  export declare const natsWrapper: NatsWrapper;
8
27
  export {};
@@ -11,12 +11,28 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.natsWrapper = void 0;
13
13
  const nats_1 = require("nats");
14
+ /**
15
+ * A wrapper class for the NATS client to manage connections and provide a centralized client instance.
16
+ */
14
17
  class NatsWrapper {
18
+ /**
19
+ * Get the NATS client instance.
20
+ *
21
+ * @throws {Error} - Throws an error if the NATS client is accessed before connecting.
22
+ * @returns {NatsConnection} - The NATS client instance.
23
+ */
15
24
  get client() {
16
25
  if (!this._client)
17
26
  throw new Error("Cannot access NATS CLIENT before connecting");
18
27
  return this._client;
19
28
  }
29
+ /**
30
+ * Connect to the NATS server using the specified connection options.
31
+ *
32
+ * The client instance will be stored in the `_client` property for later access.
33
+ *
34
+ * @param {ConnectionOptions} opts - The options for connecting to the NATS server.
35
+ */
20
36
  connect(opts) {
21
37
  return __awaiter(this, void 0, void 0, function* () {
22
38
  try {
@@ -28,4 +44,7 @@ class NatsWrapper {
28
44
  });
29
45
  }
30
46
  }
47
+ /**
48
+ * Singleton instance of the NatsWrapper class to provide a centralized NATS client connection.
49
+ */
31
50
  exports.natsWrapper = new NatsWrapper();
@@ -1,10 +1,32 @@
1
1
  import { StatusCodes } from "../utils/enums";
2
2
  import { CustomError } from "./custom-error";
3
+ /**
4
+ * Class representing a "Bad Request" error.
5
+ *
6
+ * This error class extends the `CustomError` abstract class and provides specific error details for a "Bad Request" scenario.
7
+ * Instances of this class are thrown when the client's request is malformed or contains invalid data.
8
+ */
3
9
  export declare class BadRequestError extends CustomError {
4
10
  message: string;
11
+ /**
12
+ * The HTTP status code associated with the "Bad Request" error (400).
13
+ */
5
14
  statusCode: StatusCodes;
15
+ /**
16
+ * Constructs a new instance of the "Bad Request" error.
17
+ *
18
+ * @param {string} message - The error message providing details about the "Bad Request" error.
19
+ */
6
20
  constructor(message: string);
7
- serializeErrors(): {
21
+ /**
22
+ * Method to serialize the "Bad Request" error details into an array of error objects.
23
+ *
24
+ * This method returns an array containing a single error object with the error message provided during construction.
25
+ * The array format is consistent with the `CustomError` class's expectation for error serialization.
26
+ *
27
+ * @returns {Array<{ message: string }>} - An array containing a single error object with the error message.
28
+ */
29
+ serializeErrors(): Array<{
8
30
  message: string;
9
- }[];
31
+ }>;
10
32
  }
@@ -3,13 +3,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BadRequestError = void 0;
4
4
  const enums_1 = require("../utils/enums");
5
5
  const custom_error_1 = require("./custom-error");
6
+ /**
7
+ * Class representing a "Bad Request" error.
8
+ *
9
+ * This error class extends the `CustomError` abstract class and provides specific error details for a "Bad Request" scenario.
10
+ * Instances of this class are thrown when the client's request is malformed or contains invalid data.
11
+ */
6
12
  class BadRequestError extends custom_error_1.CustomError {
13
+ /**
14
+ * Constructs a new instance of the "Bad Request" error.
15
+ *
16
+ * @param {string} message - The error message providing details about the "Bad Request" error.
17
+ */
7
18
  constructor(message) {
8
19
  super(message);
9
20
  this.message = message;
21
+ /**
22
+ * The HTTP status code associated with the "Bad Request" error (400).
23
+ */
10
24
  this.statusCode = enums_1.StatusCodes.BAD_REQUEST;
11
25
  Object.setPrototypeOf(this, BadRequestError.prototype);
12
26
  }
27
+ /**
28
+ * Method to serialize the "Bad Request" error details into an array of error objects.
29
+ *
30
+ * This method returns an array containing a single error object with the error message provided during construction.
31
+ * The array format is consistent with the `CustomError` class's expectation for error serialization.
32
+ *
33
+ * @returns {Array<{ message: string }>} - An array containing a single error object with the error message.
34
+ */
13
35
  serializeErrors() {
14
36
  return [{ message: this.message }];
15
37
  }
@@ -1,6 +1,30 @@
1
+ /**
2
+ * Abstract class representing a custom error.
3
+ *
4
+ * This abstract class extends the base Error class and serves as a foundation for creating specific error classes for different types of errors.
5
+ * Classes that extend this abstract class must implement the `statusCode` property and the `serializeErrors` method.
6
+ */
1
7
  export declare abstract class CustomError extends Error {
8
+ /**
9
+ * The HTTP status code associated with the error.
10
+ *
11
+ * Classes extending `CustomError` must provide a value for this property.
12
+ */
2
13
  abstract statusCode: number;
14
+ /**
15
+ * Constructs a new instance of the custom error.
16
+ *
17
+ * @param {string} message - The error message.
18
+ */
3
19
  constructor(message?: string);
20
+ /**
21
+ * Abstract method that must be implemented in classes extending `CustomError`.
22
+ *
23
+ * This method returns an array of error objects containing error messages and optional field information.
24
+ * The specific implementation of this method depends on the type of custom error and how errors are serialized for responses.
25
+ *
26
+ * @returns {Array<{ message: string; field?: string }>} - An array of error objects containing error messages and optional field information.
27
+ */
4
28
  abstract serializeErrors(): {
5
29
  message: string;
6
30
  field?: string;
@@ -1,7 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CustomError = void 0;
4
+ /**
5
+ * Abstract class representing a custom error.
6
+ *
7
+ * This abstract class extends the base Error class and serves as a foundation for creating specific error classes for different types of errors.
8
+ * Classes that extend this abstract class must implement the `statusCode` property and the `serializeErrors` method.
9
+ */
4
10
  class CustomError extends Error {
11
+ /**
12
+ * Constructs a new instance of the custom error.
13
+ *
14
+ * @param {string} message - The error message.
15
+ */
5
16
  constructor(message) {
6
17
  super(message);
7
18
  Object.setPrototypeOf(this, CustomError.prototype);
@@ -1,9 +1,31 @@
1
1
  import { StatusCodes } from '../utils/enums';
2
2
  import { CustomError } from './custom-error';
3
+ /**
4
+ * Class representing a database-related error.
5
+ *
6
+ * This error class extends the `CustomError` abstract class and provides specific error details for database-related errors.
7
+ * Instances of this class are thrown when there are errors related to connecting to or interacting with the database.
8
+ */
3
9
  export declare class DatabaseError extends CustomError {
10
+ /**
11
+ * The HTTP status code associated with the database-related error (500 - Internal Server Error).
12
+ */
4
13
  statusCode: StatusCodes;
14
+ /**
15
+ * Constructs a new instance of the database-related error.
16
+ *
17
+ * @param {string} message - The error message providing details about the database-related error.
18
+ */
5
19
  constructor(message?: string);
6
- serializeErrors: () => {
20
+ /**
21
+ * Method to serialize the database-related error details into an array of error objects.
22
+ *
23
+ * This method returns an array containing a single error object with the error message provided during construction.
24
+ * The array format is consistent with the `CustomError` class's expectation for error serialization.
25
+ *
26
+ * @returns {Array<{ message: string }>} - An array containing a single error object with the error message.
27
+ */
28
+ serializeErrors: () => Array<{
7
29
  message: string;
8
- }[];
30
+ }>;
9
31
  }
@@ -3,10 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DatabaseError = void 0;
4
4
  const enums_1 = require("../utils/enums");
5
5
  const custom_error_1 = require("./custom-error");
6
+ /**
7
+ * Class representing a database-related error.
8
+ *
9
+ * This error class extends the `CustomError` abstract class and provides specific error details for database-related errors.
10
+ * Instances of this class are thrown when there are errors related to connecting to or interacting with the database.
11
+ */
6
12
  class DatabaseError extends custom_error_1.CustomError {
13
+ /**
14
+ * Constructs a new instance of the database-related error.
15
+ *
16
+ * @param {string} message - The error message providing details about the database-related error.
17
+ */
7
18
  constructor(message = "Error connecting to database") {
8
19
  super(message);
9
- this.statusCode = enums_1.StatusCodes.INTERNALE_SERVER_ERROR;
20
+ /**
21
+ * The HTTP status code associated with the database-related error (500 - Internal Server Error).
22
+ */
23
+ this.statusCode = enums_1.StatusCodes.INTERNAL_SERVER_ERROR;
24
+ /**
25
+ * Method to serialize the database-related error details into an array of error objects.
26
+ *
27
+ * This method returns an array containing a single error object with the error message provided during construction.
28
+ * The array format is consistent with the `CustomError` class's expectation for error serialization.
29
+ *
30
+ * @returns {Array<{ message: string }>} - An array containing a single error object with the error message.
31
+ */
10
32
  this.serializeErrors = () => [{ message: this.message }];
11
33
  Object.setPrototypeOf(this, DatabaseError.prototype);
12
34
  }
@@ -1,5 +1,30 @@
1
+ /**
2
+ * Re-exports the "BadRequestError" class from the "bad-request-error" file.
3
+ *
4
+ * The "BadRequestError" class represents a specific "Bad Request" error and is used to handle client requests with invalid or malformed data.
5
+ */
1
6
  export * from "./bad-request-error";
7
+ /**
8
+ * Re-exports the "CustomError" abstract class from the "custom-error" file.
9
+ *
10
+ * The "CustomError" abstract class serves as the foundation for creating specific error classes for different types of errors.
11
+ */
2
12
  export * from "./custom-error";
13
+ /**
14
+ * Re-exports the "DatabaseError" class from the "database-error" file.
15
+ *
16
+ * The "DatabaseError" class represents a specific error related to database operations or connectivity issues.
17
+ */
3
18
  export * from "./database-error";
19
+ /**
20
+ * Re-exports the "NotFoundError" class from the "not-found-error" file.
21
+ *
22
+ * The "NotFoundError" class represents a specific "Not Found" error and is used when a requested resource is not found.
23
+ */
4
24
  export * from "./not-found-error";
25
+ /**
26
+ * Re-exports the "SystemError" class from the "system-error" file.
27
+ *
28
+ * The "SystemError" class represents a specific "System Error" that can occur due to unexpected issues in the system.
29
+ */
5
30
  export * from "./system-error";
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ // Import and re-export custom error classes for easier access.
2
3
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
4
  if (k2 === undefined) k2 = k;
4
5
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -14,8 +15,33 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
15
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
16
  };
16
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
+ /**
19
+ * Re-exports the "BadRequestError" class from the "bad-request-error" file.
20
+ *
21
+ * The "BadRequestError" class represents a specific "Bad Request" error and is used to handle client requests with invalid or malformed data.
22
+ */
17
23
  __exportStar(require("./bad-request-error"), exports);
24
+ /**
25
+ * Re-exports the "CustomError" abstract class from the "custom-error" file.
26
+ *
27
+ * The "CustomError" abstract class serves as the foundation for creating specific error classes for different types of errors.
28
+ */
18
29
  __exportStar(require("./custom-error"), exports);
30
+ /**
31
+ * Re-exports the "DatabaseError" class from the "database-error" file.
32
+ *
33
+ * The "DatabaseError" class represents a specific error related to database operations or connectivity issues.
34
+ */
19
35
  __exportStar(require("./database-error"), exports);
36
+ /**
37
+ * Re-exports the "NotFoundError" class from the "not-found-error" file.
38
+ *
39
+ * The "NotFoundError" class represents a specific "Not Found" error and is used when a requested resource is not found.
40
+ */
20
41
  __exportStar(require("./not-found-error"), exports);
42
+ /**
43
+ * Re-exports the "SystemError" class from the "system-error" file.
44
+ *
45
+ * The "SystemError" class represents a specific "System Error" that can occur due to unexpected issues in the system.
46
+ */
21
47
  __exportStar(require("./system-error"), exports);
@@ -1,9 +1,31 @@
1
1
  import { StatusCodes } from "../utils/enums";
2
2
  import { CustomError } from "./custom-error";
3
+ /**
4
+ * Class representing a "Not Found" error.
5
+ *
6
+ * This error class extends the `CustomError` abstract class and provides specific error details for a "Not Found" scenario.
7
+ * Instances of this class are thrown when a requested resource is not found.
8
+ */
3
9
  export declare class NotFoundError extends CustomError {
10
+ /**
11
+ * The HTTP status code associated with the "Not Found" error (404).
12
+ */
4
13
  statusCode: StatusCodes;
14
+ /**
15
+ * Constructs a new instance of the "Not Found" error.
16
+ *
17
+ * @param {string} message - The error message providing details about the "Not Found" error.
18
+ */
5
19
  constructor(message: string);
6
- serializeErrors: () => {
20
+ /**
21
+ * Method to serialize the "Not Found" error details into an array of error objects.
22
+ *
23
+ * This method returns an array containing a single error object with the error message provided during construction.
24
+ * The array format is consistent with the `CustomError` class's expectation for error serialization.
25
+ *
26
+ * @returns {Array<{ message: string }>} - An array containing a single error object with the error message.
27
+ */
28
+ serializeErrors: () => Array<{
7
29
  message: string;
8
- }[];
30
+ }>;
9
31
  }
@@ -3,10 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NotFoundError = void 0;
4
4
  const enums_1 = require("../utils/enums");
5
5
  const custom_error_1 = require("./custom-error");
6
+ /**
7
+ * Class representing a "Not Found" error.
8
+ *
9
+ * This error class extends the `CustomError` abstract class and provides specific error details for a "Not Found" scenario.
10
+ * Instances of this class are thrown when a requested resource is not found.
11
+ */
6
12
  class NotFoundError extends custom_error_1.CustomError {
13
+ /**
14
+ * Constructs a new instance of the "Not Found" error.
15
+ *
16
+ * @param {string} message - The error message providing details about the "Not Found" error.
17
+ */
7
18
  constructor(message) {
8
19
  super(message);
20
+ /**
21
+ * The HTTP status code associated with the "Not Found" error (404).
22
+ */
9
23
  this.statusCode = enums_1.StatusCodes.NOT_FOUND;
24
+ /**
25
+ * Method to serialize the "Not Found" error details into an array of error objects.
26
+ *
27
+ * This method returns an array containing a single error object with the error message provided during construction.
28
+ * The array format is consistent with the `CustomError` class's expectation for error serialization.
29
+ *
30
+ * @returns {Array<{ message: string }>} - An array containing a single error object with the error message.
31
+ */
10
32
  this.serializeErrors = () => [{ message: this.message }];
11
33
  Object.setPrototypeOf(this, NotFoundError.prototype);
12
34
  }
@@ -1,9 +1,32 @@
1
1
  import { StatusCodes } from "../utils/enums";
2
2
  import { CustomError } from "./custom-error";
3
+ /**
4
+ * Class representing a "System Error".
5
+ *
6
+ * This error class extends the `CustomError` abstract class and provides specific error details for a "System Error".
7
+ * Instances of this class are thrown when there are unexpected issues in the system.
8
+ */
3
9
  export declare class SystemError extends CustomError {
10
+ /**
11
+ * The HTTP status code associated with the "System Error" (500 - Internal Server Error).
12
+ */
4
13
  statusCode: StatusCodes;
14
+ /**
15
+ * Constructs a new instance of the "System Error".
16
+ *
17
+ * @param {string} message - The error message providing details about the "System Error".
18
+ * If no message is provided, the default message "Something went wrong" is used.
19
+ */
5
20
  constructor(message?: string);
6
- serializeErrors: () => {
21
+ /**
22
+ * Method to serialize the "System Error" details into an array of error objects.
23
+ *
24
+ * This method returns an array containing a single error object with the error message provided during construction.
25
+ * The array format is consistent with the `CustomError` class's expectation for error serialization.
26
+ *
27
+ * @returns {Array<{ message: string }>} - An array containing a single error object with the error message.
28
+ */
29
+ serializeErrors: () => Array<{
7
30
  message: string;
8
- }[];
31
+ }>;
9
32
  }
@@ -3,10 +3,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SystemError = void 0;
4
4
  const enums_1 = require("../utils/enums");
5
5
  const custom_error_1 = require("./custom-error");
6
+ /**
7
+ * Class representing a "System Error".
8
+ *
9
+ * This error class extends the `CustomError` abstract class and provides specific error details for a "System Error".
10
+ * Instances of this class are thrown when there are unexpected issues in the system.
11
+ */
6
12
  class SystemError extends custom_error_1.CustomError {
13
+ /**
14
+ * Constructs a new instance of the "System Error".
15
+ *
16
+ * @param {string} message - The error message providing details about the "System Error".
17
+ * If no message is provided, the default message "Something went wrong" is used.
18
+ */
7
19
  constructor(message = "Something went wrong") {
8
20
  super(message);
9
- this.statusCode = enums_1.StatusCodes.INTERNALE_SERVER_ERROR;
21
+ /**
22
+ * The HTTP status code associated with the "System Error" (500 - Internal Server Error).
23
+ */
24
+ this.statusCode = enums_1.StatusCodes.INTERNAL_SERVER_ERROR;
25
+ /**
26
+ * Method to serialize the "System Error" details into an array of error objects.
27
+ *
28
+ * This method returns an array containing a single error object with the error message provided during construction.
29
+ * The array format is consistent with the `CustomError` class's expectation for error serialization.
30
+ *
31
+ * @returns {Array<{ message: string }>} - An array containing a single error object with the error message.
32
+ */
10
33
  this.serializeErrors = () => [{ message: this.message }];
11
34
  Object.setPrototypeOf(this, SystemError.prototype);
12
35
  }
@@ -1,26 +1,83 @@
1
1
  import { NatsConnection, ConsumerConfig, JsMsg } from "nats";
2
2
  import { DurableName, Subjects, Streams } from "../common/enums";
3
3
  import { MainSubjects, ValidateSubjectFormat } from "../common/enums/subjects/main-subjects";
4
+ /**
5
+ * Interface representing an event published to NATS.
6
+ */
4
7
  interface Event {
5
8
  subject: ValidateSubjectFormat<Subjects, MainSubjects>;
6
9
  durableName?: DurableName;
7
10
  stream: Streams;
8
11
  data: any;
9
12
  }
13
+ /**
14
+ * Abstract class representing a NATS consumer for processing messages from a JetStream stream.
15
+ *
16
+ * @typeparam {T} - The type of event to be consumed, extending the Event interface.
17
+ */
10
18
  export declare abstract class NatsConsumer<T extends Event> {
11
19
  protected client: NatsConnection;
12
20
  protected jc: import("nats").Codec<T>;
13
21
  protected sc: import("nats").Codec<string>;
22
+ /**
23
+ * The name of the JetStream stream to consume messages from.
24
+ */
14
25
  abstract stream: T["stream"];
26
+ /**
27
+ * The subject to filter messages for this consumer.
28
+ */
15
29
  abstract subject: T["subject"];
30
+ /**
31
+ * The name of the durable consumer, if applicable.
32
+ */
16
33
  abstract durableName: T["durableName"];
34
+ /**
35
+ * The maximum number of messages that can be processed concurrently.
36
+ */
17
37
  abstract maxConcurrentMessages: number;
18
38
  protected ackWait: number;
39
+ /**
40
+ * Creates an instance of NatsConsumer.
41
+ *
42
+ * @param {NatsConnection} client - The NATS connection instance.
43
+ */
19
44
  constructor(client: NatsConnection);
45
+ /**
46
+ * Provides the consumer options for JetStream.
47
+ *
48
+ * @returns {Partial<ConsumerConfig>} - The partial consumer options.
49
+ */
20
50
  get consumerOptions(): Partial<ConsumerConfig>;
51
+ /**
52
+ * Consume messages from the JetStream stream and process them concurrently.
53
+ *
54
+ * Messages are processed asynchronously up to the maximum concurrent limit.
55
+ */
21
56
  consume(): Promise<void>;
57
+ /**
58
+ * Abstract method to process a single message received from the stream.
59
+ *
60
+ * This method should be implemented by subclasses to define custom logic for processing messages.
61
+ *
62
+ * @param {T["data"]} data - The data representing the message payload.
63
+ * @param {JsMsg} msg - The message object received from the stream.
64
+ * @returns {Promise<void>} - A Promise that resolves once the message processing is completed successfully.
65
+ */
22
66
  abstract processMessage(data: T["data"], msg: JsMsg): Promise<void>;
67
+ /**
68
+ * Closes the NATS connection when message processing is finished.
69
+ *
70
+ * @protected
71
+ * @returns {Promise<void>} - A Promise that resolves once the NATS connection is drained and closed.
72
+ */
23
73
  protected close(): Promise<void>;
74
+ /**
75
+ * Utility method to parse the message data using the appropriate codec (JSON or string).
76
+ *
77
+ * @protected
78
+ * @param {JsMsg} msg - The message object received from the stream.
79
+ * @returns {T["data"]} - The parsed message data.
80
+ */
24
81
  protected parsedMessage: (msg: JsMsg) => string | T;
25
82
  }
26
83
  export {};
@@ -18,14 +18,36 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.NatsConsumer = void 0;
20
20
  const nats_1 = require("nats");
21
+ /**
22
+ * Abstract class representing a NATS consumer for processing messages from a JetStream stream.
23
+ *
24
+ * @typeparam {T} - The type of event to be consumed, extending the Event interface.
25
+ */
21
26
  class NatsConsumer {
27
+ /**
28
+ * Creates an instance of NatsConsumer.
29
+ *
30
+ * @param {NatsConnection} client - The NATS connection instance.
31
+ */
22
32
  constructor(client) {
23
33
  this.jc = (0, nats_1.JSONCodec)();
24
34
  this.sc = (0, nats_1.StringCodec)();
25
35
  this.ackWait = (0, nats_1.nanos)(5 * 1000);
36
+ /**
37
+ * Utility method to parse the message data using the appropriate codec (JSON or string).
38
+ *
39
+ * @protected
40
+ * @param {JsMsg} msg - The message object received from the stream.
41
+ * @returns {T["data"]} - The parsed message data.
42
+ */
26
43
  this.parsedMessage = (msg) => typeof msg.data === "string" ? this.sc.decode(msg.data) : this.jc.decode(msg.data);
27
44
  this.client = client;
28
45
  }
46
+ /**
47
+ * Provides the consumer options for JetStream.
48
+ *
49
+ * @returns {Partial<ConsumerConfig>} - The partial consumer options.
50
+ */
29
51
  get consumerOptions() {
30
52
  return {
31
53
  deliver_policy: nats_1.DeliverPolicy.All,
@@ -36,6 +58,11 @@ class NatsConsumer {
36
58
  filter_subject: this.subject,
37
59
  };
38
60
  }
61
+ /**
62
+ * Consume messages from the JetStream stream and process them concurrently.
63
+ *
64
+ * Messages are processed asynchronously up to the maximum concurrent limit.
65
+ */
39
66
  consume() {
40
67
  var _a, e_1, _b, _c;
41
68
  return __awaiter(this, void 0, void 0, function* () {
@@ -87,6 +114,12 @@ class NatsConsumer {
87
114
  }
88
115
  });
89
116
  }
117
+ /**
118
+ * Closes the NATS connection when message processing is finished.
119
+ *
120
+ * @protected
121
+ * @returns {Promise<void>} - A Promise that resolves once the NATS connection is drained and closed.
122
+ */
90
123
  close() {
91
124
  return __awaiter(this, void 0, void 0, function* () {
92
125
  yield this.client.drain();
@@ -1,14 +1,33 @@
1
1
  import { PubAck, NatsConnection } from "nats";
2
2
  import { Subjects } from "../common/enums";
3
3
  import { MainSubjects, ValidateSubjectFormat } from "../common/enums/subjects/main-subjects";
4
+ /**
5
+ * Interface representing an event to be published to NATS.
6
+ */
4
7
  interface Event {
5
8
  subject: ValidateSubjectFormat<Subjects, MainSubjects>;
6
9
  data: any;
7
10
  }
11
+ /**
12
+ * Abstract class representing a NATS publisher for publishing events to NATS.
13
+ *
14
+ * @typeparam {T} - The type of event to be published, extending the Event interface.
15
+ */
8
16
  export declare abstract class NatsPublisher<T extends Event> {
9
17
  private jc;
10
18
  private sc;
19
+ /**
20
+ * The subject representing the event type to be published.
21
+ */
11
22
  abstract subject: T["subject"];
23
+ /**
24
+ * Publishes an event to NATS using the provided NATS connection.
25
+ *
26
+ * @param {NatsConnection} nc - The NATS connection instance.
27
+ * @param {T["data"]} data - The data to be published as part of the event.
28
+ * @returns {Promise<PubAck>} - A Promise that resolves with the PubAck response from NATS.
29
+ * @throws {Error} - Throws an error if there is an issue while publishing the event.
30
+ */
12
31
  publish(nc: NatsConnection, data: T["data"]): Promise<PubAck>;
13
32
  }
14
33
  export {};