@contember/migrations-client 2.2.0-alpha.1 → 2.2.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/development/src/MigrationCreator.cjs +1 -1
  2. package/dist/development/src/MigrationCreator.cjs.map +1 -1
  3. package/dist/development/src/MigrationCreator.js +1 -1
  4. package/dist/development/src/MigrationCreator.js.map +1 -1
  5. package/dist/development/src/SchemaVersionBuilder.cjs +20 -2
  6. package/dist/development/src/SchemaVersionBuilder.cjs.map +1 -1
  7. package/dist/development/src/SchemaVersionBuilder.js +20 -2
  8. package/dist/development/src/SchemaVersionBuilder.js.map +1 -1
  9. package/dist/production/src/MigrationCreator.cjs +1 -1
  10. package/dist/production/src/MigrationCreator.cjs.map +1 -1
  11. package/dist/production/src/MigrationCreator.js +1 -1
  12. package/dist/production/src/MigrationCreator.js.map +1 -1
  13. package/dist/production/src/SchemaVersionBuilder.cjs +20 -2
  14. package/dist/production/src/SchemaVersionBuilder.cjs.map +1 -1
  15. package/dist/production/src/SchemaVersionBuilder.js +20 -2
  16. package/dist/production/src/SchemaVersionBuilder.js.map +1 -1
  17. package/dist/types/JsLoader.d.ts.map +1 -1
  18. package/dist/types/JsonLoader.d.ts.map +1 -1
  19. package/dist/types/MigrationCreator.d.ts.map +1 -1
  20. package/dist/types/MigrationExecuteHelper.d.ts.map +1 -1
  21. package/dist/types/MigrationFile.d.ts.map +1 -1
  22. package/dist/types/MigrationFilesManager.d.ts.map +1 -1
  23. package/dist/types/MigrationParser.d.ts.map +1 -1
  24. package/dist/types/MigrationsResolver.d.ts.map +1 -1
  25. package/dist/types/SchemaStateManager.d.ts.map +1 -1
  26. package/dist/types/SchemaVersionBuilder.d.ts +6 -0
  27. package/dist/types/SchemaVersionBuilder.d.ts.map +1 -1
  28. package/dist/types/SnapshotManager.d.ts.map +1 -1
  29. package/dist/types/SystemClient.d.ts.map +1 -1
  30. package/dist/types/migrations.d.ts.map +1 -1
  31. package/dist/types/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +6 -6
  33. package/src/MigrationCreator.ts +1 -2
  34. package/src/SchemaVersionBuilder.ts +26 -8
  35. package/tests/cases/unit/MigrationCreator.test.ts +50 -0
  36. package/tests/cases/unit/SchemaVersionBuilder.test.ts +69 -2
@@ -18,7 +18,6 @@ class MigrationCreator {
18
18
  return filename;
19
19
  }
