@contember/schema-utils 1.4.0-rc.7 → 2.0.0-alpha.10

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 (486) hide show
  1. package/dist/development/index.cjs +109 -0
  2. package/dist/development/index.cjs.map +1 -0
  3. package/dist/development/index.js +93 -0
  4. package/dist/development/index.js.map +1 -0
  5. package/dist/development/src/acl/AllowAllPermissionFactory.cjs +42 -0
  6. package/dist/development/src/acl/AllowAllPermissionFactory.cjs.map +1 -0
  7. package/dist/development/src/acl/AllowAllPermissionFactory.js +42 -0
  8. package/dist/development/src/acl/AllowAllPermissionFactory.js.map +1 -0
  9. package/dist/development/src/acl/PredicateDefinitionProcessor.cjs +71 -0
  10. package/dist/development/src/acl/PredicateDefinitionProcessor.cjs.map +1 -0
  11. package/dist/development/src/acl/PredicateDefinitionProcessor.js +71 -0
  12. package/dist/development/src/acl/PredicateDefinitionProcessor.js.map +1 -0
  13. package/dist/development/src/acl/schemaUtils.cjs +11 -0
  14. package/dist/development/src/acl/schemaUtils.cjs.map +1 -0
  15. package/dist/development/src/acl/schemaUtils.js +11 -0
  16. package/dist/development/src/acl/schemaUtils.js.map +1 -0
  17. package/dist/development/src/dataUtils.cjs +59 -0
  18. package/dist/development/src/dataUtils.cjs.map +1 -0
  19. package/dist/development/src/dataUtils.js +59 -0
  20. package/dist/development/src/dataUtils.js.map +1 -0
  21. package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.cjs +118 -0
  22. package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.cjs.map +1 -0
  23. package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.js +118 -0
  24. package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.js.map +1 -0
  25. package/dist/development/src/definition-generator/DefinitionCodeGenerator.cjs +221 -0
  26. package/dist/development/src/definition-generator/DefinitionCodeGenerator.cjs.map +1 -0
  27. package/dist/development/src/definition-generator/DefinitionCodeGenerator.js +221 -0
  28. package/dist/development/src/definition-generator/DefinitionCodeGenerator.js.map +1 -0
  29. package/dist/development/src/definition-generator/DefinitionNamingConventions.cjs +19 -0
  30. package/dist/development/src/definition-generator/DefinitionNamingConventions.cjs.map +1 -0
  31. package/dist/development/src/definition-generator/DefinitionNamingConventions.js +19 -0
  32. package/dist/development/src/definition-generator/DefinitionNamingConventions.js.map +1 -0
  33. package/dist/development/src/definition-generator/TsDefinitionGenerator.cjs +17 -0
  34. package/dist/development/src/definition-generator/TsDefinitionGenerator.cjs.map +1 -0
  35. package/dist/development/src/definition-generator/TsDefinitionGenerator.js +17 -0
  36. package/dist/development/src/definition-generator/TsDefinitionGenerator.js.map +1 -0
  37. package/dist/development/src/lax/LaxSchemaConverter.cjs +202 -0
  38. package/dist/development/src/lax/LaxSchemaConverter.cjs.map +1 -0
  39. package/dist/development/src/lax/LaxSchemaConverter.js +202 -0
  40. package/dist/development/src/lax/LaxSchemaConverter.js.map +1 -0
  41. package/dist/development/src/lax/schema.cjs +70 -0
  42. package/dist/development/src/lax/schema.cjs.map +1 -0
  43. package/dist/development/src/lax/schema.js +53 -0
  44. package/dist/development/src/lax/schema.js.map +1 -0
  45. package/dist/development/src/model/NamingConventions.cjs +28 -0
  46. package/dist/development/src/model/NamingConventions.cjs.map +1 -0
  47. package/dist/development/src/model/NamingConventions.js +28 -0
  48. package/dist/development/src/model/NamingConventions.js.map +1 -0
  49. package/dist/development/src/model/modelUtils.cjs +231 -0
  50. package/dist/development/src/model/modelUtils.cjs.map +1 -0
  51. package/dist/development/src/model/modelUtils.js +231 -0
  52. package/dist/development/src/model/modelUtils.js.map +1 -0
  53. package/dist/development/src/model/resolveDefaultColumnType.cjs +28 -0
  54. package/dist/development/src/model/resolveDefaultColumnType.cjs.map +1 -0
  55. package/dist/development/src/model/resolveDefaultColumnType.js +28 -0
  56. package/dist/development/src/model/resolveDefaultColumnType.js.map +1 -0
  57. package/dist/development/src/schemaFilter.cjs +24 -0
  58. package/dist/development/src/schemaFilter.cjs.map +1 -0
  59. package/dist/development/src/schemaFilter.js +24 -0
  60. package/dist/development/src/schemaFilter.js.map +1 -0
  61. package/dist/development/src/schemaNormalizer.cjs +70 -0
  62. package/dist/development/src/schemaNormalizer.cjs.map +1 -0
  63. package/dist/development/src/schemaNormalizer.js +70 -0
  64. package/dist/development/src/schemaNormalizer.js.map +1 -0
  65. package/dist/development/src/type-schema/acl.cjs +143 -0
  66. package/dist/development/src/type-schema/acl.cjs.map +1 -0
  67. package/dist/development/src/type-schema/acl.js +126 -0
  68. package/dist/development/src/type-schema/acl.js.map +1 -0
  69. package/dist/development/src/type-schema/actions.cjs +87 -0
  70. package/dist/development/src/type-schema/actions.cjs.map +1 -0
  71. package/dist/development/src/type-schema/actions.js +70 -0
  72. package/dist/development/src/type-schema/actions.js.map +1 -0
  73. package/dist/development/src/type-schema/condition.cjs +87 -0
  74. package/dist/development/src/type-schema/condition.cjs.map +1 -0
  75. package/dist/development/src/type-schema/condition.js +70 -0
  76. package/dist/development/src/type-schema/condition.js.map +1 -0
  77. package/dist/development/src/type-schema/model.cjs +195 -0
  78. package/dist/development/src/type-schema/model.cjs.map +1 -0
  79. package/dist/development/src/type-schema/model.js +178 -0
  80. package/dist/development/src/type-schema/model.js.map +1 -0
  81. package/dist/development/src/type-schema/settings.cjs +32 -0
  82. package/dist/development/src/type-schema/settings.cjs.map +1 -0
  83. package/dist/development/src/type-schema/settings.js +15 -0
  84. package/dist/development/src/type-schema/settings.js.map +1 -0
  85. package/dist/development/src/type-schema/validation.cjs +115 -0
  86. package/dist/development/src/type-schema/validation.cjs.map +1 -0
  87. package/dist/development/src/type-schema/validation.js +98 -0
  88. package/dist/development/src/type-schema/validation.js.map +1 -0
  89. package/dist/development/src/type-schema/where.cjs +44 -0
  90. package/dist/development/src/type-schema/where.cjs.map +1 -0
  91. package/dist/development/src/type-schema/where.js +27 -0
  92. package/dist/development/src/type-schema/where.js.map +1 -0
  93. package/dist/development/src/utils/assertNever.cjs +7 -0
  94. package/dist/development/src/utils/assertNever.cjs.map +1 -0
  95. package/dist/development/src/utils/assertNever.js +7 -0
  96. package/dist/development/src/utils/assertNever.js.map +1 -0
  97. package/dist/development/src/utils/deepCompare.cjs +134 -0
  98. package/dist/development/src/utils/deepCompare.cjs.map +1 -0
  99. package/dist/development/src/utils/deepCompare.js +134 -0
  100. package/dist/development/src/utils/deepCompare.js.map +1 -0
  101. package/dist/development/src/utils/isIt.cjs +7 -0
  102. package/dist/development/src/utils/isIt.cjs.map +1 -0
  103. package/dist/development/src/utils/isIt.js +7 -0
  104. package/dist/development/src/utils/isIt.js.map +1 -0
  105. package/dist/development/src/utils/printJsValue.cjs +42 -0
  106. package/dist/development/src/utils/printJsValue.cjs.map +1 -0
  107. package/dist/development/src/utils/printJsValue.js +42 -0
  108. package/dist/development/src/utils/printJsValue.js.map +1 -0
  109. package/dist/development/src/validation/AclValidator.cjs +168 -0
  110. package/dist/development/src/validation/AclValidator.cjs.map +1 -0
  111. package/dist/development/src/validation/AclValidator.js +168 -0
  112. package/dist/development/src/validation/AclValidator.js.map +1 -0
  113. package/dist/development/src/validation/ActionsValidator.cjs +127 -0
  114. package/dist/development/src/validation/ActionsValidator.cjs.map +1 -0
  115. package/dist/development/src/validation/ActionsValidator.js +110 -0
  116. package/dist/development/src/validation/ActionsValidator.js.map +1 -0
  117. package/dist/development/src/validation/MembershipResolver.cjs +126 -0
  118. package/dist/development/src/validation/MembershipResolver.cjs.map +1 -0
  119. package/dist/development/src/validation/MembershipResolver.js +126 -0
  120. package/dist/development/src/validation/MembershipResolver.js.map +1 -0
  121. package/dist/development/src/validation/ModelValidator.cjs +310 -0
  122. package/dist/development/src/validation/ModelValidator.cjs.map +1 -0
  123. package/dist/development/src/validation/ModelValidator.js +310 -0
  124. package/dist/development/src/validation/ModelValidator.js.map +1 -0
  125. package/dist/development/src/validation/SchemaValidator.cjs +29 -0
  126. package/dist/development/src/validation/SchemaValidator.cjs.map +1 -0
  127. package/dist/development/src/validation/SchemaValidator.js +29 -0
  128. package/dist/development/src/validation/SchemaValidator.js.map +1 -0
  129. package/dist/development/src/validation/ValidationValidator.cjs +121 -0
  130. package/dist/development/src/validation/ValidationValidator.cjs.map +1 -0
  131. package/dist/development/src/validation/ValidationValidator.js +121 -0
  132. package/dist/development/src/validation/ValidationValidator.js.map +1 -0
  133. package/dist/development/src/validation/errors.cjs +16 -0
  134. package/dist/development/src/validation/errors.cjs.map +1 -0
  135. package/dist/development/src/validation/errors.js +16 -0
  136. package/dist/development/src/validation/errors.js.map +1 -0
  137. package/dist/production/index.cjs +109 -0
  138. package/dist/production/index.cjs.map +1 -0
  139. package/dist/production/index.js +93 -0
  140. package/dist/production/index.js.map +1 -0
  141. package/dist/production/src/acl/AllowAllPermissionFactory.cjs +42 -0
  142. package/dist/production/src/acl/AllowAllPermissionFactory.cjs.map +1 -0
  143. package/dist/production/src/acl/AllowAllPermissionFactory.js +42 -0
  144. package/dist/production/src/acl/AllowAllPermissionFactory.js.map +1 -0
  145. package/dist/production/src/acl/PredicateDefinitionProcessor.cjs +71 -0
  146. package/dist/production/src/acl/PredicateDefinitionProcessor.cjs.map +1 -0
  147. package/dist/production/src/acl/PredicateDefinitionProcessor.js +71 -0
  148. package/dist/production/src/acl/PredicateDefinitionProcessor.js.map +1 -0
  149. package/dist/production/src/acl/schemaUtils.cjs +11 -0
  150. package/dist/production/src/acl/schemaUtils.cjs.map +1 -0
  151. package/dist/production/src/acl/schemaUtils.js +11 -0
  152. package/dist/production/src/acl/schemaUtils.js.map +1 -0
  153. package/dist/production/src/dataUtils.cjs +59 -0
  154. package/dist/production/src/dataUtils.cjs.map +1 -0
  155. package/dist/production/src/dataUtils.js +59 -0
  156. package/dist/production/src/dataUtils.js.map +1 -0
  157. package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.cjs +118 -0
  158. package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.cjs.map +1 -0
  159. package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.js +118 -0
  160. package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.js.map +1 -0
  161. package/dist/production/src/definition-generator/DefinitionCodeGenerator.cjs +221 -0
  162. package/dist/production/src/definition-generator/DefinitionCodeGenerator.cjs.map +1 -0
  163. package/dist/production/src/definition-generator/DefinitionCodeGenerator.js +221 -0
  164. package/dist/production/src/definition-generator/DefinitionCodeGenerator.js.map +1 -0
  165. package/dist/production/src/definition-generator/DefinitionNamingConventions.cjs +19 -0
  166. package/dist/production/src/definition-generator/DefinitionNamingConventions.cjs.map +1 -0
  167. package/dist/production/src/definition-generator/DefinitionNamingConventions.js +19 -0
  168. package/dist/production/src/definition-generator/DefinitionNamingConventions.js.map +1 -0
  169. package/dist/production/src/definition-generator/TsDefinitionGenerator.cjs +17 -0
  170. package/dist/production/src/definition-generator/TsDefinitionGenerator.cjs.map +1 -0
  171. package/dist/production/src/definition-generator/TsDefinitionGenerator.js +17 -0
  172. package/dist/production/src/definition-generator/TsDefinitionGenerator.js.map +1 -0
  173. package/dist/production/src/lax/LaxSchemaConverter.cjs +202 -0
  174. package/dist/production/src/lax/LaxSchemaConverter.cjs.map +1 -0
  175. package/dist/production/src/lax/LaxSchemaConverter.js +202 -0
  176. package/dist/production/src/lax/LaxSchemaConverter.js.map +1 -0
  177. package/dist/production/src/lax/schema.cjs +70 -0
  178. package/dist/production/src/lax/schema.cjs.map +1 -0
  179. package/dist/production/src/lax/schema.js +53 -0
  180. package/dist/production/src/lax/schema.js.map +1 -0
  181. package/dist/production/src/model/NamingConventions.cjs +28 -0
  182. package/dist/production/src/model/NamingConventions.cjs.map +1 -0
  183. package/dist/production/src/model/NamingConventions.js +28 -0
  184. package/dist/production/src/model/NamingConventions.js.map +1 -0
  185. package/dist/production/src/model/modelUtils.cjs +231 -0
  186. package/dist/production/src/model/modelUtils.cjs.map +1 -0
  187. package/dist/production/src/model/modelUtils.js +231 -0
  188. package/dist/production/src/model/modelUtils.js.map +1 -0
  189. package/dist/production/src/model/resolveDefaultColumnType.cjs +28 -0
  190. package/dist/production/src/model/resolveDefaultColumnType.cjs.map +1 -0
  191. package/dist/production/src/model/resolveDefaultColumnType.js +28 -0
  192. package/dist/production/src/model/resolveDefaultColumnType.js.map +1 -0
  193. package/dist/production/src/schemaFilter.cjs +24 -0
  194. package/dist/production/src/schemaFilter.cjs.map +1 -0
  195. package/dist/production/src/schemaFilter.js +24 -0
  196. package/dist/production/src/schemaFilter.js.map +1 -0
  197. package/dist/production/src/schemaNormalizer.cjs +70 -0
  198. package/dist/production/src/schemaNormalizer.cjs.map +1 -0
  199. package/dist/production/src/schemaNormalizer.js +70 -0
  200. package/dist/production/src/schemaNormalizer.js.map +1 -0
  201. package/dist/production/src/type-schema/acl.cjs +143 -0
  202. package/dist/production/src/type-schema/acl.cjs.map +1 -0
  203. package/dist/production/src/type-schema/acl.js +126 -0
  204. package/dist/production/src/type-schema/acl.js.map +1 -0
  205. package/dist/production/src/type-schema/actions.cjs +87 -0
  206. package/dist/production/src/type-schema/actions.cjs.map +1 -0
  207. package/dist/production/src/type-schema/actions.js +70 -0
  208. package/dist/production/src/type-schema/actions.js.map +1 -0
  209. package/dist/production/src/type-schema/condition.cjs +87 -0
  210. package/dist/production/src/type-schema/condition.cjs.map +1 -0
  211. package/dist/production/src/type-schema/condition.js +70 -0
  212. package/dist/production/src/type-schema/condition.js.map +1 -0
  213. package/dist/production/src/type-schema/model.cjs +195 -0
  214. package/dist/production/src/type-schema/model.cjs.map +1 -0
  215. package/dist/production/src/type-schema/model.js +178 -0
  216. package/dist/production/src/type-schema/model.js.map +1 -0
  217. package/dist/production/src/type-schema/settings.cjs +32 -0
  218. package/dist/production/src/type-schema/settings.cjs.map +1 -0
  219. package/dist/production/src/type-schema/settings.js +15 -0
  220. package/dist/production/src/type-schema/settings.js.map +1 -0
  221. package/dist/production/src/type-schema/validation.cjs +115 -0
  222. package/dist/production/src/type-schema/validation.cjs.map +1 -0
  223. package/dist/production/src/type-schema/validation.js +98 -0
  224. package/dist/production/src/type-schema/validation.js.map +1 -0
  225. package/dist/production/src/type-schema/where.cjs +44 -0
  226. package/dist/production/src/type-schema/where.cjs.map +1 -0
  227. package/dist/production/src/type-schema/where.js +27 -0
  228. package/dist/production/src/type-schema/where.js.map +1 -0
  229. package/dist/production/src/utils/assertNever.cjs +7 -0
  230. package/dist/production/src/utils/assertNever.cjs.map +1 -0
  231. package/dist/production/src/utils/assertNever.js +7 -0
  232. package/dist/production/src/utils/assertNever.js.map +1 -0
  233. package/dist/production/src/utils/deepCompare.cjs +134 -0
  234. package/dist/production/src/utils/deepCompare.cjs.map +1 -0
  235. package/dist/production/src/utils/deepCompare.js +134 -0
  236. package/dist/production/src/utils/deepCompare.js.map +1 -0
  237. package/dist/production/src/utils/isIt.cjs +7 -0
  238. package/dist/production/src/utils/isIt.cjs.map +1 -0
  239. package/dist/production/src/utils/isIt.js +7 -0
  240. package/dist/production/src/utils/isIt.js.map +1 -0
  241. package/dist/production/src/utils/printJsValue.cjs +42 -0
  242. package/dist/production/src/utils/printJsValue.cjs.map +1 -0
  243. package/dist/production/src/utils/printJsValue.js +42 -0
  244. package/dist/production/src/utils/printJsValue.js.map +1 -0
  245. package/dist/production/src/validation/AclValidator.cjs +168 -0
  246. package/dist/production/src/validation/AclValidator.cjs.map +1 -0
  247. package/dist/production/src/validation/AclValidator.js +168 -0
  248. package/dist/production/src/validation/AclValidator.js.map +1 -0
  249. package/dist/production/src/validation/ActionsValidator.cjs +127 -0
  250. package/dist/production/src/validation/ActionsValidator.cjs.map +1 -0
  251. package/dist/production/src/validation/ActionsValidator.js +110 -0
  252. package/dist/production/src/validation/ActionsValidator.js.map +1 -0
  253. package/dist/production/src/validation/MembershipResolver.cjs +126 -0
  254. package/dist/production/src/validation/MembershipResolver.cjs.map +1 -0
  255. package/dist/production/src/validation/MembershipResolver.js +126 -0
  256. package/dist/production/src/validation/MembershipResolver.js.map +1 -0
  257. package/dist/production/src/validation/ModelValidator.cjs +310 -0
  258. package/dist/production/src/validation/ModelValidator.cjs.map +1 -0
  259. package/dist/production/src/validation/ModelValidator.js +310 -0
  260. package/dist/production/src/validation/ModelValidator.js.map +1 -0
  261. package/dist/production/src/validation/SchemaValidator.cjs +29 -0
  262. package/dist/production/src/validation/SchemaValidator.cjs.map +1 -0
  263. package/dist/production/src/validation/SchemaValidator.js +29 -0
  264. package/dist/production/src/validation/SchemaValidator.js.map +1 -0
  265. package/dist/production/src/validation/ValidationValidator.cjs +121 -0
  266. package/dist/production/src/validation/ValidationValidator.cjs.map +1 -0
  267. package/dist/production/src/validation/ValidationValidator.js +121 -0
  268. package/dist/production/src/validation/ValidationValidator.js.map +1 -0
  269. package/dist/production/src/validation/errors.cjs +16 -0
  270. package/dist/production/src/validation/errors.cjs.map +1 -0
  271. package/dist/production/src/validation/errors.js +16 -0
  272. package/dist/production/src/validation/errors.js.map +1 -0
  273. package/dist/tests/cases/unit/schemas/acl.d.ts +7 -7
  274. package/dist/tests/cases/unit/schemas/acl.d.ts.map +1 -1
  275. package/dist/tests/cases/unit/schemas/basic.d.ts +1 -1
  276. package/dist/tests/cases/unit/schemas/basic.d.ts.map +1 -1
  277. package/dist/tests/cases/unit/schemas/enum.d.ts +3 -3
  278. package/dist/tests/cases/unit/schemas/enum.d.ts.map +1 -1
  279. package/dist/tests/cases/unit/schemas/relations.d.ts +7 -7
  280. package/dist/tests/cases/unit/schemas/relations.d.ts.map +1 -1
  281. package/dist/tests/cases/unit/schemas/unique.d.ts +1 -1
  282. package/dist/tests/cases/unit/schemas/unique.d.ts.map +1 -1
  283. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  284. package/dist/{src → types}/acl/schemaUtils.d.ts.map +1 -1
  285. package/dist/{src → types}/dataUtils.d.ts +1 -1
  286. package/dist/types/dataUtils.d.ts.map +1 -0
  287. package/dist/{src → types}/lax/schema.d.ts +21 -21
  288. package/dist/{src → types}/model/modelUtils.d.ts +1 -1
  289. package/dist/types/model/modelUtils.d.ts.map +1 -0
  290. package/dist/{src → types}/model/resolveDefaultColumnType.d.ts.map +1 -1
  291. package/dist/{src → types}/schemaFilter.d.ts.map +1 -1
  292. package/dist/{src → types}/schemaNormalizer.d.ts.map +1 -1
  293. package/dist/types/tsconfig.tsbuildinfo +1 -0
  294. package/dist/{src → types}/type-schema/condition.d.ts +1 -2
  295. package/dist/types/type-schema/condition.d.ts.map +1 -0
  296. package/dist/types/type-schema/settings.d.ts +46 -0
  297. package/dist/types/type-schema/settings.d.ts.map +1 -0
  298. package/dist/{src → types}/type-schema/where.d.ts.map +1 -1
  299. package/dist/{src → types}/utils/deepCompare.d.ts.map +1 -1
  300. package/dist/types/utils/isIt.d.ts +2 -0
  301. package/dist/{src → types}/utils/isIt.d.ts.map +1 -1
  302. package/dist/{src → types}/utils/printJsValue.d.ts.map +1 -1
  303. package/dist/{src → types}/validation/MembershipResolver.d.ts.map +1 -1
  304. package/package.json +24 -12
  305. package/src/tsconfig.json +1 -1
  306. package/tests/cases/unit/tsDefinitionGenerator.test.ts +4 -3
  307. package/tests/tsconfig.json +2 -1
  308. package/vitest.config.ts +3 -0
  309. package/dist/src/acl/AllowAllPermissionFactory.js +0 -42
  310. package/dist/src/acl/AllowAllPermissionFactory.js.map +0 -1
  311. package/dist/src/acl/PredicateDefinitionProcessor.js +0 -75
  312. package/dist/src/acl/PredicateDefinitionProcessor.js.map +0 -1
  313. package/dist/src/acl/index.js +0 -20
  314. package/dist/src/acl/index.js.map +0 -1
  315. package/dist/src/acl/schemaUtils.js +0 -9
  316. package/dist/src/acl/schemaUtils.js.map +0 -1
  317. package/dist/src/dataUtils.d.ts.map +0 -1
  318. package/dist/src/dataUtils.js +0 -58
  319. package/dist/src/dataUtils.js.map +0 -1
  320. package/dist/src/definition-generator/AclDefinitionCodeGenerator.js +0 -116
  321. package/dist/src/definition-generator/AclDefinitionCodeGenerator.js.map +0 -1
  322. package/dist/src/definition-generator/DefinitionCodeGenerator.js +0 -216
  323. package/dist/src/definition-generator/DefinitionCodeGenerator.js.map +0 -1
  324. package/dist/src/definition-generator/DefinitionNamingConventions.js +0 -18
  325. package/dist/src/definition-generator/DefinitionNamingConventions.js.map +0 -1
  326. package/dist/src/definition-generator/TsDefinitionGenerator.js +0 -20
  327. package/dist/src/definition-generator/TsDefinitionGenerator.js.map +0 -1
  328. package/dist/src/definition-generator/index.js +0 -21
  329. package/dist/src/definition-generator/index.js.map +0 -1
  330. package/dist/src/index.js +0 -59
  331. package/dist/src/index.js.map +0 -1
  332. package/dist/src/lax/LaxSchemaConverter.js +0 -203
  333. package/dist/src/lax/LaxSchemaConverter.js.map +0 -1
  334. package/dist/src/lax/index.js +0 -21
  335. package/dist/src/lax/index.js.map +0 -1
  336. package/dist/src/lax/schema.js +0 -67
  337. package/dist/src/lax/schema.js.map +0 -1
  338. package/dist/src/model/NamingConventions.js +0 -29
  339. package/dist/src/model/NamingConventions.js.map +0 -1
  340. package/dist/src/model/index.js +0 -20
  341. package/dist/src/model/index.js.map +0 -1
  342. package/dist/src/model/modelUtils.d.ts.map +0 -1
  343. package/dist/src/model/modelUtils.js +0 -219
  344. package/dist/src/model/modelUtils.js.map +0 -1
  345. package/dist/src/model/resolveDefaultColumnType.js +0 -29
  346. package/dist/src/model/resolveDefaultColumnType.js.map +0 -1
  347. package/dist/src/schemaFilter.js +0 -29
  348. package/dist/src/schemaFilter.js.map +0 -1
  349. package/dist/src/schemaNormalizer.js +0 -72
  350. package/dist/src/schemaNormalizer.js.map +0 -1
  351. package/dist/src/tsconfig.tsbuildinfo +0 -1
  352. package/dist/src/type-schema/acl.js +0 -114
  353. package/dist/src/type-schema/acl.js.map +0 -1
  354. package/dist/src/type-schema/actions.js +0 -77
  355. package/dist/src/type-schema/actions.js.map +0 -1
  356. package/dist/src/type-schema/condition.d.ts.map +0 -1
  357. package/dist/src/type-schema/condition.js +0 -95
  358. package/dist/src/type-schema/condition.js.map +0 -1
  359. package/dist/src/type-schema/index.js +0 -22
  360. package/dist/src/type-schema/index.js.map +0 -1
  361. package/dist/src/type-schema/model.js +0 -156
  362. package/dist/src/type-schema/model.js.map +0 -1
  363. package/dist/src/type-schema/settings.d.ts +0 -35
  364. package/dist/src/type-schema/settings.d.ts.map +0 -1
  365. package/dist/src/type-schema/settings.js +0 -39
  366. package/dist/src/type-schema/settings.js.map +0 -1
  367. package/dist/src/type-schema/validation.js +0 -95
  368. package/dist/src/type-schema/validation.js.map +0 -1
  369. package/dist/src/type-schema/where.js +0 -50
  370. package/dist/src/type-schema/where.js.map +0 -1
  371. package/dist/src/utils/assertNever.js +0 -8
  372. package/dist/src/utils/assertNever.js.map +0 -1
  373. package/dist/src/utils/deepCompare.js +0 -136
  374. package/dist/src/utils/deepCompare.js.map +0 -1
  375. package/dist/src/utils/index.js +0 -20
  376. package/dist/src/utils/index.js.map +0 -1
  377. package/dist/src/utils/isIt.d.ts +0 -2
  378. package/dist/src/utils/isIt.js +0 -11
  379. package/dist/src/utils/isIt.js.map +0 -1
  380. package/dist/src/utils/printJsValue.js +0 -57
  381. package/dist/src/utils/printJsValue.js.map +0 -1
  382. package/dist/src/validation/AclValidator.js +0 -147
  383. package/dist/src/validation/AclValidator.js.map +0 -1
  384. package/dist/src/validation/ActionsValidator.js +0 -134
  385. package/dist/src/validation/ActionsValidator.js.map +0 -1
  386. package/dist/src/validation/MembershipResolver.js +0 -113
  387. package/dist/src/validation/MembershipResolver.js.map +0 -1
  388. package/dist/src/validation/ModelValidator.js +0 -306
  389. package/dist/src/validation/ModelValidator.js.map +0 -1
  390. package/dist/src/validation/SchemaValidator.js +0 -27
  391. package/dist/src/validation/SchemaValidator.js.map +0 -1
  392. package/dist/src/validation/ValidationValidator.js +0 -109
  393. package/dist/src/validation/ValidationValidator.js.map +0 -1
  394. package/dist/src/validation/errors.js +0 -17
  395. package/dist/src/validation/errors.js.map +0 -1
  396. package/dist/src/validation/index.js +0 -23
  397. package/dist/src/validation/index.js.map +0 -1
  398. package/dist/tests/cases/unit/conditionSchema.test.js +0 -50
  399. package/dist/tests/cases/unit/conditionSchema.test.js.map +0 -1
  400. package/dist/tests/cases/unit/deepCompare.test.js +0 -43
  401. package/dist/tests/cases/unit/deepCompare.test.js.map +0 -1
  402. package/dist/tests/cases/unit/laxSchemaConverter.test.js +0 -118
  403. package/dist/tests/cases/unit/laxSchemaConverter.test.js.map +0 -1
  404. package/dist/tests/cases/unit/membershipResolver.test.js +0 -168
  405. package/dist/tests/cases/unit/membershipResolver.test.js.map +0 -1
  406. package/dist/tests/cases/unit/modelValidator.test.js +0 -97
  407. package/dist/tests/cases/unit/modelValidator.test.js.map +0 -1
  408. package/dist/tests/cases/unit/printJsvalue.test.js +0 -90
  409. package/dist/tests/cases/unit/printJsvalue.test.js.map +0 -1
  410. package/dist/tests/cases/unit/schemas/acl.js +0 -47
  411. package/dist/tests/cases/unit/schemas/acl.js.map +0 -1
  412. package/dist/tests/cases/unit/schemas/basic.js +0 -11
  413. package/dist/tests/cases/unit/schemas/basic.js.map +0 -1
  414. package/dist/tests/cases/unit/schemas/enum.js +0 -13
  415. package/dist/tests/cases/unit/schemas/enum.js.map +0 -1
  416. package/dist/tests/cases/unit/schemas/relations.js +0 -27
  417. package/dist/tests/cases/unit/schemas/relations.js.map +0 -1
  418. package/dist/tests/cases/unit/schemas/unique.js +0 -20
  419. package/dist/tests/cases/unit/schemas/unique.js.map +0 -1
  420. package/dist/tests/cases/unit/tsDefinitionGenerator.test.js +0 -58
  421. package/dist/tests/cases/unit/tsDefinitionGenerator.test.js.map +0 -1
  422. package/dist/tests/cases/unit/whereSchema.test.js +0 -85
  423. package/dist/tests/cases/unit/whereSchema.test.js.map +0 -1
  424. /package/dist/{src → types}/acl/AllowAllPermissionFactory.d.ts +0 -0
  425. /package/dist/{src → types}/acl/AllowAllPermissionFactory.d.ts.map +0 -0
  426. /package/dist/{src → types}/acl/PredicateDefinitionProcessor.d.ts +0 -0
  427. /package/dist/{src → types}/acl/PredicateDefinitionProcessor.d.ts.map +0 -0
  428. /package/dist/{src → types}/acl/index.d.ts +0 -0
  429. /package/dist/{src → types}/acl/index.d.ts.map +0 -0
  430. /package/dist/{src → types}/acl/schemaUtils.d.ts +0 -0
  431. /package/dist/{src → types}/definition-generator/AclDefinitionCodeGenerator.d.ts +0 -0
  432. /package/dist/{src → types}/definition-generator/AclDefinitionCodeGenerator.d.ts.map +0 -0
  433. /package/dist/{src → types}/definition-generator/DefinitionCodeGenerator.d.ts +0 -0
  434. /package/dist/{src → types}/definition-generator/DefinitionCodeGenerator.d.ts.map +0 -0
  435. /package/dist/{src → types}/definition-generator/DefinitionNamingConventions.d.ts +0 -0
  436. /package/dist/{src → types}/definition-generator/DefinitionNamingConventions.d.ts.map +0 -0
  437. /package/dist/{src → types}/definition-generator/TsDefinitionGenerator.d.ts +0 -0
  438. /package/dist/{src → types}/definition-generator/TsDefinitionGenerator.d.ts.map +0 -0
  439. /package/dist/{src → types}/definition-generator/index.d.ts +0 -0
  440. /package/dist/{src → types}/definition-generator/index.d.ts.map +0 -0
  441. /package/dist/{src → types}/index.d.ts +0 -0
  442. /package/dist/{src → types}/index.d.ts.map +0 -0
  443. /package/dist/{src → types}/lax/LaxSchemaConverter.d.ts +0 -0
  444. /package/dist/{src → types}/lax/LaxSchemaConverter.d.ts.map +0 -0
  445. /package/dist/{src → types}/lax/index.d.ts +0 -0
  446. /package/dist/{src → types}/lax/index.d.ts.map +0 -0
  447. /package/dist/{src → types}/lax/schema.d.ts.map +0 -0
  448. /package/dist/{src → types}/model/NamingConventions.d.ts +0 -0
  449. /package/dist/{src → types}/model/NamingConventions.d.ts.map +0 -0
  450. /package/dist/{src → types}/model/index.d.ts +0 -0
  451. /package/dist/{src → types}/model/index.d.ts.map +0 -0
  452. /package/dist/{src → types}/model/resolveDefaultColumnType.d.ts +0 -0
  453. /package/dist/{src → types}/schemaFilter.d.ts +0 -0
  454. /package/dist/{src → types}/schemaNormalizer.d.ts +0 -0
  455. /package/dist/{src → types}/type-schema/acl.d.ts +0 -0
  456. /package/dist/{src → types}/type-schema/acl.d.ts.map +0 -0
  457. /package/dist/{src → types}/type-schema/actions.d.ts +0 -0
  458. /package/dist/{src → types}/type-schema/actions.d.ts.map +0 -0
  459. /package/dist/{src → types}/type-schema/index.d.ts +0 -0
  460. /package/dist/{src → types}/type-schema/index.d.ts.map +0 -0
  461. /package/dist/{src → types}/type-schema/model.d.ts +0 -0
  462. /package/dist/{src → types}/type-schema/model.d.ts.map +0 -0
  463. /package/dist/{src → types}/type-schema/validation.d.ts +0 -0
  464. /package/dist/{src → types}/type-schema/validation.d.ts.map +0 -0
  465. /package/dist/{src → types}/type-schema/where.d.ts +0 -0
  466. /package/dist/{src → types}/utils/assertNever.d.ts +0 -0
  467. /package/dist/{src → types}/utils/assertNever.d.ts.map +0 -0
  468. /package/dist/{src → types}/utils/deepCompare.d.ts +0 -0
  469. /package/dist/{src → types}/utils/index.d.ts +0 -0
  470. /package/dist/{src → types}/utils/index.d.ts.map +0 -0
  471. /package/dist/{src → types}/utils/printJsValue.d.ts +0 -0
  472. /package/dist/{src → types}/validation/AclValidator.d.ts +0 -0
  473. /package/dist/{src → types}/validation/AclValidator.d.ts.map +0 -0
  474. /package/dist/{src → types}/validation/ActionsValidator.d.ts +0 -0
  475. /package/dist/{src → types}/validation/ActionsValidator.d.ts.map +0 -0
  476. /package/dist/{src → types}/validation/MembershipResolver.d.ts +0 -0
  477. /package/dist/{src → types}/validation/ModelValidator.d.ts +0 -0
  478. /package/dist/{src → types}/validation/ModelValidator.d.ts.map +0 -0
  479. /package/dist/{src → types}/validation/SchemaValidator.d.ts +0 -0
  480. /package/dist/{src → types}/validation/SchemaValidator.d.ts.map +0 -0
  481. /package/dist/{src → types}/validation/ValidationValidator.d.ts +0 -0
  482. /package/dist/{src → types}/validation/ValidationValidator.d.ts.map +0 -0
  483. /package/dist/{src → types}/validation/errors.d.ts +0 -0
  484. /package/dist/{src → types}/validation/errors.d.ts.map +0 -0
  485. /package/dist/{src → types}/validation/index.d.ts +0 -0
  486. /package/dist/{src → types}/validation/index.d.ts.map +0 -0
