@contember/schema-definition 2.0.0-alpha.8 → 2.0.0-beta.1

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 (328) hide show
  1. package/dist/development/index.cjs.map +1 -1
  2. package/dist/development/index.js.map +1 -1
  3. package/dist/development/src/acl/builder/EntityPermissionsBuilder.cjs.map +1 -1
  4. package/dist/development/src/acl/builder/EntityPermissionsBuilder.js.map +1 -1
  5. package/dist/development/src/acl/builder/EntitySelector.cjs.map +1 -1
  6. package/dist/development/src/acl/builder/EntitySelector.js.map +1 -1
  7. package/dist/development/src/acl/builder/FieldPermissionsBuilder.cjs.map +1 -1
  8. package/dist/development/src/acl/builder/FieldPermissionsBuilder.js.map +1 -1
  9. package/dist/development/src/acl/builder/FieldSelector.cjs.map +1 -1
  10. package/dist/development/src/acl/builder/FieldSelector.js.map +1 -1
  11. package/dist/development/src/acl/builder/PermissionOverrider.cjs.map +1 -1
  12. package/dist/development/src/acl/builder/PermissionOverrider.js.map +1 -1
  13. package/dist/development/src/acl/builder/PermissionsBuilder.cjs.map +1 -1
  14. package/dist/development/src/acl/builder/PermissionsBuilder.js.map +1 -1
  15. package/dist/development/src/acl/builder/PredicateReference.cjs.map +1 -1
  16. package/dist/development/src/acl/builder/PredicateReference.js.map +1 -1
  17. package/dist/development/src/acl/definition/customPrimary.cjs.map +1 -1
  18. package/dist/development/src/acl/definition/customPrimary.js.map +1 -1
  19. package/dist/development/src/acl/definition/index.cjs.map +1 -1
  20. package/dist/development/src/acl/definition/internal/AclFactory.cjs.map +1 -1
  21. package/dist/development/src/acl/definition/internal/AclFactory.js.map +1 -1
  22. package/dist/development/src/acl/definition/internal/EntityPredicateResolver.cjs +2 -2
  23. package/dist/development/src/acl/definition/internal/EntityPredicateResolver.cjs.map +1 -1
  24. package/dist/development/src/acl/definition/internal/EntityPredicateResolver.js +2 -2
  25. package/dist/development/src/acl/definition/internal/EntityPredicateResolver.js.map +1 -1
  26. package/dist/development/src/acl/definition/internal/stores.cjs.map +1 -1
  27. package/dist/development/src/acl/definition/internal/stores.js.map +1 -1
  28. package/dist/development/src/acl/definition/permissions.cjs.map +1 -1
  29. package/dist/development/src/acl/definition/permissions.js.map +1 -1
  30. package/dist/development/src/acl/definition/references.cjs.map +1 -1
  31. package/dist/development/src/acl/definition/references.js.map +1 -1
  32. package/dist/development/src/acl/definition/roles.cjs.map +1 -1
  33. package/dist/development/src/acl/definition/roles.js.map +1 -1
  34. package/dist/development/src/acl/definition/variables.cjs.map +1 -1
  35. package/dist/development/src/acl/definition/variables.js.map +1 -1
  36. package/dist/development/src/actions/definition/index.cjs.map +1 -1
  37. package/dist/development/src/actions/definition/index.js.map +1 -1
  38. package/dist/development/src/actions/definition/internal/ActionsFactory.cjs.map +1 -1
  39. package/dist/development/src/actions/definition/internal/ActionsFactory.js.map +1 -1
  40. package/dist/development/src/actions/definition/targets.cjs.map +1 -1
  41. package/dist/development/src/actions/definition/targets.js.map +1 -1
  42. package/dist/development/src/actions/definition/triggers.cjs.map +1 -1
  43. package/dist/development/src/actions/definition/triggers.js.map +1 -1
  44. package/dist/development/src/createSchema.cjs.map +1 -1
  45. package/dist/development/src/createSchema.js.map +1 -1
  46. package/dist/development/src/model/builder/ColumnBuilder.cjs.map +1 -1
  47. package/dist/development/src/model/builder/ColumnBuilder.js.map +1 -1
  48. package/dist/development/src/model/builder/EntityBuilder.cjs.map +1 -1
  49. package/dist/development/src/model/builder/EntityBuilder.js.map +1 -1
  50. package/dist/development/src/model/builder/FieldBuilder.cjs.map +1 -1
  51. package/dist/development/src/model/builder/FieldBuilder.js.map +1 -1
  52. package/dist/development/src/model/builder/ManyHasManyBuilder.cjs.map +1 -1
  53. package/dist/development/src/model/builder/ManyHasManyBuilder.js.map +1 -1
  54. package/dist/development/src/model/builder/ManyHasOneBuilder.cjs.map +1 -1
  55. package/dist/development/src/model/builder/ManyHasOneBuilder.js.map +1 -1
  56. package/dist/development/src/model/builder/OneHasManyBuilder.cjs.map +1 -1
  57. package/dist/development/src/model/builder/OneHasManyBuilder.js.map +1 -1
  58. package/dist/development/src/model/builder/OneHasOneBuilder.cjs.map +1 -1
  59. package/dist/development/src/model/builder/OneHasOneBuilder.js.map +1 -1
  60. package/dist/development/src/model/builder/SchemaBuilder.cjs.map +1 -1
  61. package/dist/development/src/model/builder/SchemaBuilder.js.map +1 -1
  62. package/dist/development/src/model/builder/SchemaBuilderInternal.cjs.map +1 -1
  63. package/dist/development/src/model/builder/SchemaBuilderInternal.js.map +1 -1
  64. package/dist/development/src/model/builder/internal/ColumnProcessor.cjs.map +1 -1
  65. package/dist/development/src/model/builder/internal/ColumnProcessor.js.map +1 -1
  66. package/dist/development/src/model/builder/internal/ManyHasManyProcessor.cjs.map +1 -1
  67. package/dist/development/src/model/builder/internal/ManyHasManyProcessor.js.map +1 -1
  68. package/dist/development/src/model/builder/internal/ManyHasOneProcessor.cjs.map +1 -1
  69. package/dist/development/src/model/builder/internal/ManyHasOneProcessor.js.map +1 -1
  70. package/dist/development/src/model/builder/internal/OneHasManyProcessor.cjs.map +1 -1
  71. package/dist/development/src/model/builder/internal/OneHasManyProcessor.js.map +1 -1
  72. package/dist/development/src/model/builder/internal/OneHasOneProcessor.cjs.map +1 -1
  73. package/dist/development/src/model/builder/internal/OneHasOneProcessor.js.map +1 -1
  74. package/dist/development/src/model/definition/EnumDefinition.cjs.map +1 -1
  75. package/dist/development/src/model/definition/EnumDefinition.js.map +1 -1
  76. package/dist/development/src/model/definition/IndexDefinition.cjs.map +1 -1
  77. package/dist/development/src/model/definition/IndexDefinition.js.map +1 -1
  78. package/dist/development/src/model/definition/OrderByDefinition.cjs.map +1 -1
  79. package/dist/development/src/model/definition/OrderByDefinition.js.map +1 -1
  80. package/dist/development/src/model/definition/UniqueDefinition.cjs.map +1 -1
  81. package/dist/development/src/model/definition/UniqueDefinition.js.map +1 -1
  82. package/dist/development/src/model/definition/ViewDefinition.cjs.map +1 -1
  83. package/dist/development/src/model/definition/ViewDefinition.js.map +1 -1
  84. package/dist/development/src/model/definition/extensions.cjs.map +1 -1
  85. package/dist/development/src/model/definition/extensions.js.map +1 -1
  86. package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +9 -2
  87. package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
  88. package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js +9 -2
  89. package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
  90. package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.cjs +0 -3
  91. package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.cjs.map +1 -1
  92. package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.js +0 -3
  93. package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.js.map +1 -1
  94. package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs +6 -3
  95. package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs.map +1 -1
  96. package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js +6 -3
  97. package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js.map +1 -1
  98. package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs +6 -7
  99. package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs.map +1 -1
  100. package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js +7 -8
  101. package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js.map +1 -1
  102. package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs +6 -3
  103. package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs.map +1 -1
  104. package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js +6 -3
  105. package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js.map +1 -1
  106. package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs +6 -3
  107. package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs.map +1 -1
  108. package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.js +6 -3
  109. package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.js.map +1 -1
  110. package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs +6 -3
  111. package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs.map +1 -1
  112. package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.js +6 -3
  113. package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.js.map +1 -1
  114. package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs +6 -7
  115. package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs.map +1 -1
  116. package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js +7 -8
  117. package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js.map +1 -1
  118. package/dist/development/src/model/definition/index.cjs +6 -8
  119. package/dist/development/src/model/definition/index.cjs.map +1 -1
  120. package/dist/development/src/model/definition/index.js +12 -14
  121. package/dist/development/src/model/definition/index.js.map +1 -1
  122. package/dist/development/src/model/definition/internal/EntityRegistry.cjs.map +1 -1
  123. package/dist/development/src/model/definition/internal/EntityRegistry.js.map +1 -1
  124. package/dist/development/src/model/definition/internal/EnumRegistry.cjs.map +1 -1
  125. package/dist/development/src/model/definition/internal/EnumRegistry.js.map +1 -1
  126. package/dist/development/src/model/definition/internal/SchemaBuilder.cjs +5 -0
  127. package/dist/development/src/model/definition/internal/SchemaBuilder.cjs.map +1 -1
  128. package/dist/development/src/model/definition/internal/SchemaBuilder.js +5 -0
  129. package/dist/development/src/model/definition/internal/SchemaBuilder.js.map +1 -1
  130. package/dist/development/src/presets.cjs +13 -1
  131. package/dist/development/src/presets.cjs.map +1 -1
  132. package/dist/development/src/presets.js +13 -1
  133. package/dist/development/src/presets.js.map +1 -1
  134. package/dist/development/src/strict.cjs.map +1 -1
  135. package/dist/development/src/strict.js.map +1 -1
  136. package/dist/development/src/utils/MetadataStore.cjs.map +1 -1
  137. package/dist/development/src/utils/MetadataStore.js.map +1 -1
  138. package/dist/development/src/validation/index.cjs.map +1 -1
  139. package/dist/development/src/validation/index.js.map +1 -1
  140. package/dist/production/index.cjs.map +1 -1
  141. package/dist/production/index.js.map +1 -1
  142. package/dist/production/src/acl/builder/EntityPermissionsBuilder.cjs.map +1 -1
  143. package/dist/production/src/acl/builder/EntityPermissionsBuilder.js.map +1 -1
  144. package/dist/production/src/acl/builder/EntitySelector.cjs.map +1 -1
  145. package/dist/production/src/acl/builder/EntitySelector.js.map +1 -1
  146. package/dist/production/src/acl/builder/FieldPermissionsBuilder.cjs.map +1 -1
  147. package/dist/production/src/acl/builder/FieldPermissionsBuilder.js.map +1 -1
  148. package/dist/production/src/acl/builder/FieldSelector.cjs.map +1 -1
  149. package/dist/production/src/acl/builder/FieldSelector.js.map +1 -1
  150. package/dist/production/src/acl/builder/PermissionOverrider.cjs.map +1 -1
  151. package/dist/production/src/acl/builder/PermissionOverrider.js.map +1 -1
  152. package/dist/production/src/acl/builder/PermissionsBuilder.cjs.map +1 -1
  153. package/dist/production/src/acl/builder/PermissionsBuilder.js.map +1 -1
  154. package/dist/production/src/acl/builder/PredicateReference.cjs.map +1 -1
  155. package/dist/production/src/acl/builder/PredicateReference.js.map +1 -1
  156. package/dist/production/src/acl/definition/customPrimary.cjs.map +1 -1
  157. package/dist/production/src/acl/definition/customPrimary.js.map +1 -1
  158. package/dist/production/src/acl/definition/index.cjs.map +1 -1
  159. package/dist/production/src/acl/definition/internal/AclFactory.cjs.map +1 -1
  160. package/dist/production/src/acl/definition/internal/AclFactory.js.map +1 -1
  161. package/dist/production/src/acl/definition/internal/EntityPredicateResolver.cjs +2 -2
  162. package/dist/production/src/acl/definition/internal/EntityPredicateResolver.cjs.map +1 -1
  163. package/dist/production/src/acl/definition/internal/EntityPredicateResolver.js +2 -2
  164. package/dist/production/src/acl/definition/internal/EntityPredicateResolver.js.map +1 -1
  165. package/dist/production/src/acl/definition/internal/stores.cjs.map +1 -1
  166. package/dist/production/src/acl/definition/internal/stores.js.map +1 -1
  167. package/dist/production/src/acl/definition/permissions.cjs.map +1 -1
  168. package/dist/production/src/acl/definition/permissions.js.map +1 -1
  169. package/dist/production/src/acl/definition/references.cjs.map +1 -1
  170. package/dist/production/src/acl/definition/references.js.map +1 -1
  171. package/dist/production/src/acl/definition/roles.cjs.map +1 -1
  172. package/dist/production/src/acl/definition/roles.js.map +1 -1
  173. package/dist/production/src/acl/definition/variables.cjs.map +1 -1
  174. package/dist/production/src/acl/definition/variables.js.map +1 -1
  175. package/dist/production/src/actions/definition/index.cjs.map +1 -1
  176. package/dist/production/src/actions/definition/index.js.map +1 -1
  177. package/dist/production/src/actions/definition/internal/ActionsFactory.cjs.map +1 -1
  178. package/dist/production/src/actions/definition/internal/ActionsFactory.js.map +1 -1
  179. package/dist/production/src/actions/definition/targets.cjs.map +1 -1
  180. package/dist/production/src/actions/definition/targets.js.map +1 -1
  181. package/dist/production/src/actions/definition/triggers.cjs.map +1 -1
  182. package/dist/production/src/actions/definition/triggers.js.map +1 -1
  183. package/dist/production/src/createSchema.cjs.map +1 -1
  184. package/dist/production/src/createSchema.js.map +1 -1
  185. package/dist/production/src/model/builder/ColumnBuilder.cjs.map +1 -1
  186. package/dist/production/src/model/builder/ColumnBuilder.js.map +1 -1
  187. package/dist/production/src/model/builder/EntityBuilder.cjs.map +1 -1
  188. package/dist/production/src/model/builder/EntityBuilder.js.map +1 -1
  189. package/dist/production/src/model/builder/FieldBuilder.cjs.map +1 -1
  190. package/dist/production/src/model/builder/FieldBuilder.js.map +1 -1
  191. package/dist/production/src/model/builder/ManyHasManyBuilder.cjs.map +1 -1
  192. package/dist/production/src/model/builder/ManyHasManyBuilder.js.map +1 -1
  193. package/dist/production/src/model/builder/ManyHasOneBuilder.cjs.map +1 -1
  194. package/dist/production/src/model/builder/ManyHasOneBuilder.js.map +1 -1
  195. package/dist/production/src/model/builder/OneHasManyBuilder.cjs.map +1 -1
  196. package/dist/production/src/model/builder/OneHasManyBuilder.js.map +1 -1
  197. package/dist/production/src/model/builder/OneHasOneBuilder.cjs.map +1 -1
  198. package/dist/production/src/model/builder/OneHasOneBuilder.js.map +1 -1
  199. package/dist/production/src/model/builder/SchemaBuilder.cjs.map +1 -1
  200. package/dist/production/src/model/builder/SchemaBuilder.js.map +1 -1
  201. package/dist/production/src/model/builder/SchemaBuilderInternal.cjs.map +1 -1
  202. package/dist/production/src/model/builder/SchemaBuilderInternal.js.map +1 -1
  203. package/dist/production/src/model/builder/internal/ColumnProcessor.cjs.map +1 -1
  204. package/dist/production/src/model/builder/internal/ColumnProcessor.js.map +1 -1
  205. package/dist/production/src/model/builder/internal/ManyHasManyProcessor.cjs.map +1 -1
  206. package/dist/production/src/model/builder/internal/ManyHasManyProcessor.js.map +1 -1
  207. package/dist/production/src/model/builder/internal/ManyHasOneProcessor.cjs.map +1 -1
  208. package/dist/production/src/model/builder/internal/ManyHasOneProcessor.js.map +1 -1
  209. package/dist/production/src/model/builder/internal/OneHasManyProcessor.cjs.map +1 -1
  210. package/dist/production/src/model/builder/internal/OneHasManyProcessor.js.map +1 -1
  211. package/dist/production/src/model/builder/internal/OneHasOneProcessor.cjs.map +1 -1
  212. package/dist/production/src/model/builder/internal/OneHasOneProcessor.js.map +1 -1
  213. package/dist/production/src/model/definition/EnumDefinition.cjs.map +1 -1
  214. package/dist/production/src/model/definition/EnumDefinition.js.map +1 -1
  215. package/dist/production/src/model/definition/IndexDefinition.cjs.map +1 -1
  216. package/dist/production/src/model/definition/IndexDefinition.js.map +1 -1
  217. package/dist/production/src/model/definition/OrderByDefinition.cjs.map +1 -1
  218. package/dist/production/src/model/definition/OrderByDefinition.js.map +1 -1
  219. package/dist/production/src/model/definition/UniqueDefinition.cjs.map +1 -1
  220. package/dist/production/src/model/definition/UniqueDefinition.js.map +1 -1
  221. package/dist/production/src/model/definition/ViewDefinition.cjs.map +1 -1
  222. package/dist/production/src/model/definition/ViewDefinition.js.map +1 -1
  223. package/dist/production/src/model/definition/extensions.cjs.map +1 -1
  224. package/dist/production/src/model/definition/extensions.js.map +1 -1
  225. package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +9 -2
  226. package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
  227. package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js +9 -2
  228. package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
  229. package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.cjs +0 -3
  230. package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.cjs.map +1 -1
  231. package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.js +0 -3
  232. package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.js.map +1 -1
  233. package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs +6 -3
  234. package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs.map +1 -1
  235. package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js +6 -3
  236. package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js.map +1 -1
  237. package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs +6 -7
  238. package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs.map +1 -1
  239. package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js +7 -8
  240. package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js.map +1 -1
  241. package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs +6 -3
  242. package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs.map +1 -1
  243. package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js +6 -3
  244. package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js.map +1 -1
  245. package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs +6 -3
  246. package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs.map +1 -1
  247. package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.js +6 -3
  248. package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.js.map +1 -1
  249. package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs +6 -3
  250. package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs.map +1 -1
  251. package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.js +6 -3
  252. package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.js.map +1 -1
  253. package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs +6 -7
  254. package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs.map +1 -1
  255. package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js +7 -8
  256. package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js.map +1 -1
  257. package/dist/production/src/model/definition/index.cjs +6 -8
  258. package/dist/production/src/model/definition/index.cjs.map +1 -1
  259. package/dist/production/src/model/definition/index.js +12 -14
  260. package/dist/production/src/model/definition/index.js.map +1 -1
  261. package/dist/production/src/model/definition/internal/EntityRegistry.cjs.map +1 -1
  262. package/dist/production/src/model/definition/internal/EntityRegistry.js.map +1 -1
  263. package/dist/production/src/model/definition/internal/EnumRegistry.cjs.map +1 -1
  264. package/dist/production/src/model/definition/internal/EnumRegistry.js.map +1 -1
  265. package/dist/production/src/model/definition/internal/SchemaBuilder.cjs +5 -0
  266. package/dist/production/src/model/definition/internal/SchemaBuilder.cjs.map +1 -1
  267. package/dist/production/src/model/definition/internal/SchemaBuilder.js +5 -0
  268. package/dist/production/src/model/definition/internal/SchemaBuilder.js.map +1 -1
  269. package/dist/production/src/presets.cjs +13 -1
  270. package/dist/production/src/presets.cjs.map +1 -1
  271. package/dist/production/src/presets.js +13 -1
  272. package/dist/production/src/presets.js.map +1 -1
  273. package/dist/production/src/strict.cjs.map +1 -1
  274. package/dist/production/src/strict.js.map +1 -1
  275. package/dist/production/src/utils/MetadataStore.cjs.map +1 -1
  276. package/dist/production/src/utils/MetadataStore.js.map +1 -1
  277. package/dist/production/src/validation/index.cjs.map +1 -1
  278. package/dist/production/src/validation/index.js.map +1 -1
  279. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  280. package/dist/types/index.d.ts +10 -6
  281. package/dist/types/index.d.ts.map +1 -1
  282. package/dist/types/model/builder/EntityBuilder.d.ts +1 -1
  283. package/dist/types/model/builder/EntityBuilder.d.ts.map +1 -1
  284. package/dist/types/model/definition/fieldDefinitions/ColumnDefinition.d.ts +12 -10
  285. package/dist/types/model/definition/fieldDefinitions/ColumnDefinition.d.ts.map +1 -1
  286. package/dist/types/model/definition/fieldDefinitions/FieldDefinition.d.ts +0 -3
  287. package/dist/types/model/definition/fieldDefinitions/FieldDefinition.d.ts.map +1 -1
  288. package/dist/types/model/definition/fieldDefinitions/ManyHasManyDefinition.d.ts +6 -6
  289. package/dist/types/model/definition/fieldDefinitions/ManyHasManyDefinition.d.ts.map +1 -1
  290. package/dist/types/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.d.ts +4 -8
  291. package/dist/types/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.d.ts.map +1 -1
  292. package/dist/types/model/definition/fieldDefinitions/ManyHasOneDefinition.d.ts +10 -10
  293. package/dist/types/model/definition/fieldDefinitions/ManyHasOneDefinition.d.ts.map +1 -1
  294. package/dist/types/model/definition/fieldDefinitions/OneHasManyDefinition.d.ts +4 -4
  295. package/dist/types/model/definition/fieldDefinitions/OneHasManyDefinition.d.ts.map +1 -1
  296. package/dist/types/model/definition/fieldDefinitions/OneHasOneDefinition.d.ts +11 -11
  297. package/dist/types/model/definition/fieldDefinitions/OneHasOneDefinition.d.ts.map +1 -1
  298. package/dist/types/model/definition/fieldDefinitions/OneHasOneInverseDefinition.d.ts +4 -8
  299. package/dist/types/model/definition/fieldDefinitions/OneHasOneInverseDefinition.d.ts.map +1 -1
  300. package/dist/types/model/definition/index.d.ts +1 -2
  301. package/dist/types/model/definition/index.d.ts.map +1 -1
  302. package/dist/types/model/definition/internal/SchemaBuilder.d.ts.map +1 -1
  303. package/dist/types/model/definition/types.d.ts +2 -5
  304. package/dist/types/model/definition/types.d.ts.map +1 -1
  305. package/dist/types/presets.d.ts +1 -0
  306. package/dist/types/presets.d.ts.map +1 -1
  307. package/dist/types/tsconfig.tsbuildinfo +1 -1
  308. package/package.json +7 -6
  309. package/src/acl/definition/internal/EntityPredicateResolver.ts +2 -2
  310. package/src/index.ts +15 -0
  311. package/src/model/definition/fieldDefinitions/ColumnDefinition.ts +27 -19
  312. package/src/model/definition/fieldDefinitions/FieldDefinition.ts +1 -5
  313. package/src/model/definition/fieldDefinitions/ManyHasManyDefinition.ts +11 -7
  314. package/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.ts +8 -12
  315. package/src/model/definition/fieldDefinitions/ManyHasOneDefinition.ts +14 -12
  316. package/src/model/definition/fieldDefinitions/OneHasManyDefinition.ts +8 -5
  317. package/src/model/definition/fieldDefinitions/OneHasOneDefinition.ts +16 -12
  318. package/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.ts +8 -11
  319. package/src/model/definition/index.ts +1 -2
  320. package/src/model/definition/internal/SchemaBuilder.ts +6 -0
  321. package/src/model/definition/types.ts +2 -3
  322. package/src/presets.ts +12 -0
  323. package/tests/cases/unit/__snapshots__/readActions.test.ts.snap +33 -0
  324. package/tests/cases/unit/createSchema.test.ts +78 -80
  325. package/tests/cases/unit/extendEntity.test.ts +2 -2
  326. package/tests/cases/unit/orderBy.test.ts +10 -6
  327. package/tests/cases/unit/readAclDefinitions.test.ts +197 -208
  328. package/tests/cases/unit/readActions.test.ts +2 -32
