openxiangda-contracts 2.26.0 → 2.28.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.
Files changed (49) hide show
  1. package/dist/browser.d.ts +2 -0
  2. package/dist/browser.d.ts.map +1 -1
  3. package/dist/browser.js +2 -0
  4. package/dist/browser.js.map +1 -1
  5. package/dist/concurrency.d.ts +145 -0
  6. package/dist/concurrency.d.ts.map +1 -0
  7. package/dist/concurrency.js +2 -0
  8. package/dist/concurrency.js.map +1 -0
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/native-compiler/compiler.d.ts.map +1 -1
  14. package/dist/native-compiler/compiler.js +25 -2
  15. package/dist/native-compiler/compiler.js.map +1 -1
  16. package/dist/native-compiler/data-surface.js +1 -1
  17. package/dist/native-compiler/data-surface.js.map +1 -1
  18. package/dist/native-compiler/index.cjs +5 -5
  19. package/dist/native-compiler/index.d.ts +2 -0
  20. package/dist/native-compiler/index.d.ts.map +1 -1
  21. package/dist/native-compiler/index.js +5 -5
  22. package/dist/native-compiler/managed-concurrency.d.ts +10 -0
  23. package/dist/native-compiler/managed-concurrency.d.ts.map +1 -0
  24. package/dist/native-compiler/managed-concurrency.js +238 -0
  25. package/dist/native-compiler/managed-concurrency.js.map +1 -0
  26. package/dist/native-compiler/unique-keys.d.ts +102 -0
  27. package/dist/native-compiler/unique-keys.d.ts.map +1 -0
  28. package/dist/native-compiler/unique-keys.js +112 -0
  29. package/dist/native-compiler/unique-keys.js.map +1 -0
  30. package/dist/native-version.d.ts +2 -0
  31. package/dist/native-version.d.ts.map +1 -1
  32. package/dist/native-version.js +2 -0
  33. package/dist/native-version.js.map +1 -1
  34. package/dist/native.d.ts +2 -0
  35. package/dist/native.d.ts.map +1 -1
  36. package/dist/native.js.map +1 -1
  37. package/dist/schemas.d.ts +178 -2
  38. package/dist/schemas.d.ts.map +1 -1
  39. package/dist/schemas.js +5 -1
  40. package/dist/schemas.js.map +1 -1
  41. package/dist/surface.d.ts +1 -1
  42. package/dist/surface.d.ts.map +1 -1
  43. package/dist/types.d.ts +18 -0
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/types.js.map +1 -1
  46. package/dist/validation.d.ts.map +1 -1
  47. package/dist/validation.js +9 -0
  48. package/dist/validation.js.map +1 -1
  49. package/package.json +1 -1
package/dist/browser.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  /** Browser-safe contract surface. Node-only canonical hashing stays on the root export. */
2
+ export * from './concurrency.js';
2
3
  export * from './field-values.js';
3
4
  export * from './event-catalog.js';
4
5
  export * from './ai.js';
@@ -15,4 +16,5 @@ export * from './workflow-correction.js';
15
16
  export * from './native-compiler/data-audit-access.js';
16
17
  export * from './process-resolution.js';
17
18
  export * from './application-diagnostics.js';
19
+ export * from './native-compiler/unique-keys.js';
18
20
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AAEvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AAEvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC"}
package/dist/browser.js CHANGED
@@ -1,4 +1,5 @@
1
1
  /** Browser-safe contract surface. Node-only canonical hashing stays on the root export. */
2
+ export * from './concurrency.js';
2
3
  export * from './field-values.js';
3
4
  export * from './event-catalog.js';
4
5
  export * from './ai.js';
@@ -15,4 +16,5 @@ export * from './workflow-correction.js';
15
16
  export * from './native-compiler/data-audit-access.js';
16
17
  export * from './process-resolution.js';
17
18
  export * from './application-diagnostics.js';
19
+ export * from './native-compiler/unique-keys.js';
18
20
  //# sourceMappingURL=browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AAEvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AAEvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC"}
