@fougere/schema 0.6.0-alpha.0 → 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 (421) 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} +21 -61
  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 +5 -3
  67. package/dist/axis/shape/Shape.d.ts.map +1 -0
  68. package/dist/{schema/axis → axis}/shape/Shape.js +13 -13
  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 +2 -3
  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 +27 -30
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +20 -23
  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/utils.d.ts.map +1 -0
  101. package/dist/lib/utils.js.map +1 -0
  102. package/dist/projection/Cases.d.ts +9 -20
  103. package/dist/projection/Cases.d.ts.map +1 -1
  104. package/dist/projection/Cases.js +44 -39
  105. package/dist/projection/Cases.js.map +1 -1
  106. package/dist/projection/Visibility.d.ts +2 -1
  107. package/dist/projection/Visibility.d.ts.map +1 -1
  108. package/dist/projection/Visibility.js +4 -3
  109. package/dist/projection/Visibility.js.map +1 -1
  110. package/dist/projection/card/Bundle.d.ts +1 -1
  111. package/dist/projection/card/Bundle.d.ts.map +1 -1
  112. package/dist/projection/card/Bundle.js +7 -7
  113. package/dist/projection/card/Bundle.js.map +1 -1
  114. package/dist/projection/card/Card.d.ts +7 -13
  115. package/dist/projection/card/Card.d.ts.map +1 -1
  116. package/dist/projection/card/Card.js +96 -69
  117. package/dist/projection/card/Card.js.map +1 -1
  118. package/dist/projection/card/Descriptor.d.ts +7 -7
  119. package/dist/projection/card/Descriptor.d.ts.map +1 -1
  120. package/dist/projection/card/admission.d.ts +15 -5
  121. package/dist/projection/card/admission.d.ts.map +1 -1
  122. package/dist/projection/card/admission.js +15 -5
  123. package/dist/projection/card/admission.js.map +1 -1
  124. package/dist/projection/card/diff.d.ts +2 -2
  125. package/dist/projection/card/diff.d.ts.map +1 -1
  126. package/dist/{judge/result.d.ts → validation.d.ts} +1 -1
  127. package/dist/validation.d.ts.map +1 -0
  128. package/dist/validation.js +2 -0
  129. package/dist/validation.js.map +1 -0
  130. package/dist/validator/AdapterFieldValidator.d.ts +14 -0
  131. package/dist/validator/AdapterFieldValidator.d.ts.map +1 -0
  132. package/dist/validator/AdapterFieldValidator.js +36 -0
  133. package/dist/validator/AdapterFieldValidator.js.map +1 -0
  134. package/dist/validator/FieldDeclarationValidator.d.ts +9 -0
  135. package/dist/validator/FieldDeclarationValidator.d.ts.map +1 -0
  136. package/dist/{judge/FieldJudge.js → validator/FieldDeclarationValidator.js} +8 -8
  137. package/dist/validator/FieldDeclarationValidator.js.map +1 -0
  138. package/dist/validator/FieldValueValidator.d.ts +13 -0
  139. package/dist/validator/FieldValueValidator.d.ts.map +1 -0
  140. package/dist/{judge/ValueJudge.js → validator/FieldValueValidator.js} +12 -11
  141. package/dist/validator/FieldValueValidator.js.map +1 -0
  142. package/dist/{judge/RowRefusal.d.ts → validator/InputRefusal.d.ts} +3 -4
  143. package/dist/validator/InputRefusal.d.ts.map +1 -0
  144. package/dist/{judge/RowRefusal.js → validator/InputRefusal.js} +3 -3
  145. package/dist/validator/InputRefusal.js.map +1 -0
  146. package/dist/validator/InputValidator.d.ts +15 -0
  147. package/dist/validator/InputValidator.d.ts.map +1 -0
  148. package/dist/{judge/RowJudge.js → validator/InputValidator.js} +24 -20
  149. package/dist/validator/InputValidator.js.map +1 -0
  150. package/dist/vocabulary/bool.d.ts +6 -1
  151. package/dist/vocabulary/bool.d.ts.map +1 -1
  152. package/dist/vocabulary/bool.js +6 -1
  153. package/dist/vocabulary/bool.js.map +1 -1
  154. package/dist/vocabulary/created.d.ts +6 -1
  155. package/dist/vocabulary/created.d.ts.map +1 -1
  156. package/dist/vocabulary/created.js +5 -0
  157. package/dist/vocabulary/created.js.map +1 -1
  158. package/dist/vocabulary/date.d.ts +6 -1
  159. package/dist/vocabulary/date.d.ts.map +1 -1
  160. package/dist/vocabulary/date.js +6 -1
  161. package/dist/vocabulary/date.js.map +1 -1
  162. package/dist/vocabulary/email.d.ts +6 -1
  163. package/dist/vocabulary/email.d.ts.map +1 -1
  164. package/dist/vocabulary/email.js +5 -0
  165. package/dist/vocabulary/email.js.map +1 -1
  166. package/dist/vocabulary/immutable.d.ts +6 -1
  167. package/dist/vocabulary/immutable.d.ts.map +1 -1
  168. package/dist/vocabulary/immutable.js +5 -0
  169. package/dist/vocabulary/immutable.js.map +1 -1
  170. package/dist/vocabulary/indexed.d.ts +6 -1
  171. package/dist/vocabulary/indexed.d.ts.map +1 -1
  172. package/dist/vocabulary/indexed.js +5 -0
  173. package/dist/vocabulary/indexed.js.map +1 -1
  174. package/dist/vocabulary/json.d.ts +2 -2
  175. package/dist/vocabulary/json.d.ts.map +1 -1
  176. package/dist/vocabulary/json.js +9 -4
  177. package/dist/vocabulary/json.js.map +1 -1
  178. package/dist/vocabulary/list.d.ts +6 -1
  179. package/dist/vocabulary/list.d.ts.map +1 -1
  180. package/dist/vocabulary/list.js +6 -1
  181. package/dist/vocabulary/list.js.map +1 -1
  182. package/dist/vocabulary/many.d.ts +7 -2
  183. package/dist/vocabulary/many.d.ts.map +1 -1
  184. package/dist/vocabulary/many.js +7 -2
  185. package/dist/vocabulary/many.js.map +1 -1
  186. package/dist/vocabulary/nullable.d.ts +6 -1
  187. package/dist/vocabulary/nullable.d.ts.map +1 -1
  188. package/dist/vocabulary/nullable.js +7 -2
  189. package/dist/vocabulary/nullable.js.map +1 -1
  190. package/dist/vocabulary/number.d.ts +6 -1
  191. package/dist/vocabulary/number.d.ts.map +1 -1
  192. package/dist/vocabulary/number.js +6 -1
  193. package/dist/vocabulary/number.js.map +1 -1
  194. package/dist/vocabulary/oneOf.d.ts +1 -1
  195. package/dist/vocabulary/oneOf.d.ts.map +1 -1
  196. package/dist/vocabulary/oneOf.js +6 -1
  197. package/dist/vocabulary/oneOf.js.map +1 -1
  198. package/dist/vocabulary/optional.d.ts +6 -1
  199. package/dist/vocabulary/optional.d.ts.map +1 -1
  200. package/dist/vocabulary/optional.js +7 -2
  201. package/dist/vocabulary/optional.js.map +1 -1
  202. package/dist/vocabulary/primary.d.ts +2 -2
  203. package/dist/vocabulary/primary.d.ts.map +1 -1
  204. package/dist/vocabulary/primary.js +7 -2
  205. package/dist/vocabulary/primary.js.map +1 -1
  206. package/dist/vocabulary/readOnly.d.ts +6 -1
  207. package/dist/vocabulary/readOnly.d.ts.map +1 -1
  208. package/dist/vocabulary/readOnly.js +6 -1
  209. package/dist/vocabulary/readOnly.js.map +1 -1
  210. package/dist/vocabulary/ref.d.ts +7 -2
  211. package/dist/vocabulary/ref.d.ts.map +1 -1
  212. package/dist/vocabulary/ref.js +7 -2
  213. package/dist/vocabulary/ref.js.map +1 -1
  214. package/dist/vocabulary/text.d.ts +7 -2
  215. package/dist/vocabulary/text.d.ts.map +1 -1
  216. package/dist/vocabulary/text.js +6 -1
  217. package/dist/vocabulary/text.js.map +1 -1
  218. package/dist/vocabulary/unique.d.ts +6 -1
  219. package/dist/vocabulary/unique.d.ts.map +1 -1
  220. package/dist/vocabulary/unique.js +7 -3
  221. package/dist/vocabulary/unique.js.map +1 -1
  222. package/dist/vocabulary/updated.d.ts +6 -1
  223. package/dist/vocabulary/updated.d.ts.map +1 -1
  224. package/dist/vocabulary/updated.js +5 -0
  225. package/dist/vocabulary/updated.js.map +1 -1
  226. package/dist/vocabulary/url.d.ts +6 -1
  227. package/dist/vocabulary/url.d.ts.map +1 -1
  228. package/dist/vocabulary/url.js +5 -0
  229. package/dist/vocabulary/url.js.map +1 -1
  230. package/dist/vocabulary/vocabulary.d.ts +6 -1
  231. package/dist/vocabulary/vocabulary.d.ts.map +1 -1
  232. package/dist/vocabulary/vocabulary.js +22 -12
  233. package/dist/vocabulary/vocabulary.js.map +1 -1
  234. package/dist/vocabulary/writeOnly.d.ts +6 -1
  235. package/dist/vocabulary/writeOnly.d.ts.map +1 -1
  236. package/dist/vocabulary/writeOnly.js +6 -1
  237. package/dist/vocabulary/writeOnly.js.map +1 -1
  238. package/package.json +1 -1
  239. package/src/{schema/Schema.ts → Schema.ts} +31 -74
  240. package/src/SchemaDefinition.ts +257 -0
  241. package/src/SchemaDerivation.ts +44 -0
  242. package/src/{schema/SchemaView.ts → SchemaView.ts} +9 -9
  243. package/src/{schema/axis → axis}/Axis.ts +2 -2
  244. package/src/axis/boundary/Boundaries.ts +37 -0
  245. package/src/{schema/axis → axis}/boundary/Boundary.ts +9 -7
  246. package/src/{schema/axis → axis}/boundary/BoundaryAxis.ts +4 -4
  247. package/src/{schema/axis → axis}/lifecycle/Clock.ts +1 -1
  248. package/src/axis/lifecycle/Generators.ts +29 -0
  249. package/src/{schema/axis → axis}/lifecycle/LifecycleAxis.ts +12 -7
  250. package/src/axis/lifecycle/apply.ts +53 -0
  251. package/src/{schema/axis → axis}/role/Relation.ts +6 -5
  252. package/src/axis/role/Role.ts +52 -0
  253. package/src/{schema/axis → axis}/role/RoleAxis.ts +28 -40
  254. package/src/axis/shape/Formats.ts +20 -0
  255. package/src/{schema/axis → axis}/shape/Shape.ts +18 -18
  256. package/src/entity/EntityAdapterSet.ts +81 -0
  257. package/src/entity/EntityAdapters.ts +4 -96
  258. package/src/entity/EntityDeclarations.ts +1 -1
  259. package/src/entity.ts +7 -2
  260. package/src/{schema/fields → field}/Field.ts +8 -26
  261. package/src/field/FieldSet.ts +75 -0
  262. package/src/index.ts +29 -44
  263. package/src/lib/Registry.ts +37 -0
  264. package/src/projection/Cases.ts +56 -55
  265. package/src/projection/Visibility.ts +5 -4
  266. package/src/projection/card/Bundle.ts +9 -9
  267. package/src/projection/card/Card.ts +101 -74
  268. package/src/projection/card/Descriptor.ts +7 -7
  269. package/src/projection/card/admission.ts +16 -6
  270. package/src/projection/card/diff.ts +2 -2
  271. package/src/validator/AdapterFieldValidator.ts +40 -0
  272. package/src/{judge/FieldJudge.ts → validator/FieldDeclarationValidator.ts} +10 -10
  273. package/src/{judge/ValueJudge.ts → validator/FieldValueValidator.ts} +14 -13
  274. package/src/{judge/RowRefusal.ts → validator/InputRefusal.ts} +2 -4
  275. package/src/{judge/RowJudge.ts → validator/InputValidator.ts} +30 -23
  276. package/src/vocabulary/bool.ts +6 -1
  277. package/src/vocabulary/created.ts +6 -1
  278. package/src/vocabulary/date.ts +6 -1
  279. package/src/vocabulary/email.ts +6 -1
  280. package/src/vocabulary/immutable.ts +6 -1
  281. package/src/vocabulary/indexed.ts +6 -1
  282. package/src/vocabulary/json.ts +10 -5
  283. package/src/vocabulary/list.ts +6 -1
  284. package/src/vocabulary/many.ts +7 -2
  285. package/src/vocabulary/nullable.ts +8 -3
  286. package/src/vocabulary/number.ts +6 -1
  287. package/src/vocabulary/oneOf.ts +6 -1
  288. package/src/vocabulary/optional.ts +8 -3
  289. package/src/vocabulary/primary.ts +7 -2
  290. package/src/vocabulary/readOnly.ts +7 -2
  291. package/src/vocabulary/ref.ts +7 -2
  292. package/src/vocabulary/text.ts +7 -2
  293. package/src/vocabulary/unique.ts +8 -4
  294. package/src/vocabulary/updated.ts +6 -1
  295. package/src/vocabulary/url.ts +6 -1
  296. package/src/vocabulary/vocabulary.ts +22 -12
  297. package/src/vocabulary/writeOnly.ts +7 -2
  298. package/dist/judge/FieldJudge.d.ts +0 -9
  299. package/dist/judge/FieldJudge.d.ts.map +0 -1
  300. package/dist/judge/FieldJudge.js.map +0 -1
  301. package/dist/judge/RowJudge.d.ts +0 -12
  302. package/dist/judge/RowJudge.d.ts.map +0 -1
  303. package/dist/judge/RowJudge.js.map +0 -1
  304. package/dist/judge/RowRefusal.d.ts.map +0 -1
  305. package/dist/judge/RowRefusal.js.map +0 -1
  306. package/dist/judge/ValueJudge.d.ts +0 -12
  307. package/dist/judge/ValueJudge.d.ts.map +0 -1
  308. package/dist/judge/ValueJudge.js.map +0 -1
  309. package/dist/judge/options.d.ts +0 -4
  310. package/dist/judge/options.d.ts.map +0 -1
  311. package/dist/judge/options.js +0 -2
  312. package/dist/judge/options.js.map +0 -1
  313. package/dist/judge/result.d.ts.map +0 -1
  314. package/dist/judge/result.js +0 -2
  315. package/dist/judge/result.js.map +0 -1
  316. package/dist/projection/SchemaOrCard.d.ts +0 -7
  317. package/dist/projection/SchemaOrCard.d.ts.map +0 -1
  318. package/dist/projection/SchemaOrCard.js +0 -11
  319. package/dist/projection/SchemaOrCard.js.map +0 -1
  320. package/dist/projection/card/EntityTypeSource.d.ts +0 -12
  321. package/dist/projection/card/EntityTypeSource.d.ts.map +0 -1
  322. package/dist/projection/card/EntityTypeSource.js +0 -78
  323. package/dist/projection/card/EntityTypeSource.js.map +0 -1
  324. package/dist/projection/card/FacadeTypeSource.d.ts +0 -19
  325. package/dist/projection/card/FacadeTypeSource.d.ts.map +0 -1
  326. package/dist/projection/card/FacadeTypeSource.js +0 -40
  327. package/dist/projection/card/FacadeTypeSource.js.map +0 -1
  328. package/dist/schema/Schema.d.ts.map +0 -1
  329. package/dist/schema/Schema.js.map +0 -1
  330. package/dist/schema/SchemaDefinition.d.ts +0 -60
  331. package/dist/schema/SchemaDefinition.d.ts.map +0 -1
  332. package/dist/schema/SchemaDefinition.js +0 -85
  333. package/dist/schema/SchemaDefinition.js.map +0 -1
  334. package/dist/schema/SchemaDerivation.d.ts +0 -34
  335. package/dist/schema/SchemaDerivation.d.ts.map +0 -1
  336. package/dist/schema/SchemaDerivation.js +0 -51
  337. package/dist/schema/SchemaDerivation.js.map +0 -1
  338. package/dist/schema/SchemaView.d.ts.map +0 -1
  339. package/dist/schema/axis/Axis.d.ts.map +0 -1
  340. package/dist/schema/axis/Axis.js.map +0 -1
  341. package/dist/schema/axis/Meta.d.ts.map +0 -1
  342. package/dist/schema/axis/boundary/Boundaries.d.ts +0 -20
  343. package/dist/schema/axis/boundary/Boundaries.d.ts.map +0 -1
  344. package/dist/schema/axis/boundary/Boundaries.js +0 -31
  345. package/dist/schema/axis/boundary/Boundaries.js.map +0 -1
  346. package/dist/schema/axis/boundary/Boundary.d.ts.map +0 -1
  347. package/dist/schema/axis/boundary/Boundary.js.map +0 -1
  348. package/dist/schema/axis/boundary/BoundaryAxis.d.ts.map +0 -1
  349. package/dist/schema/axis/boundary/BoundaryAxis.js.map +0 -1
  350. package/dist/schema/axis/lifecycle/Clock.d.ts.map +0 -1
  351. package/dist/schema/axis/lifecycle/Clock.js.map +0 -1
  352. package/dist/schema/axis/lifecycle/Generators.d.ts +0 -18
  353. package/dist/schema/axis/lifecycle/Generators.d.ts.map +0 -1
  354. package/dist/schema/axis/lifecycle/Generators.js +0 -38
  355. package/dist/schema/axis/lifecycle/Generators.js.map +0 -1
  356. package/dist/schema/axis/lifecycle/Lifecycle.d.ts.map +0 -1
  357. package/dist/schema/axis/lifecycle/Lifecycle.js.map +0 -1
  358. package/dist/schema/axis/lifecycle/LifecycleAxis.d.ts.map +0 -1
  359. package/dist/schema/axis/lifecycle/LifecycleAxis.js.map +0 -1
  360. package/dist/schema/axis/lifecycle/apply.d.ts +0 -6
  361. package/dist/schema/axis/lifecycle/apply.d.ts.map +0 -1
  362. package/dist/schema/axis/lifecycle/apply.js +0 -34
  363. package/dist/schema/axis/lifecycle/apply.js.map +0 -1
  364. package/dist/schema/axis/role/Relation.d.ts.map +0 -1
  365. package/dist/schema/axis/role/Relation.js.map +0 -1
  366. package/dist/schema/axis/role/Role.d.ts.map +0 -1
  367. package/dist/schema/axis/role/Role.js +0 -40
  368. package/dist/schema/axis/role/Role.js.map +0 -1
  369. package/dist/schema/axis/role/RoleAxis.d.ts.map +0 -1
  370. package/dist/schema/axis/role/RoleAxis.js.map +0 -1
  371. package/dist/schema/axis/shape/Formats.d.ts +0 -8
  372. package/dist/schema/axis/shape/Formats.d.ts.map +0 -1
  373. package/dist/schema/axis/shape/Formats.js +0 -10
  374. package/dist/schema/axis/shape/Formats.js.map +0 -1
  375. package/dist/schema/axis/shape/Shape.d.ts.map +0 -1
  376. package/dist/schema/axis/shape/Shape.js.map +0 -1
  377. package/dist/schema/fields/Field.d.ts.map +0 -1
  378. package/dist/schema/fields/Field.js +0 -52
  379. package/dist/schema/fields/Field.js.map +0 -1
  380. package/dist/schema/fields/FieldSet.d.ts +0 -28
  381. package/dist/schema/fields/FieldSet.d.ts.map +0 -1
  382. package/dist/schema/fields/FieldSet.js +0 -55
  383. package/dist/schema/fields/FieldSet.js.map +0 -1
  384. package/dist/schema/fields/constraint/FieldGroup.d.ts +0 -21
  385. package/dist/schema/fields/constraint/FieldGroup.d.ts.map +0 -1
  386. package/dist/schema/fields/constraint/FieldGroup.js +0 -65
  387. package/dist/schema/fields/constraint/FieldGroup.js.map +0 -1
  388. package/dist/schema/fields/constraint/Unique.d.ts +0 -4
  389. package/dist/schema/fields/constraint/Unique.d.ts.map +0 -1
  390. package/dist/schema/fields/constraint/Unique.js +0 -4
  391. package/dist/schema/fields/constraint/Unique.js.map +0 -1
  392. package/dist/utils.d.ts.map +0 -1
  393. package/dist/utils.js.map +0 -1
  394. package/src/judge/options.ts +0 -3
  395. package/src/projection/SchemaOrCard.ts +0 -18
  396. package/src/projection/card/EntityTypeSource.ts +0 -90
  397. package/src/projection/card/FacadeTypeSource.ts +0 -55
  398. package/src/schema/SchemaDefinition.ts +0 -150
  399. package/src/schema/SchemaDerivation.ts +0 -65
  400. package/src/schema/axis/boundary/Boundaries.ts +0 -44
  401. package/src/schema/axis/lifecycle/Generators.ts +0 -46
  402. package/src/schema/axis/lifecycle/apply.ts +0 -39
  403. package/src/schema/axis/role/Role.ts +0 -56
  404. package/src/schema/axis/shape/Formats.ts +0 -22
  405. package/src/schema/fields/FieldSet.ts +0 -63
  406. package/src/schema/fields/constraint/FieldGroup.ts +0 -84
  407. package/src/schema/fields/constraint/Unique.ts +0 -3
  408. /package/dist/{schema/SchemaView.js → SchemaView.js} +0 -0
  409. /package/dist/{schema/axis → axis}/Axis.js +0 -0
  410. /package/dist/{schema/axis → axis}/Meta.d.ts +0 -0
  411. /package/dist/{schema/axis → axis}/Meta.js +0 -0
  412. /package/dist/{schema/axis → axis}/boundary/BoundaryAxis.d.ts +0 -0
  413. /package/dist/{schema/axis → axis}/lifecycle/Lifecycle.d.ts +0 -0
  414. /package/dist/{schema/axis → axis}/lifecycle/Lifecycle.js +0 -0
  415. /package/dist/{schema/axis → axis}/lifecycle/LifecycleAxis.d.ts +0 -0
  416. /package/dist/{utils.d.ts → lib/utils.d.ts} +0 -0
  417. /package/dist/{utils.js → lib/utils.js} +0 -0
  418. /package/src/{schema/axis → axis}/Meta.ts +0 -0
  419. /package/src/{schema/axis → axis}/lifecycle/Lifecycle.ts +0 -0
  420. /package/src/{utils.ts → lib/utils.ts} +0 -0
  421. /package/src/{judge/result.ts → validation.ts} +0 -0
