@fougere/schema 0.6.0-alpha.0 → 0.8.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 (435) hide show
  1. package/README.md +5 -4
  2. package/dist/{schema/Schema.d.ts → Schema.d.ts} +17 -27
  3. package/dist/Schema.d.ts.map +1 -0
  4. package/dist/{schema/Schema.js → Schema.js} +22 -62
  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/{schema/axis → axis}/Axis.d.ts +2 -2
  18. package/dist/axis/Axis.d.ts.map +1 -0
  19. package/dist/axis/Axis.js.map +1 -0
  20. package/dist/axis/Meta.d.ts.map +1 -0
  21. package/dist/{schema/axis → axis}/Meta.js.map +1 -1
  22. package/dist/axis/boundary/Boundaries.d.ts +21 -0
  23. package/dist/axis/boundary/Boundaries.d.ts.map +1 -0
  24. package/dist/axis/boundary/Boundaries.js +25 -0
  25. package/dist/axis/boundary/Boundaries.js.map +1 -0
  26. package/dist/{schema/axis → axis}/boundary/Boundary.d.ts +3 -1
  27. package/dist/axis/boundary/Boundary.d.ts.map +1 -0
  28. package/dist/{schema/axis → axis}/boundary/Boundary.js +8 -6
  29. package/dist/axis/boundary/Boundary.js.map +1 -0
  30. package/dist/axis/boundary/BoundaryAxis.d.ts.map +1 -0
  31. package/dist/{schema/axis → axis}/boundary/BoundaryAxis.js +4 -4
  32. package/dist/axis/boundary/BoundaryAxis.js.map +1 -0
  33. package/dist/{schema/axis → axis}/lifecycle/Clock.d.ts +1 -1
  34. package/dist/axis/lifecycle/Clock.d.ts.map +1 -0
  35. package/dist/{schema/axis → axis}/lifecycle/Clock.js +1 -1
  36. package/dist/axis/lifecycle/Clock.js.map +1 -0
  37. package/dist/axis/lifecycle/Generators.d.ts +10 -0
  38. package/dist/axis/lifecycle/Generators.d.ts.map +1 -0
  39. package/dist/axis/lifecycle/Generators.js +20 -0
  40. package/dist/axis/lifecycle/Generators.js.map +1 -0
  41. package/dist/axis/lifecycle/Lifecycle.d.ts.map +1 -0
  42. package/dist/axis/lifecycle/Lifecycle.js.map +1 -0
  43. package/dist/axis/lifecycle/LifecycleAxis.d.ts.map +1 -0
  44. package/dist/{schema/axis → axis}/lifecycle/LifecycleAxis.js +11 -6
  45. package/dist/axis/lifecycle/LifecycleAxis.js.map +1 -0
  46. package/dist/axis/lifecycle/apply.d.ts +15 -0
  47. package/dist/axis/lifecycle/apply.d.ts.map +1 -0
  48. package/dist/axis/lifecycle/apply.js +50 -0
  49. package/dist/axis/lifecycle/apply.js.map +1 -0
  50. package/dist/{schema/axis → axis}/role/Relation.d.ts +3 -2
  51. package/dist/axis/role/Relation.d.ts.map +1 -0
  52. package/dist/{schema/axis → axis}/role/Relation.js +6 -5
  53. package/dist/axis/role/Relation.js.map +1 -0
  54. package/dist/{schema/axis → axis}/role/Role.d.ts +6 -6
  55. package/dist/axis/role/Role.d.ts.map +1 -0
  56. package/dist/axis/role/Role.js +36 -0
  57. package/dist/axis/role/Role.js.map +1 -0
  58. package/dist/{schema/axis → axis}/role/RoleAxis.d.ts +1 -1
  59. package/dist/axis/role/RoleAxis.d.ts.map +1 -0
  60. package/dist/{schema/axis → axis}/role/RoleAxis.js +28 -36
  61. package/dist/axis/role/RoleAxis.js.map +1 -0
  62. package/dist/axis/shape/Formats.d.ts +11 -0
  63. package/dist/axis/shape/Formats.d.ts.map +1 -0
  64. package/dist/axis/shape/Formats.js +9 -0
  65. package/dist/axis/shape/Formats.js.map +1 -0
  66. package/dist/{schema/axis → axis}/shape/Shape.d.ts +12 -3
  67. package/dist/axis/shape/Shape.d.ts.map +1 -0
  68. package/dist/axis/shape/Shape.js +77 -0
  69. package/dist/axis/shape/Shape.js.map +1 -0
  70. package/dist/entity/EntityAdapterSet.d.ts +22 -0
  71. package/dist/entity/EntityAdapterSet.d.ts.map +1 -0
  72. package/dist/entity/EntityAdapterSet.js +63 -0
  73. package/dist/entity/EntityAdapterSet.js.map +1 -0
  74. package/dist/entity/EntityAdapters.d.ts +1 -24
  75. package/dist/entity/EntityAdapters.d.ts.map +1 -1
  76. package/dist/entity/EntityAdapters.js +1 -74
  77. package/dist/entity/EntityAdapters.js.map +1 -1
  78. package/dist/entity/EntityDeclarations.d.ts +1 -1
  79. package/dist/entity/EntityDeclarations.d.ts.map +1 -1
  80. package/dist/entity.d.ts +7 -2
  81. package/dist/entity.d.ts.map +1 -1
  82. package/dist/entity.js +6 -1
  83. package/dist/entity.js.map +1 -1
  84. package/dist/{schema/fields → field}/Field.d.ts +3 -5
  85. package/dist/field/Field.d.ts.map +1 -0
  86. package/dist/field/Field.js +35 -0
  87. package/dist/field/Field.js.map +1 -0
  88. package/dist/field/FieldSet.d.ts +22 -0
  89. package/dist/field/FieldSet.d.ts.map +1 -0
  90. package/dist/field/FieldSet.js +58 -0
  91. package/dist/field/FieldSet.js.map +1 -0
  92. package/dist/index.d.ts +26 -56
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +21 -47
  95. package/dist/index.js.map +1 -1
  96. package/dist/lib/Registry.d.ts +12 -0
  97. package/dist/lib/Registry.d.ts.map +1 -0
  98. package/dist/lib/Registry.js +29 -0
  99. package/dist/lib/Registry.js.map +1 -0
  100. package/dist/lib/index.d.ts +3 -0
  101. package/dist/lib/index.d.ts.map +1 -0
  102. package/dist/lib/index.js +3 -0
  103. package/dist/lib/index.js.map +1 -0
  104. package/dist/lib/utils.d.ts.map +1 -0
  105. package/dist/lib/utils.js.map +1 -0
  106. package/dist/projection/Cases.d.ts +9 -20
  107. package/dist/projection/Cases.d.ts.map +1 -1
  108. package/dist/projection/Cases.js +44 -39
  109. package/dist/projection/Cases.js.map +1 -1
  110. package/dist/projection/Visibility.d.ts +2 -1
  111. package/dist/projection/Visibility.d.ts.map +1 -1
  112. package/dist/projection/Visibility.js +4 -3
  113. package/dist/projection/Visibility.js.map +1 -1
  114. package/dist/projection/card/Bundle.d.ts +1 -1
  115. package/dist/projection/card/Bundle.d.ts.map +1 -1
  116. package/dist/projection/card/Bundle.js +7 -7
  117. package/dist/projection/card/Bundle.js.map +1 -1
  118. package/dist/projection/card/Card.d.ts +7 -13
  119. package/dist/projection/card/Card.d.ts.map +1 -1
  120. package/dist/projection/card/Card.js +101 -70
  121. package/dist/projection/card/Card.js.map +1 -1
  122. package/dist/projection/card/Descriptor.d.ts +7 -7
  123. package/dist/projection/card/Descriptor.d.ts.map +1 -1
  124. package/dist/projection/card/admission.d.ts +21 -5
  125. package/dist/projection/card/admission.d.ts.map +1 -1
  126. package/dist/projection/card/admission.js +33 -5
  127. package/dist/projection/card/admission.js.map +1 -1
  128. package/dist/projection/card/diff.d.ts +2 -2
  129. package/dist/projection/card/diff.d.ts.map +1 -1
  130. package/dist/{judge/result.d.ts → validation.d.ts} +1 -1
  131. package/dist/validation.d.ts.map +1 -0
  132. package/dist/validation.js +2 -0
  133. package/dist/validation.js.map +1 -0
  134. package/dist/validator/AdapterFieldValidator.d.ts +14 -0
  135. package/dist/validator/AdapterFieldValidator.d.ts.map +1 -0
  136. package/dist/validator/AdapterFieldValidator.js +36 -0
  137. package/dist/validator/AdapterFieldValidator.js.map +1 -0
  138. package/dist/validator/FieldDeclarationValidator.d.ts +9 -0
  139. package/dist/validator/FieldDeclarationValidator.d.ts.map +1 -0
  140. package/dist/{judge/FieldJudge.js → validator/FieldDeclarationValidator.js} +8 -8
  141. package/dist/validator/FieldDeclarationValidator.js.map +1 -0
  142. package/dist/validator/FieldValueValidator.d.ts +13 -0
  143. package/dist/validator/FieldValueValidator.d.ts.map +1 -0
  144. package/dist/{judge/ValueJudge.js → validator/FieldValueValidator.js} +12 -11
  145. package/dist/validator/FieldValueValidator.js.map +1 -0
  146. package/dist/validator/InputRefusal.d.ts +8 -0
  147. package/dist/validator/InputRefusal.d.ts.map +1 -0
  148. package/dist/validator/InputRefusal.js +8 -0
  149. package/dist/validator/InputRefusal.js.map +1 -0
  150. package/dist/validator/InputValidator.d.ts +15 -0
  151. package/dist/validator/InputValidator.d.ts.map +1 -0
  152. package/dist/{judge/RowJudge.js → validator/InputValidator.js} +25 -21
  153. package/dist/validator/InputValidator.js.map +1 -0
  154. package/dist/vocabulary/bool.d.ts +6 -1
  155. package/dist/vocabulary/bool.d.ts.map +1 -1
  156. package/dist/vocabulary/bool.js +6 -1
  157. package/dist/vocabulary/bool.js.map +1 -1
  158. package/dist/vocabulary/created.d.ts +6 -1
  159. package/dist/vocabulary/created.d.ts.map +1 -1
  160. package/dist/vocabulary/created.js +5 -0
  161. package/dist/vocabulary/created.js.map +1 -1
  162. package/dist/vocabulary/date.d.ts +6 -1
  163. package/dist/vocabulary/date.d.ts.map +1 -1
  164. package/dist/vocabulary/date.js +6 -1
  165. package/dist/vocabulary/date.js.map +1 -1
  166. package/dist/vocabulary/email.d.ts +6 -1
  167. package/dist/vocabulary/email.d.ts.map +1 -1
  168. package/dist/vocabulary/email.js +5 -0
  169. package/dist/vocabulary/email.js.map +1 -1
  170. package/dist/vocabulary/immutable.d.ts +6 -1
  171. package/dist/vocabulary/immutable.d.ts.map +1 -1
  172. package/dist/vocabulary/immutable.js +5 -0
  173. package/dist/vocabulary/immutable.js.map +1 -1
  174. package/dist/vocabulary/index.d.ts +23 -0
  175. package/dist/vocabulary/index.d.ts.map +1 -0
  176. package/dist/vocabulary/index.js +23 -0
  177. package/dist/vocabulary/index.js.map +1 -0
  178. package/dist/vocabulary/indexed.d.ts +6 -1
  179. package/dist/vocabulary/indexed.d.ts.map +1 -1
  180. package/dist/vocabulary/indexed.js +5 -0
  181. package/dist/vocabulary/indexed.js.map +1 -1
  182. package/dist/vocabulary/json.d.ts +2 -2
  183. package/dist/vocabulary/json.d.ts.map +1 -1
  184. package/dist/vocabulary/json.js +9 -4
  185. package/dist/vocabulary/json.js.map +1 -1
  186. package/dist/vocabulary/list.d.ts +6 -1
  187. package/dist/vocabulary/list.d.ts.map +1 -1
  188. package/dist/vocabulary/list.js +6 -1
  189. package/dist/vocabulary/list.js.map +1 -1
  190. package/dist/vocabulary/many.d.ts +7 -2
  191. package/dist/vocabulary/many.d.ts.map +1 -1
  192. package/dist/vocabulary/many.js +7 -2
  193. package/dist/vocabulary/many.js.map +1 -1
  194. package/dist/vocabulary/nullable.d.ts +6 -1
  195. package/dist/vocabulary/nullable.d.ts.map +1 -1
  196. package/dist/vocabulary/nullable.js +7 -2
  197. package/dist/vocabulary/nullable.js.map +1 -1
  198. package/dist/vocabulary/number.d.ts +6 -1
  199. package/dist/vocabulary/number.d.ts.map +1 -1
  200. package/dist/vocabulary/number.js +6 -1
  201. package/dist/vocabulary/number.js.map +1 -1
  202. package/dist/vocabulary/oneOf.d.ts +1 -1
  203. package/dist/vocabulary/oneOf.d.ts.map +1 -1
  204. package/dist/vocabulary/oneOf.js +6 -1
  205. package/dist/vocabulary/oneOf.js.map +1 -1
  206. package/dist/vocabulary/optional.d.ts +6 -1
  207. package/dist/vocabulary/optional.d.ts.map +1 -1
  208. package/dist/vocabulary/optional.js +7 -2
  209. package/dist/vocabulary/optional.js.map +1 -1
  210. package/dist/vocabulary/primary.d.ts +2 -2
  211. package/dist/vocabulary/primary.d.ts.map +1 -1
  212. package/dist/vocabulary/primary.js +7 -2
  213. package/dist/vocabulary/primary.js.map +1 -1
  214. package/dist/vocabulary/readOnly.d.ts +6 -1
  215. package/dist/vocabulary/readOnly.d.ts.map +1 -1
  216. package/dist/vocabulary/readOnly.js +6 -1
  217. package/dist/vocabulary/readOnly.js.map +1 -1
  218. package/dist/vocabulary/ref.d.ts +7 -2
  219. package/dist/vocabulary/ref.d.ts.map +1 -1
  220. package/dist/vocabulary/ref.js +7 -2
  221. package/dist/vocabulary/ref.js.map +1 -1
  222. package/dist/vocabulary/text.d.ts +7 -2
  223. package/dist/vocabulary/text.d.ts.map +1 -1
  224. package/dist/vocabulary/text.js +6 -1
  225. package/dist/vocabulary/text.js.map +1 -1
  226. package/dist/vocabulary/unique.d.ts +6 -1
  227. package/dist/vocabulary/unique.d.ts.map +1 -1
  228. package/dist/vocabulary/unique.js +7 -3
  229. package/dist/vocabulary/unique.js.map +1 -1
  230. package/dist/vocabulary/updated.d.ts +6 -1
  231. package/dist/vocabulary/updated.d.ts.map +1 -1
  232. package/dist/vocabulary/updated.js +5 -0
  233. package/dist/vocabulary/updated.js.map +1 -1
  234. package/dist/vocabulary/url.d.ts +6 -1
  235. package/dist/vocabulary/url.d.ts.map +1 -1
  236. package/dist/vocabulary/url.js +5 -0
  237. package/dist/vocabulary/url.js.map +1 -1
  238. package/dist/vocabulary/vocabulary.d.ts +6 -1
  239. package/dist/vocabulary/vocabulary.d.ts.map +1 -1
  240. package/dist/vocabulary/vocabulary.js +22 -12
  241. package/dist/vocabulary/vocabulary.js.map +1 -1
  242. package/dist/vocabulary/writeOnly.d.ts +6 -1
  243. package/dist/vocabulary/writeOnly.d.ts.map +1 -1
  244. package/dist/vocabulary/writeOnly.js +6 -1
  245. package/dist/vocabulary/writeOnly.js.map +1 -1
  246. package/package.json +1 -1
  247. package/src/{schema/Schema.ts → Schema.ts} +32 -75
  248. package/src/SchemaDefinition.ts +257 -0
  249. package/src/SchemaDerivation.ts +44 -0
  250. package/src/{schema/SchemaView.ts → SchemaView.ts} +9 -9
  251. package/src/{schema/axis → axis}/Axis.ts +2 -2
  252. package/src/axis/boundary/Boundaries.ts +37 -0
  253. package/src/{schema/axis → axis}/boundary/Boundary.ts +9 -7
  254. package/src/{schema/axis → axis}/boundary/BoundaryAxis.ts +4 -4
  255. package/src/{schema/axis → axis}/lifecycle/Clock.ts +1 -1
  256. package/src/axis/lifecycle/Generators.ts +29 -0
  257. package/src/{schema/axis → axis}/lifecycle/LifecycleAxis.ts +12 -7
  258. package/src/axis/lifecycle/apply.ts +53 -0
  259. package/src/{schema/axis → axis}/role/Relation.ts +6 -5
  260. package/src/axis/role/Role.ts +52 -0
  261. package/src/{schema/axis → axis}/role/RoleAxis.ts +28 -40
  262. package/src/axis/shape/Formats.ts +20 -0
  263. package/src/{schema/axis → axis}/shape/Shape.ts +45 -18
  264. package/src/entity/EntityAdapterSet.ts +81 -0
  265. package/src/entity/EntityAdapters.ts +4 -96
  266. package/src/entity/EntityDeclarations.ts +1 -1
  267. package/src/entity.ts +7 -2
  268. package/src/{schema/fields → field}/Field.ts +8 -28
  269. package/src/field/FieldSet.ts +75 -0
  270. package/src/index.ts +34 -91
  271. package/src/lib/Registry.ts +37 -0
  272. package/src/lib/index.ts +2 -0
  273. package/src/projection/Cases.ts +56 -55
  274. package/src/projection/Visibility.ts +5 -4
  275. package/src/projection/card/Bundle.ts +9 -9
  276. package/src/projection/card/Card.ts +109 -75
  277. package/src/projection/card/Descriptor.ts +7 -7
  278. package/src/projection/card/admission.ts +37 -6
  279. package/src/projection/card/diff.ts +2 -2
  280. package/src/validator/AdapterFieldValidator.ts +40 -0
  281. package/src/{judge/FieldJudge.ts → validator/FieldDeclarationValidator.ts} +10 -10
  282. package/src/{judge/ValueJudge.ts → validator/FieldValueValidator.ts} +14 -13
  283. package/src/validator/InputRefusal.ts +7 -0
  284. package/src/{judge/RowJudge.ts → validator/InputValidator.ts} +31 -24
  285. package/src/vocabulary/bool.ts +6 -1
  286. package/src/vocabulary/created.ts +6 -1
  287. package/src/vocabulary/date.ts +6 -1
  288. package/src/vocabulary/email.ts +6 -1
  289. package/src/vocabulary/immutable.ts +6 -1
  290. package/src/vocabulary/index.ts +22 -0
  291. package/src/vocabulary/indexed.ts +6 -1
  292. package/src/vocabulary/json.ts +10 -5
  293. package/src/vocabulary/list.ts +6 -1
  294. package/src/vocabulary/many.ts +7 -2
  295. package/src/vocabulary/nullable.ts +8 -3
  296. package/src/vocabulary/number.ts +6 -1
  297. package/src/vocabulary/oneOf.ts +6 -1
  298. package/src/vocabulary/optional.ts +8 -3
  299. package/src/vocabulary/primary.ts +7 -2
  300. package/src/vocabulary/readOnly.ts +7 -2
  301. package/src/vocabulary/ref.ts +7 -2
  302. package/src/vocabulary/text.ts +7 -2
  303. package/src/vocabulary/unique.ts +8 -4
  304. package/src/vocabulary/updated.ts +6 -1
  305. package/src/vocabulary/url.ts +6 -1
  306. package/src/vocabulary/vocabulary.ts +22 -12
  307. package/src/vocabulary/writeOnly.ts +7 -2
  308. package/dist/judge/FieldJudge.d.ts +0 -9
  309. package/dist/judge/FieldJudge.d.ts.map +0 -1
  310. package/dist/judge/FieldJudge.js.map +0 -1
  311. package/dist/judge/RowJudge.d.ts +0 -12
  312. package/dist/judge/RowJudge.d.ts.map +0 -1
  313. package/dist/judge/RowJudge.js.map +0 -1
  314. package/dist/judge/RowRefusal.d.ts +0 -17
  315. package/dist/judge/RowRefusal.d.ts.map +0 -1
  316. package/dist/judge/RowRefusal.js +0 -16
  317. package/dist/judge/RowRefusal.js.map +0 -1
  318. package/dist/judge/ValueJudge.d.ts +0 -12
  319. package/dist/judge/ValueJudge.d.ts.map +0 -1
  320. package/dist/judge/ValueJudge.js.map +0 -1
  321. package/dist/judge/options.d.ts +0 -4
  322. package/dist/judge/options.d.ts.map +0 -1
  323. package/dist/judge/options.js +0 -2
  324. package/dist/judge/options.js.map +0 -1
  325. package/dist/judge/result.d.ts.map +0 -1
  326. package/dist/judge/result.js +0 -2
  327. package/dist/judge/result.js.map +0 -1
  328. package/dist/projection/SchemaOrCard.d.ts +0 -7
  329. package/dist/projection/SchemaOrCard.d.ts.map +0 -1
  330. package/dist/projection/SchemaOrCard.js +0 -11
  331. package/dist/projection/SchemaOrCard.js.map +0 -1
  332. package/dist/projection/card/EntityTypeSource.d.ts +0 -12
  333. package/dist/projection/card/EntityTypeSource.d.ts.map +0 -1
  334. package/dist/projection/card/EntityTypeSource.js +0 -78
  335. package/dist/projection/card/EntityTypeSource.js.map +0 -1
  336. package/dist/projection/card/FacadeTypeSource.d.ts +0 -19
  337. package/dist/projection/card/FacadeTypeSource.d.ts.map +0 -1
  338. package/dist/projection/card/FacadeTypeSource.js +0 -40
  339. package/dist/projection/card/FacadeTypeSource.js.map +0 -1
  340. package/dist/schema/Schema.d.ts.map +0 -1
  341. package/dist/schema/Schema.js.map +0 -1
  342. package/dist/schema/SchemaDefinition.d.ts +0 -60
  343. package/dist/schema/SchemaDefinition.d.ts.map +0 -1
  344. package/dist/schema/SchemaDefinition.js +0 -85
  345. package/dist/schema/SchemaDefinition.js.map +0 -1
  346. package/dist/schema/SchemaDerivation.d.ts +0 -34
  347. package/dist/schema/SchemaDerivation.d.ts.map +0 -1
  348. package/dist/schema/SchemaDerivation.js +0 -51
  349. package/dist/schema/SchemaDerivation.js.map +0 -1
  350. package/dist/schema/SchemaView.d.ts.map +0 -1
  351. package/dist/schema/axis/Axis.d.ts.map +0 -1
  352. package/dist/schema/axis/Axis.js.map +0 -1
  353. package/dist/schema/axis/Meta.d.ts.map +0 -1
  354. package/dist/schema/axis/boundary/Boundaries.d.ts +0 -20
  355. package/dist/schema/axis/boundary/Boundaries.d.ts.map +0 -1
  356. package/dist/schema/axis/boundary/Boundaries.js +0 -31
  357. package/dist/schema/axis/boundary/Boundaries.js.map +0 -1
  358. package/dist/schema/axis/boundary/Boundary.d.ts.map +0 -1
  359. package/dist/schema/axis/boundary/Boundary.js.map +0 -1
  360. package/dist/schema/axis/boundary/BoundaryAxis.d.ts.map +0 -1
  361. package/dist/schema/axis/boundary/BoundaryAxis.js.map +0 -1
  362. package/dist/schema/axis/lifecycle/Clock.d.ts.map +0 -1
  363. package/dist/schema/axis/lifecycle/Clock.js.map +0 -1
  364. package/dist/schema/axis/lifecycle/Generators.d.ts +0 -18
  365. package/dist/schema/axis/lifecycle/Generators.d.ts.map +0 -1
  366. package/dist/schema/axis/lifecycle/Generators.js +0 -38
  367. package/dist/schema/axis/lifecycle/Generators.js.map +0 -1
  368. package/dist/schema/axis/lifecycle/Lifecycle.d.ts.map +0 -1
  369. package/dist/schema/axis/lifecycle/Lifecycle.js.map +0 -1
  370. package/dist/schema/axis/lifecycle/LifecycleAxis.d.ts.map +0 -1
  371. package/dist/schema/axis/lifecycle/LifecycleAxis.js.map +0 -1
  372. package/dist/schema/axis/lifecycle/apply.d.ts +0 -6
  373. package/dist/schema/axis/lifecycle/apply.d.ts.map +0 -1
  374. package/dist/schema/axis/lifecycle/apply.js +0 -34
  375. package/dist/schema/axis/lifecycle/apply.js.map +0 -1
  376. package/dist/schema/axis/role/Relation.d.ts.map +0 -1
  377. package/dist/schema/axis/role/Relation.js.map +0 -1
  378. package/dist/schema/axis/role/Role.d.ts.map +0 -1
  379. package/dist/schema/axis/role/Role.js +0 -40
  380. package/dist/schema/axis/role/Role.js.map +0 -1
  381. package/dist/schema/axis/role/RoleAxis.d.ts.map +0 -1
  382. package/dist/schema/axis/role/RoleAxis.js.map +0 -1
  383. package/dist/schema/axis/shape/Formats.d.ts +0 -8
  384. package/dist/schema/axis/shape/Formats.d.ts.map +0 -1
  385. package/dist/schema/axis/shape/Formats.js +0 -10
  386. package/dist/schema/axis/shape/Formats.js.map +0 -1
  387. package/dist/schema/axis/shape/Shape.d.ts.map +0 -1
  388. package/dist/schema/axis/shape/Shape.js +0 -52
  389. package/dist/schema/axis/shape/Shape.js.map +0 -1
  390. package/dist/schema/fields/Field.d.ts.map +0 -1
  391. package/dist/schema/fields/Field.js +0 -52
  392. package/dist/schema/fields/Field.js.map +0 -1
  393. package/dist/schema/fields/FieldSet.d.ts +0 -28
  394. package/dist/schema/fields/FieldSet.d.ts.map +0 -1
  395. package/dist/schema/fields/FieldSet.js +0 -55
  396. package/dist/schema/fields/FieldSet.js.map +0 -1
  397. package/dist/schema/fields/constraint/FieldGroup.d.ts +0 -21
  398. package/dist/schema/fields/constraint/FieldGroup.d.ts.map +0 -1
  399. package/dist/schema/fields/constraint/FieldGroup.js +0 -65
  400. package/dist/schema/fields/constraint/FieldGroup.js.map +0 -1
  401. package/dist/schema/fields/constraint/Unique.d.ts +0 -4
  402. package/dist/schema/fields/constraint/Unique.d.ts.map +0 -1
  403. package/dist/schema/fields/constraint/Unique.js +0 -4
  404. package/dist/schema/fields/constraint/Unique.js.map +0 -1
  405. package/dist/utils.d.ts.map +0 -1
  406. package/dist/utils.js.map +0 -1
  407. package/src/judge/RowRefusal.ts +0 -17
  408. package/src/judge/options.ts +0 -3
  409. package/src/projection/SchemaOrCard.ts +0 -18
  410. package/src/projection/card/EntityTypeSource.ts +0 -90
  411. package/src/projection/card/FacadeTypeSource.ts +0 -55
  412. package/src/schema/SchemaDefinition.ts +0 -150
  413. package/src/schema/SchemaDerivation.ts +0 -65
  414. package/src/schema/axis/boundary/Boundaries.ts +0 -44
  415. package/src/schema/axis/lifecycle/Generators.ts +0 -46
  416. package/src/schema/axis/lifecycle/apply.ts +0 -39
  417. package/src/schema/axis/role/Role.ts +0 -56
  418. package/src/schema/axis/shape/Formats.ts +0 -22
  419. package/src/schema/fields/FieldSet.ts +0 -63
  420. package/src/schema/fields/constraint/FieldGroup.ts +0 -84
  421. package/src/schema/fields/constraint/Unique.ts +0 -3
  422. /package/dist/{schema/SchemaView.js → SchemaView.js} +0 -0
  423. /package/dist/{schema/axis → axis}/Axis.js +0 -0
  424. /package/dist/{schema/axis → axis}/Meta.d.ts +0 -0
  425. /package/dist/{schema/axis → axis}/Meta.js +0 -0
  426. /package/dist/{schema/axis → axis}/boundary/BoundaryAxis.d.ts +0 -0
  427. /package/dist/{schema/axis → axis}/lifecycle/Lifecycle.d.ts +0 -0
  428. /package/dist/{schema/axis → axis}/lifecycle/Lifecycle.js +0 -0
  429. /package/dist/{schema/axis → axis}/lifecycle/LifecycleAxis.d.ts +0 -0
  430. /package/dist/{utils.d.ts → lib/utils.d.ts} +0 -0
  431. /package/dist/{utils.js → lib/utils.js} +0 -0
  432. /package/src/{schema/axis → axis}/Meta.ts +0 -0
  433. /package/src/{schema/axis → axis}/lifecycle/Lifecycle.ts +0 -0
  434. /package/src/{utils.ts → lib/utils.ts} +0 -0
  435. /package/src/{judge/result.ts → validation.ts} +0 -0
