@contember/cli 1.4.0-alpha.4 → 1.4.0-alpha.5

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 (90) hide show
  1. package/dist/src/commands/deploy/DeployCommand.js +2 -2
  2. package/dist/src/commands/deploy/DeployCommand.js.map +1 -1
  3. package/dist/src/commands/migrations/MigrationDiffCommand.js +2 -2
  4. package/dist/src/commands/migrations/MigrationDiffCommand.js.map +1 -1
  5. package/dist/src/commands/migrations/MigrationExecuteCommand.js +2 -2
  6. package/dist/src/commands/migrations/MigrationExecuteCommand.js.map +1 -1
  7. package/dist/src/commands/migrations/MigrationStatusCommand.d.ts.map +1 -1
  8. package/dist/src/commands/migrations/MigrationStatusCommand.js +5 -4
  9. package/dist/src/commands/migrations/MigrationStatusCommand.js.map +1 -1
  10. package/dist/src/commands/migrations/SystemApiClientResolver.d.ts +1 -1
  11. package/dist/src/commands/migrations/SystemApiClientResolver.d.ts.map +1 -1
  12. package/dist/src/commands/migrations/SystemApiClientResolver.js +2 -2
  13. package/dist/src/commands/migrations/SystemApiClientResolver.js.map +1 -1
  14. package/dist/src/tsconfig.tsbuildinfo +1 -1
  15. package/dist/src/utils/migrations/MigrationCreateHelper.d.ts +1 -5
  16. package/dist/src/utils/migrations/MigrationCreateHelper.d.ts.map +1 -1
  17. package/dist/src/utils/migrations/MigrationCreateHelper.js.map +1 -1
  18. package/dist/src/utils/migrations/MigrationExecuteHelper.d.ts +6 -7
  19. package/dist/src/utils/migrations/MigrationExecuteHelper.d.ts.map +1 -1
  20. package/dist/src/utils/migrations/MigrationExecuteHelper.js +12 -52
  21. package/dist/src/utils/migrations/MigrationExecuteHelper.js.map +1 -1
  22. package/dist/src/utils/migrations/MigrationsContainer.d.ts +4 -4
  23. package/dist/src/utils/migrations/MigrationsContainer.d.ts.map +1 -1
  24. package/dist/src/utils/migrations/MigrationsContainer.js +23 -15
  25. package/dist/src/utils/migrations/MigrationsContainer.js.map +1 -1
  26. package/dist/src/utils/migrations/migrations.d.ts +2 -54
  27. package/dist/src/utils/migrations/migrations.d.ts.map +1 -1
  28. package/dist/src/utils/migrations/migrations.js +7 -88
  29. package/dist/src/utils/migrations/migrations.js.map +1 -1
  30. package/package.json +10 -10
  31. package/src/commands/deploy/DeployCommand.ts +1 -1
  32. package/src/commands/migrations/MigrationDiffCommand.ts +1 -1
  33. package/src/commands/migrations/MigrationExecuteCommand.ts +1 -1
  34. package/src/commands/migrations/MigrationStatusCommand.ts +3 -2
  35. package/src/commands/migrations/SystemApiClientResolver.ts +1 -1
  36. package/src/tsconfig.json +1 -1
  37. package/src/utils/migrations/MigrationCreateHelper.ts +8 -5
  38. package/src/utils/migrations/MigrationExecuteHelper.ts +23 -61
  39. package/src/utils/migrations/MigrationsContainer.ts +20 -12
  40. package/src/utils/migrations/migrations.ts +3 -148
  41. package/dist/src/utils/migrations/JsLoader.d.ts +0 -9
  42. package/dist/src/utils/migrations/JsLoader.d.ts.map +0 -1
  43. package/dist/src/utils/migrations/JsLoader.js +0 -33
  44. package/dist/src/utils/migrations/JsLoader.js.map +0 -1
  45. package/dist/src/utils/migrations/JsonLoader.d.ts +0 -9
  46. package/dist/src/utils/migrations/JsonLoader.d.ts.map +0 -1
  47. package/dist/src/utils/migrations/JsonLoader.js +0 -17
  48. package/dist/src/utils/migrations/JsonLoader.js.map +0 -1
  49. package/dist/src/utils/migrations/MigrationCreator.d.ts +0 -21
  50. package/dist/src/utils/migrations/MigrationCreator.d.ts.map +0 -1
  51. package/dist/src/utils/migrations/MigrationCreator.js +0 -47
  52. package/dist/src/utils/migrations/MigrationCreator.js.map +0 -1
  53. package/dist/src/utils/migrations/MigrationFile.d.ts +0 -36
  54. package/dist/src/utils/migrations/MigrationFile.d.ts.map +0 -1
  55. package/dist/src/utils/migrations/MigrationFile.js +0 -6
  56. package/dist/src/utils/migrations/MigrationFile.js.map +0 -1
  57. package/dist/src/utils/migrations/MigrationFileLoader.d.ts +0 -5
  58. package/dist/src/utils/migrations/MigrationFileLoader.d.ts.map +0 -1
  59. package/dist/src/utils/migrations/MigrationFileLoader.js +0 -3
  60. package/dist/src/utils/migrations/MigrationFileLoader.js.map +0 -1
  61. package/dist/src/utils/migrations/MigrationFilesManager.d.ts +0 -18
  62. package/dist/src/utils/migrations/MigrationFilesManager.d.ts.map +0 -1
  63. package/dist/src/utils/migrations/MigrationFilesManager.js +0 -114
  64. package/dist/src/utils/migrations/MigrationFilesManager.js.map +0 -1
  65. package/dist/src/utils/migrations/MigrationParser.d.ts +0 -6
  66. package/dist/src/utils/migrations/MigrationParser.d.ts.map +0 -1
  67. package/dist/src/utils/migrations/MigrationParser.js +0 -33
  68. package/dist/src/utils/migrations/MigrationParser.js.map +0 -1
  69. package/dist/src/utils/migrations/MigrationsResolver.d.ts +0 -14
  70. package/dist/src/utils/migrations/MigrationsResolver.d.ts.map +0 -1
  71. package/dist/src/utils/migrations/MigrationsResolver.js +0 -37
  72. package/dist/src/utils/migrations/MigrationsResolver.js.map +0 -1
  73. package/dist/src/utils/migrations/SchemaVersionBuilder.d.ts +0 -13
  74. package/dist/src/utils/migrations/SchemaVersionBuilder.d.ts.map +0 -1
  75. package/dist/src/utils/migrations/SchemaVersionBuilder.js +0 -26
  76. package/dist/src/utils/migrations/SchemaVersionBuilder.js.map +0 -1
  77. package/dist/src/utils/system/index.d.ts +0 -30
  78. package/dist/src/utils/system/index.d.ts.map +0 -1
  79. package/dist/src/utils/system/index.js +0 -118
  80. package/dist/src/utils/system/index.js.map +0 -1
  81. package/src/utils/migrations/JsLoader.ts +0 -37
  82. package/src/utils/migrations/JsonLoader.ts +0 -18
  83. package/src/utils/migrations/MigrationCreator.ts +0 -60
  84. package/src/utils/migrations/MigrationFile.ts +0 -52
  85. package/src/utils/migrations/MigrationFileLoader.ts +0 -5
  86. package/src/utils/migrations/MigrationFilesManager.ts +0 -102
  87. package/src/utils/migrations/MigrationParser.ts +0 -32
  88. package/src/utils/migrations/MigrationsResolver.ts +0 -44
  89. package/src/utils/migrations/SchemaVersionBuilder.ts +0 -33
  90. package/src/utils/system/index.ts +0 -150