@@ -0,0 +1,145 @@
1
+ /** Optional platform-owned concurrency. No application Redis, SQL or worker code. */
2
+ export type ConcurrencyParameter = {
3
+ type: 'uuid';
4
+ } | {
5
+ type: 'string';
6
+ values: string[];
7
+ } | {
8
+ type: 'integer';
9
+ minimum: number;
10
+ maximum: number;
11
+ };
12
+ export type ConcurrencyBinding = {
13
+ from: 'input';
14
+ key: string;
15
+ } | {
16
+ from: 'actor';
17
+ } | {
18
+ from: 'literal';
19
+ value: string | number | boolean | null;
20
+ } | {
21
+ from: 'allocation';
22
+ };
23
+ export interface ManagedReadDeclaration {
24
+ code: string;
25
+ resourceCode: string;
26
+ parameters: Record<string, ConcurrencyParameter>;
27
+ select: string[];
28
+ where?: Array<{
29
+ field: string;
30
+ value: ConcurrencyBinding;
31
+ }>;
32
+ limit: number;
33
+ scope: 'subject' | 'application';
34
+ freshSeconds: number;
35
+ staleSeconds: number;
36
+ maxKeys: number;
37
+ sourcePerSecond: number;
38
+ /** Fields whose changes invalidate the snapshot; select/filter fields are mandatory. */
39
+ dependencies: string[];
40
+ }
41
+ export interface AdmissionPolicy {
42
+ perSecond: number;
43
+ burst: number;
44
+ maxInFlight: number;
45
+ maxQueue: number;
46
+ maxWaitSeconds: number;
47
+ permitSeconds: number;
48
+ }
49
+ export interface IntegerQuotaDeclaration {
50
+ code: string;
51
+ sourceResource: string;
52
+ capacityField: string;
53
+ allocationResource: string;
54
+ allocationField: string;
55
+ /** Omit to allow immediate committed allocations only. */
56
+ reservationSeconds?: number;
57
+ }
58
+ export interface QueuedCommandDeclaration {
59
+ code: string;
60
+ capability: string;
61
+ parameters: Record<string, ConcurrencyParameter>;
62
+ resourceKey: ConcurrencyBinding;
63
+ admission: AdmissionPolicy;
64
+ deadlineSeconds: number;
65
+ guards?: Array<{
66
+ resourceCode: string;
67
+ id: ConcurrencyBinding;
68
+ conditions: Array<{
69
+ kind?: 'value';
70
+ field: string;
71
+ operator: 'eq' | 'neq' | 'lt' | 'lte' | 'gt' | 'gte';
72
+ value: ConcurrencyBinding;
73
+ } | {
74
+ kind: 'database-now';
75
+ field: string;
76
+ operator: 'lt' | 'lte' | 'gt' | 'gte';
77
+ }>;
78
+ }>;
79
+ operations: Array<{
80
+ operation: 'create' | 'update';
81
+ resourceCode: string;
82
+ id?: ConcurrencyBinding;
83
+ expectedRevision?: ConcurrencyBinding;
84
+ data: Record<string, ConcurrencyBinding>;
85
+ }>;
86
+ quota?: {
87
+ pool: string;
88
+ action: 'allocate' | 'confirm' | 'release';
89
+ units?: number;
90
+ mode?: 'reserved' | 'committed';
91
+ allocation?: ConcurrencyBinding;
92
+ };
93
+ }
94
+ export interface ManagedConcurrencyDeclaration {
95
+ version: 1;
96
+ /** Shared by all command/resource queues in this application and environment. */
97
+ admission: {
98
+ perSecond: number;
99
+ burst: number;
100
+ maxInFlight: number;
101
+ };
102
+ reads: ManagedReadDeclaration[];
103
+ quotas: IntegerQuotaDeclaration[];
104
+ commands: QueuedCommandDeclaration[];
105
+ }
106
+ export interface ManagedReadResult<T = Record<string, unknown>> {
107
+ items: T[];
108
+ generatedAt: string;
109
+ freshUntil: string;
110
+ staleUntil: string;
111
+ version: string;
112
+ freshness: 'fresh' | 'stale';
113
+ }
114
+ export type CommandState = 'accepted' | 'executing' | 'retry_wait' | 'succeeded' | 'rejected' | 'expired' | 'cancelled';
115
+ export interface CommandReceipt {
116
+ operationId: string;
117
+ command: string;
118
+ requestKey: string;
119
+ state: CommandState;
120
+ acceptedAt: string;
121
+ retryAfterMs: number;
122
+ result?: {
123
+ items?: Array<{
124
+ id: string;
125
+ revision?: number;
126
+ }>;
127
+ allocation?: {
128
+ id: string;
129
+ state: string;
130
+ units: number;
131
+ expiresAt: string | null;
132
+ };
133
+ };
134
+ errorCode?: string;
135
+ }
136
+ export interface WaitingReceipt {
137
+ state: 'waiting' | 'admitted' | 'expired';
138
+ ticket: string;
139
+ requestKey: string;
140
+ retryAfterMs: number;
141
+ position?: number;
142
+ permit?: string;
143
+ expiresAt: string;
144
+ }
145
+ //# sourceMappingURL=concurrency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../src/concurrency.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=concurrency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency.js","sourceRoot":"","sources":["../src/concurrency.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './canonical.js';
2
+ export * from './concurrency.js';
2
3
  export * from './native-compiler/decimal-reservation.js';
