@payloadcms/db-postgres 0.1.0-beta.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. package/README.md +32 -0
  2. package/dist/connect.d.ts.map +1 -1
  3. package/dist/connect.js +28 -19
  4. package/dist/createMigration.d.ts.map +1 -1
  5. package/dist/createMigration.js +29 -19
  6. package/dist/createVersion.js +2 -2
  7. package/dist/extendViteConfig.d.ts +4 -0
  8. package/dist/extendViteConfig.d.ts.map +1 -0
  9. package/dist/extendViteConfig.js +38 -0
  10. package/dist/extendWebpackConfig.d.ts +4 -0
  11. package/dist/extendWebpackConfig.d.ts.map +1 -0
  12. package/dist/extendWebpackConfig.js +45 -0
  13. package/dist/find/buildFindManyArgs.js +3 -3
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +16 -5
  16. package/dist/init.d.ts.map +1 -1
  17. package/dist/init.js +2 -4
  18. package/dist/migrate.d.ts.map +1 -1
  19. package/dist/migrate.js +63 -39
  20. package/dist/migrateDown.d.ts +3 -0
  21. package/dist/migrateDown.d.ts.map +1 -0
  22. package/dist/migrateDown.js +71 -0
  23. package/dist/migrateFresh.d.ts +6 -0
  24. package/dist/migrateFresh.d.ts.map +1 -0
  25. package/dist/migrateFresh.js +81 -0
  26. package/dist/migrateRefresh.d.ts +6 -0
  27. package/dist/migrateRefresh.d.ts.map +1 -0
  28. package/dist/migrateRefresh.js +109 -0
  29. package/dist/migrateReset.d.ts +6 -0
  30. package/dist/migrateReset.d.ts.map +1 -0
  31. package/dist/migrateReset.js +89 -0
  32. package/dist/queries/getTableColumnFromPath.js +2 -2
  33. package/dist/schema/build.d.ts +2 -1
  34. package/dist/schema/build.d.ts.map +1 -1
  35. package/dist/schema/build.js +14 -11
  36. package/dist/schema/createIndex.d.ts +1 -1
  37. package/dist/schema/createIndex.d.ts.map +1 -1
  38. package/dist/schema/createIndex.js +12 -3
  39. package/dist/schema/traverseFields.d.ts.map +1 -1
  40. package/dist/schema/traverseFields.js +19 -14
  41. package/dist/transform/read/index.js +4 -4
  42. package/dist/types.d.ts +7 -4
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/update.d.ts.map +1 -1
  45. package/dist/update.js +51 -5
  46. package/dist/upsertRow/index.js +2 -2
  47. package/dist/utilities/createMigrationTable.d.ts.map +1 -1
  48. package/dist/utilities/createMigrationTable.js +1 -2
  49. package/dist/utilities/parseError.d.ts +5 -0
  50. package/dist/utilities/parseError.d.ts.map +1 -0
  51. package/dist/utilities/parseError.js +24 -0
  52. package/mock.js +1 -0
  53. package/package.json +5 -4
  54. package/src/index.ts +18 -5
  55. package/dist/mock.js +0 -13
  56. package/dist/webpack.d.ts +0 -3
  57. package/dist/webpack.d.ts.map +0 -1
  58. package/dist/webpack.js +0 -32
package/dist/migrate.js CHANGED
@@ -10,71 +10,95 @@ Object.defineProperty(exports, "migrate", {
10
10
  });
11
11
  const _utils = require("drizzle-kit/utils");
12
12
  const _database = require("payload/database");
13
- const _pg = require("pg");
13
+ const _prompts = /*#__PURE__*/ _interop_require_default(require("prompts"));
14
14
  const _createMigrationTable = require("./utilities/createMigrationTable");
15
15
  const _migrationTableExists = require("./utilities/migrationTableExists");
