arvo-core 1.0.7 → 1.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
});
|