@proteinjs/db 1.30.0 → 1.32.0

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 (71) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/generated/index.js +1 -1
  3. package/dist/generated/index.js.map +1 -1
  4. package/dist/generated/test/index.d.ts.map +1 -1
  5. package/dist/generated/test/index.js +3 -1
  6. package/dist/generated/test/index.js.map +1 -1
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/src/CursorWindowPager.d.ts +74 -0
  12. package/dist/src/CursorWindowPager.d.ts.map +1 -0
  13. package/dist/src/CursorWindowPager.js +178 -0
  14. package/dist/src/CursorWindowPager.js.map +1 -0
  15. package/dist/src/Db.d.ts +20 -0
  16. package/dist/src/Db.d.ts.map +1 -1
  17. package/dist/src/Db.js +10 -0
  18. package/dist/src/Db.js.map +1 -1
  19. package/dist/src/MigrationRunner.d.ts +58 -1
  20. package/dist/src/MigrationRunner.d.ts.map +1 -1
  21. package/dist/src/MigrationRunner.js +108 -2
  22. package/dist/src/MigrationRunner.js.map +1 -1
  23. package/dist/src/RecordIterator.d.ts +16 -6
  24. package/dist/src/RecordIterator.d.ts.map +1 -1
  25. package/dist/src/RecordIterator.js +50 -37
  26. package/dist/src/RecordIterator.js.map +1 -1
  27. package/dist/src/schema/SchemaOperations.d.ts +7 -1
  28. package/dist/src/schema/SchemaOperations.d.ts.map +1 -1
  29. package/dist/src/schema/TableManager.d.ts +8 -0
  30. package/dist/src/schema/TableManager.d.ts.map +1 -1
  31. package/dist/src/schema/TableManager.js +71 -23
  32. package/dist/src/schema/TableManager.js.map +1 -1
  33. package/dist/src/tables/MigrationTable.d.ts +10 -0
  34. package/dist/src/tables/MigrationTable.d.ts.map +1 -1
  35. package/dist/src/tables/MigrationTable.js +1 -0
  36. package/dist/src/tables/MigrationTable.js.map +1 -1
  37. package/dist/test/CursorWindowPager.test.d.ts +2 -0
  38. package/dist/test/CursorWindowPager.test.d.ts.map +1 -0
  39. package/dist/test/CursorWindowPager.test.js +213 -0
  40. package/dist/test/CursorWindowPager.test.js.map +1 -0
  41. package/dist/test/index.d.ts +2 -0
  42. package/dist/test/index.d.ts.map +1 -1
  43. package/dist/test/index.js +2 -0
  44. package/dist/test/index.js.map +1 -1
  45. package/dist/test/reusable/RecordIteratorTests.d.ts +13 -0
  46. package/dist/test/reusable/RecordIteratorTests.d.ts.map +1 -0
  47. package/dist/test/reusable/RecordIteratorTests.js +448 -0
  48. package/dist/test/reusable/RecordIteratorTests.js.map +1 -0
  49. package/dist/test/util/DbTestEnvironment.d.ts.map +1 -1
  50. package/dist/test/util/DbTestEnvironment.js +2 -1
  51. package/dist/test/util/DbTestEnvironment.js.map +1 -1
  52. package/dist/test/util/tables/recordIteratorTestTables.d.ts +25 -0
  53. package/dist/test/util/tables/recordIteratorTestTables.d.ts.map +1 -0
  54. package/dist/test/util/tables/recordIteratorTestTables.js +38 -0
  55. package/dist/test/util/tables/recordIteratorTestTables.js.map +1 -0
  56. package/generated/index.ts +1 -1
  57. package/generated/test/index.ts +3 -1
  58. package/index.ts +1 -0
  59. package/package.json +3 -3
  60. package/src/CursorWindowPager.ts +153 -0
  61. package/src/Db.ts +18 -0
  62. package/src/MigrationRunner.ts +114 -2
  63. package/src/RecordIterator.ts +34 -24
  64. package/src/schema/SchemaOperations.ts +7 -1
  65. package/src/schema/TableManager.ts +36 -8
  66. package/src/tables/MigrationTable.ts +11 -1
  67. package/test/CursorWindowPager.test.ts +185 -0
  68. package/test/index.ts +2 -0
  69. package/test/reusable/RecordIteratorTests.ts +190 -0
  70. package/test/util/DbTestEnvironment.ts +2 -0
  71. package/test/util/tables/recordIteratorTestTables.ts +23 -0
@@ -42,6 +42,7 @@ var Db_1 = require("./Db");
42
42
  var SourceRecordRepo_1 = require("./source/SourceRecordRepo");
43
43
  var MigrationRunnerService_1 = require("./services/MigrationRunnerService");
44
44
  var MigrationTable_1 = require("./tables/MigrationTable");
45
+ var QueryBuilderFactory_1 = require("./QueryBuilderFactory");
45
46
  var logger_1 = require("@proteinjs/logger");
