@haverstack/core 0.40.0 → 0.42.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 (287) hide show
  1. package/README.md +121 -59
  2. package/dist/access.d.ts +34 -36
  3. package/dist/access.d.ts.map +1 -1
  4. package/dist/access.js +65 -42
  5. package/dist/access.js.map +1 -1
  6. package/dist/{combine.d.ts → adapter/combine.d.ts} +8 -1
  7. package/dist/adapter/combine.d.ts.map +1 -0
  8. package/dist/{combine.js → adapter/combine.js} +7 -0
  9. package/dist/adapter/combine.js.map +1 -0
  10. package/dist/{adapter-entry.d.ts → adapter/index.d.ts} +6 -5
  11. package/dist/adapter/index.d.ts.map +1 -0
  12. package/dist/{adapter-entry.js → adapter/index.js} +5 -4
  13. package/dist/adapter/index.js.map +1 -0
  14. package/dist/{sort.d.ts → adapter/sort.d.ts} +20 -20
  15. package/dist/adapter/sort.d.ts.map +1 -0
  16. package/dist/{sort.js → adapter/sort.js} +37 -27
  17. package/dist/adapter/sort.js.map +1 -0
  18. package/dist/associations/identity.d.ts +93 -0
  19. package/dist/associations/identity.d.ts.map +1 -0
  20. package/dist/associations/identity.js +198 -0
  21. package/dist/associations/identity.js.map +1 -0
  22. package/dist/associations/validation.d.ts +90 -0
  23. package/dist/associations/validation.d.ts.map +1 -0
  24. package/dist/associations/validation.js +339 -0
  25. package/dist/associations/validation.js.map +1 -0
  26. package/dist/attachment-records.d.ts +48 -0
  27. package/dist/attachment-records.d.ts.map +1 -0
  28. package/dist/attachment-records.js +52 -0
  29. package/dist/attachment-records.js.map +1 -0
  30. package/dist/collection.d.ts +182 -0
  31. package/dist/collection.d.ts.map +1 -0
  32. package/dist/collection.js +407 -0
  33. package/dist/collection.js.map +1 -0
  34. package/dist/content-match.d.ts +25 -0
  35. package/dist/content-match.d.ts.map +1 -0
  36. package/dist/content-match.js +51 -0
  37. package/dist/content-match.js.map +1 -0
  38. package/dist/content-translation.d.ts +42 -0
  39. package/dist/content-translation.d.ts.map +1 -0
  40. package/dist/content-translation.js +108 -0
  41. package/dist/content-translation.js.map +1 -0
  42. package/dist/did/did.d.ts.map +1 -0
  43. package/dist/{did.js → did/did.js} +3 -4
  44. package/dist/did/did.js.map +1 -0
  45. package/dist/{did-entry.d.ts → did/index.d.ts} +1 -1
  46. package/dist/did/index.d.ts.map +1 -0
  47. package/dist/{did-entry.js → did/index.js} +3 -3
  48. package/dist/did/index.js.map +1 -0
  49. package/dist/errors.d.ts +36 -63
  50. package/dist/errors.d.ts.map +1 -1
  51. package/dist/errors.js +35 -58
  52. package/dist/errors.js.map +1 -1
  53. package/dist/grants.d.ts +20 -43
  54. package/dist/grants.d.ts.map +1 -1
  55. package/dist/grants.js +71 -134
  56. package/dist/grants.js.map +1 -1
  57. package/dist/id.d.ts +13 -31
  58. package/dist/id.d.ts.map +1 -1
  59. package/dist/id.js +13 -31
  60. package/dist/id.js.map +1 -1
  61. package/dist/index.d.ts +14 -8
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +9 -5
  64. package/dist/index.js.map +1 -1
  65. package/dist/install.d.ts +141 -0
  66. package/dist/install.d.ts.map +1 -0
  67. package/dist/install.js +219 -0
  68. package/dist/install.js.map +1 -0
  69. package/dist/merge.d.ts.map +1 -1
  70. package/dist/merge.js +5 -11
  71. package/dist/merge.js.map +1 -1
  72. package/dist/migration-steps.d.ts +102 -0
  73. package/dist/migration-steps.d.ts.map +1 -0
  74. package/dist/migration-steps.js +293 -0
  75. package/dist/migration-steps.js.map +1 -0
  76. package/dist/query-validation.d.ts +28 -94
  77. package/dist/query-validation.d.ts.map +1 -1
  78. package/dist/query-validation.js +156 -336
  79. package/dist/query-validation.js.map +1 -1
  80. package/dist/record-changes.d.ts +2 -117
  81. package/dist/record-changes.d.ts.map +1 -1
  82. package/dist/record-changes.js +10 -212
  83. package/dist/record-changes.js.map +1 -1
  84. package/dist/schema.d.ts +18 -7
  85. package/dist/schema.d.ts.map +1 -1
  86. package/dist/schema.js +59 -30
  87. package/dist/schema.js.map +1 -1
  88. package/dist/scoped-stack/authority.d.ts +156 -0
  89. package/dist/scoped-stack/authority.d.ts.map +1 -0
  90. package/dist/scoped-stack/authority.js +384 -0
  91. package/dist/scoped-stack/authority.js.map +1 -0
  92. package/dist/scoped-stack/scoped-stack.d.ts +338 -0
  93. package/dist/scoped-stack/scoped-stack.d.ts.map +1 -0
  94. package/dist/scoped-stack/scoped-stack.js +776 -0
  95. package/dist/scoped-stack/scoped-stack.js.map +1 -0
  96. package/dist/scoped-stack/subscription.d.ts +55 -0
  97. package/dist/scoped-stack/subscription.d.ts.map +1 -0
  98. package/dist/scoped-stack/subscription.js +110 -0
  99. package/dist/scoped-stack/subscription.js.map +1 -0
  100. package/dist/stack/attachments.d.ts +24 -0
  101. package/dist/stack/attachments.d.ts.map +1 -0
  102. package/dist/stack/attachments.js +113 -0
  103. package/dist/stack/attachments.js.map +1 -0
  104. package/dist/{changes.d.ts → stack/changes.d.ts} +29 -65
  105. package/dist/stack/changes.d.ts.map +1 -0
  106. package/dist/{changes.js → stack/changes.js} +32 -66
  107. package/dist/stack/changes.js.map +1 -0
  108. package/dist/stack/client.d.ts +271 -0
  109. package/dist/stack/client.d.ts.map +1 -0
  110. package/dist/stack/client.js +9 -0
  111. package/dist/stack/client.js.map +1 -0
  112. package/dist/stack/identity-bindings.d.ts.map +1 -0
  113. package/dist/{identity-bindings.js → stack/identity-bindings.js} +8 -14
  114. package/dist/stack/identity-bindings.js.map +1 -0
  115. package/dist/stack/install-app.d.ts +22 -0
  116. package/dist/stack/install-app.d.ts.map +1 -0
  117. package/dist/stack/install-app.js +260 -0
  118. package/dist/stack/install-app.js.map +1 -0
  119. package/dist/stack/integrity.d.ts +94 -0
  120. package/dist/stack/integrity.d.ts.map +1 -0
  121. package/dist/stack/integrity.js +268 -0
  122. package/dist/stack/integrity.js.map +1 -0
  123. package/dist/{limits.d.ts → stack/limits.d.ts} +2 -5
  124. package/dist/stack/limits.d.ts.map +1 -0
  125. package/dist/{limits.js → stack/limits.js} +3 -6
  126. package/dist/stack/limits.js.map +1 -0
  127. package/dist/stack/migrations.d.ts +59 -0
  128. package/dist/stack/migrations.d.ts.map +1 -0
  129. package/dist/stack/migrations.js +141 -0
  130. package/dist/stack/migrations.js.map +1 -0
  131. package/dist/{stack-reads.d.ts → stack/reads.d.ts} +33 -6
  132. package/dist/stack/reads.d.ts.map +1 -0
  133. package/dist/{stack-reads.js → stack/reads.js} +49 -7
  134. package/dist/stack/reads.js.map +1 -0
  135. package/dist/stack/record-id.d.ts +35 -0
  136. package/dist/stack/record-id.d.ts.map +1 -0
  137. package/dist/stack/record-id.js +82 -0
  138. package/dist/stack/record-id.js.map +1 -0
  139. package/dist/stack/stack.d.ts +438 -0
  140. package/dist/stack/stack.d.ts.map +1 -0
  141. package/dist/stack/stack.js +1366 -0
  142. package/dist/stack/stack.js.map +1 -0
  143. package/dist/stack/system-types.d.ts +16 -0
  144. package/dist/stack/system-types.d.ts.map +1 -0
  145. package/dist/stack/system-types.js +111 -0
  146. package/dist/stack/system-types.js.map +1 -0
  147. package/dist/stack/type-grants.d.ts +20 -0
  148. package/dist/stack/type-grants.d.ts.map +1 -0
  149. package/dist/stack/type-grants.js +69 -0
  150. package/dist/stack/type-grants.js.map +1 -0
  151. package/dist/stack/write-expectation.d.ts +78 -0
  152. package/dist/stack/write-expectation.d.ts.map +1 -0
  153. package/dist/stack/write-expectation.js +71 -0
  154. package/dist/stack/write-expectation.js.map +1 -0
  155. package/dist/testing.d.ts +21 -26
  156. package/dist/testing.d.ts.map +1 -1
  157. package/dist/testing.js +50 -70
  158. package/dist/testing.js.map +1 -1
  159. package/dist/type-handle.d.ts +67 -78
  160. package/dist/type-handle.d.ts.map +1 -1
  161. package/dist/type-handle.js +44 -111
  162. package/dist/type-handle.js.map +1 -1
  163. package/dist/types/adapter.d.ts +223 -0
  164. package/dist/types/adapter.d.ts.map +1 -0
  165. package/dist/types/adapter.js +5 -0
  166. package/dist/types/adapter.js.map +1 -0
  167. package/dist/types/associations.d.ts +156 -0
  168. package/dist/types/associations.d.ts.map +1 -0
  169. package/dist/types/associations.js +13 -0
  170. package/dist/types/associations.js.map +1 -0
  171. package/dist/types/capabilities.d.ts +89 -0
  172. package/dist/types/capabilities.d.ts.map +1 -0
  173. package/dist/types/capabilities.js +5 -0
  174. package/dist/types/capabilities.js.map +1 -0
  175. package/dist/types/events.d.ts +155 -0
  176. package/dist/types/events.d.ts.map +1 -0
  177. package/dist/types/events.js +5 -0
  178. package/dist/types/events.js.map +1 -0
  179. package/dist/types/ids.d.ts +43 -0
  180. package/dist/types/ids.d.ts.map +1 -0
  181. package/dist/types/ids.js +5 -0
  182. package/dist/types/ids.js.map +1 -0
  183. package/dist/types/index.d.ts +19 -0
  184. package/dist/types/index.d.ts.map +1 -0
  185. package/dist/types/index.js +19 -0
  186. package/dist/types/index.js.map +1 -0
  187. package/dist/types/journal.d.ts +47 -0
  188. package/dist/types/journal.d.ts.map +1 -0
  189. package/dist/types/journal.js +5 -0
  190. package/dist/types/journal.js.map +1 -0
  191. package/dist/types/query.d.ts +185 -0
  192. package/dist/types/query.d.ts.map +1 -0
  193. package/dist/types/query.js +10 -0
  194. package/dist/types/query.js.map +1 -0
  195. package/dist/types/records.d.ts +76 -0
  196. package/dist/types/records.d.ts.map +1 -0
  197. package/dist/types/records.js +5 -0
  198. package/dist/types/records.js.map +1 -0
  199. package/dist/types/schema.d.ts +74 -0
  200. package/dist/types/schema.d.ts.map +1 -0
  201. package/dist/types/schema.js +5 -0
  202. package/dist/types/schema.js.map +1 -0
  203. package/dist/types/system.d.ts +161 -0
  204. package/dist/types/system.d.ts.map +1 -0
  205. package/dist/types/system.js +32 -0
  206. package/dist/types/system.js.map +1 -0
  207. package/dist/types/tokens.d.ts +39 -0
  208. package/dist/types/tokens.d.ts.map +1 -0
  209. package/dist/types/tokens.js +5 -0
  210. package/dist/types/tokens.js.map +1 -0
  211. package/dist/validate.d.ts +29 -70
  212. package/dist/validate.d.ts.map +1 -1
  213. package/dist/validate.js +65 -97
  214. package/dist/validate.js.map +1 -1
  215. package/dist/{attachment-download.d.ts → wire/attachment-download.d.ts} +0 -57
  216. package/dist/wire/attachment-download.d.ts.map +1 -0
  217. package/dist/{attachment-download.js → wire/attachment-download.js} +0 -61
  218. package/dist/wire/attachment-download.js.map +1 -0
  219. package/dist/{auth.d.ts → wire/auth.d.ts} +5 -8
  220. package/dist/wire/auth.d.ts.map +1 -0
  221. package/dist/{auth.js → wire/auth.js} +5 -8
  222. package/dist/wire/auth.js.map +1 -0
  223. package/dist/{wire-body.d.ts → wire/body.d.ts} +13 -5
  224. package/dist/wire/body.d.ts.map +1 -0
  225. package/dist/{wire-body.js → wire/body.js} +65 -7
  226. package/dist/wire/body.js.map +1 -0
  227. package/dist/{wire-entry.d.ts → wire/index.d.ts} +12 -12
  228. package/dist/wire/index.d.ts.map +1 -0
  229. package/dist/{wire-entry.js → wire/index.js} +13 -17
  230. package/dist/wire/index.js.map +1 -0
  231. package/dist/{wire-record.d.ts → wire/record.d.ts} +10 -22
  232. package/dist/wire/record.d.ts.map +1 -0
  233. package/dist/{wire-record.js → wire/record.js} +12 -24
  234. package/dist/wire/record.js.map +1 -0
  235. package/dist/{wire-request.d.ts → wire/request.d.ts} +20 -37
  236. package/dist/wire/request.d.ts.map +1 -0
  237. package/dist/{wire-request.js → wire/request.js} +79 -54
  238. package/dist/wire/request.js.map +1 -0
  239. package/package.json +7 -7
  240. package/dist/adapter-entry.d.ts.map +0 -1
  241. package/dist/adapter-entry.js.map +0 -1
  242. package/dist/attachment-download.d.ts.map +0 -1
  243. package/dist/attachment-download.js.map +0 -1
  244. package/dist/auth.d.ts.map +0 -1
  245. package/dist/auth.js.map +0 -1
  246. package/dist/changes.d.ts.map +0 -1
  247. package/dist/changes.js.map +0 -1
  248. package/dist/combine.d.ts.map +0 -1
  249. package/dist/combine.js.map +0 -1
  250. package/dist/did-entry.d.ts.map +0 -1
  251. package/dist/did-entry.js.map +0 -1
  252. package/dist/did.d.ts.map +0 -1
  253. package/dist/did.js.map +0 -1
  254. package/dist/identity-bindings.d.ts.map +0 -1
  255. package/dist/identity-bindings.js.map +0 -1
  256. package/dist/limits.d.ts.map +0 -1
  257. package/dist/limits.js.map +0 -1
  258. package/dist/record-id.d.ts +0 -70
  259. package/dist/record-id.d.ts.map +0 -1
  260. package/dist/record-id.js +0 -127
  261. package/dist/record-id.js.map +0 -1
  262. package/dist/scoped-stack.d.ts +0 -532
  263. package/dist/scoped-stack.d.ts.map +0 -1
  264. package/dist/scoped-stack.js +0 -1219
  265. package/dist/scoped-stack.js.map +0 -1
  266. package/dist/sort.d.ts.map +0 -1
  267. package/dist/sort.js.map +0 -1
  268. package/dist/stack-reads.d.ts.map +0 -1
  269. package/dist/stack-reads.js.map +0 -1
  270. package/dist/stack.d.ts +0 -971
  271. package/dist/stack.d.ts.map +0 -1
  272. package/dist/stack.js +0 -2012
  273. package/dist/stack.js.map +0 -1
  274. package/dist/types.d.ts +0 -1250
  275. package/dist/types.d.ts.map +0 -1
  276. package/dist/types.js +0 -49
  277. package/dist/types.js.map +0 -1
  278. package/dist/wire-body.d.ts.map +0 -1
  279. package/dist/wire-body.js.map +0 -1
  280. package/dist/wire-entry.d.ts.map +0 -1
  281. package/dist/wire-entry.js.map +0 -1
  282. package/dist/wire-record.d.ts.map +0 -1
  283. package/dist/wire-record.js.map +0 -1
  284. package/dist/wire-request.d.ts.map +0 -1
  285. package/dist/wire-request.js.map +0 -1
  286. /package/dist/{did.d.ts → did/did.d.ts} +0 -0
  287. /package/dist/{identity-bindings.d.ts → stack/identity-bindings.d.ts} +0 -0
