openxiangda-contracts 2.24.0 → 2.26.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/README.md +1 -1
- package/dist/cli.d.ts +38 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +11 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/native-compiler/compiler.d.ts.map +1 -1
- package/dist/native-compiler/compiler.js +21 -2
- package/dist/native-compiler/compiler.js.map +1 -1
- package/dist/native-compiler/decimal-lifecycle.d.ts +12 -0
- package/dist/native-compiler/decimal-lifecycle.d.ts.map +1 -0
- package/dist/native-compiler/decimal-lifecycle.js +83 -0
- package/dist/native-compiler/decimal-lifecycle.js.map +1 -0
- package/dist/native-compiler/index.cjs +2 -2
- 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 +2 -2
- package/dist/native-version.d.ts +1 -0
- package/dist/native-version.d.ts.map +1 -1
- package/dist/native-version.js +1 -0
- package/dist/native-version.js.map +1 -1
- package/dist/schemas.d.ts +91 -799
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +28 -280
- package/dist/schemas.js.map +1 -1
- package/dist/types.d.ts +17 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -5
- package/dist/types.js.map +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +9 -0
- package/dist/validation.js.map +1 -1
- package/package.json +1 -1
- package/dist/studio.d.ts +0 -140
- package/dist/studio.d.ts.map +0 -1
- package/dist/studio.js +0 -23
- package/dist/studio.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# openxiangda-contracts
|
|
2
2
|
|
|
3
|
-
维护 OpenXiangda 2.0 的 TypeScript 与 JSON Schema 协议,包括应用声明、Data API、当前用户的角色与能力并集、AppPackage、部署结果及
|
|
3
|
+
维护 OpenXiangda 2.0 的 TypeScript 与 JSON Schema 协议,包括应用声明、Data API、当前用户的角色与能力并集、AppPackage、部署结果及 CLI 工作区事件。
|
|
4
4
|
|
|
5
5
|
应用使用根包 `openxiangda/core` 等公开子路径。平台与工具链维护者在此修改共享协议,并验证调用双方及包版本组合;不要在应用中复制身份、权限或部署状态协议。
|
|
6
6
|
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export declare const CLI_PROTOCOL_VERSION: "openxiangda.cli/v1";
|
|
2
|
+
export declare const CLI_RESULT_SCHEMA_VERSION: "openxiangda.cli-result/v2";
|
|
3
|
+
export declare const CLI_EVENT_SCHEMA_VERSION: "openxiangda.cli-event/v1";
|
|
4
|
+
export declare const WORKSPACE_TEMPLATE_BINDING_SCHEMA_VERSION: "openxiangda.workspace-template-binding/v1";
|
|
5
|
+
export declare const CLI_EVENT_TYPES: readonly ["command.started", "command.status", "command.completed", "command.failed"];
|
|
6
|
+
export type CliEventType = (typeof CLI_EVENT_TYPES)[number];
|
|
7
|
+
export interface CliEvent {
|
|
8
|
+
schemaVersion: typeof CLI_EVENT_SCHEMA_VERSION;
|
|
9
|
+
eventId: string;
|
|
10
|
+
runId: string;
|
|
11
|
+
seq: number;
|
|
12
|
+
type: CliEventType;
|
|
13
|
+
timestamp: string;
|
|
14
|
+
payload: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
export interface WorkspaceTemplateBinding {
|
|
17
|
+
schemaVersion: typeof WORKSPACE_TEMPLATE_BINDING_SCHEMA_VERSION;
|
|
18
|
+
ref: string;
|
|
19
|
+
digest: `sha256:${string}`;
|
|
20
|
+
}
|
|
21
|
+
export interface CliProtocolCapabilities {
|
|
22
|
+
schemaVersion: typeof CLI_PROTOCOL_VERSION;
|
|
23
|
+
cliResultSchemaVersion: typeof CLI_RESULT_SCHEMA_VERSION;
|
|
24
|
+
cliEvents: {
|
|
25
|
+
schemaVersion: typeof CLI_EVENT_SCHEMA_VERSION;
|
|
26
|
+
commands: Array<{
|
|
27
|
+
id: string;
|
|
28
|
+
operation: string;
|
|
29
|
+
risk: "read" | "write-local" | "deploy";
|
|
30
|
+
}>;
|
|
31
|
+
};
|
|
32
|
+
templates: {
|
|
33
|
+
schemaVersion: typeof WORKSPACE_TEMPLATE_BINDING_SCHEMA_VERSION;
|
|
34
|
+
digestAlgorithm: "sha256";
|
|
35
|
+
supportedReferences: ["builtin:application", "file"];
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,EAAG,oBAA6B,CAAC;AAClE,eAAO,MAAM,yBAAyB,EACpC,2BAAoC,CAAC;AAEvC,eAAO,MAAM,wBAAwB,EACnC,0BAAmC,CAAC;AAEtC,eAAO,MAAM,yCAAyC,EACpD,2CAAoD,CAAC;AAEvD,eAAO,MAAM,eAAe,uFAKlB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,OAAO,wBAAwB,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,OAAO,yCAAyC,CAAC;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,OAAO,oBAAoB,CAAC;IAC3C,sBAAsB,EAAE,OAAO,yBAAyB,CAAC;IACzD,SAAS,EAAE;QACT,aAAa,EAAE,OAAO,wBAAwB,CAAC;QAC/C,QAAQ,EAAE,KAAK,CAAC;YACd,EAAE,EAAE,MAAM,CAAC;YACX,SAAS,EAAE,MAAM,CAAC;YAClB,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;SACzC,CAAC,CAAC;KACJ,CAAC;IACF,SAAS,EAAE;QACT,aAAa,EAAE,OAAO,yCAAyC,CAAC;QAChE,eAAe,EAAE,QAAQ,CAAC;QAC1B,mBAAmB,EAAE,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;KACtD,CAAC;CACH"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const CLI_PROTOCOL_VERSION = "openxiangda.cli/v1";
|
|
2
|
+
export const CLI_RESULT_SCHEMA_VERSION = "openxiangda.cli-result/v2";
|
|
3
|
+
export const CLI_EVENT_SCHEMA_VERSION = "openxiangda.cli-event/v1";
|
|
4
|
+
export const WORKSPACE_TEMPLATE_BINDING_SCHEMA_VERSION = "openxiangda.workspace-template-binding/v1";
|
|
5
|
+
export const CLI_EVENT_TYPES = [
|
|
6
|
+
"command.started",
|
|
7
|
+
"command.status",
|
|
8
|
+
"command.completed",
|
|
9
|
+
"command.failed",
|
|
10
|
+
];
|
|
11
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAA6B,CAAC;AAClE,MAAM,CAAC,MAAM,yBAAyB,GACpC,2BAAoC,CAAC;AAEvC,MAAM,CAAC,MAAM,wBAAwB,GACnC,0BAAmC,CAAC;AAEtC,MAAM,CAAC,MAAM,yCAAyC,GACpD,2CAAoD,CAAC;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,gBAAgB;CACR,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export * from './notification.js';
|
|
|
10
10
|
export * from './references.js';
|
|
11
11
|
export * from './schemas.js';
|
|
12
12
|
export * from './surface.js';
|
|
13
|
-
export * from './
|
|
13
|
+
export * from './cli.js';
|
|
14
14
|
export * from './types.js';
|
|
15
15
|
export * from './workflow-summary.js';
|
|
16
16
|
export * from './workflow-detail.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@ export * from './notification.js';
|
|
|
10
10
|
export * from './references.js';
|
|
11
11
|
export * from './schemas.js';
|
|
12
12
|
export * from './surface.js';
|
|
13
|
-
export * from './
|
|
13
|
+
export * from './cli.js';
|
|
14
14
|
export * from './types.js';
|
|
15
15
|
export * from './workflow-summary.js';
|
|
16
16
|
export * from './workflow-detail.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/native-compiler/compiler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/native-compiler/compiler.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,KAAK,kCAAkC,IAAI,uCAAuC,EACnF,MAAM,aAAa,CAAC;AAyBrB,QAAA,MAAM,iBAAiB,mDAAmD,CAAC;AAC3E,QAAA,MAAM,yBAAyB,YAA2C,CAAC;AAgF3E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAe7B,CAAC;AACZ,eAAO,MAAM,mBAAmB,6HAItB,CAAC;AACX,eAAO,MAAM,uBAAuB,u/CAkC1B,CAAC;AAGX,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC1C,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,6BAA6B,CAAC,CAAC,GAAG,UAAU;IAC3D,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iCAAiC;IAChD,aAAa,EAAE,OAAO,iBAAiB,CAAC;IACxC,uBAAuB,EAAE,OAAO,yBAAyB,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,WAAW,EAAE;QACX,KAAK,EAAE,6BAA6B,CAAC;QACrC,IAAI,EAAE,6BAA6B,CAAC;QACpC,MAAM,EAAE,6BAA6B,CAAC;QACtC,SAAS,EAAE,6BAA6B,CAAC;QACzC,OAAO,EAAE,6BAA6B,CAAC;QACvC,SAAS,EAAE,6BAA6B,CAAC;KAC1C,CAAC;IACF,4BAA4B,EAAE,uCAAuC,EAAE,CAAC;IACxE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAG3C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAY5C;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,gCAAgC,GACtC,iCAAiC,CAkJnC;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,UAAU,GACjB,uCAAuC,EAAE,CAiT3C;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;CAChC,GAAG,wBAAwB,EAAE,CA4J7B"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { normalizeDecimalReservationEventDeclaration, decimalReservationEventContext } from './decimal-reservation.js';
|
|
2
|
+
import { NativeDecimalLifecycleContractError, parseDecimalReservationLifecycle, validateDecimalReservationLifecycles } from './decimal-lifecycle.js';
|
|
2
3
|
import { compileNativeEventAction } from './event-action.js';
|
|
3
4
|
import { projectNativeDataResourceViewV2 } from './data-surface.js';
|
|
4
5
|
import { hasDataAuditReadPolicy, isDataAuditMetadataField } from './data-audit-access.js';
|
|
@@ -321,6 +322,11 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
|
|
|
321
322
|
},
|
|
322
323
|
};
|
|
323
324
|
const usages = [
|
|
325
|
+
...(resources.some(resource => resource.decimalReservationLifecycle)
|
|
326
|
+
? [{ code: 'data.decimal-reservation-lifecycle',
|
|
327
|
+
declaration: resources.filter(resource => resource.decimalReservationLifecycle)
|
|
328
|
+
.map(resource => ({ code: resource.code, decimalReservationLifecycle: resource.decimalReservationLifecycle })) }]
|
|
329
|
+
: []),
|
|
324
330
|
...(operations.some(operation => operation.platformAccess?.decimalReservation) ||
|
|
325
331
|
config.events.subscriptions.some((subscription) => subscription.platformAccess?.decimalReservation)
|
|
326
332
|
? [{
|
|
@@ -942,6 +948,15 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
|
|
|
942
948
|
validateAdminNavigationReferences(config);
|
|
943
949
|
const adminPages = compileAdminPages(config);
|
|
944
950
|
const subjectReadSurfaces = compileSubjectReadSurfaces(config, capabilities);
|
|
951
|
+
const operations = compileOperations(config);
|
|
952
|
+
try {
|
|
953
|
+
validateDecimalReservationLifecycles(config.data.resources, operations);
|
|
954
|
+
}
|
|
955
|
+
catch (error) {
|
|
956
|
+
if (error instanceof NativeDecimalLifecycleContractError)
|
|
957
|
+
fail(error.code, error.pointer, { reason: error.reason });
|
|
958
|
+
throw error;
|
|
959
|
+
}
|
|
945
960
|
return {
|
|
946
961
|
schemaVersion: CONTRACT_SCHEMA,
|
|
947
962
|
compilerContractVersion: COMPILER_CONTRACT_VERSION,
|
|
@@ -952,7 +967,7 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
|
|
|
952
967
|
resources: compileResources(config),
|
|
953
968
|
...(subjectReadSurfaces.length ? { subjectReadSurfaces } : {}),
|
|
954
969
|
capabilities: sorted(capabilities, item => item.code),
|
|
955
|
-
operations
|
|
970
|
+
operations,
|
|
956
971
|
eventConsumers,
|
|
957
972
|
eventProducers,
|
|
958
973
|
eventSchemas,
|
|
@@ -4683,6 +4698,7 @@ function validateResource(raw, pointer, appCode) {
|
|
|
4683
4698
|
'schema',
|
|
4684
4699
|
'surface',
|
|
4685
4700
|
'invariants',
|
|
4701
|
+
'decimalReservationLifecycle',
|
|
4686
4702
|
'capabilities',
|
|
4687
4703
|
'dataPolicyCode',
|
|
4688
4704
|
'fieldPolicies',
|
|
@@ -4695,13 +4711,15 @@ function validateResource(raw, pointer, appCode) {
|
|
|
4695
4711
|
exactKeys(schema, ['fields'], `${pointer}/schema`);
|
|
4696
4712
|
let fields;
|
|
4697
4713
|
let invariants;
|
|
4714
|
+
let decimalReservationLifecycle;
|
|
4698
4715
|
try {
|
|
4716
|
+
decimalReservationLifecycle = parseDecimalReservationLifecycle(resource.decimalReservationLifecycle, `${pointer}/decimalReservationLifecycle`);
|
|
4699
4717
|
fields = parseNativeDataFieldsV2(schema.fields, `${pointer}/schema/fields`);
|
|
4700
4718
|
invariants = parseNativeDataResourceInvariantsV2(resource.invariants, fields, `${pointer}/invariants`);
|
|
4701
4719
|
validateNativeDataResourceSurfaceV2(resource.surface, fields, `${pointer}/surface`);
|
|
4702
4720
|
}
|
|
4703
4721
|
catch (error) {
|
|
4704
|
-
if (error instanceof NativeDataFieldContractV2Error) {
|
|
4722
|
+
if (error instanceof NativeDataFieldContractV2Error || error instanceof NativeDecimalLifecycleContractError) {
|
|
4705
4723
|
fail(error.code, error.pointer);
|
|
4706
4724
|
}
|
|
4707
4725
|
throw error;
|
|
@@ -4735,6 +4753,7 @@ function validateResource(raw, pointer, appCode) {
|
|
|
4735
4753
|
name,
|
|
4736
4754
|
schema: { fields },
|
|
4737
4755
|
...(resource.invariants === undefined ? {} : { invariants }),
|
|
4756
|
+
...(decimalReservationLifecycle ? { decimalReservationLifecycle } : {}),
|
|
4738
4757
|
capabilities,
|
|
4739
4758
|
fieldPolicies,
|
|
4740
4759
|
};
|