arvo-core 2.3.1 → 3.0.0
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/ArvoContract/SimpleArvoContract/index.d.ts +1 -0
- package/dist/ArvoContract/SimpleArvoContract/index.js +1 -0
- package/dist/ArvoContract/VersionedArvoContract/index.d.ts +1 -0
- package/dist/ArvoContract/VersionedArvoContract/index.js +8 -0
- package/dist/ArvoContract/VersionedArvoContract/types.d.ts +1 -0
- package/dist/ArvoContract/helpers.d.ts +1 -0
- package/dist/ArvoContract/helpers.js +8 -7
- package/dist/ArvoContract/index.d.ts +3 -0
- package/dist/ArvoContract/index.js +15 -2
- package/dist/ArvoContract/types.d.ts +3 -0
- package/dist/ArvoContract/validators.d.ts +1 -0
- package/dist/ArvoContract/validators.js +6 -0
- package/dist/ArvoEvent/helpers.js +3 -1
- package/dist/ArvoEvent/index.d.ts +169 -36
- package/dist/ArvoEvent/index.js +150 -39
- package/dist/ArvoEvent/schema.d.ts +6 -0
- package/dist/ArvoEvent/schema.js +11 -0
- package/dist/ArvoEvent/types.d.ts +4 -0
- package/dist/ArvoEventFactory/Orchestrator.d.ts +4 -2
- package/dist/ArvoEventFactory/Orchestrator.js +6 -4
- package/dist/ArvoEventFactory/index.d.ts +6 -3
- package/dist/ArvoEventFactory/index.js +6 -6
- package/dist/ArvoOrchestrationSubject/index.d.ts +1 -0
- package/dist/ArvoOrchestrationSubject/index.js +6 -4
- package/dist/ArvoOrchestrationSubject/schema.d.ts +5 -0
- package/dist/ArvoOrchestrationSubject/schema.js +6 -0
- package/dist/ArvoOrchestrationSubject/type.d.ts +2 -0
- package/dist/ArvoOrchestratorContract/index.js +3 -2
- package/dist/ArvoOrchestratorContract/types.d.ts +1 -0
- package/dist/index.d.ts +6 -0
- package/package.json +1 -1
@@ -50,6 +50,7 @@ export declare const createSimpleArvoContract: <TUri extends string, TType exten
|
|
50
50
|
uri: TUri;
|
51
51
|
type: TType;
|
52
52
|
versions: TVersions;
|
53
|
+
domain?: string;
|
53
54
|
metadata?: TMetaData;
|
54
55
|
description?: string;
|
55
56
|
}) => SimpleArvoContract<TUri, TType, TVersions, TMetaData>;
|
@@ -61,6 +61,7 @@ var createSimpleArvoContract = function (param) {
|
|
61
61
|
var emitType = "evt.".concat(param.type, ".success");
|
62
62
|
return (0, helpers_1.createArvoContract)({
|
63
63
|
uri: param.uri,
|
64
|
+
domain: param.domain,
|
64
65
|
type: "com.".concat(param.type),
|
65
66
|
description: param.description,
|
66
67
|
metadata: mergedMetadata,
|
@@ -26,6 +26,7 @@ export declare class VersionedArvoContract<TContract extends ArvoContract, TVers
|
|
26
26
|
get emits(): TContract["versions"][TVersion]["emits"];
|
27
27
|
get emitList(): { [K in keyof TContract["versions"][TVersion]["emits"] & string]: ArvoContractRecord<K, TContract["versions"][TVersion]["emits"][K]>; }[keyof TContract["versions"][TVersion]["emits"] & string][];
|
28
28
|
get dataschema(): `${TContract["uri"]}/${TVersion}`;
|
29
|
+
get domain(): string | null;
|
29
30
|
constructor(param: IVersionedArvoContract<TContract, TVersion>);
|
30
31
|
/**
|
31
32
|
* Converts the contract to JSON Schema format
|
@@ -98,6 +98,13 @@ var VersionedArvoContract = /** @class */ (function () {
|
|
98
98
|
enumerable: false,
|
99
99
|
configurable: true
|
100
100
|
});
|
101
|
+
Object.defineProperty(VersionedArvoContract.prototype, "domain", {
|
102
|
+
get: function () {
|
103
|
+
return this._contract.domain;
|
104
|
+
},
|
105
|
+
enumerable: false,
|
106
|
+
configurable: true
|
107
|
+
});
|
101
108
|
/**
|
102
109
|
* Converts the contract to JSON Schema format
|
103
110
|
* @returns Contract specification in JSON Schema format for documentation/serialization
|
@@ -107,6 +114,7 @@ var VersionedArvoContract = /** @class */ (function () {
|
|
107
114
|
return {
|
108
115
|
uri: this.uri,
|
109
116
|
description: this.description,
|
117
|
+
domain: this.domain,
|
110
118
|
version: this.version,
|
111
119
|
metadata: this.metadata,
|
112
120
|
accepts: {
|
@@ -30,6 +30,7 @@ export type ArvoContractRecordJsonSchema = {
|
|
30
30
|
export type VersionedArvoContractJSONSchema = {
|
31
31
|
uri: string;
|
32
32
|
description: string | null;
|
33
|
+
domain: string | null;
|
33
34
|
version: ArvoSemanticVersion;
|
34
35
|
accepts: ArvoContractRecordJsonSchema;
|
35
36
|
systemError: ArvoContractRecordJsonSchema;
|
@@ -39,6 +39,7 @@ export declare const createArvoContract: <TUri extends string, TType extends str
|
|
39
39
|
uri: TUri;
|
40
40
|
type: TType;
|
41
41
|
versions: TVersions;
|
42
|
+
domain?: string;
|
42
43
|
metadata?: TMetaData;
|
43
44
|
description?: string;
|
44
45
|
}) => ArvoContract<TUri, TType, TVersions, TMetaData>;
|
@@ -39,7 +39,7 @@ var utils_1 = require("../utils");
|
|
39
39
|
* ```
|
40
40
|
*/
|
41
41
|
var createArvoContract = function (contract) {
|
42
|
-
var _a, _b;
|
42
|
+
var _a, _b, _c;
|
43
43
|
var createErrorMessage = function (source, type, version) {
|
44
44
|
var versionString = version ? ", version=".concat(version) : '';
|
45
45
|
return (0, utils_1.cleanString)("\n In contract (uri=".concat(contract.uri).concat(versionString, "), the '").concat(source, "' event (type=").concat(type, ") must not start\n with '").concat(typegen_1.ArvoOrchestratorEventTypeGen.prefix, "' because this is a reserved pattern\n for Arvo orchestrators.\n "));
|
@@ -47,10 +47,10 @@ var createArvoContract = function (contract) {
|
|
47
47
|
if (typegen_1.ArvoOrchestratorEventTypeGen.isOrchestratorEventType(contract.type)) {
|
48
48
|
throw new Error(createErrorMessage('accepts', contract.type, null));
|
49
49
|
}
|
50
|
-
for (var _i = 0,
|
51
|
-
var
|
52
|
-
for (var
|
53
|
-
var emitType = _f
|
50
|
+
for (var _i = 0, _d = Object.entries(contract.versions); _i < _d.length; _i++) {
|
51
|
+
var _e = _d[_i], version = _e[0], versionContract = _e[1];
|
52
|
+
for (var _f = 0, _g = Object.keys(versionContract['emits']); _f < _g.length; _f++) {
|
53
|
+
var emitType = _g[_f];
|
54
54
|
if (typegen_1.ArvoOrchestratorEventTypeGen.isOrchestratorEventType(emitType)) {
|
55
55
|
throw new Error(createErrorMessage('emits', emitType, version));
|
56
56
|
}
|
@@ -59,8 +59,9 @@ var createArvoContract = function (contract) {
|
|
59
59
|
return new _1.default({
|
60
60
|
uri: contract.uri,
|
61
61
|
type: contract.type,
|
62
|
-
|
63
|
-
|
62
|
+
domain: (_a = contract === null || contract === void 0 ? void 0 : contract.domain) !== null && _a !== void 0 ? _a : null,
|
63
|
+
description: (_b = contract.description) !== null && _b !== void 0 ? _b : null,
|
64
|
+
metadata: (_c = contract.metadata) !== null && _c !== void 0 ? _c : {},
|
64
65
|
versions: contract.versions,
|
65
66
|
});
|
66
67
|
};
|
@@ -46,11 +46,13 @@ export default class ArvoContract<TUri extends string = string, TType extends st
|
|
46
46
|
protected readonly _versions: TVersions;
|
47
47
|
protected readonly _description: string | null;
|
48
48
|
protected readonly _metadata: TMetaData;
|
49
|
+
protected readonly _domain: string | null;
|
49
50
|
get uri(): TUri;
|
50
51
|
get type(): TType;
|
51
52
|
get versions(): TVersions;
|
52
53
|
get description(): string | null;
|
53
54
|
get metadata(): TMetaData;
|
55
|
+
get domain(): string | null;
|
54
56
|
/**
|
55
57
|
* Creates a new ArvoContract instance with validated parameters.
|
56
58
|
*
|
@@ -62,6 +64,7 @@ export default class ArvoContract<TUri extends string = string, TType extends st
|
|
62
64
|
* @throws {Error} When version is a reserved wildcard version
|
63
65
|
* @throws {Error} When emit type format is invalid
|
64
66
|
* @throws {Error} When no versions are provided
|
67
|
+
* @throws {Error} When domain does not have follow the condition Domain must contain only lowercase letters, numbers, and dots
|
65
68
|
*/
|
66
69
|
constructor(params: IArvoContract<TUri, TType, TVersions, TMetaData>);
|
67
70
|
/**
|
@@ -49,16 +49,19 @@ var ArvoContract = /** @class */ (function () {
|
|
49
49
|
* @throws {Error} When version is a reserved wildcard version
|
50
50
|
* @throws {Error} When emit type format is invalid
|
51
51
|
* @throws {Error} When no versions are provided
|
52
|
+
* @throws {Error} When domain does not have follow the condition Domain must contain only lowercase letters, numbers, and dots
|
52
53
|
*/
|
53
54
|
function ArvoContract(params) {
|
54
55
|
var _a;
|
56
|
+
validators_1.ArvoContractValidators.contract.uri.parse(params.uri);
|
57
|
+
validators_1.ArvoContractValidators.record.type.parse(params.type);
|
58
|
+
validators_1.ArvoContractValidators.contract.domain.parse(params.domain);
|
55
59
|
this._uri = params.uri;
|
56
60
|
this._type = params.type;
|
57
61
|
this._versions = params.versions;
|
58
62
|
this._description = (_a = params.description) !== null && _a !== void 0 ? _a : null;
|
59
63
|
this._metadata = params.metadata;
|
60
|
-
|
61
|
-
validators_1.ArvoContractValidators.record.type.parse(params.type);
|
64
|
+
this._domain = params.domain;
|
62
65
|
for (var _i = 0, _b = Object.entries(params.versions); _i < _b.length; _i++) {
|
63
66
|
var _c = _b[_i], version = _c[0], versionContract = _c[1];
|
64
67
|
schema_1.ArvoSemanticVersionSchema.parse(version);
|
@@ -109,6 +112,13 @@ var ArvoContract = /** @class */ (function () {
|
|
109
112
|
enumerable: false,
|
110
113
|
configurable: true
|
111
114
|
});
|
115
|
+
Object.defineProperty(ArvoContract.prototype, "domain", {
|
116
|
+
get: function () {
|
117
|
+
return this._domain;
|
118
|
+
},
|
119
|
+
enumerable: false,
|
120
|
+
configurable: true
|
121
|
+
});
|
112
122
|
Object.defineProperty(ArvoContract.prototype, "systemError", {
|
113
123
|
/**
|
114
124
|
* Gets the system error event specification for this contract.
|
@@ -183,6 +193,7 @@ var ArvoContract = /** @class */ (function () {
|
|
183
193
|
return {
|
184
194
|
uri: this._uri,
|
185
195
|
type: this._type,
|
196
|
+
domain: this._domain,
|
186
197
|
description: this._description,
|
187
198
|
versions: this._versions,
|
188
199
|
metadata: this._metadata,
|
@@ -198,11 +209,13 @@ var ArvoContract = /** @class */ (function () {
|
|
198
209
|
try {
|
199
210
|
return {
|
200
211
|
uri: this._uri,
|
212
|
+
domain: this._domain,
|
201
213
|
description: this._description,
|
202
214
|
metadata: this._metadata,
|
203
215
|
versions: Object.keys(this._versions).map(function (version) {
|
204
216
|
var jsonSchema = _this.version(version).toJsonSchema();
|
205
217
|
return {
|
218
|
+
domain: jsonSchema.domain,
|
206
219
|
version: jsonSchema.version,
|
207
220
|
accepts: jsonSchema.accepts,
|
208
221
|
systemError: jsonSchema.systemError,
|
@@ -44,6 +44,8 @@ export interface IArvoContract<TUri extends string = string, TType extends strin
|
|
44
44
|
metadata: TMetaData;
|
45
45
|
/** A record mapping semantic versions to their corresponding schemas */
|
46
46
|
versions: TVersions;
|
47
|
+
/** The domain of the contract handler */
|
48
|
+
domain: string | null;
|
47
49
|
}
|
48
50
|
/**
|
49
51
|
* Represents the JSON Schema representation of an ArvoContract, used for serialization
|
@@ -51,6 +53,7 @@ export interface IArvoContract<TUri extends string = string, TType extends strin
|
|
51
53
|
*/
|
52
54
|
export type ArvoContractJSONSchema = {
|
53
55
|
uri: string;
|
56
|
+
domain: string | null;
|
54
57
|
description: string | null;
|
55
58
|
metadata: Record<string, any> | null;
|
56
59
|
versions: Omit<VersionedArvoContractJSONSchema, 'uri' | 'description'>[];
|
@@ -10,6 +10,12 @@ exports.ArvoContractValidators = {
|
|
10
10
|
.min(1, 'URI must be a non-empty string')
|
11
11
|
.refine(utils_1.validateURI, 'The URI must a valid URI string')
|
12
12
|
.describe((0, utils_1.cleanString)("\n The addressable unique URI of the contract so that\n it can be located and address for reference during\n operations\n ")),
|
13
|
+
domain: zod_1.z
|
14
|
+
.string()
|
15
|
+
.min(1, 'The domain must be non-empty string')
|
16
|
+
.regex(/^[a-z0-9.]+$/, 'Domain must contain only lowercase letters, numbers, and dots')
|
17
|
+
.nullable()
|
18
|
+
.describe('The contract handler domian'),
|
13
19
|
},
|
14
20
|
record: {
|
15
21
|
type: zod_1.z
|
@@ -13,7 +13,7 @@ var schema_1 = require("./schema");
|
|
13
13
|
* Internal generator function for creating instances.
|
14
14
|
*/
|
15
15
|
var generator = function (event, extensions, otelHeaders) {
|
16
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
16
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
17
17
|
if (event.datacontenttype && event.datacontenttype !== schema_1.ArvoDataContentType) {
|
18
18
|
var warning = (0, utils_1.cleanString)("\n Warning! The provided datacontenttype(=".concat(event.datacontenttype, ")\n is not ArvoEvent compatible (=").concat(schema_1.ArvoDataContentType, "). There may \n be some limited functionality.\n "));
|
19
19
|
(0, OpenTelemetry_1.logToSpan)({
|
@@ -36,6 +36,8 @@ var generator = function (event, extensions, otelHeaders) {
|
|
36
36
|
to: event.to ? encodeURI(event.to) : encodeURI(event.type),
|
37
37
|
redirectto: event.redirectto ? encodeURI(event.redirectto) : null,
|
38
38
|
dataschema: event.dataschema ? encodeURI(event.dataschema) : null,
|
39
|
+
parentid: event.parentid ? encodeURI(event.parentid) : null,
|
40
|
+
domain: (_l = event.domain) !== null && _l !== void 0 ? _l : null,
|
39
41
|
}, event.data, extensions);
|
40
42
|
};
|
41
43
|
/**
|
@@ -1,37 +1,105 @@
|
|
1
1
|
import type { InferArvoEvent } from '../types';
|
2
2
|
import type { ArvoEventData, ArvoExtension, CloudEventContext, CloudEventExtension, OpenTelemetryExtension } from './types';
|
3
3
|
/**
|
4
|
-
* Represents an ArvoEvent, which extends the CloudEvent specification
|
4
|
+
* Represents an ArvoEvent, which extends the CloudEvent specification with
|
5
|
+
* Arvo-specific extensions for event routing, access control, execution metrics,
|
6
|
+
* and OpenTelemetry distributed tracing support.
|
5
7
|
*/
|
6
8
|
export default class ArvoEvent<TData extends ArvoEventData = ArvoEventData, TExtension extends CloudEventExtension = CloudEventExtension, TType extends string = string> {
|
9
|
+
/** Unique identifier of the event */
|
7
10
|
readonly id: string;
|
11
|
+
/**
|
12
|
+
* URI reference identifying the context in which the event happened.
|
13
|
+
* Must be a properly encoded URI representing the event producer.
|
14
|
+
*/
|
8
15
|
readonly source: string;
|
16
|
+
/**
|
17
|
+
* The version of the CloudEvents specification which the event uses.
|
18
|
+
* Must be '1.0' for this version of the specification.
|
19
|
+
*/
|
9
20
|
readonly specversion: string;
|
21
|
+
/**
|
22
|
+
* Describes the type of event related to the originating occurrence.
|
23
|
+
* Must follow reverse-DNS naming convention (e.g., 'com.example.service.eventtype').
|
24
|
+
*/
|
10
25
|
readonly type: TType;
|
26
|
+
/**
|
27
|
+
* Identifies the subject of the event in the context of the event producer.
|
28
|
+
* In Arvo, this must be the Process ID and must be a properly encoded URI.
|
29
|
+
*/
|
11
30
|
readonly subject: string;
|
31
|
+
/**
|
32
|
+
* Content type of the data value following RFC 2046 format.
|
33
|
+
* Must contain 'application/cloudevents+json' or 'application/json'.
|
34
|
+
* Defaults to 'application/cloudevents+json;charset=UTF-8;profile=arvo'.
|
35
|
+
*/
|
12
36
|
readonly datacontenttype: string;
|
37
|
+
/**
|
38
|
+
* URI identifying the schema that the data adheres to.
|
39
|
+
* Must be a properly encoded URI if present, null otherwise.
|
40
|
+
*/
|
13
41
|
readonly dataschema: string | null;
|
42
|
+
/** The event data payload as a JSON serializable object */
|
14
43
|
readonly data: TData;
|
44
|
+
/**
|
45
|
+
* Timestamp of when the occurrence happened in RFC 3339 format.
|
46
|
+
* If the actual occurrence time cannot be determined, this may be set
|
47
|
+
* to another time (such as current time) by the producer.
|
48
|
+
*/
|
15
49
|
readonly time: string;
|
16
50
|
private readonly _extensions;
|
17
51
|
/**
|
18
|
-
* Creates an instance of ArvoEvent.
|
19
|
-
* @param context - The CloudEvent context along with Arvo and OpenTelemetry extensions.
|
20
|
-
* @param data - The event data.
|
21
|
-
* @param extensions - Optional additional extensions.
|
52
|
+
* Creates an instance of ArvoEvent with CloudEvent context, data, and optional extensions.
|
22
53
|
*
|
23
|
-
* @
|
24
|
-
*
|
54
|
+
* @param context - The CloudEvent context combined with required Arvo and OpenTelemetry extensions
|
55
|
+
* @param data - The event data payload (must be JSON serializable)
|
56
|
+
* @param extensions - Optional additional custom extensions with lowercase alphanumeric keys
|
57
|
+
*
|
58
|
+
* @throws {Error} If datacontenttype is "application/cloudevents+json;charset=UTF-8;profile=arvo" but the 'to' field is not defined
|
59
|
+
* @throws {Error} If any validation fails according to the respective schemas
|
60
|
+
*
|
61
|
+
* @example
|
62
|
+
* ```typescript
|
63
|
+
* const event = new ArvoEvent(
|
64
|
+
* {
|
65
|
+
* id: 'event-123',
|
66
|
+
* source: 'https://example.com/service',
|
67
|
+
* type: 'com.example.user.created',
|
68
|
+
* subject: 'https://example.com/users/123',
|
69
|
+
* time: new Date().toISOString(),
|
70
|
+
* specversion: '1.0',
|
71
|
+
* datacontenttype: 'application/cloudevents+json;charset=UTF-8;profile=arvo',
|
72
|
+
* dataschema: null,
|
73
|
+
* to: 'com.example.user.processor',
|
74
|
+
* accesscontrol: 'role:admin;department:hr',
|
75
|
+
* redirectto: null,
|
76
|
+
* executionunits: 10,
|
77
|
+
* parentid: 'parent-event-456',
|
78
|
+
* domain: 'analytics',
|
79
|
+
* traceparent: '00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01',
|
80
|
+
* tracestate: 'vendor=trace-data'
|
81
|
+
* },
|
82
|
+
* { userId: '123', name: 'John Doe' }
|
83
|
+
* );
|
84
|
+
* ```
|
25
85
|
*/
|
26
86
|
constructor(context: CloudEventContext & ArvoExtension & OpenTelemetryExtension, data: TData, extensions?: TExtension);
|
27
87
|
/**
|
28
|
-
* Gets the CloudEvent-specified default
|
29
|
-
*
|
30
|
-
*
|
31
|
-
* `
|
32
|
-
* -
|
33
|
-
*
|
34
|
-
*
|
88
|
+
* Gets the CloudEvent-specified fields separated into default attributes and extensions.
|
89
|
+
*
|
90
|
+
* @returns An object containing:
|
91
|
+
* - `default`: Standard CloudEvent attributes (id, source, specversion, type, subject, datacontenttype, dataschema, data, time)
|
92
|
+
* - `extensions`: All extension attributes including:
|
93
|
+
* - Arvo extensions
|
94
|
+
* - OpenTelemetry extensions
|
95
|
+
* - Custom extensions
|
96
|
+
*
|
97
|
+
* @example
|
98
|
+
* ```typescript
|
99
|
+
* const { default: defaults, extensions } = event.cloudevent;
|
100
|
+
* console.log(defaults.id); // Event ID
|
101
|
+
* console.log(extensions.to); // Arvo 'to' field
|
102
|
+
* ```
|
35
103
|
*/
|
36
104
|
get cloudevent(): {
|
37
105
|
default: {
|
@@ -50,36 +118,57 @@ export default class ArvoEvent<TData extends ArvoEventData = ArvoEventData, TExt
|
|
50
118
|
accesscontrol: string | null;
|
51
119
|
redirectto: string | null;
|
52
120
|
executionunits: number | null;
|
121
|
+
parentid: string | null;
|
122
|
+
domain: string | null;
|
53
123
|
} & {
|
54
124
|
traceparent: string | null;
|
55
125
|
tracestate: string | null;
|
56
126
|
};
|
57
127
|
};
|
58
128
|
/**
|
59
|
-
* Converts the ArvoEvent to a JSON-serializable object
|
60
|
-
*
|
61
|
-
*
|
129
|
+
* Converts the ArvoEvent to a JSON-serializable object by combining
|
130
|
+
* all CloudEvent default fields with all extensions into a single flat object.
|
131
|
+
*
|
132
|
+
* @returns A flat object containing all CloudEvent fields and extensions,
|
133
|
+
* suitable for JSON serialization and network transmission
|
62
134
|
*
|
63
135
|
* @remarks
|
64
|
-
* This method
|
65
|
-
* (
|
66
|
-
*
|
67
|
-
*
|
136
|
+
* This method creates a flattened representation where both standard CloudEvent
|
137
|
+
* fields and all extensions (Arvo, OpenTelemetry, and custom) are at the same level.
|
138
|
+
* For separated access to defaults and extensions, use the `cloudevent` getter instead.
|
139
|
+
*
|
140
|
+
* @example
|
141
|
+
* ```typescript
|
142
|
+
* const jsonObj = event.toJSON();
|
143
|
+
* // Contains: id, source, type, subject, data, time, to, traceparent, etc.
|
144
|
+
* ```
|
68
145
|
*/
|
69
146
|
toJSON(): InferArvoEvent<typeof this>;
|
70
147
|
/**
|
71
|
-
* Converts the ArvoEvent to a JSON string.
|
72
|
-
*
|
73
|
-
* @
|
148
|
+
* Converts the ArvoEvent to a JSON string representation.
|
149
|
+
*
|
150
|
+
* @param spacing - The number of spaces to use for indentation (default: 0 for compact output)
|
151
|
+
* @returns A JSON string representation of the complete ArvoEvent
|
152
|
+
*
|
153
|
+
* @example
|
154
|
+
* ```typescript
|
155
|
+
* const compactJson = event.toString(); // Compact JSON
|
156
|
+
* const prettyJson = event.toString(2); // Pretty-printed with 2-space indentation
|
157
|
+
* ```
|
74
158
|
*/
|
75
159
|
toString(spacing?: number): string;
|
76
160
|
/**
|
77
|
-
* Gets OpenTelemetry attributes derived from the ArvoEvent.
|
78
|
-
*
|
79
|
-
*
|
80
|
-
*
|
81
|
-
*
|
82
|
-
*
|
161
|
+
* Gets OpenTelemetry attributes derived from the ArvoEvent for distributed tracing.
|
162
|
+
*
|
163
|
+
* @returns An object containing OpenTelemetry semantic convention attributes:
|
164
|
+
* - Standard CloudEvent attributes prefixed with 'cloudevents.event_*'
|
165
|
+
* - Arvo-specific attributes prefixed with 'cloudevents.arvo.*'
|
166
|
+
* - Uses 'N/A' for undefined/null values to maintain telemetry consistency
|
167
|
+
*
|
168
|
+
* @remarks
|
169
|
+
* The attributes follow the OpenTelemetry semantic conventions for CloudEvents
|
170
|
+
* as specified in the official documentation:
|
171
|
+
* https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloudevents/
|
83
172
|
*/
|
84
173
|
get otelAttributes(): {
|
85
174
|
'cloudevents.event_id': string;
|
@@ -93,22 +182,66 @@ export default class ArvoEvent<TData extends ArvoEventData = ArvoEventData, TExt
|
|
93
182
|
'cloudevents.arvo.event_redirectto': string;
|
94
183
|
'cloudevents.arvo.event_to': string;
|
95
184
|
'cloudevents.arvo.event_executionunits': string | number;
|
185
|
+
'cloudevents.arvo.event_parentid': string;
|
186
|
+
'cloudevents.arvo.event_domain': string;
|
96
187
|
};
|
188
|
+
/**
|
189
|
+
* Gets the target consumer machine for event routing.
|
190
|
+
*/
|
97
191
|
get to(): string | null;
|
192
|
+
/**
|
193
|
+
* Gets the access control information for the event.
|
194
|
+
* Can contain:
|
195
|
+
* - A UserID (valid UUID)
|
196
|
+
* - An encrypted base64 string with access control data
|
197
|
+
* - Key-value pairs (semicolon-separated, colon-delimited)
|
198
|
+
* Example: "role:admin;department:finance;clearance:top-secret"
|
199
|
+
*/
|
98
200
|
get accesscontrol(): string | null;
|
201
|
+
/**
|
202
|
+
* Gets the alternative recipient or destination for dynamic routing.
|
203
|
+
* Enables complex workflows and conditional event routing.
|
204
|
+
*/
|
99
205
|
get redirectto(): string | null;
|
206
|
+
/**
|
207
|
+
* Gets the execution units representing the cost associated with
|
208
|
+
* generating this event. Used for tracking financial impact and
|
209
|
+
* resource utilization in cloud-based systems.
|
210
|
+
*/
|
100
211
|
get executionunits(): number | null;
|
212
|
+
/**
|
213
|
+
* Gets the OpenTelemetry traceparent header containing trace context
|
214
|
+
* information including trace ID, parent span ID, and trace flags
|
215
|
+
* for distributed tracing across services.
|
216
|
+
*/
|
101
217
|
get traceparent(): string | null;
|
218
|
+
/**
|
219
|
+
* Gets the OpenTelemetry tracestate header containing vendor-specific
|
220
|
+
* trace information as key-value pairs propagated alongside traceparent
|
221
|
+
* in distributed tracing scenarios.
|
222
|
+
*/
|
102
223
|
get tracestate(): string | null;
|
103
224
|
/**
|
104
|
-
* Gets the
|
225
|
+
* Gets the unique identifier of the event that directly triggered
|
226
|
+
* the creation of this event within the Arvo ecosystem.
|
227
|
+
* Establishes direct causal relationships for event lineage tracking.
|
228
|
+
* Null indicates an initiating event or generation outside direct causation.
|
229
|
+
*/
|
230
|
+
get parentid(): string | null;
|
231
|
+
/**
|
232
|
+
* Gets the processing domain for event routing and workflow orchestration.
|
233
|
+
*/
|
234
|
+
get domain(): string | null;
|
235
|
+
/**
|
236
|
+
* Gets only the custom extensions (TExtension) added to the ArvoEvent,
|
237
|
+
* excluding the standard Arvo and OpenTelemetry extensions.
|
238
|
+
*
|
239
|
+
* @returns The custom extensions object with Arvo and OpenTelemetry fields removed
|
105
240
|
*
|
106
241
|
* @remarks
|
107
|
-
*
|
108
|
-
*
|
109
|
-
*
|
110
|
-
* use `<ArvoEvent>.cloudevent.extensions`.
|
111
|
-
* For accessing the basic CloudEvent fields, use `<ArvoEvent>.cloudevent.default`.
|
242
|
+
* For accessing all extensions including Arvo and OpenTelemetry, use `cloudevent.extensions`.
|
243
|
+
* For accessing basic CloudEvent fields, use `cloudevent.default`.
|
244
|
+
* Custom extension keys must follow lowercase alphanumeric naming (a-z, 0-9 only).
|
112
245
|
*/
|
113
246
|
get extensions(): TExtension;
|
114
247
|
}
|
package/dist/ArvoEvent/index.js
CHANGED
@@ -25,17 +25,45 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
25
|
var OpenTelemetry_1 = require("../OpenTelemetry");
|
26
26
|
var schema_1 = require("./schema");
|
27
27
|
/**
|
28
|
-
* Represents an ArvoEvent, which extends the CloudEvent specification
|
28
|
+
* Represents an ArvoEvent, which extends the CloudEvent specification with
|
29
|
+
* Arvo-specific extensions for event routing, access control, execution metrics,
|
30
|
+
* and OpenTelemetry distributed tracing support.
|
29
31
|
*/
|
30
32
|
var ArvoEvent = /** @class */ (function () {
|
31
33
|
/**
|
32
|
-
* Creates an instance of ArvoEvent.
|
33
|
-
* @param context - The CloudEvent context along with Arvo and OpenTelemetry extensions.
|
34
|
-
* @param data - The event data.
|
35
|
-
* @param extensions - Optional additional extensions.
|
34
|
+
* Creates an instance of ArvoEvent with CloudEvent context, data, and optional extensions.
|
36
35
|
*
|
37
|
-
* @
|
38
|
-
*
|
36
|
+
* @param context - The CloudEvent context combined with required Arvo and OpenTelemetry extensions
|
37
|
+
* @param data - The event data payload (must be JSON serializable)
|
38
|
+
* @param extensions - Optional additional custom extensions with lowercase alphanumeric keys
|
39
|
+
*
|
40
|
+
* @throws {Error} If datacontenttype is "application/cloudevents+json;charset=UTF-8;profile=arvo" but the 'to' field is not defined
|
41
|
+
* @throws {Error} If any validation fails according to the respective schemas
|
42
|
+
*
|
43
|
+
* @example
|
44
|
+
* ```typescript
|
45
|
+
* const event = new ArvoEvent(
|
46
|
+
* {
|
47
|
+
* id: 'event-123',
|
48
|
+
* source: 'https://example.com/service',
|
49
|
+
* type: 'com.example.user.created',
|
50
|
+
* subject: 'https://example.com/users/123',
|
51
|
+
* time: new Date().toISOString(),
|
52
|
+
* specversion: '1.0',
|
53
|
+
* datacontenttype: 'application/cloudevents+json;charset=UTF-8;profile=arvo',
|
54
|
+
* dataschema: null,
|
55
|
+
* to: 'com.example.user.processor',
|
56
|
+
* accesscontrol: 'role:admin;department:hr',
|
57
|
+
* redirectto: null,
|
58
|
+
* executionunits: 10,
|
59
|
+
* parentid: 'parent-event-456',
|
60
|
+
* domain: 'analytics',
|
61
|
+
* traceparent: '00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01',
|
62
|
+
* tracestate: 'vendor=trace-data'
|
63
|
+
* },
|
64
|
+
* { userId: '123', name: 'John Doe' }
|
65
|
+
* );
|
66
|
+
* ```
|
39
67
|
*/
|
40
68
|
function ArvoEvent(context, data, extensions) {
|
41
69
|
var cloudEventContext = schema_1.CloudEventContextSchema.parse(context);
|
@@ -50,7 +78,7 @@ var ArvoEvent = /** @class */ (function () {
|
|
50
78
|
this.data = schema_1.ArvoDataSchema.parse(data);
|
51
79
|
var arvoExtension = schema_1.ArvoExtensionSchema.parse(context);
|
52
80
|
var otelExtension = schema_1.OpenTelemetryExtensionSchema.parse(context);
|
53
|
-
this._extensions = __assign(__assign({}, (extensions ? schema_1.CloudEventExtensionSchema.parse(extensions) : {})), { to: arvoExtension.to, accesscontrol: arvoExtension.accesscontrol, redirectto: arvoExtension.redirectto, executionunits: arvoExtension.executionunits, traceparent: otelExtension.traceparent, tracestate: otelExtension.tracestate });
|
81
|
+
this._extensions = __assign(__assign({}, (extensions ? schema_1.CloudEventExtensionSchema.parse(extensions) : {})), { to: arvoExtension.to, accesscontrol: arvoExtension.accesscontrol, redirectto: arvoExtension.redirectto, executionunits: arvoExtension.executionunits, traceparent: otelExtension.traceparent, tracestate: otelExtension.tracestate, parentid: arvoExtension.parentid, domain: arvoExtension.domain });
|
54
82
|
if (this.datacontenttype === schema_1.ArvoDataContentType) {
|
55
83
|
if (!this._extensions.to) {
|
56
84
|
throw new Error("The ArvoEvent must have a non-empty 'to' field");
|
@@ -61,13 +89,21 @@ var ArvoEvent = /** @class */ (function () {
|
|
61
89
|
}
|
62
90
|
Object.defineProperty(ArvoEvent.prototype, "cloudevent", {
|
63
91
|
/**
|
64
|
-
* Gets the CloudEvent-specified default
|
65
|
-
*
|
66
|
-
*
|
67
|
-
* `
|
68
|
-
* -
|
69
|
-
*
|
70
|
-
*
|
92
|
+
* Gets the CloudEvent-specified fields separated into default attributes and extensions.
|
93
|
+
*
|
94
|
+
* @returns An object containing:
|
95
|
+
* - `default`: Standard CloudEvent attributes (id, source, specversion, type, subject, datacontenttype, dataschema, data, time)
|
96
|
+
* - `extensions`: All extension attributes including:
|
97
|
+
* - Arvo extensions
|
98
|
+
* - OpenTelemetry extensions
|
99
|
+
* - Custom extensions
|
100
|
+
*
|
101
|
+
* @example
|
102
|
+
* ```typescript
|
103
|
+
* const { default: defaults, extensions } = event.cloudevent;
|
104
|
+
* console.log(defaults.id); // Event ID
|
105
|
+
* console.log(extensions.to); // Arvo 'to' field
|
106
|
+
* ```
|
71
107
|
*/
|
72
108
|
get: function () {
|
73
109
|
return {
|
@@ -89,23 +125,37 @@ var ArvoEvent = /** @class */ (function () {
|
|
89
125
|
configurable: true
|
90
126
|
});
|
91
127
|
/**
|
92
|
-
* Converts the ArvoEvent to a JSON-serializable object
|
93
|
-
*
|
94
|
-
*
|
128
|
+
* Converts the ArvoEvent to a JSON-serializable object by combining
|
129
|
+
* all CloudEvent default fields with all extensions into a single flat object.
|
130
|
+
*
|
131
|
+
* @returns A flat object containing all CloudEvent fields and extensions,
|
132
|
+
* suitable for JSON serialization and network transmission
|
95
133
|
*
|
96
134
|
* @remarks
|
97
|
-
* This method
|
98
|
-
* (
|
99
|
-
*
|
100
|
-
*
|
135
|
+
* This method creates a flattened representation where both standard CloudEvent
|
136
|
+
* fields and all extensions (Arvo, OpenTelemetry, and custom) are at the same level.
|
137
|
+
* For separated access to defaults and extensions, use the `cloudevent` getter instead.
|
138
|
+
*
|
139
|
+
* @example
|
140
|
+
* ```typescript
|
141
|
+
* const jsonObj = event.toJSON();
|
142
|
+
* // Contains: id, source, type, subject, data, time, to, traceparent, etc.
|
143
|
+
* ```
|
101
144
|
*/
|
102
145
|
ArvoEvent.prototype.toJSON = function () {
|
103
146
|
return __assign(__assign({}, this.cloudevent.default), this._extensions);
|
104
147
|
};
|
105
148
|
/**
|
106
|
-
* Converts the ArvoEvent to a JSON string.
|
107
|
-
*
|
108
|
-
* @
|
149
|
+
* Converts the ArvoEvent to a JSON string representation.
|
150
|
+
*
|
151
|
+
* @param spacing - The number of spaces to use for indentation (default: 0 for compact output)
|
152
|
+
* @returns A JSON string representation of the complete ArvoEvent
|
153
|
+
*
|
154
|
+
* @example
|
155
|
+
* ```typescript
|
156
|
+
* const compactJson = event.toString(); // Compact JSON
|
157
|
+
* const prettyJson = event.toString(2); // Pretty-printed with 2-space indentation
|
158
|
+
* ```
|
109
159
|
*/
|
110
160
|
ArvoEvent.prototype.toString = function (spacing) {
|
111
161
|
if (spacing === void 0) { spacing = 0; }
|
@@ -113,15 +163,20 @@ var ArvoEvent = /** @class */ (function () {
|
|
113
163
|
};
|
114
164
|
Object.defineProperty(ArvoEvent.prototype, "otelAttributes", {
|
115
165
|
/**
|
116
|
-
* Gets OpenTelemetry attributes derived from the ArvoEvent.
|
117
|
-
*
|
118
|
-
*
|
119
|
-
*
|
120
|
-
*
|
121
|
-
*
|
166
|
+
* Gets OpenTelemetry attributes derived from the ArvoEvent for distributed tracing.
|
167
|
+
*
|
168
|
+
* @returns An object containing OpenTelemetry semantic convention attributes:
|
169
|
+
* - Standard CloudEvent attributes prefixed with 'cloudevents.event_*'
|
170
|
+
* - Arvo-specific attributes prefixed with 'cloudevents.arvo.*'
|
171
|
+
* - Uses 'N/A' for undefined/null values to maintain telemetry consistency
|
172
|
+
*
|
173
|
+
* @remarks
|
174
|
+
* The attributes follow the OpenTelemetry semantic conventions for CloudEvents
|
175
|
+
* as specified in the official documentation:
|
176
|
+
* https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloudevents/
|
122
177
|
*/
|
123
178
|
get: function () {
|
124
|
-
var _a, _b, _c, _d;
|
179
|
+
var _a, _b, _c, _d, _e, _f;
|
125
180
|
return {
|
126
181
|
'cloudevents.event_id': this.id || OpenTelemetry_1.OTelNull,
|
127
182
|
'cloudevents.event_source': this.source || OpenTelemetry_1.OTelNull,
|
@@ -134,12 +189,17 @@ var ArvoEvent = /** @class */ (function () {
|
|
134
189
|
'cloudevents.arvo.event_redirectto': (_b = this._extensions.redirectto) !== null && _b !== void 0 ? _b : OpenTelemetry_1.OTelNull,
|
135
190
|
'cloudevents.arvo.event_to': (_c = this._extensions.to) !== null && _c !== void 0 ? _c : OpenTelemetry_1.OTelNull,
|
136
191
|
'cloudevents.arvo.event_executionunits': (_d = this._extensions.executionunits) !== null && _d !== void 0 ? _d : OpenTelemetry_1.OTelNull,
|
192
|
+
'cloudevents.arvo.event_parentid': (_e = this._extensions.parentid) !== null && _e !== void 0 ? _e : OpenTelemetry_1.OTelNull,
|
193
|
+
'cloudevents.arvo.event_domain': (_f = this._extensions.domain) !== null && _f !== void 0 ? _f : OpenTelemetry_1.OTelNull,
|
137
194
|
};
|
138
195
|
},
|
139
196
|
enumerable: false,
|
140
197
|
configurable: true
|
141
198
|
});
|
142
199
|
Object.defineProperty(ArvoEvent.prototype, "to", {
|
200
|
+
/**
|
201
|
+
* Gets the target consumer machine for event routing.
|
202
|
+
*/
|
143
203
|
get: function () {
|
144
204
|
return this._extensions.to;
|
145
205
|
},
|
@@ -147,6 +207,14 @@ var ArvoEvent = /** @class */ (function () {
|
|
147
207
|
configurable: true
|
148
208
|
});
|
149
209
|
Object.defineProperty(ArvoEvent.prototype, "accesscontrol", {
|
210
|
+
/**
|
211
|
+
* Gets the access control information for the event.
|
212
|
+
* Can contain:
|
213
|
+
* - A UserID (valid UUID)
|
214
|
+
* - An encrypted base64 string with access control data
|
215
|
+
* - Key-value pairs (semicolon-separated, colon-delimited)
|
216
|
+
* Example: "role:admin;department:finance;clearance:top-secret"
|
217
|
+
*/
|
150
218
|
get: function () {
|
151
219
|
return this._extensions.accesscontrol;
|
152
220
|
},
|
@@ -154,6 +222,10 @@ var ArvoEvent = /** @class */ (function () {
|
|
154
222
|
configurable: true
|
155
223
|
});
|
156
224
|
Object.defineProperty(ArvoEvent.prototype, "redirectto", {
|
225
|
+
/**
|
226
|
+
* Gets the alternative recipient or destination for dynamic routing.
|
227
|
+
* Enables complex workflows and conditional event routing.
|
228
|
+
*/
|
157
229
|
get: function () {
|
158
230
|
return this._extensions.redirectto;
|
159
231
|
},
|
@@ -161,6 +233,11 @@ var ArvoEvent = /** @class */ (function () {
|
|
161
233
|
configurable: true
|
162
234
|
});
|
163
235
|
Object.defineProperty(ArvoEvent.prototype, "executionunits", {
|
236
|
+
/**
|
237
|
+
* Gets the execution units representing the cost associated with
|
238
|
+
* generating this event. Used for tracking financial impact and
|
239
|
+
* resource utilization in cloud-based systems.
|
240
|
+
*/
|
164
241
|
get: function () {
|
165
242
|
return this._extensions.executionunits;
|
166
243
|
},
|
@@ -168,6 +245,11 @@ var ArvoEvent = /** @class */ (function () {
|
|
168
245
|
configurable: true
|
169
246
|
});
|
170
247
|
Object.defineProperty(ArvoEvent.prototype, "traceparent", {
|
248
|
+
/**
|
249
|
+
* Gets the OpenTelemetry traceparent header containing trace context
|
250
|
+
* information including trace ID, parent span ID, and trace flags
|
251
|
+
* for distributed tracing across services.
|
252
|
+
*/
|
171
253
|
get: function () {
|
172
254
|
return this._extensions.traceparent;
|
173
255
|
},
|
@@ -175,26 +257,55 @@ var ArvoEvent = /** @class */ (function () {
|
|
175
257
|
configurable: true
|
176
258
|
});
|
177
259
|
Object.defineProperty(ArvoEvent.prototype, "tracestate", {
|
260
|
+
/**
|
261
|
+
* Gets the OpenTelemetry tracestate header containing vendor-specific
|
262
|
+
* trace information as key-value pairs propagated alongside traceparent
|
263
|
+
* in distributed tracing scenarios.
|
264
|
+
*/
|
178
265
|
get: function () {
|
179
266
|
return this._extensions.tracestate;
|
180
267
|
},
|
181
268
|
enumerable: false,
|
182
269
|
configurable: true
|
183
270
|
});
|
271
|
+
Object.defineProperty(ArvoEvent.prototype, "parentid", {
|
272
|
+
/**
|
273
|
+
* Gets the unique identifier of the event that directly triggered
|
274
|
+
* the creation of this event within the Arvo ecosystem.
|
275
|
+
* Establishes direct causal relationships for event lineage tracking.
|
276
|
+
* Null indicates an initiating event or generation outside direct causation.
|
277
|
+
*/
|
278
|
+
get: function () {
|
279
|
+
return this._extensions.parentid;
|
280
|
+
},
|
281
|
+
enumerable: false,
|
282
|
+
configurable: true
|
283
|
+
});
|
284
|
+
Object.defineProperty(ArvoEvent.prototype, "domain", {
|
285
|
+
/**
|
286
|
+
* Gets the processing domain for event routing and workflow orchestration.
|
287
|
+
*/
|
288
|
+
get: function () {
|
289
|
+
return this._extensions.domain;
|
290
|
+
},
|
291
|
+
enumerable: false,
|
292
|
+
configurable: true
|
293
|
+
});
|
184
294
|
Object.defineProperty(ArvoEvent.prototype, "extensions", {
|
185
295
|
/**
|
186
|
-
* Gets the custom extensions
|
296
|
+
* Gets only the custom extensions (TExtension) added to the ArvoEvent,
|
297
|
+
* excluding the standard Arvo and OpenTelemetry extensions.
|
298
|
+
*
|
299
|
+
* @returns The custom extensions object with Arvo and OpenTelemetry fields removed
|
187
300
|
*
|
188
301
|
* @remarks
|
189
|
-
*
|
190
|
-
*
|
191
|
-
*
|
192
|
-
* use `<ArvoEvent>.cloudevent.extensions`.
|
193
|
-
* For accessing the basic CloudEvent fields, use `<ArvoEvent>.cloudevent.default`.
|
302
|
+
* For accessing all extensions including Arvo and OpenTelemetry, use `cloudevent.extensions`.
|
303
|
+
* For accessing basic CloudEvent fields, use `cloudevent.default`.
|
304
|
+
* Custom extension keys must follow lowercase alphanumeric naming (a-z, 0-9 only).
|
194
305
|
*/
|
195
306
|
get: function () {
|
196
307
|
var _a = this
|
197
|
-
._extensions, traceparent = _a.traceparent, tracestate = _a.tracestate, to = _a.to, redirectto = _a.redirectto, accesscontrol = _a.accesscontrol, executionunits = _a.executionunits, rest = __rest(_a, ["traceparent", "tracestate", "to", "redirectto", "accesscontrol", "executionunits"]);
|
308
|
+
._extensions, traceparent = _a.traceparent, tracestate = _a.tracestate, to = _a.to, redirectto = _a.redirectto, accesscontrol = _a.accesscontrol, executionunits = _a.executionunits, parentid = _a.parentid, domain = _a.domain, rest = __rest(_a, ["traceparent", "tracestate", "to", "redirectto", "accesscontrol", "executionunits", "parentid", "domain"]);
|
198
309
|
return rest;
|
199
310
|
},
|
200
311
|
enumerable: false,
|
@@ -58,16 +58,22 @@ export declare const ArvoExtensionSchema: z.ZodObject<{
|
|
58
58
|
accesscontrol: z.ZodNullable<z.ZodString>;
|
59
59
|
redirectto: z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>;
|
60
60
|
executionunits: z.ZodNullable<z.ZodNumber>;
|
61
|
+
parentid: z.ZodNullable<z.ZodString>;
|
62
|
+
domain: z.ZodNullable<z.ZodString>;
|
61
63
|
}, "strip", z.ZodTypeAny, {
|
62
64
|
to: string | null;
|
63
65
|
accesscontrol: string | null;
|
64
66
|
redirectto: string | null;
|
65
67
|
executionunits: number | null;
|
68
|
+
parentid: string | null;
|
69
|
+
domain: string | null;
|
66
70
|
}, {
|
67
71
|
to: string | null;
|
68
72
|
accesscontrol: string | null;
|
69
73
|
redirectto: string | null;
|
70
74
|
executionunits: number | null;
|
75
|
+
parentid: string | null;
|
76
|
+
domain: string | null;
|
71
77
|
}>;
|
72
78
|
/**
|
73
79
|
* Zod schema for validating OpenTelemetry extensions to the CloudEvent.
|
package/dist/ArvoEvent/schema.js
CHANGED
@@ -101,6 +101,17 @@ exports.ArvoExtensionSchema = zod_1.z
|
|
101
101
|
.number()
|
102
102
|
.nullable()
|
103
103
|
.describe((0, utils_1.cleanString)("\n This data field represents the cost associated with \n generating this specific cloudevent. It serves as a metric \n to track and measure the financial impact of event generation\n within cloud-based systems or applications.\n ")),
|
104
|
+
parentid: zod_1.z
|
105
|
+
.string()
|
106
|
+
.min(1, 'ID must be a non-empty string')
|
107
|
+
.nullable()
|
108
|
+
.describe((0, utils_1.cleanString)("\n The unique identifier of the event that directly triggered the creation \n of this event within the Arvo ecosystem. When set, it establishes a \n direct causal relationship for event lineage tracking and workflow \n orchestration. When null, it indicates this is an initiating event \n or was generated outside of direct event causation.\n ")),
|
109
|
+
domain: zod_1.z
|
110
|
+
.string()
|
111
|
+
.min(1, 'Domain must be non-empty string')
|
112
|
+
.regex(/^[a-z0-9.]+$/, 'Domain must contain only lowercase letters, numbers, and dots')
|
113
|
+
.nullable()
|
114
|
+
.describe((0, utils_1.cleanString)("\n Specifies the processing domain for event routing and workflow orchestration.\n Events can be assigned to specific domains (e.g., 'external', 'analytics', 'priority')\n to enable specialized processing flows such as human-in-the-loop operations,\n third-party integrations, or custom handling pipelines. Each event can only\n belong to one domain - if an event needs to be processed by multiple domains,\n separate identical events (with different IDs) must be created for each respective\n domain. Domain names must contain only lowercase letters, numbers, and dots.\n ")),
|
104
115
|
})
|
105
116
|
.describe('Schema for Arvo-specific extensions to the CloudEvent.');
|
106
117
|
/**
|
@@ -59,4 +59,8 @@ export type CreateArvoEvent<TData extends ArvoEventData, TType extends string> =
|
|
59
59
|
traceparent?: string;
|
60
60
|
/** Conveys vendor-specific trace information across service boundaries (OpenTelemetry). */
|
61
61
|
tracestate?: string;
|
62
|
+
/** The unique identifier of the event that directly triggered the creation of this event within the Arvo ecosystem. */
|
63
|
+
parentid?: string;
|
64
|
+
/** Specifies the processing domain for event routing and workflow orchestration. Must contain only lowercase letters, numbers, and dots. */
|
65
|
+
domain?: string;
|
62
66
|
};
|
@@ -27,8 +27,9 @@ export declare class ArvoOrchestratorEventFactory<TContract extends VersionedArv
|
|
27
27
|
*
|
28
28
|
* @throws Error if event validation fails
|
29
29
|
*/
|
30
|
-
init<TExtension extends Record<string, any>>(event: Omit<CreateArvoEvent<z.input<TContract['accepts']['schema']>, TContract['accepts']['type']>, 'type' | 'datacontenttype' | 'dataschema' | 'subject'> & {
|
30
|
+
init<TExtension extends Record<string, any>>(event: Omit<CreateArvoEvent<z.input<TContract['accepts']['schema']>, TContract['accepts']['type']>, 'type' | 'datacontenttype' | 'dataschema' | 'subject' | 'domain'> & {
|
31
31
|
subject?: string;
|
32
|
+
domain?: string | null;
|
32
33
|
}, extensions?: TExtension): import("..").ArvoEvent<z.TypeOf<TContract["accepts"]["schema"]>, TExtension, TContract["accepts"]["type"]>;
|
33
34
|
/**
|
34
35
|
* Creates a completion event for the orchestration flow.
|
@@ -40,7 +41,8 @@ export declare class ArvoOrchestratorEventFactory<TContract extends VersionedArv
|
|
40
41
|
*
|
41
42
|
* @throws Error if event validation fails or complete event type not configured
|
42
43
|
*/
|
43
|
-
complete<TExtension extends Record<string, any>>(event: Omit<CreateArvoEvent<z.input<TContract['emits'][TContract['metadata']['completeEventType']]>, TContract['metadata']['completeEventType']>, 'datacontenttype' | 'dataschema' | 'type' | 'subject'> & {
|
44
|
+
complete<TExtension extends Record<string, any>>(event: Omit<CreateArvoEvent<z.input<TContract['emits'][TContract['metadata']['completeEventType']]>, TContract['metadata']['completeEventType']>, 'datacontenttype' | 'dataschema' | 'type' | 'subject' | 'domain'> & {
|
44
45
|
subject?: string;
|
46
|
+
domain?: string | null;
|
45
47
|
}, extensions?: TExtension): import("..").ArvoEvent<z.TypeOf<TContract["emits"][TContract["metadata"]["completeEventType"]]>, TExtension, TContract["metadata"]["completeEventType"]>;
|
46
48
|
}
|
@@ -77,7 +77,7 @@ var ArvoOrchestratorEventFactory = /** @class */ (function (_super) {
|
|
77
77
|
name: "".concat(this._name, ".init"),
|
78
78
|
spanOptions: (0, utils_2.createSpanOptions)(this.contract),
|
79
79
|
fn: function (span) {
|
80
|
-
var _a, _b, _c, _d, _e, _f;
|
80
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
81
81
|
var otelHeaders = (0, OpenTelemetry_1.currentOpenTelemetryHeaders)();
|
82
82
|
var validationResult = _this.contract.accepts.schema.safeParse(event.data);
|
83
83
|
if (!validationResult.success) {
|
@@ -97,13 +97,14 @@ var ArvoOrchestratorEventFactory = /** @class */ (function (_super) {
|
|
97
97
|
orchestator: _this.contract.accepts.type,
|
98
98
|
initiator: event.source,
|
99
99
|
version: _this.contract.version,
|
100
|
+
domain: event.domain === null ? undefined : ((_d = (_c = event.domain) !== null && _c !== void 0 ? _c : _this.contract.domain) !== null && _d !== void 0 ? _d : undefined),
|
100
101
|
meta: event.redirectto
|
101
102
|
? {
|
102
103
|
redirectto: event.redirectto,
|
103
104
|
}
|
104
105
|
: undefined,
|
105
106
|
}));
|
106
|
-
var generatedEvent = (0, helpers_1.createArvoEvent)(__assign(__assign({}, event), { subject: eventSubject, traceparent: (
|
107
|
+
var generatedEvent = (0, helpers_1.createArvoEvent)(__assign(__assign({}, event), { subject: eventSubject, traceparent: (_f = (_e = event.traceparent) !== null && _e !== void 0 ? _e : otelHeaders.traceparent) !== null && _f !== void 0 ? _f : undefined, tracestate: (_h = (_g = event.tracestate) !== null && _g !== void 0 ? _g : otelHeaders.tracestate) !== null && _h !== void 0 ? _h : undefined, type: _this.contract.accepts.type, datacontenttype: schema_1.ArvoDataContentType, dataschema: utils_1.EventDataschemaUtil.create(_this.contract), data: validationResult.data, domain: event.domain === null ? undefined : ((_k = (_j = event.domain) !== null && _j !== void 0 ? _j : _this.contract.domain) !== null && _k !== void 0 ? _k : undefined) }), extensions, { disable: true });
|
107
108
|
span.setAttributes(generatedEvent.otelAttributes);
|
108
109
|
return generatedEvent;
|
109
110
|
},
|
@@ -125,7 +126,7 @@ var ArvoOrchestratorEventFactory = /** @class */ (function (_super) {
|
|
125
126
|
name: "".concat(this._name, ".complete"),
|
126
127
|
spanOptions: (0, utils_2.createSpanOptions)(this.contract),
|
127
128
|
fn: function (span) {
|
128
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
129
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
129
130
|
var otelHeaders = (0, OpenTelemetry_1.currentOpenTelemetryHeaders)();
|
130
131
|
var validationResult = (_b = (_a = _this.contract.emits) === null || _a === void 0 ? void 0 : _a[_this.contract.metadata.completeEventType]) === null || _b === void 0 ? void 0 : _b.safeParse(event.data);
|
131
132
|
if (!(validationResult === null || validationResult === void 0 ? void 0 : validationResult.success)) {
|
@@ -137,13 +138,14 @@ var ArvoOrchestratorEventFactory = /** @class */ (function (_super) {
|
|
137
138
|
initiator: event.source,
|
138
139
|
version: _this.contract.version,
|
139
140
|
orchestator: eventType,
|
141
|
+
domain: event.domain === null ? undefined : ((_g = (_f = event.domain) !== null && _f !== void 0 ? _f : _this.contract.domain) !== null && _g !== void 0 ? _g : undefined),
|
140
142
|
meta: event.redirectto
|
141
143
|
? {
|
142
144
|
redirectto: event.redirectto,
|
143
145
|
}
|
144
146
|
: undefined,
|
145
147
|
});
|
146
|
-
var generatedEvent = (0, helpers_1.createArvoEvent)(__assign(__assign({}, event), { subject: eventSubject, type: eventType, traceparent: (
|
148
|
+
var generatedEvent = (0, helpers_1.createArvoEvent)(__assign(__assign({}, event), { subject: eventSubject, type: eventType, traceparent: (_j = (_h = event.traceparent) !== null && _h !== void 0 ? _h : otelHeaders.traceparent) !== null && _j !== void 0 ? _j : undefined, tracestate: (_l = (_k = event.tracestate) !== null && _k !== void 0 ? _k : otelHeaders.tracestate) !== null && _l !== void 0 ? _l : undefined, datacontenttype: schema_1.ArvoDataContentType, dataschema: utils_1.EventDataschemaUtil.create(_this.contract), data: validationResult.data, domain: event.domain === null ? undefined : ((_o = (_m = event.domain) !== null && _m !== void 0 ? _m : _this.contract.domain) !== null && _o !== void 0 ? _o : undefined) }), extensions, { disable: true });
|
147
149
|
span.setAttributes(generatedEvent.otelAttributes);
|
148
150
|
return generatedEvent;
|
149
151
|
},
|
@@ -44,8 +44,9 @@ export default class ArvoEventFactory<TContract extends VersionedArvoContract<an
|
|
44
44
|
* });
|
45
45
|
* ```
|
46
46
|
*/
|
47
|
-
accepts<TExtension extends Record<string, any>>(event: Omit<CreateArvoEvent<z.input<TContract['accepts']['schema']>, TContract['accepts']['type']>, 'type' | 'datacontenttype' | 'dataschema' | 'subject'> & {
|
47
|
+
accepts<TExtension extends Record<string, any>>(event: Omit<CreateArvoEvent<z.input<TContract['accepts']['schema']>, TContract['accepts']['type']>, 'type' | 'datacontenttype' | 'dataschema' | 'subject' | 'domain'> & {
|
48
48
|
subject?: string;
|
49
|
+
domain?: string | null;
|
49
50
|
}, extensions?: TExtension): import("..").ArvoEvent<z.TypeOf<TContract["accepts"]["schema"]>, TExtension, TContract["accepts"]["type"]>;
|
50
51
|
/**
|
51
52
|
* Creates and validates an event matching one of the contract's emit specifications.
|
@@ -66,8 +67,9 @@ export default class ArvoEventFactory<TContract extends VersionedArvoContract<an
|
|
66
67
|
* });
|
67
68
|
* ```
|
68
69
|
*/
|
69
|
-
emits<U extends string & keyof TContract['emits'], TExtension extends Record<string, any>>(event: Omit<CreateArvoEvent<z.input<TContract['emits'][U]>, U>, 'datacontenttype' | 'dataschema' | 'subject'> & {
|
70
|
+
emits<U extends string & keyof TContract['emits'], TExtension extends Record<string, any>>(event: Omit<CreateArvoEvent<z.input<TContract['emits'][U]>, U>, 'datacontenttype' | 'dataschema' | 'subject' | 'domain'> & {
|
70
71
|
subject?: string;
|
72
|
+
domain?: string | null;
|
71
73
|
}, extensions?: TExtension): import("..").ArvoEvent<z.TypeOf<TContract["emits"][U]>, TExtension, U>;
|
72
74
|
/**
|
73
75
|
* Creates a system error event for error reporting and handling.
|
@@ -88,9 +90,10 @@ export default class ArvoEventFactory<TContract extends VersionedArvoContract<an
|
|
88
90
|
* });
|
89
91
|
* ```
|
90
92
|
*/
|
91
|
-
systemError<TExtension extends Record<string, any>>(event: Omit<CreateArvoEvent<any, any>, 'data' | 'type' | 'datacontenttype' | 'dataschema' | 'subject'> & {
|
93
|
+
systemError<TExtension extends Record<string, any>>(event: Omit<CreateArvoEvent<any, any>, 'data' | 'type' | 'datacontenttype' | 'dataschema' | 'subject' | 'domain'> & {
|
92
94
|
error: Error;
|
93
95
|
subject?: string;
|
96
|
+
domain?: string | null;
|
94
97
|
}, extensions?: TExtension): import("..").ArvoEvent<{
|
95
98
|
errorName: string;
|
96
99
|
errorMessage: string;
|
@@ -81,7 +81,7 @@ var ArvoEventFactory = /** @class */ (function () {
|
|
81
81
|
name: "".concat(this._name, ".accepts"),
|
82
82
|
spanOptions: (0, utils_2.createSpanOptions)(this.contract),
|
83
83
|
fn: function (span) {
|
84
|
-
var _a, _b, _c, _d, _e;
|
84
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
85
85
|
var otelHeaders = (0, OpenTelemetry_1.currentOpenTelemetryHeaders)();
|
86
86
|
var validationResult = _this.contract.accepts.schema.safeParse(event.data);
|
87
87
|
if (!validationResult.success) {
|
@@ -98,7 +98,7 @@ var ArvoEventFactory = /** @class */ (function () {
|
|
98
98
|
}
|
99
99
|
: undefined,
|
100
100
|
});
|
101
|
-
var generatedEvent = (0, helpers_1.createArvoEvent)(__assign(__assign({}, event), { subject: eventSubject, traceparent: (_c = (_b = event.traceparent) !== null && _b !== void 0 ? _b : otelHeaders.traceparent) !== null && _c !== void 0 ? _c : undefined, tracestate: (_e = (_d = event.tracestate) !== null && _d !== void 0 ? _d : otelHeaders.tracestate) !== null && _e !== void 0 ? _e : undefined, type: eventType, datacontenttype: schema_1.ArvoDataContentType, dataschema: utils_1.EventDataschemaUtil.create(_this.contract), data: validationResult.data }), extensions, { disable: true });
|
101
|
+
var generatedEvent = (0, helpers_1.createArvoEvent)(__assign(__assign({}, event), { subject: eventSubject, traceparent: (_c = (_b = event.traceparent) !== null && _b !== void 0 ? _b : otelHeaders.traceparent) !== null && _c !== void 0 ? _c : undefined, tracestate: (_e = (_d = event.tracestate) !== null && _d !== void 0 ? _d : otelHeaders.tracestate) !== null && _e !== void 0 ? _e : undefined, type: eventType, datacontenttype: schema_1.ArvoDataContentType, dataschema: utils_1.EventDataschemaUtil.create(_this.contract), data: validationResult.data, domain: event.domain === null ? undefined : ((_g = (_f = event.domain) !== null && _f !== void 0 ? _f : _this.contract.domain) !== null && _g !== void 0 ? _g : undefined) }), extensions, { disable: true });
|
102
102
|
span.setAttributes(generatedEvent.otelAttributes);
|
103
103
|
return generatedEvent;
|
104
104
|
},
|
@@ -129,7 +129,7 @@ var ArvoEventFactory = /** @class */ (function () {
|
|
129
129
|
name: "".concat(this._name, ".emits<").concat(event.type, ">"),
|
130
130
|
spanOptions: (0, utils_2.createSpanOptions)(this.contract),
|
131
131
|
fn: function (span) {
|
132
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
132
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
133
133
|
var otelHeaders = (0, OpenTelemetry_1.currentOpenTelemetryHeaders)();
|
134
134
|
var validationResult = (_b = (_a = _this.contract.emits) === null || _a === void 0 ? void 0 : _a[event.type]) === null || _b === void 0 ? void 0 : _b.safeParse(event.data);
|
135
135
|
if (!(validationResult === null || validationResult === void 0 ? void 0 : validationResult.success)) {
|
@@ -146,7 +146,7 @@ var ArvoEventFactory = /** @class */ (function () {
|
|
146
146
|
}
|
147
147
|
: undefined,
|
148
148
|
});
|
149
|
-
var generatedEvent = (0, helpers_1.createArvoEvent)(__assign(__assign({}, event), { subject: eventSubject, traceparent: (_g = (_f = event.traceparent) !== null && _f !== void 0 ? _f : otelHeaders.traceparent) !== null && _g !== void 0 ? _g : undefined, tracestate: (_j = (_h = event.tracestate) !== null && _h !== void 0 ? _h : otelHeaders.tracestate) !== null && _j !== void 0 ? _j : undefined, datacontenttype: schema_1.ArvoDataContentType, dataschema: utils_1.EventDataschemaUtil.create(_this.contract), data: validationResult.data }), extensions, { disable: true });
|
149
|
+
var generatedEvent = (0, helpers_1.createArvoEvent)(__assign(__assign({}, event), { subject: eventSubject, traceparent: (_g = (_f = event.traceparent) !== null && _f !== void 0 ? _f : otelHeaders.traceparent) !== null && _g !== void 0 ? _g : undefined, tracestate: (_j = (_h = event.tracestate) !== null && _h !== void 0 ? _h : otelHeaders.tracestate) !== null && _j !== void 0 ? _j : undefined, datacontenttype: schema_1.ArvoDataContentType, dataschema: utils_1.EventDataschemaUtil.create(_this.contract), data: validationResult.data, domain: event.domain === null ? undefined : ((_l = (_k = event.domain) !== null && _k !== void 0 ? _k : _this.contract.domain) !== null && _l !== void 0 ? _l : undefined) }), extensions, { disable: true });
|
150
150
|
span.setAttributes(generatedEvent.otelAttributes);
|
151
151
|
return generatedEvent;
|
152
152
|
},
|
@@ -177,7 +177,7 @@ var ArvoEventFactory = /** @class */ (function () {
|
|
177
177
|
name: "".concat(this._name, ".systemError"),
|
178
178
|
spanOptions: (0, utils_2.createSpanOptions)(this.contract),
|
179
179
|
fn: function (span) {
|
180
|
-
var _a, _b, _c, _d, _e;
|
180
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
181
181
|
var otelHeaders = (0, OpenTelemetry_1.currentOpenTelemetryHeaders)();
|
182
182
|
var error = event.error, _event = __rest(event, ["error"]);
|
183
183
|
var eventType = _this.contract.systemError.type;
|
@@ -191,7 +191,7 @@ var ArvoEventFactory = /** @class */ (function () {
|
|
191
191
|
}
|
192
192
|
: undefined,
|
193
193
|
});
|
194
|
-
var generatedEvent = (0, helpers_1.createArvoEvent)(__assign(__assign({}, _event), { subject: eventSubject, traceparent: (_c = (_b = event.traceparent) !== null && _b !== void 0 ? _b : otelHeaders.traceparent) !== null && _c !== void 0 ? _c : undefined, tracestate: (_e = (_d = event.tracestate) !== null && _d !== void 0 ? _d : otelHeaders.tracestate) !== null && _e !== void 0 ? _e : undefined, type: eventType, data: (0, utils_1.createArvoError)(error), datacontenttype: schema_1.ArvoDataContentType, dataschema: utils_1.EventDataschemaUtil.createWithWildCardVersion(_this.contract) }), extensions, { disable: true });
|
194
|
+
var generatedEvent = (0, helpers_1.createArvoEvent)(__assign(__assign({}, _event), { subject: eventSubject, traceparent: (_c = (_b = event.traceparent) !== null && _b !== void 0 ? _b : otelHeaders.traceparent) !== null && _c !== void 0 ? _c : undefined, tracestate: (_e = (_d = event.tracestate) !== null && _d !== void 0 ? _d : otelHeaders.tracestate) !== null && _e !== void 0 ? _e : undefined, type: eventType, data: (0, utils_1.createArvoError)(error), datacontenttype: schema_1.ArvoDataContentType, dataschema: utils_1.EventDataschemaUtil.createWithWildCardVersion(_this.contract), domain: event.domain === null ? undefined : ((_g = (_f = event.domain) !== null && _f !== void 0 ? _f : _this.contract.domain) !== null && _g !== void 0 ? _g : undefined) }), extensions, { disable: true });
|
195
195
|
span.setAttributes(generatedEvent.otelAttributes);
|
196
196
|
return generatedEvent;
|
197
197
|
},
|
@@ -59,7 +59,7 @@ var ArvoOrchestrationSubject = /** @class */ (function () {
|
|
59
59
|
* ```
|
60
60
|
*/
|
61
61
|
ArvoOrchestrationSubject.new = function (param) {
|
62
|
-
var _a, _b;
|
62
|
+
var _a, _b, _c;
|
63
63
|
return ArvoOrchestrationSubject.create({
|
64
64
|
orchestrator: {
|
65
65
|
name: param.orchestator,
|
@@ -68,8 +68,9 @@ var ArvoOrchestrationSubject = /** @class */ (function () {
|
|
68
68
|
execution: {
|
69
69
|
id: (0, uuid_1.v4)(),
|
70
70
|
initiator: param.initiator,
|
71
|
+
domain: (_b = param.domain) !== null && _b !== void 0 ? _b : null,
|
71
72
|
},
|
72
|
-
meta: (
|
73
|
+
meta: (_c = param.meta) !== null && _c !== void 0 ? _c : {},
|
73
74
|
});
|
74
75
|
};
|
75
76
|
/**
|
@@ -106,13 +107,14 @@ var ArvoOrchestrationSubject = /** @class */ (function () {
|
|
106
107
|
* ```
|
107
108
|
*/
|
108
109
|
ArvoOrchestrationSubject.from = function (param) {
|
109
|
-
var _a, _b, _c;
|
110
|
+
var _a, _b, _c, _d;
|
110
111
|
var parsedSubject = ArvoOrchestrationSubject.parse(param.subject);
|
111
112
|
return ArvoOrchestrationSubject.new({
|
112
113
|
initiator: parsedSubject.orchestrator.name,
|
113
114
|
version: (_a = param.version) !== null && _a !== void 0 ? _a : WildCardArvoSemanticVersion_1.WildCardArvoSemanticVersion,
|
114
115
|
orchestator: param.orchestator,
|
115
|
-
|
116
|
+
domain: (_b = parsedSubject.execution.domain) !== null && _b !== void 0 ? _b : undefined,
|
117
|
+
meta: __assign(__assign({}, ((_c = parsedSubject.meta) !== null && _c !== void 0 ? _c : {})), ((_d = param.meta) !== null && _d !== void 0 ? _d : {})),
|
116
118
|
});
|
117
119
|
};
|
118
120
|
/**
|
@@ -13,11 +13,14 @@ export declare const ArvoOrchestrationSubjectContentSchema: z.ZodObject<{
|
|
13
13
|
execution: z.ZodObject<{
|
14
14
|
id: z.ZodEffects<z.ZodString, string, string>;
|
15
15
|
initiator: z.ZodEffects<z.ZodString, string, string>;
|
16
|
+
domain: z.ZodNullable<z.ZodString>;
|
16
17
|
}, "strip", z.ZodTypeAny, {
|
17
18
|
id: string;
|
19
|
+
domain: string | null;
|
18
20
|
initiator: string;
|
19
21
|
}, {
|
20
22
|
id: string;
|
23
|
+
domain: string | null;
|
21
24
|
initiator: string;
|
22
25
|
}>;
|
23
26
|
meta: z.ZodRecord<z.ZodString, z.ZodString>;
|
@@ -28,6 +31,7 @@ export declare const ArvoOrchestrationSubjectContentSchema: z.ZodObject<{
|
|
28
31
|
};
|
29
32
|
execution: {
|
30
33
|
id: string;
|
34
|
+
domain: string | null;
|
31
35
|
initiator: string;
|
32
36
|
};
|
33
37
|
meta: Record<string, string>;
|
@@ -38,6 +42,7 @@ export declare const ArvoOrchestrationSubjectContentSchema: z.ZodObject<{
|
|
38
42
|
};
|
39
43
|
execution: {
|
40
44
|
id: string;
|
45
|
+
domain: string | null;
|
41
46
|
initiator: string;
|
42
47
|
};
|
43
48
|
meta: Record<string, string>;
|
@@ -29,6 +29,12 @@ exports.ArvoOrchestrationSubjectContentSchema = zod_1.z
|
|
29
29
|
.regex(/^[a-z0-9]+(\.[a-z0-9]+)+\.[a-z0-9]+$/, 'Orchestration initiator should be prefixed with a reverse-DNS name')
|
30
30
|
.refine(function (value) { return !value.includes(';'); }, 'Initiator must not contain semicolon')
|
31
31
|
.describe('Entity or process that initiated the execution'),
|
32
|
+
domain: zod_1.z
|
33
|
+
.string()
|
34
|
+
.min(1, 'The domain must be non-empty string')
|
35
|
+
.regex(/^[a-z0-9.]+$/, 'Domain must contain only lowercase letters, numbers, and dots')
|
36
|
+
.nullable()
|
37
|
+
.describe('The domain of the orchestration init event'),
|
32
38
|
})
|
33
39
|
.describe('Details about the current execution'),
|
34
40
|
meta: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).describe((0, utils_1.cleanString)("\n Additional metadata for the orchestration process. Store essential key-value pairs \n that provide context or configuration details necessary for the orchestration. \n Use selectively to maintain clarity and avoid storing unnecessary information. \n ")),
|
@@ -48,6 +48,8 @@ export type ArvoOrchestrationSubjectContent = {
|
|
48
48
|
* "com.example.initiator-service"
|
49
49
|
*/
|
50
50
|
initiator: string;
|
51
|
+
/** The domain of the init event */
|
52
|
+
domain: string | null;
|
51
53
|
};
|
52
54
|
/**
|
53
55
|
* Additional metadata for the orchestration process. Store essential key-value pairs
|
@@ -94,15 +94,16 @@ function isLowerAlphanumeric(input) {
|
|
94
94
|
* ```
|
95
95
|
*/
|
96
96
|
var createArvoOrchestratorContract = function (contract) {
|
97
|
-
var _a, _b;
|
97
|
+
var _a, _b, _c;
|
98
98
|
if (!isLowerAlphanumeric(contract.name)) {
|
99
99
|
throw new Error("Invalid 'name' = '".concat(contract.name, "'. The 'name' must only contain alphanumeric characters. e.g. test.orchestrator"));
|
100
100
|
}
|
101
101
|
var mergedMetaData = __assign(__assign({}, ((_a = contract.metadata) !== null && _a !== void 0 ? _a : {})), { contractType: 'ArvoOrchestratorContract', rootType: contract.name, completeEventType: typegen_1.ArvoOrchestratorEventTypeGen.complete(contract.name), initEventType: typegen_1.ArvoOrchestratorEventTypeGen.init(contract.name) });
|
102
102
|
return new ArvoContract_1.default({
|
103
103
|
uri: contract.uri,
|
104
|
+
domain: (_b = contract.domain) !== null && _b !== void 0 ? _b : null,
|
104
105
|
type: typegen_1.ArvoOrchestratorEventTypeGen.init(contract.name),
|
105
|
-
description: (
|
106
|
+
description: (_c = contract.description) !== null && _c !== void 0 ? _c : null,
|
106
107
|
metadata: mergedMetaData,
|
107
108
|
versions: Object.fromEntries(Object.entries(contract.versions).map(function (_a) {
|
108
109
|
var _b;
|
package/dist/index.d.ts
CHANGED
@@ -74,16 +74,22 @@ declare const ArvoEventSchema: {
|
|
74
74
|
accesscontrol: import("zod").ZodNullable<import("zod").ZodString>;
|
75
75
|
redirectto: import("zod").ZodNullable<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
76
76
|
executionunits: import("zod").ZodNullable<import("zod").ZodNumber>;
|
77
|
+
parentid: import("zod").ZodNullable<import("zod").ZodString>;
|
78
|
+
domain: import("zod").ZodNullable<import("zod").ZodString>;
|
77
79
|
}, "strip", import("zod").ZodTypeAny, {
|
78
80
|
to: string | null;
|
79
81
|
accesscontrol: string | null;
|
80
82
|
redirectto: string | null;
|
81
83
|
executionunits: number | null;
|
84
|
+
parentid: string | null;
|
85
|
+
domain: string | null;
|
82
86
|
}, {
|
83
87
|
to: string | null;
|
84
88
|
accesscontrol: string | null;
|
85
89
|
redirectto: string | null;
|
86
90
|
executionunits: number | null;
|
91
|
+
parentid: string | null;
|
92
|
+
domain: string | null;
|
87
93
|
}>;
|
88
94
|
OpenTelemetryExtensionSchema: import("zod").ZodObject<{
|
89
95
|
traceparent: import("zod").ZodNullable<import("zod").ZodString>;
|