@contember/cli 2.1.0-beta.2 → 2.2.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. package/CLAUDE.md +14 -1
  2. package/dist/development/index.cjs +5 -0
  3. package/dist/development/index.cjs.map +1 -0
  4. package/dist/development/index.js +5 -0
  5. package/dist/development/index.js.map +1 -0
  6. package/dist/development/run.cjs +3 -3
  7. package/dist/development/run.cjs.map +1 -1
  8. package/dist/development/run.js.map +1 -1
  9. package/dist/development/src/commands/actions/ActionsGetEventCommand.cjs.map +1 -1
  10. package/dist/development/src/commands/actions/ActionsGetEventCommand.js.map +1 -1
  11. package/dist/development/src/commands/actions/ActionsListFailedEventsCommand.cjs.map +1 -1
  12. package/dist/development/src/commands/actions/ActionsListFailedEventsCommand.js.map +1 -1
  13. package/dist/development/src/commands/actions/ActionsListVariablesCommand.cjs.map +1 -1
  14. package/dist/development/src/commands/actions/ActionsListVariablesCommand.js.map +1 -1
  15. package/dist/development/src/commands/actions/ActionsRetryEventCommand.cjs.map +1 -1
  16. package/dist/development/src/commands/actions/ActionsRetryEventCommand.js.map +1 -1
  17. package/dist/development/src/commands/actions/ActionsSetVariablesCommand.cjs.map +1 -1
  18. package/dist/development/src/commands/actions/ActionsSetVariablesCommand.js.map +1 -1
  19. package/dist/development/src/commands/actions/ActionsStopEventCommand.cjs.map +1 -1
  20. package/dist/development/src/commands/actions/ActionsStopEventCommand.js.map +1 -1
  21. package/dist/development/src/commands/deploy/DeployCommand.cjs +3 -1
  22. package/dist/development/src/commands/deploy/DeployCommand.cjs.map +1 -1
  23. package/dist/development/src/commands/deploy/DeployCommand.js +3 -1
  24. package/dist/development/src/commands/deploy/DeployCommand.js.map +1 -1
  25. package/dist/development/src/commands/migrations/MigrationAmendCommand.cjs +26 -4
  26. package/dist/development/src/commands/migrations/MigrationAmendCommand.cjs.map +1 -1
  27. package/dist/development/src/commands/migrations/MigrationAmendCommand.js +26 -4
  28. package/dist/development/src/commands/migrations/MigrationAmendCommand.js.map +1 -1
  29. package/dist/development/src/commands/migrations/MigrationDescribeCommand.cjs.map +1 -1
  30. package/dist/development/src/commands/migrations/MigrationDescribeCommand.js.map +1 -1
  31. package/dist/development/src/commands/migrations/MigrationDiffCommand.cjs +39 -3
  32. package/dist/development/src/commands/migrations/MigrationDiffCommand.cjs.map +1 -1
  33. package/dist/development/src/commands/migrations/MigrationDiffCommand.js +39 -3
  34. package/dist/development/src/commands/migrations/MigrationDiffCommand.js.map +1 -1
  35. package/dist/development/src/commands/migrations/MigrationExecuteCommand.cjs +3 -1
  36. package/dist/development/src/commands/migrations/MigrationExecuteCommand.cjs.map +1 -1
  37. package/dist/development/src/commands/migrations/MigrationExecuteCommand.js +3 -1
  38. package/dist/development/src/commands/migrations/MigrationExecuteCommand.js.map +1 -1
  39. package/dist/development/src/commands/migrations/MigrationInitStateCommand.cjs +26 -0
  40. package/dist/development/src/commands/migrations/MigrationInitStateCommand.cjs.map +1 -0
  41. package/dist/development/src/commands/migrations/MigrationInitStateCommand.js +26 -0
  42. package/dist/development/src/commands/migrations/MigrationInitStateCommand.js.map +1 -0
  43. package/dist/development/src/commands/migrations/MigrationRebaseCommand.cjs.map +1 -1
  44. package/dist/development/src/commands/migrations/MigrationRebaseCommand.js.map +1 -1
  45. package/dist/development/src/commands/migrations/MigrationSnapshotCommand.cjs +28 -0
  46. package/dist/development/src/commands/migrations/MigrationSnapshotCommand.cjs.map +1 -0
  47. package/dist/development/src/commands/migrations/MigrationSnapshotCommand.js +28 -0
  48. package/dist/development/src/commands/migrations/MigrationSnapshotCommand.js.map +1 -0
  49. package/dist/development/src/commands/migrations/MigrationStatusCommand.cjs.map +1 -1
  50. package/dist/development/src/commands/migrations/MigrationStatusCommand.js.map +1 -1
  51. package/dist/development/src/commands/migrations/MigrationVerifySnapshotCommand.cjs +23 -0
  52. package/dist/development/src/commands/migrations/MigrationVerifySnapshotCommand.cjs.map +1 -0
  53. package/dist/development/src/commands/migrations/MigrationVerifySnapshotCommand.js +23 -0
  54. package/dist/development/src/commands/migrations/MigrationVerifySnapshotCommand.js.map +1 -0
  55. package/dist/development/src/commands/project/ProjectGenerateDocumentationCommand.cjs +2 -2
  56. package/dist/development/src/commands/project/ProjectGenerateDocumentationCommand.cjs.map +1 -1
  57. package/dist/development/src/commands/project/ProjectGenerateDocumentationCommand.js.map +1 -1
  58. package/dist/development/src/commands/project/ProjectPrintSchemaCommand.cjs.map +1 -1
  59. package/dist/development/src/commands/project/ProjectPrintSchemaCommand.js.map +1 -1
  60. package/dist/development/src/commands/project/ProjectValidateCommand.cjs.map +1 -1
  61. package/dist/development/src/commands/project/ProjectValidateCommand.js.map +1 -1
  62. package/dist/development/src/commands/tenant/TenantApplyCommand.cjs +39 -0
  63. package/dist/development/src/commands/tenant/TenantApplyCommand.cjs.map +1 -0
  64. package/dist/development/src/commands/tenant/TenantApplyCommand.js +39 -0
  65. package/dist/development/src/commands/tenant/TenantApplyCommand.js.map +1 -0
  66. package/dist/development/src/commands/transfer/ExportCommand.cjs.map +1 -1
  67. package/dist/development/src/commands/transfer/ExportCommand.js.map +1 -1
  68. package/dist/development/src/commands/transfer/ImportCommand.cjs.map +1 -1
  69. package/dist/development/src/commands/transfer/ImportCommand.js.map +1 -1
  70. package/dist/development/src/commands/transfer/TransferCommand.cjs.map +1 -1
  71. package/dist/development/src/commands/transfer/TransferCommand.js.map +1 -1
  72. package/dist/development/src/commands/workspace/WorkspaceUpdateApiCommand.cjs.map +1 -1
  73. package/dist/development/src/commands/workspace/WorkspaceUpdateApiCommand.js.map +1 -1
  74. package/dist/development/src/consts.cjs +2 -2
  75. package/dist/development/src/consts.cjs.map +1 -1
  76. package/dist/development/src/dic.cjs +60 -10
  77. package/dist/development/src/dic.cjs.map +1 -1
  78. package/dist/development/src/dic.js +61 -11
  79. package/dist/development/src/dic.js.map +1 -1
  80. package/dist/development/src/lib/SystemClientProvider.cjs.map +1 -1
  81. package/dist/development/src/lib/SystemClientProvider.js.map +1 -1
  82. package/dist/development/src/lib/TenantClientProvider.cjs.map +1 -1
  83. package/dist/development/src/lib/TenantClientProvider.js.map +1 -1
  84. package/dist/development/src/lib/VersionChecker.cjs +2 -2
  85. package/dist/development/src/lib/VersionChecker.cjs.map +1 -1
  86. package/dist/development/src/lib/VersionChecker.js.map +1 -1
  87. package/dist/development/src/lib/admin/AdminClient.cjs.map +1 -1
  88. package/dist/development/src/lib/admin/AdminClient.js.map +1 -1
  89. package/dist/development/src/lib/admin/AdminDeployer.cjs.map +1 -1
  90. package/dist/development/src/lib/admin/AdminDeployer.js.map +1 -1
  91. package/dist/development/src/lib/fs/DockerComposeManager.cjs +10 -10
  92. package/dist/development/src/lib/fs/DockerComposeManager.cjs.map +1 -1
  93. package/dist/development/src/lib/fs/DockerComposeManager.js.map +1 -1
  94. package/dist/development/src/lib/fs/YamlHandler.cjs.map +1 -1
  95. package/dist/development/src/lib/fs/YamlHandler.js.map +1 -1
  96. package/dist/development/src/lib/js/EsBuildBuilder.cjs.map +1 -1
  97. package/dist/development/src/lib/js/EsBuildBuilder.js.map +1 -1
  98. package/dist/development/src/lib/js/EvalExecutor.cjs.map +1 -1
  99. package/dist/development/src/lib/js/EvalExecutor.js.map +1 -1
  100. package/dist/development/src/lib/js/JsCodeRunner.cjs.map +1 -1
  101. package/dist/development/src/lib/js/JsCodeRunner.js.map +1 -1
  102. package/dist/development/src/lib/migrations/MigrationExecutionFacade.cjs +78 -18
  103. package/dist/development/src/lib/migrations/MigrationExecutionFacade.cjs.map +1 -1
  104. package/dist/development/src/lib/migrations/MigrationExecutionFacade.js +79 -19
  105. package/dist/development/src/lib/migrations/MigrationExecutionFacade.js.map +1 -1
  106. package/dist/development/src/lib/migrations/MigrationPrinter.cjs.map +1 -1
  107. package/dist/development/src/lib/migrations/MigrationPrinter.js.map +1 -1
  108. package/dist/development/src/lib/migrations/MigrationRebaseFacade.cjs +5 -1
  109. package/dist/development/src/lib/migrations/MigrationRebaseFacade.cjs.map +1 -1
  110. package/dist/development/src/lib/migrations/MigrationRebaseFacade.js +5 -1
  111. package/dist/development/src/lib/migrations/MigrationRebaseFacade.js.map +1 -1
  112. package/dist/development/src/lib/migrations/MigrationSnapshotFacade.cjs +171 -0
  113. package/dist/development/src/lib/migrations/MigrationSnapshotFacade.cjs.map +1 -0
  114. package/dist/development/src/lib/migrations/MigrationSnapshotFacade.js +171 -0
  115. package/dist/development/src/lib/migrations/MigrationSnapshotFacade.js.map +1 -0
  116. package/dist/development/src/lib/migrations/MigrationsStatusFacade.cjs.map +1 -1
  117. package/dist/development/src/lib/migrations/MigrationsStatusFacade.js.map +1 -1
  118. package/dist/development/src/lib/migrations/MigrationsValidator.cjs.map +1 -1
  119. package/dist/development/src/lib/migrations/MigrationsValidator.js.map +1 -1
  120. package/dist/development/src/lib/project/RemoteProjectProvider.cjs.map +1 -1
  121. package/dist/development/src/lib/project/RemoteProjectProvider.js.map +1 -1
  122. package/dist/development/src/lib/project/RemoteProjectResolver.cjs.map +1 -1
  123. package/dist/development/src/lib/project/RemoteProjectResolver.js.map +1 -1
  124. package/dist/development/src/lib/project/docs/components/EntityInfo.cjs.map +1 -1
  125. package/dist/development/src/lib/project/docs/components/EntityInfo.js.map +1 -1
  126. package/dist/development/src/lib/project/docs/components/EntityLink.cjs.map +1 -1
  127. package/dist/development/src/lib/project/docs/components/EntityLink.js.map +1 -1
  128. package/dist/development/src/lib/project/docs/components/FieldLink.cjs.map +1 -1
  129. package/dist/development/src/lib/project/docs/components/FieldLink.js.map +1 -1
  130. package/dist/development/src/lib/project/docs/components/FieldPermissions.cjs.map +1 -1
  131. package/dist/development/src/lib/project/docs/components/FieldPermissions.js.map +1 -1
  132. package/dist/development/src/lib/project/docs/components/FieldType.cjs.map +1 -1
  133. package/dist/development/src/lib/project/docs/components/FieldType.js.map +1 -1
  134. package/dist/development/src/lib/project/docs/components/OnDelete.cjs.map +1 -1
  135. package/dist/development/src/lib/project/docs/components/OnDelete.js.map +1 -1
  136. package/dist/development/src/lib/project/docs/components/ProjectInfo.cjs.map +1 -1
  137. package/dist/development/src/lib/project/docs/components/ProjectInfo.js.map +1 -1
  138. package/dist/development/src/lib/project/docs/projectDescribe.cjs.map +1 -1
  139. package/dist/development/src/lib/project/docs/projectDescribe.js.map +1 -1
  140. package/dist/development/src/lib/schema/SchemaLoader.cjs +5 -5
  141. package/dist/development/src/lib/schema/SchemaLoader.cjs.map +1 -1
  142. package/dist/development/src/lib/schema/SchemaLoader.js.map +1 -1
  143. package/dist/development/src/lib/schema/SchemaValidationHelper.cjs.map +1 -1
  144. package/dist/development/src/lib/schema/SchemaValidationHelper.js.map +1 -1
  145. package/dist/development/src/lib/tenant/TenantClient.cjs +75 -12
  146. package/dist/development/src/lib/tenant/TenantClient.cjs.map +1 -1
  147. package/dist/development/src/lib/tenant/TenantClient.js +75 -12
  148. package/dist/development/src/lib/tenant/TenantClient.js.map +1 -1
  149. package/dist/development/src/lib/tenant/TenantConfigApplier.cjs +55 -0
  150. package/dist/development/src/lib/tenant/TenantConfigApplier.cjs.map +1 -0
  151. package/dist/development/src/lib/tenant/TenantConfigApplier.js +55 -0
  152. package/dist/development/src/lib/tenant/TenantConfigApplier.js.map +1 -0
  153. package/dist/development/src/lib/tenant/TenantConfigLoader.cjs +32 -0
  154. package/dist/development/src/lib/tenant/TenantConfigLoader.cjs.map +1 -0
  155. package/dist/development/src/lib/tenant/TenantConfigLoader.js +32 -0
  156. package/dist/development/src/lib/tenant/TenantConfigLoader.js.map +1 -0
  157. package/dist/development/src/lib/tenant/tenantConfig.cjs +5 -0
  158. package/dist/development/src/lib/tenant/tenantConfig.cjs.map +1 -0
  159. package/dist/development/src/lib/tenant/tenantConfig.js +5 -0
  160. package/dist/development/src/lib/tenant/tenantConfig.js.map +1 -0
  161. package/dist/development/src/lib/transfer/DataTransferClient.cjs.map +1 -1
  162. package/dist/development/src/lib/transfer/DataTransferClient.js.map +1 -1
  163. package/dist/development/src/lib/workspace/WorkspaceResolver.cjs +6 -6
  164. package/dist/development/src/lib/workspace/WorkspaceResolver.cjs.map +1 -1
  165. package/dist/development/src/lib/workspace/WorkspaceResolver.js.map +1 -1
  166. package/dist/production/index.cjs +5 -0
  167. package/dist/production/index.cjs.map +1 -0
  168. package/dist/production/index.js +5 -0
  169. package/dist/production/index.js.map +1 -0
  170. package/dist/production/run.cjs +3 -3
  171. package/dist/production/run.cjs.map +1 -1
  172. package/dist/production/run.js.map +1 -1
  173. package/dist/production/src/commands/actions/ActionsGetEventCommand.cjs.map +1 -1
  174. package/dist/production/src/commands/actions/ActionsGetEventCommand.js.map +1 -1
  175. package/dist/production/src/commands/actions/ActionsListFailedEventsCommand.cjs.map +1 -1
  176. package/dist/production/src/commands/actions/ActionsListFailedEventsCommand.js.map +1 -1
  177. package/dist/production/src/commands/actions/ActionsListVariablesCommand.cjs.map +1 -1
  178. package/dist/production/src/commands/actions/ActionsListVariablesCommand.js.map +1 -1
  179. package/dist/production/src/commands/actions/ActionsRetryEventCommand.cjs.map +1 -1
  180. package/dist/production/src/commands/actions/ActionsRetryEventCommand.js.map +1 -1
  181. package/dist/production/src/commands/actions/ActionsSetVariablesCommand.cjs.map +1 -1
  182. package/dist/production/src/commands/actions/ActionsSetVariablesCommand.js.map +1 -1
  183. package/dist/production/src/commands/actions/ActionsStopEventCommand.cjs.map +1 -1
  184. package/dist/production/src/commands/actions/ActionsStopEventCommand.js.map +1 -1
  185. package/dist/production/src/commands/deploy/DeployCommand.cjs +3 -1
  186. package/dist/production/src/commands/deploy/DeployCommand.cjs.map +1 -1
  187. package/dist/production/src/commands/deploy/DeployCommand.js +3 -1
  188. package/dist/production/src/commands/deploy/DeployCommand.js.map +1 -1
  189. package/dist/production/src/commands/migrations/MigrationAmendCommand.cjs +26 -4
  190. package/dist/production/src/commands/migrations/MigrationAmendCommand.cjs.map +1 -1
  191. package/dist/production/src/commands/migrations/MigrationAmendCommand.js +26 -4
  192. package/dist/production/src/commands/migrations/MigrationAmendCommand.js.map +1 -1
  193. package/dist/production/src/commands/migrations/MigrationDescribeCommand.cjs.map +1 -1
  194. package/dist/production/src/commands/migrations/MigrationDescribeCommand.js.map +1 -1
  195. package/dist/production/src/commands/migrations/MigrationDiffCommand.cjs +39 -3
  196. package/dist/production/src/commands/migrations/MigrationDiffCommand.cjs.map +1 -1
  197. package/dist/production/src/commands/migrations/MigrationDiffCommand.js +39 -3
  198. package/dist/production/src/commands/migrations/MigrationDiffCommand.js.map +1 -1
  199. package/dist/production/src/commands/migrations/MigrationExecuteCommand.cjs +3 -1
  200. package/dist/production/src/commands/migrations/MigrationExecuteCommand.cjs.map +1 -1
  201. package/dist/production/src/commands/migrations/MigrationExecuteCommand.js +3 -1
  202. package/dist/production/src/commands/migrations/MigrationExecuteCommand.js.map +1 -1
  203. package/dist/production/src/commands/migrations/MigrationInitStateCommand.cjs +26 -0
  204. package/dist/production/src/commands/migrations/MigrationInitStateCommand.cjs.map +1 -0
  205. package/dist/production/src/commands/migrations/MigrationInitStateCommand.js +26 -0
  206. package/dist/production/src/commands/migrations/MigrationInitStateCommand.js.map +1 -0
  207. package/dist/production/src/commands/migrations/MigrationRebaseCommand.cjs.map +1 -1
  208. package/dist/production/src/commands/migrations/MigrationRebaseCommand.js.map +1 -1
  209. package/dist/production/src/commands/migrations/MigrationSnapshotCommand.cjs +28 -0
  210. package/dist/production/src/commands/migrations/MigrationSnapshotCommand.cjs.map +1 -0
  211. package/dist/production/src/commands/migrations/MigrationSnapshotCommand.js +28 -0
  212. package/dist/production/src/commands/migrations/MigrationSnapshotCommand.js.map +1 -0
  213. package/dist/production/src/commands/migrations/MigrationStatusCommand.cjs.map +1 -1
  214. package/dist/production/src/commands/migrations/MigrationStatusCommand.js.map +1 -1
  215. package/dist/production/src/commands/migrations/MigrationVerifySnapshotCommand.cjs +23 -0
  216. package/dist/production/src/commands/migrations/MigrationVerifySnapshotCommand.cjs.map +1 -0
  217. package/dist/production/src/commands/migrations/MigrationVerifySnapshotCommand.js +23 -0
  218. package/dist/production/src/commands/migrations/MigrationVerifySnapshotCommand.js.map +1 -0
  219. package/dist/production/src/commands/project/ProjectGenerateDocumentationCommand.cjs +2 -2
  220. package/dist/production/src/commands/project/ProjectGenerateDocumentationCommand.cjs.map +1 -1
  221. package/dist/production/src/commands/project/ProjectGenerateDocumentationCommand.js.map +1 -1
  222. package/dist/production/src/commands/project/ProjectPrintSchemaCommand.cjs.map +1 -1
  223. package/dist/production/src/commands/project/ProjectPrintSchemaCommand.js.map +1 -1
  224. package/dist/production/src/commands/project/ProjectValidateCommand.cjs.map +1 -1
  225. package/dist/production/src/commands/project/ProjectValidateCommand.js.map +1 -1
  226. package/dist/production/src/commands/tenant/TenantApplyCommand.cjs +39 -0
  227. package/dist/production/src/commands/tenant/TenantApplyCommand.cjs.map +1 -0
  228. package/dist/production/src/commands/tenant/TenantApplyCommand.js +39 -0
  229. package/dist/production/src/commands/tenant/TenantApplyCommand.js.map +1 -0
  230. package/dist/production/src/commands/transfer/ExportCommand.cjs.map +1 -1
  231. package/dist/production/src/commands/transfer/ExportCommand.js.map +1 -1
  232. package/dist/production/src/commands/transfer/ImportCommand.cjs.map +1 -1
  233. package/dist/production/src/commands/transfer/ImportCommand.js.map +1 -1
  234. package/dist/production/src/commands/transfer/TransferCommand.cjs.map +1 -1
  235. package/dist/production/src/commands/transfer/TransferCommand.js.map +1 -1
  236. package/dist/production/src/commands/workspace/WorkspaceUpdateApiCommand.cjs.map +1 -1
  237. package/dist/production/src/commands/workspace/WorkspaceUpdateApiCommand.js.map +1 -1
  238. package/dist/production/src/consts.cjs +2 -2
  239. package/dist/production/src/consts.cjs.map +1 -1
  240. package/dist/production/src/dic.cjs +60 -10
  241. package/dist/production/src/dic.cjs.map +1 -1
  242. package/dist/production/src/dic.js +61 -11
  243. package/dist/production/src/dic.js.map +1 -1
  244. package/dist/production/src/lib/SystemClientProvider.cjs.map +1 -1
  245. package/dist/production/src/lib/SystemClientProvider.js.map +1 -1
  246. package/dist/production/src/lib/TenantClientProvider.cjs.map +1 -1
  247. package/dist/production/src/lib/TenantClientProvider.js.map +1 -1
  248. package/dist/production/src/lib/VersionChecker.cjs +2 -2
  249. package/dist/production/src/lib/VersionChecker.cjs.map +1 -1
  250. package/dist/production/src/lib/VersionChecker.js.map +1 -1
  251. package/dist/production/src/lib/admin/AdminClient.cjs.map +1 -1
  252. package/dist/production/src/lib/admin/AdminClient.js.map +1 -1
  253. package/dist/production/src/lib/admin/AdminDeployer.cjs.map +1 -1
  254. package/dist/production/src/lib/admin/AdminDeployer.js.map +1 -1
  255. package/dist/production/src/lib/fs/DockerComposeManager.cjs +10 -10
  256. package/dist/production/src/lib/fs/DockerComposeManager.cjs.map +1 -1
  257. package/dist/production/src/lib/fs/DockerComposeManager.js.map +1 -1
  258. package/dist/production/src/lib/fs/YamlHandler.cjs.map +1 -1
  259. package/dist/production/src/lib/fs/YamlHandler.js.map +1 -1
  260. package/dist/production/src/lib/js/EsBuildBuilder.cjs.map +1 -1
  261. package/dist/production/src/lib/js/EsBuildBuilder.js.map +1 -1
  262. package/dist/production/src/lib/js/EvalExecutor.cjs.map +1 -1
  263. package/dist/production/src/lib/js/EvalExecutor.js.map +1 -1
  264. package/dist/production/src/lib/js/JsCodeRunner.cjs.map +1 -1
  265. package/dist/production/src/lib/js/JsCodeRunner.js.map +1 -1
  266. package/dist/production/src/lib/migrations/MigrationExecutionFacade.cjs +78 -18
  267. package/dist/production/src/lib/migrations/MigrationExecutionFacade.cjs.map +1 -1
  268. package/dist/production/src/lib/migrations/MigrationExecutionFacade.js +79 -19
  269. package/dist/production/src/lib/migrations/MigrationExecutionFacade.js.map +1 -1
  270. package/dist/production/src/lib/migrations/MigrationPrinter.cjs.map +1 -1
  271. package/dist/production/src/lib/migrations/MigrationPrinter.js.map +1 -1
  272. package/dist/production/src/lib/migrations/MigrationRebaseFacade.cjs +5 -1
  273. package/dist/production/src/lib/migrations/MigrationRebaseFacade.cjs.map +1 -1
  274. package/dist/production/src/lib/migrations/MigrationRebaseFacade.js +5 -1
  275. package/dist/production/src/lib/migrations/MigrationRebaseFacade.js.map +1 -1
  276. package/dist/production/src/lib/migrations/MigrationSnapshotFacade.cjs +171 -0
  277. package/dist/production/src/lib/migrations/MigrationSnapshotFacade.cjs.map +1 -0
  278. package/dist/production/src/lib/migrations/MigrationSnapshotFacade.js +171 -0
  279. package/dist/production/src/lib/migrations/MigrationSnapshotFacade.js.map +1 -0
  280. package/dist/production/src/lib/migrations/MigrationsStatusFacade.cjs.map +1 -1
  281. package/dist/production/src/lib/migrations/MigrationsStatusFacade.js.map +1 -1
  282. package/dist/production/src/lib/migrations/MigrationsValidator.cjs.map +1 -1
  283. package/dist/production/src/lib/migrations/MigrationsValidator.js.map +1 -1
  284. package/dist/production/src/lib/project/RemoteProjectProvider.cjs.map +1 -1
  285. package/dist/production/src/lib/project/RemoteProjectProvider.js.map +1 -1
  286. package/dist/production/src/lib/project/RemoteProjectResolver.cjs.map +1 -1
  287. package/dist/production/src/lib/project/RemoteProjectResolver.js.map +1 -1
  288. package/dist/production/src/lib/project/docs/components/EntityInfo.cjs.map +1 -1
  289. package/dist/production/src/lib/project/docs/components/EntityInfo.js.map +1 -1
  290. package/dist/production/src/lib/project/docs/components/EntityLink.cjs.map +1 -1
  291. package/dist/production/src/lib/project/docs/components/EntityLink.js.map +1 -1
  292. package/dist/production/src/lib/project/docs/components/FieldLink.cjs.map +1 -1
  293. package/dist/production/src/lib/project/docs/components/FieldLink.js.map +1 -1
  294. package/dist/production/src/lib/project/docs/components/FieldPermissions.cjs.map +1 -1
  295. package/dist/production/src/lib/project/docs/components/FieldPermissions.js.map +1 -1
  296. package/dist/production/src/lib/project/docs/components/FieldType.cjs.map +1 -1
  297. package/dist/production/src/lib/project/docs/components/FieldType.js.map +1 -1
  298. package/dist/production/src/lib/project/docs/components/OnDelete.cjs.map +1 -1
  299. package/dist/production/src/lib/project/docs/components/OnDelete.js.map +1 -1
  300. package/dist/production/src/lib/project/docs/components/ProjectInfo.cjs.map +1 -1
  301. package/dist/production/src/lib/project/docs/components/ProjectInfo.js.map +1 -1
  302. package/dist/production/src/lib/project/docs/projectDescribe.cjs.map +1 -1
  303. package/dist/production/src/lib/project/docs/projectDescribe.js.map +1 -1
  304. package/dist/production/src/lib/schema/SchemaLoader.cjs +5 -5
  305. package/dist/production/src/lib/schema/SchemaLoader.cjs.map +1 -1
  306. package/dist/production/src/lib/schema/SchemaLoader.js.map +1 -1
  307. package/dist/production/src/lib/schema/SchemaValidationHelper.cjs.map +1 -1
  308. package/dist/production/src/lib/schema/SchemaValidationHelper.js.map +1 -1
  309. package/dist/production/src/lib/tenant/TenantClient.cjs +75 -12
  310. package/dist/production/src/lib/tenant/TenantClient.cjs.map +1 -1
  311. package/dist/production/src/lib/tenant/TenantClient.js +75 -12
  312. package/dist/production/src/lib/tenant/TenantClient.js.map +1 -1
  313. package/dist/production/src/lib/tenant/TenantConfigApplier.cjs +55 -0
  314. package/dist/production/src/lib/tenant/TenantConfigApplier.cjs.map +1 -0
  315. package/dist/production/src/lib/tenant/TenantConfigApplier.js +55 -0
  316. package/dist/production/src/lib/tenant/TenantConfigApplier.js.map +1 -0
  317. package/dist/production/src/lib/tenant/TenantConfigLoader.cjs +32 -0
  318. package/dist/production/src/lib/tenant/TenantConfigLoader.cjs.map +1 -0
  319. package/dist/production/src/lib/tenant/TenantConfigLoader.js +32 -0
  320. package/dist/production/src/lib/tenant/TenantConfigLoader.js.map +1 -0
  321. package/dist/production/src/lib/tenant/tenantConfig.cjs +5 -0
  322. package/dist/production/src/lib/tenant/tenantConfig.cjs.map +1 -0
  323. package/dist/production/src/lib/tenant/tenantConfig.js +5 -0
  324. package/dist/production/src/lib/tenant/tenantConfig.js.map +1 -0
  325. package/dist/production/src/lib/transfer/DataTransferClient.cjs.map +1 -1
  326. package/dist/production/src/lib/transfer/DataTransferClient.js.map +1 -1
  327. package/dist/production/src/lib/workspace/WorkspaceResolver.cjs +6 -6
  328. package/dist/production/src/lib/workspace/WorkspaceResolver.cjs.map +1 -1
  329. package/dist/production/src/lib/workspace/WorkspaceResolver.js.map +1 -1
  330. package/dist/types/commands/actions/ActionsGetEventCommand.d.ts +1 -1
  331. package/dist/types/commands/actions/ActionsGetEventCommand.d.ts.map +1 -1
  332. package/dist/types/commands/actions/ActionsListFailedEventsCommand.d.ts +1 -1
  333. package/dist/types/commands/actions/ActionsListFailedEventsCommand.d.ts.map +1 -1
  334. package/dist/types/commands/actions/ActionsListVariablesCommand.d.ts +1 -1
  335. package/dist/types/commands/actions/ActionsListVariablesCommand.d.ts.map +1 -1
  336. package/dist/types/commands/actions/ActionsRetryEventCommand.d.ts +1 -1
  337. package/dist/types/commands/actions/ActionsRetryEventCommand.d.ts.map +1 -1
  338. package/dist/types/commands/actions/ActionsSetVariablesCommand.d.ts +1 -1
  339. package/dist/types/commands/actions/ActionsSetVariablesCommand.d.ts.map +1 -1
  340. package/dist/types/commands/actions/ActionsStopEventCommand.d.ts +1 -1
  341. package/dist/types/commands/actions/ActionsStopEventCommand.d.ts.map +1 -1
  342. package/dist/types/commands/deploy/DeployCommand.d.ts +7 -6
  343. package/dist/types/commands/deploy/DeployCommand.d.ts.map +1 -1
  344. package/dist/types/commands/deploy/index.d.ts +1 -1
  345. package/dist/types/commands/deploy/index.d.ts.map +1 -1
  346. package/dist/types/commands/index.d.ts +6 -5
  347. package/dist/types/commands/index.d.ts.map +1 -1
  348. package/dist/types/commands/migrations/MigrationAmendCommand.d.ts +8 -7
  349. package/dist/types/commands/migrations/MigrationAmendCommand.d.ts.map +1 -1
  350. package/dist/types/commands/migrations/MigrationDescribeCommand.d.ts +1 -1
  351. package/dist/types/commands/migrations/MigrationDescribeCommand.d.ts.map +1 -1
  352. package/dist/types/commands/migrations/MigrationDiffCommand.d.ts +8 -5
  353. package/dist/types/commands/migrations/MigrationDiffCommand.d.ts.map +1 -1
  354. package/dist/types/commands/migrations/MigrationExecuteCommand.d.ts +2 -1
  355. package/dist/types/commands/migrations/MigrationExecuteCommand.d.ts.map +1 -1
  356. package/dist/types/commands/migrations/MigrationInitStateCommand.d.ts +14 -0
  357. package/dist/types/commands/migrations/MigrationInitStateCommand.d.ts.map +1 -0
  358. package/dist/types/commands/migrations/MigrationRebaseCommand.d.ts +1 -1
  359. package/dist/types/commands/migrations/MigrationRebaseCommand.d.ts.map +1 -1
  360. package/dist/types/commands/migrations/MigrationSnapshotCommand.d.ts +12 -0
  361. package/dist/types/commands/migrations/MigrationSnapshotCommand.d.ts.map +1 -0
  362. package/dist/types/commands/migrations/MigrationStatusCommand.d.ts +3 -3
  363. package/dist/types/commands/migrations/MigrationStatusCommand.d.ts.map +1 -1
  364. package/dist/types/commands/migrations/MigrationVerifySnapshotCommand.d.ts +12 -0
  365. package/dist/types/commands/migrations/MigrationVerifySnapshotCommand.d.ts.map +1 -0
  366. package/dist/types/commands/migrations/index.d.ts +10 -7
  367. package/dist/types/commands/migrations/index.d.ts.map +1 -1
  368. package/dist/types/commands/misc/index.d.ts +1 -1
  369. package/dist/types/commands/misc/index.d.ts.map +1 -1
  370. package/dist/types/commands/project/ProjectGenerateDocumentationCommand.d.ts +1 -1
  371. package/dist/types/commands/project/ProjectGenerateDocumentationCommand.d.ts.map +1 -1
  372. package/dist/types/commands/project/ProjectPrintSchemaCommand.d.ts +1 -1
  373. package/dist/types/commands/project/ProjectPrintSchemaCommand.d.ts.map +1 -1
  374. package/dist/types/commands/project/ProjectValidateCommand.d.ts +2 -2
  375. package/dist/types/commands/project/ProjectValidateCommand.d.ts.map +1 -1
  376. package/dist/types/commands/project/index.d.ts +3 -3
  377. package/dist/types/commands/project/index.d.ts.map +1 -1
  378. package/dist/types/commands/tenant/TenantApplyCommand.d.ts +21 -0
  379. package/dist/types/commands/tenant/TenantApplyCommand.d.ts.map +1 -0
  380. package/dist/types/commands/tenant/index.d.ts +2 -0
  381. package/dist/types/commands/tenant/index.d.ts.map +1 -0
  382. package/dist/types/commands/transfer/ExportCommand.d.ts +2 -2
  383. package/dist/types/commands/transfer/ExportCommand.d.ts.map +1 -1
  384. package/dist/types/commands/transfer/ImportCommand.d.ts +2 -2
  385. package/dist/types/commands/transfer/ImportCommand.d.ts.map +1 -1
  386. package/dist/types/commands/transfer/TransferCommand.d.ts +2 -2
  387. package/dist/types/commands/transfer/TransferCommand.d.ts.map +1 -1
  388. package/dist/types/commands/transfer/index.d.ts +3 -3
  389. package/dist/types/commands/transfer/index.d.ts.map +1 -1
  390. package/dist/types/commands/workspace/WorkspaceUpdateApiCommand.d.ts +1 -1
  391. package/dist/types/commands/workspace/WorkspaceUpdateApiCommand.d.ts.map +1 -1
  392. package/dist/types/commands/workspace/index.d.ts +1 -1
  393. package/dist/types/commands/workspace/index.d.ts.map +1 -1
  394. package/dist/types/dic.d.ts +54 -32
  395. package/dist/types/dic.d.ts.map +1 -1
  396. package/dist/types/index.d.ts +2 -0
  397. package/dist/types/index.d.ts.map +1 -0
  398. package/dist/types/lib/SystemClientProvider.d.ts +1 -1
  399. package/dist/types/lib/SystemClientProvider.d.ts.map +1 -1
  400. package/dist/types/lib/TenantClientProvider.d.ts +2 -2
  401. package/dist/types/lib/TenantClientProvider.d.ts.map +1 -1
  402. package/dist/types/lib/VersionChecker.d.ts +1 -1
  403. package/dist/types/lib/VersionChecker.d.ts.map +1 -1
  404. package/dist/types/lib/admin/AdminClient.d.ts +1 -1
  405. package/dist/types/lib/admin/AdminClient.d.ts.map +1 -1
  406. package/dist/types/lib/admin/AdminDeployer.d.ts +3 -3
  407. package/dist/types/lib/admin/AdminDeployer.d.ts.map +1 -1
  408. package/dist/types/lib/fs/DockerComposeManager.d.ts +2 -2
  409. package/dist/types/lib/fs/DockerComposeManager.d.ts.map +1 -1
  410. package/dist/types/lib/fs/YamlHandler.d.ts +2 -2
  411. package/dist/types/lib/fs/YamlHandler.d.ts.map +1 -1
  412. package/dist/types/lib/js/EsBuildBuilder.d.ts +1 -1
  413. package/dist/types/lib/js/EsBuildBuilder.d.ts.map +1 -1
  414. package/dist/types/lib/js/EvalExecutor.d.ts +1 -1
  415. package/dist/types/lib/js/EvalExecutor.d.ts.map +1 -1
  416. package/dist/types/lib/js/JsCodeRunner.d.ts +2 -2
  417. package/dist/types/lib/js/JsCodeRunner.d.ts.map +1 -1
  418. package/dist/types/lib/migrations/MigrationExecutionFacade.d.ts +13 -8
  419. package/dist/types/lib/migrations/MigrationExecutionFacade.d.ts.map +1 -1
  420. package/dist/types/lib/migrations/MigrationRebaseFacade.d.ts +5 -4
  421. package/dist/types/lib/migrations/MigrationRebaseFacade.d.ts.map +1 -1
  422. package/dist/types/lib/migrations/MigrationSnapshotFacade.d.ts +28 -0
  423. package/dist/types/lib/migrations/MigrationSnapshotFacade.d.ts.map +1 -0
  424. package/dist/types/lib/migrations/MigrationsStatusFacade.d.ts +2 -2
  425. package/dist/types/lib/migrations/MigrationsStatusFacade.d.ts.map +1 -1
  426. package/dist/types/lib/project/RemoteProjectProvider.d.ts +1 -1
  427. package/dist/types/lib/project/RemoteProjectProvider.d.ts.map +1 -1
  428. package/dist/types/lib/project/RemoteProjectResolver.d.ts +2 -2
  429. package/dist/types/lib/project/RemoteProjectResolver.d.ts.map +1 -1
  430. package/dist/types/lib/project/docs/components/EntityInfo.d.ts +1 -1
  431. package/dist/types/lib/project/docs/components/EntityInfo.d.ts.map +1 -1
  432. package/dist/types/lib/project/docs/components/OnDelete.d.ts +1 -1
  433. package/dist/types/lib/project/docs/components/OnDelete.d.ts.map +1 -1
  434. package/dist/types/lib/schema/SchemaLoader.d.ts +2 -2
  435. package/dist/types/lib/schema/SchemaLoader.d.ts.map +1 -1
  436. package/dist/types/lib/tenant/TenantClient.d.ts +15 -0
  437. package/dist/types/lib/tenant/TenantClient.d.ts.map +1 -1
  438. package/dist/types/lib/tenant/TenantConfigApplier.d.ts +18 -0
  439. package/dist/types/lib/tenant/TenantConfigApplier.d.ts.map +1 -0
  440. package/dist/types/lib/tenant/TenantConfigLoader.d.ts +16 -0
  441. package/dist/types/lib/tenant/TenantConfigLoader.d.ts.map +1 -0
  442. package/dist/types/lib/tenant/tenantConfig.d.ts +74 -0
  443. package/dist/types/lib/tenant/tenantConfig.d.ts.map +1 -0
  444. package/dist/types/lib/transfer/DataTransferClient.d.ts +1 -1
  445. package/dist/types/lib/transfer/DataTransferClient.d.ts.map +1 -1
  446. package/dist/types/lib/workspace/WorkspaceResolver.d.ts +2 -2
  447. package/dist/types/lib/workspace/WorkspaceResolver.d.ts.map +1 -1
  448. package/dist/types/tsconfig.tsbuildinfo +1 -1
  449. package/package.json +33 -15
  450. package/src/commands/actions/ActionsGetEventCommand.ts +2 -2
  451. package/src/commands/actions/ActionsListFailedEventsCommand.ts +2 -2
  452. package/src/commands/actions/ActionsListVariablesCommand.ts +2 -2
  453. package/src/commands/actions/ActionsRetryEventCommand.ts +2 -2
  454. package/src/commands/actions/ActionsSetVariablesCommand.ts +2 -2
  455. package/src/commands/actions/ActionsStopEventCommand.ts +2 -2
  456. package/src/commands/deploy/DeployCommand.ts +13 -8
  457. package/src/commands/deploy/index.ts +1 -1
  458. package/src/commands/index.ts +6 -5
  459. package/src/commands/migrations/MigrationAmendCommand.ts +38 -10
  460. package/src/commands/migrations/MigrationDescribeCommand.ts +1 -1
  461. package/src/commands/migrations/MigrationDiffCommand.ts +50 -6
  462. package/src/commands/migrations/MigrationExecuteCommand.ts +6 -1
  463. package/src/commands/migrations/MigrationInitStateCommand.ts +34 -0
  464. package/src/commands/migrations/MigrationRebaseCommand.ts +1 -1
  465. package/src/commands/migrations/MigrationSnapshotCommand.ts +34 -0
  466. package/src/commands/migrations/MigrationStatusCommand.ts +3 -3
  467. package/src/commands/migrations/MigrationVerifySnapshotCommand.ts +28 -0
  468. package/src/commands/migrations/index.ts +10 -7
  469. package/src/commands/misc/index.ts +1 -1
  470. package/src/commands/project/ProjectGenerateDocumentationCommand.ts +3 -3
  471. package/src/commands/project/ProjectPrintSchemaCommand.ts +2 -2
  472. package/src/commands/project/ProjectValidateCommand.ts +3 -3
  473. package/src/commands/project/index.ts +3 -3
  474. package/src/commands/tenant/TenantApplyCommand.ts +57 -0
  475. package/src/commands/tenant/index.ts +1 -0
  476. package/src/commands/transfer/ExportCommand.ts +4 -4
  477. package/src/commands/transfer/ImportCommand.ts +6 -6
  478. package/src/commands/transfer/TransferCommand.ts +6 -6
  479. package/src/commands/transfer/index.ts +3 -3
  480. package/src/commands/workspace/WorkspaceUpdateApiCommand.ts +2 -2
  481. package/src/commands/workspace/index.ts +1 -1
  482. package/src/dic.ts +103 -37
  483. package/src/index.ts +1 -0
  484. package/src/lib/SystemClientProvider.ts +1 -1
  485. package/src/lib/TenantClientProvider.ts +2 -2
  486. package/src/lib/VersionChecker.ts +2 -2
  487. package/src/lib/admin/AdminClient.ts +2 -2
  488. package/src/lib/admin/AdminDeployer.ts +3 -3
  489. package/src/lib/fs/DockerComposeManager.ts +2 -2
  490. package/src/lib/fs/YamlHandler.ts +2 -2
  491. package/src/lib/js/EsBuildBuilder.ts +1 -1
  492. package/src/lib/js/EvalExecutor.ts +1 -1
  493. package/src/lib/js/JsCodeRunner.ts +2 -2
  494. package/src/lib/migrations/MigrationExecutionFacade.ts +117 -23
  495. package/src/lib/migrations/MigrationPrinter.ts +1 -1
  496. package/src/lib/migrations/MigrationRebaseFacade.ts +10 -3
  497. package/src/lib/migrations/MigrationSnapshotFacade.ts +218 -0
  498. package/src/lib/migrations/MigrationsStatusFacade.ts +2 -2
  499. package/src/lib/migrations/MigrationsValidator.ts +1 -1
  500. package/src/lib/project/RemoteProjectProvider.ts +1 -1
  501. package/src/lib/project/RemoteProjectResolver.ts +3 -3
  502. package/src/lib/project/docs/components/EntityInfo.tsx +6 -6
  503. package/src/lib/project/docs/components/EntityLink.tsx +1 -1
  504. package/src/lib/project/docs/components/FieldLink.tsx +2 -2
  505. package/src/lib/project/docs/components/FieldPermissions.tsx +1 -1
  506. package/src/lib/project/docs/components/FieldType.tsx +2 -2
  507. package/src/lib/project/docs/components/OnDelete.tsx +3 -3
  508. package/src/lib/project/docs/components/ProjectInfo.tsx +3 -3
  509. package/src/lib/project/docs/projectDescribe.tsx +2 -2
  510. package/src/lib/schema/SchemaLoader.ts +2 -2
  511. package/src/lib/schema/SchemaValidationHelper.ts +1 -1
  512. package/src/lib/tenant/TenantClient.ts +123 -14
  513. package/src/lib/tenant/TenantConfigApplier.ts +72 -0
  514. package/src/lib/tenant/TenantConfigLoader.ts +41 -0
  515. package/src/lib/tenant/tenantConfig.ts +101 -0
  516. package/src/lib/transfer/DataTransferClient.ts +2 -2
  517. package/src/lib/workspace/WorkspaceResolver.ts +2 -2
  518. package/src/run.ts +6 -6
  519. package/src/tsconfig.json +1 -0
  520. package/tenant.config.example.ts +64 -0
  521. package/tests/cases/unit/MigrationAmendCommand.test.ts +156 -0
  522. package/tests/cases/unit/MigrationExecutionFacade.test.ts +81 -0
  523. package/tests/cases/unit/MigrationRebaseFacade.test.ts +87 -0
  524. package/tests/cases/unit/MigrationSnapshotFacade.test.ts +243 -0
  525. package/tests/tenantConfigApplier.test.ts +87 -0
