arvo-core 1.0.2 → 1.0.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 CHANGED
@@ -8,3 +8,7 @@
8
8
 
9
9
  - Update ArvoContract description
10
10
 
11
+ ## [1.0.3] - 2024-08-31
12
+
13
+ - Making type in ArvoEvent a generic string for better type control
14
+
@@ -33,13 +33,13 @@ export default class ArvoContract<T extends string = string, TAccepts extends Ar
33
33
  get uri(): T;
34
34
  /**
35
35
  * Gets the accepted record type and schema.
36
- * @returns {Readonly<TAccepts>} The frozen accepts object.
36
+ * @returns {TAccepts} The frozen accepts object.
37
37
  */
38
38
  get accepts(): TAccepts;
39
39
  /**
40
40
  * Gets all emitted event types and schemas as a readonly record.
41
41
  * Use this when you need to access all emitted events at once.
42
- * @returns {Readonly<Record<ExtractEventType<TEmits>, TEmits>>} A frozen record of all emitted events.
42
+ * @returns {Record<ExtractEventType<TEmits>, TEmits>} A frozen record of all emitted events.
43
43
  */
44
44
  get emits(): Record<ExtractEventType<TEmits>, TEmits>;
45
45
  /**
@@ -47,7 +47,7 @@ export default class ArvoContract<T extends string = string, TAccepts extends Ar
47
47
  * Use this when you need to access a single emitted event by its type.
48
48
  * @template U - The type of the emit record to retrieve.
49
49
  * @param {U} type - The type of the emit record.
50
- * @returns {Readonly<Extract<TEmits, { type: U }>>} The emit record.
50
+ * @returns {Extract<TEmits, { type: U }>} The emit record.
51
51
  * @throws {Error} If the emit type is not found in the contract.
52
52
  */