3
4
  export * from './native-compiler/data-audit-access.js';
4
5
  export * from './ai.js';
@@ -20,4 +21,5 @@ export * from './native-compiler/workflow-instance-policy.js';
20
21
  export { validateDataFieldDefinition } from './data-field-validation.js';
21
22
  export * from './process-resolution.js';
22
23
  export * from './application-diagnostics.js';
24
+ export * from './native-compiler/unique-keys.js';
23
25
  //# sourceMappingURL=index.d.ts.map
@@ -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,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
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,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;AAE7C,cAAc,kCAAkC,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './canonical.js';
2
+ export * from './concurrency.js';
2
3
  export * from './native-compiler/decimal-reservation.js';
3
4
  export * from './native-compiler/data-audit-access.js';
4
5
  export * from './ai.js';
@@ -20,4 +21,5 @@ export * from './native-compiler/workflow-instance-policy.js';
20
21
  export { validateDataFieldDefinition } from './data-field-validation.js';
21
22
  export * from './process-resolution.js';
22
23
  export * from './application-diagnostics.js';
24
+ export * from './native-compiler/unique-keys.js';
23
25
  //# sourceMappingURL=index.js.map
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,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
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,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;AAE7C,cAAc,kCAAkC,CAAC"}
@@ -1 +1 @@
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
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/native-compiler/compiler.ts"],"names":[],"mappings":"AAcA,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,CAmJnC;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,UAAU,GACjB,uCAAuC,EAAE,CAqT3C;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,3 +1,5 @@
1
+ import { NativeUniqueKeyContractError, parseNativeUniqueKeys } from './unique-keys.js';
2
+ import { validateManagedConcurrency, ManagedConcurrencyContractError } from './managed-concurrency.js';
1
3
  import { normalizeDecimalReservationEventDeclaration, decimalReservationEventContext } from './decimal-reservation.js';
2
4
  import { NativeDecimalLifecycleContractError, parseDecimalReservationLifecycle, validateDecimalReservationLifecycles } from './decimal-lifecycle.js';
3
5
  import { compileNativeEventAction } from './event-action.js';
@@ -200,6 +202,7 @@ export function compileNativeApplicationConfiguration(input) {
200
202
  appCode,
201
203
  resources: config.data.resources,
202
204
  resourceContracts: expectedContract.resources,
205
+ ...(expectedContract.concurrency ? { concurrency: expectedContract.concurrency } : {}),
203
206
  ...(expectedContract.subjectReadSurfaces
204
207
  ? { subjectReadSurfaces: expectedContract.subjectReadSurfaces }
205
208
  : {}),
@@ -322,6 +325,10 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
322
325
  },
323
326
  };