@@ -1 +1 @@
1
- {"version":3,"file":"AclFactory.cjs","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/AclFactory.ts"],"sourcesContent":["import { Acl, Model, Writable } from '@contember/schema'\nimport { getEntity } from '@contember/schema-utils'\n\nimport { EntityPredicatesResolver } from './EntityPredicateResolver'\nimport { AllowDefinition } from '../permissions'\nimport {\n\tallowCustomPrimaryAllRolesStore,\n\tallowCustomPrimaryStore,\n\tallowDefinitionsStore,\n\tEntityPermissionsDefinition,\n} from './stores'\nimport { Role } from '../roles'\nimport { VariableDefinition } from '../variables'\nimport { filterEntityDefinition } from '../../../utils'\n\nexport class AclFactory {\n\tconstructor(\n\t\tprivate model: Model.Schema,\n\t) {\n\t}\n\n\tpublic create(\n\t\texportedDefinitions: Record<string, any>,\n\t): Acl.Schema {\n\t\tconst entityLikeDefinition = filterEntityDefinition(exportedDefinitions)\n\t\tconst roles: Role[] = Object.values(exportedDefinitions).filter(it => it instanceof Role)\n\t\tconst variables: VariableDefinition[] = Object.values(exportedDefinitions).filter(it => it instanceof VariableDefinition)\n\n\t\tconst groupedPermissions = AclFactory.groupPermissions(entityLikeDefinition, roles)\n\n\t\treturn {\n\t\t\troles: Object.fromEntries(roles.map((role): [string, Acl.RolePermissions] => {\n\t\t\t\tconst rolePermissions = groupedPermissions.get(role)\n\t\t\t\treturn [\n\t\t\t\t\trole.name,\n\t\t\t\t\t{\n\t\t\t\t\t\t...role.options,\n\t\t\t\t\t\tstages: role.options.stages ?? '*',\n\t\t\t\t\t\tentities: this.createPermissions(rolePermissions),\n\t\t\t\t\t\tvariables: this.createVariables(role, variables),\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t})),\n\t\t}\n\t}\n\n\tprivate createPermissions(rolePermissions: PermissionsByEntity | undefined): Acl.Permissions {\n\t\tif (!rolePermissions) {\n\t\t\treturn {}\n\t\t}\n\t\treturn Object.fromEntries(Array.from(rolePermissions.keys()).map((entityName): [string, Acl.EntityPermissions] => {\n\t\t\tconst entity = getEntity(this.model, entityName)\n\n\t\t\tconst predicatesResolver = EntityPredicatesResolver.create(rolePermissions, this.model, entity)\n\n\t\t\tconst entityOperations: Writable<Acl.EntityOperations> = {}\n\t\t\tfor (const op of ['create', 'update', 'read'] as const) {\n\t\t\t\tconst fieldPermissions: Writable<Acl.FieldPermissions> = {}\n\t\t\t\tfor (const field of Object.keys(entity.fields)) {\n\t\t\t\t\tconst predicate = predicatesResolver.createFieldPredicate(op, field, field === entity.primary)\n\t\t\t\t\tif (predicate !== undefined) {\n\t\t\t\t\t\tfieldPermissions[field] = predicate\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (Object.keys(fieldPermissions).length > 0) {\n\t\t\t\t\tentityOperations[op] = fieldPermissions\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst delPredicate = predicatesResolver.createFieldPredicate('delete', '', false)\n\t\t\tif (delPredicate !== undefined) {\n\t\t\t\tentityOperations.delete = delPredicate\n\t\t\t}\n\t\t\tif (rolePermissions.get(entityName)?.allowCustomPrimary) {\n\t\t\t\tentityOperations.customPrimary = true\n\t\t\t}\n\t\t\treturn [entityName, {\n\t\t\t\tpredicates: predicatesResolver.getUsedPredicates(),\n\t\t\t\toperations: entityOperations,\n\t\t\t}]\n\t\t}))\n\t}\n\n\tprivate createVariables(role: Role, variables: VariableDefinition[]): Acl.Variables {\n\t\tconst roleVariables = variables.filter(it => it.roles.includes(role))\n\t\treturn Object.fromEntries(roleVariables.map((variable): [string, Acl.Variable] => {\n\t\t\treturn [variable.name, variable.variable]\n\t\t}))\n\t}\n\n\tprivate static groupPermissions(entityLikeDefinition: [string, { new(): any }][], roles: Role[]): PermissionsByRoleAndEntity {\n\t\tconst groupedPermissions: PermissionsByRoleAndEntity = new Map()\n\t\tfor (const [name, entity] of entityLikeDefinition) {\n\t\t\tconst initEntityPermissions = (role: Role): EntityPermissions => {\n\t\t\t\tconst rolePermissions: PermissionsByEntity = groupedPermissions.get(role) ?? new Map()\n\t\t\t\tgroupedPermissions.set(role, rolePermissions)\n\t\t\t\tconst entityPermissions = rolePermissions.get(name) ?? {\n\t\t\t\t\tallowCustomPrimary: false,\n\t\t\t\t\tdefinitions: [],\n\t\t\t\t}\n\t\t\t\trolePermissions.set(name, entityPermissions)\n\t\t\t\treturn entityPermissions\n\t\t\t}\n\t\t\tconst metadata: EntityPermissionsDefinition[] = allowDefinitionsStore.get(entity)\n\t\t\tfor (const { role, ...definition } of metadata) {\n\t\t\t\tif (!roles.includes(role)) {\n\t\t\t\t\tthrow `Role ${role.name} used on entity ${name} is not registered. Have you exported it?`\n\t\t\t\t}\n\t\t\t\tconst entityPermissions = initEntityPermissions(role)\n\t\t\t\tentityPermissions.definitions.push(definition)\n\t\t\t}\n\n\t\t\tconst rolesWithCustomPrimary = allowCustomPrimaryAllRolesStore.get(entity) ? roles : allowCustomPrimaryStore.get(entity)\n\t\t\tfor (const role of rolesWithCustomPrimary) {\n\t\t\t\tinitEntityPermissions(role).allowCustomPrimary = true\n\t\t\t}\n\t\t}\n\n\t\treturn groupedPermissions\n\t}\n}\n\n\nexport type EntityPermissions = { definitions: AllowDefinition<any>[]; allowCustomPrimary: boolean }\nexport type PermissionsByEntity = Map<string, EntityPermissions>\nexport type PermissionsByRoleAndEntity = Map<Role, PermissionsByEntity>\n"],"names":["filterEntityDefinition","roles","Role","variables","VariableDefinition","getEntity","EntityPredicatesResolver","allowDefinitionsStore","allowCustomPrimaryAllRolesStore","allowCustomPrimaryStore"],"mappings":"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"}
1
+ {"version":3,"file":"AclFactory.cjs","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/AclFactory.ts"],"sourcesContent":["import { Acl, Model, Writable } from '@contember/schema'\nimport { getEntity } from '@contember/schema-utils'\n\nimport { EntityPredicatesResolver } from './EntityPredicateResolver'\nimport { AllowDefinition } from '../permissions'\nimport {\n\tallowCustomPrimaryAllRolesStore,\n\tallowCustomPrimaryStore,\n\tallowDefinitionsStore,\n\tEntityPermissionsDefinition,\n} from './stores'\nimport { Role } from '../roles'\nimport { VariableDefinition } from '../variables'\nimport { filterEntityDefinition } from '../../../utils'\n\nexport class AclFactory {\n\tconstructor(\n\t\tprivate model: Model.Schema,\n\t) {\n\t}\n\n\tpublic create(\n\t\texportedDefinitions: Record<string, any>,\n\t): Acl.Schema {\n\t\tconst entityLikeDefinition = filterEntityDefinition(exportedDefinitions)\n\t\tconst roles: Role[] = Object.values(exportedDefinitions).filter(it => it instanceof Role)\n\t\tconst variables: VariableDefinition[] = Object.values(exportedDefinitions).filter(it => it instanceof VariableDefinition)\n\n\t\tconst groupedPermissions = AclFactory.groupPermissions(entityLikeDefinition, roles)\n\n\t\treturn {\n\t\t\troles: Object.fromEntries(roles.map((role): [string, Acl.RolePermissions] => {\n\t\t\t\tconst rolePermissions = groupedPermissions.get(role)\n\t\t\t\treturn [\n\t\t\t\t\trole.name,\n\t\t\t\t\t{\n\t\t\t\t\t\t...role.options,\n\t\t\t\t\t\tstages: role.options.stages ?? '*',\n\t\t\t\t\t\tentities: this.createPermissions(rolePermissions),\n\t\t\t\t\t\tvariables: this.createVariables(role, variables),\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t})),\n\t\t}\n\t}\n\n\tprivate createPermissions(rolePermissions: PermissionsByEntity | undefined): Acl.Permissions {\n\t\tif (!rolePermissions) {\n\t\t\treturn {}\n\t\t}\n\t\treturn Object.fromEntries(Array.from(rolePermissions.keys()).map((entityName): [string, Acl.EntityPermissions] => {\n\t\t\tconst entity = getEntity(this.model, entityName)\n\n\t\t\tconst predicatesResolver = EntityPredicatesResolver.create(rolePermissions, this.model, entity)\n\n\t\t\tconst entityOperations: Writable<Acl.EntityOperations> = {}\n\t\t\tfor (const op of ['create', 'update', 'read'] as const) {\n\t\t\t\tconst fieldPermissions: Writable<Acl.FieldPermissions> = {}\n\t\t\t\tfor (const field of Object.keys(entity.fields)) {\n\t\t\t\t\tconst predicate = predicatesResolver.createFieldPredicate(op, field, field === entity.primary)\n\t\t\t\t\tif (predicate !== undefined) {\n\t\t\t\t\t\tfieldPermissions[field] = predicate\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (Object.keys(fieldPermissions).length > 0) {\n\t\t\t\t\tentityOperations[op] = fieldPermissions\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst delPredicate = predicatesResolver.createFieldPredicate('delete', '', false)\n\t\t\tif (delPredicate !== undefined) {\n\t\t\t\tentityOperations.delete = delPredicate\n\t\t\t}\n\t\t\tif (rolePermissions.get(entityName)?.allowCustomPrimary) {\n\t\t\t\tentityOperations.customPrimary = true\n\t\t\t}\n\t\t\treturn [entityName, {\n\t\t\t\tpredicates: predicatesResolver.getUsedPredicates(),\n\t\t\t\toperations: entityOperations,\n\t\t\t}]\n\t\t}))\n\t}\n\n\tprivate createVariables(role: Role, variables: VariableDefinition[]): Acl.Variables {\n\t\tconst roleVariables = variables.filter(it => it.roles.includes(role))\n\t\treturn Object.fromEntries(roleVariables.map((variable): [string, Acl.Variable] => {\n\t\t\treturn [variable.name, variable.variable]\n\t\t}))\n\t}\n\n\tprivate static groupPermissions(entityLikeDefinition: [string, { new(): any }][], roles: Role[]): PermissionsByRoleAndEntity {\n\t\tconst groupedPermissions: PermissionsByRoleAndEntity = new Map()\n\t\tfor (const [name, entity] of entityLikeDefinition) {\n\t\t\tconst initEntityPermissions = (role: Role): EntityPermissions => {\n\t\t\t\tconst rolePermissions: PermissionsByEntity = groupedPermissions.get(role) ?? new Map()\n\t\t\t\tgroupedPermissions.set(role, rolePermissions)\n\t\t\t\tconst entityPermissions = rolePermissions.get(name) ?? {\n\t\t\t\t\tallowCustomPrimary: false,\n\t\t\t\t\tdefinitions: [],\n\t\t\t\t}\n\t\t\t\trolePermissions.set(name, entityPermissions)\n\t\t\t\treturn entityPermissions\n\t\t\t}\n\t\t\tconst metadata: EntityPermissionsDefinition[] = allowDefinitionsStore.get(entity)\n\t\t\tfor (const { role, ...definition } of metadata) {\n\t\t\t\tif (!roles.includes(role)) {\n\t\t\t\t\tthrow `Role ${role.name} used on entity ${name} is not registered. Have you exported it?`\n\t\t\t\t}\n\t\t\t\tconst entityPermissions = initEntityPermissions(role)\n\t\t\t\tentityPermissions.definitions.push(definition)\n\t\t\t}\n\n\t\t\tconst rolesWithCustomPrimary = allowCustomPrimaryAllRolesStore.get(entity) ? roles : allowCustomPrimaryStore.get(entity)\n\t\t\tfor (const role of rolesWithCustomPrimary) {\n\t\t\t\tinitEntityPermissions(role).allowCustomPrimary = true\n\t\t\t}\n\t\t}\n\n\t\treturn groupedPermissions\n\t}\n}\n\n\nexport type EntityPermissions = { definitions: AllowDefinition<any>[]; allowCustomPrimary: boolean }\nexport type PermissionsByEntity = Map<string, EntityPermissions>\nexport type PermissionsByRoleAndEntity = Map<Role, PermissionsByEntity>\n"],"names":["filterEntityDefinition","roles","Role","variables","VariableDefinition","getEntity","EntityPredicatesResolver","allowDefinitionsStore","allowCustomPrimaryAllRolesStore","allowCustomPrimaryStore"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AclFactory.js","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/AclFactory.ts"],"sourcesContent":["import { Acl, Model, Writable } from '@contember/schema'\nimport { getEntity } from '@contember/schema-utils'\n\nimport { EntityPredicatesResolver } from './EntityPredicateResolver'\nimport { AllowDefinition } from '../permissions'\nimport {\n\tallowCustomPrimaryAllRolesStore,\n\tallowCustomPrimaryStore,\n\tallowDefinitionsStore,\n\tEntityPermissionsDefinition,\n} from './stores'\nimport { Role } from '../roles'\nimport { VariableDefinition } from '../variables'\nimport { filterEntityDefinition } from '../../../utils'\n\nexport class AclFactory {\n\tconstructor(\n\t\tprivate model: Model.Schema,\n\t) {\n\t}\n\n\tpublic create(\n\t\texportedDefinitions: Record<string, any>,\n\t): Acl.Schema {\n\t\tconst entityLikeDefinition = filterEntityDefinition(exportedDefinitions)\n\t\tconst roles: Role[] = Object.values(exportedDefinitions).filter(it => it instanceof Role)\n\t\tconst variables: VariableDefinition[] = Object.values(exportedDefinitions).filter(it => it instanceof VariableDefinition)\n\n\t\tconst groupedPermissions = AclFactory.groupPermissions(entityLikeDefinition, roles)\n\n\t\treturn {\n\t\t\troles: Object.fromEntries(roles.map((role): [string, Acl.RolePermissions] => {\n\t\t\t\tconst rolePermissions = groupedPermissions.get(role)\n\t\t\t\treturn [\n\t\t\t\t\trole.name,\n\t\t\t\t\t{\n\t\t\t\t\t\t...role.options,\n\t\t\t\t\t\tstages: role.options.stages ?? '*',\n\t\t\t\t\t\tentities: this.createPermissions(rolePermissions),\n\t\t\t\t\t\tvariables: this.createVariables(role, variables),\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t})),\n\t\t}\n\t}\n\n\tprivate createPermissions(rolePermissions: PermissionsByEntity | undefined): Acl.Permissions {\n\t\tif (!rolePermissions) {\n\t\t\treturn {}\n\t\t}\n\t\treturn Object.fromEntries(Array.from(rolePermissions.keys()).map((entityName): [string, Acl.EntityPermissions] => {\n\t\t\tconst entity = getEntity(this.model, entityName)\n\n\t\t\tconst predicatesResolver = EntityPredicatesResolver.create(rolePermissions, this.model, entity)\n\n\t\t\tconst entityOperations: Writable<Acl.EntityOperations> = {}\n\t\t\tfor (const op of ['create', 'update', 'read'] as const) {\n\t\t\t\tconst fieldPermissions: Writable<Acl.FieldPermissions> = {}\n\t\t\t\tfor (const field of Object.keys(entity.fields)) {\n\t\t\t\t\tconst predicate = predicatesResolver.createFieldPredicate(op, field, field === entity.primary)\n\t\t\t\t\tif (predicate !== undefined) {\n\t\t\t\t\t\tfieldPermissions[field] = predicate\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (Object.keys(fieldPermissions).length > 0) {\n\t\t\t\t\tentityOperations[op] = fieldPermissions\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst delPredicate = predicatesResolver.createFieldPredicate('delete', '', false)\n\t\t\tif (delPredicate !== undefined) {\n\t\t\t\tentityOperations.delete = delPredicate\n\t\t\t}\n\t\t\tif (rolePermissions.get(entityName)?.allowCustomPrimary) {\n\t\t\t\tentityOperations.customPrimary = true\n\t\t\t}\n\t\t\treturn [entityName, {\n\t\t\t\tpredicates: predicatesResolver.getUsedPredicates(),\n\t\t\t\toperations: entityOperations,\n\t\t\t}]\n\t\t}))\n\t}\n\n\tprivate createVariables(role: Role, variables: VariableDefinition[]): Acl.Variables {\n\t\tconst roleVariables = variables.filter(it => it.roles.includes(role))\n\t\treturn Object.fromEntries(roleVariables.map((variable): [string, Acl.Variable] => {\n\t\t\treturn [variable.name, variable.variable]\n\t\t}))\n\t}\n\n\tprivate static groupPermissions(entityLikeDefinition: [string, { new(): any }][], roles: Role[]): PermissionsByRoleAndEntity {\n\t\tconst groupedPermissions: PermissionsByRoleAndEntity = new Map()\n\t\tfor (const [name, entity] of entityLikeDefinition) {\n\t\t\tconst initEntityPermissions = (role: Role): EntityPermissions => {\n\t\t\t\tconst rolePermissions: PermissionsByEntity = groupedPermissions.get(role) ?? new Map()\n\t\t\t\tgroupedPermissions.set(role, rolePermissions)\n\t\t\t\tconst entityPermissions = rolePermissions.get(name) ?? {\n\t\t\t\t\tallowCustomPrimary: false,\n\t\t\t\t\tdefinitions: [],\n\t\t\t\t}\n\t\t\t\trolePermissions.set(name, entityPermissions)\n\t\t\t\treturn entityPermissions\n\t\t\t}\n\t\t\tconst metadata: EntityPermissionsDefinition[] = allowDefinitionsStore.get(entity)\n\t\t\tfor (const { role, ...definition } of metadata) {\n\t\t\t\tif (!roles.includes(role)) {\n\t\t\t\t\tthrow `Role ${role.name} used on entity ${name} is not registered. Have you exported it?`\n\t\t\t\t}\n\t\t\t\tconst entityPermissions = initEntityPermissions(role)\n\t\t\t\tentityPermissions.definitions.push(definition)\n\t\t\t}\n\n\t\t\tconst rolesWithCustomPrimary = allowCustomPrimaryAllRolesStore.get(entity) ? roles : allowCustomPrimaryStore.get(entity)\n\t\t\tfor (const role of rolesWithCustomPrimary) {\n\t\t\t\tinitEntityPermissions(role).allowCustomPrimary = true\n\t\t\t}\n\t\t}\n\n\t\treturn groupedPermissions\n\t}\n}\n\n\nexport type EntityPermissions = { definitions: AllowDefinition<any>[]; allowCustomPrimary: boolean }\nexport type PermissionsByEntity = Map<string, EntityPermissions>\nexport type PermissionsByRoleAndEntity = Map<Role, PermissionsByEntity>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AclFactory.js","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/AclFactory.ts"],"sourcesContent":["import { Acl, Model, Writable } from '@contember/schema'\nimport { getEntity } from '@contember/schema-utils'\n\nimport { EntityPredicatesResolver } from './EntityPredicateResolver'\nimport { AllowDefinition } from '../permissions'\nimport {\n\tallowCustomPrimaryAllRolesStore,\n\tallowCustomPrimaryStore,\n\tallowDefinitionsStore,\n\tEntityPermissionsDefinition,\n} from './stores'\nimport { Role } from '../roles'\nimport { VariableDefinition } from '../variables'\nimport { filterEntityDefinition } from '../../../utils'\n\nexport class AclFactory {\n\tconstructor(\n\t\tprivate model: Model.Schema,\n\t) {\n\t}\n\n\tpublic create(\n\t\texportedDefinitions: Record<string, any>,\n\t): Acl.Schema {\n\t\tconst entityLikeDefinition = filterEntityDefinition(exportedDefinitions)\n\t\tconst roles: Role[] = Object.values(exportedDefinitions).filter(it => it instanceof Role)\n\t\tconst variables: VariableDefinition[] = Object.values(exportedDefinitions).filter(it => it instanceof VariableDefinition)\n\n\t\tconst groupedPermissions = AclFactory.groupPermissions(entityLikeDefinition, roles)\n\n\t\treturn {\n\t\t\troles: Object.fromEntries(roles.map((role): [string, Acl.RolePermissions] => {\n\t\t\t\tconst rolePermissions = groupedPermissions.get(role)\n\t\t\t\treturn [\n\t\t\t\t\trole.name,\n\t\t\t\t\t{\n\t\t\t\t\t\t...role.options,\n\t\t\t\t\t\tstages: role.options.stages ?? '*',\n\t\t\t\t\t\tentities: this.createPermissions(rolePermissions),\n\t\t\t\t\t\tvariables: this.createVariables(role, variables),\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t})),\n\t\t}\n\t}\n\n\tprivate createPermissions(rolePermissions: PermissionsByEntity | undefined): Acl.Permissions {\n\t\tif (!rolePermissions) {\n\t\t\treturn {}\n\t\t}\n\t\treturn Object.fromEntries(Array.from(rolePermissions.keys()).map((entityName): [string, Acl.EntityPermissions] => {\n\t\t\tconst entity = getEntity(this.model, entityName)\n\n\t\t\tconst predicatesResolver = EntityPredicatesResolver.create(rolePermissions, this.model, entity)\n\n\t\t\tconst entityOperations: Writable<Acl.EntityOperations> = {}\n\t\t\tfor (const op of ['create', 'update', 'read'] as const) {\n\t\t\t\tconst fieldPermissions: Writable<Acl.FieldPermissions> = {}\n\t\t\t\tfor (const field of Object.keys(entity.fields)) {\n\t\t\t\t\tconst predicate = predicatesResolver.createFieldPredicate(op, field, field === entity.primary)\n\t\t\t\t\tif (predicate !== undefined) {\n\t\t\t\t\t\tfieldPermissions[field] = predicate\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (Object.keys(fieldPermissions).length > 0) {\n\t\t\t\t\tentityOperations[op] = fieldPermissions\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst delPredicate = predicatesResolver.createFieldPredicate('delete', '', false)\n\t\t\tif (delPredicate !== undefined) {\n\t\t\t\tentityOperations.delete = delPredicate\n\t\t\t}\n\t\t\tif (rolePermissions.get(entityName)?.allowCustomPrimary) {\n\t\t\t\tentityOperations.customPrimary = true\n\t\t\t}\n\t\t\treturn [entityName, {\n\t\t\t\tpredicates: predicatesResolver.getUsedPredicates(),\n\t\t\t\toperations: entityOperations,\n\t\t\t}]\n\t\t}))\n\t}\n\n\tprivate createVariables(role: Role, variables: VariableDefinition[]): Acl.Variables {\n\t\tconst roleVariables = variables.filter(it => it.roles.includes(role))\n\t\treturn Object.fromEntries(roleVariables.map((variable): [string, Acl.Variable] => {\n\t\t\treturn [variable.name, variable.variable]\n\t\t}))\n\t}\n\n\tprivate static groupPermissions(entityLikeDefinition: [string, { new(): any }][], roles: Role[]): PermissionsByRoleAndEntity {\n\t\tconst groupedPermissions: PermissionsByRoleAndEntity = new Map()\n\t\tfor (const [name, entity] of entityLikeDefinition) {\n\t\t\tconst initEntityPermissions = (role: Role): EntityPermissions => {\n\t\t\t\tconst rolePermissions: PermissionsByEntity = groupedPermissions.get(role) ?? new Map()\n\t\t\t\tgroupedPermissions.set(role, rolePermissions)\n\t\t\t\tconst entityPermissions = rolePermissions.get(name) ?? {\n\t\t\t\t\tallowCustomPrimary: false,\n\t\t\t\t\tdefinitions: [],\n\t\t\t\t}\n\t\t\t\trolePermissions.set(name, entityPermissions)\n\t\t\t\treturn entityPermissions\n\t\t\t}\n\t\t\tconst metadata: EntityPermissionsDefinition[] = allowDefinitionsStore.get(entity)\n\t\t\tfor (const { role, ...definition } of metadata) {\n\t\t\t\tif (!roles.includes(role)) {\n\t\t\t\t\tthrow `Role ${role.name} used on entity ${name} is not registered. Have you exported it?`\n\t\t\t\t}\n\t\t\t\tconst entityPermissions = initEntityPermissions(role)\n\t\t\t\tentityPermissions.definitions.push(definition)\n\t\t\t}\n\n\t\t\tconst rolesWithCustomPrimary = allowCustomPrimaryAllRolesStore.get(entity) ? roles : allowCustomPrimaryStore.get(entity)\n\t\t\tfor (const role of rolesWithCustomPrimary) {\n\t\t\t\tinitEntityPermissions(role).allowCustomPrimary = true\n\t\t\t}\n\t\t}\n\n\t\treturn groupedPermissions\n\t}\n}\n\n\nexport type EntityPermissions = { definitions: AllowDefinition<any>[]; allowCustomPrimary: boolean }\nexport type PermissionsByEntity = Map<string, EntityPermissions>\nexport type PermissionsByRoleAndEntity = Map<Role, PermissionsByEntity>\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const node_util = require("node:util");
3
+ const deepEqual = require("fast-deep-equal");
4
4
  const schemaUtils = require("@contember/schema-utils");
5
5
  const createPredicateName = require("./createPredicateName.cjs");
6
6
  const references = require("../references.cjs");
@@ -76,7 +76,7 @@ class EntityPredicatesResolver {
76
76
  if (!(predicateName in this.predicates)) {
77
77
  this.predicates[predicateName] = predicate;
78
78
  break;
79
- } else if (node_util.isDeepStrictEqual(predicate, this.predicates[predicateName])) {
79
+ } else if (deepEqual(predicate, this.predicates[predicateName])) {
80
80
  break;
81
81
  } else {
82
82
  predicateName = `${origName}_${i}`;
@@ -1 +1 @@
1
- {"version":3,"file":"EntityPredicateResolver.cjs","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/EntityPredicateResolver.ts"],"sourcesContent":["import { isDeepStrictEqual } from 'node:util'\n\nimport { Acl, Input, Model, Writable } from '@contember/schema'\nimport { PredicateDefinitionProcessor } from '@contember/schema-utils'\n\nimport { PermissionsByEntity } from './AclFactory'\nimport { createPredicateName } from './createPredicateName'\nimport { AllowDefinition, PredicateExtra, WhenDefinition } from '../permissions'\nimport { PredicateEvaluationReference } from '../references'\nimport { VariableDefinition } from '../variables'\n\nexport class EntityPredicatesResolver {\n\tprivate usedPredicates: string[] = []\n\n\tprivate constructor(\n\t\tprivate aclDefinitions: AllowDefinition<any>[],\n\t\tprivate predicates: Writable<Acl.PredicateMap>,\n\t\tprivate predicateNamesMap: Map<WhenDefinition, string>,\n\t\tprivate generatedNames: Set<string>,\n\t) {\n\t}\n\n\tpublic static create(\n\t\trolePermissions: PermissionsByEntity,\n\t\tmodel: Model.Schema,\n\t\tentity: Model.Entity,\n\t): EntityPredicatesResolver {\n\t\tconst predicates: Writable<Acl.PredicateMap> = {}\n\t\tconst predicateNamesMap = new Map<WhenDefinition, string>()\n\t\tconst aclDefinitions = rolePermissions.get(entity.name)?.definitions ?? []\n\t\tconst generatedNames = new Set<string>()\n\t\tconst definedNames = new Set<string>(aclDefinitions.map(it => it.name).filter((it): it is string => it !== undefined))\n\t\tfor (const permission of aclDefinitions) {\n\t\t\tif (!permission.when) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst resolvedPredicate = EntityPredicatesResolver.resolvePredicate(model, entity, permission.when, rolePermissions)\n\t\t\tlet predicateName = permission.name ?? createPredicateName(resolvedPredicate)\n\t\t\twhile (predicateName in predicates || definedNames.has(predicateName)) {\n\t\t\t\tpredicateName += '_'\n\t\t\t}\n\t\t\tif (!permission.name) {\n\t\t\t\tgeneratedNames.add(predicateName)\n\t\t\t}\n\t\t\tpredicates[predicateName] = resolvedPredicate\n\t\t\tpredicateNamesMap.set(permission.when, predicateName)\n\t\t}\n\t\tfor (const op of ['read', 'update', 'create'] as const) {\n\t\t\tfor (const definition of aclDefinitions) {\n\t\t\t\tconst fields = definition[op]\n\t\t\t\tif (!Array.isArray(fields)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfor (const field of fields) {\n\t\t\t\t\tif (!(field in entity.fields)) {\n\t\t\t\t\t\tthrow `Field \"${String(field)}\" does not exist on entity \"${entity.name}\" in ${op} ACL definition.`\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new EntityPredicatesResolver(aclDefinitions, predicates, predicateNamesMap, generatedNames)\n\t}\n\n\tcreateFieldPredicate(op: 'create' | 'update' | 'read' | 'delete', field: string, isPrimary: boolean): true | undefined | string {\n\t\tconst fieldWhens = EntityPredicatesResolver.getMatchingWhens(this.aclDefinitions, op, field, isPrimary)\n\t\tif (fieldWhens.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (fieldWhens.includes(true)) {\n\t\t\treturn true\n\t\t}\n\t\tconst predicateNames = (fieldWhens as WhenDefinition[]).map(it => {\n\t\t\tconst name = this.predicateNamesMap.get(it)\n\t\t\tif (!name) throw new Error('implementation error')\n\t\t\treturn name\n\t\t})\n\t\tif (predicateNames.length === 1) {\n\t\t\tthis.usedPredicates.push(predicateNames[0])\n\t\t\treturn predicateNames[0]\n\t\t}\n\n\n\t\tconst predicate = { or: predicateNames.map(it => this.predicates[it]) }\n\t\tconst origName = predicateNames.every(it => this.generatedNames.has(it)) ? createPredicateName(predicate) : predicateNames.join('_or_')\n\t\tlet predicateName = origName\n\t\tfor (let i = 1;; i++) {\n\t\t\tif (!(predicateName in this.predicates)) {\n\t\t\t\tthis.predicates[predicateName] = predicate\n\t\t\t\tbreak\n\t\t\t} else if (isDeepStrictEqual(predicate, this.predicates[predicateName])) {\n\t\t\t\tbreak\n\t\t\t} else {\n\t\t\t\tpredicateName = `${origName}_${i}`\n\t\t\t}\n\t\t}\n\t\tthis.usedPredicates.push(predicateName)\n\t\treturn predicateName\n\t}\n\n\tgetUsedPredicates(): Acl.PredicateMap {\n\t\treturn Object.fromEntries(Object.entries(this.predicates).filter(([name]) => this.usedPredicates.includes(name)))\n\t}\n\n\n\tprivate static resolvePredicate(\n\t\tmodel: Model.Schema,\n\t\tentity: Model.Entity,\n\t\twhen: WhenDefinition,\n\t\trolePermissionsByEntity: PermissionsByEntity,\n\t): Acl.PredicateDefinition {\n\t\tconst processor = new PredicateDefinitionProcessor(model)\n\t\treturn processor.process<Acl.PredicateReference | Input.Condition, PredicateExtra>(entity, when, {\n\t\t\thandleColumn(ctx) {\n\t\t\t\tif (ctx.value instanceof VariableDefinition) {\n\t\t\t\t\treturn ctx.value.name\n\t\t\t\t}\n\t\t\t\tif (ctx.value instanceof PredicateEvaluationReference) {\n\t\t\t\t\tthrow `Predicate references are allowed only on relations. \\nYou cannot use \"can${upperCaseFirst(ctx.value.operation)}(${ctx.value.field ? JSON.stringify(ctx.value.field) : ''})\" on a column \"${ctx.column.name}\" of entity \"${ctx.entity.name}\".`\n\t\t\t\t}\n\t\t\t\treturn ctx.value\n\t\t\t},\n\t\t\thandleRelation(ctx) {\n\t\t\t\tif (ctx.value instanceof VariableDefinition) {\n\t\t\t\t\treturn { [ctx.targetEntity.primary]: ctx.value.name }\n\t\t\t\t}\n\t\t\t\tif (ctx.value instanceof PredicateEvaluationReference) {\n\t\t\t\t\tconst targetPermissions = rolePermissionsByEntity.get(ctx.targetEntity.name)\n\t\t\t\t\tif (!targetPermissions) {\n\t\t\t\t\t\treturn { [ctx.targetEntity.primary]: { never: true } }\n\t\t\t\t\t}\n\t\t\t\t\tconst ref = ctx.value\n\t\t\t\t\tconst whens = EntityPredicatesResolver.getMatchingWhens(targetPermissions.definitions, ref.operation, ref.field ?? '', false)\n\t\t\t\t\tif (whens.length === 0) {\n\t\t\t\t\t\treturn { [ctx.targetEntity.primary]: { never: true } }\n\t\t\t\t\t}\n\t\t\t\t\tif (whens.includes(true)) {\n\t\t\t\t\t\treturn { [ctx.targetEntity.primary]: { isNull: false } }\n\t\t\t\t\t}\n\t\t\t\t\tconst predicates = (whens as WhenDefinition[]).map(it =>\n\t\t\t\t\t\tEntityPredicatesResolver.resolvePredicate(model, ctx.targetEntity, it, rolePermissionsByEntity),\n\t\t\t\t\t)\n\t\t\t\t\tif (predicates.length > 1) {\n\t\t\t\t\t\treturn { or: predicates }\n\t\t\t\t\t}\n\t\t\t\t\treturn predicates[0]\n\t\t\t\t}\n\t\t\t\treturn ctx.value\n\t\t\t},\n\t\t})\n\t}\n\n\tprivate static getMatchingWhens(\n\t\tpermissions: AllowDefinition<any>[],\n\t\toperation: 'delete' | 'read' | 'update' | 'create',\n\t\tfield: string,\n\t\tisPrimary: boolean,\n\t) {\n\t\treturn permissions\n\t\t\t.filter(it => {\n\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\treturn !!it.delete\n\t\t\t\t}\n\t\t\t\tconst op = it[operation]\n\t\t\t\tif (!op) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (op === true) {\n\t\t\t\t\treturn !isPrimary\n\t\t\t\t}\n\t\t\t\treturn op.includes(field)\n\t\t\t})\n\t\t\t.map(it => it.when ?? true)\n\t}\n}\n\nconst upperCaseFirst = (string: string) => `${string.charAt(0).toUpperCase()}${string.substring(1)}`\n"],"names":["createPredicateName","isDeepStrictEqual","PredicateDefinitionProcessor","VariableDefinition","PredicateEvaluationReference"],"mappings":"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"}
1
+ {"version":3,"file":"EntityPredicateResolver.cjs","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/EntityPredicateResolver.ts"],"sourcesContent":["import deepEqual from 'fast-deep-equal'\n\nimport { Acl, Input, Model, Writable } from '@contember/schema'\nimport { PredicateDefinitionProcessor } from '@contember/schema-utils'\n\nimport { PermissionsByEntity } from './AclFactory'\nimport { createPredicateName } from './createPredicateName'\nimport { AllowDefinition, PredicateExtra, WhenDefinition } from '../permissions'\nimport { PredicateEvaluationReference } from '../references'\nimport { VariableDefinition } from '../variables'\n\nexport class EntityPredicatesResolver {\n\tprivate usedPredicates: string[] = []\n\n\tprivate constructor(\n\t\tprivate aclDefinitions: AllowDefinition<any>[],\n\t\tprivate predicates: Writable<Acl.PredicateMap>,\n\t\tprivate predicateNamesMap: Map<WhenDefinition, string>,\n\t\tprivate generatedNames: Set<string>,\n\t) {\n\t}\n\n\tpublic static create(\n\t\trolePermissions: PermissionsByEntity,\n\t\tmodel: Model.Schema,\n\t\tentity: Model.Entity,\n\t): EntityPredicatesResolver {\n\t\tconst predicates: Writable<Acl.PredicateMap> = {}\n\t\tconst predicateNamesMap = new Map<WhenDefinition, string>()\n\t\tconst aclDefinitions = rolePermissions.get(entity.name)?.definitions ?? []\n\t\tconst generatedNames = new Set<string>()\n\t\tconst definedNames = new Set<string>(aclDefinitions.map(it => it.name).filter((it): it is string => it !== undefined))\n\t\tfor (const permission of aclDefinitions) {\n\t\t\tif (!permission.when) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst resolvedPredicate = EntityPredicatesResolver.resolvePredicate(model, entity, permission.when, rolePermissions)\n\t\t\tlet predicateName = permission.name ?? createPredicateName(resolvedPredicate)\n\t\t\twhile (predicateName in predicates || definedNames.has(predicateName)) {\n\t\t\t\tpredicateName += '_'\n\t\t\t}\n\t\t\tif (!permission.name) {\n\t\t\t\tgeneratedNames.add(predicateName)\n\t\t\t}\n\t\t\tpredicates[predicateName] = resolvedPredicate\n\t\t\tpredicateNamesMap.set(permission.when, predicateName)\n\t\t}\n\t\tfor (const op of ['read', 'update', 'create'] as const) {\n\t\t\tfor (const definition of aclDefinitions) {\n\t\t\t\tconst fields = definition[op]\n\t\t\t\tif (!Array.isArray(fields)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfor (const field of fields) {\n\t\t\t\t\tif (!(field in entity.fields)) {\n\t\t\t\t\t\tthrow `Field \"${String(field)}\" does not exist on entity \"${entity.name}\" in ${op} ACL definition.`\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new EntityPredicatesResolver(aclDefinitions, predicates, predicateNamesMap, generatedNames)\n\t}\n\n\tcreateFieldPredicate(op: 'create' | 'update' | 'read' | 'delete', field: string, isPrimary: boolean): true | undefined | string {\n\t\tconst fieldWhens = EntityPredicatesResolver.getMatchingWhens(this.aclDefinitions, op, field, isPrimary)\n\t\tif (fieldWhens.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (fieldWhens.includes(true)) {\n\t\t\treturn true\n\t\t}\n\t\tconst predicateNames = (fieldWhens as WhenDefinition[]).map(it => {\n\t\t\tconst name = this.predicateNamesMap.get(it)\n\t\t\tif (!name) throw new Error('implementation error')\n\t\t\treturn name\n\t\t})\n\t\tif (predicateNames.length === 1) {\n\t\t\tthis.usedPredicates.push(predicateNames[0])\n\t\t\treturn predicateNames[0]\n\t\t}\n\n\n\t\tconst predicate = { or: predicateNames.map(it => this.predicates[it]) }\n\t\tconst origName = predicateNames.every(it => this.generatedNames.has(it)) ? createPredicateName(predicate) : predicateNames.join('_or_')\n\t\tlet predicateName = origName\n\t\tfor (let i = 1;; i++) {\n\t\t\tif (!(predicateName in this.predicates)) {\n\t\t\t\tthis.predicates[predicateName] = predicate\n\t\t\t\tbreak\n\t\t\t} else if (deepEqual(predicate, this.predicates[predicateName])) {\n\t\t\t\tbreak\n\t\t\t} else {\n\t\t\t\tpredicateName = `${origName}_${i}`\n\t\t\t}\n\t\t}\n\t\tthis.usedPredicates.push(predicateName)\n\t\treturn predicateName\n\t}\n\n\tgetUsedPredicates(): Acl.PredicateMap {\n\t\treturn Object.fromEntries(Object.entries(this.predicates).filter(([name]) => this.usedPredicates.includes(name)))\n\t}\n\n\n\tprivate static resolvePredicate(\n\t\tmodel: Model.Schema,\n\t\tentity: Model.Entity,\n\t\twhen: WhenDefinition,\n\t\trolePermissionsByEntity: PermissionsByEntity,\n\t): Acl.PredicateDefinition {\n\t\tconst processor = new PredicateDefinitionProcessor(model)\n\t\treturn processor.process<Acl.PredicateReference | Input.Condition, PredicateExtra>(entity, when, {\n\t\t\thandleColumn(ctx) {\n\t\t\t\tif (ctx.value instanceof VariableDefinition) {\n\t\t\t\t\treturn ctx.value.name\n\t\t\t\t}\n\t\t\t\tif (ctx.value instanceof PredicateEvaluationReference) {\n\t\t\t\t\tthrow `Predicate references are allowed only on relations. \\nYou cannot use \"can${upperCaseFirst(ctx.value.operation)}(${ctx.value.field ? JSON.stringify(ctx.value.field) : ''})\" on a column \"${ctx.column.name}\" of entity \"${ctx.entity.name}\".`\n\t\t\t\t}\n\t\t\t\treturn ctx.value\n\t\t\t},\n\t\t\thandleRelation(ctx) {\n\t\t\t\tif (ctx.value instanceof VariableDefinition) {\n\t\t\t\t\treturn { [ctx.targetEntity.primary]: ctx.value.name }\n\t\t\t\t}\n\t\t\t\tif (ctx.value instanceof PredicateEvaluationReference) {\n\t\t\t\t\tconst targetPermissions = rolePermissionsByEntity.get(ctx.targetEntity.name)\n\t\t\t\t\tif (!targetPermissions) {\n\t\t\t\t\t\treturn { [ctx.targetEntity.primary]: { never: true } }\n\t\t\t\t\t}\n\t\t\t\t\tconst ref = ctx.value\n\t\t\t\t\tconst whens = EntityPredicatesResolver.getMatchingWhens(targetPermissions.definitions, ref.operation, ref.field ?? '', false)\n\t\t\t\t\tif (whens.length === 0) {\n\t\t\t\t\t\treturn { [ctx.targetEntity.primary]: { never: true } }\n\t\t\t\t\t}\n\t\t\t\t\tif (whens.includes(true)) {\n\t\t\t\t\t\treturn { [ctx.targetEntity.primary]: { isNull: false } }\n\t\t\t\t\t}\n\t\t\t\t\tconst predicates = (whens as WhenDefinition[]).map(it =>\n\t\t\t\t\t\tEntityPredicatesResolver.resolvePredicate(model, ctx.targetEntity, it, rolePermissionsByEntity),\n\t\t\t\t\t)\n\t\t\t\t\tif (predicates.length > 1) {\n\t\t\t\t\t\treturn { or: predicates }\n\t\t\t\t\t}\n\t\t\t\t\treturn predicates[0]\n\t\t\t\t}\n\t\t\t\treturn ctx.value\n\t\t\t},\n\t\t})\n\t}\n\n\tprivate static getMatchingWhens(\n\t\tpermissions: AllowDefinition<any>[],\n\t\toperation: 'delete' | 'read' | 'update' | 'create',\n\t\tfield: string,\n\t\tisPrimary: boolean,\n\t) {\n\t\treturn permissions\n\t\t\t.filter(it => {\n\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\treturn !!it.delete\n\t\t\t\t}\n\t\t\t\tconst op = it[operation]\n\t\t\t\tif (!op) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (op === true) {\n\t\t\t\t\treturn !isPrimary\n\t\t\t\t}\n\t\t\t\treturn op.includes(field)\n\t\t\t})\n\t\t\t.map(it => it.when ?? true)\n\t}\n}\n\nconst upperCaseFirst = (string: string) => `${string.charAt(0).toUpperCase()}${string.substring(1)}`\n"],"names":["createPredicateName","PredicateDefinitionProcessor","VariableDefinition","PredicateEvaluationReference"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { isDeepStrictEqual } from "node:util";
1
+ import deepEqual from "fast-deep-equal";
2
2
  import { PredicateDefinitionProcessor } from "@contember/schema-utils";
3
3
  import { createPredicateName } from "./createPredicateName.js";
4
4
  import { PredicateEvaluationReference } from "../references.js";
@@ -74,7 +74,7 @@ class EntityPredicatesResolver {
74
74
  if (!(predicateName in this.predicates)) {
75
75
  this.predicates[predicateName] = predicate;
76
76
  break;
77
- } else if (isDeepStrictEqual(predicate, this.predicates[predicateName])) {
77
+ } else if (deepEqual(predicate, this.predicates[predicateName])) {
78
78
  break;
79
79
  } else {
80
80
  predicateName = `${origName}_${i}`;
@@ -1 +1 @@
1
- {"version":3,"file":"EntityPredicateResolver.js","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/EntityPredicateResolver.ts"],"sourcesContent":["import { isDeepStrictEqual } from 'node:util'\n\nimport { Acl, Input, Model, Writable } from '@contember/schema'\nimport { PredicateDefinitionProcessor } from '@contember/schema-utils'\n\nimport { PermissionsByEntity } from './AclFactory'\nimport { createPredicateName } from './createPredicateName'\nimport { AllowDefinition, PredicateExtra, WhenDefinition } from '../permissions'\nimport { PredicateEvaluationReference } from '../references'\nimport { VariableDefinition } from '../variables'\n\nexport class EntityPredicatesResolver {\n\tprivate usedPredicates: string[] = []\n\n\tprivate constructor(\n\t\tprivate aclDefinitions: AllowDefinition<any>[],\n\t\tprivate predicates: Writable<Acl.PredicateMap>,\n\t\tprivate predicateNamesMap: Map<WhenDefinition, string>,\n\t\tprivate generatedNames: Set<string>,\n\t) {\n\t}\n\n\tpublic static create(\n\t\trolePermissions: PermissionsByEntity,\n\t\tmodel: Model.Schema,\n\t\tentity: Model.Entity,\n\t): EntityPredicatesResolver {\n\t\tconst predicates: Writable<Acl.PredicateMap> = {}\n\t\tconst predicateNamesMap = new Map<WhenDefinition, string>()\n\t\tconst aclDefinitions = rolePermissions.get(entity.name)?.definitions ?? []\n\t\tconst generatedNames = new Set<string>()\n\t\tconst definedNames = new Set<string>(aclDefinitions.map(it => it.name).filter((it): it is string => it !== undefined))\n\t\tfor (const permission of aclDefinitions) {\n\t\t\tif (!permission.when) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst resolvedPredicate = EntityPredicatesResolver.resolvePredicate(model, entity, permission.when, rolePermissions)\n\t\t\tlet predicateName = permission.name ?? createPredicateName(resolvedPredicate)\n\t\t\twhile (predicateName in predicates || definedNames.has(predicateName)) {\n\t\t\t\tpredicateName += '_'\n\t\t\t}\n\t\t\tif (!permission.name) {\n\t\t\t\tgeneratedNames.add(predicateName)\n\t\t\t}\n\t\t\tpredicates[predicateName] = resolvedPredicate\n\t\t\tpredicateNamesMap.set(permission.when, predicateName)\n\t\t}\n\t\tfor (const op of ['read', 'update', 'create'] as const) {\n\t\t\tfor (const definition of aclDefinitions) {\n\t\t\t\tconst fields = definition[op]\n\t\t\t\tif (!Array.isArray(fields)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfor (const field of fields) {\n\t\t\t\t\tif (!(field in entity.fields)) {\n\t\t\t\t\t\tthrow `Field \"${String(field)}\" does not exist on entity \"${entity.name}\" in ${op} ACL definition.`\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new EntityPredicatesResolver(aclDefinitions, predicates, predicateNamesMap, generatedNames)\n\t}\n\n\tcreateFieldPredicate(op: 'create' | 'update' | 'read' | 'delete', field: string, isPrimary: boolean): true | undefined | string {\n\t\tconst fieldWhens = EntityPredicatesResolver.getMatchingWhens(this.aclDefinitions, op, field, isPrimary)\n\t\tif (fieldWhens.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (fieldWhens.includes(true)) {\n\t\t\treturn true\n\t\t}\n\t\tconst predicateNames = (fieldWhens as WhenDefinition[]).map(it => {\n\t\t\tconst name = this.predicateNamesMap.get(it)\n\t\t\tif (!name) throw new Error('implementation error')\n\t\t\treturn name\n\t\t})\n\t\tif (predicateNames.length === 1) {\n\t\t\tthis.usedPredicates.push(predicateNames[0])\n\t\t\treturn predicateNames[0]\n\t\t}\n\n\n\t\tconst predicate = { or: predicateNames.map(it => this.predicates[it]) }\n\t\tconst origName = predicateNames.every(it => this.generatedNames.has(it)) ? createPredicateName(predicate) : predicateNames.join('_or_')\n\t\tlet predicateName = origName\n\t\tfor (let i = 1;; i++) {\n\t\t\tif (!(predicateName in this.predicates)) {\n\t\t\t\tthis.predicates[predicateName] = predicate\n\t\t\t\tbreak\n\t\t\t} else if (isDeepStrictEqual(predicate, this.predicates[predicateName])) {\n\t\t\t\tbreak\n\t\t\t} else {\n\t\t\t\tpredicateName = `${origName}_${i}`\n\t\t\t}\n\t\t}\n\t\tthis.usedPredicates.push(predicateName)\n\t\treturn predicateName\n\t}\n\n\tgetUsedPredicates(): Acl.PredicateMap {\n\t\treturn Object.fromEntries(Object.entries(this.predicates).filter(([name]) => this.usedPredicates.includes(name)))\n\t}\n\n\n\tprivate static resolvePredicate(\n\t\tmodel: Model.Schema,\n\t\tentity: Model.Entity,\n\t\twhen: WhenDefinition,\n\t\trolePermissionsByEntity: PermissionsByEntity,\n\t): Acl.PredicateDefinition {\n\t\tconst processor = new PredicateDefinitionProcessor(model)\n\t\treturn processor.process<Acl.PredicateReference | Input.Condition, PredicateExtra>(entity, when, {\n\t\t\thandleColumn(ctx) {\n\t\t\t\tif (ctx.value instanceof VariableDefinition) {\n\t\t\t\t\treturn ctx.value.name\n\t\t\t\t}\n\t\t\t\tif (ctx.value instanceof PredicateEvaluationReference) {\n\t\t\t\t\tthrow `Predicate references are allowed only on relations. \\nYou cannot use \"can${upperCaseFirst(ctx.value.operation)}(${ctx.value.field ? JSON.stringify(ctx.value.field) : ''})\" on a column \"${ctx.column.name}\" of entity \"${ctx.entity.name}\".`\n\t\t\t\t}\n\t\t\t\treturn ctx.value\n\t\t\t},\n\t\t\thandleRelation(ctx) {\n\t\t\t\tif (ctx.value instanceof VariableDefinition) {\n\t\t\t\t\treturn { [ctx.targetEntity.primary]: ctx.value.name }\n\t\t\t\t}\n\t\t\t\tif (ctx.value instanceof PredicateEvaluationReference) {\n\t\t\t\t\tconst targetPermissions = rolePermissionsByEntity.get(ctx.targetEntity.name)\n\t\t\t\t\tif (!targetPermissions) {\n\t\t\t\t\t\treturn { [ctx.targetEntity.primary]: { never: true } }\n\t\t\t\t\t}\n\t\t\t\t\tconst ref = ctx.value\n\t\t\t\t\tconst whens = EntityPredicatesResolver.getMatchingWhens(targetPermissions.definitions, ref.operation, ref.field ?? '', false)\n\t\t\t\t\tif (whens.length === 0) {\n\t\t\t\t\t\treturn { [ctx.targetEntity.primary]: { never: true } }\n\t\t\t\t\t}\n\t\t\t\t\tif (whens.includes(true)) {\n\t\t\t\t\t\treturn { [ctx.targetEntity.primary]: { isNull: false } }\n\t\t\t\t\t}\n\t\t\t\t\tconst predicates = (whens as WhenDefinition[]).map(it =>\n\t\t\t\t\t\tEntityPredicatesResolver.resolvePredicate(model, ctx.targetEntity, it, rolePermissionsByEntity),\n\t\t\t\t\t)\n\t\t\t\t\tif (predicates.length > 1) {\n\t\t\t\t\t\treturn { or: predicates }\n\t\t\t\t\t}\n\t\t\t\t\treturn predicates[0]\n\t\t\t\t}\n\t\t\t\treturn ctx.value\n\t\t\t},\n\t\t})\n\t}\n\n\tprivate static getMatchingWhens(\n\t\tpermissions: AllowDefinition<any>[],\n\t\toperation: 'delete' | 'read' | 'update' | 'create',\n\t\tfield: string,\n\t\tisPrimary: boolean,\n\t) {\n\t\treturn permissions\n\t\t\t.filter(it => {\n\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\treturn !!it.delete\n\t\t\t\t}\n\t\t\t\tconst op = it[operation]\n\t\t\t\tif (!op) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (op === true) {\n\t\t\t\t\treturn !isPrimary\n\t\t\t\t}\n\t\t\t\treturn op.includes(field)\n\t\t\t})\n\t\t\t.map(it => it.when ?? true)\n\t}\n}\n\nconst upperCaseFirst = (string: string) => `${string.charAt(0).toUpperCase()}${string.substring(1)}`\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EntityPredicateResolver.js","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/EntityPredicateResolver.ts"],"sourcesContent":["import deepEqual from 'fast-deep-equal'\n\nimport { Acl, Input, Model, Writable } from '@contember/schema'\nimport { PredicateDefinitionProcessor } from '@contember/schema-utils'\n\nimport { PermissionsByEntity } from './AclFactory'\nimport { createPredicateName } from './createPredicateName'\nimport { AllowDefinition, PredicateExtra, WhenDefinition } from '../permissions'\nimport { PredicateEvaluationReference } from '../references'\nimport { VariableDefinition } from '../variables'\n\nexport class EntityPredicatesResolver {\n\tprivate usedPredicates: string[] = []\n\n\tprivate constructor(\n\t\tprivate aclDefinitions: AllowDefinition<any>[],\n\t\tprivate predicates: Writable<Acl.PredicateMap>,\n\t\tprivate predicateNamesMap: Map<WhenDefinition, string>,\n\t\tprivate generatedNames: Set<string>,\n\t) {\n\t}\n\n\tpublic static create(\n\t\trolePermissions: PermissionsByEntity,\n\t\tmodel: Model.Schema,\n\t\tentity: Model.Entity,\n\t): EntityPredicatesResolver {\n\t\tconst predicates: Writable<Acl.PredicateMap> = {}\n\t\tconst predicateNamesMap = new Map<WhenDefinition, string>()\n\t\tconst aclDefinitions = rolePermissions.get(entity.name)?.definitions ?? []\n\t\tconst generatedNames = new Set<string>()\n\t\tconst definedNames = new Set<string>(aclDefinitions.map(it => it.name).filter((it): it is string => it !== undefined))\n\t\tfor (const permission of aclDefinitions) {\n\t\t\tif (!permission.when) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst resolvedPredicate = EntityPredicatesResolver.resolvePredicate(model, entity, permission.when, rolePermissions)\n\t\t\tlet predicateName = permission.name ?? createPredicateName(resolvedPredicate)\n\t\t\twhile (predicateName in predicates || definedNames.has(predicateName)) {\n\t\t\t\tpredicateName += '_'\n\t\t\t}\n\t\t\tif (!permission.name) {\n\t\t\t\tgeneratedNames.add(predicateName)\n\t\t\t}\n\t\t\tpredicates[predicateName] = resolvedPredicate\n\t\t\tpredicateNamesMap.set(permission.when, predicateName)\n\t\t}\n\t\tfor (const op of ['read', 'update', 'create'] as const) {\n\t\t\tfor (const definition of aclDefinitions) {\n\t\t\t\tconst fields = definition[op]\n\t\t\t\tif (!Array.isArray(fields)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfor (const field of fields) {\n\t\t\t\t\tif (!(field in entity.fields)) {\n\t\t\t\t\t\tthrow `Field \"${String(field)}\" does not exist on entity \"${entity.name}\" in ${op} ACL definition.`\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new EntityPredicatesResolver(aclDefinitions, predicates, predicateNamesMap, generatedNames)\n\t}\n\n\tcreateFieldPredicate(op: 'create' | 'update' | 'read' | 'delete', field: string, isPrimary: boolean): true | undefined | string {\n\t\tconst fieldWhens = EntityPredicatesResolver.getMatchingWhens(this.aclDefinitions, op, field, isPrimary)\n\t\tif (fieldWhens.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (fieldWhens.includes(true)) {\n\t\t\treturn true\n\t\t}\n\t\tconst predicateNames = (fieldWhens as WhenDefinition[]).map(it => {\n\t\t\tconst name = this.predicateNamesMap.get(it)\n\t\t\tif (!name) throw new Error('implementation error')\n\t\t\treturn name\n\t\t})\n\t\tif (predicateNames.length === 1) {\n\t\t\tthis.usedPredicates.push(predicateNames[0])\n\t\t\treturn predicateNames[0]\n\t\t}\n\n\n\t\tconst predicate = { or: predicateNames.map(it => this.predicates[it]) }\n\t\tconst origName = predicateNames.every(it => this.generatedNames.has(it)) ? createPredicateName(predicate) : predicateNames.join('_or_')\n\t\tlet predicateName = origName\n\t\tfor (let i = 1;; i++) {\n\t\t\tif (!(predicateName in this.predicates)) {\n\t\t\t\tthis.predicates[predicateName] = predicate\n\t\t\t\tbreak\n\t\t\t} else if (deepEqual(predicate, this.predicates[predicateName])) {\n\t\t\t\tbreak\n\t\t\t} else {\n\t\t\t\tpredicateName = `${origName}_${i}`\n\t\t\t}\n\t\t}\n\t\tthis.usedPredicates.push(predicateName)\n\t\treturn predicateName\n\t}\n\n\tgetUsedPredicates(): Acl.PredicateMap {\n\t\treturn Object.fromEntries(Object.entries(this.predicates).filter(([name]) => this.usedPredicates.includes(name)))\n\t}\n\n\n\tprivate static resolvePredicate(\n\t\tmodel: Model.Schema,\n\t\tentity: Model.Entity,\n\t\twhen: WhenDefinition,\n\t\trolePermissionsByEntity: PermissionsByEntity,\n\t): Acl.PredicateDefinition {\n\t\tconst processor = new PredicateDefinitionProcessor(model)\n\t\treturn processor.process<Acl.PredicateReference | Input.Condition, PredicateExtra>(entity, when, {\n\t\t\thandleColumn(ctx) {\n\t\t\t\tif (ctx.value instanceof VariableDefinition) {\n\t\t\t\t\treturn ctx.value.name\n\t\t\t\t}\n\t\t\t\tif (ctx.value instanceof PredicateEvaluationReference) {\n\t\t\t\t\tthrow `Predicate references are allowed only on relations. \\nYou cannot use \"can${upperCaseFirst(ctx.value.operation)}(${ctx.value.field ? JSON.stringify(ctx.value.field) : ''})\" on a column \"${ctx.column.name}\" of entity \"${ctx.entity.name}\".`\n\t\t\t\t}\n\t\t\t\treturn ctx.value\n\t\t\t},\n\t\t\thandleRelation(ctx) {\n\t\t\t\tif (ctx.value instanceof VariableDefinition) {\n\t\t\t\t\treturn { [ctx.targetEntity.primary]: ctx.value.name }\n\t\t\t\t}\n\t\t\t\tif (ctx.value instanceof PredicateEvaluationReference) {\n\t\t\t\t\tconst targetPermissions = rolePermissionsByEntity.get(ctx.targetEntity.name)\n\t\t\t\t\tif (!targetPermissions) {\n\t\t\t\t\t\treturn { [ctx.targetEntity.primary]: { never: true } }\n\t\t\t\t\t}\n\t\t\t\t\tconst ref = ctx.value\n\t\t\t\t\tconst whens = EntityPredicatesResolver.getMatchingWhens(targetPermissions.definitions, ref.operation, ref.field ?? '', false)\n\t\t\t\t\tif (whens.length === 0) {\n\t\t\t\t\t\treturn { [ctx.targetEntity.primary]: { never: true } }\n\t\t\t\t\t}\n\t\t\t\t\tif (whens.includes(true)) {\n\t\t\t\t\t\treturn { [ctx.targetEntity.primary]: { isNull: false } }\n\t\t\t\t\t}\n\t\t\t\t\tconst predicates = (whens as WhenDefinition[]).map(it =>\n\t\t\t\t\t\tEntityPredicatesResolver.resolvePredicate(model, ctx.targetEntity, it, rolePermissionsByEntity),\n\t\t\t\t\t)\n\t\t\t\t\tif (predicates.length > 1) {\n\t\t\t\t\t\treturn { or: predicates }\n\t\t\t\t\t}\n\t\t\t\t\treturn predicates[0]\n\t\t\t\t}\n\t\t\t\treturn ctx.value\n\t\t\t},\n\t\t})\n\t}\n\n\tprivate static getMatchingWhens(\n\t\tpermissions: AllowDefinition<any>[],\n\t\toperation: 'delete' | 'read' | 'update' | 'create',\n\t\tfield: string,\n\t\tisPrimary: boolean,\n\t) {\n\t\treturn permissions\n\t\t\t.filter(it => {\n\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\treturn !!it.delete\n\t\t\t\t}\n\t\t\t\tconst op = it[operation]\n\t\t\t\tif (!op) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (op === true) {\n\t\t\t\t\treturn !isPrimary\n\t\t\t\t}\n\t\t\t\treturn op.includes(field)\n\t\t\t})\n\t\t\t.map(it => it.when ?? true)\n\t}\n}\n\nconst upperCaseFirst = (string: string) => `${string.charAt(0).toUpperCase()}${string.substring(1)}`\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stores.cjs","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/stores.ts"],"sourcesContent":["import { createMetadataStore } from '../../../utils/MetadataStore'\nimport { Role } from '../roles'\nimport { AllowDefinition } from '../permissions'\n\nexport const allowCustomPrimaryStore = createMetadataStore<Role[]>([])\nexport const allowCustomPrimaryAllRolesStore = createMetadataStore<boolean>(false)\n\nexport type EntityPermissionsDefinition =\n\t& AllowDefinition<any>\n\t& {\n\t\trole: Role<string>\n\t}\nexport const allowDefinitionsStore = createMetadataStore<EntityPermissionsDefinition[]>([])\n"],"names":["createMetadataStore"],"mappings":";;;AAIa,MAAA,0BAA0BA,cAA4B,oBAAA,EAAE;AACxD,MAAA,kCAAkCA,kCAA6B,KAAK;AAOpE,MAAA,wBAAwBA,cAAmD,oBAAA,CAAE,CAAA;;;;"}
1
+ {"version":3,"file":"stores.cjs","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/stores.ts"],"sourcesContent":["import { createMetadataStore } from '../../../utils/MetadataStore'\nimport { Role } from '../roles'\nimport { AllowDefinition } from '../permissions'\n\nexport const allowCustomPrimaryStore = createMetadataStore<Role[]>([])\nexport const allowCustomPrimaryAllRolesStore = createMetadataStore<boolean>(false)\n\nexport type EntityPermissionsDefinition =\n\t& AllowDefinition<any>\n\t& {\n\t\trole: Role<string>\n\t}\nexport const allowDefinitionsStore = createMetadataStore<EntityPermissionsDefinition[]>([])\n"],"names":["createMetadataStore"],"mappings":";;;AAIa,MAAA,0BAA0BA,cAA4B,oBAAA,CAAE,CAAA;AACxD,MAAA,kCAAkCA,kCAA6B,KAAK;AAOpE,MAAA,wBAAwBA,cAAmD,oBAAA,CAAE,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"stores.js","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/stores.ts"],"sourcesContent":["import { createMetadataStore } from '../../../utils/MetadataStore'\nimport { Role } from '../roles'\nimport { AllowDefinition } from '../permissions'\n\nexport const allowCustomPrimaryStore = createMetadataStore<Role[]>([])\nexport const allowCustomPrimaryAllRolesStore = createMetadataStore<boolean>(false)\n\nexport type EntityPermissionsDefinition =\n\t& AllowDefinition<any>\n\t& {\n\t\trole: Role<string>\n\t}\nexport const allowDefinitionsStore = createMetadataStore<EntityPermissionsDefinition[]>([])\n"],"names":[],"mappings":";AAIa,MAAA,0BAA0B,oBAA4B,EAAE;AACxD,MAAA,kCAAkC,oBAA6B,KAAK;AAOpE,MAAA,wBAAwB,oBAAmD,CAAE,CAAA;"}
1
+ {"version":3,"file":"stores.js","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/stores.ts"],"sourcesContent":["import { createMetadataStore } from '../../../utils/MetadataStore'\nimport { Role } from '../roles'\nimport { AllowDefinition } from '../permissions'\n\nexport const allowCustomPrimaryStore = createMetadataStore<Role[]>([])\nexport const allowCustomPrimaryAllRolesStore = createMetadataStore<boolean>(false)\n\nexport type EntityPermissionsDefinition =\n\t& AllowDefinition<any>\n\t& {\n\t\trole: Role<string>\n\t}\nexport const allowDefinitionsStore = createMetadataStore<EntityPermissionsDefinition[]>([])\n"],"names":[],"mappings":";AAIa,MAAA,0BAA0B,oBAA4B,CAAE,CAAA;AACxD,MAAA,kCAAkC,oBAA6B,KAAK;AAOpE,MAAA,wBAAwB,oBAAmD,CAAE,CAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/permissions.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\nimport { Role } from './roles'\nimport { VariableDefinition } from './variables'\nimport { PredicateEvaluationReference } from './references'\nimport { allowDefinitionsStore } from './internal/stores'\nimport { DecoratorFunction, EntityConstructor } from '../../utils'\n\nexport type PredicateExtra = PredicateEvaluationReference | VariableDefinition\nexport type WhenDefinition = Acl.PredicateDefinition<PredicateExtra>\n\nexport interface AllowDefinition<E> {\n\twhen?: WhenDefinition\n\tname?: string\n\tcreate?: true | ('id' | keyof E)[]\n\tupdate?: true | ('id' | keyof E)[]\n\tread?: true | ('id' | keyof E)[]\n\tdelete?: true\n}\n\nexport const allow = <E, R extends Role<string>>(role: R | R[], args: AllowDefinition<E>): DecoratorFunction<E> => {\n\treturn (entity: EntityConstructor<E>) => {\n\t\t(Array.isArray(role) ? role : [role]).forEach(role => {\n\t\t\tallowDefinitionsStore.update(entity, val => [...val, { ...args, role }])\n\t\t})\n\t}\n}\n\n\n\n"],"names":["role","allowDefinitionsStore"],"mappings":";;;AAmBa,MAAA,QAAQ,CAA4B,MAAe,SAAmD;AAClH,SAAO,CAAC,WAAiC;AACvC,KAAA,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAAA,UAAQ;AACrDC,aAAAA,sBAAsB,OAAO,QAAQ,CAAO,QAAA,CAAC,GAAG,KAAK,EAAE,GAAG,MAAM,MAAAD,MAAK,CAAC,CAAC;AAAA,IAAA,CACvE;AAAA,EAAA;AAEH;;"}
1
+ {"version":3,"file":"permissions.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/permissions.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\nimport { Role } from './roles'\nimport { VariableDefinition } from './variables'\nimport { PredicateEvaluationReference } from './references'\nimport { allowDefinitionsStore } from './internal/stores'\nimport { DecoratorFunction, EntityConstructor } from '../../utils'\n\nexport type PredicateExtra = PredicateEvaluationReference | VariableDefinition\nexport type WhenDefinition = Acl.PredicateDefinition<PredicateExtra>\n\nexport interface AllowDefinition<E> {\n\twhen?: WhenDefinition\n\tname?: string\n\tcreate?: true | ('id' | keyof E)[]\n\tupdate?: true | ('id' | keyof E)[]\n\tread?: true | ('id' | keyof E)[]\n\tdelete?: true\n}\n\nexport const allow = <E, R extends Role<string>>(role: R | R[], args: AllowDefinition<E>): DecoratorFunction<E> => {\n\treturn (entity: EntityConstructor<E>) => {\n\t\t(Array.isArray(role) ? role : [role]).forEach(role => {\n\t\t\tallowDefinitionsStore.update(entity, val => [...val, { ...args, role }])\n\t\t})\n\t}\n}\n\n\n\n"],"names":["role","allowDefinitionsStore"],"mappings":";;;AAmBa,MAAA,QAAQ,CAA4B,MAAe,SAAmD;AAClH,SAAO,CAAC,WAAiC;AACvC,KAAA,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAAA,UAAQ;AACrDC,aAAAA,sBAAsB,OAAO,QAAQ,CAAO,QAAA,CAAC,GAAG,KAAK,EAAE,GAAG,MAAM,MAAAD,MAAM,CAAA,CAAC;AAAA,IAAA,CACvE;AAAA,EACF;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/permissions.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\nimport { Role } from './roles'\nimport { VariableDefinition } from './variables'\nimport { PredicateEvaluationReference } from './references'\nimport { allowDefinitionsStore } from './internal/stores'\nimport { DecoratorFunction, EntityConstructor } from '../../utils'\n\nexport type PredicateExtra = PredicateEvaluationReference | VariableDefinition\nexport type WhenDefinition = Acl.PredicateDefinition<PredicateExtra>\n\nexport interface AllowDefinition<E> {\n\twhen?: WhenDefinition\n\tname?: string\n\tcreate?: true | ('id' | keyof E)[]\n\tupdate?: true | ('id' | keyof E)[]\n\tread?: true | ('id' | keyof E)[]\n\tdelete?: true\n}\n\nexport const allow = <E, R extends Role<string>>(role: R | R[], args: AllowDefinition<E>): DecoratorFunction<E> => {\n\treturn (entity: EntityConstructor<E>) => {\n\t\t(Array.isArray(role) ? role : [role]).forEach(role => {\n\t\t\tallowDefinitionsStore.update(entity, val => [...val, { ...args, role }])\n\t\t})\n\t}\n}\n\n\n\n"],"names":["role"],"mappings":";AAmBa,MAAA,QAAQ,CAA4B,MAAe,SAAmD;AAClH,SAAO,CAAC,WAAiC;AACvC,KAAA,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAAA,UAAQ;AACrD,4BAAsB,OAAO,QAAQ,CAAO,QAAA,CAAC,GAAG,KAAK,EAAE,GAAG,MAAM,MAAAA,MAAK,CAAC,CAAC;AAAA,IAAA,CACvE;AAAA,EAAA;AAEH;"}
1
+ {"version":3,"file":"permissions.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/permissions.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\nimport { Role } from './roles'\nimport { VariableDefinition } from './variables'\nimport { PredicateEvaluationReference } from './references'\nimport { allowDefinitionsStore } from './internal/stores'\nimport { DecoratorFunction, EntityConstructor } from '../../utils'\n\nexport type PredicateExtra = PredicateEvaluationReference | VariableDefinition\nexport type WhenDefinition = Acl.PredicateDefinition<PredicateExtra>\n\nexport interface AllowDefinition<E> {\n\twhen?: WhenDefinition\n\tname?: string\n\tcreate?: true | ('id' | keyof E)[]\n\tupdate?: true | ('id' | keyof E)[]\n\tread?: true | ('id' | keyof E)[]\n\tdelete?: true\n}\n\nexport const allow = <E, R extends Role<string>>(role: R | R[], args: AllowDefinition<E>): DecoratorFunction<E> => {\n\treturn (entity: EntityConstructor<E>) => {\n\t\t(Array.isArray(role) ? role : [role]).forEach(role => {\n\t\t\tallowDefinitionsStore.update(entity, val => [...val, { ...args, role }])\n\t\t})\n\t}\n}\n\n\n\n"],"names":["role"],"mappings":";AAmBa,MAAA,QAAQ,CAA4B,MAAe,SAAmD;AAClH,SAAO,CAAC,WAAiC;AACvC,KAAA,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAAA,UAAQ;AACrD,4BAAsB,OAAO,QAAQ,CAAO,QAAA,CAAC,GAAG,KAAK,EAAE,GAAG,MAAM,MAAAA,MAAM,CAAA,CAAC;AAAA,IAAA,CACvE;AAAA,EACF;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"references.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/references.ts"],"sourcesContent":["export class PredicateEvaluationReference {\n\tconstructor(\n\t\tpublic readonly operation: 'update' | 'delete' | 'create' | 'read',\n\t\tpublic readonly field?: string,\n\t) {\n\t}\n}\n\nexport const canUpdate = (field: string) => {\n\treturn new PredicateEvaluationReference('update', field)\n}\n\nexport const canRead = (field: string) => {\n\treturn new PredicateEvaluationReference('read', field)\n}\nexport const canCreate = (field: string) => {\n\treturn new PredicateEvaluationReference('create', field)\n}\nexport const canDelete = () => {\n\treturn new PredicateEvaluationReference('delete')\n}\n"],"names":[],"mappings":";;AAAO,MAAM,6BAA6B;AAAA,EACzC,YACiB,WACA,OACf;AAFe,SAAA,YAAA;AACA,SAAA,QAAA;AAAA,EAEjB;AACD;AAEa,MAAA,YAAY,CAAC,UAAkB;AACpC,SAAA,IAAI,6BAA6B,UAAU,KAAK;AACxD;AAEa,MAAA,UAAU,CAAC,UAAkB;AAClC,SAAA,IAAI,6BAA6B,QAAQ,KAAK;AACtD;AACa,MAAA,YAAY,CAAC,UAAkB;AACpC,SAAA,IAAI,6BAA6B,UAAU,KAAK;AACxD;AACO,MAAM,YAAY,MAAM;AACvB,SAAA,IAAI,6BAA6B,QAAQ;AACjD;;;;;;"}
1
+ {"version":3,"file":"references.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/references.ts"],"sourcesContent":["export class PredicateEvaluationReference {\n\tconstructor(\n\t\tpublic readonly operation: 'update' | 'delete' | 'create' | 'read',\n\t\tpublic readonly field?: string,\n\t) {\n\t}\n}\n\nexport const canUpdate = (field: string) => {\n\treturn new PredicateEvaluationReference('update', field)\n}\n\nexport const canRead = (field: string) => {\n\treturn new PredicateEvaluationReference('read', field)\n}\nexport const canCreate = (field: string) => {\n\treturn new PredicateEvaluationReference('create', field)\n}\nexport const canDelete = () => {\n\treturn new PredicateEvaluationReference('delete')\n}\n"],"names":[],"mappings":";;AAAO,MAAM,6BAA6B;AAAA,EACzC,YACiB,WACA,OACf;AAFe,SAAA,YAAA;AACA,SAAA,QAAA;AAAA,EAAA;AAGlB;AAEa,MAAA,YAAY,CAAC,UAAkB;AACpC,SAAA,IAAI,6BAA6B,UAAU,KAAK;AACxD;AAEa,MAAA,UAAU,CAAC,UAAkB;AAClC,SAAA,IAAI,6BAA6B,QAAQ,KAAK;AACtD;AACa,MAAA,YAAY,CAAC,UAAkB;AACpC,SAAA,IAAI,6BAA6B,UAAU,KAAK;AACxD;AACO,MAAM,YAAY,MAAM;AACvB,SAAA,IAAI,6BAA6B,QAAQ;AACjD;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"references.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/references.ts"],"sourcesContent":["export class PredicateEvaluationReference {\n\tconstructor(\n\t\tpublic readonly operation: 'update' | 'delete' | 'create' | 'read',\n\t\tpublic readonly field?: string,\n\t) {\n\t}\n}\n\nexport const canUpdate = (field: string) => {\n\treturn new PredicateEvaluationReference('update', field)\n}\n\nexport const canRead = (field: string) => {\n\treturn new PredicateEvaluationReference('read', field)\n}\nexport const canCreate = (field: string) => {\n\treturn new PredicateEvaluationReference('create', field)\n}\nexport const canDelete = () => {\n\treturn new PredicateEvaluationReference('delete')\n}\n"],"names":[],"mappings":"AAAO,MAAM,6BAA6B;AAAA,EACzC,YACiB,WACA,OACf;AAFe,SAAA,YAAA;AACA,SAAA,QAAA;AAAA,EAEjB;AACD;AAEa,MAAA,YAAY,CAAC,UAAkB;AACpC,SAAA,IAAI,6BAA6B,UAAU,KAAK;AACxD;AAEa,MAAA,UAAU,CAAC,UAAkB;AAClC,SAAA,IAAI,6BAA6B,QAAQ,KAAK;AACtD;AACa,MAAA,YAAY,CAAC,UAAkB;AACpC,SAAA,IAAI,6BAA6B,UAAU,KAAK;AACxD;AACO,MAAM,YAAY,MAAM;AACvB,SAAA,IAAI,6BAA6B,QAAQ;AACjD;"}
1
+ {"version":3,"file":"references.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/references.ts"],"sourcesContent":["export class PredicateEvaluationReference {\n\tconstructor(\n\t\tpublic readonly operation: 'update' | 'delete' | 'create' | 'read',\n\t\tpublic readonly field?: string,\n\t) {\n\t}\n}\n\nexport const canUpdate = (field: string) => {\n\treturn new PredicateEvaluationReference('update', field)\n}\n\nexport const canRead = (field: string) => {\n\treturn new PredicateEvaluationReference('read', field)\n}\nexport const canCreate = (field: string) => {\n\treturn new PredicateEvaluationReference('create', field)\n}\nexport const canDelete = () => {\n\treturn new PredicateEvaluationReference('delete')\n}\n"],"names":[],"mappings":"AAAO,MAAM,6BAA6B;AAAA,EACzC,YACiB,WACA,OACf;AAFe,SAAA,YAAA;AACA,SAAA,QAAA;AAAA,EAAA;AAGlB;AAEa,MAAA,YAAY,CAAC,UAAkB;AACpC,SAAA,IAAI,6BAA6B,UAAU,KAAK;AACxD;AAEa,MAAA,UAAU,CAAC,UAAkB;AAClC,SAAA,IAAI,6BAA6B,QAAQ,KAAK;AACtD;AACa,MAAA,YAAY,CAAC,UAAkB;AACpC,SAAA,IAAI,6BAA6B,UAAU,KAAK;AACxD;AACO,MAAM,YAAY,MAAM;AACvB,SAAA,IAAI,6BAA6B,QAAQ;AACjD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"roles.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/roles.ts"],"sourcesContent":["import { Acl, JSONValue } from '@contember/schema'\n\nexport type RoleOptions =\n\t& Omit<Acl.BaseRolePermissions, 'variables' | 'entities' | 'inherits'>\n\t& {\n\t\treadonly [key: string]: JSONValue\n\t}\n\nexport class Role<Name extends string = string> {\n\tpublic constructor(\n\t\tpublic readonly name: Name,\n\t\tpublic readonly options: RoleOptions,\n\t) {\n\t}\n}\n\nexport const createRole = <Name extends string>(name: Name, options: RoleOptions = {}): Role<Name> => {\n\treturn new Role(name, options)\n}\n"],"names":[],"mappings":";;AAQO,MAAM,KAAmC;AAAA,EACxC,YACU,MACA,SACf;AAFe,SAAA,OAAA;AACA,SAAA,UAAA;AAAA,EAEjB;AACD;AAEO,MAAM,aAAa,CAAsB,MAAY,UAAuB,OAAmB;AAC9F,SAAA,IAAI,KAAK,MAAM,OAAO;AAC9B;;;"}
1
+ {"version":3,"file":"roles.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/roles.ts"],"sourcesContent":["import { Acl, JSONValue } from '@contember/schema'\n\nexport type RoleOptions =\n\t& Omit<Acl.BaseRolePermissions, 'variables' | 'entities' | 'inherits'>\n\t& {\n\t\treadonly [key: string]: JSONValue\n\t}\n\nexport class Role<Name extends string = string> {\n\tpublic constructor(\n\t\tpublic readonly name: Name,\n\t\tpublic readonly options: RoleOptions,\n\t) {\n\t}\n}\n\nexport const createRole = <Name extends string>(name: Name, options: RoleOptions = {}): Role<Name> => {\n\treturn new Role(name, options)\n}\n"],"names":[],"mappings":";;AAQO,MAAM,KAAmC;AAAA,EACxC,YACU,MACA,SACf;AAFe,SAAA,OAAA;AACA,SAAA,UAAA;AAAA,EAAA;AAGlB;AAEO,MAAM,aAAa,CAAsB,MAAY,UAAuB,OAAmB;AAC9F,SAAA,IAAI,KAAK,MAAM,OAAO;AAC9B;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"roles.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/roles.ts"],"sourcesContent":["import { Acl, JSONValue } from '@contember/schema'\n\nexport type RoleOptions =\n\t& Omit<Acl.BaseRolePermissions, 'variables' | 'entities' | 'inherits'>\n\t& {\n\t\treadonly [key: string]: JSONValue\n\t}\n\nexport class Role<Name extends string = string> {\n\tpublic constructor(\n\t\tpublic readonly name: Name,\n\t\tpublic readonly options: RoleOptions,\n\t) {\n\t}\n}\n\nexport const createRole = <Name extends string>(name: Name, options: RoleOptions = {}): Role<Name> => {\n\treturn new Role(name, options)\n}\n"],"names":[],"mappings":"AAQO,MAAM,KAAmC;AAAA,EACxC,YACU,MACA,SACf;AAFe,SAAA,OAAA;AACA,SAAA,UAAA;AAAA,EAEjB;AACD;AAEO,MAAM,aAAa,CAAsB,MAAY,UAAuB,OAAmB;AAC9F,SAAA,IAAI,KAAK,MAAM,OAAO;AAC9B;"}
1
+ {"version":3,"file":"roles.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/roles.ts"],"sourcesContent":["import { Acl, JSONValue } from '@contember/schema'\n\nexport type RoleOptions =\n\t& Omit<Acl.BaseRolePermissions, 'variables' | 'entities' | 'inherits'>\n\t& {\n\t\treadonly [key: string]: JSONValue\n\t}\n\nexport class Role<Name extends string = string> {\n\tpublic constructor(\n\t\tpublic readonly name: Name,\n\t\tpublic readonly options: RoleOptions,\n\t) {\n\t}\n}\n\nexport const createRole = <Name extends string>(name: Name, options: RoleOptions = {}): Role<Name> => {\n\treturn new Role(name, options)\n}\n"],"names":[],"mappings":"AAQO,MAAM,KAAmC;AAAA,EACxC,YACU,MACA,SACf;AAFe,SAAA,OAAA;AACA,SAAA,UAAA;AAAA,EAAA;AAGlB;AAEO,MAAM,aAAa,CAAsB,MAAY,UAAuB,OAAmB;AAC9F,SAAA,IAAI,KAAK,MAAM,OAAO;AAC9B;"}
@@ -1 +1 @@
1
- {"version":3,"file":"variables.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/variables.ts"],"sourcesContent":["import { Role } from './roles'\nimport { Acl, Input } from '@contember/schema'\n\nexport class VariableDefinition<Name extends string = string, Roles extends Role<string> = Role<string>, Variable extends Acl.Variable = Acl.Variable> {\n\tconstructor(\n\t\tpublic readonly name: Name,\n\t\tpublic readonly roles: Roles[],\n\t\tpublic readonly variable: Acl.Variable,\n\t) {\n\t}\n}\n\nexport const createEntityVariable = <R extends Role<string>, Name extends string>(\n\tname: Name,\n\tentityName: string,\n\troles: R | R[],\n\tfallback?: Input.Condition,\n): VariableDefinition<Name, R, Acl.EntityVariable> => {\n\treturn new VariableDefinition(\n\t\tname,\n\t\tArray.isArray(roles) ? roles : [roles],\n\t\t{ type: Acl.VariableType.entity, entityName, ...(fallback ? { fallback } : {}) },\n\t)\n}\n\nexport const createPredefinedVariable = <R extends Role<string>, Name extends string>(\n\tname: Name,\n\tvalue: Acl.PredefinedVariableValue,\n\troles: R | R[],\n\tfallback?: Input.Condition,\n): VariableDefinition<Name, R, Acl.EntityVariable> => {\n\treturn new VariableDefinition(\n\t\tname,\n\t\tArray.isArray(roles) ? roles : [roles],\n\t\t{ type: Acl.VariableType.predefined, value },\n\t)\n}\n\nexport const createConditionVariable = <R extends Role<string>, Name extends string>(\n\tname: Name,\n\troles: R | R[],\n\tfallback?: Input.Condition,\n): VariableDefinition<Name, R, Acl.ConditionVariable> => {\n\treturn new VariableDefinition(\n\t\tname,\n\t\tArray.isArray(roles) ? roles : [roles],\n\t\t{ type: Acl.VariableType.condition, ...(fallback ? { fallback } : {}) },\n\t)\n}\n"],"names":["Acl"],"mappings":";;;AAGO,MAAM,mBAA0I;AAAA,EACtJ,YACiB,MACA,OACA,UACf;AAHe,SAAA,OAAA;AACA,SAAA,QAAA;AACA,SAAA,WAAA;AAAA,EAEjB;AACD;AAEO,MAAM,uBAAuB,CACnC,MACA,YACA,OACA,aACqD;AACrD,SAAO,IAAI;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACrC,EAAE,MAAMA,WAAI,aAAa,QAAQ,YAAY,GAAI,WAAW,EAAE,SAAa,IAAA,GAAI;AAAA,EAAA;AAEjF;AAEO,MAAM,2BAA2B,CACvC,MACA,OACA,OACA,aACqD;AACrD,SAAO,IAAI;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACrC,EAAE,MAAMA,OAAI,IAAA,aAAa,YAAY,MAAM;AAAA,EAAA;AAE7C;AAEO,MAAM,0BAA0B,CACtC,MACA,OACA,aACwD;AACxD,SAAO,IAAI;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACrC,EAAE,MAAMA,OAAA,IAAI,aAAa,WAAW,GAAI,WAAW,EAAE,SAAa,IAAA,GAAI;AAAA,EAAA;AAExE;;;;;"}
1
+ {"version":3,"file":"variables.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/variables.ts"],"sourcesContent":["import { Role } from './roles'\nimport { Acl, Input } from '@contember/schema'\n\nexport class VariableDefinition<Name extends string = string, Roles extends Role<string> = Role<string>, Variable extends Acl.Variable = Acl.Variable> {\n\tconstructor(\n\t\tpublic readonly name: Name,\n\t\tpublic readonly roles: Roles[],\n\t\tpublic readonly variable: Acl.Variable,\n\t) {\n\t}\n}\n\nexport const createEntityVariable = <R extends Role<string>, Name extends string>(\n\tname: Name,\n\tentityName: string,\n\troles: R | R[],\n\tfallback?: Input.Condition,\n): VariableDefinition<Name, R, Acl.EntityVariable> => {\n\treturn new VariableDefinition(\n\t\tname,\n\t\tArray.isArray(roles) ? roles : [roles],\n\t\t{ type: Acl.VariableType.entity, entityName, ...(fallback ? { fallback } : {}) },\n\t)\n}\n\nexport const createPredefinedVariable = <R extends Role<string>, Name extends string>(\n\tname: Name,\n\tvalue: Acl.PredefinedVariableValue,\n\troles: R | R[],\n\tfallback?: Input.Condition,\n): VariableDefinition<Name, R, Acl.EntityVariable> => {\n\treturn new VariableDefinition(\n\t\tname,\n\t\tArray.isArray(roles) ? roles : [roles],\n\t\t{ type: Acl.VariableType.predefined, value },\n\t)\n}\n\nexport const createConditionVariable = <R extends Role<string>, Name extends string>(\n\tname: Name,\n\troles: R | R[],\n\tfallback?: Input.Condition,\n): VariableDefinition<Name, R, Acl.ConditionVariable> => {\n\treturn new VariableDefinition(\n\t\tname,\n\t\tArray.isArray(roles) ? roles : [roles],\n\t\t{ type: Acl.VariableType.condition, ...(fallback ? { fallback } : {}) },\n\t)\n}\n"],"names":["Acl"],"mappings":";;;AAGO,MAAM,mBAA0I;AAAA,EACtJ,YACiB,MACA,OACA,UACf;AAHe,SAAA,OAAA;AACA,SAAA,QAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAGlB;AAEO,MAAM,uBAAuB,CACnC,MACA,YACA,OACA,aACqD;AACrD,SAAO,IAAI;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACrC,EAAE,MAAMA,WAAI,aAAa,QAAQ,YAAY,GAAI,WAAW,EAAE,SAAA,IAAa,CAAI,EAAA;AAAA,EAChF;AACD;AAEO,MAAM,2BAA2B,CACvC,MACA,OACA,OACA,aACqD;AACrD,SAAO,IAAI;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACrC,EAAE,MAAMA,OAAAA,IAAI,aAAa,YAAY,MAAM;AAAA,EAC5C;AACD;AAEO,MAAM,0BAA0B,CACtC,MACA,OACA,aACwD;AACxD,SAAO,IAAI;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACrC,EAAE,MAAMA,OAAA,IAAI,aAAa,WAAW,GAAI,WAAW,EAAE,SAAA,IAAa,CAAI,EAAA;AAAA,EACvE;AACD;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"variables.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/variables.ts"],"sourcesContent":["import { Role } from './roles'\nimport { Acl, Input } from '@contember/schema'\n\nexport class VariableDefinition<Name extends string = string, Roles extends Role<string> = Role<string>, Variable extends Acl.Variable = Acl.Variable> {\n\tconstructor(\n\t\tpublic readonly name: Name,\n\t\tpublic readonly roles: Roles[],\n\t\tpublic readonly variable: Acl.Variable,\n\t) {\n\t}\n}\n\nexport const createEntityVariable = <R extends Role<string>, Name extends string>(\n\tname: Name,\n\tentityName: string,\n\troles: R | R[],\n\tfallback?: Input.Condition,\n): VariableDefinition<Name, R, Acl.EntityVariable> => {\n\treturn new VariableDefinition(\n\t\tname,\n\t\tArray.isArray(roles) ? roles : [roles],\n\t\t{ type: Acl.VariableType.entity, entityName, ...(fallback ? { fallback } : {}) },\n\t)\n}\n\nexport const createPredefinedVariable = <R extends Role<string>, Name extends string>(\n\tname: Name,\n\tvalue: Acl.PredefinedVariableValue,\n\troles: R | R[],\n\tfallback?: Input.Condition,\n): VariableDefinition<Name, R, Acl.EntityVariable> => {\n\treturn new VariableDefinition(\n\t\tname,\n\t\tArray.isArray(roles) ? roles : [roles],\n\t\t{ type: Acl.VariableType.predefined, value },\n\t)\n}\n\nexport const createConditionVariable = <R extends Role<string>, Name extends string>(\n\tname: Name,\n\troles: R | R[],\n\tfallback?: Input.Condition,\n): VariableDefinition<Name, R, Acl.ConditionVariable> => {\n\treturn new VariableDefinition(\n\t\tname,\n\t\tArray.isArray(roles) ? roles : [roles],\n\t\t{ type: Acl.VariableType.condition, ...(fallback ? { fallback } : {}) },\n\t)\n}\n"],"names":[],"mappings":";AAGO,MAAM,mBAA0I;AAAA,EACtJ,YACiB,MACA,OACA,UACf;AAHe,SAAA,OAAA;AACA,SAAA,QAAA;AACA,SAAA,WAAA;AAAA,EAEjB;AACD;AAEO,MAAM,uBAAuB,CACnC,MACA,YACA,OACA,aACqD;AACrD,SAAO,IAAI;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACrC,EAAE,MAAM,IAAI,aAAa,QAAQ,YAAY,GAAI,WAAW,EAAE,SAAa,IAAA,GAAI;AAAA,EAAA;AAEjF;AAEO,MAAM,2BAA2B,CACvC,MACA,OACA,OACA,aACqD;AACrD,SAAO,IAAI;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACrC,EAAE,MAAM,IAAI,aAAa,YAAY,MAAM;AAAA,EAAA;AAE7C;AAEO,MAAM,0BAA0B,CACtC,MACA,OACA,aACwD;AACxD,SAAO,IAAI;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACrC,EAAE,MAAM,IAAI,aAAa,WAAW,GAAI,WAAW,EAAE,SAAa,IAAA,GAAI;AAAA,EAAA;AAExE;"}
1
+ {"version":3,"file":"variables.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/variables.ts"],"sourcesContent":["import { Role } from './roles'\nimport { Acl, Input } from '@contember/schema'\n\nexport class VariableDefinition<Name extends string = string, Roles extends Role<string> = Role<string>, Variable extends Acl.Variable = Acl.Variable> {\n\tconstructor(\n\t\tpublic readonly name: Name,\n\t\tpublic readonly roles: Roles[],\n\t\tpublic readonly variable: Acl.Variable,\n\t) {\n\t}\n}\n\nexport const createEntityVariable = <R extends Role<string>, Name extends string>(\n\tname: Name,\n\tentityName: string,\n\troles: R | R[],\n\tfallback?: Input.Condition,\n): VariableDefinition<Name, R, Acl.EntityVariable> => {\n\treturn new VariableDefinition(\n\t\tname,\n\t\tArray.isArray(roles) ? roles : [roles],\n\t\t{ type: Acl.VariableType.entity, entityName, ...(fallback ? { fallback } : {}) },\n\t)\n}\n\nexport const createPredefinedVariable = <R extends Role<string>, Name extends string>(\n\tname: Name,\n\tvalue: Acl.PredefinedVariableValue,\n\troles: R | R[],\n\tfallback?: Input.Condition,\n): VariableDefinition<Name, R, Acl.EntityVariable> => {\n\treturn new VariableDefinition(\n\t\tname,\n\t\tArray.isArray(roles) ? roles : [roles],\n\t\t{ type: Acl.VariableType.predefined, value },\n\t)\n}\n\nexport const createConditionVariable = <R extends Role<string>, Name extends string>(\n\tname: Name,\n\troles: R | R[],\n\tfallback?: Input.Condition,\n): VariableDefinition<Name, R, Acl.ConditionVariable> => {\n\treturn new VariableDefinition(\n\t\tname,\n\t\tArray.isArray(roles) ? roles : [roles],\n\t\t{ type: Acl.VariableType.condition, ...(fallback ? { fallback } : {}) },\n\t)\n}\n"],"names":[],"mappings":";AAGO,MAAM,mBAA0I;AAAA,EACtJ,YACiB,MACA,OACA,UACf;AAHe,SAAA,OAAA;AACA,SAAA,QAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAGlB;AAEO,MAAM,uBAAuB,CACnC,MACA,YACA,OACA,aACqD;AACrD,SAAO,IAAI;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACrC,EAAE,MAAM,IAAI,aAAa,QAAQ,YAAY,GAAI,WAAW,EAAE,SAAA,IAAa,CAAI,EAAA;AAAA,EAChF;AACD;AAEO,MAAM,2BAA2B,CACvC,MACA,OACA,OACA,aACqD;AACrD,SAAO,IAAI;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACrC,EAAE,MAAM,IAAI,aAAa,YAAY,MAAM;AAAA,EAC5C;AACD;AAEO,MAAM,0BAA0B,CACtC,MACA,OACA,aACwD;AACxD,SAAO,IAAI;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACrC,EAAE,MAAM,IAAI,aAAa,WAAW,GAAI,WAAW,EAAE,SAAA,IAAa,CAAI,EAAA;AAAA,EACvE;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../../packages/schema-definition/src/actions/definition/index.ts"],"sourcesContent":["import { Actions } from '@contember/schema'\nimport { ActionsFactory } from './internal/ActionsFactory'\n\nexport * from './triggers'\nexport * from './targets'\n\n\nexport const createActions = (\n\texportedDefinitions: Record<string, any>,\n): Actions.Schema => {\n\tconst factory = new ActionsFactory()\n\treturn factory.create(exportedDefinitions)\n}\n"],"names":["ActionsFactory"],"mappings":";;;;;AAOa,MAAA,gBAAgB,CAC5B,wBACoB;AACd,QAAA,UAAU,IAAIA,eAAAA;AACb,SAAA,QAAQ,OAAO,mBAAmB;AAC1C;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../../packages/schema-definition/src/actions/definition/index.ts"],"sourcesContent":["import { Actions } from '@contember/schema'\nimport { ActionsFactory } from './internal/ActionsFactory'\n\nexport * from './triggers'\nexport * from './targets'\n\n\nexport const createActions = (\n\texportedDefinitions: Record<string, any>,\n): Actions.Schema => {\n\tconst factory = new ActionsFactory()\n\treturn factory.create(exportedDefinitions)\n}\n"],"names":["ActionsFactory"],"mappings":";;;;;AAOa,MAAA,gBAAgB,CAC5B,wBACoB;AACd,QAAA,UAAU,IAAIA,8BAAe;AAC5B,SAAA,QAAQ,OAAO,mBAAmB;AAC1C;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../packages/schema-definition/src/actions/definition/index.ts"],"sourcesContent":["import { Actions } from '@contember/schema'\nimport { ActionsFactory } from './internal/ActionsFactory'\n\nexport * from './triggers'\nexport * from './targets'\n\n\nexport const createActions = (\n\texportedDefinitions: Record<string, any>,\n): Actions.Schema => {\n\tconst factory = new ActionsFactory()\n\treturn factory.create(exportedDefinitions)\n}\n"],"names":[],"mappings":";;;AAOa,MAAA,gBAAgB,CAC5B,wBACoB;AACd,QAAA,UAAU,IAAI;AACb,SAAA,QAAQ,OAAO,mBAAmB;AAC1C;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../packages/schema-definition/src/actions/definition/index.ts"],"sourcesContent":["import { Actions } from '@contember/schema'\nimport { ActionsFactory } from './internal/ActionsFactory'\n\nexport * from './triggers'\nexport * from './targets'\n\n\nexport const createActions = (\n\texportedDefinitions: Record<string, any>,\n): Actions.Schema => {\n\tconst factory = new ActionsFactory()\n\treturn factory.create(exportedDefinitions)\n}\n"],"names":[],"mappings":";;;AAOa,MAAA,gBAAgB,CAC5B,wBACoB;AACd,QAAA,UAAU,IAAI,eAAe;AAC5B,SAAA,QAAQ,OAAO,mBAAmB;AAC1C;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActionsFactory.cjs","sources":["../../../../../../../packages/schema-definition/src/actions/definition/internal/ActionsFactory.ts"],"sourcesContent":["import { assertNever, filterEntityDefinition } from '../../../utils'\nimport { Actions } from '@contember/schema'\nimport { triggersStore } from './store'\nimport { BasicTriggerDefinition, TargetDefinition, WatchTriggerDefinition } from '../triggers'\nimport { ActionsTarget } from '../targets'\nimport { Kind, parse, SelectionNode, ValueNode } from 'graphql'\n\nexport class ActionsFactory {\n\tconstructor(\n\t) {\n\t}\n\n\tpublic create(\n\t\texportedDefinitions: Record<string, any>,\n\t): Actions.Schema {\n\t\tconst entityLikeDefinition = filterEntityDefinition(exportedDefinitions)\n\n\t\tconst targetsRegistry = new ActionsTargetRegistry()\n\t\tfor (const [exportedAs, def] of Object.entries(exportedDefinitions)) {\n\t\t\tif (!(def instanceof ActionsTarget)) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst name = def.name ?? exportedAs\n\t\t\ttargetsRegistry.register(name, def.definition)\n\t\t}\n\n\t\tconst triggersDef = entityLikeDefinition.flatMap(([, entity]) => triggersStore.get(entity).map(it => ({\n\t\t\t...it,\n\t\t\tentity,\n\t\t})))\n\n\t\tconst triggerNames = triggersDef.map(it => it.definition.name).filter((it): it is string => !!it)\n\t\ttriggerNames.forEach((it, index, arr) => {\n\t\t\tif (arr.indexOf(it) !== index) {\n\t\t\t\tthrow `Duplicate trigger name ${it}.`\n\t\t\t}\n\t\t})\n\n\t\tconst triggers: Record<string, Actions.AnyTrigger> = {}\n\t\tfor (const { definition, entity, type } of triggersDef) {\n\t\t\tconst name = definition.name\n\t\t\tconst target = this.resolveTarget(name, definition, targetsRegistry)\n\t\t\tlet trigger: Actions.AnyTrigger\n\t\t\tif (type === 'basic') {\n\t\t\t\ttrigger = {\n\t\t\t\t\ttarget,\n\t\t\t\t\t...this.createBasicTrigger(name, entity.name, definition),\n\t\t\t\t}\n\t\t\t} else if (type === 'watch') {\n\t\t\t\ttrigger = {\n\t\t\t\t\ttarget,\n\t\t\t\t\t...this.createWatchTrigger(name, entity.name, definition),\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tassertNever(type)\n\t\t\t}\n\t\t\ttriggers[name] = trigger\n\t\t}\n\n\n\t\treturn { triggers, targets: targetsRegistry.getTargets() }\n\t}\n\n\tprivate resolveTarget(triggerName: string, targetDefinition: TargetDefinition, targetRegistry: ActionsTargetRegistry): string {\n\t\tconst generatedName = `${triggerName}_target`\n\t\tif ('target' in targetDefinition) {\n\t\t\tif (targetDefinition.target instanceof ActionsTarget) {\n\t\t\t\tconst registeredName = targetRegistry.getName(targetDefinition.target.definition)\n\t\t\t\tif (!registeredName) {\n\t\t\t\t\tthrow `Target of ${triggerName} trigger is not registered. Have you exported it?`\n\t\t\t\t}\n\t\t\t\treturn registeredName\n\t\t\t} else {\n\t\t\t\tconst { name, ...def } = targetDefinition.target\n\t\t\t\tconst resolvedName = name ?? generatedName\n\t\t\t\ttargetRegistry.register(resolvedName, { name: generatedName, ...def })\n\t\t\t\treturn resolvedName\n\t\t\t}\n\t\t} else if ('webhook' in targetDefinition) {\n\t\t\tif (typeof targetDefinition.webhook === 'string') {\n\t\t\t\ttargetRegistry.register(generatedName, {\n\t\t\t\t\ttype: 'webhook',\n\t\t\t\t\turl: targetDefinition.webhook,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\ttargetRegistry.register(generatedName, {\n\t\t\t\t\ttype: 'webhook',\n\t\t\t\t\t...targetDefinition.webhook,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn generatedName\n\t\t}\n\t\treturn assertNever(targetDefinition)\n\t}\n\n\tprivate createWatchTrigger(name: string, entity: string, trigger: WatchTriggerDefinition): Omit<Actions.WatchTrigger, 'target'> {\n\t\treturn {\n\t\t\ttype: 'watch',\n\t\t\tentity,\n\t\t\tname,\n\t\t\twatch: this.parseSelection(trigger.watch),\n\t\t\tselection: trigger.selection ? this.parseSelection(trigger.selection) : undefined,\n\t\t\tpriority: trigger.priority,\n\t\t}\n\t}\n\n\tprivate createBasicTrigger(name: string, entity: string, trigger: BasicTriggerDefinition): Omit<Actions.BasicTrigger, 'target'> {\n\t\treturn {\n\t\t\ttype: 'basic',\n\t\t\tentity,\n\t\t\tname,\n\t\t\tcreate: trigger.create ?? false,\n\t\t\tdelete: trigger.delete ?? false,\n\t\t\tupdate: trigger.update ?? false,\n\t\t\tselection: trigger.selection ? this.parseSelection(trigger.selection) : undefined,\n\t\t\tpriority: trigger.priority,\n\t\t}\n\t}\n\n\tprivate parseSelection(selection: Actions.SelectionNode | string): Actions.SelectionNode {\n\t\tif (typeof selection !== 'string') {\n\t\t\treturn selection\n\t\t}\n\t\tconst result = parse(`{\n\t\t\t${selection}\n\t\t}`)\n\t\tfor (const def of result.definitions) {\n\t\t\tif (def.kind === 'OperationDefinition') {\n\t\t\t\treturn this.processSelectionSet(def.selectionSet.selections)\n\t\t\t}\n\t\t}\n\t\tthrow new Error()\n\t}\n\n\tprivate processSelectionSet(selectionSet: readonly SelectionNode[]): Actions.SelectionNode {\n\t\treturn selectionSet.map(it => {\n\t\t\tif (it.kind !== 'Field') {\n\t\t\t\tthrow `${it.kind} is not supported.`\n\t\t\t}\n\t\t\tif (it.arguments?.length === 0 && it.selectionSet === undefined) {\n\t\t\t\treturn it.name.value\n\t\t\t}\n\t\t\tconst args = Object.fromEntries(it.arguments?.map(it => [it.name, parseArguments(it.value)]) ?? [])\n\t\t\treturn [it.name.value, args, it.selectionSet ? this.processSelectionSet(it.selectionSet.selections) : []]\n\t\t})\n\t}\n}\n\nclass ActionsTargetRegistry {\n\tprivate targets: Record<string, Actions.AnyTarget> = {}\n\tprivate targetsInverseMap = new Map<Omit<Actions.AnyTarget, 'name'>, string>()\n\n\tpublic register(name: string, target: Omit<Actions.AnyTarget, 'name'> & { name?: string }): void {\n\t\tif (this.targets[name]) {\n\t\t\tthrow `Duplicate trigger target name ${name}`\n\t\t}\n\t\tthis.targets[name] = { name, ...target }\n\t\tthis.targetsInverseMap.set(target, name)\n\t}\n\n\tpublic getName(target: Omit<Actions.AnyTarget, 'name'>): string | undefined {\n\t\treturn this.targetsInverseMap.get(target)\n\t}\n\n\tpublic getTargets() {\n\t\treturn this.targets\n\t}\n}\n\nconst parseArguments = (ast: ValueNode): any => {\n\tswitch (ast.kind) {\n\t\tcase Kind.STRING:\n\t\t\treturn ast.value\n\t\tcase Kind.BOOLEAN:\n\t\t\treturn ast.value\n\t\tcase Kind.FLOAT:\n\t\t\treturn parseFloat(ast.value)\n\t\tcase Kind.INT:\n\t\t\treturn Number(ast.value)\n\t\tcase Kind.LIST:\n\t\t\treturn ast.values.map(it => parseArguments(it))\n\t\tcase Kind.OBJECT:\n\t\t\treturn Object.fromEntries(ast.fields.map(it => [it.name.value, parseArguments(it.value)]))\n\t\tcase Kind.ENUM:\n\t\t\treturn ast.value\n\t\tcase Kind.NULL:\n\t\t\treturn null\n\t\tcase Kind.VARIABLE:\n\t\t\tthrow `Variables are not supported here.`\n\t}\n}\n"],"names":["filterEntityDefinition","ActionsTarget","triggersStore","assertNever","parse","it","Kind"],"mappings":";;;;;;;;;;;AAOO,MAAM,eAAe;AAAA,EAC3B,cACE;AAAA,EACF;AAAA,EAEO,OACN,qBACiB;AACX,UAAA,uBAAuBA,8CAAuB,mBAAmB;AAEjE,UAAA,kBAAkB,IAAI;AAC5B,eAAW,CAAC,YAAY,GAAG,KAAK,OAAO,QAAQ,mBAAmB,GAAG;AAChE,UAAA,EAAE,eAAeC,QAAAA,gBAAgB;AACpC;AAAA,MACD;AACM,YAAA,OAAO,IAAI,QAAQ;AACT,sBAAA,SAAS,MAAM,IAAI,UAAU;AAAA,IAC9C;AAEA,UAAM,cAAc,qBAAqB,QAAQ,CAAC,CAAA,EAAG,MAAM,MAAMC,MAAc,cAAA,IAAI,MAAM,EAAE,IAAI,CAAO,QAAA;AAAA,MACrG,GAAG;AAAA,MACH;AAAA,MACC,CAAC;AAEH,UAAM,eAAe,YAAY,IAAI,CAAA,OAAM,GAAG,WAAW,IAAI,EAAE,OAAO,CAAC,OAAqB,CAAC,CAAC,EAAE;AAChG,iBAAa,QAAQ,CAAC,IAAI,OAAO,QAAQ;AACxC,UAAI,IAAI,QAAQ,EAAE,MAAM,OAAO;AAC9B,cAAM,0BAA0B,EAAE;AAAA,MACnC;AAAA,IAAA,CACA;AAED,UAAM,WAA+C,CAAA;AACrD,eAAW,EAAE,YAAY,QAAQ,KAAA,KAAU,aAAa;AACvD,YAAM,OAAO,WAAW;AACxB,YAAM,SAAS,KAAK,cAAc,MAAM,YAAY,eAAe;AAC/D,UAAA;AACJ,UAAI,SAAS,SAAS;AACX,kBAAA;AAAA,UACT;AAAA,UACA,GAAG,KAAK,mBAAmB,MAAM,OAAO,MAAM,UAAU;AAAA,QAAA;AAAA,MACzD,WACU,SAAS,SAAS;AAClB,kBAAA;AAAA,UACT;AAAA,UACA,GAAG,KAAK,mBAAmB,MAAM,OAAO,MAAM,UAAU;AAAA,QAAA;AAAA,MACzD,OACM;AACNC,oBAAAA,YAAgB;AAAA,MACjB;AACA,eAAS,IAAI,IAAI;AAAA,IAClB;AAGA,WAAO,EAAE,UAAU,SAAS,gBAAgB,WAAa,EAAA;AAAA,EAC1D;AAAA,EAEQ,cAAc,aAAqB,kBAAoC,gBAA+C;AACvH,UAAA,gBAAgB,GAAG,WAAW;AACpC,QAAI,YAAY,kBAAkB;AAC7B,UAAA,iBAAiB,kBAAkBF,uBAAe;AACrD,cAAM,iBAAiB,eAAe,QAAQ,iBAAiB,OAAO,UAAU;AAChF,YAAI,CAAC,gBAAgB;AACpB,gBAAM,aAAa,WAAW;AAAA,QAC/B;AACO,eAAA;AAAA,MAAA,OACD;AACN,cAAM,EAAE,MAAM,GAAG,IAAA,IAAQ,iBAAiB;AAC1C,cAAM,eAAe,QAAQ;AAC7B,uBAAe,SAAS,cAAc,EAAE,MAAM,eAAe,GAAG,KAAK;AAC9D,eAAA;AAAA,MACR;AAAA,IAAA,WACU,aAAa,kBAAkB;AACrC,UAAA,OAAO,iBAAiB,YAAY,UAAU;AACjD,uBAAe,SAAS,eAAe;AAAA,UACtC,MAAM;AAAA,UACN,KAAK,iBAAiB;AAAA,QAAA,CACtB;AAAA,MAAA,OACK;AACN,uBAAe,SAAS,eAAe;AAAA,UACtC,MAAM;AAAA,UACN,GAAG,iBAAiB;AAAA,QAAA,CACpB;AAAA,MACF;AACO,aAAA;AAAA,IACR;AACA,WAAOE,YAAAA,YAA4B;AAAA,EACpC;AAAA,EAEQ,mBAAmB,MAAc,QAAgB,SAAuE;AACxH,WAAA;AAAA,MACN,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,OAAO,KAAK,eAAe,QAAQ,KAAK;AAAA,MACxC,WAAW,QAAQ,YAAY,KAAK,eAAe,QAAQ,SAAS,IAAI;AAAA,MACxE,UAAU,QAAQ;AAAA,IAAA;AAAA,EAEpB;AAAA,EAEQ,mBAAmB,MAAc,QAAgB,SAAuE;AACxH,WAAA;AAAA,MACN,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,QAAQ,QAAQ,UAAU;AAAA,MAC1B,QAAQ,QAAQ,UAAU;AAAA,MAC1B,QAAQ,QAAQ,UAAU;AAAA,MAC1B,WAAW,QAAQ,YAAY,KAAK,eAAe,QAAQ,SAAS,IAAI;AAAA,MACxE,UAAU,QAAQ;AAAA,IAAA;AAAA,EAEpB;AAAA,EAEQ,eAAe,WAAkE;AACpF,QAAA,OAAO,cAAc,UAAU;AAC3B,aAAA;AAAA,IACR;AACA,UAAM,SAASC,QAAAA,MAAM;AAAA,KAClB,SAAS;AAAA,IACV;AACS,eAAA,OAAO,OAAO,aAAa;AACjC,UAAA,IAAI,SAAS,uBAAuB;AACvC,eAAO,KAAK,oBAAoB,IAAI,aAAa,UAAU;AAAA,MAC5D;AAAA,IACD;AACA,UAAM,IAAI,MAAM;AAAA,EACjB;AAAA,EAEQ,oBAAoB,cAA+D;AACnF,WAAA,aAAa,IAAI,CAAM,OAAA;AACzB,UAAA,GAAG,SAAS,SAAS;AAClB,cAAA,GAAG,GAAG,IAAI;AAAA,MACjB;AACA,UAAI,GAAG,WAAW,WAAW,KAAK,GAAG,iBAAiB,QAAW;AAChE,eAAO,GAAG,KAAK;AAAA,MAChB;AACA,YAAM,OAAO,OAAO,YAAY,GAAG,WAAW,IAAI,CAAAC,QAAM,CAACA,IAAG,MAAM,eAAeA,IAAG,KAAK,CAAC,CAAC,KAAK,CAAA,CAAE;AAClG,aAAO,CAAC,GAAG,KAAK,OAAO,MAAM,GAAG,eAAe,KAAK,oBAAoB,GAAG,aAAa,UAAU,IAAI,CAAE,CAAA;AAAA,IAAA,CACxG;AAAA,EACF;AACD;AAEA,MAAM,sBAAsB;AAAA,EAA5B,cAAA;AACC,kBAAA,MAAQ,WAA6C,CAAA,CAAC;AAC9C,kBAAA,MAAA,yCAAwB,IAA6C,CAAA;AAAA,EAAA;AAAA,EAEtE,SAAS,MAAc,QAAmE;AAC5F,QAAA,KAAK,QAAQ,IAAI,GAAG;AACvB,YAAM,iCAAiC,IAAI;AAAA,IAC5C;AACA,SAAK,QAAQ,IAAI,IAAI,EAAE,MAAM,GAAG;AAC3B,SAAA,kBAAkB,IAAI,QAAQ,IAAI;AAAA,EACxC;AAAA,EAEO,QAAQ,QAA6D;AACpE,WAAA,KAAK,kBAAkB,IAAI,MAAM;AAAA,EACzC;AAAA,EAEO,aAAa;AACnB,WAAO,KAAK;AAAA,EACb;AACD;AAEA,MAAM,iBAAiB,CAAC,QAAwB;AAC/C,UAAQ,IAAI,MAAM;AAAA,IACjB,KAAKC,QAAK,KAAA;AACT,aAAO,IAAI;AAAA,IACZ,KAAKA,QAAK,KAAA;AACT,aAAO,IAAI;AAAA,IACZ,KAAKA,QAAK,KAAA;AACF,aAAA,WAAW,IAAI,KAAK;AAAA,IAC5B,KAAKA,QAAK,KAAA;AACF,aAAA,OAAO,IAAI,KAAK;AAAA,IACxB,KAAKA,QAAK,KAAA;AACT,aAAO,IAAI,OAAO,IAAI,CAAM,OAAA,eAAe,EAAE,CAAC;AAAA,IAC/C,KAAKA,QAAK,KAAA;AACT,aAAO,OAAO,YAAY,IAAI,OAAO,IAAI,CAAM,OAAA,CAAC,GAAG,KAAK,OAAO,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC;AAAA,IAC1F,KAAKA,QAAK,KAAA;AACT,aAAO,IAAI;AAAA,IACZ,KAAKA,QAAK,KAAA;AACF,aAAA;AAAA,IACR,KAAKA,QAAK,KAAA;AACH,YAAA;AAAA,EACR;AACD;;"}
1
+ {"version":3,"file":"ActionsFactory.cjs","sources":["../../../../../../../packages/schema-definition/src/actions/definition/internal/ActionsFactory.ts"],"sourcesContent":["import { assertNever, filterEntityDefinition } from '../../../utils'\nimport { Actions } from '@contember/schema'\nimport { triggersStore } from './store'\nimport { BasicTriggerDefinition, TargetDefinition, WatchTriggerDefinition } from '../triggers'\nimport { ActionsTarget } from '../targets'\nimport { Kind, parse, SelectionNode, ValueNode } from 'graphql'\n\nexport class ActionsFactory {\n\tconstructor(\n\t) {\n\t}\n\n\tpublic create(\n\t\texportedDefinitions: Record<string, any>,\n\t): Actions.Schema {\n\t\tconst entityLikeDefinition = filterEntityDefinition(exportedDefinitions)\n\n\t\tconst targetsRegistry = new ActionsTargetRegistry()\n\t\tfor (const [exportedAs, def] of Object.entries(exportedDefinitions)) {\n\t\t\tif (!(def instanceof ActionsTarget)) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst name = def.name ?? exportedAs\n\t\t\ttargetsRegistry.register(name, def.definition)\n\t\t}\n\n\t\tconst triggersDef = entityLikeDefinition.flatMap(([, entity]) => triggersStore.get(entity).map(it => ({\n\t\t\t...it,\n\t\t\tentity,\n\t\t})))\n\n\t\tconst triggerNames = triggersDef.map(it => it.definition.name).filter((it): it is string => !!it)\n\t\ttriggerNames.forEach((it, index, arr) => {\n\t\t\tif (arr.indexOf(it) !== index) {\n\t\t\t\tthrow `Duplicate trigger name ${it}.`\n\t\t\t}\n\t\t})\n\n\t\tconst triggers: Record<string, Actions.AnyTrigger> = {}\n\t\tfor (const { definition, entity, type } of triggersDef) {\n\t\t\tconst name = definition.name\n\t\t\tconst target = this.resolveTarget(name, definition, targetsRegistry)\n\t\t\tlet trigger: Actions.AnyTrigger\n\t\t\tif (type === 'basic') {\n\t\t\t\ttrigger = {\n\t\t\t\t\ttarget,\n\t\t\t\t\t...this.createBasicTrigger(name, entity.name, definition),\n\t\t\t\t}\n\t\t\t} else if (type === 'watch') {\n\t\t\t\ttrigger = {\n\t\t\t\t\ttarget,\n\t\t\t\t\t...this.createWatchTrigger(name, entity.name, definition),\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tassertNever(type)\n\t\t\t}\n\t\t\ttriggers[name] = trigger\n\t\t}\n\n\n\t\treturn { triggers, targets: targetsRegistry.getTargets() }\n\t}\n\n\tprivate resolveTarget(triggerName: string, targetDefinition: TargetDefinition, targetRegistry: ActionsTargetRegistry): string {\n\t\tconst generatedName = `${triggerName}_target`\n\t\tif ('target' in targetDefinition) {\n\t\t\tif (targetDefinition.target instanceof ActionsTarget) {\n\t\t\t\tconst registeredName = targetRegistry.getName(targetDefinition.target.definition)\n\t\t\t\tif (!registeredName) {\n\t\t\t\t\tthrow `Target of ${triggerName} trigger is not registered. Have you exported it?`\n\t\t\t\t}\n\t\t\t\treturn registeredName\n\t\t\t} else {\n\t\t\t\tconst { name, ...def } = targetDefinition.target\n\t\t\t\tconst resolvedName = name ?? generatedName\n\t\t\t\ttargetRegistry.register(resolvedName, { name: generatedName, ...def })\n\t\t\t\treturn resolvedName\n\t\t\t}\n\t\t} else if ('webhook' in targetDefinition) {\n\t\t\tif (typeof targetDefinition.webhook === 'string') {\n\t\t\t\ttargetRegistry.register(generatedName, {\n\t\t\t\t\ttype: 'webhook',\n\t\t\t\t\turl: targetDefinition.webhook,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\ttargetRegistry.register(generatedName, {\n\t\t\t\t\ttype: 'webhook',\n\t\t\t\t\t...targetDefinition.webhook,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn generatedName\n\t\t}\n\t\treturn assertNever(targetDefinition)\n\t}\n\n\tprivate createWatchTrigger(name: string, entity: string, trigger: WatchTriggerDefinition): Omit<Actions.WatchTrigger, 'target'> {\n\t\treturn {\n\t\t\ttype: 'watch',\n\t\t\tentity,\n\t\t\tname,\n\t\t\twatch: this.parseSelection(trigger.watch),\n\t\t\tselection: trigger.selection ? this.parseSelection(trigger.selection) : undefined,\n\t\t\tpriority: trigger.priority,\n\t\t}\n\t}\n\n\tprivate createBasicTrigger(name: string, entity: string, trigger: BasicTriggerDefinition): Omit<Actions.BasicTrigger, 'target'> {\n\t\treturn {\n\t\t\ttype: 'basic',\n\t\t\tentity,\n\t\t\tname,\n\t\t\tcreate: trigger.create ?? false,\n\t\t\tdelete: trigger.delete ?? false,\n\t\t\tupdate: trigger.update ?? false,\n\t\t\tselection: trigger.selection ? this.parseSelection(trigger.selection) : undefined,\n\t\t\tpriority: trigger.priority,\n\t\t}\n\t}\n\n\tprivate parseSelection(selection: Actions.SelectionNode | string): Actions.SelectionNode {\n\t\tif (typeof selection !== 'string') {\n\t\t\treturn selection\n\t\t}\n\t\tconst result = parse(`{\n\t\t\t${selection}\n\t\t}`)\n\t\tfor (const def of result.definitions) {\n\t\t\tif (def.kind === 'OperationDefinition') {\n\t\t\t\treturn this.processSelectionSet(def.selectionSet.selections)\n\t\t\t}\n\t\t}\n\t\tthrow new Error()\n\t}\n\n\tprivate processSelectionSet(selectionSet: readonly SelectionNode[]): Actions.SelectionNode {\n\t\treturn selectionSet.map(it => {\n\t\t\tif (it.kind !== 'Field') {\n\t\t\t\tthrow `${it.kind} is not supported.`\n\t\t\t}\n\t\t\tif (it.arguments?.length === 0 && it.selectionSet === undefined) {\n\t\t\t\treturn it.name.value\n\t\t\t}\n\t\t\tconst args = Object.fromEntries(it.arguments?.map(it => [it.name, parseArguments(it.value)]) ?? [])\n\t\t\treturn [it.name.value, args, it.selectionSet ? this.processSelectionSet(it.selectionSet.selections) : []]\n\t\t})\n\t}\n}\n\nclass ActionsTargetRegistry {\n\tprivate targets: Record<string, Actions.AnyTarget> = {}\n\tprivate targetsInverseMap = new Map<Omit<Actions.AnyTarget, 'name'>, string>()\n\n\tpublic register(name: string, target: Omit<Actions.AnyTarget, 'name'> & { name?: string }): void {\n\t\tif (this.targets[name]) {\n\t\t\tthrow `Duplicate trigger target name ${name}`\n\t\t}\n\t\tthis.targets[name] = { name, ...target }\n\t\tthis.targetsInverseMap.set(target, name)\n\t}\n\n\tpublic getName(target: Omit<Actions.AnyTarget, 'name'>): string | undefined {\n\t\treturn this.targetsInverseMap.get(target)\n\t}\n\n\tpublic getTargets() {\n\t\treturn this.targets\n\t}\n}\n\nconst parseArguments = (ast: ValueNode): any => {\n\tswitch (ast.kind) {\n\t\tcase Kind.STRING:\n\t\t\treturn ast.value\n\t\tcase Kind.BOOLEAN:\n\t\t\treturn ast.value\n\t\tcase Kind.FLOAT:\n\t\t\treturn parseFloat(ast.value)\n\t\tcase Kind.INT:\n\t\t\treturn Number(ast.value)\n\t\tcase Kind.LIST:\n\t\t\treturn ast.values.map(it => parseArguments(it))\n\t\tcase Kind.OBJECT:\n\t\t\treturn Object.fromEntries(ast.fields.map(it => [it.name.value, parseArguments(it.value)]))\n\t\tcase Kind.ENUM:\n\t\t\treturn ast.value\n\t\tcase Kind.NULL:\n\t\t\treturn null\n\t\tcase Kind.VARIABLE:\n\t\t\tthrow `Variables are not supported here.`\n\t}\n}\n"],"names":["filterEntityDefinition","ActionsTarget","triggersStore","assertNever","parse","it","Kind"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActionsFactory.js","sources":["../../../../../../../packages/schema-definition/src/actions/definition/internal/ActionsFactory.ts"],"sourcesContent":["import { assertNever, filterEntityDefinition } from '../../../utils'\nimport { Actions } from '@contember/schema'\nimport { triggersStore } from './store'\nimport { BasicTriggerDefinition, TargetDefinition, WatchTriggerDefinition } from '../triggers'\nimport { ActionsTarget } from '../targets'\nimport { Kind, parse, SelectionNode, ValueNode } from 'graphql'\n\nexport class ActionsFactory {\n\tconstructor(\n\t) {\n\t}\n\n\tpublic create(\n\t\texportedDefinitions: Record<string, any>,\n\t): Actions.Schema {\n\t\tconst entityLikeDefinition = filterEntityDefinition(exportedDefinitions)\n\n\t\tconst targetsRegistry = new ActionsTargetRegistry()\n\t\tfor (const [exportedAs, def] of Object.entries(exportedDefinitions)) {\n\t\t\tif (!(def instanceof ActionsTarget)) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst name = def.name ?? exportedAs\n\t\t\ttargetsRegistry.register(name, def.definition)\n\t\t}\n\n\t\tconst triggersDef = entityLikeDefinition.flatMap(([, entity]) => triggersStore.get(entity).map(it => ({\n\t\t\t...it,\n\t\t\tentity,\n\t\t})))\n\n\t\tconst triggerNames = triggersDef.map(it => it.definition.name).filter((it): it is string => !!it)\n\t\ttriggerNames.forEach((it, index, arr) => {\n\t\t\tif (arr.indexOf(it) !== index) {\n\t\t\t\tthrow `Duplicate trigger name ${it}.`\n\t\t\t}\n\t\t})\n\n\t\tconst triggers: Record<string, Actions.AnyTrigger> = {}\n\t\tfor (const { definition, entity, type } of triggersDef) {\n\t\t\tconst name = definition.name\n\t\t\tconst target = this.resolveTarget(name, definition, targetsRegistry)\n\t\t\tlet trigger: Actions.AnyTrigger\n\t\t\tif (type === 'basic') {\n\t\t\t\ttrigger = {\n\t\t\t\t\ttarget,\n\t\t\t\t\t...this.createBasicTrigger(name, entity.name, definition),\n\t\t\t\t}\n\t\t\t} else if (type === 'watch') {\n\t\t\t\ttrigger = {\n\t\t\t\t\ttarget,\n\t\t\t\t\t...this.createWatchTrigger(name, entity.name, definition),\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tassertNever(type)\n\t\t\t}\n\t\t\ttriggers[name] = trigger\n\t\t}\n\n\n\t\treturn { triggers, targets: targetsRegistry.getTargets() }\n\t}\n\n\tprivate resolveTarget(triggerName: string, targetDefinition: TargetDefinition, targetRegistry: ActionsTargetRegistry): string {\n\t\tconst generatedName = `${triggerName}_target`\n\t\tif ('target' in targetDefinition) {\n\t\t\tif (targetDefinition.target instanceof ActionsTarget) {\n\t\t\t\tconst registeredName = targetRegistry.getName(targetDefinition.target.definition)\n\t\t\t\tif (!registeredName) {\n\t\t\t\t\tthrow `Target of ${triggerName} trigger is not registered. Have you exported it?`\n\t\t\t\t}\n\t\t\t\treturn registeredName\n\t\t\t} else {\n\t\t\t\tconst { name, ...def } = targetDefinition.target\n\t\t\t\tconst resolvedName = name ?? generatedName\n\t\t\t\ttargetRegistry.register(resolvedName, { name: generatedName, ...def })\n\t\t\t\treturn resolvedName\n\t\t\t}\n\t\t} else if ('webhook' in targetDefinition) {\n\t\t\tif (typeof targetDefinition.webhook === 'string') {\n\t\t\t\ttargetRegistry.register(generatedName, {\n\t\t\t\t\ttype: 'webhook',\n\t\t\t\t\turl: targetDefinition.webhook,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\ttargetRegistry.register(generatedName, {\n\t\t\t\t\ttype: 'webhook',\n\t\t\t\t\t...targetDefinition.webhook,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn generatedName\n\t\t}\n\t\treturn assertNever(targetDefinition)\n\t}\n\n\tprivate createWatchTrigger(name: string, entity: string, trigger: WatchTriggerDefinition): Omit<Actions.WatchTrigger, 'target'> {\n\t\treturn {\n\t\t\ttype: 'watch',\n\t\t\tentity,\n\t\t\tname,\n\t\t\twatch: this.parseSelection(trigger.watch),\n\t\t\tselection: trigger.selection ? this.parseSelection(trigger.selection) : undefined,\n\t\t\tpriority: trigger.priority,\n\t\t}\n\t}\n\n\tprivate createBasicTrigger(name: string, entity: string, trigger: BasicTriggerDefinition): Omit<Actions.BasicTrigger, 'target'> {\n\t\treturn {\n\t\t\ttype: 'basic',\n\t\t\tentity,\n\t\t\tname,\n\t\t\tcreate: trigger.create ?? false,\n\t\t\tdelete: trigger.delete ?? false,\n\t\t\tupdate: trigger.update ?? false,\n\t\t\tselection: trigger.selection ? this.parseSelection(trigger.selection) : undefined,\n\t\t\tpriority: trigger.priority,\n\t\t}\n\t}\n\n\tprivate parseSelection(selection: Actions.SelectionNode | string): Actions.SelectionNode {\n\t\tif (typeof selection !== 'string') {\n\t\t\treturn selection\n\t\t}\n\t\tconst result = parse(`{\n\t\t\t${selection}\n\t\t}`)\n\t\tfor (const def of result.definitions) {\n\t\t\tif (def.kind === 'OperationDefinition') {\n\t\t\t\treturn this.processSelectionSet(def.selectionSet.selections)\n\t\t\t}\n\t\t}\n\t\tthrow new Error()\n\t}\n\n\tprivate processSelectionSet(selectionSet: readonly SelectionNode[]): Actions.SelectionNode {\n\t\treturn selectionSet.map(it => {\n\t\t\tif (it.kind !== 'Field') {\n\t\t\t\tthrow `${it.kind} is not supported.`\n\t\t\t}\n\t\t\tif (it.arguments?.length === 0 && it.selectionSet === undefined) {\n\t\t\t\treturn it.name.value\n\t\t\t}\n\t\t\tconst args = Object.fromEntries(it.arguments?.map(it => [it.name, parseArguments(it.value)]) ?? [])\n\t\t\treturn [it.name.value, args, it.selectionSet ? this.processSelectionSet(it.selectionSet.selections) : []]\n\t\t})\n\t}\n}\n\nclass ActionsTargetRegistry {\n\tprivate targets: Record<string, Actions.AnyTarget> = {}\n\tprivate targetsInverseMap = new Map<Omit<Actions.AnyTarget, 'name'>, string>()\n\n\tpublic register(name: string, target: Omit<Actions.AnyTarget, 'name'> & { name?: string }): void {\n\t\tif (this.targets[name]) {\n\t\t\tthrow `Duplicate trigger target name ${name}`\n\t\t}\n\t\tthis.targets[name] = { name, ...target }\n\t\tthis.targetsInverseMap.set(target, name)\n\t}\n\n\tpublic getName(target: Omit<Actions.AnyTarget, 'name'>): string | undefined {\n\t\treturn this.targetsInverseMap.get(target)\n\t}\n\n\tpublic getTargets() {\n\t\treturn this.targets\n\t}\n}\n\nconst parseArguments = (ast: ValueNode): any => {\n\tswitch (ast.kind) {\n\t\tcase Kind.STRING:\n\t\t\treturn ast.value\n\t\tcase Kind.BOOLEAN:\n\t\t\treturn ast.value\n\t\tcase Kind.FLOAT:\n\t\t\treturn parseFloat(ast.value)\n\t\tcase Kind.INT:\n\t\t\treturn Number(ast.value)\n\t\tcase Kind.LIST:\n\t\t\treturn ast.values.map(it => parseArguments(it))\n\t\tcase Kind.OBJECT:\n\t\t\treturn Object.fromEntries(ast.fields.map(it => [it.name.value, parseArguments(it.value)]))\n\t\tcase Kind.ENUM:\n\t\t\treturn ast.value\n\t\tcase Kind.NULL:\n\t\t\treturn null\n\t\tcase Kind.VARIABLE:\n\t\t\tthrow `Variables are not supported here.`\n\t}\n}\n"],"names":["it"],"mappings":"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"}
1
+ {"version":3,"file":"ActionsFactory.js","sources":["../../../../../../../packages/schema-definition/src/actions/definition/internal/ActionsFactory.ts"],"sourcesContent":["import { assertNever, filterEntityDefinition } from '../../../utils'\nimport { Actions } from '@contember/schema'\nimport { triggersStore } from './store'\nimport { BasicTriggerDefinition, TargetDefinition, WatchTriggerDefinition } from '../triggers'\nimport { ActionsTarget } from '../targets'\nimport { Kind, parse, SelectionNode, ValueNode } from 'graphql'\n\nexport class ActionsFactory {\n\tconstructor(\n\t) {\n\t}\n\n\tpublic create(\n\t\texportedDefinitions: Record<string, any>,\n\t): Actions.Schema {\n\t\tconst entityLikeDefinition = filterEntityDefinition(exportedDefinitions)\n\n\t\tconst targetsRegistry = new ActionsTargetRegistry()\n\t\tfor (const [exportedAs, def] of Object.entries(exportedDefinitions)) {\n\t\t\tif (!(def instanceof ActionsTarget)) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst name = def.name ?? exportedAs\n\t\t\ttargetsRegistry.register(name, def.definition)\n\t\t}\n\n\t\tconst triggersDef = entityLikeDefinition.flatMap(([, entity]) => triggersStore.get(entity).map(it => ({\n\t\t\t...it,\n\t\t\tentity,\n\t\t})))\n\n\t\tconst triggerNames = triggersDef.map(it => it.definition.name).filter((it): it is string => !!it)\n\t\ttriggerNames.forEach((it, index, arr) => {\n\t\t\tif (arr.indexOf(it) !== index) {\n\t\t\t\tthrow `Duplicate trigger name ${it}.`\n\t\t\t}\n\t\t})\n\n\t\tconst triggers: Record<string, Actions.AnyTrigger> = {}\n\t\tfor (const { definition, entity, type } of triggersDef) {\n\t\t\tconst name = definition.name\n\t\t\tconst target = this.resolveTarget(name, definition, targetsRegistry)\n\t\t\tlet trigger: Actions.AnyTrigger\n\t\t\tif (type === 'basic') {\n\t\t\t\ttrigger = {\n\t\t\t\t\ttarget,\n\t\t\t\t\t...this.createBasicTrigger(name, entity.name, definition),\n\t\t\t\t}\n\t\t\t} else if (type === 'watch') {\n\t\t\t\ttrigger = {\n\t\t\t\t\ttarget,\n\t\t\t\t\t...this.createWatchTrigger(name, entity.name, definition),\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tassertNever(type)\n\t\t\t}\n\t\t\ttriggers[name] = trigger\n\t\t}\n\n\n\t\treturn { triggers, targets: targetsRegistry.getTargets() }\n\t}\n\n\tprivate resolveTarget(triggerName: string, targetDefinition: TargetDefinition, targetRegistry: ActionsTargetRegistry): string {\n\t\tconst generatedName = `${triggerName}_target`\n\t\tif ('target' in targetDefinition) {\n\t\t\tif (targetDefinition.target instanceof ActionsTarget) {\n\t\t\t\tconst registeredName = targetRegistry.getName(targetDefinition.target.definition)\n\t\t\t\tif (!registeredName) {\n\t\t\t\t\tthrow `Target of ${triggerName} trigger is not registered. Have you exported it?`\n\t\t\t\t}\n\t\t\t\treturn registeredName\n\t\t\t} else {\n\t\t\t\tconst { name, ...def } = targetDefinition.target\n\t\t\t\tconst resolvedName = name ?? generatedName\n\t\t\t\ttargetRegistry.register(resolvedName, { name: generatedName, ...def })\n\t\t\t\treturn resolvedName\n\t\t\t}\n\t\t} else if ('webhook' in targetDefinition) {\n\t\t\tif (typeof targetDefinition.webhook === 'string') {\n\t\t\t\ttargetRegistry.register(generatedName, {\n\t\t\t\t\ttype: 'webhook',\n\t\t\t\t\turl: targetDefinition.webhook,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\ttargetRegistry.register(generatedName, {\n\t\t\t\t\ttype: 'webhook',\n\t\t\t\t\t...targetDefinition.webhook,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn generatedName\n\t\t}\n\t\treturn assertNever(targetDefinition)\n\t}\n\n\tprivate createWatchTrigger(name: string, entity: string, trigger: WatchTriggerDefinition): Omit<Actions.WatchTrigger, 'target'> {\n\t\treturn {\n\t\t\ttype: 'watch',\n\t\t\tentity,\n\t\t\tname,\n\t\t\twatch: this.parseSelection(trigger.watch),\n\t\t\tselection: trigger.selection ? this.parseSelection(trigger.selection) : undefined,\n\t\t\tpriority: trigger.priority,\n\t\t}\n\t}\n\n\tprivate createBasicTrigger(name: string, entity: string, trigger: BasicTriggerDefinition): Omit<Actions.BasicTrigger, 'target'> {\n\t\treturn {\n\t\t\ttype: 'basic',\n\t\t\tentity,\n\t\t\tname,\n\t\t\tcreate: trigger.create ?? false,\n\t\t\tdelete: trigger.delete ?? false,\n\t\t\tupdate: trigger.update ?? false,\n\t\t\tselection: trigger.selection ? this.parseSelection(trigger.selection) : undefined,\n\t\t\tpriority: trigger.priority,\n\t\t}\n\t}\n\n\tprivate parseSelection(selection: Actions.SelectionNode | string): Actions.SelectionNode {\n\t\tif (typeof selection !== 'string') {\n\t\t\treturn selection\n\t\t}\n\t\tconst result = parse(`{\n\t\t\t${selection}\n\t\t}`)\n\t\tfor (const def of result.definitions) {\n\t\t\tif (def.kind === 'OperationDefinition') {\n\t\t\t\treturn this.processSelectionSet(def.selectionSet.selections)\n\t\t\t}\n\t\t}\n\t\tthrow new Error()\n\t}\n\n\tprivate processSelectionSet(selectionSet: readonly SelectionNode[]): Actions.SelectionNode {\n\t\treturn selectionSet.map(it => {\n\t\t\tif (it.kind !== 'Field') {\n\t\t\t\tthrow `${it.kind} is not supported.`\n\t\t\t}\n\t\t\tif (it.arguments?.length === 0 && it.selectionSet === undefined) {\n\t\t\t\treturn it.name.value\n\t\t\t}\n\t\t\tconst args = Object.fromEntries(it.arguments?.map(it => [it.name, parseArguments(it.value)]) ?? [])\n\t\t\treturn [it.name.value, args, it.selectionSet ? this.processSelectionSet(it.selectionSet.selections) : []]\n\t\t})\n\t}\n}\n\nclass ActionsTargetRegistry {\n\tprivate targets: Record<string, Actions.AnyTarget> = {}\n\tprivate targetsInverseMap = new Map<Omit<Actions.AnyTarget, 'name'>, string>()\n\n\tpublic register(name: string, target: Omit<Actions.AnyTarget, 'name'> & { name?: string }): void {\n\t\tif (this.targets[name]) {\n\t\t\tthrow `Duplicate trigger target name ${name}`\n\t\t}\n\t\tthis.targets[name] = { name, ...target }\n\t\tthis.targetsInverseMap.set(target, name)\n\t}\n\n\tpublic getName(target: Omit<Actions.AnyTarget, 'name'>): string | undefined {\n\t\treturn this.targetsInverseMap.get(target)\n\t}\n\n\tpublic getTargets() {\n\t\treturn this.targets\n\t}\n}\n\nconst parseArguments = (ast: ValueNode): any => {\n\tswitch (ast.kind) {\n\t\tcase Kind.STRING:\n\t\t\treturn ast.value\n\t\tcase Kind.BOOLEAN:\n\t\t\treturn ast.value\n\t\tcase Kind.FLOAT:\n\t\t\treturn parseFloat(ast.value)\n\t\tcase Kind.INT:\n\t\t\treturn Number(ast.value)\n\t\tcase Kind.LIST:\n\t\t\treturn ast.values.map(it => parseArguments(it))\n\t\tcase Kind.OBJECT:\n\t\t\treturn Object.fromEntries(ast.fields.map(it => [it.name.value, parseArguments(it.value)]))\n\t\tcase Kind.ENUM:\n\t\t\treturn ast.value\n\t\tcase Kind.NULL:\n\t\t\treturn null\n\t\tcase Kind.VARIABLE:\n\t\t\tthrow `Variables are not supported here.`\n\t}\n}\n"],"names":["it"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"targets.cjs","sources":["../../../../../../packages/schema-definition/src/actions/definition/targets.ts"],"sourcesContent":["import { Actions } from '@contember/schema'\n\n\nexport class ActionsTarget {\n\tconstructor(\n\t\tpublic readonly name: string | undefined,\n\t\tpublic readonly definition: Omit<Actions.AnyTarget, 'name'>,\n\t) {\n\t}\n}\n\nexport const createTarget = ({\n\tname,\n\t...definition\n}: Actions.AnyTarget & { name?: string }) => new ActionsTarget(name, definition)\n"],"names":[],"mappings":";;AAGO,MAAM,cAAc;AAAA,EAC1B,YACiB,MACA,YACf;AAFe,SAAA,OAAA;AACA,SAAA,aAAA;AAAA,EAEjB;AACD;AAEO,MAAM,eAAe,CAAC;AAAA,EAC5B;AAAA,EACA,GAAG;AACJ,MAA6C,IAAI,cAAc,MAAM,UAAU;;;"}
1
+ {"version":3,"file":"targets.cjs","sources":["../../../../../../packages/schema-definition/src/actions/definition/targets.ts"],"sourcesContent":["import { Actions } from '@contember/schema'\n\n\nexport class ActionsTarget {\n\tconstructor(\n\t\tpublic readonly name: string | undefined,\n\t\tpublic readonly definition: Omit<Actions.AnyTarget, 'name'>,\n\t) {\n\t}\n}\n\nexport const createTarget = ({\n\tname,\n\t...definition\n}: Actions.AnyTarget & { name?: string }) => new ActionsTarget(name, definition)\n"],"names":[],"mappings":";;AAGO,MAAM,cAAc;AAAA,EAC1B,YACiB,MACA,YACf;AAFe,SAAA,OAAA;AACA,SAAA,aAAA;AAAA,EAAA;AAGlB;AAEO,MAAM,eAAe,CAAC;AAAA,EAC5B;AAAA,EACA,GAAG;AACJ,MAA6C,IAAI,cAAc,MAAM,UAAU;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"targets.js","sources":["../../../../../../packages/schema-definition/src/actions/definition/targets.ts"],"sourcesContent":["import { Actions } from '@contember/schema'\n\n\nexport class ActionsTarget {\n\tconstructor(\n\t\tpublic readonly name: string | undefined,\n\t\tpublic readonly definition: Omit<Actions.AnyTarget, 'name'>,\n\t) {\n\t}\n}\n\nexport const createTarget = ({\n\tname,\n\t...definition\n}: Actions.AnyTarget & { name?: string }) => new ActionsTarget(name, definition)\n"],"names":[],"mappings":"AAGO,MAAM,cAAc;AAAA,EAC1B,YACiB,MACA,YACf;AAFe,SAAA,OAAA;AACA,SAAA,aAAA;AAAA,EAEjB;AACD;AAEO,MAAM,eAAe,CAAC;AAAA,EAC5B;AAAA,EACA,GAAG;AACJ,MAA6C,IAAI,cAAc,MAAM,UAAU;"}
1
+ {"version":3,"file":"targets.js","sources":["../../../../../../packages/schema-definition/src/actions/definition/targets.ts"],"sourcesContent":["import { Actions } from '@contember/schema'\n\n\nexport class ActionsTarget {\n\tconstructor(\n\t\tpublic readonly name: string | undefined,\n\t\tpublic readonly definition: Omit<Actions.AnyTarget, 'name'>,\n\t) {\n\t}\n}\n\nexport const createTarget = ({\n\tname,\n\t...definition\n}: Actions.AnyTarget & { name?: string }) => new ActionsTarget(name, definition)\n"],"names":[],"mappings":"AAGO,MAAM,cAAc;AAAA,EAC1B,YACiB,MACA,YACf;AAFe,SAAA,OAAA;AACA,SAAA,aAAA;AAAA,EAAA;AAGlB;AAEO,MAAM,eAAe,CAAC;AAAA,EAC5B;AAAA,EACA,GAAG;AACJ,MAA6C,IAAI,cAAc,MAAM,UAAU;"}
@@ -1 +1 @@
1
- {"version":3,"file":"triggers.cjs","sources":["../../../../../../packages/schema-definition/src/actions/definition/triggers.ts"],"sourcesContent":["import { DecoratorFunction, EntityConstructor } from '../../utils'\nimport { Actions } from '@contember/schema'\nimport { triggersStore } from './internal/store'\nimport { ActionsTarget } from './targets'\n\nexport type TriggerWebhookDefinition = {\n\twebhook:\n\t\t| string\n\t\t| Omit<Actions.WebhookTarget, 'type' | 'name'> & { name?: string }\n}\n\nexport type TriggerTargetDefinition = {\n\ttarget: (Omit<Actions.AnyTarget, 'name'> & { name?: string }) | ActionsTarget\n}\n\nexport type TargetDefinition =\n\t| TriggerWebhookDefinition\n\t| TriggerTargetDefinition\n\nexport type CommonTriggerDefinition = {\n\treadonly name: string\n\treadonly selection?: Actions.SelectionNode | string\n\treadonly priority?: number\n}\n\nexport type BasicTriggerDefinition =\n\t& {\n\t\treadonly create?: boolean\n\t\treadonly delete?: boolean\n\t\treadonly update?: boolean | readonly string[]\n\t}\n\t& CommonTriggerDefinition\n\t& TargetDefinition\n\nexport type WatchTriggerDefinition =\n\t& {\n\t\treadonly watch: Actions.SelectionNode | string\n\t}\n\t& CommonTriggerDefinition\n\t& TargetDefinition\n\nexport const trigger = <T>(definition: BasicTriggerDefinition): DecoratorFunction<T> => (entity: EntityConstructor<T>) => {\n\ttriggersStore.update(entity, it => [...it, { type: 'basic', definition }])\n}\n\nexport const watch = <T>(definition: WatchTriggerDefinition): DecoratorFunction<T> => (entity: EntityConstructor<T>) => {\n\ttriggersStore.update(entity, it => [...it, { type: 'watch', definition }])\n}\n\n"],"names":["triggersStore"],"mappings":";;;AAyCO,MAAM,UAAU,CAAI,eAA6D,CAAC,WAAiC;AAC3GA,QAAAA,cAAA,OAAO,QAAQ,CAAA,OAAM,CAAC,GAAG,IAAI,EAAE,MAAM,SAAS,WAAW,CAAC,CAAC;AAC1E;AAEO,MAAM,QAAQ,CAAI,eAA6D,CAAC,WAAiC;AACzGA,QAAAA,cAAA,OAAO,QAAQ,CAAA,OAAM,CAAC,GAAG,IAAI,EAAE,MAAM,SAAS,WAAW,CAAC,CAAC;AAC1E;;;"}
1
+ {"version":3,"file":"triggers.cjs","sources":["../../../../../../packages/schema-definition/src/actions/definition/triggers.ts"],"sourcesContent":["import { DecoratorFunction, EntityConstructor } from '../../utils'\nimport { Actions } from '@contember/schema'\nimport { triggersStore } from './internal/store'\nimport { ActionsTarget } from './targets'\n\nexport type TriggerWebhookDefinition = {\n\twebhook:\n\t\t| string\n\t\t| Omit<Actions.WebhookTarget, 'type' | 'name'> & { name?: string }\n}\n\nexport type TriggerTargetDefinition = {\n\ttarget: (Omit<Actions.AnyTarget, 'name'> & { name?: string }) | ActionsTarget\n}\n\nexport type TargetDefinition =\n\t| TriggerWebhookDefinition\n\t| TriggerTargetDefinition\n\nexport type CommonTriggerDefinition = {\n\treadonly name: string\n\treadonly selection?: Actions.SelectionNode | string\n\treadonly priority?: number\n}\n\nexport type BasicTriggerDefinition =\n\t& {\n\t\treadonly create?: boolean\n\t\treadonly delete?: boolean\n\t\treadonly update?: boolean | readonly string[]\n\t}\n\t& CommonTriggerDefinition\n\t& TargetDefinition\n\nexport type WatchTriggerDefinition =\n\t& {\n\t\treadonly watch: Actions.SelectionNode | string\n\t}\n\t& CommonTriggerDefinition\n\t& TargetDefinition\n\nexport const trigger = <T>(definition: BasicTriggerDefinition): DecoratorFunction<T> => (entity: EntityConstructor<T>) => {\n\ttriggersStore.update(entity, it => [...it, { type: 'basic', definition }])\n}\n\nexport const watch = <T>(definition: WatchTriggerDefinition): DecoratorFunction<T> => (entity: EntityConstructor<T>) => {\n\ttriggersStore.update(entity, it => [...it, { type: 'watch', definition }])\n}\n\n"],"names":["triggersStore"],"mappings":";;;AAyCO,MAAM,UAAU,CAAI,eAA6D,CAAC,WAAiC;AAC3GA,QAAAA,cAAA,OAAO,QAAQ,CAAA,OAAM,CAAC,GAAG,IAAI,EAAE,MAAM,SAAS,WAAY,CAAA,CAAC;AAC1E;AAEO,MAAM,QAAQ,CAAI,eAA6D,CAAC,WAAiC;AACzGA,QAAAA,cAAA,OAAO,QAAQ,CAAA,OAAM,CAAC,GAAG,IAAI,EAAE,MAAM,SAAS,WAAY,CAAA,CAAC;AAC1E;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"triggers.js","sources":["../../../../../../packages/schema-definition/src/actions/definition/triggers.ts"],"sourcesContent":["import { DecoratorFunction, EntityConstructor } from '../../utils'\nimport { Actions } from '@contember/schema'\nimport { triggersStore } from './internal/store'\nimport { ActionsTarget } from './targets'\n\nexport type TriggerWebhookDefinition = {\n\twebhook:\n\t\t| string\n\t\t| Omit<Actions.WebhookTarget, 'type' | 'name'> & { name?: string }\n}\n\nexport type TriggerTargetDefinition = {\n\ttarget: (Omit<Actions.AnyTarget, 'name'> & { name?: string }) | ActionsTarget\n}\n\nexport type TargetDefinition =\n\t| TriggerWebhookDefinition\n\t| TriggerTargetDefinition\n\nexport type CommonTriggerDefinition = {\n\treadonly name: string\n\treadonly selection?: Actions.SelectionNode | string\n\treadonly priority?: number\n}\n\nexport type BasicTriggerDefinition =\n\t& {\n\t\treadonly create?: boolean\n\t\treadonly delete?: boolean\n\t\treadonly update?: boolean | readonly string[]\n\t}\n\t& CommonTriggerDefinition\n\t& TargetDefinition\n\nexport type WatchTriggerDefinition =\n\t& {\n\t\treadonly watch: Actions.SelectionNode | string\n\t}\n\t& CommonTriggerDefinition\n\t& TargetDefinition\n\nexport const trigger = <T>(definition: BasicTriggerDefinition): DecoratorFunction<T> => (entity: EntityConstructor<T>) => {\n\ttriggersStore.update(entity, it => [...it, { type: 'basic', definition }])\n}\n\nexport const watch = <T>(definition: WatchTriggerDefinition): DecoratorFunction<T> => (entity: EntityConstructor<T>) => {\n\ttriggersStore.update(entity, it => [...it, { type: 'watch', definition }])\n}\n\n"],"names":[],"mappings":";AAyCO,MAAM,UAAU,CAAI,eAA6D,CAAC,WAAiC;AAC3G,gBAAA,OAAO,QAAQ,CAAA,OAAM,CAAC,GAAG,IAAI,EAAE,MAAM,SAAS,WAAW,CAAC,CAAC;AAC1E;AAEO,MAAM,QAAQ,CAAI,eAA6D,CAAC,WAAiC;AACzG,gBAAA,OAAO,QAAQ,CAAA,OAAM,CAAC,GAAG,IAAI,EAAE,MAAM,SAAS,WAAW,CAAC,CAAC;AAC1E;"}
1
+ {"version":3,"file":"triggers.js","sources":["../../../../../../packages/schema-definition/src/actions/definition/triggers.ts"],"sourcesContent":["import { DecoratorFunction, EntityConstructor } from '../../utils'\nimport { Actions } from '@contember/schema'\nimport { triggersStore } from './internal/store'\nimport { ActionsTarget } from './targets'\n\nexport type TriggerWebhookDefinition = {\n\twebhook:\n\t\t| string\n\t\t| Omit<Actions.WebhookTarget, 'type' | 'name'> & { name?: string }\n}\n\nexport type TriggerTargetDefinition = {\n\ttarget: (Omit<Actions.AnyTarget, 'name'> & { name?: string }) | ActionsTarget\n}\n\nexport type TargetDefinition =\n\t| TriggerWebhookDefinition\n\t| TriggerTargetDefinition\n\nexport type CommonTriggerDefinition = {\n\treadonly name: string\n\treadonly selection?: Actions.SelectionNode | string\n\treadonly priority?: number\n}\n\nexport type BasicTriggerDefinition =\n\t& {\n\t\treadonly create?: boolean\n\t\treadonly delete?: boolean\n\t\treadonly update?: boolean | readonly string[]\n\t}\n\t& CommonTriggerDefinition\n\t& TargetDefinition\n\nexport type WatchTriggerDefinition =\n\t& {\n\t\treadonly watch: Actions.SelectionNode | string\n\t}\n\t& CommonTriggerDefinition\n\t& TargetDefinition\n\nexport const trigger = <T>(definition: BasicTriggerDefinition): DecoratorFunction<T> => (entity: EntityConstructor<T>) => {\n\ttriggersStore.update(entity, it => [...it, { type: 'basic', definition }])\n}\n\nexport const watch = <T>(definition: WatchTriggerDefinition): DecoratorFunction<T> => (entity: EntityConstructor<T>) => {\n\ttriggersStore.update(entity, it => [...it, { type: 'watch', definition }])\n}\n\n"],"names":[],"mappings":";AAyCO,MAAM,UAAU,CAAI,eAA6D,CAAC,WAAiC;AAC3G,gBAAA,OAAO,QAAQ,CAAA,OAAM,CAAC,GAAG,IAAI,EAAE,MAAM,SAAS,WAAY,CAAA,CAAC;AAC1E;AAEO,MAAM,QAAQ,CAAI,eAA6D,CAAC,WAAiC;AACzG,gBAAA,OAAO,QAAQ,CAAA,OAAM,CAAC,GAAG,IAAI,EAAE,MAAM,SAAS,WAAY,CAAA,CAAC;AAC1E;"}
@@ -1 +1 @@
1
- {"version":3,"file":"createSchema.cjs","sources":["../../../../packages/schema-definition/src/createSchema.ts"],"sourcesContent":["import { SchemaDefinition } from './model'\nimport * as InputValidation from './validation'\nimport * as AclDefinition from './acl/definition'\nimport * as ActionsDefinition from './actions/definition'\nimport { Schema } from '@contember/schema'\nimport { emptySchema } from '@contember/schema-utils'\nimport { allStrict, StrictOptions, StrictDefinitionValidator } from './strict'\n\nexport const createSchema = (definitions: Record<string, any>, modifyCallback?: (schema: Schema) => Schema, options?: {\n\tstrict?: boolean | StrictOptions\n}): Schema => {\n\tconst strictOptions = options?.strict === true ? allStrict : (options?.strict || {})\n\tconst strictDefinitionValidator = new StrictDefinitionValidator(strictOptions)\n\n\tconst model = SchemaDefinition.createModel(definitions, { strictDefinitionValidator: strictDefinitionValidator })\n\tconst validation = InputValidation.parseDefinition(definitions)\n\tconst acl = AclDefinition.createAcl(definitions, model)\n\tconst actions = ActionsDefinition.createActions(definitions)\n\tconst schema = { ...emptySchema, model, validation, acl, actions }\n\n\tif (strictDefinitionValidator.warnings.length > 0) {\n\t\tthrow `Strict schema validation failed: \\n${strictDefinitionValidator.warnings.map(it => `- ${it.message}`).join('\\n')}`\n\t}\n\n\treturn modifyCallback ? modifyCallback(schema) : schema\n}\n"],"names":["allStrict","StrictDefinitionValidator","SchemaDefinition.createModel","InputValidation.parseDefinition","AclDefinition.createAcl","ActionsDefinition.createActions","emptySchema"],"mappings":";;;;;;;;;;AAQO,MAAM,eAAe,CAAC,aAAkC,gBAA6C,YAE9F;AACb,QAAM,gBAAgB,SAAS,WAAW,OAAOA,OAAAA,YAAa,SAAS,UAAU;AAC3E,QAAA,4BAA4B,IAAIC,iCAA0B,aAAa;AAE7E,QAAM,QAAQC,MAAiB,YAAY,aAAa,EAAE,0BAAsD,CAAA;AAC1G,QAAA,aAAaC,wBAAgC,WAAW;AAC9D,QAAM,MAAMC,QAAAA,UAAwB,aAAa,KAAK;AAChD,QAAA,UAAUC,sBAAgC,WAAW;AAC3D,QAAM,SAAS,EAAE,GAAGC,yBAAa,OAAO,YAAY,KAAK;AAErD,MAAA,0BAA0B,SAAS,SAAS,GAAG;AAC5C,UAAA;AAAA,EAAsC,0BAA0B,SAAS,IAAI,CAAM,OAAA,KAAK,GAAG,OAAO,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA,EACvH;AAEO,SAAA,iBAAiB,eAAe,MAAM,IAAI;AAClD;;"}
1
+ {"version":3,"file":"createSchema.cjs","sources":["../../../../packages/schema-definition/src/createSchema.ts"],"sourcesContent":["import { SchemaDefinition } from './model'\nimport * as InputValidation from './validation'\nimport * as AclDefinition from './acl/definition'\nimport * as ActionsDefinition from './actions/definition'\nimport { Schema } from '@contember/schema'\nimport { emptySchema } from '@contember/schema-utils'\nimport { allStrict, StrictOptions, StrictDefinitionValidator } from './strict'\n\nexport const createSchema = (definitions: Record<string, any>, modifyCallback?: (schema: Schema) => Schema, options?: {\n\tstrict?: boolean | StrictOptions\n}): Schema => {\n\tconst strictOptions = options?.strict === true ? allStrict : (options?.strict || {})\n\tconst strictDefinitionValidator = new StrictDefinitionValidator(strictOptions)\n\n\tconst model = SchemaDefinition.createModel(definitions, { strictDefinitionValidator: strictDefinitionValidator })\n\tconst validation = InputValidation.parseDefinition(definitions)\n\tconst acl = AclDefinition.createAcl(definitions, model)\n\tconst actions = ActionsDefinition.createActions(definitions)\n\tconst schema = { ...emptySchema, model, validation, acl, actions }\n\n\tif (strictDefinitionValidator.warnings.length > 0) {\n\t\tthrow `Strict schema validation failed: \\n${strictDefinitionValidator.warnings.map(it => `- ${it.message}`).join('\\n')}`\n\t}\n\n\treturn modifyCallback ? modifyCallback(schema) : schema\n}\n"],"names":["allStrict","StrictDefinitionValidator","SchemaDefinition.createModel","InputValidation.parseDefinition","AclDefinition.createAcl","ActionsDefinition.createActions","emptySchema"],"mappings":";;;;;;;;;;AAQO,MAAM,eAAe,CAAC,aAAkC,gBAA6C,YAE9F;AACb,QAAM,gBAAgB,SAAS,WAAW,OAAOA,mBAAa,SAAS,UAAU,CAAC;AAC5E,QAAA,4BAA4B,IAAIC,OAAA,0BAA0B,aAAa;AAE7E,QAAM,QAAQC,MAAiB,YAAY,aAAa,EAAE,2BAAsD;AAC1G,QAAA,aAAaC,QAAgB,gBAAgB,WAAW;AAC9D,QAAM,MAAMC,QAAAA,UAAwB,aAAa,KAAK;AAChD,QAAA,UAAUC,QAAkB,cAAc,WAAW;AAC3D,QAAM,SAAS,EAAE,GAAGC,yBAAa,OAAO,YAAY,KAAK,QAAQ;AAE7D,MAAA,0BAA0B,SAAS,SAAS,GAAG;AAC5C,UAAA;AAAA,EAAsC,0BAA0B,SAAS,IAAI,CAAM,OAAA,KAAK,GAAG,OAAO,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA,EAAA;AAGhH,SAAA,iBAAiB,eAAe,MAAM,IAAI;AAClD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"createSchema.js","sources":["../../../../packages/schema-definition/src/createSchema.ts"],"sourcesContent":["import { SchemaDefinition } from './model'\nimport * as InputValidation from './validation'\nimport * as AclDefinition from './acl/definition'\nimport * as ActionsDefinition from './actions/definition'\nimport { Schema } from '@contember/schema'\nimport { emptySchema } from '@contember/schema-utils'\nimport { allStrict, StrictOptions, StrictDefinitionValidator } from './strict'\n\nexport const createSchema = (definitions: Record<string, any>, modifyCallback?: (schema: Schema) => Schema, options?: {\n\tstrict?: boolean | StrictOptions\n}): Schema => {\n\tconst strictOptions = options?.strict === true ? allStrict : (options?.strict || {})\n\tconst strictDefinitionValidator = new StrictDefinitionValidator(strictOptions)\n\n\tconst model = SchemaDefinition.createModel(definitions, { strictDefinitionValidator: strictDefinitionValidator })\n\tconst validation = InputValidation.parseDefinition(definitions)\n\tconst acl = AclDefinition.createAcl(definitions, model)\n\tconst actions = ActionsDefinition.createActions(definitions)\n\tconst schema = { ...emptySchema, model, validation, acl, actions }\n\n\tif (strictDefinitionValidator.warnings.length > 0) {\n\t\tthrow `Strict schema validation failed: \\n${strictDefinitionValidator.warnings.map(it => `- ${it.message}`).join('\\n')}`\n\t}\n\n\treturn modifyCallback ? modifyCallback(schema) : schema\n}\n"],"names":["SchemaDefinition.createModel","InputValidation.parseDefinition","AclDefinition.createAcl","ActionsDefinition.createActions"],"mappings":";;;;;;;;AAQO,MAAM,eAAe,CAAC,aAAkC,gBAA6C,YAE9F;AACb,QAAM,gBAAgB,SAAS,WAAW,OAAO,YAAa,SAAS,UAAU;AAC3E,QAAA,4BAA4B,IAAI,0BAA0B,aAAa;AAE7E,QAAM,QAAQA,YAA6B,aAAa,EAAE,0BAAsD,CAAA;AAC1G,QAAA,aAAaC,gBAAgC,WAAW;AAC9D,QAAM,MAAMC,UAAwB,aAAa,KAAK;AAChD,QAAA,UAAUC,cAAgC,WAAW;AAC3D,QAAM,SAAS,EAAE,GAAG,aAAa,OAAO,YAAY,KAAK;AAErD,MAAA,0BAA0B,SAAS,SAAS,GAAG;AAC5C,UAAA;AAAA,EAAsC,0BAA0B,SAAS,IAAI,CAAM,OAAA,KAAK,GAAG,OAAO,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA,EACvH;AAEO,SAAA,iBAAiB,eAAe,MAAM,IAAI;AAClD;"}
1
+ {"version":3,"file":"createSchema.js","sources":["../../../../packages/schema-definition/src/createSchema.ts"],"sourcesContent":["import { SchemaDefinition } from './model'\nimport * as InputValidation from './validation'\nimport * as AclDefinition from './acl/definition'\nimport * as ActionsDefinition from './actions/definition'\nimport { Schema } from '@contember/schema'\nimport { emptySchema } from '@contember/schema-utils'\nimport { allStrict, StrictOptions, StrictDefinitionValidator } from './strict'\n\nexport const createSchema = (definitions: Record<string, any>, modifyCallback?: (schema: Schema) => Schema, options?: {\n\tstrict?: boolean | StrictOptions\n}): Schema => {\n\tconst strictOptions = options?.strict === true ? allStrict : (options?.strict || {})\n\tconst strictDefinitionValidator = new StrictDefinitionValidator(strictOptions)\n\n\tconst model = SchemaDefinition.createModel(definitions, { strictDefinitionValidator: strictDefinitionValidator })\n\tconst validation = InputValidation.parseDefinition(definitions)\n\tconst acl = AclDefinition.createAcl(definitions, model)\n\tconst actions = ActionsDefinition.createActions(definitions)\n\tconst schema = { ...emptySchema, model, validation, acl, actions }\n\n\tif (strictDefinitionValidator.warnings.length > 0) {\n\t\tthrow `Strict schema validation failed: \\n${strictDefinitionValidator.warnings.map(it => `- ${it.message}`).join('\\n')}`\n\t}\n\n\treturn modifyCallback ? modifyCallback(schema) : schema\n}\n"],"names":["SchemaDefinition.createModel","InputValidation.parseDefinition","AclDefinition.createAcl","ActionsDefinition.createActions"],"mappings":";;;;;;;;AAQO,MAAM,eAAe,CAAC,aAAkC,gBAA6C,YAE9F;AACb,QAAM,gBAAgB,SAAS,WAAW,OAAO,YAAa,SAAS,UAAU,CAAC;AAC5E,QAAA,4BAA4B,IAAI,0BAA0B,aAAa;AAE7E,QAAM,QAAQA,YAA6B,aAAa,EAAE,2BAAsD;AAC1G,QAAA,aAAaC,gBAAgC,WAAW;AAC9D,QAAM,MAAMC,UAAwB,aAAa,KAAK;AAChD,QAAA,UAAUC,cAAgC,WAAW;AAC3D,QAAM,SAAS,EAAE,GAAG,aAAa,OAAO,YAAY,KAAK,QAAQ;AAE7D,MAAA,0BAA0B,SAAS,SAAS,GAAG;AAC5C,UAAA;AAAA,EAAsC,0BAA0B,SAAS,IAAI,CAAM,OAAA,KAAK,GAAG,OAAO,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA,EAAA;AAGhH,SAAA,iBAAiB,eAAe,MAAM,IAAI;AAClD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnBuilder.cjs","sources":["../../../../../../packages/schema-definition/src/model/builder/ColumnBuilder.ts"],"sourcesContent":["import FieldBuilder from './FieldBuilder'\nimport { Model } from '@contember/schema'\n\ntype PartialColumnOptions<K extends keyof ColumnBuilder.Options> =\n\t& Partial<ColumnBuilder.Options>\n\t& Pick<ColumnBuilder.Options, K>\n\nclass ColumnBuilder<O extends PartialColumnOptions<never> = PartialColumnOptions<never>> implements FieldBuilder<O> {\n\tconstructor(private readonly options: O) {}\n\n\tpublic columnName(columnName: string): ColumnBuilder<O> {\n\t\treturn new ColumnBuilder<O>({ ...(this.options as object), columnName } as O)\n\t}\n\n\tpublic type(\n\t\ttype: Model.ColumnType,\n\t\ttypeOptions: ColumnBuilder.TypeOptions = {},\n\t): ColumnBuilder<O & PartialColumnOptions<'type'>> {\n\t\treturn new ColumnBuilder<O & PartialColumnOptions<'type'>>({\n\t\t\t...(this.options as object),\n\t\t\ttype: type,\n\t\t\t...typeOptions,\n\t\t} as O & PartialColumnOptions<'type'>)\n\t}\n\n\tpublic nullable(): ColumnBuilder<O> {\n\t\treturn new ColumnBuilder<O>({ ...(this.options as object), nullable: true } as O)\n\t}\n\n\tpublic notNull(): ColumnBuilder<O> {\n\t\treturn new ColumnBuilder<O>({ ...(this.options as object), nullable: false } as O)\n\t}\n\n\tpublic unique(): ColumnBuilder<O> {\n\t\treturn new ColumnBuilder<O>({ ...(this.options as object), unique: true } as O)\n\t}\n\n\tpublic primary(): ColumnBuilder<O> {\n\t\treturn new ColumnBuilder<O>({ ...(this.options as object), primary: true } as O)\n\t}\n\n\tpublic typeAlias(typeAlias: string): ColumnBuilder<O> {\n\t\treturn new ColumnBuilder<O>({ ...(this.options as object), typeAlias } as O)\n\t}\n\n\tgetOption(): O {\n\t\treturn this.options\n\t}\n}\n\nnamespace ColumnBuilder {\n\texport type TypeOptions = {\n\t\tenumName?: string\n\t}\n\n\texport type Options = {\n\t\ttype: Model.ColumnType\n\t\tenumName?: string\n\t\tcolumnName?: string\n\t\tunique?: boolean\n\t\tnullable?: boolean\n\t\tprimary?: boolean\n\t\ttypeAlias?: string\n\t}\n}\n\nexport default ColumnBuilder\n"],"names":[],"mappings":";AAOA,MAAM,cAA8G;AAAA,EACnH,YAA6B,SAAY;AAAZ,SAAA,UAAA;AAAA,EAAa;AAAA,EAEnC,WAAW,YAAsC;AACvD,WAAO,IAAI,cAAiB,EAAE,GAAI,KAAK,SAAoB,YAAiB;AAAA,EAC7E;AAAA,EAEO,KACN,MACA,cAAyC,IACS;AAClD,WAAO,IAAI,cAAgD;AAAA,MAC1D,GAAI,KAAK;AAAA,MACT;AAAA,MACA,GAAG;AAAA,IAAA,CACiC;AAAA,EACtC;AAAA,EAEO,WAA6B;AAC5B,WAAA,IAAI,cAAiB,EAAE,GAAI,KAAK,SAAoB,UAAU,MAAW;AAAA,EACjF;AAAA,EAEO,UAA4B;AAC3B,WAAA,IAAI,cAAiB,EAAE,GAAI,KAAK,SAAoB,UAAU,OAAY;AAAA,EAClF;AAAA,EAEO,SAA2B;AAC1B,WAAA,IAAI,cAAiB,EAAE,GAAI,KAAK,SAAoB,QAAQ,MAAW;AAAA,EAC/E;AAAA,EAEO,UAA4B;AAC3B,WAAA,IAAI,cAAiB,EAAE,GAAI,KAAK,SAAoB,SAAS,MAAW;AAAA,EAChF;AAAA,EAEO,UAAU,WAAqC;AACrD,WAAO,IAAI,cAAiB,EAAE,GAAI,KAAK,SAAoB,WAAgB;AAAA,EAC5E;AAAA,EAEA,YAAe;AACd,WAAO,KAAK;AAAA,EACb;AACD;;"}
1
+ {"version":3,"file":"ColumnBuilder.cjs","sources":["../../../../../../packages/schema-definition/src/model/builder/ColumnBuilder.ts"],"sourcesContent":["import FieldBuilder from './FieldBuilder'\nimport { Model } from '@contember/schema'\n\ntype PartialColumnOptions<K extends keyof ColumnBuilder.Options> =\n\t& Partial<ColumnBuilder.Options>\n\t& Pick<ColumnBuilder.Options, K>\n\nclass ColumnBuilder<O extends PartialColumnOptions<never> = PartialColumnOptions<never>> implements FieldBuilder<O> {\n\tconstructor(private readonly options: O) {}\n\n\tpublic columnName(columnName: string): ColumnBuilder<O> {\n\t\treturn new ColumnBuilder<O>({ ...(this.options as object), columnName } as O)\n\t}\n\n\tpublic type(\n\t\ttype: Model.ColumnType,\n\t\ttypeOptions: ColumnBuilder.TypeOptions = {},\n\t): ColumnBuilder<O & PartialColumnOptions<'type'>> {\n\t\treturn new ColumnBuilder<O & PartialColumnOptions<'type'>>({\n\t\t\t...(this.options as object),\n\t\t\ttype: type,\n\t\t\t...typeOptions,\n\t\t} as O & PartialColumnOptions<'type'>)\n\t}\n\n\tpublic nullable(): ColumnBuilder<O> {\n\t\treturn new ColumnBuilder<O>({ ...(this.options as object), nullable: true } as O)\n\t}\n\n\tpublic notNull(): ColumnBuilder<O> {\n\t\treturn new ColumnBuilder<O>({ ...(this.options as object), nullable: false } as O)\n\t}\n\n\tpublic unique(): ColumnBuilder<O> {\n\t\treturn new ColumnBuilder<O>({ ...(this.options as object), unique: true } as O)\n\t}\n\n\tpublic primary(): ColumnBuilder<O> {\n\t\treturn new ColumnBuilder<O>({ ...(this.options as object), primary: true } as O)\n\t}\n\n\tpublic typeAlias(typeAlias: string): ColumnBuilder<O> {\n\t\treturn new ColumnBuilder<O>({ ...(this.options as object), typeAlias } as O)\n\t}\n\n\tgetOption(): O {\n\t\treturn this.options\n\t}\n}\n\nnamespace ColumnBuilder {\n\texport type TypeOptions = {\n\t\tenumName?: string\n\t}\n\n\texport type Options = {\n\t\ttype: Model.ColumnType\n\t\tenumName?: string\n\t\tcolumnName?: string\n\t\tunique?: boolean\n\t\tnullable?: boolean\n\t\tprimary?: boolean\n\t\ttypeAlias?: string\n\t}\n}\n\nexport default ColumnBuilder\n"],"names":[],"mappings":";AAOA,MAAM,cAA8G;AAAA,EACnH,YAA6B,SAAY;AAAZ,SAAA,UAAA;AAAA,EAAA;AAAA,EAEtB,WAAW,YAAsC;AACvD,WAAO,IAAI,cAAiB,EAAE,GAAI,KAAK,SAAoB,YAAiB;AAAA,EAAA;AAAA,EAGtE,KACN,MACA,cAAyC,IACS;AAClD,WAAO,IAAI,cAAgD;AAAA,MAC1D,GAAI,KAAK;AAAA,MACT;AAAA,MACA,GAAG;AAAA,IAAA,CACiC;AAAA,EAAA;AAAA,EAG/B,WAA6B;AAC5B,WAAA,IAAI,cAAiB,EAAE,GAAI,KAAK,SAAoB,UAAU,MAAW;AAAA,EAAA;AAAA,EAG1E,UAA4B;AAC3B,WAAA,IAAI,cAAiB,EAAE,GAAI,KAAK,SAAoB,UAAU,OAAY;AAAA,EAAA;AAAA,EAG3E,SAA2B;AAC1B,WAAA,IAAI,cAAiB,EAAE,GAAI,KAAK,SAAoB,QAAQ,MAAW;AAAA,EAAA;AAAA,EAGxE,UAA4B;AAC3B,WAAA,IAAI,cAAiB,EAAE,GAAI,KAAK,SAAoB,SAAS,MAAW;AAAA,EAAA;AAAA,EAGzE,UAAU,WAAqC;AACrD,WAAO,IAAI,cAAiB,EAAE,GAAI,KAAK,SAAoB,WAAgB;AAAA,EAAA;AAAA,EAG5E,YAAe;AACd,WAAO,KAAK;AAAA,EAAA;AAEd;;"}