@fougere/schema 0.5.0-alpha.1 → 0.7.0-alpha.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 (403) hide show
  1. package/README.md +5 -4
  2. package/dist/{schema/Schema.d.ts → Schema.d.ts} +18 -28
  3. package/dist/Schema.d.ts.map +1 -0
  4. package/dist/Schema.js +136 -0
  5. package/dist/Schema.js.map +1 -0
  6. package/dist/SchemaDefinition.d.ts +73 -0
  7. package/dist/SchemaDefinition.d.ts.map +1 -0
  8. package/dist/SchemaDefinition.js +184 -0
  9. package/dist/SchemaDefinition.js.map +1 -0
  10. package/dist/SchemaDerivation.d.ts +16 -0
  11. package/dist/SchemaDerivation.d.ts.map +1 -0
  12. package/dist/SchemaDerivation.js +31 -0
  13. package/dist/SchemaDerivation.js.map +1 -0
  14. package/dist/{schema/SchemaView.d.ts → SchemaView.d.ts} +9 -9
  15. package/dist/SchemaView.d.ts.map +1 -0
  16. package/dist/{schema/SchemaView.js.map → SchemaView.js.map} +1 -1
  17. package/dist/axis/Axis.d.ts +2 -2
  18. package/dist/axis/Axis.d.ts.map +1 -1
  19. package/dist/axis/boundary/Boundaries.d.ts +13 -12
  20. package/dist/axis/boundary/Boundaries.d.ts.map +1 -1
  21. package/dist/axis/boundary/Boundaries.js +18 -24
  22. package/dist/axis/boundary/Boundaries.js.map +1 -1
  23. package/dist/axis/boundary/Boundary.d.ts +3 -1
  24. package/dist/axis/boundary/Boundary.d.ts.map +1 -1
  25. package/dist/axis/boundary/Boundary.js +16 -7
  26. package/dist/axis/boundary/Boundary.js.map +1 -1
  27. package/dist/axis/boundary/BoundaryAxis.js +4 -4
  28. package/dist/axis/boundary/BoundaryAxis.js.map +1 -1
  29. package/dist/axis/lifecycle/Clock.d.ts +1 -1
  30. package/dist/axis/lifecycle/Clock.d.ts.map +1 -1
  31. package/dist/axis/lifecycle/Clock.js +1 -1
  32. package/dist/axis/lifecycle/Clock.js.map +1 -1
  33. package/dist/axis/lifecycle/Generators.d.ts +6 -14
  34. package/dist/axis/lifecycle/Generators.d.ts.map +1 -1
  35. package/dist/axis/lifecycle/Generators.js +10 -28
  36. package/dist/axis/lifecycle/Generators.js.map +1 -1
  37. package/dist/axis/lifecycle/LifecycleAxis.js +11 -6
  38. package/dist/axis/lifecycle/LifecycleAxis.js.map +1 -1
  39. package/dist/axis/lifecycle/apply.d.ts +14 -5
  40. package/dist/axis/lifecycle/apply.d.ts.map +1 -1
  41. package/dist/axis/lifecycle/apply.js +26 -10
  42. package/dist/axis/lifecycle/apply.js.map +1 -1
  43. package/dist/axis/role/Relation.d.ts +3 -2
  44. package/dist/axis/role/Relation.d.ts.map +1 -1
  45. package/dist/axis/role/Relation.js +6 -5
  46. package/dist/axis/role/Relation.js.map +1 -1
  47. package/dist/axis/role/Role.d.ts +6 -6
  48. package/dist/axis/role/Role.d.ts.map +1 -1
  49. package/dist/axis/role/Role.js +13 -17
  50. package/dist/axis/role/Role.js.map +1 -1
  51. package/dist/axis/role/RoleAxis.d.ts +1 -1
  52. package/dist/axis/role/RoleAxis.d.ts.map +1 -1
  53. package/dist/axis/role/RoleAxis.js +28 -37
  54. package/dist/axis/role/RoleAxis.js.map +1 -1
  55. package/dist/axis/shape/Formats.d.ts +8 -5
  56. package/dist/axis/shape/Formats.d.ts.map +1 -1
  57. package/dist/axis/shape/Formats.js +8 -9
  58. package/dist/axis/shape/Formats.js.map +1 -1
  59. package/dist/axis/shape/Shape.d.ts +5 -3
  60. package/dist/axis/shape/Shape.d.ts.map +1 -1
  61. package/dist/axis/shape/Shape.js +13 -13
  62. package/dist/axis/shape/Shape.js.map +1 -1
  63. package/dist/entity/EntityAdapterSet.d.ts +22 -0
  64. package/dist/entity/EntityAdapterSet.d.ts.map +1 -0
  65. package/dist/entity/EntityAdapterSet.js +63 -0
  66. package/dist/entity/EntityAdapterSet.js.map +1 -0
  67. package/dist/entity/EntityAdapters.d.ts +5 -0
  68. package/dist/entity/EntityAdapters.d.ts.map +1 -0
  69. package/dist/entity/EntityAdapters.js +2 -0
  70. package/dist/entity/EntityAdapters.js.map +1 -0
  71. package/dist/{EntityDeclarations.d.ts → entity/EntityDeclarations.d.ts} +2 -7
  72. package/dist/entity/EntityDeclarations.d.ts.map +1 -0
  73. package/dist/entity/EntityDeclarations.js.map +1 -0
  74. package/dist/entity.d.ts +8 -3
  75. package/dist/entity.d.ts.map +1 -1
  76. package/dist/entity.js +6 -1
  77. package/dist/entity.js.map +1 -1
  78. package/dist/{fields → field}/Field.d.ts +8 -9
  79. package/dist/field/Field.d.ts.map +1 -0
  80. package/dist/field/Field.js +35 -0
  81. package/dist/field/Field.js.map +1 -0
  82. package/dist/field/FieldSet.d.ts +22 -0
  83. package/dist/field/FieldSet.d.ts.map +1 -0
  84. package/dist/field/FieldSet.js +58 -0
  85. package/dist/field/FieldSet.js.map +1 -0
  86. package/dist/index.d.ts +24 -28
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +17 -21
  89. package/dist/index.js.map +1 -1
  90. package/dist/lib/Registry.d.ts +12 -0
  91. package/dist/lib/Registry.d.ts.map +1 -0
  92. package/dist/lib/Registry.js +29 -0
  93. package/dist/lib/Registry.js.map +1 -0
  94. package/dist/{utils.d.ts → lib/utils.d.ts} +1 -0
  95. package/dist/lib/utils.d.ts.map +1 -0
  96. package/dist/{utils.js → lib/utils.js} +1 -0
  97. package/dist/lib/utils.js.map +1 -0
  98. package/dist/projection/Cases.d.ts +39 -0
  99. package/dist/projection/Cases.d.ts.map +1 -0
  100. package/dist/projection/Cases.js +146 -0
  101. package/dist/projection/Cases.js.map +1 -0
  102. package/dist/projection/Visibility.d.ts +2 -1
  103. package/dist/projection/Visibility.d.ts.map +1 -1
  104. package/dist/projection/Visibility.js +1 -0
  105. package/dist/projection/Visibility.js.map +1 -1
  106. package/dist/{card → projection/card}/Bundle.d.ts +1 -1
  107. package/dist/projection/card/Bundle.d.ts.map +1 -0
  108. package/dist/{card → projection/card}/Bundle.js +7 -7
  109. package/dist/projection/card/Bundle.js.map +1 -0
  110. package/dist/projection/card/Card.d.ts +21 -0
  111. package/dist/projection/card/Card.d.ts.map +1 -0
  112. package/dist/{card → projection/card}/Card.js +119 -58
  113. package/dist/projection/card/Card.js.map +1 -0
  114. package/dist/{card → projection/card}/Descriptor.d.ts +7 -7
  115. package/dist/projection/card/Descriptor.d.ts.map +1 -0
  116. package/dist/projection/card/Descriptor.js.map +1 -0
  117. package/dist/projection/card/admission.d.ts +20 -0
  118. package/dist/projection/card/admission.d.ts.map +1 -0
  119. package/dist/projection/card/admission.js +27 -0
  120. package/dist/projection/card/admission.js.map +1 -0
  121. package/dist/{card → projection/card}/diff.d.ts +3 -3
  122. package/dist/projection/card/diff.d.ts.map +1 -0
  123. package/dist/{card → projection/card}/diff.js.map +1 -1
  124. package/dist/{judge/result.d.ts → validation.d.ts} +1 -1
  125. package/dist/validation.d.ts.map +1 -0
  126. package/dist/validation.js +2 -0
  127. package/dist/validation.js.map +1 -0
  128. package/dist/validator/AdapterFieldValidator.d.ts +14 -0
  129. package/dist/validator/AdapterFieldValidator.d.ts.map +1 -0
  130. package/dist/validator/AdapterFieldValidator.js +36 -0
  131. package/dist/validator/AdapterFieldValidator.js.map +1 -0
  132. package/dist/validator/FieldDeclarationValidator.d.ts +9 -0
  133. package/dist/validator/FieldDeclarationValidator.d.ts.map +1 -0
  134. package/dist/{judge/FieldJudge.js → validator/FieldDeclarationValidator.js} +13 -13
  135. package/dist/validator/FieldDeclarationValidator.js.map +1 -0
  136. package/dist/validator/FieldValueValidator.d.ts +13 -0
  137. package/dist/validator/FieldValueValidator.d.ts.map +1 -0
  138. package/dist/{judge/ValueJudge.js → validator/FieldValueValidator.js} +14 -11
  139. package/dist/validator/FieldValueValidator.js.map +1 -0
  140. package/dist/{judge/RowRefusal.d.ts → validator/InputRefusal.d.ts} +3 -4
  141. package/dist/validator/InputRefusal.d.ts.map +1 -0
  142. package/dist/{judge/RowRefusal.js → validator/InputRefusal.js} +3 -3
  143. package/dist/validator/InputRefusal.js.map +1 -0
  144. package/dist/validator/InputValidator.d.ts +15 -0
  145. package/dist/validator/InputValidator.d.ts.map +1 -0
  146. package/dist/{judge/RowJudge.js → validator/InputValidator.js} +21 -17
  147. package/dist/validator/InputValidator.js.map +1 -0
  148. package/dist/vocabulary/bool.d.ts +6 -1
  149. package/dist/vocabulary/bool.d.ts.map +1 -1
  150. package/dist/vocabulary/bool.js +6 -1
  151. package/dist/vocabulary/bool.js.map +1 -1
  152. package/dist/vocabulary/created.d.ts +6 -1
  153. package/dist/vocabulary/created.d.ts.map +1 -1
  154. package/dist/vocabulary/created.js +6 -1
  155. package/dist/vocabulary/created.js.map +1 -1
  156. package/dist/vocabulary/date.d.ts +6 -1
  157. package/dist/vocabulary/date.d.ts.map +1 -1
  158. package/dist/vocabulary/date.js +6 -1
  159. package/dist/vocabulary/date.js.map +1 -1
  160. package/dist/vocabulary/email.d.ts +6 -1
  161. package/dist/vocabulary/email.d.ts.map +1 -1
  162. package/dist/vocabulary/email.js +5 -0
  163. package/dist/vocabulary/email.js.map +1 -1
  164. package/dist/vocabulary/immutable.d.ts +6 -1
  165. package/dist/vocabulary/immutable.d.ts.map +1 -1
  166. package/dist/vocabulary/immutable.js +5 -0
  167. package/dist/vocabulary/immutable.js.map +1 -1
  168. package/dist/vocabulary/indexed.d.ts +6 -1
  169. package/dist/vocabulary/indexed.d.ts.map +1 -1
  170. package/dist/vocabulary/indexed.js +8 -1
  171. package/dist/vocabulary/indexed.js.map +1 -1
  172. package/dist/vocabulary/json.d.ts +2 -2
  173. package/dist/vocabulary/json.d.ts.map +1 -1
  174. package/dist/vocabulary/json.js +9 -4
  175. package/dist/vocabulary/json.js.map +1 -1
  176. package/dist/vocabulary/list.d.ts +6 -1
  177. package/dist/vocabulary/list.d.ts.map +1 -1
  178. package/dist/vocabulary/list.js +6 -1
  179. package/dist/vocabulary/list.js.map +1 -1
  180. package/dist/vocabulary/many.d.ts +6 -1
  181. package/dist/vocabulary/many.d.ts.map +1 -1
  182. package/dist/vocabulary/many.js +6 -1
  183. package/dist/vocabulary/many.js.map +1 -1
  184. package/dist/vocabulary/nullable.d.ts +6 -1
  185. package/dist/vocabulary/nullable.d.ts.map +1 -1
  186. package/dist/vocabulary/nullable.js +7 -2
  187. package/dist/vocabulary/nullable.js.map +1 -1
  188. package/dist/vocabulary/number.d.ts +6 -1
  189. package/dist/vocabulary/number.d.ts.map +1 -1
  190. package/dist/vocabulary/number.js +11 -2
  191. package/dist/vocabulary/number.js.map +1 -1
  192. package/dist/vocabulary/oneOf.d.ts +1 -1
  193. package/dist/vocabulary/oneOf.d.ts.map +1 -1
  194. package/dist/vocabulary/oneOf.js +6 -1
  195. package/dist/vocabulary/oneOf.js.map +1 -1
  196. package/dist/vocabulary/optional.d.ts +6 -1
  197. package/dist/vocabulary/optional.d.ts.map +1 -1
  198. package/dist/vocabulary/optional.js +10 -3
  199. package/dist/vocabulary/optional.js.map +1 -1
  200. package/dist/vocabulary/primary.d.ts +1 -1
  201. package/dist/vocabulary/primary.d.ts.map +1 -1
  202. package/dist/vocabulary/primary.js +10 -5
  203. package/dist/vocabulary/primary.js.map +1 -1
  204. package/dist/vocabulary/readOnly.d.ts +6 -1
  205. package/dist/vocabulary/readOnly.d.ts.map +1 -1
  206. package/dist/vocabulary/readOnly.js +5 -0
  207. package/dist/vocabulary/readOnly.js.map +1 -1
  208. package/dist/vocabulary/ref.d.ts +6 -1
  209. package/dist/vocabulary/ref.d.ts.map +1 -1
  210. package/dist/vocabulary/ref.js +6 -1
  211. package/dist/vocabulary/ref.js.map +1 -1
  212. package/dist/vocabulary/text.d.ts +6 -1
  213. package/dist/vocabulary/text.d.ts.map +1 -1
  214. package/dist/vocabulary/text.js +13 -2
  215. package/dist/vocabulary/text.js.map +1 -1
  216. package/dist/vocabulary/unique.d.ts +6 -1
  217. package/dist/vocabulary/unique.d.ts.map +1 -1
  218. package/dist/vocabulary/unique.js +8 -4
  219. package/dist/vocabulary/unique.js.map +1 -1
  220. package/dist/vocabulary/updated.d.ts +6 -1
  221. package/dist/vocabulary/updated.d.ts.map +1 -1
  222. package/dist/vocabulary/updated.js +5 -0
  223. package/dist/vocabulary/updated.js.map +1 -1
  224. package/dist/vocabulary/url.d.ts +6 -1
  225. package/dist/vocabulary/url.d.ts.map +1 -1
  226. package/dist/vocabulary/url.js +5 -0
  227. package/dist/vocabulary/url.js.map +1 -1
  228. package/dist/vocabulary/vocabulary.d.ts +6 -1
  229. package/dist/vocabulary/vocabulary.d.ts.map +1 -1
  230. package/dist/vocabulary/vocabulary.js +21 -11
  231. package/dist/vocabulary/vocabulary.js.map +1 -1
  232. package/dist/vocabulary/writeOnly.d.ts +6 -1
  233. package/dist/vocabulary/writeOnly.d.ts.map +1 -1
  234. package/dist/vocabulary/writeOnly.js +5 -0
  235. package/dist/vocabulary/writeOnly.js.map +1 -1
  236. package/package.json +1 -1
  237. package/src/Schema.ts +208 -0
  238. package/src/SchemaDefinition.ts +257 -0
  239. package/src/SchemaDerivation.ts +44 -0
  240. package/src/{schema/SchemaView.ts → SchemaView.ts} +9 -9
  241. package/src/axis/Axis.ts +2 -2
  242. package/src/axis/boundary/Boundaries.ts +25 -32
  243. package/src/axis/boundary/Boundary.ts +23 -10
  244. package/src/axis/boundary/BoundaryAxis.ts +4 -4
  245. package/src/axis/lifecycle/Clock.ts +1 -1
  246. package/src/axis/lifecycle/Generators.ts +12 -29
  247. package/src/axis/lifecycle/LifecycleAxis.ts +12 -7
  248. package/src/axis/lifecycle/apply.ts +30 -15
  249. package/src/axis/role/Relation.ts +6 -5
  250. package/src/axis/role/Role.ts +16 -20
  251. package/src/axis/role/RoleAxis.ts +28 -41
  252. package/src/axis/shape/Formats.ts +9 -11
  253. package/src/axis/shape/Shape.ts +18 -18
  254. package/src/entity/EntityAdapterSet.ts +81 -0
  255. package/src/entity/EntityAdapters.ts +8 -0
  256. package/src/entity/EntityDeclarations.ts +16 -0
  257. package/src/entity.ts +8 -3
  258. package/src/field/Field.ts +61 -0
  259. package/src/field/FieldSet.ts +75 -0
  260. package/src/index.ts +50 -28
  261. package/src/lib/Registry.ts +37 -0
  262. package/src/{utils.ts → lib/utils.ts} +3 -0
  263. package/src/projection/Cases.ts +176 -0
  264. package/src/projection/Visibility.ts +6 -2
  265. package/src/{card → projection/card}/Bundle.ts +9 -9
  266. package/src/projection/card/Card.ts +342 -0
  267. package/src/{card → projection/card}/Descriptor.ts +7 -7
  268. package/src/projection/card/admission.ts +40 -0
  269. package/src/{card → projection/card}/diff.ts +3 -3
  270. package/src/validator/AdapterFieldValidator.ts +40 -0
  271. package/src/{judge/FieldJudge.ts → validator/FieldDeclarationValidator.ts} +15 -15
  272. package/src/{judge/ValueJudge.ts → validator/FieldValueValidator.ts} +18 -13
  273. package/src/{judge/RowRefusal.ts → validator/InputRefusal.ts} +2 -4
  274. package/src/{judge/RowJudge.ts → validator/InputValidator.ts} +27 -20
  275. package/src/vocabulary/bool.ts +8 -2
  276. package/src/vocabulary/created.ts +7 -2
  277. package/src/vocabulary/date.ts +6 -1
  278. package/src/vocabulary/email.ts +6 -1
  279. package/src/vocabulary/immutable.ts +12 -4
  280. package/src/vocabulary/indexed.ts +9 -2
  281. package/src/vocabulary/json.ts +13 -6
  282. package/src/vocabulary/list.ts +10 -2
  283. package/src/vocabulary/many.ts +9 -2
  284. package/src/vocabulary/nullable.ts +13 -5
  285. package/src/vocabulary/number.ts +13 -3
  286. package/src/vocabulary/oneOf.ts +11 -3
  287. package/src/vocabulary/optional.ts +16 -6
  288. package/src/vocabulary/primary.ts +10 -5
  289. package/src/vocabulary/readOnly.ts +12 -4
  290. package/src/vocabulary/ref.ts +10 -2
  291. package/src/vocabulary/text.ts +15 -3
  292. package/src/vocabulary/unique.ts +10 -9
  293. package/src/vocabulary/updated.ts +6 -1
  294. package/src/vocabulary/url.ts +6 -1
  295. package/src/vocabulary/vocabulary.ts +21 -12
  296. package/src/vocabulary/writeOnly.ts +12 -4
  297. package/dist/EntityAdapters.d.ts +0 -28
  298. package/dist/EntityAdapters.d.ts.map +0 -1
  299. package/dist/EntityAdapters.js +0 -75
  300. package/dist/EntityAdapters.js.map +0 -1
  301. package/dist/EntityDeclarations.d.ts.map +0 -1
  302. package/dist/EntityDeclarations.js.map +0 -1
  303. package/dist/card/Bundle.d.ts.map +0 -1
  304. package/dist/card/Bundle.js.map +0 -1
  305. package/dist/card/Card.d.ts +0 -27
  306. package/dist/card/Card.d.ts.map +0 -1
  307. package/dist/card/Card.js.map +0 -1
  308. package/dist/card/Descriptor.d.ts.map +0 -1
  309. package/dist/card/Descriptor.js.map +0 -1
  310. package/dist/card/EntityTypeSource.d.ts +0 -12
  311. package/dist/card/EntityTypeSource.d.ts.map +0 -1
  312. package/dist/card/EntityTypeSource.js +0 -78
  313. package/dist/card/EntityTypeSource.js.map +0 -1
  314. package/dist/card/FacadeTypeSource.d.ts +0 -19
  315. package/dist/card/FacadeTypeSource.d.ts.map +0 -1
  316. package/dist/card/FacadeTypeSource.js +0 -40
  317. package/dist/card/FacadeTypeSource.js.map +0 -1
  318. package/dist/card/admission.d.ts +0 -9
  319. package/dist/card/admission.d.ts.map +0 -1
  320. package/dist/card/admission.js +0 -16
  321. package/dist/card/admission.js.map +0 -1
  322. package/dist/card/diff.d.ts.map +0 -1
  323. package/dist/constraint/FieldGroup.d.ts +0 -21
  324. package/dist/constraint/FieldGroup.d.ts.map +0 -1
  325. package/dist/constraint/FieldGroup.js +0 -65
  326. package/dist/constraint/FieldGroup.js.map +0 -1
  327. package/dist/constraint/Unique.d.ts +0 -4
  328. package/dist/constraint/Unique.d.ts.map +0 -1
  329. package/dist/constraint/Unique.js +0 -4
  330. package/dist/constraint/Unique.js.map +0 -1
  331. package/dist/fields/Field.d.ts.map +0 -1
  332. package/dist/fields/Field.js +0 -52
  333. package/dist/fields/Field.js.map +0 -1
  334. package/dist/fields/FieldSet.d.ts +0 -28
  335. package/dist/fields/FieldSet.d.ts.map +0 -1
  336. package/dist/fields/FieldSet.js +0 -55
  337. package/dist/fields/FieldSet.js.map +0 -1
  338. package/dist/judge/Cases.d.ts +0 -50
  339. package/dist/judge/Cases.d.ts.map +0 -1
  340. package/dist/judge/Cases.js +0 -108
  341. package/dist/judge/Cases.js.map +0 -1
  342. package/dist/judge/FieldJudge.d.ts +0 -9
  343. package/dist/judge/FieldJudge.d.ts.map +0 -1
  344. package/dist/judge/FieldJudge.js.map +0 -1
  345. package/dist/judge/RowJudge.d.ts +0 -12
  346. package/dist/judge/RowJudge.d.ts.map +0 -1
  347. package/dist/judge/RowJudge.js.map +0 -1
  348. package/dist/judge/RowRefusal.d.ts.map +0 -1
  349. package/dist/judge/RowRefusal.js.map +0 -1
  350. package/dist/judge/ValueForm.d.ts +0 -3
  351. package/dist/judge/ValueForm.d.ts.map +0 -1
  352. package/dist/judge/ValueForm.js +0 -3
  353. package/dist/judge/ValueForm.js.map +0 -1
  354. package/dist/judge/ValueJudge.d.ts +0 -12
  355. package/dist/judge/ValueJudge.d.ts.map +0 -1
  356. package/dist/judge/ValueJudge.js.map +0 -1
  357. package/dist/judge/options.d.ts +0 -4
  358. package/dist/judge/options.d.ts.map +0 -1
  359. package/dist/judge/options.js +0 -2
  360. package/dist/judge/options.js.map +0 -1
  361. package/dist/judge/result.d.ts.map +0 -1
  362. package/dist/judge/result.js +0 -2
  363. package/dist/judge/result.js.map +0 -1
  364. package/dist/projection/SchemaOrCard.d.ts +0 -7
  365. package/dist/projection/SchemaOrCard.d.ts.map +0 -1
  366. package/dist/projection/SchemaOrCard.js +0 -11
  367. package/dist/projection/SchemaOrCard.js.map +0 -1
  368. package/dist/schema/Schema.d.ts.map +0 -1
  369. package/dist/schema/Schema.js +0 -150
  370. package/dist/schema/Schema.js.map +0 -1
  371. package/dist/schema/SchemaDefinition.d.ts +0 -60
  372. package/dist/schema/SchemaDefinition.d.ts.map +0 -1
  373. package/dist/schema/SchemaDefinition.js +0 -85
  374. package/dist/schema/SchemaDefinition.js.map +0 -1
  375. package/dist/schema/SchemaDerivation.d.ts +0 -34
  376. package/dist/schema/SchemaDerivation.d.ts.map +0 -1
  377. package/dist/schema/SchemaDerivation.js +0 -46
  378. package/dist/schema/SchemaDerivation.js.map +0 -1
  379. package/dist/schema/SchemaView.d.ts.map +0 -1
  380. package/dist/utils.d.ts.map +0 -1
  381. package/dist/utils.js.map +0 -1
  382. package/src/EntityAdapters.ts +0 -100
  383. package/src/EntityDeclarations.ts +0 -19
  384. package/src/card/Card.ts +0 -256
  385. package/src/card/EntityTypeSource.ts +0 -90
  386. package/src/card/FacadeTypeSource.ts +0 -55
  387. package/src/card/admission.ts +0 -25
  388. package/src/constraint/FieldGroup.ts +0 -91
  389. package/src/constraint/Unique.ts +0 -3
  390. package/src/fields/Field.ts +0 -80
  391. package/src/fields/FieldSet.ts +0 -62
  392. package/src/judge/Cases.ts +0 -139
  393. package/src/judge/ValueForm.ts +0 -7
  394. package/src/judge/options.ts +0 -3
  395. package/src/projection/SchemaOrCard.ts +0 -18
  396. package/src/schema/Schema.ts +0 -197
  397. package/src/schema/SchemaDefinition.ts +0 -120
  398. package/src/schema/SchemaDerivation.ts +0 -57
  399. /package/dist/{schema/SchemaView.js → SchemaView.js} +0 -0
  400. /package/dist/{EntityDeclarations.js → entity/EntityDeclarations.js} +0 -0
  401. /package/dist/{card → projection/card}/Descriptor.js +0 -0
  402. /package/dist/{card → projection/card}/diff.js +0 -0
  403. /package/src/{judge/result.ts → validation.ts} +0 -0
