arvo-core 1.1.2 → 1.1.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/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ import { exceptionToSpan, logToSpan, OTelNull, currentOpenTelemetryHeaders } fro
6
6
  import { OpenTelemetryHeaders, TelemetryLogLevel } from './OpenTelemetry/types';
7
7
  import { validateURI, cleanString } from './utils';
8
8
  import ArvoContract from './ArvoContract';
9
- import { createArvoContract, InferArvoContract } from './ArvoContract/helpers';
9
+ import { createArvoContract, InferArvoContract as InferArvoContractType } from './ArvoContract/helpers';
10
10
  import { ArvoContractValidators } from './ArvoContract/validators';
11
11
  import { ArvoContractRecord, IArvoContract, ResolveArvoContractRecord, ArvoContractJSONSchema } from './ArvoContract/types';
12
12
  import ArvoContractLibrary from './ArvoContractLibrary';
@@ -23,6 +23,7 @@ import { ArvoOrchestrationSubjectContentSchema, ArvoOchestratorVersionSchema } f
23
23
  import { ArvoOrchestrationSubjectContent, ArvoOchestratorVersion } from './ArvoOrchestrationSubject/type';
24
24
  import ArvoEventHttp from './ArvoEventHttp';
25
25
  import { ArvoEventHttpConfig } from './ArvoEventHttp/types';