16
+ const _parseError = require("./utilities/parseError");
17
+ function _interop_require_default(obj) {
18
+ return obj && obj.__esModule ? obj : {
19
+ default: obj
20
+ };
21
+ }
16
22
  async function migrate() {
17
23
  const { payload } = this;
18
24
  const migrationFiles = await (0, _database.readMigrationFiles)({
19
25
  payload
20
26
  });
27
+ if (!migrationFiles.length) {
28
+ payload.logger.info({
29
+ msg: 'No migrations to run.'
30
+ });
31
+ return;
32
+ }
21
33
  let latestBatch = 0;
22
- let existingMigrations = [];
34
+ let migrationsInDB = [];
23
35
  const hasMigrationTable = await (0, _migrationTableExists.migrationTableExists)(this.drizzle);
24
36
  if (hasMigrationTable) {
25
- ({ docs: existingMigrations } = await payload.find({
37
+ ({ docs: migrationsInDB } = await payload.find({
26
38
  collection: 'payload-migrations',
27
39
  limit: 0,
28
40
  sort: '-name'
29
41
  }));
30
- if (typeof existingMigrations[0]?.batch !== 'undefined') {
31
- latestBatch = Number(existingMigrations[0]?.batch);
42
+ if (Number(migrationsInDB?.[0]?.batch) > 0) {
43
+ latestBatch = Number(migrationsInDB[0]?.batch);
32
44
  }
33
45
  } else {
34
46
  await (0, _createMigrationTable.createMigrationTable)(this.drizzle);
35
47
  }
48
+ if (migrationsInDB.find((m)=>m.batch === -1)) {
49
+ const { confirm: runMigrations } = await (0, _prompts.default)({
50
+ name: 'confirm',
51
+ initial: false,
52
+ message: "It looks like you've run Payload in dev mode, meaning you've dynamically pushed changes to your database.\n\n" + "If you'd like to run migrations, data loss will occur. Would you like to proceed?",
53
+ type: 'confirm'
54
+ }, {
55
+ onCancel: ()=>{
56
+ process.exit(0);
57
+ }
58
+ });
59
+ if (!runMigrations) {
60
+ process.exit(0);
61
+ }
62
+ }
36
63
  const newBatch = latestBatch + 1;
37
64
  // Execute 'up' function for each migration sequentially
38
65
  for (const migration of migrationFiles){
39
- const existingMigration = existingMigrations.find((existing)=>existing.name === migration.name);
40
- // Run migration if not found in database
41
- if (existingMigration) {
66
+ const alreadyRan = migrationsInDB.find((existing)=>existing.name === migration.name);
67
+ // If already ran, skip
68
+ if (alreadyRan) {
42
69
  continue; // eslint-disable-line no-continue
43
70
  }
44
- const start = Date.now();
71
+ await runMigrationFile(payload, migration, newBatch);
72
+ }
73
+ }
74
+ async function runMigrationFile(payload, migration, batch) {
75
+ const start = Date.now();
76
+ payload.logger.info({
77
+ msg: `Migrating: ${migration.name}`
78
+ });
79
+ const pgAdapter = payload.db;
80
+ const drizzleJSON = (0, _utils.generateDrizzleJson)(pgAdapter.schema);
81
+ try {
82
+ await migration.up({
83
+ payload
84
+ });
45
85
  payload.logger.info({
46
- msg: `Migrating: ${migration.name}`
86
+ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
47
87
  });
48
- const pgAdapter = payload.db;
49
- const drizzleJSON = (0, _utils.generateDrizzleJson)(pgAdapter.schema);
50
- try {
51
- await migration.up({
52
- payload
53
- });
54
- payload.logger.info({
55
- msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
56
- });
57
- await payload.create({
58
- collection: 'payload-migrations',
59
- data: {
60
- name: migration.name,
61
- batch: newBatch,
62
- schema: drizzleJSON
63
- }
64
- });
65
- } catch (err) {
66
- let msg = `Error running migration ${migration.name}`;
67
- if (err instanceof _pg.DatabaseError) {
68
- msg += `: ${err.message}`;
69
- if (err.hint) msg += `. ${err.hint}`;
88
+ await payload.create({
89
+ collection: 'payload-migrations',
90
+ data: {
91
+ name: migration.name,
92
+ batch,
93
+ schema: drizzleJSON
70
94
  }
71
- payload.logger.error({
72
- err,
73
- msg
74
- });
75
- throw err;
76
- }
95
+ });
96
+ } catch (err) {
97
+ payload.logger.error({
98
+ err,
99
+ msg: (0, _parseError.parseError)(err, `Error running migration ${migration.name}`)
100
+ });
77
101
  }
78
102
  }
79
103
 
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWdyYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4LCBuby1hd2FpdC1pbi1sb29wICovXG5pbXBvcnQgeyBnZW5lcmF0ZURyaXp6bGVKc29uIH0gZnJvbSAnZHJpenpsZS1raXQvdXRpbHMnXG5pbXBvcnQgeyByZWFkTWlncmF0aW9uRmlsZXMgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuaW1wb3J0IHsgRGF0YWJhc2VFcnJvciB9IGZyb20gJ3BnJ1xuXG5pbXBvcnQgdHlwZSB7IFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IGNyZWF0ZU1pZ3JhdGlvblRhYmxlIH0gZnJvbSAnLi91dGlsaXRpZXMvY3JlYXRlTWlncmF0aW9uVGFibGUnXG5pbXBvcnQgeyBtaWdyYXRpb25UYWJsZUV4aXN0cyB9IGZyb20gJy4vdXRpbGl0aWVzL21pZ3JhdGlvblRhYmxlRXhpc3RzJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWlncmF0ZSh0aGlzOiBQb3N0Z3Jlc0FkYXB0ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBwYXlsb2FkIH0gPSB0aGlzXG4gIGNvbnN0IG1pZ3JhdGlvbkZpbGVzID0gYXdhaXQgcmVhZE1pZ3JhdGlvbkZpbGVzKHsgcGF5bG9hZCB9KVxuXG4gIGxldCBsYXRlc3RCYXRjaCA9IDBcbiAgbGV0IGV4aXN0aW5nTWlncmF0aW9ucyA9IFtdXG5cbiAgY29uc3QgaGFzTWlncmF0aW9uVGFibGUgPSBhd2FpdCBtaWdyYXRpb25UYWJsZUV4aXN0cyh0aGlzLmRyaXp6bGUpXG5cbiAgaWYgKGhhc01pZ3JhdGlvblRhYmxlKSB7XG4gICAgOyh7IGRvY3M6IGV4aXN0aW5nTWlncmF0aW9ucyB9ID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgIGNvbGxlY3Rpb246ICdwYXlsb2FkLW1pZ3JhdGlvbnMnLFxuICAgICAgbGltaXQ6IDAsXG4gICAgICBzb3J0OiAnLW5hbWUnLFxuICAgIH0pKVxuICAgIGlmICh0eXBlb2YgZXhpc3RpbmdNaWdyYXRpb25zWzBdPy5iYXRjaCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxhdGVzdEJhdGNoID0gTnVtYmVyKGV4aXN0aW5nTWlncmF0aW9uc1swXT8uYmF0Y2gpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGF3YWl0IGNyZWF0ZU1pZ3JhdGlvblRhYmxlKHRoaXMuZHJpenpsZSlcbiAgfVxuXG4gIGNvbnN0IG5ld0JhdGNoID0gbGF0ZXN0QmF0Y2ggKyAxXG5cbiAgLy8gRXhlY3V0ZSAndXAnIGZ1bmN0aW9uIGZvciBlYWNoIG1pZ3JhdGlvbiBzZXF1ZW50aWFsbHlcbiAgZm9yIChjb25zdCBtaWdyYXRpb24gb2YgbWlncmF0aW9uRmlsZXMpIHtcbiAgICBjb25zdCBleGlzdGluZ01pZ3JhdGlvbiA9IGV4aXN0aW5nTWlncmF0aW9ucy5maW5kKFxuICAgICAgKGV4aXN0aW5nKSA9PiBleGlzdGluZy5uYW1lID09PSBtaWdyYXRpb24ubmFtZSxcbiAgICApXG5cbiAgICAvLyBSdW4gbWlncmF0aW9uIGlmIG5vdCBmb3VuZCBpbiBkYXRhYmFzZVxuICAgIGlmIChleGlzdGluZ01pZ3JhdGlvbikge1xuICAgICAgY29udGludWUgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuXG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogYE1pZ3JhdGluZzogJHttaWdyYXRpb24ubmFtZX1gIH0pXG5cbiAgICBjb25zdCBwZ0FkYXB0ZXIgPSBwYXlsb2FkLmRiXG4gICAgY29uc3QgZHJpenpsZUpTT04gPSBnZW5lcmF0ZURyaXp6bGVKc29uKHBnQWRhcHRlci5zY2hlbWEpXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgbWlncmF0aW9uLnVwKHsgcGF5bG9hZCB9KVxuICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogYE1pZ3JhdGVkOiAgJHttaWdyYXRpb24ubmFtZX0gKCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zKWAgfSlcbiAgICAgIGF3YWl0IHBheWxvYWQuY3JlYXRlKHtcbiAgICAgICAgY29sbGVjdGlvbjogJ3BheWxvYWQtbWlncmF0aW9ucycsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBuYW1lOiBtaWdyYXRpb24ubmFtZSxcbiAgICAgICAgICBiYXRjaDogbmV3QmF0Y2gsXG4gICAgICAgICAgc2NoZW1hOiBkcml6emxlSlNPTixcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgICBsZXQgbXNnID0gYEVycm9yIHJ1bm5pbmcgbWlncmF0aW9uICR7bWlncmF0aW9uLm5hbWV9YFxuXG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRGF0YWJhc2VFcnJvcikge1xuICAgICAgICBtc2cgKz0gYDogJHtlcnIubWVzc2FnZX1gXG4gICAgICAgIGlmIChlcnIuaGludCkgbXNnICs9IGAuICR7ZXJyLmhpbnR9YFxuICAgICAgfVxuXG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7IGVyciwgbXNnIH0pXG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJtaWdyYXRlIiwicGF5bG9hZCIsIm1pZ3JhdGlvbkZpbGVzIiwicmVhZE1pZ3JhdGlvbkZpbGVzIiwibGF0ZXN0QmF0Y2giLCJleGlzdGluZ01pZ3JhdGlvbnMiLCJoYXNNaWdyYXRpb25UYWJsZSIsIm1pZ3JhdGlvblRhYmxlRXhpc3RzIiwiZHJpenpsZSIsImRvY3MiLCJmaW5kIiwiY29sbGVjdGlvbiIsImxpbWl0Iiwic29ydCIsImJhdGNoIiwiTnVtYmVyIiwiY3JlYXRlTWlncmF0aW9uVGFibGUiLCJuZXdCYXRjaCIsIm1pZ3JhdGlvbiIsImV4aXN0aW5nTWlncmF0aW9uIiwiZXhpc3RpbmciLCJuYW1lIiwic3RhcnQiLCJEYXRlIiwibm93IiwibG9nZ2VyIiwiaW5mbyIsIm1zZyIsInBnQWRhcHRlciIsImRiIiwiZHJpenpsZUpTT04iLCJnZW5lcmF0ZURyaXp6bGVKc29uIiwic2NoZW1hIiwidXAiLCJjcmVhdGUiLCJkYXRhIiwiZXJyIiwiRGF0YWJhc2VFcnJvciIsIm1lc3NhZ2UiLCJoaW50IiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDs7OzsrQkFVbkNBOzs7ZUFBQUE7Ozt1QkFUYzswQkFDRDtvQkFDTDtzQ0FJTztzQ0FDQTtBQUU5QixlQUFlQTtJQUNwQixNQUFNLEVBQUVDLE9BQU8sRUFBRSxHQUFHLElBQUk7SUFDeEIsTUFBTUMsaUJBQWlCLE1BQU1DLElBQUFBLDRCQUFrQixFQUFDO1FBQUVGO0lBQVE7SUFFMUQsSUFBSUcsY0FBYztJQUNsQixJQUFJQyxxQkFBcUIsRUFBRTtJQUUzQixNQUFNQyxvQkFBb0IsTUFBTUMsSUFBQUEsMENBQW9CLEVBQUMsSUFBSSxDQUFDQyxPQUFPO0lBRWpFLElBQUlGLG1CQUFtQjtRQUNuQixDQUFBLEVBQUVHLE1BQU1KLGtCQUFrQixFQUFFLEdBQUcsTUFBTUosUUFBUVMsSUFBSSxDQUFDO1lBQ2xEQyxZQUFZO1lBQ1pDLE9BQU87WUFDUEMsTUFBTTtRQUNSLEVBQUM7UUFDRCxJQUFJLE9BQU9SLGtCQUFrQixDQUFDLEVBQUUsRUFBRVMsVUFBVSxhQUFhO1lBQ3ZEVixjQUFjVyxPQUFPVixrQkFBa0IsQ0FBQyxFQUFFLEVBQUVTO1FBQzlDO0lBQ0YsT0FBTztRQUNMLE1BQU1FLElBQUFBLDBDQUFvQixFQUFDLElBQUksQ0FBQ1IsT0FBTztJQUN6QztJQUVBLE1BQU1TLFdBQVdiLGNBQWM7SUFFL0Isd0RBQXdEO0lBQ3hELEtBQUssTUFBTWMsYUFBYWhCLGVBQWdCO1FBQ3RDLE1BQU1pQixvQkFBb0JkLG1CQUFtQkssSUFBSSxDQUMvQyxDQUFDVSxXQUFhQSxTQUFTQyxJQUFJLEtBQUtILFVBQVVHLElBQUk7UUFHaEQseUNBQXlDO1FBQ3pDLElBQUlGLG1CQUFtQjtZQUNyQixVQUFTLGtDQUFrQztRQUM3QztRQUVBLE1BQU1HLFFBQVFDLEtBQUtDLEdBQUc7UUFFdEJ2QixRQUFRd0IsTUFBTSxDQUFDQyxJQUFJLENBQUM7WUFBRUMsS0FBSyxDQUFDLFdBQVcsRUFBRVQsVUFBVUcsSUFBSSxDQUFDLENBQUM7UUFBQztRQUUxRCxNQUFNTyxZQUFZM0IsUUFBUTRCLEVBQUU7UUFDNUIsTUFBTUMsY0FBY0MsSUFBQUEsMEJBQW1CLEVBQUNILFVBQVVJLE1BQU07UUFFeEQsSUFBSTtZQUNGLE1BQU1kLFVBQVVlLEVBQUUsQ0FBQztnQkFBRWhDO1lBQVE7WUFDN0JBLFFBQVF3QixNQUFNLENBQUNDLElBQUksQ0FBQztnQkFBRUMsS0FBSyxDQUFDLFdBQVcsRUFBRVQsVUFBVUcsSUFBSSxDQUFDLEVBQUUsRUFBRUUsS0FBS0MsR0FBRyxLQUFLRixNQUFNLEdBQUcsQ0FBQztZQUFDO1lBQ3BGLE1BQU1yQixRQUFRaUMsTUFBTSxDQUFDO2dCQUNuQnZCLFlBQVk7Z0JBQ1p3QixNQUFNO29CQUNKZCxNQUFNSCxVQUFVRyxJQUFJO29CQUNwQlAsT0FBT0c7b0JBQ1BlLFFBQVFGO2dCQUNWO1lBQ0Y7UUFDRixFQUFFLE9BQU9NLEtBQWM7WUFDckIsSUFBSVQsTUFBTSxDQUFDLHdCQUF3QixFQUFFVCxVQUFVRyxJQUFJLENBQUMsQ0FBQztZQUVyRCxJQUFJZSxlQUFlQyxpQkFBYSxFQUFFO2dCQUNoQ1YsT0FBTyxDQUFDLEVBQUUsRUFBRVMsSUFBSUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3pCLElBQUlGLElBQUlHLElBQUksRUFBRVosT0FBTyxDQUFDLEVBQUUsRUFBRVMsSUFBSUcsSUFBSSxDQUFDLENBQUM7WUFDdEM7WUFFQXRDLFFBQVF3QixNQUFNLENBQUNlLEtBQUssQ0FBQztnQkFBRUo7Z0JBQUtUO1lBQUk7WUFDaEMsTUFBTVM7UUFDUjtJQUNGO0FBQ0YifQ==
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWdyYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4LCBuby1hd2FpdC1pbi1sb29wICovXG5pbXBvcnQgdHlwZSB7IFBheWxvYWQgfSBmcm9tICdwYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBNaWdyYXRpb24gfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuXG5pbXBvcnQgeyBnZW5lcmF0ZURyaXp6bGVKc29uIH0gZnJvbSAnZHJpenpsZS1raXQvdXRpbHMnXG5pbXBvcnQgeyByZWFkTWlncmF0aW9uRmlsZXMgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuaW1wb3J0IHsgRGF0YWJhc2VFcnJvciB9IGZyb20gJ3BnJ1xuaW1wb3J0IHByb21wdHMgZnJvbSAncHJvbXB0cydcblxuaW1wb3J0IHR5cGUgeyBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBjcmVhdGVNaWdyYXRpb25UYWJsZSB9IGZyb20gJy4vdXRpbGl0aWVzL2NyZWF0ZU1pZ3JhdGlvblRhYmxlJ1xuaW1wb3J0IHsgbWlncmF0aW9uVGFibGVFeGlzdHMgfSBmcm9tICcuL3V0aWxpdGllcy9taWdyYXRpb25UYWJsZUV4aXN0cydcbmltcG9ydCB7IHBhcnNlRXJyb3IgfSBmcm9tICcuL3V0aWxpdGllcy9wYXJzZUVycm9yJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWlncmF0ZSh0aGlzOiBQb3N0Z3Jlc0FkYXB0ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBwYXlsb2FkIH0gPSB0aGlzXG4gIGNvbnN0IG1pZ3JhdGlvbkZpbGVzID0gYXdhaXQgcmVhZE1pZ3JhdGlvbkZpbGVzKHsgcGF5bG9hZCB9KVxuXG4gIGlmICghbWlncmF0aW9uRmlsZXMubGVuZ3RoKSB7XG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogJ05vIG1pZ3JhdGlvbnMgdG8gcnVuLicgfSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGxldCBsYXRlc3RCYXRjaCA9IDBcbiAgbGV0IG1pZ3JhdGlvbnNJbkRCID0gW11cblxuICBjb25zdCBoYXNNaWdyYXRpb25UYWJsZSA9IGF3YWl0IG1pZ3JhdGlvblRhYmxlRXhpc3RzKHRoaXMuZHJpenpsZSlcblxuICBpZiAoaGFzTWlncmF0aW9uVGFibGUpIHtcbiAgICA7KHsgZG9jczogbWlncmF0aW9uc0luREIgfSA9IGF3YWl0IHBheWxvYWQuZmluZCh7XG4gICAgICBjb2xsZWN0aW9uOiAncGF5bG9hZC1taWdyYXRpb25zJyxcbiAgICAgIGxpbWl0OiAwLFxuICAgICAgc29ydDogJy1uYW1lJyxcbiAgICB9KSlcbiAgICBpZiAoTnVtYmVyKG1pZ3JhdGlvbnNJbkRCPy5bMF0/LmJhdGNoKSA+IDApIHtcbiAgICAgIGxhdGVzdEJhdGNoID0gTnVtYmVyKG1pZ3JhdGlvbnNJbkRCWzBdPy5iYXRjaClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgY3JlYXRlTWlncmF0aW9uVGFibGUodGhpcy5kcml6emxlKVxuICB9XG5cbiAgaWYgKG1pZ3JhdGlvbnNJbkRCLmZpbmQoKG0pID0+IG0uYmF0Y2ggPT09IC0xKSkge1xuICAgIGNvbnN0IHsgY29uZmlybTogcnVuTWlncmF0aW9ucyB9ID0gYXdhaXQgcHJvbXB0cyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NvbmZpcm0nLFxuICAgICAgICBpbml0aWFsOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICBcIkl0IGxvb2tzIGxpa2UgeW91J3ZlIHJ1biBQYXlsb2FkIGluIGRldiBtb2RlLCBtZWFuaW5nIHlvdSd2ZSBkeW5hbWljYWxseSBwdXNoZWQgY2hhbmdlcyB0byB5b3VyIGRhdGFiYXNlLlxcblxcblwiICtcbiAgICAgICAgICBcIklmIHlvdSdkIGxpa2UgdG8gcnVuIG1pZ3JhdGlvbnMsIGRhdGEgbG9zcyB3aWxsIG9jY3VyLiBXb3VsZCB5b3UgbGlrZSB0byBwcm9jZWVkP1wiLFxuICAgICAgICB0eXBlOiAnY29uZmlybScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvbkNhbmNlbDogKCkgPT4ge1xuICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApXG5cbiAgICBpZiAoIXJ1bk1pZ3JhdGlvbnMpIHtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG5ld0JhdGNoID0gbGF0ZXN0QmF0Y2ggKyAxXG5cbiAgLy8gRXhlY3V0ZSAndXAnIGZ1bmN0aW9uIGZvciBlYWNoIG1pZ3JhdGlvbiBzZXF1ZW50aWFsbHlcbiAgZm9yIChjb25zdCBtaWdyYXRpb24gb2YgbWlncmF0aW9uRmlsZXMpIHtcbiAgICBjb25zdCBhbHJlYWR5UmFuID0gbWlncmF0aW9uc0luREIuZmluZCgoZXhpc3RpbmcpID0+IGV4aXN0aW5nLm5hbWUgPT09IG1pZ3JhdGlvbi5uYW1lKVxuXG4gICAgLy8gSWYgYWxyZWFkeSByYW4sIHNraXBcbiAgICBpZiAoYWxyZWFkeVJhbikge1xuICAgICAgY29udGludWUgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb250aW51ZVxuICAgIH1cblxuICAgIGF3YWl0IHJ1bk1pZ3JhdGlvbkZpbGUocGF5bG9hZCwgbWlncmF0aW9uLCBuZXdCYXRjaClcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBydW5NaWdyYXRpb25GaWxlKHBheWxvYWQ6IFBheWxvYWQsIG1pZ3JhdGlvbjogTWlncmF0aW9uLCBiYXRjaDogbnVtYmVyKSB7XG4gIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuXG4gIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6IGBNaWdyYXRpbmc6ICR7bWlncmF0aW9uLm5hbWV9YCB9KVxuXG4gIGNvbnN0IHBnQWRhcHRlciA9IHBheWxvYWQuZGJcbiAgY29uc3QgZHJpenpsZUpTT04gPSBnZW5lcmF0ZURyaXp6bGVKc29uKHBnQWRhcHRlci5zY2hlbWEpXG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBtaWdyYXRpb24udXAoeyBwYXlsb2FkIH0pXG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogYE1pZ3JhdGVkOiAgJHttaWdyYXRpb24ubmFtZX0gKCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zKWAgfSlcbiAgICBhd2FpdCBwYXlsb2FkLmNyZWF0ZSh7XG4gICAgICBjb2xsZWN0aW9uOiAncGF5bG9hZC1taWdyYXRpb25zJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbmFtZTogbWlncmF0aW9uLm5hbWUsXG4gICAgICAgIGJhdGNoLFxuICAgICAgICBzY2hlbWE6IGRyaXp6bGVKU09OLFxuICAgICAgfSxcbiAgICB9KVxuICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICBlcnIsXG4gICAgICBtc2c6IHBhcnNlRXJyb3IoZXJyLCBgRXJyb3IgcnVubmluZyBtaWdyYXRpb24gJHttaWdyYXRpb24ubmFtZX1gKSxcbiAgICB9KVxuICB9XG59XG4iXSwibmFtZXMiOlsibWlncmF0ZSIsInBheWxvYWQiLCJtaWdyYXRpb25GaWxlcyIsInJlYWRNaWdyYXRpb25GaWxlcyIsImxlbmd0aCIsImxvZ2dlciIsImluZm8iLCJtc2ciLCJsYXRlc3RCYXRjaCIsIm1pZ3JhdGlvbnNJbkRCIiwiaGFzTWlncmF0aW9uVGFibGUiLCJtaWdyYXRpb25UYWJsZUV4aXN0cyIsImRyaXp6bGUiLCJkb2NzIiwiZmluZCIsImNvbGxlY3Rpb24iLCJsaW1pdCIsInNvcnQiLCJOdW1iZXIiLCJiYXRjaCIsImNyZWF0ZU1pZ3JhdGlvblRhYmxlIiwibSIsImNvbmZpcm0iLCJydW5NaWdyYXRpb25zIiwicHJvbXB0cyIsIm5hbWUiLCJpbml0aWFsIiwibWVzc2FnZSIsInR5cGUiLCJvbkNhbmNlbCIsInByb2Nlc3MiLCJleGl0IiwibmV3QmF0Y2giLCJtaWdyYXRpb24iLCJhbHJlYWR5UmFuIiwiZXhpc3RpbmciLCJydW5NaWdyYXRpb25GaWxlIiwic3RhcnQiLCJEYXRlIiwibm93IiwicGdBZGFwdGVyIiwiZGIiLCJkcml6emxlSlNPTiIsImdlbmVyYXRlRHJpenpsZUpzb24iLCJzY2hlbWEiLCJ1cCIsImNyZWF0ZSIsImRhdGEiLCJlcnIiLCJlcnJvciIsInBhcnNlRXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDs7OzsrQkFlbkNBOzs7ZUFBQUE7Ozt1QkFYYzswQkFDRDtnRUFFZjtzQ0FJaUI7c0NBQ0E7NEJBQ1Y7Ozs7OztBQUVwQixlQUFlQTtJQUNwQixNQUFNLEVBQUVDLE9BQU8sRUFBRSxHQUFHLElBQUk7SUFDeEIsTUFBTUMsaUJBQWlCLE1BQU1DLElBQUFBLDRCQUFrQixFQUFDO1FBQUVGO0lBQVE7SUFFMUQsSUFBSSxDQUFDQyxlQUFlRSxNQUFNLEVBQUU7UUFDMUJILFFBQVFJLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO1lBQUVDLEtBQUs7UUFBd0I7UUFDbkQ7SUFDRjtJQUVBLElBQUlDLGNBQWM7SUFDbEIsSUFBSUMsaUJBQWlCLEVBQUU7SUFFdkIsTUFBTUMsb0JBQW9CLE1BQU1DLElBQUFBLDBDQUFvQixFQUFDLElBQUksQ0FBQ0MsT0FBTztJQUVqRSxJQUFJRixtQkFBbUI7UUFDbkIsQ0FBQSxFQUFFRyxNQUFNSixjQUFjLEVBQUUsR0FBRyxNQUFNUixRQUFRYSxJQUFJLENBQUM7WUFDOUNDLFlBQVk7WUFDWkMsT0FBTztZQUNQQyxNQUFNO1FBQ1IsRUFBQztRQUNELElBQUlDLE9BQU9ULGdCQUFnQixDQUFDLEVBQUUsRUFBRVUsU0FBUyxHQUFHO1lBQzFDWCxjQUFjVSxPQUFPVCxjQUFjLENBQUMsRUFBRSxFQUFFVTtRQUMxQztJQUNGLE9BQU87UUFDTCxNQUFNQyxJQUFBQSwwQ0FBb0IsRUFBQyxJQUFJLENBQUNSLE9BQU87SUFDekM7SUFFQSxJQUFJSCxlQUFlSyxJQUFJLENBQUMsQ0FBQ08sSUFBTUEsRUFBRUYsS0FBSyxLQUFLLENBQUMsSUFBSTtRQUM5QyxNQUFNLEVBQUVHLFNBQVNDLGFBQWEsRUFBRSxHQUFHLE1BQU1DLElBQUFBLGdCQUFPLEVBQzlDO1lBQ0VDLE1BQU07WUFDTkMsU0FBUztZQUNUQyxTQUNFLGtIQUNBO1lBQ0ZDLE1BQU07UUFDUixHQUNBO1lBQ0VDLFVBQVU7Z0JBQ1JDLFFBQVFDLElBQUksQ0FBQztZQUNmO1FBQ0Y7UUFHRixJQUFJLENBQUNSLGVBQWU7WUFDbEJPLFFBQVFDLElBQUksQ0FBQztRQUNmO0lBQ0Y7SUFFQSxNQUFNQyxXQUFXeEIsY0FBYztJQUUvQix3REFBd0Q7SUFDeEQsS0FBSyxNQUFNeUIsYUFBYS9CLGVBQWdCO1FBQ3RDLE1BQU1nQyxhQUFhekIsZUFBZUssSUFBSSxDQUFDLENBQUNxQixXQUFhQSxTQUFTVixJQUFJLEtBQUtRLFVBQVVSLElBQUk7UUFFckYsdUJBQXVCO1FBQ3ZCLElBQUlTLFlBQVk7WUFDZCxVQUFTLGtDQUFrQztRQUM3QztRQUVBLE1BQU1FLGlCQUFpQm5DLFNBQVNnQyxXQUFXRDtJQUM3QztBQUNGO0FBRUEsZUFBZUksaUJBQWlCbkMsT0FBZ0IsRUFBRWdDLFNBQW9CLEVBQUVkLEtBQWE7SUFDbkYsTUFBTWtCLFFBQVFDLEtBQUtDLEdBQUc7SUFFdEJ0QyxRQUFRSSxNQUFNLENBQUNDLElBQUksQ0FBQztRQUFFQyxLQUFLLENBQUMsV0FBVyxFQUFFMEIsVUFBVVIsSUFBSSxDQUFDLENBQUM7SUFBQztJQUUxRCxNQUFNZSxZQUFZdkMsUUFBUXdDLEVBQUU7SUFDNUIsTUFBTUMsY0FBY0MsSUFBQUEsMEJBQW1CLEVBQUNILFVBQVVJLE1BQU07SUFFeEQsSUFBSTtRQUNGLE1BQU1YLFVBQVVZLEVBQUUsQ0FBQztZQUFFNUM7UUFBUTtRQUM3QkEsUUFBUUksTUFBTSxDQUFDQyxJQUFJLENBQUM7WUFBRUMsS0FBSyxDQUFDLFdBQVcsRUFBRTBCLFVBQVVSLElBQUksQ0FBQyxFQUFFLEVBQUVhLEtBQUtDLEdBQUcsS0FBS0YsTUFBTSxHQUFHLENBQUM7UUFBQztRQUNwRixNQUFNcEMsUUFBUTZDLE1BQU0sQ0FBQztZQUNuQi9CLFlBQVk7WUFDWmdDLE1BQU07Z0JBQ0p0QixNQUFNUSxVQUFVUixJQUFJO2dCQUNwQk47Z0JBQ0F5QixRQUFRRjtZQUNWO1FBQ0Y7SUFDRixFQUFFLE9BQU9NLEtBQWM7UUFDckIvQyxRQUFRSSxNQUFNLENBQUM0QyxLQUFLLENBQUM7WUFDbkJEO1lBQ0F6QyxLQUFLMkMsSUFBQUEsc0JBQVUsRUFBQ0YsS0FBSyxDQUFDLHdCQUF3QixFQUFFZixVQUFVUixJQUFJLENBQUMsQ0FBQztRQUNsRTtJQUNGO0FBQ0YifQ==
@@ -0,0 +1,3 @@
1
+ import type { PostgresAdapter } from './types';
2
+ export declare function migrateDown(this: PostgresAdapter): Promise<void>;
3
+ //# sourceMappingURL=migrateDown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrateDown.d.ts","sourceRoot":"","sources":["../src/migrateDown.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAK9C,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDtE"}
@@ -0,0 +1,71 @@
1
+ /* eslint-disable no-restricted-syntax, no-await-in-loop */ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "migrateDown", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return migrateDown;
9
+ }
10
+ });
11
+ const _database = require("payload/database");
12
+ const _migrationTableExists = require("./utilities/migrationTableExists");
13
+ const _parseError = require("./utilities/parseError");
14
+ async function migrateDown() {
15
+ const { payload } = this;
16
+ const migrationFiles = await (0, _database.readMigrationFiles)({
17
+ payload
18
+ });
19
+ const { existingMigrations, latestBatch } = await (0, _database.getMigrations)({
20
+ payload
21
+ });
22
+ if (!existingMigrations?.length) {
23
+ payload.logger.info({
24
+ msg: 'No migrations to rollback.'
25
+ });
26
+ return;
27
+ }
28
+ payload.logger.info({
29
+ msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`
30
+ });
31
+ for (const migration of existingMigrations){
32
+ const migrationFile = migrationFiles.find((m)=>m.name === migration.name);
33
+ if (!migrationFile) {
34
+ throw new Error(`Migration ${migration.name} not found locally.`);
35
+ }
36
+ const start = Date.now();
37
+ let transactionID;
38
+ try {
39
+ payload.logger.info({
40
+ msg: `Migrating down: ${migrationFile.name}`
41
+ });
42
+ transactionID = await this.beginTransaction();
43
+ await migrationFile.down({
44
+ payload
45
+ });
46
+ payload.logger.info({
47
+ msg: `Migrated down: ${migrationFile.name} (${Date.now() - start}ms)`
48
+ });
49
+ const tableExists = await (0, _migrationTableExists.migrationTableExists)(this.drizzle);
50
+ if (tableExists) {
51
+ await payload.delete({
52
+ id: migration.id,
53
+ collection: 'payload-migrations',
54
+ req: {
55
+ transactionID
56
+ }
57
+ });
58
+ }
59
+ await this.commitTransaction(transactionID);
60
+ } catch (err) {
61
+ await this.rollbackTransaction(transactionID);
62
+ payload.logger.error({
63
+ err,
64
+ msg: (0, _parseError.parseError)(err, `Error migrating down ${migrationFile.name}. Rolling back.`)
65
+ });
66
+ process.exit(1);
67
+ }
68
+ }
69
+ }
70
+
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWdyYXRlRG93bi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCwgbm8tYXdhaXQtaW4tbG9vcCAqL1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGdldE1pZ3JhdGlvbnMsIHJlYWRNaWdyYXRpb25GaWxlcyB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5cbmltcG9ydCB0eXBlIHsgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgbWlncmF0aW9uVGFibGVFeGlzdHMgfSBmcm9tICcuL3V0aWxpdGllcy9taWdyYXRpb25UYWJsZUV4aXN0cydcbmltcG9ydCB7IHBhcnNlRXJyb3IgfSBmcm9tICcuL3V0aWxpdGllcy9wYXJzZUVycm9yJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWlncmF0ZURvd24odGhpczogUG9zdGdyZXNBZGFwdGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcGF5bG9hZCB9ID0gdGhpc1xuICBjb25zdCBtaWdyYXRpb25GaWxlcyA9IGF3YWl0IHJlYWRNaWdyYXRpb25GaWxlcyh7IHBheWxvYWQgfSlcblxuICBjb25zdCB7IGV4aXN0aW5nTWlncmF0aW9ucywgbGF0ZXN0QmF0Y2ggfSA9IGF3YWl0IGdldE1pZ3JhdGlvbnMoe1xuICAgIHBheWxvYWQsXG4gIH0pXG5cbiAgaWYgKCFleGlzdGluZ01pZ3JhdGlvbnM/Lmxlbmd0aCkge1xuICAgIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6ICdObyBtaWdyYXRpb25zIHRvIHJvbGxiYWNrLicgfSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIHBheWxvYWQubG9nZ2VyLmluZm8oe1xuICAgIG1zZzogYFJvbGxpbmcgYmFjayBiYXRjaCAke2xhdGVzdEJhdGNofSBjb25zaXN0aW5nIG9mICR7ZXhpc3RpbmdNaWdyYXRpb25zLmxlbmd0aH0gbWlncmF0aW9uKHMpLmAsXG4gIH0pXG5cbiAgZm9yIChjb25zdCBtaWdyYXRpb24gb2YgZXhpc3RpbmdNaWdyYXRpb25zKSB7XG4gICAgY29uc3QgbWlncmF0aW9uRmlsZSA9IG1pZ3JhdGlvbkZpbGVzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbWlncmF0aW9uLm5hbWUpXG4gICAgaWYgKCFtaWdyYXRpb25GaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pZ3JhdGlvbiAke21pZ3JhdGlvbi5uYW1lfSBub3QgZm91bmQgbG9jYWxseS5gKVxuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgIGxldCB0cmFuc2FjdGlvbklEXG5cbiAgICB0cnkge1xuICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogYE1pZ3JhdGluZyBkb3duOiAke21pZ3JhdGlvbkZpbGUubmFtZX1gIH0pXG4gICAgICB0cmFuc2FjdGlvbklEID0gYXdhaXQgdGhpcy5iZWdpblRyYW5zYWN0aW9uKClcbiAgICAgIGF3YWl0IG1pZ3JhdGlvbkZpbGUuZG93bih7IHBheWxvYWQgfSlcbiAgICAgIHBheWxvYWQubG9nZ2VyLmluZm8oe1xuICAgICAgICBtc2c6IGBNaWdyYXRlZCBkb3duOiAgJHttaWdyYXRpb25GaWxlLm5hbWV9ICgke0RhdGUubm93KCkgLSBzdGFydH1tcylgLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgdGFibGVFeGlzdHMgPSBhd2FpdCBtaWdyYXRpb25UYWJsZUV4aXN0cyh0aGlzLmRyaXp6bGUpXG4gICAgICBpZiAodGFibGVFeGlzdHMpIHtcbiAgICAgICAgYXdhaXQgcGF5bG9hZC5kZWxldGUoe1xuICAgICAgICAgIGlkOiBtaWdyYXRpb24uaWQsXG4gICAgICAgICAgY29sbGVjdGlvbjogJ3BheWxvYWQtbWlncmF0aW9ucycsXG4gICAgICAgICAgcmVxOiB7XG4gICAgICAgICAgICB0cmFuc2FjdGlvbklELFxuICAgICAgICAgIH0gYXMgUGF5bG9hZFJlcXVlc3QsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMuY29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JRClcbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGF3YWl0IHRoaXMucm9sbGJhY2tUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklEKVxuXG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgIGVycixcbiAgICAgICAgbXNnOiBwYXJzZUVycm9yKGVyciwgYEVycm9yIG1pZ3JhdGluZyBkb3duICR7bWlncmF0aW9uRmlsZS5uYW1lfS4gUm9sbGluZyBiYWNrLmApLFxuICAgICAgfSlcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbIm1pZ3JhdGVEb3duIiwicGF5bG9hZCIsIm1pZ3JhdGlvbkZpbGVzIiwicmVhZE1pZ3JhdGlvbkZpbGVzIiwiZXhpc3RpbmdNaWdyYXRpb25zIiwibGF0ZXN0QmF0Y2giLCJnZXRNaWdyYXRpb25zIiwibGVuZ3RoIiwibG9nZ2VyIiwiaW5mbyIsIm1zZyIsIm1pZ3JhdGlvbiIsIm1pZ3JhdGlvbkZpbGUiLCJmaW5kIiwibSIsIm5hbWUiLCJFcnJvciIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInRyYW5zYWN0aW9uSUQiLCJiZWdpblRyYW5zYWN0aW9uIiwiZG93biIsInRhYmxlRXhpc3RzIiwibWlncmF0aW9uVGFibGVFeGlzdHMiLCJkcml6emxlIiwiZGVsZXRlIiwiaWQiLCJjb2xsZWN0aW9uIiwicmVxIiwiY29tbWl0VHJhbnNhY3Rpb24iLCJlcnIiLCJyb2xsYmFja1RyYW5zYWN0aW9uIiwiZXJyb3IiLCJwYXJzZUVycm9yIiwicHJvY2VzcyIsImV4aXQiXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDs7OzsrQkFVbkNBOzs7ZUFBQUE7OzswQkFQNEI7c0NBSWI7NEJBQ1Y7QUFFcEIsZUFBZUE7SUFDcEIsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBQ3hCLE1BQU1DLGlCQUFpQixNQUFNQyxJQUFBQSw0QkFBa0IsRUFBQztRQUFFRjtJQUFRO0lBRTFELE1BQU0sRUFBRUcsa0JBQWtCLEVBQUVDLFdBQVcsRUFBRSxHQUFHLE1BQU1DLElBQUFBLHVCQUFhLEVBQUM7UUFDOURMO0lBQ0Y7SUFFQSxJQUFJLENBQUNHLG9CQUFvQkcsUUFBUTtRQUMvQk4sUUFBUU8sTUFBTSxDQUFDQyxJQUFJLENBQUM7WUFBRUMsS0FBSztRQUE2QjtRQUN4RDtJQUNGO0lBRUFULFFBQVFPLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO1FBQ2xCQyxLQUFLLENBQUMsbUJBQW1CLEVBQUVMLFlBQVksZUFBZSxFQUFFRCxtQkFBbUJHLE1BQU0sQ0FBQyxjQUFjLENBQUM7SUFDbkc7SUFFQSxLQUFLLE1BQU1JLGFBQWFQLG1CQUFvQjtRQUMxQyxNQUFNUSxnQkFBZ0JWLGVBQWVXLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxJQUFJLEtBQUtKLFVBQVVJLElBQUk7UUFDMUUsSUFBSSxDQUFDSCxlQUFlO1lBQ2xCLE1BQU0sSUFBSUksTUFBTSxDQUFDLFVBQVUsRUFBRUwsVUFBVUksSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ2xFO1FBRUEsTUFBTUUsUUFBUUMsS0FBS0MsR0FBRztRQUN0QixJQUFJQztRQUVKLElBQUk7WUFDRm5CLFFBQVFPLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO2dCQUFFQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUVFLGNBQWNHLElBQUksQ0FBQyxDQUFDO1lBQUM7WUFDbkVLLGdCQUFnQixNQUFNLElBQUksQ0FBQ0MsZ0JBQWdCO1lBQzNDLE1BQU1ULGNBQWNVLElBQUksQ0FBQztnQkFBRXJCO1lBQVE7WUFDbkNBLFFBQVFPLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO2dCQUNsQkMsS0FBSyxDQUFDLGdCQUFnQixFQUFFRSxjQUFjRyxJQUFJLENBQUMsRUFBRSxFQUFFRyxLQUFLQyxHQUFHLEtBQUtGLE1BQU0sR0FBRyxDQUFDO1lBQ3hFO1lBRUEsTUFBTU0sY0FBYyxNQUFNQyxJQUFBQSwwQ0FBb0IsRUFBQyxJQUFJLENBQUNDLE9BQU87WUFDM0QsSUFBSUYsYUFBYTtnQkFDZixNQUFNdEIsUUFBUXlCLE1BQU0sQ0FBQztvQkFDbkJDLElBQUloQixVQUFVZ0IsRUFBRTtvQkFDaEJDLFlBQVk7b0JBQ1pDLEtBQUs7d0JBQ0hUO29CQUNGO2dCQUNGO1lBQ0Y7WUFFQSxNQUFNLElBQUksQ0FBQ1UsaUJBQWlCLENBQUNWO1FBQy9CLEVBQUUsT0FBT1csS0FBYztZQUNyQixNQUFNLElBQUksQ0FBQ0MsbUJBQW1CLENBQUNaO1lBRS9CbkIsUUFBUU8sTUFBTSxDQUFDeUIsS0FBSyxDQUFDO2dCQUNuQkY7Z0JBQ0FyQixLQUFLd0IsSUFBQUEsc0JBQVUsRUFBQ0gsS0FBSyxDQUFDLHFCQUFxQixFQUFFbkIsY0FBY0csSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNsRjtZQUNBb0IsUUFBUUMsSUFBSSxDQUFDO1FBQ2Y7SUFDRjtBQUNGIn0=
@@ -0,0 +1,6 @@
1
+ import type { PostgresAdapter } from './types';
2
+ /**
3
+ * Drop the current database and run all migrate up functions
4
+ */
5
+ export declare function migrateFresh(this: PostgresAdapter): Promise<void>;
6
+ //# sourceMappingURL=migrateFresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrateFresh.d.ts","sourceRoot":"","sources":["../src/migrateFresh.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9C;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DvE"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "migrateFresh", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return migrateFresh;
9
+ }
10
+ });
11
+ const _drizzleorm = require("drizzle-orm");
12
+ const _database = require("payload/database");
13
+ const _prompts = /*#__PURE__*/ _interop_require_default(require("prompts"));
14
+ const _parseError = require("./utilities/parseError");
15
+ function _interop_require_default(obj) {
16
+ return obj && obj.__esModule ? obj : {
17
+ default: obj
18
+ };
19
+ }
20
+ async function migrateFresh() {
21
+ const { payload } = this;
22
+ const { confirm: acceptWarning } = await (0, _prompts.default)({
23
+ name: 'confirm',
24
+ initial: false,
25
+ message: `WARNING: This will drop your database and run all migrations. Are you sure you want to proceed?`,
26
+ type: 'confirm'
27
+ }, {
28
+ onCancel: ()=>{
29
+ process.exit(0);
30
+ }
31
+ });
32
+ if (!acceptWarning) {
33
+ process.exit(0);
34
+ }
35
+ payload.logger.info({
36
+ msg: `Dropping database.`
37
+ });
38
+ await this.drizzle.execute((0, _drizzleorm.sql)`drop schema public cascade;\ncreate schema public;`);
39
+ const migrationFiles = await (0, _database.readMigrationFiles)({
40
+ payload
41
+ });
42
+ payload.logger.debug({
43
+ msg: `Found ${migrationFiles.length} migration files.`
44
+ });
45
+ let transactionID;
46
+ // Run all migrate up
47
+ for (const migration of migrationFiles){
48
+ payload.logger.info({
49
+ msg: `Migrating: ${migration.name}`
50
+ });
51
+ try {
52
+ const start = Date.now();
53
+ transactionID = await this.beginTransaction();
54
+ await migration.up({
55
+ payload
56
+ });
57
+ await payload.create({
58
+ collection: 'payload-migrations',
59
+ data: {
60
+ name: migration.name,
61
+ batch: 1
62
+ },
63
+ req: {
64
+ transactionID
65
+ }
66
+ });
67
+ await this.commitTransaction(transactionID);
68
+ payload.logger.info({
69
+ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
70
+ });
71
+ } catch (err) {
72
+ await this.rollbackTransaction(transactionID);
73
+ payload.logger.error({
74
+ err,
75
+ msg: (0, _parseError.parseError)(err, `Error running migration ${migration.name}. Rolling back`)
76
+ });
77
+ }
78
+ }
79
+ }
80
+
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWdyYXRlRnJlc2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IHNxbCB9IGZyb20gJ2RyaXp6bGUtb3JtJ1xuaW1wb3J0IHsgcmVhZE1pZ3JhdGlvbkZpbGVzIH0gZnJvbSAncGF5bG9hZC9kYXRhYmFzZSdcbmltcG9ydCBwcm9tcHRzIGZyb20gJ3Byb21wdHMnXG5cbmltcG9ydCB0eXBlIHsgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgcGFyc2VFcnJvciB9IGZyb20gJy4vdXRpbGl0aWVzL3BhcnNlRXJyb3InXG5cbi8qKlxuICogRHJvcCB0aGUgY3VycmVudCBkYXRhYmFzZSBhbmQgcnVuIGFsbCBtaWdyYXRlIHVwIGZ1bmN0aW9uc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWlncmF0ZUZyZXNoKHRoaXM6IFBvc3RncmVzQWRhcHRlcik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHBheWxvYWQgfSA9IHRoaXNcblxuICBjb25zdCB7IGNvbmZpcm06IGFjY2VwdFdhcm5pbmcgfSA9IGF3YWl0IHByb21wdHMoXG4gICAge1xuICAgICAgbmFtZTogJ2NvbmZpcm0nLFxuICAgICAgaW5pdGlhbDogZmFsc2UsXG4gICAgICBtZXNzYWdlOiBgV0FSTklORzogVGhpcyB3aWxsIGRyb3AgeW91ciBkYXRhYmFzZSBhbmQgcnVuIGFsbCBtaWdyYXRpb25zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcHJvY2VlZD9gLFxuICAgICAgdHlwZTogJ2NvbmZpcm0nLFxuICAgIH0sXG4gICAge1xuICAgICAgb25DYW5jZWw6ICgpID0+IHtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApXG4gICAgICB9LFxuICAgIH0sXG4gIClcblxuICBpZiAoIWFjY2VwdFdhcm5pbmcpIHtcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfVxuXG4gIHBheWxvYWQubG9nZ2VyLmluZm8oe1xuICAgIG1zZzogYERyb3BwaW5nIGRhdGFiYXNlLmAsXG4gIH0pXG5cbiAgYXdhaXQgdGhpcy5kcml6emxlLmV4ZWN1dGUoc3FsYGRyb3Agc2NoZW1hIHB1YmxpYyBjYXNjYWRlO1xcbmNyZWF0ZSBzY2hlbWEgcHVibGljO2ApXG5cbiAgY29uc3QgbWlncmF0aW9uRmlsZXMgPSBhd2FpdCByZWFkTWlncmF0aW9uRmlsZXMoeyBwYXlsb2FkIH0pXG4gIHBheWxvYWQubG9nZ2VyLmRlYnVnKHtcbiAgICBtc2c6IGBGb3VuZCAke21pZ3JhdGlvbkZpbGVzLmxlbmd0aH0gbWlncmF0aW9uIGZpbGVzLmAsXG4gIH0pXG5cbiAgbGV0IHRyYW5zYWN0aW9uSURcbiAgLy8gUnVuIGFsbCBtaWdyYXRlIHVwXG4gIGZvciAoY29uc3QgbWlncmF0aW9uIG9mIG1pZ3JhdGlvbkZpbGVzKSB7XG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogYE1pZ3JhdGluZzogJHttaWdyYXRpb24ubmFtZX1gIH0pXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgICAgdHJhbnNhY3Rpb25JRCA9IGF3YWl0IHRoaXMuYmVnaW5UcmFuc2FjdGlvbigpXG4gICAgICBhd2FpdCBtaWdyYXRpb24udXAoeyBwYXlsb2FkIH0pXG4gICAgICBhd2FpdCBwYXlsb2FkLmNyZWF0ZSh7XG4gICAgICAgIGNvbGxlY3Rpb246ICdwYXlsb2FkLW1pZ3JhdGlvbnMnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbmFtZTogbWlncmF0aW9uLm5hbWUsXG4gICAgICAgICAgYmF0Y2g6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcToge1xuICAgICAgICAgIHRyYW5zYWN0aW9uSUQsXG4gICAgICAgIH0gYXMgUGF5bG9hZFJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgYXdhaXQgdGhpcy5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklEKVxuXG4gICAgICBwYXlsb2FkLmxvZ2dlci5pbmZvKHsgbXNnOiBgTWlncmF0ZWQ6ICAke21pZ3JhdGlvbi5uYW1lfSAoJHtEYXRlLm5vdygpIC0gc3RhcnR9bXMpYCB9KVxuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgYXdhaXQgdGhpcy5yb2xsYmFja1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSUQpXG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgIGVycixcbiAgICAgICAgbXNnOiBwYXJzZUVycm9yKGVyciwgYEVycm9yIHJ1bm5pbmcgbWlncmF0aW9uICR7bWlncmF0aW9uLm5hbWV9LiBSb2xsaW5nIGJhY2tgKSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsibWlncmF0ZUZyZXNoIiwicGF5bG9hZCIsImNvbmZpcm0iLCJhY2NlcHRXYXJuaW5nIiwicHJvbXB0cyIsIm5hbWUiLCJpbml0aWFsIiwibWVzc2FnZSIsInR5cGUiLCJvbkNhbmNlbCIsInByb2Nlc3MiLCJleGl0IiwibG9nZ2VyIiwiaW5mbyIsIm1zZyIsImRyaXp6bGUiLCJleGVjdXRlIiwic3FsIiwibWlncmF0aW9uRmlsZXMiLCJyZWFkTWlncmF0aW9uRmlsZXMiLCJkZWJ1ZyIsImxlbmd0aCIsInRyYW5zYWN0aW9uSUQiLCJtaWdyYXRpb24iLCJzdGFydCIsIkRhdGUiLCJub3ciLCJiZWdpblRyYW5zYWN0aW9uIiwidXAiLCJjcmVhdGUiLCJjb2xsZWN0aW9uIiwiZGF0YSIsImJhdGNoIiwicmVxIiwiY29tbWl0VHJhbnNhY3Rpb24iLCJlcnIiLCJyb2xsYmFja1RyYW5zYWN0aW9uIiwiZXJyb3IiLCJwYXJzZUVycm9yIl0sIm1hcHBpbmdzIjoiOzs7OytCQWFzQkE7OztlQUFBQTs7OzRCQVhGOzBCQUNlO2dFQUNmOzRCQUlPOzs7Ozs7QUFLcEIsZUFBZUE7SUFDcEIsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBRXhCLE1BQU0sRUFBRUMsU0FBU0MsYUFBYSxFQUFFLEdBQUcsTUFBTUMsSUFBQUEsZ0JBQU8sRUFDOUM7UUFDRUMsTUFBTTtRQUNOQyxTQUFTO1FBQ1RDLFNBQVMsQ0FBQywrRkFBK0YsQ0FBQztRQUMxR0MsTUFBTTtJQUNSLEdBQ0E7UUFDRUMsVUFBVTtZQUNSQyxRQUFRQyxJQUFJLENBQUM7UUFDZjtJQUNGO0lBR0YsSUFBSSxDQUFDUixlQUFlO1FBQ2xCTyxRQUFRQyxJQUFJLENBQUM7SUFDZjtJQUVBVixRQUFRVyxNQUFNLENBQUNDLElBQUksQ0FBQztRQUNsQkMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO0lBQzNCO0lBRUEsTUFBTSxJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDQyxJQUFBQSxlQUFHLENBQUEsQ0FBQyxrREFBa0QsQ0FBQztJQUVsRixNQUFNQyxpQkFBaUIsTUFBTUMsSUFBQUEsNEJBQWtCLEVBQUM7UUFBRWxCO0lBQVE7SUFDMURBLFFBQVFXLE1BQU0sQ0FBQ1EsS0FBSyxDQUFDO1FBQ25CTixLQUFLLENBQUMsTUFBTSxFQUFFSSxlQUFlRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7SUFDeEQ7SUFFQSxJQUFJQztJQUNKLHFCQUFxQjtJQUNyQixLQUFLLE1BQU1DLGFBQWFMLGVBQWdCO1FBQ3RDakIsUUFBUVcsTUFBTSxDQUFDQyxJQUFJLENBQUM7WUFBRUMsS0FBSyxDQUFDLFdBQVcsRUFBRVMsVUFBVWxCLElBQUksQ0FBQyxDQUFDO1FBQUM7UUFDMUQsSUFBSTtZQUNGLE1BQU1tQixRQUFRQyxLQUFLQyxHQUFHO1lBQ3RCSixnQkFBZ0IsTUFBTSxJQUFJLENBQUNLLGdCQUFnQjtZQUMzQyxNQUFNSixVQUFVSyxFQUFFLENBQUM7Z0JBQUUzQjtZQUFRO1lBQzdCLE1BQU1BLFFBQVE0QixNQUFNLENBQUM7Z0JBQ25CQyxZQUFZO2dCQUNaQyxNQUFNO29CQUNKMUIsTUFBTWtCLFVBQVVsQixJQUFJO29CQUNwQjJCLE9BQU87Z0JBQ1Q7Z0JBQ0FDLEtBQUs7b0JBQ0hYO2dCQUNGO1lBQ0Y7WUFDQSxNQUFNLElBQUksQ0FBQ1ksaUJBQWlCLENBQUNaO1lBRTdCckIsUUFBUVcsTUFBTSxDQUFDQyxJQUFJLENBQUM7Z0JBQUVDLEtBQUssQ0FBQyxXQUFXLEVBQUVTLFVBQVVsQixJQUFJLENBQUMsRUFBRSxFQUFFb0IsS0FBS0MsR0FBRyxLQUFLRixNQUFNLEdBQUcsQ0FBQztZQUFDO1FBQ3RGLEVBQUUsT0FBT1csS0FBYztZQUNyQixNQUFNLElBQUksQ0FBQ0MsbUJBQW1CLENBQUNkO1lBQy9CckIsUUFBUVcsTUFBTSxDQUFDeUIsS0FBSyxDQUFDO2dCQUNuQkY7Z0JBQ0FyQixLQUFLd0IsSUFBQUEsc0JBQVUsRUFBQ0gsS0FBSyxDQUFDLHdCQUF3QixFQUFFWixVQUFVbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNoRjtRQUNGO0lBQ0Y7QUFDRiJ9
@@ -0,0 +1,6 @@
1
+ import type { PostgresAdapter } from './types';
2
+ /**
3
+ * Run all migration down functions before running up
4
+ */
5
+ export declare function migrateRefresh(this: PostgresAdapter): Promise<void>;
6
+ //# sourceMappingURL=migrateRefresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrateRefresh.d.ts","sourceRoot":"","sources":["../src/migrateRefresh.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAK9C;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,iBAyFzD"}
@@ -0,0 +1,109 @@
1
+ /* eslint-disable no-restricted-syntax, no-await-in-loop */ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "migrateRefresh", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return migrateRefresh;
9
+ }
10
+ });
11
+ const _database = require("payload/database");
12
+ const _migrationTableExists = require("./utilities/migrationTableExists");
13
+ const _parseError = require("./utilities/parseError");
14
+ async function migrateRefresh() {
15
+ const { payload } = this;
16
+ const migrationFiles = await (0, _database.readMigrationFiles)({
17
+ payload
18
+ });
19
+ const { existingMigrations, latestBatch } = await (0, _database.getMigrations)({
20
+ payload
21
+ });
22
+ if (!existingMigrations?.length) {
23
+ payload.logger.info({
24
+ msg: 'No migrations to rollback.'
25
+ });
26
+ return;
27
+ }
28
+ payload.logger.info({
29
+ msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`
30
+ });
31
+ let transactionID;
32
+ // Reverse order of migrations to rollback
33
+ existingMigrations.reverse();
34
+ for (const migration of existingMigrations){
35
+ try {
36
+ const migrationFile = migrationFiles.find((m)=>m.name === migration.name);
37
+ if (!migrationFile) {
38
+ throw new Error(`Migration ${migration.name} not found locally.`);
39
+ }
40
+ payload.logger.info({
41
+ msg: `Migrating down: ${migration.name}`
42
+ });
43
+ const start = Date.now();
44
+ transactionID = await this.beginTransaction();
45
+ await migrationFile.down({
46
+ payload
47
+ });
48
+ payload.logger.info({
49
+ msg: `Migrated down: ${migration.name} (${Date.now() - start}ms)`
50
+ });
51
+ const tableExists = await (0, _migrationTableExists.migrationTableExists)(this.drizzle);
52
+ if (tableExists) {
53
+ await payload.delete({
54
+ collection: 'payload-migrations',
55
+ req: {
56
+ transactionID
57
+ },
58
+ where: {
59
+ name: {
60
+ equals: migration.name
61
+ }
62
+ }
63
+ });
64
+ }
65
+ } catch (err) {
66
+ await this.rollbackTransaction(transactionID);
67
+ payload.logger.error({
68
+ err,
69
+ msg: (0, _parseError.parseError)(err, `Error running migration ${migration.name}. Rolling back.`)
70
+ });
71
+ process.exit(1);
72
+ }
73
+ }
74
+ // Run all migrate up
75
+ for (const migration of migrationFiles){
76
+ payload.logger.info({
77
+ msg: `Migrating: ${migration.name}`
78
+ });
79
+ try {
80
+ const start = Date.now();
81
+ transactionID = await this.beginTransaction();
82
+ await migration.up({
83
+ payload
84
+ });
85
+ await payload.create({
86
+ collection: 'payload-migrations',
87
+ data: {
88
+ name: migration.name,
89
+ executed: true
90
+ },
91
+ req: {
92
+ transactionID
93
+ }
94
+ });
95
+ await this.commitTransaction(transactionID);
96
+ payload.logger.info({
97
+ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
98
+ });
99
+ } catch (err) {
100
+ await this.rollbackTransaction(transactionID);
101
+ payload.logger.error({
102
+ err,
103
+ msg: (0, _parseError.parseError)(err, `Error running migration ${migration.name}. Rolling back.`)
104
+ });
105
+ }
106
+ }
107
+ }
108
+
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWdyYXRlUmVmcmVzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCwgbm8tYXdhaXQtaW4tbG9vcCAqL1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGdldE1pZ3JhdGlvbnMsIHJlYWRNaWdyYXRpb25GaWxlcyB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5pbXBvcnQgeyBEYXRhYmFzZUVycm9yIH0gZnJvbSAncGcnXG5cbmltcG9ydCB0eXBlIHsgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgbWlncmF0aW9uVGFibGVFeGlzdHMgfSBmcm9tICcuL3V0aWxpdGllcy9taWdyYXRpb25UYWJsZUV4aXN0cydcbmltcG9ydCB7IHBhcnNlRXJyb3IgfSBmcm9tICcuL3V0aWxpdGllcy9wYXJzZUVycm9yJ1xuXG4vKipcbiAqIFJ1biBhbGwgbWlncmF0aW9uIGRvd24gZnVuY3Rpb25zIGJlZm9yZSBydW5uaW5nIHVwXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtaWdyYXRlUmVmcmVzaCh0aGlzOiBQb3N0Z3Jlc0FkYXB0ZXIpIHtcbiAgY29uc3QgeyBwYXlsb2FkIH0gPSB0aGlzXG4gIGNvbnN0IG1pZ3JhdGlvbkZpbGVzID0gYXdhaXQgcmVhZE1pZ3JhdGlvbkZpbGVzKHsgcGF5bG9hZCB9KVxuXG4gIGNvbnN0IHsgZXhpc3RpbmdNaWdyYXRpb25zLCBsYXRlc3RCYXRjaCB9ID0gYXdhaXQgZ2V0TWlncmF0aW9ucyh7XG4gICAgcGF5bG9hZCxcbiAgfSlcblxuICBpZiAoIWV4aXN0aW5nTWlncmF0aW9ucz8ubGVuZ3RoKSB7XG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogJ05vIG1pZ3JhdGlvbnMgdG8gcm9sbGJhY2suJyB9KVxuICAgIHJldHVyblxuICB9XG5cbiAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7XG4gICAgbXNnOiBgUm9sbGluZyBiYWNrIGJhdGNoICR7bGF0ZXN0QmF0Y2h9IGNvbnNpc3Rpbmcgb2YgJHtleGlzdGluZ01pZ3JhdGlvbnMubGVuZ3RofSBtaWdyYXRpb24ocykuYCxcbiAgfSlcblxuICBsZXQgdHJhbnNhY3Rpb25JRFxuXG4gIC8vIFJldmVyc2Ugb3JkZXIgb2YgbWlncmF0aW9ucyB0byByb2xsYmFja1xuICBleGlzdGluZ01pZ3JhdGlvbnMucmV2ZXJzZSgpXG5cbiAgZm9yIChjb25zdCBtaWdyYXRpb24gb2YgZXhpc3RpbmdNaWdyYXRpb25zKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1pZ3JhdGlvbkZpbGUgPSBtaWdyYXRpb25GaWxlcy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG1pZ3JhdGlvbi5uYW1lKVxuICAgICAgaWYgKCFtaWdyYXRpb25GaWxlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTWlncmF0aW9uICR7bWlncmF0aW9uLm5hbWV9IG5vdCBmb3VuZCBsb2NhbGx5LmApXG4gICAgICB9XG5cbiAgICAgIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6IGBNaWdyYXRpbmcgZG93bjogJHttaWdyYXRpb24ubmFtZX1gIH0pXG4gICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KClcbiAgICAgIHRyYW5zYWN0aW9uSUQgPSBhd2FpdCB0aGlzLmJlZ2luVHJhbnNhY3Rpb24oKVxuICAgICAgYXdhaXQgbWlncmF0aW9uRmlsZS5kb3duKHsgcGF5bG9hZCB9KVxuICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7XG4gICAgICAgIG1zZzogYE1pZ3JhdGVkIGRvd246ICAke21pZ3JhdGlvbi5uYW1lfSAoJHtEYXRlLm5vdygpIC0gc3RhcnR9bXMpYCxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHRhYmxlRXhpc3RzID0gYXdhaXQgbWlncmF0aW9uVGFibGVFeGlzdHModGhpcy5kcml6emxlKVxuICAgICAgaWYgKHRhYmxlRXhpc3RzKSB7XG4gICAgICAgIGF3YWl0IHBheWxvYWQuZGVsZXRlKHtcbiAgICAgICAgICBjb2xsZWN0aW9uOiAncGF5bG9hZC1taWdyYXRpb25zJyxcbiAgICAgICAgICByZXE6IHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uSUQsXG4gICAgICAgICAgfSBhcyBQYXlsb2FkUmVxdWVzdCxcbiAgICAgICAgICB3aGVyZToge1xuICAgICAgICAgICAgbmFtZToge1xuICAgICAgICAgICAgICBlcXVhbHM6IG1pZ3JhdGlvbi5uYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgYXdhaXQgdGhpcy5yb2xsYmFja1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSUQpXG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgIGVycixcbiAgICAgICAgbXNnOiBwYXJzZUVycm9yKGVyciwgYEVycm9yIHJ1bm5pbmcgbWlncmF0aW9uICR7bWlncmF0aW9uLm5hbWV9LiBSb2xsaW5nIGJhY2suYCksXG4gICAgICB9KVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfVxuICB9XG5cbiAgLy8gUnVuIGFsbCBtaWdyYXRlIHVwXG4gIGZvciAoY29uc3QgbWlncmF0aW9uIG9mIG1pZ3JhdGlvbkZpbGVzKSB7XG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogYE1pZ3JhdGluZzogJHttaWdyYXRpb24ubmFtZX1gIH0pXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgICAgdHJhbnNhY3Rpb25JRCA9IGF3YWl0IHRoaXMuYmVnaW5UcmFuc2FjdGlvbigpXG4gICAgICBhd2FpdCBtaWdyYXRpb24udXAoeyBwYXlsb2FkIH0pXG4gICAgICBhd2FpdCBwYXlsb2FkLmNyZWF0ZSh7XG4gICAgICAgIGNvbGxlY3Rpb246ICdwYXlsb2FkLW1pZ3JhdGlvbnMnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbmFtZTogbWlncmF0aW9uLm5hbWUsXG4gICAgICAgICAgZXhlY3V0ZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcToge1xuICAgICAgICAgIHRyYW5zYWN0aW9uSUQsXG4gICAgICAgIH0gYXMgUGF5bG9hZFJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgYXdhaXQgdGhpcy5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklEKVxuXG4gICAgICBwYXlsb2FkLmxvZ2dlci5pbmZvKHsgbXNnOiBgTWlncmF0ZWQ6ICAke21pZ3JhdGlvbi5uYW1lfSAoJHtEYXRlLm5vdygpIC0gc3RhcnR9bXMpYCB9KVxuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgYXdhaXQgdGhpcy5yb2xsYmFja1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSUQpXG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgIGVycixcbiAgICAgICAgbXNnOiBwYXJzZUVycm9yKGVyciwgYEVycm9yIHJ1bm5pbmcgbWlncmF0aW9uICR7bWlncmF0aW9uLm5hbWV9LiBSb2xsaW5nIGJhY2suYCksXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbIm1pZ3JhdGVSZWZyZXNoIiwicGF5bG9hZCIsIm1pZ3JhdGlvbkZpbGVzIiwicmVhZE1pZ3JhdGlvbkZpbGVzIiwiZXhpc3RpbmdNaWdyYXRpb25zIiwibGF0ZXN0QmF0Y2giLCJnZXRNaWdyYXRpb25zIiwibGVuZ3RoIiwibG9nZ2VyIiwiaW5mbyIsIm1zZyIsInRyYW5zYWN0aW9uSUQiLCJyZXZlcnNlIiwibWlncmF0aW9uIiwibWlncmF0aW9uRmlsZSIsImZpbmQiLCJtIiwibmFtZSIsIkVycm9yIiwic3RhcnQiLCJEYXRlIiwibm93IiwiYmVnaW5UcmFuc2FjdGlvbiIsImRvd24iLCJ0YWJsZUV4aXN0cyIsIm1pZ3JhdGlvblRhYmxlRXhpc3RzIiwiZHJpenpsZSIsImRlbGV0ZSIsImNvbGxlY3Rpb24iLCJyZXEiLCJ3aGVyZSIsImVxdWFscyIsImVyciIsInJvbGxiYWNrVHJhbnNhY3Rpb24iLCJlcnJvciIsInBhcnNlRXJyb3IiLCJwcm9jZXNzIiwiZXhpdCIsInVwIiwiY3JlYXRlIiwiZGF0YSIsImV4ZWN1dGVkIiwiY29tbWl0VHJhbnNhY3Rpb24iXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDs7OzsrQkFjbkNBOzs7ZUFBQUE7OzswQkFYNEI7c0NBS2I7NEJBQ1Y7QUFLcEIsZUFBZUE7SUFDcEIsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBQ3hCLE1BQU1DLGlCQUFpQixNQUFNQyxJQUFBQSw0QkFBa0IsRUFBQztRQUFFRjtJQUFRO0lBRTFELE1BQU0sRUFBRUcsa0JBQWtCLEVBQUVDLFdBQVcsRUFBRSxHQUFHLE1BQU1DLElBQUFBLHVCQUFhLEVBQUM7UUFDOURMO0lBQ0Y7SUFFQSxJQUFJLENBQUNHLG9CQUFvQkcsUUFBUTtRQUMvQk4sUUFBUU8sTUFBTSxDQUFDQyxJQUFJLENBQUM7WUFBRUMsS0FBSztRQUE2QjtRQUN4RDtJQUNGO0lBRUFULFFBQVFPLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO1FBQ2xCQyxLQUFLLENBQUMsbUJBQW1CLEVBQUVMLFlBQVksZUFBZSxFQUFFRCxtQkFBbUJHLE1BQU0sQ0FBQyxjQUFjLENBQUM7SUFDbkc7SUFFQSxJQUFJSTtJQUVKLDBDQUEwQztJQUMxQ1AsbUJBQW1CUSxPQUFPO0lBRTFCLEtBQUssTUFBTUMsYUFBYVQsbUJBQW9CO1FBQzFDLElBQUk7WUFDRixNQUFNVSxnQkFBZ0JaLGVBQWVhLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxJQUFJLEtBQUtKLFVBQVVJLElBQUk7WUFDMUUsSUFBSSxDQUFDSCxlQUFlO2dCQUNsQixNQUFNLElBQUlJLE1BQU0sQ0FBQyxVQUFVLEVBQUVMLFVBQVVJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNsRTtZQUVBaEIsUUFBUU8sTUFBTSxDQUFDQyxJQUFJLENBQUM7Z0JBQUVDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRUcsVUFBVUksSUFBSSxDQUFDLENBQUM7WUFBQztZQUMvRCxNQUFNRSxRQUFRQyxLQUFLQyxHQUFHO1lBQ3RCVixnQkFBZ0IsTUFBTSxJQUFJLENBQUNXLGdCQUFnQjtZQUMzQyxNQUFNUixjQUFjUyxJQUFJLENBQUM7Z0JBQUV0QjtZQUFRO1lBQ25DQSxRQUFRTyxNQUFNLENBQUNDLElBQUksQ0FBQztnQkFDbEJDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRUcsVUFBVUksSUFBSSxDQUFDLEVBQUUsRUFBRUcsS0FBS0MsR0FBRyxLQUFLRixNQUFNLEdBQUcsQ0FBQztZQUNwRTtZQUVBLE1BQU1LLGNBQWMsTUFBTUMsSUFBQUEsMENBQW9CLEVBQUMsSUFBSSxDQUFDQyxPQUFPO1lBQzNELElBQUlGLGFBQWE7Z0JBQ2YsTUFBTXZCLFFBQVEwQixNQUFNLENBQUM7b0JBQ25CQyxZQUFZO29CQUNaQyxLQUFLO3dCQUNIbEI7b0JBQ0Y7b0JBQ0FtQixPQUFPO3dCQUNMYixNQUFNOzRCQUNKYyxRQUFRbEIsVUFBVUksSUFBSTt3QkFDeEI7b0JBQ0Y7Z0JBQ0Y7WUFDRjtRQUNGLEVBQUUsT0FBT2UsS0FBYztZQUNyQixNQUFNLElBQUksQ0FBQ0MsbUJBQW1CLENBQUN0QjtZQUMvQlYsUUFBUU8sTUFBTSxDQUFDMEIsS0FBSyxDQUFDO2dCQUNuQkY7Z0JBQ0F0QixLQUFLeUIsSUFBQUEsc0JBQVUsRUFBQ0gsS0FBSyxDQUFDLHdCQUF3QixFQUFFbkIsVUFBVUksSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNqRjtZQUNBbUIsUUFBUUMsSUFBSSxDQUFDO1FBQ2Y7SUFDRjtJQUVBLHFCQUFxQjtJQUNyQixLQUFLLE1BQU14QixhQUFhWCxlQUFnQjtRQUN0Q0QsUUFBUU8sTUFBTSxDQUFDQyxJQUFJLENBQUM7WUFBRUMsS0FBSyxDQUFDLFdBQVcsRUFBRUcsVUFBVUksSUFBSSxDQUFDLENBQUM7UUFBQztRQUMxRCxJQUFJO1lBQ0YsTUFBTUUsUUFBUUMsS0FBS0MsR0FBRztZQUN0QlYsZ0JBQWdCLE1BQU0sSUFBSSxDQUFDVyxnQkFBZ0I7WUFDM0MsTUFBTVQsVUFBVXlCLEVBQUUsQ0FBQztnQkFBRXJDO1lBQVE7WUFDN0IsTUFBTUEsUUFBUXNDLE1BQU0sQ0FBQztnQkFDbkJYLFlBQVk7Z0JBQ1pZLE1BQU07b0JBQ0p2QixNQUFNSixVQUFVSSxJQUFJO29CQUNwQndCLFVBQVU7Z0JBQ1o7Z0JBQ0FaLEtBQUs7b0JBQ0hsQjtnQkFDRjtZQUNGO1lBQ0EsTUFBTSxJQUFJLENBQUMrQixpQkFBaUIsQ0FBQy9CO1lBRTdCVixRQUFRTyxNQUFNLENBQUNDLElBQUksQ0FBQztnQkFBRUMsS0FBSyxDQUFDLFdBQVcsRUFBRUcsVUFBVUksSUFBSSxDQUFDLEVBQUUsRUFBRUcsS0FBS0MsR0FBRyxLQUFLRixNQUFNLEdBQUcsQ0FBQztZQUFDO1FBQ3RGLEVBQUUsT0FBT2EsS0FBYztZQUNyQixNQUFNLElBQUksQ0FBQ0MsbUJBQW1CLENBQUN0QjtZQUMvQlYsUUFBUU8sTUFBTSxDQUFDMEIsS0FBSyxDQUFDO2dCQUNuQkY7Z0JBQ0F0QixLQUFLeUIsSUFBQUEsc0JBQVUsRUFBQ0gsS0FBSyxDQUFDLHdCQUF3QixFQUFFbkIsVUFBVUksSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNqRjtRQUNGO0lBQ0Y7QUFDRiJ9
@@ -0,0 +1,6 @@
1
+ import type { PostgresAdapter } from './types';
2
+ /**
3
+ * Run all migrate down functions
4
+ */
5
+ export declare function migrateReset(this: PostgresAdapter): Promise<void>;
6
+ //# sourceMappingURL=migrateReset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrateReset.d.ts","sourceRoot":"","sources":["../src/migrateReset.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9C;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAwEvE"}
@@ -0,0 +1,89 @@
1
+ /* eslint-disable no-restricted-syntax, no-await-in-loop */ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "migrateReset", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return migrateReset;
9
+ }
10
+ });
11
+ const _database = require("payload/database");
12
+ const _migrationTableExists = require("./utilities/migrationTableExists");
13
+ async function migrateReset() {
14
+ const { payload } = this;
15
+ const migrationFiles = await (0, _database.readMigrationFiles)({
16
+ payload
17
+ });
18
+ const { existingMigrations } = await (0, _database.getMigrations)({
19
+ payload
20
+ });
21
+ if (!existingMigrations?.length) {
22
+ payload.logger.info({
23
+ msg: 'No migrations to reset.'
24
+ });
25
+ return;
26
+ }
27
+ // Rollback all migrations in order
28
+ for (const migration of existingMigrations){
29
+ let transactionID;
30
+ const migrationFile = migrationFiles.find((m)=>m.name === migration.name);
31
+ try {
32
+ if (!migrationFile) {
33
+ throw new Error(`Migration ${migration.name} not found locally.`);
34
+ }
35
+ const start = Date.now();
36
+ payload.logger.info({
37
+ msg: `Migrating down: ${migrationFile.name}`
38
+ });
39
+ transactionID = await this.beginTransaction();
40
+ await migrationFile.down({
41
+ payload
42
+ });
43
+ payload.logger.info({
44
+ msg: `Migrated down: ${migrationFile.name} (${Date.now() - start}ms)`
45
+ });
46
+ const tableExists = await (0, _migrationTableExists.migrationTableExists)(this.drizzle);
47
+ if (tableExists) {
48
+ await payload.delete({
49
+ id: migration.id,
50
+ collection: 'payload-migrations',
51
+ req: {
52
+ transactionID
53
+ }
54
+ });
55
+ }
56
+ await this.commitTransaction(transactionID);
57
+ } catch (err) {
58
+ let msg = `Error running migration ${migrationFile.name}.`;
59
+ if (err instanceof Error) msg += ` ${err.message}`;
60
+ await this.rollbackTransaction(transactionID);
61
+ payload.logger.error({
62
+ err,
63
+ msg
64
+ });
65
+ process.exit(1);
66
+ }
67
+ }
68
+ // Delete dev migration
69
+ const tableExists = await (0, _migrationTableExists.migrationTableExists)(this.drizzle);
70
+ if (tableExists) {
71
+ try {
72
+ await payload.delete({
73
+ collection: 'payload-migrations',
74
+ where: {
75
+ batch: {
76
+ equals: -1
77
+ }
78
+ }
79
+ });
80
+ } catch (err) {
81
+ payload.logger.error({
82
+ error: err,
83
+ msg: 'Error deleting dev migration'
84
+ });
85
+ }
86
+ }
87
+ }
88
+
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWdyYXRlUmVzZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXgsIG5vLWF3YWl0LWluLWxvb3AgKi9cbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBnZXRNaWdyYXRpb25zLCByZWFkTWlncmF0aW9uRmlsZXMgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuXG5pbXBvcnQgdHlwZSB7IFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IG1pZ3JhdGlvblRhYmxlRXhpc3RzIH0gZnJvbSAnLi91dGlsaXRpZXMvbWlncmF0aW9uVGFibGVFeGlzdHMnXG5cbi8qKlxuICogUnVuIGFsbCBtaWdyYXRlIGRvd24gZnVuY3Rpb25zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtaWdyYXRlUmVzZXQodGhpczogUG9zdGdyZXNBZGFwdGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcGF5bG9hZCB9ID0gdGhpc1xuICBjb25zdCBtaWdyYXRpb25GaWxlcyA9IGF3YWl0IHJlYWRNaWdyYXRpb25GaWxlcyh7IHBheWxvYWQgfSlcblxuICBjb25zdCB7IGV4aXN0aW5nTWlncmF0aW9ucyB9ID0gYXdhaXQgZ2V0TWlncmF0aW9ucyh7IHBheWxvYWQgfSlcblxuICBpZiAoIWV4aXN0aW5nTWlncmF0aW9ucz8ubGVuZ3RoKSB7XG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogJ05vIG1pZ3JhdGlvbnMgdG8gcmVzZXQuJyB9KVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gUm9sbGJhY2sgYWxsIG1pZ3JhdGlvbnMgaW4gb3JkZXJcbiAgZm9yIChjb25zdCBtaWdyYXRpb24gb2YgZXhpc3RpbmdNaWdyYXRpb25zKSB7XG4gICAgbGV0IHRyYW5zYWN0aW9uSURcblxuICAgIGNvbnN0IG1pZ3JhdGlvbkZpbGUgPSBtaWdyYXRpb25GaWxlcy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG1pZ3JhdGlvbi5uYW1lKVxuICAgIHRyeSB7XG4gICAgICBpZiAoIW1pZ3JhdGlvbkZpbGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaWdyYXRpb24gJHttaWdyYXRpb24ubmFtZX0gbm90IGZvdW5kIGxvY2FsbHkuYClcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpXG4gICAgICBwYXlsb2FkLmxvZ2dlci5pbmZvKHsgbXNnOiBgTWlncmF0aW5nIGRvd246ICR7bWlncmF0aW9uRmlsZS5uYW1lfWAgfSlcbiAgICAgIHRyYW5zYWN0aW9uSUQgPSBhd2FpdCB0aGlzLmJlZ2luVHJhbnNhY3Rpb24oKVxuICAgICAgYXdhaXQgbWlncmF0aW9uRmlsZS5kb3duKHsgcGF5bG9hZCB9KVxuICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7XG4gICAgICAgIG1zZzogYE1pZ3JhdGVkIGRvd246ICAke21pZ3JhdGlvbkZpbGUubmFtZX0gKCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zKWAsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB0YWJsZUV4aXN0cyA9IGF3YWl0IG1pZ3JhdGlvblRhYmxlRXhpc3RzKHRoaXMuZHJpenpsZSlcbiAgICAgIGlmICh0YWJsZUV4aXN0cykge1xuICAgICAgICBhd2FpdCBwYXlsb2FkLmRlbGV0ZSh7XG4gICAgICAgICAgaWQ6IG1pZ3JhdGlvbi5pZCxcbiAgICAgICAgICBjb2xsZWN0aW9uOiAncGF5bG9hZC1taWdyYXRpb25zJyxcbiAgICAgICAgICByZXE6IHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uSUQsXG4gICAgICAgICAgfSBhcyBQYXlsb2FkUmVxdWVzdCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklEKVxuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgbGV0IG1zZyA9IGBFcnJvciBydW5uaW5nIG1pZ3JhdGlvbiAke21pZ3JhdGlvbkZpbGUubmFtZX0uYFxuXG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIG1zZyArPSBgICR7ZXJyLm1lc3NhZ2V9YFxuXG4gICAgICBhd2FpdCB0aGlzLnJvbGxiYWNrVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JRClcbiAgICAgIHBheWxvYWQubG9nZ2VyLmVycm9yKHtcbiAgICAgICAgZXJyLFxuICAgICAgICBtc2csXG4gICAgICB9KVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfVxuICB9XG5cbiAgLy8gRGVsZXRlIGRldiBtaWdyYXRpb25cblxuICBjb25zdCB0YWJsZUV4aXN0cyA9IGF3YWl0IG1pZ3JhdGlvblRhYmxlRXhpc3RzKHRoaXMuZHJpenpsZSlcbiAgaWYgKHRhYmxlRXhpc3RzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHBheWxvYWQuZGVsZXRlKHtcbiAgICAgICAgY29sbGVjdGlvbjogJ3BheWxvYWQtbWlncmF0aW9ucycsXG4gICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgYmF0Y2g6IHtcbiAgICAgICAgICAgIGVxdWFsczogLTEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7IGVycm9yOiBlcnIsIG1zZzogJ0Vycm9yIGRlbGV0aW5nIGRldiBtaWdyYXRpb24nIH0pXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsibWlncmF0ZVJlc2V0IiwicGF5bG9hZCIsIm1pZ3JhdGlvbkZpbGVzIiwicmVhZE1pZ3JhdGlvbkZpbGVzIiwiZXhpc3RpbmdNaWdyYXRpb25zIiwiZ2V0TWlncmF0aW9ucyIsImxlbmd0aCIsImxvZ2dlciIsImluZm8iLCJtc2ciLCJtaWdyYXRpb24iLCJ0cmFuc2FjdGlvbklEIiwibWlncmF0aW9uRmlsZSIsImZpbmQiLCJtIiwibmFtZSIsIkVycm9yIiwic3RhcnQiLCJEYXRlIiwibm93IiwiYmVnaW5UcmFuc2FjdGlvbiIsImRvd24iLCJ0YWJsZUV4aXN0cyIsIm1pZ3JhdGlvblRhYmxlRXhpc3RzIiwiZHJpenpsZSIsImRlbGV0ZSIsImlkIiwiY29sbGVjdGlvbiIsInJlcSIsImNvbW1pdFRyYW5zYWN0aW9uIiwiZXJyIiwibWVzc2FnZSIsInJvbGxiYWNrVHJhbnNhY3Rpb24iLCJlcnJvciIsInByb2Nlc3MiLCJleGl0Iiwid2hlcmUiLCJiYXRjaCIsImVxdWFscyJdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEOzs7OytCQVluQ0E7OztlQUFBQTs7OzBCQVQ0QjtzQ0FJYjtBQUs5QixlQUFlQTtJQUNwQixNQUFNLEVBQUVDLE9BQU8sRUFBRSxHQUFHLElBQUk7SUFDeEIsTUFBTUMsaUJBQWlCLE1BQU1DLElBQUFBLDRCQUFrQixFQUFDO1FBQUVGO0lBQVE7SUFFMUQsTUFBTSxFQUFFRyxrQkFBa0IsRUFBRSxHQUFHLE1BQU1DLElBQUFBLHVCQUFhLEVBQUM7UUFBRUo7SUFBUTtJQUU3RCxJQUFJLENBQUNHLG9CQUFvQkUsUUFBUTtRQUMvQkwsUUFBUU0sTUFBTSxDQUFDQyxJQUFJLENBQUM7WUFBRUMsS0FBSztRQUEwQjtRQUNyRDtJQUNGO0lBRUEsbUNBQW1DO0lBQ25DLEtBQUssTUFBTUMsYUFBYU4sbUJBQW9CO1FBQzFDLElBQUlPO1FBRUosTUFBTUMsZ0JBQWdCVixlQUFlVyxJQUFJLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsSUFBSSxLQUFLTCxVQUFVSyxJQUFJO1FBQzFFLElBQUk7WUFDRixJQUFJLENBQUNILGVBQWU7Z0JBQ2xCLE1BQU0sSUFBSUksTUFBTSxDQUFDLFVBQVUsRUFBRU4sVUFBVUssSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ2xFO1lBRUEsTUFBTUUsUUFBUUMsS0FBS0MsR0FBRztZQUN0QmxCLFFBQVFNLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO2dCQUFFQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUVHLGNBQWNHLElBQUksQ0FBQyxDQUFDO1lBQUM7WUFDbkVKLGdCQUFnQixNQUFNLElBQUksQ0FBQ1MsZ0JBQWdCO1lBQzNDLE1BQU1SLGNBQWNTLElBQUksQ0FBQztnQkFBRXBCO1lBQVE7WUFDbkNBLFFBQVFNLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO2dCQUNsQkMsS0FBSyxDQUFDLGdCQUFnQixFQUFFRyxjQUFjRyxJQUFJLENBQUMsRUFBRSxFQUFFRyxLQUFLQyxHQUFHLEtBQUtGLE1BQU0sR0FBRyxDQUFDO1lBQ3hFO1lBRUEsTUFBTUssY0FBYyxNQUFNQyxJQUFBQSwwQ0FBb0IsRUFBQyxJQUFJLENBQUNDLE9BQU87WUFDM0QsSUFBSUYsYUFBYTtnQkFDZixNQUFNckIsUUFBUXdCLE1BQU0sQ0FBQztvQkFDbkJDLElBQUloQixVQUFVZ0IsRUFBRTtvQkFDaEJDLFlBQVk7b0JBQ1pDLEtBQUs7d0JBQ0hqQjtvQkFDRjtnQkFDRjtZQUNGO1lBRUEsTUFBTSxJQUFJLENBQUNrQixpQkFBaUIsQ0FBQ2xCO1FBQy9CLEVBQUUsT0FBT21CLEtBQWM7WUFDckIsSUFBSXJCLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRUcsY0FBY0csSUFBSSxDQUFDLENBQUMsQ0FBQztZQUUxRCxJQUFJZSxlQUFlZCxPQUFPUCxPQUFPLENBQUMsQ0FBQyxFQUFFcUIsSUFBSUMsT0FBTyxDQUFDLENBQUM7WUFFbEQsTUFBTSxJQUFJLENBQUNDLG1CQUFtQixDQUFDckI7WUFDL0JWLFFBQVFNLE1BQU0sQ0FBQzBCLEtBQUssQ0FBQztnQkFDbkJIO2dCQUNBckI7WUFDRjtZQUNBeUIsUUFBUUMsSUFBSSxDQUFDO1FBQ2Y7SUFDRjtJQUVBLHVCQUF1QjtJQUV2QixNQUFNYixjQUFjLE1BQU1DLElBQUFBLDBDQUFvQixFQUFDLElBQUksQ0FBQ0MsT0FBTztJQUMzRCxJQUFJRixhQUFhO1FBQ2YsSUFBSTtZQUNGLE1BQU1yQixRQUFRd0IsTUFBTSxDQUFDO2dCQUNuQkUsWUFBWTtnQkFDWlMsT0FBTztvQkFDTEMsT0FBTzt3QkFDTEMsUUFBUSxDQUFDO29CQUNYO2dCQUNGO1lBQ0Y7UUFDRixFQUFFLE9BQU9SLEtBQWM7WUFDckI3QixRQUFRTSxNQUFNLENBQUMwQixLQUFLLENBQUM7Z0JBQUVBLE9BQU9IO2dCQUFLckIsS0FBSztZQUErQjtRQUN6RTtJQUNGO0FBQ0YifQ==