@@ -0,0 +1,202 @@
1
+ import { Model } from "@contember/schema";
2
+ import { resolveDefaultColumnType } from "../model/resolveDefaultColumnType.js";
3
+ import { DefaultNamingConventions } from "../model/NamingConventions.js";
4
+ import { emptySchema } from "../../index.js";
5
+ var __defProp = Object.defineProperty;
6
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
+ const simpleColumnTypes = {
9
+ boolean: { type: Model.ColumnType.Bool, columnType: "boolean" },
10
+ int: { type: Model.ColumnType.Int, columnType: "integer" },
11
+ date: { type: Model.ColumnType.Date, columnType: "date" },
12
+ datetime: { type: Model.ColumnType.DateTime, columnType: "timestamptz" },
13
+ float: { type: Model.ColumnType.Double, columnType: "double precision" },
14
+ json: { type: Model.ColumnType.Json, columnType: "jsonb" },
15
+ string: { type: Model.ColumnType.String, columnType: "text" }
16
+ };
17
+ const isColumnDefinition = (field) => field.type in simpleColumnTypes;
18
+ class LaxSchemaConverter {
19
+ constructor(schema, conventions = new DefaultNamingConventions()) {
20
+ this.schema = schema;
21
+ this.conventions = conventions;
22
+ }
23
+ convert() {
24
+ const builder = new LaxSchemaBuilder(this.schema, this.conventions);
25
+ return builder.build();
26
+ }
27
+ }
28
+ class LaxSchemaBuilder {
29
+ constructor(schema, conventions = new DefaultNamingConventions()) {
30
+ this.schema = schema;
31
+ this.conventions = conventions;
32
+ __publicField(this, "entities", {});
33
+ __publicField(this, "enums", {});
34
+ }
35
+ build() {
36
+ for (const [entityName, entityDefinition] of Object.entries(this.schema.entities)) {
37
+ for (const [fieldName, fieldDefinition] of Object.entries(entityDefinition.fields)) {
38
+ if (isColumnDefinition(fieldDefinition)) {
39
+ this.processColumn(entityName, fieldName, fieldDefinition);
40
+ } else if (fieldDefinition.type === "enum") {
41
+ this.processEnum(entityName, fieldName, fieldDefinition);
42
+ } else {
43
+ this.processRelation(entityName, fieldName, fieldDefinition);
44
+ }
45
+ }
46
+ }
47
+ return {
48
+ ...emptySchema,
49
+ model: {
50
+ enums: this.enums,
51
+ entities: this.entities
52
+ }
53
+ };
54
+ }
55
+ processColumn(entityName, fieldName, columnDef) {
56
+ const columnName = this.conventions.getColumnName(fieldName);
57
+ this.registerField(entityName, {
58
+ name: fieldName,
59
+ columnName,
60
+ type: simpleColumnTypes[columnDef.type].type,
61
+ nullable: !columnDef.notNull,
62
+ columnType: simpleColumnTypes[columnDef.type].columnType
63
+ });
64
+ }
65
+ processEnum(entityName, fieldName, enumDef) {
66
+ this.enums[enumDef.enumName] = Array.from(/* @__PURE__ */ new Set([...this.enums[enumDef.enumName] ?? [], ...enumDef.values]));
67
+ const columnName = this.conventions.getColumnName(fieldName);
68
+ this.registerField(entityName, {
69
+ name: fieldName,
70
+ columnName,
71
+ type: Model.ColumnType.Enum,
72
+ nullable: !enumDef.notNull,
73
+ columnType: enumDef.enumName
74
+ });
75
+ }
76
+ processRelation(entityName, fieldName, relDef) {
77
+ switch (relDef.type) {
78
+ case "manyHasMany":
79
+ const joiningColumns = this.conventions.getJoiningTableColumnNames(entityName, fieldName, relDef.targetEntity, relDef.targetField);
80
+ this.registerField(entityName, {
81
+ type: Model.RelationType.ManyHasMany,
82
+ name: fieldName,
83
+ target: relDef.targetEntity,
84
+ inversedBy: relDef.targetField,
85
+ joiningTable: {
86
+ tableName: this.conventions.getJoiningTableName(entityName, fieldName),
87
+ joiningColumn: {
88
+ columnName: joiningColumns[0],
89
+ onDelete: Model.OnDelete.cascade
90
+ },
91
+ inverseJoiningColumn: {
92
+ columnName: joiningColumns[1],
93
+ onDelete: Model.OnDelete.cascade
94
+ },
95
+ eventLog: { enabled: true }
96
+ }
97
+ });
98
+ if (!this.schema.entities[relDef.targetEntity].fields[relDef.targetField]) {
99
+ this.processRelation(relDef.targetEntity, relDef.targetField, {
100
+ type: "manyHasManyInverse",
101
+ targetEntity: entityName,
102
+ targetField: fieldName
103
+ });
104
+ }
105
+ break;
106
+ case "manyHasManyInverse":
107
+ this.registerField(entityName, {
108
+ type: Model.RelationType.ManyHasMany,
109
+ name: fieldName,
110
+ target: relDef.targetEntity,
111
+ ownedBy: relDef.targetField
112
+ });
113
+ break;
114
+ case "manyHasOne":
115
+ this.registerField(entityName, {
116
+ type: Model.RelationType.ManyHasOne,
117
+ name: fieldName,
118
+ target: relDef.targetEntity,
119
+ inversedBy: relDef.targetField,
120
+ joiningColumn: {
121
+ columnName: this.conventions.getJoiningColumnName(fieldName),
122
+ onDelete: Model.OnDelete.restrict
123
+ },
124
+ nullable: !relDef.notNull
125
+ });
126
+ if (!this.schema.entities[relDef.targetEntity].fields[relDef.targetField]) {
127
+ this.processRelation(relDef.targetEntity, relDef.targetField, {
128
+ type: "oneHasMany",
129
+ targetEntity: entityName,
130
+ targetField: fieldName
131
+ });
132
+ }
133
+ break;
134
+ case "oneHasMany":
135
+ this.registerField(entityName, {
136
+ type: Model.RelationType.OneHasMany,
137
+ name: fieldName,
138
+ target: relDef.targetEntity,
139
+ ownedBy: relDef.targetField
140
+ });
141
+ break;
142
+ case "oneHasOne":
143
+ this.registerField(entityName, {
144
+ type: Model.RelationType.OneHasOne,
145
+ name: fieldName,
146
+ target: relDef.targetEntity,
147
+ inversedBy: relDef.targetField,
148
+ joiningColumn: {
149
+ columnName: this.conventions.getJoiningColumnName(fieldName),
150
+ onDelete: Model.OnDelete.restrict
151
+ },
152
+ nullable: !relDef.notNull
153
+ });
154
+ if (!this.schema.entities[relDef.targetEntity].fields[relDef.targetField]) {
155
+ this.processRelation(relDef.targetEntity, relDef.targetField, {
156
+ type: "oneHasOneInverse",
157
+ targetEntity: entityName,
158
+ targetField: fieldName
159
+ });
160
+ }
161
+ break;
162
+ case "oneHasOneInverse":
163
+ this.registerField(entityName, {
164
+ type: Model.RelationType.OneHasOne,
165
+ name: fieldName,
166
+ target: relDef.targetEntity,
167
+ ownedBy: relDef.targetField,
168
+ nullable: !relDef.notNull
169
+ });
170
+ break;
171
+ }
172
+ }
173
+ registerField(entityName, field) {
174
+ const entity = this.getEntity(entityName);
175
+ entity.fields[field.name] = field;
176
+ }
177
+ getEntity(entityName) {
178
+ var _a;
179
+ return (_a = this.entities)[entityName] ?? (_a[entityName] = {
180
+ name: entityName,
181
+ unique: [],
182
+ indexes: [],
183
+ primary: "id",
184
+ primaryColumn: "id",
185
+ tableName: this.conventions.getTableName(entityName),
186
+ eventLog: { enabled: true },
187
+ fields: {
188
+ id: {
189
+ name: "id",
190
+ columnName: "id",
191
+ type: Model.ColumnType.Uuid,
192
+ columnType: resolveDefaultColumnType(Model.ColumnType.Uuid),
193
+ nullable: false
194
+ }
195
+ }
196
+ });
197
+ }
198
+ }
199
+ export {
200
+ LaxSchemaConverter
201
+ };
202
+ //# sourceMappingURL=LaxSchemaConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LaxSchemaConverter.js","sources":["../../../../../packages/schema-utils/src/lax/LaxSchemaConverter.ts"],"sourcesContent":["import { Model, Schema, Writable } from '@contember/schema'\nimport { LaxSchema, LaxSchemaColumn, LaxSchemaEnum, LaxSchemaField, LaxSchemaRelation } from './schema'\nimport { DefaultNamingConventions, NamingConventions, resolveDefaultColumnType } from '../model'\nimport { emptySchema } from '../index'\n\nconst simpleColumnTypes: { [K in LaxSchemaColumn['type']]: { type: Model.ColumnType; columnType: string } } = {\n\tboolean: { type: Model.ColumnType.Bool, columnType: 'boolean' },\n\tint: { type: Model.ColumnType.Int, columnType: 'integer' },\n\tdate: { type: Model.ColumnType.Date, columnType: 'date' },\n\tdatetime: { type: Model.ColumnType.DateTime, columnType: 'timestamptz' },\n\tfloat: { type: Model.ColumnType.Double, columnType: 'double precision' },\n\tjson: { type: Model.ColumnType.Json, columnType: 'jsonb' },\n\tstring: { type: Model.ColumnType.String, columnType: 'text' },\n}\n\nconst isColumnDefinition = (field: LaxSchemaField): field is LaxSchemaColumn => field.type in simpleColumnTypes\n\nexport class LaxSchemaConverter {\n\tconstructor(\n\t\tprivate readonly schema: LaxSchema,\n\t\tprivate readonly conventions: NamingConventions = new DefaultNamingConventions(),\n\t) {\n\t}\n\n\tpublic convert(): Schema {\n\t\tconst builder = new LaxSchemaBuilder(this.schema, this.conventions)\n\t\treturn builder.build()\n\t}\n\n}\n\nclass LaxSchemaBuilder {\n\tprivate readonly entities: Record<string, Model.Entity> = {}\n\tprivate readonly enums: Record<string, string[]> = {}\n\n\tconstructor(\n\t\tprivate readonly schema: LaxSchema,\n\t\tprivate readonly conventions: NamingConventions = new DefaultNamingConventions(),\n\t) {\n\t}\n\n\tpublic build(): Schema {\n\t\tfor (const [entityName, entityDefinition] of Object.entries(this.schema.entities)) {\n\t\t\tfor (const [fieldName, fieldDefinition] of Object.entries(entityDefinition.fields)) {\n\t\t\t\tif (isColumnDefinition(fieldDefinition)) {\n\t\t\t\t\tthis.processColumn(entityName, fieldName, fieldDefinition)\n\n\t\t\t\t} else if (fieldDefinition.type === 'enum') {\n\t\t\t\t\tthis.processEnum(entityName, fieldName, fieldDefinition)\n\n\t\t\t\t} else {\n\t\t\t\t\tthis.processRelation(entityName, fieldName, fieldDefinition)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...emptySchema,\n\t\t\tmodel: {\n\t\t\t\tenums: this.enums,\n\t\t\t\tentities: this.entities,\n\t\t\t},\n\t\t}\n\t}\n\n\tprivate processColumn(entityName: string, fieldName: string, columnDef: LaxSchemaColumn) {\n\t\tconst columnName = this.conventions.getColumnName(fieldName)\n\t\tthis.registerField(entityName, {\n\t\t\tname: fieldName,\n\t\t\tcolumnName: columnName,\n\t\t\ttype: simpleColumnTypes[columnDef.type].type,\n\t\t\tnullable: !columnDef.notNull,\n\t\t\tcolumnType: simpleColumnTypes[columnDef.type].columnType,\n\t\t})\n\t}\n\n\tprivate processEnum(entityName: string, fieldName: string, enumDef: LaxSchemaEnum) {\n\t\tthis.enums[enumDef.enumName] = Array.from(new Set([...this.enums[enumDef.enumName] ?? [], ...enumDef.values]))\n\t\tconst columnName = this.conventions.getColumnName(fieldName)\n\t\tthis.registerField(entityName, {\n\t\t\tname: fieldName,\n\t\t\tcolumnName: columnName,\n\t\t\ttype: Model.ColumnType.Enum,\n\t\t\tnullable: !enumDef.notNull,\n\t\t\tcolumnType: enumDef.enumName,\n\t\t})\n\t}\n\n\tprivate processRelation(entityName: string, fieldName: string, relDef: LaxSchemaRelation) {\n\t\tswitch (relDef.type) {\n\t\t\tcase 'manyHasMany':\n\t\t\t\tconst joiningColumns = this.conventions.getJoiningTableColumnNames(entityName, fieldName, relDef.targetEntity, relDef.targetField)\n\t\t\t\tthis.registerField(entityName, {\n\t\t\t\t\ttype: Model.RelationType.ManyHasMany,\n\t\t\t\t\tname: fieldName,\n\t\t\t\t\ttarget: relDef.targetEntity,\n\t\t\t\t\tinversedBy: relDef.targetField,\n\t\t\t\t\tjoiningTable: {\n\t\t\t\t\t\ttableName: this.conventions.getJoiningTableName(entityName, fieldName),\n\t\t\t\t\t\tjoiningColumn: {\n\t\t\t\t\t\t\tcolumnName: joiningColumns[0],\n\t\t\t\t\t\t\tonDelete: Model.OnDelete.cascade,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinverseJoiningColumn: {\n\t\t\t\t\t\t\tcolumnName: joiningColumns[1],\n\t\t\t\t\t\t\tonDelete: Model.OnDelete.cascade,\n\t\t\t\t\t\t},\n\t\t\t\t\t\teventLog: { enabled: true },\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tif (!this.schema.entities[relDef.targetEntity].fields[relDef.targetField]) {\n\t\t\t\t\tthis.processRelation(relDef.targetEntity, relDef.targetField, {\n\t\t\t\t\t\ttype: 'manyHasManyInverse',\n\t\t\t\t\t\ttargetEntity: entityName,\n\t\t\t\t\t\ttargetField: fieldName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'manyHasManyInverse':\n\t\t\t\tthis.registerField(entityName, {\n\t\t\t\t\ttype: Model.RelationType.ManyHasMany,\n\t\t\t\t\tname: fieldName,\n\t\t\t\t\ttarget: relDef.targetEntity,\n\t\t\t\t\townedBy: relDef.targetField,\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'manyHasOne':\n\t\t\t\tthis.registerField(entityName, {\n\t\t\t\t\ttype: Model.RelationType.ManyHasOne,\n\t\t\t\t\tname: fieldName,\n\t\t\t\t\ttarget: relDef.targetEntity,\n\t\t\t\t\tinversedBy: relDef.targetField,\n\t\t\t\t\tjoiningColumn: {\n\t\t\t\t\t\tcolumnName: this.conventions.getJoiningColumnName(fieldName),\n\t\t\t\t\t\tonDelete: Model.OnDelete.restrict,\n\t\t\t\t\t},\n\t\t\t\t\tnullable: !relDef.notNull,\n\t\t\t\t})\n\t\t\t\tif (!this.schema.entities[relDef.targetEntity].fields[relDef.targetField]) {\n\t\t\t\t\tthis.processRelation(relDef.targetEntity, relDef.targetField, {\n\t\t\t\t\t\ttype: 'oneHasMany',\n\t\t\t\t\t\ttargetEntity: entityName,\n\t\t\t\t\t\ttargetField: fieldName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'oneHasMany':\n\t\t\t\tthis.registerField(entityName, {\n\t\t\t\t\ttype: Model.RelationType.OneHasMany,\n\t\t\t\t\tname: fieldName,\n\t\t\t\t\ttarget: relDef.targetEntity,\n\t\t\t\t\townedBy: relDef.targetField,\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'oneHasOne':\n\t\t\t\tthis.registerField(entityName, {\n\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\tname: fieldName,\n\t\t\t\t\ttarget: relDef.targetEntity,\n\t\t\t\t\tinversedBy: relDef.targetField,\n\t\t\t\t\tjoiningColumn: {\n\t\t\t\t\t\tcolumnName: this.conventions.getJoiningColumnName(fieldName),\n\t\t\t\t\t\tonDelete: Model.OnDelete.restrict,\n\t\t\t\t\t},\n\t\t\t\t\tnullable: !relDef.notNull,\n\t\t\t\t})\n\t\t\t\tif (!this.schema.entities[relDef.targetEntity].fields[relDef.targetField]) {\n\t\t\t\t\tthis.processRelation(relDef.targetEntity, relDef.targetField, {\n\t\t\t\t\t\ttype: 'oneHasOneInverse',\n\t\t\t\t\t\ttargetEntity: entityName,\n\t\t\t\t\t\ttargetField: fieldName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'oneHasOneInverse':\n\t\t\t\tthis.registerField(entityName, {\n\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\tname: fieldName,\n\t\t\t\t\ttarget: relDef.targetEntity,\n\t\t\t\t\townedBy: relDef.targetField,\n\t\t\t\t\tnullable: !relDef.notNull,\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tprivate registerField(entityName: string, field: Model.AnyField) {\n\t\tconst entity = this.getEntity(entityName)\n\t\t;(entity.fields as Writable<Model.Entity['fields']>)[field.name] = field\n\t}\n\n\n\tprivate getEntity(entityName: string): Model.Entity {\n\t\treturn this.entities[entityName] ??= {\n\t\t\tname: entityName,\n\t\t\tunique: [],\n\t\t\tindexes: [],\n\t\t\tprimary: 'id',\n\t\t\tprimaryColumn: 'id',\n\t\t\ttableName: this.conventions.getTableName(entityName),\n\t\t\teventLog: { enabled: true },\n\t\t\tfields: {\n\t\t\t\tid: {\n\t\t\t\t\tname: 'id',\n\t\t\t\t\tcolumnName: 'id',\n\t\t\t\t\ttype: Model.ColumnType.Uuid,\n\t\t\t\t\tcolumnType: resolveDefaultColumnType(Model.ColumnType.Uuid),\n\t\t\t\t\tnullable: false,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const Typesafe = require("@contember/typesafe");
4
+ function _interopNamespaceDefault(e) {
5
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
6
+ if (e) {
7
+ for (const k in e) {
8
+ if (k !== "default") {
9
+ const d = Object.getOwnPropertyDescriptor(e, k);
10
+ Object.defineProperty(n, k, d.get ? d : {
11
+ enumerable: true,
12
+ get: () => e[k]
13
+ });
14
+ }
15
+ }
16
+ }
17
+ n.default = e;
18
+ return Object.freeze(n);
19
+ }
20
+ const Typesafe__namespace = /* @__PURE__ */ _interopNamespaceDefault(Typesafe);
21
+ const LaxSchemaEnumInner = Typesafe__namespace.intersection(
22
+ Typesafe__namespace.object({
23
+ values: Typesafe__namespace.array(Typesafe__namespace.string),
24
+ enumName: Typesafe__namespace.string
25
+ }),
26
+ Typesafe__namespace.partial({
27
+ notNull: Typesafe__namespace.boolean,
28
+ unique: Typesafe__namespace.boolean
29
+ })
30
+ );
31
+ const LaxSchemaColumnInner = Typesafe__namespace.partial({
32
+ notNull: Typesafe__namespace.boolean,
33
+ unique: Typesafe__namespace.boolean
34
+ });
35
+ const LaxSchemaRelationInner = Typesafe__namespace.intersection(
36
+ Typesafe__namespace.object({
37
+ targetEntity: Typesafe__namespace.string,
38
+ targetField: Typesafe__namespace.string
39
+ }),
40
+ Typesafe__namespace.partial({
41
+ notNull: Typesafe__namespace.boolean
42
+ })
43
+ );
44
+ const LaxSchemaField = Typesafe__namespace.discriminatedUnion("type", {
45
+ oneHasOne: LaxSchemaRelationInner,
46
+ oneHasOneInverse: LaxSchemaRelationInner,
47
+ manyHasMany: LaxSchemaRelationInner,
48
+ manyHasManyInverse: LaxSchemaRelationInner,
49
+ oneHasMany: LaxSchemaRelationInner,
50
+ manyHasOne: LaxSchemaRelationInner,
51
+ int: LaxSchemaColumnInner,
52
+ float: LaxSchemaColumnInner,
53
+ boolean: LaxSchemaColumnInner,
54
+ string: LaxSchemaColumnInner,
55
+ json: LaxSchemaColumnInner,
56
+ date: LaxSchemaColumnInner,
57
+ datetime: LaxSchemaColumnInner,
58
+ enum: LaxSchemaEnumInner
59
+ });
60
+ const LaxSchemaEntity = Typesafe__namespace.object({
61
+ fields: Typesafe__namespace.record(Typesafe__namespace.string, LaxSchemaField)
62
+ });
63
+ const LaxSchema = Typesafe__namespace.object({
64
+ entities: Typesafe__namespace.record(
65
+ Typesafe__namespace.string,
66
+ LaxSchemaEntity
67
+ )
68
+ });
69
+ exports.LaxSchema = LaxSchema;
70
+ //# sourceMappingURL=schema.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.cjs","sources":["../../../../../packages/schema-utils/src/lax/schema.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\n\nconst LaxSchemaEnumInner = Typesafe.intersection(\n\tTypesafe.object({\n\t\tvalues: Typesafe.array(Typesafe.string),\n\t\tenumName: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\tnotNull: Typesafe.boolean,\n\t\tunique: Typesafe.boolean,\n\t}),\n)\n\nconst LaxSchemaColumnInner = Typesafe.partial({\n\tnotNull: Typesafe.boolean,\n\tunique: Typesafe.boolean,\n})\n\nconst LaxSchemaRelationInner = Typesafe.intersection(\n\tTypesafe.object({\n\t\ttargetEntity: Typesafe.string,\n\t\ttargetField: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\tnotNull: Typesafe.boolean,\n\t}),\n)\n\nconst LaxSchemaField = Typesafe.discriminatedUnion('type', {\n\toneHasOne: LaxSchemaRelationInner,\n\toneHasOneInverse: LaxSchemaRelationInner,\n\tmanyHasMany: LaxSchemaRelationInner,\n\tmanyHasManyInverse: LaxSchemaRelationInner,\n\toneHasMany: LaxSchemaRelationInner,\n\tmanyHasOne: LaxSchemaRelationInner,\n\tint: LaxSchemaColumnInner,\n\tfloat: LaxSchemaColumnInner,\n\tboolean: LaxSchemaColumnInner,\n\tstring: LaxSchemaColumnInner,\n\tjson: LaxSchemaColumnInner,\n\tdate: LaxSchemaColumnInner,\n\tdatetime: LaxSchemaColumnInner,\n\tenum: LaxSchemaEnumInner,\n})\n\nexport type LaxSchemaField = ReturnType<typeof LaxSchemaField>\nexport type LaxSchemaEnum = Extract<LaxSchemaField, { type: 'enum' }>\nexport type LaxSchemaColumn = Extract<LaxSchemaField, { type: 'int' | 'float' | 'boolean' | 'string' | 'json' | 'datetime' | 'date' | 'uuid' }>\nexport type LaxSchemaRelation = Extract<LaxSchemaField, {type: 'oneHasOne' | 'oneHasOneInverse' | 'manyHasMany' | 'manyHasManyInverse' | 'oneHasMany' | 'manyHasOne' }>\n\nconst LaxSchemaEntity = Typesafe.object({\n\tfields: Typesafe.record(Typesafe.string, LaxSchemaField),\n})\nexport type LaxSchemaEntity = ReturnType<typeof LaxSchemaEntity>\n\nexport const LaxSchema = Typesafe.object({\n\tentities: Typesafe.record(\n\t\tTypesafe.string,\n\t\tLaxSchemaEntity,\n\t),\n})\nexport type LaxSchema = ReturnType<typeof LaxSchema>\n"],"names":["Typesafe"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,MAAM,qBAAqBA,oBAAS;AAAA,EACnCA,oBAAS,OAAO;AAAA,IACf,QAAQA,oBAAS,MAAMA,oBAAS,MAAM;AAAA,IACtC,UAAUA,oBAAS;AAAA,EAAA,CACnB;AAAA,EACDA,oBAAS,QAAQ;AAAA,IAChB,SAASA,oBAAS;AAAA,IAClB,QAAQA,oBAAS;AAAA,EAAA,CACjB;AACF;AAEA,MAAM,uBAAuBA,oBAAS,QAAQ;AAAA,EAC7C,SAASA,oBAAS;AAAA,EAClB,QAAQA,oBAAS;AAClB,CAAC;AAED,MAAM,yBAAyBA,oBAAS;AAAA,EACvCA,oBAAS,OAAO;AAAA,IACf,cAAcA,oBAAS;AAAA,IACvB,aAAaA,oBAAS;AAAA,EAAA,CACtB;AAAA,EACDA,oBAAS,QAAQ;AAAA,IAChB,SAASA,oBAAS;AAAA,EAAA,CAClB;AACF;AAEA,MAAM,iBAAiBA,oBAAS,mBAAmB,QAAQ;AAAA,EAC1D,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AACP,CAAC;AAOD,MAAM,kBAAkBA,oBAAS,OAAO;AAAA,EACvC,QAAQA,oBAAS,OAAOA,oBAAS,QAAQ,cAAc;AACxD,CAAC;AAGY,MAAA,YAAYA,oBAAS,OAAO;AAAA,EACxC,UAAUA,oBAAS;AAAA,IAClBA,oBAAS;AAAA,IACT;AAAA,EACD;AACD,CAAC;;"}
@@ -0,0 +1,53 @@
1
+ import * as Typesafe from "@contember/typesafe";
2
+ const LaxSchemaEnumInner = Typesafe.intersection(
3
+ Typesafe.object({
4
+ values: Typesafe.array(Typesafe.string),
5
+ enumName: Typesafe.string
6
+ }),
7
+ Typesafe.partial({
8
+ notNull: Typesafe.boolean,
9
+ unique: Typesafe.boolean
10
+ })
11
+ );
12
+ const LaxSchemaColumnInner = Typesafe.partial({
13
+ notNull: Typesafe.boolean,
14
+ unique: Typesafe.boolean
15
+ });
16
+ const LaxSchemaRelationInner = Typesafe.intersection(
17
+ Typesafe.object({
18
+ targetEntity: Typesafe.string,
19
+ targetField: Typesafe.string
20
+ }),
21
+ Typesafe.partial({
22
+ notNull: Typesafe.boolean
23
+ })
24
+ );
25
+ const LaxSchemaField = Typesafe.discriminatedUnion("type", {
26
+ oneHasOne: LaxSchemaRelationInner,
27
+ oneHasOneInverse: LaxSchemaRelationInner,
28
+ manyHasMany: LaxSchemaRelationInner,
29
+ manyHasManyInverse: LaxSchemaRelationInner,
30
+ oneHasMany: LaxSchemaRelationInner,
31
+ manyHasOne: LaxSchemaRelationInner,
32
+ int: LaxSchemaColumnInner,
33
+ float: LaxSchemaColumnInner,
34
+ boolean: LaxSchemaColumnInner,
35
+ string: LaxSchemaColumnInner,
36
+ json: LaxSchemaColumnInner,
37
+ date: LaxSchemaColumnInner,
38
+ datetime: LaxSchemaColumnInner,
39
+ enum: LaxSchemaEnumInner
40
+ });
41
+ const LaxSchemaEntity = Typesafe.object({
42
+ fields: Typesafe.record(Typesafe.string, LaxSchemaField)
43
+ });
44
+ const LaxSchema = Typesafe.object({
45
+ entities: Typesafe.record(
46
+ Typesafe.string,
47
+ LaxSchemaEntity
48
+ )
49
+ });
50
+ export {
51
+ LaxSchema
52
+ };
53
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sources":["../../../../../packages/schema-utils/src/lax/schema.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\n\nconst LaxSchemaEnumInner = Typesafe.intersection(\n\tTypesafe.object({\n\t\tvalues: Typesafe.array(Typesafe.string),\n\t\tenumName: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\tnotNull: Typesafe.boolean,\n\t\tunique: Typesafe.boolean,\n\t}),\n)\n\nconst LaxSchemaColumnInner = Typesafe.partial({\n\tnotNull: Typesafe.boolean,\n\tunique: Typesafe.boolean,\n})\n\nconst LaxSchemaRelationInner = Typesafe.intersection(\n\tTypesafe.object({\n\t\ttargetEntity: Typesafe.string,\n\t\ttargetField: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\tnotNull: Typesafe.boolean,\n\t}),\n)\n\nconst LaxSchemaField = Typesafe.discriminatedUnion('type', {\n\toneHasOne: LaxSchemaRelationInner,\n\toneHasOneInverse: LaxSchemaRelationInner,\n\tmanyHasMany: LaxSchemaRelationInner,\n\tmanyHasManyInverse: LaxSchemaRelationInner,\n\toneHasMany: LaxSchemaRelationInner,\n\tmanyHasOne: LaxSchemaRelationInner,\n\tint: LaxSchemaColumnInner,\n\tfloat: LaxSchemaColumnInner,\n\tboolean: LaxSchemaColumnInner,\n\tstring: LaxSchemaColumnInner,\n\tjson: LaxSchemaColumnInner,\n\tdate: LaxSchemaColumnInner,\n\tdatetime: LaxSchemaColumnInner,\n\tenum: LaxSchemaEnumInner,\n})\n\nexport type LaxSchemaField = ReturnType<typeof LaxSchemaField>\nexport type LaxSchemaEnum = Extract<LaxSchemaField, { type: 'enum' }>\nexport type LaxSchemaColumn = Extract<LaxSchemaField, { type: 'int' | 'float' | 'boolean' | 'string' | 'json' | 'datetime' | 'date' | 'uuid' }>\nexport type LaxSchemaRelation = Extract<LaxSchemaField, {type: 'oneHasOne' | 'oneHasOneInverse' | 'manyHasMany' | 'manyHasManyInverse' | 'oneHasMany' | 'manyHasOne' }>\n\nconst LaxSchemaEntity = Typesafe.object({\n\tfields: Typesafe.record(Typesafe.string, LaxSchemaField),\n})\nexport type LaxSchemaEntity = ReturnType<typeof LaxSchemaEntity>\n\nexport const LaxSchema = Typesafe.object({\n\tentities: Typesafe.record(\n\t\tTypesafe.string,\n\t\tLaxSchemaEntity,\n\t),\n})\nexport type LaxSchema = ReturnType<typeof LaxSchema>\n"],"names":[],"mappings":";AAEA,MAAM,qBAAqB,SAAS;AAAA,EACnC,SAAS,OAAO;AAAA,IACf,QAAQ,SAAS,MAAM,SAAS,MAAM;AAAA,IACtC,UAAU,SAAS;AAAA,EAAA,CACnB;AAAA,EACD,SAAS,QAAQ;AAAA,IAChB,SAAS,SAAS;AAAA,IAClB,QAAQ,SAAS;AAAA,EAAA,CACjB;AACF;AAEA,MAAM,uBAAuB,SAAS,QAAQ;AAAA,EAC7C,SAAS,SAAS;AAAA,EAClB,QAAQ,SAAS;AAClB,CAAC;AAED,MAAM,yBAAyB,SAAS;AAAA,EACvC,SAAS,OAAO;AAAA,IACf,cAAc,SAAS;AAAA,IACvB,aAAa,SAAS;AAAA,EAAA,CACtB;AAAA,EACD,SAAS,QAAQ;AAAA,IAChB,SAAS,SAAS;AAAA,EAAA,CAClB;AACF;AAEA,MAAM,iBAAiB,SAAS,mBAAmB,QAAQ;AAAA,EAC1D,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AACP,CAAC;AAOD,MAAM,kBAAkB,SAAS,OAAO;AAAA,EACvC,QAAQ,SAAS,OAAO,SAAS,QAAQ,cAAc;AACxD,CAAC;AAGY,MAAA,YAAY,SAAS,OAAO;AAAA,EACxC,UAAU,SAAS;AAAA,IAClB,SAAS;AAAA,IACT;AAAA,EACD;AACD,CAAC;"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const toUnderscore = (s) => s.replace(/([A-Z]+)/g, (x, y) => "_" + y.toLowerCase()).replace(/^_/, "");
4
+ class DefaultNamingConventions {
5
+ getPrimaryField() {
6
+ return "id";
7
+ }
8
+ getColumnName(fieldName) {
9
+ return toUnderscore(fieldName);
10
+ }
11
+ getTableName(entityName) {
12
+ return toUnderscore(entityName);
13
+ }
14
+ getJoiningColumnName(relationName) {
15
+ return toUnderscore(relationName) + "_id";
16
+ }
17
+ getJoiningTableName(entity, relation) {
18
+ return toUnderscore(entity) + "_" + toUnderscore(relation);
19
+ }
20
+ getJoiningTableColumnNames(owningEntity, owningRelation, inverseEntity, inverseRelation) {
21
+ return [
22
+ toUnderscore(owningEntity) + "_id",
23
+ toUnderscore(inverseEntity === owningEntity ? owningRelation : inverseEntity) + "_id"
24
+ ];
25
+ }
26
+ }
27
+ exports.DefaultNamingConventions = DefaultNamingConventions;
28
+ //# sourceMappingURL=NamingConventions.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NamingConventions.cjs","sources":["../../../../../packages/schema-utils/src/model/NamingConventions.ts"],"sourcesContent":["export interface NamingConventions {\n\tgetPrimaryField(): string\n\n\tgetColumnName(fieldName: string): string\n\n\tgetTableName(entityName: string): string\n\n\tgetJoiningColumnName(relationName: string): string\n\n\tgetJoiningTableName(entity: string, relation: string): string\n\n\tgetJoiningTableColumnNames(\n\t\towningEntity: string,\n\t\towningRelation: string,\n\t\tinverseEntity: string,\n\t\tinverseRelation?: string,\n\t): [string, string]\n}\n\nconst toUnderscore = (s: string) => s.replace(/([A-Z]+)/g, (x, y) => '_' + y.toLowerCase()).replace(/^_/, '')\nexport class DefaultNamingConventions implements NamingConventions {\n\tgetPrimaryField(): string {\n\t\treturn 'id'\n\t}\n\n\tgetColumnName(fieldName: string): string {\n\t\treturn toUnderscore(fieldName)\n\t}\n\n\tgetTableName(entityName: string): string {\n\t\treturn toUnderscore(entityName)\n\t}\n\n\tgetJoiningColumnName(relationName: string): string {\n\t\treturn toUnderscore(relationName) + '_id'\n\t}\n\n\tgetJoiningTableName(entity: string, relation: string): string {\n\t\treturn toUnderscore(entity) + '_' + toUnderscore(relation)\n\t}\n\n\tgetJoiningTableColumnNames(\n\t\towningEntity: string,\n\t\towningRelation: string,\n\t\tinverseEntity: string,\n\t\tinverseRelation?: string,\n\t): [string, string] {\n\t\treturn [\n\t\t\ttoUnderscore(owningEntity) + '_id',\n\t\t\ttoUnderscore(inverseEntity === owningEntity ? owningRelation : inverseEntity) + '_id',\n\t\t]\n\t}\n}\n"],"names":[],"mappings":";;AAmBA,MAAM,eAAe,CAAC,MAAc,EAAE,QAAQ,aAAa,CAAC,GAAG,MAAM,MAAM,EAAE,YAAa,CAAA,EAAE,QAAQ,MAAM,EAAE;AACrG,MAAM,yBAAsD;AAAA,EAClE,kBAA0B;AAClB,WAAA;AAAA,EACR;AAAA,EAEA,cAAc,WAA2B;AACxC,WAAO,aAAa,SAAS;AAAA,EAC9B;AAAA,EAEA,aAAa,YAA4B;AACxC,WAAO,aAAa,UAAU;AAAA,EAC/B;AAAA,EAEA,qBAAqB,cAA8B;AAC3C,WAAA,aAAa,YAAY,IAAI;AAAA,EACrC;AAAA,EAEA,oBAAoB,QAAgB,UAA0B;AAC7D,WAAO,aAAa,MAAM,IAAI,MAAM,aAAa,QAAQ;AAAA,EAC1D;AAAA,EAEA,2BACC,cACA,gBACA,eACA,iBACmB;AACZ,WAAA;AAAA,MACN,aAAa,YAAY,IAAI;AAAA,MAC7B,aAAa,kBAAkB,eAAe,iBAAiB,aAAa,IAAI;AAAA,IAAA;AAAA,EAElF;AACD;;"}
@@ -0,0 +1,28 @@
1
+ const toUnderscore = (s) => s.replace(/([A-Z]+)/g, (x, y) => "_" + y.toLowerCase()).replace(/^_/, "");
2
+ class DefaultNamingConventions {
3
+ getPrimaryField() {
4
+ return "id";
5
+ }
6
+ getColumnName(fieldName) {
7
+ return toUnderscore(fieldName);
8
+ }
9
+ getTableName(entityName) {
10
+ return toUnderscore(entityName);
11
+ }
12
+ getJoiningColumnName(relationName) {
13
+ return toUnderscore(relationName) + "_id";
14
+ }
15
+ getJoiningTableName(entity, relation) {
16
+ return toUnderscore(entity) + "_" + toUnderscore(relation);
17
+ }
18
+ getJoiningTableColumnNames(owningEntity, owningRelation, inverseEntity, inverseRelation) {
19
+ return [
20
+ toUnderscore(owningEntity) + "_id",
21
+ toUnderscore(inverseEntity === owningEntity ? owningRelation : inverseEntity) + "_id"
22
+ ];
23
+ }
24
+ }
25
+ export {
26
+ DefaultNamingConventions
27
+ };
28
+ //# sourceMappingURL=NamingConventions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NamingConventions.js","sources":["../../../../../packages/schema-utils/src/model/NamingConventions.ts"],"sourcesContent":["export interface NamingConventions {\n\tgetPrimaryField(): string\n\n\tgetColumnName(fieldName: string): string\n\n\tgetTableName(entityName: string): string\n\n\tgetJoiningColumnName(relationName: string): string\n\n\tgetJoiningTableName(entity: string, relation: string): string\n\n\tgetJoiningTableColumnNames(\n\t\towningEntity: string,\n\t\towningRelation: string,\n\t\tinverseEntity: string,\n\t\tinverseRelation?: string,\n\t): [string, string]\n}\n\nconst toUnderscore = (s: string) => s.replace(/([A-Z]+)/g, (x, y) => '_' + y.toLowerCase()).replace(/^_/, '')\nexport class DefaultNamingConventions implements NamingConventions {\n\tgetPrimaryField(): string {\n\t\treturn 'id'\n\t}\n\n\tgetColumnName(fieldName: string): string {\n\t\treturn toUnderscore(fieldName)\n\t}\n\n\tgetTableName(entityName: string): string {\n\t\treturn toUnderscore(entityName)\n\t}\n\n\tgetJoiningColumnName(relationName: string): string {\n\t\treturn toUnderscore(relationName) + '_id'\n\t}\n\n\tgetJoiningTableName(entity: string, relation: string): string {\n\t\treturn toUnderscore(entity) + '_' + toUnderscore(relation)\n\t}\n\n\tgetJoiningTableColumnNames(\n\t\towningEntity: string,\n\t\towningRelation: string,\n\t\tinverseEntity: string,\n\t\tinverseRelation?: string,\n\t): [string, string] {\n\t\treturn [\n\t\t\ttoUnderscore(owningEntity) + '_id',\n\t\t\ttoUnderscore(inverseEntity === owningEntity ? owningRelation : inverseEntity) + '_id',\n\t\t]\n\t}\n}\n"],"names":[],"mappings":"AAmBA,MAAM,eAAe,CAAC,MAAc,EAAE,QAAQ,aAAa,CAAC,GAAG,MAAM,MAAM,EAAE,YAAa,CAAA,EAAE,QAAQ,MAAM,EAAE;AACrG,MAAM,yBAAsD;AAAA,EAClE,kBAA0B;AAClB,WAAA;AAAA,EACR;AAAA,EAEA,cAAc,WAA2B;AACxC,WAAO,aAAa,SAAS;AAAA,EAC9B;AAAA,EAEA,aAAa,YAA4B;AACxC,WAAO,aAAa,UAAU;AAAA,EAC/B;AAAA,EAEA,qBAAqB,cAA8B;AAC3C,WAAA,aAAa,YAAY,IAAI;AAAA,EACrC;AAAA,EAEA,oBAAoB,QAAgB,UAA0B;AAC7D,WAAO,aAAa,MAAM,IAAI,MAAM,aAAa,QAAQ;AAAA,EAC1D;AAAA,EAEA,2BACC,cACA,gBACA,eACA,iBACmB;AACZ,WAAA;AAAA,MACN,aAAa,YAAY,IAAI;AAAA,MAC7B,aAAa,kBAAkB,eAAe,iBAAiB,aAAa,IAAI;AAAA,IAAA;AAAA,EAElF;AACD;"}
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const assertNever = require("../utils/assertNever.cjs");
4
+ const isIt = require("../utils/isIt.cjs");
5
+ const schema = require("@contember/schema");
6
+ var ModelErrorCode = /* @__PURE__ */ ((ModelErrorCode2) => {
7
+ ModelErrorCode2["ENTITY_NOT_FOUND"] = "entityNotFound";
8
+ ModelErrorCode2["FIELD_NOT_FOUND"] = "fieldNotFound";
9
+ ModelErrorCode2["NOT_RELATION"] = "notRelation";
10
+ ModelErrorCode2["NOT_OWNING_SIDE"] = "notOwningSide";
11
+ return ModelErrorCode2;
12
+ })(ModelErrorCode || {});
13
+ class ModelError extends Error {
14
+ constructor(code, message) {
15
+ super(message);
16
+ this.code = code;
17
+ }
18
+ }
19
+ const createEntityNotFoundError = (entityName) => new ModelError("entityNotFound", `Entity ${entityName} not found`);
20
+ const createFieldNotFoundError = (entityName, fieldName) => new ModelError("fieldNotFound", `Field ${fieldName} of entity ${entityName} not found`);
21
+ const getEntity = (schema2, entityName) => {
22
+ const entity = schema2.entities[entityName];
23
+ if (!entity) {
24
+ throw createEntityNotFoundError(entityName);
25
+ }
26
+ return entity;
27
+ };
28
+ const getField = (entity, fieldName) => {
29
+ const field = entity.fields[fieldName];
30
+ if (!field) {
31
+ throw createFieldNotFoundError(entity.name, fieldName);
32
+ }
33
+ return field;
34
+ };
35
+ const getColumnName = (schema2, entity, fieldName) => {
36
+ return acceptFieldVisitor(schema2, entity, fieldName, {
37
+ visitColumn: ({ column }) => column.columnName,
38
+ visitRelation: ({ entity: entity2, relation }) => {
39
+ if (isIt.isIt(relation, "joiningColumn")) {
40
+ return relation.joiningColumn.columnName;
41
+ }
42
+ throw new ModelError(
43
+ "notOwningSide",
44
+ `Field ${relation.name} of entity ${entity2.name} is not an owning side`
45
+ );
46
+ }
47
+ });
48
+ };
49
+ const tryGetColumnName = (schema2, entity, fieldName) => {
50
+ try {
51
+ return getColumnName(schema2, entity, fieldName);
52
+ } catch (e) {
53
+ if (e instanceof ModelError && e.code === "notOwningSide") {
54
+ return void 0;
55
+ }
56
+ throw e;
57
+ }
58
+ };
59
+ const getColumnType = (schema$1, entity, fieldName) => {
60
+ return acceptFieldVisitor(schema$1, entity, fieldName, {
61
+ // TODO solve enum handling properly maybe we should distinguish between domain and column type
62
+ visitColumn: ({ column }) => column.type === schema.Model.ColumnType.Enum ? "text" : column.columnType,
63
+ visitRelation: ({ entity: entity2, relation, targetEntity }) => {
64
+ if (isIt.isIt(relation, "joiningColumn")) {
65
+ return getColumnType(schema$1, targetEntity, targetEntity.primary);
66
+ }
67
+ throw new ModelError(
68
+ "notOwningSide",
69
+ `Field ${relation.name} of entity ${entity2.name} is not an owning side`
70
+ );
71
+ }
72
+ });
73
+ };
74
+ const getTargetEntity = (schema2, entity, relationName) => {
75
+ return acceptFieldVisitor(schema2, entity, relationName, {
76
+ visitColumn: () => null,
77
+ visitRelation: ({ targetEntity }) => targetEntity
78
+ });
79
+ };
80
+ const acceptEveryFieldVisitor = (schema2, entity, visitor) => {
81
+ const entityObj = typeof entity === "string" ? getEntity(schema2, entity) : entity;
82
+ const result = {};
83
+ for (const field in entityObj.fields) {
84
+ result[field] = acceptFieldVisitor(schema2, entityObj, field, visitor);
85
+ }
86
+ return result;
87
+ };
88
+ const acceptFieldVisitor = (schema2, entity, field, visitor) => {
89
+ const entityObj = typeof entity === "string" ? getEntity(schema2, entity) : entity;
90
+ const fieldObj = typeof field === "string" ? entityObj.fields[field] : field;
91
+ if (!fieldObj) {
92
+ throw createFieldNotFoundError(entityObj.name, typeof field === "string" ? field : "unknown");
93
+ }
94
+ if (isIt.isIt(fieldObj, "columnType")) {
95
+ return visitor.visitColumn({
96
+ entity: entityObj,
97
+ column: fieldObj
98
+ });
99
+ }
100
+ if (isIt.isIt(visitor, "visitRelation")) {
101
+ return acceptRelationTypeVisitor(schema2, entityObj, fieldObj, {
102
+ visitManyHasManyInverse: visitor.visitRelation.bind(visitor),
103
+ visitManyHasManyOwning: visitor.visitRelation.bind(visitor),
104
+ visitOneHasMany: visitor.visitRelation.bind(visitor),
105
+ visitOneHasOneInverse: visitor.visitRelation.bind(visitor),
106
+ visitOneHasOneOwning: visitor.visitRelation.bind(visitor),
107
+ visitManyHasOne: visitor.visitRelation.bind(visitor)
108
+ });
109
+ }
110
+ if (isIt.isIt(visitor, "visitHasMany")) {
111
+ return acceptRelationTypeVisitor(schema2, entityObj, fieldObj, {
112
+ visitManyHasManyInverse: visitor.visitHasMany.bind(visitor),
113
+ visitManyHasManyOwning: visitor.visitHasMany.bind(visitor),
114
+ visitOneHasMany: visitor.visitHasMany.bind(visitor),
115
+ visitOneHasOneInverse: visitor.visitHasOne.bind(visitor),
116
+ visitOneHasOneOwning: visitor.visitHasOne.bind(visitor),
117
+ visitManyHasOne: visitor.visitHasOne.bind(visitor)
118
+ });
119
+ }
120
+ if (isIt.isIt(visitor, "visitManyHasManyInverse")) {
121
+ return acceptRelationTypeVisitor(schema2, entityObj, fieldObj, visitor);
122
+ }
123
+ throw new Error();
124
+ };
125
+ const acceptRelationTypeVisitor = (schema$1, entity, relation, visitor) => {
126
+ const entityObj = typeof entity === "string" ? getEntity(schema$1, entity) : entity;
127
+ const relationObj = typeof relation === "string" ? entityObj.fields[relation] : relation;
128
+ if (!relationObj) {
129
+ throw createFieldNotFoundError(entityObj.name, typeof relation === "string" ? relation : "unknown");
130
+ }
131
+ if (!isRelation(relationObj)) {
132
+ throw new ModelError(
133
+ "notRelation",
134
+ `Field ${relationObj.name} of entity ${entityObj.name} is not a relation`
135
+ );
136
+ }
137
+ const targetEntity = getEntity(schema$1, relationObj.target);
138
+ if (isInverseRelation(relationObj)) {
139
+ const targetRelation = targetEntity.fields[relationObj.ownedBy];
140
+ switch (relationObj.type) {
141
+ case schema.Model.RelationType.ManyHasMany:
142
+ return visitor.visitManyHasManyInverse(
143
+ {
144
+ type: "manyHasManyInverse",
145
+ entity: entityObj,
146
+ relation: relationObj,
147
+ targetEntity,
148
+ targetRelation
149
+ }
150
+ );
151
+ case schema.Model.RelationType.OneHasOne:
152
+ return visitor.visitOneHasOneInverse({
153
+ type: "oneHasOneInverse",
154
+ entity: entityObj,
155
+ relation: relationObj,
156
+ targetEntity,
157
+ targetRelation
158
+ });
159
+ case schema.Model.RelationType.OneHasMany:
160
+ return visitor.visitOneHasMany({
161
+ type: "oneHasMany",
162
+ entity: entityObj,
163
+ relation: relationObj,
164
+ targetEntity,
165
+ targetRelation
166
+ });
167
+ default:
168
+ return assertNever.assertNever();
169
+ }
170
+ } else if (isOwningRelation(relationObj)) {
171
+ const targetRelation = relationObj.inversedBy ? targetEntity.fields[relationObj.inversedBy] : null;
172
+ switch (relationObj.type) {
173
+ case schema.Model.RelationType.ManyHasMany:
174
+ return visitor.visitManyHasManyOwning({
175
+ type: "manyHasManyOwning",
176
+ entity: entityObj,
177
+ relation: relationObj,
178
+ targetEntity,
179
+ targetRelation
180
+ });
181
+ case schema.Model.RelationType.OneHasOne:
182
+ return visitor.visitOneHasOneOwning({
183
+ type: "oneHasOneOwning",
184
+ entity: entityObj,
185
+ relation: relationObj,
186
+ targetEntity,
187
+ targetRelation
188
+ });
189
+ case schema.Model.RelationType.ManyHasOne:
190
+ return visitor.visitManyHasOne({
191
+ type: "manyHasOne",
192
+ entity: entityObj,
193
+ //
194
+ relation: relationObj,
195
+ targetEntity,
196
+ targetRelation
197
+ });
198
+ default:
199
+ return assertNever.assertNever();
200
+ }
201
+ }
202
+ throw new Error("Invalid relation type");
203
+ };
204
+ const isRelation = (field) => {
205
+ return isIt.isIt(field, "target");
206
+ };
207
+ const isInverseRelation = (relation) => {
208
+ return relation.ownedBy !== void 0;
209
+ };
210
+ const isOwningRelation = (relation) => {
211
+ return !isInverseRelation(relation);
212
+ };
213
+ const isColumn = (field) => isIt.isIt(field, "columnType");
214
+ const emptyModelSchema = { entities: {}, enums: {} };
215
+ exports.ModelError = ModelError;
216
+ exports.ModelErrorCode = ModelErrorCode;
217
+ exports.acceptEveryFieldVisitor = acceptEveryFieldVisitor;
218
+ exports.acceptFieldVisitor = acceptFieldVisitor;
219
+ exports.acceptRelationTypeVisitor = acceptRelationTypeVisitor;
220
+ exports.emptyModelSchema = emptyModelSchema;
221
+ exports.getColumnName = getColumnName;
222
+ exports.getColumnType = getColumnType;
223
+ exports.getEntity = getEntity;
224
+ exports.getField = getField;
225
+ exports.getTargetEntity = getTargetEntity;
226
+ exports.isColumn = isColumn;
227
+ exports.isInverseRelation = isInverseRelation;
228
+ exports.isOwningRelation = isOwningRelation;
229
+ exports.isRelation = isRelation;
230
+ exports.tryGetColumnName = tryGetColumnName;
231
+ //# sourceMappingURL=modelUtils.cjs.map