@fougere/schema 0.5.0-alpha.1 → 0.7.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/README.md +5 -4
  2. package/dist/{schema/Schema.d.ts → Schema.d.ts} +18 -28
  3. package/dist/Schema.d.ts.map +1 -0
  4. package/dist/Schema.js +136 -0
  5. package/dist/Schema.js.map +1 -0
  6. package/dist/SchemaDefinition.d.ts +73 -0
  7. package/dist/SchemaDefinition.d.ts.map +1 -0
  8. package/dist/SchemaDefinition.js +184 -0
  9. package/dist/SchemaDefinition.js.map +1 -0
  10. package/dist/SchemaDerivation.d.ts +16 -0
  11. package/dist/SchemaDerivation.d.ts.map +1 -0
  12. package/dist/SchemaDerivation.js +31 -0
  13. package/dist/SchemaDerivation.js.map +1 -0
  14. package/dist/{schema/SchemaView.d.ts → SchemaView.d.ts} +9 -9
  15. package/dist/SchemaView.d.ts.map +1 -0
  16. package/dist/{schema/SchemaView.js.map → SchemaView.js.map} +1 -1
  17. package/dist/axis/Axis.d.ts +2 -2
  18. package/dist/axis/Axis.d.ts.map +1 -1
  19. package/dist/axis/boundary/Boundaries.d.ts +13 -12
  20. package/dist/axis/boundary/Boundaries.d.ts.map +1 -1
  21. package/dist/axis/boundary/Boundaries.js +18 -24
  22. package/dist/axis/boundary/Boundaries.js.map +1 -1
  23. package/dist/axis/boundary/Boundary.d.ts +3 -1
  24. package/dist/axis/boundary/Boundary.d.ts.map +1 -1
  25. package/dist/axis/boundary/Boundary.js +16 -7
  26. package/dist/axis/boundary/Boundary.js.map +1 -1
  27. package/dist/axis/boundary/BoundaryAxis.js +4 -4
  28. package/dist/axis/boundary/BoundaryAxis.js.map +1 -1
  29. package/dist/axis/lifecycle/Clock.d.ts +1 -1
  30. package/dist/axis/lifecycle/Clock.d.ts.map +1 -1
  31. package/dist/axis/lifecycle/Clock.js +1 -1
  32. package/dist/axis/lifecycle/Clock.js.map +1 -1
  33. package/dist/axis/lifecycle/Generators.d.ts +6 -14
  34. package/dist/axis/lifecycle/Generators.d.ts.map +1 -1
  35. package/dist/axis/lifecycle/Generators.js +10 -28
  36. package/dist/axis/lifecycle/Generators.js.map +1 -1
  37. package/dist/axis/lifecycle/LifecycleAxis.js +11 -6
  38. package/dist/axis/lifecycle/LifecycleAxis.js.map +1 -1
  39. package/dist/axis/lifecycle/apply.d.ts +14 -5
  40. package/dist/axis/lifecycle/apply.d.ts.map +1 -1
  41. package/dist/axis/lifecycle/apply.js +26 -10
  42. package/dist/axis/lifecycle/apply.js.map +1 -1
  43. package/dist/axis/role/Relation.d.ts +3 -2
  44. package/dist/axis/role/Relation.d.ts.map +1 -1
  45. package/dist/axis/role/Relation.js +6 -5
  46. package/dist/axis/role/Relation.js.map +1 -1
  47. package/dist/axis/role/Role.d.ts +6 -6
  48. package/dist/axis/role/Role.d.ts.map +1 -1
  49. package/dist/axis/role/Role.js +13 -17
  50. package/dist/axis/role/Role.js.map +1 -1
  51. package/dist/axis/role/RoleAxis.d.ts +1 -1
  52. package/dist/axis/role/RoleAxis.d.ts.map +1 -1
  53. package/dist/axis/role/RoleAxis.js +28 -37
  54. package/dist/axis/role/RoleAxis.js.map +1 -1
  55. package/dist/axis/shape/Formats.d.ts +8 -5
  56. package/dist/axis/shape/Formats.d.ts.map +1 -1
  57. package/dist/axis/shape/Formats.js +8 -9
  58. package/dist/axis/shape/Formats.js.map +1 -1
  59. package/dist/axis/shape/Shape.d.ts +5 -3
  60. package/dist/axis/shape/Shape.d.ts.map +1 -1
  61. package/dist/axis/shape/Shape.js +13 -13
  62. package/dist/axis/shape/Shape.js.map +1 -1
  63. package/dist/entity/EntityAdapterSet.d.ts +22 -0
  64. package/dist/entity/EntityAdapterSet.d.ts.map +1 -0
  65. package/dist/entity/EntityAdapterSet.js +63 -0
  66. package/dist/entity/EntityAdapterSet.js.map +1 -0
  67. package/dist/entity/EntityAdapters.d.ts +5 -0
  68. package/dist/entity/EntityAdapters.d.ts.map +1 -0
  69. package/dist/entity/EntityAdapters.js +2 -0
  70. package/dist/entity/EntityAdapters.js.map +1 -0
  71. package/dist/{EntityDeclarations.d.ts → entity/EntityDeclarations.d.ts} +2 -7
  72. package/dist/entity/EntityDeclarations.d.ts.map +1 -0
  73. package/dist/entity/EntityDeclarations.js.map +1 -0
  74. package/dist/entity.d.ts +8 -3
  75. package/dist/entity.d.ts.map +1 -1
  76. package/dist/entity.js +6 -1
  77. package/dist/entity.js.map +1 -1
  78. package/dist/{fields → field}/Field.d.ts +8 -9
  79. package/dist/field/Field.d.ts.map +1 -0
  80. package/dist/field/Field.js +35 -0
  81. package/dist/field/Field.js.map +1 -0
  82. package/dist/field/FieldSet.d.ts +22 -0
  83. package/dist/field/FieldSet.d.ts.map +1 -0
  84. package/dist/field/FieldSet.js +58 -0
  85. package/dist/field/FieldSet.js.map +1 -0
  86. package/dist/index.d.ts +24 -28
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +17 -21
  89. package/dist/index.js.map +1 -1
  90. package/dist/lib/Registry.d.ts +12 -0
  91. package/dist/lib/Registry.d.ts.map +1 -0
  92. package/dist/lib/Registry.js +29 -0
  93. package/dist/lib/Registry.js.map +1 -0
  94. package/dist/{utils.d.ts → lib/utils.d.ts} +1 -0
  95. package/dist/lib/utils.d.ts.map +1 -0
  96. package/dist/{utils.js → lib/utils.js} +1 -0
  97. package/dist/lib/utils.js.map +1 -0
  98. package/dist/projection/Cases.d.ts +39 -0
  99. package/dist/projection/Cases.d.ts.map +1 -0
  100. package/dist/projection/Cases.js +146 -0
  101. package/dist/projection/Cases.js.map +1 -0
  102. package/dist/projection/Visibility.d.ts +2 -1
  103. package/dist/projection/Visibility.d.ts.map +1 -1
  104. package/dist/projection/Visibility.js +1 -0
  105. package/dist/projection/Visibility.js.map +1 -1
  106. package/dist/{card → projection/card}/Bundle.d.ts +1 -1
  107. package/dist/projection/card/Bundle.d.ts.map +1 -0
  108. package/dist/{card → projection/card}/Bundle.js +7 -7
  109. package/dist/projection/card/Bundle.js.map +1 -0
  110. package/dist/projection/card/Card.d.ts +21 -0
  111. package/dist/projection/card/Card.d.ts.map +1 -0
  112. package/dist/{card → projection/card}/Card.js +119 -58
  113. package/dist/projection/card/Card.js.map +1 -0
  114. package/dist/{card → projection/card}/Descriptor.d.ts +7 -7
  115. package/dist/projection/card/Descriptor.d.ts.map +1 -0
  116. package/dist/projection/card/Descriptor.js.map +1 -0
  117. package/dist/projection/card/admission.d.ts +20 -0
  118. package/dist/projection/card/admission.d.ts.map +1 -0
  119. package/dist/projection/card/admission.js +27 -0
  120. package/dist/projection/card/admission.js.map +1 -0
  121. package/dist/{card → projection/card}/diff.d.ts +3 -3
  122. package/dist/projection/card/diff.d.ts.map +1 -0
  123. package/dist/{card → projection/card}/diff.js.map +1 -1
  124. package/dist/{judge/result.d.ts → validation.d.ts} +1 -1
  125. package/dist/validation.d.ts.map +1 -0
  126. package/dist/validation.js +2 -0
  127. package/dist/validation.js.map +1 -0
  128. package/dist/validator/AdapterFieldValidator.d.ts +14 -0
  129. package/dist/validator/AdapterFieldValidator.d.ts.map +1 -0
  130. package/dist/validator/AdapterFieldValidator.js +36 -0
  131. package/dist/validator/AdapterFieldValidator.js.map +1 -0
  132. package/dist/validator/FieldDeclarationValidator.d.ts +9 -0
  133. package/dist/validator/FieldDeclarationValidator.d.ts.map +1 -0
  134. package/dist/{judge/FieldJudge.js → validator/FieldDeclarationValidator.js} +13 -13
  135. package/dist/validator/FieldDeclarationValidator.js.map +1 -0
  136. package/dist/validator/FieldValueValidator.d.ts +13 -0
  137. package/dist/validator/FieldValueValidator.d.ts.map +1 -0
  138. package/dist/{judge/ValueJudge.js → validator/FieldValueValidator.js} +14 -11
  139. package/dist/validator/FieldValueValidator.js.map +1 -0
  140. package/dist/{judge/RowRefusal.d.ts → validator/InputRefusal.d.ts} +3 -4
  141. package/dist/validator/InputRefusal.d.ts.map +1 -0
  142. package/dist/{judge/RowRefusal.js → validator/InputRefusal.js} +3 -3
  143. package/dist/validator/InputRefusal.js.map +1 -0
  144. package/dist/validator/InputValidator.d.ts +15 -0
  145. package/dist/validator/InputValidator.d.ts.map +1 -0
  146. package/dist/{judge/RowJudge.js → validator/InputValidator.js} +21 -17
  147. package/dist/validator/InputValidator.js.map +1 -0
  148. package/dist/vocabulary/bool.d.ts +6 -1
  149. package/dist/vocabulary/bool.d.ts.map +1 -1
  150. package/dist/vocabulary/bool.js +6 -1
  151. package/dist/vocabulary/bool.js.map +1 -1
  152. package/dist/vocabulary/created.d.ts +6 -1
  153. package/dist/vocabulary/created.d.ts.map +1 -1
  154. package/dist/vocabulary/created.js +6 -1
  155. package/dist/vocabulary/created.js.map +1 -1
  156. package/dist/vocabulary/date.d.ts +6 -1
  157. package/dist/vocabulary/date.d.ts.map +1 -1
  158. package/dist/vocabulary/date.js +6 -1
  159. package/dist/vocabulary/date.js.map +1 -1
  160. package/dist/vocabulary/email.d.ts +6 -1
  161. package/dist/vocabulary/email.d.ts.map +1 -1
  162. package/dist/vocabulary/email.js +5 -0
  163. package/dist/vocabulary/email.js.map +1 -1
  164. package/dist/vocabulary/immutable.d.ts +6 -1
  165. package/dist/vocabulary/immutable.d.ts.map +1 -1
  166. package/dist/vocabulary/immutable.js +5 -0
  167. package/dist/vocabulary/immutable.js.map +1 -1
  168. package/dist/vocabulary/indexed.d.ts +6 -1
  169. package/dist/vocabulary/indexed.d.ts.map +1 -1
  170. package/dist/vocabulary/indexed.js +8 -1
  171. package/dist/vocabulary/indexed.js.map +1 -1
  172. package/dist/vocabulary/json.d.ts +2 -2
  173. package/dist/vocabulary/json.d.ts.map +1 -1
  174. package/dist/vocabulary/json.js +9 -4
  175. package/dist/vocabulary/json.js.map +1 -1
  176. package/dist/vocabulary/list.d.ts +6 -1
  177. package/dist/vocabulary/list.d.ts.map +1 -1
  178. package/dist/vocabulary/list.js +6 -1
  179. package/dist/vocabulary/list.js.map +1 -1
  180. package/dist/vocabulary/many.d.ts +6 -1
  181. package/dist/vocabulary/many.d.ts.map +1 -1
  182. package/dist/vocabulary/many.js +6 -1
  183. package/dist/vocabulary/many.js.map +1 -1
  184. package/dist/vocabulary/nullable.d.ts +6 -1
  185. package/dist/vocabulary/nullable.d.ts.map +1 -1
  186. package/dist/vocabulary/nullable.js +7 -2
  187. package/dist/vocabulary/nullable.js.map +1 -1
  188. package/dist/vocabulary/number.d.ts +6 -1
  189. package/dist/vocabulary/number.d.ts.map +1 -1
  190. package/dist/vocabulary/number.js +11 -2
  191. package/dist/vocabulary/number.js.map +1 -1
  192. package/dist/vocabulary/oneOf.d.ts +1 -1
  193. package/dist/vocabulary/oneOf.d.ts.map +1 -1
  194. package/dist/vocabulary/oneOf.js +6 -1
  195. package/dist/vocabulary/oneOf.js.map +1 -1
  196. package/dist/vocabulary/optional.d.ts +6 -1
  197. package/dist/vocabulary/optional.d.ts.map +1 -1
  198. package/dist/vocabulary/optional.js +10 -3
  199. package/dist/vocabulary/optional.js.map +1 -1
  200. package/dist/vocabulary/primary.d.ts +1 -1
  201. package/dist/vocabulary/primary.d.ts.map +1 -1
  202. package/dist/vocabulary/primary.js +10 -5
  203. package/dist/vocabulary/primary.js.map +1 -1
  204. package/dist/vocabulary/readOnly.d.ts +6 -1
  205. package/dist/vocabulary/readOnly.d.ts.map +1 -1
  206. package/dist/vocabulary/readOnly.js +5 -0
  207. package/dist/vocabulary/readOnly.js.map +1 -1
  208. package/dist/vocabulary/ref.d.ts +6 -1
  209. package/dist/vocabulary/ref.d.ts.map +1 -1
  210. package/dist/vocabulary/ref.js +6 -1
  211. package/dist/vocabulary/ref.js.map +1 -1
  212. package/dist/vocabulary/text.d.ts +6 -1
  213. package/dist/vocabulary/text.d.ts.map +1 -1
  214. package/dist/vocabulary/text.js +13 -2
  215. package/dist/vocabulary/text.js.map +1 -1
  216. package/dist/vocabulary/unique.d.ts +6 -1
  217. package/dist/vocabulary/unique.d.ts.map +1 -1
  218. package/dist/vocabulary/unique.js +8 -4
  219. package/dist/vocabulary/unique.js.map +1 -1
  220. package/dist/vocabulary/updated.d.ts +6 -1
  221. package/dist/vocabulary/updated.d.ts.map +1 -1
  222. package/dist/vocabulary/updated.js +5 -0
  223. package/dist/vocabulary/updated.js.map +1 -1
  224. package/dist/vocabulary/url.d.ts +6 -1
  225. package/dist/vocabulary/url.d.ts.map +1 -1
  226. package/dist/vocabulary/url.js +5 -0
  227. package/dist/vocabulary/url.js.map +1 -1
  228. package/dist/vocabulary/vocabulary.d.ts +6 -1
  229. package/dist/vocabulary/vocabulary.d.ts.map +1 -1
  230. package/dist/vocabulary/vocabulary.js +21 -11
  231. package/dist/vocabulary/vocabulary.js.map +1 -1
  232. package/dist/vocabulary/writeOnly.d.ts +6 -1
  233. package/dist/vocabulary/writeOnly.d.ts.map +1 -1
  234. package/dist/vocabulary/writeOnly.js +5 -0
  235. package/dist/vocabulary/writeOnly.js.map +1 -1
  236. package/package.json +1 -1
  237. package/src/Schema.ts +208 -0
  238. package/src/SchemaDefinition.ts +257 -0
  239. package/src/SchemaDerivation.ts +44 -0
  240. package/src/{schema/SchemaView.ts → SchemaView.ts} +9 -9
  241. package/src/axis/Axis.ts +2 -2
  242. package/src/axis/boundary/Boundaries.ts +25 -32
  243. package/src/axis/boundary/Boundary.ts +23 -10
  244. package/src/axis/boundary/BoundaryAxis.ts +4 -4
  245. package/src/axis/lifecycle/Clock.ts +1 -1
  246. package/src/axis/lifecycle/Generators.ts +12 -29
  247. package/src/axis/lifecycle/LifecycleAxis.ts +12 -7
  248. package/src/axis/lifecycle/apply.ts +30 -15
  249. package/src/axis/role/Relation.ts +6 -5
  250. package/src/axis/role/Role.ts +16 -20
  251. package/src/axis/role/RoleAxis.ts +28 -41
  252. package/src/axis/shape/Formats.ts +9 -11
  253. package/src/axis/shape/Shape.ts +18 -18
  254. package/src/entity/EntityAdapterSet.ts +81 -0
  255. package/src/entity/EntityAdapters.ts +8 -0
  256. package/src/entity/EntityDeclarations.ts +16 -0
  257. package/src/entity.ts +8 -3
  258. package/src/field/Field.ts +61 -0
  259. package/src/field/FieldSet.ts +75 -0
  260. package/src/index.ts +50 -28
  261. package/src/lib/Registry.ts +37 -0
  262. package/src/{utils.ts → lib/utils.ts} +3 -0
  263. package/src/projection/Cases.ts +176 -0
  264. package/src/projection/Visibility.ts +6 -2
  265. package/src/{card → projection/card}/Bundle.ts +9 -9
  266. package/src/projection/card/Card.ts +342 -0
  267. package/src/{card → projection/card}/Descriptor.ts +7 -7
  268. package/src/projection/card/admission.ts +40 -0
  269. package/src/{card → projection/card}/diff.ts +3 -3
  270. package/src/validator/AdapterFieldValidator.ts +40 -0
  271. package/src/{judge/FieldJudge.ts → validator/FieldDeclarationValidator.ts} +15 -15
  272. package/src/{judge/ValueJudge.ts → validator/FieldValueValidator.ts} +18 -13
  273. package/src/{judge/RowRefusal.ts → validator/InputRefusal.ts} +2 -4
  274. package/src/{judge/RowJudge.ts → validator/InputValidator.ts} +27 -20
  275. package/src/vocabulary/bool.ts +8 -2
  276. package/src/vocabulary/created.ts +7 -2
  277. package/src/vocabulary/date.ts +6 -1
  278. package/src/vocabulary/email.ts +6 -1
  279. package/src/vocabulary/immutable.ts +12 -4
  280. package/src/vocabulary/indexed.ts +9 -2
  281. package/src/vocabulary/json.ts +13 -6
  282. package/src/vocabulary/list.ts +10 -2
  283. package/src/vocabulary/many.ts +9 -2
  284. package/src/vocabulary/nullable.ts +13 -5
  285. package/src/vocabulary/number.ts +13 -3
  286. package/src/vocabulary/oneOf.ts +11 -3
  287. package/src/vocabulary/optional.ts +16 -6
  288. package/src/vocabulary/primary.ts +10 -5
  289. package/src/vocabulary/readOnly.ts +12 -4
  290. package/src/vocabulary/ref.ts +10 -2
  291. package/src/vocabulary/text.ts +15 -3
  292. package/src/vocabulary/unique.ts +10 -9
  293. package/src/vocabulary/updated.ts +6 -1
  294. package/src/vocabulary/url.ts +6 -1
  295. package/src/vocabulary/vocabulary.ts +21 -12
  296. package/src/vocabulary/writeOnly.ts +12 -4
  297. package/dist/EntityAdapters.d.ts +0 -28
  298. package/dist/EntityAdapters.d.ts.map +0 -1
  299. package/dist/EntityAdapters.js +0 -75
  300. package/dist/EntityAdapters.js.map +0 -1
  301. package/dist/EntityDeclarations.d.ts.map +0 -1
  302. package/dist/EntityDeclarations.js.map +0 -1
  303. package/dist/card/Bundle.d.ts.map +0 -1
  304. package/dist/card/Bundle.js.map +0 -1
  305. package/dist/card/Card.d.ts +0 -27
  306. package/dist/card/Card.d.ts.map +0 -1
  307. package/dist/card/Card.js.map +0 -1
  308. package/dist/card/Descriptor.d.ts.map +0 -1
  309. package/dist/card/Descriptor.js.map +0 -1
  310. package/dist/card/EntityTypeSource.d.ts +0 -12
  311. package/dist/card/EntityTypeSource.d.ts.map +0 -1
  312. package/dist/card/EntityTypeSource.js +0 -78
  313. package/dist/card/EntityTypeSource.js.map +0 -1
  314. package/dist/card/FacadeTypeSource.d.ts +0 -19
  315. package/dist/card/FacadeTypeSource.d.ts.map +0 -1
  316. package/dist/card/FacadeTypeSource.js +0 -40
  317. package/dist/card/FacadeTypeSource.js.map +0 -1
  318. package/dist/card/admission.d.ts +0 -9
  319. package/dist/card/admission.d.ts.map +0 -1
  320. package/dist/card/admission.js +0 -16
  321. package/dist/card/admission.js.map +0 -1
  322. package/dist/card/diff.d.ts.map +0 -1
  323. package/dist/constraint/FieldGroup.d.ts +0 -21
  324. package/dist/constraint/FieldGroup.d.ts.map +0 -1
  325. package/dist/constraint/FieldGroup.js +0 -65
  326. package/dist/constraint/FieldGroup.js.map +0 -1
  327. package/dist/constraint/Unique.d.ts +0 -4
  328. package/dist/constraint/Unique.d.ts.map +0 -1
  329. package/dist/constraint/Unique.js +0 -4
  330. package/dist/constraint/Unique.js.map +0 -1
  331. package/dist/fields/Field.d.ts.map +0 -1
  332. package/dist/fields/Field.js +0 -52
  333. package/dist/fields/Field.js.map +0 -1
  334. package/dist/fields/FieldSet.d.ts +0 -28
  335. package/dist/fields/FieldSet.d.ts.map +0 -1
  336. package/dist/fields/FieldSet.js +0 -55
  337. package/dist/fields/FieldSet.js.map +0 -1
  338. package/dist/judge/Cases.d.ts +0 -50
  339. package/dist/judge/Cases.d.ts.map +0 -1
  340. package/dist/judge/Cases.js +0 -108
  341. package/dist/judge/Cases.js.map +0 -1
  342. package/dist/judge/FieldJudge.d.ts +0 -9
  343. package/dist/judge/FieldJudge.d.ts.map +0 -1
  344. package/dist/judge/FieldJudge.js.map +0 -1
  345. package/dist/judge/RowJudge.d.ts +0 -12
  346. package/dist/judge/RowJudge.d.ts.map +0 -1
  347. package/dist/judge/RowJudge.js.map +0 -1
  348. package/dist/judge/RowRefusal.d.ts.map +0 -1
  349. package/dist/judge/RowRefusal.js.map +0 -1
  350. package/dist/judge/ValueForm.d.ts +0 -3
  351. package/dist/judge/ValueForm.d.ts.map +0 -1
  352. package/dist/judge/ValueForm.js +0 -3
  353. package/dist/judge/ValueForm.js.map +0 -1
  354. package/dist/judge/ValueJudge.d.ts +0 -12
  355. package/dist/judge/ValueJudge.d.ts.map +0 -1
  356. package/dist/judge/ValueJudge.js.map +0 -1
  357. package/dist/judge/options.d.ts +0 -4
  358. package/dist/judge/options.d.ts.map +0 -1
  359. package/dist/judge/options.js +0 -2
  360. package/dist/judge/options.js.map +0 -1
  361. package/dist/judge/result.d.ts.map +0 -1
  362. package/dist/judge/result.js +0 -2
  363. package/dist/judge/result.js.map +0 -1
  364. package/dist/projection/SchemaOrCard.d.ts +0 -7
  365. package/dist/projection/SchemaOrCard.d.ts.map +0 -1
  366. package/dist/projection/SchemaOrCard.js +0 -11
  367. package/dist/projection/SchemaOrCard.js.map +0 -1
  368. package/dist/schema/Schema.d.ts.map +0 -1
  369. package/dist/schema/Schema.js +0 -150
  370. package/dist/schema/Schema.js.map +0 -1
  371. package/dist/schema/SchemaDefinition.d.ts +0 -60
  372. package/dist/schema/SchemaDefinition.d.ts.map +0 -1
  373. package/dist/schema/SchemaDefinition.js +0 -85
  374. package/dist/schema/SchemaDefinition.js.map +0 -1
  375. package/dist/schema/SchemaDerivation.d.ts +0 -34
  376. package/dist/schema/SchemaDerivation.d.ts.map +0 -1
  377. package/dist/schema/SchemaDerivation.js +0 -46
  378. package/dist/schema/SchemaDerivation.js.map +0 -1
  379. package/dist/schema/SchemaView.d.ts.map +0 -1
  380. package/dist/utils.d.ts.map +0 -1
  381. package/dist/utils.js.map +0 -1
  382. package/src/EntityAdapters.ts +0 -100
  383. package/src/EntityDeclarations.ts +0 -19
  384. package/src/card/Card.ts +0 -256
  385. package/src/card/EntityTypeSource.ts +0 -90
  386. package/src/card/FacadeTypeSource.ts +0 -55
  387. package/src/card/admission.ts +0 -25
  388. package/src/constraint/FieldGroup.ts +0 -91
  389. package/src/constraint/Unique.ts +0 -3
  390. package/src/fields/Field.ts +0 -80
  391. package/src/fields/FieldSet.ts +0 -62
  392. package/src/judge/Cases.ts +0 -139
  393. package/src/judge/ValueForm.ts +0 -7
  394. package/src/judge/options.ts +0 -3
  395. package/src/projection/SchemaOrCard.ts +0 -18
  396. package/src/schema/Schema.ts +0 -197
  397. package/src/schema/SchemaDefinition.ts +0 -120
  398. package/src/schema/SchemaDerivation.ts +0 -57
  399. /package/dist/{schema/SchemaView.js → SchemaView.js} +0 -0
  400. /package/dist/{EntityDeclarations.js → entity/EntityDeclarations.js} +0 -0
  401. /package/dist/{card → projection/card}/Descriptor.js +0 -0
  402. /package/dist/{card → projection/card}/diff.js +0 -0
  403. /package/src/{judge/result.ts → validation.ts} +0 -0
@@ -1,26 +1,26 @@
1
- import { FieldGroup } from "../../constraint/FieldGroup.js";
2
- import type { EntityConstructor, Relation } from "./Relation.js";
1
+ import type { EntityConstructor, Relation } from './Relation.js';
3
2
  export interface RoleRules {
4
3
  primary?: boolean;
5
4
  index?: boolean;
5
+ unique?: boolean;
6
6
  relation?: Relation;
7
- rules?: readonly FieldGroup[];
8
7
  }
9
8
  export declare class Role implements RoleRules {
10
9
  readonly primary?: boolean;
11
10
  readonly index?: boolean;
11
+ readonly unique?: boolean;
12
12
  readonly relation?: Relation;
13
- readonly rules?: readonly FieldGroup[];
14
13
  private constructor();
15
14
  static of(field: {
16
15
  role?: RoleRules;
17
16
  }): Role;
18
- /** A group written with no members means "this field": only the key it is declared under resolves it. */
19
- static resolvedOn(role: RoleRules | undefined, key?: string): RoleRules | undefined;
20
17
  get isPrimary(): boolean;
21
18
  get isIndexed(): boolean;
19
+ /** A field unique on its own. A group spanning several belongs to the schema. */
20
+ get isUnique(): boolean;
22
21
  get isCollection(): boolean;
23
22
  get isReference(): boolean;
23
+ /** Calls `() => Post` so no caller has to. */
24
24
  get target(): EntityConstructor | undefined;
25
25
  }
