@contember/cli 2.1.0-alpha.3 → 2.1.0-alpha.30

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 (201) hide show
  1. package/dist/development/src/commands/actions/ActionsGetEventCommand.cjs +31 -0
  2. package/dist/development/src/commands/actions/ActionsGetEventCommand.cjs.map +1 -0
  3. package/dist/development/src/commands/actions/ActionsGetEventCommand.js +31 -0
  4. package/dist/development/src/commands/actions/ActionsGetEventCommand.js.map +1 -0
  5. package/dist/development/src/commands/actions/ActionsListFailedEventsCommand.cjs +60 -0
  6. package/dist/development/src/commands/actions/ActionsListFailedEventsCommand.cjs.map +1 -0
  7. package/dist/development/src/commands/actions/ActionsListFailedEventsCommand.js +60 -0
  8. package/dist/development/src/commands/actions/ActionsListFailedEventsCommand.js.map +1 -0
  9. package/dist/development/src/commands/actions/ActionsListVariablesCommand.cjs +29 -0
  10. package/dist/development/src/commands/actions/ActionsListVariablesCommand.cjs.map +1 -0
  11. package/dist/development/src/commands/actions/ActionsListVariablesCommand.js +29 -0
  12. package/dist/development/src/commands/actions/ActionsListVariablesCommand.js.map +1 -0
  13. package/dist/development/src/commands/actions/ActionsRetryEventCommand.cjs +32 -0
  14. package/dist/development/src/commands/actions/ActionsRetryEventCommand.cjs.map +1 -0
  15. package/dist/development/src/commands/actions/ActionsRetryEventCommand.js +32 -0
  16. package/dist/development/src/commands/actions/ActionsRetryEventCommand.js.map +1 -0
  17. package/dist/development/src/commands/actions/ActionsSetVariablesCommand.cjs +40 -0
  18. package/dist/development/src/commands/actions/ActionsSetVariablesCommand.cjs.map +1 -0
  19. package/dist/development/src/commands/actions/ActionsSetVariablesCommand.js +40 -0
  20. package/dist/development/src/commands/actions/ActionsSetVariablesCommand.js.map +1 -0
  21. package/dist/development/src/commands/actions/ActionsStopEventCommand.cjs +32 -0
  22. package/dist/development/src/commands/actions/ActionsStopEventCommand.cjs.map +1 -0
  23. package/dist/development/src/commands/actions/ActionsStopEventCommand.js +32 -0
  24. package/dist/development/src/commands/actions/ActionsStopEventCommand.js.map +1 -0
  25. package/dist/development/src/commands/migrations/MigrationStatusCommand.cjs +1 -1
  26. package/dist/development/src/commands/migrations/MigrationStatusCommand.cjs.map +1 -1
  27. package/dist/development/src/commands/migrations/MigrationStatusCommand.js +1 -1
  28. package/dist/development/src/commands/migrations/MigrationStatusCommand.js.map +1 -1
  29. package/dist/development/src/commands/transfer/ExportCommand.cjs +7 -2
  30. package/dist/development/src/commands/transfer/ExportCommand.cjs.map +1 -1
  31. package/dist/development/src/commands/transfer/ExportCommand.js +8 -3
  32. package/dist/development/src/commands/transfer/ExportCommand.js.map +1 -1
  33. package/dist/development/src/commands/transfer/ImportCommand.cjs +7 -4
  34. package/dist/development/src/commands/transfer/ImportCommand.cjs.map +1 -1
  35. package/dist/development/src/commands/transfer/ImportCommand.js +5 -2
  36. package/dist/development/src/commands/transfer/ImportCommand.js.map +1 -1
  37. package/dist/development/src/commands/transfer/TransferCommand.cjs +4 -5
  38. package/dist/development/src/commands/transfer/TransferCommand.cjs.map +1 -1
  39. package/dist/development/src/commands/transfer/TransferCommand.js +4 -5
  40. package/dist/development/src/commands/transfer/TransferCommand.js.map +1 -1
  41. package/dist/development/src/dic.cjs +14 -2
  42. package/dist/development/src/dic.cjs.map +1 -1
  43. package/dist/development/src/dic.js +14 -2
  44. package/dist/development/src/dic.js.map +1 -1
  45. package/dist/development/src/lib/VersionChecker.cjs +7 -9
  46. package/dist/development/src/lib/VersionChecker.cjs.map +1 -1
  47. package/dist/development/src/lib/VersionChecker.js +7 -9
  48. package/dist/development/src/lib/VersionChecker.js.map +1 -1
  49. package/dist/development/src/lib/actions/ActionsClient.cjs +91 -0
  50. package/dist/development/src/lib/actions/ActionsClient.cjs.map +1 -0
  51. package/dist/development/src/lib/actions/ActionsClient.js +91 -0
  52. package/dist/development/src/lib/actions/ActionsClient.js.map +1 -0
  53. package/dist/development/src/lib/migrations/MigrationExecutionFacade.cjs +2 -1
  54. package/dist/development/src/lib/migrations/MigrationExecutionFacade.cjs.map +1 -1
  55. package/dist/development/src/lib/migrations/MigrationExecutionFacade.js +2 -1
  56. package/dist/development/src/lib/migrations/MigrationExecutionFacade.js.map +1 -1
  57. package/dist/development/src/lib/migrations/MigrationPrinter.cjs +7 -2
  58. package/dist/development/src/lib/migrations/MigrationPrinter.cjs.map +1 -1
  59. package/dist/development/src/lib/migrations/MigrationPrinter.js +7 -2
  60. package/dist/development/src/lib/migrations/MigrationPrinter.js.map +1 -1
  61. package/dist/development/src/lib/migrations/MigrationsStatusFacade.cjs +3 -3
  62. package/dist/development/src/lib/migrations/MigrationsStatusFacade.cjs.map +1 -1
  63. package/dist/development/src/lib/migrations/MigrationsStatusFacade.js +3 -3
  64. package/dist/development/src/lib/migrations/MigrationsStatusFacade.js.map +1 -1
  65. package/dist/development/src/lib/stream.cjs +0 -7
  66. package/dist/development/src/lib/stream.cjs.map +1 -1
  67. package/dist/development/src/lib/stream.js +1 -8
  68. package/dist/development/src/lib/stream.js.map +1 -1
  69. package/dist/development/src/lib/transfer/DataTransferClient.cjs +24 -34
  70. package/dist/development/src/lib/transfer/DataTransferClient.cjs.map +1 -1
  71. package/dist/development/src/lib/transfer/DataTransferClient.js +26 -36
  72. package/dist/development/src/lib/transfer/DataTransferClient.js.map +1 -1
  73. package/dist/production/src/commands/actions/ActionsGetEventCommand.cjs +31 -0
  74. package/dist/production/src/commands/actions/ActionsGetEventCommand.cjs.map +1 -0
  75. package/dist/production/src/commands/actions/ActionsGetEventCommand.js +31 -0
  76. package/dist/production/src/commands/actions/ActionsGetEventCommand.js.map +1 -0
  77. package/dist/production/src/commands/actions/ActionsListFailedEventsCommand.cjs +60 -0
  78. package/dist/production/src/commands/actions/ActionsListFailedEventsCommand.cjs.map +1 -0
  79. package/dist/production/src/commands/actions/ActionsListFailedEventsCommand.js +60 -0
  80. package/dist/production/src/commands/actions/ActionsListFailedEventsCommand.js.map +1 -0
  81. package/dist/production/src/commands/actions/ActionsListVariablesCommand.cjs +29 -0
  82. package/dist/production/src/commands/actions/ActionsListVariablesCommand.cjs.map +1 -0
  83. package/dist/production/src/commands/actions/ActionsListVariablesCommand.js +29 -0
  84. package/dist/production/src/commands/actions/ActionsListVariablesCommand.js.map +1 -0
  85. package/dist/production/src/commands/actions/ActionsRetryEventCommand.cjs +32 -0
  86. package/dist/production/src/commands/actions/ActionsRetryEventCommand.cjs.map +1 -0
  87. package/dist/production/src/commands/actions/ActionsRetryEventCommand.js +32 -0
  88. package/dist/production/src/commands/actions/ActionsRetryEventCommand.js.map +1 -0
  89. package/dist/production/src/commands/actions/ActionsSetVariablesCommand.cjs +40 -0
  90. package/dist/production/src/commands/actions/ActionsSetVariablesCommand.cjs.map +1 -0
  91. package/dist/production/src/commands/actions/ActionsSetVariablesCommand.js +40 -0
  92. package/dist/production/src/commands/actions/ActionsSetVariablesCommand.js.map +1 -0
  93. package/dist/production/src/commands/actions/ActionsStopEventCommand.cjs +32 -0
  94. package/dist/production/src/commands/actions/ActionsStopEventCommand.cjs.map +1 -0
  95. package/dist/production/src/commands/actions/ActionsStopEventCommand.js +32 -0
  96. package/dist/production/src/commands/actions/ActionsStopEventCommand.js.map +1 -0
  97. package/dist/production/src/commands/migrations/MigrationStatusCommand.cjs +1 -1
  98. package/dist/production/src/commands/migrations/MigrationStatusCommand.cjs.map +1 -1
  99. package/dist/production/src/commands/migrations/MigrationStatusCommand.js +1 -1
  100. package/dist/production/src/commands/migrations/MigrationStatusCommand.js.map +1 -1
  101. package/dist/production/src/commands/transfer/ExportCommand.cjs +7 -2
  102. package/dist/production/src/commands/transfer/ExportCommand.cjs.map +1 -1
  103. package/dist/production/src/commands/transfer/ExportCommand.js +8 -3
  104. package/dist/production/src/commands/transfer/ExportCommand.js.map +1 -1
  105. package/dist/production/src/commands/transfer/ImportCommand.cjs +7 -4
  106. package/dist/production/src/commands/transfer/ImportCommand.cjs.map +1 -1
  107. package/dist/production/src/commands/transfer/ImportCommand.js +5 -2
  108. package/dist/production/src/commands/transfer/ImportCommand.js.map +1 -1
  109. package/dist/production/src/commands/transfer/TransferCommand.cjs +4 -5
  110. package/dist/production/src/commands/transfer/TransferCommand.cjs.map +1 -1
  111. package/dist/production/src/commands/transfer/TransferCommand.js +4 -5
  112. package/dist/production/src/commands/transfer/TransferCommand.js.map +1 -1
  113. package/dist/production/src/dic.cjs +14 -2
  114. package/dist/production/src/dic.cjs.map +1 -1
  115. package/dist/production/src/dic.js +14 -2
  116. package/dist/production/src/dic.js.map +1 -1
  117. package/dist/production/src/lib/VersionChecker.cjs +7 -9
  118. package/dist/production/src/lib/VersionChecker.cjs.map +1 -1
  119. package/dist/production/src/lib/VersionChecker.js +7 -9
  120. package/dist/production/src/lib/VersionChecker.js.map +1 -1
  121. package/dist/production/src/lib/actions/ActionsClient.cjs +91 -0
  122. package/dist/production/src/lib/actions/ActionsClient.cjs.map +1 -0
  123. package/dist/production/src/lib/actions/ActionsClient.js +91 -0
  124. package/dist/production/src/lib/actions/ActionsClient.js.map +1 -0
  125. package/dist/production/src/lib/migrations/MigrationExecutionFacade.cjs +2 -1
  126. package/dist/production/src/lib/migrations/MigrationExecutionFacade.cjs.map +1 -1
  127. package/dist/production/src/lib/migrations/MigrationExecutionFacade.js +2 -1
  128. package/dist/production/src/lib/migrations/MigrationExecutionFacade.js.map +1 -1
  129. package/dist/production/src/lib/migrations/MigrationPrinter.cjs +7 -2
  130. package/dist/production/src/lib/migrations/MigrationPrinter.cjs.map +1 -1
  131. package/dist/production/src/lib/migrations/MigrationPrinter.js +7 -2
  132. package/dist/production/src/lib/migrations/MigrationPrinter.js.map +1 -1
  133. package/dist/production/src/lib/migrations/MigrationsStatusFacade.cjs +3 -3
  134. package/dist/production/src/lib/migrations/MigrationsStatusFacade.cjs.map +1 -1
  135. package/dist/production/src/lib/migrations/MigrationsStatusFacade.js +3 -3
  136. package/dist/production/src/lib/migrations/MigrationsStatusFacade.js.map +1 -1
  137. package/dist/production/src/lib/stream.cjs +0 -7
  138. package/dist/production/src/lib/stream.cjs.map +1 -1
  139. package/dist/production/src/lib/stream.js +1 -8
  140. package/dist/production/src/lib/stream.js.map +1 -1
  141. package/dist/production/src/lib/transfer/DataTransferClient.cjs +24 -34
  142. package/dist/production/src/lib/transfer/DataTransferClient.cjs.map +1 -1
  143. package/dist/production/src/lib/transfer/DataTransferClient.js +26 -36
  144. package/dist/production/src/lib/transfer/DataTransferClient.js.map +1 -1
  145. package/dist/types/commands/actions/ActionsGetEventCommand.d.ts +16 -0
  146. package/dist/types/commands/actions/ActionsGetEventCommand.d.ts.map +1 -0
  147. package/dist/types/commands/actions/ActionsListFailedEventsCommand.d.ts +15 -0
  148. package/dist/types/commands/actions/ActionsListFailedEventsCommand.d.ts.map +1 -0
  149. package/dist/types/commands/actions/ActionsListVariablesCommand.d.ts +14 -0
  150. package/dist/types/commands/actions/ActionsListVariablesCommand.d.ts.map +1 -0
  151. package/dist/types/commands/actions/ActionsRetryEventCommand.d.ts +16 -0
  152. package/dist/types/commands/actions/ActionsRetryEventCommand.d.ts.map +1 -0
  153. package/dist/types/commands/actions/ActionsSetVariablesCommand.d.ts +19 -0
  154. package/dist/types/commands/actions/ActionsSetVariablesCommand.d.ts.map +1 -0
  155. package/dist/types/commands/actions/ActionsStopEventCommand.d.ts +16 -0
  156. package/dist/types/commands/actions/ActionsStopEventCommand.d.ts.map +1 -0
  157. package/dist/types/commands/transfer/ExportCommand.d.ts.map +1 -1
  158. package/dist/types/commands/transfer/ImportCommand.d.ts.map +1 -1
  159. package/dist/types/commands/transfer/TransferCommand.d.ts.map +1 -1
  160. package/dist/types/dic.d.ts +18 -0
  161. package/dist/types/dic.d.ts.map +1 -1
  162. package/dist/types/lib/VersionChecker.d.ts.map +1 -1
  163. package/dist/types/lib/actions/ActionsClient.d.ts +33 -0
  164. package/dist/types/lib/actions/ActionsClient.d.ts.map +1 -0
  165. package/dist/types/lib/migrations/MigrationExecutionFacade.d.ts.map +1 -1
  166. package/dist/types/lib/migrations/MigrationPrinter.d.ts +1 -1
  167. package/dist/types/lib/migrations/MigrationPrinter.d.ts.map +1 -1
  168. package/dist/types/lib/migrations/MigrationsStatusFacade.d.ts +3 -1
  169. package/dist/types/lib/migrations/MigrationsStatusFacade.d.ts.map +1 -1
  170. package/dist/types/lib/transfer/DataTransferClient.d.ts +2 -4
  171. package/dist/types/lib/transfer/DataTransferClient.d.ts.map +1 -1
  172. package/dist/types/tsconfig.tsbuildinfo +1 -1
  173. package/package.json +13 -13
  174. package/src/commands/actions/ActionsGetEventCommand.ts +42 -0
  175. package/src/commands/actions/ActionsListFailedEventsCommand.ts +70 -0
  176. package/src/commands/actions/ActionsListVariablesCommand.ts +37 -0
  177. package/src/commands/actions/ActionsRetryEventCommand.ts +42 -0
  178. package/src/commands/actions/ActionsSetVariablesCommand.ts +56 -0
  179. package/src/commands/actions/ActionsStopEventCommand.ts +42 -0
  180. package/src/commands/migrations/MigrationStatusCommand.ts +1 -1
  181. package/src/commands/transfer/ExportCommand.ts +9 -4
  182. package/src/commands/transfer/ImportCommand.ts +6 -1
  183. package/src/commands/transfer/TransferCommand.ts +4 -3
  184. package/src/dic.ts +27 -2
  185. package/src/lib/VersionChecker.ts +13 -9
  186. package/src/lib/actions/ActionsClient.ts +112 -0
  187. package/src/lib/migrations/MigrationExecutionFacade.ts +1 -0
  188. package/src/lib/migrations/MigrationPrinter.ts +7 -2
  189. package/src/lib/migrations/MigrationsStatusFacade.ts +4 -3
  190. package/src/lib/transfer/DataTransferClient.ts +25 -43
  191. package/dist/development/src/lib/migrations/migrations.cjs +0 -43
  192. package/dist/development/src/lib/migrations/migrations.cjs.map +0 -1
  193. package/dist/development/src/lib/migrations/migrations.js +0 -43
  194. package/dist/development/src/lib/migrations/migrations.js.map +0 -1
  195. package/dist/production/src/lib/migrations/migrations.cjs +0 -43
  196. package/dist/production/src/lib/migrations/migrations.cjs.map +0 -1
  197. package/dist/production/src/lib/migrations/migrations.js +0 -43
  198. package/dist/production/src/lib/migrations/migrations.js.map +0 -1
  199. package/dist/types/lib/migrations/migrations.d.ts +0 -3
  200. package/dist/types/lib/migrations/migrations.d.ts.map +0 -1
  201. package/src/lib/migrations/migrations.ts +0 -45
@@ -58,17 +58,12 @@ class VersionChecker {
58
58
  if (!def.image) {
59
59
  continue;
60
60
  }
61
- const [image, version2] = def.image.split(":");
62
- if (!version2 || !consts.contemberDockerImages.includes(image)) {
61
+ const [image, tag] = def.image.split(":");
62
+ if (!tag || !consts.contemberDockerImages.includes(image)) {
63
63
  continue;
64
64
  }
65
- const versionParts = version2.split(/[.-]/);
66
- if (versionParts[versionParts.length - 1] === "debian") {
67
- versionParts.pop();
68
- }
69
- const cliVersionParts = cliVersion.split(/[.-]/).slice(0, versionParts.length);
70
- if (versionParts.join(".") !== cliVersionParts.join(".")) {
71
- errors.push(`Docker service ${name} with image ${image}:${version2} does not match version of CLI ${cliVersion}.`);
65
+ if (extractVersion(tag) !== cliVersion) {
66
+ errors.push(`Docker service ${name} with image ${image}:${tag} does not match version of CLI ${cliVersion}.`);
72
67
  }
73
68
  }
74
69
  }
@@ -81,5 +76,8 @@ If you are really certain about the compatibility, you can disable this version
81
76
  });