@@ -0,0 +1,22 @@
1
+ import type { CompositeUnique } from '../entity/EntityDeclarations.js';
2
+ import { type FieldName, type Fields } from './Field.js';
3
+ export declare class FieldSet<TFields extends Fields = Fields> {
4
+ private readonly fields;
5
+ private constructor();
6
+ static of<TFields extends Fields>(fields: TFields): FieldSet<TFields>;
7
+ /**
8
+ * So a declared unique lands where it belongs: on the field, or on the schema.
9
+ * FR : pour qu'une unicité déclarée atterrisse sur le champ ou sur le schéma.
10
+ * `declaring(fields, [['email'], ['listId', 'docId']])`
11
+ * → `email` carries `role.unique`, the pair becomes a schema constraint
12
+ */
13
+ static declaring<TFields extends Fields>(declared: TFields, unique?: CompositeUnique<TFields>): {
14
+ fields: TFields;
15
+ unique: CompositeUnique<TFields> | undefined;
16
+ };
17
+ /** A second `primary` is refused, naming both, rather than the first winning silently. */
18
+ get primary(): FieldName<TFields> | undefined;
19
+ }
20
+ /** The order is part of a group: `['a','b']` and `['b','a']` are two constraints. */
21
+ export declare function deduplicated(groups: readonly (readonly string[])[]): readonly (readonly string[])[] | undefined;
22
+ //# sourceMappingURL=FieldSet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldSet.d.ts","sourceRoot":"","sources":["../../src/field/FieldSet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAS,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAEhE,qBAAa,QAAQ,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAA3C,OAAO,eAAiD;IAExD,MAAM,CAAC,EAAE,CAAC,OAAO,SAAS,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAEpE;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,OAAO,SAAS,MAAM,EACrC,QAAQ,EAAE,OAAO,EACjB,MAAM,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,GAChC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;KAAE,CA0BnE;IAED,0FAA0F;IAC1F,IAAI,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,SAAS,CAa5C;CAEF;AAED,qFAAqF;AACrF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GACrC,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,CAK5C"}
@@ -0,0 +1,58 @@
1
+ import { Role } from '../axis/role/Role.js';
2
+ import { Field } from './Field.js';
3
+ export class FieldSet {
4
+ fields;
5
+ constructor(fields) {
6
+ this.fields = fields;
7
+ }
8
+ static of(fields) {
9
+ return new FieldSet(fields);
10
+ }
11
+ /**
12
+ * So a declared unique lands where it belongs: on the field, or on the schema.
13
+ * FR : pour qu'une unicité déclarée atterrisse sur le champ ou sur le schéma.
14
+ * `declaring(fields, [['email'], ['listId', 'docId']])`
15
+ * → `email` carries `role.unique`, the pair becomes a schema constraint
16
+ */
17
+ static declaring(declared, unique) {
18
+ const fields = {};
19
+ for (const [key, field] of Object.entries(declared))
20
+ fields[key] = new Field(field, key);
21
+ const composite = [];
22
+ for (const group of unique ?? []) {
23
+ const missing = group.filter((key) => !Object.hasOwn(fields, key));
24
+ if (missing.length)
25
+ throw new Error(`unique: [${group.join(', ')}] names ` +
26
+ `${missing.map((key) => `'${key}'`).join(', ')}, which the entity does not declare.`);
27
+ if (group.length === 1) {
28
+ const key = group[0];
29
+ fields[key] = fields[key].with({ role: { ...fields[key].role, unique: true } });
30
+ continue;
31
+ }
32
+ composite.push([...group]);
33
+ }
34
+ return {
35
+ fields: fields,
36
+ unique: deduplicated(composite),
37
+ };
38
+ }
39
+ /** A second `primary` is refused, naming both, rather than the first winning silently. */
40
+ get primary() {
41
+ const primaries = Object.entries(this.fields)
42
+ .filter(([, field]) => Role.of(field).isPrimary)
43
+ .map(([name]) => name);
44
+ if (primaries.length > 1) {
45
+ throw new Error(`FieldSet.primary: ${primaries.map((name) => JSON.stringify(name)).join(', ')} all declare ` +
46
+ '`primary`; a field set can have only one primary field.');
47
+ }
48
+ return primaries[0];
49
+ }
50
+ }
51
+ /** The order is part of a group: `['a','b']` and `['b','a']` are two constraints. */
52
+ export function deduplicated(groups) {
53
+ const seen = new Map();
54
+ for (const group of groups)
55
+ seen.set(JSON.stringify(group), group);
56
+ return seen.size ? [...seen.values()] : undefined;
57
+ }
58
+ //# sourceMappingURL=FieldSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldSet.js","sourceRoot":"","sources":["../../src/field/FieldSet.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,60 +1,30 @@
1
- export { Field, type Fields } from './schema/fields/Field.js';
2
- export { FieldSet } from './schema/fields/FieldSet.js';
3
- export { type Shape, Anatomy } from './schema/axis/shape/Shape.js';
4
- export { type StringFormat, type FormatPredicate, Formats, } from './schema/axis/shape/Formats.js';
5
- export { Role, type RoleRules } from './schema/axis/role/Role.js';
6
- export { type Relation, type EntityConstructor } from './schema/axis/role/Relation.js';
7
- export { Lifecycle, type LifecycleRules } from './schema/axis/lifecycle/Lifecycle.js';
8
- export { type GeneratorRef, Generators } from './schema/axis/lifecycle/Generators.js';
9
- export { Clock } from './schema/axis/lifecycle/Clock.js';
10
- export { Boundary, type BoundaryRules, type BoundaryRef, } from './schema/axis/boundary/Boundary.js';
11
- export { type Decoder, type Encoder, Boundaries } from './schema/axis/boundary/Boundaries.js';
12
- export { type Meta } from './schema/axis/Meta.js';
13
- export { FieldGroup } from './schema/fields/constraint/FieldGroup.js';
14
- export { Unique } from './schema/fields/constraint/Unique.js';
15
- export { Schema, ANONYMOUS_SCHEMA_NAME, type SchemaConstructor, } from './schema/Schema.js';
16
- export { SchemaDerivation } from './schema/SchemaDerivation.js';
17
- export { Cases, type Case } from './projection/Cases.js';
18
- export { RowRefusal } from './judge/RowRefusal.js';
19
- export { type SchemaView, type Row, type PartialRow } from './schema/SchemaView.js';
20
- export { type FougereEntityAdapters, type EntityAdapters } from './entity/EntityAdapters.js';
21
- export { type EntityDeclarations, type CompositeUnique, type PreviousNames, } from './entity/EntityDeclarations.js';
22
- export { lowerFirst, upperFirst, isObject } from './utils.js';
23
- export { primary } from './vocabulary/primary.js';
24
- export { text } from './vocabulary/text.js';
25
- export { email } from './vocabulary/email.js';
26
- export { url } from './vocabulary/url.js';
27
- export { list } from './vocabulary/list.js';
28
- export { number } from './vocabulary/number.js';
29
- export { bool } from './vocabulary/bool.js';
30
- export { date } from './vocabulary/date.js';
31
- export { created } from './vocabulary/created.js';
32
- export { updated } from './vocabulary/updated.js';
33
- export { oneOf } from './vocabulary/oneOf.js';
34
- export { ref } from './vocabulary/ref.js';
35
- export { many } from './vocabulary/many.js';
36
- export { optional } from './vocabulary/optional.js';
37
- export { nullable } from './vocabulary/nullable.js';
38
- export { immutable } from './vocabulary/immutable.js';
39
- export { unique } from './vocabulary/unique.js';
40
- export { indexed } from './vocabulary/indexed.js';
41
- export { readOnly } from './vocabulary/readOnly.js';
42
- export { writeOnly } from './vocabulary/writeOnly.js';
43
- export { json } from './vocabulary/json.js';
44
- export { applyCreate, applyUpdate } from './schema/axis/lifecycle/apply.js';
45
- export { Visibility } from './projection/Visibility.js';
1
+ export { entity } from './entity.js';
2
+ export * from './vocabulary/index.js';
3
+ export { Schema, ANONYMOUS_SCHEMA_NAME, type SchemaConstructor } from './Schema.js';
4
+ export { type SchemaView } from './SchemaView.js';
5
+ export { Field, type Fields } from './field/Field.js';
6
+ export { FieldSet } from './field/FieldSet.js';
7
+ export { type Shape, Shapes } from './axis/shape/Shape.js';
8
+ export { Role } from './axis/role/Role.js';
9
+ export { type EntityConstructor } from './axis/role/Relation.js';
10
+ export { Lifecycle, type LifecycleRules } from './axis/lifecycle/Lifecycle.js';
11
+ export { Boundary, type BoundaryRef } from './axis/boundary/Boundary.js';
12
+ export { applyCreate, applyUpdate } from './axis/lifecycle/apply.js';
13
+ export { InputRefusal } from './validator/InputRefusal.js';
14
+ export { type ValidationError, type ValidationResult } from './validation.js';
46
15
  export { Card } from './projection/card/Card.js';
