openxiangda-contracts 2.82.0 → 2.84.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/data-query-validation.d.ts +1 -2
- package/dist/data-query-validation.d.ts.map +1 -1
- package/dist/data-query-validation.js +2 -22
- package/dist/data-query-validation.js.map +1 -1
- package/dist/event-worker-effect.d.ts +2 -0
- package/dist/event-worker-effect.d.ts.map +1 -0
- package/dist/event-worker-effect.js +2 -0
- package/dist/event-worker-effect.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/native-compiler/compiler.d.ts.map +1 -1
- package/dist/native-compiler/compiler.js +42 -13
- package/dist/native-compiler/compiler.js.map +1 -1
- package/dist/native-compiler/data-query-operators.d.ts +3 -0
- package/dist/native-compiler/data-query-operators.d.ts.map +1 -0
- package/dist/native-compiler/data-query-operators.js +23 -0
- package/dist/native-compiler/data-query-operators.js.map +1 -0
- package/dist/native-compiler/event-action.d.ts +6 -2
- package/dist/native-compiler/event-action.d.ts.map +1 -1
- package/dist/native-compiler/event-action.js +7 -1
- package/dist/native-compiler/event-action.js.map +1 -1
- package/dist/native-compiler/event-worker-effect.d.ts +76 -0
- package/dist/native-compiler/event-worker-effect.d.ts.map +1 -0
- package/dist/native-compiler/event-worker-effect.js +208 -0
- package/dist/native-compiler/event-worker-effect.js.map +1 -0
- package/dist/native-compiler/index.cjs +4 -3
- package/dist/native-compiler/index.d.ts +1 -0
- package/dist/native-compiler/index.d.ts.map +1 -1
- package/dist/native-compiler/index.js +4 -3
- package/dist/native-compiler/user-candidates.d.ts.map +1 -1
- package/dist/native-compiler/user-candidates.js +2 -1
- package/dist/native-compiler/user-candidates.js.map +1 -1
- package/dist/native-compiler/workflow-authoring.d.ts.map +1 -1
- package/dist/native-compiler/workflow-authoring.js +2 -0
- package/dist/native-compiler/workflow-authoring.js.map +1 -1
- package/dist/native-compiler/workflow-conditional-assignment-schema.d.ts +662 -0
- package/dist/native-compiler/workflow-conditional-assignment-schema.d.ts.map +1 -0
- package/dist/native-compiler/workflow-conditional-assignment-schema.js +21 -0
- package/dist/native-compiler/workflow-conditional-assignment-schema.js.map +1 -0
- package/dist/native-compiler/workflow-conditional-assignment.d.ts +14 -667
- package/dist/native-compiler/workflow-conditional-assignment.d.ts.map +1 -1
- package/dist/native-compiler/workflow-conditional-assignment.js +31 -19
- package/dist/native-compiler/workflow-conditional-assignment.js.map +1 -1
- package/dist/native-compiler/workflow-expression-schema.d.ts +29 -0
- package/dist/native-compiler/workflow-expression-schema.d.ts.map +1 -0
- package/dist/native-compiler/workflow-expression-schema.js +31 -0
- package/dist/native-compiler/workflow-expression-schema.js.map +1 -0
- package/dist/native-compiler/workflow-launch-preflight.d.ts.map +1 -1
- package/dist/native-compiler/workflow-launch-preflight.js +6 -1
- package/dist/native-compiler/workflow-launch-preflight.js.map +1 -1
- package/dist/native-compiler/workflow-schema.d.ts +909 -276
- package/dist/native-compiler/workflow-schema.d.ts.map +1 -1
- package/dist/native-compiler/workflow-schema.js +5 -98
- package/dist/native-compiler/workflow-schema.js.map +1 -1
- package/dist/native-compiler/workflow-source-sync.d.ts.map +1 -1
- package/dist/native-compiler/workflow-source-sync.js +5 -1
- package/dist/native-compiler/workflow-source-sync.js.map +1 -1
- package/dist/native-compiler/workflow-standard-binding-schema.d.ts +304 -0
- package/dist/native-compiler/workflow-standard-binding-schema.d.ts.map +1 -0
- package/dist/native-compiler/workflow-standard-binding-schema.js +75 -0
- package/dist/native-compiler/workflow-standard-binding-schema.js.map +1 -0
- package/dist/native-version.d.ts +2 -0
- package/dist/native-version.d.ts.map +1 -1
- package/dist/native-version.js +2 -0
- package/dist/native-version.js.map +1 -1
- package/dist/native.d.ts +3 -2
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js.map +1 -1
- package/dist/schemas.d.ts +1361 -316
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +41 -13
- package/dist/schemas.js.map +1 -1
- package/dist/types.d.ts +7 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-query-operators.d.ts","sourceRoot":"","sources":["../../src/native-compiler/data-query-operators.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,aAoB/B,CAAC;AAEH,eAAO,MAAM,0BAA0B,aAAqC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const DATA_QUERY_OPERATORS = new Set([
|
|
2
|
+
'eq',
|
|
3
|
+
'neq',
|
|
4
|
+
'gt',
|
|
5
|
+
'gte',
|
|
6
|
+
'lt',
|
|
7
|
+
'lte',
|
|
8
|
+
'contains',
|
|
9
|
+
'startsWith',
|
|
10
|
+
'endsWith',
|
|
11
|
+
'in',
|
|
12
|
+
'between',
|
|
13
|
+
'has',
|
|
14
|
+
'hasAny',
|
|
15
|
+
'hasAll',
|
|
16
|
+
'overlaps',
|
|
17
|
+
'containedBy',
|
|
18
|
+
'jsonContains',
|
|
19
|
+
'isEmpty',
|
|
20
|
+
'isNotEmpty',
|
|
21
|
+
]);
|
|
22
|
+
export const DATA_QUERY_EMPTY_OPERATORS = new Set(['isEmpty', 'isNotEmpty']);
|
|
23
|
+
//# sourceMappingURL=data-query-operators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-query-operators.js","sourceRoot":"","sources":["../../src/native-compiler/data-query-operators.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IAC1C,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,UAAU;IACV,YAAY;IACZ,UAAU;IACV,IAAI;IACJ,SAAS;IACT,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,aAAa;IACb,cAAc;IACd,SAAS;IACT,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { EventWorkerEffectPlan } from './event-worker-effect.js';
|
|
1
2
|
import type { NativeEventActionPlan } from '../native.js';
|
|
2
3
|
import type { EventSubscriptionPayload } from '../types.js';
|
|
3
4
|
export declare class NativeEventActionContractError extends Error {
|
|
@@ -6,8 +7,11 @@ export declare class NativeEventActionContractError extends Error {
|
|
|
6
7
|
constructor(pointer: string, message: string);
|
|
7
8
|
}
|
|
8
9
|
/** The shared compiler owns action authority and capture dependencies. */
|
|
9
|
-
export declare function compileNativeEventAction(subscription: Record<string, any>, resources: readonly Record<string, any>[], pointer?: string
|
|
10
|
-
|
|
10
|
+
export declare function compileNativeEventAction(subscription: Record<string, any>, resources: readonly Record<string, any>[], pointer?: string, context?: {
|
|
11
|
+
emitEventTypes: string[];
|
|
12
|
+
workflowResources: string[];
|
|
13
|
+
}): {
|
|
14
|
+
execution: NativeEventActionPlan | EventWorkerEffectPlan;
|
|
11
15
|
payload: EventSubscriptionPayload;
|
|
12
16
|
} | undefined;
|
|
13
17
|
//# sourceMappingURL=event-action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-action.d.ts","sourceRoot":"","sources":["../../src/native-compiler/event-action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,qBAAa,8BAA+B,SAAQ,KAAK;IAE3C,QAAQ,CAAC,OAAO,EAAE,MAAM;IADpC,QAAQ,CAAC,IAAI,iCAAiC;gBACzB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CACtD;AAED,0EAA0E;AAC1E,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,SAAS,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EACzC,OAAO,SAA0B,
|
|
1
|
+
{"version":3,"file":"event-action.d.ts","sourceRoot":"","sources":["../../src/native-compiler/event-action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,qBAAa,8BAA+B,SAAQ,KAAK;IAE3C,QAAQ,CAAC,OAAO,EAAE,MAAM;IADpC,QAAQ,CAAC,IAAI,iCAAiC;gBACzB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CACtD;AAED,0EAA0E;AAC1E,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,SAAS,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EACzC,OAAO,SAA0B,EACjC,OAAO,CAAC,EAAE;IAAE,cAAc,EAAE,MAAM,EAAE,CAAC;IAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAAE,GAClE;IAAE,SAAS,EAAE,qBAAqB,GAAG,qBAAqB,CAAC;IAAC,OAAO,EAAE,wBAAwB,CAAA;CAAE,GAAG,SAAS,CA2F7G"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { compileEventWorkerEffect } from './event-worker-effect.js';
|
|
1
2
|
import { sha256Digest } from '../canonical.js';
|
|
2
3
|
export class NativeEventActionContractError extends Error {
|
|
3
4
|
pointer;
|
|
@@ -8,9 +9,14 @@ export class NativeEventActionContractError extends Error {
|
|
|
8
9
|
}
|
|
9
10
|
}
|
|
10
11
|
/** The shared compiler owns action authority and capture dependencies. */
|
|
11
|
-
export function compileNativeEventAction(subscription, resources, pointer = '/events/subscriptions') {
|
|
12
|
+
export function compileNativeEventAction(subscription, resources, pointer = '/events/subscriptions', context) {
|
|
12
13
|
if (subscription.execution === undefined)
|
|
13
14
|
return;
|
|
15
|
+
if (subscription.execution?.kind === 'worker-effect') {
|
|
16
|
+
if (subscription.platformAccess)
|
|
17
|
+
throw new NativeEventActionContractError(`${pointer}/platformAccess`, 'Worker effect grants cannot be combined with other runtime capabilities');
|
|
18
|
+
return { execution: compileEventWorkerEffect(subscription.execution, resources, context?.emitEventTypes || [], context?.workflowResources || [], `${pointer}/execution`), payload: subscription.payload };
|
|
19
|
+
}
|
|
14
20
|
const fail = (path, message) => {
|
|
15
21
|
throw new NativeEventActionContractError(`${pointer}${path}`, message);
|
|
16
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-action.js","sourceRoot":"","sources":["../../src/native-compiler/event-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IAElC;IADZ,IAAI,GAAG,6BAA6B,CAAC;IAC9C,YAAqB,OAAe,EAAE,OAAe;QAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAAnD,YAAO,GAAP,OAAO,CAAQ;IAAqC,CAAC;CAC3E;AAED,0EAA0E;AAC1E,MAAM,UAAU,wBAAwB,CACtC,YAAiC,EACjC,SAAyC,EACzC,OAAO,GAAG,uBAAuB;
|
|
1
|
+
{"version":3,"file":"event-action.js","sourceRoot":"","sources":["../../src/native-compiler/event-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { DataQuery, DataTransactionGuard, DataTransactionOperation, DataTransactionResult } from '../types.js';
|
|
2
|
+
export interface EventWorkerResourceGrant {
|
|
3
|
+
resourceCode: string;
|
|
4
|
+
readFields: string[];
|
|
5
|
+
writeOperations: Array<'create' | 'update'>;
|
|
6
|
+
writeFields: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface EventWorkerEffectDeclaration {
|
|
9
|
+
kind: 'worker-effect';
|
|
10
|
+
version: 1;
|
|
11
|
+
resources: EventWorkerResourceGrant[];
|
|
12
|
+
emitEventTypes: string[];
|
|
13
|
+
maxOperations: number;
|
|
14
|
+
maxGuards: number;
|
|
15
|
+
maxQueryRecords: number;
|
|
16
|
+
maxIntentsPerEvent: number;
|
|
17
|
+
}
|
|
18
|
+
export interface EventWorkerEffectPlan extends EventWorkerEffectDeclaration {
|
|
19
|
+
resourceDigests: Record<string, string>;
|
|
20
|
+
digest: string;
|
|
21
|
+
}
|
|
22
|
+
export interface EventWorkerMutationPlan {
|
|
23
|
+
operations: DataTransactionOperation[];
|
|
24
|
+
guards: DataTransactionGuard[];
|
|
25
|
+
}
|
|
26
|
+
export interface EventWorkerEffectScope {
|
|
27
|
+
tenantId: string;
|
|
28
|
+
appCode: string;
|
|
29
|
+
environmentKey: string;
|
|
30
|
+
subscriptionCode: string;
|
|
31
|
+
eventId: string;
|
|
32
|
+
deliveryId: string;
|
|
33
|
+
claimToken: string;
|
|
34
|
+
}
|
|
35
|
+
export type EventWorkerEffectCommand = EventWorkerEffectScope & {
|
|
36
|
+
schemaVersion: 'openxiangda.event-worker-effect-command/v1';
|
|
37
|
+
} & ({
|
|
38
|
+
action: 'query';
|
|
39
|
+
resourceCode: string;
|
|
40
|
+
query: DataQuery;
|
|
41
|
+
} | {
|
|
42
|
+
action: 'prepare';
|
|
43
|
+
intentKey: string;
|
|
44
|
+
plan: EventWorkerMutationPlan;
|
|
45
|
+
} | {
|
|
46
|
+
action: 'commit';
|
|
47
|
+
intentKey: string;
|
|
48
|
+
planDigest: string;
|
|
49
|
+
} | {
|
|
50
|
+
action: 'resolve';
|
|
51
|
+
intentKey: string;
|
|
52
|
+
});
|
|
53
|
+
export interface EventWorkerEffectReceipt {
|
|
54
|
+
schemaVersion: 'openxiangda.event-worker-effect-receipt/v1';
|
|
55
|
+
intentKey: string;
|
|
56
|
+
planDigest: string;
|
|
57
|
+
eventId: string;
|
|
58
|
+
deliveryId: string;
|
|
59
|
+
status: 'prepared' | 'succeeded' | 'rejected';
|
|
60
|
+
replayed: boolean;
|
|
61
|
+
errorCode?: string;
|
|
62
|
+
appVersionId: string;
|
|
63
|
+
headRevision: number;
|
|
64
|
+
result: DataTransactionResult | null;
|
|
65
|
+
}
|
|
66
|
+
export declare class EventWorkerEffectContractError extends Error {
|
|
67
|
+
readonly code: string;
|
|
68
|
+
readonly pointer: string;
|
|
69
|
+
constructor(code: string, pointer: string);
|
|
70
|
+
}
|
|
71
|
+
/** Single compiler/SDK/platform authority validator; no application-defined identities. */
|
|
72
|
+
export declare function compileEventWorkerEffect(raw: unknown, resources: readonly Record<string, any>[], emitTypes: readonly string[], workflowResources?: readonly string[], pointer?: string): EventWorkerEffectPlan;
|
|
73
|
+
export declare function validateEventWorkerQuery(plan: EventWorkerEffectPlan, resourceCode: string, input: DataQuery): DataQuery;
|
|
74
|
+
export declare function validateEventWorkerMutationPlan(plan: EventWorkerEffectPlan, raw: EventWorkerMutationPlan): EventWorkerMutationPlan;
|
|
75
|
+
export declare function eventWorkerEffectSignatureContent(command: EventWorkerEffectCommand, timestamp: string): string;
|
|
76
|
+
//# sourceMappingURL=event-worker-effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-worker-effect.d.ts","sourceRoot":"","sources":["../../src/native-compiler/event-worker-effect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpH,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC5C,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AACD,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AACD,MAAM,WAAW,qBAAsB,SAAQ,4BAA4B;IACzE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,wBAAwB,EAAE,CAAC;IACvC,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC;AACD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IACpF,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;CACzD;AACD,MAAM,MAAM,wBAAwB,GAAG,sBAAsB,GAAG;IAC9D,aAAa,EAAE,4CAA4C,CAAC;CAC7D,GAAG,CACA;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAC3D;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,uBAAuB,CAAA;CAAE,GACvE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAC3C,CAAC;AACF,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,4CAA4C,CAAC;IAC5D,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAC3E,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAC3C,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACtC;AACD,qBAAa,8BAA+B,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM;gBAAtC,IAAI,EAAE,MAAM,EAAW,OAAO,EAAE,MAAM;CAC5D;AAoBD,2FAA2F;AAC3F,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,iBAAiB,GAAE,SAAS,MAAM,EAAO,EAAE,OAAO,SAAe,GAAG,qBAAqB,CA0BxN;AAsBD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,CAavH;AACD,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,qBAAqB,EAAE,GAAG,EAAE,uBAAuB,GAAG,uBAAuB,CAuClI;AACD,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9G"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { DATA_QUERY_OPERATORS } from './data-query-operators.js';
|
|
2
|
+
import { sha256Digest } from '../canonical.js';
|
|
3
|
+
export class EventWorkerEffectContractError extends Error {
|
|
4
|
+
code;
|
|
5
|
+
pointer;
|
|
6
|
+
constructor(code, pointer) {
|
|
7
|
+
super(code);
|
|
8
|
+
this.code = code;
|
|
9
|
+
this.pointer = pointer;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const fail = (pointer, code = 'EVENT_WORKER_EFFECT_INVALID') => { throw new EventWorkerEffectContractError(code, pointer); };
|
|
13
|
+
const object = (value, keys, pointer) => {
|
|
14
|
+
if (!value || typeof value !== 'object' || Array.isArray(value) || Object.keys(value).some(key => !keys.includes(key)))
|
|
15
|
+
fail(pointer);
|
|
16
|
+
return value;
|
|
17
|
+
};
|
|
18
|
+
const uuid = (value) => typeof value === 'string' && /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);
|
|
19
|
+
const integer = (value, min, max, pointer) => {
|
|
20
|
+
if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < min || value > max)
|
|
21
|
+
fail(pointer);
|
|
22
|
+
return value;
|
|
23
|
+
};
|
|
24
|
+
const strings = (value, max, pointer) => {
|
|
25
|
+
if (!Array.isArray(value) || value.length > max || value.some(item => typeof item !== 'string' || !item || item.length > 255) || new Set(value).size !== value.length)
|
|
26
|
+
fail(pointer);
|
|
27
|
+
return [...value].sort();
|
|
28
|
+
};
|
|
29
|
+
const bounded = (value, max, pointer) => { if (typeof value !== 'string' || !value || value.length > max || value.trim() !== value)
|
|
30
|
+
fail(pointer); };
|
|
31
|
+
const jsonBytes = (value, pointer) => {
|
|
32
|
+
let serialized;
|
|
33
|
+
try {
|
|
34
|
+
serialized = JSON.stringify(value);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
fail(pointer);
|
|
38
|
+
}
|
|
39
|
+
if (!serialized || Buffer.byteLength(serialized) > 65536)
|
|
40
|
+
fail(pointer, 'EVENT_WORKER_EFFECT_SIZE_EXCEEDED');
|
|
41
|
+
};
|
|
42
|
+
/** Single compiler/SDK/platform authority validator; no application-defined identities. */
|
|
43
|
+
export function compileEventWorkerEffect(raw, resources, emitTypes, workflowResources = [], pointer = '/execution') {
|
|
44
|
+
const value = object(raw, ['kind', 'version', 'resources', 'emitEventTypes', 'maxOperations', 'maxGuards', 'maxQueryRecords', 'maxIntentsPerEvent'], pointer);
|
|
45
|
+
if (value.kind !== 'worker-effect' || value.version !== 1 || !Array.isArray(value.resources) || !value.resources.length || value.resources.length > 16)
|
|
46
|
+
fail(pointer);
|
|
47
|
+
const byCode = new Map(resources.map(resource => [resource.code, resource]));
|
|
48
|
+
const used = new Set();
|
|
49
|
+
const resourceDigests = {};
|
|
50
|
+
const grants = value.resources.map((entry, index) => {
|
|
51
|
+
const p = `${pointer}/resources/${index}`, grant = object(entry, ['resourceCode', 'readFields', 'writeOperations', 'writeFields'], p);
|
|
52
|
+
const resource = byCode.get(grant.resourceCode);
|
|
53
|
+
if (!resource || used.has(grant.resourceCode))
|
|
54
|
+
fail(p, 'EVENT_WORKER_EFFECT_RESOURCE_INVALID');
|
|
55
|
+
used.add(grant.resourceCode);
|
|
56
|
+
const fields = new Map((resource.schema?.fields || []).map((field) => [field.code, field]));
|
|
57
|
+
const readFields = strings(grant.readFields, 64, `${p}/readFields`), writeFields = strings(grant.writeFields, 64, `${p}/writeFields`);
|
|
58
|
+
const writeOperations = strings(grant.writeOperations, 2, `${p}/writeOperations`);
|
|
59
|
+
if (writeOperations.some(operation => !['create', 'update'].includes(operation)) || Boolean(writeOperations.length) !== Boolean(writeFields.length))
|
|
60
|
+
fail(p);
|
|
61
|
+
if (!readFields.length || readFields.some(field => !['id', 'revision', 'created_at'].includes(field) && !fields.has(field)))
|
|
62
|
+
fail(`${p}/readFields`, 'EVENT_WORKER_EFFECT_FIELD_INVALID');
|
|
63
|
+
if (writeFields.some(field => !fields.has(field) || fields.get(field).type === 'serial-number' || ['id', 'revision', 'tenant_id', 'app_code', 'environment_key', 'created_at', 'created_by', 'updated_at', 'updated_by'].includes(field)))
|
|
64
|
+
fail(`${p}/writeFields`, 'EVENT_WORKER_EFFECT_FIELD_INVALID');
|
|
65
|
+
if (writeOperations.length && workflowResources.includes(grant.resourceCode))
|
|
66
|
+
fail(p, 'EVENT_WORKER_EFFECT_WORKFLOW_RESOURCE_FORBIDDEN');
|
|
67
|
+
resourceDigests[grant.resourceCode] = sha256Digest(resource);
|
|
68
|
+
return { resourceCode: grant.resourceCode, readFields, writeFields, writeOperations: writeOperations };
|
|
69
|
+
}).sort((a, b) => a.resourceCode.localeCompare(b.resourceCode));
|
|
70
|
+
const eventTypes = strings(value.emitEventTypes, 16, `${pointer}/emitEventTypes`);
|
|
71
|
+
if (eventTypes.some(type => !emitTypes.includes(type) || type.startsWith('openxiangda.')))
|
|
72
|
+
fail(`${pointer}/emitEventTypes`, 'EVENT_WORKER_EFFECT_EVENT_INVALID');
|
|
73
|
+
const plan = { kind: 'worker-effect', version: 1, resources: grants, emitEventTypes: eventTypes, resourceDigests,
|
|
74
|
+
maxOperations: integer(value.maxOperations, 1, 8, `${pointer}/maxOperations`), maxGuards: integer(value.maxGuards, 1, 24, `${pointer}/maxGuards`),
|
|
75
|
+
maxQueryRecords: integer(value.maxQueryRecords, 1, 500, `${pointer}/maxQueryRecords`), maxIntentsPerEvent: integer(value.maxIntentsPerEvent, 1, 100, `${pointer}/maxIntentsPerEvent`) };
|
|
76
|
+
jsonBytes(plan, pointer);
|
|
77
|
+
return { ...plan, digest: sha256Digest(plan) };
|
|
78
|
+
}
|
|
79
|
+
function grantFor(plan, code, pointer) {
|
|
80
|
+
const grant = plan.resources.find(resource => resource.resourceCode === code);
|
|
81
|
+
if (!grant)
|
|
82
|
+
fail(pointer, 'EVENT_WORKER_EFFECT_RESOURCE_FORBIDDEN');
|
|
83
|
+
return grant;
|
|
84
|
+
}
|
|
85
|
+
function whereFields(value, allowed, pointer, depth = 0) {
|
|
86
|
+
if (depth > 12)
|
|
87
|
+
fail(pointer);
|
|
88
|
+
const where = object(value, ['field', 'operator', 'value', 'path', 'and', 'or', 'not'], pointer);
|
|
89
|
+
if (where.field !== undefined) {
|
|
90
|
+
if (!DATA_QUERY_OPERATORS.has(where.operator) || (where.path !== undefined && (typeof where.path !== 'string' || !/^(value|label|snapshot\.[A-Za-z][A-Za-z0-9_]{0,62}|[A-Za-z][A-Za-z0-9_]{0,62})$/.test(where.path))))
|
|
91
|
+
fail(pointer);
|
|
92
|
+
if (!allowed.includes(where.field))
|
|
93
|
+
fail(pointer, 'EVENT_WORKER_EFFECT_FIELD_FORBIDDEN');
|
|
94
|
+
if (where.and !== undefined || where.or !== undefined || where.not !== undefined)
|
|
95
|
+
fail(pointer);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const keys = Object.keys(where);
|
|
99
|
+
if (keys.length !== 1)
|
|
100
|
+
fail(pointer);
|
|
101
|
+
if (where.not !== undefined)
|
|
102
|
+
return whereFields(where.not, allowed, `${pointer}/not`, depth + 1);
|
|
103
|
+
const kind = where.and !== undefined ? 'and' : 'or', items = where[kind];
|
|
104
|
+
if (!Array.isArray(items) || !items.length || items.length > 100)
|
|
105
|
+
fail(pointer);
|
|
106
|
+
items.forEach((item, index) => whereFields(item, allowed, `${pointer}/${kind}/${index}`, depth + 1));
|
|
107
|
+
}
|
|
108
|
+
export function validateEventWorkerQuery(plan, resourceCode, input) {
|
|
109
|
+
const value = object(input, ['schemaVersion', 'select', 'where', 'order', 'limit', 'offset'], '/query');
|
|
110
|
+
if (value.schemaVersion !== 'openxiangda.data-query/v2')
|
|
111
|
+
fail('/query');
|
|
112
|
+
const grant = grantFor(plan, resourceCode, '/resourceCode'), selected = strings(value.select, 64, '/query/select');
|
|
113
|
+
if (!selected.length || selected.some(field => !grant.readFields.includes(field)))
|
|
114
|
+
fail('/query/select', 'EVENT_WORKER_EFFECT_FIELD_FORBIDDEN');
|
|
115
|
+
integer(value.limit, 1, plan.maxQueryRecords, '/query/limit');
|
|
116
|
+
integer(value.offset ?? 0, 0, 10000, '/query/offset');
|
|
117
|
+
if (value.where !== undefined)
|
|
118
|
+
whereFields(value.where, grant.readFields, '/query/where');
|
|
119
|
+
if (value.order !== undefined) {
|
|
120
|
+
if (!Array.isArray(value.order) || value.order.length > 8)
|
|
121
|
+
fail('/query/order');
|
|
122
|
+
value.order.forEach((entry, index) => {
|
|
123
|
+
const order = object(entry, ['field', 'direction'], `/query/order/${index}`);
|
|
124
|
+
if (!grant.readFields.includes(order.field) || !['asc', 'desc'].includes(order.direction))
|
|
125
|
+
fail('/query/order', 'EVENT_WORKER_EFFECT_FIELD_FORBIDDEN');
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
jsonBytes(input, '/query');
|
|
129
|
+
return input;
|
|
130
|
+
}
|
|
131
|
+
export function validateEventWorkerMutationPlan(plan, raw) {
|
|
132
|
+
const input = object(raw, ['guards', 'operations'], '/plan');
|
|
133
|
+
jsonBytes(input, '/plan');
|
|
134
|
+
if (!Array.isArray(input.operations) || !input.operations.length || input.operations.length > plan.maxOperations || !Array.isArray(input.guards) || !input.guards.length || input.guards.length > plan.maxGuards)
|
|
135
|
+
fail('/plan');
|
|
136
|
+
input.operations.forEach((entry, index) => {
|
|
137
|
+
const p = `/plan/operations/${index}`, operation = object(entry, ['operation', 'resourceCode', 'id', 'expectedRevision', 'data', 'eventType', 'subject'], p);
|
|
138
|
+
if (operation.operation === 'emitEvent') {
|
|
139
|
+
if (operation.resourceCode !== undefined || operation.id !== undefined || operation.expectedRevision !== undefined || !plan.emitEventTypes.includes(operation.eventType))
|
|
140
|
+
fail(p, 'EVENT_WORKER_EFFECT_EVENT_INVALID');
|
|
141
|
+
if (operation.subject !== undefined)
|
|
142
|
+
bounded(operation.subject, 255, `${p}/subject`);
|
|
143
|
+
object(operation.data, Object.keys(operation.data || {}), `${p}/data`);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (!['create', 'update'].includes(operation.operation) || operation.eventType !== undefined || operation.subject !== undefined)
|
|
147
|
+
fail(p);
|
|
148
|
+
const grant = grantFor(plan, operation.resourceCode, p);
|
|
149
|
+
if (!grant.writeOperations.includes(operation.operation))
|
|
150
|
+
fail(p, 'EVENT_WORKER_EFFECT_OPERATION_FORBIDDEN');
|
|
151
|
+
const data = object(operation.data, grant.writeFields, `${p}/data`);
|
|
152
|
+
if (!Object.keys(data).length)
|
|
153
|
+
fail(`${p}/data`);
|
|
154
|
+
if (operation.operation === 'update') {
|
|
155
|
+
if (!uuid(operation.id))
|
|
156
|
+
fail(`${p}/id`);
|
|
157
|
+
integer(operation.expectedRevision, 1, Number.MAX_SAFE_INTEGER, `${p}/expectedRevision`);
|
|
158
|
+
}
|
|
159
|
+
else if (operation.id !== undefined || operation.expectedRevision !== undefined)
|
|
160
|
+
fail(p);
|
|
161
|
+
});
|
|
162
|
+
input.guards.forEach((entry, index) => {
|
|
163
|
+
const p = `/plan/guards/${index}`, rawGuard = entry, keys = rawGuard?.kind === 'record-set-match' ? ['kind', 'resourceCode', 'errorCode', 'records', 'where'] : ['kind', 'resourceCode', 'errorCode', 'id', 'assertions', 'lockKey', 'where'];
|
|
164
|
+
const guard = object(entry, keys, p);
|
|
165
|
+
if (!['query-empty', 'record-match', 'record-assert', 'record-exists', 'record-set-match'].includes(guard.kind))
|
|
166
|
+
fail(p, 'EVENT_WORKER_EFFECT_GUARD_FORBIDDEN');
|
|
167
|
+
const grant = grantFor(plan, guard.resourceCode, p);
|
|
168
|
+
bounded(guard.errorCode, 128, `${p}/errorCode`);
|
|
169
|
+
if (guard.kind === 'record-set-match') {
|
|
170
|
+
if (!Array.isArray(guard.records) || guard.records.length > 500 || new Set(guard.records.map((row) => row?.id)).size !== guard.records.length)
|
|
171
|
+
fail(p);
|
|
172
|
+
guard.records.forEach((raw) => { const row = object(raw, ['id', 'expectedRevision'], p); if (!uuid(row.id))
|
|
173
|
+
fail(p); integer(row.expectedRevision, 1, Number.MAX_SAFE_INTEGER, p); });
|
|
174
|
+
if (guard.where !== undefined)
|
|
175
|
+
whereFields(guard.where, grant.readFields, `${p}/where`);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
bounded(guard.lockKey, 255, `${p}/lockKey`);
|
|
179
|
+
if (guard.kind === 'query-empty') {
|
|
180
|
+
if (guard.id !== undefined || guard.assertions !== undefined)
|
|
181
|
+
fail(p);
|
|
182
|
+
whereFields(guard.where, grant.readFields, `${p}/where`);
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
if (!uuid(guard.id) || guard.where !== undefined)
|
|
186
|
+
fail(p);
|
|
187
|
+
if (guard.kind === 'record-exists') {
|
|
188
|
+
if (guard.assertions !== undefined)
|
|
189
|
+
fail(p);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
if (!Array.isArray(guard.assertions) || !guard.assertions.length || guard.assertions.length > 32)
|
|
193
|
+
fail(p);
|
|
194
|
+
guard.assertions.forEach((raw) => {
|
|
195
|
+
const assertion = object(raw, ['kind', 'field', 'operator', 'value', 'path', 'leftField', 'rightField'], p);
|
|
196
|
+
if (!['value', 'field', 'database-now'].includes(assertion.kind))
|
|
197
|
+
fail(p);
|
|
198
|
+
const fields = assertion.kind === 'field' ? [assertion.leftField, assertion.rightField] : [assertion.field];
|
|
199
|
+
if (fields.some(field => !grant.readFields.includes(field)))
|
|
200
|
+
fail(p, 'EVENT_WORKER_EFFECT_FIELD_FORBIDDEN');
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
return raw;
|
|
204
|
+
}
|
|
205
|
+
export function eventWorkerEffectSignatureContent(command, timestamp) {
|
|
206
|
+
return [command.schemaVersion, timestamp, sha256Digest(command)].join('\n');
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=event-worker-effect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-worker-effect.js","sourceRoot":"","sources":["../../src/native-compiler/event-worker-effect.ts"],"names":[],"mappings":"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"}
|