package/dist/validate.js CHANGED
@@ -1,8 +1,10 @@
1
1
  /**
2
- * Stack — Content Validation
2
+ * Stack — Content and Schema Validation
3
3
  * -------------------------------------------------------
4
- * Validates a Record's content object against a TypeSchema.
5
- * Returns a list of validation errors — empty means valid.
4
+ * Validates a Record's content object against a TypeSchema, and a
5
+ * TypeSchema itself before it is defined — including the field-name rules
6
+ * both share, so no stored name is one a content filter cannot address.
7
+ * Every check returns a list of validation errors — empty means valid.
6
8
  *
7
9
  * Validates recursively for array and object field kinds.
8
10
  * Coercion is never performed — types must match exactly.
@@ -20,12 +22,15 @@ const ISO_8601_RE = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\
20
22
  // -------------------------------------------------------
21
23
  // Internal helpers
22
24
  // -------------------------------------------------------
25
+ /** Shared by the 422 for a value outside the list and the 409 for removed values. */
26
+ export const formatEnumValues = (values) => values.map((v) => JSON.stringify(v)).join(', ');
23
27
  const jsTypeForScalar = (kind) => {
24
28
  switch (kind) {
25
29
  case 'string':
26
30
  case 'text':
27
31
  case 'record-ref':
28
32
  case 'file-ref':
33
+ case 'enum':
29
34
  return 'string';
30
35
  case 'number':
31
36
  return 'number';
@@ -43,9 +48,18 @@ const isPlainJsonObject = (value) => {
43
48
  /**
44
49
  * Content is plain JSON at every depth, including inside `open` containers,
45
50
  * so adapters that store the value as given and adapters that serialize it
46
- * read back the same thing. See docs/spec/data-model.md § Types.
51
+ * read back the same thing. Nesting is held to the cap declared fields
52
+ * already meet, so an open value cannot buy an unbounded walk.
53
+ * See docs/spec/data-model.md § Types.
47
54
  */
48
- const validateJsonValue = (value, path, errors, ancestors = []) => {
55
+ const validateJsonValue = (value, path, errors, depth, ancestors = []) => {
56
+ if (depth > MAX_VALIDATION_DEPTH) {
57
+ errors.push({
58
+ path,
59
+ message: `Content nesting exceeds maximum depth of ${MAX_VALIDATION_DEPTH}`,
60
+ });
61
+ return;
62
+ }
49
63
  if (value === null || typeof value === 'string' || typeof value === 'boolean')
50
64
  return;
51
65
  if (typeof value === 'number') {
@@ -65,11 +79,11 @@ const validateJsonValue = (value, path, errors, ancestors = []) => {
65
79
  }
66
80
  const next = [...ancestors, value];
67
81
  if (isArray) {
68
- value.forEach((item, i) => validateJsonValue(item, `${path}[${i}]`, errors, next));
82
+ value.forEach((item, i) => validateJsonValue(item, `${path}[${i}]`, errors, depth + 1, next));
69
83
  return;
70
84
  }
71
85
  for (const [key, child] of Object.entries(value)) {
72
- validateJsonValue(child, `${path}.${key}`, errors, next);
86
+ validateJsonValue(child, `${path}.${key}`, errors, depth + 1, next);
73
87
  }
74
88
  };
75
89
  const validateField = (value, def, path, errors, depth = 0) => {
@@ -88,7 +102,7 @@ const validateField = (value, def, path, errors, depth = 0) => {
88
102
  // An open array is the list-shaped counterpart of an open object: the
89
103
  // schema places a list here and says nothing about what it holds.
90
104
  if (def.open) {
91
- validateJsonValue(value, path, errors);
105
+ validateJsonValue(value, path, errors, depth);
92
106
  return;
93
107
  }
94
108
  const items = def.items;
@@ -106,7 +120,7 @@ const validateField = (value, def, path, errors, depth = 0) => {
106
120
  // An open object says "an object lives here" and nothing about its
107
121
  // interior, so there is no set of declared keys to hold it to.
108
122
  if (def.open) {
109
- validateJsonValue(value, path, errors);
123
+ validateJsonValue(value, path, errors, depth);
110
124
  return;
111
125
  }
112
126
  validateContent(value, def.properties, path, errors, depth + 1);
@@ -149,10 +163,10 @@ const validateField = (value, def, path, errors, depth = 0) => {
149
163
  else if (typeof value === 'number' && !Number.isFinite(value)) {
150
164
  errors.push({ path, message: `Expected a finite number, got ${value}` });
151
165
  }
152
- else if (def.kind === 'string' && def.enum && !def.enum.includes(value)) {
166
+ else if (def.kind === 'enum' && !def.values.includes(value)) {
153
167
  errors.push({
154
168
  path,
155
- message: `Expected one of ${def.enum.map((v) => JSON.stringify(v)).join(', ')}, got ${JSON.stringify(value)}`,
169
+ message: `Expected one of ${formatEnumValues(def.values)}, got ${JSON.stringify(value)}`,
156
170
  });
157
171
  }
158
172
  };
@@ -174,11 +188,10 @@ export const validateContent = (content, schema, prefix = '', errors = [], depth
174
188
  });
175
189
  return errors;
176
190
  }
177
- // A field the schema does not declare is refused rather than stored.
178
- // The schema is the record's shape; a key outside it is a typo, a stale
179
- // writer, or a caller reaching for something that isn't content at all,
180
- // and storing it makes all three look like a write that worked. Declare
181
- // an `object` field `open` for a shape a schema cannot describe.
191
+ // An undeclared field is refused rather than stored: a key outside the
192
+ // schema is a typo, a stale writer or not content at all, and storing it
193
+ // makes each look like a write that worked. An `open` object field holds
194
+ // what a schema cannot describe.
182
195
  // See docs/spec/data-model.md § Undeclared content fields.
183
196
  for (const key of Object.keys(content)) {
184
197
  if (Object.hasOwn(schema, key))
@@ -229,23 +242,11 @@ const dropAbsentValue = (value, def, depth) => {
229
242
  return value;
230
243
  };
231
244
  /**
232
- * Content keys that name JavaScript's object machinery rather than a
233
- * field. Undeclared content fields are allowed by design, so without this
234
- * they reach `merged[key] = value` in applyMergePatch — where `__proto__`
235
- * invokes the prototype setter instead of setting a field.
236
- *
237
- * That is not a prototype-pollution gadget today: JSON.stringify writes
238
- * only own-enumerable properties, so a reassigned prototype never reaches
239
- * storage, and JSON.parse recreates `__proto__` as an own property rather
240
- * than invoking the setter, so a stored one round-trips inertly. The
241
- * defect is that the two write paths disagree — a merge patch to
242
- * `__proto__` silently vanishes, while the same key through create()
243
- * stores as an ordinary field — and that a future refactor deepening the
244
- * shallow merge would turn a quiet inconsistency into a real one.
245
- *
246
- * Rejecting is more honest than skipping: a caller who sends one of these
247
- * finds out, rather than watching a write appear to succeed and do
248
- * nothing. See docs/spec/data-model.md § Reserved content keys.
245
+ * Content keys naming JavaScript's object machinery rather than a field.
246
+ * Whether one survives a write would depend on how the code setting it was
247
+ * written — assignment drops `__proto__`, JSON.parse keeps it — so all
248
+ * three are refused at the write, and the caller finds out.
249
+ * See docs/spec/data-model.md § Reserved content keys.
249
250
  */
250
251
  export const RESERVED_CONTENT_KEYS = ['__proto__', 'constructor', 'prototype'];
251
252
  /**
@@ -268,20 +269,21 @@ const SCALAR_KINDS = {
268
269
  text: true,
269
270
  'record-ref': true,
270
271
  'file-ref': true,
272
+ enum: true,
271
273
  };
272
- const isPlainObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
273
- const validateEnumShape = (list, path, errors) => {
274
+ export const isPlainObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
275
+ const validateEnumValuesShape = (list, path, errors) => {
274
276
  if (!Array.isArray(list) || list.length === 0) {
275
- errors.push({ path, message: '"enum" must be a non-empty array of strings' });
277
+ errors.push({ path, message: 'An enum must declare "values", a non-empty array of strings' });
276
278
  return;
277
279
  }
278
280
  const seen = new Set();
279
281
  for (const entry of list) {
280
282
  if (typeof entry !== 'string') {
281
- errors.push({ path, message: `"enum" entries must be strings, got ${typeName(entry)}` });
283
+ errors.push({ path, message: `"values" entries must be strings, got ${typeName(entry)}` });
282
284
  }
283
285
  else if (seen.has(entry)) {
284
- errors.push({ path, message: `"enum" lists ${JSON.stringify(entry)} more than once` });
286
+ errors.push({ path, message: `"values" lists ${JSON.stringify(entry)} more than once` });
285
287
  }
286
288
  seen.add(entry);
287
289
  }
@@ -302,8 +304,14 @@ const validateFieldDefShape = (def, path, errors, depth) => {
302
304
  errors.push({ path, message: 'A field definition must name a "kind"' });
303
305
  return;
304
306
  }
305
- if (def.enum !== undefined && (def.kind === 'array' || def.kind === 'object')) {
306
- errors.push({ path, message: `"enum" is only allowed on a string field, not "${def.kind}"` });
307
+ const knownKind = def.kind === 'array' || def.kind === 'object' || Object.hasOwn(SCALAR_KINDS, def.kind);
308
+ if (def.values !== undefined && knownKind && def.kind !== 'enum') {
309
+ errors.push({ path, message: `"values" is only allowed on an enum field, not "${def.kind}"` });
310
+ }
311
+ // Unknown keys are otherwise ignored, but `enum` names a kind: as a key it
312
+ // would read as a constraint that nothing enforces.
313
+ if (def.enum !== undefined) {
314
+ errors.push({ path, message: '"enum" is a field kind, not a field key' });
307
315
  }
308
316
  if (def.kind === 'array') {
309
317
  if (isOpen) {
@@ -346,28 +354,14 @@ const validateFieldDefShape = (def, path, errors, depth) => {
346
354
  });
347
355
  return;
348
356
  }
349
- if (def.enum !== undefined) {
350
- if (def.kind !== 'string') {
351
- errors.push({ path, message: `"enum" is only allowed on a string field, not "${def.kind}"` });
352
- }
353
- else {
354
- validateEnumShape(def.enum, path, errors);
355
- }
356
- }
357
+ if (def.kind === 'enum')
358
+ validateEnumValuesShape(def.values, path, errors);
357
359
  };
358
360
  /**
359
- * Check that a schema is actually a schema, before anything reads it as
360
- * one. `defineType()` takes a TypeSchema, but a schema off the wire is
361
- * parsed JSON that TypeScript never saw, so every shape below is reachable
362
- * at runtime: a container declaring neither its interior nor `open` throws
363
- * out of hashSchema() rather than reporting anything, and a definition with
364
- * an unknown `kind` — or none — defines a field whose every write fails
365
- * against an expectation the schema never actually stated, sending the
366
- * caller looking through their content for a bug that is in their type.
367
- *
368
- * Refused at definition time for the reason a field name no filter could
369
- * address is: a schema is a promise, and one nothing can satisfy is worth
370
- * catching where it is written. See docs/spec/data-model.md § Types.
361
+ * Check that a schema is a schema before anything reads it as one: off the
362
+ * wire it is JSON TypeScript never saw. A container declaring neither its
363
+ * interior nor `open` would throw out of hashSchema(), and an unknown `kind`
364
+ * would define a field every write fails. See docs/spec/data-model.md § Types.
371
365
  */
372
366
  export const validateSchemaShape = (schema, prefix = '', errors = [], depth = 0) => {
373
367
  if (depth > MAX_VALIDATION_DEPTH) {
@@ -390,30 +384,19 @@ export const validateSchemaShape = (schema, prefix = '', errors = [], depth = 0)
390
384
  return errors;
391
385
  };
392
386
  /**
393
- * The same three names, refused where a schema declares them. Top-level
394
- * only, exactly matching the content rule's scope above: a nested
395
- * declaration names a field a record can actually carry, so refusing one
396
- * would deny a writable shape.
397
- *
398
- * A declaration cannot license what the content rule refuses, so accepting
399
- * one would define a field no record could ever hold — and, where the
400
- * declaration is `required`, a type no record could satisfy at all: supply
401
- * the field and the write is refused as a reserved key, omit it and the
402
- * write is refused as a missing required field. Refused at definition time
403
- * for the reason a field name no filter could address is
404
- * (validateSchemaFieldNames): a schema is a promise that a field is
405
- * meaningful. See docs/spec/data-model.md § Reserved content keys.
387
+ * The same names, refused where a schema declares them, top-level only like
388
+ * the content rule. A declaration cannot license what that rule refuses, so
389
+ * it would define a field no record could hold — and if `required`, a type
390
+ * no record could satisfy. See docs/spec/data-model.md § Reserved content keys.
406
391
  */
407
392
  export const validateSchemaReservedNames = (schema) => RESERVED_CONTENT_KEYS.filter((key) => Object.hasOwn(schema, key)).map((key) => ({
408
393
  path: key,
409
394
  message: `"${key}" is a reserved content key and cannot be declared as a field name`,
410
395
  }));
411
396
  /**
412
- * `undefined` is not a value a merge patch can carry: `null` is the
413
- * deletion sentinel, JSON drops the key on the way to storage, and the
414
- * presence checks a patch runs through read the key as a claim on the
415
- * field it names. Top-level only, matching the shallow merge — a nested
416
- * one is part of a value being replaced wholesale.
397
+ * `undefined` is not a value a merge patch can carry: `null` deletes, JSON
398
+ * drops the key, and the presence checks read the key as a claim on its
399
+ * field. Top-level only, matching the shallow merge.
417
400
  * See docs/spec/data-model.md § Undefined values in a patch.
418
401
  */
419
402
  export const validatePatchValues = (patch) => Object.keys(patch)
@@ -423,20 +406,10 @@ export const validatePatchValues = (patch) => Object.keys(patch)
423
406
  message: `"${key}" is undefined; omit it to leave the field unchanged, or use null to remove it`,
424
407
  }));
425
408
  /**
426
- * Characters a content field name may not contain, because a content
427
- * filter key is a dot-separated path: `{ content: { 'emails.value': x } }`
428
- * addresses `value` inside `emails`. A field literally named `emails.value`
429
- * would make that filter mean two things at once, so the ambiguity is
430
- * removed from the write side — where it is a validation error a caller
431
- * can act on — rather than from the query side, where it would need an
432
- * escape convention that silently misreads when a caller forgets it.
433
- *
434
- * Wider than what SQLite's JSON path grammar treats as syntax today (`.`,
435
- * `[`, `]`, `$`, `"`): `*` and `#` are reserved against a path grammar
436
- * that grows a wildcard or a last-element form. Narrowing a legal charset
437
- * is a one-way door, so the cost of reserving a character now is nothing
438
- * and the cost of reserving it later is every stored record.
439
- *
409
+ * Characters a field name may not contain: a filter key is a dot-separated
410
+ * path, so a field named `emails.value` would make one filter mean two
411
+ * things. `*` and `#` are reserved ahead of the path grammar, as narrowing
412
+ * a legal charset later costs every stored record.
440
413
  * See docs/spec/data-model.md § Content field names.
441
414
  */
442
415
  export const CONTENT_KEY_PATH_METACHARACTERS = ['.', '[', ']', '$', '"', '*', '#'];
@@ -510,9 +483,4 @@ export const validateSchemaFieldNames = (schema, prefix = '', errors = [], depth
510
483
  }
511
484
  return errors;
512
485
  };
513
- /**
514
- * Returns true if the content is valid against the schema.
515
- * Use validateContent() directly to get error details.
516
- */
517
- export const isValid = (content, schema) => validateContent(content, schema).length === 0;
518
486
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
@@ -34,63 +34,6 @@ export declare const NOSNIFF_HEADER_VALUE = "nosniff";
34
34
  export declare function isSafeAttachmentContentType(mimeType: string): boolean;
35
35
  /** Infers a candidate MIME type from a filename's extension. Returns undefined for no extension or an unrecognized one — the caller falls through to the next source. */
36
36
  export declare function inferContentTypeFromFilename(filename: string): string | undefined;
37
- /**
38
- * Which `_attachment@1` record establishes a fileId's mimeType — the
39
- * "first-recorded" rule of docs/spec/attachments.md, as a total order:
40
- * earliest `createdAt`, ties broken by the lower `id`.
41
- *
42
- * The tiebreak is what makes it a rule rather than a coincidence of scan
43
- * order. Rejecting a conflicting mimeType at write time is check-then-act
44
- * with no storage-level uniqueness behind it, so two racing first uploads
45
- * of the same bytes can both land on a concurrent server. Determinism
46
- * doesn't depend on that never happening — it depends on every reader
47
- * ordering the records the same way, which is why core's write-time
48
- * conflict check and a server's serving choice both come through here.
49
- *
50
- * Generic over the record shape so a server can pass its own row type.
51
- * Records for other fileIds must be filtered out by the caller.
52
- */
53
- export declare function firstRecordedAttachment<T extends {
54
- id: string;
55
- createdAt: Date;
56
- }>(records: readonly T[]): T | undefined;
57
- /**
58
- * The same total order as a comparator, for a caller handing back the whole
59
- * candidate set rather than the winner — sorted this way, the winner is
60
- * element zero. Package-internal: `core/wire` exports the selection, since
61
- * the ordering is only useful to something that already has every record.
62
- */
63
- export declare function compareRecordedAttachments<T extends {
64
- id: string;
65
- createdAt: Date;
66
- }>(a: T, b: T): number;
67
- /**
68
- * Which `_attachment` record describes a *reference* to a fileId, as
69
- * opposed to the fileId itself: the association's own
70
- * `attachmentRecordId`, else the requester's own upload, else the
71
- * first-recorded record. Where `filename` comes from on a download when
72
- * `?filename` is not given, and the name a consumer shows for an
73
- * attachment association. See docs/spec/attachments.md § Naming the upload
74
- * a reference came from.
75
- *
76
- * Every step falls back rather than failing: a pointer at a record that is
77
- * gone, or at nothing this caller collected, lands on the same answer a
78
- * reference with no pointer at all gets.
79
- *
80
- * Generic over the record shape, like firstRecordedAttachment(), so a
81
- * server can pass its own row type. Records for other fileIds must be
82
- * filtered out by the caller.
83
- */
84
- export declare function resolveReferencedAttachment<T extends {
85
- id: string;
86
- createdAt: Date;
87
- createdBy?: {
88
- subjectId: string;
89
- };
90
- }>(records: readonly T[], opts?: {
91
- attachmentRecordId?: string;
92
- requesterEntityId?: string;
93
- }): T | undefined;
94
37
  export type AttachmentDownloadContentType = {
95
38
  /** The Content-Type header value to serve. */
96
39
  contentType: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-download.d.ts","sourceRoot":"","sources":["../../src/wire/attachment-download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAcH,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,6BAA6B,CAAC;AAE9D,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAqB9C;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMrE;AAmCD,yKAAyK;AACzK,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGjF;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,6BAA6B,CAUhC"}
@@ -101,67 +101,6 @@ export function inferContentTypeFromFilename(filename) {
101
101
  const match = /\.([a-z0-9]+)$/i.exec(filename);
102
102
  return match ? EXTENSION_MIME_TYPES[match[1].toLowerCase()] : undefined;
103
103
  }
104
- /**
105
- * Which `_attachment@1` record establishes a fileId's mimeType — the
106
- * "first-recorded" rule of docs/spec/attachments.md, as a total order:
107
- * earliest `createdAt`, ties broken by the lower `id`.
108
- *
109
- * The tiebreak is what makes it a rule rather than a coincidence of scan
110
- * order. Rejecting a conflicting mimeType at write time is check-then-act
111
- * with no storage-level uniqueness behind it, so two racing first uploads
112
- * of the same bytes can both land on a concurrent server. Determinism
113
- * doesn't depend on that never happening — it depends on every reader
114
- * ordering the records the same way, which is why core's write-time
115
- * conflict check and a server's serving choice both come through here.
116
- *
117
- * Generic over the record shape so a server can pass its own row type.
118
- * Records for other fileIds must be filtered out by the caller.
119
- */
120
- export function firstRecordedAttachment(records) {
121
- return records.reduce((first, record) => (!first || compareRecordedAttachments(record, first) < 0 ? record : first), undefined);
122
- }
123
- /**
124
- * The same total order as a comparator, for a caller handing back the whole
125
- * candidate set rather than the winner — sorted this way, the winner is
126
- * element zero. Package-internal: `core/wire` exports the selection, since
127
- * the ordering is only useful to something that already has every record.
128
- */
129
- export function compareRecordedAttachments(a, b) {
130
- const delta = a.createdAt.getTime() - b.createdAt.getTime();
131
- if (delta !== 0)
132
- return delta;
133
- return a.id < b.id ? -1 : a.id > b.id ? 1 : 0;
134
- }
135
- /**
136
- * Which `_attachment` record describes a *reference* to a fileId, as
137
- * opposed to the fileId itself: the association's own
138
- * `attachmentRecordId`, else the requester's own upload, else the
139
- * first-recorded record. Where `filename` comes from on a download when
140
- * `?filename` is not given, and the name a consumer shows for an
141
- * attachment association. See docs/spec/attachments.md § Naming the upload
142
- * a reference came from.
143
- *
144
- * Every step falls back rather than failing: a pointer at a record that is
145
- * gone, or at nothing this caller collected, lands on the same answer a
146
- * reference with no pointer at all gets.
147
- *
148
- * Generic over the record shape, like firstRecordedAttachment(), so a
149
- * server can pass its own row type. Records for other fileIds must be
150
- * filtered out by the caller.
151
- */
152
- export function resolveReferencedAttachment(records, opts = {}) {
153
- if (opts.attachmentRecordId) {
154
- const named = records.find((record) => record.id === opts.attachmentRecordId);
155
- if (named)
156
- return named;
157
- }
158
- if (opts.requesterEntityId) {
159
- const own = records.filter((record) => record.createdBy?.subjectId === opts.requesterEntityId);
160
- if (own.length > 0)
161
- return firstRecordedAttachment(own);
162
- }
163
- return firstRecordedAttachment(records);
164
- }
165
104
  /**
166
105
  * Resolve the Content-Type served for `GET /attachments/:fileId`
167
106
  * (docs/spec/wire-format.md § Download): `?contentType` wins, else
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-download.js","sourceRoot":"","sources":["../../src/wire/attachment-download.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@
16
16
  * Core verifies signatures; it does not run a server. Nonce storage,
17
17
  * single-use enforcement and token issuance are the server's.
18
18
  */
19
- import { type DidKeypair } from './did.js';
19
+ import { type DidKeypair } from '../did/did.js';
20
20
  /**
21
21
  * Malformed input to a handshake primitive — a bad origin, DID, or nonce,
22
22
  * caught locally before anything is signed or verified. Outside the
@@ -49,13 +49,10 @@ export type AuthChallenge = {
49
49
  */
50
50
  export declare const authOriginFromUrl: (url: string) => string;
51
51
  /**
52
- * Build the exact bytes a client signs and a server verifies.
53
- *
54
- * The origin is in the payload because the nonce alone doesn't scope a
55
- * signature to a server: one that a client connects to can fetch a
56
- * challenge from the client's real stack, pass that nonce along, and
57
- * redeem the returned signature as a token. Signing the origin the client
58
- * believes it is talking to makes such a signature verify nowhere else.
52
+ * Build the exact bytes a client signs and a server verifies. The origin is
53
+ * signed because a nonce alone doesn't scope a signature: a server a client
54
+ * connects to could relay a challenge from the client's real stack and
55
+ * redeem the signature there.
59
56
  */
60
57
  export declare const buildAuthChallengePayload: (challenge: AuthChallenge) => Uint8Array;
61
58
  /** Sign a challenge with the private key behind its DID. */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/wire/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAA+C,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAM7F;;;;;;GAMG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,SAAK;CAIzB;AAMD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AASvD,MAAM,MAAM,aAAa,GAAG;IAC1B,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,KAAG,MAa/C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GAAI,WAAW,aAAa,KAAG,UAapE,CAAC;AAMF,4DAA4D;AAC5D,eAAO,MAAM,iBAAiB,GAC5B,YAAY,SAAS,EACrB,WAAW,aAAa,KACvB,OAAO,CAAC,UAAU,CAAkE,CAAC;AAExF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,WAAW,aAAa,EACxB,WAAW,UAAU,KACpB,OAAO,CAAC,OAAO,CASjB,CAAC;AAMF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACpD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAI,SAAS,UAAU,KAAG,aAG7D,CAAC;AAMH,eAAO,MAAM,eAAe,GAAI,OAAO,UAAU,KAAG,MAInD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,KAAG,UAYjD,CAAC"}
@@ -16,7 +16,7 @@
16
16
  * Core verifies signatures; it does not run a server. Nonce storage,
17
17
  * single-use enforcement and token issuance are the server's.
18
18
  */
19
- import { isValidDid, signWithDid, verifyDidSignature } from './did.js';
19
+ import { isValidDid, signWithDid, verifyDidSignature } from '../did/did.js';
20
20
  // -------------------------------------------------------
21
21
  // Errors
22
22
  // -------------------------------------------------------
@@ -70,13 +70,10 @@ export const authOriginFromUrl = (url) => {
70
70
  return parsed.origin;
71
71
  };
72
72
  /**
73
- * Build the exact bytes a client signs and a server verifies.
74
- *
75
- * The origin is in the payload because the nonce alone doesn't scope a
76
- * signature to a server: one that a client connects to can fetch a
77
- * challenge from the client's real stack, pass that nonce along, and
78
- * redeem the returned signature as a token. Signing the origin the client
79
- * believes it is talking to makes such a signature verify nowhere else.
73
+ * Build the exact bytes a client signs and a server verifies. The origin is
74
+ * signed because a nonce alone doesn't scope a signature: a server a client
75
+ * connects to could relay a challenge from the client's real stack and
76
+ * redeem the signature there.
80
77
  */
81
78
  export const buildAuthChallengePayload = (challenge) => {
82
79
  const origin = authOriginFromUrl(challenge.origin);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/wire/auth.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@
2
2
  * Stack — Wire Request Bodies
3
3
  * -------------------------------------------------------
4
4
  * The JSON bodies of the endpoints core specifies but runs no server for:
5
- * the auth handshake, `PATCH /entity`, `POST /types` and
6
- * `POST /records/:id/migrate`. Each parser names every key its endpoint
5
+ * the auth handshake, `PATCH /entity`, `POST /types`,
6
+ * `POST /records/:id/migrate` and `POST /installs`. Each parser names every key its endpoint
7
7
  * defines, so a server refuses the rest without keeping its own copy of
8
8
  * the list — a copy that drifts the first time core adds a field.
9
9
  *
@@ -16,8 +16,9 @@
16
16
  * DID's form — so judging them here would let two answers drift.
17
17
  * See docs/spec/wire-format.md § Unrecognized input.
18
18
  */
19
- import type { DefineTypeOptions } from './stack.js';
20
- import type { AssociationEdit, TypeId } from './types.js';
19
+ import type { DefineTypeOptions } from '../stack/client.js';
20
+ import type { AppManifest } from '../install.js';
21
+ import type { AssociationEdit, TypeId } from '../types/index.js';
21
22
  export declare function requireBody(body: unknown, label: string): Record<string, unknown>;
22
23
  /**
23
24
  * The refusal a present field earns when its value is the wrong shape.
@@ -76,4 +77,11 @@ export type WireMigrationRequest = {
76
77
  * `toTypeId`'s schema. See docs/spec/wire-format.md § Migration commit.
77
78
  */
78
79
  export declare function parseMigrationBody(body: unknown): WireMigrationRequest;
79
- //# sourceMappingURL=wire-body.d.ts.map
80
+ /**
81
+ * Parse a `POST /installs` body, `{ manifest }`, into the manifest
82
+ * `planInstall()` takes. Each type is read as a `POST /types` body is.
83
+ * Which families a manifest may define, and which requests the grant rules
84
+ * allow, are `planInstall()`'s to judge. See docs/spec/wire-format.md § Installs.
85
+ */
86
+ export declare function parseInstallBody(body: unknown): AppManifest;
87
+ //# sourceMappingURL=body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../src/wire/body.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EACV,eAAe,EAGf,MAAM,EAEP,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIjF;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAE/D;AAwCD,MAAM,MAAM,wBAAwB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AACvD,MAAM,MAAM,oBAAoB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,wBAAwB,CAI9E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,oBAAoB,CAQtE;AAMD,iFAAiF;AACjF,MAAM,MAAM,eAAe,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC,CAAA;CAAE,CAAC;AAE/E,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAInE;AAMD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,EAAE,CA2B1E;AAsBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,CAc9D;AAMD,uEAAuE;AACvE,MAAM,MAAM,oBAAoB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAE1F;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,oBAAoB,CAOtE;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAiC3D"}