47
16
  export { Bundle } from './projection/card/Bundle.js';
17
+ export { Visibility } from './projection/Visibility.js';
18
+ export { Cases, type ValidationCase } from './projection/Cases.js';
19
+ export type { SchemaBundle, SchemaDescriptor, DerivedFrom, FieldDescriptor, FieldExtension, RoleDescriptor, RelationDescriptor, } from './projection/card/Descriptor.js';
48
20
  export type { Change, Diff, DiffOptions, SetDiff, SetDiffOptions, RenameCandidate, TypeSet, } from './projection/card/diff.js';
49
- export { EntityTypeSource, type EntityTypeSourceOptions, } from './projection/card/EntityTypeSource.js';
50
- export { FacadeTypeSource, type FacadeTypeSourceOptions, type OpDescriptor, } from './projection/card/FacadeTypeSource.js';
51
- export { type SchemaBundle, type SchemaDescriptor, type FieldDescriptor, type FieldExtension, type RoleDescriptor, type RelationDescriptor, } from './projection/card/Descriptor.js';
52
- export { type SchemaOrCard, schemaOf, fieldsOf } from './projection/SchemaOrCard.js';
53
- export type { StandardSchemaV1 } from './projection/standard.js';
54
- export { entity } from './entity.js';
55
- export { FieldJudge } from './judge/FieldJudge.js';
56
- export { ValueJudge } from './judge/ValueJudge.js';
57
- export { RowJudge } from './judge/RowJudge.js';
58
- export { type ValidateOptions } from './judge/options.js';
59
- export { type ValidationError, type ValidationResult, type Checked, } from './judge/result.js';
21
+ export * from './lib/index.js';
22
+ export { Formats } from './axis/shape/Formats.js';
23
+ export { Generators } from './axis/lifecycle/Generators.js';
24
+ export { Boundaries } from './axis/boundary/Boundaries.js';
25
+ export { Clock } from './axis/lifecycle/Clock.js';
26
+ export { type FougereEntityAdapters } from './entity/EntityAdapters.js';
27
+ export { InputValidator } from './validator/InputValidator.js';
28
+ export { FieldValueValidator } from './validator/FieldValueValidator.js';
29
+ export { AdapterFieldValidator } from './validator/AdapterFieldValidator.js';
60
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACnE,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,cAAc,EACd,cAAc,EACd,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,MAAM,EACN,IAAI,EACJ,WAAW,EACX,OAAO,EACP,cAAc,EACd,eAAe,EACf,OAAO,GACR,MAAM,2BAA2B,CAAC;AAEnC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC"}
package/dist/index.js CHANGED
@@ -1,50 +1,24 @@
1
- export { Field } from './schema/fields/Field.js';
2
- export { FieldSet } from './schema/fields/FieldSet.js';
3
- export { Anatomy } from './schema/axis/shape/Shape.js';
4
- export { Formats, } from './schema/axis/shape/Formats.js';
5
- export { Role } from './schema/axis/role/Role.js';
6
- export { Lifecycle } from './schema/axis/lifecycle/Lifecycle.js';
7
- export { Generators } from './schema/axis/lifecycle/Generators.js';
8
- export { Clock } from './schema/axis/lifecycle/Clock.js';
9
- export { Boundary, } from './schema/axis/boundary/Boundary.js';
10
- export { Boundaries } from './schema/axis/boundary/Boundaries.js';
11
- export { FieldGroup } from './schema/fields/constraint/FieldGroup.js';
12
- export { Unique } from './schema/fields/constraint/Unique.js';
13
- export { Schema, ANONYMOUS_SCHEMA_NAME, } from './schema/Schema.js';
14
- export { SchemaDerivation } from './schema/SchemaDerivation.js';
15
- export { Cases } from './projection/Cases.js';
16
- export { RowRefusal } from './judge/RowRefusal.js';
17
- export { lowerFirst, upperFirst, isObject } from './utils.js';
18
- export { primary } from './vocabulary/primary.js';
19
- export { text } from './vocabulary/text.js';
20
- export { email } from './vocabulary/email.js';
21
- export { url } from './vocabulary/url.js';
22
- export { list } from './vocabulary/list.js';
23
- export { number } from './vocabulary/number.js';
24
- export { bool } from './vocabulary/bool.js';
25
- export { date } from './vocabulary/date.js';
26
- export { created } from './vocabulary/created.js';
27
- export { updated } from './vocabulary/updated.js';
28
- export { oneOf } from './vocabulary/oneOf.js';
29
- export { ref } from './vocabulary/ref.js';
30
- export { many } from './vocabulary/many.js';
31
- export { optional } from './vocabulary/optional.js';
32
- export { nullable } from './vocabulary/nullable.js';
33
- export { immutable } from './vocabulary/immutable.js';
34
- export { unique } from './vocabulary/unique.js';
35
- export { indexed } from './vocabulary/indexed.js';
36
- export { readOnly } from './vocabulary/readOnly.js';
37
- export { writeOnly } from './vocabulary/writeOnly.js';
38
- export { json } from './vocabulary/json.js';
39
- export { applyCreate, applyUpdate } from './schema/axis/lifecycle/apply.js';
40
- export { Visibility } from './projection/Visibility.js';
1
+ export { entity } from './entity.js';
2
+ export * from './vocabulary/index.js';
3
+ export { Schema, ANONYMOUS_SCHEMA_NAME } from './Schema.js';
4
+ export { Field } from './field/Field.js';
5
+ export { FieldSet } from './field/FieldSet.js';
6
+ export { Shapes } from './axis/shape/Shape.js';
7
+ export { Role } from './axis/role/Role.js';
8
+ export { Lifecycle } from './axis/lifecycle/Lifecycle.js';
9
+ export { Boundary } from './axis/boundary/Boundary.js';
10
+ export { applyCreate, applyUpdate } from './axis/lifecycle/apply.js';
11
+ export { InputRefusal } from './validator/InputRefusal.js';
41
12
  export { Card } from './projection/card/Card.js';