324
327
  const usages = [
328
+ ...(resources.some(resource => resource.uniqueKeys?.length)
329
+ ? [{ code: 'data.unique-keys', declaration: resources.filter(resource => resource.uniqueKeys?.length)
330
+ .map(resource => ({ code: resource.code, uniqueKeys: resource.uniqueKeys })) }] : []),
331
+ ...(config.data.concurrency ? [{ code: 'data.managed-concurrency', declaration: config.data.concurrency }] : []),
325
332
  ...(resources.some(resource => resource.decimalReservationLifecycle)
326
333
  ? [{ code: 'data.decimal-reservation-lifecycle',
327
334
  declaration: resources.filter(resource => resource.decimalReservationLifecycle)
@@ -734,6 +741,7 @@ function validateConfigurationEnvelope(config, appCode) {
734
741
  exactKeys(data, ['resources'], '/config/data', [
735
742
  'resourceDetailRoutes',
736
743
  'subjectReadSurfaces',
744
+ 'concurrency',
737
745
  ]);
738
746
  boundedArray(data.resources, '/config/data/resources', 100);
739
747
  if (data.subjectReadSurfaces !== undefined) {
@@ -814,6 +822,7 @@ function validateContractEnvelope(contract, appCode, configDigest) {
814
822
  'publicAccess',
815
823
  'adminAccess',
816
824
  'subjectReadSurfaces',
825
+ 'concurrency',
817
826
  ]);
818
827
  equal(contract.schemaVersion, CONTRACT_SCHEMA, '/contracts/schemaVersion');
819
828
  equal(contract.compilerContractVersion, COMPILER_CONTRACT_VERSION, '/contracts/compilerContractVersion');
@@ -947,6 +956,15 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
947
956
  ]);
948
957
  validateAdminNavigationReferences(config);
949
958
  const adminPages = compileAdminPages(config);
959
+ let concurrency;
960
+ try {
961
+ concurrency = validateManagedConcurrency(config.data.concurrency, config.data.resources, capabilities);
962
+ }
963
+ catch (error) {
964
+ if (error instanceof ManagedConcurrencyContractError)
965
+ fail(error.code, error.pointer, { reason: error.reason });
966
+ throw error;
967
+ }
950
968
  const subjectReadSurfaces = compileSubjectReadSurfaces(config, capabilities);
951
969
  const operations = compileOperations(config);
952
970
  try {
@@ -966,6 +984,7 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
966
984
  perspectives: config.perspectives,
967
985
  resources: compileResources(config),
968
986
  ...(subjectReadSurfaces.length ? { subjectReadSurfaces } : {}),
987
+ ...(concurrency ? { concurrency } : {}),
969
988
  capabilities: sorted(capabilities, item => item.code),
970
989
  operations,
971
990
  eventConsumers,
@@ -3537,7 +3556,7 @@ function validateAuthorizationReferences(config, capabilities) {
3537
3556
  const surface = resource.surface === undefined
3538
3557
  ? {}
3539
3558
  : object(resource.surface, `${resourcePointer}/surface`);
3540
- if ((surface.mutationOwner || 'native') === 'native')
3559
+ if (['native', 'queued-command'].includes(surface.mutationOwner || 'native'))
3541
3560
  return;
3542
3561
  const resourceCapabilities = object(resource.capabilities, `${resourcePointer}/capabilities`);
3543
3562
  for (const operation of ['create', 'update', 'delete']) {
@@ -4699,6 +4718,7 @@ function validateResource(raw, pointer, appCode) {
4699
4718
  'surface',
4700
4719
  'invariants',
4701
4720
  'decimalReservationLifecycle',
4721
+ 'uniqueKeys',
4702
4722
  'capabilities',
4703
4723
  'dataPolicyCode',
4704
4724
  'fieldPolicies',
@@ -4712,14 +4732,16 @@ function validateResource(raw, pointer, appCode) {
4712
4732
  let fields;
4713
4733
  let invariants;
4714
4734
  let decimalReservationLifecycle;
4735
+ let uniqueKeys;
4715
4736
  try {
4716
4737
  decimalReservationLifecycle = parseDecimalReservationLifecycle(resource.decimalReservationLifecycle, `${pointer}/decimalReservationLifecycle`);
4717
4738
  fields = parseNativeDataFieldsV2(schema.fields, `${pointer}/schema/fields`);
4739
+ uniqueKeys = parseNativeUniqueKeys(resource.uniqueKeys, fields, `${pointer}/uniqueKeys`);
4718
4740
  invariants = parseNativeDataResourceInvariantsV2(resource.invariants, fields, `${pointer}/invariants`);
4719
4741
  validateNativeDataResourceSurfaceV2(resource.surface, fields, `${pointer}/surface`);
4720
4742
  }
4721
4743
  catch (error) {
4722
- if (error instanceof NativeDataFieldContractV2Error || error instanceof NativeDecimalLifecycleContractError) {
4744
+ if (error instanceof NativeDataFieldContractV2Error || error instanceof NativeDecimalLifecycleContractError || error instanceof NativeUniqueKeyContractError) {
4723
4745
  fail(error.code, error.pointer);
4724
4746
  }
4725
4747
  throw error;
@@ -4754,6 +4776,7 @@ function validateResource(raw, pointer, appCode) {
4754
4776
  schema: { fields },
4755
4777
  ...(resource.invariants === undefined ? {} : { invariants }),
4756
4778
  ...(decimalReservationLifecycle ? { decimalReservationLifecycle } : {}),
4779
+ ...(uniqueKeys !== undefined ? { uniqueKeys } : {}),
4757
4780
  capabilities,
4758
4781
  fieldPolicies,
4759
4782
  };