@@ -1,150 +0,0 @@
1
- import { Boundary } from '../axis/boundary/Boundary.js';
2
- import { EntityAdapterSet } from '../EntityAdapters.js';
3
- import { FieldGroup } from '../constraint/FieldGroup.js';
4
- import { Unique } from '../constraint/Unique.js';
5
- import { RowJudge } from '../judge/RowJudge.js';
6
- import { SchemaDefinition } from './SchemaDefinition.js';
7
- export const ANONYMOUS_SCHEMA_NAME = "Schema";
8
- export class Schema {
9
- /** The one place a schema holds what it is. The readings below are its projections. */
10
- static definition = SchemaDefinition.stated({ fields: {} });
11
- static get fields() { return this.definition.fields; }
12
- static get adapters() { return this.definition.adapters; }
13
- static get opts() { return this.definition.opts; }
14
- static get derivation() { return this.definition.derivation; }
15
- static get previous() { return this.definition.previous; }
16
- static get anchored() { return this.definition.anchored; }
17
- constructor(data) {
18
- if (!data)
19
- return;
20
- for (const [key, value] of Object.entries(data)) {
21
- Object.defineProperty(this, key, { value, writable: true, enumerable: true, configurable: true });
22
- }
23
- }
24
- static getFields() { return this.fields; }
25
- static getAdapters() { return this.adapters; }
26
- static getUnique() {
27
- const groups = FieldGroup.groupsOf(this.fields, Unique);
28
- return groups.length ? groups.map((group) => [...group.members]) : undefined;
29
- }
30
- static getOpts() { return this.opts; }
31
- static validate(input) {
32
- return RowJudge.of(this.fields, this.opts).check(input);
33
- }
34
- static from(data) {
35
- const out = {};
36
- for (const [key, field] of Object.entries(this.fields)) {
37
- if (!(key in data))
38
- continue;
39
- const value = data[key];
40
- if (value === null || value === undefined) {
41
- out[key] = value;
42
- continue;
43
- }
44
- const decoded = Boundary.of(field).decode(value);
45
- out[key] = "error" in decoded ? value : decoded.value;
46
- }
47
- return out;
48
- }
49
- static get ["~standard"]() {
50
- const { fields, opts } = this;
51
- return {
52
- version: 1,
53
- vendor: "fougere",
54
- validate(value) {
55
- const result = RowJudge.of(fields, opts).check(value);
56
- if (result.success)
57
- return { value: result.data };
58
- return {
59
- issues: result.errors.map((e) => ({
60
- message: e.message,
61
- path: e.path && e.path !== "." ? [{ key: e.path }] : undefined,
62
- })),
63
- };
64
- },
65
- };
66
- }
67
- static pick(...keys) {
68
- assertKnownKeys("pick", keys, this.fields);
69
- const picked = {};
70
- for (const key of keys)
71
- if (this.fields[key])
72
- picked[key] = this.fields[key];
73
- return this.derive(picked, (k) => (keys.includes(k) ? k : undefined));
74
- }
75
- static omit(...keys) {
76
- assertKnownKeys("omit", keys, this.fields);
77
- const kept = {};
78
- for (const [key, field] of Object.entries(this.fields))
79
- if (!keys.includes(key))
80
- kept[key] = field;
81
- return this.derive(kept, (k) => (keys.includes(k) ? undefined : k));
82
- }
83
- static rename(mapping) {
84
- assertKnownKeys("rename", Object.keys(mapping), this.fields);
85
- const renamed = {};
86
- for (const [key, field] of Object.entries(this.fields))
87
- renamed[mapping[key] ?? key] = field;
88
- return this.derive(renamed, (k) => mapping[k] ?? k);
89
- }
90
- /**
91
- * Everything a schema states about ITSELF, available wherever a schema is. `entity(fields, …)`
92
- * is this same gesture at the declaration site; the fields do not move, so neither does the type.
93
- */
94
- static declares(declarations) {
95
- const addressed = EntityAdapterSet.of(declarations.adapters)?.fieldNames ?? [];
96
- assertKnownKeys("declares", [...addressed, ...Object.keys(declarations.previous ?? {})], this.fields);
97
- return Schema.subclass(this.definition.declaring(declarations));
98
- }
99
- /**
100
- * This schema holds rows of its own — every entity is one, and a derivation says so.
101
- *
102
- * An anchor is where a walk STOPS: `derivation.anchor` climbs to the nearest one, and what
103
- * is cut from an anchor roots on it. Two anchors are two entities that happen to share a
104
- * shape, never a hierarchy — nothing here subtypes, so a relation between them is `ref()`.
105
- */
106
- static anchor() {
107
- return Schema.subclass(this.definition.anchoring());
108
- }
109
- static partial() {
110
- return Schema.subclass(this.definition.patched(this));
111
- }
112
- static extend(extra) {
113
- return Schema.subclass(this.definition.extended(extra, this));
114
- }
115
- static named(name) {
116
- if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name)) {
117
- throw new Error(`named(): \`${name}\` is not a valid class name.`);
118
- }
119
- if (this.name !== ANONYMOUS_SCHEMA_NAME) {
120
- throw new Error(`named(): \`${this.name}\` is already named by its class declaration.`);
121
- }
122
- Object.defineProperty(this, "name", { value: name, configurable: true });
123
- return this;
124
- }
125
- static compose(...sources) {
126
- return Schema.subclass(SchemaDefinition.merged(sources));
127
- }
128
- static of(stated) {
129
- return Schema.subclass(SchemaDefinition.stated(stated));
130
- }
131
- /** The class a definition becomes. The one place a Schema subclass is born. */
132
- static subclass(definition) {
133
- class Derived extends Schema {
134
- }
135
- Derived.definition = definition;
136
- Object.defineProperty(Derived, "name", { value: ANONYMOUS_SCHEMA_NAME, configurable: true });
137
- return Derived;
138
- }
139
- static derive(fields, survives) {
140
- return Schema.subclass(this.definition.cut(fields, survives, this));
141
- }
142
- }
143
- function assertKnownKeys(operation, keys, fields) {
144
- const strangers = keys.filter((key) => !(key in fields));
145
- if (strangers.length === 0)
146
- return;
147
- throw new Error(`${operation}(): unknown field ${strangers.map((s) => `\`${s}\``).join(", ")}. ` +
148
- `This schema carries ${Object.keys(fields).join(", ")}.`);
149
- }
150
- //# sourceMappingURL=Schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/schema/Schema.ts"],"names":[],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- import { type Fields } from '../fields/Field.js';
2
- import { type EntityDeclarations, type PreviousNames } from '../EntityDeclarations.js';
3
- import { type EntityAdapters } from '../EntityAdapters.js';
4
- import { SchemaDerivation } from './SchemaDerivation.js';
5
- import { type ValidateOptions } from '../judge/options.js';
6
- import type { SchemaView } from './SchemaView.js';
7
- /**
8
- * Everything a schema IS, apart from being a class whose instances are rows.
9
- *
10
- * The members used to be that many statics assigned side by side, and every derivation
11
- * re-threaded them by hand — which is how one of them came to be dropped from a list
12
- * without anyone noticing. A transformation here returns a COMPLETE definition or it does
13
- * not compile, so no gesture can mix the fields of one with the options of another.
14
- *
15
- * Internal: it is not exported from the package and never appears on `SchemaConstructor`.
16
- * A user derives with `Order.pick(…)`, never `Order.definition.pick(…)`.
17
- */
18
- export declare class SchemaDefinition {
19
- readonly fields: Fields;
20
- readonly adapters: EntityAdapters<Fields> | undefined;
21
- readonly opts: ValidateOptions;
22
- readonly previous: PreviousNames<Fields> | undefined;
23
- readonly derivation: SchemaDerivation | undefined;
24
- readonly anchored: boolean;
25
- private constructor();
26
- static stated(said: {
27
- fields: Fields;
28
- adapters?: EntityAdapters<Fields>;
29
- opts?: ValidateOptions;
30
- previous?: PreviousNames<Fields>;
31
- derivation?: SchemaDerivation;
32
- anchored?: boolean;
33
- }): SchemaDefinition;
34
- /**
35
- * What a schema states about ITSELF, folded into what it already states — one adapter
36
- * entry per field wins the later spelling, and a unique group is stamped on its members.
37
- */
38
- declaring(said: EntityDeclarations<Fields>): SchemaDefinition;
39
- /**
40
- * The same schema, holding rows of its own. A derivation is an answer until it says this.
41
- */
42
- anchoring(): SchemaDefinition;
43
- /**
44
- * `pick`, `omit` and `rename` are one gesture: the fields that remain, and what became
45
- * of each name. What each adapter was handed follows the same correspondence, and so does the origin.
46
- */
47
- cut(fields: Fields, survives: (key: string) => string | undefined, root: SchemaView): SchemaDefinition;
48
- /** The same fields, judged as an update. */
49
- patched(root: SchemaView): SchemaDefinition;
50
- /** The added fields have no origin, so the derivation is unchanged: it speaks of the root. */
51
- extended(extra: Fields, root: SchemaView): SchemaDefinition;
52
- /** Several views folded into one definition, which therefore has no single origin. */
53
- static merged(views: readonly SchemaView[]): SchemaDefinition;
54
- /**
55
- * The origin this definition already carries, or the one `root` becomes. A schema that
56
- * is an ANCHOR holds rows of its own, so what is cut from it roots on IT and not on its own origin.
57
- */
58
- private origin;
59
- }
60
- //# sourceMappingURL=SchemaDefinition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaDefinition.d.ts","sourceRoot":"","sources":["../../src/schema/SchemaDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;IAEzB,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS;IACrD,QAAQ,CAAC,IAAI,EAAE,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS;IACpD,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,SAAS;IACjD,QAAQ,CAAC,QAAQ,EAAE,OAAO;IAN5B,OAAO,eAOH;IAEJ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,eAAe,CAAC;QACvB,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QACjC,UAAU,CAAC,EAAE,gBAAgB,CAAC;QAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,GAAG,gBAAgB,CAInB;IAED;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAS5D;IAED;;OAEG;IACH,SAAS,IAAI,gBAAgB,CAI5B;IAED;;;OAGG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,gBAAgB,CAWrG;IAED,4CAA4C;IAC5C,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,gBAAgB,CAI1C;IAED,8FAA8F;IAC9F,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,gBAAgB,CAI1D;IAED,sFAAsF;IACtF,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,gBAAgB,CAU5D;IAED;;;OAGG;IACH,OAAO,CAAC,MAAM;CAKf"}
@@ -1,85 +0,0 @@
1
- import { FieldSet } from '../fields/FieldSet.js';
2
- import { EntityAdapterSet } from '../EntityAdapters.js';
3
- import { SchemaDerivation } from './SchemaDerivation.js';
4
- /**
5
- * Everything a schema IS, apart from being a class whose instances are rows.
6
- *
7
- * The members used to be that many statics assigned side by side, and every derivation
8
- * re-threaded them by hand — which is how one of them came to be dropped from a list
9
- * without anyone noticing. A transformation here returns a COMPLETE definition or it does
10
- * not compile, so no gesture can mix the fields of one with the options of another.
11
- *
12
- * Internal: it is not exported from the package and never appears on `SchemaConstructor`.
13
- * A user derives with `Order.pick(…)`, never `Order.definition.pick(…)`.
14
- */
15
- export class SchemaDefinition {
16
- fields;
17
- adapters;
18
- opts;
19
- previous;
20
- derivation;
21
- anchored;
22
- constructor(fields, adapters, opts, previous, derivation, anchored) {
23
- this.fields = fields;
24
- this.adapters = adapters;
25
- this.opts = opts;
26
- this.previous = previous;
27
- this.derivation = derivation;
28
- this.anchored = anchored;
29
- }
30
- static stated(said) {
31
- return new SchemaDefinition(said.fields, EntityAdapterSet.of(said.adapters)?.stated, said.opts ?? {}, said.previous, said.derivation, said.anchored ?? false);
32
- }
33
- /**
34
- * What a schema states about ITSELF, folded into what it already states — one adapter
35
- * entry per field wins the later spelling, and a unique group is stamped on its members.
36
- */
37
- declaring(said) {
38
- return new SchemaDefinition(FieldSet.declared(this.fields, said.unique), EntityAdapterSet.merged([this.adapters, said.adapters])?.stated, this.opts, said.previous ?? this.previous, this.derivation, this.anchored);
39
- }
40
- /**
41
- * The same schema, holding rows of its own. A derivation is an answer until it says this.
42
- */
43
- anchoring() {
44
- return new SchemaDefinition(this.fields, this.adapters, this.opts, this.previous, this.derivation, true);
45
- }
46
- /**
47
- * `pick`, `omit` and `rename` are one gesture: the fields that remain, and what became
48
- * of each name. What each adapter was handed follows the same correspondence, and so does the origin.
49
- */
50
- cut(fields, survives, root) {
51
- const renamed = {};
52
- for (const [key, field] of Object.entries(fields))
53
- renamed[key] = field.rename(survives);
54
- return new SchemaDefinition(renamed, EntityAdapterSet.of(this.adapters)?.cut(survives)?.stated, this.opts, undefined, this.origin(root).compose(survives), false);
55
- }
56
- /** The same fields, judged as an update. */
57
- patched(root) {
58
- return new SchemaDefinition({ ...this.fields }, this.adapters, { ...this.opts, patch: true }, undefined, this.origin(root), false);
59
- }
60
- /** The added fields have no origin, so the derivation is unchanged: it speaks of the root. */
61
- extended(extra, root) {
62
- return new SchemaDefinition({ ...this.fields, ...extra }, this.adapters, this.opts, undefined, this.origin(root), false);
63
- }
64
- /** Several views folded into one definition, which therefore has no single origin. */
65
- static merged(views) {
66
- const fields = {};
67
- let opts = {};
68
- for (const view of views) {
69
- Object.assign(fields, view.getFields());
70
- opts = { ...opts, ...view.getOpts() };
71
- }
72
- const adapters = EntityAdapterSet.merged(views.map((view) => view.getAdapters()))?.stated;
73
- return new SchemaDefinition(fields, adapters, opts, undefined, undefined, false);
74
- }
75
- /**
76
- * The origin this definition already carries, or the one `root` becomes. A schema that
77
- * is an ANCHOR holds rows of its own, so what is cut from it roots on IT and not on its own origin.
78
- */
79
- origin(root) {
80
- if (!this.anchored && this.derivation)
81
- return this.derivation;
82
- return SchemaDerivation.first(root, this.fields);
83
- }
84
- }
85
- //# sourceMappingURL=SchemaDefinition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaDefinition.js","sourceRoot":"","sources":["../../src/schema/SchemaDefinition.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { type Fields } from '../fields/Field.js';
2
- import type { SchemaView } from './SchemaView.js';
3
- /**
4
- * What a derived schema says about its ORIGIN: the class it was cut from, and what the cut
5
- * left of each of that class's fields.
6
- *
7
- * The origin is the ROOT — `Post.pick(a, b).omit(b)` answers `Post` and never the
8
- * intermediate — so a chain is flattened rather than journalled, and the two halves cannot
9
- * disagree: a derivation always carries both, which `source` and `survived` as independent
10
- * properties could not promise.
11
- */
12
- export declare class SchemaDerivation {
13
- readonly source: SchemaView;
14
- readonly survived: Readonly<Record<string, string | undefined>>;
15
- private constructor();
16
- /** The first cut: every field of the origin still answers to its own name. */
17
- static first(source: SchemaView, fields: Fields): SchemaDerivation;
18
- /** The same origin, seen through one more cut. */
19
- compose(survives: (key: string) => string | undefined): SchemaDerivation;
20
- get sourceName(): string;
21
- /**
22
- * The anchor whose rows this describes — the nearest one going up, and a schema with no
23
- * origin of its own is one. An answer borrows its rows; this says from whom. Whether
24
- * those rows carry a key is a separate question: an anchor may have none.
25
- */
26
- get anchor(): SchemaView;
27
- /**
28
- * What the ROOT calls `key`, translated to the name it carries here — `undefined` when a
29
- * cut dropped it. A reader that needs something the root declared about a field asks the
30
- * root and comes back through this; it does not keep a copy of the answer.
31
- */
32
- hereFor(key: string): string | undefined;
33
- }
34
- //# sourceMappingURL=SchemaDerivation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaDerivation.d.ts","sourceRoot":"","sources":["../../src/schema/SchemaDerivation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAEzB,QAAQ,CAAC,MAAM,EAAE,UAAU;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAFjE,OAAO,eAGH;IAEJ,8EAA8E;IAC9E,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAEjE;IAED,kDAAkD;IAClD,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAOvE;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;;;OAIG;IACH,IAAI,MAAM,IAAI,UAAU,CAIvB;IAED;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvC;CACF"}
@@ -1,46 +0,0 @@
1
- /**
2
- * What a derived schema says about its ORIGIN: the class it was cut from, and what the cut
3
- * left of each of that class's fields.
4
- *
5
- * The origin is the ROOT — `Post.pick(a, b).omit(b)` answers `Post` and never the
6
- * intermediate — so a chain is flattened rather than journalled, and the two halves cannot
7
- * disagree: a derivation always carries both, which `source` and `survived` as independent
8
- * properties could not promise.
9
- */
10
- export class SchemaDerivation {
11
- source;
12
- survived;
13
- constructor(source, survived) {
14
- this.source = source;
15
- this.survived = survived;
16
- }
17
- /** The first cut: every field of the origin still answers to its own name. */
18
- static first(source, fields) {
19
- return new SchemaDerivation(source, Object.fromEntries(Object.keys(fields).map((key) => [key, key])));
20
- }
21
- /** The same origin, seen through one more cut. */
22
- compose(survives) {
23
- return new SchemaDerivation(this.source, Object.fromEntries(Object.entries(this.survived).map(([origin, here]) => [origin, here === undefined ? undefined : survives(here)])));
24
- }
25
- get sourceName() {
26
- return this.source.name;
27
- }
28
- /**
29
- * The anchor whose rows this describes — the nearest one going up, and a schema with no
30
- * origin of its own is one. An answer borrows its rows; this says from whom. Whether
31
- * those rows carry a key is a separate question: an anchor may have none.
32
- */
33
- get anchor() {
34
- const source = this.source;
35
- return source.anchored !== undefined || !source.derivation ? source : source.derivation.anchor;
36
- }
37
- /**
38
- * What the ROOT calls `key`, translated to the name it carries here — `undefined` when a
39
- * cut dropped it. A reader that needs something the root declared about a field asks the
40
- * root and comes back through this; it does not keep a copy of the answer.
41
- */
42
- hereFor(key) {
43
- return this.survived[key];
44
- }
45
- }
46
- //# sourceMappingURL=SchemaDerivation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaDerivation.js","sourceRoot":"","sources":["../../src/schema/SchemaDerivation.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAgB;IAEhB,MAAM;IACN,QAAQ;IAFnB,YACW,MAAkB,EAClB,QAAsD;sBADtD,MAAM;wBACN,QAAQ;IAChB,CAAC;IAEJ,8EAA8E;IAC9E,MAAM,CAAC,KAAK,CAAC,MAAkB,EAAE,MAAc;QAC7C,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxG,CAAC;IAED,kDAAkD;IAClD,OAAO,CAAC,QAA6C;QACnD,OAAO,IAAI,gBAAgB,CACzB,IAAI,CAAC,MAAM,EACX,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CACjH,CACF,CAAC;IACJ,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,IAAI,MAAM;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;IACjG,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaView.d.ts","sourceRoot":"","sources":["../../src/schema/SchemaView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,MAAM,GAAG,CAAC,OAAO,SAAS,MAAM,IAAI;KACvC,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACpE,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAEvE,MAAM,WAAW,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,IAAI,OAAO,CAAC;IACrB,WAAW,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACnD,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAClD,OAAO,IAAI,eAAe,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;CAC1D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAIlE"}
package/dist/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,KAAK,CAAoC,GAAM;IAC7D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IAEhF,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,100 +0,0 @@
1
- import type { FieldName, Fields } from './fields/Field.js';
2
- import { isObject } from './judge/ValueForm.js';
3
-
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-object-type
5
- export interface FougereEntityAdapters<K extends string> {}
6
-
7
- export type EntityAdapters<TFields extends Fields> = Readonly<Partial<FougereEntityAdapters<FieldName<TFields>>>>;
8
-
9
- /** What `cut` REQUIRES of an augmentation, and the open registry cannot state: addressed by field. */
10
- type FieldEntries = Record<FieldName<Fields>, unknown>;
11
-
12
- type AdapterEntries = Record<string, FieldEntries>;
13
-
14
- /**
15
- * What one schema states per adapter: an adapter name, a field name, then that adapter's own value.
16
- */
17
- export class EntityAdapterSet {
18
- private constructor(private readonly byAdapter: AdapterEntries) {}
19
-
20
- static of(declared: EntityAdapters<Fields> | undefined): EntityAdapterSet | undefined {
21
- if (declared === undefined) return undefined;
22
-
23
- if (!isObject(declared)) {
24
- throw new Error(
25
- `adapters: expected an object keyed by adapter name, got ${typeof declared}.`,
26
- );
27
- }
28
-
29
- const byAdapter: AdapterEntries = {};
30
-
31
- for (const [adapter, perField] of Object.entries(declared as AdapterEntries)) {
32
- if (perField === undefined) continue;
33
-
34
- if (!isObject(perField)) {
35
- throw new Error(
36
- `adapters.${adapter}: expected an object keyed by field name, got ${typeof perField}. ` +
37
- `What an adapter is handed is addressed by the field it applies to.`,
38
- );
39
- }
40
-
41
- if (Object.keys(perField).length) byAdapter[adapter] = perField;
42
- }
43
-
44
- return EntityAdapterSet.made(byAdapter);
45
- }
46
-
47
- /** Several schemas folded into one set; a later source wins, per adapter and per field. */
48
- static merged(sources: readonly (EntityAdapters<Fields> | undefined)[]): EntityAdapterSet | undefined {
49
- const out: AdapterEntries = {};
50
-
51
- for (const source of sources) {
52
- const set = EntityAdapterSet.of(source);
53
- if (!set) continue;
54
-
55
- for (const [adapter, perField] of Object.entries(set.byAdapter)) {
56
- out[adapter] = { ...out[adapter], ...perField };
57
- }
58
- }
59
-
60
- return EntityAdapterSet.made(out);
61
- }
62
-
63
- /** Every field name these entries address — what a caller checks against its own shape. */
64
- get fieldNames(): string[] {
65
- return [...new Set(Object.values(this.byAdapter).flatMap((perField) => Object.keys(perField)))];
66
- }
67
-
68
- /** The plain object, which is what a reader outside this package receives. */
69
- get stated(): EntityAdapters<Fields> {
70
- return this.byAdapter as EntityAdapters<Fields>;
71
- }
72
-
73
- /**
74
- * The entries whose field survives a cut, re-addressed by that field's new name.
75
- *
76
- * The adapter name is not a field and does not move; only the level below it does. An
77
- * entry left on the old name is not an error anywhere downstream — `adapter/sql` looks
78
- * it up by the field it is iterating and simply finds nothing.
79
- */
80
- cut(survives: (key: string) => string | undefined): EntityAdapterSet | undefined {
81
- const out: AdapterEntries = {};
82
-
83
- for (const [adapter, perField] of Object.entries(this.byAdapter)) {
84
- const mapped: FieldEntries = {};
85
-
86
- for (const [key, entry] of Object.entries(perField)) {
87
- const next = survives(key);
88
- if (next !== undefined) mapped[next] = entry;
89
- }
90
-
91
- if (Object.keys(mapped).length) out[adapter] = mapped;
92
- }
93
-
94
- return EntityAdapterSet.made(out);
95
- }
96
-
97
- private static made(byAdapter: AdapterEntries): EntityAdapterSet | undefined {
98
- return Object.keys(byAdapter).length ? new EntityAdapterSet(byAdapter) : undefined;
99
- }
100
- }
@@ -1,19 +0,0 @@
1
- import type { FieldName, Fields } from './fields/Field.js';
2
- import type { EntityAdapters } from './EntityAdapters.js';
3
-
4
- export type CompositeUnique<TFields extends Fields> = readonly (readonly FieldName<TFields>[])[];
5
-
6
- /** New name to old name: the field states what it WAS, which is how a human writes it. */
7
- export type PreviousNames<TFields extends Fields> = Readonly<
8
- Partial<Record<FieldName<TFields>, string>>
9
- >;
10
-
11
- export interface EntityDeclarations<TFields extends Fields> {
12
- unique?: CompositeUnique<TFields>;
13
- adapters?: EntityAdapters<TFields>;
14
- /**
15
- * What a field used to be called — read by `fougere freeze` and by nothing else.
16
- * It answers the one question two shapes cannot, and is meant to be deleted after.
17
- */
18
- previous?: PreviousNames<TFields>;
19
- }