@@ -1 +1 @@
1
- {"version":3,"file":"FieldPermissions.cjs","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/FieldPermissions.tsx"],"sourcesContent":["import { Fragment, h } from 'preact'\nimport { Acl } from '@contember/schema'\nimport { SinglePermission } from './SinglePermission'\n\nexport const FieldPermissions = ({ entityPermissions, field }: { entityPermissions?: Acl.EntityPermissions; field: string }) => {\n\tconst readPermissions = entityPermissions?.operations.read?.[field]\n\tconst updatePermissions = entityPermissions?.operations.update?.[field]\n\tconst createPermissions = entityPermissions?.operations.create?.[field]\n\treturn (\n\t\t<Fragment>\n\t\t\t<SinglePermission value={'C'} predicate={createPermissions} />\n\t\t\t<SinglePermission value={'R'} predicate={readPermissions} />\n\t\t\t<SinglePermission value={'U'} predicate={updatePermissions} />\n\t\t</Fragment>\n\t)\n}\n"],"names":["Fragment","jsx","SinglePermission"],"mappings":";;;;;AAIO,MAAM,mBAAmB,CAAC,EAAE,mBAAmB,YAA0E;AAC/H,QAAM,kBAAkB,mBAAmB,WAAW,OAAO,KAAK;AAClE,QAAM,oBAAoB,mBAAmB,WAAW,SAAS,KAAK;AACtE,QAAM,oBAAoB,mBAAmB,WAAW,SAAS,KAAK;AACtE,yCACEA,iBAAA,EACA,UAAA;AAAA,IAAAC,2BAAAA,IAACC,iBAAAA,kBAAA,EAAiB,OAAO,KAAK,WAAW,mBAAmB;AAAA,IAC5DD,2BAAAA,IAACC,iBAAAA,kBAAA,EAAiB,OAAO,KAAK,WAAW,iBAAiB;AAAA,IAC1DD,2BAAAA,IAACC,iBAAAA,kBAAA,EAAiB,OAAO,KAAK,WAAW,kBAAA,CAAmB;AAAA,EAAA,GAC7D;AAEF;;"}
1
+ {"version":3,"file":"FieldPermissions.cjs","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/FieldPermissions.tsx"],"sourcesContent":["import { Fragment, h } from 'preact'\nimport { Acl } from '@contember/schema'\nimport { SinglePermission } from './SinglePermission.js'\n\nexport const FieldPermissions = ({ entityPermissions, field }: { entityPermissions?: Acl.EntityPermissions; field: string }) => {\n\tconst readPermissions = entityPermissions?.operations.read?.[field]\n\tconst updatePermissions = entityPermissions?.operations.update?.[field]\n\tconst createPermissions = entityPermissions?.operations.create?.[field]\n\treturn (\n\t\t<Fragment>\n\t\t\t<SinglePermission value={'C'} predicate={createPermissions} />\n\t\t\t<SinglePermission value={'R'} predicate={readPermissions} />\n\t\t\t<SinglePermission value={'U'} predicate={updatePermissions} />\n\t\t</Fragment>\n\t)\n}\n"],"names":["Fragment","jsx","SinglePermission"],"mappings":";;;;;AAIO,MAAM,mBAAmB,CAAC,EAAE,mBAAmB,YAA0E;AAC/H,QAAM,kBAAkB,mBAAmB,WAAW,OAAO,KAAK;AAClE,QAAM,oBAAoB,mBAAmB,WAAW,SAAS,KAAK;AACtE,QAAM,oBAAoB,mBAAmB,WAAW,SAAS,KAAK;AACtE,yCACEA,iBAAA,EACA,UAAA;AAAA,IAAAC,2BAAAA,IAACC,iBAAAA,kBAAA,EAAiB,OAAO,KAAK,WAAW,mBAAmB;AAAA,IAC5DD,2BAAAA,IAACC,iBAAAA,kBAAA,EAAiB,OAAO,KAAK,WAAW,iBAAiB;AAAA,IAC1DD,2BAAAA,IAACC,iBAAAA,kBAAA,EAAiB,OAAO,KAAK,WAAW,kBAAA,CAAmB;AAAA,EAAA,GAC7D;AAEF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FieldPermissions.js","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/FieldPermissions.tsx"],"sourcesContent":["import { Fragment, h } from 'preact'\nimport { Acl } from '@contember/schema'\nimport { SinglePermission } from './SinglePermission'\n\nexport const FieldPermissions = ({ entityPermissions, field }: { entityPermissions?: Acl.EntityPermissions; field: string }) => {\n\tconst readPermissions = entityPermissions?.operations.read?.[field]\n\tconst updatePermissions = entityPermissions?.operations.update?.[field]\n\tconst createPermissions = entityPermissions?.operations.create?.[field]\n\treturn (\n\t\t<Fragment>\n\t\t\t<SinglePermission value={'C'} predicate={createPermissions} />\n\t\t\t<SinglePermission value={'R'} predicate={readPermissions} />\n\t\t\t<SinglePermission value={'U'} predicate={updatePermissions} />\n\t\t</Fragment>\n\t)\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,mBAAmB,CAAC,EAAE,mBAAmB,YAA0E;AAC/H,QAAM,kBAAkB,mBAAmB,WAAW,OAAO,KAAK;AAClE,QAAM,oBAAoB,mBAAmB,WAAW,SAAS,KAAK;AACtE,QAAM,oBAAoB,mBAAmB,WAAW,SAAS,KAAK;AACtE,8BACE,UAAA,EACA,UAAA;AAAA,IAAA,oBAAC,kBAAA,EAAiB,OAAO,KAAK,WAAW,mBAAmB;AAAA,IAC5D,oBAAC,kBAAA,EAAiB,OAAO,KAAK,WAAW,iBAAiB;AAAA,IAC1D,oBAAC,kBAAA,EAAiB,OAAO,KAAK,WAAW,kBAAA,CAAmB;AAAA,EAAA,GAC7D;AAEF;"}
1
+ {"version":3,"file":"FieldPermissions.js","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/FieldPermissions.tsx"],"sourcesContent":["import { Fragment, h } from 'preact'\nimport { Acl } from '@contember/schema'\nimport { SinglePermission } from './SinglePermission.js'\n\nexport const FieldPermissions = ({ entityPermissions, field }: { entityPermissions?: Acl.EntityPermissions; field: string }) => {\n\tconst readPermissions = entityPermissions?.operations.read?.[field]\n\tconst updatePermissions = entityPermissions?.operations.update?.[field]\n\tconst createPermissions = entityPermissions?.operations.create?.[field]\n\treturn (\n\t\t<Fragment>\n\t\t\t<SinglePermission value={'C'} predicate={createPermissions} />\n\t\t\t<SinglePermission value={'R'} predicate={readPermissions} />\n\t\t\t<SinglePermission value={'U'} predicate={updatePermissions} />\n\t\t</Fragment>\n\t)\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,mBAAmB,CAAC,EAAE,mBAAmB,YAA0E;AAC/H,QAAM,kBAAkB,mBAAmB,WAAW,OAAO,KAAK;AAClE,QAAM,oBAAoB,mBAAmB,WAAW,SAAS,KAAK;AACtE,QAAM,oBAAoB,mBAAmB,WAAW,SAAS,KAAK;AACtE,8BACE,UAAA,EACA,UAAA;AAAA,IAAA,oBAAC,kBAAA,EAAiB,OAAO,KAAK,WAAW,mBAAmB;AAAA,IAC5D,oBAAC,kBAAA,EAAiB,OAAO,KAAK,WAAW,iBAAiB;AAAA,IAC1D,oBAAC,kBAAA,EAAiB,OAAO,KAAK,WAAW,kBAAA,CAAmB;AAAA,EAAA,GAC7D;AAEF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FieldType.cjs","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/FieldType.tsx"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { Fragment, h } from 'preact'\nimport { EntityLink } from './EntityLink'\nimport { FieldLink } from './FieldLink'\n\nexport const FieldType = ({ field }: { field: Model.AnyField }) => {\n\tif (field.type === 'ManyHasMany') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EntityLink entity={field.target} />[] <TargetField field={field} /> (m:n)\n\t\t\t</>\n\t\t)\n\t} else if (field.type === 'OneHasMany') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EntityLink entity={field.target} />[] <TargetField field={field} /> (1:n)\n\t\t\t</>\n\t\t)\n\t} else if (field.type === 'OneHasOne') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<NullableMark field={field} />\n\t\t\t\t<EntityLink entity={field.target} /> <TargetField field={field} /> (1:1)\n\t\t\t</>\n\t\t)\n\t} else if (field.type === 'ManyHasOne') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<NullableMark field={field} />\n\t\t\t\t<EntityLink entity={field.target} /> <TargetField field={field} /> (m:1)\n\t\t\t</>\n\t\t)\n\t} else {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<NullableMark field={field} />\n\t\t\t\t{field.type}\n\t\t\t</>\n\t\t)\n\t}\n}\n\nconst TargetField = ({ field }: { field: Model.AnyRelation }) => {\n\tif ('ownedBy' in field) {\n\t\treturn <FieldLink entity={field.target} field={field.ownedBy} noEntityLabel />\n\t}\n\tif (field.inversedBy) {\n\t\treturn <FieldLink entity={field.target} field={field.inversedBy} noEntityLabel />\n\t}\n\treturn null\n}\n\nconst NullableMark = (props: { field: Model.NullableRelation | Model.AnyColumn }) => {\n\treturn props.field.nullable ? <span class={'font-bold color-black'}>?</span> : null\n}\n"],"names":["jsxs","Fragment","jsx","EntityLink","FieldLink"],"mappings":";;;;;AAKO,MAAM,YAAY,CAAC,EAAE,YAAuC;AAClE,MAAI,MAAM,SAAS,eAAe;AACjC,WACCA,2BAAAA,KAAAC,qBAAA,EACC,UAAA;AAAA,MAAAC,2BAAAA,IAACC,WAAAA,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAAGD,+BAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACrE;AAAA,EAEF,WAAW,MAAM,SAAS,cAAc;AACvC,WACCF,2BAAAA,KAAAC,qBAAA,EACC,UAAA;AAAA,MAAAC,2BAAAA,IAACC,WAAAA,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAAGD,+BAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACrE;AAAA,EAEF,WAAW,MAAM,SAAS,aAAa;AACtC,WACCF,2BAAAA,KAAAC,qBAAA,EACC,UAAA;AAAA,MAAAC,+BAAC,gBAAa,OAAc;AAAA,MAC5BA,2BAAAA,IAACC,WAAAA,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAACD,+BAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACnE;AAAA,EAEF,WAAW,MAAM,SAAS,cAAc;AACvC,WACCF,2BAAAA,KAAAC,qBAAA,EACC,UAAA;AAAA,MAAAC,+BAAC,gBAAa,OAAc;AAAA,MAC5BA,2BAAAA,IAACC,WAAAA,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAACD,+BAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACnE;AAAA,EAEF,OAAO;AACN,WACCF,2BAAAA,KAAAC,qBAAA,EACC,UAAA;AAAA,MAAAC,+BAAC,gBAAa,OAAc;AAAA,MAC3B,MAAM;AAAA,IAAA,GACR;AAAA,EAEF;AACD;AAEA,MAAM,cAAc,CAAC,EAAE,YAA0C;AAChE,MAAI,aAAa,OAAO;AACvB,WAAOA,+BAACE,UAAAA,aAAU,QAAQ,MAAM,QAAQ,OAAO,MAAM,SAAS,eAAa,KAAA,CAAC;AAAA,EAC7E;AACA,MAAI,MAAM,YAAY;AACrB,WAAOF,+BAACE,UAAAA,aAAU,QAAQ,MAAM,QAAQ,OAAO,MAAM,YAAY,eAAa,KAAA,CAAC;AAAA,EAChF;AACA,SAAO;AACR;AAEA,MAAM,eAAe,CAAC,UAA+D;AACpF,SAAO,MAAM,MAAM,WAAWF,2BAAAA,IAAC,UAAK,OAAO,yBAAyB,eAAC,IAAU;AAChF;;"}
1
+ {"version":3,"file":"FieldType.cjs","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/FieldType.tsx"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { Fragment, h } from 'preact'\nimport { EntityLink } from './EntityLink.js'\nimport { FieldLink } from './FieldLink.js'\n\nexport const FieldType = ({ field }: { field: Model.AnyField }) => {\n\tif (field.type === 'ManyHasMany') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EntityLink entity={field.target} />[] <TargetField field={field} /> (m:n)\n\t\t\t</>\n\t\t)\n\t} else if (field.type === 'OneHasMany') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EntityLink entity={field.target} />[] <TargetField field={field} /> (1:n)\n\t\t\t</>\n\t\t)\n\t} else if (field.type === 'OneHasOne') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<NullableMark field={field} />\n\t\t\t\t<EntityLink entity={field.target} /> <TargetField field={field} /> (1:1)\n\t\t\t</>\n\t\t)\n\t} else if (field.type === 'ManyHasOne') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<NullableMark field={field} />\n\t\t\t\t<EntityLink entity={field.target} /> <TargetField field={field} /> (m:1)\n\t\t\t</>\n\t\t)\n\t} else {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<NullableMark field={field} />\n\t\t\t\t{field.type}\n\t\t\t</>\n\t\t)\n\t}\n}\n\nconst TargetField = ({ field }: { field: Model.AnyRelation }) => {\n\tif ('ownedBy' in field) {\n\t\treturn <FieldLink entity={field.target} field={field.ownedBy} noEntityLabel />\n\t}\n\tif (field.inversedBy) {\n\t\treturn <FieldLink entity={field.target} field={field.inversedBy} noEntityLabel />\n\t}\n\treturn null\n}\n\nconst NullableMark = (props: { field: Model.NullableRelation | Model.AnyColumn }) => {\n\treturn props.field.nullable ? <span class={'font-bold color-black'}>?</span> : null\n}\n"],"names":["jsxs","Fragment","jsx","EntityLink","FieldLink"],"mappings":";;;;;AAKO,MAAM,YAAY,CAAC,EAAE,YAAuC;AAClE,MAAI,MAAM,SAAS,eAAe;AACjC,WACCA,2BAAAA,KAAAC,qBAAA,EACC,UAAA;AAAA,MAAAC,2BAAAA,IAACC,WAAAA,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAAGD,+BAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACrE;AAAA,EAEF,WAAW,MAAM,SAAS,cAAc;AACvC,WACCF,2BAAAA,KAAAC,qBAAA,EACC,UAAA;AAAA,MAAAC,2BAAAA,IAACC,WAAAA,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAAGD,+BAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACrE;AAAA,EAEF,WAAW,MAAM,SAAS,aAAa;AACtC,WACCF,2BAAAA,KAAAC,qBAAA,EACC,UAAA;AAAA,MAAAC,+BAAC,gBAAa,OAAc;AAAA,MAC5BA,2BAAAA,IAACC,WAAAA,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAACD,+BAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACnE;AAAA,EAEF,WAAW,MAAM,SAAS,cAAc;AACvC,WACCF,2BAAAA,KAAAC,qBAAA,EACC,UAAA;AAAA,MAAAC,+BAAC,gBAAa,OAAc;AAAA,MAC5BA,2BAAAA,IAACC,WAAAA,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAACD,+BAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACnE;AAAA,EAEF,OAAO;AACN,WACCF,2BAAAA,KAAAC,qBAAA,EACC,UAAA;AAAA,MAAAC,+BAAC,gBAAa,OAAc;AAAA,MAC3B,MAAM;AAAA,IAAA,GACR;AAAA,EAEF;AACD;AAEA,MAAM,cAAc,CAAC,EAAE,YAA0C;AAChE,MAAI,aAAa,OAAO;AACvB,WAAOA,+BAACE,UAAAA,aAAU,QAAQ,MAAM,QAAQ,OAAO,MAAM,SAAS,eAAa,KAAA,CAAC;AAAA,EAC7E;AACA,MAAI,MAAM,YAAY;AACrB,WAAOF,+BAACE,UAAAA,aAAU,QAAQ,MAAM,QAAQ,OAAO,MAAM,YAAY,eAAa,KAAA,CAAC;AAAA,EAChF;AACA,SAAO;AACR;AAEA,MAAM,eAAe,CAAC,UAA+D;AACpF,SAAO,MAAM,MAAM,WAAWF,2BAAAA,IAAC,UAAK,OAAO,yBAAyB,eAAC,IAAU;AAChF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FieldType.js","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/FieldType.tsx"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { Fragment, h } from 'preact'\nimport { EntityLink } from './EntityLink'\nimport { FieldLink } from './FieldLink'\n\nexport const FieldType = ({ field }: { field: Model.AnyField }) => {\n\tif (field.type === 'ManyHasMany') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EntityLink entity={field.target} />[] <TargetField field={field} /> (m:n)\n\t\t\t</>\n\t\t)\n\t} else if (field.type === 'OneHasMany') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EntityLink entity={field.target} />[] <TargetField field={field} /> (1:n)\n\t\t\t</>\n\t\t)\n\t} else if (field.type === 'OneHasOne') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<NullableMark field={field} />\n\t\t\t\t<EntityLink entity={field.target} /> <TargetField field={field} /> (1:1)\n\t\t\t</>\n\t\t)\n\t} else if (field.type === 'ManyHasOne') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<NullableMark field={field} />\n\t\t\t\t<EntityLink entity={field.target} /> <TargetField field={field} /> (m:1)\n\t\t\t</>\n\t\t)\n\t} else {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<NullableMark field={field} />\n\t\t\t\t{field.type}\n\t\t\t</>\n\t\t)\n\t}\n}\n\nconst TargetField = ({ field }: { field: Model.AnyRelation }) => {\n\tif ('ownedBy' in field) {\n\t\treturn <FieldLink entity={field.target} field={field.ownedBy} noEntityLabel />\n\t}\n\tif (field.inversedBy) {\n\t\treturn <FieldLink entity={field.target} field={field.inversedBy} noEntityLabel />\n\t}\n\treturn null\n}\n\nconst NullableMark = (props: { field: Model.NullableRelation | Model.AnyColumn }) => {\n\treturn props.field.nullable ? <span class={'font-bold color-black'}>?</span> : null\n}\n"],"names":[],"mappings":";;;AAKO,MAAM,YAAY,CAAC,EAAE,YAAuC;AAClE,MAAI,MAAM,SAAS,eAAe;AACjC,WACC,qBAAA,UAAA,EACC,UAAA;AAAA,MAAA,oBAAC,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAAG,oBAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACrE;AAAA,EAEF,WAAW,MAAM,SAAS,cAAc;AACvC,WACC,qBAAA,UAAA,EACC,UAAA;AAAA,MAAA,oBAAC,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAAG,oBAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACrE;AAAA,EAEF,WAAW,MAAM,SAAS,aAAa;AACtC,WACC,qBAAA,UAAA,EACC,UAAA;AAAA,MAAA,oBAAC,gBAAa,OAAc;AAAA,MAC5B,oBAAC,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAAC,oBAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACnE;AAAA,EAEF,WAAW,MAAM,SAAS,cAAc;AACvC,WACC,qBAAA,UAAA,EACC,UAAA;AAAA,MAAA,oBAAC,gBAAa,OAAc;AAAA,MAC5B,oBAAC,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAAC,oBAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACnE;AAAA,EAEF,OAAO;AACN,WACC,qBAAA,UAAA,EACC,UAAA;AAAA,MAAA,oBAAC,gBAAa,OAAc;AAAA,MAC3B,MAAM;AAAA,IAAA,GACR;AAAA,EAEF;AACD;AAEA,MAAM,cAAc,CAAC,EAAE,YAA0C;AAChE,MAAI,aAAa,OAAO;AACvB,WAAO,oBAAC,aAAU,QAAQ,MAAM,QAAQ,OAAO,MAAM,SAAS,eAAa,KAAA,CAAC;AAAA,EAC7E;AACA,MAAI,MAAM,YAAY;AACrB,WAAO,oBAAC,aAAU,QAAQ,MAAM,QAAQ,OAAO,MAAM,YAAY,eAAa,KAAA,CAAC;AAAA,EAChF;AACA,SAAO;AACR;AAEA,MAAM,eAAe,CAAC,UAA+D;AACpF,SAAO,MAAM,MAAM,WAAW,oBAAC,UAAK,OAAO,yBAAyB,eAAC,IAAU;AAChF;"}
1
+ {"version":3,"file":"FieldType.js","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/FieldType.tsx"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { Fragment, h } from 'preact'\nimport { EntityLink } from './EntityLink.js'\nimport { FieldLink } from './FieldLink.js'\n\nexport const FieldType = ({ field }: { field: Model.AnyField }) => {\n\tif (field.type === 'ManyHasMany') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EntityLink entity={field.target} />[] <TargetField field={field} /> (m:n)\n\t\t\t</>\n\t\t)\n\t} else if (field.type === 'OneHasMany') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EntityLink entity={field.target} />[] <TargetField field={field} /> (1:n)\n\t\t\t</>\n\t\t)\n\t} else if (field.type === 'OneHasOne') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<NullableMark field={field} />\n\t\t\t\t<EntityLink entity={field.target} /> <TargetField field={field} /> (1:1)\n\t\t\t</>\n\t\t)\n\t} else if (field.type === 'ManyHasOne') {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<NullableMark field={field} />\n\t\t\t\t<EntityLink entity={field.target} /> <TargetField field={field} /> (m:1)\n\t\t\t</>\n\t\t)\n\t} else {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<NullableMark field={field} />\n\t\t\t\t{field.type}\n\t\t\t</>\n\t\t)\n\t}\n}\n\nconst TargetField = ({ field }: { field: Model.AnyRelation }) => {\n\tif ('ownedBy' in field) {\n\t\treturn <FieldLink entity={field.target} field={field.ownedBy} noEntityLabel />\n\t}\n\tif (field.inversedBy) {\n\t\treturn <FieldLink entity={field.target} field={field.inversedBy} noEntityLabel />\n\t}\n\treturn null\n}\n\nconst NullableMark = (props: { field: Model.NullableRelation | Model.AnyColumn }) => {\n\treturn props.field.nullable ? <span class={'font-bold color-black'}>?</span> : null\n}\n"],"names":[],"mappings":";;;AAKO,MAAM,YAAY,CAAC,EAAE,YAAuC;AAClE,MAAI,MAAM,SAAS,eAAe;AACjC,WACC,qBAAA,UAAA,EACC,UAAA;AAAA,MAAA,oBAAC,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAAG,oBAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACrE;AAAA,EAEF,WAAW,MAAM,SAAS,cAAc;AACvC,WACC,qBAAA,UAAA,EACC,UAAA;AAAA,MAAA,oBAAC,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAAG,oBAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACrE;AAAA,EAEF,WAAW,MAAM,SAAS,aAAa;AACtC,WACC,qBAAA,UAAA,EACC,UAAA;AAAA,MAAA,oBAAC,gBAAa,OAAc;AAAA,MAC5B,oBAAC,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAAC,oBAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACnE;AAAA,EAEF,WAAW,MAAM,SAAS,cAAc;AACvC,WACC,qBAAA,UAAA,EACC,UAAA;AAAA,MAAA,oBAAC,gBAAa,OAAc;AAAA,MAC5B,oBAAC,YAAA,EAAW,QAAQ,MAAM,OAAA,CAAQ;AAAA,MAAE;AAAA,MAAC,oBAAC,eAAY,OAAc;AAAA,MAAE;AAAA,IAAA,GACnE;AAAA,EAEF,OAAO;AACN,WACC,qBAAA,UAAA,EACC,UAAA;AAAA,MAAA,oBAAC,gBAAa,OAAc;AAAA,MAC3B,MAAM;AAAA,IAAA,GACR;AAAA,EAEF;AACD;AAEA,MAAM,cAAc,CAAC,EAAE,YAA0C;AAChE,MAAI,aAAa,OAAO;AACvB,WAAO,oBAAC,aAAU,QAAQ,MAAM,QAAQ,OAAO,MAAM,SAAS,eAAa,KAAA,CAAC;AAAA,EAC7E;AACA,MAAI,MAAM,YAAY;AACrB,WAAO,oBAAC,aAAU,QAAQ,MAAM,QAAQ,OAAO,MAAM,YAAY,eAAa,KAAA,CAAC;AAAA,EAChF;AACA,SAAO;AACR;AAEA,MAAM,eAAe,CAAC,UAA+D;AACpF,SAAO,MAAM,MAAM,WAAW,oBAAC,UAAK,OAAO,yBAAyB,eAAC,IAAU;AAChF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"OnDelete.cjs","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/OnDelete.tsx"],"sourcesContent":["import { Fragment, h } from 'preact'\nimport { Model } from '@contember/schema'\nimport { ReferenceMapEntry, ReferencesMap } from '../../../schema/collectReferences'\nimport { FieldLink } from './FieldLink'\nimport { EntityLink } from './EntityLink'\n\nconst sortReferences = (a: ReferenceMapEntry, b: ReferenceMapEntry) =>\n\ta.owningRelation.joiningColumn.onDelete.localeCompare(b.owningRelation.joiningColumn.onDelete)\n\t|| a.owningEntity.name.localeCompare(b.owningEntity.name)\n\t|| a.owningRelation.name.localeCompare(b.owningRelation.name)\n\nexport const OnDelete = ({ references, entity, visited = [] }: { references: ReferencesMap; entity: Model.Entity; visited?: Model.Entity[] }) => {\n\tconst referencedFrom = references[entity.name]\n\tif (referencedFrom.length === 0) {\n\t\tif (visited.length !== 0) {\n\t\t\treturn null\n\t\t}\n\t\treturn (\n\t\t\t<span class={'bg-green-200 text-gray-600 p-1 rounded'}>\n\t\t\t\tThis entity is not referenced from any other entity.\n\t\t\t</span>\n\t\t)\n\t}\n\n\tif (visited.includes(entity)) {\n\t\treturn (\n\t\t\t<ul class={'ml-4'}>\n\t\t\t\t<li class={'italic'}>(recursion)</li>\n\t\t\t</ul>\n\t\t)\n\t}\n\n\treturn (\n\t\t<ul class={visited.length > 0 ? 'ml-4' : ''}>\n\t\t\t{referencedFrom\n\t\t\t\t.sort(sortReferences)\n\t\t\t\t.map(it => {\n\t\t\t\t\tconst inverseDescr = it.targetRelation\n\t\t\t\t\t\t? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\tsee <FieldLink entity={entity.name} field={it.targetRelation.name} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)\n\t\t\t\t\t\t: 'no inverse side'\n\t\t\t\t\tif (it.owningRelation.joiningColumn.onDelete === 'restrict') {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={it.owningEntity.name + '_' + it.owningRelation.name}>\n\t\t\t\t\t\t\t\t<span class={'bg-black text-white px-1'}>Fails</span> when referenced from{' '}\n\t\t\t\t\t\t\t\t<FieldLink entity={it.owningEntity.name} field={it.owningRelation.name} /> ({inverseDescr})\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tif (it.owningRelation.joiningColumn.onDelete === 'set null') {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={it.owningEntity.name + '_' + it.owningRelation.name}>\n\t\t\t\t\t\t\t\t<span class={'bg-blue-400 text-white px-1'}>Sets null</span> at <FieldLink entity={it.owningEntity.name} field={it.owningRelation.name} />\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t({inverseDescr})\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tif (it.owningRelation.joiningColumn.onDelete === 'cascade') {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={it.owningEntity.name + '_' + it.owningRelation.name}>\n\t\t\t\t\t\t\t\t<span class={'bg-red-400 text-white px-1'}>Deletes</span> <EntityLink entity={it.owningEntity.name} /> connected using{' '}\n\t\t\t\t\t\t\t\t<FieldLink entity={it.owningEntity.name} field={it.owningRelation.name} noEntityLabel /> ({inverseDescr})\n\t\t\t\t\t\t\t\t<OnDelete entity={it.owningEntity} visited={[...visited, entity]} references={references} />\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t</ul>\n\t)\n}\n"],"names":["jsx","jsxs","Fragment","FieldLink","EntityLink"],"mappings":";;;;;AAMA,MAAM,iBAAiB,CAAC,GAAsB,MAC7C,EAAE,eAAe,cAAc,SAAS,cAAc,EAAE,eAAe,cAAc,QAAQ,KAC1F,EAAE,aAAa,KAAK,cAAc,EAAE,aAAa,IAAI,KACrD,EAAE,eAAe,KAAK,cAAc,EAAE,eAAe,IAAI;AAEtD,MAAM,WAAW,CAAC,EAAE,YAAY,QAAQ,UAAU,CAAA,QAAwF;AAChJ,QAAM,iBAAiB,WAAW,OAAO,IAAI;AAC7C,MAAI,eAAe,WAAW,GAAG;AAChC,QAAI,QAAQ,WAAW,GAAG;AACzB,aAAO;AAAA,IACR;AACA,WACCA,2BAAAA,IAAC,QAAA,EAAK,OAAO,0CAA0C,UAAA,wDAEvD;AAAA,EAEF;AAEA,MAAI,QAAQ,SAAS,MAAM,GAAG;AAC7B,WACCA,2BAAAA,IAAC,QAAG,OAAO,QACV,yCAAC,MAAA,EAAG,OAAO,UAAU,UAAA,cAAA,CAAW,EAAA,CACjC;AAAA,EAEF;AAEA,SACCA,2BAAAA,IAAC,MAAA,EAAG,OAAO,QAAQ,SAAS,IAAI,SAAS,IACvC,UAAA,eACC,KAAK,cAAc,EACnB,IAAI,CAAA,OAAM;AACV,UAAM,eAAe,GAAG,iBAEtBC,2BAAAA,KAAAC,WAAAA,UAAA,EAAE,UAAA;AAAA,MAAA;AAAA,MACGF,+BAACG,UAAAA,aAAU,QAAQ,OAAO,MAAM,OAAO,GAAG,eAAe,KAAA,CAAM;AAAA,IAAA,EAAA,CACpE,IAEC;AACH,QAAI,GAAG,eAAe,cAAc,aAAa,YAAY;AAC5D,6CACE,MAAA,EACA,UAAA;AAAA,QAAAH,2BAAAA,IAAC,QAAA,EAAK,OAAO,4BAA4B,UAAA,SAAK;AAAA,QAAO;AAAA,QAAsB;AAAA,QAC3EA,2BAAAA,IAACG,UAAAA,aAAU,QAAQ,GAAG,aAAa,MAAM,OAAO,GAAG,eAAe,KAAA,CAAM;AAAA,QAAE;AAAA,QAAG;AAAA,QAAa;AAAA,MAAA,EAAA,GAFlF,GAAG,aAAa,OAAO,MAAM,GAAG,eAAe,IAGxD;AAAA,IAEF;AACA,QAAI,GAAG,eAAe,cAAc,aAAa,YAAY;AAC5D,6CACE,MAAA,EACA,UAAA;AAAA,QAAAH,2BAAAA,IAAC,QAAA,EAAK,OAAO,+BAA+B,UAAA,aAAS;AAAA,QAAO;AAAA,QAAIA,2BAAAA,IAACG,UAAAA,aAAU,QAAQ,GAAG,aAAa,MAAM,OAAO,GAAG,eAAe,KAAA,CAAM;AAAA,QACvI;AAAA,QAAI;AAAA,QACH;AAAA,QAAa;AAAA,MAAA,EAAA,GAHP,GAAG,aAAa,OAAO,MAAM,GAAG,eAAe,IAIxD;AAAA,IAEF;AACA,QAAI,GAAG,eAAe,cAAc,aAAa,WAAW;AAC3D,6CACE,MAAA,EACA,UAAA;AAAA,QAAAH,2BAAAA,IAAC,QAAA,EAAK,OAAO,8BAA8B,UAAA,WAAO;AAAA,QAAO;AAAA,QAACA,2BAAAA,IAACI,WAAAA,YAAA,EAAW,QAAQ,GAAG,aAAa,MAAM;AAAA,QAAE;AAAA,QAAiB;AAAA,QACvHJ,2BAAAA,IAACG,UAAAA,WAAA,EAAU,QAAQ,GAAG,aAAa,MAAM,OAAO,GAAG,eAAe,MAAM,eAAa,KAAA,CAAC;AAAA,QAAE;AAAA,QAAG;AAAA,QAAa;AAAA,QACxGH,2BAAAA,IAAC,UAAA,EAAS,QAAQ,GAAG,cAAc,SAAS,CAAC,GAAG,SAAS,MAAM,GAAG,WAAA,CAAwB;AAAA,MAAA,EAAA,GAHlF,GAAG,aAAa,OAAO,MAAM,GAAG,eAAe,IAIxD;AAAA,IAEF;AAAA,EACD,CAAC,EAAA,CACH;AAEF;;"}
1
+ {"version":3,"file":"OnDelete.cjs","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/OnDelete.tsx"],"sourcesContent":["import { Fragment, h } from 'preact'\nimport { Model } from '@contember/schema'\nimport { ReferenceMapEntry, ReferencesMap } from '../../../schema/collectReferences.js'\nimport { FieldLink } from './FieldLink.js'\nimport { EntityLink } from './EntityLink.js'\n\nconst sortReferences = (a: ReferenceMapEntry, b: ReferenceMapEntry) =>\n\ta.owningRelation.joiningColumn.onDelete.localeCompare(b.owningRelation.joiningColumn.onDelete)\n\t|| a.owningEntity.name.localeCompare(b.owningEntity.name)\n\t|| a.owningRelation.name.localeCompare(b.owningRelation.name)\n\nexport const OnDelete = ({ references, entity, visited = [] }: { references: ReferencesMap; entity: Model.Entity; visited?: Model.Entity[] }) => {\n\tconst referencedFrom = references[entity.name]\n\tif (referencedFrom.length === 0) {\n\t\tif (visited.length !== 0) {\n\t\t\treturn null\n\t\t}\n\t\treturn (\n\t\t\t<span class={'bg-green-200 text-gray-600 p-1 rounded'}>\n\t\t\t\tThis entity is not referenced from any other entity.\n\t\t\t</span>\n\t\t)\n\t}\n\n\tif (visited.includes(entity)) {\n\t\treturn (\n\t\t\t<ul class={'ml-4'}>\n\t\t\t\t<li class={'italic'}>(recursion)</li>\n\t\t\t</ul>\n\t\t)\n\t}\n\n\treturn (\n\t\t<ul class={visited.length > 0 ? 'ml-4' : ''}>\n\t\t\t{referencedFrom\n\t\t\t\t.sort(sortReferences)\n\t\t\t\t.map(it => {\n\t\t\t\t\tconst inverseDescr = it.targetRelation\n\t\t\t\t\t\t? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\tsee <FieldLink entity={entity.name} field={it.targetRelation.name} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)\n\t\t\t\t\t\t: 'no inverse side'\n\t\t\t\t\tif (it.owningRelation.joiningColumn.onDelete === 'restrict') {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={it.owningEntity.name + '_' + it.owningRelation.name}>\n\t\t\t\t\t\t\t\t<span class={'bg-black text-white px-1'}>Fails</span> when referenced from{' '}\n\t\t\t\t\t\t\t\t<FieldLink entity={it.owningEntity.name} field={it.owningRelation.name} /> ({inverseDescr})\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tif (it.owningRelation.joiningColumn.onDelete === 'set null') {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={it.owningEntity.name + '_' + it.owningRelation.name}>\n\t\t\t\t\t\t\t\t<span class={'bg-blue-400 text-white px-1'}>Sets null</span> at <FieldLink entity={it.owningEntity.name} field={it.owningRelation.name} />\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t({inverseDescr})\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tif (it.owningRelation.joiningColumn.onDelete === 'cascade') {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={it.owningEntity.name + '_' + it.owningRelation.name}>\n\t\t\t\t\t\t\t\t<span class={'bg-red-400 text-white px-1'}>Deletes</span> <EntityLink entity={it.owningEntity.name} /> connected using{' '}\n\t\t\t\t\t\t\t\t<FieldLink entity={it.owningEntity.name} field={it.owningRelation.name} noEntityLabel /> ({inverseDescr})\n\t\t\t\t\t\t\t\t<OnDelete entity={it.owningEntity} visited={[...visited, entity]} references={references} />\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t</ul>\n\t)\n}\n"],"names":["jsx","jsxs","Fragment","FieldLink","EntityLink"],"mappings":";;;;;AAMA,MAAM,iBAAiB,CAAC,GAAsB,MAC7C,EAAE,eAAe,cAAc,SAAS,cAAc,EAAE,eAAe,cAAc,QAAQ,KAC1F,EAAE,aAAa,KAAK,cAAc,EAAE,aAAa,IAAI,KACrD,EAAE,eAAe,KAAK,cAAc,EAAE,eAAe,IAAI;AAEtD,MAAM,WAAW,CAAC,EAAE,YAAY,QAAQ,UAAU,CAAA,QAAwF;AAChJ,QAAM,iBAAiB,WAAW,OAAO,IAAI;AAC7C,MAAI,eAAe,WAAW,GAAG;AAChC,QAAI,QAAQ,WAAW,GAAG;AACzB,aAAO;AAAA,IACR;AACA,WACCA,2BAAAA,IAAC,QAAA,EAAK,OAAO,0CAA0C,UAAA,wDAEvD;AAAA,EAEF;AAEA,MAAI,QAAQ,SAAS,MAAM,GAAG;AAC7B,WACCA,2BAAAA,IAAC,QAAG,OAAO,QACV,yCAAC,MAAA,EAAG,OAAO,UAAU,UAAA,cAAA,CAAW,EAAA,CACjC;AAAA,EAEF;AAEA,SACCA,2BAAAA,IAAC,MAAA,EAAG,OAAO,QAAQ,SAAS,IAAI,SAAS,IACvC,UAAA,eACC,KAAK,cAAc,EACnB,IAAI,CAAA,OAAM;AACV,UAAM,eAAe,GAAG,iBAEtBC,2BAAAA,KAAAC,WAAAA,UAAA,EAAE,UAAA;AAAA,MAAA;AAAA,MACGF,+BAACG,UAAAA,aAAU,QAAQ,OAAO,MAAM,OAAO,GAAG,eAAe,KAAA,CAAM;AAAA,IAAA,EAAA,CACpE,IAEC;AACH,QAAI,GAAG,eAAe,cAAc,aAAa,YAAY;AAC5D,6CACE,MAAA,EACA,UAAA;AAAA,QAAAH,2BAAAA,IAAC,QAAA,EAAK,OAAO,4BAA4B,UAAA,SAAK;AAAA,QAAO;AAAA,QAAsB;AAAA,QAC3EA,2BAAAA,IAACG,UAAAA,aAAU,QAAQ,GAAG,aAAa,MAAM,OAAO,GAAG,eAAe,KAAA,CAAM;AAAA,QAAE;AAAA,QAAG;AAAA,QAAa;AAAA,MAAA,EAAA,GAFlF,GAAG,aAAa,OAAO,MAAM,GAAG,eAAe,IAGxD;AAAA,IAEF;AACA,QAAI,GAAG,eAAe,cAAc,aAAa,YAAY;AAC5D,6CACE,MAAA,EACA,UAAA;AAAA,QAAAH,2BAAAA,IAAC,QAAA,EAAK,OAAO,+BAA+B,UAAA,aAAS;AAAA,QAAO;AAAA,QAAIA,2BAAAA,IAACG,UAAAA,aAAU,QAAQ,GAAG,aAAa,MAAM,OAAO,GAAG,eAAe,KAAA,CAAM;AAAA,QACvI;AAAA,QAAI;AAAA,QACH;AAAA,QAAa;AAAA,MAAA,EAAA,GAHP,GAAG,aAAa,OAAO,MAAM,GAAG,eAAe,IAIxD;AAAA,IAEF;AACA,QAAI,GAAG,eAAe,cAAc,aAAa,WAAW;AAC3D,6CACE,MAAA,EACA,UAAA;AAAA,QAAAH,2BAAAA,IAAC,QAAA,EAAK,OAAO,8BAA8B,UAAA,WAAO;AAAA,QAAO;AAAA,QAACA,2BAAAA,IAACI,WAAAA,YAAA,EAAW,QAAQ,GAAG,aAAa,MAAM;AAAA,QAAE;AAAA,QAAiB;AAAA,QACvHJ,2BAAAA,IAACG,UAAAA,WAAA,EAAU,QAAQ,GAAG,aAAa,MAAM,OAAO,GAAG,eAAe,MAAM,eAAa,KAAA,CAAC;AAAA,QAAE;AAAA,QAAG;AAAA,QAAa;AAAA,QACxGH,2BAAAA,IAAC,UAAA,EAAS,QAAQ,GAAG,cAAc,SAAS,CAAC,GAAG,SAAS,MAAM,GAAG,WAAA,CAAwB;AAAA,MAAA,EAAA,GAHlF,GAAG,aAAa,OAAO,MAAM,GAAG,eAAe,IAIxD;AAAA,IAEF;AAAA,EACD,CAAC,EAAA,CACH;AAEF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"OnDelete.js","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/OnDelete.tsx"],"sourcesContent":["import { Fragment, h } from 'preact'\nimport { Model } from '@contember/schema'\nimport { ReferenceMapEntry, ReferencesMap } from '../../../schema/collectReferences'\nimport { FieldLink } from './FieldLink'\nimport { EntityLink } from './EntityLink'\n\nconst sortReferences = (a: ReferenceMapEntry, b: ReferenceMapEntry) =>\n\ta.owningRelation.joiningColumn.onDelete.localeCompare(b.owningRelation.joiningColumn.onDelete)\n\t|| a.owningEntity.name.localeCompare(b.owningEntity.name)\n\t|| a.owningRelation.name.localeCompare(b.owningRelation.name)\n\nexport const OnDelete = ({ references, entity, visited = [] }: { references: ReferencesMap; entity: Model.Entity; visited?: Model.Entity[] }) => {\n\tconst referencedFrom = references[entity.name]\n\tif (referencedFrom.length === 0) {\n\t\tif (visited.length !== 0) {\n\t\t\treturn null\n\t\t}\n\t\treturn (\n\t\t\t<span class={'bg-green-200 text-gray-600 p-1 rounded'}>\n\t\t\t\tThis entity is not referenced from any other entity.\n\t\t\t</span>\n\t\t)\n\t}\n\n\tif (visited.includes(entity)) {\n\t\treturn (\n\t\t\t<ul class={'ml-4'}>\n\t\t\t\t<li class={'italic'}>(recursion)</li>\n\t\t\t</ul>\n\t\t)\n\t}\n\n\treturn (\n\t\t<ul class={visited.length > 0 ? 'ml-4' : ''}>\n\t\t\t{referencedFrom\n\t\t\t\t.sort(sortReferences)\n\t\t\t\t.map(it => {\n\t\t\t\t\tconst inverseDescr = it.targetRelation\n\t\t\t\t\t\t? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\tsee <FieldLink entity={entity.name} field={it.targetRelation.name} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)\n\t\t\t\t\t\t: 'no inverse side'\n\t\t\t\t\tif (it.owningRelation.joiningColumn.onDelete === 'restrict') {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={it.owningEntity.name + '_' + it.owningRelation.name}>\n\t\t\t\t\t\t\t\t<span class={'bg-black text-white px-1'}>Fails</span> when referenced from{' '}\n\t\t\t\t\t\t\t\t<FieldLink entity={it.owningEntity.name} field={it.owningRelation.name} /> ({inverseDescr})\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tif (it.owningRelation.joiningColumn.onDelete === 'set null') {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={it.owningEntity.name + '_' + it.owningRelation.name}>\n\t\t\t\t\t\t\t\t<span class={'bg-blue-400 text-white px-1'}>Sets null</span> at <FieldLink entity={it.owningEntity.name} field={it.owningRelation.name} />\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t({inverseDescr})\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tif (it.owningRelation.joiningColumn.onDelete === 'cascade') {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={it.owningEntity.name + '_' + it.owningRelation.name}>\n\t\t\t\t\t\t\t\t<span class={'bg-red-400 text-white px-1'}>Deletes</span> <EntityLink entity={it.owningEntity.name} /> connected using{' '}\n\t\t\t\t\t\t\t\t<FieldLink entity={it.owningEntity.name} field={it.owningRelation.name} noEntityLabel /> ({inverseDescr})\n\t\t\t\t\t\t\t\t<OnDelete entity={it.owningEntity} visited={[...visited, entity]} references={references} />\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t</ul>\n\t)\n}\n"],"names":[],"mappings":";;;AAMA,MAAM,iBAAiB,CAAC,GAAsB,MAC7C,EAAE,eAAe,cAAc,SAAS,cAAc,EAAE,eAAe,cAAc,QAAQ,KAC1F,EAAE,aAAa,KAAK,cAAc,EAAE,aAAa,IAAI,KACrD,EAAE,eAAe,KAAK,cAAc,EAAE,eAAe,IAAI;AAEtD,MAAM,WAAW,CAAC,EAAE,YAAY,QAAQ,UAAU,CAAA,QAAwF;AAChJ,QAAM,iBAAiB,WAAW,OAAO,IAAI;AAC7C,MAAI,eAAe,WAAW,GAAG;AAChC,QAAI,QAAQ,WAAW,GAAG;AACzB,aAAO;AAAA,IACR;AACA,WACC,oBAAC,QAAA,EAAK,OAAO,0CAA0C,UAAA,wDAEvD;AAAA,EAEF;AAEA,MAAI,QAAQ,SAAS,MAAM,GAAG;AAC7B,WACC,oBAAC,QAAG,OAAO,QACV,8BAAC,MAAA,EAAG,OAAO,UAAU,UAAA,cAAA,CAAW,EAAA,CACjC;AAAA,EAEF;AAEA,SACC,oBAAC,MAAA,EAAG,OAAO,QAAQ,SAAS,IAAI,SAAS,IACvC,UAAA,eACC,KAAK,cAAc,EACnB,IAAI,CAAA,OAAM;AACV,UAAM,eAAe,GAAG,iBAEtB,qBAAA,UAAA,EAAE,UAAA;AAAA,MAAA;AAAA,MACG,oBAAC,aAAU,QAAQ,OAAO,MAAM,OAAO,GAAG,eAAe,KAAA,CAAM;AAAA,IAAA,EAAA,CACpE,IAEC;AACH,QAAI,GAAG,eAAe,cAAc,aAAa,YAAY;AAC5D,kCACE,MAAA,EACA,UAAA;AAAA,QAAA,oBAAC,QAAA,EAAK,OAAO,4BAA4B,UAAA,SAAK;AAAA,QAAO;AAAA,QAAsB;AAAA,QAC3E,oBAAC,aAAU,QAAQ,GAAG,aAAa,MAAM,OAAO,GAAG,eAAe,KAAA,CAAM;AAAA,QAAE;AAAA,QAAG;AAAA,QAAa;AAAA,MAAA,EAAA,GAFlF,GAAG,aAAa,OAAO,MAAM,GAAG,eAAe,IAGxD;AAAA,IAEF;AACA,QAAI,GAAG,eAAe,cAAc,aAAa,YAAY;AAC5D,kCACE,MAAA,EACA,UAAA;AAAA,QAAA,oBAAC,QAAA,EAAK,OAAO,+BAA+B,UAAA,aAAS;AAAA,QAAO;AAAA,QAAI,oBAAC,aAAU,QAAQ,GAAG,aAAa,MAAM,OAAO,GAAG,eAAe,KAAA,CAAM;AAAA,QACvI;AAAA,QAAI;AAAA,QACH;AAAA,QAAa;AAAA,MAAA,EAAA,GAHP,GAAG,aAAa,OAAO,MAAM,GAAG,eAAe,IAIxD;AAAA,IAEF;AACA,QAAI,GAAG,eAAe,cAAc,aAAa,WAAW;AAC3D,kCACE,MAAA,EACA,UAAA;AAAA,QAAA,oBAAC,QAAA,EAAK,OAAO,8BAA8B,UAAA,WAAO;AAAA,QAAO;AAAA,QAAC,oBAAC,YAAA,EAAW,QAAQ,GAAG,aAAa,MAAM;AAAA,QAAE;AAAA,QAAiB;AAAA,QACvH,oBAAC,WAAA,EAAU,QAAQ,GAAG,aAAa,MAAM,OAAO,GAAG,eAAe,MAAM,eAAa,KAAA,CAAC;AAAA,QAAE;AAAA,QAAG;AAAA,QAAa;AAAA,QACxG,oBAAC,UAAA,EAAS,QAAQ,GAAG,cAAc,SAAS,CAAC,GAAG,SAAS,MAAM,GAAG,WAAA,CAAwB;AAAA,MAAA,EAAA,GAHlF,GAAG,aAAa,OAAO,MAAM,GAAG,eAAe,IAIxD;AAAA,IAEF;AAAA,EACD,CAAC,EAAA,CACH;AAEF;"}
1
+ {"version":3,"file":"OnDelete.js","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/OnDelete.tsx"],"sourcesContent":["import { Fragment, h } from 'preact'\nimport { Model } from '@contember/schema'\nimport { ReferenceMapEntry, ReferencesMap } from '../../../schema/collectReferences.js'\nimport { FieldLink } from './FieldLink.js'\nimport { EntityLink } from './EntityLink.js'\n\nconst sortReferences = (a: ReferenceMapEntry, b: ReferenceMapEntry) =>\n\ta.owningRelation.joiningColumn.onDelete.localeCompare(b.owningRelation.joiningColumn.onDelete)\n\t|| a.owningEntity.name.localeCompare(b.owningEntity.name)\n\t|| a.owningRelation.name.localeCompare(b.owningRelation.name)\n\nexport const OnDelete = ({ references, entity, visited = [] }: { references: ReferencesMap; entity: Model.Entity; visited?: Model.Entity[] }) => {\n\tconst referencedFrom = references[entity.name]\n\tif (referencedFrom.length === 0) {\n\t\tif (visited.length !== 0) {\n\t\t\treturn null\n\t\t}\n\t\treturn (\n\t\t\t<span class={'bg-green-200 text-gray-600 p-1 rounded'}>\n\t\t\t\tThis entity is not referenced from any other entity.\n\t\t\t</span>\n\t\t)\n\t}\n\n\tif (visited.includes(entity)) {\n\t\treturn (\n\t\t\t<ul class={'ml-4'}>\n\t\t\t\t<li class={'italic'}>(recursion)</li>\n\t\t\t</ul>\n\t\t)\n\t}\n\n\treturn (\n\t\t<ul class={visited.length > 0 ? 'ml-4' : ''}>\n\t\t\t{referencedFrom\n\t\t\t\t.sort(sortReferences)\n\t\t\t\t.map(it => {\n\t\t\t\t\tconst inverseDescr = it.targetRelation\n\t\t\t\t\t\t? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\tsee <FieldLink entity={entity.name} field={it.targetRelation.name} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)\n\t\t\t\t\t\t: 'no inverse side'\n\t\t\t\t\tif (it.owningRelation.joiningColumn.onDelete === 'restrict') {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={it.owningEntity.name + '_' + it.owningRelation.name}>\n\t\t\t\t\t\t\t\t<span class={'bg-black text-white px-1'}>Fails</span> when referenced from{' '}\n\t\t\t\t\t\t\t\t<FieldLink entity={it.owningEntity.name} field={it.owningRelation.name} /> ({inverseDescr})\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tif (it.owningRelation.joiningColumn.onDelete === 'set null') {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={it.owningEntity.name + '_' + it.owningRelation.name}>\n\t\t\t\t\t\t\t\t<span class={'bg-blue-400 text-white px-1'}>Sets null</span> at <FieldLink entity={it.owningEntity.name} field={it.owningRelation.name} />\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t({inverseDescr})\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tif (it.owningRelation.joiningColumn.onDelete === 'cascade') {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={it.owningEntity.name + '_' + it.owningRelation.name}>\n\t\t\t\t\t\t\t\t<span class={'bg-red-400 text-white px-1'}>Deletes</span> <EntityLink entity={it.owningEntity.name} /> connected using{' '}\n\t\t\t\t\t\t\t\t<FieldLink entity={it.owningEntity.name} field={it.owningRelation.name} noEntityLabel /> ({inverseDescr})\n\t\t\t\t\t\t\t\t<OnDelete entity={it.owningEntity} visited={[...visited, entity]} references={references} />\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t</ul>\n\t)\n}\n"],"names":[],"mappings":";;;AAMA,MAAM,iBAAiB,CAAC,GAAsB,MAC7C,EAAE,eAAe,cAAc,SAAS,cAAc,EAAE,eAAe,cAAc,QAAQ,KAC1F,EAAE,aAAa,KAAK,cAAc,EAAE,aAAa,IAAI,KACrD,EAAE,eAAe,KAAK,cAAc,EAAE,eAAe,IAAI;AAEtD,MAAM,WAAW,CAAC,EAAE,YAAY,QAAQ,UAAU,CAAA,QAAwF;AAChJ,QAAM,iBAAiB,WAAW,OAAO,IAAI;AAC7C,MAAI,eAAe,WAAW,GAAG;AAChC,QAAI,QAAQ,WAAW,GAAG;AACzB,aAAO;AAAA,IACR;AACA,WACC,oBAAC,QAAA,EAAK,OAAO,0CAA0C,UAAA,wDAEvD;AAAA,EAEF;AAEA,MAAI,QAAQ,SAAS,MAAM,GAAG;AAC7B,WACC,oBAAC,QAAG,OAAO,QACV,8BAAC,MAAA,EAAG,OAAO,UAAU,UAAA,cAAA,CAAW,EAAA,CACjC;AAAA,EAEF;AAEA,SACC,oBAAC,MAAA,EAAG,OAAO,QAAQ,SAAS,IAAI,SAAS,IACvC,UAAA,eACC,KAAK,cAAc,EACnB,IAAI,CAAA,OAAM;AACV,UAAM,eAAe,GAAG,iBAEtB,qBAAA,UAAA,EAAE,UAAA;AAAA,MAAA;AAAA,MACG,oBAAC,aAAU,QAAQ,OAAO,MAAM,OAAO,GAAG,eAAe,KAAA,CAAM;AAAA,IAAA,EAAA,CACpE,IAEC;AACH,QAAI,GAAG,eAAe,cAAc,aAAa,YAAY;AAC5D,kCACE,MAAA,EACA,UAAA;AAAA,QAAA,oBAAC,QAAA,EAAK,OAAO,4BAA4B,UAAA,SAAK;AAAA,QAAO;AAAA,QAAsB;AAAA,QAC3E,oBAAC,aAAU,QAAQ,GAAG,aAAa,MAAM,OAAO,GAAG,eAAe,KAAA,CAAM;AAAA,QAAE;AAAA,QAAG;AAAA,QAAa;AAAA,MAAA,EAAA,GAFlF,GAAG,aAAa,OAAO,MAAM,GAAG,eAAe,IAGxD;AAAA,IAEF;AACA,QAAI,GAAG,eAAe,cAAc,aAAa,YAAY;AAC5D,kCACE,MAAA,EACA,UAAA;AAAA,QAAA,oBAAC,QAAA,EAAK,OAAO,+BAA+B,UAAA,aAAS;AAAA,QAAO;AAAA,QAAI,oBAAC,aAAU,QAAQ,GAAG,aAAa,MAAM,OAAO,GAAG,eAAe,KAAA,CAAM;AAAA,QACvI;AAAA,QAAI;AAAA,QACH;AAAA,QAAa;AAAA,MAAA,EAAA,GAHP,GAAG,aAAa,OAAO,MAAM,GAAG,eAAe,IAIxD;AAAA,IAEF;AACA,QAAI,GAAG,eAAe,cAAc,aAAa,WAAW;AAC3D,kCACE,MAAA,EACA,UAAA;AAAA,QAAA,oBAAC,QAAA,EAAK,OAAO,8BAA8B,UAAA,WAAO;AAAA,QAAO;AAAA,QAAC,oBAAC,YAAA,EAAW,QAAQ,GAAG,aAAa,MAAM;AAAA,QAAE;AAAA,QAAiB;AAAA,QACvH,oBAAC,WAAA,EAAU,QAAQ,GAAG,aAAa,MAAM,OAAO,GAAG,eAAe,MAAM,eAAa,KAAA,CAAC;AAAA,QAAE;AAAA,QAAG;AAAA,QAAa;AAAA,QACxG,oBAAC,UAAA,EAAS,QAAQ,GAAG,cAAc,SAAS,CAAC,GAAG,SAAS,MAAM,GAAG,WAAA,CAAwB;AAAA,MAAA,EAAA,GAHlF,GAAG,aAAa,OAAO,MAAM,GAAG,eAAe,IAIxD;AAAA,IAEF;AAAA,EACD,CAAC,EAAA,CACH;AAEF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectInfo.cjs","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/ProjectInfo.tsx"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { h } from 'preact'\nimport { collectReferences } from '../../../schema/collectReferences'\nimport { EntityLink } from './EntityLink'\nimport { EntityInfo } from './EntityInfo'\n\nexport const ProjectInfo = (props: { schema: Schema; projectName: string }) => {\n\tconst references = collectReferences(props.schema.model)\n\n\treturn (\n\t\t<div class={'w-full'}>\n\t\t\t<div class={'bg-gray-100 p-6 border-b border-gray-400'}>\n\t\t\t\t<h1 class={'font-bold text-xl mb-1'}>{props.projectName}</h1>\n\t\t\t\t<div class={'flex flex-column gap-4'}>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h2 class={'font-semibold text-gray-500 mb-1'}>Entities</h2>\n\t\t\t\t\t\t<ul class={'text-sm'}>\n\t\t\t\t\t\t\t{Object.values(props.schema.model.entities).map(entity => (\n\t\t\t\t\t\t\t\t<li key={entity.name}>\n\t\t\t\t\t\t\t\t\t<EntityLink entity={entity.name} />\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h2 class={'font-semibold text-gray-500 mb-1'}>Enums</h2>\n\t\t\t\t\t\t<ul class={'text-sm'}>\n\t\t\t\t\t\t\t{Object.entries(props.schema.model.enums).map(([name, values]) => (\n\t\t\t\t\t\t\t\t<li class={'mb-2'} key={name}>\n\t\t\t\t\t\t\t\t\t{name} <br />\n\t\t\t\t\t\t\t\t\t<span class={'text-gray-700 ml-4'}>\n\t\t\t\t\t\t\t\t\t\t{values.join(', ')}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{Object.values(props.schema.model.entities).map(entity => (\n\t\t\t\t<EntityInfo key={entity.name} entity={entity} schema={props.schema} references={references} />\n\t\t\t))}\n\t\t</div>\n\t)\n}\n"],"names":["collectReferences","jsxs","jsx","EntityLink","EntityInfo"],"mappings":";;;;;;AAMO,MAAM,cAAc,CAAC,UAAmD;AAC9E,QAAM,aAAaA,kBAAAA,kBAAkB,MAAM,OAAO,KAAK;AAEvD,SACCC,2BAAAA,KAAC,OAAA,EAAI,OAAO,UACX,UAAA;AAAA,IAAAA,2BAAAA,KAAC,OAAA,EAAI,OAAO,4CACX,UAAA;AAAA,MAAAC,2BAAAA,IAAC,MAAA,EAAG,OAAO,0BAA2B,UAAA,MAAM,aAAY;AAAA,MACxDD,2BAAAA,KAAC,OAAA,EAAI,OAAO,0BACX,UAAA;AAAA,QAAAA,gCAAC,OAAA,EACA,UAAA;AAAA,UAAAC,2BAAAA,IAAC,MAAA,EAAG,OAAO,oCAAoC,UAAA,YAAQ;AAAA,UACvDA,2BAAAA,IAAC,MAAA,EAAG,OAAO,WACT,UAAA,OAAO,OAAO,MAAM,OAAO,MAAM,QAAQ,EAAE,IAAI,YAC/CA,2BAAAA,IAAC,MAAA,EACA,UAAAA,2BAAAA,IAACC,WAAAA,YAAA,EAAW,QAAQ,OAAO,MAAM,EAAA,GADzB,OAAO,IAEhB,CACA,EAAA,CACF;AAAA,QAAA,GACD;AAAA,wCACC,OAAA,EACA,UAAA;AAAA,UAAAD,2BAAAA,IAAC,MAAA,EAAG,OAAO,oCAAoC,UAAA,SAAK;AAAA,UACpDA,+BAAC,QAAG,OAAO,WACT,iBAAO,QAAQ,MAAM,OAAO,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,MAAM,MAC3DD,gCAAC,MAAA,EAAG,OAAO,QACT,UAAA;AAAA,YAAA;AAAA,YAAK;AAAA,2CAAE,MAAA,EAAG;AAAA,2CACV,QAAA,EAAK,OAAO,sBACX,UAAA,OAAO,KAAK,IAAI,EAAA,CAClB;AAAA,UAAA,EAAA,GAJuB,IAKxB,CACA,EAAA,CACF;AAAA,QAAA,EAAA,CACD;AAAA,MAAA,EAAA,CACD;AAAA,IAAA,GACD;AAAA,IACC,OAAO,OAAO,MAAM,OAAO,MAAM,QAAQ,EAAE,IAAI,CAAA,WAC/CC,2BAAAA,IAACE,uBAAA,EAA6B,QAAgB,QAAQ,MAAM,QAAQ,WAAA,GAAnD,OAAO,IAAoE,CAC5F;AAAA,EAAA,GACF;AAEF;;"}
1
+ {"version":3,"file":"ProjectInfo.cjs","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/ProjectInfo.tsx"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { h } from 'preact'\nimport { collectReferences } from '../../../schema/collectReferences.js'\nimport { EntityLink } from './EntityLink.js'\nimport { EntityInfo } from './EntityInfo.js'\n\nexport const ProjectInfo = (props: { schema: Schema; projectName: string }) => {\n\tconst references = collectReferences(props.schema.model)\n\n\treturn (\n\t\t<div class={'w-full'}>\n\t\t\t<div class={'bg-gray-100 p-6 border-b border-gray-400'}>\n\t\t\t\t<h1 class={'font-bold text-xl mb-1'}>{props.projectName}</h1>\n\t\t\t\t<div class={'flex flex-column gap-4'}>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h2 class={'font-semibold text-gray-500 mb-1'}>Entities</h2>\n\t\t\t\t\t\t<ul class={'text-sm'}>\n\t\t\t\t\t\t\t{Object.values(props.schema.model.entities).map(entity => (\n\t\t\t\t\t\t\t\t<li key={entity.name}>\n\t\t\t\t\t\t\t\t\t<EntityLink entity={entity.name} />\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h2 class={'font-semibold text-gray-500 mb-1'}>Enums</h2>\n\t\t\t\t\t\t<ul class={'text-sm'}>\n\t\t\t\t\t\t\t{Object.entries(props.schema.model.enums).map(([name, values]) => (\n\t\t\t\t\t\t\t\t<li class={'mb-2'} key={name}>\n\t\t\t\t\t\t\t\t\t{name} <br />\n\t\t\t\t\t\t\t\t\t<span class={'text-gray-700 ml-4'}>\n\t\t\t\t\t\t\t\t\t\t{values.join(', ')}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{Object.values(props.schema.model.entities).map(entity => (\n\t\t\t\t<EntityInfo key={entity.name} entity={entity} schema={props.schema} references={references} />\n\t\t\t))}\n\t\t</div>\n\t)\n}\n"],"names":["collectReferences","jsxs","jsx","EntityLink","EntityInfo"],"mappings":";;;;;;AAMO,MAAM,cAAc,CAAC,UAAmD;AAC9E,QAAM,aAAaA,kBAAAA,kBAAkB,MAAM,OAAO,KAAK;AAEvD,SACCC,2BAAAA,KAAC,OAAA,EAAI,OAAO,UACX,UAAA;AAAA,IAAAA,2BAAAA,KAAC,OAAA,EAAI,OAAO,4CACX,UAAA;AAAA,MAAAC,2BAAAA,IAAC,MAAA,EAAG,OAAO,0BAA2B,UAAA,MAAM,aAAY;AAAA,MACxDD,2BAAAA,KAAC,OAAA,EAAI,OAAO,0BACX,UAAA;AAAA,QAAAA,gCAAC,OAAA,EACA,UAAA;AAAA,UAAAC,2BAAAA,IAAC,MAAA,EAAG,OAAO,oCAAoC,UAAA,YAAQ;AAAA,UACvDA,2BAAAA,IAAC,MAAA,EAAG,OAAO,WACT,UAAA,OAAO,OAAO,MAAM,OAAO,MAAM,QAAQ,EAAE,IAAI,YAC/CA,2BAAAA,IAAC,MAAA,EACA,UAAAA,2BAAAA,IAACC,WAAAA,YAAA,EAAW,QAAQ,OAAO,MAAM,EAAA,GADzB,OAAO,IAEhB,CACA,EAAA,CACF;AAAA,QAAA,GACD;AAAA,wCACC,OAAA,EACA,UAAA;AAAA,UAAAD,2BAAAA,IAAC,MAAA,EAAG,OAAO,oCAAoC,UAAA,SAAK;AAAA,UACpDA,+BAAC,QAAG,OAAO,WACT,iBAAO,QAAQ,MAAM,OAAO,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,MAAM,MAC3DD,gCAAC,MAAA,EAAG,OAAO,QACT,UAAA;AAAA,YAAA;AAAA,YAAK;AAAA,2CAAE,MAAA,EAAG;AAAA,2CACV,QAAA,EAAK,OAAO,sBACX,UAAA,OAAO,KAAK,IAAI,EAAA,CAClB;AAAA,UAAA,EAAA,GAJuB,IAKxB,CACA,EAAA,CACF;AAAA,QAAA,EAAA,CACD;AAAA,MAAA,EAAA,CACD;AAAA,IAAA,GACD;AAAA,IACC,OAAO,OAAO,MAAM,OAAO,MAAM,QAAQ,EAAE,IAAI,CAAA,WAC/CC,2BAAAA,IAACE,uBAAA,EAA6B,QAAgB,QAAQ,MAAM,QAAQ,WAAA,GAAnD,OAAO,IAAoE,CAC5F;AAAA,EAAA,GACF;AAEF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectInfo.js","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/ProjectInfo.tsx"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { h } from 'preact'\nimport { collectReferences } from '../../../schema/collectReferences'\nimport { EntityLink } from './EntityLink'\nimport { EntityInfo } from './EntityInfo'\n\nexport const ProjectInfo = (props: { schema: Schema; projectName: string }) => {\n\tconst references = collectReferences(props.schema.model)\n\n\treturn (\n\t\t<div class={'w-full'}>\n\t\t\t<div class={'bg-gray-100 p-6 border-b border-gray-400'}>\n\t\t\t\t<h1 class={'font-bold text-xl mb-1'}>{props.projectName}</h1>\n\t\t\t\t<div class={'flex flex-column gap-4'}>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h2 class={'font-semibold text-gray-500 mb-1'}>Entities</h2>\n\t\t\t\t\t\t<ul class={'text-sm'}>\n\t\t\t\t\t\t\t{Object.values(props.schema.model.entities).map(entity => (\n\t\t\t\t\t\t\t\t<li key={entity.name}>\n\t\t\t\t\t\t\t\t\t<EntityLink entity={entity.name} />\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h2 class={'font-semibold text-gray-500 mb-1'}>Enums</h2>\n\t\t\t\t\t\t<ul class={'text-sm'}>\n\t\t\t\t\t\t\t{Object.entries(props.schema.model.enums).map(([name, values]) => (\n\t\t\t\t\t\t\t\t<li class={'mb-2'} key={name}>\n\t\t\t\t\t\t\t\t\t{name} <br />\n\t\t\t\t\t\t\t\t\t<span class={'text-gray-700 ml-4'}>\n\t\t\t\t\t\t\t\t\t\t{values.join(', ')}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{Object.values(props.schema.model.entities).map(entity => (\n\t\t\t\t<EntityInfo key={entity.name} entity={entity} schema={props.schema} references={references} />\n\t\t\t))}\n\t\t</div>\n\t)\n}\n"],"names":[],"mappings":";;;;AAMO,MAAM,cAAc,CAAC,UAAmD;AAC9E,QAAM,aAAa,kBAAkB,MAAM,OAAO,KAAK;AAEvD,SACC,qBAAC,OAAA,EAAI,OAAO,UACX,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,OAAO,4CACX,UAAA;AAAA,MAAA,oBAAC,MAAA,EAAG,OAAO,0BAA2B,UAAA,MAAM,aAAY;AAAA,MACxD,qBAAC,OAAA,EAAI,OAAO,0BACX,UAAA;AAAA,QAAA,qBAAC,OAAA,EACA,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAG,OAAO,oCAAoC,UAAA,YAAQ;AAAA,UACvD,oBAAC,MAAA,EAAG,OAAO,WACT,UAAA,OAAO,OAAO,MAAM,OAAO,MAAM,QAAQ,EAAE,IAAI,YAC/C,oBAAC,MAAA,EACA,UAAA,oBAAC,YAAA,EAAW,QAAQ,OAAO,MAAM,EAAA,GADzB,OAAO,IAEhB,CACA,EAAA,CACF;AAAA,QAAA,GACD;AAAA,6BACC,OAAA,EACA,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAG,OAAO,oCAAoC,UAAA,SAAK;AAAA,UACpD,oBAAC,QAAG,OAAO,WACT,iBAAO,QAAQ,MAAM,OAAO,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,MAAM,MAC3D,qBAAC,MAAA,EAAG,OAAO,QACT,UAAA;AAAA,YAAA;AAAA,YAAK;AAAA,gCAAE,MAAA,EAAG;AAAA,gCACV,QAAA,EAAK,OAAO,sBACX,UAAA,OAAO,KAAK,IAAI,EAAA,CAClB;AAAA,UAAA,EAAA,GAJuB,IAKxB,CACA,EAAA,CACF;AAAA,QAAA,EAAA,CACD;AAAA,MAAA,EAAA,CACD;AAAA,IAAA,GACD;AAAA,IACC,OAAO,OAAO,MAAM,OAAO,MAAM,QAAQ,EAAE,IAAI,CAAA,WAC/C,oBAAC,YAAA,EAA6B,QAAgB,QAAQ,MAAM,QAAQ,WAAA,GAAnD,OAAO,IAAoE,CAC5F;AAAA,EAAA,GACF;AAEF;"}
1
+ {"version":3,"file":"ProjectInfo.js","sources":["../../../../../../../../packages/cli/src/lib/project/docs/components/ProjectInfo.tsx"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { h } from 'preact'\nimport { collectReferences } from '../../../schema/collectReferences.js'\nimport { EntityLink } from './EntityLink.js'\nimport { EntityInfo } from './EntityInfo.js'\n\nexport const ProjectInfo = (props: { schema: Schema; projectName: string }) => {\n\tconst references = collectReferences(props.schema.model)\n\n\treturn (\n\t\t<div class={'w-full'}>\n\t\t\t<div class={'bg-gray-100 p-6 border-b border-gray-400'}>\n\t\t\t\t<h1 class={'font-bold text-xl mb-1'}>{props.projectName}</h1>\n\t\t\t\t<div class={'flex flex-column gap-4'}>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h2 class={'font-semibold text-gray-500 mb-1'}>Entities</h2>\n\t\t\t\t\t\t<ul class={'text-sm'}>\n\t\t\t\t\t\t\t{Object.values(props.schema.model.entities).map(entity => (\n\t\t\t\t\t\t\t\t<li key={entity.name}>\n\t\t\t\t\t\t\t\t\t<EntityLink entity={entity.name} />\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h2 class={'font-semibold text-gray-500 mb-1'}>Enums</h2>\n\t\t\t\t\t\t<ul class={'text-sm'}>\n\t\t\t\t\t\t\t{Object.entries(props.schema.model.enums).map(([name, values]) => (\n\t\t\t\t\t\t\t\t<li class={'mb-2'} key={name}>\n\t\t\t\t\t\t\t\t\t{name} <br />\n\t\t\t\t\t\t\t\t\t<span class={'text-gray-700 ml-4'}>\n\t\t\t\t\t\t\t\t\t\t{values.join(', ')}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{Object.values(props.schema.model.entities).map(entity => (\n\t\t\t\t<EntityInfo key={entity.name} entity={entity} schema={props.schema} references={references} />\n\t\t\t))}\n\t\t</div>\n\t)\n}\n"],"names":[],"mappings":";;;;AAMO,MAAM,cAAc,CAAC,UAAmD;AAC9E,QAAM,aAAa,kBAAkB,MAAM,OAAO,KAAK;AAEvD,SACC,qBAAC,OAAA,EAAI,OAAO,UACX,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,OAAO,4CACX,UAAA;AAAA,MAAA,oBAAC,MAAA,EAAG,OAAO,0BAA2B,UAAA,MAAM,aAAY;AAAA,MACxD,qBAAC,OAAA,EAAI,OAAO,0BACX,UAAA;AAAA,QAAA,qBAAC,OAAA,EACA,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAG,OAAO,oCAAoC,UAAA,YAAQ;AAAA,UACvD,oBAAC,MAAA,EAAG,OAAO,WACT,UAAA,OAAO,OAAO,MAAM,OAAO,MAAM,QAAQ,EAAE,IAAI,YAC/C,oBAAC,MAAA,EACA,UAAA,oBAAC,YAAA,EAAW,QAAQ,OAAO,MAAM,EAAA,GADzB,OAAO,IAEhB,CACA,EAAA,CACF;AAAA,QAAA,GACD;AAAA,6BACC,OAAA,EACA,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAG,OAAO,oCAAoC,UAAA,SAAK;AAAA,UACpD,oBAAC,QAAG,OAAO,WACT,iBAAO,QAAQ,MAAM,OAAO,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,MAAM,MAC3D,qBAAC,MAAA,EAAG,OAAO,QACT,UAAA;AAAA,YAAA;AAAA,YAAK;AAAA,gCAAE,MAAA,EAAG;AAAA,gCACV,QAAA,EAAK,OAAO,sBACX,UAAA,OAAO,KAAK,IAAI,EAAA,CAClB;AAAA,UAAA,EAAA,GAJuB,IAKxB,CACA,EAAA,CACF;AAAA,QAAA,EAAA,CACD;AAAA,MAAA,EAAA,CACD;AAAA,IAAA,GACD;AAAA,IACC,OAAO,OAAO,MAAM,OAAO,MAAM,QAAQ,EAAE,IAAI,CAAA,WAC/C,oBAAC,YAAA,EAA6B,QAAgB,QAAQ,MAAM,QAAQ,WAAA,GAAnD,OAAO,IAAoE,CAC5F;AAAA,EAAA,GACF;AAEF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"projectDescribe.cjs","sources":["../../../../../../../packages/cli/src/lib/project/docs/projectDescribe.tsx"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { h } from 'preact'\nimport render from 'preact-render-to-string'\nimport { ProjectInfo } from './components/ProjectInfo'\nimport { readFile } from 'node:fs/promises'\nimport { packageRoot } from '../../../consts'\n\nexport const renderProjectInfoHtml = async (schema: Schema, projectName: string) => {\n\tconst html = render(<ProjectInfo schema={schema} projectName={projectName} />)\n\n\tconst css = await readFile(packageRoot + '/dist/resources/out.css')\n\treturn `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"UTF-8\">\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<style>${css}</style>\n\t<title>${projectName}</title>\n</head>\n<body>\n${html}\n</body>\n</html>\n`\n}\n"],"names":["jsx","ProjectInfo","readFile","packageRoot"],"mappings":";;;;;;;AAOO,MAAM,wBAAwB,OAAO,QAAgB,gBAAwB;AACnF,QAAM,OAAO,OAAOA,2BAAAA,IAACC,YAAAA,aAAA,EAAY,QAAgB,aAA0B,CAAE;AAE7E,QAAM,MAAM,MAAMC,YAASC,OAAAA,cAAc,yBAAyB;AAClE,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKE,GAAG;AAAA,UACH,WAAW;AAAA;AAAA;AAAA,EAGnB,IAAI;AAAA;AAAA;AAAA;AAIN;;"}
1
+ {"version":3,"file":"projectDescribe.cjs","sources":["../../../../../../../packages/cli/src/lib/project/docs/projectDescribe.tsx"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { h } from 'preact'\nimport render from 'preact-render-to-string'\nimport { ProjectInfo } from './components/ProjectInfo.js'\nimport { readFile } from 'node:fs/promises'\nimport { packageRoot } from '../../../consts.js'\n\nexport const renderProjectInfoHtml = async (schema: Schema, projectName: string) => {\n\tconst html = render(<ProjectInfo schema={schema} projectName={projectName} />)\n\n\tconst css = await readFile(packageRoot + '/dist/resources/out.css')\n\treturn `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"UTF-8\">\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<style>${css}</style>\n\t<title>${projectName}</title>\n</head>\n<body>\n${html}\n</body>\n</html>\n`\n}\n"],"names":["jsx","ProjectInfo","readFile","packageRoot"],"mappings":";;;;;;;AAOO,MAAM,wBAAwB,OAAO,QAAgB,gBAAwB;AACnF,QAAM,OAAO,OAAOA,2BAAAA,IAACC,YAAAA,aAAA,EAAY,QAAgB,aAA0B,CAAE;AAE7E,QAAM,MAAM,MAAMC,YAASC,OAAAA,cAAc,yBAAyB;AAClE,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKE,GAAG;AAAA,UACH,WAAW;AAAA;AAAA;AAAA,EAGnB,IAAI;AAAA;AAAA;AAAA;AAIN;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"projectDescribe.js","sources":["../../../../../../../packages/cli/src/lib/project/docs/projectDescribe.tsx"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { h } from 'preact'\nimport render from 'preact-render-to-string'\nimport { ProjectInfo } from './components/ProjectInfo'\nimport { readFile } from 'node:fs/promises'\nimport { packageRoot } from '../../../consts'\n\nexport const renderProjectInfoHtml = async (schema: Schema, projectName: string) => {\n\tconst html = render(<ProjectInfo schema={schema} projectName={projectName} />)\n\n\tconst css = await readFile(packageRoot + '/dist/resources/out.css')\n\treturn `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"UTF-8\">\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<style>${css}</style>\n\t<title>${projectName}</title>\n</head>\n<body>\n${html}\n</body>\n</html>\n`\n}\n"],"names":[],"mappings":";;;;;AAOO,MAAM,wBAAwB,OAAO,QAAgB,gBAAwB;AACnF,QAAM,OAAO,OAAO,oBAAC,aAAA,EAAY,QAAgB,aAA0B,CAAE;AAE7E,QAAM,MAAM,MAAM,SAAS,cAAc,yBAAyB;AAClE,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKE,GAAG;AAAA,UACH,WAAW;AAAA;AAAA;AAAA,EAGnB,IAAI;AAAA;AAAA;AAAA;AAIN;"}
1
+ {"version":3,"file":"projectDescribe.js","sources":["../../../../../../../packages/cli/src/lib/project/docs/projectDescribe.tsx"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { h } from 'preact'\nimport render from 'preact-render-to-string'\nimport { ProjectInfo } from './components/ProjectInfo.js'\nimport { readFile } from 'node:fs/promises'\nimport { packageRoot } from '../../../consts.js'\n\nexport const renderProjectInfoHtml = async (schema: Schema, projectName: string) => {\n\tconst html = render(<ProjectInfo schema={schema} projectName={projectName} />)\n\n\tconst css = await readFile(packageRoot + '/dist/resources/out.css')\n\treturn `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"UTF-8\">\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<style>${css}</style>\n\t<title>${projectName}</title>\n</head>\n<body>\n${html}\n</body>\n</html>\n`\n}\n"],"names":[],"mappings":";;;;;AAOO,MAAM,wBAAwB,OAAO,QAAgB,gBAAwB;AACnF,QAAM,OAAO,OAAO,oBAAC,aAAA,EAAY,QAAgB,aAA0B,CAAE;AAE7E,QAAM,MAAM,MAAM,SAAS,cAAc,yBAAyB;AAClE,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKE,GAAG;AAAA,UACH,WAAW;AAAA;AAAA;AAAA,EAGnB,IAAI;AAAA;AAAA;AAAA;AAIN;"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const node_path = require("node:path");
3
+ const path = require("node:path");
4
4
  const schemaUtils = require("@contember/schema-utils");
5
5
  const Typesafe = require("@contember/typesafe");
6
6
  function _interopNamespaceDefault(e) {
@@ -27,8 +27,8 @@ class ImportSchemaLoader {
27
27
  constructor(workspace) {
28
28
  this.workspace = workspace;
29
29
  __publicField(this, "loadSchema", async () => {
30
- const path = node_path.join(this.workspace.apiDir, "index.ts");
31
- const result = await import(path);
30
+ const path$1 = path.join(this.workspace.apiDir, "index.ts");
31
+ const result = await import(path$1);
32
32
  return Typesafe__namespace.object({ default: schemaUtils.schemaType })(result).default;
33
33
  });
34
34
  }
@@ -38,8 +38,8 @@ class TranspilingSchemaLoader {
38
38
  this.workspace = workspace;
39
39
  this.jsCodeRunner = jsCodeRunner;
40
40
  __publicField(this, "loadSchema", async () => {
41
- const path = node_path.join(this.workspace.apiDir, "index.ts");
42
- const result = await this.jsCodeRunner.run(path);
41
+ const path$1 = path.join(this.workspace.apiDir, "index.ts");
42
+ const result = await this.jsCodeRunner.run(path$1);
43
43
  return Typesafe__namespace.object({ default: schemaUtils.schemaType })(result).default;
44
44
  });
45
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaLoader.cjs","sources":["../../../../../../packages/cli/src/lib/schema/SchemaLoader.ts"],"sourcesContent":["import { join } from 'node:path'\nimport { Schema } from '@contember/schema'\nimport { schemaType } from '@contember/schema-utils'\nimport { JsCodeRunner } from '../js/JsCodeRunner'\nimport * as Typesafe from '@contember/typesafe'\nimport { Workspace } from '../workspace/Workspace'\n\nexport class ImportSchemaLoader {\n\tconstructor(\n\t\tprivate readonly workspace: Workspace,\n\t) {\n\t}\n\n\tloadSchema = async (): Promise<Schema> => {\n\t\tconst path = join(this.workspace.apiDir, 'index.ts')\n\t\tconst result = await import(path)\n\t\treturn Typesafe.object({ default: schemaType })(result).default\n\t}\n}\n\nexport class TranspilingSchemaLoader {\n\tconstructor(\n\t\tprivate readonly workspace: Workspace,\n\t\tprivate readonly jsCodeRunner: JsCodeRunner,\n\t) {\n\t}\n\n\tloadSchema = async (): Promise<Schema> => {\n\t\tconst path = join(this.workspace.apiDir, 'index.ts')\n\n\t\tconst result = await this.jsCodeRunner.run(path)\n\t\treturn Typesafe.object({ default: schemaType })(result).default\n\t}\n}\n\nexport interface SchemaLoader {\n\tloadSchema(): Promise<Schema>\n}\n"],"names":["join","Typesafe","schemaType"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,mBAAmB;AAAA,EAC/B,YACkB,WAChB;AADgB,SAAA,YAAA;AAIlB,kBAAA,MAAA,cAAa,YAA6B;AACzC,YAAM,OAAOA,UAAAA,KAAK,KAAK,UAAU,QAAQ,UAAU;AACnD,YAAM,SAAS,MAAM,OAAO;AAC5B,aAAOC,oBAAS,OAAO,EAAE,SAASC,YAAAA,YAAY,EAAE,MAAM,EAAE;AAAA,IACzD,CAAA;AAAA,EANA;AAOD;AAEO,MAAM,wBAAwB;AAAA,EACpC,YACkB,WACA,cAChB;AAFgB,SAAA,YAAA;AACA,SAAA,eAAA;AAIlB,kBAAA,MAAA,cAAa,YAA6B;AACzC,YAAM,OAAOF,UAAAA,KAAK,KAAK,UAAU,QAAQ,UAAU;AAEnD,YAAM,SAAS,MAAM,KAAK,aAAa,IAAI,IAAI;AAC/C,aAAOC,oBAAS,OAAO,EAAE,SAASC,YAAAA,YAAY,EAAE,MAAM,EAAE;AAAA,IACzD,CAAA;AAAA,EAPA;AAQD;;;"}
1
+ {"version":3,"file":"SchemaLoader.cjs","sources":["../../../../../../packages/cli/src/lib/schema/SchemaLoader.ts"],"sourcesContent":["import { join } from 'node:path'\nimport { Schema } from '@contember/schema'\nimport { schemaType } from '@contember/schema-utils'\nimport { JsCodeRunner } from '../js/JsCodeRunner.js'\nimport * as Typesafe from '@contember/typesafe'\nimport { Workspace } from '../workspace/Workspace.js'\n\nexport class ImportSchemaLoader {\n\tconstructor(\n\t\tprivate readonly workspace: Workspace,\n\t) {\n\t}\n\n\tloadSchema = async (): Promise<Schema> => {\n\t\tconst path = join(this.workspace.apiDir, 'index.ts')\n\t\tconst result = await import(path)\n\t\treturn Typesafe.object({ default: schemaType })(result).default\n\t}\n}\n\nexport class TranspilingSchemaLoader {\n\tconstructor(\n\t\tprivate readonly workspace: Workspace,\n\t\tprivate readonly jsCodeRunner: JsCodeRunner,\n\t) {\n\t}\n\n\tloadSchema = async (): Promise<Schema> => {\n\t\tconst path = join(this.workspace.apiDir, 'index.ts')\n\n\t\tconst result = await this.jsCodeRunner.run(path)\n\t\treturn Typesafe.object({ default: schemaType })(result).default\n\t}\n}\n\nexport interface SchemaLoader {\n\tloadSchema(): Promise<Schema>\n}\n"],"names":["path","join","Typesafe","schemaType"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,mBAAmB;AAAA,EAC/B,YACkB,WAChB;AADgB,SAAA,YAAA;AAIlB,kBAAA,MAAA,cAAa,YAA6B;AACzC,YAAMA,SAAOC,KAAAA,KAAK,KAAK,UAAU,QAAQ,UAAU;AACnD,YAAM,SAAS,MAAM,OAAOD;AAC5B,aAAOE,oBAAS,OAAO,EAAE,SAASC,YAAAA,YAAY,EAAE,MAAM,EAAE;AAAA,IACzD,CAAA;AAAA,EANA;AAOD;AAEO,MAAM,wBAAwB;AAAA,EACpC,YACkB,WACA,cAChB;AAFgB,SAAA,YAAA;AACA,SAAA,eAAA;AAIlB,kBAAA,MAAA,cAAa,YAA6B;AACzC,YAAMH,SAAOC,KAAAA,KAAK,KAAK,UAAU,QAAQ,UAAU;AAEnD,YAAM,SAAS,MAAM,KAAK,aAAa,IAAID,MAAI;AAC/C,aAAOE,oBAAS,OAAO,EAAE,SAASC,YAAAA,YAAY,EAAE,MAAM,EAAE;AAAA,IACzD,CAAA;AAAA,EAPA;AAQD;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaLoader.js","sources":["../../../../../../packages/cli/src/lib/schema/SchemaLoader.ts"],"sourcesContent":["import { join } from 'node:path'\nimport { Schema } from '@contember/schema'\nimport { schemaType } from '@contember/schema-utils'\nimport { JsCodeRunner } from '../js/JsCodeRunner'\nimport * as Typesafe from '@contember/typesafe'\nimport { Workspace } from '../workspace/Workspace'\n\nexport class ImportSchemaLoader {\n\tconstructor(\n\t\tprivate readonly workspace: Workspace,\n\t) {\n\t}\n\n\tloadSchema = async (): Promise<Schema> => {\n\t\tconst path = join(this.workspace.apiDir, 'index.ts')\n\t\tconst result = await import(path)\n\t\treturn Typesafe.object({ default: schemaType })(result).default\n\t}\n}\n\nexport class TranspilingSchemaLoader {\n\tconstructor(\n\t\tprivate readonly workspace: Workspace,\n\t\tprivate readonly jsCodeRunner: JsCodeRunner,\n\t) {\n\t}\n\n\tloadSchema = async (): Promise<Schema> => {\n\t\tconst path = join(this.workspace.apiDir, 'index.ts')\n\n\t\tconst result = await this.jsCodeRunner.run(path)\n\t\treturn Typesafe.object({ default: schemaType })(result).default\n\t}\n}\n\nexport interface SchemaLoader {\n\tloadSchema(): Promise<Schema>\n}\n"],"names":[],"mappings":";;;;;;AAOO,MAAM,mBAAmB;AAAA,EAC/B,YACkB,WAChB;AADgB,SAAA,YAAA;AAIlB,kBAAA,MAAA,cAAa,YAA6B;AACzC,YAAM,OAAO,KAAK,KAAK,UAAU,QAAQ,UAAU;AACnD,YAAM,SAAS,MAAM,OAAO;AAC5B,aAAO,SAAS,OAAO,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE;AAAA,IACzD,CAAA;AAAA,EANA;AAOD;AAEO,MAAM,wBAAwB;AAAA,EACpC,YACkB,WACA,cAChB;AAFgB,SAAA,YAAA;AACA,SAAA,eAAA;AAIlB,kBAAA,MAAA,cAAa,YAA6B;AACzC,YAAM,OAAO,KAAK,KAAK,UAAU,QAAQ,UAAU;AAEnD,YAAM,SAAS,MAAM,KAAK,aAAa,IAAI,IAAI;AAC/C,aAAO,SAAS,OAAO,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE;AAAA,IACzD,CAAA;AAAA,EAPA;AAQD;"}
1
+ {"version":3,"file":"SchemaLoader.js","sources":["../../../../../../packages/cli/src/lib/schema/SchemaLoader.ts"],"sourcesContent":["import { join } from 'node:path'\nimport { Schema } from '@contember/schema'\nimport { schemaType } from '@contember/schema-utils'\nimport { JsCodeRunner } from '../js/JsCodeRunner.js'\nimport * as Typesafe from '@contember/typesafe'\nimport { Workspace } from '../workspace/Workspace.js'\n\nexport class ImportSchemaLoader {\n\tconstructor(\n\t\tprivate readonly workspace: Workspace,\n\t) {\n\t}\n\n\tloadSchema = async (): Promise<Schema> => {\n\t\tconst path = join(this.workspace.apiDir, 'index.ts')\n\t\tconst result = await import(path)\n\t\treturn Typesafe.object({ default: schemaType })(result).default\n\t}\n}\n\nexport class TranspilingSchemaLoader {\n\tconstructor(\n\t\tprivate readonly workspace: Workspace,\n\t\tprivate readonly jsCodeRunner: JsCodeRunner,\n\t) {\n\t}\n\n\tloadSchema = async (): Promise<Schema> => {\n\t\tconst path = join(this.workspace.apiDir, 'index.ts')\n\n\t\tconst result = await this.jsCodeRunner.run(path)\n\t\treturn Typesafe.object({ default: schemaType })(result).default\n\t}\n}\n\nexport interface SchemaLoader {\n\tloadSchema(): Promise<Schema>\n}\n"],"names":[],"mappings":";;;;;;AAOO,MAAM,mBAAmB;AAAA,EAC/B,YACkB,WAChB;AADgB,SAAA,YAAA;AAIlB,kBAAA,MAAA,cAAa,YAA6B;AACzC,YAAM,OAAO,KAAK,KAAK,UAAU,QAAQ,UAAU;AACnD,YAAM,SAAS,MAAM,OAAO;AAC5B,aAAO,SAAS,OAAO,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE;AAAA,IACzD,CAAA;AAAA,EANA;AAOD;AAEO,MAAM,wBAAwB;AAAA,EACpC,YACkB,WACA,cAChB;AAFgB,SAAA,YAAA;AACA,SAAA,eAAA;AAIlB,kBAAA,MAAA,cAAa,YAA6B;AACzC,YAAM,OAAO,KAAK,KAAK,UAAU,QAAQ,UAAU;AAEnD,YAAM,SAAS,MAAM,KAAK,aAAa,IAAI,IAAI;AAC/C,aAAO,SAAS,OAAO,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE;AAAA,IACzD,CAAA;AAAA,EAPA;AAQD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaValidationHelper.cjs","sources":["../../../../../../packages/cli/src/lib/schema/SchemaValidationHelper.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { SchemaValidator, SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport { printValidationErrors } from './SchemaValidationPrinter'\n\nexport const validateSchemaAndPrintErrors = (schema: Schema, message?: string, skippedErrors?: SchemaValidatorSkippedErrors[]): boolean => {\n\tconst errors = SchemaValidator.validate(schema, skippedErrors)\n\tprintValidationErrors(errors, message)\n\treturn errors.length === 0\n}\n"],"names":["SchemaValidator","printValidationErrors"],"mappings":";;;;AAIO,MAAM,+BAA+B,CAAC,QAAgB,SAAkB,kBAA4D;AAC1I,QAAM,SAASA,YAAAA,gBAAgB,SAAS,QAAQ,aAAa;AAC7DC,0BAAAA,sBAAsB,QAAQ,OAAO;AACrC,SAAO,OAAO,WAAW;AAC1B;;"}
1
+ {"version":3,"file":"SchemaValidationHelper.cjs","sources":["../../../../../../packages/cli/src/lib/schema/SchemaValidationHelper.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { SchemaValidator, SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport { printValidationErrors } from './SchemaValidationPrinter.js'\n\nexport const validateSchemaAndPrintErrors = (schema: Schema, message?: string, skippedErrors?: SchemaValidatorSkippedErrors[]): boolean => {\n\tconst errors = SchemaValidator.validate(schema, skippedErrors)\n\tprintValidationErrors(errors, message)\n\treturn errors.length === 0\n}\n"],"names":["SchemaValidator","printValidationErrors"],"mappings":";;;;AAIO,MAAM,+BAA+B,CAAC,QAAgB,SAAkB,kBAA4D;AAC1I,QAAM,SAASA,YAAAA,gBAAgB,SAAS,QAAQ,aAAa;AAC7DC,0BAAAA,sBAAsB,QAAQ,OAAO;AACrC,SAAO,OAAO,WAAW;AAC1B;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaValidationHelper.js","sources":["../../../../../../packages/cli/src/lib/schema/SchemaValidationHelper.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { SchemaValidator, SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport { printValidationErrors } from './SchemaValidationPrinter'\n\nexport const validateSchemaAndPrintErrors = (schema: Schema, message?: string, skippedErrors?: SchemaValidatorSkippedErrors[]): boolean => {\n\tconst errors = SchemaValidator.validate(schema, skippedErrors)\n\tprintValidationErrors(errors, message)\n\treturn errors.length === 0\n}\n"],"names":[],"mappings":";;AAIO,MAAM,+BAA+B,CAAC,QAAgB,SAAkB,kBAA4D;AAC1I,QAAM,SAAS,gBAAgB,SAAS,QAAQ,aAAa;AAC7D,wBAAsB,QAAQ,OAAO;AACrC,SAAO,OAAO,WAAW;AAC1B;"}
1
+ {"version":3,"file":"SchemaValidationHelper.js","sources":["../../../../../../packages/cli/src/lib/schema/SchemaValidationHelper.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { SchemaValidator, SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport { printValidationErrors } from './SchemaValidationPrinter.js'\n\nexport const validateSchemaAndPrintErrors = (schema: Schema, message?: string, skippedErrors?: SchemaValidatorSkippedErrors[]): boolean => {\n\tconst errors = SchemaValidator.validate(schema, skippedErrors)\n\tprintValidationErrors(errors, message)\n\treturn errors.length === 0\n}\n"],"names":[],"mappings":";;AAIO,MAAM,+BAA+B,CAAC,QAAgB,SAAkB,kBAA4D;AAC1I,QAAM,SAAS,gBAAgB,SAAS,QAAQ,aAAa;AAC7D,wBAAsB,QAAQ,OAAO;AACrC,SAAO,OAAO,WAAW;AAC1B;"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const graphqlClient = require("@contember/graphql-client");
4
+ const TenantApi = require("@contember/graphql-client-tenant");
5
+ const graphqlTsClientApi = require("graphql-ts-client-api");
4
6
  const createTenantApiUrl = (url) => {
5
7
  if (url.endsWith("/")) {
6
8
  url = url.substring(0, url.length - 1);
@@ -10,6 +12,14 @@ const createTenantApiUrl = (url) => {
10
12
  }
11
13
  return url + "/tenant";
12
14
  };
15
+ const createProjectFetcher = TenantApi.mutation$.createProject(TenantApi.createProjectResponse$$.error(TenantApi.createProjectResponseError$$));
16
+ const configureFetcher = TenantApi.mutation$.configure(TenantApi.configureResponse$$.error(TenantApi.configureError$$));
17
+ const identityProvidersFetcher = TenantApi.query$.identityProviders(TenantApi.identityProvider$.slug.type.disabledAt);
18
+ const addIdpFetcher = TenantApi.mutation$.addIDP(TenantApi.addIDPResponse$$.error(TenantApi.addIDPError$$));
19
+ const updateIdpFetcher = TenantApi.mutation$.updateIDP(TenantApi.updateIDPResponse$$.error(TenantApi.updateIDPError$$));
20
+ const enableIdpFetcher = TenantApi.mutation$.enableIDP(TenantApi.enableIDPResponse$$.error(TenantApi.enableIDPError$$));
21
+ const disableIdpFetcher = TenantApi.mutation$.disableIDP(TenantApi.disableIDPResponse$$.error(TenantApi.disableIDPError$$));
22
+ const addMailTemplateFetcher = TenantApi.mutation$.addMailTemplate(TenantApi.addMailTemplateResponse$$.error(TenantApi.addMailTemplateError$$));
13
23
  class TenantClient {
14
24
  constructor(apiClient) {
15
25
  this.apiClient = apiClient;
@@ -19,20 +29,73 @@ class TenantClient {
19
29
  return new TenantClient(graphqlClient$1);
20
30
  }
21
31
  async createProject(slug, ignoreExisting = false) {
22
- const query = `mutation($slug: String!) {
23
- createProject(projectSlug: $slug) {
24
- ok
25
- error {
26
- code
27
- }
28
- }
29
- }`;
30
- const result = await this.apiClient.execute(query, { variables: { slug } });
31
- if (!result.createProject.ok) {
32
- if (ignoreExisting && result.createProject.error.code === "ALREADY_EXISTS") {
32
+ const result = await this.exec(createProjectFetcher, { projectSlug: slug });
33
+ if (!result.createProject?.ok) {
34
+ const code = result.createProject?.error?.code;
35
+ if (ignoreExisting && code === "ALREADY_EXISTS") {
33
36
  return;
34
37
  }
35
- throw result.createProject.error.code;
38
+ throw code ?? "UNKNOWN";
39
+ }
40
+ }
41
+ async configure(config) {
42
+ const result = await this.exec(configureFetcher, { config });
43
+ this.assertOk(result.configure, "configure");
44
+ }
45
+ async listIdentityProviders() {
46
+ const result = await this.exec(identityProvidersFetcher, {});
47
+ return result.identityProviders.map((it) => ({
48
+ slug: it.slug,
49
+ type: it.type,
50
+ disabledAt: it.disabledAt ?? null
51
+ }));
52
+ }
53
+ async addIdp(slug, type, configuration, options) {
54
+ const result = await this.exec(addIdpFetcher, { identityProvider: slug, type, configuration, options });
55
+ this.assertOk(result.addIDP, `addIDP(${slug})`);
56
+ }
57
+ async updateIdp(slug, type, configuration, options) {
58
+ const result = await this.exec(updateIdpFetcher, {
59
+ identityProvider: slug,
60
+ type,
61
+ configuration,
62
+ options,
63
+ mergeConfiguration: false
64
+ });
65
+ this.assertOk(result.updateIDP, `updateIDP(${slug})`);
66
+ }
67
+ async enableIdp(slug) {
68
+ const result = await this.exec(enableIdpFetcher, { identityProvider: slug });
69
+ this.assertOk(result.enableIDP, `enableIDP(${slug})`);
70
+ }
71
+ async disableIdp(slug) {
72
+ const result = await this.exec(disableIdpFetcher, { identityProvider: slug });
73
+ this.assertOk(result.disableIDP, `disableIDP(${slug})`);
74
+ }
75
+ async addMailTemplate(template) {
76
+ const result = await this.exec(addMailTemplateFetcher, { template });
77
+ this.assertOk(result.addMailTemplate, `addMailTemplate(${template.type}/${template.variant ?? ""})`);
78
+ }
79
+ async exec(fetcher, variables) {
80
+ const writer = new graphqlTsClientApi.TextWriter();
81
+ writer.text(fetcher.fetchableType.name.toLowerCase());
82
+ if (fetcher.variableTypeMap.size !== 0) {
83
+ writer.scope({ type: "ARGUMENTS", multiLines: fetcher.variableTypeMap.size > 2, suffix: " " }, () => {
84
+ graphqlTsClientApi.util.iterateMap(fetcher.variableTypeMap, ([name, type]) => {
85
+ writer.seperator();
86
+ writer.text(`$${name}: ${type}`);
87
+ });
88
+ });
89
+ }
90
+ writer.text(fetcher.toString());
91
+ writer.text(fetcher.toFragmentString());
92
+ return this.apiClient.execute(writer.toString(), { variables });
93
+ }
94
+ assertOk(result, operation) {
95
+ if (!result?.ok) {
96
+ const code = result?.error?.code ?? "UNKNOWN";
97
+ const message = result?.error?.developerMessage;
98
+ throw `${operation} failed: ${code}${message ? ` — ${message}` : ""}`;
36
99
  }
37
100
  }
38
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TenantClient.cjs","sources":["../../../../../../packages/cli/src/lib/tenant/TenantClient.ts"],"sourcesContent":["import { GraphQlClient } from '@contember/graphql-client'\n\nexport const createTenantApiUrl = (url: string) => {\n\tif (url.endsWith('/')) {\n\t\turl = url.substring(0, url.length - 1)\n\t}\n\tif (url.endsWith('/tenant')) {\n\t\treturn url\n\t}\n\treturn url + '/tenant'\n}\n\nexport class TenantClient {\n\tconstructor(private readonly apiClient: GraphQlClient) {}\n\n\tpublic static create(url: string, apiToken: string): TenantClient {\n\t\tconst graphqlClient = new GraphQlClient({ url: createTenantApiUrl(url), apiToken })\n\t\treturn new TenantClient(graphqlClient)\n\t}\n\n\tpublic async createProject(slug: string, ignoreExisting = false): Promise<void> {\n\t\tconst query = `mutation($slug: String!) {\n createProject(projectSlug: $slug) {\n ok\n error {\n code\n }\n }\n}`\n\t\tconst result = await this.apiClient.execute<{\n\t\t\tcreateProject: { ok: boolean; error: { code: string } }\n\t\t}>(query, { variables: { slug } })\n\t\tif (!result.createProject.ok) {\n\t\t\tif (ignoreExisting && result.createProject.error.code === 'ALREADY_EXISTS') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthrow result.createProject.error.code\n\t\t}\n\t}\n}\n"],"names":["graphqlClient","GraphQlClient"],"mappings":";;;AAEO,MAAM,qBAAqB,CAAC,QAAgB;AAClD,MAAI,IAAI,SAAS,GAAG,GAAG;AACtB,UAAM,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC;AAAA,EACtC;AACA,MAAI,IAAI,SAAS,SAAS,GAAG;AAC5B,WAAO;AAAA,EACR;AACA,SAAO,MAAM;AACd;AAEO,MAAM,aAAa;AAAA,EACzB,YAA6B,WAA0B;AAA1B,SAAA,YAAA;AAAA,EAA2B;AAAA,EAExD,OAAc,OAAO,KAAa,UAAgC;AACjE,UAAMA,kBAAgB,IAAIC,cAAAA,cAAc,EAAE,KAAK,mBAAmB,GAAG,GAAG,UAAU;AAClF,WAAO,IAAI,aAAaD,eAAa;AAAA,EACtC;AAAA,EAEA,MAAa,cAAc,MAAc,iBAAiB,OAAsB;AAC/E,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQd,UAAM,SAAS,MAAM,KAAK,UAAU,QAEjC,OAAO,EAAE,WAAW,EAAE,KAAA,GAAQ;AACjC,QAAI,CAAC,OAAO,cAAc,IAAI;AAC7B,UAAI,kBAAkB,OAAO,cAAc,MAAM,SAAS,kBAAkB;AAC3E;AAAA,MACD;AACA,YAAM,OAAO,cAAc,MAAM;AAAA,IAClC;AAAA,EACD;AACD;;;"}
1
+ {"version":3,"file":"TenantClient.cjs","sources":["../../../../../../packages/cli/src/lib/tenant/TenantClient.ts"],"sourcesContent":["import { GraphQlClient } from '@contember/graphql-client'\nimport {\n\taddIDPError$$,\n\taddIDPResponse$$,\n\taddMailTemplateError$$,\n\taddMailTemplateResponse$$,\n\ttype ConfigInput,\n\tconfigureError$$,\n\tconfigureResponse$$,\n\tcreateProjectResponse$$,\n\tcreateProjectResponseError$$,\n\tdisableIDPError$$,\n\tdisableIDPResponse$$,\n\tenableIDPError$$,\n\tenableIDPResponse$$,\n\tidentityProvider$,\n\ttype MailTemplate,\n\tmutation$,\n\tquery$,\n\tupdateIDPError$$,\n\tupdateIDPResponse$$,\n} from '@contember/graphql-client-tenant'\nimport { Fetcher, TextWriter, util } from 'graphql-ts-client-api'\nimport { TenantGlobalConfig, TenantIdpOptions, TenantMailTemplate } from './tenantConfig.js'\n\nexport const createTenantApiUrl = (url: string) => {\n\tif (url.endsWith('/')) {\n\t\turl = url.substring(0, url.length - 1)\n\t}\n\tif (url.endsWith('/tenant')) {\n\t\treturn url\n\t}\n\treturn url + '/tenant'\n}\n\nexport interface RemoteIdentityProvider {\n\tslug: string\n\ttype: string\n\tdisabledAt: string | null\n}\n\ninterface MutationResult {\n\tok: boolean\n\terror?: { code: string; developerMessage?: string } | null\n}\n\n// Fetchers are immutable and reusable, so they are built once at module load.\nconst createProjectFetcher = mutation$.createProject(createProjectResponse$$.error(createProjectResponseError$$))\nconst configureFetcher = mutation$.configure(configureResponse$$.error(configureError$$))\nconst identityProvidersFetcher = query$.identityProviders(identityProvider$.slug.type.disabledAt)\nconst addIdpFetcher = mutation$.addIDP(addIDPResponse$$.error(addIDPError$$))\nconst updateIdpFetcher = mutation$.updateIDP(updateIDPResponse$$.error(updateIDPError$$))\nconst enableIdpFetcher = mutation$.enableIDP(enableIDPResponse$$.error(enableIDPError$$))\nconst disableIdpFetcher = mutation$.disableIDP(disableIDPResponse$$.error(disableIDPError$$))\nconst addMailTemplateFetcher = mutation$.addMailTemplate(addMailTemplateResponse$$.error(addMailTemplateError$$))\n\nexport class TenantClient {\n\tconstructor(private readonly apiClient: GraphQlClient) {}\n\n\tpublic static create(url: string, apiToken: string): TenantClient {\n\t\tconst graphqlClient = new GraphQlClient({ url: createTenantApiUrl(url), apiToken })\n\t\treturn new TenantClient(graphqlClient)\n\t}\n\n\tpublic async createProject(slug: string, ignoreExisting = false): Promise<void> {\n\t\tconst result = await this.exec(createProjectFetcher, { projectSlug: slug })\n\t\tif (!result.createProject?.ok) {\n\t\t\tconst code = result.createProject?.error?.code\n\t\t\tif (ignoreExisting && code === 'ALREADY_EXISTS') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthrow code ?? 'UNKNOWN'\n\t\t}\n\t}\n\n\tpublic async configure(config: TenantGlobalConfig): Promise<void> {\n\t\t// `TenantGlobalConfig` widens a few fields to `| null` (the API accepts an\n\t\t// explicit null to clear/disable); the generated wire type omits that.\n\t\tconst result = await this.exec(configureFetcher, { config: config as ConfigInput })\n\t\tthis.assertOk(result.configure, 'configure')\n\t}\n\n\tpublic async listIdentityProviders(): Promise<RemoteIdentityProvider[]> {\n\t\tconst result = await this.exec(identityProvidersFetcher, {})\n\t\treturn result.identityProviders.map(it => ({\n\t\t\tslug: it.slug,\n\t\t\ttype: it.type,\n\t\t\tdisabledAt: it.disabledAt ?? null,\n\t\t}))\n\t}\n\n\tpublic async addIdp(slug: string, type: string, configuration: unknown, options?: TenantIdpOptions): Promise<void> {\n\t\tconst result = await this.exec(addIdpFetcher, { identityProvider: slug, type, configuration, options })\n\t\tthis.assertOk(result.addIDP, `addIDP(${slug})`)\n\t}\n\n\tpublic async updateIdp(slug: string, type: string, configuration: unknown, options?: TenantIdpOptions): Promise<void> {\n\t\tconst result = await this.exec(updateIdpFetcher, {\n\t\t\tidentityProvider: slug,\n\t\t\ttype,\n\t\t\tconfiguration,\n\t\t\toptions,\n\t\t\tmergeConfiguration: false,\n\t\t})\n\t\tthis.assertOk(result.updateIDP, `updateIDP(${slug})`)\n\t}\n\n\tpublic async enableIdp(slug: string): Promise<void> {\n\t\tconst result = await this.exec(enableIdpFetcher, { identityProvider: slug })\n\t\tthis.assertOk(result.enableIDP, `enableIDP(${slug})`)\n\t}\n\n\tpublic async disableIdp(slug: string): Promise<void> {\n\t\tconst result = await this.exec(disableIdpFetcher, { identityProvider: slug })\n\t\tthis.assertOk(result.disableIDP, `disableIDP(${slug})`)\n\t}\n\n\tpublic async addMailTemplate(template: TenantMailTemplate): Promise<void> {\n\t\tconst result = await this.exec(addMailTemplateFetcher, { template: template as MailTemplate })\n\t\tthis.assertOk(result.addMailTemplate, `addMailTemplate(${template.type}/${template.variant ?? ''})`)\n\t}\n\n\tprivate async exec<TData extends object, TVariables extends object>(\n\t\tfetcher: Fetcher<'Query' | 'Mutation', TData, TVariables>,\n\t\tvariables: TVariables,\n\t): Promise<TData> {\n\t\tconst writer = new TextWriter()\n\t\twriter.text(fetcher.fetchableType.name.toLowerCase())\n\t\tif (fetcher.variableTypeMap.size !== 0) {\n\t\t\twriter.scope({ type: 'ARGUMENTS', multiLines: fetcher.variableTypeMap.size > 2, suffix: ' ' }, () => {\n\t\t\t\tutil.iterateMap(fetcher.variableTypeMap, ([name, type]) => {\n\t\t\t\t\twriter.seperator()\n\t\t\t\t\twriter.text(`$${name}: ${type}`)\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t\twriter.text(fetcher.toString())\n\t\twriter.text(fetcher.toFragmentString())\n\t\treturn this.apiClient.execute<TData>(writer.toString(), { variables })\n\t}\n\n\tprivate assertOk(result: MutationResult | undefined, operation: string): void {\n\t\tif (!result?.ok) {\n\t\t\tconst code = result?.error?.code ?? 'UNKNOWN'\n\t\t\tconst message = result?.error?.developerMessage\n\t\t\tthrow `${operation} failed: ${code}${message ? ` — ${message}` : ''}`\n\t\t}\n\t}\n}\n"],"names":["mutation$","createProjectResponse$$","createProjectResponseError$$","configureResponse$$","configureError$$","query$","identityProvider$","addIDPResponse$$","addIDPError$$","updateIDPResponse$$","updateIDPError$$","enableIDPResponse$$","enableIDPError$$","disableIDPResponse$$","disableIDPError$$","addMailTemplateResponse$$","addMailTemplateError$$","graphqlClient","GraphQlClient","TextWriter","util"],"mappings":";;;;;AAyBO,MAAM,qBAAqB,CAAC,QAAgB;AAClD,MAAI,IAAI,SAAS,GAAG,GAAG;AACtB,UAAM,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC;AAAA,EACtC;AACA,MAAI,IAAI,SAAS,SAAS,GAAG;AAC5B,WAAO;AAAA,EACR;AACA,SAAO,MAAM;AACd;AAcA,MAAM,uBAAuBA,UAAAA,UAAU,cAAcC,UAAAA,wBAAwB,MAAMC,UAAAA,4BAA4B,CAAC;AAChH,MAAM,mBAAmBF,UAAAA,UAAU,UAAUG,UAAAA,oBAAoB,MAAMC,UAAAA,gBAAgB,CAAC;AACxF,MAAM,2BAA2BC,UAAAA,OAAO,kBAAkBC,UAAAA,kBAAkB,KAAK,KAAK,UAAU;AAChG,MAAM,gBAAgBN,UAAAA,UAAU,OAAOO,UAAAA,iBAAiB,MAAMC,UAAAA,aAAa,CAAC;AAC5E,MAAM,mBAAmBR,UAAAA,UAAU,UAAUS,UAAAA,oBAAoB,MAAMC,UAAAA,gBAAgB,CAAC;AACxF,MAAM,mBAAmBV,UAAAA,UAAU,UAAUW,UAAAA,oBAAoB,MAAMC,UAAAA,gBAAgB,CAAC;AACxF,MAAM,oBAAoBZ,UAAAA,UAAU,WAAWa,UAAAA,qBAAqB,MAAMC,UAAAA,iBAAiB,CAAC;AAC5F,MAAM,yBAAyBd,UAAAA,UAAU,gBAAgBe,UAAAA,0BAA0B,MAAMC,UAAAA,sBAAsB,CAAC;AAEzG,MAAM,aAAa;AAAA,EACzB,YAA6B,WAA0B;AAA1B,SAAA,YAAA;AAAA,EAA2B;AAAA,EAExD,OAAc,OAAO,KAAa,UAAgC;AACjE,UAAMC,kBAAgB,IAAIC,cAAAA,cAAc,EAAE,KAAK,mBAAmB,GAAG,GAAG,UAAU;AAClF,WAAO,IAAI,aAAaD,eAAa;AAAA,EACtC;AAAA,EAEA,MAAa,cAAc,MAAc,iBAAiB,OAAsB;AAC/E,UAAM,SAAS,MAAM,KAAK,KAAK,sBAAsB,EAAE,aAAa,MAAM;AAC1E,QAAI,CAAC,OAAO,eAAe,IAAI;AAC9B,YAAM,OAAO,OAAO,eAAe,OAAO;AAC1C,UAAI,kBAAkB,SAAS,kBAAkB;AAChD;AAAA,MACD;AACA,YAAM,QAAQ;AAAA,IACf;AAAA,EACD;AAAA,EAEA,MAAa,UAAU,QAA2C;AAGjE,UAAM,SAAS,MAAM,KAAK,KAAK,kBAAkB,EAAE,QAA+B;AAClF,SAAK,SAAS,OAAO,WAAW,WAAW;AAAA,EAC5C;AAAA,EAEA,MAAa,wBAA2D;AACvE,UAAM,SAAS,MAAM,KAAK,KAAK,0BAA0B,CAAA,CAAE;AAC3D,WAAO,OAAO,kBAAkB,IAAI,CAAA,QAAO;AAAA,MAC1C,MAAM,GAAG;AAAA,MACT,MAAM,GAAG;AAAA,MACT,YAAY,GAAG,cAAc;AAAA,IAAA,EAC5B;AAAA,EACH;AAAA,EAEA,MAAa,OAAO,MAAc,MAAc,eAAwB,SAA2C;AAClH,UAAM,SAAS,MAAM,KAAK,KAAK,eAAe,EAAE,kBAAkB,MAAM,MAAM,eAAe,QAAA,CAAS;AACtG,SAAK,SAAS,OAAO,QAAQ,UAAU,IAAI,GAAG;AAAA,EAC/C;AAAA,EAEA,MAAa,UAAU,MAAc,MAAc,eAAwB,SAA2C;AACrH,UAAM,SAAS,MAAM,KAAK,KAAK,kBAAkB;AAAA,MAChD,kBAAkB;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA,oBAAoB;AAAA,IAAA,CACpB;AACD,SAAK,SAAS,OAAO,WAAW,aAAa,IAAI,GAAG;AAAA,EACrD;AAAA,EAEA,MAAa,UAAU,MAA6B;AACnD,UAAM,SAAS,MAAM,KAAK,KAAK,kBAAkB,EAAE,kBAAkB,MAAM;AAC3E,SAAK,SAAS,OAAO,WAAW,aAAa,IAAI,GAAG;AAAA,EACrD;AAAA,EAEA,MAAa,WAAW,MAA6B;AACpD,UAAM,SAAS,MAAM,KAAK,KAAK,mBAAmB,EAAE,kBAAkB,MAAM;AAC5E,SAAK,SAAS,OAAO,YAAY,cAAc,IAAI,GAAG;AAAA,EACvD;AAAA,EAEA,MAAa,gBAAgB,UAA6C;AACzE,UAAM,SAAS,MAAM,KAAK,KAAK,wBAAwB,EAAE,UAAoC;AAC7F,SAAK,SAAS,OAAO,iBAAiB,mBAAmB,SAAS,IAAI,IAAI,SAAS,WAAW,EAAE,GAAG;AAAA,EACpG;AAAA,EAEA,MAAc,KACb,SACA,WACiB;AACjB,UAAM,SAAS,IAAIE,8BAAA;AACnB,WAAO,KAAK,QAAQ,cAAc,KAAK,aAAa;AACpD,QAAI,QAAQ,gBAAgB,SAAS,GAAG;AACvC,aAAO,MAAM,EAAE,MAAM,aAAa,YAAY,QAAQ,gBAAgB,OAAO,GAAG,QAAQ,IAAA,GAAO,MAAM;AACpGC,2BAAAA,KAAK,WAAW,QAAQ,iBAAiB,CAAC,CAAC,MAAM,IAAI,MAAM;AAC1D,iBAAO,UAAA;AACP,iBAAO,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE;AAAA,QAChC,CAAC;AAAA,MACF,CAAC;AAAA,IACF;AACA,WAAO,KAAK,QAAQ,UAAU;AAC9B,WAAO,KAAK,QAAQ,kBAAkB;AACtC,WAAO,KAAK,UAAU,QAAe,OAAO,YAAY,EAAE,WAAW;AAAA,EACtE;AAAA,EAEQ,SAAS,QAAoC,WAAyB;AAC7E,QAAI,CAAC,QAAQ,IAAI;AAChB,YAAM,OAAO,QAAQ,OAAO,QAAQ;AACpC,YAAM,UAAU,QAAQ,OAAO;AAC/B,YAAM,GAAG,SAAS,YAAY,IAAI,GAAG,UAAU,MAAM,OAAO,KAAK,EAAE;AAAA,IACpE;AAAA,EACD;AACD;;;"}
@@ -1,4 +1,6 @@
1
1
  import { GraphQlClient } from "@contember/graphql-client";
2
+ import { mutation$, createProjectResponse$$, createProjectResponseError$$, configureResponse$$, configureError$$, query$, identityProvider$, addIDPResponse$$, addIDPError$$, updateIDPResponse$$, updateIDPError$$, enableIDPResponse$$, enableIDPError$$, disableIDPResponse$$, disableIDPError$$, addMailTemplateResponse$$, addMailTemplateError$$ } from "@contember/graphql-client-tenant";
3
+ import { TextWriter, util } from "graphql-ts-client-api";
2
4
  const createTenantApiUrl = (url) => {
3
5
  if (url.endsWith("/")) {
4
6
  url = url.substring(0, url.length - 1);
@@ -8,6 +10,14 @@ const createTenantApiUrl = (url) => {
8
10
  }
9
11
  return url + "/tenant";
10
12
  };
13
+ const createProjectFetcher = mutation$.createProject(createProjectResponse$$.error(createProjectResponseError$$));
14
+ const configureFetcher = mutation$.configure(configureResponse$$.error(configureError$$));
15
+ const identityProvidersFetcher = query$.identityProviders(identityProvider$.slug.type.disabledAt);
16
+ const addIdpFetcher = mutation$.addIDP(addIDPResponse$$.error(addIDPError$$));
17
+ const updateIdpFetcher = mutation$.updateIDP(updateIDPResponse$$.error(updateIDPError$$));
18
+ const enableIdpFetcher = mutation$.enableIDP(enableIDPResponse$$.error(enableIDPError$$));
19
+ const disableIdpFetcher = mutation$.disableIDP(disableIDPResponse$$.error(disableIDPError$$));
20
+ const addMailTemplateFetcher = mutation$.addMailTemplate(addMailTemplateResponse$$.error(addMailTemplateError$$));
11
21
  class TenantClient {
12
22
  constructor(apiClient) {
13
23
  this.apiClient = apiClient;
@@ -17,20 +27,73 @@ class TenantClient {
17
27
  return new TenantClient(graphqlClient);
18
28
  }
19
29
  async createProject(slug, ignoreExisting = false) {
20
- const query = `mutation($slug: String!) {
21
- createProject(projectSlug: $slug) {
22
- ok
23
- error {
24
- code
25
- }
26
- }
27
- }`;
28
- const result = await this.apiClient.execute(query, { variables: { slug } });
29
- if (!result.createProject.ok) {
30
- if (ignoreExisting && result.createProject.error.code === "ALREADY_EXISTS") {
30
+ const result = await this.exec(createProjectFetcher, { projectSlug: slug });
31
+ if (!result.createProject?.ok) {
32
+ const code = result.createProject?.error?.code;
33
+ if (ignoreExisting && code === "ALREADY_EXISTS") {
31
34
  return;
32
35
  }
33
- throw result.createProject.error.code;
36
+ throw code ?? "UNKNOWN";
37
+ }
38
+ }
39
+ async configure(config) {
40
+ const result = await this.exec(configureFetcher, { config });
41
+ this.assertOk(result.configure, "configure");
42
+ }
43
+ async listIdentityProviders() {
44
+ const result = await this.exec(identityProvidersFetcher, {});
45
+ return result.identityProviders.map((it) => ({
46
+ slug: it.slug,
47
+ type: it.type,
48
+ disabledAt: it.disabledAt ?? null
49
+ }));
50
+ }
51
+ async addIdp(slug, type, configuration, options) {
52
+ const result = await this.exec(addIdpFetcher, { identityProvider: slug, type, configuration, options });
53
+ this.assertOk(result.addIDP, `addIDP(${slug})`);
54
+ }
55
+ async updateIdp(slug, type, configuration, options) {
56
+ const result = await this.exec(updateIdpFetcher, {
57
+ identityProvider: slug,
58
+ type,
59
+ configuration,
60
+ options,
61
+ mergeConfiguration: false
62
+ });
63
+ this.assertOk(result.updateIDP, `updateIDP(${slug})`);
64
+ }
65
+ async enableIdp(slug) {
66
+ const result = await this.exec(enableIdpFetcher, { identityProvider: slug });
67
+ this.assertOk(result.enableIDP, `enableIDP(${slug})`);
68
+ }
69
+ async disableIdp(slug) {
70
+ const result = await this.exec(disableIdpFetcher, { identityProvider: slug });
71
+ this.assertOk(result.disableIDP, `disableIDP(${slug})`);
72
+ }
73
+ async addMailTemplate(template) {
74
+ const result = await this.exec(addMailTemplateFetcher, { template });
75
+ this.assertOk(result.addMailTemplate, `addMailTemplate(${template.type}/${template.variant ?? ""})`);
76
+ }
77
+ async exec(fetcher, variables) {
78
+ const writer = new TextWriter();
79
+ writer.text(fetcher.fetchableType.name.toLowerCase());
80
+ if (fetcher.variableTypeMap.size !== 0) {
81
+ writer.scope({ type: "ARGUMENTS", multiLines: fetcher.variableTypeMap.size > 2, suffix: " " }, () => {
82
+ util.iterateMap(fetcher.variableTypeMap, ([name, type]) => {
83
+ writer.seperator();
84
+ writer.text(`$${name}: ${type}`);
85
+ });
86
+ });
87
+ }
88
+ writer.text(fetcher.toString());
89
+ writer.text(fetcher.toFragmentString());
90
+ return this.apiClient.execute(writer.toString(), { variables });
91
+ }
92
+ assertOk(result, operation) {
93
+ if (!result?.ok) {
94
+ const code = result?.error?.code ?? "UNKNOWN";
95
+ const message = result?.error?.developerMessage;
96
+ throw `${operation} failed: ${code}${message ? ` — ${message}` : ""}`;
34
97
  }
35
98
  }
36
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TenantClient.js","sources":["../../../../../../packages/cli/src/lib/tenant/TenantClient.ts"],"sourcesContent":["import { GraphQlClient } from '@contember/graphql-client'\n\nexport const createTenantApiUrl = (url: string) => {\n\tif (url.endsWith('/')) {\n\t\turl = url.substring(0, url.length - 1)\n\t}\n\tif (url.endsWith('/tenant')) {\n\t\treturn url\n\t}\n\treturn url + '/tenant'\n}\n\nexport class TenantClient {\n\tconstructor(private readonly apiClient: GraphQlClient) {}\n\n\tpublic static create(url: string, apiToken: string): TenantClient {\n\t\tconst graphqlClient = new GraphQlClient({ url: createTenantApiUrl(url), apiToken })\n\t\treturn new TenantClient(graphqlClient)\n\t}\n\n\tpublic async createProject(slug: string, ignoreExisting = false): Promise<void> {\n\t\tconst query = `mutation($slug: String!) {\n createProject(projectSlug: $slug) {\n ok\n error {\n code\n }\n }\n}`\n\t\tconst result = await this.apiClient.execute<{\n\t\t\tcreateProject: { ok: boolean; error: { code: string } }\n\t\t}>(query, { variables: { slug } })\n\t\tif (!result.createProject.ok) {\n\t\t\tif (ignoreExisting && result.createProject.error.code === 'ALREADY_EXISTS') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthrow result.createProject.error.code\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";AAEO,MAAM,qBAAqB,CAAC,QAAgB;AAClD,MAAI,IAAI,SAAS,GAAG,GAAG;AACtB,UAAM,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC;AAAA,EACtC;AACA,MAAI,IAAI,SAAS,SAAS,GAAG;AAC5B,WAAO;AAAA,EACR;AACA,SAAO,MAAM;AACd;AAEO,MAAM,aAAa;AAAA,EACzB,YAA6B,WAA0B;AAA1B,SAAA,YAAA;AAAA,EAA2B;AAAA,EAExD,OAAc,OAAO,KAAa,UAAgC;AACjE,UAAM,gBAAgB,IAAI,cAAc,EAAE,KAAK,mBAAmB,GAAG,GAAG,UAAU;AAClF,WAAO,IAAI,aAAa,aAAa;AAAA,EACtC;AAAA,EAEA,MAAa,cAAc,MAAc,iBAAiB,OAAsB;AAC/E,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQd,UAAM,SAAS,MAAM,KAAK,UAAU,QAEjC,OAAO,EAAE,WAAW,EAAE,KAAA,GAAQ;AACjC,QAAI,CAAC,OAAO,cAAc,IAAI;AAC7B,UAAI,kBAAkB,OAAO,cAAc,MAAM,SAAS,kBAAkB;AAC3E;AAAA,MACD;AACA,YAAM,OAAO,cAAc,MAAM;AAAA,IAClC;AAAA,EACD;AACD;"}
1
+ {"version":3,"file":"TenantClient.js","sources":["../../../../../../packages/cli/src/lib/tenant/TenantClient.ts"],"sourcesContent":["import { GraphQlClient } from '@contember/graphql-client'\nimport {\n\taddIDPError$$,\n\taddIDPResponse$$,\n\taddMailTemplateError$$,\n\taddMailTemplateResponse$$,\n\ttype ConfigInput,\n\tconfigureError$$,\n\tconfigureResponse$$,\n\tcreateProjectResponse$$,\n\tcreateProjectResponseError$$,\n\tdisableIDPError$$,\n\tdisableIDPResponse$$,\n\tenableIDPError$$,\n\tenableIDPResponse$$,\n\tidentityProvider$,\n\ttype MailTemplate,\n\tmutation$,\n\tquery$,\n\tupdateIDPError$$,\n\tupdateIDPResponse$$,\n} from '@contember/graphql-client-tenant'\nimport { Fetcher, TextWriter, util } from 'graphql-ts-client-api'\nimport { TenantGlobalConfig, TenantIdpOptions, TenantMailTemplate } from './tenantConfig.js'\n\nexport const createTenantApiUrl = (url: string) => {\n\tif (url.endsWith('/')) {\n\t\turl = url.substring(0, url.length - 1)\n\t}\n\tif (url.endsWith('/tenant')) {\n\t\treturn url\n\t}\n\treturn url + '/tenant'\n}\n\nexport interface RemoteIdentityProvider {\n\tslug: string\n\ttype: string\n\tdisabledAt: string | null\n}\n\ninterface MutationResult {\n\tok: boolean\n\terror?: { code: string; developerMessage?: string } | null\n}\n\n// Fetchers are immutable and reusable, so they are built once at module load.\nconst createProjectFetcher = mutation$.createProject(createProjectResponse$$.error(createProjectResponseError$$))\nconst configureFetcher = mutation$.configure(configureResponse$$.error(configureError$$))\nconst identityProvidersFetcher = query$.identityProviders(identityProvider$.slug.type.disabledAt)\nconst addIdpFetcher = mutation$.addIDP(addIDPResponse$$.error(addIDPError$$))\nconst updateIdpFetcher = mutation$.updateIDP(updateIDPResponse$$.error(updateIDPError$$))\nconst enableIdpFetcher = mutation$.enableIDP(enableIDPResponse$$.error(enableIDPError$$))\nconst disableIdpFetcher = mutation$.disableIDP(disableIDPResponse$$.error(disableIDPError$$))\nconst addMailTemplateFetcher = mutation$.addMailTemplate(addMailTemplateResponse$$.error(addMailTemplateError$$))\n\nexport class TenantClient {\n\tconstructor(private readonly apiClient: GraphQlClient) {}\n\n\tpublic static create(url: string, apiToken: string): TenantClient {\n\t\tconst graphqlClient = new GraphQlClient({ url: createTenantApiUrl(url), apiToken })\n\t\treturn new TenantClient(graphqlClient)\n\t}\n\n\tpublic async createProject(slug: string, ignoreExisting = false): Promise<void> {\n\t\tconst result = await this.exec(createProjectFetcher, { projectSlug: slug })\n\t\tif (!result.createProject?.ok) {\n\t\t\tconst code = result.createProject?.error?.code\n\t\t\tif (ignoreExisting && code === 'ALREADY_EXISTS') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthrow code ?? 'UNKNOWN'\n\t\t}\n\t}\n\n\tpublic async configure(config: TenantGlobalConfig): Promise<void> {\n\t\t// `TenantGlobalConfig` widens a few fields to `| null` (the API accepts an\n\t\t// explicit null to clear/disable); the generated wire type omits that.\n\t\tconst result = await this.exec(configureFetcher, { config: config as ConfigInput })\n\t\tthis.assertOk(result.configure, 'configure')\n\t}\n\n\tpublic async listIdentityProviders(): Promise<RemoteIdentityProvider[]> {\n\t\tconst result = await this.exec(identityProvidersFetcher, {})\n\t\treturn result.identityProviders.map(it => ({\n\t\t\tslug: it.slug,\n\t\t\ttype: it.type,\n\t\t\tdisabledAt: it.disabledAt ?? null,\n\t\t}))\n\t}\n\n\tpublic async addIdp(slug: string, type: string, configuration: unknown, options?: TenantIdpOptions): Promise<void> {\n\t\tconst result = await this.exec(addIdpFetcher, { identityProvider: slug, type, configuration, options })\n\t\tthis.assertOk(result.addIDP, `addIDP(${slug})`)\n\t}\n\n\tpublic async updateIdp(slug: string, type: string, configuration: unknown, options?: TenantIdpOptions): Promise<void> {\n\t\tconst result = await this.exec(updateIdpFetcher, {\n\t\t\tidentityProvider: slug,\n\t\t\ttype,\n\t\t\tconfiguration,\n\t\t\toptions,\n\t\t\tmergeConfiguration: false,\n\t\t})\n\t\tthis.assertOk(result.updateIDP, `updateIDP(${slug})`)\n\t}\n\n\tpublic async enableIdp(slug: string): Promise<void> {\n\t\tconst result = await this.exec(enableIdpFetcher, { identityProvider: slug })\n\t\tthis.assertOk(result.enableIDP, `enableIDP(${slug})`)\n\t}\n\n\tpublic async disableIdp(slug: string): Promise<void> {\n\t\tconst result = await this.exec(disableIdpFetcher, { identityProvider: slug })\n\t\tthis.assertOk(result.disableIDP, `disableIDP(${slug})`)\n\t}\n\n\tpublic async addMailTemplate(template: TenantMailTemplate): Promise<void> {\n\t\tconst result = await this.exec(addMailTemplateFetcher, { template: template as MailTemplate })\n\t\tthis.assertOk(result.addMailTemplate, `addMailTemplate(${template.type}/${template.variant ?? ''})`)\n\t}\n\n\tprivate async exec<TData extends object, TVariables extends object>(\n\t\tfetcher: Fetcher<'Query' | 'Mutation', TData, TVariables>,\n\t\tvariables: TVariables,\n\t): Promise<TData> {\n\t\tconst writer = new TextWriter()\n\t\twriter.text(fetcher.fetchableType.name.toLowerCase())\n\t\tif (fetcher.variableTypeMap.size !== 0) {\n\t\t\twriter.scope({ type: 'ARGUMENTS', multiLines: fetcher.variableTypeMap.size > 2, suffix: ' ' }, () => {\n\t\t\t\tutil.iterateMap(fetcher.variableTypeMap, ([name, type]) => {\n\t\t\t\t\twriter.seperator()\n\t\t\t\t\twriter.text(`$${name}: ${type}`)\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t\twriter.text(fetcher.toString())\n\t\twriter.text(fetcher.toFragmentString())\n\t\treturn this.apiClient.execute<TData>(writer.toString(), { variables })\n\t}\n\n\tprivate assertOk(result: MutationResult | undefined, operation: string): void {\n\t\tif (!result?.ok) {\n\t\t\tconst code = result?.error?.code ?? 'UNKNOWN'\n\t\t\tconst message = result?.error?.developerMessage\n\t\t\tthrow `${operation} failed: ${code}${message ? ` — ${message}` : ''}`\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;AAyBO,MAAM,qBAAqB,CAAC,QAAgB;AAClD,MAAI,IAAI,SAAS,GAAG,GAAG;AACtB,UAAM,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC;AAAA,EACtC;AACA,MAAI,IAAI,SAAS,SAAS,GAAG;AAC5B,WAAO;AAAA,EACR;AACA,SAAO,MAAM;AACd;AAcA,MAAM,uBAAuB,UAAU,cAAc,wBAAwB,MAAM,4BAA4B,CAAC;AAChH,MAAM,mBAAmB,UAAU,UAAU,oBAAoB,MAAM,gBAAgB,CAAC;AACxF,MAAM,2BAA2B,OAAO,kBAAkB,kBAAkB,KAAK,KAAK,UAAU;AAChG,MAAM,gBAAgB,UAAU,OAAO,iBAAiB,MAAM,aAAa,CAAC;AAC5E,MAAM,mBAAmB,UAAU,UAAU,oBAAoB,MAAM,gBAAgB,CAAC;AACxF,MAAM,mBAAmB,UAAU,UAAU,oBAAoB,MAAM,gBAAgB,CAAC;AACxF,MAAM,oBAAoB,UAAU,WAAW,qBAAqB,MAAM,iBAAiB,CAAC;AAC5F,MAAM,yBAAyB,UAAU,gBAAgB,0BAA0B,MAAM,sBAAsB,CAAC;AAEzG,MAAM,aAAa;AAAA,EACzB,YAA6B,WAA0B;AAA1B,SAAA,YAAA;AAAA,EAA2B;AAAA,EAExD,OAAc,OAAO,KAAa,UAAgC;AACjE,UAAM,gBAAgB,IAAI,cAAc,EAAE,KAAK,mBAAmB,GAAG,GAAG,UAAU;AAClF,WAAO,IAAI,aAAa,aAAa;AAAA,EACtC;AAAA,EAEA,MAAa,cAAc,MAAc,iBAAiB,OAAsB;AAC/E,UAAM,SAAS,MAAM,KAAK,KAAK,sBAAsB,EAAE,aAAa,MAAM;AAC1E,QAAI,CAAC,OAAO,eAAe,IAAI;AAC9B,YAAM,OAAO,OAAO,eAAe,OAAO;AAC1C,UAAI,kBAAkB,SAAS,kBAAkB;AAChD;AAAA,MACD;AACA,YAAM,QAAQ;AAAA,IACf;AAAA,EACD;AAAA,EAEA,MAAa,UAAU,QAA2C;AAGjE,UAAM,SAAS,MAAM,KAAK,KAAK,kBAAkB,EAAE,QAA+B;AAClF,SAAK,SAAS,OAAO,WAAW,WAAW;AAAA,EAC5C;AAAA,EAEA,MAAa,wBAA2D;AACvE,UAAM,SAAS,MAAM,KAAK,KAAK,0BAA0B,CAAA,CAAE;AAC3D,WAAO,OAAO,kBAAkB,IAAI,CAAA,QAAO;AAAA,MAC1C,MAAM,GAAG;AAAA,MACT,MAAM,GAAG;AAAA,MACT,YAAY,GAAG,cAAc;AAAA,IAAA,EAC5B;AAAA,EACH;AAAA,EAEA,MAAa,OAAO,MAAc,MAAc,eAAwB,SAA2C;AAClH,UAAM,SAAS,MAAM,KAAK,KAAK,eAAe,EAAE,kBAAkB,MAAM,MAAM,eAAe,QAAA,CAAS;AACtG,SAAK,SAAS,OAAO,QAAQ,UAAU,IAAI,GAAG;AAAA,EAC/C;AAAA,EAEA,MAAa,UAAU,MAAc,MAAc,eAAwB,SAA2C;AACrH,UAAM,SAAS,MAAM,KAAK,KAAK,kBAAkB;AAAA,MAChD,kBAAkB;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA,oBAAoB;AAAA,IAAA,CACpB;AACD,SAAK,SAAS,OAAO,WAAW,aAAa,IAAI,GAAG;AAAA,EACrD;AAAA,EAEA,MAAa,UAAU,MAA6B;AACnD,UAAM,SAAS,MAAM,KAAK,KAAK,kBAAkB,EAAE,kBAAkB,MAAM;AAC3E,SAAK,SAAS,OAAO,WAAW,aAAa,IAAI,GAAG;AAAA,EACrD;AAAA,EAEA,MAAa,WAAW,MAA6B;AACpD,UAAM,SAAS,MAAM,KAAK,KAAK,mBAAmB,EAAE,kBAAkB,MAAM;AAC5E,SAAK,SAAS,OAAO,YAAY,cAAc,IAAI,GAAG;AAAA,EACvD;AAAA,EAEA,MAAa,gBAAgB,UAA6C;AACzE,UAAM,SAAS,MAAM,KAAK,KAAK,wBAAwB,EAAE,UAAoC;AAC7F,SAAK,SAAS,OAAO,iBAAiB,mBAAmB,SAAS,IAAI,IAAI,SAAS,WAAW,EAAE,GAAG;AAAA,EACpG;AAAA,EAEA,MAAc,KACb,SACA,WACiB;AACjB,UAAM,SAAS,IAAI,WAAA;AACnB,WAAO,KAAK,QAAQ,cAAc,KAAK,aAAa;AACpD,QAAI,QAAQ,gBAAgB,SAAS,GAAG;AACvC,aAAO,MAAM,EAAE,MAAM,aAAa,YAAY,QAAQ,gBAAgB,OAAO,GAAG,QAAQ,IAAA,GAAO,MAAM;AACpG,aAAK,WAAW,QAAQ,iBAAiB,CAAC,CAAC,MAAM,IAAI,MAAM;AAC1D,iBAAO,UAAA;AACP,iBAAO,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE;AAAA,QAChC,CAAC;AAAA,MACF,CAAC;AAAA,IACF;AACA,WAAO,KAAK,QAAQ,UAAU;AAC9B,WAAO,KAAK,QAAQ,kBAAkB;AACtC,WAAO,KAAK,UAAU,QAAe,OAAO,YAAY,EAAE,WAAW;AAAA,EACtE;AAAA,EAEQ,SAAS,QAAoC,WAAyB;AAC7E,QAAI,CAAC,QAAQ,IAAI;AAChB,YAAM,OAAO,QAAQ,OAAO,QAAQ;AACpC,YAAM,UAAU,QAAQ,OAAO;AAC/B,YAAM,GAAG,SAAS,YAAY,IAAI,GAAG,UAAU,MAAM,OAAO,KAAK,EAAE;AAAA,IACpE;AAAA,EACD;AACD;"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ class TenantConfigApplier {
4
+ async apply(client, config, options = {}) {
5
+ const dryRun = options.dryRun === true;
6
+ const log = (message) => console.log(`${dryRun ? "[dry-run] " : ""}${message}`);
7
+ if (config.config) {
8
+ log("configure: applying global tenant config");
9
+ if (!dryRun) {
10
+ await client.configure(config.config);
11
+ }
12
+ }
13
+ if (config.identityProviders && Object.keys(config.identityProviders).length > 0) {
14
+ const existing = await client.listIdentityProviders();
15
+ const existingBySlug = new Map(existing.map((it) => [it.slug, it]));
16
+ for (const [slug, idp] of Object.entries(config.identityProviders)) {
17
+ const current = existingBySlug.get(slug);
18
+ if (!current) {
19
+ log(`addIDP: ${slug} (${idp.type})`);
20
+ if (!dryRun) {
21
+ await client.addIdp(slug, idp.type, idp.configuration, idp.options);
22
+ }
23
+ } else {
24
+ log(`updateIDP: ${slug} (${idp.type})`);
25
+ if (!dryRun) {
26
+ await client.updateIdp(slug, idp.type, idp.configuration, idp.options);
27
+ }
28
+ }
29
+ const wantDisabled = idp.disabled === true;
30
+ const isDisabled = current ? current.disabledAt !== null : false;
31
+ if (wantDisabled && !isDisabled) {
32
+ log(`disableIDP: ${slug}`);
33
+ if (!dryRun) {
34
+ await client.disableIdp(slug);
35
+ }
36
+ } else if (!wantDisabled && isDisabled) {
37
+ log(`enableIDP: ${slug}`);
38
+ if (!dryRun) {
39
+ await client.enableIdp(slug);
40
+ }
41
+ }
42
+ }
43
+ }
44
+ if (config.mailTemplates && config.mailTemplates.length > 0) {
45
+ for (const template of config.mailTemplates) {
46
+ log(`addMailTemplate: ${template.type}${template.variant ? `/${template.variant}` : ""}`);
47
+ if (!dryRun) {
48
+ await client.addMailTemplate(template);
49
+ }
50
+ }
51
+ }
52
+ }
53
+ }
54
+ exports.TenantConfigApplier = TenantConfigApplier;
55
+ //# sourceMappingURL=TenantConfigApplier.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TenantConfigApplier.cjs","sources":["../../../../../../packages/cli/src/lib/tenant/TenantConfigApplier.ts"],"sourcesContent":["import { TenantClient } from './TenantClient.js'\nimport { TenantConfig } from './tenantConfig.js'\n\nexport interface TenantConfigApplyOptions {\n\tdryRun?: boolean\n}\n\n/**\n * Applies a {@link TenantConfig} to a tenant idempotently:\n * - `configure` is a partial merge, so it is always (re)sent.\n * - identity providers are added or updated based on the current state, then\n * enabled/disabled to match `disabled`.\n * - mail templates are upserted server-side by `addMailTemplate`.\n *\n * Nothing is ever removed — entries missing from the config are left untouched.\n */\nexport class TenantConfigApplier {\n\tpublic async apply(client: TenantClient, config: TenantConfig, options: TenantConfigApplyOptions = {}): Promise<void> {\n\t\tconst dryRun = options.dryRun === true\n\t\tconst log = (message: string) => console.log(`${dryRun ? '[dry-run] ' : ''}${message}`)\n\n\t\tif (config.config) {\n\t\t\tlog('configure: applying global tenant config')\n\t\t\tif (!dryRun) {\n\t\t\t\tawait client.configure(config.config)\n\t\t\t}\n\t\t}\n\n\t\tif (config.identityProviders && Object.keys(config.identityProviders).length > 0) {\n\t\t\tconst existing = await client.listIdentityProviders()\n\t\t\tconst existingBySlug = new Map(existing.map(it => [it.slug, it]))\n\n\t\t\tfor (const [slug, idp] of Object.entries(config.identityProviders)) {\n\t\t\t\tconst current = existingBySlug.get(slug)\n\t\t\t\tif (!current) {\n\t\t\t\t\tlog(`addIDP: ${slug} (${idp.type})`)\n\t\t\t\t\tif (!dryRun) {\n\t\t\t\t\t\tawait client.addIdp(slug, idp.type, idp.configuration, idp.options)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlog(`updateIDP: ${slug} (${idp.type})`)\n\t\t\t\t\tif (!dryRun) {\n\t\t\t\t\t\tawait client.updateIdp(slug, idp.type, idp.configuration, idp.options)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst wantDisabled = idp.disabled === true\n\t\t\t\tconst isDisabled = current ? current.disabledAt !== null : false\n\t\t\t\tif (wantDisabled && !isDisabled) {\n\t\t\t\t\tlog(`disableIDP: ${slug}`)\n\t\t\t\t\tif (!dryRun) {\n\t\t\t\t\t\tawait client.disableIdp(slug)\n\t\t\t\t\t}\n\t\t\t\t} else if (!wantDisabled && isDisabled) {\n\t\t\t\t\tlog(`enableIDP: ${slug}`)\n\t\t\t\t\tif (!dryRun) {\n\t\t\t\t\t\tawait client.enableIdp(slug)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (config.mailTemplates && config.mailTemplates.length > 0) {\n\t\t\tfor (const template of config.mailTemplates) {\n\t\t\t\tlog(`addMailTemplate: ${template.type}${template.variant ? `/${template.variant}` : ''}`)\n\t\t\t\tif (!dryRun) {\n\t\t\t\t\tawait client.addMailTemplate(template)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;AAgBO,MAAM,oBAAoB;AAAA,EAChC,MAAa,MAAM,QAAsB,QAAsB,UAAoC,CAAA,GAAmB;AACrH,UAAM,SAAS,QAAQ,WAAW;AAClC,UAAM,MAAM,CAAC,YAAoB,QAAQ,IAAI,GAAG,SAAS,eAAe,EAAE,GAAG,OAAO,EAAE;AAEtF,QAAI,OAAO,QAAQ;AAClB,UAAI,0CAA0C;AAC9C,UAAI,CAAC,QAAQ;AACZ,cAAM,OAAO,UAAU,OAAO,MAAM;AAAA,MACrC;AAAA,IACD;AAEA,QAAI,OAAO,qBAAqB,OAAO,KAAK,OAAO,iBAAiB,EAAE,SAAS,GAAG;AACjF,YAAM,WAAW,MAAM,OAAO,sBAAA;AAC9B,YAAM,iBAAiB,IAAI,IAAI,SAAS,IAAI,CAAA,OAAM,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;AAEhE,iBAAW,CAAC,MAAM,GAAG,KAAK,OAAO,QAAQ,OAAO,iBAAiB,GAAG;AACnE,cAAM,UAAU,eAAe,IAAI,IAAI;AACvC,YAAI,CAAC,SAAS;AACb,cAAI,WAAW,IAAI,KAAK,IAAI,IAAI,GAAG;AACnC,cAAI,CAAC,QAAQ;AACZ,kBAAM,OAAO,OAAO,MAAM,IAAI,MAAM,IAAI,eAAe,IAAI,OAAO;AAAA,UACnE;AAAA,QACD,OAAO;AACN,cAAI,cAAc,IAAI,KAAK,IAAI,IAAI,GAAG;AACtC,cAAI,CAAC,QAAQ;AACZ,kBAAM,OAAO,UAAU,MAAM,IAAI,MAAM,IAAI,eAAe,IAAI,OAAO;AAAA,UACtE;AAAA,QACD;AAEA,cAAM,eAAe,IAAI,aAAa;AACtC,cAAM,aAAa,UAAU,QAAQ,eAAe,OAAO;AAC3D,YAAI,gBAAgB,CAAC,YAAY;AAChC,cAAI,eAAe,IAAI,EAAE;AACzB,cAAI,CAAC,QAAQ;AACZ,kBAAM,OAAO,WAAW,IAAI;AAAA,UAC7B;AAAA,QACD,WAAW,CAAC,gBAAgB,YAAY;AACvC,cAAI,cAAc,IAAI,EAAE;AACxB,cAAI,CAAC,QAAQ;AACZ,kBAAM,OAAO,UAAU,IAAI;AAAA,UAC5B;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,QAAI,OAAO,iBAAiB,OAAO,cAAc,SAAS,GAAG;AAC5D,iBAAW,YAAY,OAAO,eAAe;AAC5C,YAAI,oBAAoB,SAAS,IAAI,GAAG,SAAS,UAAU,IAAI,SAAS,OAAO,KAAK,EAAE,EAAE;AACxF,YAAI,CAAC,QAAQ;AACZ,gBAAM,OAAO,gBAAgB,QAAQ;AAAA,QACtC;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;;"}