arvo-core 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
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": {