@inf-monkeys-tech/monkeys 1.0.72 → 1.1.1

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 (141) hide show
  1. package/lib/contracts/aggregate-commit.d.ts +155 -0
  2. package/lib/contracts/aggregate-commit.d.ts.map +1 -0
  3. package/lib/contracts/aggregate-commit.js +112 -0
  4. package/lib/contracts/aggregate-commit.js.map +1 -0
  5. package/lib/contracts/capability.d.ts +3 -0
  6. package/lib/contracts/capability.d.ts.map +1 -1
  7. package/lib/contracts/capability.js +1 -1
  8. package/lib/contracts/capability.js.map +1 -1
  9. package/lib/contracts/common.d.ts +2 -0
  10. package/lib/contracts/common.d.ts.map +1 -1
  11. package/lib/contracts/common.js +34 -1
  12. package/lib/contracts/common.js.map +1 -1
  13. package/lib/contracts/component-assembly.d.ts +118 -0
  14. package/lib/contracts/component-assembly.d.ts.map +1 -0
  15. package/lib/contracts/component-assembly.js +61 -0
  16. package/lib/contracts/component-assembly.js.map +1 -0
  17. package/lib/contracts/declarative-control-http.d.ts +80610 -41684
  18. package/lib/contracts/declarative-control-http.d.ts.map +1 -1
  19. package/lib/contracts/declarative-control-http.js +1596 -165
  20. package/lib/contracts/declarative-control-http.js.map +1 -1
  21. package/lib/contracts/declarative-control.d.ts +12525 -4613
  22. package/lib/contracts/declarative-control.d.ts.map +1 -1
  23. package/lib/contracts/declarative-control.js +3792 -422
  24. package/lib/contracts/declarative-control.js.map +1 -1
  25. package/lib/contracts/index.d.ts +6 -0
  26. package/lib/contracts/index.d.ts.map +1 -1
  27. package/lib/contracts/index.js +6 -0
  28. package/lib/contracts/index.js.map +1 -1
  29. package/lib/contracts/legacy-route.d.ts +15 -0
  30. package/lib/contracts/legacy-route.d.ts.map +1 -0
  31. package/lib/contracts/legacy-route.js +13 -0
  32. package/lib/contracts/legacy-route.js.map +1 -0
  33. package/lib/contracts/menu.d.ts +12 -0
  34. package/lib/contracts/menu.d.ts.map +1 -1
  35. package/lib/contracts/page-binding-dependencies.d.ts +25 -0
  36. package/lib/contracts/page-binding-dependencies.d.ts.map +1 -0
  37. package/lib/contracts/page-binding-dependencies.js +54 -0
  38. package/lib/contracts/page-binding-dependencies.js.map +1 -0
  39. package/lib/contracts/page-expression.d.ts +106 -0
  40. package/lib/contracts/page-expression.d.ts.map +1 -0
  41. package/lib/contracts/page-expression.js +136 -0
  42. package/lib/contracts/page-expression.js.map +1 -0
  43. package/lib/contracts/page-stream.d.ts +101 -0
  44. package/lib/contracts/page-stream.d.ts.map +1 -0
  45. package/lib/contracts/page-stream.js +66 -0
  46. package/lib/contracts/page-stream.js.map +1 -0
  47. package/lib/contracts/page.d.ts +24 -0
  48. package/lib/contracts/page.d.ts.map +1 -1
  49. package/lib/contracts/page.js +2 -0
  50. package/lib/contracts/page.js.map +1 -1
  51. package/lib/contracts/record-editor-draft.d.ts +95 -0
  52. package/lib/contracts/record-editor-draft.d.ts.map +1 -0
  53. package/lib/contracts/record-editor-draft.js +35 -0
  54. package/lib/contracts/record-editor-draft.js.map +1 -0
  55. package/lib/contracts/render.d.ts +607 -1
  56. package/lib/contracts/render.d.ts.map +1 -1
  57. package/lib/contracts/render.js +332 -133
  58. package/lib/contracts/render.js.map +1 -1
  59. package/lib/contracts/semantic.d.ts +48 -1
  60. package/lib/contracts/semantic.d.ts.map +1 -1
  61. package/lib/contracts/semantic.js +22 -19
  62. package/lib/contracts/semantic.js.map +1 -1
  63. package/lib/contracts/tenant.d.ts +115 -9
  64. package/lib/contracts/tenant.d.ts.map +1 -1
  65. package/lib/contracts/tenant.js +14 -1
  66. package/lib/contracts/tenant.js.map +1 -1
  67. package/lib/contracts/theme.d.ts +1 -1
  68. package/lib/esm/contracts/index.mjs +8466 -3114
  69. package/lib/esm/contracts/index.mjs.map +1 -1
  70. package/lib/esm/index.mjs +13809 -5067
  71. package/lib/esm/index.mjs.map +1 -1
  72. package/lib/esm/runtime/index.mjs +13964 -4515
  73. package/lib/esm/runtime/index.mjs.map +1 -1
  74. package/lib/esm/schemas/index.mjs +8779 -2614
  75. package/lib/esm/schemas/index.mjs.map +1 -1
  76. package/lib/json-schema/aggregate-commit-request.schema.json +426 -0
  77. package/lib/json-schema/capability-manifest.schema.json +1 -0
  78. package/lib/json-schema/capability-registry.schema.json +1 -0
  79. package/lib/json-schema/declarative-route-owner-index.schema.json +1092 -0
  80. package/lib/json-schema/declarative-workbench-catalog.schema.json +769 -0
  81. package/lib/json-schema/design-capability-catalog-artifact.schema.json +2787 -0
  82. package/lib/json-schema/domain-command-definition.schema.json +18 -0
  83. package/lib/json-schema/domain-query-definition.schema.json +1406 -0
  84. package/lib/json-schema/index.json +7 -0
  85. package/lib/json-schema/legacy-route-takeover-authorization.schema.json +601 -0
  86. package/lib/json-schema/navigation-release.schema.json +296 -0
  87. package/lib/json-schema/navigation-runtime-bundle.schema.json +48 -8
  88. package/lib/json-schema/navigation.schema.json +47 -8
  89. package/lib/json-schema/overlay-node.schema.json +883 -0
  90. package/lib/json-schema/page-definition.schema.json +34 -0
  91. package/lib/json-schema/page-release.schema.json +1520 -626
  92. package/lib/json-schema/page-runtime-bundle.schema.json +7334 -1153
  93. package/lib/json-schema/page-runtime-descriptor.schema.json +34 -0
  94. package/lib/json-schema/page.schema.json +6329 -6602
  95. package/lib/json-schema/permission-alternative-policy.schema.json +60 -0
  96. package/lib/json-schema/product-declaration.schema.json +53 -0
  97. package/lib/json-schema/render-node.schema.json +883 -0
  98. package/lib/json-schema/render-tree.schema.json +883 -0
  99. package/lib/json-schema/tenant-product-config.schema.json +88 -0
  100. package/lib/json-schema/tenant-runtime-config.schema.json +88 -0
  101. package/lib/json-schema/view-provider-descriptor.schema.json +1 -0
  102. package/lib/json-schema/workbench-release.schema.json +1520 -626
  103. package/lib/json-schema/workbench-runtime-bundle.schema.json +686 -20
  104. package/lib/json-schema/workbench.schema.json +1196 -0
  105. package/lib/runtime/component-assembly.d.ts +4 -0
  106. package/lib/runtime/component-assembly.d.ts.map +1 -0
  107. package/lib/runtime/component-assembly.js +126 -0
  108. package/lib/runtime/component-assembly.js.map +1 -0
  109. package/lib/runtime/declarative-control-compiler.d.ts +106 -20
  110. package/lib/runtime/declarative-control-compiler.d.ts.map +1 -1
  111. package/lib/runtime/declarative-control-compiler.js +1525 -280
  112. package/lib/runtime/declarative-control-compiler.js.map +1 -1
  113. package/lib/runtime/index.d.ts +5 -0
  114. package/lib/runtime/index.d.ts.map +1 -1
  115. package/lib/runtime/index.js +7 -0
  116. package/lib/runtime/index.js.map +1 -1
  117. package/lib/runtime/page-expression.d.ts +9 -0
  118. package/lib/runtime/page-expression.d.ts.map +1 -0
  119. package/lib/runtime/page-expression.js +257 -0
  120. package/lib/runtime/page-expression.js.map +1 -0
  121. package/lib/runtime/page-stream.d.ts +24 -0
  122. package/lib/runtime/page-stream.d.ts.map +1 -0
  123. package/lib/runtime/page-stream.js +65 -0
  124. package/lib/runtime/page-stream.js.map +1 -0
  125. package/lib/runtime/record-editor-draft.d.ts +29 -0
  126. package/lib/runtime/record-editor-draft.d.ts.map +1 -0
  127. package/lib/runtime/record-editor-draft.js +161 -0
  128. package/lib/runtime/record-editor-draft.js.map +1 -0
  129. package/lib/runtime/target-render-model.d.ts +4 -0
  130. package/lib/runtime/target-render-model.d.ts.map +1 -0
  131. package/lib/runtime/target-render-model.js +28 -0
  132. package/lib/runtime/target-render-model.js.map +1 -0
  133. package/lib/runtime/tenant-config.d.ts +2 -0
  134. package/lib/runtime/tenant-config.d.ts.map +1 -1
  135. package/lib/runtime/tenant-config.js +6 -1
  136. package/lib/runtime/tenant-config.js.map +1 -1
  137. package/lib/schemas/index.d.ts +5969 -2731
  138. package/lib/schemas/index.d.ts.map +1 -1
  139. package/lib/schemas/index.js +174 -95
  140. package/lib/schemas/index.js.map +1 -1
  141. package/package.json +1 -1
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.projectPageProperties = exports.evaluatePageExpression = exports.writePageDraftPath = exports.compilePageExpression = exports.readPageValue = void 0;
4
+ const page_expression_1 = require("../contracts/page-expression");
5
+ const unsafe = new Set(['__proto__', 'prototype', 'constructor']);
6
+ const fail = (code) => { throw Object.assign(new Error(code), { code }); };
7
+ const assertBudget = page_expression_1.assertPageValueBudget;
8
+ const readPageValue = (value, path) => {
9
+ let current = value;
10
+ for (const segment of path) {
11
+ if (unsafe.has(segment))
12
+ fail('PAGE_EXPRESSION_UNSAFE_PATH');
13
+ if (!current || typeof current !== 'object' || !Object.prototype.hasOwnProperty.call(current, segment))
14
+ return undefined;
15
+ if (Array.isArray(current) && !/^(0|[1-9][0-9]*)$/.test(segment))
16
+ return undefined;
17
+ current = current[segment];
18
+ }
19
+ return current;
20
+ };
21
+ exports.readPageValue = readPageValue;
22
+ const unary = new Set(['not', 'string', 'number', 'length', 'round', 'entries', 'from-entries', 'trim']);
23
+ const binary = new Set(['subtract', 'divide', 'equals', 'not-equals', 'less-than', 'less-or-equal', 'greater-than', 'greater-or-equal', 'includes', 'get', 'fixed']);
24
+ const compilePageExpression = (input) => {
25
+ assertBudget(input);
26
+ const expression = page_expression_1.PageExpressionSchema.parse(input);
27
+ const check = (node) => {
28
+ if (node.kind === 'operator') {
29
+ if ((unary.has(node.operator) && node.arguments.length !== 1) || (binary.has(node.operator) && node.arguments.length !== 2) || (['set-path', 'slice'].includes(node.operator) && node.arguments.length !== 3) || (node.operator === 'number-format' && node.arguments.length !== 5))
30
+ fail('PAGE_EXPRESSION_ARITY');
31
+ node.arguments.forEach(check);
32
+ }
33
+ else if (node.kind === 'conditional') {
34
+ check(node.condition);
35
+ check(node.then);
36
+ check(node.else);
37
+ }
38
+ else if (node.kind === 'object')
39
+ Object.values(node.fields).forEach(check);
40
+ else if (node.kind === 'array')
41
+ node.items.forEach(check);
42
+ else if (node.kind === 'map' || node.kind === 'filter' || node.kind === 'sum') {
43
+ check(node.source);
44
+ check(node.value);
45
+ }
46
+ };
47
+ check(expression);
48
+ return expression;
49
+ };
50
+ exports.compilePageExpression = compilePageExpression;
51
+ const number = (value) => typeof value === 'number' && Number.isFinite(value) ? value : fail('PAGE_EXPRESSION_TYPE_NUMBER');
52
+ const boolean = (value) => typeof value === 'boolean' ? value : fail('PAGE_EXPRESSION_TYPE_BOOLEAN');
53
+ const finite = (value) => Number.isFinite(value) ? value : fail('PAGE_EXPRESSION_NUMBER');
54
+ const object = (value) => value && typeof value === 'object' && !Array.isArray(value) ? value : fail('PAGE_EXPRESSION_TYPE_OBJECT');
55
+ const valuePath = (value) => {
56
+ if (!Array.isArray(value) || value.length > 16 || value.some((segment) => typeof segment !== 'string' || !segment || unsafe.has(segment)))
57
+ return fail('PAGE_EXPRESSION_UNSAFE_PATH');
58
+ return value;
59
+ };
60
+ const writePageDraftPath = (source, path, value) => {
61
+ if (!path.length)
62
+ return value;
63
+ const [segment, ...rest] = path;
64
+ if (!segment || unsafe.has(segment) || path.length > 16)
65
+ return fail('PAGE_EXPRESSION_UNSAFE_PATH');
66
+ if (Array.isArray(source)) {
67
+ if (!/^(0|[1-9][0-9]*)$/.test(segment) || Number(segment) >= source.length)
68
+ return fail('PAGE_EXPRESSION_ARRAY_INDEX');
69
+ return source.map((item, index) => index === Number(segment) ? (0, exports.writePageDraftPath)(item, rest, value) : item);
70
+ }
71
+ const current = object(source);
72
+ return { ...current, [segment]: (0, exports.writePageDraftPath)(current[segment] ?? {}, rest, value) };
73
+ };
74
+ exports.writePageDraftPath = writePageDraftPath;
75
+ const same = (a, b) => {
76
+ if (a === b)
77
+ return true;
78
+ if (!a || !b || typeof a !== 'object' || typeof b !== 'object' || Array.isArray(a) !== Array.isArray(b))
79
+ return false;
80
+ const keys = Object.keys(a);
81
+ return keys.length === Object.keys(b).length && keys.every((key) => Object.prototype.hasOwnProperty.call(b, key) && same(a[key], b[key]));
82
+ };
83
+ const evaluateCompiled = (expression, context, budget) => {
84
+ const run = (node, current) => {
85
+ if (++budget.operations > page_expression_1.PAGE_EXPRESSION_LIMITS.operations)
86
+ fail('PAGE_EXPRESSION_BUDGET');
87
+ if (node.kind === 'literal')
88
+ return node.value;
89
+ if (node.kind === 'read') {
90
+ const value = (0, exports.readPageValue)(current[node.root], node.path) ?? null;
91
+ assertBudget(value);
92
+ return value;
93
+ }
94
+ if (node.kind === 'conditional')
95
+ return run(boolean(run(node.condition, current)) ? node.then : node.else, current);
96
+ if (node.kind === 'object')
97
+ return Object.fromEntries(Object.entries(node.fields).map(([key, value]) => [key, run(value, current)]));
98
+ if (node.kind === 'array')
99
+ return node.items.map((value) => run(value, current));
100
+ if (node.kind === 'map' || node.kind === 'filter' || node.kind === 'sum') {
101
+ const source = run(node.source, current);
102
+ if (!Array.isArray(source))
103
+ return fail('PAGE_EXPRESSION_TYPE_ARRAY');
104
+ if (source.length > page_expression_1.PAGE_EXPRESSION_LIMITS.collection)
105
+ fail('PAGE_EXPRESSION_BUDGET');
106
+ const values = source.map((item, index) => run(node.value, { ...current, scope: { item, index, parent: current.scope ?? null } }));
107
+ if (node.kind === 'map')
108
+ return values;
109
+ if (node.kind === 'filter')
110
+ return source.filter((_, index) => boolean(values[index]));
111
+ return finite(values.reduce((total, value) => total + number(value), 0));
112
+ }
113
+ if (node.kind !== 'operator')
114
+ return fail('PAGE_EXPRESSION_INVALID');
115
+ if (node.operator === 'coalesce') {
116
+ for (const argument of node.arguments) {
117
+ const value = run(argument, current);
118
+ if (value !== null)
119
+ return value;
120
+ }
121
+ return null;
122
+ }
123
+ if (node.operator === 'and')
124
+ return node.arguments.every((argument) => boolean(run(argument, current)));
125
+ if (node.operator === 'or')
126
+ return node.arguments.some((argument) => boolean(run(argument, current)));
127
+ const values = node.arguments.map((argument) => run(argument, current));
128
+ const first = values[0];
129
+ const second = values[1];
130
+ switch (node.operator) {
131
+ case 'add': return finite(values.reduce((a, b) => a + number(b), 0));
132
+ case 'subtract': return finite(number(first) - number(second));
133
+ case 'multiply': return finite(values.reduce((a, b) => a * number(b), 1));
134
+ case 'divide': {
135
+ const numerator = number(first);
136
+ const denominator = number(second);
137
+ return denominator === 0 ? null : finite(numerator / denominator);
138
+ }
139
+ case 'min': return Math.min(...values.map(number));
140
+ case 'max': return Math.max(...values.map(number));
141
+ case 'round': return Math.round(number(first));
142
+ case 'equals': return same(first, second);
143
+ case 'not-equals': return !same(first, second);
144
+ case 'less-than': return number(first) < number(second);
145
+ case 'less-or-equal': return number(first) <= number(second);
146
+ case 'greater-than': return number(first) > number(second);
147
+ case 'greater-or-equal': return number(first) >= number(second);
148
+ case 'not': return !boolean(first);
149
+ case 'string': return first === null ? '' : typeof first === 'object' ? fail('PAGE_EXPRESSION_TYPE_SCALAR') : String(first);
150
+ case 'number': return typeof first === 'number' ? first : typeof first === 'string' && first.trim() && Number.isFinite(Number(first)) ? Number(first) : null;
151
+ case 'concat': {
152
+ const strings = values.map((value) => typeof value === 'string' ? value : fail('PAGE_EXPRESSION_TYPE_STRING'));
153
+ if (strings.reduce((bytes, value) => bytes + value.length * 2, 0) > page_expression_1.PAGE_EXPRESSION_LIMITS.bytes)
154
+ fail('PAGE_EXPRESSION_BUDGET');
155
+ return strings.join('');
156
+ }
157
+ case 'length': return typeof first === 'string' || Array.isArray(first) ? first.length : fail('PAGE_EXPRESSION_TYPE_COLLECTION');
158
+ case 'includes': return Array.isArray(first) ? first.some((value) => same(value, second)) : typeof first === 'string' && typeof second === 'string' ? first.includes(second) : fail('PAGE_EXPRESSION_TYPE_COLLECTION');
159
+ case 'get': {
160
+ if (typeof second !== 'string')
161
+ return fail('PAGE_EXPRESSION_TYPE_STRING');
162
+ return (0, exports.readPageValue)(first, [second]) ?? null;
163
+ }
164
+ case 'set-path': return (0, exports.writePageDraftPath)(first, valuePath(second), values[2]);
165
+ case 'merge': {
166
+ const objects = values.map(object);
167
+ const merged = Object.assign({}, ...objects);
168
+ assertBudget(merged);
169
+ return merged;
170
+ }
171
+ case 'entries': return Object.entries(object(first));
172
+ case 'from-entries': {
173
+ const result = {};
174
+ if (!Array.isArray(first) || first.length > page_expression_1.PAGE_EXPRESSION_LIMITS.collection)
175
+ return fail('PAGE_EXPRESSION_TYPE_ARRAY');
176
+ for (const pair of first) {
177
+ if (!Array.isArray(pair) || pair.length !== 2 || typeof pair[0] !== 'string' || unsafe.has(pair[0]))
178
+ return fail('PAGE_EXPRESSION_ENTRY');
179
+ if (Object.prototype.hasOwnProperty.call(result, pair[0]))
180
+ return fail('PAGE_EXPRESSION_DUPLICATE_KEY');
181
+ result[pair[0]] = pair[1];
182
+ }
183
+ return result;
184
+ }
185
+ case 'array-concat': {
186
+ const result = [];
187
+ for (const value of values) {
188
+ if (!Array.isArray(value))
189
+ return fail('PAGE_EXPRESSION_TYPE_ARRAY');
190
+ if (result.length + value.length > page_expression_1.PAGE_EXPRESSION_LIMITS.collection)
191
+ return fail('PAGE_EXPRESSION_BUDGET');
192
+ result.push(...value);
193
+ }
194
+ return result;
195
+ }
196
+ case 'slice': {
197
+ const start = number(second);
198
+ const end = number(values[2]);
199
+ if (!Array.isArray(first) || !Number.isSafeInteger(start) || !Number.isSafeInteger(end))
200
+ return fail('PAGE_EXPRESSION_TYPE_ARRAY');
201
+ return first.slice(start, end);
202
+ }
203
+ case 'trim': return typeof first === 'string' ? first.trim() : fail('PAGE_EXPRESSION_TYPE_STRING');
204
+ case 'number-format': {
205
+ if (second !== 'en-US' && second !== 'zh-CN')
206
+ return fail('PAGE_EXPRESSION_LOCALE');
207
+ const minimumFractionDigits = number(values[2]);
208
+ const maximumFractionDigits = number(values[3]);
209
+ if (![minimumFractionDigits, maximumFractionDigits].every((digits) => Number.isSafeInteger(digits) && digits >= 0 && digits <= 10) || minimumFractionDigits > maximumFractionDigits)
210
+ return fail('PAGE_EXPRESSION_PRECISION');
211
+ return new Intl.NumberFormat(second, { minimumFractionDigits, maximumFractionDigits, useGrouping: boolean(values[4]) }).format(number(first));
212
+ }
213
+ case 'fixed': {
214
+ const digits = number(second);
215
+ if (!Number.isSafeInteger(digits) || digits < 0 || digits > 10)
216
+ return fail('PAGE_EXPRESSION_PRECISION');
217
+ return number(first).toFixed(digits);
218
+ }
219
+ }
220
+ };
221
+ const result = run(expression, context);
222
+ assertBudget(result);
223
+ return result;
224
+ };
225
+ const evaluatePageExpression = (expression, context) => evaluateCompiled((0, exports.compilePageExpression)(expression), context, { operations: 0 });
226
+ exports.evaluatePageExpression = evaluatePageExpression;
227
+ const write = (input, path, value) => {
228
+ const [key, ...rest] = path;
229
+ if (!key || unsafe.has(key))
230
+ return fail('PAGE_EXPRESSION_UNSAFE_PATH');
231
+ if (!rest.length)
232
+ return { ...input, [key]: value };
233
+ const child = input[key];
234
+ if (child !== undefined && (child === null || typeof child !== 'object' || Array.isArray(child)))
235
+ fail('PAGE_PROPERTY_PATH_TYPE');
236
+ return { ...input, [key]: write((child ?? {}), rest, value) };
237
+ };
238
+ const projectPageProperties = (base, bindings, context) => {
239
+ assertBudget(bindings);
240
+ const parsed = bindings.map((binding) => page_expression_1.PagePropertyBindingSchema.parse(binding));
241
+ const paths = [];
242
+ for (const binding of parsed) {
243
+ if (paths.some((path) => path.slice(0, Math.min(path.length, binding.targetPath.length)).every((key, i) => key === binding.targetPath[i])))
244
+ fail('PAGE_PROPERTY_OVERLAP');
245
+ paths.push(binding.targetPath);
246
+ }
247
+ const budget = { operations: 0 };
248
+ return parsed.reduce((model, binding) => {
249
+ const value = evaluateCompiled((0, exports.compilePageExpression)(binding.expression), context, budget);
250
+ const type = value === null ? 'null' : Array.isArray(value) ? 'array' : typeof value;
251
+ if (binding.valueType && type !== binding.valueType)
252
+ fail('PAGE_PROPERTY_TYPE');
253
+ return write(model, binding.targetPath, value);
254
+ }, base);
255
+ };
256
+ exports.projectPageProperties = projectPageProperties;
257
+ //# sourceMappingURL=page-expression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-expression.js","sourceRoot":"","sources":["../../src/runtime/page-expression.ts"],"names":[],"mappings":";;;AACA,kEAGsC;AAGtC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;AAClE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,MAAM,YAAY,GAAG,uCAAqB,CAAC;AAEpC,MAAM,aAAa,GAAG,CAAC,KAA4B,EAAE,IAAuB,EAAyB,EAAE;IAC5G,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QACzH,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QACnF,OAAO,GAAI,OAAsB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AATW,QAAA,aAAa,iBASxB;AAEF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;AACzG,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAE9J,MAAM,qBAAqB,GAAG,CAAC,KAAc,EAAkB,EAAE;IACtE,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,MAAM,UAAU,GAAG,sCAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,CAAC,IAAoB,EAAQ,EAAE;QAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,eAAe,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACnT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACxE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACrD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;IAC3H,CAAC,CAAC;IACF,KAAK,CAAC,UAAU,CAAC,CAAC;IAClB,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAfW,QAAA,qBAAqB,yBAehC;AAEF,MAAM,MAAM,GAAG,CAAC,KAAgB,EAAU,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAC/I,MAAM,OAAO,GAAG,CAAC,KAAgB,EAAW,EAAE,CAAC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AACzH,MAAM,MAAM,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC1G,MAAM,MAAM,GAAG,CAAC,KAAgB,EAAc,EAAE,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAC3J,MAAM,SAAS,GAAG,CAAC,KAAgB,EAAY,EAAE;IAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACtL,OAAO,KAAiB,CAAC;AAC3B,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,MAAiB,EAAE,IAAuB,EAAE,KAAgB,EAAa,EAAE;IAC5G,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC/B,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACpG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACvH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAA,0BAAkB,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/G,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,IAAA,0BAAkB,EAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;AAC5F,CAAC,CAAC;AAVW,QAAA,kBAAkB,sBAU7B;AAEF,MAAM,IAAI,GAAG,CAAC,CAAY,EAAE,CAAY,EAAW,EAAE;IACnD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACtH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAE,CAAgB,CAAC,GAAG,CAAE,EAAG,CAAgB,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC;AAC9K,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,UAA0B,EAAE,OAA8B,EAAE,MAA8B,EAAa,EAAE;IACjI,MAAM,GAAG,GAAG,CAAC,IAAoB,EAAE,OAA8B,EAAa,EAAE;QAC9E,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,wCAAsB,CAAC,UAAU;YAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC5F,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC;QAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAA,qBAAa,EAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;YACnE,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa;YAAE,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpH,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACrI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACjF,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACzE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACtE,IAAI,MAAM,CAAC,MAAM,GAAG,wCAAsB,CAAC,UAAU;gBAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACtF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACnI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;gBAAE,OAAO,MAAM,CAAC;YACvC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC;YACxF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAS,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACjC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAAC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAAC,IAAI,KAAK,KAAK,IAAI;oBAAE,OAAO,KAAK,CAAC;YAAC,CAAC;YAClH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACxG,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACtG,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QAC1B,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,KAAK,KAAK,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7E,KAAK,UAAU,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/D,KAAK,UAAU,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClF,KAAK,QAAQ,CAAC,CAAC,CAAC;gBAAC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAAC,OAAO,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;YAAC,CAAC;YAC1J,KAAK,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,KAAK,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC1C,KAAK,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/C,KAAK,WAAW,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACxD,KAAK,eAAe,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7D,KAAK,cAAc,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3D,KAAK,kBAAkB,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;YAChE,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnC,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5H,KAAK,QAAQ,CAAC,CAAC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7J,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;gBAC/G,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,wCAAsB,CAAC,KAAK;oBAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACjI,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACjI,KAAK,UAAU,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACvN,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,IAAI,OAAO,MAAM,KAAK,QAAQ;oBAAE,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAC3E,OAAO,IAAA,qBAAa,EAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC;YAChD,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,OAAO,IAAA,0BAAkB,EAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;YACjF,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,OAAO,CAAe,CAAC;gBAC3D,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrB,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,MAAM,GAAe,EAAE,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,wCAAsB,CAAC,UAAU;oBAAE,OAAO,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBACzH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAAE,OAAO,IAAI,CAAC,uBAAuB,CAAC,CAAC;oBAC1I,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;wBAAE,OAAO,IAAI,CAAC,+BAA+B,CAAC,CAAC;oBACxG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;gBAC7B,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,MAAM,GAAgB,EAAE,CAAC;gBAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;wBAAE,OAAO,IAAI,CAAC,4BAA4B,CAAC,CAAC;oBACrE,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,wCAAsB,CAAC,UAAU;wBAAE,OAAO,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBAC5G,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;gBACxB,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;gBAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBACnI,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACjC,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACnG,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO;oBAAE,OAAO,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACpF,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;gBACjD,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,EAAE,CAAC,IAAI,qBAAqB,GAAG,qBAAqB;oBAAE,OAAO,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAC9N,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACjJ,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE;oBAAE,OAAO,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBACzG,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;QAEH,CAAC;IACH,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxC,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEK,MAAM,sBAAsB,GAAG,CAAC,UAAmB,EAAE,OAA8B,EAAa,EAAE,CACvG,gBAAgB,CAAC,IAAA,6BAAqB,EAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AADrE,QAAA,sBAAsB,0BAC+C;AAElF,MAAM,KAAK,GAAG,CAAC,KAAiB,EAAE,IAAuB,EAAE,KAAgB,EAAc,EAAE;IACzF,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAClI,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAe,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;AAC9E,CAAC,CAAC;AAEK,MAAM,qBAAqB,GAAG,CAAC,IAAgB,EAAE,QAAwC,EAAE,OAA8B,EAAc,EAAE;IAC9I,YAAY,CAAC,QAAQ,CAAC,CAAC;IACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,2CAAyB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACnF,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1K,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAA,6BAAqB,EAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3F,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC;QACrF,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,KAAK,OAAO,CAAC,SAAS;YAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAChF,OAAO,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC;AAfW,QAAA,qBAAqB,yBAehC"}
@@ -0,0 +1,24 @@
1
+ import type { JsonObject } from '../contracts/common';
2
+ export type PageStreamReducerErrorCode = 'PAGE_STREAM_INVALID_FRAME' | 'PAGE_STREAM_ID_MISMATCH' | 'PAGE_STREAM_SNAPSHOT_REQUIRED' | 'PAGE_STREAM_SEQUENCE_CONFLICT' | 'PAGE_STREAM_SEQUENCE_GAP' | 'PAGE_STREAM_TERMINATED' | 'PAGE_STREAM_CAPACITY_EXCEEDED';
3
+ export declare class PageStreamReducerError extends Error {
4
+ readonly code: PageStreamReducerErrorCode;
5
+ constructor(code: PageStreamReducerErrorCode);
6
+ }
7
+ export interface PageStreamState {
8
+ readonly streamId: string;
9
+ readonly status: 'awaiting-snapshot' | 'open' | 'ended' | 'error';
10
+ readonly model: JsonObject | undefined;
11
+ readonly events: readonly JsonObject[];
12
+ readonly sequence: number;
13
+ readonly cursor: string | undefined;
14
+ readonly error: {
15
+ code: string;
16
+ retryable: boolean;
17
+ } | undefined;
18
+ readonly seen: Readonly<Record<string, string>>;
19
+ readonly retainedBytes: number;
20
+ }
21
+ export declare function createPageStreamState(streamId: string): PageStreamState;
22
+ /** Verified snapshots replace presentation state; deltas retain every event or reject atomically. */
23
+ export declare function applyPageStreamEvent(state: PageStreamState, input: unknown): PageStreamState;
24
+ //# sourceMappingURL=page-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-stream.d.ts","sourceRoot":"","sources":["../../src/runtime/page-stream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,MAAM,0BAA0B,GAAG,2BAA2B,GAAG,yBAAyB,GAAG,+BAA+B,GAAG,+BAA+B,GAAG,0BAA0B,GAAG,wBAAwB,GAAG,+BAA+B,CAAC;AAC/P,qBAAa,sBAAuB,SAAQ,KAAK;IAAe,QAAQ,CAAC,IAAI,EAAE,0BAA0B;gBAAhC,IAAI,EAAE,0BAA0B;CAA0D;AACnK,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAClE,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;IACjE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAC/B;AACD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAGvE;AAGD,qGAAqG;AACrG,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG,eAAe,CAuB5F"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyPageStreamEvent = exports.createPageStreamState = exports.PageStreamReducerError = void 0;
4
+ const page_stream_1 = require("../contracts/page-stream");
5
+ const declarative_control_compiler_1 = require("./declarative-control-compiler");
6
+ class PageStreamReducerError extends Error {
7
+ constructor(code) {
8
+ super(code);
9
+ this.code = code;
10
+ this.name = 'PageStreamReducerError';
11
+ }
12
+ }
13
+ exports.PageStreamReducerError = PageStreamReducerError;
14
+ function createPageStreamState(streamId) {
15
+ if (!page_stream_1.PageStreamDescriptorSchema.shape.streamId.safeParse(streamId).success)
16
+ throw new PageStreamReducerError('PAGE_STREAM_ID_MISMATCH');
17
+ return { streamId, status: 'awaiting-snapshot', model: undefined, events: [], sequence: 0, cursor: undefined, error: undefined, seen: {}, retainedBytes: 0 };
18
+ }
19
+ exports.createPageStreamState = createPageStreamState;
20
+ const MAX_SEEN_FRAMES = 2048;
21
+ const bytes = (value) => new TextEncoder().encode(JSON.stringify(value)).byteLength;
22
+ /** Verified snapshots replace presentation state; deltas retain every event or reject atomically. */
23
+ function applyPageStreamEvent(state, input) {
24
+ let frame;
25
+ try {
26
+ if (bytes(input) > page_stream_1.PAGE_STREAM_MAX_FRAME_BYTES)
27
+ throw new Error();
28
+ frame = page_stream_1.PageStreamEventSchema.parse(input);
29
+ }
30
+ catch {
31
+ throw new PageStreamReducerError('PAGE_STREAM_INVALID_FRAME');
32
+ }
33
+ if (frame.streamId !== state.streamId)
34
+ throw new PageStreamReducerError('PAGE_STREAM_ID_MISMATCH');
35
+ const fingerprint = (0, declarative_control_compiler_1.canonicalContentHash)(frame);
36
+ const seen = state.seen[String(frame.sequence)];
37
+ if (seen) {
38
+ if (seen === fingerprint)
39
+ return state;
40
+ throw new PageStreamReducerError('PAGE_STREAM_SEQUENCE_CONFLICT');
41
+ }
42
+ if (state.status === 'ended' || state.status === 'error')
43
+ throw new PageStreamReducerError('PAGE_STREAM_TERMINATED');
44
+ if (state.status === 'awaiting-snapshot') {
45
+ if (frame.type !== 'snapshot')
46
+ throw new PageStreamReducerError('PAGE_STREAM_SNAPSHOT_REQUIRED');
47
+ }
48
+ else if (frame.sequence !== state.sequence + 1)
49
+ throw new PageStreamReducerError(frame.sequence <= state.sequence ? 'PAGE_STREAM_SEQUENCE_CONFLICT' : 'PAGE_STREAM_SEQUENCE_GAP');
50
+ const model = frame.type === 'snapshot' ? frame.payload.model : state.model;
51
+ const events = frame.type === 'snapshot' ? [] : frame.type === 'delta' ? [...state.events, ...frame.payload.events] : state.events;
52
+ // A snapshot replaces the model and replay baseline. Deltas retain a bounded
53
+ // fingerprint window; replay older than that window still fails sequence checks.
54
+ const nextSeen = frame.type === 'snapshot' ? { [String(frame.sequence)]: fingerprint } : {
55
+ ...Object.fromEntries(Object.entries(state.seen).filter(([sequence]) => Number(sequence) > frame.sequence - MAX_SEEN_FRAMES)),
56
+ [String(frame.sequence)]: fingerprint,
57
+ };
58
+ const retainedBytes = bytes({ model, events, seen: nextSeen });
59
+ if (events.length > page_stream_1.PAGE_STREAM_MAX_BUFFER_EVENTS || retainedBytes > page_stream_1.PAGE_STREAM_MAX_BUFFER_BYTES)
60
+ throw new PageStreamReducerError('PAGE_STREAM_CAPACITY_EXCEEDED');
61
+ return { streamId: state.streamId, model, events, sequence: frame.sequence, cursor: frame.cursor, seen: nextSeen, retainedBytes,
62
+ status: frame.type === 'end' ? 'ended' : frame.type === 'error' ? 'error' : 'open', error: frame.type === 'error' ? frame.payload : undefined };
63
+ }
64
+ exports.applyPageStreamEvent = applyPageStreamEvent;
65
+ //# sourceMappingURL=page-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-stream.js","sourceRoot":"","sources":["../../src/runtime/page-stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { JsonObject, JsonValue } from '../contracts/common';
2
+ import { type RecordEditorSubmissionSnapshot, type RecordEditorDraft, type RecordEditorDraftOperation } from '../contracts/record-editor-draft';
3
+ export declare const recordEditorValuesEqual: (left: JsonValue, right: JsonValue) => boolean;
4
+ export declare const recordEditorPathKey: (path: (string | {
5
+ itemId: string;
6
+ idKey: string;
7
+ })[]) => string;
8
+ export declare const createRecordEditorDraft: (revision: string, value: JsonObject) => RecordEditorDraft;
9
+ export declare const recordEditorDraftIsDirty: (draft: RecordEditorDraft) => boolean;
10
+ export declare const recordEditorArrayItems: (value: JsonValue | undefined, idKey: string) => JsonObject[];
11
+ export declare const readRecordEditorPath: (value: JsonValue, path: (string | {
12
+ itemId: string;
13
+ idKey: string;
14
+ })[]) => JsonValue | undefined;
15
+ export declare const applyRecordEditorDraft: (draft: RecordEditorDraft, input: RecordEditorDraftOperation) => RecordEditorDraft;
16
+ /** Deliberately select only the non-sensitive draft envelope, excluding secretChanges. */
17
+ export declare const captureRecordEditorSubmission: (payload: unknown) => RecordEditorSubmissionSnapshot | undefined;
18
+ export declare const projectRecordEditorValidation: (details: unknown, submission: RecordEditorSubmissionSnapshot | undefined) => {
19
+ revision: string;
20
+ value: Record<string, JsonValue>;
21
+ errors: {
22
+ path: (string | {
23
+ itemId: string;
24
+ idKey: string;
25
+ })[];
26
+ code: string;
27
+ }[];
28
+ } | undefined;
29
+ //# sourceMappingURL=record-editor-draft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-editor-draft.d.ts","sourceRoot":"","sources":["../../src/runtime/record-editor-draft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAuI,KAAK,8BAA8B,EAAE,KAAK,iBAAiB,EAAE,KAAK,0BAA0B,EAAyB,MAAM,kCAAkC,CAAC;AAG5S,eAAO,MAAM,uBAAuB,SAAU,SAAS,SAAS,SAAS,KAAG,OAK3E,CAAC;AACF,eAAO,MAAM,mBAAmB;;;SAA6B,MAA4D,CAAC;AAe1H,eAAO,MAAM,uBAAuB,aAAc,MAAM,SAAS,UAAU,KAAG,iBAK7E,CAAC;AACF,eAAO,MAAM,wBAAwB,UAAW,iBAAiB,KAAG,OAAgE,CAAC;AACrI,eAAO,MAAM,sBAAsB,UAAW,SAAS,GAAG,SAAS,SAAS,MAAM,KAAG,UAAU,EAS9F,CAAC;AACF,eAAO,MAAM,oBAAoB,UAAW,SAAS;;;SAA2B,SAAS,GAAG,SAQ3F,CAAC;AAgBF,eAAO,MAAM,sBAAsB,UAAW,iBAAiB,SAAS,0BAA0B,KAAG,iBAiCpG,CAAC;AAGF,0FAA0F;AAC1F,eAAO,MAAM,6BAA6B,YAAa,OAAO,KAAG,8BAA8B,GAAG,SASjG,CAAC;AAEF,eAAO,MAAM,6BAA6B,YAAa,OAAO,cAAc,8BAA8B,GAAG,SAAS;;;;;;;;;;aAIrH,CAAC"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.projectRecordEditorValidation = exports.captureRecordEditorSubmission = exports.applyRecordEditorDraft = exports.readRecordEditorPath = exports.recordEditorArrayItems = exports.recordEditorDraftIsDirty = exports.createRecordEditorDraft = exports.recordEditorPathKey = exports.recordEditorValuesEqual = void 0;
4
+ const record_editor_draft_1 = require("../contracts/record-editor-draft");
5
+ const own = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
6
+ const recordEditorValuesEqual = (left, right) => {
7
+ if (left === right)
8
+ return true;
9
+ if (!left || !right || typeof left !== 'object' || typeof right !== 'object' || Array.isArray(left) !== Array.isArray(right))
10
+ return false;
11
+ const keys = Object.keys(left);
12
+ return keys.length === Object.keys(right).length && keys.every((key) => own(right, key) && (0, exports.recordEditorValuesEqual)(left[key], right[key]));
13
+ };
14
+ exports.recordEditorValuesEqual = recordEditorValuesEqual;
15
+ const recordEditorPathKey = (path) => JSON.stringify(record_editor_draft_1.RecordEditorPathSchema.parse(path));
16
+ exports.recordEditorPathKey = recordEditorPathKey;
17
+ const assertValue = (value) => {
18
+ let nodes = 0;
19
+ const visit = (current, depth) => {
20
+ if (++nodes > 16384 || depth > 32)
21
+ throw new RangeError('Editor draft exceeds its value budget.');
22
+ if (current !== null && typeof current !== 'string' && typeof current !== 'boolean' && !(typeof current === 'number' && Number.isFinite(current)) && typeof current !== 'object')
23
+ throw new TypeError('Editor draft requires JSON values.');
24
+ if (typeof current === 'number' && !Number.isFinite(current))
25
+ throw new TypeError('Editor draft requires finite numbers.');
26
+ if (current && typeof current === 'object' && !Array.isArray(current) && Object.getPrototypeOf(current) !== Object.prototype && Object.getPrototypeOf(current) !== null)
27
+ throw new TypeError('Editor draft requires plain objects.');
28
+ if (current && typeof current === 'object')
29
+ for (const [key, child] of Object.entries(current)) {
30
+ if (['__proto__', 'prototype', 'constructor'].includes(key))
31
+ throw new TypeError('Unsafe editor member.');
32
+ visit(child, depth + 1);
33
+ }
34
+ };
35
+ visit(value, 0);
36
+ };
37
+ const createRecordEditorDraft = (revision, value) => {
38
+ if (!revision || revision.length > 256)
39
+ throw new TypeError('Editor reset requires a revision.');
40
+ assertValue(value);
41
+ const original = JSON.parse(JSON.stringify(value));
42
+ return { revision, original, value: JSON.parse(JSON.stringify(original)), touched: [], errors: [] };
43
+ };
44
+ exports.createRecordEditorDraft = createRecordEditorDraft;
45
+ const recordEditorDraftIsDirty = (draft) => !(0, exports.recordEditorValuesEqual)(draft.original, draft.value);
46
+ exports.recordEditorDraftIsDirty = recordEditorDraftIsDirty;
47
+ const recordEditorArrayItems = (value, idKey) => {
48
+ record_editor_draft_1.RecordEditorPathSchema.parse([idKey]);
49
+ if (!Array.isArray(value) || value.length > 1000)
50
+ throw new TypeError('Editor array requires at most 1000 identified objects.');
51
+ const seen = new Set();
52
+ for (const item of value) {
53
+ if (!item || typeof item !== 'object' || Array.isArray(item) || !own(item, idKey) || typeof item[idKey] !== 'string' || !item[idKey] || seen.has(item[idKey]))
54
+ throw new TypeError('Editor array requires unique non-empty stable IDs.');
55
+ seen.add(item[idKey]);
56
+ }
57
+ return value;
58
+ };
59
+ exports.recordEditorArrayItems = recordEditorArrayItems;
60
+ const readRecordEditorPath = (value, path) => {
61
+ let current = value;
62
+ for (const segment of record_editor_draft_1.RecordEditorPathSchema.parse(path)) {
63
+ if (typeof segment !== 'string')
64
+ current = (0, exports.recordEditorArrayItems)(current, segment.idKey).find((item) => item[segment.idKey] === segment.itemId);
65
+ else
66
+ current = current && typeof current === 'object' && !Array.isArray(current) && own(current, segment) ? current[segment] : undefined;
67
+ if (current === undefined)
68
+ return undefined;
69
+ }
70
+ return current;
71
+ };
72
+ exports.readRecordEditorPath = readRecordEditorPath;
73
+ const write = (value, path, replacement) => {
74
+ if (!path.length)
75
+ return replacement;
76
+ const [segment, ...rest] = path;
77
+ if (typeof segment !== 'string') {
78
+ const items = (0, exports.recordEditorArrayItems)(value, segment.idKey);
79
+ const index = items.findIndex((item) => item[segment.idKey] === segment.itemId);
80
+ if (index < 0 || rest[0] === segment.idKey)
81
+ throw new TypeError('Editor item is missing or its stable ID is being changed.');
82
+ const result = items.map((item, i) => i === index ? write(item, rest, replacement) : item);
83
+ (0, exports.recordEditorArrayItems)(result, segment.idKey);
84
+ if (result[index][segment.idKey] !== segment.itemId)
85
+ throw new TypeError('Editor stable ID cannot change.');
86
+ return result;
87
+ }
88
+ if (!value || typeof value !== 'object' || Array.isArray(value))
89
+ throw new TypeError('Editor path requires an object.');
90
+ return { ...value, [segment]: write(own(value, segment) ? value[segment] : {}, rest, replacement) };
91
+ };
92
+ const applyRecordEditorDraft = (draft, input) => {
93
+ const operation = record_editor_draft_1.RecordEditorDraftOperationSchema.parse(input);
94
+ if (operation.kind === 'reset')
95
+ return (0, exports.createRecordEditorDraft)(operation.revision, operation.value);
96
+ const key = (0, exports.recordEditorPathKey)(operation.path);
97
+ const touched = draft.touched.some((path) => (0, exports.recordEditorPathKey)(path) === key) ? draft.touched : [...draft.touched, operation.path];
98
+ if (touched.length > 4096)
99
+ throw new RangeError('Editor touched path budget exceeded.');
100
+ if (operation.kind === 'touch')
101
+ return { ...draft, touched };
102
+ let replacement;
103
+ if (operation.kind === 'set')
104
+ replacement = operation.value;
105
+ else {
106
+ const items = [...(0, exports.recordEditorArrayItems)((0, exports.readRecordEditorPath)(draft.value, operation.path), operation.idKey)];
107
+ if (operation.kind === 'insert') {
108
+ (0, exports.recordEditorArrayItems)([...items, operation.value], operation.idKey);
109
+ const before = operation.beforeId === undefined ? items.length : items.findIndex((item) => item[operation.idKey] === operation.beforeId);
110
+ if (before < 0)
111
+ throw new TypeError('Editor insertion target is missing.');
112
+ items.splice(before, 0, operation.value);
113
+ }
114
+ else {
115
+ const index = items.findIndex((item) => item[operation.idKey] === operation.itemId);
116
+ if (index < 0)
117
+ throw new TypeError('Editor item is missing.');
118
+ if (operation.kind === 'move' && operation.beforeId === operation.itemId)
119
+ return { ...draft, touched };
120
+ const [item] = items.splice(index, 1);
121
+ if (operation.kind === 'move') {
122
+ const before = operation.beforeId === undefined ? items.length : items.findIndex((entry) => entry[operation.idKey] === operation.beforeId);
123
+ if (before < 0)
124
+ throw new TypeError('Editor move target is missing.');
125
+ items.splice(before, 0, item);
126
+ }
127
+ }
128
+ replacement = items;
129
+ }
130
+ const value = write(draft.value, operation.path, replacement);
131
+ if (!value || typeof value !== 'object' || Array.isArray(value))
132
+ throw new TypeError('Editor root requires an object.');
133
+ assertValue(value);
134
+ return { ...draft, value, touched, errors: [] };
135
+ };
136
+ exports.applyRecordEditorDraft = applyRecordEditorDraft;
137
+ /** Deliberately select only the non-sensitive draft envelope, excluding secretChanges. */
138
+ const captureRecordEditorSubmission = (payload) => {
139
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload))
140
+ return undefined;
141
+ const input = payload;
142
+ const parsed = record_editor_draft_1.RecordEditorSubmissionSnapshotSchema.safeParse({ revision: input.draftRevision, value: input.values });
143
+ if (!parsed.success)
144
+ return undefined;
145
+ try {
146
+ const draft = (0, exports.createRecordEditorDraft)(parsed.data.revision, parsed.data.value);
147
+ return { revision: draft.revision, value: draft.value };
148
+ }
149
+ catch {
150
+ return undefined;
151
+ }
152
+ };
153
+ exports.captureRecordEditorSubmission = captureRecordEditorSubmission;
154
+ const projectRecordEditorValidation = (details, submission) => {
155
+ if (!submission)
156
+ return undefined;
157
+ const parsed = record_editor_draft_1.RecordEditorValidationDetailsSchema.safeParse(details);
158
+ return parsed.success ? { revision: submission.revision, value: submission.value, errors: parsed.data.errors } : undefined;
159
+ };
160
+ exports.projectRecordEditorValidation = projectRecordEditorValidation;
161
+ //# sourceMappingURL=record-editor-draft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-editor-draft.js","sourceRoot":"","sources":["../../src/runtime/record-editor-draft.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type JsonObject } from '../contracts/common';
2
+ /** Compile the authoritative target input schema once; never fetch external schemas. */
3
+ export declare const compileTargetRenderModelValidator: (schema: JsonObject, documents?: readonly JsonObject[]) => ((model: unknown) => JsonObject);
4
+ //# sourceMappingURL=target-render-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-render-model.d.ts","sourceRoot":"","sources":["../../src/runtime/target-render-model.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAExE,wFAAwF;AACxF,eAAO,MAAM,iCAAiC,WAAY,UAAU,cAAa,SAAS,UAAU,EAAE,KAAQ,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,CAe5I,CAAC"}