20
20
  async prepareMigration(initialSchema, newSchema, migrationName, { skipInitialSchemaValidation = false, skipNonModelDiffers = false, recreateViews = false } = {}) {
21
- await this.migrationFilesManager.createDirIfNotExist();
22
21
  const modifications = this.schemaDiffer.diffSchemas(initialSchema, newSchema, { skipInitialSchemaValidation, skipNonModelDiffers, recreateViews });
23
22
  if (modifications.length === 0) {
24
23
  return null;
@@ -27,6 +26,7 @@ class MigrationCreator {
27
26
  return { initialSchema, migration };
28
27
  }
29
28
  async saveMigration(migration) {
29
+ await this.migrationFilesManager.createDirIfNotExist();
30
30
  const jsonDiff = MigrationCreator.createContent(migration);
31
31
  const filename = await this.migrationFilesManager.createFile(jsonDiff, migration.name);
32
32
  return filename;
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationCreator.cjs","sources":["../../../../packages/migrations-client/src/MigrationCreator.ts"],"sourcesContent":["import { MigrationFilesManager } from './MigrationFilesManager.js'\nimport { Schema } from '@contember/schema'\nimport { Migration, SchemaDiffer, VERSION_LATEST } from '@contember/schema-migrations'\nimport { MigrationVersionHelper } from '@contember/engine-common'\n\nexport class MigrationCreator {\n\tconstructor(\n\t\tprivate readonly migrationFilesManager: MigrationFilesManager,\n\t\tprivate readonly schemaDiffer: SchemaDiffer,\n\t\tprivate readonly emptyTemplates: Record<string, string> = {},\n\t) {}\n\n\tasync createEmptyMigrationFile(migrationName: string, format: string): Promise<string> {\n\t\tif (!this.emptyTemplates.hasOwnProperty(format)) {\n\t\t\tthrow new Error(`Unknown format ${format}`)\n\t\t}\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\t\tconst [, fullName] = MigrationVersionHelper.createVersion(migrationName)\n\t\tconst filename = await this.migrationFilesManager.createFile(this.emptyTemplates[format], fullName, format)\n\n\t\treturn filename\n\t}\n\n\tasync prepareMigration(\n\t\tinitialSchema: Schema,\n\t\tnewSchema: Schema,\n\t\tmigrationName: string,\n\t\t{ skipInitialSchemaValidation = false, skipNonModelDiffers = false, recreateViews = false }: {\n\t\t\tskipInitialSchemaValidation?: boolean\n\t\t\tskipNonModelDiffers?: boolean\n\t\t\trecreateViews?: boolean\n\t\t} = {},\n\t): Promise<{ migration: Migration; initialSchema: Schema } | null> {\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\n\t\tconst modifications = this.schemaDiffer.diffSchemas(initialSchema, newSchema, { skipInitialSchemaValidation, skipNonModelDiffers, recreateViews })\n\t\tif (modifications.length === 0) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst migration = this.createMigration(modifications, migrationName)\n\n\t\treturn { initialSchema, migration }\n\t}\n\n\tasync saveMigration(migration: Migration): Promise<string> {\n\t\tconst jsonDiff = MigrationCreator.createContent(migration)\n\t\tconst filename = await this.migrationFilesManager.createFile(jsonDiff, migration.name)\n\t\treturn filename\n\t}\n\n\tasync removeMigration(name: string): Promise<void> {\n\t\tawait this.migrationFilesManager.removeFile(name)\n\t}\n\n\tprivate createMigration(modifications: Migration.Modification[], name: string): Migration {\n\t\tconst [version, fullName] = MigrationVersionHelper.createVersion(name)\n\t\treturn { formatVersion: VERSION_LATEST, modifications, version, name: fullName }\n\t}\n\n\tpublic static createContent({ modifications, formatVersion }: Migration): string {\n\t\treturn JSON.stringify({ formatVersion, modifications }, undefined, '\\t') + '\\n'\n\t}\n}\n"],"names":["MigrationVersionHelper","VERSION_LATEST"],"mappings":";;;;AAKO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,uBACA,cACA,iBAAyC,CAAA,GACzD;AAHgB,SAAA,wBAAA;AACA,SAAA,eAAA;AACA,SAAA,iBAAA;AAAA,EACf;AAAA,EAEH,MAAM,yBAAyB,eAAuB,QAAiC;AACtF,QAAI,CAAC,KAAK,eAAe,eAAe,MAAM,GAAG;AAChD,YAAM,IAAI,MAAM,kBAAkB,MAAM,EAAE;AAAA,IAC3C;AACA,UAAM,KAAK,sBAAsB,oBAAA;AACjC,UAAM,CAAA,EAAG,QAAQ,IAAIA,oCAAuB,cAAc,aAAa;AACvE,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,KAAK,eAAe,MAAM,GAAG,UAAU,MAAM;AAE1G,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,iBACL,eACA,WACA,eACA,EAAE,8BAA8B,OAAO,sBAAsB,OAAO,gBAAgB,MAAA,IAIhF,CAAA,GAC8D;AAClE,UAAM,KAAK,sBAAsB,oBAAA;AAEjC,UAAM,gBAAgB,KAAK,aAAa,YAAY,eAAe,WAAW,EAAE,6BAA6B,qBAAqB,eAAe;AACjJ,QAAI,cAAc,WAAW,GAAG;AAC/B,aAAO;AAAA,IACR;AAEA,UAAM,YAAY,KAAK,gBAAgB,eAAe,aAAa;AAEnE,WAAO,EAAE,eAAe,UAAA;AAAA,EACzB;AAAA,EAEA,MAAM,cAAc,WAAuC;AAC1D,UAAM,WAAW,iBAAiB,cAAc,SAAS;AACzD,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,UAAU,UAAU,IAAI;AACrF,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,gBAAgB,MAA6B;AAClD,UAAM,KAAK,sBAAsB,WAAW,IAAI;AAAA,EACjD;AAAA,EAEQ,gBAAgB,eAAyC,MAAyB;AACzF,UAAM,CAAC,SAAS,QAAQ,IAAIA,aAAAA,uBAAuB,cAAc,IAAI;AACrE,WAAO,EAAE,eAAeC,iBAAAA,gBAAgB,eAAe,SAAS,MAAM,SAAA;AAAA,EACvE;AAAA,EAEA,OAAc,cAAc,EAAE,eAAe,iBAAoC;AAChF,WAAO,KAAK,UAAU,EAAE,eAAe,iBAAiB,QAAW,GAAI,IAAI;AAAA,EAC5E;AACD;;"}
1
+ {"version":3,"file":"MigrationCreator.cjs","sources":["../../../../packages/migrations-client/src/MigrationCreator.ts"],"sourcesContent":["import { MigrationFilesManager } from './MigrationFilesManager.js'\nimport { Schema } from '@contember/schema'\nimport { Migration, SchemaDiffer, VERSION_LATEST } from '@contember/schema-migrations'\nimport { MigrationVersionHelper } from '@contember/engine-common'\n\nexport class MigrationCreator {\n\tconstructor(\n\t\tprivate readonly migrationFilesManager: MigrationFilesManager,\n\t\tprivate readonly schemaDiffer: SchemaDiffer,\n\t\tprivate readonly emptyTemplates: Record<string, string> = {},\n\t) {}\n\n\tasync createEmptyMigrationFile(migrationName: string, format: string): Promise<string> {\n\t\tif (!this.emptyTemplates.hasOwnProperty(format)) {\n\t\t\tthrow new Error(`Unknown format ${format}`)\n\t\t}\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\t\tconst [, fullName] = MigrationVersionHelper.createVersion(migrationName)\n\t\tconst filename = await this.migrationFilesManager.createFile(this.emptyTemplates[format], fullName, format)\n\n\t\treturn filename\n\t}\n\n\tasync prepareMigration(\n\t\tinitialSchema: Schema,\n\t\tnewSchema: Schema,\n\t\tmigrationName: string,\n\t\t{ skipInitialSchemaValidation = false, skipNonModelDiffers = false, recreateViews = false }: {\n\t\t\tskipInitialSchemaValidation?: boolean\n\t\t\tskipNonModelDiffers?: boolean\n\t\t\trecreateViews?: boolean\n\t\t} = {},\n\t): Promise<{ migration: Migration; initialSchema: Schema } | null> {\n\t\tconst modifications = this.schemaDiffer.diffSchemas(initialSchema, newSchema, { skipInitialSchemaValidation, skipNonModelDiffers, recreateViews })\n\t\tif (modifications.length === 0) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst migration = this.createMigration(modifications, migrationName)\n\n\t\treturn { initialSchema, migration }\n\t}\n\n\tasync saveMigration(migration: Migration): Promise<string> {\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\t\tconst jsonDiff = MigrationCreator.createContent(migration)\n\t\tconst filename = await this.migrationFilesManager.createFile(jsonDiff, migration.name)\n\t\treturn filename\n\t}\n\n\tasync removeMigration(name: string): Promise<void> {\n\t\tawait this.migrationFilesManager.removeFile(name)\n\t}\n\n\tprivate createMigration(modifications: Migration.Modification[], name: string): Migration {\n\t\tconst [version, fullName] = MigrationVersionHelper.createVersion(name)\n\t\treturn { formatVersion: VERSION_LATEST, modifications, version, name: fullName }\n\t}\n\n\tpublic static createContent({ modifications, formatVersion }: Migration): string {\n\t\treturn JSON.stringify({ formatVersion, modifications }, undefined, '\\t') + '\\n'\n\t}\n}\n"],"names":["MigrationVersionHelper","VERSION_LATEST"],"mappings":";;;;AAKO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,uBACA,cACA,iBAAyC,CAAA,GACzD;AAHgB,SAAA,wBAAA;AACA,SAAA,eAAA;AACA,SAAA,iBAAA;AAAA,EACf;AAAA,EAEH,MAAM,yBAAyB,eAAuB,QAAiC;AACtF,QAAI,CAAC,KAAK,eAAe,eAAe,MAAM,GAAG;AAChD,YAAM,IAAI,MAAM,kBAAkB,MAAM,EAAE;AAAA,IAC3C;AACA,UAAM,KAAK,sBAAsB,oBAAA;AACjC,UAAM,CAAA,EAAG,QAAQ,IAAIA,oCAAuB,cAAc,aAAa;AACvE,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,KAAK,eAAe,MAAM,GAAG,UAAU,MAAM;AAE1G,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,iBACL,eACA,WACA,eACA,EAAE,8BAA8B,OAAO,sBAAsB,OAAO,gBAAgB,MAAA,IAIhF,CAAA,GAC8D;AAClE,UAAM,gBAAgB,KAAK,aAAa,YAAY,eAAe,WAAW,EAAE,6BAA6B,qBAAqB,eAAe;AACjJ,QAAI,cAAc,WAAW,GAAG;AAC/B,aAAO;AAAA,IACR;AAEA,UAAM,YAAY,KAAK,gBAAgB,eAAe,aAAa;AAEnE,WAAO,EAAE,eAAe,UAAA;AAAA,EACzB;AAAA,EAEA,MAAM,cAAc,WAAuC;AAC1D,UAAM,KAAK,sBAAsB,oBAAA;AACjC,UAAM,WAAW,iBAAiB,cAAc,SAAS;AACzD,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,UAAU,UAAU,IAAI;AACrF,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,gBAAgB,MAA6B;AAClD,UAAM,KAAK,sBAAsB,WAAW,IAAI;AAAA,EACjD;AAAA,EAEQ,gBAAgB,eAAyC,MAAyB;AACzF,UAAM,CAAC,SAAS,QAAQ,IAAIA,aAAAA,uBAAuB,cAAc,IAAI;AACrE,WAAO,EAAE,eAAeC,iBAAAA,gBAAgB,eAAe,SAAS,MAAM,SAAA;AAAA,EACvE;AAAA,EAEA,OAAc,cAAc,EAAE,eAAe,iBAAoC;AAChF,WAAO,KAAK,UAAU,EAAE,eAAe,iBAAiB,QAAW,GAAI,IAAI;AAAA,EAC5E;AACD;;"}
@@ -16,7 +16,6 @@ class MigrationCreator {
16
16
  return filename;
17
17
  }
18
18
  async prepareMigration(initialSchema, newSchema, migrationName, { skipInitialSchemaValidation = false, skipNonModelDiffers = false, recreateViews = false } = {}) {
19
- await this.migrationFilesManager.createDirIfNotExist();
20
19
  const modifications = this.schemaDiffer.diffSchemas(initialSchema, newSchema, { skipInitialSchemaValidation, skipNonModelDiffers, recreateViews });
21
20
  if (modifications.length === 0) {
22
21
  return null;
@@ -25,6 +24,7 @@ class MigrationCreator {
25
24
  return { initialSchema, migration };
26
25
  }
27
26
  async saveMigration(migration) {
27
+ await this.migrationFilesManager.createDirIfNotExist();
28
28
  const jsonDiff = MigrationCreator.createContent(migration);
29
29
  const filename = await this.migrationFilesManager.createFile(jsonDiff, migration.name);
30
30
  return filename;
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationCreator.js","sources":["../../../../packages/migrations-client/src/MigrationCreator.ts"],"sourcesContent":["import { MigrationFilesManager } from './MigrationFilesManager.js'\nimport { Schema } from '@contember/schema'\nimport { Migration, SchemaDiffer, VERSION_LATEST } from '@contember/schema-migrations'\nimport { MigrationVersionHelper } from '@contember/engine-common'\n\nexport class MigrationCreator {\n\tconstructor(\n\t\tprivate readonly migrationFilesManager: MigrationFilesManager,\n\t\tprivate readonly schemaDiffer: SchemaDiffer,\n\t\tprivate readonly emptyTemplates: Record<string, string> = {},\n\t) {}\n\n\tasync createEmptyMigrationFile(migrationName: string, format: string): Promise<string> {\n\t\tif (!this.emptyTemplates.hasOwnProperty(format)) {\n\t\t\tthrow new Error(`Unknown format ${format}`)\n\t\t}\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\t\tconst [, fullName] = MigrationVersionHelper.createVersion(migrationName)\n\t\tconst filename = await this.migrationFilesManager.createFile(this.emptyTemplates[format], fullName, format)\n\n\t\treturn filename\n\t}\n\n\tasync prepareMigration(\n\t\tinitialSchema: Schema,\n\t\tnewSchema: Schema,\n\t\tmigrationName: string,\n\t\t{ skipInitialSchemaValidation = false, skipNonModelDiffers = false, recreateViews = false }: {\n\t\t\tskipInitialSchemaValidation?: boolean\n\t\t\tskipNonModelDiffers?: boolean\n\t\t\trecreateViews?: boolean\n\t\t} = {},\n\t): Promise<{ migration: Migration; initialSchema: Schema } | null> {\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\n\t\tconst modifications = this.schemaDiffer.diffSchemas(initialSchema, newSchema, { skipInitialSchemaValidation, skipNonModelDiffers, recreateViews })\n\t\tif (modifications.length === 0) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst migration = this.createMigration(modifications, migrationName)\n\n\t\treturn { initialSchema, migration }\n\t}\n\n\tasync saveMigration(migration: Migration): Promise<string> {\n\t\tconst jsonDiff = MigrationCreator.createContent(migration)\n\t\tconst filename = await this.migrationFilesManager.createFile(jsonDiff, migration.name)\n\t\treturn filename\n\t}\n\n\tasync removeMigration(name: string): Promise<void> {\n\t\tawait this.migrationFilesManager.removeFile(name)\n\t}\n\n\tprivate createMigration(modifications: Migration.Modification[], name: string): Migration {\n\t\tconst [version, fullName] = MigrationVersionHelper.createVersion(name)\n\t\treturn { formatVersion: VERSION_LATEST, modifications, version, name: fullName }\n\t}\n\n\tpublic static createContent({ modifications, formatVersion }: Migration): string {\n\t\treturn JSON.stringify({ formatVersion, modifications }, undefined, '\\t') + '\\n'\n\t}\n}\n"],"names":[],"mappings":";;AAKO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,uBACA,cACA,iBAAyC,CAAA,GACzD;AAHgB,SAAA,wBAAA;AACA,SAAA,eAAA;AACA,SAAA,iBAAA;AAAA,EACf;AAAA,EAEH,MAAM,yBAAyB,eAAuB,QAAiC;AACtF,QAAI,CAAC,KAAK,eAAe,eAAe,MAAM,GAAG;AAChD,YAAM,IAAI,MAAM,kBAAkB,MAAM,EAAE;AAAA,IAC3C;AACA,UAAM,KAAK,sBAAsB,oBAAA;AACjC,UAAM,CAAA,EAAG,QAAQ,IAAI,uBAAuB,cAAc,aAAa;AACvE,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,KAAK,eAAe,MAAM,GAAG,UAAU,MAAM;AAE1G,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,iBACL,eACA,WACA,eACA,EAAE,8BAA8B,OAAO,sBAAsB,OAAO,gBAAgB,MAAA,IAIhF,CAAA,GAC8D;AAClE,UAAM,KAAK,sBAAsB,oBAAA;AAEjC,UAAM,gBAAgB,KAAK,aAAa,YAAY,eAAe,WAAW,EAAE,6BAA6B,qBAAqB,eAAe;AACjJ,QAAI,cAAc,WAAW,GAAG;AAC/B,aAAO;AAAA,IACR;AAEA,UAAM,YAAY,KAAK,gBAAgB,eAAe,aAAa;AAEnE,WAAO,EAAE,eAAe,UAAA;AAAA,EACzB;AAAA,EAEA,MAAM,cAAc,WAAuC;AAC1D,UAAM,WAAW,iBAAiB,cAAc,SAAS;AACzD,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,UAAU,UAAU,IAAI;AACrF,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,gBAAgB,MAA6B;AAClD,UAAM,KAAK,sBAAsB,WAAW,IAAI;AAAA,EACjD;AAAA,EAEQ,gBAAgB,eAAyC,MAAyB;AACzF,UAAM,CAAC,SAAS,QAAQ,IAAI,uBAAuB,cAAc,IAAI;AACrE,WAAO,EAAE,eAAe,gBAAgB,eAAe,SAAS,MAAM,SAAA;AAAA,EACvE;AAAA,EAEA,OAAc,cAAc,EAAE,eAAe,iBAAoC;AAChF,WAAO,KAAK,UAAU,EAAE,eAAe,iBAAiB,QAAW,GAAI,IAAI;AAAA,EAC5E;AACD;"}
1
+ {"version":3,"file":"MigrationCreator.js","sources":["../../../../packages/migrations-client/src/MigrationCreator.ts"],"sourcesContent":["import { MigrationFilesManager } from './MigrationFilesManager.js'\nimport { Schema } from '@contember/schema'\nimport { Migration, SchemaDiffer, VERSION_LATEST } from '@contember/schema-migrations'\nimport { MigrationVersionHelper } from '@contember/engine-common'\n\nexport class MigrationCreator {\n\tconstructor(\n\t\tprivate readonly migrationFilesManager: MigrationFilesManager,\n\t\tprivate readonly schemaDiffer: SchemaDiffer,\n\t\tprivate readonly emptyTemplates: Record<string, string> = {},\n\t) {}\n\n\tasync createEmptyMigrationFile(migrationName: string, format: string): Promise<string> {\n\t\tif (!this.emptyTemplates.hasOwnProperty(format)) {\n\t\t\tthrow new Error(`Unknown format ${format}`)\n\t\t}\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\t\tconst [, fullName] = MigrationVersionHelper.createVersion(migrationName)\n\t\tconst filename = await this.migrationFilesManager.createFile(this.emptyTemplates[format], fullName, format)\n\n\t\treturn filename\n\t}\n\n\tasync prepareMigration(\n\t\tinitialSchema: Schema,\n\t\tnewSchema: Schema,\n\t\tmigrationName: string,\n\t\t{ skipInitialSchemaValidation = false, skipNonModelDiffers = false, recreateViews = false }: {\n\t\t\tskipInitialSchemaValidation?: boolean\n\t\t\tskipNonModelDiffers?: boolean\n\t\t\trecreateViews?: boolean\n\t\t} = {},\n\t): Promise<{ migration: Migration; initialSchema: Schema } | null> {\n\t\tconst modifications = this.schemaDiffer.diffSchemas(initialSchema, newSchema, { skipInitialSchemaValidation, skipNonModelDiffers, recreateViews })\n\t\tif (modifications.length === 0) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst migration = this.createMigration(modifications, migrationName)\n\n\t\treturn { initialSchema, migration }\n\t}\n\n\tasync saveMigration(migration: Migration): Promise<string> {\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\t\tconst jsonDiff = MigrationCreator.createContent(migration)\n\t\tconst filename = await this.migrationFilesManager.createFile(jsonDiff, migration.name)\n\t\treturn filename\n\t}\n\n\tasync removeMigration(name: string): Promise<void> {\n\t\tawait this.migrationFilesManager.removeFile(name)\n\t}\n\n\tprivate createMigration(modifications: Migration.Modification[], name: string): Migration {\n\t\tconst [version, fullName] = MigrationVersionHelper.createVersion(name)\n\t\treturn { formatVersion: VERSION_LATEST, modifications, version, name: fullName }\n\t}\n\n\tpublic static createContent({ modifications, formatVersion }: Migration): string {\n\t\treturn JSON.stringify({ formatVersion, modifications }, undefined, '\\t') + '\\n'\n\t}\n}\n"],"names":[],"mappings":";;AAKO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,uBACA,cACA,iBAAyC,CAAA,GACzD;AAHgB,SAAA,wBAAA;AACA,SAAA,eAAA;AACA,SAAA,iBAAA;AAAA,EACf;AAAA,EAEH,MAAM,yBAAyB,eAAuB,QAAiC;AACtF,QAAI,CAAC,KAAK,eAAe,eAAe,MAAM,GAAG;AAChD,YAAM,IAAI,MAAM,kBAAkB,MAAM,EAAE;AAAA,IAC3C;AACA,UAAM,KAAK,sBAAsB,oBAAA;AACjC,UAAM,CAAA,EAAG,QAAQ,IAAI,uBAAuB,cAAc,aAAa;AACvE,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,KAAK,eAAe,MAAM,GAAG,UAAU,MAAM;AAE1G,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,iBACL,eACA,WACA,eACA,EAAE,8BAA8B,OAAO,sBAAsB,OAAO,gBAAgB,MAAA,IAIhF,CAAA,GAC8D;AAClE,UAAM,gBAAgB,KAAK,aAAa,YAAY,eAAe,WAAW,EAAE,6BAA6B,qBAAqB,eAAe;AACjJ,QAAI,cAAc,WAAW,GAAG;AAC/B,aAAO;AAAA,IACR;AAEA,UAAM,YAAY,KAAK,gBAAgB,eAAe,aAAa;AAEnE,WAAO,EAAE,eAAe,UAAA;AAAA,EACzB;AAAA,EAEA,MAAM,cAAc,WAAuC;AAC1D,UAAM,KAAK,sBAAsB,oBAAA;AACjC,UAAM,WAAW,iBAAiB,cAAc,SAAS;AACzD,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,UAAU,UAAU,IAAI;AACrF,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,gBAAgB,MAA6B;AAClD,UAAM,KAAK,sBAAsB,WAAW,IAAI;AAAA,EACjD;AAAA,EAEQ,gBAAgB,eAAyC,MAAyB;AACzF,UAAM,CAAC,SAAS,QAAQ,IAAI,uBAAuB,cAAc,IAAI;AACrE,WAAO,EAAE,eAAe,gBAAgB,eAAe,SAAS,MAAM,SAAA;AAAA,EACvE;AAAA,EAEA,OAAc,cAAc,EAAE,eAAe,iBAAoC;AAChF,WAAO,KAAK,UAAU,EAAE,eAAe,iBAAiB,QAAW,GAAI,IAAI;AAAA,EAC5E;AACD;"}
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const schemaUtils = require("@contember/schema-utils");
4
+ var __defProp = Object.defineProperty;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "", value);
4
7
  class SchemaVersionBuilder {
5
8
  constructor(migrationsResolver, schemaMigrator, schemaStateManager) {
6
9
  this.migrationsResolver = migrationsResolver;
7
10
  this.schemaMigrator = schemaMigrator;
8
11
  this.schemaStateManager = schemaStateManager;
12
+ __publicField(this, "lastBuildUntil", null);
9
13
  }
10
14
  async buildSchema(targetVersion) {
11
15
  let schema = await this.buildSchemaAdvanced(schemaUtils.emptySchema, (version) => !targetVersion || version <= targetVersion);
@@ -15,14 +19,28 @@ class SchemaVersionBuilder {
15
19
  }
16
20
  return schema;
17
21
  }
22
+ /**
23
+ * Content migrations call this once each, with ascending versions. Continuing from the previous
24
+ * build keeps a run linear instead of replaying every schema migration from scratch each time.
25
+ */
18
26
  async buildSchemaUntil(targetVersion) {
19
- return this.buildSchemaAdvanced(schemaUtils.emptySchema, (version) => version < targetVersion);
27
+ const migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => version < targetVersion);
28
+ const previous = this.lastBuildUntil;
29
+ const canContinue = previous !== null && previous.migrations.length <= migrations.length && previous.migrations.every((migration, index) => migration === migrations[index]);
30
+ const start = canContinue ? previous : { migrations: [], schema: schemaUtils.emptySchema };
31
+ const schema = this.applyMigrations(start.schema, migrations.slice(start.migrations.length));
32
+ this.lastBuildUntil = { migrations, schema };
33
+ return schema;
20
34
  }
21
35
  async continue(schema, previousVersion, targetVersion) {
22
36
  return this.buildSchemaAdvanced(schema, (version) => version <= targetVersion && version > (previousVersion || ""));
23
37
  }
24
38
  async buildSchemaAdvanced(initialSchema, condition) {
25
- return (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => condition(version)).reduce(
39
+ const migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => condition(version));
40
+ return this.applyMigrations(initialSchema, migrations);
41
+ }
42
+ applyMigrations(initialSchema, migrations) {
43
+ return migrations.reduce(
26
44
  (schema, { modifications, formatVersion }) => this.schemaMigrator.applyModifications(schema, modifications, formatVersion),
27
45
  initialSchema
28
46
  );
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaVersionBuilder.cjs","sources":["../../../../packages/migrations-client/src/SchemaVersionBuilder.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { emptySchema } from '@contember/schema-utils'\nimport { SchemaMigrator } from '@contember/schema-migrations'\nimport { MigrationsResolver } from './MigrationsResolver.js'\nimport { SchemaStateManager } from './SchemaStateManager.js'\n\nexport class SchemaVersionBuilder {\n\tconstructor(\n\t\tprivate readonly migrationsResolver: MigrationsResolver,\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly schemaStateManager: SchemaStateManager,\n\t) {}\n\n\tasync buildSchema(targetVersion?: string): Promise<Schema> {\n\t\tlet schema = await this.buildSchemaAdvanced(emptySchema, version => !targetVersion || version <= targetVersion)\n\t\tif (!targetVersion && await this.schemaStateManager.isStateMode()) {\n\t\t\tconst state = await this.schemaStateManager.readState()\n\t\t\tschema = { ...schema, ...state }\n\t\t}\n\t\treturn schema\n\t}\n\n\tasync buildSchemaUntil(targetVersion: string): Promise<Schema> {\n\t\treturn this.buildSchemaAdvanced(emptySchema, version => version < targetVersion)\n\t}\n\n\tasync continue(schema: Schema, previousVersion: string | null, targetVersion: string): Promise<Schema> {\n\t\treturn this.buildSchemaAdvanced(schema, version => version <= targetVersion && version > (previousVersion || ''))\n\t}\n\n\tpublic async buildSchemaAdvanced(initialSchema: Schema, condition: (version: string) => boolean): Promise<Schema> {\n\t\treturn (await this.migrationsResolver.getSchemaMigrations())\n\t\t\t.filter(({ version }) => condition(version))\n\t\t\t.reduce<Schema>(\n\t\t\t\t(schema, { modifications, formatVersion }) => this.schemaMigrator.applyModifications(schema, modifications, formatVersion),\n\t\t\t\tinitialSchema,\n\t\t\t)\n\t}\n}\n"],"names":["emptySchema"],"mappings":";;;AAMO,MAAM,qBAAqB;AAAA,EACjC,YACkB,oBACA,gBACA,oBAChB;AAHgB,SAAA,qBAAA;AACA,SAAA,iBAAA;AACA,SAAA,qBAAA;AAAA,EACf;AAAA,EAEH,MAAM,YAAY,eAAyC;AAC1D,QAAI,SAAS,MAAM,KAAK,oBAAoBA,YAAAA,aAAa,CAAA,YAAW,CAAC,iBAAiB,WAAW,aAAa;AAC9G,QAAI,CAAC,iBAAiB,MAAM,KAAK,mBAAmB,eAAe;AAClE,YAAM,QAAQ,MAAM,KAAK,mBAAmB,UAAA;AAC5C,eAAS,EAAE,GAAG,QAAQ,GAAG,MAAA;AAAA,IAC1B;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,iBAAiB,eAAwC;AAC9D,WAAO,KAAK,oBAAoBA,YAAAA,aAAa,CAAA,YAAW,UAAU,aAAa;AAAA,EAChF;AAAA,EAEA,MAAM,SAAS,QAAgB,iBAAgC,eAAwC;AACtG,WAAO,KAAK,oBAAoB,QAAQ,CAAA,YAAW,WAAW,iBAAiB,WAAW,mBAAmB,GAAG;AAAA,EACjH;AAAA,EAEA,MAAa,oBAAoB,eAAuB,WAA0D;AACjH,YAAQ,MAAM,KAAK,mBAAmB,oBAAA,GACpC,OAAO,CAAC,EAAE,QAAA,MAAc,UAAU,OAAO,CAAC,EAC1C;AAAA,MACA,CAAC,QAAQ,EAAE,eAAe,oBAAoB,KAAK,eAAe,mBAAmB,QAAQ,eAAe,aAAa;AAAA,MACzH;AAAA,IAAA;AAAA,EAEH;AACD;;"}
1
+ {"version":3,"file":"SchemaVersionBuilder.cjs","sources":["../../../../packages/migrations-client/src/SchemaVersionBuilder.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { emptySchema } from '@contember/schema-utils'\nimport { Migration, SchemaMigrator } from '@contember/schema-migrations'\nimport { MigrationsResolver } from './MigrationsResolver.js'\nimport { SchemaStateManager } from './SchemaStateManager.js'\n\nexport class SchemaVersionBuilder {\n\tprivate lastBuildUntil: { migrations: Migration[]; schema: Schema } | null = null\n\n\tconstructor(\n\t\tprivate readonly migrationsResolver: MigrationsResolver,\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly schemaStateManager: SchemaStateManager,\n\t) {}\n\n\tasync buildSchema(targetVersion?: string): Promise<Schema> {\n\t\tlet schema = await this.buildSchemaAdvanced(emptySchema, version => !targetVersion || version <= targetVersion)\n\t\tif (!targetVersion && await this.schemaStateManager.isStateMode()) {\n\t\t\tconst state = await this.schemaStateManager.readState()\n\t\t\tschema = { ...schema, ...state }\n\t\t}\n\t\treturn schema\n\t}\n\n\t/**\n\t * Content migrations call this once each, with ascending versions. Continuing from the previous\n\t * build keeps a run linear instead of replaying every schema migration from scratch each time.\n\t */\n\tasync buildSchemaUntil(targetVersion: string): Promise<Schema> {\n\t\tconst migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => version < targetVersion)\n\t\tconst previous = this.lastBuildUntil\n\t\tconst canContinue = previous !== null\n\t\t\t&& previous.migrations.length <= migrations.length\n\t\t\t&& previous.migrations.every((migration, index) => migration === migrations[index])\n\t\tconst start = canContinue ? previous : { migrations: [], schema: emptySchema }\n\n\t\tconst schema = this.applyMigrations(start.schema, migrations.slice(start.migrations.length))\n\t\tthis.lastBuildUntil = { migrations, schema }\n\t\treturn schema\n\t}\n\n\tasync continue(schema: Schema, previousVersion: string | null, targetVersion: string): Promise<Schema> {\n\t\treturn this.buildSchemaAdvanced(schema, version => version <= targetVersion && version > (previousVersion || ''))\n\t}\n\n\tpublic async buildSchemaAdvanced(initialSchema: Schema, condition: (version: string) => boolean): Promise<Schema> {\n\t\tconst migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => condition(version))\n\t\treturn this.applyMigrations(initialSchema, migrations)\n\t}\n\n\tprivate applyMigrations(initialSchema: Schema, migrations: Migration[]): Schema {\n\t\treturn migrations.reduce<Schema>(\n\t\t\t(schema, { modifications, formatVersion }) => this.schemaMigrator.applyModifications(schema, modifications, formatVersion),\n\t\t\tinitialSchema,\n\t\t)\n\t}\n}\n"],"names":["emptySchema"],"mappings":";;;;;;AAMO,MAAM,qBAAqB;AAAA,EAGjC,YACkB,oBACA,gBACA,oBAChB;AAHgB,SAAA,qBAAA;AACA,SAAA,iBAAA;AACA,SAAA,qBAAA;AALlB,kBAAA,MAAQ,kBAAqE,IAAA;AAAA,EAM1E;AAAA,EAEH,MAAM,YAAY,eAAyC;AAC1D,QAAI,SAAS,MAAM,KAAK,oBAAoBA,YAAAA,aAAa,CAAA,YAAW,CAAC,iBAAiB,WAAW,aAAa;AAC9G,QAAI,CAAC,iBAAiB,MAAM,KAAK,mBAAmB,eAAe;AAClE,YAAM,QAAQ,MAAM,KAAK,mBAAmB,UAAA;AAC5C,eAAS,EAAE,GAAG,QAAQ,GAAG,MAAA;AAAA,IAC1B;AACA,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,eAAwC;AAC9D,UAAM,cAAc,MAAM,KAAK,mBAAmB,oBAAA,GAAuB,OAAO,CAAC,EAAE,cAAc,UAAU,aAAa;AACxH,UAAM,WAAW,KAAK;AACtB,UAAM,cAAc,aAAa,QAC7B,SAAS,WAAW,UAAU,WAAW,UACzC,SAAS,WAAW,MAAM,CAAC,WAAW,UAAU,cAAc,WAAW,KAAK,CAAC;AACnF,UAAM,QAAQ,cAAc,WAAW,EAAE,YAAY,CAAA,GAAI,QAAQA,wBAAA;AAEjE,UAAM,SAAS,KAAK,gBAAgB,MAAM,QAAQ,WAAW,MAAM,MAAM,WAAW,MAAM,CAAC;AAC3F,SAAK,iBAAiB,EAAE,YAAY,OAAA;AACpC,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,SAAS,QAAgB,iBAAgC,eAAwC;AACtG,WAAO,KAAK,oBAAoB,QAAQ,CAAA,YAAW,WAAW,iBAAiB,WAAW,mBAAmB,GAAG;AAAA,EACjH;AAAA,EAEA,MAAa,oBAAoB,eAAuB,WAA0D;AACjH,UAAM,cAAc,MAAM,KAAK,mBAAmB,oBAAA,GAAuB,OAAO,CAAC,EAAE,QAAA,MAAc,UAAU,OAAO,CAAC;AACnH,WAAO,KAAK,gBAAgB,eAAe,UAAU;AAAA,EACtD;AAAA,EAEQ,gBAAgB,eAAuB,YAAiC;AAC/E,WAAO,WAAW;AAAA,MACjB,CAAC,QAAQ,EAAE,eAAe,oBAAoB,KAAK,eAAe,mBAAmB,QAAQ,eAAe,aAAa;AAAA,MACzH;AAAA,IAAA;AAAA,EAEF;AACD;;"}
@@ -1,9 +1,13 @@
1
1
  import { emptySchema } from "@contember/schema-utils";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "", value);
2
5
  class SchemaVersionBuilder {
3
6
  constructor(migrationsResolver, schemaMigrator, schemaStateManager) {
4
7
  this.migrationsResolver = migrationsResolver;
5
8
  this.schemaMigrator = schemaMigrator;
6
9
  this.schemaStateManager = schemaStateManager;
10
+ __publicField(this, "lastBuildUntil", null);
7
11
  }
8
12
  async buildSchema(targetVersion) {
9
13
  let schema = await this.buildSchemaAdvanced(emptySchema, (version) => !targetVersion || version <= targetVersion);
@@ -13,14 +17,28 @@ class SchemaVersionBuilder {
13
17
  }
14
18
  return schema;
15
19
  }
20
+ /**
21
+ * Content migrations call this once each, with ascending versions. Continuing from the previous
22
+ * build keeps a run linear instead of replaying every schema migration from scratch each time.
23
+ */
16
24
  async buildSchemaUntil(targetVersion) {
17
- return this.buildSchemaAdvanced(emptySchema, (version) => version < targetVersion);
25
+ const migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => version < targetVersion);
26
+ const previous = this.lastBuildUntil;
27
+ const canContinue = previous !== null && previous.migrations.length <= migrations.length && previous.migrations.every((migration, index) => migration === migrations[index]);
28
+ const start = canContinue ? previous : { migrations: [], schema: emptySchema };
29
+ const schema = this.applyMigrations(start.schema, migrations.slice(start.migrations.length));
30
+ this.lastBuildUntil = { migrations, schema };
31
+ return schema;
18
32
  }
19
33
  async continue(schema, previousVersion, targetVersion) {
20
34
  return this.buildSchemaAdvanced(schema, (version) => version <= targetVersion && version > (previousVersion || ""));
21
35
  }
22
36
  async buildSchemaAdvanced(initialSchema, condition) {
23
- return (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => condition(version)).reduce(
37
+ const migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => condition(version));
38
+ return this.applyMigrations(initialSchema, migrations);
39
+ }
40
+ applyMigrations(initialSchema, migrations) {
41
+ return migrations.reduce(
24
42
  (schema, { modifications, formatVersion }) => this.schemaMigrator.applyModifications(schema, modifications, formatVersion),
25
43
  initialSchema
26
44
  );
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaVersionBuilder.js","sources":["../../../../packages/migrations-client/src/SchemaVersionBuilder.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { emptySchema } from '@contember/schema-utils'\nimport { SchemaMigrator } from '@contember/schema-migrations'\nimport { MigrationsResolver } from './MigrationsResolver.js'\nimport { SchemaStateManager } from './SchemaStateManager.js'\n\nexport class SchemaVersionBuilder {\n\tconstructor(\n\t\tprivate readonly migrationsResolver: MigrationsResolver,\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly schemaStateManager: SchemaStateManager,\n\t) {}\n\n\tasync buildSchema(targetVersion?: string): Promise<Schema> {\n\t\tlet schema = await this.buildSchemaAdvanced(emptySchema, version => !targetVersion || version <= targetVersion)\n\t\tif (!targetVersion && await this.schemaStateManager.isStateMode()) {\n\t\t\tconst state = await this.schemaStateManager.readState()\n\t\t\tschema = { ...schema, ...state }\n\t\t}\n\t\treturn schema\n\t}\n\n\tasync buildSchemaUntil(targetVersion: string): Promise<Schema> {\n\t\treturn this.buildSchemaAdvanced(emptySchema, version => version < targetVersion)\n\t}\n\n\tasync continue(schema: Schema, previousVersion: string | null, targetVersion: string): Promise<Schema> {\n\t\treturn this.buildSchemaAdvanced(schema, version => version <= targetVersion && version > (previousVersion || ''))\n\t}\n\n\tpublic async buildSchemaAdvanced(initialSchema: Schema, condition: (version: string) => boolean): Promise<Schema> {\n\t\treturn (await this.migrationsResolver.getSchemaMigrations())\n\t\t\t.filter(({ version }) => condition(version))\n\t\t\t.reduce<Schema>(\n\t\t\t\t(schema, { modifications, formatVersion }) => this.schemaMigrator.applyModifications(schema, modifications, formatVersion),\n\t\t\t\tinitialSchema,\n\t\t\t)\n\t}\n}\n"],"names":[],"mappings":";AAMO,MAAM,qBAAqB;AAAA,EACjC,YACkB,oBACA,gBACA,oBAChB;AAHgB,SAAA,qBAAA;AACA,SAAA,iBAAA;AACA,SAAA,qBAAA;AAAA,EACf;AAAA,EAEH,MAAM,YAAY,eAAyC;AAC1D,QAAI,SAAS,MAAM,KAAK,oBAAoB,aAAa,CAAA,YAAW,CAAC,iBAAiB,WAAW,aAAa;AAC9G,QAAI,CAAC,iBAAiB,MAAM,KAAK,mBAAmB,eAAe;AAClE,YAAM,QAAQ,MAAM,KAAK,mBAAmB,UAAA;AAC5C,eAAS,EAAE,GAAG,QAAQ,GAAG,MAAA;AAAA,IAC1B;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,iBAAiB,eAAwC;AAC9D,WAAO,KAAK,oBAAoB,aAAa,CAAA,YAAW,UAAU,aAAa;AAAA,EAChF;AAAA,EAEA,MAAM,SAAS,QAAgB,iBAAgC,eAAwC;AACtG,WAAO,KAAK,oBAAoB,QAAQ,CAAA,YAAW,WAAW,iBAAiB,WAAW,mBAAmB,GAAG;AAAA,EACjH;AAAA,EAEA,MAAa,oBAAoB,eAAuB,WAA0D;AACjH,YAAQ,MAAM,KAAK,mBAAmB,oBAAA,GACpC,OAAO,CAAC,EAAE,QAAA,MAAc,UAAU,OAAO,CAAC,EAC1C;AAAA,MACA,CAAC,QAAQ,EAAE,eAAe,oBAAoB,KAAK,eAAe,mBAAmB,QAAQ,eAAe,aAAa;AAAA,MACzH;AAAA,IAAA;AAAA,EAEH;AACD;"}
1
+ {"version":3,"file":"SchemaVersionBuilder.js","sources":["../../../../packages/migrations-client/src/SchemaVersionBuilder.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { emptySchema } from '@contember/schema-utils'\nimport { Migration, SchemaMigrator } from '@contember/schema-migrations'\nimport { MigrationsResolver } from './MigrationsResolver.js'\nimport { SchemaStateManager } from './SchemaStateManager.js'\n\nexport class SchemaVersionBuilder {\n\tprivate lastBuildUntil: { migrations: Migration[]; schema: Schema } | null = null\n\n\tconstructor(\n\t\tprivate readonly migrationsResolver: MigrationsResolver,\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly schemaStateManager: SchemaStateManager,\n\t) {}\n\n\tasync buildSchema(targetVersion?: string): Promise<Schema> {\n\t\tlet schema = await this.buildSchemaAdvanced(emptySchema, version => !targetVersion || version <= targetVersion)\n\t\tif (!targetVersion && await this.schemaStateManager.isStateMode()) {\n\t\t\tconst state = await this.schemaStateManager.readState()\n\t\t\tschema = { ...schema, ...state }\n\t\t}\n\t\treturn schema\n\t}\n\n\t/**\n\t * Content migrations call this once each, with ascending versions. Continuing from the previous\n\t * build keeps a run linear instead of replaying every schema migration from scratch each time.\n\t */\n\tasync buildSchemaUntil(targetVersion: string): Promise<Schema> {\n\t\tconst migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => version < targetVersion)\n\t\tconst previous = this.lastBuildUntil\n\t\tconst canContinue = previous !== null\n\t\t\t&& previous.migrations.length <= migrations.length\n\t\t\t&& previous.migrations.every((migration, index) => migration === migrations[index])\n\t\tconst start = canContinue ? previous : { migrations: [], schema: emptySchema }\n\n\t\tconst schema = this.applyMigrations(start.schema, migrations.slice(start.migrations.length))\n\t\tthis.lastBuildUntil = { migrations, schema }\n\t\treturn schema\n\t}\n\n\tasync continue(schema: Schema, previousVersion: string | null, targetVersion: string): Promise<Schema> {\n\t\treturn this.buildSchemaAdvanced(schema, version => version <= targetVersion && version > (previousVersion || ''))\n\t}\n\n\tpublic async buildSchemaAdvanced(initialSchema: Schema, condition: (version: string) => boolean): Promise<Schema> {\n\t\tconst migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => condition(version))\n\t\treturn this.applyMigrations(initialSchema, migrations)\n\t}\n\n\tprivate applyMigrations(initialSchema: Schema, migrations: Migration[]): Schema {\n\t\treturn migrations.reduce<Schema>(\n\t\t\t(schema, { modifications, formatVersion }) => this.schemaMigrator.applyModifications(schema, modifications, formatVersion),\n\t\t\tinitialSchema,\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;AAMO,MAAM,qBAAqB;AAAA,EAGjC,YACkB,oBACA,gBACA,oBAChB;AAHgB,SAAA,qBAAA;AACA,SAAA,iBAAA;AACA,SAAA,qBAAA;AALlB,kBAAA,MAAQ,kBAAqE,IAAA;AAAA,EAM1E;AAAA,EAEH,MAAM,YAAY,eAAyC;AAC1D,QAAI,SAAS,MAAM,KAAK,oBAAoB,aAAa,CAAA,YAAW,CAAC,iBAAiB,WAAW,aAAa;AAC9G,QAAI,CAAC,iBAAiB,MAAM,KAAK,mBAAmB,eAAe;AAClE,YAAM,QAAQ,MAAM,KAAK,mBAAmB,UAAA;AAC5C,eAAS,EAAE,GAAG,QAAQ,GAAG,MAAA;AAAA,IAC1B;AACA,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,eAAwC;AAC9D,UAAM,cAAc,MAAM,KAAK,mBAAmB,oBAAA,GAAuB,OAAO,CAAC,EAAE,cAAc,UAAU,aAAa;AACxH,UAAM,WAAW,KAAK;AACtB,UAAM,cAAc,aAAa,QAC7B,SAAS,WAAW,UAAU,WAAW,UACzC,SAAS,WAAW,MAAM,CAAC,WAAW,UAAU,cAAc,WAAW,KAAK,CAAC;AACnF,UAAM,QAAQ,cAAc,WAAW,EAAE,YAAY,CAAA,GAAI,QAAQ,YAAA;AAEjE,UAAM,SAAS,KAAK,gBAAgB,MAAM,QAAQ,WAAW,MAAM,MAAM,WAAW,MAAM,CAAC;AAC3F,SAAK,iBAAiB,EAAE,YAAY,OAAA;AACpC,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,SAAS,QAAgB,iBAAgC,eAAwC;AACtG,WAAO,KAAK,oBAAoB,QAAQ,CAAA,YAAW,WAAW,iBAAiB,WAAW,mBAAmB,GAAG;AAAA,EACjH;AAAA,EAEA,MAAa,oBAAoB,eAAuB,WAA0D;AACjH,UAAM,cAAc,MAAM,KAAK,mBAAmB,oBAAA,GAAuB,OAAO,CAAC,EAAE,QAAA,MAAc,UAAU,OAAO,CAAC;AACnH,WAAO,KAAK,gBAAgB,eAAe,UAAU;AAAA,EACtD;AAAA,EAEQ,gBAAgB,eAAuB,YAAiC;AAC/E,WAAO,WAAW;AAAA,MACjB,CAAC,QAAQ,EAAE,eAAe,oBAAoB,KAAK,eAAe,mBAAmB,QAAQ,eAAe,aAAa;AAAA,MACzH;AAAA,IAAA;AAAA,EAEF;AACD;"}
@@ -18,7 +18,6 @@ class MigrationCreator {
18
18
  return filename;
19
19
  }
20
20
  async prepareMigration(initialSchema, newSchema, migrationName, { skipInitialSchemaValidation = false, skipNonModelDiffers = false, recreateViews = false } = {}) {
21
- await this.migrationFilesManager.createDirIfNotExist();
22
21
  const modifications = this.schemaDiffer.diffSchemas(initialSchema, newSchema, { skipInitialSchemaValidation, skipNonModelDiffers, recreateViews });
23
22
  if (modifications.length === 0) {
24
23
  return null;
@@ -27,6 +26,7 @@ class MigrationCreator {
27
26
  return { initialSchema, migration };
28
27
  }
29
28
  async saveMigration(migration) {
29
+ await this.migrationFilesManager.createDirIfNotExist();
30
30
  const jsonDiff = MigrationCreator.createContent(migration);
31
31
  const filename = await this.migrationFilesManager.createFile(jsonDiff, migration.name);
32
32
  return filename;
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationCreator.cjs","sources":["../../../../packages/migrations-client/src/MigrationCreator.ts"],"sourcesContent":["import { MigrationFilesManager } from './MigrationFilesManager.js'\nimport { Schema } from '@contember/schema'\nimport { Migration, SchemaDiffer, VERSION_LATEST } from '@contember/schema-migrations'\nimport { MigrationVersionHelper } from '@contember/engine-common'\n\nexport class MigrationCreator {\n\tconstructor(\n\t\tprivate readonly migrationFilesManager: MigrationFilesManager,\n\t\tprivate readonly schemaDiffer: SchemaDiffer,\n\t\tprivate readonly emptyTemplates: Record<string, string> = {},\n\t) {}\n\n\tasync createEmptyMigrationFile(migrationName: string, format: string): Promise<string> {\n\t\tif (!this.emptyTemplates.hasOwnProperty(format)) {\n\t\t\tthrow new Error(`Unknown format ${format}`)\n\t\t}\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\t\tconst [, fullName] = MigrationVersionHelper.createVersion(migrationName)\n\t\tconst filename = await this.migrationFilesManager.createFile(this.emptyTemplates[format], fullName, format)\n\n\t\treturn filename\n\t}\n\n\tasync prepareMigration(\n\t\tinitialSchema: Schema,\n\t\tnewSchema: Schema,\n\t\tmigrationName: string,\n\t\t{ skipInitialSchemaValidation = false, skipNonModelDiffers = false, recreateViews = false }: {\n\t\t\tskipInitialSchemaValidation?: boolean\n\t\t\tskipNonModelDiffers?: boolean\n\t\t\trecreateViews?: boolean\n\t\t} = {},\n\t): Promise<{ migration: Migration; initialSchema: Schema } | null> {\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\n\t\tconst modifications = this.schemaDiffer.diffSchemas(initialSchema, newSchema, { skipInitialSchemaValidation, skipNonModelDiffers, recreateViews })\n\t\tif (modifications.length === 0) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst migration = this.createMigration(modifications, migrationName)\n\n\t\treturn { initialSchema, migration }\n\t}\n\n\tasync saveMigration(migration: Migration): Promise<string> {\n\t\tconst jsonDiff = MigrationCreator.createContent(migration)\n\t\tconst filename = await this.migrationFilesManager.createFile(jsonDiff, migration.name)\n\t\treturn filename\n\t}\n\n\tasync removeMigration(name: string): Promise<void> {\n\t\tawait this.migrationFilesManager.removeFile(name)\n\t}\n\n\tprivate createMigration(modifications: Migration.Modification[], name: string): Migration {\n\t\tconst [version, fullName] = MigrationVersionHelper.createVersion(name)\n\t\treturn { formatVersion: VERSION_LATEST, modifications, version, name: fullName }\n\t}\n\n\tpublic static createContent({ modifications, formatVersion }: Migration): string {\n\t\treturn JSON.stringify({ formatVersion, modifications }, undefined, '\\t') + '\\n'\n\t}\n}\n"],"names":["MigrationVersionHelper","VERSION_LATEST"],"mappings":";;;;AAKO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,uBACA,cACA,iBAAyC,CAAA,GACzD;AAHgB,SAAA,wBAAA;AACA,SAAA,eAAA;AACA,SAAA,iBAAA;AAAA,EACf;AAAA,EAEH,MAAM,yBAAyB,eAAuB,QAAiC;AACtF,QAAI,CAAC,KAAK,eAAe,eAAe,MAAM,GAAG;AAChD,YAAM,IAAI,MAAM,kBAAkB,MAAM,EAAE;AAAA,IAC3C;AACA,UAAM,KAAK,sBAAsB,oBAAA;AACjC,UAAM,CAAA,EAAG,QAAQ,IAAIA,oCAAuB,cAAc,aAAa;AACvE,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,KAAK,eAAe,MAAM,GAAG,UAAU,MAAM;AAE1G,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,iBACL,eACA,WACA,eACA,EAAE,8BAA8B,OAAO,sBAAsB,OAAO,gBAAgB,MAAA,IAIhF,CAAA,GAC8D;AAClE,UAAM,KAAK,sBAAsB,oBAAA;AAEjC,UAAM,gBAAgB,KAAK,aAAa,YAAY,eAAe,WAAW,EAAE,6BAA6B,qBAAqB,eAAe;AACjJ,QAAI,cAAc,WAAW,GAAG;AAC/B,aAAO;AAAA,IACR;AAEA,UAAM,YAAY,KAAK,gBAAgB,eAAe,aAAa;AAEnE,WAAO,EAAE,eAAe,UAAA;AAAA,EACzB;AAAA,EAEA,MAAM,cAAc,WAAuC;AAC1D,UAAM,WAAW,iBAAiB,cAAc,SAAS;AACzD,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,UAAU,UAAU,IAAI;AACrF,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,gBAAgB,MAA6B;AAClD,UAAM,KAAK,sBAAsB,WAAW,IAAI;AAAA,EACjD;AAAA,EAEQ,gBAAgB,eAAyC,MAAyB;AACzF,UAAM,CAAC,SAAS,QAAQ,IAAIA,aAAAA,uBAAuB,cAAc,IAAI;AACrE,WAAO,EAAE,eAAeC,iBAAAA,gBAAgB,eAAe,SAAS,MAAM,SAAA;AAAA,EACvE;AAAA,EAEA,OAAc,cAAc,EAAE,eAAe,iBAAoC;AAChF,WAAO,KAAK,UAAU,EAAE,eAAe,iBAAiB,QAAW,GAAI,IAAI;AAAA,EAC5E;AACD;;"}
1
+ {"version":3,"file":"MigrationCreator.cjs","sources":["../../../../packages/migrations-client/src/MigrationCreator.ts"],"sourcesContent":["import { MigrationFilesManager } from './MigrationFilesManager.js'\nimport { Schema } from '@contember/schema'\nimport { Migration, SchemaDiffer, VERSION_LATEST } from '@contember/schema-migrations'\nimport { MigrationVersionHelper } from '@contember/engine-common'\n\nexport class MigrationCreator {\n\tconstructor(\n\t\tprivate readonly migrationFilesManager: MigrationFilesManager,\n\t\tprivate readonly schemaDiffer: SchemaDiffer,\n\t\tprivate readonly emptyTemplates: Record<string, string> = {},\n\t) {}\n\n\tasync createEmptyMigrationFile(migrationName: string, format: string): Promise<string> {\n\t\tif (!this.emptyTemplates.hasOwnProperty(format)) {\n\t\t\tthrow new Error(`Unknown format ${format}`)\n\t\t}\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\t\tconst [, fullName] = MigrationVersionHelper.createVersion(migrationName)\n\t\tconst filename = await this.migrationFilesManager.createFile(this.emptyTemplates[format], fullName, format)\n\n\t\treturn filename\n\t}\n\n\tasync prepareMigration(\n\t\tinitialSchema: Schema,\n\t\tnewSchema: Schema,\n\t\tmigrationName: string,\n\t\t{ skipInitialSchemaValidation = false, skipNonModelDiffers = false, recreateViews = false }: {\n\t\t\tskipInitialSchemaValidation?: boolean\n\t\t\tskipNonModelDiffers?: boolean\n\t\t\trecreateViews?: boolean\n\t\t} = {},\n\t): Promise<{ migration: Migration; initialSchema: Schema } | null> {\n\t\tconst modifications = this.schemaDiffer.diffSchemas(initialSchema, newSchema, { skipInitialSchemaValidation, skipNonModelDiffers, recreateViews })\n\t\tif (modifications.length === 0) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst migration = this.createMigration(modifications, migrationName)\n\n\t\treturn { initialSchema, migration }\n\t}\n\n\tasync saveMigration(migration: Migration): Promise<string> {\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\t\tconst jsonDiff = MigrationCreator.createContent(migration)\n\t\tconst filename = await this.migrationFilesManager.createFile(jsonDiff, migration.name)\n\t\treturn filename\n\t}\n\n\tasync removeMigration(name: string): Promise<void> {\n\t\tawait this.migrationFilesManager.removeFile(name)\n\t}\n\n\tprivate createMigration(modifications: Migration.Modification[], name: string): Migration {\n\t\tconst [version, fullName] = MigrationVersionHelper.createVersion(name)\n\t\treturn { formatVersion: VERSION_LATEST, modifications, version, name: fullName }\n\t}\n\n\tpublic static createContent({ modifications, formatVersion }: Migration): string {\n\t\treturn JSON.stringify({ formatVersion, modifications }, undefined, '\\t') + '\\n'\n\t}\n}\n"],"names":["MigrationVersionHelper","VERSION_LATEST"],"mappings":";;;;AAKO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,uBACA,cACA,iBAAyC,CAAA,GACzD;AAHgB,SAAA,wBAAA;AACA,SAAA,eAAA;AACA,SAAA,iBAAA;AAAA,EACf;AAAA,EAEH,MAAM,yBAAyB,eAAuB,QAAiC;AACtF,QAAI,CAAC,KAAK,eAAe,eAAe,MAAM,GAAG;AAChD,YAAM,IAAI,MAAM,kBAAkB,MAAM,EAAE;AAAA,IAC3C;AACA,UAAM,KAAK,sBAAsB,oBAAA;AACjC,UAAM,CAAA,EAAG,QAAQ,IAAIA,oCAAuB,cAAc,aAAa;AACvE,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,KAAK,eAAe,MAAM,GAAG,UAAU,MAAM;AAE1G,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,iBACL,eACA,WACA,eACA,EAAE,8BAA8B,OAAO,sBAAsB,OAAO,gBAAgB,MAAA,IAIhF,CAAA,GAC8D;AAClE,UAAM,gBAAgB,KAAK,aAAa,YAAY,eAAe,WAAW,EAAE,6BAA6B,qBAAqB,eAAe;AACjJ,QAAI,cAAc,WAAW,GAAG;AAC/B,aAAO;AAAA,IACR;AAEA,UAAM,YAAY,KAAK,gBAAgB,eAAe,aAAa;AAEnE,WAAO,EAAE,eAAe,UAAA;AAAA,EACzB;AAAA,EAEA,MAAM,cAAc,WAAuC;AAC1D,UAAM,KAAK,sBAAsB,oBAAA;AACjC,UAAM,WAAW,iBAAiB,cAAc,SAAS;AACzD,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,UAAU,UAAU,IAAI;AACrF,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,gBAAgB,MAA6B;AAClD,UAAM,KAAK,sBAAsB,WAAW,IAAI;AAAA,EACjD;AAAA,EAEQ,gBAAgB,eAAyC,MAAyB;AACzF,UAAM,CAAC,SAAS,QAAQ,IAAIA,aAAAA,uBAAuB,cAAc,IAAI;AACrE,WAAO,EAAE,eAAeC,iBAAAA,gBAAgB,eAAe,SAAS,MAAM,SAAA;AAAA,EACvE;AAAA,EAEA,OAAc,cAAc,EAAE,eAAe,iBAAoC;AAChF,WAAO,KAAK,UAAU,EAAE,eAAe,iBAAiB,QAAW,GAAI,IAAI;AAAA,EAC5E;AACD;;"}
@@ -16,7 +16,6 @@ class MigrationCreator {
16
16
  return filename;
17
17
  }
18
18
  async prepareMigration(initialSchema, newSchema, migrationName, { skipInitialSchemaValidation = false, skipNonModelDiffers = false, recreateViews = false } = {}) {
19
- await this.migrationFilesManager.createDirIfNotExist();
20
19
  const modifications = this.schemaDiffer.diffSchemas(initialSchema, newSchema, { skipInitialSchemaValidation, skipNonModelDiffers, recreateViews });
21
20
  if (modifications.length === 0) {
22
21
  return null;
@@ -25,6 +24,7 @@ class MigrationCreator {
25
24
  return { initialSchema, migration };
26
25
  }
27
26
  async saveMigration(migration) {
27
+ await this.migrationFilesManager.createDirIfNotExist();
28
28
  const jsonDiff = MigrationCreator.createContent(migration);
29
29
  const filename = await this.migrationFilesManager.createFile(jsonDiff, migration.name);
30
30
  return filename;
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationCreator.js","sources":["../../../../packages/migrations-client/src/MigrationCreator.ts"],"sourcesContent":["import { MigrationFilesManager } from './MigrationFilesManager.js'\nimport { Schema } from '@contember/schema'\nimport { Migration, SchemaDiffer, VERSION_LATEST } from '@contember/schema-migrations'\nimport { MigrationVersionHelper } from '@contember/engine-common'\n\nexport class MigrationCreator {\n\tconstructor(\n\t\tprivate readonly migrationFilesManager: MigrationFilesManager,\n\t\tprivate readonly schemaDiffer: SchemaDiffer,\n\t\tprivate readonly emptyTemplates: Record<string, string> = {},\n\t) {}\n\n\tasync createEmptyMigrationFile(migrationName: string, format: string): Promise<string> {\n\t\tif (!this.emptyTemplates.hasOwnProperty(format)) {\n\t\t\tthrow new Error(`Unknown format ${format}`)\n\t\t}\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\t\tconst [, fullName] = MigrationVersionHelper.createVersion(migrationName)\n\t\tconst filename = await this.migrationFilesManager.createFile(this.emptyTemplates[format], fullName, format)\n\n\t\treturn filename\n\t}\n\n\tasync prepareMigration(\n\t\tinitialSchema: Schema,\n\t\tnewSchema: Schema,\n\t\tmigrationName: string,\n\t\t{ skipInitialSchemaValidation = false, skipNonModelDiffers = false, recreateViews = false }: {\n\t\t\tskipInitialSchemaValidation?: boolean\n\t\t\tskipNonModelDiffers?: boolean\n\t\t\trecreateViews?: boolean\n\t\t} = {},\n\t): Promise<{ migration: Migration; initialSchema: Schema } | null> {\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\n\t\tconst modifications = this.schemaDiffer.diffSchemas(initialSchema, newSchema, { skipInitialSchemaValidation, skipNonModelDiffers, recreateViews })\n\t\tif (modifications.length === 0) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst migration = this.createMigration(modifications, migrationName)\n\n\t\treturn { initialSchema, migration }\n\t}\n\n\tasync saveMigration(migration: Migration): Promise<string> {\n\t\tconst jsonDiff = MigrationCreator.createContent(migration)\n\t\tconst filename = await this.migrationFilesManager.createFile(jsonDiff, migration.name)\n\t\treturn filename\n\t}\n\n\tasync removeMigration(name: string): Promise<void> {\n\t\tawait this.migrationFilesManager.removeFile(name)\n\t}\n\n\tprivate createMigration(modifications: Migration.Modification[], name: string): Migration {\n\t\tconst [version, fullName] = MigrationVersionHelper.createVersion(name)\n\t\treturn { formatVersion: VERSION_LATEST, modifications, version, name: fullName }\n\t}\n\n\tpublic static createContent({ modifications, formatVersion }: Migration): string {\n\t\treturn JSON.stringify({ formatVersion, modifications }, undefined, '\\t') + '\\n'\n\t}\n}\n"],"names":[],"mappings":";;AAKO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,uBACA,cACA,iBAAyC,CAAA,GACzD;AAHgB,SAAA,wBAAA;AACA,SAAA,eAAA;AACA,SAAA,iBAAA;AAAA,EACf;AAAA,EAEH,MAAM,yBAAyB,eAAuB,QAAiC;AACtF,QAAI,CAAC,KAAK,eAAe,eAAe,MAAM,GAAG;AAChD,YAAM,IAAI,MAAM,kBAAkB,MAAM,EAAE;AAAA,IAC3C;AACA,UAAM,KAAK,sBAAsB,oBAAA;AACjC,UAAM,CAAA,EAAG,QAAQ,IAAI,uBAAuB,cAAc,aAAa;AACvE,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,KAAK,eAAe,MAAM,GAAG,UAAU,MAAM;AAE1G,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,iBACL,eACA,WACA,eACA,EAAE,8BAA8B,OAAO,sBAAsB,OAAO,gBAAgB,MAAA,IAIhF,CAAA,GAC8D;AAClE,UAAM,KAAK,sBAAsB,oBAAA;AAEjC,UAAM,gBAAgB,KAAK,aAAa,YAAY,eAAe,WAAW,EAAE,6BAA6B,qBAAqB,eAAe;AACjJ,QAAI,cAAc,WAAW,GAAG;AAC/B,aAAO;AAAA,IACR;AAEA,UAAM,YAAY,KAAK,gBAAgB,eAAe,aAAa;AAEnE,WAAO,EAAE,eAAe,UAAA;AAAA,EACzB;AAAA,EAEA,MAAM,cAAc,WAAuC;AAC1D,UAAM,WAAW,iBAAiB,cAAc,SAAS;AACzD,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,UAAU,UAAU,IAAI;AACrF,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,gBAAgB,MAA6B;AAClD,UAAM,KAAK,sBAAsB,WAAW,IAAI;AAAA,EACjD;AAAA,EAEQ,gBAAgB,eAAyC,MAAyB;AACzF,UAAM,CAAC,SAAS,QAAQ,IAAI,uBAAuB,cAAc,IAAI;AACrE,WAAO,EAAE,eAAe,gBAAgB,eAAe,SAAS,MAAM,SAAA;AAAA,EACvE;AAAA,EAEA,OAAc,cAAc,EAAE,eAAe,iBAAoC;AAChF,WAAO,KAAK,UAAU,EAAE,eAAe,iBAAiB,QAAW,GAAI,IAAI;AAAA,EAC5E;AACD;"}
1
+ {"version":3,"file":"MigrationCreator.js","sources":["../../../../packages/migrations-client/src/MigrationCreator.ts"],"sourcesContent":["import { MigrationFilesManager } from './MigrationFilesManager.js'\nimport { Schema } from '@contember/schema'\nimport { Migration, SchemaDiffer, VERSION_LATEST } from '@contember/schema-migrations'\nimport { MigrationVersionHelper } from '@contember/engine-common'\n\nexport class MigrationCreator {\n\tconstructor(\n\t\tprivate readonly migrationFilesManager: MigrationFilesManager,\n\t\tprivate readonly schemaDiffer: SchemaDiffer,\n\t\tprivate readonly emptyTemplates: Record<string, string> = {},\n\t) {}\n\n\tasync createEmptyMigrationFile(migrationName: string, format: string): Promise<string> {\n\t\tif (!this.emptyTemplates.hasOwnProperty(format)) {\n\t\t\tthrow new Error(`Unknown format ${format}`)\n\t\t}\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\t\tconst [, fullName] = MigrationVersionHelper.createVersion(migrationName)\n\t\tconst filename = await this.migrationFilesManager.createFile(this.emptyTemplates[format], fullName, format)\n\n\t\treturn filename\n\t}\n\n\tasync prepareMigration(\n\t\tinitialSchema: Schema,\n\t\tnewSchema: Schema,\n\t\tmigrationName: string,\n\t\t{ skipInitialSchemaValidation = false, skipNonModelDiffers = false, recreateViews = false }: {\n\t\t\tskipInitialSchemaValidation?: boolean\n\t\t\tskipNonModelDiffers?: boolean\n\t\t\trecreateViews?: boolean\n\t\t} = {},\n\t): Promise<{ migration: Migration; initialSchema: Schema } | null> {\n\t\tconst modifications = this.schemaDiffer.diffSchemas(initialSchema, newSchema, { skipInitialSchemaValidation, skipNonModelDiffers, recreateViews })\n\t\tif (modifications.length === 0) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst migration = this.createMigration(modifications, migrationName)\n\n\t\treturn { initialSchema, migration }\n\t}\n\n\tasync saveMigration(migration: Migration): Promise<string> {\n\t\tawait this.migrationFilesManager.createDirIfNotExist()\n\t\tconst jsonDiff = MigrationCreator.createContent(migration)\n\t\tconst filename = await this.migrationFilesManager.createFile(jsonDiff, migration.name)\n\t\treturn filename\n\t}\n\n\tasync removeMigration(name: string): Promise<void> {\n\t\tawait this.migrationFilesManager.removeFile(name)\n\t}\n\n\tprivate createMigration(modifications: Migration.Modification[], name: string): Migration {\n\t\tconst [version, fullName] = MigrationVersionHelper.createVersion(name)\n\t\treturn { formatVersion: VERSION_LATEST, modifications, version, name: fullName }\n\t}\n\n\tpublic static createContent({ modifications, formatVersion }: Migration): string {\n\t\treturn JSON.stringify({ formatVersion, modifications }, undefined, '\\t') + '\\n'\n\t}\n}\n"],"names":[],"mappings":";;AAKO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,uBACA,cACA,iBAAyC,CAAA,GACzD;AAHgB,SAAA,wBAAA;AACA,SAAA,eAAA;AACA,SAAA,iBAAA;AAAA,EACf;AAAA,EAEH,MAAM,yBAAyB,eAAuB,QAAiC;AACtF,QAAI,CAAC,KAAK,eAAe,eAAe,MAAM,GAAG;AAChD,YAAM,IAAI,MAAM,kBAAkB,MAAM,EAAE;AAAA,IAC3C;AACA,UAAM,KAAK,sBAAsB,oBAAA;AACjC,UAAM,CAAA,EAAG,QAAQ,IAAI,uBAAuB,cAAc,aAAa;AACvE,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,KAAK,eAAe,MAAM,GAAG,UAAU,MAAM;AAE1G,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,iBACL,eACA,WACA,eACA,EAAE,8BAA8B,OAAO,sBAAsB,OAAO,gBAAgB,MAAA,IAIhF,CAAA,GAC8D;AAClE,UAAM,gBAAgB,KAAK,aAAa,YAAY,eAAe,WAAW,EAAE,6BAA6B,qBAAqB,eAAe;AACjJ,QAAI,cAAc,WAAW,GAAG;AAC/B,aAAO;AAAA,IACR;AAEA,UAAM,YAAY,KAAK,gBAAgB,eAAe,aAAa;AAEnE,WAAO,EAAE,eAAe,UAAA;AAAA,EACzB;AAAA,EAEA,MAAM,cAAc,WAAuC;AAC1D,UAAM,KAAK,sBAAsB,oBAAA;AACjC,UAAM,WAAW,iBAAiB,cAAc,SAAS;AACzD,UAAM,WAAW,MAAM,KAAK,sBAAsB,WAAW,UAAU,UAAU,IAAI;AACrF,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,gBAAgB,MAA6B;AAClD,UAAM,KAAK,sBAAsB,WAAW,IAAI;AAAA,EACjD;AAAA,EAEQ,gBAAgB,eAAyC,MAAyB;AACzF,UAAM,CAAC,SAAS,QAAQ,IAAI,uBAAuB,cAAc,IAAI;AACrE,WAAO,EAAE,eAAe,gBAAgB,eAAe,SAAS,MAAM,SAAA;AAAA,EACvE;AAAA,EAEA,OAAc,cAAc,EAAE,eAAe,iBAAoC;AAChF,WAAO,KAAK,UAAU,EAAE,eAAe,iBAAiB,QAAW,GAAI,IAAI;AAAA,EAC5E;AACD;"}
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const schemaUtils = require("@contember/schema-utils");
4
+ var __defProp = Object.defineProperty;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "", value);
4
7
  class SchemaVersionBuilder {
5
8
  constructor(migrationsResolver, schemaMigrator, schemaStateManager) {
6
9
  this.migrationsResolver = migrationsResolver;
7
10
  this.schemaMigrator = schemaMigrator;
8
11
  this.schemaStateManager = schemaStateManager;
12
+ __publicField(this, "lastBuildUntil", null);
9
13
  }
10
14
  async buildSchema(targetVersion) {
11
15
  let schema = await this.buildSchemaAdvanced(schemaUtils.emptySchema, (version) => !targetVersion || version <= targetVersion);
@@ -15,14 +19,28 @@ class SchemaVersionBuilder {
15
19
  }
16
20
  return schema;
17
21
  }
22
+ /**
23
+ * Content migrations call this once each, with ascending versions. Continuing from the previous
24
+ * build keeps a run linear instead of replaying every schema migration from scratch each time.
25
+ */
18
26
  async buildSchemaUntil(targetVersion) {
19
- return this.buildSchemaAdvanced(schemaUtils.emptySchema, (version) => version < targetVersion);
27
+ const migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => version < targetVersion);
28
+ const previous = this.lastBuildUntil;
29
+ const canContinue = previous !== null && previous.migrations.length <= migrations.length && previous.migrations.every((migration, index) => migration === migrations[index]);
30
+ const start = canContinue ? previous : { migrations: [], schema: schemaUtils.emptySchema };
31
+ const schema = this.applyMigrations(start.schema, migrations.slice(start.migrations.length));
32
+ this.lastBuildUntil = { migrations, schema };
33
+ return schema;
20
34
  }
21
35
  async continue(schema, previousVersion, targetVersion) {
22
36
  return this.buildSchemaAdvanced(schema, (version) => version <= targetVersion && version > (previousVersion || ""));
23
37
  }
24
38
  async buildSchemaAdvanced(initialSchema, condition) {
25
- return (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => condition(version)).reduce(
39
+ const migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => condition(version));
40
+ return this.applyMigrations(initialSchema, migrations);
41
+ }
42
+ applyMigrations(initialSchema, migrations) {
43
+ return migrations.reduce(
26
44
  (schema, { modifications, formatVersion }) => this.schemaMigrator.applyModifications(schema, modifications, formatVersion),
27
45
  initialSchema
28
46
  );
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaVersionBuilder.cjs","sources":["../../../../packages/migrations-client/src/SchemaVersionBuilder.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { emptySchema } from '@contember/schema-utils'\nimport { SchemaMigrator } from '@contember/schema-migrations'\nimport { MigrationsResolver } from './MigrationsResolver.js'\nimport { SchemaStateManager } from './SchemaStateManager.js'\n\nexport class SchemaVersionBuilder {\n\tconstructor(\n\t\tprivate readonly migrationsResolver: MigrationsResolver,\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly schemaStateManager: SchemaStateManager,\n\t) {}\n\n\tasync buildSchema(targetVersion?: string): Promise<Schema> {\n\t\tlet schema = await this.buildSchemaAdvanced(emptySchema, version => !targetVersion || version <= targetVersion)\n\t\tif (!targetVersion && await this.schemaStateManager.isStateMode()) {\n\t\t\tconst state = await this.schemaStateManager.readState()\n\t\t\tschema = { ...schema, ...state }\n\t\t}\n\t\treturn schema\n\t}\n\n\tasync buildSchemaUntil(targetVersion: string): Promise<Schema> {\n\t\treturn this.buildSchemaAdvanced(emptySchema, version => version < targetVersion)\n\t}\n\n\tasync continue(schema: Schema, previousVersion: string | null, targetVersion: string): Promise<Schema> {\n\t\treturn this.buildSchemaAdvanced(schema, version => version <= targetVersion && version > (previousVersion || ''))\n\t}\n\n\tpublic async buildSchemaAdvanced(initialSchema: Schema, condition: (version: string) => boolean): Promise<Schema> {\n\t\treturn (await this.migrationsResolver.getSchemaMigrations())\n\t\t\t.filter(({ version }) => condition(version))\n\t\t\t.reduce<Schema>(\n\t\t\t\t(schema, { modifications, formatVersion }) => this.schemaMigrator.applyModifications(schema, modifications, formatVersion),\n\t\t\t\tinitialSchema,\n\t\t\t)\n\t}\n}\n"],"names":["emptySchema"],"mappings":";;;AAMO,MAAM,qBAAqB;AAAA,EACjC,YACkB,oBACA,gBACA,oBAChB;AAHgB,SAAA,qBAAA;AACA,SAAA,iBAAA;AACA,SAAA,qBAAA;AAAA,EACf;AAAA,EAEH,MAAM,YAAY,eAAyC;AAC1D,QAAI,SAAS,MAAM,KAAK,oBAAoBA,YAAAA,aAAa,CAAA,YAAW,CAAC,iBAAiB,WAAW,aAAa;AAC9G,QAAI,CAAC,iBAAiB,MAAM,KAAK,mBAAmB,eAAe;AAClE,YAAM,QAAQ,MAAM,KAAK,mBAAmB,UAAA;AAC5C,eAAS,EAAE,GAAG,QAAQ,GAAG,MAAA;AAAA,IAC1B;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,iBAAiB,eAAwC;AAC9D,WAAO,KAAK,oBAAoBA,YAAAA,aAAa,CAAA,YAAW,UAAU,aAAa;AAAA,EAChF;AAAA,EAEA,MAAM,SAAS,QAAgB,iBAAgC,eAAwC;AACtG,WAAO,KAAK,oBAAoB,QAAQ,CAAA,YAAW,WAAW,iBAAiB,WAAW,mBAAmB,GAAG;AAAA,EACjH;AAAA,EAEA,MAAa,oBAAoB,eAAuB,WAA0D;AACjH,YAAQ,MAAM,KAAK,mBAAmB,oBAAA,GACpC,OAAO,CAAC,EAAE,QAAA,MAAc,UAAU,OAAO,CAAC,EAC1C;AAAA,MACA,CAAC,QAAQ,EAAE,eAAe,oBAAoB,KAAK,eAAe,mBAAmB,QAAQ,eAAe,aAAa;AAAA,MACzH;AAAA,IAAA;AAAA,EAEH;AACD;;"}
1
+ {"version":3,"file":"SchemaVersionBuilder.cjs","sources":["../../../../packages/migrations-client/src/SchemaVersionBuilder.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { emptySchema } from '@contember/schema-utils'\nimport { Migration, SchemaMigrator } from '@contember/schema-migrations'\nimport { MigrationsResolver } from './MigrationsResolver.js'\nimport { SchemaStateManager } from './SchemaStateManager.js'\n\nexport class SchemaVersionBuilder {\n\tprivate lastBuildUntil: { migrations: Migration[]; schema: Schema } | null = null\n\n\tconstructor(\n\t\tprivate readonly migrationsResolver: MigrationsResolver,\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly schemaStateManager: SchemaStateManager,\n\t) {}\n\n\tasync buildSchema(targetVersion?: string): Promise<Schema> {\n\t\tlet schema = await this.buildSchemaAdvanced(emptySchema, version => !targetVersion || version <= targetVersion)\n\t\tif (!targetVersion && await this.schemaStateManager.isStateMode()) {\n\t\t\tconst state = await this.schemaStateManager.readState()\n\t\t\tschema = { ...schema, ...state }\n\t\t}\n\t\treturn schema\n\t}\n\n\t/**\n\t * Content migrations call this once each, with ascending versions. Continuing from the previous\n\t * build keeps a run linear instead of replaying every schema migration from scratch each time.\n\t */\n\tasync buildSchemaUntil(targetVersion: string): Promise<Schema> {\n\t\tconst migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => version < targetVersion)\n\t\tconst previous = this.lastBuildUntil\n\t\tconst canContinue = previous !== null\n\t\t\t&& previous.migrations.length <= migrations.length\n\t\t\t&& previous.migrations.every((migration, index) => migration === migrations[index])\n\t\tconst start = canContinue ? previous : { migrations: [], schema: emptySchema }\n\n\t\tconst schema = this.applyMigrations(start.schema, migrations.slice(start.migrations.length))\n\t\tthis.lastBuildUntil = { migrations, schema }\n\t\treturn schema\n\t}\n\n\tasync continue(schema: Schema, previousVersion: string | null, targetVersion: string): Promise<Schema> {\n\t\treturn this.buildSchemaAdvanced(schema, version => version <= targetVersion && version > (previousVersion || ''))\n\t}\n\n\tpublic async buildSchemaAdvanced(initialSchema: Schema, condition: (version: string) => boolean): Promise<Schema> {\n\t\tconst migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => condition(version))\n\t\treturn this.applyMigrations(initialSchema, migrations)\n\t}\n\n\tprivate applyMigrations(initialSchema: Schema, migrations: Migration[]): Schema {\n\t\treturn migrations.reduce<Schema>(\n\t\t\t(schema, { modifications, formatVersion }) => this.schemaMigrator.applyModifications(schema, modifications, formatVersion),\n\t\t\tinitialSchema,\n\t\t)\n\t}\n}\n"],"names":["emptySchema"],"mappings":";;;;;;AAMO,MAAM,qBAAqB;AAAA,EAGjC,YACkB,oBACA,gBACA,oBAChB;AAHgB,SAAA,qBAAA;AACA,SAAA,iBAAA;AACA,SAAA,qBAAA;AALlB,kBAAA,MAAQ,kBAAqE,IAAA;AAAA,EAM1E;AAAA,EAEH,MAAM,YAAY,eAAyC;AAC1D,QAAI,SAAS,MAAM,KAAK,oBAAoBA,YAAAA,aAAa,CAAA,YAAW,CAAC,iBAAiB,WAAW,aAAa;AAC9G,QAAI,CAAC,iBAAiB,MAAM,KAAK,mBAAmB,eAAe;AAClE,YAAM,QAAQ,MAAM,KAAK,mBAAmB,UAAA;AAC5C,eAAS,EAAE,GAAG,QAAQ,GAAG,MAAA;AAAA,IAC1B;AACA,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,eAAwC;AAC9D,UAAM,cAAc,MAAM,KAAK,mBAAmB,oBAAA,GAAuB,OAAO,CAAC,EAAE,cAAc,UAAU,aAAa;AACxH,UAAM,WAAW,KAAK;AACtB,UAAM,cAAc,aAAa,QAC7B,SAAS,WAAW,UAAU,WAAW,UACzC,SAAS,WAAW,MAAM,CAAC,WAAW,UAAU,cAAc,WAAW,KAAK,CAAC;AACnF,UAAM,QAAQ,cAAc,WAAW,EAAE,YAAY,CAAA,GAAI,QAAQA,wBAAA;AAEjE,UAAM,SAAS,KAAK,gBAAgB,MAAM,QAAQ,WAAW,MAAM,MAAM,WAAW,MAAM,CAAC;AAC3F,SAAK,iBAAiB,EAAE,YAAY,OAAA;AACpC,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,SAAS,QAAgB,iBAAgC,eAAwC;AACtG,WAAO,KAAK,oBAAoB,QAAQ,CAAA,YAAW,WAAW,iBAAiB,WAAW,mBAAmB,GAAG;AAAA,EACjH;AAAA,EAEA,MAAa,oBAAoB,eAAuB,WAA0D;AACjH,UAAM,cAAc,MAAM,KAAK,mBAAmB,oBAAA,GAAuB,OAAO,CAAC,EAAE,QAAA,MAAc,UAAU,OAAO,CAAC;AACnH,WAAO,KAAK,gBAAgB,eAAe,UAAU;AAAA,EACtD;AAAA,EAEQ,gBAAgB,eAAuB,YAAiC;AAC/E,WAAO,WAAW;AAAA,MACjB,CAAC,QAAQ,EAAE,eAAe,oBAAoB,KAAK,eAAe,mBAAmB,QAAQ,eAAe,aAAa;AAAA,MACzH;AAAA,IAAA;AAAA,EAEF;AACD;;"}
@@ -1,9 +1,13 @@
1
1
  import { emptySchema } from "@contember/schema-utils";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "", value);
2
5
  class SchemaVersionBuilder {
3
6
  constructor(migrationsResolver, schemaMigrator, schemaStateManager) {
4
7
  this.migrationsResolver = migrationsResolver;
5
8
  this.schemaMigrator = schemaMigrator;
6
9
  this.schemaStateManager = schemaStateManager;
10
+ __publicField(this, "lastBuildUntil", null);
7
11
  }
8
12
  async buildSchema(targetVersion) {
9
13
  let schema = await this.buildSchemaAdvanced(emptySchema, (version) => !targetVersion || version <= targetVersion);
@@ -13,14 +17,28 @@ class SchemaVersionBuilder {
13
17
  }
14
18
  return schema;
15
19
  }
20
+ /**
21
+ * Content migrations call this once each, with ascending versions. Continuing from the previous
22
+ * build keeps a run linear instead of replaying every schema migration from scratch each time.
23
+ */
16
24
  async buildSchemaUntil(targetVersion) {
17
- return this.buildSchemaAdvanced(emptySchema, (version) => version < targetVersion);
25
+ const migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => version < targetVersion);
26
+ const previous = this.lastBuildUntil;
27
+ const canContinue = previous !== null && previous.migrations.length <= migrations.length && previous.migrations.every((migration, index) => migration === migrations[index]);
28
+ const start = canContinue ? previous : { migrations: [], schema: emptySchema };
29
+ const schema = this.applyMigrations(start.schema, migrations.slice(start.migrations.length));
30
+ this.lastBuildUntil = { migrations, schema };
31
+ return schema;
18
32
  }
19
33
  async continue(schema, previousVersion, targetVersion) {
20
34
  return this.buildSchemaAdvanced(schema, (version) => version <= targetVersion && version > (previousVersion || ""));
21
35
  }
22
36
  async buildSchemaAdvanced(initialSchema, condition) {
23
- return (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => condition(version)).reduce(
37
+ const migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => condition(version));
38
+ return this.applyMigrations(initialSchema, migrations);
39
+ }
40
+ applyMigrations(initialSchema, migrations) {
41
+ return migrations.reduce(
24
42
  (schema, { modifications, formatVersion }) => this.schemaMigrator.applyModifications(schema, modifications, formatVersion),
25
43
  initialSchema
26
44
  );
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaVersionBuilder.js","sources":["../../../../packages/migrations-client/src/SchemaVersionBuilder.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { emptySchema } from '@contember/schema-utils'\nimport { SchemaMigrator } from '@contember/schema-migrations'\nimport { MigrationsResolver } from './MigrationsResolver.js'\nimport { SchemaStateManager } from './SchemaStateManager.js'\n\nexport class SchemaVersionBuilder {\n\tconstructor(\n\t\tprivate readonly migrationsResolver: MigrationsResolver,\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly schemaStateManager: SchemaStateManager,\n\t) {}\n\n\tasync buildSchema(targetVersion?: string): Promise<Schema> {\n\t\tlet schema = await this.buildSchemaAdvanced(emptySchema, version => !targetVersion || version <= targetVersion)\n\t\tif (!targetVersion && await this.schemaStateManager.isStateMode()) {\n\t\t\tconst state = await this.schemaStateManager.readState()\n\t\t\tschema = { ...schema, ...state }\n\t\t}\n\t\treturn schema\n\t}\n\n\tasync buildSchemaUntil(targetVersion: string): Promise<Schema> {\n\t\treturn this.buildSchemaAdvanced(emptySchema, version => version < targetVersion)\n\t}\n\n\tasync continue(schema: Schema, previousVersion: string | null, targetVersion: string): Promise<Schema> {\n\t\treturn this.buildSchemaAdvanced(schema, version => version <= targetVersion && version > (previousVersion || ''))\n\t}\n\n\tpublic async buildSchemaAdvanced(initialSchema: Schema, condition: (version: string) => boolean): Promise<Schema> {\n\t\treturn (await this.migrationsResolver.getSchemaMigrations())\n\t\t\t.filter(({ version }) => condition(version))\n\t\t\t.reduce<Schema>(\n\t\t\t\t(schema, { modifications, formatVersion }) => this.schemaMigrator.applyModifications(schema, modifications, formatVersion),\n\t\t\t\tinitialSchema,\n\t\t\t)\n\t}\n}\n"],"names":[],"mappings":";AAMO,MAAM,qBAAqB;AAAA,EACjC,YACkB,oBACA,gBACA,oBAChB;AAHgB,SAAA,qBAAA;AACA,SAAA,iBAAA;AACA,SAAA,qBAAA;AAAA,EACf;AAAA,EAEH,MAAM,YAAY,eAAyC;AAC1D,QAAI,SAAS,MAAM,KAAK,oBAAoB,aAAa,CAAA,YAAW,CAAC,iBAAiB,WAAW,aAAa;AAC9G,QAAI,CAAC,iBAAiB,MAAM,KAAK,mBAAmB,eAAe;AAClE,YAAM,QAAQ,MAAM,KAAK,mBAAmB,UAAA;AAC5C,eAAS,EAAE,GAAG,QAAQ,GAAG,MAAA;AAAA,IAC1B;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,iBAAiB,eAAwC;AAC9D,WAAO,KAAK,oBAAoB,aAAa,CAAA,YAAW,UAAU,aAAa;AAAA,EAChF;AAAA,EAEA,MAAM,SAAS,QAAgB,iBAAgC,eAAwC;AACtG,WAAO,KAAK,oBAAoB,QAAQ,CAAA,YAAW,WAAW,iBAAiB,WAAW,mBAAmB,GAAG;AAAA,EACjH;AAAA,EAEA,MAAa,oBAAoB,eAAuB,WAA0D;AACjH,YAAQ,MAAM,KAAK,mBAAmB,oBAAA,GACpC,OAAO,CAAC,EAAE,QAAA,MAAc,UAAU,OAAO,CAAC,EAC1C;AAAA,MACA,CAAC,QAAQ,EAAE,eAAe,oBAAoB,KAAK,eAAe,mBAAmB,QAAQ,eAAe,aAAa;AAAA,MACzH;AAAA,IAAA;AAAA,EAEH;AACD;"}
1
+ {"version":3,"file":"SchemaVersionBuilder.js","sources":["../../../../packages/migrations-client/src/SchemaVersionBuilder.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { emptySchema } from '@contember/schema-utils'\nimport { Migration, SchemaMigrator } from '@contember/schema-migrations'\nimport { MigrationsResolver } from './MigrationsResolver.js'\nimport { SchemaStateManager } from './SchemaStateManager.js'\n\nexport class SchemaVersionBuilder {\n\tprivate lastBuildUntil: { migrations: Migration[]; schema: Schema } | null = null\n\n\tconstructor(\n\t\tprivate readonly migrationsResolver: MigrationsResolver,\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly schemaStateManager: SchemaStateManager,\n\t) {}\n\n\tasync buildSchema(targetVersion?: string): Promise<Schema> {\n\t\tlet schema = await this.buildSchemaAdvanced(emptySchema, version => !targetVersion || version <= targetVersion)\n\t\tif (!targetVersion && await this.schemaStateManager.isStateMode()) {\n\t\t\tconst state = await this.schemaStateManager.readState()\n\t\t\tschema = { ...schema, ...state }\n\t\t}\n\t\treturn schema\n\t}\n\n\t/**\n\t * Content migrations call this once each, with ascending versions. Continuing from the previous\n\t * build keeps a run linear instead of replaying every schema migration from scratch each time.\n\t */\n\tasync buildSchemaUntil(targetVersion: string): Promise<Schema> {\n\t\tconst migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => version < targetVersion)\n\t\tconst previous = this.lastBuildUntil\n\t\tconst canContinue = previous !== null\n\t\t\t&& previous.migrations.length <= migrations.length\n\t\t\t&& previous.migrations.every((migration, index) => migration === migrations[index])\n\t\tconst start = canContinue ? previous : { migrations: [], schema: emptySchema }\n\n\t\tconst schema = this.applyMigrations(start.schema, migrations.slice(start.migrations.length))\n\t\tthis.lastBuildUntil = { migrations, schema }\n\t\treturn schema\n\t}\n\n\tasync continue(schema: Schema, previousVersion: string | null, targetVersion: string): Promise<Schema> {\n\t\treturn this.buildSchemaAdvanced(schema, version => version <= targetVersion && version > (previousVersion || ''))\n\t}\n\n\tpublic async buildSchemaAdvanced(initialSchema: Schema, condition: (version: string) => boolean): Promise<Schema> {\n\t\tconst migrations = (await this.migrationsResolver.getSchemaMigrations()).filter(({ version }) => condition(version))\n\t\treturn this.applyMigrations(initialSchema, migrations)\n\t}\n\n\tprivate applyMigrations(initialSchema: Schema, migrations: Migration[]): Schema {\n\t\treturn migrations.reduce<Schema>(\n\t\t\t(schema, { modifications, formatVersion }) => this.schemaMigrator.applyModifications(schema, modifications, formatVersion),\n\t\t\tinitialSchema,\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;AAMO,MAAM,qBAAqB;AAAA,EAGjC,YACkB,oBACA,gBACA,oBAChB;AAHgB,SAAA,qBAAA;AACA,SAAA,iBAAA;AACA,SAAA,qBAAA;AALlB,kBAAA,MAAQ,kBAAqE,IAAA;AAAA,EAM1E;AAAA,EAEH,MAAM,YAAY,eAAyC;AAC1D,QAAI,SAAS,MAAM,KAAK,oBAAoB,aAAa,CAAA,YAAW,CAAC,iBAAiB,WAAW,aAAa;AAC9G,QAAI,CAAC,iBAAiB,MAAM,KAAK,mBAAmB,eAAe;AAClE,YAAM,QAAQ,MAAM,KAAK,mBAAmB,UAAA;AAC5C,eAAS,EAAE,GAAG,QAAQ,GAAG,MAAA;AAAA,IAC1B;AACA,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,eAAwC;AAC9D,UAAM,cAAc,MAAM,KAAK,mBAAmB,oBAAA,GAAuB,OAAO,CAAC,EAAE,cAAc,UAAU,aAAa;AACxH,UAAM,WAAW,KAAK;AACtB,UAAM,cAAc,aAAa,QAC7B,SAAS,WAAW,UAAU,WAAW,UACzC,SAAS,WAAW,MAAM,CAAC,WAAW,UAAU,cAAc,WAAW,KAAK,CAAC;AACnF,UAAM,QAAQ,cAAc,WAAW,EAAE,YAAY,CAAA,GAAI,QAAQ,YAAA;AAEjE,UAAM,SAAS,KAAK,gBAAgB,MAAM,QAAQ,WAAW,MAAM,MAAM,WAAW,MAAM,CAAC;AAC3F,SAAK,iBAAiB,EAAE,YAAY,OAAA;AACpC,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,SAAS,QAAgB,iBAAgC,eAAwC;AACtG,WAAO,KAAK,oBAAoB,QAAQ,CAAA,YAAW,WAAW,iBAAiB,WAAW,mBAAmB,GAAG;AAAA,EACjH;AAAA,EAEA,MAAa,oBAAoB,eAAuB,WAA0D;AACjH,UAAM,cAAc,MAAM,KAAK,mBAAmB,oBAAA,GAAuB,OAAO,CAAC,EAAE,QAAA,MAAc,UAAU,OAAO,CAAC;AACnH,WAAO,KAAK,gBAAgB,eAAe,UAAU;AAAA,EACtD;AAAA,EAEQ,gBAAgB,eAAuB,YAAiC;AAC/E,WAAO,WAAW;AAAA,MACjB,CAAC,QAAQ,EAAE,eAAe,oBAAoB,KAAK,eAAe,mBAAmB,QAAQ,eAAe,aAAa;AAAA,MACzH;AAAA,IAAA;AAAA,EAEF;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"JsLoader.d.ts","sourceRoot":"","sources":["../../src/JsLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAiD,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEnH,qBAAa,QAAS,YAAW,mBAAmB;IAElD,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC;IAI/C,IAAI,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAqBjE"}
1
+ {"version":3,"file":"JsLoader.d.ts","sourceRoot":"","sources":["../../src/JsLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAiD,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEnH,qBAAa,QAAS,YAAW,mBAAmB;IAElD,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAF5B,YACkB,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,EAE3D;IAEY,IAAI,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoBhE;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"JsonLoader.d.ts","sourceRoot":"","sources":["../../src/JsonLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,qBAAa,UAAW,YAAW,mBAAmB;IAEpD,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAIrC,IAAI,CAAC,IAAI,EAAE,aAAa;CAMrC"}
1
+ {"version":3,"file":"JsonLoader.d.ts","sourceRoot":"","sources":["../../src/JsonLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,qBAAa,UAAW,YAAW,mBAAmB;IAEpD,OAAO,CAAC,QAAQ,CAAC,eAAe;IADjC,YACkB,eAAe,EAAE,eAAe,EAEjD;IAEY,IAAI,CAAC,IAAI,EAAE,aAAa,kEAKpC;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationCreator.d.ts","sourceRoot":"","sources":["../../src/MigrationCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,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,mBAA2B,EAAE,aAAqB,EAAE,GAAE;QAC5F,2BAA2B,CAAC,EAAE,OAAO,CAAA;QACrC,mBAAmB,CAAC,EAAE,OAAO,CAAA;QAC7B,aAAa,CAAC,EAAE,OAAO,CAAA;KAClB,GACJ,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
+ {"version":3,"file":"MigrationCreator.d.ts","sourceRoot":"","sources":["../../src/MigrationCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,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;IAHhC,YACkB,qBAAqB,EAAE,qBAAqB,EAC5C,YAAY,EAAE,YAAY,EAC1B,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACzD;IAEE,wBAAwB,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASrF;IAEK,gBAAgB,CACrB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,EAAE,2BAAmC,EAAE,mBAA2B,EAAE,aAAqB,EAAE,GAAE;QAC5F,2BAA2B,CAAC,EAAE,OAAO,CAAA;QACrC,mBAAmB,CAAC,EAAE,OAAO,CAAA;QAC7B,aAAa,CAAC,EAAE,OAAO,CAAA;KAClB,GACJ,OAAO,CAAC;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CASjE;IAEK,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAKzD;IAEK,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjD;IAED,OAAO,CAAC,eAAe;IAKvB,OAAc,aAAa,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,SAAS,GAAG,MAAM,CAE/E;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationExecuteHelper.d.ts","sourceRoot":"","sources":["../../src/MigrationExecuteHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,2BAA2B,EAA4B,MAAM,oBAAoB,CAAA;AAE1F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,qBAAa,iBAAiB;IACvB,iBAAiB,CAAC,EACvB,MAAM,EACN,UAAU,EACV,2BAA2B,EAC3B,KAAK,EACL,WAAW,EACX,GAAgB,GAChB,EAAE;QACF,MAAM,EAAE,YAAY,CAAA;QACpB,UAAU,EAAE,0BAA0B,EAAE,CAAA;QACxC,2BAA2B,EAAE,IAAI,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAA;QAC3E,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;QAC9B,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,WAAW,CAAC,EAAE,WAAW,CAAA;KACzB,GAAG,OAAO,CAAC,IAAI,CAAC;CAqEjB"}
1
+ {"version":3,"file":"MigrationExecuteHelper.d.ts","sourceRoot":"","sources":["../../src/MigrationExecuteHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,2BAA2B,EAA4B,MAAM,oBAAoB,CAAA;AAE1F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,qBAAa,iBAAiB;IACvB,iBAAiB,CAAC,EACvB,MAAM,EACN,UAAU,EACV,2BAA2B,EAC3B,KAAK,EACL,WAAW,EACX,GAAgB,GAChB,EAAE;QACF,MAAM,EAAE,YAAY,CAAA;QACpB,UAAU,EAAE,0BAA0B,EAAE,CAAA;QACxC,2BAA2B,EAAE,IAAI,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAA;QAC3E,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;QAC9B,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,WAAW,CAAC,EAAE,WAAW,CAAA;KACzB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoEhB;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationFile.d.ts","sourceRoot":"","sources":["../../src/MigrationFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAEhE,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,GAAI,SAAS,gBAAgB,KAAG,OAAO,IAAI,eACb,CAAA;AAE5D,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;IAChB,SAAS,EAAE,aAAa,CAAA;IACxB,oBAAoB,EAAE,oBAAoB,CAAA;CAC1C,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
+ {"version":3,"file":"MigrationFile.d.ts","sourceRoot":"","sources":["../../src/MigrationFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAEhE,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,KAAG,OAAO,IAAI,eACb,CAAA;AAE5D,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;IAChB,SAAS,EAAE,aAAa,CAAA;IACxB,oBAAoB,EAAE,oBAAoB,CAAA;CAC1C,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 +1 @@
1
- {"version":3,"file":"MigrationFilesManager.d.ts","sourceRoot":"","sources":["../../src/MigrationFilesManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAoB,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAIpE,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"}
1
+ {"version":3,"file":"MigrationFilesManager.d.ts","sourceRoot":"","sources":["../../src/MigrationFilesManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAoB,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAIpE,qBAAa,qBAAqB;aAIhB,SAAS,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJzB,OAAO,CAAC,UAAU,CAAwC;IAE1D,YACiB,SAAS,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC1D;IAES,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAK1F;IAEY,UAAU,CAAC,IAAI,EAAE,MAAM,iBAInC;IAEY,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAGrD;IAEY,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQhD;IAEY,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAEjD;IAEY,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAqBtD;YAEa,UAAU;YAWV,SAAS;IAevB,OAAO,CAAC,UAAU;CAKlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationParser.d.ts","sourceRoot":"","sources":["../../src/MigrationParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,aAAa,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,qBAAa,eAAe;IACpB,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,GAAG,wBAAwB;CA0BxF"}
1
+ {"version":3,"file":"MigrationParser.d.ts","sourceRoot":"","sources":["../../src/MigrationParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,aAAa,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,qBAAa,eAAe;IACpB,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,GAAG,wBAAwB,CAyBvF;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationsResolver.d.ts","sourceRoot":"","sources":["../../src/MigrationsResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAqB,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGrE,qBAAa,kBAAkB;IAClB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBAArB,qBAAqB,EAAE,qBAAqB;IAEzE,IAAW,SAAS,IAAI,MAAM,CAE7B;IAEY,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAI7C,mBAAmB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAQ3C,yBAAyB,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAKtD,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;YAOvE,qCAAqC;CAInD"}
1
+ {"version":3,"file":"MigrationsResolver.d.ts","sourceRoot":"","sources":["../../src/MigrationsResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAqB,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGrE,qBAAa,kBAAkB;IAClB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IAAlD,YAA6B,qBAAqB,EAAE,qBAAqB,EAAI;IAE7E,IAAW,SAAS,IAAI,MAAM,CAE7B;IAEY,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAEzD;IAEY,mBAAmB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAMvD;IAEY,yBAAyB,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAGlE;IAEY,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAKpF;YAEa,qCAAqC;CAInD"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaStateManager.d.ts","sourceRoot":"","sources":["../../src/SchemaStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAI9E,MAAM,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE,GAAG,CAAC,MAAM,CAAA;IACf,UAAU,EAAE,UAAU,CAAC,MAAM,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAC,MAAM,CAAA;IACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAA;CACzB,CAAA;AAKD,qBAAa,kBAAkB;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAEvC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IAcjC,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,MAAc,EAAE,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB/F,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjD,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW;CAQzD"}
1
+ {"version":3,"file":"SchemaStateManager.d.ts","sourceRoot":"","sources":["../../src/SchemaStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAI9E,MAAM,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE,GAAG,CAAC,MAAM,CAAA;IACf,UAAU,EAAE,UAAU,CAAC,MAAM,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAC,MAAM,CAAA;IACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAA;CACzB,CAAA;AAKD,qBAAa,kBAAkB;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAArC,YAA6B,QAAQ,EAAE,MAAM,EAAI;IAE3C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAOpC;IAEK,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,CAYtC;IAEK,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,MAAc,EAAE,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBpG;IAEK,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhD;IAED,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAOxD;CACD"}
@@ -6,10 +6,16 @@ export declare class SchemaVersionBuilder {
6
6
  private readonly migrationsResolver;
7
7
  private readonly schemaMigrator;
8
8
  private readonly schemaStateManager;
9
+ private lastBuildUntil;
9
10
  constructor(migrationsResolver: MigrationsResolver, schemaMigrator: SchemaMigrator, schemaStateManager: SchemaStateManager);
10
11
  buildSchema(targetVersion?: string): Promise<Schema>;
12
+ /**
13
+ * Content migrations call this once each, with ascending versions. Continuing from the previous
14
+ * build keeps a run linear instead of replaying every schema migration from scratch each time.
15
+ */
11
16
  buildSchemaUntil(targetVersion: string): Promise<Schema>;
12
17
  continue(schema: Schema, previousVersion: string | null, targetVersion: string): Promise<Schema>;
13
18
  buildSchemaAdvanced(initialSchema: Schema, condition: (version: string) => boolean): Promise<Schema>;
19
+ private applyMigrations;
14
20
  }
15
21
  //# sourceMappingURL=SchemaVersionBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaVersionBuilder.d.ts","sourceRoot":"","sources":["../../src/SchemaVersionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE5D,qBAAa,oBAAoB;IAE/B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAFlB,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,cAAc,EAC9B,kBAAkB,EAAE,kBAAkB;IAGlD,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASpD,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIxD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzF,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAQjH"}
1
+ {"version":3,"file":"SchemaVersionBuilder.d.ts","sourceRoot":"","sources":["../../src/SchemaVersionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,OAAO,EAAa,cAAc,EAAE,MAAM,8BAA8B,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE5D,qBAAa,oBAAoB;IAI/B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IALpC,OAAO,CAAC,cAAc,CAA2D;IAEjF,YACkB,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,cAAc,EAC9B,kBAAkB,EAAE,kBAAkB,EACpD;IAEE,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOzD;IAED;;;OAGG;IACG,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW7D;IAEK,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAErG;IAEY,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhH;IAED,OAAO,CAAC,eAAe;CAMvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SnapshotManager.d.ts","sourceRoot":"","sources":["../../src/SnapshotManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAGxD,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,gGAAgG;IAChG,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,SAAS,EAAE,OAAO,CAAA;IAClB,8DAA8D;IAC9D,QAAQ,EAAE;QACT,aAAa,EAAE,MAAM,CAAA;QACrB,aAAa,EAAE,SAAS,CAAC,YAAY,EAAE,CAAA;KACvC,CAAA;IACD,uFAAuF;IACvF,MAAM,EAAE,gBAAgB,EAAE,CAAA;IAC1B,2FAA2F;IAC3F,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC3B,CAAA;AAED,qBAAa,eAAe;IACf,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,MAAM;IAE3C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAS1B,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAS7B,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlD"}
1
+ {"version":3,"file":"SnapshotManager.d.ts","sourceRoot":"","sources":["../../src/SnapshotManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAGxD,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,gGAAgG;IAChG,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,SAAS,EAAE,OAAO,CAAA;IAClB,8DAA8D;IAC9D,QAAQ,EAAE;QACT,aAAa,EAAE,MAAM,CAAA;QACrB,aAAa,EAAE,SAAS,CAAC,YAAY,EAAE,CAAA;KACvC,CAAA;IACD,uFAAuF;IACvF,MAAM,EAAE,gBAAgB,EAAE,CAAA;IAC1B,2FAA2F;IAC3F,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC3B,CAAA;AAED,qBAAa,eAAe;IACf,OAAO,CAAC,QAAQ,CAAC,YAAY;IAAzC,YAA6B,YAAY,EAAE,MAAM,EAAI;IAE/C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAO/B;IAEK,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,CAOlC;IAEK,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjD;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"SystemClient.d.ts","sourceRoot":"","sources":["../../src/SystemClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,MAAM,MAAM,YAAY,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,oBAAY,gBAAgB;IAC3B,gBAAgB,uBAAuB;IACvC,eAAe,qBAAqB;IACpC,aAAa,mBAAmB;IAChC,aAAa,mBAAmB;IAChC,eAAe,qBAAqB;IACpC,eAAe,sBAAsB;CACrC;AAED,MAAM,MAAM,aAAa,GAAG;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,OAAO,EAAE,CAAA;IACxB,MAAM,EAAE,OAAO,EAAE,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC7B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,CAAA;CAC/B,CAAA;AAED,qBAAa,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,aAAa;WAEvC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY;IAK7E,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,KAAK,UAAQ,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BnF,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BtF,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB/C,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B3E,sBAAsB,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAiB1D,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAmB9E"}
1
+ {"version":3,"file":"SystemClient.d.ts","sourceRoot":"","sources":["../../src/SystemClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,MAAM,MAAM,YAAY,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,oBAAY,gBAAgB;IAC3B,gBAAgB,uBAAuB;IACvC,eAAe,qBAAqB;IACpC,aAAa,mBAAmB;IAChC,aAAa,mBAAmB;IAChC,eAAe,qBAAqB;IACpC,eAAe,sBAAsB;CACrC;AAED,MAAM,MAAM,aAAa,GAAG;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,OAAO,EAAE,CAAA;IACxB,MAAM,EAAE,OAAO,EAAE,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC7B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,CAAA;CAC/B,CAAA;AAED,qBAAa,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,aAAa,EAAI;IAEzD,OAAc,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CAGzF;IAEY,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,KAAK,UAAQ,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B/F;IAEY,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BlG;IAEY,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB3D;IAEY,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBvF;IAEY,sBAAsB,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAetE;IAEY,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkB7E;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,SAAS,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACnG,OAAO,EAAqB,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAErE,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC3D,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IACnD,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB;AAED,oBAAY,cAAc;IACzB,aAAa,kBAAkB;IAC/B,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;CACrC;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,cAAc;IAC5D,KAAK,EAAE,CAAC,CAAA;IACR,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,0BAA2B,SAAQ,mBAAmB,CAAC,cAAc,CAAC,aAAa,CAAC;IACpG,cAAc,EAAE,aAAa,CAAA;CAC7B;AAED,UAAU,+BAAgC,SAAQ,mBAAmB,CAAC,cAAc,CAAC,gBAAgB,CAAC;IACrG,cAAc,EAAE,aAAa,CAAA;IAC7B,YAAY,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,yBAA0B,SAAQ,mBAAmB,CAAC,cAAc,CAAC,WAAW,CAAC;IAC1F,iBAAiB,EAAE,qBAAqB,CAAA;IACxC,cAAc,EAAE,aAAa,CAAA;CAC7B;AAED,UAAU,8BAA+B,SAAQ,mBAAmB,CAAC,cAAc,CAAC,gBAAgB,CAAC;IACpG,iBAAiB,EAAE,qBAAqB,CAAA;IACxC,YAAY,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,4BAA6B,SAAQ,mBAAmB,CAAC,cAAc,CAAC,cAAc,CAAC;IAChG,iBAAiB,EAAE,qBAAqB,CAAA;IACxC,cAAc,EAAE,aAAa,CAAA;IAC7B,YAAY,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB,CAAC,cAAc,CAAC,UAAU,CAAC;IAC1F,cAAc,EAAE,aAAa,CAAA;CAC7B;AAED,MAAM,MAAM,oBAAoB,GAC7B,+BAA+B,GAC/B,8BAA8B,GAC9B,4BAA4B,CAAA;AAE/B,MAAM,MAAM,kBAAkB,GAC3B,oBAAoB,GACpB,0BAA0B,GAC1B,yBAAyB,GACzB,mBAAmB,CAAA;AAOtB,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,YAAY,CAAC,EAAE,KAAG,CAAC,EAEhF,CAAA;AAED,qBAAa,wBAAwB;IAC9B,mBAAmB,CACxB,kBAAkB,EAAE,qBAAqB,EAAE,EAC3C,eAAe,EAAE,aAAa,EAAE,EAChC,KAAK,GAAE,OAAe,GACpB,OAAO,CAAC;QACV,aAAa,EAAE,kBAAkB,EAAE,CAAA;QACnC,eAAe,EAAE,oBAAoB,EAAE,CAAA;QACvC,mBAAmB,EAAE,0BAA0B,EAAE,CAAA;KACjD,CAAC;CAmFF"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,SAAS,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACnG,OAAO,EAAqB,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAErE,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC3D,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IACnD,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB;AAED,oBAAY,cAAc;IACzB,aAAa,kBAAkB;IAC/B,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;CACrC;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,cAAc;IAC5D,KAAK,EAAE,CAAC,CAAA;IACR,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,0BAA2B,SAAQ,mBAAmB,CAAC,cAAc,CAAC,aAAa,CAAC;IACpG,cAAc,EAAE,aAAa,CAAA;CAC7B;AAED,UAAU,+BAAgC,SAAQ,mBAAmB,CAAC,cAAc,CAAC,gBAAgB,CAAC;IACrG,cAAc,EAAE,aAAa,CAAA;IAC7B,YAAY,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,yBAA0B,SAAQ,mBAAmB,CAAC,cAAc,CAAC,WAAW,CAAC;IAC1F,iBAAiB,EAAE,qBAAqB,CAAA;IACxC,cAAc,EAAE,aAAa,CAAA;CAC7B;AAED,UAAU,8BAA+B,SAAQ,mBAAmB,CAAC,cAAc,CAAC,gBAAgB,CAAC;IACpG,iBAAiB,EAAE,qBAAqB,CAAA;IACxC,YAAY,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,4BAA6B,SAAQ,mBAAmB,CAAC,cAAc,CAAC,cAAc,CAAC;IAChG,iBAAiB,EAAE,qBAAqB,CAAA;IACxC,cAAc,EAAE,aAAa,CAAA;IAC7B,YAAY,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB,CAAC,cAAc,CAAC,UAAU,CAAC;IAC1F,cAAc,EAAE,aAAa,CAAA;CAC7B;AAED,MAAM,MAAM,oBAAoB,GAC7B,+BAA+B,GAC/B,8BAA8B,GAC9B,4BAA4B,CAAA;AAE/B,MAAM,MAAM,kBAAkB,GAC3B,oBAAoB,GACpB,0BAA0B,GAC1B,yBAAyB,GACzB,mBAAmB,CAAA;AAOtB,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,cAAc,CAAC,EAAE,KAAG,CAAC,EAEhF,CAAA;AAED,qBAAa,wBAAwB;IAC9B,mBAAmB,CACxB,kBAAkB,EAAE,qBAAqB,EAAE,EAC3C,eAAe,EAAE,aAAa,EAAE,EAChC,KAAK,GAAE,OAAe,GACpB,OAAO,CAAC;QACV,aAAa,EAAE,kBAAkB,EAAE,CAAA;QACnC,eAAe,EAAE,oBAAoB,EAAE,CAAA;QACvC,mBAAmB,EAAE,0BAA0B,EAAE,CAAA;KACjD,CAAC,CAkFD;CACD"}