46
47
  var getMigrationRunner = function () {
47
48
  return typeof self === 'undefined' ? new MigrationRunner() : (0, MigrationRunnerService_1.getMigrationRunnerService)();
@@ -81,6 +82,9 @@ var MigrationRunner = /** @class */ (function () {
81
82
  *
82
83
  * 'ensure' = idempotent: a row already in 'success' status is logged and skipped. A prior
83
84
  * 'failure' row is retried by design — a fixed migration should run on the next boot.
85
+ *
86
+ * Returns the migration with its final run state (the skipped row, or the run's outcome) —
87
+ * the series runner ({@link runPendingMigrations}) gates on it.
84
88
  */
85
89
  MigrationRunner.prototype.ensureMigrationRun = function (id) {
86
90
  return __awaiter(this, void 0, void 0, function () {
@@ -95,13 +99,115 @@ var MigrationRunner = /** @class */ (function () {
95
99
  migrationRow = _a.sent();
96
100
  if ((migrationRow === null || migrationRow === void 0 ? void 0 : migrationRow.status) === 'success') {
97
101
  this.logger.info({ message: "Migration (".concat(id, ") already applied, skipping") });
98
- return [2 /*return*/];
102
+ return [2 /*return*/, migrationRow];
99
103
  }
100
104
  migration = this.resolveMigration(migrationTable, id);
101
105
  return [4 /*yield*/, this.runAndRecord(migrationTable, migration, function () { return db; })];
102
106
  case 2:
103
107
  _a.sent();
104
- return [2 /*return*/];
108
+ return [2 /*return*/, migration];
109
+ }
110
+ });
111
+ });
112
+ };
113
+ /**
114
+ * Deploy-path API (plans/POST_RELEASE_QUEUE.md 27f): the deploy pipeline's migration Job calls
115
+ * this AFTER `new Db().init()` (schema sync + source-record sync — every source-declared
116
+ * migration has a ledger row by then) and BEFORE the rollout advances. Pod boot never calls it:
117
+ * boot stays migration-free (the startupProbe invariant — DbInitStartupTask is schema sync and
118
+ * source records only).
119
+ *
120
+ * Discovery + order: the migration LEDGER (the migration table) is the authority. Rows run in
121
+ * SERIES, oldest-first by the row's `created` (id tiebreak) — a migration that shipped in an
122
+ * earlier release always runs before a later one. Never parallel.
123
+ *
124
+ * Policy:
125
+ * - `manual: true` (the source record's declaration) is EXCLUDED — the explicit non-automatable
126
+ * class keeps the Migrations-page flow ({@link Migration.manual}).
127
+ * - rows already in 'success' are skipped; any other status is pending — including 'running'
128
+ * (a crashed earlier Job): {@link ensureMigrationRun} re-runs it.
129
+ * - rows with no source record are history (a loader deleted after its run) — skipped,
130
+ * reported as `unresolved`.
131
+ * - the FIRST failure STOPS the series (later migrations may build on earlier ones). The
132
+ * caller exits non-zero, the Job fails, the rollout does not advance.
133
+ *
134
+ * EXPAND-CONTRACT INVARIANT (documented at this seam on purpose): every automated migration —
135
+ * and the schema sync that fronts it — must be backward-compatible with the STILL-RUNNING old
136
+ * release, because the old pods keep serving while this runs and keep serving indefinitely if
137
+ * it fails. "Roll back" = do not advance the code; DDL and applied migrations are never
138
+ * un-applied (Spanner DDL is not transactional-reversible). Contractions (drops, rewrites that
139
+ * break the old reader) belong in the `manual` class, run only after every consumer of the old
140
+ * shape is gone.
141
+ */
142
+ MigrationRunner.prototype.runPendingMigrations = function () {
143
+ return __awaiter(this, void 0, void 0, function () {
144
+ var migrationTable, db, qb, ledger, summary, sourceRecordRepo, pending, _i, ledger_1, row, source, i, outcome;
145
+ return __generator(this, function (_a) {
146
+ switch (_a.label) {
147
+ case 0:
148
+ migrationTable = new MigrationTable_1.MigrationTable();
149
+ db = (0, Db_1.getDbAsSystem)();
150
+ qb = new QueryBuilderFactory_1.QueryBuilderFactory().createQueryBuilder(migrationTable).sort([
151
+ { field: 'created', desc: false },
152
+ { field: 'id', desc: false },
153
+ ]);
154
+ return [4 /*yield*/, db.query(migrationTable, qb)];
155
+ case 1:
156
+ ledger = _a.sent();
157
+ summary = {
158
+ applied: [],
159
+ skippedManual: [],
160
+ alreadyApplied: [],
161
+ unresolved: [],
162
+ notAttempted: [],
163
+ };
164
+ sourceRecordRepo = new SourceRecordRepo_1.SourceRecordRepo();
165
+ pending = [];
166
+ for (_i = 0, ledger_1 = ledger; _i < ledger_1.length; _i++) {
167
+ row = ledger_1[_i];
168
+ source = sourceRecordRepo.getSourceRecord(migrationTable.name, row.id);
169
+ if (!source) {
170
+ summary.unresolved.push(row.id);
171
+ continue;
172
+ }
173
+ if (source.manual) {
174
+ summary.skippedManual.push(row.id);
175
+ continue;
176
+ }
177
+ if (row.status === 'success') {
178
+ summary.alreadyApplied.push(row.id);
179
+ continue;
180
+ }
181
+ pending.push(row);
182
+ }
183
+ this.logger.info({
184
+ message: "Running ".concat(pending.length, " pending migration").concat(pending.length === 1 ? '' : 's', " in series, oldest-first"),
185
+ obj: { pending: pending.map(function (row) { return row.id; }), skippedManual: summary.skippedManual },
186
+ });
187
+ i = 0;
188
+ _a.label = 2;
189
+ case 2:
190
+ if (!(i < pending.length)) return [3 /*break*/, 5];
191
+ return [4 /*yield*/, this.ensureMigrationRun(pending[i].id)];
192
+ case 3:
193
+ outcome = _a.sent();
194
+ if (outcome.status === 'success') {
195
+ summary.applied.push(outcome.id);
196
+ return [3 /*break*/, 4];
197
+ }
198
+ summary.failed = {
199
+ id: outcome.id,
200
+ description: outcome.description,
201
+ failureMessage: outcome.failureMessage,
202
+ };
203
+ summary.notAttempted = pending.slice(i + 1).map(function (row) { return row.id; });
204
+ return [3 /*break*/, 5];
205
+ case 4:
206
+ i++;
207
+ return [3 /*break*/, 2];
208
+ case 5:
209
+ this.logger.info({ message: "Migration series finished", obj: summary });
210
+ return [2 /*return*/, summary];
105
211
  }
106
212
  });
107
213
  });
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationRunner.js","sourceRoot":"","sources":["../../src/MigrationRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MigrationRunner.js","sourceRoot":"","sources":["../../src/MigrationRunner.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,23 @@ import { Db } from './Db';
2
2
  import { Table } from './Table';
3
3
  import { Record } from './Record';
4
4
  import { Query } from './services/DbService';
5
+ /**
6
+ * Iterate a table query in cursor-anchored windows (`CursorWindowPager`), `windowSize` rows
7
+ * per query. Cursor windows frame on the last row served instead of a positional offset, so
8
+ * rows inserted or deleted while iterating can never skip or duplicate rows — every row that
9
+ * exists throughout the iteration is yielded exactly once.
10
+ *
11
+ * Ordering: the sort criteria on the consumer's query builder become the cursor axes, with a
12
+ * unique `id` tiebreak appended (ties can't skip across window boundaries); with no sort the
13
+ * iteration runs in plain `id` order. Sort axes should be non-null columns — a window whose
14
+ * tail carries a NULL sort value ends the iteration (a null can't anchor a continuation).
15
+ *
16
+ * The caller's query builder is never mutated: every window builds on a fresh copy.
17
+ */
5
18
  export declare class RecordIterator<T extends Record> implements AsyncIterable<T> {
6
- private db;
7
- private table;
8
- private query;
9
- private pageSize;
10
- private currentPage;
11
- constructor(table: Table<T>, query: Query<T>, pageSize?: number, db?: Db);
19
+ private windowSize;
20
+ private pager;
21
+ constructor(table: Table<T>, query: Query<T>, windowSize?: number, db?: Db);
12
22
  [Symbol.asyncIterator](): AsyncIterator<T>;
13
23
  }
14
24
  //# sourceMappingURL=RecordIterator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecordIterator.d.ts","sourceRoot":"","sources":["../../src/RecordIterator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAS,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAI7C,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,EAAE,CAAK;IACf,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;gBAEhB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAE,MAAW,EAAE,EAAE,CAAC,EAAE,EAAE;IAQrE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;CAqBlD"}
1
+ {"version":3,"file":"RecordIterator.d.ts","sourceRoot":"","sources":["../../src/RecordIterator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAK7C;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAMrE,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,KAAK,CAAuB;gBAGlC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACP,UAAU,GAAE,MAAW,EAC/B,EAAE,CAAC,EAAE,EAAE;IAUF,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;CAelD"}
@@ -40,54 +40,67 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.RecordIterator = void 0;
43
- var Db_1 = require("./Db");
44
43
  var QueryBuilderFactory_1 = require("./QueryBuilderFactory");
44
+ var db_query_1 = require("@proteinjs/db-query");
45
+ var CursorWindowPager_1 = require("./CursorWindowPager");
46
+ /**
47
+ * Iterate a table query in cursor-anchored windows (`CursorWindowPager`), `windowSize` rows
48
+ * per query. Cursor windows frame on the last row served instead of a positional offset, so
49
+ * rows inserted or deleted while iterating can never skip or duplicate rows — every row that
50
+ * exists throughout the iteration is yielded exactly once.
51
+ *
52
+ * Ordering: the sort criteria on the consumer's query builder become the cursor axes, with a
53
+ * unique `id` tiebreak appended (ties can't skip across window boundaries); with no sort the
54
+ * iteration runs in plain `id` order. Sort axes should be non-null columns — a window whose
55
+ * tail carries a NULL sort value ends the iteration (a null can't anchor a continuation).
56
+ *
57
+ * The caller's query builder is never mutated: every window builds on a fresh copy.
58
+ */
45
59
  var RecordIterator = /** @class */ (function () {
46
- function RecordIterator(table, query, pageSize, db) {
47
- if (pageSize === void 0) { pageSize = 10; }
48
- this.db = db || (0, Db_1.getDb)();
49
- this.table = table;
50
- this.query = new QueryBuilderFactory_1.QueryBuilderFactory().getQueryBuilder(table, query);
51
- this.pageSize = pageSize;
52
- this.currentPage = 0;
60
+ function RecordIterator(table, query, windowSize, db) {
61
+ if (windowSize === void 0) { windowSize = 10; }
62
+ this.windowSize = windowSize;
63
+ // A fresh copy of the consumer's query; its sort criteria lift off the base (the pager
64
+ // owns ordering — cursor axes and ORDER BY have to agree) and the conditions-only base
65
+ // seeds every window's fresh build.
66
+ var base = new QueryBuilderFactory_1.QueryBuilderFactory().createQueryBuilder(table, query);
67
+ var sort = base.removeSortCriteria();
68
+ this.pager = new CursorWindowPager_1.CursorWindowPager(table, function () { return db_query_1.QueryBuilder.fromQueryBuilder(base, table.name); }, sort, { db: db });
53
69
  }
54
70
  RecordIterator.prototype[Symbol.asyncIterator] = function () {
55
71
  return __asyncGenerator(this, arguments, function _a() {
56
- var pagination, results, _i, results_1, item;
57
- return __generator(this, function (_b) {
58
- switch (_b.label) {
72
+ var anchor, window_1, _i, _b, row;
73
+ return __generator(this, function (_c) {
74
+ switch (_c.label) {
59
75
  case 0:
60
- if (!true) return [3 /*break*/, 11];
61
- pagination = { start: this.currentPage * this.pageSize, end: (this.currentPage + 1) * this.pageSize };
62
- this.query.paginate(pagination);
63
- return [4 /*yield*/, __await(this.db.query(this.table, this.query))];
76
+ anchor = null;
77
+ _c.label = 1;
64
78
  case 1:
65
- results = _b.sent();
66
- if (!(results.length === 0)) return [3 /*break*/, 3];
67
- return [4 /*yield*/, __await(void 0)];
68
- case 2: return [2 /*return*/, _b.sent()];
79
+ if (!true) return [3 /*break*/, 10];
80
+ return [4 /*yield*/, __await(this.pager.loadWindow(anchor, this.windowSize))];
81
+ case 2:
82
+ window_1 = _c.sent();
83
+ _i = 0, _b = window_1.rows;
84
+ _c.label = 3;
69
85
  case 3:
70
- _i = 0, results_1 = results;
71
- _b.label = 4;
72
- case 4:
73
- if (!(_i < results_1.length)) return [3 /*break*/, 8];
74
- item = results_1[_i];
75
- return [4 /*yield*/, __await(item)];
76
- case 5: return [4 /*yield*/, _b.sent()];
86
+ if (!(_i < _b.length)) return [3 /*break*/, 7];
87
+ row = _b[_i];
88
+ return [4 /*yield*/, __await(row)];
89
+ case 4: return [4 /*yield*/, _c.sent()];
90
+ case 5:
91
+ _c.sent();
92
+ _c.label = 6;
77
93
  case 6:
78
- _b.sent();
79
- _b.label = 7;
80
- case 7:
81
94
  _i++;
82
- return [3 /*break*/, 4];
83
- case 8:
84
- if (!(results.length < this.pageSize)) return [3 /*break*/, 10];
95
+ return [3 /*break*/, 3];
96
+ case 7:
97
+ if (!!window_1.nextAnchor) return [3 /*break*/, 9];
85
98
  return [4 /*yield*/, __await(void 0)];
86
- case 9: return [2 /*return*/, _b.sent()];
87
- case 10:
88
- this.currentPage++;
89
- return [3 /*break*/, 0];
90
- case 11: return [2 /*return*/];
99
+ case 8: return [2 /*return*/, _c.sent()];
100
+ case 9:
101
+ anchor = window_1.nextAnchor;
102
+ return [3 /*break*/, 1];
103
+ case 10: return [2 /*return*/];
91
104
  }
92
105
  });
93
106
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RecordIterator.js","sourceRoot":"","sources":["../../src/RecordIterator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAAiC;AAIjC,6DAA4D;AAG5D;IAOE,wBAAY,KAAe,EAAE,KAAe,EAAE,QAAqB,EAAE,EAAO;QAA9B,yBAAA,EAAA,aAAqB;QACjE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,IAAA,UAAK,GAAE,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,yCAAmB,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IAEM,yBAAC,MAAM,CAAC,aAAa,CAAC,GAA7B;;;;;;6BACS,IAAI;wBACH,UAAU,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAC5G,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBAChB,6BAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAA;;wBAArD,OAAO,GAAG,SAA2C;6BAEvD,CAAA,OAAO,CAAC,MAAM,KAAK,CAAC,CAAA,EAApB,wBAAoB;;4BACtB,iCAAO;;8BAGiB,EAAP,mBAAO;;;6BAAP,CAAA,qBAAO,CAAA;wBAAf,IAAI;qDACP,IAAI;4BAAV,gCAAU;;wBAAV,SAAU,CAAC;;;wBADM,IAAO,CAAA;;;6BAItB,CAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAA,EAA9B,yBAA8B;;4BAChC,iCAAO;;wBAGT,IAAI,CAAC,WAAW,EAAE,CAAC;;;;;;KAEtB;IACH,qBAAC;AAAD,CAAC,AApCD,IAoCC;AApCY,wCAAc"}
1
+ {"version":3,"file":"RecordIterator.js","sourceRoot":"","sources":["../../src/RecordIterator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,6DAA4D;AAC5D,gDAAmD;AACnD,yDAAsE;AAEtE;;;;;;;;;;;;GAYG;AACH;IAGE,wBACE,KAAe,EACf,KAAe,EACP,UAAuB,EAC/B,EAAO;QADC,2BAAA,EAAA,eAAuB;QAAvB,eAAU,GAAV,UAAU,CAAa;QAG/B,uFAAuF;QACvF,uFAAuF;QACvF,oCAAoC;QACpC,IAAM,IAAI,GAAG,IAAI,yCAAmB,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACxE,IAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,qCAAiB,CAAI,KAAK,EAAE,cAAM,OAAA,uBAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAA/C,CAA+C,EAAE,IAAI,EAAE,EAAE,EAAE,IAAA,EAAE,CAAC,CAAC;IACpH,CAAC;IAEM,yBAAC,MAAM,CAAC,aAAa,CAAC,GAA7B;;;;;;wBACM,MAAM,GAAwB,IAAI,CAAC;;;6BAChC,IAAI;wBACM,6BAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,GAAA;;wBAA7D,WAAS,SAAoD;8BACtC,EAAX,KAAA,QAAM,CAAC,IAAI;;;6BAAX,CAAA,cAAW,CAAA;wBAAlB,GAAG;qDACN,GAAG;4BAAT,gCAAS;;wBAAT,SAAS,CAAC;;;wBADM,IAAW,CAAA;;;6BAIzB,CAAC,QAAM,CAAC,UAAU,EAAlB,wBAAkB;;4BACpB,iCAAO;;wBAGT,MAAM,GAAG,QAAM,CAAC,UAAU,CAAC;;;;;;KAE9B;IACH,qBAAC;AAAD,CAAC,AAhCD,IAgCC;AAhCY,wCAAc"}
@@ -1,6 +1,12 @@
1
1
  import { Table } from '../Table';
2
2
  export interface SchemaOperations {
3
- createTable(table: Table<any>): Promise<void>;
3
+ /**
4
+ * Create every table in `tables`, in the given order. The order is load-bearing: a table whose
5
+ * foreign keys reference another absent table must appear after it. Drivers that support batched
6
+ * DDL (Spanner) apply the whole set as ONE schema-update operation — statements inside a batch
7
+ * apply in order, so the ordering contract is preserved.
8
+ */
9
+ createTables(tables: Table<any>[]): Promise<void>;
4
10
  alterTable(table: Table<any>, changes: TableChanges): Promise<void>;
5
11
  }
6
12
  interface Index {
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaOperations.d.ts","sourceRoot":"","sources":["../../../src/schema/SchemaOperations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrE;AAED,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,0JAA0J;IAC1J,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,8BAA8B,EAAE,MAAM,EAAE,CAAC;IACzC,mBAAmB,EAAE,UAAU,EAAE,CAAC;IAClC,4BAA4B,EAAE,MAAM,EAAE,CAAC;IACvC,iBAAiB,EAAE,UAAU,EAAE,CAAC;IAChC,oCAAoC,EAAE,MAAM,EAAE,CAAC;IAC/C,kCAAkC,EAAE,MAAM,EAAE,CAAC;IAC7C,eAAe,EAAE,KAAK,EAAE,CAAC;IACzB,aAAa,EAAE,KAAK,EAAE,CAAC;CACxB"}
1
+ {"version":3,"file":"SchemaOperations.d.ts","sourceRoot":"","sources":["../../../src/schema/SchemaOperations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrE;AAED,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,0JAA0J;IAC1J,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,8BAA8B,EAAE,MAAM,EAAE,CAAC;IACzC,mBAAmB,EAAE,UAAU,EAAE,CAAC;IAClC,4BAA4B,EAAE,MAAM,EAAE,CAAC;IACvC,iBAAiB,EAAE,UAAU,EAAE,CAAC;IAChC,oCAAoC,EAAE,MAAM,EAAE,CAAC;IAC/C,kCAAkC,EAAE,MAAM,EAAE,CAAC;IAC7C,eAAe,EAAE,KAAK,EAAE,CAAC;IACzB,aAAa,EAAE,KAAK,EAAE,CAAC;CACxB"}
@@ -12,8 +12,16 @@ export declare class TableManager {
12
12
  schemaMetadata: SchemaMetadata;
13
13
  constructor(dbDriver: DbDriver, columnTypeFactory: ColumnTypeFactory, schemaOperations: SchemaOperations, schemaMetadata?: SchemaMetadata);
14
14
  tableExists(table: Table<any>): Promise<boolean>;
15
+ /**
16
+ * Reconcile every registered table with the live schema. Absent tables are created as ONE
17
+ * batch (a single schema-update operation on drivers that support it — the prod-boot win),
18
+ * preserving their registration order so foreign keys to other absent tables resolve; existing
19
+ * tables are altered individually after, so an alter that adds a foreign key to a
20
+ * just-created table sees it live.
21
+ */
15
22
  loadTables(): Promise<void>;
16
23
  loadTable(table: Table<any>): Promise<void>;
24
+ private alterTableIfChanged;
17
25
  private validateDynamicReferenceColumns;
18
26
  private shouldAlterTable;
19
27
  private getTableChanges;
@@ -1 +1 @@
1
- {"version":3,"file":"TableManager.d.ts","sourceRoot":"","sources":["../../../src/schema/TableManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAa,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAMjC,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;CAC3C;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA2F;IAClG,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,cAAc,CAAC;gBAGpC,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,CAAC,EAAE,cAAc;IAO3B,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAI7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,OAAO,CAAC,+BAA+B;IAwDvC,OAAO,CAAC,gBAAgB;YAgBV,eAAe;YA6Ff,kBAAkB;CA8CjC"}
1
+ {"version":3,"file":"TableManager.d.ts","sourceRoot":"","sources":["../../../src/schema/TableManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAa,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAMjC,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;CAC3C;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA2F;IAClG,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,cAAc,CAAC;gBAGpC,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,CAAC,EAAE,cAAc;IAO3B,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAInC;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3B,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAYnC,mBAAmB;IASjC,OAAO,CAAC,+BAA+B;IAwDvC,OAAO,CAAC,gBAAgB;YAgBV,eAAe;YA6Ff,kBAAkB;CA8CjC"}
@@ -60,59 +60,107 @@ var TableManager = /** @class */ (function () {
60
60
  });
61
61
  });
62
62
  };
63
+ /**
64
+ * Reconcile every registered table with the live schema. Absent tables are created as ONE
65
+ * batch (a single schema-update operation on drivers that support it — the prod-boot win),
66
+ * preserving their registration order so foreign keys to other absent tables resolve; existing
67
+ * tables are altered individually after, so an alter that adds a foreign key to a
68
+ * just-created table sees it live.
69
+ */
63
70
  TableManager.prototype.loadTables = function () {
64
71
  return __awaiter(this, void 0, void 0, function () {
65
- var tables, _i, tables_1, table;
66
- return __generator(this, function (_a) {
67
- switch (_a.label) {
72
+ var tables, absentTables, existingTables, _i, tables_1, table, _a, existingTables_1, table;
73
+ return __generator(this, function (_b) {
74
+ switch (_b.label) {
68
75
  case 0:
69
76
  tables = (0, Table_1.getTables)();
77
+ absentTables = [];
78
+ existingTables = [];
70
79
  _i = 0, tables_1 = tables;
71
- _a.label = 1;
80
+ _b.label = 1;
72
81
  case 1:
73
82
  if (!(_i < tables_1.length)) return [3 /*break*/, 4];
74
83
  table = tables_1[_i];
75
- return [4 /*yield*/, this.loadTable(table)];
84
+ this.validateDynamicReferenceColumns(table);
85
+ return [4 /*yield*/, this.tableExists(table)];
76
86
  case 2:
77
- _a.sent();
78
- _a.label = 3;
87
+ if (_b.sent()) {
88
+ existingTables.push(table);
89
+ }
90
+ else {
91
+ absentTables.push(table);
92
+ }
93
+ _b.label = 3;
79
94
  case 3:
80
95
  _i++;
81
96
  return [3 /*break*/, 1];
82
- case 4: return [2 /*return*/];
97
+ case 4:
98
+ if (!(absentTables.length > 0)) return [3 /*break*/, 6];
99
+ this.logger.info({ message: "Creating tables: ".concat(absentTables.map(function (table) { return table.name; }).join(', ')) });
100
+ return [4 /*yield*/, this.schemaOperations.createTables(absentTables)];
101
+ case 5:
102
+ _b.sent();
103
+ this.logger.info({ message: "Finished creating ".concat(absentTables.length, " tables") });
104
+ _b.label = 6;
105
+ case 6:
106
+ _a = 0, existingTables_1 = existingTables;
107
+ _b.label = 7;
108
+ case 7:
109
+ if (!(_a < existingTables_1.length)) return [3 /*break*/, 10];
110
+ table = existingTables_1[_a];
111
+ return [4 /*yield*/, this.alterTableIfChanged(table)];
112
+ case 8:
113
+ _b.sent();
114
+ _b.label = 9;
115
+ case 9:
116
+ _a++;
117
+ return [3 /*break*/, 7];
118
+ case 10: return [2 /*return*/];
83
119
  }
84
120
  });
85
121
  });
86
122
  };
87
123
  TableManager.prototype.loadTable = function (table) {
88
124
  return __awaiter(this, void 0, void 0, function () {
89
- var tableChanges;
90
125
  return __generator(this, function (_a) {
91
126
  switch (_a.label) {
92
127
  case 0:
93
128
  this.validateDynamicReferenceColumns(table);
94
129
  return [4 /*yield*/, this.tableExists(table)];
95
130
  case 1:
96
- if (!_a.sent()) return [3 /*break*/, 5];
97
- return [4 /*yield*/, this.getTableChanges(table)];
131
+ if (!_a.sent()) return [3 /*break*/, 3];
132
+ return [4 /*yield*/, this.alterTableIfChanged(table)];
98
133
  case 2:
134
+ _a.sent();
135
+ return [3 /*break*/, 5];
136
+ case 3:
137
+ this.logger.info({ message: "Creating table: ".concat(table.name) });
138
+ return [4 /*yield*/, this.schemaOperations.createTables([table])];
139
+ case 4:
140
+ _a.sent();
141
+ this.logger.info({ message: "Finished creating table: ".concat(table.name) });
142
+ _a.label = 5;
143
+ case 5: return [2 /*return*/];
144
+ }
145
+ });
146
+ });
147
+ };
148
+ TableManager.prototype.alterTableIfChanged = function (table) {
149
+ return __awaiter(this, void 0, void 0, function () {
150
+ var tableChanges;
151
+ return __generator(this, function (_a) {
152
+ switch (_a.label) {
153
+ case 0: return [4 /*yield*/, this.getTableChanges(table)];
154
+ case 1:
99
155
  tableChanges = _a.sent();
100
- if (!this.shouldAlterTable(tableChanges)) return [3 /*break*/, 4];
156
+ if (!this.shouldAlterTable(tableChanges)) return [3 /*break*/, 3];
101
157
  this.logger.info({ message: "Altering table: ".concat(table.name) });
102
158
  return [4 /*yield*/, this.schemaOperations.alterTable(table, tableChanges)];
103
- case 3:
159
+ case 2:
104
160
  _a.sent();
105
161
  this.logger.info({ message: "Finished altering table: ".concat(table.name) });
106
- _a.label = 4;
107
- case 4: return [3 /*break*/, 7];
108
- case 5:
109
- this.logger.info({ message: "Creating table: ".concat(table.name) });
110
- return [4 /*yield*/, this.schemaOperations.createTable(table)];
111
- case 6:
112
- _a.sent();
113
- this.logger.info({ message: "Finished creating table: ".concat(table.name) });
114
- _a.label = 7;
115
- case 7: return [2 /*return*/];
162
+ _a.label = 3;
163
+ case 3: return [2 /*return*/];
116
164
  }
117
165
  });
118
166
  });
@@ -1 +1 @@
1
- {"version":3,"file":"TableManager.js","sourceRoot":"","sources":["../../../src/schema/TableManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableManager.js","sourceRoot":"","sources":["../../../src/schema/TableManager.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,15 @@ import { Table } from '../Table';
3
3
  import { SourceRecord } from '../source/SourceRecord';
4
4
  export interface Migration extends SourceRecord {
5
5
  description: string;
6
+ /**
7
+ * The explicit non-automatable class (plans/POST_RELEASE_QUEUE.md 27f): destructive
8
+ * contractions (column/table drops), long backfills over big tables, data-dependent one-offs.
9
+ * `manual: true` EXCLUDES the migration from the deploy-gated auto-run
10
+ * ({@link MigrationRunner.runPendingMigrations}); it keeps the Migrations-page flow
11
+ * (`runMigration`). Absence of the flag = automated — the invariant lives here, in the
12
+ * schema, not in deploy-pipeline prose.
13
+ */
14
+ manual?: boolean;
6
15
  status?: 'proposed' | 'running' | 'success' | 'failure';
7
16
  failureMessage?: string;
8
17
  failureStack?: string;
@@ -28,6 +37,7 @@ export declare class MigrationTable extends Table<Migration> {
28
37
  isLoadedFromSource: import("../Table").Column<boolean | undefined, any>;
29
38
  } & {} & {
30
39
  description: import("../Table").Column<string, any>;
40
+ manual: import("../Table").Column<boolean | undefined, any>;
31
41
  status: import("../Table").Column<"proposed" | "running" | "success" | "failure" | undefined, any>;
32
42
  failureMessage: import("../Table").Column<string | undefined, any>;
33
43
  failureStack: import("../Table").Column<string | undefined, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationTable.d.ts","sourceRoot":"","sources":["../../../src/tables/MigrationTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,YAAY,EAA2B,MAAM,wBAAwB,CAAC;AAE/E,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;CAChC;AAED,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC;IAC3C,IAAI,SAAe;IAC1B;;;;;OAKG;IACI,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAGnC;IACK,OAAO;;;;;;;;;;;;;;;;MASX;IACI,mBAAmB;;;;;MAKxB;CACH"}
1
+ {"version":3,"file":"MigrationTable.d.ts","sourceRoot":"","sources":["../../../src/tables/MigrationTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,YAAY,EAA2B,MAAM,wBAAwB,CAAC;AAE/E,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;CAChC;AAED,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC;IAC3C,IAAI,SAAe;IAC1B;;;;;OAKG;IACI,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAGnC;IACK,OAAO;;;;;;;;;;;;;;;;;MAUX;IACI,mBAAmB;;;;;MAKxB;CACH"}
@@ -72,6 +72,7 @@ var MigrationTable = /** @class */ (function (_super) {
72
72
  };
73
73
  _this.columns = (0, SourceRecord_1.withSourceRecordColumns)({
74
74
  description: new Columns_1.StringColumn('description', {}, 4000),
75
+ manual: new Columns_1.BooleanColumn('manual'),
75
76
  status: new Columns_1.StringColumn('status', { defaultValue: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
76
77
  return [2 /*return*/, 'proposed'];
77
78
  }); }); } }),
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationTable.js","sourceRoot":"","sources":["../../../src/tables/MigrationTable.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,sCAAwE;AACxE,kCAAiC;AACjC,uDAA+E;AAc/E;IAAoC,kCAAgB;IAApD;QAAA,qEA4BC;QA3BQ,UAAI,GAAG,WAAW,CAAC;QAC1B;;;;;WAKG;QACI,UAAI,GAA6B;YACtC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;YAClC,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;SACxC,CAAC;QACK,aAAO,GAAG,IAAA,sCAAuB,EAAY;YAClD,WAAW,EAAE,IAAI,sBAAY,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC;YACtD,MAAM,EAAE,IAAI,sBAAY,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE;oBAAY,sBAAA,UAAU,EAAA;yBAAA,EAAE,CAAC;YAC5E,cAAc,EAAE,IAAI,sBAAY,CAAC,iBAAiB,EAAE,EAAE,EAAE,IAAI,CAAC;YAC7D,YAAY,EAAE,IAAI,sBAAY,CAAC,eAAe,EAAE,EAAE,EAAE,KAAK,CAAC;YAC1D,SAAS,EAAE,IAAI,wBAAc,CAAC,YAAY,CAAC;YAC3C,OAAO,EAAE,IAAI,wBAAc,CAAC,UAAU,CAAC;YACvC,QAAQ,EAAE,IAAI,sBAAY,CAAC,UAAU,CAAC;YACtC,MAAM,EAAE,IAAI,sBAAY,CAAC,QAAQ,CAAC;SACnC,CAAC,CAAC;QACI,yBAAmB,GAAG;YAC3B,8BAA8B,EAAE,IAAI;YACpC,EAAE,EAAE;gBACF,WAAW,EAAE,IAAI;aAClB;SACF,CAAC;;IACJ,CAAC;IAAD,qBAAC;AAAD,CAAC,AA5BD,CAAoC,aAAK,GA4BxC;AA5BY,wCAAc"}
1
+ {"version":3,"file":"MigrationTable.js","sourceRoot":"","sources":["../../../src/tables/MigrationTable.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,sCAAuF;AACvF,kCAAiC;AACjC,uDAA+E;AAuB/E;IAAoC,kCAAgB;IAApD;QAAA,qEA6BC;QA5BQ,UAAI,GAAG,WAAW,CAAC;QAC1B;;;;;WAKG;QACI,UAAI,GAA6B;YACtC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;YAClC,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;SACxC,CAAC;QACK,aAAO,GAAG,IAAA,sCAAuB,EAAY;YAClD,WAAW,EAAE,IAAI,sBAAY,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC;YACtD,MAAM,EAAE,IAAI,uBAAa,CAAC,QAAQ,CAAC;YACnC,MAAM,EAAE,IAAI,sBAAY,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE;oBAAY,sBAAA,UAAU,EAAA;yBAAA,EAAE,CAAC;YAC5E,cAAc,EAAE,IAAI,sBAAY,CAAC,iBAAiB,EAAE,EAAE,EAAE,IAAI,CAAC;YAC7D,YAAY,EAAE,IAAI,sBAAY,CAAC,eAAe,EAAE,EAAE,EAAE,KAAK,CAAC;YAC1D,SAAS,EAAE,IAAI,wBAAc,CAAC,YAAY,CAAC;YAC3C,OAAO,EAAE,IAAI,wBAAc,CAAC,UAAU,CAAC;YACvC,QAAQ,EAAE,IAAI,sBAAY,CAAC,UAAU,CAAC;YACtC,MAAM,EAAE,IAAI,sBAAY,CAAC,QAAQ,CAAC;SACnC,CAAC,CAAC;QACI,yBAAmB,GAAG;YAC3B,8BAA8B,EAAE,IAAI;YACpC,EAAE,EAAE;gBACF,WAAW,EAAE,IAAI;aAClB;SACF,CAAC;;IACJ,CAAC;IAAD,qBAAC;AAAD,CAAC,AA7BD,CAAoC,aAAK,GA6BxC;AA7BY,wCAAc"}
@@ -0,0 +1,2 @@
1
+ import '../generated/index';
2
+ //# sourceMappingURL=CursorWindowPager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CursorWindowPager.test.d.ts","sourceRoot":"","sources":["../../test/CursorWindowPager.test.ts"],"names":[],"mappings":"AAaA,OAAO,oBAAoB,CAAC"}