@@ -1,12 +1,17 @@
1
1
  import { CommandConfiguration } from '@contember/cli-common'
2
- import { SystemClient } from '../system'
3
- import { getMigrationsStatus, MigrationToExecuteOkStatus, printMigrationDescription } from './migrations'
4
- import { MigrationDescriber } from '@contember/schema-migrations'
2
+ import {
3
+ ContentMigrationFactoryArgs,
4
+ isSchemaMigration,
5
+ MigrationDescriber,
6
+ MigrationsResolver,
7
+ MigrationToExecuteOkStatus,
8
+ SchemaVersionBuilder,
9
+ SystemClient,
10
+ MigrationExecutor,
11
+ MigrationsStatusResolver,
12
+ } from '@contember/migrations-client'
13
+ import { printMigrationDescription } from './migrations'
5
14
  import prompts from 'prompts'
6
- import { MigrationsResolver } from './MigrationsResolver'
7
- import { SchemaVersionBuilder } from './SchemaVersionBuilder'
8
- import { ContentMigrationFactoryArgs, isSchemaMigration, ResolvedMigrationContent } from './MigrationFile'
9
- import { assertNever } from '../assertNever'
10
15
 
11
16
  export type ExecuteMigrationOptions = {
12
17
  instance?: string
@@ -33,10 +38,11 @@ export const resolveMigrationStatus = async (
33
38
  client: SystemClient,
34
39
  migrationsResolver: MigrationsResolver,
35
40
  force: boolean = false,
36
- ): Promise<ReturnType<typeof getMigrationsStatus>> => {
41
+ ) => {
42
+ const migrationStatusResolver = new MigrationsStatusResolver()
37
43
  const executedMigrations = await client.listExecutedMigrations()
38
44
  const localMigrations = await migrationsResolver.getMigrationFiles()
39
- return getMigrationsStatus(executedMigrations, localMigrations, force)
45
+ return migrationStatusResolver.getMigrationsStatus(executedMigrations, localMigrations, force)
40
46
  }
41
47
 
42
48
  export const executeMigrations = async ({
@@ -96,58 +102,14 @@ export const executeMigrations = async ({
96
102
  } while (true)
97
103
  }
98
104
 
99
- let migrationsToRun: ResolvedMigrationContent[] = []
105
+ const executor = new MigrationExecutor()
100
106
 
101
- const executeMigrations = async () => {
102
- if (migrationsToRun.length === 0) {
103
- return
104
- }
105
- await client.migrate(
106
- migrationsToRun.map(it => {
107
- if (it.type === 'schema') {
108
- return {
109
- version: it.version,
110
- name: it.name,
111
- type: 'SCHEMA',
112
- schemaMigration: {
113
- formatVersion: it.formatVersion,
114
- modifications: it.modifications,
115
- skippedErrors: it.skippedErrors,
116
- },
117
- }
118
- }
119
- if (it.type === 'content') {
120
- return {
121
- version: it.version,
122
- name: it.name,
123
- type: 'CONTENT',
124
- contentMigration: it.queries,
125
- }
126
- }
127
- return assertNever(it)
128
- }),
129
- force,
130
- )
131
- migrationsToRun.forEach(it => {
132
- console.log(it.name)
133
- })
134
- migrationsToRun = []
135
- }
136
-
137
- console.log('Executing...')
138
-
139
- for (const migration of migrations) {
140
- const migrationContent = await migration.localMigration.getContent()
141
- if (migrationContent.type === 'factory') {
142
- await executeMigrations()
143
- const result = await migrationContent.factory(contentMigrationFactoryArgs)
144
- migrationsToRun.push(result)
145
- await executeMigrations()
146
- } else {
147
- migrationsToRun.push(migrationContent)
148
- }
149
- }
150
- await executeMigrations()
151
- console.log('Migration executed')
107
+ await executor.executeMigrations({
108
+ client,
109
+ migrations,
110
+ contentMigrationFactoryArgs,
111
+ log: message => console.log(message),
112
+ force,
113
+ })
152
114
  return 0
153
115
  }
@@ -1,12 +1,13 @@
1
1
  import { Builder } from '@contember/dic'
2
2
  import { MigrationDescriber, ModificationHandlerFactory, SchemaDiffer, SchemaMigrator, VERSION_LATEST } from '@contember/schema-migrations'
3
- import { MigrationCreator } from './MigrationCreator'
4
- import { SchemaVersionBuilder } from './SchemaVersionBuilder'
5
- import { MigrationsResolver } from './MigrationsResolver'
6
- import { MigrationFilesManager } from './MigrationFilesManager'
7
- import { JsonLoader } from './JsonLoader'
8
- import { MigrationParser } from './MigrationParser'
9
- import { JsLoader } from './JsLoader'
3
+ import { MigrationCreator } from '@contember/migrations-client'
4
+ import { SchemaVersionBuilder } from '@contember/migrations-client'
5
+ import { MigrationsResolver } from '@contember/migrations-client'
6
+ import { MigrationFilesManager } from '@contember/migrations-client'
7
+ import { JsonLoader } from '@contember/migrations-client'
8
+ import { MigrationParser } from '@contember/migrations-client'
9
+ import { JsLoader } from '@contember/migrations-client'
10
+ import { buildJs } from '../esbuild'
10
11
 
11
12
  export interface MigrationsContainer {
12
13
  migrationCreator: MigrationCreator
@@ -34,12 +35,19 @@ export class MigrationsContainerFactory {
34
35
 
35
36
  public create(): MigrationsContainer {
36
37
  return new Builder({})
37
- .addService('migrationFilesManager', () =>
38
- new MigrationFilesManager(this.directory, {
38
+ .addService('migrationFilesManager', () => {
39
+ const jsExecutor = async (file: string) => {
40
+ const code = await buildJs(file)
41
+ const fn = new Function(`var module = {}; ((module) => { ${code} })(module); return module`)
42
+ return fn().exports
43
+ }
44
+
45
+ return new MigrationFilesManager(this.directory, {
39
46
  json: new JsonLoader(new MigrationParser()),
40
- ts: new JsLoader(new MigrationParser()),
41
- js: new JsLoader(new MigrationParser()),
42
- }))
47
+ ts: new JsLoader(new MigrationParser(), jsExecutor),
48
+ js: new JsLoader(new MigrationParser(), jsExecutor),
49
+ })
50
+ })
43
51
  .addService('modificationHandlerFactory', () =>
44
52
  new ModificationHandlerFactory(ModificationHandlerFactory.defaultFactoryMap))
45
53
  .addService('schemaMigrator', ({ modificationHandlerFactory }) =>
@@ -1,10 +1,11 @@
1
- import { calculateMigrationChecksum, Migration, MigrationDescriber, MigrationInfo } from '@contember/schema-migrations'
1
+ import { Migration, MigrationDescriber } from '@contember/schema-migrations'
2
2
  import chalk from 'chalk'
3
3
  import { Schema } from '@contember/schema'
4
4
  import chalkTable from 'chalk-table'
5
5
  import { assertNever } from '../assertNever'
6
6
  import { emptyDatabaseMetadata } from '@contember/database'
7
- import { isSchemaMigration, MigrationFile } from './MigrationFile'
7
+ import { MigrationState } from '@contember/migrations-client'
8
+ import { AnyMigrationStatus } from '@contember/migrations-client'
8
9
 
9
10
  export const printMigrationDescription = function (
10
11
  migrationsDescriber: MigrationDescriber,
@@ -42,152 +43,6 @@ export const printMigrationDescription = function (
42
43
  })
43
44
  }
44
45
 
45
- export interface ExecutedMigrationInfo extends MigrationInfo {
46
- readonly executedAt: Date
47
- readonly checksum: string
48
- }
49
-
50
- export interface ExecutedMigration extends Migration {
51
- readonly executedAt: Date
52
- readonly checksum: string
53
- }
54
-
55
- export enum MigrationState {
56
- TO_EXECUTE_OK = 'to_execute_ok',
57
- TO_EXECUTE_ERROR = 'to_execute_error',
58
- EXECUTED_OK = 'executed_ok',
59
- EXECUTED_ERROR = 'executed_error',
60
- EXECUTED_MISSING = 'executed_missing',
61
- }
62
-
63
- export interface MigrationStatusBase<S extends MigrationState> {
64
- state: S
65
- version: string
66
- name: string
67
- }
68
-
69
- export interface MigrationToExecuteOkStatus extends MigrationStatusBase<MigrationState.TO_EXECUTE_OK> {
70
- localMigration: MigrationFile
71
- }
72
-
73
- interface MigrationToExecuteInvalidStatus extends MigrationStatusBase<MigrationState.TO_EXECUTE_ERROR> {
74
- localMigration: MigrationFile
75
- errorMessage: string
76
- }
77
-
78
- interface MigrationExecutedOkStatus extends MigrationStatusBase<MigrationState.EXECUTED_OK>{
79
- executedMigration: ExecutedMigrationInfo
80
- localMigration: MigrationFile
81
- }
82
-
83
- interface MigrationExecutedMissingStatus extends MigrationStatusBase<MigrationState.EXECUTED_MISSING>{
84
- executedMigration: ExecutedMigrationInfo
85
- errorMessage: string
86
- }
87
-
88
- interface MigrationExecutedErrorStatus extends MigrationStatusBase<MigrationState.EXECUTED_ERROR>{
89
- executedMigration: ExecutedMigrationInfo
90
- localMigration: MigrationFile
91
- errorMessage: string
92
- }
93
-
94
- export type ErrorMigrationStatus =
95
- | MigrationToExecuteInvalidStatus
96
- | MigrationExecutedMissingStatus
97
- | MigrationExecutedErrorStatus
98
-
99
- export type AnyMigrationStatus = ErrorMigrationStatus | MigrationToExecuteOkStatus | MigrationExecutedOkStatus
100
- export const isErrorMigrationStatus = (migration: AnyMigrationStatus): migration is ErrorMigrationStatus =>
101
- [MigrationState.EXECUTED_ERROR, MigrationState.EXECUTED_MISSING, MigrationState.TO_EXECUTE_ERROR].includes(
102
- migration.state,
103
- )
104
-
105
- export const sortMigrations = <M extends { version: string }>(migrations: M[]): M[] => {
106
- return [...migrations].sort((a, b) => a.version.localeCompare(b.version))
107
- }
108
-
109
- export const getMigrationsStatus = async (
110
- executedMigrations: ExecutedMigrationInfo[],
111
- localMigrations: MigrationFile[],
112
- force: boolean = false,
113
- ): Promise<{
114
- allMigrations: AnyMigrationStatus[]
115
- errorMigrations: ErrorMigrationStatus[]
116
- migrationsToExecute: MigrationToExecuteOkStatus[]
117
- }> => {
118
- const sortedExecuted = sortMigrations(executedMigrations)
119
-
120
- const allMigrations: AnyMigrationStatus[] = []
121
- for (const executed of sortedExecuted) {
122
- const localMigration = localMigrations.find(it => it.version === executed.version)
123
- if (!localMigration) {
124
- allMigrations.push({
125
- state: MigrationState.EXECUTED_MISSING,
126
- executedMigration: executed,
127
- version: executed.version,
128
- name: executed.name,
129
- errorMessage: `Migration ${executed.name} is missing locally`,
130
- })
131
- continue
132
- }
133
- const migrationContent = await localMigration.getContent()
134
-
135
- const localChecksum = !isSchemaMigration(migrationContent) ? null : calculateMigrationChecksum(migrationContent)
136
-
137
- if (localChecksum !== executed.checksum) {
138
- allMigrations.push({
139
- state: MigrationState.EXECUTED_ERROR,
140
- executedMigration: executed,
141
- version: executed.version,
142
- name: executed.name,
143
- localMigration,
144
- errorMessage: `Checksum of executed migration "${executed.checksum}" does not match "${localChecksum}"`,
145
- })
146
- continue
147
- }
148
- allMigrations.push({
149
- state: MigrationState.EXECUTED_OK,
150
- executedMigration: executed,
151
- version: executed.version,
152
- name: executed.name,
153
- localMigration,
154
- })
155
- }
156
-
157
- const latestExecuted = sortedExecuted.length > 0 ? sortedExecuted[sortedExecuted.length - 1] : null
158
- for (const localMigration of localMigrations) {
159
- if (allMigrations.find(it => it.version === localMigration.version)) {
160
- continue
161
- }
162
-
163
- if (latestExecuted && latestExecuted.version > localMigration.version) {
164
- allMigrations.push({
165
- state: MigrationState.TO_EXECUTE_ERROR,
166
- localMigration,
167
- version: localMigration.version,
168
- name: localMigration.name,
169
- errorMessage: `Must follow latest executed migration ${latestExecuted.name}`,
170
- })
171
- continue
172
- }
173
- allMigrations.push({
174
- state: MigrationState.TO_EXECUTE_OK,
175
- localMigration,
176
- version: localMigration.version,
177
- name: localMigration.name,
178
- })
179
- }
180
- const allMigrationsSorted = sortMigrations(allMigrations)
181
-
182
- return {
183
- allMigrations: allMigrationsSorted,
184
- errorMigrations: allMigrationsSorted.filter(isErrorMigrationStatus),
185
- migrationsToExecute: allMigrationsSorted.filter(
186
- (it): it is MigrationToExecuteOkStatus =>
187
- it.state === MigrationState.TO_EXECUTE_OK || (force && it.state === MigrationState.TO_EXECUTE_ERROR),
188
- ),
189
- }
190
- }
191
46
  export const createMigrationStatusTable = (migrations: AnyMigrationStatus[]): string => {
192
47
  return chalkTable(
193
48
  {
@@ -1,9 +0,0 @@
1
- import { MigrationFileLoader } from './MigrationFileLoader';
2
- import { MigrationParser } from './MigrationParser';
3
- import { MigrationContent, MigrationFile } from './MigrationFile';
4
- export declare class JsLoader implements MigrationFileLoader {
5
- private readonly migrationParser;
6
- constructor(migrationParser: MigrationParser);
7
- load(file: MigrationFile): Promise<MigrationContent>;
8
- }
9
- //# sourceMappingURL=JsLoader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JsLoader.d.ts","sourceRoot":"","sources":["../../../../src/utils/migrations/JsLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAoB,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEnF,qBAAa,QAAS,YAAW,mBAAmB;IAElD,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAKrC,IAAI,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAwBjE"}
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JsLoader = void 0;
4
- const esbuild_1 = require("../esbuild");
5
- class JsLoader {
6
- constructor(migrationParser) {
7
- this.migrationParser = migrationParser;
8
- }
9
- async load(file) {
10
- const code = await (0, esbuild_1.buildJs)(file.path);
11
- const fn = new Function(`var module = {}; ((module) => { ${code} })(module); return module`);
12
- const exports = fn().exports;
13
- if (!('default' in exports) && !('query' in exports) && !('queries' in exports)) {
14
- throw `export "default" or "query" is required in ${file.path}`;
15
- }
16
- if (typeof exports.default !== 'function') {
17
- return this.migrationParser.parse(file, exports.default || exports);
18
- }
19
- return {
20
- type: 'factory',
21
- factory: async () => {
22
- const result = await exports.default();
23
- const migration = this.migrationParser.parse(file, result !== null && result !== void 0 ? result : { queries: [] });
24
- if (migration.type !== 'content') {
25
- throw new Error();
26
- }
27
- return migration;
28
- },
29
- };
30
- }
31
- }
32
- exports.JsLoader = JsLoader;
33
- //# sourceMappingURL=JsLoader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JsLoader.js","sourceRoot":"","sources":["../../../../src/utils/migrations/JsLoader.ts"],"names":[],"mappings":";;;AACA,wCAAoC;AAIpC,MAAa,QAAQ;IACpB,YACkB,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;IAElD,CAAC;IAGM,KAAK,CAAC,IAAI,CAAC,IAAmB;QACpC,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,mCAAmC,IAAI,4BAA4B,CAAC,CAAA;QAC5F,MAAM,OAAO,GAAG,EAAE,EAAE,CAAC,OAAO,CAAA;QAC5B,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE;YAChF,MAAM,8CAA8C,IAAI,CAAC,IAAI,EAAE,CAAA;SAC/D;QACD,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE;YAC1C,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,CAAA;SACnE;QAED,OAAO;YACN,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK,IAA+B,EAAE;gBAC9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;gBACtC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC7E,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE;oBACjC,MAAM,IAAI,KAAK,EAAE,CAAA;iBACjB;gBACD,OAAO,SAAS,CAAA;YACjB,CAAC;SAED,CAAA;IACF,CAAC;CACD;AA/BD,4BA+BC"}
@@ -1,9 +0,0 @@
1
- import { MigrationFileLoader } from './MigrationFileLoader';
2
- import { MigrationParser } from './MigrationParser';
3
- import { MigrationFile } from './MigrationFile';
4
- export declare class JsonLoader implements MigrationFileLoader {
5
- private readonly migrationParser;
6
- constructor(migrationParser: MigrationParser);
7
- load(file: MigrationFile): Promise<import("./MigrationFile").ResolvedMigrationContent>;
8
- }
9
- //# sourceMappingURL=JsonLoader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JsonLoader.d.ts","sourceRoot":"","sources":["../../../../src/utils/migrations/JsonLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,qBAAa,UAAW,YAAW,mBAAmB;IAEpD,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAIrC,IAAI,CAAC,IAAI,EAAE,aAAa;CAMrC"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.JsonLoader = void 0;
7
- const promises_1 = __importDefault(require("node:fs/promises"));
8
- class JsonLoader {
9
- constructor(migrationParser) {
10
- this.migrationParser = migrationParser;
11
- }
12
- async load(file) {
13
- return this.migrationParser.parse(file, JSON.parse(await promises_1.default.readFile(file.path, { encoding: 'utf8' })));
14
- }
15
- }
16
- exports.JsonLoader = JsonLoader;
17
- //# sourceMappingURL=JsonLoader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JsonLoader.js","sourceRoot":"","sources":["../../../../src/utils/migrations/JsonLoader.ts"],"names":[],"mappings":";;;;;;AACA,gEAAiC;AAIjC,MAAa,UAAU;IACtB,YACkB,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;IAElD,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,IAAmB;QACpC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAChC,IAAI,EACJ,IAAI,CAAC,KAAK,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAC9D,CAAA;IACF,CAAC;CACD;AAZD,gCAYC"}
@@ -1,21 +0,0 @@
1
- import { MigrationFilesManager } from './MigrationFilesManager';
2
- import { Schema } from '@contember/schema';
3
- import { Migration, SchemaDiffer } from '@contember/schema-migrations';
4
- export declare class MigrationCreator {
5
- private readonly migrationFilesManager;
6
- private readonly schemaDiffer;
7
- private readonly emptyTemplates;
8
- constructor(migrationFilesManager: MigrationFilesManager, schemaDiffer: SchemaDiffer, emptyTemplates?: Record<string, string>);
9
- createEmptyMigrationFile(migrationName: string, format: string): Promise<string>;
10
- prepareMigration(initialSchema: Schema, newSchema: Schema, migrationName: string, { skipInitialSchemaValidation }?: {
11
- skipInitialSchemaValidation?: boolean;
12
- }): Promise<{
13
- migration: Migration;
14
- initialSchema: Schema;
15
- } | null>;
16
- saveMigration(migration: Migration): Promise<string>;
17
- removeMigration(name: string): Promise<void>;
18
- private createMigration;
19
- static createContent({ modifications, formatVersion }: Migration): string;
20
- }
21
- //# sourceMappingURL=MigrationCreator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MigrationCreator.d.ts","sourceRoot":"","sources":["../../../../src/utils/migrations/MigrationCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAkB,MAAM,8BAA8B,CAAA;AAGtF,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAFd,qBAAqB,EAAE,qBAAqB,EAC5C,YAAY,EAAE,YAAY,EAC1B,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAGvD,wBAAwB,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWhF,gBAAgB,CACrB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,EAAE,2BAAmC,EAAE,GAAE;QAAE,2BAA2B,CAAC,EAAE,OAAO,CAAA;KAAO,GACrF,OAAO,CAAC;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAa5D,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAMpD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,OAAO,CAAC,eAAe;WAKT,aAAa,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,SAAS,GAAG,MAAM;CAGhF"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MigrationCreator = void 0;
4
- const schema_migrations_1 = require("@contember/schema-migrations");
5
- const engine_common_1 = require("@contember/engine-common");
6
- class MigrationCreator {
7
- constructor(migrationFilesManager, schemaDiffer, emptyTemplates = {}) {
8
- this.migrationFilesManager = migrationFilesManager;
9
- this.schemaDiffer = schemaDiffer;
10
- this.emptyTemplates = emptyTemplates;
11
- }
12
- async createEmptyMigrationFile(migrationName, format) {
13
- if (!this.emptyTemplates.hasOwnProperty(format)) {
14
- throw new Error(`Unknown format ${format}`);
15
- }
16
- await this.migrationFilesManager.createDirIfNotExist();
17
- const [, fullName] = engine_common_1.MigrationVersionHelper.createVersion(migrationName);
18
- const filename = await this.migrationFilesManager.createFile(this.emptyTemplates[format], fullName, format);
19
- return filename;
20
- }
21
- async prepareMigration(initialSchema, newSchema, migrationName, { skipInitialSchemaValidation = false } = {}) {
22
- await this.migrationFilesManager.createDirIfNotExist();
23
- const modifications = this.schemaDiffer.diffSchemas(initialSchema, newSchema, { skipInitialSchemaValidation });
24
- if (modifications.length === 0) {
25
- return null;
26
- }
27
- const migration = this.createMigration(modifications, migrationName);
28
- return { initialSchema, migration };
29
- }
30
- async saveMigration(migration) {
31
- const jsonDiff = MigrationCreator.createContent(migration);
32
- const filename = await this.migrationFilesManager.createFile(jsonDiff, migration.name);
33
- return filename;
34
- }
35
- async removeMigration(name) {
36
- await this.migrationFilesManager.removeFile(name);
37
- }
38
- createMigration(modifications, name) {
39
- const [version, fullName] = engine_common_1.MigrationVersionHelper.createVersion(name);
40
- return { formatVersion: schema_migrations_1.VERSION_LATEST, modifications, version, name: fullName };
41
- }
42
- static createContent({ modifications, formatVersion }) {
43
- return JSON.stringify({ formatVersion, modifications }, undefined, '\t') + '\n';
44
- }
45
- }
46
- exports.MigrationCreator = MigrationCreator;
47
- //# sourceMappingURL=MigrationCreator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MigrationCreator.js","sourceRoot":"","sources":["../../../../src/utils/migrations/MigrationCreator.ts"],"names":[],"mappings":";;;AAEA,oEAAsF;AACtF,4DAAiE;AAEjE,MAAa,gBAAgB;IAC5B,YACkB,qBAA4C,EAC5C,YAA0B,EAC1B,iBAAyC,EAAE;QAF3C,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,iBAAY,GAAZ,YAAY,CAAc;QAC1B,mBAAc,GAAd,cAAc,CAA6B;IAC1D,CAAC;IAEJ,KAAK,CAAC,wBAAwB,CAAC,aAAqB,EAAE,MAAc;QACnE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;YAChD,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAA;SAC3C;QACD,MAAM,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,CAAA;QACtD,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,sCAAsB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;QACxE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;QAE3G,OAAO,QAAQ,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,gBAAgB,CACrB,aAAqB,EACrB,SAAiB,EACjB,aAAqB,EACrB,EAAE,2BAA2B,GAAG,KAAK,KAAgD,EAAE;QAEvF,MAAM,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,CAAA;QAEtD,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,2BAA2B,EAAE,CAAC,CAAA;QAC9G,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAA;SACX;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;QAEpE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAoB;QACvC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACtF,OAAO,QAAQ,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAY;QACjC,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAClD,CAAC;IAEO,eAAe,CAAC,aAAuC,EAAE,IAAY;QAC5E,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,sCAAsB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACtE,OAAO,EAAE,aAAa,EAAE,kCAAc,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IACjF,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,aAAa,EAAa;QACtE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,CAAA;IAChF,CAAC;CACD;AAtDD,4CAsDC"}
@@ -1,36 +0,0 @@
1
- import { Migration } from '@contember/schema-migrations';
2
- import { JSONObject } from '@contember/cli-common';
3
- export interface MigrationFile {
4
- path: string;
5
- version: string;
6
- name: string;
7
- getContent: () => Promise<MigrationContent>;
8
- }
9
- export declare const isSchemaMigration: (content: MigrationContent) => content is SchemaMigration;
10
- export type ResolvedMigrationContent = SchemaMigration | ContentMigration;
11
- export type MigrationContent = ResolvedMigrationContent | ContentMigrationFactory;
12
- export type SchemaMigration = {
13
- type: 'schema';
14
- } & Migration;
15
- export type ContentMigration = {
16
- type: 'content';
17
- version: string;
18
- name: string;
19
- queries: ContentMigrationQuery[];
20
- };
21
- export type ContentMigrationFactoryArgs = {
22
- apiBaseUrl: string;
23
- projectName: string;
24
- apiToken: string;
25
- };
26
- export type ContentMigrationFactory = {
27
- type: 'factory';
28
- factory: (args: ContentMigrationFactoryArgs) => Promise<ContentMigration>;
29
- };
30
- export type ContentMigrationQuery = {
31
- query: string;
32
- variables?: JSONObject;
33
- stage?: string;
34
- checkMutationResult?: boolean;
35
- };
36
- //# sourceMappingURL=MigrationFile.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MigrationFile.d.ts","sourceRoot":"","sources":["../../../../src/utils/migrations/MigrationFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IAEZ,UAAU,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAC3C;AAED,eAAO,MAAM,iBAAiB,YAAa,gBAAgB,+BAA4F,CAAA;AAEvJ,MAAM,MAAM,wBAAwB,GACjC,eAAe,GACf,gBAAgB,CAAA;AAEnB,MAAM,MAAM,gBAAgB,GACzB,wBAAwB,GACxB,uBAAuB,CAAA;AAE1B,MAAM,MAAM,eAAe,GACxB;IACD,IAAI,EAAE,QAAQ,CAAA;CACd,GACC,SAAS,CAAA;AAEZ,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,qBAAqB,EAAE,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,CAAC,IAAI,EAAE,2BAA2B,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACzE,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isSchemaMigration = void 0;
4
- const isSchemaMigration = (content) => typeof content !== 'function' && 'modifications' in content;
5
- exports.isSchemaMigration = isSchemaMigration;
6
- //# sourceMappingURL=MigrationFile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MigrationFile.js","sourceRoot":"","sources":["../../../../src/utils/migrations/MigrationFile.ts"],"names":[],"mappings":";;;AAWO,MAAM,iBAAiB,GAAG,CAAC,OAAyB,EAA8B,EAAE,CAAC,OAAO,OAAO,KAAK,UAAU,IAAI,eAAe,IAAI,OAAO,CAAA;AAA1I,QAAA,iBAAiB,qBAAyH"}
@@ -1,5 +0,0 @@
1
- import { MigrationContent, MigrationFile } from './MigrationFile';
2
- export interface MigrationFileLoader {
3
- load(file: MigrationFile): Promise<MigrationContent>;
4
- }
5
- //# sourceMappingURL=MigrationFileLoader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MigrationFileLoader.d.ts","sourceRoot":"","sources":["../../../../src/utils/migrations/MigrationFileLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEjE,MAAM,WAAW,mBAAmB;IACnC,IAAI,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACpD"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=MigrationFileLoader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MigrationFileLoader.js","sourceRoot":"","sources":["../../../../src/utils/migrations/MigrationFileLoader.ts"],"names":[],"mappings":""}
@@ -1,18 +0,0 @@
1
- import { MigrationFileLoader } from './MigrationFileLoader';
2
- import { MigrationFile } from './MigrationFile';
3
- export declare class MigrationFilesManager {
4
- readonly directory: string;
5
- private readonly loaders;
6
- private migrations;
7
- constructor(directory: string, loaders: Record<string, MigrationFileLoader>);
8
- createFile(content: string, name: string, extension?: string): Promise<string>;
9
- removeFile(name: string): Promise<void>;
10
- moveFile(oldName: string, newName: string): Promise<void>;
11
- createDirIfNotExist(): Promise<void>;
12
- readFiles(): Promise<MigrationFile[]>;
13
- forceReadFiles(): Promise<MigrationFile[]>;
14
- private tryReadDir;
15
- private listFiles;
16
- private formatPath;
17
- }
18
- //# sourceMappingURL=MigrationFilesManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MigrationFilesManager.d.ts","sourceRoot":"","sources":["../../../../src/utils/migrations/MigrationFilesManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAoB,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAIjE,qBAAa,qBAAqB;aAIhB,SAAS,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJzB,OAAO,CAAC,UAAU,CAAwC;gBAGzC,SAAS,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAGjD,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAO9E,UAAU,CAAC,IAAI,EAAE,MAAM;IAMvB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAKzC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAIrC,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAuBzC,UAAU;YAWV,SAAS;IAevB,OAAO,CAAC,UAAU;CAKlB"}