53
53
  getEmit<U extends ExtractEventType<TEmits>>(type: U): Extract<TEmits, {
@@ -37,7 +37,7 @@ var ArvoContract = /** @class */ (function () {
37
37
  Object.defineProperty(ArvoContract.prototype, "accepts", {
38
38
  /**
39
39
  * Gets the accepted record type and schema.
40
- * @returns {Readonly<TAccepts>} The frozen accepts object.
40
+ * @returns {TAccepts} The frozen accepts object.
41
41
  */
42
42
  get: function () {
43
43
  return Object.freeze(this._accepts);
@@ -49,7 +49,7 @@ var ArvoContract = /** @class */ (function () {
49
49
  /**
50
50
  * Gets all emitted event types and schemas as a readonly record.
51
51
  * Use this when you need to access all emitted events at once.
52
- * @returns {Readonly<Record<ExtractEventType<TEmits>, TEmits>>} A frozen record of all emitted events.
52
+ * @returns {Record<ExtractEventType<TEmits>, TEmits>} A frozen record of all emitted events.
53
53
  */
54
54
  get: function () {
55
55
  return Object.freeze(this._emits.reduce(function (acc, emit) {
@@ -66,7 +66,7 @@ var ArvoContract = /** @class */ (function () {
66
66
  * Use this when you need to access a single emitted event by its type.
67
67
  * @template U - The type of the emit record to retrieve.
68
68
  * @param {U} type - The type of the emit record.
69
- * @returns {Readonly<Extract<TEmits, { type: U }>>} The emit record.
69
+ * @returns {Extract<TEmits, { type: U }>} The emit record.
70
70
  * @throws {Error} If the emit type is not found in the contract.
71
71
  */
72
72
  ArvoContract.prototype.getEmit = function (type) {
@@ -9,6 +9,7 @@ import { ArvoEventData, CloudEventExtension, CreateArvoEvent } from './types';
9
9
  *
10
10
  * @template TData - The type of the event data, extending ArvoEventData.
11
11
  * @template TExtension - The type of the cloud event extension, extending CloudEventExtension.
12
+ * @template TType - The type name of the event
12
13
  *
13
14
  * @param {CreateArvoEvent<TData>} event - The event data and metadata to create the ArvoEvent.
14
15
  * @param {TExtension} [extensions] - Optional cloud event extensions.
@@ -37,4 +38,4 @@ import { ArvoEventData, CloudEventExtension, CreateArvoEvent } from './types';
37
38
  * telemetryContext
38
39
  * );
39
40
  */
40
- export declare const createArvoEvent: <TData extends ArvoEventData, TExtension extends CloudEventExtension>(event: CreateArvoEvent<TData>, extensions?: TExtension, telemetry?: TelemetryContext) => ArvoEvent<TData, TExtension>;
41
+ export declare const createArvoEvent: <TData extends ArvoEventData, TExtension extends CloudEventExtension, TType extends string>(event: CreateArvoEvent<TData, TType>, extensions?: TExtension, telemetry?: TelemetryContext) => ArvoEvent<TData, TExtension>;
@@ -17,6 +17,7 @@ var uuid_1 = require("uuid");
17
17
  *
18
18
  * @template TData - The type of the event data, extending ArvoEventData.
19
19
  * @template TExtension - The type of the cloud event extension, extending CloudEventExtension.
20
+ * @template TType - The type name of the event
20
21
  *
21
22
  * @param {CreateArvoEvent<TData>} event - The event data and metadata to create the ArvoEvent.
22
23
  * @param {TExtension} [extensions] - Optional cloud event extensions.
@@ -3,12 +3,13 @@ import { ArvoEventData, ArvoExtension, CloudEventContext, CloudEventExtension, O
3
3
  * Represents an ArvoEvent, which extends the CloudEvent specification.
4
4
  * @template TData - The type of the event data, extending ArvoEventData.
5
5
  * @template TExtension - The type of additional extensions, extending CloudEventExtension.
6
+ * @template TType - The type name of the event
6
7
  */
7
- export default class ArvoEvent<TData extends ArvoEventData = ArvoEventData, TExtension extends CloudEventExtension = CloudEventExtension> {
8
+ export default class ArvoEvent<TData extends ArvoEventData = ArvoEventData, TExtension extends CloudEventExtension = CloudEventExtension, TType extends string = string> {
8
9
  readonly id: string;
9
10
  readonly source: string;
10
11
  readonly specversion: string;
11
- readonly type: string;
12
+ readonly type: TType;
12
13
  readonly subject: string;
13
14
  readonly datacontenttype: string;
14
15
  readonly dataschema: string | null;
@@ -36,7 +37,7 @@ export default class ArvoEvent<TData extends ArvoEventData = ArvoEventData, TExt
36
37
  id: string;
37
38
  source: string;
38
39
  specversion: string;
39
- type: string;
40
+ type: TType;
40
41
  subject: string;
41
42
  datacontenttype: string;
42
43
  dataschema: string | null;
@@ -77,7 +78,7 @@ export default class ArvoEvent<TData extends ArvoEventData = ArvoEventData, TExt
77
78
  'cloudevents.event_source': string;
78
79
  'cloudevents.event_spec_version': string;
79
80
  'cloudevents.event_subject': string;
80
- 'cloudevents.event_type': string;
81
+ 'cloudevents.event_type': string | TType;
81
82
  'cloudevents.event_time': string;
82
83
  'cloudevents.event_datacontenttype': string;
83
84
  'cloudevents.event_dataschema': string;
@@ -17,6 +17,7 @@ var OpenTelemetry_1 = require("../OpenTelemetry");
17
17
  * Represents an ArvoEvent, which extends the CloudEvent specification.
18
18
  * @template TData - The type of the event data, extending ArvoEventData.
19
19
  * @template TExtension - The type of additional extensions, extending CloudEventExtension.
20
+ * @template TType - The type name of the event
20
21
  */
21
22
  var ArvoEvent = /** @class */ (function () {
22
23
  /**
@@ -23,8 +23,9 @@ export type OpenTelemetryExtension = z.infer<typeof OpenTelemetryExtensionSchema
23
23
  /**
24
24
  * Represents the input parameters for creating an ArvoEvent.
25
25
  * @template TData - The type of the event data, extending ArvoEventData.
26
+ * @template TType - The type name of the event
26
27
  */
27
- export type CreateArvoEvent<TData extends ArvoEventData> = {
28
+ export type CreateArvoEvent<TData extends ArvoEventData, TType extends string> = {
28
29
  /** Unique identifier of the event. Must be a non-empty string. If not provided, a UUID will be generated. */
29
30
  id?: string;
30
31
  /** Timestamp of when the occurrence happened. Must be in ISO 8601 format with timezone offset. */
@@ -34,7 +35,7 @@ export type CreateArvoEvent<TData extends ArvoEventData> = {
34
35
  /** The version of the CloudEvents specification used. Must be '1.0' for this version. */
35
36
  specversion?: '1.0';
36
37
  /** Describes the type of event. Should be prefixed with a reverse-DNS name. */
37
- type: string;
38
+ type: TType;
38
39
  /** Identifies the subject of the event. For Arvo, this must be the Process Id. */
39
40
  subject: string;
40
41
  /** Content type of the data value. Must include 'application/cloudevents+json' or
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arvo-core",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "This core package contains all the core classes and components of the Arvo Event Driven System",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {