@contember/schema-definition 2.1.0-alpha.9 → 2.1.0-beta.2

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 (428) hide show
  1. package/CLAUDE.md +64 -0
  2. package/dist/development/index.cjs +33 -33
  3. package/dist/development/index.cjs.map +1 -1
  4. package/dist/development/index.js +25 -25
  5. package/dist/development/index.js.map +1 -1
  6. package/dist/development/src/acl/builder/EntityPermissionsBuilder.cjs.map +1 -1
  7. package/dist/development/src/acl/builder/EntityPermissionsBuilder.js.map +1 -1
  8. package/dist/development/src/acl/builder/EntitySelector.cjs.map +1 -1
  9. package/dist/development/src/acl/builder/EntitySelector.js.map +1 -1
  10. package/dist/development/src/acl/builder/FieldPermissionsBuilder.cjs.map +1 -1
  11. package/dist/development/src/acl/builder/FieldPermissionsBuilder.js.map +1 -1
  12. package/dist/development/src/acl/builder/FieldSelector.cjs.map +1 -1
  13. package/dist/development/src/acl/builder/FieldSelector.js.map +1 -1
  14. package/dist/development/src/acl/builder/PermissionOverrider.cjs.map +1 -1
  15. package/dist/development/src/acl/builder/PermissionOverrider.js.map +1 -1
  16. package/dist/development/src/acl/builder/PermissionsBuilder.cjs +1 -3
  17. package/dist/development/src/acl/builder/PermissionsBuilder.cjs.map +1 -1
  18. package/dist/development/src/acl/builder/PermissionsBuilder.js +1 -3
  19. package/dist/development/src/acl/builder/PermissionsBuilder.js.map +1 -1
  20. package/dist/development/src/acl/builder/PredicateReference.cjs.map +1 -1
  21. package/dist/development/src/acl/builder/PredicateReference.js.map +1 -1
  22. package/dist/development/src/acl/definition/aclExtensions.cjs +2 -2
  23. package/dist/development/src/acl/definition/aclExtensions.cjs.map +1 -1
  24. package/dist/development/src/acl/definition/aclExtensions.js +2 -2
  25. package/dist/development/src/acl/definition/aclExtensions.js.map +1 -1
  26. package/dist/development/src/acl/definition/customPrimary.cjs +1 -1
  27. package/dist/development/src/acl/definition/customPrimary.cjs.map +1 -1
  28. package/dist/development/src/acl/definition/customPrimary.js +1 -1
  29. package/dist/development/src/acl/definition/customPrimary.js.map +1 -1
  30. package/dist/development/src/acl/definition/index.cjs.map +1 -1
  31. package/dist/development/src/acl/definition/index.js.map +1 -1
  32. package/dist/development/src/acl/definition/internal/AclFactory.cjs +24 -16
  33. package/dist/development/src/acl/definition/internal/AclFactory.cjs.map +1 -1
  34. package/dist/development/src/acl/definition/internal/AclFactory.js +24 -16
  35. package/dist/development/src/acl/definition/internal/AclFactory.js.map +1 -1
  36. package/dist/development/src/acl/definition/internal/EntityPredicateResolver.cjs.map +1 -1
  37. package/dist/development/src/acl/definition/internal/EntityPredicateResolver.js.map +1 -1
  38. package/dist/development/src/acl/definition/internal/createPredicateName.cjs.map +1 -1
  39. package/dist/development/src/acl/definition/internal/createPredicateName.js.map +1 -1
  40. package/dist/development/src/acl/definition/internal/stores.cjs.map +1 -1
  41. package/dist/development/src/acl/definition/internal/stores.js.map +1 -1
  42. package/dist/development/src/acl/definition/permissions.cjs +5 -2
  43. package/dist/development/src/acl/definition/permissions.cjs.map +1 -1
  44. package/dist/development/src/acl/definition/permissions.js +5 -2
  45. package/dist/development/src/acl/definition/permissions.js.map +1 -1
  46. package/dist/development/src/acl/definition/references.cjs.map +1 -1
  47. package/dist/development/src/acl/definition/references.js.map +1 -1
  48. package/dist/development/src/acl/definition/roles.cjs.map +1 -1
  49. package/dist/development/src/acl/definition/roles.js.map +1 -1
  50. package/dist/development/src/acl/definition/variables.cjs.map +1 -1
  51. package/dist/development/src/acl/definition/variables.js.map +1 -1
  52. package/dist/development/src/actions/definition/index.cjs.map +1 -1
  53. package/dist/development/src/actions/definition/index.js.map +1 -1
  54. package/dist/development/src/actions/definition/internal/ActionsFactory.cjs +8 -7
  55. package/dist/development/src/actions/definition/internal/ActionsFactory.cjs.map +1 -1
  56. package/dist/development/src/actions/definition/internal/ActionsFactory.js +8 -7
  57. package/dist/development/src/actions/definition/internal/ActionsFactory.js.map +1 -1
  58. package/dist/development/src/actions/definition/internal/store.cjs.map +1 -1
  59. package/dist/development/src/actions/definition/internal/store.js.map +1 -1
  60. package/dist/development/src/actions/definition/targets.cjs.map +1 -1
  61. package/dist/development/src/actions/definition/targets.js.map +1 -1
  62. package/dist/development/src/actions/definition/triggers.cjs +4 -4
  63. package/dist/development/src/actions/definition/triggers.cjs.map +1 -1
  64. package/dist/development/src/actions/definition/triggers.js +4 -4
  65. package/dist/development/src/actions/definition/triggers.js.map +1 -1
  66. package/dist/development/src/createSchema.cjs.map +1 -1
  67. package/dist/development/src/createSchema.js.map +1 -1
  68. package/dist/development/src/model/builder/ColumnBuilder.cjs +7 -5
  69. package/dist/development/src/model/builder/ColumnBuilder.cjs.map +1 -1
  70. package/dist/development/src/model/builder/ColumnBuilder.js +7 -5
  71. package/dist/development/src/model/builder/ColumnBuilder.js.map +1 -1
  72. package/dist/development/src/model/builder/EntityBuilder.cjs.map +1 -1
  73. package/dist/development/src/model/builder/EntityBuilder.js.map +1 -1
  74. package/dist/development/src/model/builder/FieldBuilder.cjs +4 -4
  75. package/dist/development/src/model/builder/FieldBuilder.cjs.map +1 -1
  76. package/dist/development/src/model/builder/FieldBuilder.js.map +1 -1
  77. package/dist/development/src/model/builder/ManyHasManyBuilder.cjs.map +1 -1
  78. package/dist/development/src/model/builder/ManyHasManyBuilder.js.map +1 -1
  79. package/dist/development/src/model/builder/ManyHasOneBuilder.cjs.map +1 -1
  80. package/dist/development/src/model/builder/ManyHasOneBuilder.js.map +1 -1
  81. package/dist/development/src/model/builder/OneHasManyBuilder.cjs.map +1 -1
  82. package/dist/development/src/model/builder/OneHasManyBuilder.js.map +1 -1
  83. package/dist/development/src/model/builder/OneHasOneBuilder.cjs.map +1 -1
  84. package/dist/development/src/model/builder/OneHasOneBuilder.js.map +1 -1
  85. package/dist/development/src/model/builder/SchemaBuilder.cjs.map +1 -1
  86. package/dist/development/src/model/builder/SchemaBuilder.js.map +1 -1
  87. package/dist/development/src/model/builder/SchemaBuilderInternal.cjs.map +1 -1
  88. package/dist/development/src/model/builder/SchemaBuilderInternal.js.map +1 -1
  89. package/dist/development/src/model/builder/internal/ColumnProcessor.cjs.map +1 -1
  90. package/dist/development/src/model/builder/internal/ColumnProcessor.js.map +1 -1
  91. package/dist/development/src/model/builder/internal/ManyHasManyProcessor.cjs.map +1 -1
  92. package/dist/development/src/model/builder/internal/ManyHasManyProcessor.js.map +1 -1
  93. package/dist/development/src/model/builder/internal/ManyHasOneProcessor.cjs.map +1 -1
  94. package/dist/development/src/model/builder/internal/ManyHasOneProcessor.js.map +1 -1
  95. package/dist/development/src/model/builder/internal/OneHasManyProcessor.cjs.map +1 -1
  96. package/dist/development/src/model/builder/internal/OneHasManyProcessor.js.map +1 -1
  97. package/dist/development/src/model/builder/internal/OneHasOneProcessor.cjs.map +1 -1
  98. package/dist/development/src/model/builder/internal/OneHasOneProcessor.js.map +1 -1
  99. package/dist/development/src/model/definition/EnumDefinition.cjs.map +1 -1
  100. package/dist/development/src/model/definition/EnumDefinition.js.map +1 -1
  101. package/dist/development/src/model/definition/EventLogDefinition.cjs.map +1 -1
  102. package/dist/development/src/model/definition/EventLogDefinition.js.map +1 -1
  103. package/dist/development/src/model/definition/IndexDefinition.cjs +2 -2
  104. package/dist/development/src/model/definition/IndexDefinition.cjs.map +1 -1
  105. package/dist/development/src/model/definition/IndexDefinition.js +2 -2
  106. package/dist/development/src/model/definition/IndexDefinition.js.map +1 -1
  107. package/dist/development/src/model/definition/OrderByDefinition.cjs +3 -1
  108. package/dist/development/src/model/definition/OrderByDefinition.cjs.map +1 -1
  109. package/dist/development/src/model/definition/OrderByDefinition.js +3 -1
  110. package/dist/development/src/model/definition/OrderByDefinition.js.map +1 -1
  111. package/dist/development/src/model/definition/UniqueDefinition.cjs.map +1 -1
  112. package/dist/development/src/model/definition/UniqueDefinition.js.map +1 -1
  113. package/dist/development/src/model/definition/ViewDefinition.cjs.map +1 -1
  114. package/dist/development/src/model/definition/ViewDefinition.js.map +1 -1
  115. package/dist/development/src/model/definition/extensions.cjs +2 -2
  116. package/dist/development/src/model/definition/extensions.cjs.map +1 -1
  117. package/dist/development/src/model/definition/extensions.js +2 -2
  118. package/dist/development/src/model/definition/extensions.js.map +1 -1
  119. package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +12 -1
  120. package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
  121. package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js +12 -1
  122. package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
  123. package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.cjs.map +1 -1
  124. package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.js.map +1 -1
  125. package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs.map +1 -1
  126. package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js.map +1 -1
  127. package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs.map +1 -1
  128. package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js.map +1 -1
  129. package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs.map +1 -1
  130. package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js.map +1 -1
  131. package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs.map +1 -1
  132. package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.js.map +1 -1
  133. package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs.map +1 -1
  134. package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.js.map +1 -1
  135. package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs.map +1 -1
  136. package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js.map +1 -1
  137. package/dist/development/src/model/definition/index.cjs.map +1 -1
  138. package/dist/development/src/model/definition/index.js.map +1 -1
  139. package/dist/development/src/model/definition/internal/EntityRegistry.cjs.map +1 -1
  140. package/dist/development/src/model/definition/internal/EntityRegistry.js.map +1 -1
  141. package/dist/development/src/model/definition/internal/EnumRegistry.cjs.map +1 -1
  142. package/dist/development/src/model/definition/internal/EnumRegistry.js.map +1 -1
  143. package/dist/development/src/model/definition/internal/SchemaBuilder.cjs.map +1 -1
  144. package/dist/development/src/model/definition/internal/SchemaBuilder.js.map +1 -1
  145. package/dist/development/src/presets.cjs.map +1 -1
  146. package/dist/development/src/presets.js.map +1 -1
  147. package/dist/development/src/strict.cjs +3 -1
  148. package/dist/development/src/strict.cjs.map +1 -1
  149. package/dist/development/src/strict.js +3 -1
  150. package/dist/development/src/strict.js.map +1 -1
  151. package/dist/development/src/utils/MetadataStore.cjs +16 -4
  152. package/dist/development/src/utils/MetadataStore.cjs.map +1 -1
  153. package/dist/development/src/utils/MetadataStore.js +16 -4
  154. package/dist/development/src/utils/MetadataStore.js.map +1 -1
  155. package/dist/development/src/utils/assertNever.cjs.map +1 -1
  156. package/dist/development/src/utils/assertNever.js.map +1 -1
  157. package/dist/development/src/utils/filterEntityDefinition.cjs.map +1 -1
  158. package/dist/development/src/utils/filterEntityDefinition.js.map +1 -1
  159. package/dist/development/src/utils/tuple.cjs.map +1 -1
  160. package/dist/development/src/utils/tuple.js.map +1 -1
  161. package/dist/development/src/validation/index.cjs +25 -11
  162. package/dist/development/src/validation/index.cjs.map +1 -1
  163. package/dist/development/src/validation/index.js +25 -11
  164. package/dist/development/src/validation/index.js.map +1 -1
  165. package/dist/production/index.cjs +33 -33
  166. package/dist/production/index.cjs.map +1 -1
  167. package/dist/production/index.js +25 -25
  168. package/dist/production/index.js.map +1 -1
  169. package/dist/production/src/acl/builder/EntityPermissionsBuilder.cjs.map +1 -1
  170. package/dist/production/src/acl/builder/EntityPermissionsBuilder.js.map +1 -1
  171. package/dist/production/src/acl/builder/EntitySelector.cjs.map +1 -1
  172. package/dist/production/src/acl/builder/EntitySelector.js.map +1 -1
  173. package/dist/production/src/acl/builder/FieldPermissionsBuilder.cjs.map +1 -1
  174. package/dist/production/src/acl/builder/FieldPermissionsBuilder.js.map +1 -1
  175. package/dist/production/src/acl/builder/FieldSelector.cjs.map +1 -1
  176. package/dist/production/src/acl/builder/FieldSelector.js.map +1 -1
  177. package/dist/production/src/acl/builder/PermissionOverrider.cjs.map +1 -1
  178. package/dist/production/src/acl/builder/PermissionOverrider.js.map +1 -1
  179. package/dist/production/src/acl/builder/PermissionsBuilder.cjs +1 -3
  180. package/dist/production/src/acl/builder/PermissionsBuilder.cjs.map +1 -1
  181. package/dist/production/src/acl/builder/PermissionsBuilder.js +1 -3
  182. package/dist/production/src/acl/builder/PermissionsBuilder.js.map +1 -1
  183. package/dist/production/src/acl/builder/PredicateReference.cjs.map +1 -1
  184. package/dist/production/src/acl/builder/PredicateReference.js.map +1 -1
  185. package/dist/production/src/acl/definition/aclExtensions.cjs +2 -2
  186. package/dist/production/src/acl/definition/aclExtensions.cjs.map +1 -1
  187. package/dist/production/src/acl/definition/aclExtensions.js +2 -2
  188. package/dist/production/src/acl/definition/aclExtensions.js.map +1 -1
  189. package/dist/production/src/acl/definition/customPrimary.cjs +1 -1
  190. package/dist/production/src/acl/definition/customPrimary.cjs.map +1 -1
  191. package/dist/production/src/acl/definition/customPrimary.js +1 -1
  192. package/dist/production/src/acl/definition/customPrimary.js.map +1 -1
  193. package/dist/production/src/acl/definition/index.cjs.map +1 -1
  194. package/dist/production/src/acl/definition/index.js.map +1 -1
  195. package/dist/production/src/acl/definition/internal/AclFactory.cjs +24 -16
  196. package/dist/production/src/acl/definition/internal/AclFactory.cjs.map +1 -1
  197. package/dist/production/src/acl/definition/internal/AclFactory.js +24 -16
  198. package/dist/production/src/acl/definition/internal/AclFactory.js.map +1 -1
  199. package/dist/production/src/acl/definition/internal/EntityPredicateResolver.cjs.map +1 -1
  200. package/dist/production/src/acl/definition/internal/EntityPredicateResolver.js.map +1 -1
  201. package/dist/production/src/acl/definition/internal/createPredicateName.cjs.map +1 -1
  202. package/dist/production/src/acl/definition/internal/createPredicateName.js.map +1 -1
  203. package/dist/production/src/acl/definition/internal/stores.cjs.map +1 -1
  204. package/dist/production/src/acl/definition/internal/stores.js.map +1 -1
  205. package/dist/production/src/acl/definition/permissions.cjs +5 -2
  206. package/dist/production/src/acl/definition/permissions.cjs.map +1 -1
  207. package/dist/production/src/acl/definition/permissions.js +5 -2
  208. package/dist/production/src/acl/definition/permissions.js.map +1 -1
  209. package/dist/production/src/acl/definition/references.cjs.map +1 -1
  210. package/dist/production/src/acl/definition/references.js.map +1 -1
  211. package/dist/production/src/acl/definition/roles.cjs.map +1 -1
  212. package/dist/production/src/acl/definition/roles.js.map +1 -1
  213. package/dist/production/src/acl/definition/variables.cjs.map +1 -1
  214. package/dist/production/src/acl/definition/variables.js.map +1 -1
  215. package/dist/production/src/actions/definition/index.cjs.map +1 -1
  216. package/dist/production/src/actions/definition/index.js.map +1 -1
  217. package/dist/production/src/actions/definition/internal/ActionsFactory.cjs +8 -7
  218. package/dist/production/src/actions/definition/internal/ActionsFactory.cjs.map +1 -1
  219. package/dist/production/src/actions/definition/internal/ActionsFactory.js +8 -7
  220. package/dist/production/src/actions/definition/internal/ActionsFactory.js.map +1 -1
  221. package/dist/production/src/actions/definition/internal/store.cjs.map +1 -1
  222. package/dist/production/src/actions/definition/internal/store.js.map +1 -1
  223. package/dist/production/src/actions/definition/targets.cjs.map +1 -1
  224. package/dist/production/src/actions/definition/targets.js.map +1 -1
  225. package/dist/production/src/actions/definition/triggers.cjs +4 -4
  226. package/dist/production/src/actions/definition/triggers.cjs.map +1 -1
  227. package/dist/production/src/actions/definition/triggers.js +4 -4
  228. package/dist/production/src/actions/definition/triggers.js.map +1 -1
  229. package/dist/production/src/createSchema.cjs.map +1 -1
  230. package/dist/production/src/createSchema.js.map +1 -1
  231. package/dist/production/src/model/builder/ColumnBuilder.cjs +7 -5
  232. package/dist/production/src/model/builder/ColumnBuilder.cjs.map +1 -1
  233. package/dist/production/src/model/builder/ColumnBuilder.js +7 -5
  234. package/dist/production/src/model/builder/ColumnBuilder.js.map +1 -1
  235. package/dist/production/src/model/builder/EntityBuilder.cjs.map +1 -1
  236. package/dist/production/src/model/builder/EntityBuilder.js.map +1 -1
  237. package/dist/production/src/model/builder/FieldBuilder.cjs +4 -4
  238. package/dist/production/src/model/builder/FieldBuilder.cjs.map +1 -1
  239. package/dist/production/src/model/builder/FieldBuilder.js.map +1 -1
  240. package/dist/production/src/model/builder/ManyHasManyBuilder.cjs.map +1 -1
  241. package/dist/production/src/model/builder/ManyHasManyBuilder.js.map +1 -1
  242. package/dist/production/src/model/builder/ManyHasOneBuilder.cjs.map +1 -1
  243. package/dist/production/src/model/builder/ManyHasOneBuilder.js.map +1 -1
  244. package/dist/production/src/model/builder/OneHasManyBuilder.cjs.map +1 -1
  245. package/dist/production/src/model/builder/OneHasManyBuilder.js.map +1 -1
  246. package/dist/production/src/model/builder/OneHasOneBuilder.cjs.map +1 -1
  247. package/dist/production/src/model/builder/OneHasOneBuilder.js.map +1 -1
  248. package/dist/production/src/model/builder/SchemaBuilder.cjs.map +1 -1
  249. package/dist/production/src/model/builder/SchemaBuilder.js.map +1 -1
  250. package/dist/production/src/model/builder/SchemaBuilderInternal.cjs.map +1 -1
  251. package/dist/production/src/model/builder/SchemaBuilderInternal.js.map +1 -1
  252. package/dist/production/src/model/builder/internal/ColumnProcessor.cjs.map +1 -1
  253. package/dist/production/src/model/builder/internal/ColumnProcessor.js.map +1 -1
  254. package/dist/production/src/model/builder/internal/ManyHasManyProcessor.cjs.map +1 -1
  255. package/dist/production/src/model/builder/internal/ManyHasManyProcessor.js.map +1 -1
  256. package/dist/production/src/model/builder/internal/ManyHasOneProcessor.cjs.map +1 -1
  257. package/dist/production/src/model/builder/internal/ManyHasOneProcessor.js.map +1 -1
  258. package/dist/production/src/model/builder/internal/OneHasManyProcessor.cjs.map +1 -1
  259. package/dist/production/src/model/builder/internal/OneHasManyProcessor.js.map +1 -1
  260. package/dist/production/src/model/builder/internal/OneHasOneProcessor.cjs.map +1 -1
  261. package/dist/production/src/model/builder/internal/OneHasOneProcessor.js.map +1 -1
  262. package/dist/production/src/model/definition/EnumDefinition.cjs.map +1 -1
  263. package/dist/production/src/model/definition/EnumDefinition.js.map +1 -1
  264. package/dist/production/src/model/definition/EventLogDefinition.cjs.map +1 -1
  265. package/dist/production/src/model/definition/EventLogDefinition.js.map +1 -1
  266. package/dist/production/src/model/definition/IndexDefinition.cjs +2 -2
  267. package/dist/production/src/model/definition/IndexDefinition.cjs.map +1 -1
  268. package/dist/production/src/model/definition/IndexDefinition.js +2 -2
  269. package/dist/production/src/model/definition/IndexDefinition.js.map +1 -1
  270. package/dist/production/src/model/definition/OrderByDefinition.cjs +3 -1
  271. package/dist/production/src/model/definition/OrderByDefinition.cjs.map +1 -1
  272. package/dist/production/src/model/definition/OrderByDefinition.js +3 -1
  273. package/dist/production/src/model/definition/OrderByDefinition.js.map +1 -1
  274. package/dist/production/src/model/definition/UniqueDefinition.cjs.map +1 -1
  275. package/dist/production/src/model/definition/UniqueDefinition.js.map +1 -1
  276. package/dist/production/src/model/definition/ViewDefinition.cjs.map +1 -1
  277. package/dist/production/src/model/definition/ViewDefinition.js.map +1 -1
  278. package/dist/production/src/model/definition/extensions.cjs +2 -2
  279. package/dist/production/src/model/definition/extensions.cjs.map +1 -1
  280. package/dist/production/src/model/definition/extensions.js +2 -2
  281. package/dist/production/src/model/definition/extensions.js.map +1 -1
  282. package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +12 -1
  283. package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
  284. package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js +12 -1
  285. package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
  286. package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.cjs.map +1 -1
  287. package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.js.map +1 -1
  288. package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs.map +1 -1
  289. package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js.map +1 -1
  290. package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs.map +1 -1
  291. package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js.map +1 -1
  292. package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs.map +1 -1
  293. package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js.map +1 -1
  294. package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs.map +1 -1
  295. package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.js.map +1 -1
  296. package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs.map +1 -1
  297. package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.js.map +1 -1
  298. package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs.map +1 -1
  299. package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js.map +1 -1
  300. package/dist/production/src/model/definition/index.cjs.map +1 -1
  301. package/dist/production/src/model/definition/index.js.map +1 -1
  302. package/dist/production/src/model/definition/internal/EntityRegistry.cjs.map +1 -1
  303. package/dist/production/src/model/definition/internal/EntityRegistry.js.map +1 -1
  304. package/dist/production/src/model/definition/internal/EnumRegistry.cjs.map +1 -1
  305. package/dist/production/src/model/definition/internal/EnumRegistry.js.map +1 -1
  306. package/dist/production/src/model/definition/internal/SchemaBuilder.cjs.map +1 -1
  307. package/dist/production/src/model/definition/internal/SchemaBuilder.js.map +1 -1
  308. package/dist/production/src/presets.cjs.map +1 -1
  309. package/dist/production/src/presets.js.map +1 -1
  310. package/dist/production/src/strict.cjs +3 -1
  311. package/dist/production/src/strict.cjs.map +1 -1
  312. package/dist/production/src/strict.js +3 -1
  313. package/dist/production/src/strict.js.map +1 -1
  314. package/dist/production/src/utils/MetadataStore.cjs +16 -4
  315. package/dist/production/src/utils/MetadataStore.cjs.map +1 -1
  316. package/dist/production/src/utils/MetadataStore.js +16 -4
  317. package/dist/production/src/utils/MetadataStore.js.map +1 -1
  318. package/dist/production/src/utils/assertNever.cjs.map +1 -1
  319. package/dist/production/src/utils/assertNever.js.map +1 -1
  320. package/dist/production/src/utils/filterEntityDefinition.cjs.map +1 -1
  321. package/dist/production/src/utils/filterEntityDefinition.js.map +1 -1
  322. package/dist/production/src/utils/tuple.cjs.map +1 -1
  323. package/dist/production/src/utils/tuple.js.map +1 -1
  324. package/dist/production/src/validation/index.cjs +25 -11
  325. package/dist/production/src/validation/index.cjs.map +1 -1
  326. package/dist/production/src/validation/index.js +25 -11
  327. package/dist/production/src/validation/index.js.map +1 -1
  328. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  329. package/dist/types/acl/builder/PermissionOverrider.d.ts.map +1 -1
  330. package/dist/types/acl/builder/PermissionsBuilder.d.ts.map +1 -1
  331. package/dist/types/acl/definition/aclExtensions.d.ts.map +1 -1
  332. package/dist/types/acl/definition/internal/AclFactory.d.ts +1 -1
  333. package/dist/types/acl/definition/internal/AclFactory.d.ts.map +1 -1
  334. package/dist/types/acl/definition/internal/EntityPredicateResolver.d.ts.map +1 -1
  335. package/dist/types/acl/definition/internal/stores.d.ts +4 -3
  336. package/dist/types/acl/definition/internal/stores.d.ts.map +1 -1
  337. package/dist/types/acl/definition/permissions.d.ts +7 -2
  338. package/dist/types/acl/definition/permissions.d.ts.map +1 -1
  339. package/dist/types/acl/definition/variables.d.ts.map +1 -1
  340. package/dist/types/actions/definition/index.d.ts.map +1 -1
  341. package/dist/types/actions/definition/internal/ActionsFactory.d.ts +0 -1
  342. package/dist/types/actions/definition/internal/ActionsFactory.d.ts.map +1 -1
  343. package/dist/types/actions/definition/targets.d.ts.map +1 -1
  344. package/dist/types/actions/definition/triggers.d.ts +1 -0
  345. package/dist/types/actions/definition/triggers.d.ts.map +1 -1
  346. package/dist/types/createSchema.d.ts.map +1 -1
  347. package/dist/types/index.d.ts +3 -3
  348. package/dist/types/index.d.ts.map +1 -1
  349. package/dist/types/model/builder/ColumnBuilder.d.ts.map +1 -1
  350. package/dist/types/model/builder/internal/ColumnProcessor.d.ts.map +1 -1
  351. package/dist/types/model/definition/IndexDefinition.d.ts +2 -0
  352. package/dist/types/model/definition/IndexDefinition.d.ts.map +1 -1
  353. package/dist/types/model/definition/OrderByDefinition.d.ts.map +1 -1
  354. package/dist/types/model/definition/UniqueDefinition.d.ts +1 -0
  355. package/dist/types/model/definition/UniqueDefinition.d.ts.map +1 -1
  356. package/dist/types/model/definition/fieldDefinitions/ColumnDefinition.d.ts.map +1 -1
  357. package/dist/types/model/definition/fieldDefinitions/FieldDefinition.d.ts.map +1 -1
  358. package/dist/types/model/definition/fieldDefinitions/ManyHasManyDefinition.d.ts.map +1 -1
  359. package/dist/types/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.d.ts.map +1 -1
  360. package/dist/types/model/definition/fieldDefinitions/ManyHasOneDefinition.d.ts.map +1 -1
  361. package/dist/types/model/definition/fieldDefinitions/OneHasManyDefinition.d.ts.map +1 -1
  362. package/dist/types/model/definition/fieldDefinitions/OneHasOneDefinition.d.ts.map +1 -1
  363. package/dist/types/model/definition/fieldDefinitions/OneHasOneInverseDefinition.d.ts.map +1 -1
  364. package/dist/types/model/definition/index.d.ts +1 -1
  365. package/dist/types/model/definition/index.d.ts.map +1 -1
  366. package/dist/types/model/definition/internal/SchemaBuilder.d.ts.map +1 -1
  367. package/dist/types/model/definition/types.d.ts +1 -1
  368. package/dist/types/model/definition/types.d.ts.map +1 -1
  369. package/dist/types/model/index.d.ts +1 -1
  370. package/dist/types/model/index.d.ts.map +1 -1
  371. package/dist/types/presets.d.ts.map +1 -1
  372. package/dist/types/strict.d.ts.map +1 -1
  373. package/dist/types/tsconfig.tsbuildinfo +1 -1
  374. package/dist/types/utils/MetadataStore.d.ts +1 -1
  375. package/dist/types/utils/MetadataStore.d.ts.map +1 -1
  376. package/dist/types/utils/decorators.d.ts +1 -1
  377. package/dist/types/utils/decorators.d.ts.map +1 -1
  378. package/dist/types/utils/filterEntityDefinition.d.ts.map +1 -1
  379. package/dist/types/validation/index.d.ts +0 -1
  380. package/dist/types/validation/index.d.ts.map +1 -1
  381. package/package.json +11 -6
  382. package/src/acl/builder/EntityPermissionsBuilder.ts +1 -1
  383. package/src/acl/builder/EntitySelector.ts +2 -2
  384. package/src/acl/builder/PermissionOverrider.ts +10 -8
  385. package/src/acl/builder/PermissionsBuilder.ts +1 -3
  386. package/src/acl/definition/aclExtensions.ts +7 -8
  387. package/src/acl/definition/customPrimary.ts +1 -1
  388. package/src/acl/definition/internal/AclFactory.ts +30 -25
  389. package/src/acl/definition/internal/EntityPredicateResolver.ts +4 -4
  390. package/src/acl/definition/internal/stores.ts +5 -6
  391. package/src/acl/definition/permissions.ts +14 -8
  392. package/src/acl/definition/variables.ts +5 -1
  393. package/src/actions/definition/index.ts +0 -1
  394. package/src/actions/definition/internal/ActionsFactory.ts +7 -9
  395. package/src/actions/definition/targets.ts +0 -1
  396. package/src/actions/definition/triggers.ts +9 -7
  397. package/src/createSchema.ts +1 -1
  398. package/src/index.ts +6 -11
  399. package/src/model/builder/ColumnBuilder.ts +7 -5
  400. package/src/model/builder/internal/ColumnProcessor.ts +0 -1
  401. package/src/model/definition/IndexDefinition.ts +7 -3
  402. package/src/model/definition/OrderByDefinition.ts +7 -5
  403. package/src/model/definition/UniqueDefinition.ts +14 -12
  404. package/src/model/definition/extensions.ts +2 -2
  405. package/src/model/definition/fieldDefinitions/ColumnDefinition.ts +12 -4
  406. package/src/model/definition/fieldDefinitions/FieldDefinition.ts +1 -1
  407. package/src/model/definition/fieldDefinitions/ManyHasManyDefinition.ts +0 -2
  408. package/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.ts +4 -2
  409. package/src/model/definition/fieldDefinitions/ManyHasOneDefinition.ts +1 -1
  410. package/src/model/definition/fieldDefinitions/OneHasManyDefinition.ts +0 -1
  411. package/src/model/definition/fieldDefinitions/OneHasOneDefinition.ts +0 -2
  412. package/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.ts +5 -3
  413. package/src/model/definition/index.ts +2 -2
  414. package/src/model/definition/internal/SchemaBuilder.ts +1 -2
  415. package/src/model/definition/types.ts +1 -1
  416. package/src/model/index.ts +1 -10
  417. package/src/presets.ts +0 -2
  418. package/src/strict.ts +4 -4
  419. package/src/utils/MetadataStore.ts +18 -4
  420. package/src/utils/decorators.ts +1 -1
  421. package/src/utils/filterEntityDefinition.ts +3 -2
  422. package/src/validation/index.ts +30 -21
  423. package/tests/cases/unit/createSchema.test.ts +5 -6
  424. package/tests/cases/unit/extendEntity.test.ts +1 -2
  425. package/tests/cases/unit/orderBy.test.ts +3 -6
  426. package/tests/cases/unit/readAclDefinitions.test.ts +191 -176
  427. package/tests/cases/unit/readActions.test.ts +0 -2
  428. package/vitest.config.ts +0 -3
@@ -2,15 +2,16 @@ import { Model } from '@contember/schema'
2
2
  import { extendEntity } from './extensions'
3
3
  import { DecoratorFunction } from '../../utils'
4
4
 
5
-
6
5
  export type OrderByDirection = Model.OrderDirection | `${Model.OrderDirection}`
7
6
  export type OrderByOptions = { path: string[]; direction?: OrderByDirection }
8
7
 
9
-
10
8
  export function OrderBy<T>(options: OrderByOptions): DecoratorFunction<T>
11
9
  export function OrderBy<T>(options: OrderByOptions[]): DecoratorFunction<T>
12
10
  export function OrderBy<T>(path: (keyof T) & string, direction?: OrderByDirection): DecoratorFunction<T>
13
- export function OrderBy<T>(options: OrderByOptions | OrderByOptions[] | ((keyof T) & string), direction?: `${Model.OrderDirection}`): DecoratorFunction<T> {
11
+ export function OrderBy<T>(
12
+ options: OrderByOptions | OrderByOptions[] | ((keyof T) & string),
13
+ direction?: `${Model.OrderDirection}`,
14
+ ): DecoratorFunction<T> {
14
15
  return extendEntity(({ entity }) => {
15
16
  const normalize = (path: string[], direction?: OrderByDirection): Model.OrderBy => ({
16
17
  path,
@@ -27,8 +28,9 @@ export function OrderBy<T>(options: OrderByOptions | OrderByOptions[] | ((keyof
27
28
  })()
28
29
 
29
30
  if (entity.orderBy?.length) {
30
- // eslint-disable-next-line no-console
31
- console.warn(`DEPRECATED: The "order by" property for the entity ${entity.name} has already been defined. Using multiple decorators can lead to unexpected order. Please provide an array containing all the 'order by' items as an input.`)
31
+ console.warn(
32
+ `DEPRECATED: The "order by" property for the entity ${entity.name} has already been defined. Using multiple decorators can lead to unexpected order. Please provide an array containing all the 'order by' items as an input.`,
33
+ )
32
34
  }
33
35
 
34
36
  return {
@@ -2,19 +2,21 @@ import { extendEntity } from './extensions'
2
2
  import { DecoratorFunction } from '../../utils'
3
3
  import { Model } from '@contember/schema'
4
4
 
5
- export type UniqueOptions<T> = {
6
- fields: (keyof T & string)[]
7
-
8
- } & (
9
- | {
10
- index?: false
11
- timing?: Model.ConstraintTiming
12
- }
13
- | {
14
- index: true
15
- nulls?: Model.NullsDistinctBehaviour
5
+ export type UniqueOptions<T> =
6
+ & {
7
+ fields: (keyof T & string)[]
16
8
  }
17
- )
9
+ & (
10
+ | {
11
+ index?: false
12
+ timing?: Model.ConstraintTiming
13
+ }
14
+ | {
15
+ index: true
16
+ nulls?: Model.NullsDistinctBehaviour
17
+ method?: Model.IndexMethod
18
+ }
19
+ )
18
20
  export function Unique<T>(options: UniqueOptions<T>): DecoratorFunction<T>
19
21
  export function Unique<T>(...fields: (keyof T & string)[]): DecoratorFunction<T>
20
22
  export function Unique<T>(options: UniqueOptions<T> | keyof T & string, ...args: (keyof T & string)[]): DecoratorFunction<T> {
@@ -17,8 +17,8 @@ const entityExtensionsStore = createMetadataStore<EntityExtension[]>([])
17
17
 
18
18
  export type EntityExtension = (args: EntityExtensionArgs) => Model.Entity
19
19
  export const extendEntity = <T>(extension: EntityExtension): DecoratorFunction<T> => {
20
- return function (cls: EntityConstructor) {
21
- entityExtensionsStore.update(cls, current => [...current, extension])
20
+ return function(cls: EntityConstructor, context?: ClassDecoratorContext) {
21
+ entityExtensionsStore.update(cls, current => [...current, extension], context)
22
22
  }
23
23
  }
24
24
 
@@ -6,7 +6,6 @@ import { resolveDefaultColumnType } from '@contember/schema-utils'
6
6
  export class ColumnDefinition extends FieldDefinition<ColumnDefinitionOptions> {
7
7
  type = 'ColumnDefinition' as const
8
8
 
9
-
10
9
  public static create(
11
10
  type: Model.ColumnType,
12
11
  typeOptions: ColumnTypeOptions = {},
@@ -17,7 +16,6 @@ export class ColumnDefinition extends FieldDefinition<ColumnDefinitionOptions> {
17
16
  })
18
17
  }
19
18
 
20
-
21
19
  public columnName(columnName: string): ColumnDefinition {
22
20
  return this.withOption('columnName', columnName)
23
21
  }
@@ -62,7 +60,18 @@ export class ColumnDefinition extends FieldDefinition<ColumnDefinitionOptions> {
62
60
  }
63
61
 
64
62
  createField({ name, conventions, enumRegistry, entityName, options }: CreateFieldContext): Model.AnyField {
65
- const { type, nullable, columnName, enumDefinition, default: defaultValue, columnType, typeAlias, sequence, list, collation = options.defaultCollation } = this.options
63
+ const {
64
+ type,
65
+ nullable,
66
+ columnName,
67
+ enumDefinition,
68
+ default: defaultValue,
69
+ columnType,
70
+ typeAlias,
71
+ sequence,
72
+ list,
73
+ collation = options.defaultCollation,
74
+ } = this.options
66
75
  const common = {
67
76
  name: name,
68
77
  columnName: columnName || conventions.getColumnName(name),
@@ -165,4 +174,3 @@ export type ColumnDefinitionOptions = {
165
174
  sequence?: Model.ColumnTypeDefinition['sequence']
166
175
  collation?: Model.Collation
167
176
  } & ColumnTypeOptions
168
-
@@ -8,7 +8,7 @@ export abstract class FieldDefinition<O> {
8
8
  }
9
9
 
10
10
  export type CreateFieldContext =
11
- & {
11
+ & {
12
12
  name: string
13
13
  entityName: string
14
14
  }
@@ -49,13 +49,11 @@ export class ManyHasManyDefinition extends FieldDefinition<ManyHasManyDefinition
49
49
  }
50
50
  }
51
51
 
52
-
53
52
  protected withOption<K extends keyof ManyHasManyDefinitionOptions>(key: K, value: ManyHasManyDefinitionOptions[K]): ManyHasManyDefinition {
54
53
  return new ManyHasManyDefinition({ ...this.options, [key]: value })
55
54
  }
56
55
  }
57
56
 
58
-
59
57
  export function manyHasMany(target: EntityConstructor, inversedBy?: string): ManyHasManyDefinition {
60
58
  return new ManyHasManyDefinition({ target, inversedBy })
61
59
  }
@@ -24,12 +24,14 @@ export class ManyHasManyInverseDefinition extends FieldDefinition<ManyHasManyInv
24
24
  }
25
25
  }
26
26
 
27
- protected withOption<K extends keyof ManyHasManyInverseDefinitionOptions>(key: K, value: ManyHasManyInverseDefinitionOptions[K]): ManyHasManyInverseDefinition {
27
+ protected withOption<K extends keyof ManyHasManyInverseDefinitionOptions>(
28
+ key: K,
29
+ value: ManyHasManyInverseDefinitionOptions[K],
30
+ ): ManyHasManyInverseDefinition {
28
31
  return new ManyHasManyInverseDefinition({ ...this.options, [key]: value })
29
32
  }
30
33
  }
31
34
 
32
-
33
35
  export function manyHasManyInverse(target: EntityConstructor, ownedBy: string): ManyHasManyInverseDefinition {
34
36
  return new ManyHasManyInverseDefinition({ target, ownedBy })
35
37
  }
@@ -1,4 +1,4 @@
1
- import { EntityConstructor, RelationTarget } from '../types'
1
+ import { EntityConstructor, RelationTarget } from '../types'
2
2
  import { Model } from '@contember/schema'
3
3
  import { CreateFieldContext, FieldDefinition } from './FieldDefinition'
4
4
 
@@ -28,7 +28,6 @@ export class OneHasManyDefinition extends FieldDefinition<OneHasManyDefinitionOp
28
28
  }
29
29
  }
30
30
 
31
-
32
31
  export function oneHasMany(target: EntityConstructor, ownedBy: string): OneHasManyDefinition {
33
32
  return new OneHasManyDefinition({ target, ownedBy })
34
33
  }
@@ -5,7 +5,6 @@ import { CreateFieldContext, FieldDefinition } from './FieldDefinition'
5
5
  export class OneHasOneDefinition extends FieldDefinition<OneHasOneDefinitionOptions> {
6
6
  type = 'OneHasOneDefinition' as const
7
7
 
8
-
9
8
  inversedBy(inversedBy: string): OneHasOneDefinition {
10
9
  return this.withOption('inversedBy', inversedBy)
11
10
  }
@@ -64,7 +63,6 @@ export class OneHasOneDefinition extends FieldDefinition<OneHasOneDefinitionOpti
64
63
  }
65
64
  }
66
65
 
67
-
68
66
  export function oneHasOne(target: EntityConstructor, inversedBy?: string): OneHasOneDefinition {
69
67
  return new OneHasOneDefinition({ target, inversedBy })
70
68
  }
@@ -21,17 +21,19 @@ export class OneHasOneInverseDefinition extends FieldDefinition<OneHasOneInverse
21
21
  }
22
22
  }
23
23
 
24
- protected withOption<K extends keyof OneHasOneInverseDefinitionOptions>(this: any, key: K, value: OneHasOneInverseDefinitionOptions[K]): OneHasOneInverseDefinition {
24
+ protected withOption<K extends keyof OneHasOneInverseDefinitionOptions>(
25
+ this: any,
26
+ key: K,
27
+ value: OneHasOneInverseDefinitionOptions[K],
28
+ ): OneHasOneInverseDefinition {
25
29
  return new this.constructor({ ...this.options, [key]: value })
26
30
  }
27
31
  }
28
32
 
29
-
30
33
  export function oneHasOneInverse(target: EntityConstructor, ownedBy: string): OneHasOneInverseDefinition {
31
34
  return new OneHasOneInverseDefinition({ target, ownedBy })
32
35
  }
33
36
 
34
-
35
37
  export type OneHasOneInverseDefinitionOptions = {
36
38
  target: RelationTarget
37
39
  ownedBy: string
@@ -5,7 +5,7 @@ import 'reflect-metadata'
5
5
  import { FieldDefinition } from './fieldDefinitions'
6
6
  import { isEntityConstructor } from '../../utils'
7
7
  import { DefaultNamingConventions } from '@contember/schema-utils'
8
- import { StrictOptions, StrictDefinitionValidator } from '../../strict'
8
+ import { StrictDefinitionValidator, StrictOptions } from '../../strict'
9
9
 
10
10
  export * from './fieldDefinitions'
11
11
  export * from './EventLogDefinition'
@@ -14,7 +14,7 @@ export * from './OrderByDefinition'
14
14
  export * from './EnumDefinition'
15
15
  export * from './UniqueDefinition'
16
16
  export * from './ViewDefinition'
17
- export { extendEntity, type EntityExtension } from './extensions'
17
+ export { type EntityExtension, extendEntity } from './extensions'
18
18
 
19
19
  export abstract class Entity {
20
20
  [key: string]: FieldDefinition<any> | undefined
@@ -8,7 +8,7 @@ import { EntityRegistry } from './EntityRegistry'
8
8
  import { EnumRegistry } from './EnumRegistry'
9
9
  import { ColumnDefinition } from '../fieldDefinitions'
10
10
  import { applyEntityExtensions } from '../extensions'
11
- import { StrictOptions, StrictDefinitionValidator } from '../../../strict'
11
+ import { StrictDefinitionValidator, StrictOptions } from '../../../strict'
12
12
 
13
13
  export class SchemaBuilder {
14
14
  private entityRegistry = new EntityRegistry()
@@ -65,7 +65,6 @@ export class SchemaBuilder {
65
65
  return { ...acc, [field.name]: field }
66
66
  }, {})
67
67
 
68
-
69
68
  const entity: Model.Entity = {
70
69
  name: entityName,
71
70
  primary: primaryName,
@@ -3,4 +3,4 @@ import { FieldDefinition } from './fieldDefinitions'
3
3
 
4
4
  export type RelationTarget = EntityConstructor
5
5
  export type FieldsDefinition = Record<string, FieldDefinition<any>>
6
- export { type EntityConstructor }
6
+ export type { EntityConstructor }
@@ -7,13 +7,4 @@ import OneHasOneBuilder from './builder/OneHasOneBuilder'
7
7
  import FieldBuilder from './builder/FieldBuilder'
8
8
  import * as SchemaDefinition from './definition'
9
9
 
10
- export {
11
- SchemaBuilder,
12
- ColumnBuilder,
13
- ManyHasManyBuilder,
14
- OneHasManyBuilder,
15
- ManyHasOneBuilder,
16
- OneHasOneBuilder,
17
- FieldBuilder,
18
- SchemaDefinition,
19
- }
10
+ export { ColumnBuilder, FieldBuilder, ManyHasManyBuilder, ManyHasOneBuilder, OneHasManyBuilder, OneHasOneBuilder, SchemaBuilder, SchemaDefinition }
package/src/presets.ts CHANGED
@@ -7,7 +7,6 @@ const v1_3preset: Settings.Schema = {
7
7
  },
8
8
  }
9
9
 
10
-
11
10
  const v1_4preset: Settings.Schema = {
12
11
  tenant: {
13
12
  inviteExpirationMinutes: 60 * 24 * 7, // 7 days
@@ -29,7 +28,6 @@ const v2_0preset: Settings.Schema = {
29
28
  },
30
29
  }
31
30
 
32
-
33
31
  const v2_1preset: Settings.Schema = {
34
32
  ...v2_0preset,
35
33
  content: {
package/src/strict.ts CHANGED
@@ -10,7 +10,6 @@ export const allStrict: StrictOptions = {
10
10
  requireInverseSide: true,
11
11
  }
12
12
 
13
-
14
13
  export type Warning = { message: string }
15
14
 
16
15
  export class StrictDefinitionValidator {
@@ -27,10 +26,11 @@ export class StrictDefinitionValidator {
27
26
  }
28
27
  }
29
28
 
30
-
31
- public validateOnCascade(entityName: string, field: string, definition: { onDelete?: Model.OnDelete}): void {
29
+ public validateOnCascade(entityName: string, field: string, definition: { onDelete?: Model.OnDelete }): void {
32
30
  if (!definition.onDelete && this.options.requireOnDelete) {
33
- this.registerWarning(`${entityName}.${field}: onDelete behaviour is not set. Use one of cascadeOnDelete(), setNullOnDelete() or restrictOnDelete().`)
31
+ this.registerWarning(
32
+ `${entityName}.${field}: onDelete behaviour is not set. Use one of cascadeOnDelete(), setNullOnDelete() or restrictOnDelete().`,
33
+ )
34
34
  }
35
35
  }
36
36
 
@@ -2,22 +2,36 @@ import 'reflect-metadata'
2
2
 
3
3
  export interface MetadataStore<V> {
4
4
  get(target: Object): V
5
- update(target: Object, generator: (current: V) => V): void
5
+ update(target: Object, generator: (current: V) => V, context?: ClassDecoratorContext): void
6
+ }
7
+
8
+ const getTC39ClassMetadata = (target: Object, key: symbol): unknown => {
9
+ const metaSymbol: symbol | undefined = Symbol.metadata
10
+ ?? Reflect.ownKeys(target).find((k): k is symbol => typeof k === 'symbol' && String(k) === 'Symbol(Symbol.metadata)')
11
+ if (!metaSymbol) return undefined
12
+ return (target as any)[metaSymbol]?.[key]
6
13
  }
7
14
 
8
15
  export const createMetadataStore = <V>(initialValue: V): MetadataStore<V> => {
9
16
  const key = Symbol()
10
17
  const get = (target: Object): V => {
11
- return Reflect.hasMetadata(key, target)
18
+ const tc39 = getTC39ClassMetadata(target, key)
19
+ if (tc39 !== undefined) return tc39 as V
20
+ return typeof Reflect.hasMetadata === 'function' && Reflect.hasMetadata(key, target)
12
21
  ? Reflect.getMetadata(key, target)
13
22
  : initialValue
14
23
  }
15
24
  return {
16
25
  get,
17
- update: (target, generator) => {
26
+ update: (target, generator, context?) => {
18
27
  const current = get(target)
19
28
  const newMetadata = generator(current)
20
- Reflect.defineMetadata(key, newMetadata, target)
29
+ if (typeof Reflect.defineMetadata === 'function') {
30
+ Reflect.defineMetadata(key, newMetadata, target)
31
+ }
32
+ if (context) {
33
+ context.metadata[key] = newMetadata
34
+ }
21
35
  },
22
36
  }
23
37
  }
@@ -1,2 +1,2 @@
1
1
  export type EntityConstructor<T = any> = { new(): T }
2
- export type DecoratorFunction<T> = (cls: EntityConstructor<T>) => void
2
+ export type DecoratorFunction<T> = (cls: EntityConstructor<T>, context?: ClassDecoratorContext) => void
@@ -1,7 +1,8 @@
1
1
  import { EntityConstructor } from './decorators'
2
2
 
3
- export const filterEntityDefinition = (definitions: Record<string, unknown>): [string, EntityConstructor][] => Object.entries(definitions)
4
- .filter((it): it is [string, EntityConstructor] => isEntityConstructor(it[1]))
3
+ export const filterEntityDefinition = (definitions: Record<string, unknown>): [string, EntityConstructor][] =>
4
+ Object.entries(definitions)
5
+ .filter((it): it is [string, EntityConstructor] => isEntityConstructor(it[1]))
5
6
 
6
7
  export const isEntityConstructor = (it: unknown): it is EntityConstructor => {
7
8
  return typeof it === 'function' && 'constructor' in it && 'prototype' in it
@@ -1,6 +1,5 @@
1
1
  import { tuple } from '../utils'
2
2
  import { SchemaDefinition } from '../model'
3
- import 'reflect-metadata'
4
3
  import { Validation } from '@contember/schema'
5
4
  import { filterEntityDefinition } from '../utils'
6
5
 
@@ -31,21 +30,31 @@ const ArgumentFactory = {
31
30
 
32
31
  const RuleMetaKey = Symbol('Rule')
33
32
 
34
- function updateMetadata<T>(
35
- { key, target, propertyKey }: { key: symbol; target: any; propertyKey: string | symbol },
36
- generator: (previous: T) => T,
37
- initialValue: T,
38
- ) {
39
- const metadata = Reflect.hasMetadata(key, target, propertyKey)
40
- ? Reflect.getMetadata(key, target, propertyKey)
41
- : initialValue
42
-
43
- const newMetadata = generator(metadata)
44
- Reflect.defineMetadata(key, newMetadata, target, propertyKey)
33
+ const isLegacyDecorator = (target: any): boolean => typeof target === 'object' && target !== null || typeof target === 'function'
34
+
35
+ function addRuleToMetadata(target: any, propertyKeyOrContext: any, ...rule: Validation.ValidationRule[]) {
36
+ if (isLegacyDecorator(target)) {
37
+ // Legacy TypeScript decorators: target is prototype, propertyKeyOrContext is property name
38
+ const propertyKey: string | symbol = propertyKeyOrContext
39
+ const hasExisting = Reflect.hasMetadata(RuleMetaKey, target, propertyKey)
40
+ const existing: Validation.ValidationRule[] = hasExisting ? Reflect.getMetadata(RuleMetaKey, target, propertyKey) : []
41
+ Reflect.defineMetadata(RuleMetaKey, [...rule, ...existing], target, propertyKey)
42
+ } else {
43
+ // TC39 stage 3 decorators: target is undefined, propertyKeyOrContext is context
44
+ const context = propertyKeyOrContext as ClassFieldDecoratorContext
45
+ const name = String(context.name)
46
+ const allRules = (context.metadata[RuleMetaKey] as Record<string, Validation.ValidationRule[]>) ?? {}
47
+ allRules[name] = [...rule, ...(allRules[name] ?? [])]
48
+ context.metadata[RuleMetaKey] = allRules
49
+ }
45
50
  }
46
51
 
47
- function addRuleToMetadata(target: any, propertyKey: string | symbol, ...rule: Validation.ValidationRule[]) {
48
- updateMetadata<Validation.ValidationRule[]>({ key: RuleMetaKey, target, propertyKey }, prev => [...rule, ...prev], [])
52
+ function getTC39Metadata(cls: Function): Record<string, Validation.ValidationRule[]> | undefined {
53
+ const metaSymbol = Symbol.metadata
54
+ ?? Reflect.ownKeys(cls).find((k): k is symbol => typeof k === 'symbol' && String(k) === 'Symbol(Symbol.metadata)')
55
+ if (!metaSymbol) return undefined
56
+ const meta = (cls as any)[metaSymbol]
57
+ return meta?.[RuleMetaKey] as Record<string, Validation.ValidationRule[]> | undefined
49
58
  }
50
59
 
51
60
  export function fluent() {
@@ -72,8 +81,8 @@ export class RuleBranch {
72
81
  const messageParsed: Validation.Message = typeof message === 'string' ? { text: message } : message
73
82
  const newRules = [...this.branchRules, { validator, message: messageParsed }]
74
83
  const branch = new RuleBranch(this.conditions, newRules)
75
- const propertyDecorator: PropertyDecorator = (target: any, propertykey: string | symbol) => {
76
- addRuleToMetadata(target, propertykey, ...branch.buildRules())
84
+ const propertyDecorator = (target: any, propertyKeyOrContext: any) => {
85
+ addRuleToMetadata(target, propertyKeyOrContext, ...branch.buildRules())
77
86
  }
78
87
  return Object.assign(propertyDecorator, branch)
79
88
  }
@@ -191,10 +200,8 @@ export const assertPattern = (pattern: RegExp, message: MessageOrString) => flue
191
200
  export const assertMinLength = (min: number, message: MessageOrString) => fluent().assertMinLength(min, message)
192
201
  export const assertMaxLength = (min: number, message: MessageOrString) => fluent().assertMaxLength(min, message)
193
202
 
194
- export const combine =
195
- (...decorators: PropertyDecorator[]): PropertyDecorator =>
196
- (target, propertyKey) =>
197
- decorators.forEach(it => it(target, propertyKey))
203
+ export const combine = (...decorators: PropertyDecorator[]): PropertyDecorator => (target: any, propertyKeyOrContext: any) =>
204
+ decorators.forEach(it => (it as any)(target, propertyKeyOrContext))
198
205
 
199
206
  export function parseDefinition(
200
207
  definitions: Record<string, any>,
@@ -204,11 +211,13 @@ export function parseDefinition(
204
211
  const target = definition.prototype
205
212
  const defInstance = new definition()
206
213
  const fields = Object.keys(defInstance)
214
+ const tc39Rules = getTC39Metadata(definition)
207
215
  return tuple(
208
216
  name,
209
217
  fields
210
218
  .map(field => {
211
- const fieldRules: Validation.ValidationRule[] | undefined = Reflect.getMetadata(RuleMetaKey, target, field)
219
+ const fieldRules: Validation.ValidationRule[] | undefined = tc39Rules?.[field]
220
+ ?? (typeof Reflect.getMetadata === 'function' ? Reflect.getMetadata(RuleMetaKey, target, field) : undefined)
212
221
  if (fieldRules === undefined) {
213
222
  return tuple(field, [])
214
223
  }
@@ -96,11 +96,9 @@ test('basic createSchema test', () => {
96
96
  })
97
97
  })
98
98
 
99
-
100
99
  namespace StrictModel {
101
100
  export class Genre {
102
101
  name = c.stringColumn()
103
-
104
102
  }
105
103
  export class Book {
106
104
  title = c.stringColumn()
@@ -109,10 +107,11 @@ namespace StrictModel {
109
107
  }
110
108
 
111
109
  test('strict test', () => {
112
- const cb = () => createSchema(StrictModel, schema => ({
113
- ...schema,
114
- settings: settingsPresets['v1.3'],
115
- }), { strict: true })
110
+ const cb = () =>
111
+ createSchema(StrictModel, schema => ({
112
+ ...schema,
113
+ settings: settingsPresets['v1.3'],
114
+ }), { strict: true })
116
115
 
117
116
  expect(cb).toThrow(`Strict schema validation failed:
118
117
  - Book.genre: inverse side of the relation is not defined.
@@ -1,6 +1,6 @@
1
1
  import { Model } from '@contember/schema'
2
2
  import { expect, test } from 'bun:test'
3
- import { createSchema, c } from '../../../src'
3
+ import { c, createSchema } from '../../../src'
4
4
  import { extendEntity, FieldDefinition } from '../../../src/model/definition'
5
5
  import { DecoratorFunction } from '../../../src/utils'
6
6
 
@@ -26,7 +26,6 @@ namespace ExtendedModel {
26
26
  addField('lead', c.stringColumn())(Article)
27
27
  }
28
28
 
29
-
30
29
  test('add a field to entity using an extension', () => {
31
30
  const schema = createSchema(ExtendedModel)
32
31
 
@@ -2,7 +2,6 @@ import { Model } from '@contember/schema'
2
2
  import { describe, expect, test } from 'bun:test'
3
3
  import { c, createSchema } from '../../../src'
4
4
 
5
-
6
5
  const assert = {
7
6
  deepEqual: (a: any, b: any) => expect(a).toStrictEqual(b),
8
7
  }
@@ -42,7 +41,6 @@ namespace LegacyOrderBy {
42
41
  }
43
42
 
44
43
  describe('order by', () => {
45
-
46
44
  test('simple order by', () => {
47
45
  const schema = createSchema(OrderByModel)
48
46
 
@@ -71,22 +69,21 @@ describe('order by', () => {
71
69
  })
72
70
 
73
71
  test('deprecated orderBy', () => {
74
-
75
72
  const origWarn = console.warn
76
73
  let msg = ''
77
74
  console.warn = (m: string) => msg = m
78
75
 
79
76
  const schema = createSchema(LegacyOrderBy)
80
77
 
81
-
82
78
  assert.deepEqual(schema.model.entities.Entity5.orderBy, [
83
79
  { path: ['title'], direction: Model.OrderDirection.asc },
84
80
  { path: ['order'], direction: Model.OrderDirection.asc },
85
81
  ])
86
82
 
87
- expect(msg).toBe('DEPRECATED: The "order by" property for the entity Entity5 has already been defined. Using multiple decorators can lead to unexpected order. Please provide an array containing all the \'order by\' items as an input.')
83
+ expect(msg).toBe(
84
+ 'DEPRECATED: The "order by" property for the entity Entity5 has already been defined. Using multiple decorators can lead to unexpected order. Please provide an array containing all the \'order by\' items as an input.',
85
+ )
88
86
 
89
87
  console.warn = origWarn
90
88
  })
91
89
  })
92
-