26
26
  //# sourceMappingURL=Role.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Role.d.ts","sourceRoot":"","sources":["../../../src/axis/role/Role.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEjE,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CAC/B;AAED,qBAAa,IAAK,YAAW,SAAS;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAEvC,OAAO,eAKN;IAED,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI,CAE3C;IAED,yGAAyG;IACzG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAKlF;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,MAAM,IAAI,iBAAiB,GAAG,SAAS,CAE1C;CACF"}
1
+ {"version":3,"file":"Role.d.ts","sourceRoot":"","sources":["../../../src/axis/role/Role.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEjE,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,qBAAa,IAAK,YAAW,SAAS;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAE7B,OAAO,eAKN;IAED,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI,CAE3C;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,iFAAiF;IACjF,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,8CAA8C;IAC9C,IAAI,MAAM,IAAI,iBAAiB,GAAG,SAAS,CAE1C;CACF"}
@@ -1,38 +1,34 @@
1
- import { FieldGroup } from "../../constraint/FieldGroup.js";
2
- import { Unique } from "../../constraint/Unique.js";
3
1
  export class Role {
4
2
  primary;
5
3
  index;
4
+ unique;
6
5
  relation;
7
- rules;
8
- constructor(declared = {}) {
9
- this.primary = declared.primary;
10
- this.index = declared.index;
11
- this.relation = declared.relation;
12
- this.rules = declared.rules;
6
+ constructor(rules = {}) {
7
+ this.primary = rules.primary;
8
+ this.index = rules.index;
9
+ this.unique = rules.unique;
10
+ this.relation = rules.relation;
13
11
  }
14
12
  static of(field) {
15
13
  return new Role(field.role);
16
14
  }
17
- /** A group written with no members means "this field": only the key it is declared under resolves it. */
18
- static resolvedOn(role, key) {
19
- let rules = FieldGroup.normalize(role?.rules, (members) => new Unique(members));
20
- if (rules && key !== undefined && rules.some((group) => group.isSelf))
21
- rules = rules.map((group) => group.resolvedOn(key));
22
- return rules === role?.rules ? role : { ...role, rules };
23
- }
24
15
  get isPrimary() {
25
16
  return this.primary === true;
26
17
  }
27
18
  get isIndexed() {
28
19
  return this.index === true;
29
20
  }
21
+ /** A field unique on its own. A group spanning several belongs to the schema. */
22
+ get isUnique() {
23
+ return this.unique === true;
24
+ }
30
25
  get isCollection() {
31
- return this.relation?.kind === "many";
26
+ return this.relation?.kind === 'many';
32
27
  }
33
28
  get isReference() {
34
- return this.relation?.kind === "one";
29
+ return this.relation?.kind === 'one';
35
30
  }
31
+ /** Calls `() => Post` so no caller has to. */
36
32
  get target() {
37
33
  return this.relation?.to();
38
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Role.js","sourceRoot":"","sources":["../../../src/axis/role/Role.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAUpD,MAAM,OAAO,IAAI;IACN,OAAO,CAAW;IAClB,KAAK,CAAW;IAChB,QAAQ,CAAY;IACpB,KAAK,CAAyB;IAEvC,YAAoB,QAAQ,GAAc,EAAE;QAC1C,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,EAAE,CAAC,KAA2B;QACnC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,yGAAyG;IACzG,MAAM,CAAC,UAAU,CAAC,IAA2B,EAAE,GAAY;QACzD,IAAI,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAChF,IAAI,KAAK,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;YACnE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,OAAO,KAAK,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IAC7B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,MAAM,CAAC;IACxC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC;IACvC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"Role.js","sourceRoot":"","sources":["../../../src/axis/role/Role.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,IAAI;IACN,OAAO,CAAW;IAClB,KAAK,CAAW;IAChB,MAAM,CAAW;IACjB,QAAQ,CAAY;IAE7B,YAAoB,KAAK,GAAc,EAAE;QACvC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,EAAE,CAAC,KAA2B;QACnC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IAC7B,CAAC;IAED,iFAAiF;IACjF,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,MAAM,CAAC;IACxC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC;IACvC,CAAC;IAED,8CAA8C;IAC9C,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7B,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import type { Axis } from '../Axis.js';
2
2
  import { type RoleRules } from './Role.js';
3
- import type { RoleDescriptor } from '../../card/Descriptor.js';
3
+ import type { RoleDescriptor } from '../../projection/card/Descriptor.js';
4
4
  export declare const roleAxis: Axis<RoleRules, RoleDescriptor>;
5
5
  //# sourceMappingURL=RoleAxis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RoleAxis.d.ts","sourceRoot":"","sources":["../../../src/axis/role/RoleAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAY,MAAM,YAAY,CAAC;AAKjD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CA+EpD,CAAC"}
1
+ {"version":3,"file":"RoleAxis.d.ts","sourceRoot":"","sources":["../../../src/axis/role/RoleAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAY,MAAM,YAAY,CAAC;AAKjD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE1E,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAgEpD,CAAC"}
@@ -1,17 +1,14 @@
1
- import { refuse } from '../../card/admission.js';
2
- import { isObject, oneOfTokens } from '../../judge/ValueForm.js';
1
+ import { refuse, oneOfTokens } from '../../projection/card/admission.js';
2
+ import { isObject, lowerFirst } from '../../lib/utils.js';
3
3
  import { ON_DELETE, RELATION_KINDS } from './Relation.js';
4
- import { FieldGroup } from '../../constraint/FieldGroup.js';
5
- import { Unique } from '../../constraint/Unique.js';
6
- import { lowerFirst } from '../../utils.js';
7
4
  export const roleAxis = {
8
5
  slot: 'role',
9
- judge(value, errors) {
6
+ validator(value, errors) {
10
7
  if (!isObject(value)) {
11
8
  errors.push({ path: 'role', message: `Expected an object — got ${JSON.stringify(value)}` });
12
9
  return;
13
10
  }
14
- for (const flag of ['primary', 'index']) {
11
+ for (const flag of ['primary', 'index', 'unique']) {
15
12
  if (value[flag] !== undefined && typeof value[flag] !== 'boolean') {
16
13
  errors.push({
17
14
  path: `role.${flag}`,
@@ -19,49 +16,38 @@ export const roleAxis = {
19
16
  });
20
17
  }
21
18
  }
22
- if (value.rules !== undefined) {
23
- const legal = Array.isArray(value.rules) &&
24
- value.rules.every((rule) => rule instanceof FieldGroup ||
25
- (Array.isArray(rule) && rule.every((member) => typeof member === 'string')));
26
- if (!legal) {
27
- errors.push({
28
- path: 'role.rules',
29
- message: 'Expected field groups, or the member lists they denote — string[][]',
30
- });
31
- }
32
- }
33
19
  if (value.relation !== undefined)
34
- judgeRelation(value.relation, errors);
20
+ validateRelation(value.relation, errors);
35
21
  },
22
+ /** A card carries the target's NAME: a class cannot cross a process boundary. */
36
23
  describe(role, key) {
37
- const out = {};
24
+ const descriptor = {};
38
25
  if (role.primary)
39
- out.primary = true;
40
- const unique = (role.rules ?? []).filter((rule) => rule instanceof Unique);
41
- if (unique.length)
42
- out.unique = unique.map((rule) => [...rule.resolvedOn(key).members]);
26
+ descriptor.primary = true;
27
+ if (role.unique)
28
+ descriptor.unique = [[key]];
43
29
  if (role.index)
44
- out.index = true;
30
+ descriptor.index = true;
45
31
  if (role.relation) {
46
32
  const target = role.relation.to();
47
- out.relation = {
33
+ descriptor.relation = {
48
34
  to: lowerFirst(target.name ?? ''),
49
35
  kind: role.relation.kind,
50
36
  ...(role.relation.onDelete ? { onDelete: role.relation.onDelete } : {}),
51
37
  };
52
38
  }
53
- return Object.keys(out).length ? out : undefined;
39
+ return Object.keys(descriptor).length ? descriptor : undefined;
54
40
  },
55
41
  reconstruct(wire, resolve) {
56
- const out = {};
42
+ const rules = {};
57
43
  if (wire.primary)
58
- out.primary = true;
59
- if (wire.unique?.length)
60
- out.rules = wire.unique.map((group) => new Unique(group));
44
+ rules.primary = true;
45
+ if (wire.unique?.some((group) => group.length === 1))
46
+ rules.unique = true;
61
47
  if (wire.index)
62
- out.index = true;
48
+ rules.index = true;
63
49
  if (wire.relation) {
64
- // `judge` cannot serve here: it demands a thunk where a card carries a name.
50
+ // `validator` cannot serve here: it demands `() => Post` where a card carries a name.
65
51
  if (!oneOfTokens(wire.relation.kind, RELATION_KINDS)) {
66
52
  refuse(`role.relation.kind is ${JSON.stringify(wire.relation.kind)}`, `Expected one of ${RELATION_KINDS.join(', ')}.`);
67
53
  }
@@ -69,16 +55,21 @@ export const roleAxis = {
69
55
  refuse(`role.relation.onDelete is ${JSON.stringify(wire.relation.onDelete)}`, `Expected one of ${ON_DELETE.join(', ')}.`);
70
56
  }
71
57
  const name = wire.relation.to;
72
- out.relation = {
58
+ rules.relation = {
73
59
  to: () => (resolve?.(name) ?? { name }),
74
60
  kind: wire.relation.kind,
75
61
  ...(wire.relation.onDelete ? { onDelete: wire.relation.onDelete } : {}),
76
62
  };
77
63
  }
78
- return out;
64
+ return rules;
79
65
  },
80
66
  };
81
- function judgeRelation(relation, errors) {
67
+ /**
68
+ * So a relation is validated where `() => Post` is required — a card carries a name.
69
+ * FR : pour qu'une relation soit jugée là où `() => Post` est exigé, contrairement à une carte.
70
+ * `{ to: User, kind: 'one' }` → error `Expected a function returning the target entity, such as () => Post`
71
+ */
72
+ function validateRelation(relation, errors) {
82
73
  if (!isObject(relation)) {
83
74
  errors.push({ path: 'role.relation', message: `Expected an object — got ${JSON.stringify(relation)}` });
84
75
  return;
@@ -90,7 +81,7 @@ function judgeRelation(relation, errors) {
90
81
  });
91
82
  }
92
83
  if (typeof relation.to !== 'function') {
93
- errors.push({ path: 'role.relation.to', message: 'Expected a thunk returning the target entity' });
84
+ errors.push({ path: 'role.relation.to', message: 'Expected a function returning the target entity, such as () => Post' });
94
85
  }
95
86
  if (relation.onDelete !== undefined && !oneOfTokens(relation.onDelete, ON_DELETE)) {
96
87
  errors.push({
@@ -1 +1 @@
1
- {"version":3,"file":"RoleAxis.js","sourceRoot":"","sources":["../../../src/axis/role/RoleAxis.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAyC,MAAM,eAAe,CAAC;AAEjG,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAoC;IACvD,IAAI,EAAE,MAAM;IAEZ,KAAK,CAAC,KAAK,EAAE,MAAM;QACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5F,OAAO;QACT,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,CAAU,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAClE,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,QAAQ,IAAI,EAAE;oBACpB,OAAO,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;iBACnE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,KAAK,GACT,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC1B,KAAK,CAAC,KAAK,CAAC,KAAK,CACf,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,YAAY,UAAU;oBAC1B,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAC9E,CAAC;YACJ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,qEAAqE;iBAC/E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;YAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED,QAAQ,CAAC,IAAI,EAAE,GAAG;QAChB,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,OAAO;YAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QACrC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,YAAY,MAAM,CAAC,CAAC;QAC3E,IAAI,MAAM,CAAC,MAAM;YAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACxF,IAAI,IAAI,CAAC,KAAK;YAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAuB,CAAC;YACvD,GAAG,CAAC,QAAQ,GAAG;gBACb,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACjC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;gBACxB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxE,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAED,WAAW,CAAC,IAAI,EAAE,OAAkB;QAClC,MAAM,GAAG,GAAc,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,OAAO;YAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QACrC,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;YAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACnF,IAAI,IAAI,CAAC,KAAK;YAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,6EAA6E;YAC7E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;gBACrD,MAAM,CACJ,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAC7D,mBAAmB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAChD,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC5F,MAAM,CACJ,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EACrE,mBAAmB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC3C,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,QAAQ,GAAG;gBACb,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAK,EAAE,IAAI,EAAc,CAAsB;gBACzE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAwB;gBAC5C,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAgC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvE,CAAC;QAC7B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,QAAiB,EAAE,MAAyB;IACjE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QACxG,OAAO;IACT,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,kCAAkC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;SAC3E,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,QAAQ,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC,CAAC;IACrG,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,sDAAsD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;SACnG,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"RoleAxis.js","sourceRoot":"","sources":["../../../src/axis/role/RoleAxis.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
+ import { Registry } from '../../lib/Registry.js';
1
2
  export type StringFormat = 'date-time' | 'date' | 'time' | 'email' | 'uuid' | 'uri' | (string & {});
2
3
  export type FormatPredicate = (value: string) => boolean;
3
- export declare class Formats {
4
- private static readonly registry;
5
- static register(name: string, predicate: FormatPredicate): void;
6
- static resolve(name: string): FormatPredicate | undefined;
7
- }
4
+ /**
5
+ * String formats the JSON Schema engine does not know. `find` answers `undefined` for
6
+ * `email` or `uuid`, which it validates on its own.
7
+ * FR : les formats de chaîne que le moteur ignore ; `find` rend `undefined` pour les siens.
8
+ * `Formats.register('siret', (v) => /^\d{14}$/.test(v))`
9
+ */
10
+ export declare const Formats: Registry<FormatPredicate>;
8
11
  //# sourceMappingURL=Formats.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Formats.d.ts","sourceRoot":"","sources":["../../../src/axis/shape/Formats.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,KAAK,GACL,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;AAEzD,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAEtE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,IAAI,CAE9D;IAED,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAExD;CACF"}
1
+ {"version":3,"file":"Formats.d.ts","sourceRoot":"","sources":["../../../src/axis/shape/Formats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,KAAK,GACL,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,OAAO,2BAA0C,CAAC"}
@@ -1,10 +1,9 @@
1
- export class Formats {
2
- static registry = new Map();
3
- static register(name, predicate) {
4
- this.registry.set(name, predicate);
5
- }
6
- static resolve(name) {
7
- return this.registry.get(name);
8
- }
9
- }
1
+ import { Registry } from '../../lib/Registry.js';
2
+ /**
3
+ * String formats the JSON Schema engine does not know. `find` answers `undefined` for
4
+ * `email` or `uuid`, which it validates on its own.
5
+ * FR : les formats de chaîne que le moteur ignore ; `find` rend `undefined` pour les siens.
6
+ * `Formats.register('siret', (v) => /^\d{14}$/.test(v))`
7
+ */
8
+ export const Formats = new Registry('format');
10
9
  //# sourceMappingURL=Formats.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Formats.js","sourceRoot":"","sources":["../../../src/axis/shape/Formats.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,OAAO;IACV,MAAM,CAAU,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEtE,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,SAA0B;QACtD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"Formats.js","sourceRoot":"","sources":["../../../src/axis/shape/Formats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAajD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAkB,QAAQ,CAAC,CAAC"}
@@ -19,6 +19,8 @@ interface ArrayConstraints {
19
19
  interface ObjectConstraints {
20
20
  properties?: Record<string, unknown>;
21
21
  required?: readonly string[];
22
+ additionalProperties?: boolean | Shape;
23
+ propertyNames?: Shape;
22
24
  }
23
25
  export type Shape = ({
24
26
  type: Nullably<'string'>;
@@ -42,16 +44,16 @@ type BaseShape = ({
42
44
  } & ArrayConstraints) | ({
43
45
  type: 'object';
44
46
  } & ObjectConstraints);
45
- interface ShapeAnatomy {
47
+ interface ShapeParts {
46
48
  base?: BaseShape;
47
49
  nullable: boolean;
48
50
  }
49
- export declare class Anatomy {
51
+ export declare class Shapes {
50
52
  static is(value: unknown): value is Shape;
51
53
  static nullable(shape: Shape): Shape;
52
54
  private static readonly cache;
53
55
  private static readonly none;
54
- static of(shape?: Shape): ShapeAnatomy;
56
+ static of(shape?: Shape): ShapeParts;
55
57
  static isNullable(shape?: Shape): boolean;
56
58
  }
57
59
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"Shape.d.ts","sourceRoot":"","sources":["../../../src/axis/shape/Shape.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAE3D,UAAU,iBAAiB;IAAG,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE;AAClJ,UAAU,kBAAkB;IAAG,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AACnE,UAAU,gBAAgB;IAAG,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;AAClF,UAAU,iBAAiB;IAAG,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE;AAElG,MAAM,MAAM,KAAK,GACb,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;CAAE,GAAG,iBAAiB,CAAC,GAClD,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;CAAE,GAAG,kBAAkB,CAAC,GACzE;IAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;CAAE,GAC7B,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;CAAE,GAAG,gBAAgB,CAAC,GAChD,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;CAAE,GAAG,iBAAiB,CAAC,CAAC;AAcvD,KAAK,SAAS,GACV,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG,iBAAiB,CAAC,GACxC,CAAC;IAAE,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;CAAE,GAAG,kBAAkB,CAAC,GACrD;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB,CAAC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,gBAAgB,CAAC,GACtC,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG,iBAAiB,CAAC,CAAC;AAW7C,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,OAAO;IAClB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAExC;IAED,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAEnC;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAsD;IAElF,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,YAAY,CAiBrC;IAED,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAExC;CACF"}
1
+ {"version":3,"file":"Shape.d.ts","sourceRoot":"","sources":["../../../src/axis/shape/Shape.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAE3D,UAAU,iBAAiB;IAAG,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE;AAClJ,UAAU,kBAAkB;IAAG,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AACnE,UAAU,gBAAgB;IAAG,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;AAClF,UAAU,iBAAiB;IAAG,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,oBAAoB,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAAC,aAAa,CAAC,EAAE,KAAK,CAAA;CAAE;AAEjK,MAAM,MAAM,KAAK,GACb,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;CAAE,GAAG,iBAAiB,CAAC,GAClD,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;CAAE,GAAG,kBAAkB,CAAC,GACzE;IAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;CAAE,GAC7B,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;CAAE,GAAG,gBAAgB,CAAC,GAChD,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;CAAE,GAAG,iBAAiB,CAAC,CAAC;AAcvD,KAAK,SAAS,GACV,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG,iBAAiB,CAAC,GACxC,CAAC;IAAE,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;CAAE,GAAG,kBAAkB,CAAC,GACrD;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB,CAAC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,gBAAgB,CAAC,GACtC,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG,iBAAiB,CAAC,CAAC;AAW7C,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,MAAM;IACjB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAExC;IAED,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAEnC;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAClE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAoD;IAEhF,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,CAiBnC;IAED,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAExC;CACF"}
@@ -2,21 +2,21 @@ const SHAPE_TYPES = ['string', 'number', 'integer', 'boolean', 'array', 'object'
2
2
  function isShapeImpl(value) {
3
3
  if (typeof value !== 'object' || value === null)
4
4
  return false;
5
- const declared = value.type;
6
- const names = Array.isArray(declared) ? declared : [declared];
5
+ const type = value.type;
6
+ const names = Array.isArray(type) ? type : [type];
7
7
  return (names.some((name) => SHAPE_TYPES.includes(name)) &&
8
8
  names.every((name) => name === 'null' || SHAPE_TYPES.includes(name)));
9
9
  }
10
10
  function nullableShapeImpl(shape) {
11
11
  if (Array.isArray(shape.type))
12
12
  return shape;
13
- const out = { ...shape, type: [shape.type, 'null'] };
14
- if ('enum' in out && out.enum && !out.enum.includes(null)) {
15
- out.enum = [...out.enum, null];
13
+ const nullable = { ...shape, type: [shape.type, 'null'] };
14
+ if ('enum' in nullable && nullable.enum && !nullable.enum.includes(null)) {
15
+ nullable.enum = [...nullable.enum, null];
16
16
  }
17
- return out;
17
+ return nullable;
18
18
  }
19
- export class Anatomy {
19
+ export class Shapes {
20
20
  static is(value) {
21
21
  return isShapeImpl(value);
22
22
  }
@@ -28,22 +28,22 @@ export class Anatomy {
28
28
  static of(shape) {
29
29
  if (!shape)
30
30
  return this.none;
31
- let a = this.cache.get(shape);
32
- if (!a) {
31
+ let parts = this.cache.get(shape);
32
+ if (!parts) {
33
33
  if (Array.isArray(shape.type)) {
34
34
  const baseType = shape.type.find((t) => t !== 'null');
35
35
  const base = { ...shape, type: baseType };
36
36
  if ('enum' in base && base.enum) {
37
37
  base.enum = base.enum.filter((v) => v !== null);
38
38
  }
39
- a = { base, nullable: true };
39
+ parts = { base, nullable: true };
40
40
  }
41
41
  else {
42
- a = { base: shape, nullable: false };
42
+ parts = { base: shape, nullable: false };
43
43
  }
44
- this.cache.set(shape, a);
44
+ this.cache.set(shape, parts);
45
45
  }
46
- return a;
46
+ return parts;
47
47
  }
48
48
  static isNullable(shape) {
49
49
  return this.of(shape).nullable;
@@ -1 +1 @@
1
- {"version":3,"file":"Shape.js","sourceRoot":"","sources":["../../../src/axis/shape/Shape.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Shape.js","sourceRoot":"","sources":["../../../src/axis/shape/Shape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { Fields } from '../field/Field.js';
2
+ import type { EntityAdapters } from './EntityAdapters.js';
3
+ export declare class EntityAdapterSet {
4
+ readonly adapters: EntityAdapters<Fields>;
5
+ /**
6
+ * `{ sql: { body: { columnType: { pg: 'tsvector' } } } }`
7
+ */
8
+ private constructor();
9
+ /**
10
+ * Stops a malformed declaration from propagating, by checking its two levels.
11
+ * `of({ sql: { body: 3 } })` → passes; `of({ sql: 'oops' })` → throws, naming `adapters.sql`
12
+ */
13
+ static of(adapters?: EntityAdapters<Fields>): EntityAdapterSet;
14
+ /** Folds several into one, a later field entry replacing the earlier. Takes sets only, so */
15
+ static merged(adapterSets: readonly EntityAdapterSet[]): EntityAdapterSet;
16
+ private get entries();
17
+ /** Collects every field addressed, so a declaration aimed at a missing field is caught. */
18
+ get fieldNames(): string[];
19
+ /** Follows a derivation — `pick`, `omit` and `rename` are one gesture: what remains, and */
20
+ rename(transform: (key: string) => string | undefined): EntityAdapterSet;
21
+ }
22
+ //# sourceMappingURL=EntityAdapterSet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityAdapterSet.d.ts","sourceRoot":"","sources":["../../src/entity/EntityAdapterSet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D,qBAAa,gBAAgB;IAIP,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC;IAH7D;;OAEG;IACH,OAAO,eAA0D;IAEjE;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAmB7D;IAED,6FAA6F;IAC7F,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,GAAG,gBAAgB,CAQxE;IAED,OAAO,KAAK,OAAO,GAElB;IAED,2FAA2F;IAC3F,IAAI,UAAU,IAAI,MAAM,EAAE,CAIzB;IAED,4FAA4F;IAC5F,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAkBvE;CACF"}
@@ -0,0 +1,63 @@
1
+ import { isObject } from '../lib/utils.js';
2
+ export class EntityAdapterSet {
3
+ adapters;
4
+ /**
5
+ * `{ sql: { body: { columnType: { pg: 'tsvector' } } } }`
6
+ */
7
+ constructor(adapters) {
8
+ this.adapters = adapters;
9
+ }
10
+ /**
11
+ * Stops a malformed declaration from propagating, by checking its two levels.
12
+ * `of({ sql: { body: 3 } })` → passes; `of({ sql: 'oops' })` → throws, naming `adapters.sql`
13
+ */
14
+ static of(adapters) {
15
+ if (!adapters)
16
+ return new EntityAdapterSet({});
17
+ if (!isObject(adapters)) {
18
+ throw new Error(`adapters: expected an object keyed by adapter name, got ${typeof adapters}.`);
19
+ }
20
+ for (const [adapter, fields] of Object.entries(adapters)) {
21
+ if (!isObject(fields)) {
22
+ throw new Error(`adapters.${adapter}: expected an object keyed by field name, got ${typeof fields}. ` +
23
+ `What an adapter is handed is addressed by the field it applies to.`);
24
+ }
25
+ }
26
+ return new EntityAdapterSet(adapters);
27
+ }
28
+ /** Folds several into one, a later field entry replacing the earlier. Takes sets only, so */
29
+ static merged(adapterSets) {
30
+ const configurations = {};
31
+ for (const adapterSet of adapterSets)
32
+ for (const [adapter, configuration] of adapterSet.entries)
33
+ configurations[adapter] = { ...configurations[adapter], ...configuration };
34
+ return new EntityAdapterSet(configurations);
35
+ }
36
+ get entries() {
37
+ return Object.entries(this.adapters);
38
+ }
39
+ /** Collects every field addressed, so a declaration aimed at a missing field is caught. */
40
+ get fieldNames() {
41
+ return [
42
+ ...new Set(this.entries.flatMap(([, configuration]) => Object.keys(configuration))),
43
+ ];
44
+ }
45
+ /** Follows a derivation — `pick`, `omit` and `rename` are one gesture: what remains, and */
46
+ rename(transform) {
47
+ const renamed = {};
48
+ for (const [adapter, configuration] of this.entries) {
49
+ const mapped = {};
50
+ for (const [key, entry] of Object.entries(configuration)) {
51
+ const newName = transform(key);
52
+ if (newName !== undefined)
53
+ mapped[newName] = entry;
54
+ }
55
+ // Drop an adapter left with no field. `Post.pick('id')` would otherwise answer
56
+ // `{ sql: {} }` — a line the entity never wrote.
57
+ if (Object.keys(mapped).length)
58
+ renamed[adapter] = mapped;
59
+ }
60
+ return new EntityAdapterSet(renamed);
61
+ }
62
+ }
63
+ //# sourceMappingURL=EntityAdapterSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityAdapterSet.js","sourceRoot":"","sources":["../../src/entity/EntityAdapterSet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAM3C,MAAM,OAAO,gBAAgB;IAIE,QAAQ;IAHrC;;OAEG;IACH,YAA6B,QAAgC;wBAAhC,QAAQ;IAA2B,CAAC;IAEjE;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,QAAiC;QACzC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAE/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,2DAA2D,OAAO,QAAQ,GAAG,CAC9E,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CACb,YAAY,OAAO,iDAAiD,OAAO,MAAM,IAAI;oBACnF,oEAAoE,CACvE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,6FAA6F;IAC7F,MAAM,CAAC,MAAM,CAAC,WAAwC;QACpD,MAAM,cAAc,GAA0B,EAAE,CAAC;QAEjD,KAAK,MAAM,UAAU,IAAI,WAAW;YAClC,KAAK,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO;gBACvD,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC;QAE/E,OAAO,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC;IAED,IAAY,OAAO;QACjB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,2FAA2F;IAC3F,IAAI,UAAU;QACZ,OAAO;YACL,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;SACpF,CAAC;IACJ,CAAC;IAED,4FAA4F;IAC5F,MAAM,CAAC,SAA8C;QACnD,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,KAAK,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpD,MAAM,MAAM,GAAyB,EAAE,CAAC;YAExC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBACzD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAE/B,IAAI,OAAO,KAAK,SAAS;oBAAE,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;YACrD,CAAC;YAED,+EAA+E;YAC/E,iDAAiD;YACjD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM;gBAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ import type { FieldName, Fields } from '../field/Field.js';
2
+ export interface FougereEntityAdapters<K extends string> {
3
+ }
4
+ export type EntityAdapters<TFields extends Fields> = Readonly<Partial<FougereEntityAdapters<FieldName<TFields>>>>;
5
+ //# sourceMappingURL=EntityAdapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityAdapters.d.ts","sourceRoot":"","sources":["../../src/entity/EntityAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3D,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM;CAAI;AAE3D,MAAM,MAAM,cAAc,CAAC,OAAO,SAAS,MAAM,IAAI,QAAQ,CAC3D,OAAO,CAAC,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CACnD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=EntityAdapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityAdapters.js","sourceRoot":"","sources":["../../src/entity/EntityAdapters.ts"],"names":[],"mappings":""}
@@ -1,15 +1,10 @@
1
- import type { FieldName, Fields } from './fields/Field.js';
1
+ import type { FieldName, Fields } from '../field/Field.js';
2
2
  import type { EntityAdapters } from './EntityAdapters.js';
3
3
  export type CompositeUnique<TFields extends Fields> = readonly (readonly FieldName<TFields>[])[];
4
- /** New name to old name: the field states what it WAS, which is how a human writes it. */
5
4
  export type PreviousNames<TFields extends Fields> = Readonly<Partial<Record<FieldName<TFields>, string>>>;
6
5
  export interface EntityDeclarations<TFields extends Fields> {
7
- unique?: CompositeUnique<TFields>;
8
6
  adapters?: EntityAdapters<TFields>;
9
- /**
10
- * What a field used to be called — read by `fougere freeze` and by nothing else.
11
- * It answers the one question two shapes cannot, and is meant to be deleted after.
12
- */
13
7
  previous?: PreviousNames<TFields>;
8
+ unique?: CompositeUnique<TFields>;
14
9
  }
15
10
  //# sourceMappingURL=EntityDeclarations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityDeclarations.d.ts","sourceRoot":"","sources":["../../src/entity/EntityDeclarations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,MAAM,IAChD,SAAS,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;AAE7C,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,MAAM,IAAI,QAAQ,CAC1D,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAC5C,CAAC;AAEF,MAAM,WAAW,kBAAkB,CAAC,OAAO,SAAS,MAAM;IACxD,QAAQ,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;CACnC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityDeclarations.js","sourceRoot":"","sources":["../../src/entity/EntityDeclarations.ts"],"names":[],"mappings":""}
package/dist/entity.d.ts CHANGED
@@ -1,5 +1,10 @@
1
- import { type Fields } from './fields/Field.js';
2
- import { type EntityDeclarations } from './EntityDeclarations.js';
3
- import { type SchemaConstructor } from './schema/Schema.js';
1
+ import { type Fields } from './field/Field.js';
2
+ import { type EntityDeclarations } from './entity/EntityDeclarations.js';
3
+ import { type SchemaConstructor } from './Schema.js';
4
+ /**
5
+ * So the whole framework starts from one call: fields, and what they say about themselves.
6
+ * FR : pour que tout parte d'un appel : les champs, et ce qu'ils disent d'eux-mêmes.
7
+ * `class Post extends entity({ id: primary(), title: text() }, { unique: [['title']] }) {}`
8
+ */
4
9
  export declare function entity<TFields extends Fields>(fields: TFields, declarations?: EntityDeclarations<TFields>): SchemaConstructor<TFields>;
5
10
  //# sourceMappingURL=entity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAU,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEpE,wBAAgB,MAAM,CAAC,OAAO,SAAS,MAAM,EAC3C,MAAM,EAAE,OAAO,EACf,YAAY,GAAE,kBAAkB,CAAC,OAAO,CAAM,GAC7C,iBAAiB,CAAC,OAAO,CAAC,CAE5B"}
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAU,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE7D;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,OAAO,SAAS,MAAM,EAC3C,MAAM,EAAE,OAAO,EACf,YAAY,GAAE,kBAAkB,CAAC,OAAO,CAAM,GAC7C,iBAAiB,CAAC,OAAO,CAAC,CAE5B"}
package/dist/entity.js CHANGED
@@ -1,4 +1,9 @@
1
- import { Schema } from './schema/Schema.js';
1
+ import { Schema } from './Schema.js';
2
+ /**
3
+ * So the whole framework starts from one call: fields, and what they say about themselves.
4
+ * FR : pour que tout parte d'un appel : les champs, et ce qu'ils disent d'eux-mêmes.
5
+ * `class Post extends entity({ id: primary(), title: text() }, { unique: [['title']] }) {}`
6
+ */
2
7
  export function entity(fields, declarations = {}) {
3
8
  return Schema.of({ fields }).declares(declarations);
4
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAA0B,MAAM,oBAAoB,CAAC;AAEpE,MAAM,UAAU,MAAM,CACpB,MAAe,EACf,YAAY,GAAgC,EAAE;IAE9C,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAA0B,MAAM,aAAa,CAAC;AAE7D;;;;GAIG;AACH,MAAM,UAAU,MAAM,CACpB,MAAe,EACf,YAAY,GAAgC,EAAE;IAE9C,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACtD,CAAC"}