@@ -1,20 +1,23 @@
1
- import { Boundary } from '../schema/axis/boundary/Boundary.js';
2
- import { Lifecycle } from '../schema/axis/lifecycle/Lifecycle.js';
3
- import { Role } from '../schema/axis/role/Role.js';
4
- import type { Field, Fields } from '../schema/fields/Field.js';
5
- import type { ValidateOptions } from './options.js';
6
- import type { ValidationError, ValidationResult } from './result.js';
7
- import { ValueJudge } from './ValueJudge.js';
8
- import { RowRefusal } from './RowRefusal.js';
1
+ import { Boundary } from '../axis/boundary/Boundary.js';
2
+ import { Lifecycle } from '../axis/lifecycle/Lifecycle.js';
3
+ import { Role } from '../axis/role/Role.js';
4
+ import type { Field, Fields } from '../field/Field.js';
5
+ import type { ValidationError, ValidationResult } from '../validation.js';
6
+ import { FieldValueValidator } from './FieldValueValidator.js';
7
+ import { InputRefusal } from './InputRefusal.js';
9
8
 
10
- export class RowJudge {
9
+ export interface ValidateOptions {
10
+ patch?: boolean;
11
+ }
12
+
13
+ export class InputValidator {
11
14
  private constructor(
12
15
  private readonly fields: Fields,
13
16
  private readonly options: ValidateOptions,
14
17
  ) {}
15
18
 
16
- static of(fields: Fields, options: ValidateOptions = {}): RowJudge {
17
- return new RowJudge(fields, options);
19
+ static of(fields: Fields, options: ValidateOptions = {}): InputValidator {
20
+ return new InputValidator(fields, options);
18
21
  }
19
22
 
20
23
  onAbsent(field: Field): 'skip' | 'empty-list' | null {
@@ -24,18 +27,22 @@ export class RowJudge {
24
27
  return null;
25
28
  }
26
29
 
27
- check(input: unknown): ValidationResult<Record<string, unknown>> {
30
+ /** Hands on the value it PARSED, so a handler never re-checks a row. */
31
+ validate(input: unknown): ValidationResult<Record<string, unknown>> {
28
32
  if (typeof input !== 'object' || input === null) {
29
- return { success: false, errors: [{ path: '.', message: RowRefusal.notAnObject }] };
33
+ return {
34
+ success: false,
35
+ errors: [{ path: '.', message: InputRefusal.notAnObject }],
36
+ };
30
37
  }
31
38
 
32
39
  const data = input as Record<string, unknown>;
33
40
  const errors: ValidationError[] = [];
34
- const out: Record<string, unknown> = {};
41
+ const row: Record<string, unknown> = {};
35
42
 
36
43
  for (const key of Object.keys(data)) {
37
44
  if (!(key in this.fields)) {
38
- errors.push({ path: key, message: RowRefusal.unknownField });
45
+ errors.push({ path: key, message: InputRefusal.unknownField });
39
46
  }
40
47
  }
41
48
 
@@ -47,38 +54,38 @@ export class RowJudge {
47
54
  if (this.options.patch) continue;
48
55
  const absence = this.onAbsent(field);
49
56
  if (absence === null) {
50
- errors.push({ path, message: RowRefusal.required });
57
+ errors.push({ path, message: InputRefusal.required });
51
58
  continue;
52
59
  }
53
- if (absence === 'empty-list') out[key] = [];
60
+ if (absence === 'empty-list') row[key] = [];
54
61
  continue;
55
62
  }
56
63
 
57
64
  const boundary = Boundary.of(field);
58
65
  if (boundary.readOnly) {
59
- errors.push({ path, message: RowRefusal.readOnly });
66
+ errors.push({ path, message: InputRefusal.readOnly });
60
67
  continue;
61
68
  }
62
69
  if (this.options.patch && Lifecycle.of(field).immutable) {
63
- errors.push({ path, message: RowRefusal.immutable });
70
+ errors.push({ path, message: InputRefusal.immutable });
64
71
  continue;
65
72
  }
66
73
 
67
- const checked = ValueJudge.of(field).check(value);
74
+ const checked = FieldValueValidator.of(field).validate(value);
68
75
  if ('error' in checked) {
69
76
  errors.push({ path, message: checked.error });
70
77
  continue;
71
78
  }
72
79
  if (checked.value === null) {
73
- out[key] = null;
80
+ row[key] = null;
74
81
  continue;
75
82
  }
76
83
  const decoded = boundary.decode(checked.value);
77
84
  if ('error' in decoded) errors.push({ path, message: decoded.error });
78
- else out[key] = decoded.value;
85
+ else row[key] = decoded.value;
79
86
  }
80
87
 
81
88
  if (errors.length > 0) return { success: false, errors };
82
- return { success: true, data: out };
89
+ return { success: true, data: row };
83
90
  }
84
91
  }
@@ -1,5 +1,10 @@
1
- import { Field } from '../schema/fields/Field.js';
1
+ import { Field } from '../field/Field.js';
2
2
 
3
+ /**
4
+ * So a default is a lifecycle rule, not a value the handler remembers to set.
5
+ * FR : pour qu'un défaut soit une règle de cycle de vie, pas un oubli possible du handler.
6
+ * `bool({ default: false })`
7
+ */
3
8
  export function bool(opts?: { default?: boolean; description?: string }): Field<boolean> {
4
9
  return new Field<boolean>({
5
10
  shape: { type: 'boolean' },
@@ -1,6 +1,11 @@
1
- import { Field } from '../schema/fields/Field.js';
1
+ import { Field } from '../field/Field.js';
2
2
  import { date } from './date.js';
3
3
 
4
+ /**
5
+ * So a creation stamp is written by the storage and refused from a client.
6
+ * FR : pour qu'un horodatage de création soit écrit par le storage et refusé au client.
7
+ * `created()` → `create: 'now'`, `update: 'forbidden'`
8
+ */
4
9
  export function created(): Field<Date> {
5
10
  return date().with({
6
11
  lifecycle: { create: 'now', update: 'forbidden' },
@@ -1,5 +1,10 @@
1
- import { Field } from '../schema/fields/Field.js';
1
+ import { Field } from '../field/Field.js';
2
2
 
3
+ /**
4
+ * So a date is a string on the wire and a `Date` in a handler, with no word said.
5
+ * FR : pour qu'une date soit une chaîne sur le fil et une `Date` dans un handler.
6
+ * `date()` → `{ type: 'string', format: 'date-time' }`, decoded by the `isoDate` boundary
7
+ */
3
8
  export function date(): Field<Date> {
4
9
  return new Field<Date>({ shape: { type: 'string', format: 'date-time' } });
5
10
  }
@@ -1,6 +1,11 @@
1
1
  import { text, type TextOptions } from './text.js';
2
- import type { Field } from '../schema/fields/Field.js';
2
+ import type { Field } from '../field/Field.js';
3
3
 
4
+ /**
5
+ * So the format is stated once, where everyone would otherwise write the same regex.
6
+ * FR : pour que le format soit énoncé une fois, là où chacun réécrirait la même regex.
7
+ * `email({ max: 254 })`
8
+ */
4
9
  export function email(opts?: Omit<TextOptions, 'format'>): Field<string> {
5
10
  return text({ ...opts, format: 'email' });
6
11
  }
@@ -1,6 +1,11 @@
1
1
  import { vocabulary } from './vocabulary.js';
2
- import { Field } from '../schema/fields/Field.js';
2
+ import { Field } from '../field/Field.js';
3
3
 
4
+ /**
5
+ * So a write-once field is refused on a patch by the validator, not by the table.
6
+ * FR : pour qu'un champ écrit une fois soit refusé par le juge sur une modification.
7
+ * `immutable(text())` → `update: 'forbidden'`
8
+ */
4
9
  export const immutable: <T>(field: Field<T>) => Field<T> = vocabulary(
5
10
  'immutable',
6
11
  () => ({
@@ -1,6 +1,11 @@
1
1
  import { vocabulary } from './vocabulary.js';
2
- import { Field } from '../schema/fields/Field.js';
2
+ import { Field } from '../field/Field.js';
3
3
 
4
+ /**
5
+ * So the entity states the index, and the DDL is the one that emits it.
6
+ * FR : pour que l'entité énonce l'index, le DDL étant celui qui l'émet.
7
+ * `indexed(text())` → `role.index` is `true`
8
+ */
4
9
  export const indexed: <T>(field: Field<T>) => Field<T> = vocabulary('indexed', () => ({
5
10
  role: { index: true },
6
11
  }));
@@ -1,22 +1,27 @@
1
- import { Field } from '../schema/fields/Field.js';
2
- import type { SchemaView } from '../schema/SchemaView.js';
3
- import { RowJudge } from '../judge/RowJudge.js';
1
+ import { Field } from '../field/Field.js';
2
+ import type { SchemaView } from '../SchemaView.js';
3
+ import { InputValidator } from '../validator/InputValidator.js';
4
4
 
5
5
  export function json<T = unknown>(): Field<T>;
6
6
  export function json<E extends SchemaView & (new (...args: any[]) => any)>(
7
7
  of: E,
8
8
  ): Field<InstanceType<E>>;
9
+ /**
10
+ * So a stored object can carry a schema, instead of admitting any shape forever.
11
+ * FR : pour qu'un objet stocké porte un schéma, au lieu d'admettre toute forme à jamais.
12
+ * `json(Address)` → the object's properties and its required keys
13
+ */
9
14
  export function json(of?: SchemaView): Field<unknown> {
10
15
  if (!of) return new Field({ shape: { type: 'object' } });
11
16
  const fields = of.getFields();
12
- const judge = RowJudge.of(fields);
17
+ const validator = InputValidator.of(fields);
13
18
  const properties: Record<string, unknown> = {};
14
19
  const required: string[] = [];
15
20
  for (const [key, field] of Object.entries(fields)) {
16
21
  properties[key] = field.meta?.description
17
22
  ? { ...field.shape, description: field.meta.description }
18
23
  : field.shape;
19
- if (judge.onAbsent(field) === null) required.push(key);
24
+ if (validator.onAbsent(field) === null) required.push(key);
20
25
  }
21
26
  return new Field({
22
27
  shape: { type: 'object', properties, ...(required.length ? { required } : {}) },
@@ -1,10 +1,15 @@
1
- import { Field } from '../schema/fields/Field.js';
1
+ import { Field } from '../field/Field.js';
2
2
 
3
3
  export interface ListOptions {
4
4
  min?: number;
5
5
  max?: number;
6
6
  }
7
7
 
8
+ /**
9
+ * So a list of values is told apart from a relation, which `many()` declares.
10
+ * FR : pour qu'une liste de valeurs se distingue d'une relation, que `many()` déclare.
11
+ * `list(text(), { max: 5 })`; `list(ref(User))` → throws
12
+ */
8
13
  export function list<T>(item: Field<T>, opts?: ListOptions): Field<T[]> {
9
14
  if (item.role?.relation)
10
15
  throw new Error(
@@ -1,6 +1,11 @@
1
- import { Relation, type EntityConstructor } from '../schema/axis/role/Relation.js';
2
- import { Field } from '../schema/fields/Field.js';
1
+ import { Relation, type EntityConstructor } from '../axis/role/Relation.js';
2
+ import { Field } from '../field/Field.js';
3
3
 
4
+ /**
5
+ * So the other side of a reference is declared, and holds no column.
6
+ * FR : pour que l'autre côté d'une référence soit déclaré, sans porter de colonne.
7
+ * `many(() => Post)` → a collection, absent from the row a client sends
8
+ */
4
9
  export function many<E extends EntityConstructor>(
5
10
  target: E | (() => E),
6
11
  ): Field<InstanceType<E>[]> {
@@ -1,10 +1,15 @@
1
1
  import { vocabulary } from './vocabulary.js';
2
- import { Anatomy } from '../schema/axis/shape/Shape.js';
3
- import { type Field } from '../schema/fields/Field.js';
2
+ import { Shapes } from '../axis/shape/Shape.js';
3
+ import { type Field } from '../field/Field.js';
4
4
 
5
+ /**
6
+ * So `null` becomes a legal value, without touching whether the field is required.
7
+ * FR : pour que `null` devienne légal, sans toucher au caractère obligatoire du champ.
8
+ * `nullable(text())` → `{ type: ['string', 'null'] }`, still required at create
9
+ */
5
10
  export const nullable: <T>(field: Field<T>) => Field<T | null> = vocabulary(
6
11
  'nullable',
7
12
  (field) => ({
8
- shape: Anatomy.nullable(field.shape),
13
+ shape: Shapes.nullable(field.shape),
9
14
  }),
10
15
  );
@@ -1,4 +1,4 @@
1
- import { Field } from '../schema/fields/Field.js';
1
+ import { Field } from '../field/Field.js';
2
2
 
3
3
  export interface NumberOptions {
4
4
  min?: number;
@@ -8,6 +8,11 @@ export interface NumberOptions {
8
8
  description?: string;
9
9
  }
10
10
 
11
+ /**
12
+ * So `integer` is a shape, not a second word to remember.
13
+ * FR : pour qu'`integer` soit une forme, pas un second mot à retenir.
14
+ * `number({ integer: true, min: 0 })` → `{ type: 'integer', minimum: 0 }`
15
+ */
11
16
  export function number(opts?: NumberOptions): Field<number> {
12
17
  return new Field<number>({
13
18
  shape: {
@@ -1,4 +1,4 @@
1
- import { Field } from '../schema/fields/Field.js';
1
+ import { Field } from '../field/Field.js';
2
2
 
3
3
  interface OneOfOptions<V extends string = string> {
4
4
  description?: string;
@@ -11,6 +11,11 @@ export function oneOf<const T extends readonly string[]>(
11
11
  export function oneOf<const T extends readonly string[]>(
12
12
  ...args: [...T, OneOfOptions<T[number]>]
13
13
  ): Field<T[number]>;
14
+ /**
15
+ * So the set is in the type and in the CHECK constraint, from one declaration.
16
+ * FR : pour que l'ensemble soit dans le type et dans la contrainte CHECK, d'une déclaration.
17
+ * `oneOf('draft', 'published', { default: 'draft' })`
18
+ */
14
19
  export function oneOf<const T extends readonly string[]>(
15
20
  ...args: [...T] | [...T, OneOfOptions<T[number]>]
16
21
  ): Field<T[number]> {
@@ -1,11 +1,16 @@
1
1
  import { vocabulary } from './vocabulary.js';
2
- import { Anatomy } from '../schema/axis/shape/Shape.js';
3
- import { type Field } from '../schema/fields/Field.js';
2
+ import { Shapes } from '../axis/shape/Shape.js';
3
+ import { type Field } from '../field/Field.js';
4
4
 
5
+ /**
6
+ * So the two questions are settled at once: `null` is legal, and absence is too.
7
+ * FR : pour que les deux questions soient réglées d'un coup : `null` légal, absence permise.
8
+ * `optional(text())` → nullable shape and `create: 'optional'`
9
+ */
5
10
  export const optional: <T>(field: Field<T>) => Field<T | null> = vocabulary(
6
11
  'optional',
7
12
  (field) => ({
8
- shape: Anatomy.nullable(field.shape),
13
+ shape: Shapes.nullable(field.shape),
9
14
  ...(field.lifecycle?.create === undefined
10
15
  ? { lifecycle: { create: 'optional' as const } }
11
16
  : {}),
@@ -1,5 +1,5 @@
1
- import { Field } from '../schema/fields/Field.js';
2
- import { Generators, type GeneratorRef } from '../schema/axis/lifecycle/Generators.js';
1
+ import { Field } from '../field/Field.js';
2
+ import { Generators, type GeneratorRef } from '../axis/lifecycle/Generators.js';
3
3
 
4
4
  interface PrimaryOptions {
5
5
  generate?: GeneratorRef | [name: string, fn: () => string];
@@ -7,6 +7,11 @@ interface PrimaryOptions {
7
7
 
8
8
  export function primary(opts?: PrimaryOptions): Field<string>;
9
9
  export function primary<T>(field: Field<T>): Field<T>;
10
+ /**
11
+ * So an id is generated and write-once by declaring nothing else.
12
+ * FR : pour qu'un identifiant soit généré et écrit une fois sans rien déclarer d'autre.
13
+ * `primary()` → cuid2, `update: 'forbidden'`; `primary(number())` → the same on a number
14
+ */
10
15
  export function primary(fieldOrOptions?: Field | PrimaryOptions): Field {
11
16
  if (Field.is(fieldOrOptions)) {
12
17
  const field = fieldOrOptions;
@@ -1,7 +1,12 @@
1
1
  import { vocabulary } from './vocabulary.js';
2
- import { Boundary } from '../schema/axis/boundary/Boundary.js';
3
- import { Field } from '../schema/fields/Field.js';
2
+ import { Boundary } from '../axis/boundary/Boundary.js';
3
+ import { Field } from '../field/Field.js';
4
4
 
5
+ /**
6
+ * So a field a client may read but never write says so once, on the field.
7
+ * FR : pour qu'un champ lisible mais non écrivable le dise une fois, sur le champ.
8
+ * `readOnly(text())` → `boundary.in` is `'closed'`, absent from every form
9
+ */
5
10
  export const readOnly: <T>(field: Field<T>) => Field<T> = vocabulary(
6
11
  'readOnly',
7
12
  (field) => ({
@@ -1,10 +1,15 @@
1
- import { Relation, type EntityConstructor } from '../schema/axis/role/Relation.js';
2
- import { Field } from '../schema/fields/Field.js';
1
+ import { Relation, type EntityConstructor } from '../axis/role/Relation.js';
2
+ import { Field } from '../field/Field.js';
3
3
 
4
4
  export interface RefOptions {
5
5
  cascade?: boolean;
6
6
  }
7
7
 
8
+ /**
9
+ * So a reference names the target entity, and the column type follows from it.
10
+ * FR : pour qu'une référence nomme l'entité cible, la colonne en découlant.
11
+ * `ref(() => User, { cascade: true })`
12
+ */
8
13
  export function ref<E extends EntityConstructor>(
9
14
  target: E | (() => E),
10
15
  opts?: RefOptions,
@@ -1,5 +1,5 @@
1
- import { Field } from '../schema/fields/Field.js';
2
- import { type StringFormat } from '../schema/axis/shape/Formats.js';
1
+ import { Field } from '../field/Field.js';
2
+ import { type StringFormat } from '../axis/shape/Formats.js';
3
3
 
4
4
  export interface TextOptions {
5
5
  min?: number;
@@ -10,6 +10,11 @@ export interface TextOptions {
10
10
  description?: string;
11
11
  }
12
12
 
13
+ /**
14
+ * So a string field states its bounds where the DDL and the validator both read them.
15
+ * FR : pour qu'un champ texte énonce ses bornes là où le DDL et le juge les lisent.
16
+ * `text({ max: 200, format: 'email' })`
17
+ */
13
18
  export function text(opts?: TextOptions): Field<string> {
14
19
  return new Field<string>({
15
20
  shape: {
@@ -1,7 +1,11 @@
1
1
  import { vocabulary } from './vocabulary.js';
2
- import { Field } from '../schema/fields/Field.js';
3
- import { Unique } from '../schema/fields/constraint/Unique.js';
2
+ import { Field } from '../field/Field.js';
4
3
 
5
- export const unique: <T>(field: Field<T>) => Field<T> = vocabulary('unique', (field) => ({
6
- role: { rules: [...(field.role?.rules ?? []), new Unique([])] },
4
+ /**
5
+ * So a field is unique on its own, whatever key it ends up under.
6
+ * FR : pour qu'un champ soit unique à lui seul, quelle que soit sa clé.
7
+ * `unique(email)` → `role.unique` is true
8
+ */
9
+ export const unique: <T>(field: Field<T>) => Field<T> = vocabulary('unique', () => ({
10
+ role: { unique: true },
7
11
  }));
@@ -1,6 +1,11 @@
1
1
  import { created } from './created.js';
2
- import { Field } from '../schema/fields/Field.js';
2
+ import { Field } from '../field/Field.js';
3
3
 
4
+ /**
5
+ * So the dual of `created()` is re-stamped at every write, by the same hand.
6
+ * FR : pour que le dual de `created()` soit ré-estampé à chaque écriture, par la même main.
7
+ * `updated()` → `create: 'now'`, `update: 'now'`
8
+ */
4
9
  export function updated(): Field<Date> {
5
10
  const base = created();
6
11
  return base.with({ lifecycle: { ...base.lifecycle, update: 'now' } });
@@ -1,6 +1,11 @@
1
1
  import { text, type TextOptions } from './text.js';
2
- import type { Field } from '../schema/fields/Field.js';
2
+ import type { Field } from '../field/Field.js';
3
3
 
4
+ /**
5
+ * So a URL is a text with a stated format, not a type of its own.
6
+ * FR : pour qu'une URL soit un texte au format énoncé, pas un type à part.
7
+ * `url()` → `{ type: 'string', format: 'uri' }`
8
+ */
4
9
  export function url(opts?: Omit<TextOptions, 'format'>): Field<string> {
5
10
  return text({ ...opts, format: 'uri' });
6
11
  }
@@ -1,9 +1,14 @@
1
- import { Field } from '../schema/fields/Field.js';
2
- import { EXTENSION_SLOTS } from '../schema/axis/Axis.js';
1
+ import { Field } from '../field/Field.js';
2
+ import { EXTENSION_SLOTS } from '../axis/Axis.js';
3
3
  import { dequal } from 'dequal';
4
4
 
5
5
  const MEMBER_SLOTS = [...EXTENSION_SLOTS, 'meta'] as const;
6
6
 
7
+ /**
8
+ * So a word is one statement about a field, not a rebuilt field.
9
+ * FR : pour qu'un mot soit une affirmation sur un champ, pas un champ reconstruit.
10
+ * `vocabulary('indexed', () => ({ role: { index: true } }))`
11
+ */
7
12
  export function vocabulary(
8
13
  name: string,
9
14
  states: (field: Field) => Partial<Field>,
@@ -13,27 +18,32 @@ export function vocabulary(
13
18
 
14
19
  export type FieldWord = (field: Field<any>) => Field<any>;
15
20
 
16
- function merge(name: string, field: Field, stated: Partial<Field>): Partial<Field> {
17
- const out: Record<string, unknown> = {};
18
- if ('shape' in stated) out.shape = stated.shape;
21
+ /**
22
+ * So two words that state the same member differently refuse instead of one winning.
23
+ * FR : pour que deux mots contredisant un même membre refusent, plutôt qu'un l'emporte.
24
+ * `readOnly(writeOnly(text()))` → both close a different side, so both apply
25
+ */
26
+ function merge(name: string, field: Field, given: Partial<Field>): Partial<Field> {
27
+ const merged: Record<string, unknown> = {};
28
+ if ('shape' in given) merged.shape = given.shape;
19
29
 
20
30
  for (const slot of MEMBER_SLOTS) {
21
- const members = stated[slot];
31
+ const members = given[slot];
22
32
  if (members === undefined) continue;
23
- const held = field[slot] as Record<string, unknown> | undefined;
24
- if (typeof members !== 'object' || members === null || typeof held !== 'object') {
25
- out[slot] = members;
33
+ const already = field[slot] as Record<string, unknown> | undefined;
34
+ if (typeof members !== 'object' || members === null || typeof already !== 'object') {
35
+ merged[slot] = members;
26
36
  continue;
27
37
  }
28
38
  for (const [member, value] of Object.entries(members)) {
29
- const previous = held?.[member];
39
+ const previous = already?.[member];
30
40
  if (previous === undefined || dequal(previous, value)) continue;
31
41
  throw new Error(
32
42
  `vocabulary: \`${name}\` states ${slot}.${member} = ${JSON.stringify(value)}, but the ` +
33
43
  `field already states ${JSON.stringify(previous)}. Apply one or the other, not both.`,
34
44
  );
35
45
  }
36
- out[slot] = { ...held, ...members };
46
+ merged[slot] = { ...already, ...members };
37
47
  }
38
- return out as Partial<Field>;
48
+ return merged as Partial<Field>;
39
49
  }
@@ -1,7 +1,12 @@
1
1
  import { vocabulary } from './vocabulary.js';
2
- import { Boundary } from '../schema/axis/boundary/Boundary.js';
3
- import { Field } from '../schema/fields/Field.js';
2
+ import { Boundary } from '../axis/boundary/Boundary.js';
3
+ import { Field } from '../field/Field.js';
4
4
 
5
+ /**
6
+ * So a secret leaves no response, the dual of `readOnly` on the same axis.
7
+ * FR : pour qu'un secret ne reparte dans aucune réponse, dual de `readOnly`.
8
+ * `writeOnly(text())` → `boundary.out` is `'closed'`
9
+ */
5
10
  export const writeOnly: <T>(field: Field<T>) => Field<T> = vocabulary(
6
11
  'writeOnly',
7
12
  (field) => ({
@@ -1,9 +0,0 @@
1
- import type { Field } from '../schema/fields/Field.js';
2
- import type { ValidationResult } from './result.js';
3
- export declare class FieldJudge {
4
- private readonly declaration;
5
- private constructor();
6
- static of(declaration: unknown): FieldJudge;
7
- get verdict(): ValidationResult<Field>;
8
- }
9
- //# sourceMappingURL=FieldJudge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FieldJudge.d.ts","sourceRoot":"","sources":["../../src/judge/FieldJudge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAErE,qBAAa,UAAU;IACD,OAAO,CAAC,QAAQ,CAAC,WAAW;IAAhD,OAAO,eAAsD;IAE7D,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,GAAG,UAAU,CAE1C;IAED,IAAI,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,CA8CrC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FieldJudge.js","sourceRoot":"","sources":["../../src/judge/FieldJudge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,OAAO,UAAU;IACgB,WAAW;IAAhD,YAAqC,WAAoB;2BAApB,WAAW;IAAY,CAAC;IAE7D,MAAM,CAAC,EAAE,CAAC,WAAoB;QAC5B,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,OAAO;QACT,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,GAAG;wBACT,OAAO,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;qBACnE;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,oCAAoC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;aACjF,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,QAAQ,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;iBACxE,CAAC,CAAC;YACL,CAAC;iBAAM,IACL,WAAW,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS;gBAC1C,OAAO,WAAW,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,EAChD,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,MAAM;YAClB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;YAC5B,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAA+B,EAAE,CAAC;IAC/D,CAAC;CACF"}
@@ -1,12 +0,0 @@
1
- import type { Field, Fields } from '../schema/fields/Field.js';
2
- import type { ValidateOptions } from './options.js';
3
- import type { ValidationResult } from './result.js';
4
- export declare class RowJudge {
5
- private readonly fields;
6
- private readonly options;
7
- private constructor();
8
- static of(fields: Fields, options?: ValidateOptions): RowJudge;
9
- onAbsent(field: Field): 'skip' | 'empty-list' | null;
10
- check(input: unknown): ValidationResult<Record<string, unknown>>;
11
- }
12
- //# sourceMappingURL=RowJudge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowJudge.d.ts","sourceRoot":"","sources":["../../src/judge/RowJudge.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIrE,qBAAa,QAAQ;IAEjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAF1B,OAAO,eAGH;IAEJ,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,QAAQ,CAEjE;IAED,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAKnD;IAED,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAwD/D;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowJudge.js","sourceRoot":"","sources":["../../src/judge/RowJudge.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowRefusal.d.ts","sourceRoot":"","sources":["../../src/judge/RowRefusal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU;aACrB,WAAW,EAAE,oBAAoB;aACjC,YAAY,EAAE,eAAe;aAC7B,QAAQ,EAAE,UAAU;aACpB,QAAQ,EAAE,WAAW;aACrB,SAAS,EAAE,WAAW;CACd,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowRefusal.js","sourceRoot":"","sources":["../../src/judge/RowRefusal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,WAAW,EAAE,oBAAoB;IACjC,YAAY,EAAE,eAAe;IAC7B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,WAAW;CACd,CAAC"}
@@ -1,12 +0,0 @@
1
- import type { Field } from '../schema/fields/Field.js';
2
- import type { Checked } from './result.js';
3
- export declare class ValueJudge {
4
- private readonly field;
5
- private static readonly plans;
6
- private constructor();
7
- static of(field: Field): ValueJudge;
8
- check(value: unknown): Checked;
9
- private static planFor;
10
- private static customFormatOf;
11
- }
12
- //# sourceMappingURL=ValueJudge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ValueJudge.d.ts","sourceRoot":"","sources":["../../src/judge/ValueJudge.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAQ3C,qBAAa,UAAU;IAGD,OAAO,CAAC,QAAQ,CAAC,KAAK;IAF1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAEjE,OAAO,eAA8C;IAErD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAElC;IAED,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA2B7B;IAED,OAAO,CAAC,MAAM,CAAC,OAAO;IAetB,OAAO,CAAC,MAAM,CAAC,cAAc;CAU9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ValueJudge.js","sourceRoot":"","sources":["../../src/judge/ValueJudge.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export interface ValidateOptions {
2
- patch?: boolean;
3
- }
4
- //# sourceMappingURL=options.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/judge/options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=options.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/judge/options.ts"],"names":[],"mappings":""}