82
77
  }
83
78
  }
79
+ const extractVersion = (tag) => {
80
+ return tag.match(/^\d+\.\d+\.\d+(-\w+\.\d+)?/)?.[0] ?? tag;
81
+ };
84
82
  exports.VersionChecker = VersionChecker;
85
83
  //# sourceMappingURL=VersionChecker.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"VersionChecker.cjs","sources":["../../../../../packages/cli/src/lib/VersionChecker.ts"],"sourcesContent":["import { join, relative } from 'node:path'\nimport * as semver from 'semver'\nimport { PackageWorkspaceResolver } from '@contember/cli-common'\nimport { DockerComposeManager } from './fs/DockerComposeManager'\nimport { contemberDockerImages } from '../consts'\n\nexport class VersionChecker {\n\tconstructor(\n\t\tprivate readonly version: string,\n\t\tprivate readonly dir: string,\n\t\tprivate readonly packageWorkspaceResolver: PackageWorkspaceResolver,\n\t\tprivate readonly dockerComposeManager: DockerComposeManager,\n\t) {\n\t}\n\n\tcheckVersions = async () => {\n\t\tconst cliVersion = this.version\n\t\tconst packageWorkspace = await this.packageWorkspaceResolver.resolve()\n\n\t\tconst errors: string[] = []\n\n\t\tfor (const packageName of ['@contember/schema', '@contember/schema-definition']) {\n\t\t\tconst installedPackages = await packageWorkspace.findInstalledDependencies(packageName)\n\t\t\tfor (const pckg of installedPackages) {\n\t\t\t\tconst jsonPath = relative(this.dir, join(pckg.defined.pckg.dir, 'package.json'))\n\n\t\t\t\tif (!pckg.installed) {\n\t\t\t\t\terrors.push(`Package ${packageName} defined in ${jsonPath} is not installed.`)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (pckg.defined.version !== 'workspace:*' && !semver.satisfies(pckg.installed.version, pckg.defined.version)) {\n\t\t\t\t\terrors.push(`Package ${packageName}@${pckg.installed.version} does not match constraint ${pckg.defined.version} defined in ${jsonPath}.`)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (cliVersion !== pckg.installed.version) {\n\t\t\t\t\terrors.push(`Package ${packageName}@${pckg.installed.version} does not match version of CLI ${cliVersion}.`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst dockerCompose = await this.dockerComposeManager.tryReadMainDockerComposeConfig()\n\n\t\tif (!dockerCompose) {\n\t\t\terrors.push('docker-compose.yaml not found.')\n\t\t} else {\n\t\t\tfor (const [name, def] of Object.entries(dockerCompose.services ?? {})) {\n\t\t\t\tif (!def.image) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst [image, version] = def.image.split(':')\n\t\t\t\tif (!version || !contemberDockerImages.includes(image)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst versionParts = version.split(/[.-]/)\n\t\t\t\tif (versionParts[versionParts.length - 1] === 'debian') {\n\t\t\t\t\tversionParts.pop()\n\t\t\t\t}\n\t\t\t\tconst cliVersionParts = cliVersion.split(/[.-]/).slice(0, versionParts.length)\n\t\t\t\tif (versionParts.join('.') !== cliVersionParts.join('.')) {\n\t\t\t\t\terrors.push(`Docker service ${name} with image ${image}:${version} does not match version of CLI ${cliVersion}.`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (errors.length) {\n\t\t\tthrow `${errors.map(it => `${it}`).join('\\n')}\n\nPlease make sure all dependencies are up to date.\\nIf you are really certain about the compatibility, you can disable this version check by running the CLI with the CONTEMBER_SKIP_VERSION_CHECK=1 environment variable`\n\t\t}\n\t}\n\n}\n"],"names":["relative","join","semver","version","contemberDockerImages"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAM,eAAe;AAAA,EAC3B,YACkB,SACA,KACA,0BACA,sBAChB;AAJgB,SAAA,UAAA;AACA,SAAA,MAAA;AACA,SAAA,2BAAA;AACA,SAAA,uBAAA;AAIlB,kBAAA,MAAA,iBAAgB,YAAY;AAC3B,YAAM,aAAa,KAAK;AACxB,YAAM,mBAAmB,MAAM,KAAK,yBAAyB,QAAQ;AAErE,YAAM,SAAmB,CAAC;AAE1B,iBAAW,eAAe,CAAC,qBAAqB,8BAA8B,GAAG;AAChF,cAAM,oBAAoB,MAAM,iBAAiB,0BAA0B,WAAW;AACtF,mBAAW,QAAQ,mBAAmB;AAC/B,gBAAA,WAAWA,UAAAA,SAAS,KAAK,KAAKC,UAAAA,KAAK,KAAK,QAAQ,KAAK,KAAK,cAAc,CAAC;AAE3E,cAAA,CAAC,KAAK,WAAW;AACpB,mBAAO,KAAK,WAAW,WAAW,eAAe,QAAQ,oBAAoB;AAC7E;AAAA,UAAA;AAED,cAAI,KAAK,QAAQ,YAAY,iBAAiB,CAACC,kBAAO,UAAU,KAAK,UAAU,SAAS,KAAK,QAAQ,OAAO,GAAG;AAC9G,mBAAO,KAAK,WAAW,WAAW,IAAI,KAAK,UAAU,OAAO,8BAA8B,KAAK,QAAQ,OAAO,eAAe,QAAQ,GAAG;AACxI;AAAA,UAAA;AAEG,cAAA,eAAe,KAAK,UAAU,SAAS;AACnC,mBAAA,KAAK,WAAW,WAAW,IAAI,KAAK,UAAU,OAAO,kCAAkC,UAAU,GAAG;AAAA,UAAA;AAAA,QAC5G;AAAA,MACD;AAED,YAAM,gBAAgB,MAAM,KAAK,qBAAqB,+BAA+B;AAErF,UAAI,CAAC,eAAe;AACnB,eAAO,KAAK,gCAAgC;AAAA,MAAA,OACtC;AACK,mBAAA,CAAC,MAAM,GAAG,KAAK,OAAO,QAAQ,cAAc,YAAY,CAAA,CAAE,GAAG;AACnE,cAAA,CAAC,IAAI,OAAO;AACf;AAAA,UAAA;AAED,gBAAM,CAAC,OAAOC,QAAO,IAAI,IAAI,MAAM,MAAM,GAAG;AAC5C,cAAI,CAACA,YAAW,CAACC,OAAsB,sBAAA,SAAS,KAAK,GAAG;AACvD;AAAA,UAAA;AAEK,gBAAA,eAAeD,SAAQ,MAAM,MAAM;AACzC,cAAI,aAAa,aAAa,SAAS,CAAC,MAAM,UAAU;AACvD,yBAAa,IAAI;AAAA,UAAA;AAEZ,gBAAA,kBAAkB,WAAW,MAAM,MAAM,EAAE,MAAM,GAAG,aAAa,MAAM;AAC7E,cAAI,aAAa,KAAK,GAAG,MAAM,gBAAgB,KAAK,GAAG,GAAG;AAClD,mBAAA,KAAK,kBAAkB,IAAI,eAAe,KAAK,IAAIA,QAAO,kCAAkC,UAAU,GAAG;AAAA,UAAA;AAAA,QACjH;AAAA,MACD;AAGD,UAAI,OAAO,QAAQ;AACZ,cAAA,GAAG,OAAO,IAAI,CAAM,OAAA,GAAG,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA,MAAA;AAAA,IAG9C,CACD;AAAA,EAAA;AAED;;"}
1
+ {"version":3,"file":"VersionChecker.cjs","sources":["../../../../../packages/cli/src/lib/VersionChecker.ts"],"sourcesContent":["import { join, relative } from 'node:path'\nimport * as semver from 'semver'\nimport { PackageWorkspaceResolver } from '@contember/cli-common'\nimport { DockerComposeManager } from './fs/DockerComposeManager'\nimport { contemberDockerImages } from '../consts'\n\nexport class VersionChecker {\n\tconstructor(\n\t\tprivate readonly version: string,\n\t\tprivate readonly dir: string,\n\t\tprivate readonly packageWorkspaceResolver: PackageWorkspaceResolver,\n\t\tprivate readonly dockerComposeManager: DockerComposeManager,\n\t) {\n\t}\n\n\tcheckVersions = async () => {\n\t\tconst cliVersion = this.version\n\t\tconst packageWorkspace = await this.packageWorkspaceResolver.resolve()\n\n\t\tconst errors: string[] = []\n\n\t\tfor (const packageName of ['@contember/schema', '@contember/schema-definition']) {\n\t\t\tconst installedPackages = await packageWorkspace.findInstalledDependencies(packageName)\n\t\t\tfor (const pckg of installedPackages) {\n\t\t\t\tconst jsonPath = relative(this.dir, join(pckg.defined.pckg.dir, 'package.json'))\n\n\t\t\t\tif (!pckg.installed) {\n\t\t\t\t\terrors.push(`Package ${packageName} defined in ${jsonPath} is not installed.`)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (pckg.defined.version !== 'workspace:*' && !semver.satisfies(pckg.installed.version, pckg.defined.version)) {\n\t\t\t\t\terrors.push(`Package ${packageName}@${pckg.installed.version} does not match constraint ${pckg.defined.version} defined in ${jsonPath}.`)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (cliVersion !== pckg.installed.version) {\n\t\t\t\t\terrors.push(`Package ${packageName}@${pckg.installed.version} does not match version of CLI ${cliVersion}.`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst dockerCompose = await this.dockerComposeManager.tryReadMainDockerComposeConfig()\n\n\t\tif (!dockerCompose) {\n\t\t\terrors.push('docker-compose.yaml not found.')\n\t\t} else {\n\t\t\tfor (const [name, def] of Object.entries(dockerCompose.services ?? {})) {\n\t\t\t\tif (!def.image) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst [image, tag] = def.image.split(':')\n\t\t\t\tif (!tag || !contemberDockerImages.includes(image)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tif (extractVersion(tag) !== cliVersion) {\n\t\t\t\t\terrors.push(`Docker service ${name} with image ${image}:${tag} does not match version of CLI ${cliVersion}.`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (errors.length) {\n\t\t\tthrow `${errors.map(it => `${it}`).join('\\n')}\n\nPlease make sure all dependencies are up to date.\\nIf you are really certain about the compatibility, you can disable this version check by running the CLI with the CONTEMBER_SKIP_VERSION_CHECK=1 environment variable`\n\t\t}\n\t}\n\n}\n\n\nconst extractVersion = (tag: string) => {\n\t// e.g.\n\t// 2.1.0-alpha.15-foo-bar => 2.1.0-alpha.15\n\t// 2.1.0-debian => 2.1.0\n\treturn tag.match(/^\\d+\\.\\d+\\.\\d+(-\\w+\\.\\d+)?/)?.[0] ?? tag\n}\n"],"names":["relative","join","semver","contemberDockerImages"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAM,eAAe;AAAA,EAC3B,YACkB,SACA,KACA,0BACA,sBAChB;AAJgB,SAAA,UAAA;AACA,SAAA,MAAA;AACA,SAAA,2BAAA;AACA,SAAA,uBAAA;AAIlB,kBAAA,MAAA,iBAAgB,YAAY;AAC3B,YAAM,aAAa,KAAK;AACxB,YAAM,mBAAmB,MAAM,KAAK,yBAAyB,QAAQ;AAErE,YAAM,SAAmB,CAAC;AAE1B,iBAAW,eAAe,CAAC,qBAAqB,8BAA8B,GAAG;AAChF,cAAM,oBAAoB,MAAM,iBAAiB,0BAA0B,WAAW;AACtF,mBAAW,QAAQ,mBAAmB;AAC/B,gBAAA,WAAWA,UAAAA,SAAS,KAAK,KAAKC,UAAAA,KAAK,KAAK,QAAQ,KAAK,KAAK,cAAc,CAAC;AAE3E,cAAA,CAAC,KAAK,WAAW;AACpB,mBAAO,KAAK,WAAW,WAAW,eAAe,QAAQ,oBAAoB;AAC7E;AAAA,UAAA;AAED,cAAI,KAAK,QAAQ,YAAY,iBAAiB,CAACC,kBAAO,UAAU,KAAK,UAAU,SAAS,KAAK,QAAQ,OAAO,GAAG;AAC9G,mBAAO,KAAK,WAAW,WAAW,IAAI,KAAK,UAAU,OAAO,8BAA8B,KAAK,QAAQ,OAAO,eAAe,QAAQ,GAAG;AACxI;AAAA,UAAA;AAEG,cAAA,eAAe,KAAK,UAAU,SAAS;AACnC,mBAAA,KAAK,WAAW,WAAW,IAAI,KAAK,UAAU,OAAO,kCAAkC,UAAU,GAAG;AAAA,UAAA;AAAA,QAC5G;AAAA,MACD;AAED,YAAM,gBAAgB,MAAM,KAAK,qBAAqB,+BAA+B;AAErF,UAAI,CAAC,eAAe;AACnB,eAAO,KAAK,gCAAgC;AAAA,MAAA,OACtC;AACK,mBAAA,CAAC,MAAM,GAAG,KAAK,OAAO,QAAQ,cAAc,YAAY,CAAA,CAAE,GAAG;AACnE,cAAA,CAAC,IAAI,OAAO;AACf;AAAA,UAAA;AAED,gBAAM,CAAC,OAAO,GAAG,IAAI,IAAI,MAAM,MAAM,GAAG;AACxC,cAAI,CAAC,OAAO,CAACC,OAAsB,sBAAA,SAAS,KAAK,GAAG;AACnD;AAAA,UAAA;AAGG,cAAA,eAAe,GAAG,MAAM,YAAY;AAChC,mBAAA,KAAK,kBAAkB,IAAI,eAAe,KAAK,IAAI,GAAG,kCAAkC,UAAU,GAAG;AAAA,UAAA;AAAA,QAC7G;AAAA,MACD;AAGD,UAAI,OAAO,QAAQ;AACZ,cAAA,GAAG,OAAO,IAAI,CAAM,OAAA,GAAG,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA,MAAA;AAAA,IAG9C,CACD;AAAA,EAAA;AAED;AAGA,MAAM,iBAAiB,CAAC,QAAgB;AAIvC,SAAO,IAAI,MAAM,4BAA4B,IAAI,CAAC,KAAK;AACxD;;"}
@@ -39,17 +39,12 @@ class VersionChecker {
39
39
  if (!def.image) {
40
40
  continue;
41
41
  }
42
- const [image, version2] = def.image.split(":");
43
- if (!version2 || !contemberDockerImages.includes(image)) {
42
+ const [image, tag] = def.image.split(":");
43
+ if (!tag || !contemberDockerImages.includes(image)) {
44
44
  continue;
45
45
  }
46
- const versionParts = version2.split(/[.-]/);
47
- if (versionParts[versionParts.length - 1] === "debian") {
48
- versionParts.pop();
49
- }
50
- const cliVersionParts = cliVersion.split(/[.-]/).slice(0, versionParts.length);
51
- if (versionParts.join(".") !== cliVersionParts.join(".")) {
52
- errors.push(`Docker service ${name} with image ${image}:${version2} does not match version of CLI ${cliVersion}.`);
46
+ if (extractVersion(tag) !== cliVersion) {
47
+ errors.push(`Docker service ${name} with image ${image}:${tag} does not match version of CLI ${cliVersion}.`);
53
48
  }
54
49
  }
55
50
  }
@@ -62,6 +57,9 @@ If you are really certain about the compatibility, you can disable this version
62
57
  });
63
58
  }
64
59
  }