42
13
  export { Bundle } from './projection/card/Bundle.js';
43
- export { EntityTypeSource, } from './projection/card/EntityTypeSource.js';
44
- export { FacadeTypeSource, } from './projection/card/FacadeTypeSource.js';
45
- export { schemaOf, fieldsOf } from './projection/SchemaOrCard.js';
46
- export { entity } from './entity.js';
47
- export { FieldJudge } from './judge/FieldJudge.js';
48
- export { ValueJudge } from './judge/ValueJudge.js';
49
- export { RowJudge } from './judge/RowJudge.js';
14
+ export { Visibility } from './projection/Visibility.js';
15
+ export { Cases } from './projection/Cases.js';
16
+ export * from './lib/index.js';
17
+ export { Formats } from './axis/shape/Formats.js';
18
+ export { Generators } from './axis/lifecycle/Generators.js';
19
+ export { Boundaries } from './axis/boundary/Boundaries.js';
20
+ export { Clock } from './axis/lifecycle/Clock.js';
21
+ export { InputValidator } from './validator/InputValidator.js';
22
+ export { FieldValueValidator } from './validator/FieldValueValidator.js';
23
+ export { AdapterFieldValidator } from './validator/AdapterFieldValidator.js';
50
24
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAA0B,MAAM,aAAa,CAAC;AAEpF,OAAO,EAAE,KAAK,EAAe,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAc,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAuB,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAoB,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,KAAK,EAAuB,MAAM,uBAAuB,CAAC;AAoBnE,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare class Registry<T> {
2
+ private readonly label;
3
+ private readonly hint?;
4
+ private readonly entries;
5
+ /** `Unknown boundary decoder 'celsius' — call Boundaries.decoders.register(name, fn).` */
6
+ constructor(label: string, hint?: string | undefined, builtins?: Iterable<readonly [string, T]>);
7
+ register(name: string, value: T): T;
8
+ find(name: string): T | undefined;
9
+ resolve(name: string, path?: string): T;
10
+ private get names();
11
+ }
12
+ //# sourceMappingURL=Registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../../src/lib/Registry.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAQ,CAAC,CAAC;IAKnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IALxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,0FAA0F;IAC1F,YACmB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,YAAA,EAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAG1C;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAIlC;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAEhC;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,CAStC;IAED,OAAO,KAAK,KAAK,GAEhB;CACF"}
@@ -0,0 +1,29 @@
1
+ export class Registry {
2
+ label;
3
+ hint;
4
+ entries;
5
+ /** `Unknown boundary decoder 'celsius' — call Boundaries.decoders.register(name, fn).` */
6
+ constructor(label, hint, builtins) {
7
+ this.label = label;
8
+ this.hint = hint;
9
+ this.entries = new Map(builtins);
10
+ }
11
+ register(name, value) {
12
+ this.entries.set(name, value);
13
+ return value;
14
+ }
15
+ find(name) {
16
+ return this.entries.get(name);
17
+ }
18
+ resolve(name, path) {
19
+ const found = this.find(name);
20
+ if (found !== undefined)
21
+ return found;
22
+ throw new Error(`${path ? `${path}: ` : ''}Unknown ${this.label} '${name}'${this.hint ? ` — ${this.hint}` : ''}. ` +
23
+ `This process answers ${this.names.join(', ') || 'nothing yet'}.`);
24
+ }
25
+ get names() {
26
+ return [...this.entries.keys()];
27
+ }
28
+ }
29
+ //# sourceMappingURL=Registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Registry.js","sourceRoot":"","sources":["../../src/lib/Registry.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAQ;IAKA,KAAK;IACL,IAAI;IALN,OAAO,CAAiB;IAEzC,0FAA0F;IAC1F,YACmB,KAAa,EACb,IAAa,EAC9B,QAAyC;qBAFxB,KAAK;oBACL,IAAI;QAGrB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,KAAQ;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,IAAa;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAEtC,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;YAChG,wBAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,GAAG,CACpE,CAAC;IACJ,CAAC;IAED,IAAY,KAAK;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export * from './Registry.js';
2
+ export * from './utils.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './Registry.js';
2
+ export * from './utils.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/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;AAED,eAAO,MAAM,QAAQ,UAAW,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/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;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CAC3E,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -1,21 +1,17 @@
1
- import type { SchemaView } from '../schema/SchemaView.js';
1
+ import type { SchemaView } from '../SchemaView.js';
2
2
  /**
3
- * One input, and what the judge must answer.
3
+ * One input, and what the validator must answer.
4
4
  *
5
5
  * `expect` carries the PATH of the field at fault and never the message. We know which
6
6
  * field must be refused because we are the ones who broke it; naming the message would
7
- * make this list a second judge, and the two would then have to be kept in step by hand —
7
+ * make this list a second validator, and the two would then have to be kept in step by hand —
8
8
  * which is the duplication the whole thing exists to remove.
9
9
  */