26
+ import { InferArvoContract, InferArvoEvent } from './types';
26
27
  /**
27
28
  * Collection of Zod schemas for validating various aspects of Arvo events.
28
29
  * @property {z.ZodObject} CloudEventContextSchema - Schema for core CloudEvent properties.
@@ -89,4 +90,4 @@ declare const ArvoEventSchemas: {
89
90
  tracestate: string | null;
90
91
  }>;
91
92
  };
92
- export { ArvoEventHttpConfig, ArvoEventHttp, ArvoEvent, createArvoEvent, ArvoDataContentType, ArvoEventData, CloudEventExtension, ArvoEventSchemas, CloudEventContext, ArvoExtension, OpenTelemetryExtension, CreateArvoEvent, exceptionToSpan, logToSpan, OpenTelemetryHeaders, TelemetryLogLevel, OTelNull, validateURI, cleanString, ArvoContract, createArvoContract, ArvoContractValidators, ArvoContractRecord, InferArvoContract, IArvoContract, ResolveArvoContractRecord, ArvoContractLibrary, createArvoContractLibrary, ArvoEventFactory, createArvoEventFactory, ArvoErrorSchema, currentOpenTelemetryHeaders, OpenInference, OpenInferenceSpanKind, ArvoExecution, ArvoExecutionSpanKind, ArvoContractJSONSchema, ArvoOrchestrationSubject, ArvoOrchestrationSubjectContentSchema, ArvoOchestratorVersionSchema, ArvoOrchestrationSubjectContent, ArvoOchestratorVersion, };
93
+ export { ArvoEventHttpConfig, ArvoEventHttp, ArvoEvent, createArvoEvent, ArvoDataContentType, ArvoEventData, CloudEventExtension, ArvoEventSchemas, CloudEventContext, ArvoExtension, OpenTelemetryExtension, CreateArvoEvent, exceptionToSpan, logToSpan, OpenTelemetryHeaders, TelemetryLogLevel, OTelNull, validateURI, cleanString, ArvoContract, createArvoContract, ArvoContractValidators, ArvoContractRecord, IArvoContract, ResolveArvoContractRecord, ArvoContractLibrary, createArvoContractLibrary, ArvoEventFactory, createArvoEventFactory, ArvoErrorSchema, currentOpenTelemetryHeaders, OpenInference, OpenInferenceSpanKind, ArvoExecution, ArvoExecutionSpanKind, ArvoContractJSONSchema, ArvoOrchestrationSubject, ArvoOrchestrationSubjectContentSchema, ArvoOchestratorVersionSchema, ArvoOrchestrationSubjectContent, ArvoOchestratorVersion, InferArvoEvent, InferArvoContract, InferArvoContractType, };
@@ -0,0 +1,71 @@
1
+ import { z } from 'zod';
2
+ import ArvoContract from './ArvoContract';
3
+ import ArvoEvent from './ArvoEvent';
4
+ import { ArvoExtension, OpenTelemetryExtension } from './ArvoEvent/types';
5
+ /**
6
+ * A type utility that infers the structure of an ArvoEvent.
7
+ *
8
+ * @template T - The type to infer from, expected to be an ArvoEvent.
9
+ *
10
+ * @returns An object type that includes all properties of an ArvoEvent,
11
+ * including its data, extensions, and standard CloudEvents properties.
12
+ *
13
+ * @example
14
+ * type MyEvent = InferArvoEvent<ArvoEvent<{ message: string }, { customField: number }, 'my.event.type'>>;
15
+ * // MyEvent will have properties like id, source, data.message, customField, etc.
16
+ */
17
+ export type InferArvoEvent<T> = T extends ArvoEvent<infer TData, infer TExtension, infer TType> ? {
18
+ /** Unique identifier of the event */
19
+ id: string;
20
+ /** Identifies the context in which an event happened */
21
+ source: string;
22
+ /** The version of the CloudEvents specification */
23
+ specversion: string;
24
+ /** Describes the type of event related to the originating occurrence */
25
+ type: TType;
26
+ /** Describes the subject of the event in the context of the event producer */
27
+ subject: string;
28
+ /** Content type of the data value */
29
+ datacontenttype: string;
30
+ /** A link to the schema that the data adheres to */
31
+ dataschema: string | null;
32
+ /** Event payload */
33
+ data: TData;
34
+ /** Timestamp of when the occurrence happened */
35
+ time: string;
36
+ } & ArvoExtension & OpenTelemetryExtension & TExtension : never;
37
+ /**
38
+ * Helper type to infer the TypeScript type from a Zod schema.
39
+ *
40
+ * @template T - The Zod schema type to infer from.
41
+ *
42
+ * @returns The TypeScript type that corresponds to the Zod schema.
43
+ *
44
+ * @example
45
+ * const mySchema = z.object({ name: z.string(), age: z.number() });
46
+ * type MyType = InferZodSchema<typeof mySchema>;
47
+ * // MyType will be { name: string; age: number; }
48
+ */
49
+ type InferZodSchema<T> = T extends z.ZodTypeAny ? z.infer<T> : never;
50
+ /**
51
+ * A type utility that infers the structure of an ArvoContract.
52
+ *
53
+ * @template T - The type to infer from, expected to be an ArvoContract.
54
+ *
55
+ * @returns An object type that includes the URI, accepted event type, and emitted event types of the contract.
56
+ *
57
+ * @example
58
+ * const myContract = new ArvoContract('my-uri', 'my-type', z.object({ input: z.string() }), {
59
+ * 'output.event': z.object({ result: z.number() })
60
+ * });
61
+ * type MyContractType = InferArvoContract<typeof myContract>;
62
+ * // MyContractType will have properties uri, accepts, and emits
63
+ */
64
+ export type InferArvoContract<T extends ArvoContract<string, string, z.ZodTypeAny, Record<string, z.ZodTypeAny>>> = T extends ArvoContract<infer TUri, infer TType, infer TAcceptSchema, infer TEmits> ? {
65
+ uri: TUri;
66
+ accepts: InferArvoEvent<ArvoEvent<InferZodSchema<TAcceptSchema>, {}, TType>>;
67
+ emits: {
68
+ [K in keyof TEmits]: InferArvoEvent<ArvoEvent<InferZodSchema<TEmits[K]>, {}, K & string>>;
69
+ };
70
+ } : never;
71
+ export {};
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arvo-core",
3
- "version": "1.1.2",
3
+ "version": "1.1.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": {