openxiangda-contracts 2.27.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 (39) hide show
  1. package/dist/browser.d.ts +1 -0
  2. package/dist/browser.d.ts.map +1 -1
  3. package/dist/browser.js +1 -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 +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -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 +16 -1
  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 +4 -4
  19. package/dist/native-compiler/index.d.ts +1 -0
  20. package/dist/native-compiler/index.d.ts.map +1 -1
  21. package/dist/native-compiler/index.js +4 -4
  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-version.d.ts +1 -0
  27. package/dist/native-version.d.ts.map +1 -1
  28. package/dist/native-version.js +1 -0
  29. package/dist/native-version.js.map +1 -1
  30. package/dist/native.d.ts +2 -0
  31. package/dist/native.d.ts.map +1 -1
  32. package/dist/native.js.map +1 -1
  33. package/dist/schemas.d.ts +14 -2
  34. package/dist/schemas.d.ts.map +1 -1
  35. package/dist/schemas.js +3 -1
  36. package/dist/schemas.js.map +1 -1
  37. package/dist/surface.d.ts +1 -1
  38. package/dist/surface.d.ts.map +1 -1
  39. 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';
@@ -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;AAE7C,cAAc,kCAAkC,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';
@@ -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;AAE7C,cAAc,kCAAkC,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';
@@ -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;AAE7C,cAAc,kCAAkC,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';
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;AAE7C,cAAc,kCAAkC,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":"AAaA,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,CAoT3C;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,4 +1,5 @@
1
1
  import { NativeUniqueKeyContractError, parseNativeUniqueKeys } from './unique-keys.js';
2
+ import { validateManagedConcurrency, ManagedConcurrencyContractError } from './managed-concurrency.js';
2
3
  import { normalizeDecimalReservationEventDeclaration, decimalReservationEventContext } from './decimal-reservation.js';
3
4
  import { NativeDecimalLifecycleContractError, parseDecimalReservationLifecycle, validateDecimalReservationLifecycles } from './decimal-lifecycle.js';
4
5
  import { compileNativeEventAction } from './event-action.js';
@@ -201,6 +202,7 @@ export function compileNativeApplicationConfiguration(input) {
201
202
  appCode,
202
203
  resources: config.data.resources,
203
204
  resourceContracts: expectedContract.resources,
205
+ ...(expectedContract.concurrency ? { concurrency: expectedContract.concurrency } : {}),
204
206
  ...(expectedContract.subjectReadSurfaces
205
207
  ? { subjectReadSurfaces: expectedContract.subjectReadSurfaces }
206
208
  : {}),
@@ -326,6 +328,7 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
326
328
  ...(resources.some(resource => resource.uniqueKeys?.length)
327
329
  ? [{ code: 'data.unique-keys', declaration: resources.filter(resource => resource.uniqueKeys?.length)
328
330
  .map(resource => ({ code: resource.code, uniqueKeys: resource.uniqueKeys })) }] : []),
331
+ ...(config.data.concurrency ? [{ code: 'data.managed-concurrency', declaration: config.data.concurrency }] : []),
329
332
  ...(resources.some(resource => resource.decimalReservationLifecycle)
330
333
  ? [{ code: 'data.decimal-reservation-lifecycle',
331
334
  declaration: resources.filter(resource => resource.decimalReservationLifecycle)
@@ -738,6 +741,7 @@ function validateConfigurationEnvelope(config, appCode) {
738
741
  exactKeys(data, ['resources'], '/config/data', [
739
742
  'resourceDetailRoutes',
740
743
  'subjectReadSurfaces',
744
+ 'concurrency',
741
745
  ]);
742
746
  boundedArray(data.resources, '/config/data/resources', 100);
743
747
  if (data.subjectReadSurfaces !== undefined) {
@@ -818,6 +822,7 @@ function validateContractEnvelope(contract, appCode, configDigest) {
818
822
  'publicAccess',
819
823
  'adminAccess',
820
824
  'subjectReadSurfaces',
825
+ 'concurrency',
821
826
  ]);
822
827
  equal(contract.schemaVersion, CONTRACT_SCHEMA, '/contracts/schemaVersion');
823
828
  equal(contract.compilerContractVersion, COMPILER_CONTRACT_VERSION, '/contracts/compilerContractVersion');
@@ -951,6 +956,15 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
951
956
  ]);
952
957
  validateAdminNavigationReferences(config);
953
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
+ }
954
968
  const subjectReadSurfaces = compileSubjectReadSurfaces(config, capabilities);
955
969
  const operations = compileOperations(config);
956
970
  try {
@@ -970,6 +984,7 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
970
984
  perspectives: config.perspectives,
971
985
  resources: compileResources(config),
972
986
  ...(subjectReadSurfaces.length ? { subjectReadSurfaces } : {}),
987
+ ...(concurrency ? { concurrency } : {}),
973
988
  capabilities: sorted(capabilities, item => item.code),
974
989
  operations,
975
990
  eventConsumers,
@@ -3541,7 +3556,7 @@ function validateAuthorizationReferences(config, capabilities) {
3541
3556
  const surface = resource.surface === undefined
3542
3557
  ? {}
3543
3558
  : object(resource.surface, `${resourcePointer}/surface`);
3544
- if ((surface.mutationOwner || 'native') === 'native')
3559
+ if (['native', 'queued-command'].includes(surface.mutationOwner || 'native'))
3545
3560
  return;
3546
3561
  const resourceCapabilities = object(resource.capabilities, `${resourcePointer}/capabilities`);
3547
3562
  for (const operation of ['create', 'update', 'delete']) {