60
+ const extractVersion = (tag) => {
61
+ return tag.match(/^\d+\.\d+\.\d+(-\w+\.\d+)?/)?.[0] ?? tag;
62
+ };
65
63
  export {
66
64
  VersionChecker
67
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"VersionChecker.js","sources":["../../../../../packages/cli/src/lib/VersionChecker.ts"],"sourcesContent":["import { join, relative } from 'node:path'\nimport * as semver from 'semver'\nimport { PackageWorkspaceResolver } from '@contember/cli-common'\nimport { DockerComposeManager } from './fs/DockerComposeManager'\nimport { contemberDockerImages } from '../consts'\n\nexport class VersionChecker {\n\tconstructor(\n\t\tprivate readonly version: string,\n\t\tprivate readonly dir: string,\n\t\tprivate readonly packageWorkspaceResolver: PackageWorkspaceResolver,\n\t\tprivate readonly dockerComposeManager: DockerComposeManager,\n\t) {\n\t}\n\n\tcheckVersions = async () => {\n\t\tconst cliVersion = this.version\n\t\tconst packageWorkspace = await this.packageWorkspaceResolver.resolve()\n\n\t\tconst errors: string[] = []\n\n\t\tfor (const packageName of ['@contember/schema', '@contember/schema-definition']) {\n\t\t\tconst installedPackages = await packageWorkspace.findInstalledDependencies(packageName)\n\t\t\tfor (const pckg of installedPackages) {\n\t\t\t\tconst jsonPath = relative(this.dir, join(pckg.defined.pckg.dir, 'package.json'))\n\n\t\t\t\tif (!pckg.installed) {\n\t\t\t\t\terrors.push(`Package ${packageName} defined in ${jsonPath} is not installed.`)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (pckg.defined.version !== 'workspace:*' && !semver.satisfies(pckg.installed.version, pckg.defined.version)) {\n\t\t\t\t\terrors.push(`Package ${packageName}@${pckg.installed.version} does not match constraint ${pckg.defined.version} defined in ${jsonPath}.`)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (cliVersion !== pckg.installed.version) {\n\t\t\t\t\terrors.push(`Package ${packageName}@${pckg.installed.version} does not match version of CLI ${cliVersion}.`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst dockerCompose = await this.dockerComposeManager.tryReadMainDockerComposeConfig()\n\n\t\tif (!dockerCompose) {\n\t\t\terrors.push('docker-compose.yaml not found.')\n\t\t} else {\n\t\t\tfor (const [name, def] of Object.entries(dockerCompose.services ?? {})) {\n\t\t\t\tif (!def.image) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst [image, version] = def.image.split(':')\n\t\t\t\tif (!version || !contemberDockerImages.includes(image)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst versionParts = version.split(/[.-]/)\n\t\t\t\tif (versionParts[versionParts.length - 1] === 'debian') {\n\t\t\t\t\tversionParts.pop()\n\t\t\t\t}\n\t\t\t\tconst cliVersionParts = cliVersion.split(/[.-]/).slice(0, versionParts.length)\n\t\t\t\tif (versionParts.join('.') !== cliVersionParts.join('.')) {\n\t\t\t\t\terrors.push(`Docker service ${name} with image ${image}:${version} does not match version of CLI ${cliVersion}.`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (errors.length) {\n\t\t\tthrow `${errors.map(it => `${it}`).join('\\n')}\n\nPlease make sure all dependencies are up to date.\\nIf you are really certain about the compatibility, you can disable this version check by running the CLI with the CONTEMBER_SKIP_VERSION_CHECK=1 environment variable`\n\t\t}\n\t}\n\n}\n"],"names":["version"],"mappings":";;;;;;AAMO,MAAM,eAAe;AAAA,EAC3B,YACkB,SACA,KACA,0BACA,sBAChB;AAJgB,SAAA,UAAA;AACA,SAAA,MAAA;AACA,SAAA,2BAAA;AACA,SAAA,uBAAA;AAIlB,kBAAA,MAAA,iBAAgB,YAAY;AAC3B,YAAM,aAAa,KAAK;AACxB,YAAM,mBAAmB,MAAM,KAAK,yBAAyB,QAAQ;AAErE,YAAM,SAAmB,CAAC;AAE1B,iBAAW,eAAe,CAAC,qBAAqB,8BAA8B,GAAG;AAChF,cAAM,oBAAoB,MAAM,iBAAiB,0BAA0B,WAAW;AACtF,mBAAW,QAAQ,mBAAmB;AAC/B,gBAAA,WAAW,SAAS,KAAK,KAAK,KAAK,KAAK,QAAQ,KAAK,KAAK,cAAc,CAAC;AAE3E,cAAA,CAAC,KAAK,WAAW;AACpB,mBAAO,KAAK,WAAW,WAAW,eAAe,QAAQ,oBAAoB;AAC7E;AAAA,UAAA;AAED,cAAI,KAAK,QAAQ,YAAY,iBAAiB,CAAC,OAAO,UAAU,KAAK,UAAU,SAAS,KAAK,QAAQ,OAAO,GAAG;AAC9G,mBAAO,KAAK,WAAW,WAAW,IAAI,KAAK,UAAU,OAAO,8BAA8B,KAAK,QAAQ,OAAO,eAAe,QAAQ,GAAG;AACxI;AAAA,UAAA;AAEG,cAAA,eAAe,KAAK,UAAU,SAAS;AACnC,mBAAA,KAAK,WAAW,WAAW,IAAI,KAAK,UAAU,OAAO,kCAAkC,UAAU,GAAG;AAAA,UAAA;AAAA,QAC5G;AAAA,MACD;AAED,YAAM,gBAAgB,MAAM,KAAK,qBAAqB,+BAA+B;AAErF,UAAI,CAAC,eAAe;AACnB,eAAO,KAAK,gCAAgC;AAAA,MAAA,OACtC;AACK,mBAAA,CAAC,MAAM,GAAG,KAAK,OAAO,QAAQ,cAAc,YAAY,CAAA,CAAE,GAAG;AACnE,cAAA,CAAC,IAAI,OAAO;AACf;AAAA,UAAA;AAED,gBAAM,CAAC,OAAOA,QAAO,IAAI,IAAI,MAAM,MAAM,GAAG;AAC5C,cAAI,CAACA,YAAW,CAAC,sBAAsB,SAAS,KAAK,GAAG;AACvD;AAAA,UAAA;AAEK,gBAAA,eAAeA,SAAQ,MAAM,MAAM;AACzC,cAAI,aAAa,aAAa,SAAS,CAAC,MAAM,UAAU;AACvD,yBAAa,IAAI;AAAA,UAAA;AAEZ,gBAAA,kBAAkB,WAAW,MAAM,MAAM,EAAE,MAAM,GAAG,aAAa,MAAM;AAC7E,cAAI,aAAa,KAAK,GAAG,MAAM,gBAAgB,KAAK,GAAG,GAAG;AAClD,mBAAA,KAAK,kBAAkB,IAAI,eAAe,KAAK,IAAIA,QAAO,kCAAkC,UAAU,GAAG;AAAA,UAAA;AAAA,QACjH;AAAA,MACD;AAGD,UAAI,OAAO,QAAQ;AACZ,cAAA,GAAG,OAAO,IAAI,CAAM,OAAA,GAAG,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA,MAAA;AAAA,IAG9C,CACD;AAAA,EAAA;AAED;"}
1
+ {"version":3,"file":"VersionChecker.js","sources":["../../../../../packages/cli/src/lib/VersionChecker.ts"],"sourcesContent":["import { join, relative } from 'node:path'\nimport * as semver from 'semver'\nimport { PackageWorkspaceResolver } from '@contember/cli-common'\nimport { DockerComposeManager } from './fs/DockerComposeManager'\nimport { contemberDockerImages } from '../consts'\n\nexport class VersionChecker {\n\tconstructor(\n\t\tprivate readonly version: string,\n\t\tprivate readonly dir: string,\n\t\tprivate readonly packageWorkspaceResolver: PackageWorkspaceResolver,\n\t\tprivate readonly dockerComposeManager: DockerComposeManager,\n\t) {\n\t}\n\n\tcheckVersions = async () => {\n\t\tconst cliVersion = this.version\n\t\tconst packageWorkspace = await this.packageWorkspaceResolver.resolve()\n\n\t\tconst errors: string[] = []\n\n\t\tfor (const packageName of ['@contember/schema', '@contember/schema-definition']) {\n\t\t\tconst installedPackages = await packageWorkspace.findInstalledDependencies(packageName)\n\t\t\tfor (const pckg of installedPackages) {\n\t\t\t\tconst jsonPath = relative(this.dir, join(pckg.defined.pckg.dir, 'package.json'))\n\n\t\t\t\tif (!pckg.installed) {\n\t\t\t\t\terrors.push(`Package ${packageName} defined in ${jsonPath} is not installed.`)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (pckg.defined.version !== 'workspace:*' && !semver.satisfies(pckg.installed.version, pckg.defined.version)) {\n\t\t\t\t\terrors.push(`Package ${packageName}@${pckg.installed.version} does not match constraint ${pckg.defined.version} defined in ${jsonPath}.`)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (cliVersion !== pckg.installed.version) {\n\t\t\t\t\terrors.push(`Package ${packageName}@${pckg.installed.version} does not match version of CLI ${cliVersion}.`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst dockerCompose = await this.dockerComposeManager.tryReadMainDockerComposeConfig()\n\n\t\tif (!dockerCompose) {\n\t\t\terrors.push('docker-compose.yaml not found.')\n\t\t} else {\n\t\t\tfor (const [name, def] of Object.entries(dockerCompose.services ?? {})) {\n\t\t\t\tif (!def.image) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst [image, tag] = def.image.split(':')\n\t\t\t\tif (!tag || !contemberDockerImages.includes(image)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tif (extractVersion(tag) !== cliVersion) {\n\t\t\t\t\terrors.push(`Docker service ${name} with image ${image}:${tag} does not match version of CLI ${cliVersion}.`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (errors.length) {\n\t\t\tthrow `${errors.map(it => `${it}`).join('\\n')}\n\nPlease make sure all dependencies are up to date.\\nIf you are really certain about the compatibility, you can disable this version check by running the CLI with the CONTEMBER_SKIP_VERSION_CHECK=1 environment variable`\n\t\t}\n\t}\n\n}\n\n\nconst extractVersion = (tag: string) => {\n\t// e.g.\n\t// 2.1.0-alpha.15-foo-bar => 2.1.0-alpha.15\n\t// 2.1.0-debian => 2.1.0\n\treturn tag.match(/^\\d+\\.\\d+\\.\\d+(-\\w+\\.\\d+)?/)?.[0] ?? tag\n}\n"],"names":[],"mappings":";;;;;;AAMO,MAAM,eAAe;AAAA,EAC3B,YACkB,SACA,KACA,0BACA,sBAChB;AAJgB,SAAA,UAAA;AACA,SAAA,MAAA;AACA,SAAA,2BAAA;AACA,SAAA,uBAAA;AAIlB,kBAAA,MAAA,iBAAgB,YAAY;AAC3B,YAAM,aAAa,KAAK;AACxB,YAAM,mBAAmB,MAAM,KAAK,yBAAyB,QAAQ;AAErE,YAAM,SAAmB,CAAC;AAE1B,iBAAW,eAAe,CAAC,qBAAqB,8BAA8B,GAAG;AAChF,cAAM,oBAAoB,MAAM,iBAAiB,0BAA0B,WAAW;AACtF,mBAAW,QAAQ,mBAAmB;AAC/B,gBAAA,WAAW,SAAS,KAAK,KAAK,KAAK,KAAK,QAAQ,KAAK,KAAK,cAAc,CAAC;AAE3E,cAAA,CAAC,KAAK,WAAW;AACpB,mBAAO,KAAK,WAAW,WAAW,eAAe,QAAQ,oBAAoB;AAC7E;AAAA,UAAA;AAED,cAAI,KAAK,QAAQ,YAAY,iBAAiB,CAAC,OAAO,UAAU,KAAK,UAAU,SAAS,KAAK,QAAQ,OAAO,GAAG;AAC9G,mBAAO,KAAK,WAAW,WAAW,IAAI,KAAK,UAAU,OAAO,8BAA8B,KAAK,QAAQ,OAAO,eAAe,QAAQ,GAAG;AACxI;AAAA,UAAA;AAEG,cAAA,eAAe,KAAK,UAAU,SAAS;AACnC,mBAAA,KAAK,WAAW,WAAW,IAAI,KAAK,UAAU,OAAO,kCAAkC,UAAU,GAAG;AAAA,UAAA;AAAA,QAC5G;AAAA,MACD;AAED,YAAM,gBAAgB,MAAM,KAAK,qBAAqB,+BAA+B;AAErF,UAAI,CAAC,eAAe;AACnB,eAAO,KAAK,gCAAgC;AAAA,MAAA,OACtC;AACK,mBAAA,CAAC,MAAM,GAAG,KAAK,OAAO,QAAQ,cAAc,YAAY,CAAA,CAAE,GAAG;AACnE,cAAA,CAAC,IAAI,OAAO;AACf;AAAA,UAAA;AAED,gBAAM,CAAC,OAAO,GAAG,IAAI,IAAI,MAAM,MAAM,GAAG;AACxC,cAAI,CAAC,OAAO,CAAC,sBAAsB,SAAS,KAAK,GAAG;AACnD;AAAA,UAAA;AAGG,cAAA,eAAe,GAAG,MAAM,YAAY;AAChC,mBAAA,KAAK,kBAAkB,IAAI,eAAe,KAAK,IAAI,GAAG,kCAAkC,UAAU,GAAG;AAAA,UAAA;AAAA,QAC7G;AAAA,MACD;AAGD,UAAI,OAAO,QAAQ;AACZ,cAAA,GAAG,OAAO,IAAI,CAAM,OAAA,GAAG,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA,MAAA;AAAA,IAG9C,CACD;AAAA,EAAA;AAED;AAGA,MAAM,iBAAiB,CAAC,QAAgB;AAIvC,SAAO,IAAI,MAAM,4BAA4B,IAAI,CAAC,KAAK;AACxD;"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const graphqlClient = require("@contember/graphql-client");
4
+ const createActionsApiUrl = (url, project) => {
5
+ if (url.endsWith("/")) {
6
+ url = url.substring(0, url.length - 1);
7
+ }
8
+ return url + "/actions/" + project;
9
+ };
10
+ class ActionsClient {
11
+ constructor(apiClient) {
12
+ this.apiClient = apiClient;
13
+ }
14
+ static create(url, project, apiToken) {
15
+ const graphqlClient$1 = new graphqlClient.GraphQlClient({ url: createActionsApiUrl(url, project), apiToken });
16
+ return new ActionsClient(graphqlClient$1);
17
+ }
18
+ async listVariables() {
19
+ const query = `query {
20
+ variables {
21
+ name
22
+ value
23
+ }
24
+ }`;
25
+ const result = await this.apiClient.execute(query);
26
+ return result.variables;
27
+ }
28
+ async setVariables(variables, mode) {
29
+ const query = `mutation($variables: [VariableInput!]!, $mode: SetVariablesMode) {
30
+ setVariables(args: { variables: $variables, mode: $mode }) {
31
+ ok
32
+ }
33
+ }`;
34
+ const result = await this.apiClient.execute(query, { variables: { mode, variables } });
35
+ return result.setVariables.ok;
36
+ }
37
+ async listFailedEvents({ offset, limit } = {}) {
38
+ const query = `query($offset: Int, $limit: Int) {
39
+ failedEvents(args: { offset: $offset, limit: $limit }) {
40
+ id
41
+ createdAt
42
+ lastStateChange
43
+ visibleAt
44
+ numRetries
45
+ state
46
+ target
47
+ payload
48
+ log
49
+ }
50
+ }`;
51
+ const result = await this.apiClient.execute(query, { variables: { offset, limit } });
52
+ return result.failedEvents;
53
+ }
54
+ async retryEvent(id) {
55
+ const query = `mutation($id: UUID!) {
56
+ retryEvent(id: $id) {
57
+ ok
58
+ }
59
+ }`;
60
+ const result = await this.apiClient.execute(query, { variables: { id } });
61
+ return result.retryEvent.ok;
62
+ }
63
+ async stopEvent(id) {
64
+ const query = `mutation($id: UUID!) {
65
+ stopEvent(id: $id) {
66
+ ok
67
+ }
68
+ }`;
69
+ const result = await this.apiClient.execute(query, { variables: { id } });
70
+ return result.stopEvent.ok;
71
+ }
72
+ async getEvent(id) {
73
+ const query = `query($id: UUID!) {
74
+ event(id: $id) {
75
+ id
76
+ createdAt
77
+ lastStateChange
78
+ visibleAt
79
+ numRetries
80
+ state
81
+ target
82
+ payload
83
+ log
84
+ }
85
+ }`;
86
+ const result = await this.apiClient.execute(query, { variables: { id } });
87
+ return result.event;
88
+ }
89
+ }
90
+ exports.ActionsClient = ActionsClient;
91
+ //# sourceMappingURL=ActionsClient.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionsClient.cjs","sources":["../../../../../../packages/cli/src/lib/actions/ActionsClient.ts"],"sourcesContent":["import { GraphQlClient } from '@contember/graphql-client'\n\nconst createActionsApiUrl = (url: string, project: string) => {\n\tif (url.endsWith('/')) {\n\t\turl = url.substring(0, url.length - 1)\n\t}\n\n\treturn url + '/actions/' + project\n}\nexport class ActionsClient {\n\tconstructor(private readonly apiClient: GraphQlClient) {\n\t}\n\n\tpublic static create(url: string, project: string, apiToken: string): ActionsClient {\n\t\tconst graphqlClient = new GraphQlClient({ url: createActionsApiUrl(url, project), apiToken })\n\t\treturn new ActionsClient(graphqlClient)\n\t}\n\n\tpublic async listVariables(): Promise<{ name: string; value: string }[]> {\n\t\tconst query = `query {\n variables {\n \tname\n \tvalue\n }\n}`\n\t\tconst result = await this.apiClient.execute<{\n\t\t\tvariables: Array<{ name: string; value: string }>\n\t\t}>(query)\n\t\treturn result.variables\n\t}\n\n\tpublic async setVariables(variables: { name: string; value: string }[], mode: 'MERGE' | 'SET' | 'APPEND_ONLY_MISSING'): Promise<boolean> {\n\t\tconst query = `mutation($variables: [VariableInput!]!, $mode: SetVariablesMode) {\n setVariables(args: { variables: $variables, mode: $mode }) {\n\tok\n }\n }`\n\t\tconst result = await this.apiClient.execute<{ setVariables: { ok: boolean } }>(query, { variables: { mode, variables } })\n\t\treturn result.setVariables.ok\n\t}\n\n\tpublic async listFailedEvents({ offset, limit }: { offset?: number; limit?: number } = {}): Promise<Event[]> {\n\t\tconst query = `query($offset: Int, $limit: Int) {\n failedEvents(args: { offset: $offset, limit: $limit }) {\n \tid\n \tcreatedAt\n \tlastStateChange\n \tvisibleAt\n \tnumRetries\n \tstate\n \ttarget\n \tpayload\n \tlog\n }\n}`\n\t\tconst result = await this.apiClient.execute<{\n\t\t\tfailedEvents: Event[]\n\t\t}>(query, { variables: { offset, limit } })\n\t\treturn result.failedEvents\n\t}\n\n\tpublic async retryEvent(id: string): Promise<boolean> {\n\t\tconst query = `mutation($id: UUID!) {\n retryEvent(id: $id) {\n \tok\n }\n}`\n\t\tconst result = await this.apiClient.execute<{ retryEvent: { ok: boolean } }>(query, { variables: { id } })\n\t\treturn result.retryEvent.ok\n\t}\n\n\tpublic async stopEvent(id: string): Promise<boolean> {\n\t\tconst query = `mutation($id: UUID!) {\n stopEvent(id: $id) {\n \tok\n }\n}`\n\t\tconst result = await this.apiClient.execute<{ stopEvent: { ok: boolean } }>(query, { variables: { id } })\n\t\treturn result.stopEvent.ok\n\t}\n\n\n\tpublic async getEvent(id: string): Promise<Event | null> {\n\t\tconst query = `query($id: UUID!) {\n event(id: $id) {\n \tid\n \tcreatedAt\n \tlastStateChange\n \tvisibleAt\n \tnumRetries\n \tstate\n \ttarget\n \tpayload\n \tlog\n }\n}`\n\t\tconst result = await this.apiClient.execute<{ event: Event | null }>(query, { variables: { id } })\n\t\treturn result.event\n\t}\n}\n\nexport type Event = {\n\tid: string\n\tcreatedAt: string\n\tlastStateChange: string\n\tvisibleAt: string | null\n\tnumRetries: number\n\tstate: 'retrying' | 'failed'\n\ttarget: string\n\tpayload: any\n\tlog: any\n}\n"],"names":["graphqlClient","GraphQlClient"],"mappings":";;;AAEA,MAAM,sBAAsB,CAAC,KAAa,YAAoB;AACzD,MAAA,IAAI,SAAS,GAAG,GAAG;AACtB,UAAM,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC;AAAA,EAAA;AAGtC,SAAO,MAAM,cAAc;AAC5B;AACO,MAAM,cAAc;AAAA,EAC1B,YAA6B,WAA0B;AAA1B,SAAA,YAAA;AAAA,EAAA;AAAA,EAG7B,OAAc,OAAO,KAAa,SAAiB,UAAiC;AAC7E,UAAAA,kBAAgB,IAAIC,cAAA,cAAc,EAAE,KAAK,oBAAoB,KAAK,OAAO,GAAG,UAAU;AACrF,WAAA,IAAI,cAAcD,eAAa;AAAA,EAAA;AAAA,EAGvC,MAAa,gBAA4D;AACxE,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAMd,UAAM,SAAS,MAAM,KAAK,UAAU,QAEjC,KAAK;AACR,WAAO,OAAO;AAAA,EAAA;AAAA,EAGf,MAAa,aAAa,WAA8C,MAAiE;AACxI,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAKd,UAAM,SAAS,MAAM,KAAK,UAAU,QAA2C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,EAAA,CAAG;AACxH,WAAO,OAAO,aAAa;AAAA,EAAA;AAAA,EAG5B,MAAa,iBAAiB,EAAE,QAAQ,MAAM,IAAyC,CAAA,GAAsB;AAC5G,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAad,UAAM,SAAS,MAAM,KAAK,UAAU,QAEjC,OAAO,EAAE,WAAW,EAAE,QAAQ,MAAM,EAAA,CAAG;AAC1C,WAAO,OAAO;AAAA,EAAA;AAAA,EAGf,MAAa,WAAW,IAA8B;AACrD,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAKR,UAAA,SAAS,MAAM,KAAK,UAAU,QAAyC,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG;AACzG,WAAO,OAAO,WAAW;AAAA,EAAA;AAAA,EAG1B,MAAa,UAAU,IAA8B;AACpD,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAKR,UAAA,SAAS,MAAM,KAAK,UAAU,QAAwC,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG;AACxG,WAAO,OAAO,UAAU;AAAA,EAAA;AAAA,EAIzB,MAAa,SAAS,IAAmC;AACxD,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaR,UAAA,SAAS,MAAM,KAAK,UAAU,QAAiC,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG;AACjG,WAAO,OAAO;AAAA,EAAA;AAEhB;;"}
@@ -0,0 +1,91 @@
1
+ import { GraphQlClient } from "@contember/graphql-client";
2
+ const createActionsApiUrl = (url, project) => {
3
+ if (url.endsWith("/")) {
4
+ url = url.substring(0, url.length - 1);
5
+ }
6
+ return url + "/actions/" + project;
7
+ };
8
+ class ActionsClient {
9
+ constructor(apiClient) {
10
+ this.apiClient = apiClient;
11
+ }
12
+ static create(url, project, apiToken) {
13
+ const graphqlClient = new GraphQlClient({ url: createActionsApiUrl(url, project), apiToken });
14
+ return new ActionsClient(graphqlClient);
15
+ }
16
+ async listVariables() {
17
+ const query = `query {
18
+ variables {
19
+ name
20
+ value
21
+ }
22
+ }`;
23
+ const result = await this.apiClient.execute(query);
24
+ return result.variables;
25
+ }
26
+ async setVariables(variables, mode) {
27
+ const query = `mutation($variables: [VariableInput!]!, $mode: SetVariablesMode) {
28
+ setVariables(args: { variables: $variables, mode: $mode }) {
29
+ ok
30
+ }
31
+ }`;
32
+ const result = await this.apiClient.execute(query, { variables: { mode, variables } });
33
+ return result.setVariables.ok;
34
+ }
35
+ async listFailedEvents({ offset, limit } = {}) {
36
+ const query = `query($offset: Int, $limit: Int) {
37
+ failedEvents(args: { offset: $offset, limit: $limit }) {
38
+ id
39
+ createdAt
40
+ lastStateChange
41
+ visibleAt
42
+ numRetries
43
+ state
44
+ target
45
+ payload
46
+ log
47
+ }
48
+ }`;
49
+ const result = await this.apiClient.execute(query, { variables: { offset, limit } });
50
+ return result.failedEvents;
51
+ }
52
+ async retryEvent(id) {
53
+ const query = `mutation($id: UUID!) {
54
+ retryEvent(id: $id) {
55
+ ok
56
+ }
57
+ }`;
58
+ const result = await this.apiClient.execute(query, { variables: { id } });
59
+ return result.retryEvent.ok;
60
+ }
61
+ async stopEvent(id) {
62
+ const query = `mutation($id: UUID!) {
63
+ stopEvent(id: $id) {
64
+ ok
65
+ }
66
+ }`;
67
+ const result = await this.apiClient.execute(query, { variables: { id } });
68
+ return result.stopEvent.ok;
69
+ }
70
+ async getEvent(id) {
71
+ const query = `query($id: UUID!) {
72
+ event(id: $id) {
73
+ id
74
+ createdAt
75
+ lastStateChange
76
+ visibleAt
77
+ numRetries
78
+ state
79
+ target
80
+ payload
81
+ log
82
+ }
83
+ }`;
84
+ const result = await this.apiClient.execute(query, { variables: { id } });
85
+ return result.event;
86
+ }
87
+ }
88
+ export {
89
+ ActionsClient
90
+ };
91
+ //# sourceMappingURL=ActionsClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionsClient.js","sources":["../../../../../../packages/cli/src/lib/actions/ActionsClient.ts"],"sourcesContent":["import { GraphQlClient } from '@contember/graphql-client'\n\nconst createActionsApiUrl = (url: string, project: string) => {\n\tif (url.endsWith('/')) {\n\t\turl = url.substring(0, url.length - 1)\n\t}\n\n\treturn url + '/actions/' + project\n}\nexport class ActionsClient {\n\tconstructor(private readonly apiClient: GraphQlClient) {\n\t}\n\n\tpublic static create(url: string, project: string, apiToken: string): ActionsClient {\n\t\tconst graphqlClient = new GraphQlClient({ url: createActionsApiUrl(url, project), apiToken })\n\t\treturn new ActionsClient(graphqlClient)\n\t}\n\n\tpublic async listVariables(): Promise<{ name: string; value: string }[]> {\n\t\tconst query = `query {\n variables {\n \tname\n \tvalue\n }\n}`\n\t\tconst result = await this.apiClient.execute<{\n\t\t\tvariables: Array<{ name: string; value: string }>\n\t\t}>(query)\n\t\treturn result.variables\n\t}\n\n\tpublic async setVariables(variables: { name: string; value: string }[], mode: 'MERGE' | 'SET' | 'APPEND_ONLY_MISSING'): Promise<boolean> {\n\t\tconst query = `mutation($variables: [VariableInput!]!, $mode: SetVariablesMode) {\n setVariables(args: { variables: $variables, mode: $mode }) {\n\tok\n }\n }`\n\t\tconst result = await this.apiClient.execute<{ setVariables: { ok: boolean } }>(query, { variables: { mode, variables } })\n\t\treturn result.setVariables.ok\n\t}\n\n\tpublic async listFailedEvents({ offset, limit }: { offset?: number; limit?: number } = {}): Promise<Event[]> {\n\t\tconst query = `query($offset: Int, $limit: Int) {\n failedEvents(args: { offset: $offset, limit: $limit }) {\n \tid\n \tcreatedAt\n \tlastStateChange\n \tvisibleAt\n \tnumRetries\n \tstate\n \ttarget\n \tpayload\n \tlog\n }\n}`\n\t\tconst result = await this.apiClient.execute<{\n\t\t\tfailedEvents: Event[]\n\t\t}>(query, { variables: { offset, limit } })\n\t\treturn result.failedEvents\n\t}\n\n\tpublic async retryEvent(id: string): Promise<boolean> {\n\t\tconst query = `mutation($id: UUID!) {\n retryEvent(id: $id) {\n \tok\n }\n}`\n\t\tconst result = await this.apiClient.execute<{ retryEvent: { ok: boolean } }>(query, { variables: { id } })\n\t\treturn result.retryEvent.ok\n\t}\n\n\tpublic async stopEvent(id: string): Promise<boolean> {\n\t\tconst query = `mutation($id: UUID!) {\n stopEvent(id: $id) {\n \tok\n }\n}`\n\t\tconst result = await this.apiClient.execute<{ stopEvent: { ok: boolean } }>(query, { variables: { id } })\n\t\treturn result.stopEvent.ok\n\t}\n\n\n\tpublic async getEvent(id: string): Promise<Event | null> {\n\t\tconst query = `query($id: UUID!) {\n event(id: $id) {\n \tid\n \tcreatedAt\n \tlastStateChange\n \tvisibleAt\n \tnumRetries\n \tstate\n \ttarget\n \tpayload\n \tlog\n }\n}`\n\t\tconst result = await this.apiClient.execute<{ event: Event | null }>(query, { variables: { id } })\n\t\treturn result.event\n\t}\n}\n\nexport type Event = {\n\tid: string\n\tcreatedAt: string\n\tlastStateChange: string\n\tvisibleAt: string | null\n\tnumRetries: number\n\tstate: 'retrying' | 'failed'\n\ttarget: string\n\tpayload: any\n\tlog: any\n}\n"],"names":[],"mappings":";AAEA,MAAM,sBAAsB,CAAC,KAAa,YAAoB;AACzD,MAAA,IAAI,SAAS,GAAG,GAAG;AACtB,UAAM,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC;AAAA,EAAA;AAGtC,SAAO,MAAM,cAAc;AAC5B;AACO,MAAM,cAAc;AAAA,EAC1B,YAA6B,WAA0B;AAA1B,SAAA,YAAA;AAAA,EAAA;AAAA,EAG7B,OAAc,OAAO,KAAa,SAAiB,UAAiC;AAC7E,UAAA,gBAAgB,IAAI,cAAc,EAAE,KAAK,oBAAoB,KAAK,OAAO,GAAG,UAAU;AACrF,WAAA,IAAI,cAAc,aAAa;AAAA,EAAA;AAAA,EAGvC,MAAa,gBAA4D;AACxE,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAMd,UAAM,SAAS,MAAM,KAAK,UAAU,QAEjC,KAAK;AACR,WAAO,OAAO;AAAA,EAAA;AAAA,EAGf,MAAa,aAAa,WAA8C,MAAiE;AACxI,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAKd,UAAM,SAAS,MAAM,KAAK,UAAU,QAA2C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,EAAA,CAAG;AACxH,WAAO,OAAO,aAAa;AAAA,EAAA;AAAA,EAG5B,MAAa,iBAAiB,EAAE,QAAQ,MAAM,IAAyC,CAAA,GAAsB;AAC5G,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAad,UAAM,SAAS,MAAM,KAAK,UAAU,QAEjC,OAAO,EAAE,WAAW,EAAE,QAAQ,MAAM,EAAA,CAAG;AAC1C,WAAO,OAAO;AAAA,EAAA;AAAA,EAGf,MAAa,WAAW,IAA8B;AACrD,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAKR,UAAA,SAAS,MAAM,KAAK,UAAU,QAAyC,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG;AACzG,WAAO,OAAO,WAAW;AAAA,EAAA;AAAA,EAG1B,MAAa,UAAU,IAA8B;AACpD,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAKR,UAAA,SAAS,MAAM,KAAK,UAAU,QAAwC,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG;AACxG,WAAO,OAAO,UAAU;AAAA,EAAA;AAAA,EAIzB,MAAa,SAAS,IAAmC;AACxD,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaR,UAAA,SAAS,MAAM,KAAK,UAAU,QAAiC,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG;AACjG,WAAO,OAAO;AAAA,EAAA;AAEhB;"}
@@ -71,7 +71,8 @@ class MigrationExecutionFacade {
71
71
  contentMigrationFactoryArgs: {
72
72
  apiToken: project.token,
73
73
  apiBaseUrl: project.endpoint,
74
- projectName: project.name
74
+ projectName: project.name,
75
+ schemaVersionBuilder: this.schemaVersionBuilder
75
76
  },
76
77
  log: (message) => console.log(message),
77
78
  force
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationExecutionFacade.cjs","sources":["../../../../../../packages/cli/src/lib/migrations/MigrationExecutionFacade.ts"],"sourcesContent":["import prompts from 'prompts'\nimport { MigrationPrinter } from './MigrationPrinter'\nimport { isSchemaMigration, MigrationExecutor, MigrationToExecuteOkStatus, SchemaVersionBuilder } from '@contember/migrations-client'\nimport { MigrationsStatusFacade } from './MigrationsStatusFacade'\nimport { MigrationVersionHelper } from '@contember/engine-common'\nimport { RemoteProject } from '../project/RemoteProject'\nimport { SystemClientProvider } from '../SystemClientProvider'\nimport { TenantClientProvider } from '../TenantClientProvider'\nimport { RemoteProjectProvider } from '../project/RemoteProjectProvider'\n\nexport class MigrationExecutionFacade {\n\tconstructor(\n\t\tprivate readonly systemClientProvider: SystemClientProvider,\n\t\tprivate readonly tenantClientProvider: TenantClientProvider,\n\t\tprivate readonly projectProvider: RemoteProjectProvider,\n\t\tprivate readonly schemaVersionBuilder: SchemaVersionBuilder,\n\t\tprivate readonly migrationPrinter: MigrationPrinter,\n\t\tprivate readonly migrationExecutor: MigrationExecutor,\n\t\tprivate readonly migrationStatusFacade: MigrationsStatusFacade,\n\t) {\n\t}\n\n\texecute = async ({\n\t\trequireConfirmation,\n\t\tforce,\n\t\tuntil,\n\t\tadditionalMessage,\n\t}: {\n\t\trequireConfirmation: boolean | ((migrations: MigrationToExecuteOkStatus[]) => boolean)\n\t\tforce?: boolean\n\t\tuntil?: string\n\t\tadditionalMessage?: string\n\t}): Promise<boolean> => {\n\t\tconst project = this.projectProvider.get()\n\t\tawait this.tenantClientProvider.get().createProject(project.name, true)\n\n\t\tconst status = await this.migrationStatusFacade.resolveMigrationsStatus({ force })\n\t\tconst migrations = until\n\t\t\t? status.migrationsToExecute.filter(it => it.version <= MigrationVersionHelper.extractVersion(until))\n\t\t\t: status.migrationsToExecute\n\t\tif (migrations.length === 0) {\n\t\t\tconsole.log('No migrations to execute')\n\t\t\treturn true\n\t\t}\n\t\tconsole.log('Will execute following migrations:')\n\t\tmigrations.forEach(it => console.log(it.name))\n\t\tadditionalMessage && console.log(additionalMessage)\n\n\t\tif (typeof requireConfirmation === 'function' ? requireConfirmation(migrations) : requireConfirmation) {\n\t\t\tif (!process.stdin.isTTY) {\n\t\t\t\tthrow 'TTY not available. Pass --yes option to confirm execution.'\n\t\t\t}\n\t\t\tdo {\n\t\t\t\tconst { action } = await prompts({\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\tname: 'action',\n\t\t\t\t\tmessage: 'Do you want to continue?',\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{ value: 'yes', title: 'Execute migrations' },\n\t\t\t\t\t\t{ value: 'describe', title: 'Describe migrations' },\n\t\t\t\t\t\t{ value: 'no', title: 'Abort' },\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t\tif (action === 'describe') {\n\t\t\t\t\tconst schema = await this.schemaVersionBuilder.buildSchemaUntil(migrations[0].version)\n\t\t\t\t\tfor (const migration of migrations) {\n\t\t\t\t\t\tconst migrationContent = await migration.localMigration.getContent()\n\t\t\t\t\t\tif (!isSchemaMigration(migrationContent)) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tawait this.migrationPrinter.printMigrationDescription(schema, migrationContent, {\n\t\t\t\t\t\t\tnoSql: true,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} else if (action === 'yes') {\n\t\t\t\t\tbreak\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} while (true)\n\t\t}\n\n\t\tawait this.migrationExecutor.executeMigrations({\n\t\t\tclient: this.systemClientProvider.get(),\n\t\t\tmigrations,\n\t\t\tcontentMigrationFactoryArgs: {\n\t\t\t\tapiToken: project.token,\n\t\t\t\tapiBaseUrl: project.endpoint,\n\t\t\t\tprojectName: project.name,\n\t\t\t},\n\t\t\tlog: message => console.log(message),\n\t\t\tforce,\n\t\t})\n\t\treturn true\n\t}\n}\n"],"names":["MigrationVersionHelper","isSchemaMigration"],"mappings":";;;;;;;;AAUO,MAAM,yBAAyB;AAAA,EACrC,YACkB,sBACA,sBACA,iBACA,sBACA,kBACA,mBACA,uBAChB;AAPgB,SAAA,uBAAA;AACA,SAAA,uBAAA;AACA,SAAA,kBAAA;AACA,SAAA,uBAAA;AACA,SAAA,mBAAA;AACA,SAAA,oBAAA;AACA,SAAA,wBAAA;AAIlB,kBAAA,MAAA,WAAU,OAAO;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,MAMuB;AACjB,YAAA,UAAU,KAAK,gBAAgB,IAAI;AACzC,YAAM,KAAK,qBAAqB,IAAA,EAAM,cAAc,QAAQ,MAAM,IAAI;AAEtE,YAAM,SAAS,MAAM,KAAK,sBAAsB,wBAAwB,EAAE,OAAO;AACjF,YAAM,aAAa,QAChB,OAAO,oBAAoB,OAAO,CAAA,OAAM,GAAG,WAAWA,aAAuB,uBAAA,eAAe,KAAK,CAAC,IAClG,OAAO;AACN,UAAA,WAAW,WAAW,GAAG;AAC5B,gBAAQ,IAAI,0BAA0B;AAC/B,eAAA;AAAA,MAAA;AAER,cAAQ,IAAI,oCAAoC;AAChD,iBAAW,QAAQ,CAAM,OAAA,QAAQ,IAAI,GAAG,IAAI,CAAC;AACxB,2BAAA,QAAQ,IAAI,iBAAiB;AAElD,UAAI,OAAO,wBAAwB,aAAa,oBAAoB,UAAU,IAAI,qBAAqB;AAClG,YAAA,CAAC,QAAQ,MAAM,OAAO;AACnB,gBAAA;AAAA,QAAA;AAEJ,WAAA;AACF,gBAAM,EAAE,WAAW,MAAM,QAAQ;AAAA,YAChC,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,cACR,EAAE,OAAO,OAAO,OAAO,qBAAqB;AAAA,cAC5C,EAAE,OAAO,YAAY,OAAO,sBAAsB;AAAA,cAClD,EAAE,OAAO,MAAM,OAAO,QAAQ;AAAA,YAAA;AAAA,UAC/B,CACA;AACD,cAAI,WAAW,YAAY;AACpB,kBAAA,SAAS,MAAM,KAAK,qBAAqB,iBAAiB,WAAW,CAAC,EAAE,OAAO;AACrF,uBAAW,aAAa,YAAY;AACnC,oBAAM,mBAAmB,MAAM,UAAU,eAAe,WAAW;AAC/D,kBAAA,CAACC,iBAAAA,kBAAkB,gBAAgB,GAAG;AACzC;AAAA,cAAA;AAGD,oBAAM,KAAK,iBAAiB,0BAA0B,QAAQ,kBAAkB;AAAA,gBAC/E,OAAO;AAAA,cAAA,CACP;AAAA,YAAA;AAAA,UACF,WACU,WAAW,OAAO;AAC5B;AAAA,UAAA,OACM;AACC,mBAAA;AAAA,UAAA;AAAA,QACR,SACQ;AAAA,MAAA;AAGJ,YAAA,KAAK,kBAAkB,kBAAkB;AAAA,QAC9C,QAAQ,KAAK,qBAAqB,IAAI;AAAA,QACtC;AAAA,QACA,6BAA6B;AAAA,UAC5B,UAAU,QAAQ;AAAA,UAClB,YAAY,QAAQ;AAAA,UACpB,aAAa,QAAQ;AAAA,QACtB;AAAA,QACA,KAAK,CAAA,YAAW,QAAQ,IAAI,OAAO;AAAA,QACnC;AAAA,MAAA,CACA;AACM,aAAA;AAAA,IAAA,CACR;AAAA,EAAA;AACD;;"}
1
+ {"version":3,"file":"MigrationExecutionFacade.cjs","sources":["../../../../../../packages/cli/src/lib/migrations/MigrationExecutionFacade.ts"],"sourcesContent":["import prompts from 'prompts'\nimport { MigrationPrinter } from './MigrationPrinter'\nimport { isSchemaMigration, MigrationExecutor, MigrationToExecuteOkStatus, SchemaVersionBuilder } from '@contember/migrations-client'\nimport { MigrationsStatusFacade } from './MigrationsStatusFacade'\nimport { MigrationVersionHelper } from '@contember/engine-common'\nimport { RemoteProject } from '../project/RemoteProject'\nimport { SystemClientProvider } from '../SystemClientProvider'\nimport { TenantClientProvider } from '../TenantClientProvider'\nimport { RemoteProjectProvider } from '../project/RemoteProjectProvider'\n\nexport class MigrationExecutionFacade {\n\tconstructor(\n\t\tprivate readonly systemClientProvider: SystemClientProvider,\n\t\tprivate readonly tenantClientProvider: TenantClientProvider,\n\t\tprivate readonly projectProvider: RemoteProjectProvider,\n\t\tprivate readonly schemaVersionBuilder: SchemaVersionBuilder,\n\t\tprivate readonly migrationPrinter: MigrationPrinter,\n\t\tprivate readonly migrationExecutor: MigrationExecutor,\n\t\tprivate readonly migrationStatusFacade: MigrationsStatusFacade,\n\t) {\n\t}\n\n\texecute = async ({\n\t\trequireConfirmation,\n\t\tforce,\n\t\tuntil,\n\t\tadditionalMessage,\n\t}: {\n\t\trequireConfirmation: boolean | ((migrations: MigrationToExecuteOkStatus[]) => boolean)\n\t\tforce?: boolean\n\t\tuntil?: string\n\t\tadditionalMessage?: string\n\t}): Promise<boolean> => {\n\t\tconst project = this.projectProvider.get()\n\t\tawait this.tenantClientProvider.get().createProject(project.name, true)\n\n\t\tconst status = await this.migrationStatusFacade.resolveMigrationsStatus({ force })\n\t\tconst migrations = until\n\t\t\t? status.migrationsToExecute.filter(it => it.version <= MigrationVersionHelper.extractVersion(until))\n\t\t\t: status.migrationsToExecute\n\t\tif (migrations.length === 0) {\n\t\t\tconsole.log('No migrations to execute')\n\t\t\treturn true\n\t\t}\n\t\tconsole.log('Will execute following migrations:')\n\t\tmigrations.forEach(it => console.log(it.name))\n\t\tadditionalMessage && console.log(additionalMessage)\n\n\t\tif (typeof requireConfirmation === 'function' ? requireConfirmation(migrations) : requireConfirmation) {\n\t\t\tif (!process.stdin.isTTY) {\n\t\t\t\tthrow 'TTY not available. Pass --yes option to confirm execution.'\n\t\t\t}\n\t\t\tdo {\n\t\t\t\tconst { action } = await prompts({\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\tname: 'action',\n\t\t\t\t\tmessage: 'Do you want to continue?',\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{ value: 'yes', title: 'Execute migrations' },\n\t\t\t\t\t\t{ value: 'describe', title: 'Describe migrations' },\n\t\t\t\t\t\t{ value: 'no', title: 'Abort' },\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t\tif (action === 'describe') {\n\t\t\t\t\tconst schema = await this.schemaVersionBuilder.buildSchemaUntil(migrations[0].version)\n\t\t\t\t\tfor (const migration of migrations) {\n\t\t\t\t\t\tconst migrationContent = await migration.localMigration.getContent()\n\t\t\t\t\t\tif (!isSchemaMigration(migrationContent)) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tawait this.migrationPrinter.printMigrationDescription(schema, migrationContent, {\n\t\t\t\t\t\t\tnoSql: true,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} else if (action === 'yes') {\n\t\t\t\t\tbreak\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} while (true)\n\t\t}\n\n\t\tawait this.migrationExecutor.executeMigrations({\n\t\t\tclient: this.systemClientProvider.get(),\n\t\t\tmigrations,\n\t\t\tcontentMigrationFactoryArgs: {\n\t\t\t\tapiToken: project.token,\n\t\t\t\tapiBaseUrl: project.endpoint,\n\t\t\t\tprojectName: project.name,\n\t\t\t\tschemaVersionBuilder: this.schemaVersionBuilder,\n\t\t\t},\n\t\t\tlog: message => console.log(message),\n\t\t\tforce,\n\t\t})\n\t\treturn true\n\t}\n}\n"],"names":["MigrationVersionHelper","isSchemaMigration"],"mappings":";;;;;;;;AAUO,MAAM,yBAAyB;AAAA,EACrC,YACkB,sBACA,sBACA,iBACA,sBACA,kBACA,mBACA,uBAChB;AAPgB,SAAA,uBAAA;AACA,SAAA,uBAAA;AACA,SAAA,kBAAA;AACA,SAAA,uBAAA;AACA,SAAA,mBAAA;AACA,SAAA,oBAAA;AACA,SAAA,wBAAA;AAIlB,kBAAA,MAAA,WAAU,OAAO;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,MAMuB;AACjB,YAAA,UAAU,KAAK,gBAAgB,IAAI;AACzC,YAAM,KAAK,qBAAqB,IAAA,EAAM,cAAc,QAAQ,MAAM,IAAI;AAEtE,YAAM,SAAS,MAAM,KAAK,sBAAsB,wBAAwB,EAAE,OAAO;AACjF,YAAM,aAAa,QAChB,OAAO,oBAAoB,OAAO,CAAA,OAAM,GAAG,WAAWA,aAAuB,uBAAA,eAAe,KAAK,CAAC,IAClG,OAAO;AACN,UAAA,WAAW,WAAW,GAAG;AAC5B,gBAAQ,IAAI,0BAA0B;AAC/B,eAAA;AAAA,MAAA;AAER,cAAQ,IAAI,oCAAoC;AAChD,iBAAW,QAAQ,CAAM,OAAA,QAAQ,IAAI,GAAG,IAAI,CAAC;AACxB,2BAAA,QAAQ,IAAI,iBAAiB;AAElD,UAAI,OAAO,wBAAwB,aAAa,oBAAoB,UAAU,IAAI,qBAAqB;AAClG,YAAA,CAAC,QAAQ,MAAM,OAAO;AACnB,gBAAA;AAAA,QAAA;AAEJ,WAAA;AACF,gBAAM,EAAE,WAAW,MAAM,QAAQ;AAAA,YAChC,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,cACR,EAAE,OAAO,OAAO,OAAO,qBAAqB;AAAA,cAC5C,EAAE,OAAO,YAAY,OAAO,sBAAsB;AAAA,cAClD,EAAE,OAAO,MAAM,OAAO,QAAQ;AAAA,YAAA;AAAA,UAC/B,CACA;AACD,cAAI,WAAW,YAAY;AACpB,kBAAA,SAAS,MAAM,KAAK,qBAAqB,iBAAiB,WAAW,CAAC,EAAE,OAAO;AACrF,uBAAW,aAAa,YAAY;AACnC,oBAAM,mBAAmB,MAAM,UAAU,eAAe,WAAW;AAC/D,kBAAA,CAACC,iBAAAA,kBAAkB,gBAAgB,GAAG;AACzC;AAAA,cAAA;AAGD,oBAAM,KAAK,iBAAiB,0BAA0B,QAAQ,kBAAkB;AAAA,gBAC/E,OAAO;AAAA,cAAA,CACP;AAAA,YAAA;AAAA,UACF,WACU,WAAW,OAAO;AAC5B;AAAA,UAAA,OACM;AACC,mBAAA;AAAA,UAAA;AAAA,QACR,SACQ;AAAA,MAAA;AAGJ,YAAA,KAAK,kBAAkB,kBAAkB;AAAA,QAC9C,QAAQ,KAAK,qBAAqB,IAAI;AAAA,QACtC;AAAA,QACA,6BAA6B;AAAA,UAC5B,UAAU,QAAQ;AAAA,UAClB,YAAY,QAAQ;AAAA,UACpB,aAAa,QAAQ;AAAA,UACrB,sBAAsB,KAAK;AAAA,QAC5B;AAAA,QACA,KAAK,CAAA,YAAW,QAAQ,IAAI,OAAO;AAAA,QACnC;AAAA,MAAA,CACA;AACM,aAAA;AAAA,IAAA,CACR;AAAA,EAAA;AACD;;"}
@@ -69,7 +69,8 @@ class MigrationExecutionFacade {
69
69
  contentMigrationFactoryArgs: {
70
70
  apiToken: project.token,
71
71
  apiBaseUrl: project.endpoint,
72
- projectName: project.name
72
+ projectName: project.name,
73
+ schemaVersionBuilder: this.schemaVersionBuilder
73
74
  },
74
75
  log: (message) => console.log(message),
75
76
  force
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationExecutionFacade.js","sources":["../../../../../../packages/cli/src/lib/migrations/MigrationExecutionFacade.ts"],"sourcesContent":["import prompts from 'prompts'\nimport { MigrationPrinter } from './MigrationPrinter'\nimport { isSchemaMigration, MigrationExecutor, MigrationToExecuteOkStatus, SchemaVersionBuilder } from '@contember/migrations-client'\nimport { MigrationsStatusFacade } from './MigrationsStatusFacade'\nimport { MigrationVersionHelper } from '@contember/engine-common'\nimport { RemoteProject } from '../project/RemoteProject'\nimport { SystemClientProvider } from '../SystemClientProvider'\nimport { TenantClientProvider } from '../TenantClientProvider'\nimport { RemoteProjectProvider } from '../project/RemoteProjectProvider'\n\nexport class MigrationExecutionFacade {\n\tconstructor(\n\t\tprivate readonly systemClientProvider: SystemClientProvider,\n\t\tprivate readonly tenantClientProvider: TenantClientProvider,\n\t\tprivate readonly projectProvider: RemoteProjectProvider,\n\t\tprivate readonly schemaVersionBuilder: SchemaVersionBuilder,\n\t\tprivate readonly migrationPrinter: MigrationPrinter,\n\t\tprivate readonly migrationExecutor: MigrationExecutor,\n\t\tprivate readonly migrationStatusFacade: MigrationsStatusFacade,\n\t) {\n\t}\n\n\texecute = async ({\n\t\trequireConfirmation,\n\t\tforce,\n\t\tuntil,\n\t\tadditionalMessage,\n\t}: {\n\t\trequireConfirmation: boolean | ((migrations: MigrationToExecuteOkStatus[]) => boolean)\n\t\tforce?: boolean\n\t\tuntil?: string\n\t\tadditionalMessage?: string\n\t}): Promise<boolean> => {\n\t\tconst project = this.projectProvider.get()\n\t\tawait this.tenantClientProvider.get().createProject(project.name, true)\n\n\t\tconst status = await this.migrationStatusFacade.resolveMigrationsStatus({ force })\n\t\tconst migrations = until\n\t\t\t? status.migrationsToExecute.filter(it => it.version <= MigrationVersionHelper.extractVersion(until))\n\t\t\t: status.migrationsToExecute\n\t\tif (migrations.length === 0) {\n\t\t\tconsole.log('No migrations to execute')\n\t\t\treturn true\n\t\t}\n\t\tconsole.log('Will execute following migrations:')\n\t\tmigrations.forEach(it => console.log(it.name))\n\t\tadditionalMessage && console.log(additionalMessage)\n\n\t\tif (typeof requireConfirmation === 'function' ? requireConfirmation(migrations) : requireConfirmation) {\n\t\t\tif (!process.stdin.isTTY) {\n\t\t\t\tthrow 'TTY not available. Pass --yes option to confirm execution.'\n\t\t\t}\n\t\t\tdo {\n\t\t\t\tconst { action } = await prompts({\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\tname: 'action',\n\t\t\t\t\tmessage: 'Do you want to continue?',\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{ value: 'yes', title: 'Execute migrations' },\n\t\t\t\t\t\t{ value: 'describe', title: 'Describe migrations' },\n\t\t\t\t\t\t{ value: 'no', title: 'Abort' },\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t\tif (action === 'describe') {\n\t\t\t\t\tconst schema = await this.schemaVersionBuilder.buildSchemaUntil(migrations[0].version)\n\t\t\t\t\tfor (const migration of migrations) {\n\t\t\t\t\t\tconst migrationContent = await migration.localMigration.getContent()\n\t\t\t\t\t\tif (!isSchemaMigration(migrationContent)) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tawait this.migrationPrinter.printMigrationDescription(schema, migrationContent, {\n\t\t\t\t\t\t\tnoSql: true,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} else if (action === 'yes') {\n\t\t\t\t\tbreak\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} while (true)\n\t\t}\n\n\t\tawait this.migrationExecutor.executeMigrations({\n\t\t\tclient: this.systemClientProvider.get(),\n\t\t\tmigrations,\n\t\t\tcontentMigrationFactoryArgs: {\n\t\t\t\tapiToken: project.token,\n\t\t\t\tapiBaseUrl: project.endpoint,\n\t\t\t\tprojectName: project.name,\n\t\t\t},\n\t\t\tlog: message => console.log(message),\n\t\t\tforce,\n\t\t})\n\t\treturn true\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAUO,MAAM,yBAAyB;AAAA,EACrC,YACkB,sBACA,sBACA,iBACA,sBACA,kBACA,mBACA,uBAChB;AAPgB,SAAA,uBAAA;AACA,SAAA,uBAAA;AACA,SAAA,kBAAA;AACA,SAAA,uBAAA;AACA,SAAA,mBAAA;AACA,SAAA,oBAAA;AACA,SAAA,wBAAA;AAIlB,kBAAA,MAAA,WAAU,OAAO;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,MAMuB;AACjB,YAAA,UAAU,KAAK,gBAAgB,IAAI;AACzC,YAAM,KAAK,qBAAqB,IAAA,EAAM,cAAc,QAAQ,MAAM,IAAI;AAEtE,YAAM,SAAS,MAAM,KAAK,sBAAsB,wBAAwB,EAAE,OAAO;AACjF,YAAM,aAAa,QAChB,OAAO,oBAAoB,OAAO,CAAA,OAAM,GAAG,WAAW,uBAAuB,eAAe,KAAK,CAAC,IAClG,OAAO;AACN,UAAA,WAAW,WAAW,GAAG;AAC5B,gBAAQ,IAAI,0BAA0B;AAC/B,eAAA;AAAA,MAAA;AAER,cAAQ,IAAI,oCAAoC;AAChD,iBAAW,QAAQ,CAAM,OAAA,QAAQ,IAAI,GAAG,IAAI,CAAC;AACxB,2BAAA,QAAQ,IAAI,iBAAiB;AAElD,UAAI,OAAO,wBAAwB,aAAa,oBAAoB,UAAU,IAAI,qBAAqB;AAClG,YAAA,CAAC,QAAQ,MAAM,OAAO;AACnB,gBAAA;AAAA,QAAA;AAEJ,WAAA;AACF,gBAAM,EAAE,WAAW,MAAM,QAAQ;AAAA,YAChC,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,cACR,EAAE,OAAO,OAAO,OAAO,qBAAqB;AAAA,cAC5C,EAAE,OAAO,YAAY,OAAO,sBAAsB;AAAA,cAClD,EAAE,OAAO,MAAM,OAAO,QAAQ;AAAA,YAAA;AAAA,UAC/B,CACA;AACD,cAAI,WAAW,YAAY;AACpB,kBAAA,SAAS,MAAM,KAAK,qBAAqB,iBAAiB,WAAW,CAAC,EAAE,OAAO;AACrF,uBAAW,aAAa,YAAY;AACnC,oBAAM,mBAAmB,MAAM,UAAU,eAAe,WAAW;AAC/D,kBAAA,CAAC,kBAAkB,gBAAgB,GAAG;AACzC;AAAA,cAAA;AAGD,oBAAM,KAAK,iBAAiB,0BAA0B,QAAQ,kBAAkB;AAAA,gBAC/E,OAAO;AAAA,cAAA,CACP;AAAA,YAAA;AAAA,UACF,WACU,WAAW,OAAO;AAC5B;AAAA,UAAA,OACM;AACC,mBAAA;AAAA,UAAA;AAAA,QACR,SACQ;AAAA,MAAA;AAGJ,YAAA,KAAK,kBAAkB,kBAAkB;AAAA,QAC9C,QAAQ,KAAK,qBAAqB,IAAI;AAAA,QACtC;AAAA,QACA,6BAA6B;AAAA,UAC5B,UAAU,QAAQ;AAAA,UAClB,YAAY,QAAQ;AAAA,UACpB,aAAa,QAAQ;AAAA,QACtB;AAAA,QACA,KAAK,CAAA,YAAW,QAAQ,IAAI,OAAO;AAAA,QACnC;AAAA,MAAA,CACA;AACM,aAAA;AAAA,IAAA,CACR;AAAA,EAAA;AACD;"}
1
+ {"version":3,"file":"MigrationExecutionFacade.js","sources":["../../../../../../packages/cli/src/lib/migrations/MigrationExecutionFacade.ts"],"sourcesContent":["import prompts from 'prompts'\nimport { MigrationPrinter } from './MigrationPrinter'\nimport { isSchemaMigration, MigrationExecutor, MigrationToExecuteOkStatus, SchemaVersionBuilder } from '@contember/migrations-client'\nimport { MigrationsStatusFacade } from './MigrationsStatusFacade'\nimport { MigrationVersionHelper } from '@contember/engine-common'\nimport { RemoteProject } from '../project/RemoteProject'\nimport { SystemClientProvider } from '../SystemClientProvider'\nimport { TenantClientProvider } from '../TenantClientProvider'\nimport { RemoteProjectProvider } from '../project/RemoteProjectProvider'\n\nexport class MigrationExecutionFacade {\n\tconstructor(\n\t\tprivate readonly systemClientProvider: SystemClientProvider,\n\t\tprivate readonly tenantClientProvider: TenantClientProvider,\n\t\tprivate readonly projectProvider: RemoteProjectProvider,\n\t\tprivate readonly schemaVersionBuilder: SchemaVersionBuilder,\n\t\tprivate readonly migrationPrinter: MigrationPrinter,\n\t\tprivate readonly migrationExecutor: MigrationExecutor,\n\t\tprivate readonly migrationStatusFacade: MigrationsStatusFacade,\n\t) {\n\t}\n\n\texecute = async ({\n\t\trequireConfirmation,\n\t\tforce,\n\t\tuntil,\n\t\tadditionalMessage,\n\t}: {\n\t\trequireConfirmation: boolean | ((migrations: MigrationToExecuteOkStatus[]) => boolean)\n\t\tforce?: boolean\n\t\tuntil?: string\n\t\tadditionalMessage?: string\n\t}): Promise<boolean> => {\n\t\tconst project = this.projectProvider.get()\n\t\tawait this.tenantClientProvider.get().createProject(project.name, true)\n\n\t\tconst status = await this.migrationStatusFacade.resolveMigrationsStatus({ force })\n\t\tconst migrations = until\n\t\t\t? status.migrationsToExecute.filter(it => it.version <= MigrationVersionHelper.extractVersion(until))\n\t\t\t: status.migrationsToExecute\n\t\tif (migrations.length === 0) {\n\t\t\tconsole.log('No migrations to execute')\n\t\t\treturn true\n\t\t}\n\t\tconsole.log('Will execute following migrations:')\n\t\tmigrations.forEach(it => console.log(it.name))\n\t\tadditionalMessage && console.log(additionalMessage)\n\n\t\tif (typeof requireConfirmation === 'function' ? requireConfirmation(migrations) : requireConfirmation) {\n\t\t\tif (!process.stdin.isTTY) {\n\t\t\t\tthrow 'TTY not available. Pass --yes option to confirm execution.'\n\t\t\t}\n\t\t\tdo {\n\t\t\t\tconst { action } = await prompts({\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\tname: 'action',\n\t\t\t\t\tmessage: 'Do you want to continue?',\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{ value: 'yes', title: 'Execute migrations' },\n\t\t\t\t\t\t{ value: 'describe', title: 'Describe migrations' },\n\t\t\t\t\t\t{ value: 'no', title: 'Abort' },\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t\tif (action === 'describe') {\n\t\t\t\t\tconst schema = await this.schemaVersionBuilder.buildSchemaUntil(migrations[0].version)\n\t\t\t\t\tfor (const migration of migrations) {\n\t\t\t\t\t\tconst migrationContent = await migration.localMigration.getContent()\n\t\t\t\t\t\tif (!isSchemaMigration(migrationContent)) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tawait this.migrationPrinter.printMigrationDescription(schema, migrationContent, {\n\t\t\t\t\t\t\tnoSql: true,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} else if (action === 'yes') {\n\t\t\t\t\tbreak\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} while (true)\n\t\t}\n\n\t\tawait this.migrationExecutor.executeMigrations({\n\t\t\tclient: this.systemClientProvider.get(),\n\t\t\tmigrations,\n\t\t\tcontentMigrationFactoryArgs: {\n\t\t\t\tapiToken: project.token,\n\t\t\t\tapiBaseUrl: project.endpoint,\n\t\t\t\tprojectName: project.name,\n\t\t\t\tschemaVersionBuilder: this.schemaVersionBuilder,\n\t\t\t},\n\t\t\tlog: message => console.log(message),\n\t\t\tforce,\n\t\t})\n\t\treturn true\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAUO,MAAM,yBAAyB;AAAA,EACrC,YACkB,sBACA,sBACA,iBACA,sBACA,kBACA,mBACA,uBAChB;AAPgB,SAAA,uBAAA;AACA,SAAA,uBAAA;AACA,SAAA,kBAAA;AACA,SAAA,uBAAA;AACA,SAAA,mBAAA;AACA,SAAA,oBAAA;AACA,SAAA,wBAAA;AAIlB,kBAAA,MAAA,WAAU,OAAO;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,MAMuB;AACjB,YAAA,UAAU,KAAK,gBAAgB,IAAI;AACzC,YAAM,KAAK,qBAAqB,IAAA,EAAM,cAAc,QAAQ,MAAM,IAAI;AAEtE,YAAM,SAAS,MAAM,KAAK,sBAAsB,wBAAwB,EAAE,OAAO;AACjF,YAAM,aAAa,QAChB,OAAO,oBAAoB,OAAO,CAAA,OAAM,GAAG,WAAW,uBAAuB,eAAe,KAAK,CAAC,IAClG,OAAO;AACN,UAAA,WAAW,WAAW,GAAG;AAC5B,gBAAQ,IAAI,0BAA0B;AAC/B,eAAA;AAAA,MAAA;AAER,cAAQ,IAAI,oCAAoC;AAChD,iBAAW,QAAQ,CAAM,OAAA,QAAQ,IAAI,GAAG,IAAI,CAAC;AACxB,2BAAA,QAAQ,IAAI,iBAAiB;AAElD,UAAI,OAAO,wBAAwB,aAAa,oBAAoB,UAAU,IAAI,qBAAqB;AAClG,YAAA,CAAC,QAAQ,MAAM,OAAO;AACnB,gBAAA;AAAA,QAAA;AAEJ,WAAA;AACF,gBAAM,EAAE,WAAW,MAAM,QAAQ;AAAA,YAChC,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,cACR,EAAE,OAAO,OAAO,OAAO,qBAAqB;AAAA,cAC5C,EAAE,OAAO,YAAY,OAAO,sBAAsB;AAAA,cAClD,EAAE,OAAO,MAAM,OAAO,QAAQ;AAAA,YAAA;AAAA,UAC/B,CACA;AACD,cAAI,WAAW,YAAY;AACpB,kBAAA,SAAS,MAAM,KAAK,qBAAqB,iBAAiB,WAAW,CAAC,EAAE,OAAO;AACrF,uBAAW,aAAa,YAAY;AACnC,oBAAM,mBAAmB,MAAM,UAAU,eAAe,WAAW;AAC/D,kBAAA,CAAC,kBAAkB,gBAAgB,GAAG;AACzC;AAAA,cAAA;AAGD,oBAAM,KAAK,iBAAiB,0BAA0B,QAAQ,kBAAkB;AAAA,gBAC/E,OAAO;AAAA,cAAA,CACP;AAAA,YAAA;AAAA,UACF,WACU,WAAW,OAAO;AAC5B;AAAA,UAAA,OACM;AACC,mBAAA;AAAA,UAAA;AAAA,QACR,SACQ;AAAA,MAAA;AAGJ,YAAA,KAAK,kBAAkB,kBAAkB;AAAA,QAC9C,QAAQ,KAAK,qBAAqB,IAAI;AAAA,QACtC;AAAA,QACA,6BAA6B;AAAA,UAC5B,UAAU,QAAQ;AAAA,UAClB,YAAY,QAAQ;AAAA,UACpB,aAAa,QAAQ;AAAA,UACrB,sBAAsB,KAAK;AAAA,QAC5B;AAAA,QACA,KAAK,CAAA,YAAW,QAAQ,IAAI,OAAO;AAAA,QACnC;AAAA,MAAA,CACA;AACM,aAAA;AAAA,IAAA,CACR;AAAA,EAAA;AACD;"}
@@ -41,7 +41,7 @@ class MigrationPrinter {
41
41
  });
42
42
  });
43
43
  __publicField(this, "printStatusTable", (migrations) => {
44
- const table = chalkTable(
44
+ return chalkTable(
45
45
  {
46
46
  columns: ["status", "migration", "info"]
47
47
  },
@@ -69,12 +69,17 @@ class MigrationPrinter {
69
69
  };
70
70
  case migrationsClient.MigrationState.TO_EXECUTE_ERROR:
71
71
  return { status: chalk.bgRedBright.white("ERROR"), migration: it.name, info: it.errorMessage };
72
+ case migrationsClient.MigrationState.SKIP_EMPTY:
73
+ return {
74
+ status: chalk.bgYellow.white("Skip"),
75
+ migration: it.name,
76
+ info: `Skipped because empty`
77
+ };
72
78
  default:
73
79
  assertNever.assertNever();
74
80
  }
75
81
  })
76
82
  );
77
- console.log(table);
78
83
  });
79
84
  }
80
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationPrinter.cjs","sources":["../../../../../../packages/cli/src/lib/migrations/MigrationPrinter.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"../../../types/chalk-table/index.d.ts\" />\n\nimport { Schema } from '@contember/schema'\nimport chalk from 'chalk'\nimport { AnyMigrationStatus, Migration, MigrationDescriber, MigrationState } from '@contember/migrations-client'\nimport { emptyDatabaseMetadata } from '@contember/database'\nimport chalkTable from 'chalk-table'\nimport { assertNever } from '../assertNever'\n\nexport class MigrationPrinter {\n\tconstructor(\n\t\tprivate readonly migrationsDescriber: MigrationDescriber,\n\t) {\n\t}\n\n\tprintMigrationDescription = (\n\t\tschema: Schema,\n\t\tmigration: Migration,\n\t\toptions: { sqlOnly?: boolean; noSql?: boolean },\n\t) => {\n\t\tconst description = this.migrationsDescriber.describeModifications(schema, migration)\n\t\tdescription.forEach(({ modification, getSql, description }) => {\n\t\t\tconst sql = getSql({\n\t\t\t\tsystemSchema: 'system',\n\t\t\t\tdatabaseMetadata: emptyDatabaseMetadata,\n\t\t\t\tinvalidateDatabaseMetadata: () => null,\n\t\t\t})\n\t\t\tif (options.sqlOnly) {\n\t\t\t\tif (sql.trim()) {\n\t\t\t\t\tconsole.log(sql)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst color = description.isDestructive ? chalk.red : chalk.blue\n\t\t\t\tconsole.group(color(`${description.message} [${modification.modification}]`))\n\t\t\t\tif (description.failureWarning) {\n\t\t\t\t\tconsole.log(chalk.bgWhite(chalk.redBright(description.failureWarning)))\n\t\t\t\t}\n\n\t\t\t\tif (!options.noSql) {\n\t\t\t\t\tif (sql.trim()) {\n\t\t\t\t\t\tconsole.log(sql)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log('No sql to execute')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconsole.groupEnd()\n\t\t\t}\n\t\t})\n\t}\n\n\tprintStatusTable = (migrations: AnyMigrationStatus[]) => {\n\t\tconst table = chalkTable(\n\t\t\t{\n\t\t\t\tcolumns: ['status', 'migration', 'info'],\n\t\t\t},\n\t\t\tmigrations.map(it => {\n\t\t\t\tswitch (it.state) {\n\t\t\t\t\tcase MigrationState.EXECUTED_ERROR:\n\t\t\t\t\t\treturn { status: chalk.bgRedBright.white('ERROR'), migration: it.name, info: it.errorMessage }\n\t\t\t\t\tcase MigrationState.EXECUTED_OK:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgGreen.blackBright('Executed'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: `Executed at ${it.executedMigration.executedAt.toISOString()}`,\n\t\t\t\t\t\t}\n\t\t\t\t\tcase MigrationState.EXECUTED_MISSING:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgRedBright.white('ERROR'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: it.errorMessage,\n\t\t\t\t\t\t}\n\t\t\t\t\tcase MigrationState.TO_EXECUTE_OK:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgBlueBright.white('Not executed'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: 'Will be executed during next deploy',\n\t\t\t\t\t\t}\n\t\t\t\t\tcase MigrationState.TO_EXECUTE_ERROR:\n\t\t\t\t\t\treturn { status: chalk.bgRedBright.white('ERROR'), migration: it.name, info: it.errorMessage }\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tassertNever(it)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t\tconsole.log(table)\n\t}\n\n}\n"],"names":["description","emptyDatabaseMetadata","MigrationState","assertNever"],"mappings":";;;;;;;;;;AAUO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,qBAChB;AADgB,SAAA,sBAAA;AAIU,kBAAA,MAAA,6BAAA,CAC3B,QACA,WACA,YACI;AACJ,YAAM,cAAc,KAAK,oBAAoB,sBAAsB,QAAQ,SAAS;AACpF,kBAAY,QAAQ,CAAC,EAAE,cAAc,QAAQ,aAAAA,mBAAkB;AAC9D,cAAM,MAAM,OAAO;AAAA,UAClB,cAAc;AAAA,UACd,kBAAkBC,SAAA;AAAA,UAClB,4BAA4B,MAAM;AAAA,QAAA,CAClC;AACD,YAAI,QAAQ,SAAS;AAChB,cAAA,IAAI,QAAQ;AACf,oBAAQ,IAAI,GAAG;AAAA,UAAA;AAAA,QAChB,OACM;AACN,gBAAM,QAAQD,aAAY,gBAAgB,MAAM,MAAM,MAAM;AACpD,kBAAA,MAAM,MAAM,GAAGA,aAAY,OAAO,KAAK,aAAa,YAAY,GAAG,CAAC;AAC5E,cAAIA,aAAY,gBAAgB;AACvB,oBAAA,IAAI,MAAM,QAAQ,MAAM,UAAUA,aAAY,cAAc,CAAC,CAAC;AAAA,UAAA;AAGnE,cAAA,CAAC,QAAQ,OAAO;AACf,gBAAA,IAAI,QAAQ;AACf,sBAAQ,IAAI,GAAG;AAAA,YAAA,OACT;AACN,sBAAQ,IAAI,mBAAmB;AAAA,YAAA;AAAA,UAChC;AAED,kBAAQ,SAAS;AAAA,QAAA;AAAA,MAClB,CACA;AAAA,IAAA,CACF;AAEA,kBAAA,MAAA,oBAAmB,CAAC,eAAqC;AACxD,YAAM,QAAQ;AAAA,QACb;AAAA,UACC,SAAS,CAAC,UAAU,aAAa,MAAM;AAAA,QACxC;AAAA,QACA,WAAW,IAAI,CAAM,OAAA;AACpB,kBAAQ,GAAG,OAAO;AAAA,YACjB,KAAKE,iBAAe,eAAA;AACnB,qBAAO,EAAE,QAAQ,MAAM,YAAY,MAAM,OAAO,GAAG,WAAW,GAAG,MAAM,MAAM,GAAG,aAAa;AAAA,YAC9F,KAAKA,iBAAe,eAAA;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,QAAQ,YAAY,UAAU;AAAA,gBAC5C,WAAW,GAAG;AAAA,gBACd,MAAM,eAAe,GAAG,kBAAkB,WAAW,aAAa;AAAA,cACnE;AAAA,YACD,KAAKA,iBAAe,eAAA;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,YAAY,MAAM,OAAO;AAAA,gBACvC,WAAW,GAAG;AAAA,gBACd,MAAM,GAAG;AAAA,cACV;AAAA,YACD,KAAKA,iBAAe,eAAA;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,aAAa,MAAM,cAAc;AAAA,gBAC/C,WAAW,GAAG;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,YACD,KAAKA,iBAAe,eAAA;AACnB,qBAAO,EAAE,QAAQ,MAAM,YAAY,MAAM,OAAO,GAAG,WAAW,GAAG,MAAM,MAAM,GAAG,aAAa;AAAA,YAC9F;AACCC,0BAAAA,YAAc;AAAA,UAAA;AAAA,QAEhB,CAAA;AAAA,MACF;AACA,cAAQ,IAAI,KAAK;AAAA,IAAA,CAClB;AAAA,EAAA;AAED;;"}
1
+ {"version":3,"file":"MigrationPrinter.cjs","sources":["../../../../../../packages/cli/src/lib/migrations/MigrationPrinter.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"../../../types/chalk-table/index.d.ts\" />\n\nimport { Schema } from '@contember/schema'\nimport chalk from 'chalk'\nimport { AnyMigrationStatus, Migration, MigrationDescriber, MigrationState } from '@contember/migrations-client'\nimport { emptyDatabaseMetadata } from '@contember/database'\nimport chalkTable from 'chalk-table'\nimport { assertNever } from '../assertNever'\n\nexport class MigrationPrinter {\n\tconstructor(\n\t\tprivate readonly migrationsDescriber: MigrationDescriber,\n\t) {\n\t}\n\n\tprintMigrationDescription = (\n\t\tschema: Schema,\n\t\tmigration: Migration,\n\t\toptions: { sqlOnly?: boolean; noSql?: boolean },\n\t) => {\n\t\tconst description = this.migrationsDescriber.describeModifications(schema, migration)\n\t\tdescription.forEach(({ modification, getSql, description }) => {\n\t\t\tconst sql = getSql({\n\t\t\t\tsystemSchema: 'system',\n\t\t\t\tdatabaseMetadata: emptyDatabaseMetadata,\n\t\t\t\tinvalidateDatabaseMetadata: () => null,\n\t\t\t})\n\t\t\tif (options.sqlOnly) {\n\t\t\t\tif (sql.trim()) {\n\t\t\t\t\tconsole.log(sql)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst color = description.isDestructive ? chalk.red : chalk.blue\n\t\t\t\tconsole.group(color(`${description.message} [${modification.modification}]`))\n\t\t\t\tif (description.failureWarning) {\n\t\t\t\t\tconsole.log(chalk.bgWhite(chalk.redBright(description.failureWarning)))\n\t\t\t\t}\n\n\t\t\t\tif (!options.noSql) {\n\t\t\t\t\tif (sql.trim()) {\n\t\t\t\t\t\tconsole.log(sql)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log('No sql to execute')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconsole.groupEnd()\n\t\t\t}\n\t\t})\n\t}\n\n\tprintStatusTable = (migrations: AnyMigrationStatus[]) => {\n\t\treturn chalkTable(\n\t\t\t{\n\t\t\t\tcolumns: ['status', 'migration', 'info'],\n\t\t\t},\n\t\t\tmigrations.map(it => {\n\t\t\t\tswitch (it.state) {\n\t\t\t\t\tcase MigrationState.EXECUTED_ERROR:\n\t\t\t\t\t\treturn { status: chalk.bgRedBright.white('ERROR'), migration: it.name, info: it.errorMessage }\n\t\t\t\t\tcase MigrationState.EXECUTED_OK:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgGreen.blackBright('Executed'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: `Executed at ${it.executedMigration.executedAt.toISOString()}`,\n\t\t\t\t\t\t}\n\t\t\t\t\tcase MigrationState.EXECUTED_MISSING:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgRedBright.white('ERROR'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: it.errorMessage,\n\t\t\t\t\t\t}\n\t\t\t\t\tcase MigrationState.TO_EXECUTE_OK:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgBlueBright.white('Not executed'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: 'Will be executed during next deploy',\n\t\t\t\t\t\t}\n\t\t\t\t\tcase MigrationState.TO_EXECUTE_ERROR:\n\t\t\t\t\t\treturn { status: chalk.bgRedBright.white('ERROR'), migration: it.name, info: it.errorMessage }\n\t\t\t\t\tcase MigrationState.SKIP_EMPTY:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgYellow.white('Skip'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: `Skipped because empty`,\n\t\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tassertNever(it)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n}\n"],"names":["description","emptyDatabaseMetadata","MigrationState","assertNever"],"mappings":";;;;;;;;;;AAUO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,qBAChB;AADgB,SAAA,sBAAA;AAIU,kBAAA,MAAA,6BAAA,CAC3B,QACA,WACA,YACI;AACJ,YAAM,cAAc,KAAK,oBAAoB,sBAAsB,QAAQ,SAAS;AACpF,kBAAY,QAAQ,CAAC,EAAE,cAAc,QAAQ,aAAAA,mBAAkB;AAC9D,cAAM,MAAM,OAAO;AAAA,UAClB,cAAc;AAAA,UACd,kBAAkBC,SAAA;AAAA,UAClB,4BAA4B,MAAM;AAAA,QAAA,CAClC;AACD,YAAI,QAAQ,SAAS;AAChB,cAAA,IAAI,QAAQ;AACf,oBAAQ,IAAI,GAAG;AAAA,UAAA;AAAA,QAChB,OACM;AACN,gBAAM,QAAQD,aAAY,gBAAgB,MAAM,MAAM,MAAM;AACpD,kBAAA,MAAM,MAAM,GAAGA,aAAY,OAAO,KAAK,aAAa,YAAY,GAAG,CAAC;AAC5E,cAAIA,aAAY,gBAAgB;AACvB,oBAAA,IAAI,MAAM,QAAQ,MAAM,UAAUA,aAAY,cAAc,CAAC,CAAC;AAAA,UAAA;AAGnE,cAAA,CAAC,QAAQ,OAAO;AACf,gBAAA,IAAI,QAAQ;AACf,sBAAQ,IAAI,GAAG;AAAA,YAAA,OACT;AACN,sBAAQ,IAAI,mBAAmB;AAAA,YAAA;AAAA,UAChC;AAED,kBAAQ,SAAS;AAAA,QAAA;AAAA,MAClB,CACA;AAAA,IAAA,CACF;AAEA,kBAAA,MAAA,oBAAmB,CAAC,eAAqC;AACjD,aAAA;AAAA,QACN;AAAA,UACC,SAAS,CAAC,UAAU,aAAa,MAAM;AAAA,QACxC;AAAA,QACA,WAAW,IAAI,CAAM,OAAA;AACpB,kBAAQ,GAAG,OAAO;AAAA,YACjB,KAAKE,iBAAe,eAAA;AACnB,qBAAO,EAAE,QAAQ,MAAM,YAAY,MAAM,OAAO,GAAG,WAAW,GAAG,MAAM,MAAM,GAAG,aAAa;AAAA,YAC9F,KAAKA,iBAAe,eAAA;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,QAAQ,YAAY,UAAU;AAAA,gBAC5C,WAAW,GAAG;AAAA,gBACd,MAAM,eAAe,GAAG,kBAAkB,WAAW,aAAa;AAAA,cACnE;AAAA,YACD,KAAKA,iBAAe,eAAA;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,YAAY,MAAM,OAAO;AAAA,gBACvC,WAAW,GAAG;AAAA,gBACd,MAAM,GAAG;AAAA,cACV;AAAA,YACD,KAAKA,iBAAe,eAAA;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,aAAa,MAAM,cAAc;AAAA,gBAC/C,WAAW,GAAG;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,YACD,KAAKA,iBAAe,eAAA;AACnB,qBAAO,EAAE,QAAQ,MAAM,YAAY,MAAM,OAAO,GAAG,WAAW,GAAG,MAAM,MAAM,GAAG,aAAa;AAAA,YAC9F,KAAKA,iBAAe,eAAA;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,SAAS,MAAM,MAAM;AAAA,gBACnC,WAAW,GAAG;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,YACD;AACCC,0BAAAA,YAAc;AAAA,UAAA;AAAA,QAEhB,CAAA;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EAAA;AAED;;"}
@@ -39,7 +39,7 @@ class MigrationPrinter {
39
39
  });
40
40
  });
41
41
  __publicField(this, "printStatusTable", (migrations) => {
42
- const table = chalkTable(
42
+ return chalkTable(
43
43
  {
44
44
  columns: ["status", "migration", "info"]
45
45
  },
@@ -67,12 +67,17 @@ class MigrationPrinter {
67
67
  };
68
68
  case MigrationState.TO_EXECUTE_ERROR:
69
69
  return { status: chalk.bgRedBright.white("ERROR"), migration: it.name, info: it.errorMessage };
70
+ case MigrationState.SKIP_EMPTY:
71
+ return {
72
+ status: chalk.bgYellow.white("Skip"),
73
+ migration: it.name,
74
+ info: `Skipped because empty`
75
+ };
70
76
  default:
71
77
  assertNever();
72
78
  }
73
79
  })
74
80
  );
75
- console.log(table);
76
81
  });
77
82
  }
78
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationPrinter.js","sources":["../../../../../../packages/cli/src/lib/migrations/MigrationPrinter.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"../../../types/chalk-table/index.d.ts\" />\n\nimport { Schema } from '@contember/schema'\nimport chalk from 'chalk'\nimport { AnyMigrationStatus, Migration, MigrationDescriber, MigrationState } from '@contember/migrations-client'\nimport { emptyDatabaseMetadata } from '@contember/database'\nimport chalkTable from 'chalk-table'\nimport { assertNever } from '../assertNever'\n\nexport class MigrationPrinter {\n\tconstructor(\n\t\tprivate readonly migrationsDescriber: MigrationDescriber,\n\t) {\n\t}\n\n\tprintMigrationDescription = (\n\t\tschema: Schema,\n\t\tmigration: Migration,\n\t\toptions: { sqlOnly?: boolean; noSql?: boolean },\n\t) => {\n\t\tconst description = this.migrationsDescriber.describeModifications(schema, migration)\n\t\tdescription.forEach(({ modification, getSql, description }) => {\n\t\t\tconst sql = getSql({\n\t\t\t\tsystemSchema: 'system',\n\t\t\t\tdatabaseMetadata: emptyDatabaseMetadata,\n\t\t\t\tinvalidateDatabaseMetadata: () => null,\n\t\t\t})\n\t\t\tif (options.sqlOnly) {\n\t\t\t\tif (sql.trim()) {\n\t\t\t\t\tconsole.log(sql)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst color = description.isDestructive ? chalk.red : chalk.blue\n\t\t\t\tconsole.group(color(`${description.message} [${modification.modification}]`))\n\t\t\t\tif (description.failureWarning) {\n\t\t\t\t\tconsole.log(chalk.bgWhite(chalk.redBright(description.failureWarning)))\n\t\t\t\t}\n\n\t\t\t\tif (!options.noSql) {\n\t\t\t\t\tif (sql.trim()) {\n\t\t\t\t\t\tconsole.log(sql)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log('No sql to execute')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconsole.groupEnd()\n\t\t\t}\n\t\t})\n\t}\n\n\tprintStatusTable = (migrations: AnyMigrationStatus[]) => {\n\t\tconst table = chalkTable(\n\t\t\t{\n\t\t\t\tcolumns: ['status', 'migration', 'info'],\n\t\t\t},\n\t\t\tmigrations.map(it => {\n\t\t\t\tswitch (it.state) {\n\t\t\t\t\tcase MigrationState.EXECUTED_ERROR:\n\t\t\t\t\t\treturn { status: chalk.bgRedBright.white('ERROR'), migration: it.name, info: it.errorMessage }\n\t\t\t\t\tcase MigrationState.EXECUTED_OK:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgGreen.blackBright('Executed'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: `Executed at ${it.executedMigration.executedAt.toISOString()}`,\n\t\t\t\t\t\t}\n\t\t\t\t\tcase MigrationState.EXECUTED_MISSING:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgRedBright.white('ERROR'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: it.errorMessage,\n\t\t\t\t\t\t}\n\t\t\t\t\tcase MigrationState.TO_EXECUTE_OK:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgBlueBright.white('Not executed'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: 'Will be executed during next deploy',\n\t\t\t\t\t\t}\n\t\t\t\t\tcase MigrationState.TO_EXECUTE_ERROR:\n\t\t\t\t\t\treturn { status: chalk.bgRedBright.white('ERROR'), migration: it.name, info: it.errorMessage }\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tassertNever(it)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t\tconsole.log(table)\n\t}\n\n}\n"],"names":["description"],"mappings":";;;;;;;;AAUO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,qBAChB;AADgB,SAAA,sBAAA;AAIU,kBAAA,MAAA,6BAAA,CAC3B,QACA,WACA,YACI;AACJ,YAAM,cAAc,KAAK,oBAAoB,sBAAsB,QAAQ,SAAS;AACpF,kBAAY,QAAQ,CAAC,EAAE,cAAc,QAAQ,aAAAA,mBAAkB;AAC9D,cAAM,MAAM,OAAO;AAAA,UAClB,cAAc;AAAA,UACd,kBAAkB;AAAA,UAClB,4BAA4B,MAAM;AAAA,QAAA,CAClC;AACD,YAAI,QAAQ,SAAS;AAChB,cAAA,IAAI,QAAQ;AACf,oBAAQ,IAAI,GAAG;AAAA,UAAA;AAAA,QAChB,OACM;AACN,gBAAM,QAAQA,aAAY,gBAAgB,MAAM,MAAM,MAAM;AACpD,kBAAA,MAAM,MAAM,GAAGA,aAAY,OAAO,KAAK,aAAa,YAAY,GAAG,CAAC;AAC5E,cAAIA,aAAY,gBAAgB;AACvB,oBAAA,IAAI,MAAM,QAAQ,MAAM,UAAUA,aAAY,cAAc,CAAC,CAAC;AAAA,UAAA;AAGnE,cAAA,CAAC,QAAQ,OAAO;AACf,gBAAA,IAAI,QAAQ;AACf,sBAAQ,IAAI,GAAG;AAAA,YAAA,OACT;AACN,sBAAQ,IAAI,mBAAmB;AAAA,YAAA;AAAA,UAChC;AAED,kBAAQ,SAAS;AAAA,QAAA;AAAA,MAClB,CACA;AAAA,IAAA,CACF;AAEA,kBAAA,MAAA,oBAAmB,CAAC,eAAqC;AACxD,YAAM,QAAQ;AAAA,QACb;AAAA,UACC,SAAS,CAAC,UAAU,aAAa,MAAM;AAAA,QACxC;AAAA,QACA,WAAW,IAAI,CAAM,OAAA;AACpB,kBAAQ,GAAG,OAAO;AAAA,YACjB,KAAK,eAAe;AACnB,qBAAO,EAAE,QAAQ,MAAM,YAAY,MAAM,OAAO,GAAG,WAAW,GAAG,MAAM,MAAM,GAAG,aAAa;AAAA,YAC9F,KAAK,eAAe;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,QAAQ,YAAY,UAAU;AAAA,gBAC5C,WAAW,GAAG;AAAA,gBACd,MAAM,eAAe,GAAG,kBAAkB,WAAW,aAAa;AAAA,cACnE;AAAA,YACD,KAAK,eAAe;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,YAAY,MAAM,OAAO;AAAA,gBACvC,WAAW,GAAG;AAAA,gBACd,MAAM,GAAG;AAAA,cACV;AAAA,YACD,KAAK,eAAe;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,aAAa,MAAM,cAAc;AAAA,gBAC/C,WAAW,GAAG;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,YACD,KAAK,eAAe;AACnB,qBAAO,EAAE,QAAQ,MAAM,YAAY,MAAM,OAAO,GAAG,WAAW,GAAG,MAAM,MAAM,GAAG,aAAa;AAAA,YAC9F;AACC,0BAAc;AAAA,UAAA;AAAA,QAEhB,CAAA;AAAA,MACF;AACA,cAAQ,IAAI,KAAK;AAAA,IAAA,CAClB;AAAA,EAAA;AAED;"}
1
+ {"version":3,"file":"MigrationPrinter.js","sources":["../../../../../../packages/cli/src/lib/migrations/MigrationPrinter.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"../../../types/chalk-table/index.d.ts\" />\n\nimport { Schema } from '@contember/schema'\nimport chalk from 'chalk'\nimport { AnyMigrationStatus, Migration, MigrationDescriber, MigrationState } from '@contember/migrations-client'\nimport { emptyDatabaseMetadata } from '@contember/database'\nimport chalkTable from 'chalk-table'\nimport { assertNever } from '../assertNever'\n\nexport class MigrationPrinter {\n\tconstructor(\n\t\tprivate readonly migrationsDescriber: MigrationDescriber,\n\t) {\n\t}\n\n\tprintMigrationDescription = (\n\t\tschema: Schema,\n\t\tmigration: Migration,\n\t\toptions: { sqlOnly?: boolean; noSql?: boolean },\n\t) => {\n\t\tconst description = this.migrationsDescriber.describeModifications(schema, migration)\n\t\tdescription.forEach(({ modification, getSql, description }) => {\n\t\t\tconst sql = getSql({\n\t\t\t\tsystemSchema: 'system',\n\t\t\t\tdatabaseMetadata: emptyDatabaseMetadata,\n\t\t\t\tinvalidateDatabaseMetadata: () => null,\n\t\t\t})\n\t\t\tif (options.sqlOnly) {\n\t\t\t\tif (sql.trim()) {\n\t\t\t\t\tconsole.log(sql)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst color = description.isDestructive ? chalk.red : chalk.blue\n\t\t\t\tconsole.group(color(`${description.message} [${modification.modification}]`))\n\t\t\t\tif (description.failureWarning) {\n\t\t\t\t\tconsole.log(chalk.bgWhite(chalk.redBright(description.failureWarning)))\n\t\t\t\t}\n\n\t\t\t\tif (!options.noSql) {\n\t\t\t\t\tif (sql.trim()) {\n\t\t\t\t\t\tconsole.log(sql)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log('No sql to execute')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconsole.groupEnd()\n\t\t\t}\n\t\t})\n\t}\n\n\tprintStatusTable = (migrations: AnyMigrationStatus[]) => {\n\t\treturn chalkTable(\n\t\t\t{\n\t\t\t\tcolumns: ['status', 'migration', 'info'],\n\t\t\t},\n\t\t\tmigrations.map(it => {\n\t\t\t\tswitch (it.state) {\n\t\t\t\t\tcase MigrationState.EXECUTED_ERROR:\n\t\t\t\t\t\treturn { status: chalk.bgRedBright.white('ERROR'), migration: it.name, info: it.errorMessage }\n\t\t\t\t\tcase MigrationState.EXECUTED_OK:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgGreen.blackBright('Executed'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: `Executed at ${it.executedMigration.executedAt.toISOString()}`,\n\t\t\t\t\t\t}\n\t\t\t\t\tcase MigrationState.EXECUTED_MISSING:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgRedBright.white('ERROR'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: it.errorMessage,\n\t\t\t\t\t\t}\n\t\t\t\t\tcase MigrationState.TO_EXECUTE_OK:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgBlueBright.white('Not executed'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: 'Will be executed during next deploy',\n\t\t\t\t\t\t}\n\t\t\t\t\tcase MigrationState.TO_EXECUTE_ERROR:\n\t\t\t\t\t\treturn { status: chalk.bgRedBright.white('ERROR'), migration: it.name, info: it.errorMessage }\n\t\t\t\t\tcase MigrationState.SKIP_EMPTY:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: chalk.bgYellow.white('Skip'),\n\t\t\t\t\t\t\tmigration: it.name,\n\t\t\t\t\t\t\tinfo: `Skipped because empty`,\n\t\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tassertNever(it)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n}\n"],"names":["description"],"mappings":";;;;;;;;AAUO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,qBAChB;AADgB,SAAA,sBAAA;AAIU,kBAAA,MAAA,6BAAA,CAC3B,QACA,WACA,YACI;AACJ,YAAM,cAAc,KAAK,oBAAoB,sBAAsB,QAAQ,SAAS;AACpF,kBAAY,QAAQ,CAAC,EAAE,cAAc,QAAQ,aAAAA,mBAAkB;AAC9D,cAAM,MAAM,OAAO;AAAA,UAClB,cAAc;AAAA,UACd,kBAAkB;AAAA,UAClB,4BAA4B,MAAM;AAAA,QAAA,CAClC;AACD,YAAI,QAAQ,SAAS;AAChB,cAAA,IAAI,QAAQ;AACf,oBAAQ,IAAI,GAAG;AAAA,UAAA;AAAA,QAChB,OACM;AACN,gBAAM,QAAQA,aAAY,gBAAgB,MAAM,MAAM,MAAM;AACpD,kBAAA,MAAM,MAAM,GAAGA,aAAY,OAAO,KAAK,aAAa,YAAY,GAAG,CAAC;AAC5E,cAAIA,aAAY,gBAAgB;AACvB,oBAAA,IAAI,MAAM,QAAQ,MAAM,UAAUA,aAAY,cAAc,CAAC,CAAC;AAAA,UAAA;AAGnE,cAAA,CAAC,QAAQ,OAAO;AACf,gBAAA,IAAI,QAAQ;AACf,sBAAQ,IAAI,GAAG;AAAA,YAAA,OACT;AACN,sBAAQ,IAAI,mBAAmB;AAAA,YAAA;AAAA,UAChC;AAED,kBAAQ,SAAS;AAAA,QAAA;AAAA,MAClB,CACA;AAAA,IAAA,CACF;AAEA,kBAAA,MAAA,oBAAmB,CAAC,eAAqC;AACjD,aAAA;AAAA,QACN;AAAA,UACC,SAAS,CAAC,UAAU,aAAa,MAAM;AAAA,QACxC;AAAA,QACA,WAAW,IAAI,CAAM,OAAA;AACpB,kBAAQ,GAAG,OAAO;AAAA,YACjB,KAAK,eAAe;AACnB,qBAAO,EAAE,QAAQ,MAAM,YAAY,MAAM,OAAO,GAAG,WAAW,GAAG,MAAM,MAAM,GAAG,aAAa;AAAA,YAC9F,KAAK,eAAe;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,QAAQ,YAAY,UAAU;AAAA,gBAC5C,WAAW,GAAG;AAAA,gBACd,MAAM,eAAe,GAAG,kBAAkB,WAAW,aAAa;AAAA,cACnE;AAAA,YACD,KAAK,eAAe;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,YAAY,MAAM,OAAO;AAAA,gBACvC,WAAW,GAAG;AAAA,gBACd,MAAM,GAAG;AAAA,cACV;AAAA,YACD,KAAK,eAAe;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,aAAa,MAAM,cAAc;AAAA,gBAC/C,WAAW,GAAG;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,YACD,KAAK,eAAe;AACnB,qBAAO,EAAE,QAAQ,MAAM,YAAY,MAAM,OAAO,GAAG,WAAW,GAAG,MAAM,MAAM,GAAG,aAAa;AAAA,YAC9F,KAAK,eAAe;AACZ,qBAAA;AAAA,gBACN,QAAQ,MAAM,SAAS,MAAM,MAAM;AAAA,gBACnC,WAAW,GAAG;AAAA,gBACd,MAAM;AAAA,cACP;AAAA,YACD;AACC,0BAAc;AAAA,UAAA;AAAA,QAEhB,CAAA;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EAAA;AAED;"}
@@ -1,20 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const migrations = require("./migrations.cjs");
4
3
  var __defProp = Object.defineProperty;
5
4
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
5
  var __publicField = (obj, key, value) => __defNormalProp(obj, key + "", value);
7
6
  class MigrationsStatusFacade {
8
- constructor(systemClientProvider, migrationsResolver, migrationsStatusResolver) {
7
+ constructor(systemClientProvider, migrationsResolver, migrationsStatusResolver, migrationPrinter) {
9
8
  this.systemClientProvider = systemClientProvider;
10
9
  this.migrationsResolver = migrationsResolver;
11
10
  this.migrationsStatusResolver = migrationsStatusResolver;
11
+ this.migrationPrinter = migrationPrinter;
12
12
  __publicField(this, "resolveMigrationsStatus", async ({ force, allowError }) => {
13
13
  const executedMigrations = await this.systemClientProvider.get().listExecutedMigrations();
14
14
  const localMigrations = await this.migrationsResolver.getMigrationFiles();
15
15
  const status = await this.migrationsStatusResolver.getMigrationsStatus(executedMigrations, localMigrations, force);
16
16
  if (status.errorMigrations.length > 0 && !allowError) {
17
- console.error(migrations.createMigrationStatusTable(status.errorMigrations));
17
+ console.error(this.migrationPrinter.printStatusTable(status.errorMigrations));
18
18
  if (!force) {
19
19
  throw `Cannot execute migrations`;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationsStatusFacade.cjs","sources":["../../../../../../packages/cli/src/lib/migrations/MigrationsStatusFacade.ts"],"sourcesContent":["import { MigrationsResolver, MigrationsStatusResolver, SystemClient } from '@contember/migrations-client'\nimport { createMigrationStatusTable } from './migrations'\nimport { SystemClientProvider } from '../SystemClientProvider'\n\nexport class MigrationsStatusFacade {\n\tconstructor(\n\t\tprivate readonly systemClientProvider: SystemClientProvider,\n\t\tprivate readonly migrationsResolver: MigrationsResolver,\n\t\tprivate readonly migrationsStatusResolver: MigrationsStatusResolver,\n\t) {\n\t}\n\n\n\tpublic resolveMigrationsStatus = async ({ force, allowError }: { force?: boolean; allowError?: boolean }) => {\n\t\tconst executedMigrations = await this.systemClientProvider.get().listExecutedMigrations()\n\t\tconst localMigrations = await this.migrationsResolver.getMigrationFiles()\n\t\tconst status = await this.migrationsStatusResolver.getMigrationsStatus(executedMigrations, localMigrations, force)\n\t\tif (status.errorMigrations.length > 0 && !allowError) {\n\t\t\tconsole.error(createMigrationStatusTable(status.errorMigrations))\n\t\t\tif (!force) {\n\t\t\t\tthrow `Cannot execute migrations`\n\t\t\t}\n\t\t}\n\n\t\treturn status\n\t}\n}\n"],"names":["createMigrationStatusTable"],"mappings":";;;;;;AAIO,MAAM,uBAAuB;AAAA,EACnC,YACkB,sBACA,oBACA,0BAChB;AAHgB,SAAA,uBAAA;AACA,SAAA,qBAAA;AACA,SAAA,2BAAA;AAKlB,kBAAA,MAAO,2BAA0B,OAAO,EAAE,OAAO,iBAA4D;AAC5G,YAAM,qBAAqB,MAAM,KAAK,qBAAqB,IAAA,EAAM,uBAAuB;AACxF,YAAM,kBAAkB,MAAM,KAAK,mBAAmB,kBAAkB;AACxE,YAAM,SAAS,MAAM,KAAK,yBAAyB,oBAAoB,oBAAoB,iBAAiB,KAAK;AACjH,UAAI,OAAO,gBAAgB,SAAS,KAAK,CAAC,YAAY;AACrD,gBAAQ,MAAMA,WAAAA,2BAA2B,OAAO,eAAe,CAAC;AAChE,YAAI,CAAC,OAAO;AACL,gBAAA;AAAA,QAAA;AAAA,MACP;AAGM,aAAA;AAAA,IAAA,CACR;AAAA,EAAA;AACD;;"}
1
+ {"version":3,"file":"MigrationsStatusFacade.cjs","sources":["../../../../../../packages/cli/src/lib/migrations/MigrationsStatusFacade.ts"],"sourcesContent":["import { MigrationsResolver, MigrationsStatusResolver } from '@contember/migrations-client'\nimport { SystemClientProvider } from '../SystemClientProvider'\nimport { MigrationPrinter } from './MigrationPrinter'\n\nexport class MigrationsStatusFacade {\n\tconstructor(\n\t\tprivate readonly systemClientProvider: SystemClientProvider,\n\t\tprivate readonly migrationsResolver: MigrationsResolver,\n\t\tprivate readonly migrationsStatusResolver: MigrationsStatusResolver,\n\t\tprivate readonly migrationPrinter: MigrationPrinter,\n\t) {\n\t}\n\n\n\tpublic resolveMigrationsStatus = async ({ force, allowError }: { force?: boolean; allowError?: boolean }) => {\n\t\tconst executedMigrations = await this.systemClientProvider.get().listExecutedMigrations()\n\t\tconst localMigrations = await this.migrationsResolver.getMigrationFiles()\n\t\tconst status = await this.migrationsStatusResolver.getMigrationsStatus(executedMigrations, localMigrations, force)\n\t\tif (status.errorMigrations.length > 0 && !allowError) {\n\t\t\tconsole.error(this.migrationPrinter.printStatusTable(status.errorMigrations))\n\t\t\tif (!force) {\n\t\t\t\tthrow `Cannot execute migrations`\n\t\t\t}\n\t\t}\n\n\t\treturn status\n\t}\n}\n"],"names":[],"mappings":";;;;;AAIO,MAAM,uBAAuB;AAAA,EACnC,YACkB,sBACA,oBACA,0BACA,kBAChB;AAJgB,SAAA,uBAAA;AACA,SAAA,qBAAA;AACA,SAAA,2BAAA;AACA,SAAA,mBAAA;AAKlB,kBAAA,MAAO,2BAA0B,OAAO,EAAE,OAAO,iBAA4D;AAC5G,YAAM,qBAAqB,MAAM,KAAK,qBAAqB,IAAA,EAAM,uBAAuB;AACxF,YAAM,kBAAkB,MAAM,KAAK,mBAAmB,kBAAkB;AACxE,YAAM,SAAS,MAAM,KAAK,yBAAyB,oBAAoB,oBAAoB,iBAAiB,KAAK;AACjH,UAAI,OAAO,gBAAgB,SAAS,KAAK,CAAC,YAAY;AACrD,gBAAQ,MAAM,KAAK,iBAAiB,iBAAiB,OAAO,eAAe,CAAC;AAC5E,YAAI,CAAC,OAAO;AACL,gBAAA;AAAA,QAAA;AAAA,MACP;AAGM,aAAA;AAAA,IAAA,CACR;AAAA,EAAA;AACD;;"}
@@ -1,18 +1,18 @@
1
- import { createMigrationStatusTable } from "./migrations.js";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, key + "", value);
5
4
  class MigrationsStatusFacade {
6
- constructor(systemClientProvider, migrationsResolver, migrationsStatusResolver) {
5
+ constructor(systemClientProvider, migrationsResolver, migrationsStatusResolver, migrationPrinter) {
7
6
  this.systemClientProvider = systemClientProvider;
8
7
  this.migrationsResolver = migrationsResolver;
9
8
  this.migrationsStatusResolver = migrationsStatusResolver;
9
+ this.migrationPrinter = migrationPrinter;
10
10
  __publicField(this, "resolveMigrationsStatus", async ({ force, allowError }) => {
11
11
  const executedMigrations = await this.systemClientProvider.get().listExecutedMigrations();
12
12
  const localMigrations = await this.migrationsResolver.getMigrationFiles();
13
13
  const status = await this.migrationsStatusResolver.getMigrationsStatus(executedMigrations, localMigrations, force);
14
14
  if (status.errorMigrations.length > 0 && !allowError) {
15
- console.error(createMigrationStatusTable(status.errorMigrations));
15
+ console.error(this.migrationPrinter.printStatusTable(status.errorMigrations));
16
16
  if (!force) {
17
17
  throw `Cannot execute migrations`;
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationsStatusFacade.js","sources":["../../../../../../packages/cli/src/lib/migrations/MigrationsStatusFacade.ts"],"sourcesContent":["import { MigrationsResolver, MigrationsStatusResolver, SystemClient } from '@contember/migrations-client'\nimport { createMigrationStatusTable } from './migrations'\nimport { SystemClientProvider } from '../SystemClientProvider'\n\nexport class MigrationsStatusFacade {\n\tconstructor(\n\t\tprivate readonly systemClientProvider: SystemClientProvider,\n\t\tprivate readonly migrationsResolver: MigrationsResolver,\n\t\tprivate readonly migrationsStatusResolver: MigrationsStatusResolver,\n\t) {\n\t}\n\n\n\tpublic resolveMigrationsStatus = async ({ force, allowError }: { force?: boolean; allowError?: boolean }) => {\n\t\tconst executedMigrations = await this.systemClientProvider.get().listExecutedMigrations()\n\t\tconst localMigrations = await this.migrationsResolver.getMigrationFiles()\n\t\tconst status = await this.migrationsStatusResolver.getMigrationsStatus(executedMigrations, localMigrations, force)\n\t\tif (status.errorMigrations.length > 0 && !allowError) {\n\t\t\tconsole.error(createMigrationStatusTable(status.errorMigrations))\n\t\t\tif (!force) {\n\t\t\t\tthrow `Cannot execute migrations`\n\t\t\t}\n\t\t}\n\n\t\treturn status\n\t}\n}\n"],"names":[],"mappings":";;;;AAIO,MAAM,uBAAuB;AAAA,EACnC,YACkB,sBACA,oBACA,0BAChB;AAHgB,SAAA,uBAAA;AACA,SAAA,qBAAA;AACA,SAAA,2BAAA;AAKlB,kBAAA,MAAO,2BAA0B,OAAO,EAAE,OAAO,iBAA4D;AAC5G,YAAM,qBAAqB,MAAM,KAAK,qBAAqB,IAAA,EAAM,uBAAuB;AACxF,YAAM,kBAAkB,MAAM,KAAK,mBAAmB,kBAAkB;AACxE,YAAM,SAAS,MAAM,KAAK,yBAAyB,oBAAoB,oBAAoB,iBAAiB,KAAK;AACjH,UAAI,OAAO,gBAAgB,SAAS,KAAK,CAAC,YAAY;AACrD,gBAAQ,MAAM,2BAA2B,OAAO,eAAe,CAAC;AAChE,YAAI,CAAC,OAAO;AACL,gBAAA;AAAA,QAAA;AAAA,MACP;AAGM,aAAA;AAAA,IAAA,CACR;AAAA,EAAA;AACD;"}
1
+ {"version":3,"file":"MigrationsStatusFacade.js","sources":["../../../../../../packages/cli/src/lib/migrations/MigrationsStatusFacade.ts"],"sourcesContent":["import { MigrationsResolver, MigrationsStatusResolver } from '@contember/migrations-client'\nimport { SystemClientProvider } from '../SystemClientProvider'\nimport { MigrationPrinter } from './MigrationPrinter'\n\nexport class MigrationsStatusFacade {\n\tconstructor(\n\t\tprivate readonly systemClientProvider: SystemClientProvider,\n\t\tprivate readonly migrationsResolver: MigrationsResolver,\n\t\tprivate readonly migrationsStatusResolver: MigrationsStatusResolver,\n\t\tprivate readonly migrationPrinter: MigrationPrinter,\n\t) {\n\t}\n\n\n\tpublic resolveMigrationsStatus = async ({ force, allowError }: { force?: boolean; allowError?: boolean }) => {\n\t\tconst executedMigrations = await this.systemClientProvider.get().listExecutedMigrations()\n\t\tconst localMigrations = await this.migrationsResolver.getMigrationFiles()\n\t\tconst status = await this.migrationsStatusResolver.getMigrationsStatus(executedMigrations, localMigrations, force)\n\t\tif (status.errorMigrations.length > 0 && !allowError) {\n\t\t\tconsole.error(this.migrationPrinter.printStatusTable(status.errorMigrations))\n\t\t\tif (!force) {\n\t\t\t\tthrow `Cannot execute migrations`\n\t\t\t}\n\t\t}\n\n\t\treturn status\n\t}\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,uBAAuB;AAAA,EACnC,YACkB,sBACA,oBACA,0BACA,kBAChB;AAJgB,SAAA,uBAAA;AACA,SAAA,qBAAA;AACA,SAAA,2BAAA;AACA,SAAA,mBAAA;AAKlB,kBAAA,MAAO,2BAA0B,OAAO,EAAE,OAAO,iBAA4D;AAC5G,YAAM,qBAAqB,MAAM,KAAK,qBAAqB,IAAA,EAAM,uBAAuB;AACxF,YAAM,kBAAkB,MAAM,KAAK,mBAAmB,kBAAkB;AACxE,YAAM,SAAS,MAAM,KAAK,yBAAyB,oBAAoB,oBAAoB,iBAAiB,KAAK;AACjH,UAAI,OAAO,gBAAgB,SAAS,KAAK,CAAC,YAAY;AACrD,gBAAQ,MAAM,KAAK,iBAAiB,iBAAiB,OAAO,eAAe,CAAC;AAC5E,YAAI,CAAC,OAAO;AACL,gBAAA;AAAA,QAAA;AAAA,MACP;AAGM,aAAA;AAAA,IAAA,CACR;AAAA,EAAA;AACD;"}
@@ -32,12 +32,5 @@ class LineTransform extends node_stream.Transform {
32
32
  __publicField(this, "chunks", []);
33
33
  }
34
34
  }
35
- const readStream = async (stream) => new Promise((resolve, reject) => {
36
- const chunks = [];
37
- stream.on("error", (err) => reject(err));
38
- stream.on("data", (chunk) => chunks.push(chunk));
39
- stream.on("end", () => resolve(node_buffer.Buffer.concat(chunks)));
40
- });
41
35
  exports.LineTransform = LineTransform;
42
- exports.readStream = readStream;
43
36
  //# sourceMappingURL=stream.cjs.map