10
- export interface Case {
10
+ export interface ValidationCase {
11
11
  /** What this input does, in one clause — carried into the assertion so a failure reads. */
12
12
  why: string;
13
- body: unknown;
14
- /**
15
- * Judged as an update rather than a creation. The two modes refuse different things:
16
- * an absence is `Required` on create and legal on patch, an immutable field is legal
17
- * on create and refused on patch.
18
- */
13
+ input: unknown;
14
+ /** Judged as an update rather than a creation. */
19
15
  patch: boolean;
20
16
  expect: 'accept' | {
21
17
  reject: string;
@@ -28,23 +24,16 @@ export interface Case {
28
24
  * supplies a valid row; generating data belongs to the testing package.
29
25
  */
30
26
  export declare class Cases {
31
- readonly all: readonly Case[];
27
+ readonly all: readonly ValidationCase[];
32
28
  private constructor();
33
29
  static of(entity: SchemaView, valid: Record<string, unknown>): Cases;
34
- /**
35
- * Whether a verdict is the one a case expected.
36
- *
37
- * Takes the RESULT rather than the input so the same reader serves the local judge, the
38
- * façade and a door — the three that have to agree.
39
- */
40
- static holds(expected: Case['expect'], result: {
30
+ static holds(expected: ValidationCase['expect'], result: {
41
31
  success: boolean;
42
32
  errors?: {
43
33
  path: string;
44
34
  }[];
45
35
  }): boolean;
46
- /** Every way a row is refused for its structure — the closed set this table must cover. */
47
36
  static get refusals(): string[];
48
- [Symbol.iterator](): Iterator<Case>;
37
+ [Symbol.iterator](): Iterator<ValidationCase>;
49
38
  }
50
39
  //# sourceMappingURL=Cases.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Cases.d.ts","sourceRoot":"","sources":["../../src/projection/Cases.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAI1D;;;;;;;GAOG;AACH,MAAM,WAAW,IAAI;IACnB,2FAA2F;IAC3F,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,QAAQ,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC;AAyCD;;;;;GAKG;AACH,qBAAa,KAAK;IACI,QAAQ,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE;IAAjD,OAAO,eAA8C;IAErD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAEnE;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CACV,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EACxB,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,GACxD,OAAO,CAIT;IAED,2FAA2F;IAC3F,MAAM,KAAK,QAAQ,IAAI,MAAM,EAAE,CAE9B;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAElC;CACF"}
1
+ {"version":3,"file":"Cases.d.ts","sourceRoot":"","sources":["../../src/projection/Cases.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,2FAA2F;IAC3F,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,kDAAkD;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,QAAQ,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC;AAiDD;;;;;GAKG;AACH,qBAAa,KAAK;IACI,QAAQ,CAAC,GAAG,EAAE,SAAS,cAAc,EAAE;IAA3D,OAAO,eAAwD;IAE/D,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAEnE;IAED,MAAM,CAAC,KAAK,CACV,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,EAClC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,GACxD,OAAO,CAIT;IAED,MAAM,KAAK,QAAQ,IAAI,MAAM,EAAE,CAE9B;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,CAE5C;CACF"}
@@ -1,46 +1,54 @@
1
- import { Anatomy } from '../schema/axis/shape/Shape.js';
2
- import { Boundary } from '../schema/axis/boundary/Boundary.js';
3
- import { Lifecycle } from '../schema/axis/lifecycle/Lifecycle.js';
4
- import { Role } from '../schema/axis/role/Role.js';
5
- import { RowJudge } from '../judge/RowJudge.js';
6
- import { RowRefusal } from '../judge/RowRefusal.js';
7
- /** A value of the wrong type for the declared shape — the one violation every field has. */
1
+ import { Shapes } from '../axis/shape/Shape.js';
2
+ import { Boundary } from '../axis/boundary/Boundary.js';
3
+ import { Lifecycle } from '../axis/lifecycle/Lifecycle.js';
4
+ import { Role } from '../axis/role/Role.js';
5
+ import { InputValidator } from '../validator/InputValidator.js';
6
+ import { InputRefusal } from '../validator/InputRefusal.js';
7
+ /**
8
+ * So every field has at least one case, whatever else it declares.
9
+ * FR : pour que chaque champ ait un cas, quoi qu'il déclare par ailleurs.
10
+ * `text()` → `42`; `number()` → `'not-a-value-of-this-shape'`
11
+ */
8
12
  function wrongTypeFor(field) {
9
13
  const declared = field.shape.type;
10
14
  const names = Array.isArray(declared) ? declared : [declared];
11
15
  return names.includes('string') ? 42 : 'not-a-value-of-this-shape';
12
16
  }
13
- /** Values that break a stated bound. Empty when the field states none. */
17
+ /**
18
+ * So a bound stated in a shape produces the case that breaks it, and none is invented.
19
+ * FR : pour qu'une borne énoncée produise le cas qui la casse, et aucun autre.
20
+ * `text({ maxLength: 3 })` → one case with `'xxxx'`; `text()` → no case
21
+ */
14
22
  function outOfBoundsFor(field) {
15
- // Through `Anatomy`, not a cast: the cast admitted any keyword, and it declared
23
+ // Through `Shapes`, not a cast: the cast admitted any keyword, and it declared
16
24
  // `maxItems` — which no branch below ever produced. In the one function whose job is
17
25
  // to be exhaustive, a bound the type does not carry is a case nobody notices missing.
18
- const shape = Anatomy.of(field.shape).base;
19
- const out = [];
26
+ const shape = Shapes.of(field.shape).base;
27
+ const cases = [];
20
28
  if (shape?.type === 'string') {
21
29
  if (typeof shape.minLength === 'number' && shape.minLength > 0)
22
- out.push({ why: 'shorter than min', value: 'x'.repeat(shape.minLength - 1) });
30
+ cases.push({ why: 'shorter than min', value: 'x'.repeat(shape.minLength - 1) });
23
31
  if (typeof shape.maxLength === 'number')
24
- out.push({ why: 'longer than max', value: 'x'.repeat(shape.maxLength + 1) });
32
+ cases.push({ why: 'longer than max', value: 'x'.repeat(shape.maxLength + 1) });
25
33
  if (shape.enum)
26
- out.push({ why: 'outside the stated set', value: '__not-in-enum__' });
34
+ cases.push({ why: 'outside the stated set', value: '__not-in-enum__' });
27
35
  }
28
36
  if (shape?.type === 'number' || shape?.type === 'integer') {
29
37
  if (typeof shape.minimum === 'number')
30
- out.push({ why: 'below minimum', value: shape.minimum - 1 });
38
+ cases.push({ why: 'below minimum', value: shape.minimum - 1 });
31
39
  if (typeof shape.maximum === 'number')
32
- out.push({ why: 'above maximum', value: shape.maximum + 1 });
40
+ cases.push({ why: 'above maximum', value: shape.maximum + 1 });
33
41
  }
34
42
  if (shape?.type === 'array') {
35
43
  if (typeof shape.minItems === 'number' && shape.minItems > 0)
36
- out.push({ why: 'fewer items than min', value: [] });
44
+ cases.push({ why: 'fewer items than min', value: [] });
37
45
  if (typeof shape.maxItems === 'number')
38
- out.push({
46
+ cases.push({
39
47
  why: 'more items than max',
40
48
  value: Array.from({ length: shape.maxItems + 1 }, () => null),
41
49
  });
42
50
  }
43
- return out;
51
+ return cases;
44
52
  }
45
53
  /**
46
54
  * The decision table, enumerated on the entity's own fields.
@@ -56,12 +64,6 @@ export class Cases {
56
64
  static of(entity, valid) {
57
65
  return new Cases(enumerate(entity, valid));
58
66
  }
59
- /**
60
- * Whether a verdict is the one a case expected.
61
- *
62
- * Takes the RESULT rather than the input so the same reader serves the local judge, the
63
- * façade and a door — the three that have to agree.
64
- */
65
67
  static holds(expected, result) {
66
68
  if (expected === 'accept')
67
69
  return result.success;
@@ -69,29 +71,32 @@ export class Cases {
69
71
  return false;
70
72
  return (result.errors ?? []).some((error) => error.path === expected.reject);
71
73
  }
72
- /** Every way a row is refused for its structure — the closed set this table must cover. */
73
74
  static get refusals() {
74
- return Object.values(RowRefusal);
75
+ return Object.values(InputRefusal);
75
76
  }
76
77
  [Symbol.iterator]() {
77
78
  return this.all[Symbol.iterator]();
78
79
  }
79
80
  }
81
+ /**
82
+ * So the four axes decide which cases exist, and no list of them is maintained by hand.
83
+ * FR : pour que les axes décident des cas, sans liste tenue à la main.
84
+ */
80
85
  function enumerate(entity, valid) {
81
86
  const fields = entity.getFields();
82
- const judge = RowJudge.of(fields);
87
+ const validator = InputValidator.of(fields);
83
88
  const cases = [];
84
89
  const withField = (name, value) => ({ ...valid, [name]: value });
85
- cases.push({ why: 'a valid body', body: valid, patch: false, expect: 'accept' });
90
+ cases.push({ why: 'a valid input', input: valid, patch: false, expect: 'accept' });
86
91
  cases.push({
87
92
  why: 'a key outside the contract',
88
- body: { ...valid, __unknown__: 'x' },
93
+ input: { ...valid, __unknown__: 'x' },
89
94
  patch: false,
90
95
  expect: { reject: '__unknown__' },
91
96
  });
92
97
  cases.push({
93
98
  why: 'not an object at all',
94
- body: 'a string',
99
+ input: 'a string',
95
100
  patch: false,
96
101
  expect: { reject: '.' },
97
102
  });
@@ -99,15 +104,15 @@ function enumerate(entity, valid) {
99
104
  // A reference names a row that must exist; the caller supplied its id and we do not
100
105
  // get to invent a second one, so the only case we can state about it is the bound one.
101
106
  const isRef = Role.of(field).isReference;
102
- if (judge.onAbsent(field) === null && name in valid) {
103
- const body = { ...valid };
104
- delete body[name];
105
- cases.push({ why: `${name} absent`, body, patch: false, expect: { reject: name } });
107
+ if (validator.onAbsent(field) === null && name in valid) {
108
+ const input = { ...valid };
109
+ delete input[name];
110
+ cases.push({ why: `${name} absent`, input, patch: false, expect: { reject: name } });
106
111
  }
107
112
  if (Boundary.of(field).readOnly) {
108
113
  cases.push({
109
114
  why: `${name} supplied although read-only`,
110
- body: withField(name, wrongTypeFor(field)),
115
+ input: withField(name, wrongTypeFor(field)),
111
116
  patch: false,
112
117
  expect: { reject: name },
113
118
  });
@@ -115,7 +120,7 @@ function enumerate(entity, valid) {
115
120
  if (Lifecycle.of(field).immutable && !Role.of(field).isPrimary) {
116
121
  cases.push({
117
122
  why: `${name} supplied on an update`,
118
- body: { [name]: valid[name] ?? wrongTypeFor(field) },
123
+ input: { [name]: valid[name] ?? wrongTypeFor(field) },
119
124
  patch: true,
120
125
  expect: { reject: name },
121
126
  });
@@ -123,14 +128,14 @@ function enumerate(entity, valid) {
123
128
  if (name in valid && !isRef) {
124
129
  cases.push({
125
130
  why: `${name} of the wrong type`,
126
- body: withField(name, wrongTypeFor(field)),
131
+ input: withField(name, wrongTypeFor(field)),
127
132
  patch: false,
128
133
  expect: { reject: name },
129
134
  });
130
135
  for (const { why, value } of outOfBoundsFor(field))
131
136
  cases.push({
132
137
  why: `${name} ${why}`,
133
- body: withField(name, value),
138
+ input: withField(name, value),
134
139
  patch: false,
135
140
  expect: { reject: name },
136
141
  });