arvo-core 1.0.7 → 1.0.8
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/README.md +1 -0
- package/dist/ArvoContract/helpers.d.ts +7 -49
- package/dist/ArvoContract/helpers.js +7 -73
- package/dist/ArvoContract/index.d.ts +26 -27
- package/dist/ArvoContract/index.js +31 -24
- package/dist/ArvoContract/types.d.ts +6 -4
- package/dist/ArvoEventFactory/helpers.d.ts +15 -0
- package/dist/ArvoEventFactory/helpers.js +20 -0
- package/dist/ArvoEventFactory/index.d.ts +62 -0
- package/dist/ArvoEventFactory/index.js +108 -0
- package/dist/OpenTelemetry/index.js +3 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +7 -2
- package/dist/schema.d.ts +20 -0
- package/dist/schema.js +15 -0
- package/package.json +1 -1
package/README.md
CHANGED
@@ -51,6 +51,7 @@ At its core, Arvo has only three main data structures:
|
|
51
51
|
- [ArvoEvent](src/ArvoEvent/README.md) aims to provide a extendible variant of the open-source CloudEvent spec-ed object to define all the event in the system.
|
52
52
|
- [ArvoContract](src/ArvoContract/README.md) is a basic class to define and impose contracts between services, ensuring trust in decoupled systems during build and development.
|
53
53
|
- [ArvoContractLibrary](src/ArvoContractLibrary/README.md) is a utility class designed to manage and access multiple ArvoContract instances efficiently.
|
54
|
+
- `ArvoErrorSchema` is the recommeded zod schema for all the errors in the ArvoEvents
|
54
55
|
|
55
56
|
## Utilities
|
56
57
|
|
@@ -1,13 +1,9 @@
|
|
1
1
|
import { IArvoContract } from './types';
|
2
2
|
import ArvoContract from '.';
|
3
|
-
import { CreateArvoEvent } from '../ArvoEvent/types';
|
4
|
-
import { TelemetryContext } from '../OpenTelemetry/types';
|
5
|
-
import { ArvoContractRecord } from './types';
|
6
|
-
import { z } from 'zod';
|
7
3
|
/**
|
8
4
|
* Infers the ArvoContract type from a given IArvoContract.
|
9
5
|
*/
|
10
|
-
export type InferArvoContract<T> = T extends IArvoContract<infer U, infer V, infer W> ? ArvoContract<U, V, W> : never;
|
6
|
+
export type InferArvoContract<T> = T extends IArvoContract<infer S, infer U, infer V, infer W> ? ArvoContract<S, U, V, W> : never;
|
11
7
|
/**
|
12
8
|
* Creates an ArvoContract instance from the given contract specification.
|
13
9
|
*
|
@@ -15,10 +11,11 @@ export type InferArvoContract<T> = T extends IArvoContract<infer U, infer V, inf
|
|
15
11
|
* with proper type inference.
|
16
12
|
*
|
17
13
|
* @template TContract - The type of the contract specification.
|
18
|
-
*
|
14
|
+
*
|
15
|
+
* @param contractSpec - The contract specification object.
|
19
16
|
* This should include the URI, accepts, and emits properties as defined in IArvoContract.
|
20
17
|
*
|
21
|
-
* @returns
|
18
|
+
* @returns The created ArvoContract instance.
|
22
19
|
* The returned type is inferred from the input contract specification.
|
23
20
|
*
|
24
21
|
* @example
|
@@ -28,48 +25,9 @@ export type InferArvoContract<T> = T extends IArvoContract<infer U, infer V, inf
|
|
28
25
|
* type: 'com.example.input',
|
29
26
|
* schema: z.object({ name: z.string() }),
|
30
27
|
* },
|
31
|
-
* emits:
|
32
|
-
* {
|
33
|
-
*
|
34
|
-
* schema: z.object({ result: z.number() }),
|
35
|
-
* },
|
36
|
-
* ],
|
28
|
+
* emits: {
|
29
|
+
* 'com.example.output': z.object({ result: z.number() }),
|
30
|
+
* },
|
37
31
|
* });
|
38
32
|
*/
|
39
33
|
export declare const createArvoContract: <const TContract extends IArvoContract>(contract: TContract) => InferArvoContract<TContract>;
|
40
|
-
/**
|
41
|
-
* Creates a contractual ArvoEvent factory based on the provided contract.
|
42
|
-
*
|
43
|
-
* @template T - The type of the contract.
|
44
|
-
* @template TAccepts - The type of record the contract bound handler accepts, defaults to ArvoContractRecord.
|
45
|
-
* @template TEmits - The type of records the contract bound handler emits.
|
46
|
-
* @param {ArvoContract<T, TAccepts, TEmits>} contract - The ArvoContract to base the events on.
|
47
|
-
* @returns {Object} An object with 'accepts' and 'emits' methods for creating events.
|
48
|
-
*/
|
49
|
-
export declare const contractualArvoEventFactory: <T extends string = string, TAccepts extends ArvoContractRecord = ArvoContractRecord, TEmits extends Record<string, z.ZodTypeAny> = Record<string, z.ZodTypeAny>>(contract: ArvoContract<T, TAccepts, TEmits>) => {
|
50
|
-
/**
|
51
|
-
* Creates an ArvoEvent as per the accept record of the contract.
|
52
|
-
*
|
53
|
-
* @template TExtension - The type of extensions to add to the event.
|
54
|
-
* @param {CreateArvoEvent<z.infer<TAccepts['schema']>, TAccepts['type']>} event - The event to create.
|
55
|
-
* @param {TExtension} [extensions] - Optional extensions to add to the event.
|
56
|
-
* @param {TelemetryContext} [telemetry] - Optional telemetry context for tracing.
|
57
|
-
* @returns The created ArvoEvent as per the accept record of the contract.
|
58
|
-
* @throws {Error} If the event data fails validation against the contract.
|
59
|
-
*/
|
60
|
-
accepts: <TExtension extends Record<string, any>>(event: CreateArvoEvent<z.infer<TAccepts["schema"]>, TAccepts["type"]>, extensions?: TExtension, telemetry?: TelemetryContext) => import("..").ArvoEvent<z.TypeOf<z.TypeOf<TAccepts["schema"]>>, TExtension, string>;
|
61
|
-
/**
|
62
|
-
* Creates an ArvoEvent as per one of the emits record in the contract.
|
63
|
-
*
|
64
|
-
* @template U - The specific event type from TEmits.
|
65
|
-
* @template TExtension - The type of extensions to add to the event.
|
66
|
-
* @param {CreateArvoEvent<z.infer<Extract<TEmits, { type: U }>['schema']>, U>} event - The event to create.
|
67
|
-
* @param {TExtension} [extensions] - Optional extensions to add to the event.
|
68
|
-
* @param {TelemetryContext} [telemetry] - Optional telemetry context for tracing.
|
69
|
-
* @returns The created ArvoEvent as per one of the emits records of the contract.
|
70
|
-
* @throws {Error} If the event data fails validation against the contract.
|
71
|
-
*/
|
72
|
-
emits: <U extends keyof TEmits & string, TExtension extends Record<string, any>>(event: CreateArvoEvent<z.infer<TEmits[U]>, U>, extensions?: TExtension, telemetry?: TelemetryContext) => import("..").ArvoEvent<z.TypeOf<Extract<TEmits, {
|
73
|
-
type: U;
|
74
|
-
}>["schema"]>, TExtension, string>;
|
75
|
-
};
|
@@ -1,23 +1,10 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
3
|
-
__assign = Object.assign || function(t) {
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
-
s = arguments[i];
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
-
t[p] = s[p];
|
8
|
-
}
|
9
|
-
return t;
|
10
|
-
};
|
11
|
-
return __assign.apply(this, arguments);
|
12
|
-
};
|
13
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
14
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
15
4
|
};
|
16
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
-
exports.
|
6
|
+
exports.createArvoContract = void 0;
|
18
7
|
var _1 = __importDefault(require("."));
|
19
|
-
var helpers_1 = require("../ArvoEvent/helpers");
|
20
|
-
var OpenTelemetry_1 = require("../OpenTelemetry");
|
21
8
|
/**
|
22
9
|
* Creates an ArvoContract instance from the given contract specification.
|
23
10
|
*
|
@@ -25,10 +12,11 @@ var OpenTelemetry_1 = require("../OpenTelemetry");
|
|
25
12
|
* with proper type inference.
|
26
13
|
*
|
27
14
|
* @template TContract - The type of the contract specification.
|
28
|
-
*
|
15
|
+
*
|
16
|
+
* @param contractSpec - The contract specification object.
|
29
17
|
* This should include the URI, accepts, and emits properties as defined in IArvoContract.
|
30
18
|
*
|
31
|
-
* @returns
|
19
|
+
* @returns The created ArvoContract instance.
|
32
20
|
* The returned type is inferred from the input contract specification.
|
33
21
|
*
|
34
22
|
* @example
|
@@ -38,66 +26,12 @@ var OpenTelemetry_1 = require("../OpenTelemetry");
|
|
38
26
|
* type: 'com.example.input',
|
39
27
|
* schema: z.object({ name: z.string() }),
|
40
28
|
* },
|
41
|
-
* emits:
|
42
|
-
* {
|
43
|
-
*
|
44
|
-
* schema: z.object({ result: z.number() }),
|
45
|
-
* },
|
46
|
-
* ],
|
29
|
+
* emits: {
|
30
|
+
* 'com.example.output': z.object({ result: z.number() }),
|
31
|
+
* },
|
47
32
|
* });
|
48
33
|
*/
|
49
34
|
var createArvoContract = function (contract) {
|
50
35
|
return new _1.default(contract);
|
51
36
|
};
|
52
37
|
exports.createArvoContract = createArvoContract;
|
53
|
-
/**
|
54
|
-
* Creates a contractual ArvoEvent factory based on the provided contract.
|
55
|
-
*
|
56
|
-
* @template T - The type of the contract.
|
57
|
-
* @template TAccepts - The type of record the contract bound handler accepts, defaults to ArvoContractRecord.
|
58
|
-
* @template TEmits - The type of records the contract bound handler emits.
|
59
|
-
* @param {ArvoContract<T, TAccepts, TEmits>} contract - The ArvoContract to base the events on.
|
60
|
-
* @returns {Object} An object with 'accepts' and 'emits' methods for creating events.
|
61
|
-
*/
|
62
|
-
var contractualArvoEventFactory = function (contract) { return ({
|
63
|
-
/**
|
64
|
-
* Creates an ArvoEvent as per the accept record of the contract.
|
65
|
-
*
|
66
|
-
* @template TExtension - The type of extensions to add to the event.
|
67
|
-
* @param {CreateArvoEvent<z.infer<TAccepts['schema']>, TAccepts['type']>} event - The event to create.
|
68
|
-
* @param {TExtension} [extensions] - Optional extensions to add to the event.
|
69
|
-
* @param {TelemetryContext} [telemetry] - Optional telemetry context for tracing.
|
70
|
-
* @returns The created ArvoEvent as per the accept record of the contract.
|
71
|
-
* @throws {Error} If the event data fails validation against the contract.
|
72
|
-
*/
|
73
|
-
accepts: function (event, extensions, telemetry) {
|
74
|
-
return (0, OpenTelemetry_1.createOtelSpan)(telemetry || 'ArvoEvent Creation Tracer', 'contractualArvoEventFactory.accepts', {}, function () {
|
75
|
-
var validationResult = contract.validateInput(event.type, event.data);
|
76
|
-
if (!validationResult.success) {
|
77
|
-
throw new Error("Accept Event data validation failed: ".concat(validationResult.error.message));
|
78
|
-
}
|
79
|
-
return (0, helpers_1.createArvoEvent)(__assign(__assign({}, event), { data: validationResult.data }), extensions, telemetry);
|
80
|
-
});
|
81
|
-
},
|
82
|
-
/**
|
83
|
-
* Creates an ArvoEvent as per one of the emits record in the contract.
|
84
|
-
*
|
85
|
-
* @template U - The specific event type from TEmits.
|
86
|
-
* @template TExtension - The type of extensions to add to the event.
|
87
|
-
* @param {CreateArvoEvent<z.infer<Extract<TEmits, { type: U }>['schema']>, U>} event - The event to create.
|
88
|
-
* @param {TExtension} [extensions] - Optional extensions to add to the event.
|
89
|
-
* @param {TelemetryContext} [telemetry] - Optional telemetry context for tracing.
|
90
|
-
* @returns The created ArvoEvent as per one of the emits records of the contract.
|
91
|
-
* @throws {Error} If the event data fails validation against the contract.
|
92
|
-
*/
|
93
|
-
emits: function (event, extensions, telemetry) {
|
94
|
-
return (0, OpenTelemetry_1.createOtelSpan)(telemetry || 'ArvoEvent Creation Tracer', 'contractualArvoEventFactory.emits', {}, function () {
|
95
|
-
var validationResult = contract.validateOutput(event.type, event.data);
|
96
|
-
if (!validationResult.success) {
|
97
|
-
throw new Error("Emit Event data validation failed: ".concat(validationResult.error.message));
|
98
|
-
}
|
99
|
-
return (0, helpers_1.createArvoEvent)(__assign(__assign({}, event), { data: validationResult.data }), extensions, telemetry);
|
100
|
-
});
|
101
|
-
},
|
102
|
-
}); };
|
103
|
-
exports.contractualArvoEventFactory = contractualArvoEventFactory;
|
@@ -1,16 +1,18 @@
|
|
1
1
|
import { z } from 'zod';
|
2
2
|
import { ArvoContractRecord, IArvoContract } from './types';
|
3
|
+
import { ArvoErrorSchema } from '../schema';
|
3
4
|
/**
|
4
5
|
* ArvoContract class represents a contract with defined input and output schemas.
|
5
6
|
* It provides methods for validating inputs and outputs based on the contract's specifications.
|
6
7
|
* An event handler can be bound to it so the this contract may impose the types
|
7
8
|
* on inputs and outputs of it
|
8
9
|
*
|
9
|
-
* @template TUri - The URI
|
10
|
-
* @template
|
10
|
+
* @template TUri - The URI of the contract
|
11
|
+
* @template TType - The accept type, defaults to string.
|
12
|
+
* @template TAcceptSchema - The of the data which the contract bound can accept
|
11
13
|
* @template TEmits - The type of records the contract bound handler emits.
|
12
14
|
*/
|
13
|
-
export default class ArvoContract<TUri extends string = string,
|
15
|
+
export default class ArvoContract<TUri extends string = string, TType extends string = string, TAcceptSchema extends z.ZodTypeAny = z.ZodTypeAny, TEmits extends Record<string, z.ZodTypeAny> = Record<string, z.ZodTypeAny>> {
|
14
16
|
private readonly _uri;
|
15
17
|
private readonly _accepts;
|
16
18
|
private readonly _emits;
|
@@ -18,60 +20,57 @@ export default class ArvoContract<TUri extends string = string, TAccepts extends
|
|
18
20
|
readonly description: string | null;
|
19
21
|
/**
|
20
22
|
* Creates an instance of ArvoContract.
|
21
|
-
* @param
|
23
|
+
* @param params - The contract parameters.
|
22
24
|
*/
|
23
|
-
constructor(params: IArvoContract<TUri,
|
25
|
+
constructor(params: IArvoContract<TUri, TType, TAcceptSchema, TEmits>);
|
24
26
|
/**
|
25
27
|
* Gets the URI of the contract.
|
26
|
-
* @returns {T} The contract's URI.
|
27
28
|
*/
|
28
29
|
get uri(): TUri;
|
29
30
|
/**
|
30
31
|
* Gets the type and schema of the event that the contact
|
31
32
|
* bound handler listens to.
|
32
|
-
* @returns {TAccepts} The frozen accepts object.
|
33
33
|
*/
|
34
|
-
get accepts():
|
34
|
+
get accepts(): ArvoContractRecord<TType, TAcceptSchema>;
|
35
35
|
/**
|
36
36
|
* Gets all event types and schemas that can be emitted by the
|
37
37
|
* contract bound handler.
|
38
|
-
*
|
39
|
-
* @returns {TEmits} A record of all emitted events.
|
40
38
|
*/
|
41
39
|
get emits(): TEmits;
|
40
|
+
get systemError(): ArvoContractRecord<`sys.${TType}.error`, typeof ArvoErrorSchema>;
|
42
41
|
/**
|
43
42
|
* Validates the contract bound handler's input against the
|
44
43
|
* contract's accept schema.
|
45
44
|
* @template U - The type of the input to validate.
|
46
|
-
* @param
|
47
|
-
* @param
|
48
|
-
* @returns
|
49
|
-
* @throws
|
45
|
+
* @param type - The type of the input event.
|
46
|
+
* @param input - The input data to validate.
|
47
|
+
* @returns The validation result.
|
48
|
+
* @throws If the accept type is not found in the contract.
|
50
49
|
*/
|
51
|
-
validateInput<U>(type:
|
50
|
+
validateInput<U>(type: TType, input: U): z.SafeParseReturnType<U, z.infer<TAcceptSchema>>;
|
52
51
|
/**
|
53
52
|
* Validates the contract bound handler's output against the
|
54
53
|
* contract's emit schema.
|
55
54
|
* @template U - The type of the output to validate.
|
56
|
-
* @param
|
57
|
-
* @param
|
58
|
-
* @returns
|
59
|
-
* @throws
|
55
|
+
* @param type - The type of the output event.
|
56
|
+
* @param output - The output data to validate.
|
57
|
+
* @returns The validation result.
|
58
|
+
* @throws If the emit type is not found in the contract.
|
60
59
|
*/
|
61
60
|
validateOutput<U extends keyof TEmits>(type: U, output: unknown): z.SafeParseReturnType<unknown, z.infer<Extract<TEmits, {
|
62
61
|
type: U;
|
63
62
|
}>['schema']>>;
|
64
63
|
/**
|
65
64
|
* Validates the accepts record.
|
66
|
-
* @param
|
67
|
-
* @returns
|
65
|
+
* @param accepts - The accepts record to validate.
|
66
|
+
* @returns The validated accepts record.
|
68
67
|
* @private
|
69
68
|
*/
|
70
69
|
private validateAccepts;
|
71
70
|
/**
|
72
71
|
* Validates the emits records.
|
73
|
-
* @param
|
74
|
-
* @returns
|
72
|
+
* @param emits - The emits records to validate.
|
73
|
+
* @returns The validated emits records.
|
75
74
|
* @private
|
76
75
|
*/
|
77
76
|
private validateEmits;
|
@@ -79,15 +78,15 @@ export default class ArvoContract<TUri extends string = string, TAccepts extends
|
|
79
78
|
* Exports the ArvoContract instance as a plain object conforming to the IArvoContract interface.
|
80
79
|
* This method can be used to serialize the contract or to create a new instance with the same parameters.
|
81
80
|
*
|
82
|
-
* @returns
|
81
|
+
* @returns An object representing the contract, including its URI, accepts, and emits properties.
|
83
82
|
*/
|
84
|
-
export(): IArvoContract<TUri,
|
83
|
+
export(): IArvoContract<TUri, TType, TAcceptSchema, TEmits>;
|
85
84
|
/**
|
86
85
|
* Converts the ArvoContract instance to a JSON Schema representation.
|
87
86
|
* This method provides a way to represent the contract's structure and validation rules
|
88
87
|
* in a format that conforms to the JSON Schema specification.
|
89
88
|
*
|
90
|
-
* @returns
|
89
|
+
* @returns An object representing the contract in JSON Schema format, including:
|
91
90
|
* - uri: The contract's URI
|
92
91
|
* - description: The contract's description (if available)
|
93
92
|
* - accepts: An object containing the accepted input type and its JSON Schema representation
|
@@ -97,7 +96,7 @@ export default class ArvoContract<TUri extends string = string, TAccepts extends
|
|
97
96
|
uri: TUri;
|
98
97
|
description: string | null;
|
99
98
|
accepts: {
|
100
|
-
type:
|
99
|
+
type: TType;
|
101
100
|
schema: import("zod-to-json-schema").JsonSchema7Type & {
|
102
101
|
$schema?: string | undefined;
|
103
102
|
definitions?: {
|
@@ -14,32 +14,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
var zod_1 = require("zod");
|
15
15
|
var validators_1 = require("./validators");
|
16
16
|
var zod_to_json_schema_1 = require("zod-to-json-schema");
|
17
|
+
var schema_1 = require("../schema");
|
17
18
|
/**
|
18
19
|
* ArvoContract class represents a contract with defined input and output schemas.
|
19
20
|
* It provides methods for validating inputs and outputs based on the contract's specifications.
|
20
21
|
* An event handler can be bound to it so the this contract may impose the types
|
21
22
|
* on inputs and outputs of it
|
22
23
|
*
|
23
|
-
* @template TUri - The URI
|
24
|
-
* @template
|
24
|
+
* @template TUri - The URI of the contract
|
25
|
+
* @template TType - The accept type, defaults to string.
|
26
|
+
* @template TAcceptSchema - The of the data which the contract bound can accept
|
25
27
|
* @template TEmits - The type of records the contract bound handler emits.
|
26
28
|
*/
|
27
29
|
var ArvoContract = /** @class */ (function () {
|
28
30
|
/**
|
29
31
|
* Creates an instance of ArvoContract.
|
30
|
-
* @param
|
32
|
+
* @param params - The contract parameters.
|
31
33
|
*/
|
32
34
|
function ArvoContract(params) {
|
33
35
|
this._uri = validators_1.ArvoContractValidators.contract.uri.parse(params.uri);
|
34
36
|
this._accepts = this.validateAccepts(params.accepts);
|
35
37
|
this._emits = this.validateEmits(params.emits);
|
36
38
|
this.description = params.description || null;
|
37
|
-
Object.freeze(this);
|
38
39
|
}
|
39
40
|
Object.defineProperty(ArvoContract.prototype, "uri", {
|
40
41
|
/**
|
41
42
|
* Gets the URI of the contract.
|
42
|
-
* @returns {T} The contract's URI.
|
43
43
|
*/
|
44
44
|
get: function () {
|
45
45
|
return this._uri;
|
@@ -51,10 +51,9 @@ var ArvoContract = /** @class */ (function () {
|
|
51
51
|
/**
|
52
52
|
* Gets the type and schema of the event that the contact
|
53
53
|
* bound handler listens to.
|
54
|
-
* @returns {TAccepts} The frozen accepts object.
|
55
54
|
*/
|
56
55
|
get: function () {
|
57
|
-
return
|
56
|
+
return this._accepts;
|
58
57
|
},
|
59
58
|
enumerable: false,
|
60
59
|
configurable: true
|
@@ -63,8 +62,6 @@ var ArvoContract = /** @class */ (function () {
|
|
63
62
|
/**
|
64
63
|
* Gets all event types and schemas that can be emitted by the
|
65
64
|
* contract bound handler.
|
66
|
-
*
|
67
|
-
* @returns {TEmits} A record of all emitted events.
|
68
65
|
*/
|
69
66
|
get: function () {
|
70
67
|
return __assign({}, this._emits);
|
@@ -72,14 +69,24 @@ var ArvoContract = /** @class */ (function () {
|
|
72
69
|
enumerable: false,
|
73
70
|
configurable: true
|
74
71
|
});
|
72
|
+
Object.defineProperty(ArvoContract.prototype, "systemError", {
|
73
|
+
get: function () {
|
74
|
+
return {
|
75
|
+
type: "sys.".concat(this._accepts.type, ".error"),
|
76
|
+
schema: schema_1.ArvoErrorSchema,
|
77
|
+
};
|
78
|
+
},
|
79
|
+
enumerable: false,
|
80
|
+
configurable: true
|
81
|
+
});
|
75
82
|
/**
|
76
83
|
* Validates the contract bound handler's input against the
|
77
84
|
* contract's accept schema.
|
78
85
|
* @template U - The type of the input to validate.
|
79
|
-
* @param
|
80
|
-
* @param
|
81
|
-
* @returns
|
82
|
-
* @throws
|
86
|
+
* @param type - The type of the input event.
|
87
|
+
* @param input - The input data to validate.
|
88
|
+
* @returns The validation result.
|
89
|
+
* @throws If the accept type is not found in the contract.
|
83
90
|
*/
|
84
91
|
ArvoContract.prototype.validateInput = function (type, input) {
|
85
92
|
if (type !== this._accepts.type) {
|
@@ -91,10 +98,10 @@ var ArvoContract = /** @class */ (function () {
|
|
91
98
|
* Validates the contract bound handler's output against the
|
92
99
|
* contract's emit schema.
|
93
100
|
* @template U - The type of the output to validate.
|
94
|
-
* @param
|
95
|
-
* @param
|
96
|
-
* @returns
|
97
|
-
* @throws
|
101
|
+
* @param type - The type of the output event.
|
102
|
+
* @param output - The output data to validate.
|
103
|
+
* @returns The validation result.
|
104
|
+
* @throws If the emit type is not found in the contract.
|
98
105
|
*/
|
99
106
|
ArvoContract.prototype.validateOutput = function (type, output) {
|
100
107
|
var emit = this.emits[type];
|
@@ -105,8 +112,8 @@ var ArvoContract = /** @class */ (function () {
|
|
105
112
|
};
|
106
113
|
/**
|
107
114
|
* Validates the accepts record.
|
108
|
-
* @param
|
109
|
-
* @returns
|
115
|
+
* @param accepts - The accepts record to validate.
|
116
|
+
* @returns The validated accepts record.
|
110
117
|
* @private
|
111
118
|
*/
|
112
119
|
ArvoContract.prototype.validateAccepts = function (accepts) {
|
@@ -117,8 +124,8 @@ var ArvoContract = /** @class */ (function () {
|
|
117
124
|
};
|
118
125
|
/**
|
119
126
|
* Validates the emits records.
|
120
|
-
* @param
|
121
|
-
* @returns
|
127
|
+
* @param emits - The emits records to validate.
|
128
|
+
* @returns The validated emits records.
|
122
129
|
* @private
|
123
130
|
*/
|
124
131
|
ArvoContract.prototype.validateEmits = function (emits) {
|
@@ -126,13 +133,13 @@ var ArvoContract = /** @class */ (function () {
|
|
126
133
|
var key = _a[0];
|
127
134
|
return validators_1.ArvoContractValidators.record.type.parse(key);
|
128
135
|
});
|
129
|
-
return
|
136
|
+
return emits;
|
130
137
|
};
|
131
138
|
/**
|
132
139
|
* Exports the ArvoContract instance as a plain object conforming to the IArvoContract interface.
|
133
140
|
* This method can be used to serialize the contract or to create a new instance with the same parameters.
|
134
141
|
*
|
135
|
-
* @returns
|
142
|
+
* @returns An object representing the contract, including its URI, accepts, and emits properties.
|
136
143
|
*/
|
137
144
|
ArvoContract.prototype.export = function () {
|
138
145
|
return {
|
@@ -150,7 +157,7 @@ var ArvoContract = /** @class */ (function () {
|
|
150
157
|
* This method provides a way to represent the contract's structure and validation rules
|
151
158
|
* in a format that conforms to the JSON Schema specification.
|
152
159
|
*
|
153
|
-
* @returns
|
160
|
+
* @returns An object representing the contract in JSON Schema format, including:
|
154
161
|
* - uri: The contract's URI
|
155
162
|
* - description: The contract's description (if available)
|
156
163
|
* - accepts: An object containing the accepted input type and its JSON Schema representation
|
@@ -12,15 +12,17 @@ export type ArvoContractRecord<TType extends string = string, TSchema extends z.
|
|
12
12
|
};
|
13
13
|
/**
|
14
14
|
* Interface for an Arvo contract.
|
15
|
-
*
|
16
|
-
* @template
|
15
|
+
*
|
16
|
+
* @template TUri - The URI of the contract
|
17
|
+
* @template TType - The accept type, defaults to string.
|
18
|
+
* @template TAcceptSchema - The of the data which the contract bound can accept
|
17
19
|
* @template TEmits - The type of records the contract bound handler emits.
|
18
20
|
*/
|
19
|
-
export interface IArvoContract<TUri extends string = string,
|
21
|
+
export interface IArvoContract<TUri extends string = string, TType extends string = string, TAcceptSchema extends z.ZodTypeAny = z.ZodTypeAny, TEmits extends Record<string, z.ZodTypeAny> = Record<string, z.ZodTypeAny>> {
|
20
22
|
/** The unique identifier for the contract */
|
21
23
|
uri: TUri;
|
22
24
|
/** The record type that the contract accepts */
|
23
|
-
accepts:
|
25
|
+
accepts: ArvoContractRecord<TType, TAcceptSchema>;
|
24
26
|
/** An array of record types that the contract can emit */
|
25
27
|
emits: TEmits;
|
26
28
|
/** (Optional) The description of the contract or its handler */
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import ArvoEventFactory from ".";
|
2
|
+
import ArvoContract from "../ArvoContract";
|
3
|
+
import { z } from 'zod';
|
4
|
+
/**
|
5
|
+
* Creates a ArvoEventFactory instance based on the provided contract.
|
6
|
+
*
|
7
|
+
* @template TUri - The URI of the contract
|
8
|
+
* @template TType - The accept type, defaults to string.
|
9
|
+
* @template TAcceptSchema - The type of the data which the contract bound can accept
|
10
|
+
* @template TEmits - The type of records the contract bound handler emits.
|
11
|
+
*
|
12
|
+
* @param contract - The ArvoContract to base the events on.
|
13
|
+
* @returns An instance of ContractualArvoEventFactory.
|
14
|
+
*/
|
15
|
+
export declare const createArvoEventFactory: <TUri extends string = string, TType extends string = string, TAcceptSchema extends z.ZodTypeAny = z.ZodTypeAny, TEmits extends Record<string, z.ZodTypeAny> = Record<string, z.ZodTypeAny>>(contract: ArvoContract<TUri, TType, TAcceptSchema, TEmits>) => ArvoEventFactory<TUri, TType, TAcceptSchema, TEmits>;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.createArvoEventFactory = void 0;
|
7
|
+
var _1 = __importDefault(require("."));
|
8
|
+
/**
|
9
|
+
* Creates a ArvoEventFactory instance based on the provided contract.
|
10
|
+
*
|
11
|
+
* @template TUri - The URI of the contract
|
12
|
+
* @template TType - The accept type, defaults to string.
|
13
|
+
* @template TAcceptSchema - The type of the data which the contract bound can accept
|
14
|
+
* @template TEmits - The type of records the contract bound handler emits.
|
15
|
+
*
|
16
|
+
* @param contract - The ArvoContract to base the events on.
|
17
|
+
* @returns An instance of ContractualArvoEventFactory.
|
18
|
+
*/
|
19
|
+
var createArvoEventFactory = function (contract) { return new _1.default(contract); };
|
20
|
+
exports.createArvoEventFactory = createArvoEventFactory;
|
@@ -0,0 +1,62 @@
|
|
1
|
+
import ArvoContract from "../ArvoContract";
|
2
|
+
import { z } from 'zod';
|
3
|
+
import { CreateArvoEvent } from "../ArvoEvent/types";
|
4
|
+
import { TelemetryContext } from "../OpenTelemetry/types";
|
5
|
+
/**
|
6
|
+
* A factory class for creating contractual ArvoEvents based on a given ArvoContract.
|
7
|
+
*
|
8
|
+
* @template TUri - The URI of the contract
|
9
|
+
* @template TType - The accept type, defaults to string.
|
10
|
+
* @template TAcceptSchema - The type of the data which the contract bound can accept
|
11
|
+
* @template TEmits - The type of records the contract bound handler emits.
|
12
|
+
*/
|
13
|
+
export default class ArvoEventFactory<TUri extends string = string, TType extends string = string, TAcceptSchema extends z.ZodTypeAny = z.ZodTypeAny, TEmits extends Record<string, z.ZodTypeAny> = Record<string, z.ZodTypeAny>> {
|
14
|
+
private contract;
|
15
|
+
/**
|
16
|
+
* Creates an instance of ContractualArvoEventFactory.
|
17
|
+
*
|
18
|
+
* @param contract - The ArvoContract to base the events on.
|
19
|
+
*/
|
20
|
+
constructor(contract: ArvoContract<TUri, TType, TAcceptSchema, TEmits>);
|
21
|
+
/**
|
22
|
+
* Creates an ArvoEvent as per the accept record of the contract.
|
23
|
+
*
|
24
|
+
* @template TExtension - The type of extensions to add to the event.
|
25
|
+
* @param event - The event to create.
|
26
|
+
* @param [extensions] - Optional extensions to add to the event.
|
27
|
+
* @param [telemetry] - Optional telemetry context for tracing.
|
28
|
+
* @returns The created ArvoEvent as per the accept record of the contract.
|
29
|
+
* @throws If the event data fails validation against the contract.
|
30
|
+
*/
|
31
|
+
accepts<TExtension extends Record<string, any>>(event: CreateArvoEvent<z.infer<TAcceptSchema>, TType>, extensions?: TExtension, telemetry?: TelemetryContext): import("..").ArvoEvent<z.TypeOf<TAcceptSchema>, TExtension, string>;
|
32
|
+
/**
|
33
|
+
* Creates an ArvoEvent as per one of the emits record in the contract.
|
34
|
+
*
|
35
|
+
* @template U - The specific event type from TEmits.
|
36
|
+
* @template TExtension - The type of extensions to add to the event.
|
37
|
+
* @param event - The event to create.
|
38
|
+
* @param [extensions] - Optional extensions to add to the event.
|
39
|
+
* @param [telemetry] - Optional telemetry context for tracing.
|
40
|
+
* @returns The created ArvoEvent as per one of the emits records of the contract.
|
41
|
+
* @throws If the event data fails validation against the contract.
|
42
|
+
*/
|
43
|
+
emits<U extends keyof TEmits & string, TExtension extends Record<string, any>>(event: CreateArvoEvent<z.infer<TEmits[U]>, U>, extensions?: TExtension, telemetry?: TelemetryContext): import("..").ArvoEvent<z.TypeOf<Extract<TEmits, {
|
44
|
+
type: U;
|
45
|
+
}>["schema"]>, TExtension, string>;
|
46
|
+
/**
|
47
|
+
* Creates a system error ArvoEvent.
|
48
|
+
*
|
49
|
+
* @template TExtension - The type of extensions to add to the event.
|
50
|
+
* @param event - The event to create, including the error.
|
51
|
+
* @param [extensions] - Optional extensions to add to the event.
|
52
|
+
* @param [telemetry] - Optional telemetry context for tracing.
|
53
|
+
* @returns The created system error ArvoEvent.
|
54
|
+
*/
|
55
|
+
systemError<TExtension extends Record<string, any>>(event: Omit<CreateArvoEvent<any, any>, 'data' | 'type'> & {
|
56
|
+
error: Error;
|
57
|
+
}, extensions?: TExtension, telemetry?: TelemetryContext): import("..").ArvoEvent<{
|
58
|
+
errorName: string;
|
59
|
+
errorMessage: string;
|
60
|
+
errorStack: string | null;
|
61
|
+
}, TExtension, string>;
|
62
|
+
}
|
@@ -0,0 +1,108 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
14
|
+
var t = {};
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
16
|
+
t[p] = s[p];
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
20
|
+
t[p[i]] = s[p[i]];
|
21
|
+
}
|
22
|
+
return t;
|
23
|
+
};
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
25
|
+
var helpers_1 = require("../ArvoEvent/helpers");
|
26
|
+
var schema_1 = require("../ArvoEvent/schema");
|
27
|
+
var OpenTelemetry_1 = require("../OpenTelemetry");
|
28
|
+
/**
|
29
|
+
* A factory class for creating contractual ArvoEvents based on a given ArvoContract.
|
30
|
+
*
|
31
|
+
* @template TUri - The URI of the contract
|
32
|
+
* @template TType - The accept type, defaults to string.
|
33
|
+
* @template TAcceptSchema - The type of the data which the contract bound can accept
|
34
|
+
* @template TEmits - The type of records the contract bound handler emits.
|
35
|
+
*/
|
36
|
+
var ArvoEventFactory = /** @class */ (function () {
|
37
|
+
/**
|
38
|
+
* Creates an instance of ContractualArvoEventFactory.
|
39
|
+
*
|
40
|
+
* @param contract - The ArvoContract to base the events on.
|
41
|
+
*/
|
42
|
+
function ArvoEventFactory(contract) {
|
43
|
+
this.contract = contract;
|
44
|
+
}
|
45
|
+
/**
|
46
|
+
* Creates an ArvoEvent as per the accept record of the contract.
|
47
|
+
*
|
48
|
+
* @template TExtension - The type of extensions to add to the event.
|
49
|
+
* @param event - The event to create.
|
50
|
+
* @param [extensions] - Optional extensions to add to the event.
|
51
|
+
* @param [telemetry] - Optional telemetry context for tracing.
|
52
|
+
* @returns The created ArvoEvent as per the accept record of the contract.
|
53
|
+
* @throws If the event data fails validation against the contract.
|
54
|
+
*/
|
55
|
+
ArvoEventFactory.prototype.accepts = function (event, extensions, telemetry) {
|
56
|
+
var _this = this;
|
57
|
+
return (0, OpenTelemetry_1.createOtelSpan)(telemetry || 'ArvoEvent Creation Tracer', 'ContractualArvoEventFactory.accepts', {}, function () {
|
58
|
+
var validationResult = _this.contract.validateInput(event.type, event.data);
|
59
|
+
if (!validationResult.success) {
|
60
|
+
throw new Error("Accept Event data validation failed: ".concat(validationResult.error.message));
|
61
|
+
}
|
62
|
+
return (0, helpers_1.createArvoEvent)(__assign(__assign({}, event), { datacontenttype: schema_1.ArvoDataContentType, dataschema: _this.contract.uri, data: validationResult.data }), extensions, telemetry);
|
63
|
+
});
|
64
|
+
};
|
65
|
+
/**
|
66
|
+
* Creates an ArvoEvent as per one of the emits record in the contract.
|
67
|
+
*
|
68
|
+
* @template U - The specific event type from TEmits.
|
69
|
+
* @template TExtension - The type of extensions to add to the event.
|
70
|
+
* @param event - The event to create.
|
71
|
+
* @param [extensions] - Optional extensions to add to the event.
|
72
|
+
* @param [telemetry] - Optional telemetry context for tracing.
|
73
|
+
* @returns The created ArvoEvent as per one of the emits records of the contract.
|
74
|
+
* @throws If the event data fails validation against the contract.
|
75
|
+
*/
|
76
|
+
ArvoEventFactory.prototype.emits = function (event, extensions, telemetry) {
|
77
|
+
var _this = this;
|
78
|
+
return (0, OpenTelemetry_1.createOtelSpan)(telemetry || 'ArvoEvent Creation Tracer', 'ContractualArvoEventFactory.emits', {}, function () {
|
79
|
+
var validationResult = _this.contract.validateOutput(event.type, event.data);
|
80
|
+
if (!validationResult.success) {
|
81
|
+
throw new Error("Emit Event data validation failed: ".concat(validationResult.error.message));
|
82
|
+
}
|
83
|
+
return (0, helpers_1.createArvoEvent)(__assign(__assign({}, event), { datacontenttype: schema_1.ArvoDataContentType, dataschema: _this.contract.uri, data: validationResult.data }), extensions, telemetry);
|
84
|
+
});
|
85
|
+
};
|
86
|
+
/**
|
87
|
+
* Creates a system error ArvoEvent.
|
88
|
+
*
|
89
|
+
* @template TExtension - The type of extensions to add to the event.
|
90
|
+
* @param event - The event to create, including the error.
|
91
|
+
* @param [extensions] - Optional extensions to add to the event.
|
92
|
+
* @param [telemetry] - Optional telemetry context for tracing.
|
93
|
+
* @returns The created system error ArvoEvent.
|
94
|
+
*/
|
95
|
+
ArvoEventFactory.prototype.systemError = function (event, extensions, telemetry) {
|
96
|
+
var _this = this;
|
97
|
+
return (0, OpenTelemetry_1.createOtelSpan)(telemetry || 'ArvoEvent Creation Tracer', 'ContractualArvoEventFactory.systemError', {}, function () {
|
98
|
+
var error = event.error, _events = __rest(event, ["error"]);
|
99
|
+
return (0, helpers_1.createArvoEvent)(__assign(__assign({}, event), { type: "sys.".concat(_this.contract.accepts.type, ".error"), data: {
|
100
|
+
errorName: error.name,
|
101
|
+
errorMessage: error.message,
|
102
|
+
errorStack: error.stack || null,
|
103
|
+
}, datacontenttype: schema_1.ArvoDataContentType, dataschema: _this.contract.uri }), extensions, telemetry);
|
104
|
+
});
|
105
|
+
};
|
106
|
+
return ArvoEventFactory;
|
107
|
+
}());
|
108
|
+
exports.default = ArvoEventFactory;
|
@@ -154,10 +154,11 @@ var createOtelSpan = function (telemetryContext, spanName, spanOptions, wrappedF
|
|
154
154
|
var newSpan = activeTracer.startSpan(spanName, spanOptions, activeContext);
|
155
155
|
try {
|
156
156
|
var result = api_1.context.with(api_1.trace.setSpan(activeContext, newSpan), function () {
|
157
|
-
return wrappedFunction.call.apply(wrappedFunction, __spreadArray([thisArg,
|
157
|
+
return wrappedFunction.call.apply(wrappedFunction, __spreadArray([thisArg,
|
158
|
+
{
|
158
159
|
span: newSpan,
|
159
160
|
tracer: activeTracer,
|
160
|
-
carrier: (0, exports.getTelemetryCarrier)(newSpan, activeContext)
|
161
|
+
carrier: (0, exports.getTelemetryCarrier)(newSpan, activeContext),
|
161
162
|
}], args, false));
|
162
163
|
});
|
163
164
|
newSpan.setStatus({
|
package/dist/index.d.ts
CHANGED
@@ -6,11 +6,14 @@ import { exceptionToSpan, logToSpan, getTelemetryContext, getTelemetryCarrier, c
|
|
6
6
|
import { TelemetryCarrier, TelemetryContext, TelemetryLogLevel } from './OpenTelemetry/types';
|
7
7
|
import { validateURI, cleanString } from './utils';
|
8
8
|
import ArvoContract from './ArvoContract';
|
9
|
-
import { createArvoContract, InferArvoContract
|
9
|
+
import { createArvoContract, InferArvoContract } from './ArvoContract/helpers';
|
10
10
|
import { ArvoContractValidators } from './ArvoContract/validators';
|
11
11
|
import { ArvoContractRecord, IArvoContract, ResolveArvoContractRecord } from './ArvoContract/types';
|
12
12
|
import ArvoContractLibrary from './ArvoContractLibrary';
|
13
13
|
import { createArvoContractLibrary } from './ArvoContractLibrary/helpers';
|
14
|
+
import ArvoEventFactory from './ArvoEventFactory';
|
15
|
+
import { createArvoEventFactory } from './ArvoEventFactory/helpers';
|
16
|
+
import { ArvoErrorSchema } from './schema';
|
14
17
|
/**
|
15
18
|
* Collection of Zod schemas for validating various aspects of Arvo events.
|
16
19
|
* @property {z.ZodObject} CloudEventContextSchema - Schema for core CloudEvent properties.
|
@@ -77,4 +80,4 @@ declare const ArvoEventSchemas: {
|
|
77
80
|
tracestate: string | null;
|
78
81
|
}>;
|
79
82
|
};
|
80
|
-
export { ArvoEvent, createArvoEvent, ArvoDataContentType, ArvoEventData, CloudEventExtension, ArvoEventSchemas, CloudEventContext, ArvoExtension, OpenTelemetryExtension, CreateArvoEvent, exceptionToSpan, logToSpan, getTelemetryCarrier, getTelemetryContext, createOtelSpan, TelemetryCarrier, TelemetryContext, TelemetryLogLevel, OTelNull, validateURI, cleanString, ArvoContract, createArvoContract, ArvoContractValidators, ArvoContractRecord, InferArvoContract, IArvoContract, ResolveArvoContractRecord, ArvoContractLibrary, createArvoContractLibrary,
|
83
|
+
export { ArvoEvent, createArvoEvent, ArvoDataContentType, ArvoEventData, CloudEventExtension, ArvoEventSchemas, CloudEventContext, ArvoExtension, OpenTelemetryExtension, CreateArvoEvent, exceptionToSpan, logToSpan, getTelemetryCarrier, getTelemetryContext, createOtelSpan, TelemetryCarrier, TelemetryContext, TelemetryLogLevel, OTelNull, validateURI, cleanString, ArvoContract, createArvoContract, ArvoContractValidators, ArvoContractRecord, InferArvoContract, IArvoContract, ResolveArvoContractRecord, ArvoContractLibrary, createArvoContractLibrary, ArvoEventFactory, createArvoEventFactory, ArvoErrorSchema };
|
package/dist/index.js
CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.
|
6
|
+
exports.ArvoErrorSchema = exports.createArvoEventFactory = exports.ArvoEventFactory = exports.createArvoContractLibrary = exports.ArvoContractLibrary = exports.ArvoContractValidators = exports.createArvoContract = exports.ArvoContract = exports.cleanString = exports.validateURI = exports.OTelNull = exports.createOtelSpan = exports.getTelemetryContext = exports.getTelemetryCarrier = exports.logToSpan = exports.exceptionToSpan = exports.ArvoEventSchemas = exports.ArvoDataContentType = exports.createArvoEvent = exports.ArvoEvent = void 0;
|
7
7
|
var ArvoEvent_1 = __importDefault(require("./ArvoEvent"));
|
8
8
|
exports.ArvoEvent = ArvoEvent_1.default;
|
9
9
|
var schema_1 = require("./ArvoEvent/schema");
|
@@ -24,13 +24,18 @@ var ArvoContract_1 = __importDefault(require("./ArvoContract"));
|
|
24
24
|
exports.ArvoContract = ArvoContract_1.default;
|
25
25
|
var helpers_2 = require("./ArvoContract/helpers");
|
26
26
|
Object.defineProperty(exports, "createArvoContract", { enumerable: true, get: function () { return helpers_2.createArvoContract; } });
|
27
|
-
Object.defineProperty(exports, "contractualArvoEventFactory", { enumerable: true, get: function () { return helpers_2.contractualArvoEventFactory; } });
|
28
27
|
var validators_1 = require("./ArvoContract/validators");
|
29
28
|
Object.defineProperty(exports, "ArvoContractValidators", { enumerable: true, get: function () { return validators_1.ArvoContractValidators; } });
|
30
29
|
var ArvoContractLibrary_1 = __importDefault(require("./ArvoContractLibrary"));
|
31
30
|
exports.ArvoContractLibrary = ArvoContractLibrary_1.default;
|
32
31
|
var helpers_3 = require("./ArvoContractLibrary/helpers");
|
33
32
|
Object.defineProperty(exports, "createArvoContractLibrary", { enumerable: true, get: function () { return helpers_3.createArvoContractLibrary; } });
|
33
|
+
var ArvoEventFactory_1 = __importDefault(require("./ArvoEventFactory"));
|
34
|
+
exports.ArvoEventFactory = ArvoEventFactory_1.default;
|
35
|
+
var helpers_4 = require("./ArvoEventFactory/helpers");
|
36
|
+
Object.defineProperty(exports, "createArvoEventFactory", { enumerable: true, get: function () { return helpers_4.createArvoEventFactory; } });
|
37
|
+
var schema_2 = require("./schema");
|
38
|
+
Object.defineProperty(exports, "ArvoErrorSchema", { enumerable: true, get: function () { return schema_2.ArvoErrorSchema; } });
|
34
39
|
/**
|
35
40
|
* Collection of Zod schemas for validating various aspects of Arvo events.
|
36
41
|
* @property {z.ZodObject} CloudEventContextSchema - Schema for core CloudEvent properties.
|
package/dist/schema.d.ts
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
import { z } from 'zod';
|
2
|
+
/**
|
3
|
+
* Schema for Arvo error objects.
|
4
|
+
*
|
5
|
+
* This schema defines the structure of error objects used in the Arvo system.
|
6
|
+
* It uses Zod for runtime type checking and validation.
|
7
|
+
*/
|
8
|
+
export declare const ArvoErrorSchema: z.ZodObject<{
|
9
|
+
errorName: z.ZodString;
|
10
|
+
errorMessage: z.ZodString;
|
11
|
+
errorStack: z.ZodNullable<z.ZodString>;
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
13
|
+
errorName: string;
|
14
|
+
errorMessage: string;
|
15
|
+
errorStack: string | null;
|
16
|
+
}, {
|
17
|
+
errorName: string;
|
18
|
+
errorMessage: string;
|
19
|
+
errorStack: string | null;
|
20
|
+
}>;
|
package/dist/schema.js
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ArvoErrorSchema = void 0;
|
4
|
+
var zod_1 = require("zod");
|
5
|
+
/**
|
6
|
+
* Schema for Arvo error objects.
|
7
|
+
*
|
8
|
+
* This schema defines the structure of error objects used in the Arvo system.
|
9
|
+
* It uses Zod for runtime type checking and validation.
|
10
|
+
*/
|
11
|
+
exports.ArvoErrorSchema = zod_1.z.object({
|
12
|
+
errorName: zod_1.z.string().describe('The name of the error.'),
|
13
|
+
errorMessage: zod_1.z.string().describe('A descriptive message for the error.'),
|
14
|
+
errorStack: zod_1.z.string().nullable().describe('The stack trace of the error.'),
|
15
|
+
});
|