@proteinjs/db 1.34.3 → 1.35.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.
- package/CHANGELOG.md +22 -0
- package/dist/generated/index.js +1 -1
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/test/index.d.ts.map +1 -1
- package/dist/generated/test/index.js +3 -1
- package/dist/generated/test/index.js.map +1 -1
- package/dist/src/Db.d.ts +10 -0
- package/dist/src/Db.d.ts.map +1 -1
- package/dist/src/Db.js +42 -2
- package/dist/src/Db.js.map +1 -1
- package/dist/src/MigrationRunner.d.ts +26 -0
- package/dist/src/MigrationRunner.d.ts.map +1 -1
- package/dist/src/MigrationRunner.js +82 -0
- package/dist/src/MigrationRunner.js.map +1 -1
- package/dist/src/source/SourceRecord.d.ts +35 -2
- package/dist/src/source/SourceRecord.d.ts.map +1 -1
- package/dist/src/source/SourceRecord.js +8 -1
- package/dist/src/source/SourceRecord.js.map +1 -1
- package/dist/src/source/SourceRecordLoader.d.ts +105 -7
- package/dist/src/source/SourceRecordLoader.d.ts.map +1 -1
- package/dist/src/source/SourceRecordLoader.js +358 -94
- package/dist/src/source/SourceRecordLoader.js.map +1 -1
- package/dist/src/tables/MigrationTable.d.ts +26 -0
- package/dist/src/tables/MigrationTable.d.ts.map +1 -1
- package/dist/src/tables/MigrationTable.js +1 -0
- package/dist/src/tables/MigrationTable.js.map +1 -1
- package/dist/test/reusable/SourceRecordSyncTests.d.ts.map +1 -1
- package/dist/test/reusable/SourceRecordSyncTests.js +803 -27
- package/dist/test/reusable/SourceRecordSyncTests.js.map +1 -1
- package/dist/test/util/tables/sourceRecordSyncTestTables.d.ts +16 -0
- package/dist/test/util/tables/sourceRecordSyncTestTables.d.ts.map +1 -1
- package/dist/test/util/tables/sourceRecordSyncTestTables.js +23 -1
- package/dist/test/util/tables/sourceRecordSyncTestTables.js.map +1 -1
- package/generated/index.ts +1 -1
- package/generated/test/index.ts +3 -1
- package/package.json +4 -4
- package/src/Db.ts +19 -0
- package/src/MigrationRunner.ts +62 -0
- package/src/source/SourceRecord.ts +42 -4
- package/src/source/SourceRecordLoader.ts +342 -48
- package/src/tables/MigrationTable.ts +24 -0
- package/test/reusable/SourceRecordSyncTests.ts +462 -11
- package/test/util/tables/sourceRecordSyncTestTables.ts +20 -0
|
@@ -57,42 +57,103 @@ var Record_1 = require("../Record");
|
|
|
57
57
|
var SourceRecordLoader = /** @class */ (function () {
|
|
58
58
|
function SourceRecordLoader() {
|
|
59
59
|
this.logger = new logger_1.Logger({ name: this.constructor.name });
|
|
60
|
+
/** Memo of resolved package versions — one resolution (and at most one warning) per source. */
|
|
61
|
+
this.sourceVersions = new Map();
|
|
60
62
|
}
|
|
61
|
-
|
|
63
|
+
/**
|
|
64
|
+
* One boot of the source-record sync, per source-record table in this build. Returns what it
|
|
65
|
+
* did to each table (also logged).
|
|
66
|
+
*
|
|
67
|
+
* Ownership model — every row has one owner, the package that declares it, ordered by that
|
|
68
|
+
* package's version:
|
|
69
|
+
* - A boot speaks only for the packages it carries. Rows owned by a package this build does
|
|
70
|
+
* not carry are never touched: several servers running different builds against one shared
|
|
71
|
+
* database coexist without pruning each other's rows.
|
|
72
|
+
* - Within a package, a boot speaks only for its own version or older. A row stamped by a
|
|
73
|
+
* NEWER version of the same package is left exactly as it is — neither pruned nor rewritten —
|
|
74
|
+
* so ordinary version skew (an older build restarting against rows a newer build added or
|
|
75
|
+
* redefined) cannot delete or churn data. The newest version stays authoritative for
|
|
76
|
+
* genuine removals and redefinitions.
|
|
77
|
+
* - A package in the build is authoritative for all of its rows on every table, including
|
|
78
|
+
* tables it no longer declares anything for: dropping the last declaration is a removal.
|
|
79
|
+
* - Rows with no owner stamp (written before `source_package` existed) are claimed by the
|
|
80
|
+
* declaration that still matches them; the rest are reported as unowned and left alone.
|
|
81
|
+
*
|
|
82
|
+
* Accepted residuals: a package removed from every build leaves its rows behind (no surviving
|
|
83
|
+
* boot carries its authority — clean up explicitly); two builds of one package at the SAME
|
|
84
|
+
* version with differing sets (uncommitted local skew) are last-writer-wins, since versions
|
|
85
|
+
* cannot order them.
|
|
86
|
+
*
|
|
87
|
+
* With no argument, every source-record table is synced (the `Db.init` full pass). Passing
|
|
88
|
+
* `onlyTable` scopes the sync to that one table — the pre-schema-sync migration phase uses
|
|
89
|
+
* this to land the migration ledger's rows before the full schema sync has run (see
|
|
90
|
+
* {@link MigrationRunner.runPreSchemaSyncMigrations}); the later full pass re-reconciles the
|
|
91
|
+
* same rows idempotently under the same ownership model.
|
|
92
|
+
*/
|
|
93
|
+
SourceRecordLoader.prototype.load = function (onlyTable) {
|
|
62
94
|
return __awaiter(this, void 0, void 0, function () {
|
|
63
|
-
var
|
|
64
|
-
return __generator(this, function (
|
|
65
|
-
switch (
|
|
66
|
-
case 0: return [4 /*yield*/, this.
|
|
95
|
+
var _a, tables, buildSources, db, summary, _loop_1, this_1, _b, _c, _d, _i, tableName;
|
|
96
|
+
return __generator(this, function (_e) {
|
|
97
|
+
switch (_e.label) {
|
|
98
|
+
case 0: return [4 /*yield*/, this.getDeclarations()];
|
|
67
99
|
case 1:
|
|
68
|
-
|
|
100
|
+
_a = _e.sent(), tables = _a.tables, buildSources = _a.buildSources;
|
|
69
101
|
db = (0, Db_1.getDbAsSystem)();
|
|
102
|
+
summary = {};
|
|
70
103
|
_loop_1 = function (tableName) {
|
|
71
|
-
var
|
|
72
|
-
var
|
|
73
|
-
return __generator(this, function (
|
|
74
|
-
switch (
|
|
104
|
+
var _f, table, records, keyProperty, allDeclaredKeys, removed, insertCount, updateCount, unchangedCount, adoptedCount, skippedNewer, _g, records_1, _h, source, record, sourceRecord, sourceVersion, existingRecord, dbSourceRecord, unowned;
|
|
105
|
+
var _j, _k;
|
|
106
|
+
return __generator(this, function (_l) {
|
|
107
|
+
switch (_l.label) {
|
|
75
108
|
case 0:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
109
|
+
if (onlyTable && tableName !== onlyTable.name) {
|
|
110
|
+
return [2 /*return*/, "continue"];
|
|
111
|
+
}
|
|
112
|
+
_f = tables[tableName], table = _f.table, records = _f.records;
|
|
113
|
+
keyProperty = this_1.validateSyncKey(table, records.map(function (_a) {
|
|
114
|
+
var record = _a.record;
|
|
115
|
+
return record;
|
|
116
|
+
}));
|
|
117
|
+
allDeclaredKeys = records.map(function (_a) {
|
|
118
|
+
var record = _a.record;
|
|
119
|
+
return record[keyProperty];
|
|
120
|
+
});
|
|
121
|
+
return [4 /*yield*/, this_1.reconcileRemoved(db, table, keyProperty, buildSources, allDeclaredKeys)];
|
|
80
122
|
case 1:
|
|
81
|
-
|
|
123
|
+
removed = _l.sent();
|
|
82
124
|
insertCount = 0;
|
|
83
125
|
updateCount = 0;
|
|
84
126
|
unchangedCount = 0;
|
|
85
127
|
adoptedCount = 0;
|
|
128
|
+
skippedNewer = removed.skippedNewer;
|
|
86
129
|
_g = 0, records_1 = records;
|
|
87
|
-
|
|
130
|
+
_l.label = 2;
|
|
88
131
|
case 2:
|
|
89
132
|
if (!(_g < records_1.length)) return [3 /*break*/, 12];
|
|
90
|
-
|
|
133
|
+
_h = records_1[_g], source = _h.source, record = _h.record;
|
|
134
|
+
sourceRecord = record;
|
|
91
135
|
sourceRecord.isLoadedFromSource = true;
|
|
92
|
-
|
|
136
|
+
// Ownership stamp: the declaring package (and its version) claims the row. Stamped
|
|
137
|
+
// before the drift comparison so pre-existing rows (including pre-source_package legacy
|
|
138
|
+
// rows and rows whose declaration moved packages) converge to the current owner on
|
|
139
|
+
// their next boot.
|
|
140
|
+
sourceRecord.sourcePackage = source;
|
|
141
|
+
sourceVersion = this_1.sourceVersion(source);
|
|
142
|
+
if (sourceVersion !== undefined) {
|
|
143
|
+
sourceRecord.sourcePackageVersion = sourceVersion;
|
|
144
|
+
}
|
|
145
|
+
return [4 /*yield*/, db.get(table, (_j = {}, _j[keyProperty] = sourceRecord[keyProperty], _j))];
|
|
93
146
|
case 3:
|
|
94
|
-
existingRecord =
|
|
147
|
+
existingRecord = _l.sent();
|
|
95
148
|
if (!existingRecord) return [3 /*break*/, 8];
|
|
149
|
+
if (existingRecord.sourcePackage === source &&
|
|
150
|
+
this_1.isNewerStamp(existingRecord.sourcePackageVersion, sourceVersion)) {
|
|
151
|
+
// A newer version of this very package already defined the row: this build's older
|
|
152
|
+
// definition does not land, and the row's stamp is not downgraded.
|
|
153
|
+
skippedNewer += 1;
|
|
154
|
+
new SourceRecordRepo_1.SourceRecordRepo().loadSourceRecord(table.name, existingRecord);
|
|
155
|
+
return [3 /*break*/, 11];
|
|
156
|
+
}
|
|
96
157
|
if (existingRecord.id !== sourceRecord.id) {
|
|
97
158
|
// Adopt in place: the existing row keeps its id — other tables may reference it.
|
|
98
159
|
// The declared id is only ever used for fresh inserts.
|
|
@@ -104,127 +165,192 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
104
165
|
adoptedCount += 1;
|
|
105
166
|
this_1.logger.info({
|
|
106
167
|
message: "(".concat(table.name, ") Adopting existing record into source ownership"),
|
|
107
|
-
obj: (
|
|
168
|
+
obj: (_k = {}, _k[keyProperty] = sourceRecord[keyProperty], _k.id = existingRecord.id, _k),
|
|
108
169
|
});
|
|
109
170
|
}
|
|
110
171
|
return [4 /*yield*/, this_1.hasChanges(table, sourceRecord, existingRecord)];
|
|
111
172
|
case 4:
|
|
112
|
-
if (!
|
|
173
|
+
if (!_l.sent()) return [3 /*break*/, 6];
|
|
113
174
|
return [4 /*yield*/, db.update(table, sourceRecord)];
|
|
114
175
|
case 5:
|
|
115
|
-
|
|
176
|
+
_l.sent();
|
|
116
177
|
updateCount += 1;
|
|
117
178
|
return [3 /*break*/, 7];
|
|
118
179
|
case 6:
|
|
119
180
|
unchangedCount += 1;
|
|
120
|
-
|
|
181
|
+
_l.label = 7;
|
|
121
182
|
case 7: return [3 /*break*/, 10];
|
|
122
183
|
case 8: return [4 /*yield*/, db.insert(table, sourceRecord)];
|
|
123
184
|
case 9:
|
|
124
|
-
dbSourceRecord =
|
|
185
|
+
dbSourceRecord = _l.sent();
|
|
125
186
|
sourceRecord = __assign(__assign({}, sourceRecord), dbSourceRecord);
|
|
126
187
|
insertCount += 1;
|
|
127
|
-
|
|
188
|
+
_l.label = 10;
|
|
128
189
|
case 10:
|
|
129
190
|
// Registered under the DB id (= the adopted id when an existing row matched by natural key).
|
|
130
191
|
new SourceRecordRepo_1.SourceRecordRepo().loadSourceRecord(table.name, sourceRecord);
|
|
131
|
-
|
|
192
|
+
_l.label = 11;
|
|
132
193
|
case 11:
|
|
133
194
|
_g++;
|
|
134
195
|
return [3 /*break*/, 2];
|
|
135
|
-
case 12:
|
|
196
|
+
case 12: return [4 /*yield*/, this_1.countUnowned(db, table, keyProperty)];
|
|
197
|
+
case 13:
|
|
198
|
+
unowned = _l.sent();
|
|
199
|
+
summary[table.name] = {
|
|
200
|
+
inserts: insertCount,
|
|
201
|
+
updates: updateCount,
|
|
202
|
+
unchanged: unchangedCount,
|
|
203
|
+
adopted: adoptedCount,
|
|
204
|
+
deletes: removed.deleteCount,
|
|
205
|
+
removedUpdates: removed.removedUpdateCount,
|
|
206
|
+
skippedNewer: skippedNewer,
|
|
207
|
+
unowned: unowned,
|
|
208
|
+
};
|
|
136
209
|
this_1.logger.info({
|
|
137
210
|
message: "(".concat(table.name, ") Loaded ").concat(records.length, " ").concat(records.length == 1 ? 'record' : 'records', " from source"),
|
|
138
|
-
obj:
|
|
139
|
-
inserts: insertCount,
|
|
140
|
-
updates: updateCount,
|
|
141
|
-
unchanged: unchangedCount,
|
|
142
|
-
adopted: adoptedCount,
|
|
143
|
-
deletes: deleteCount,
|
|
144
|
-
removedUpdates: removedUpdateCount,
|
|
145
|
-
},
|
|
211
|
+
obj: summary[table.name],
|
|
146
212
|
});
|
|
147
213
|
return [2 /*return*/];
|
|
148
214
|
}
|
|
149
215
|
});
|
|
150
216
|
};
|
|
151
217
|
this_1 = this;
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
for (
|
|
155
|
-
|
|
218
|
+
_b = tables;
|
|
219
|
+
_c = [];
|
|
220
|
+
for (_d in _b)
|
|
221
|
+
_c.push(_d);
|
|
156
222
|
_i = 0;
|
|
157
|
-
|
|
223
|
+
_e.label = 2;
|
|
158
224
|
case 2:
|
|
159
|
-
if (!(_i <
|
|
160
|
-
|
|
161
|
-
if (!(
|
|
162
|
-
tableName =
|
|
225
|
+
if (!(_i < _c.length)) return [3 /*break*/, 5];
|
|
226
|
+
_d = _c[_i];
|
|
227
|
+
if (!(_d in _b)) return [3 /*break*/, 4];
|
|
228
|
+
tableName = _d;
|
|
163
229
|
return [5 /*yield**/, _loop_1(tableName)];
|
|
164
230
|
case 3:
|
|
165
|
-
|
|
166
|
-
|
|
231
|
+
_e.sent();
|
|
232
|
+
_e.label = 4;
|
|
167
233
|
case 4:
|
|
168
234
|
_i++;
|
|
169
235
|
return [3 /*break*/, 2];
|
|
170
|
-
case 5: return [2 /*return
|
|
236
|
+
case 5: return [2 /*return*/, summary];
|
|
171
237
|
}
|
|
172
238
|
});
|
|
173
239
|
});
|
|
174
240
|
};
|
|
175
241
|
/**
|
|
176
|
-
* The removed-reconcile leg: rows
|
|
177
|
-
*
|
|
178
|
-
* `
|
|
179
|
-
*
|
|
180
|
-
* `
|
|
242
|
+
* The removed-reconcile leg: rows owned by a package this build carries, at that package's
|
|
243
|
+
* version or older, that NO package in this build still declares
|
|
244
|
+
* (`is_loaded_from_source = true AND source_package IN <build's packages> AND <key> NOT IN
|
|
245
|
+
* <build's declared keys for the table>`, minus rows stamped by a newer version of their
|
|
246
|
+
* package) are handled per the table's `onSourceRemoved` policy — delete (default), keep, or
|
|
247
|
+
* update with a patch. The update leg applies the patch only to rows whose fields actually
|
|
248
|
+
* differ (idempotent boots), through `Db.update` so table watchers observe each write.
|
|
249
|
+
* See {@link load} for the ownership model.
|
|
181
250
|
*/
|
|
182
|
-
SourceRecordLoader.prototype.reconcileRemoved = function (db, table, keyProperty,
|
|
251
|
+
SourceRecordLoader.prototype.reconcileRemoved = function (db, table, keyProperty, buildSources, allDeclaredKeys) {
|
|
183
252
|
var _a;
|
|
184
253
|
return __awaiter(this, void 0, void 0, function () {
|
|
185
|
-
var policy, qb,
|
|
186
|
-
var _b, _c;
|
|
187
|
-
|
|
188
|
-
|
|
254
|
+
var policy, qb, candidates, stampedNewer, removedRecords, skippedNewer, deleteQb, removedUpdateCount, _i, removedRecords_1, removedRecord;
|
|
255
|
+
var _b, _c, _d;
|
|
256
|
+
var _this = this;
|
|
257
|
+
return __generator(this, function (_e) {
|
|
258
|
+
switch (_e.label) {
|
|
189
259
|
case 0:
|
|
190
260
|
policy = (_a = table.sourceRecordOptions.onSourceRemoved) !== null && _a !== void 0 ? _a : 'delete';
|
|
191
|
-
if (policy === 'keep') {
|
|
192
|
-
return [2 /*return*/, { deleteCount: 0, removedUpdateCount: 0 }];
|
|
261
|
+
if (policy === 'keep' || buildSources.size == 0) {
|
|
262
|
+
return [2 /*return*/, { deleteCount: 0, removedUpdateCount: 0, skippedNewer: 0 }];
|
|
193
263
|
}
|
|
194
264
|
qb = db_query_1.QueryBuilder.fromObject({ isLoadedFromSource: true }, table.name);
|
|
195
|
-
|
|
196
|
-
|
|
265
|
+
qb.condition({ field: 'sourcePackage', operator: 'IN', value: Array.from(buildSources) });
|
|
266
|
+
if (allDeclaredKeys.length > 0) {
|
|
267
|
+
qb.condition({ field: keyProperty, operator: 'NOT IN', value: allDeclaredKeys });
|
|
197
268
|
}
|
|
198
|
-
if (!(policy === 'delete')) return [3 /*break*/, 2];
|
|
199
|
-
_b = {};
|
|
200
|
-
return [4 /*yield*/, db.delete(table, qb)];
|
|
201
|
-
case 1: return [2 /*return*/, (_b.deleteCount = _d.sent(), _b.removedUpdateCount = 0, _b)];
|
|
202
|
-
case 2:
|
|
203
|
-
removedUpdateCount = 0;
|
|
204
269
|
return [4 /*yield*/, db.query(table, qb)];
|
|
270
|
+
case 1:
|
|
271
|
+
candidates = _e.sent();
|
|
272
|
+
stampedNewer = function (candidate) {
|
|
273
|
+
return _this.isNewerStamp(candidate.sourcePackageVersion, _this.sourceVersion(candidate.sourcePackage));
|
|
274
|
+
};
|
|
275
|
+
removedRecords = candidates.filter(function (candidate) { return !stampedNewer(candidate); });
|
|
276
|
+
skippedNewer = candidates.length - removedRecords.length;
|
|
277
|
+
if (skippedNewer > 0) {
|
|
278
|
+
this.logger.info({
|
|
279
|
+
message: "(".concat(table.name, ") Left ").concat(skippedNewer, " record").concat(skippedNewer == 1 ? '' : 's', " stamped by a newer version of ").concat(skippedNewer == 1 ? 'its' : 'their', " package \u2014 not treated as removed"),
|
|
280
|
+
obj: (_b = {}, _b[keyProperty] = candidates.filter(stampedNewer).map(function (candidate) { return candidate[keyProperty]; }), _b),
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
if (removedRecords.length == 0) {
|
|
284
|
+
return [2 /*return*/, { deleteCount: 0, removedUpdateCount: 0, skippedNewer: skippedNewer }];
|
|
285
|
+
}
|
|
286
|
+
if (!(policy === 'delete')) return [3 /*break*/, 3];
|
|
287
|
+
deleteQb = db_query_1.QueryBuilder.fromObject({ isLoadedFromSource: true }, table.name);
|
|
288
|
+
deleteQb.condition({ field: 'id', operator: 'IN', value: removedRecords.map(function (record) { return record.id; }) });
|
|
289
|
+
_c = {};
|
|
290
|
+
return [4 /*yield*/, db.delete(table, deleteQb)];
|
|
291
|
+
case 2: return [2 /*return*/, (_c.deleteCount = _e.sent(), _c.removedUpdateCount = 0, _c.skippedNewer = skippedNewer, _c)];
|
|
205
292
|
case 3:
|
|
206
|
-
|
|
293
|
+
removedUpdateCount = 0;
|
|
207
294
|
_i = 0, removedRecords_1 = removedRecords;
|
|
208
|
-
|
|
295
|
+
_e.label = 4;
|
|
209
296
|
case 4:
|
|
210
297
|
if (!(_i < removedRecords_1.length)) return [3 /*break*/, 8];
|
|
211
298
|
removedRecord = removedRecords_1[_i];
|
|
212
299
|
return [4 /*yield*/, this.hasChanges(table, policy.update, removedRecord)];
|
|
213
300
|
case 5:
|
|
214
|
-
if (!
|
|
301
|
+
if (!_e.sent()) return [3 /*break*/, 7];
|
|
215
302
|
return [4 /*yield*/, db.update(table, __assign({ id: removedRecord.id }, policy.update))];
|
|
216
303
|
case 6:
|
|
217
|
-
|
|
304
|
+
_e.sent();
|
|
218
305
|
removedUpdateCount += 1;
|
|
219
306
|
this.logger.info({
|
|
220
307
|
message: "(".concat(table.name, ") Applied onSourceRemoved update to record removed from source"),
|
|
221
|
-
obj: (
|
|
308
|
+
obj: (_d = {
|
|
309
|
+
id: removedRecord.id
|
|
310
|
+
},
|
|
311
|
+
_d[keyProperty] = removedRecord[keyProperty],
|
|
312
|
+
_d.source = removedRecord.sourcePackage,
|
|
313
|
+
_d),
|
|
222
314
|
});
|
|
223
|
-
|
|
315
|
+
_e.label = 7;
|
|
224
316
|
case 7:
|
|
225
317
|
_i++;
|
|
226
318
|
return [3 /*break*/, 4];
|
|
227
|
-
case 8: return [2 /*return*/, { deleteCount: 0, removedUpdateCount: removedUpdateCount }];
|
|
319
|
+
case 8: return [2 /*return*/, { deleteCount: 0, removedUpdateCount: removedUpdateCount, skippedNewer: skippedNewer }];
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
});
|
|
323
|
+
};
|
|
324
|
+
/**
|
|
325
|
+
* Source-loaded rows with no owner stamp that no declaration in this build claimed on this
|
|
326
|
+
* boot (the stamp leg has already run). They predate `source_package`, or their declaring
|
|
327
|
+
* package is not in this build; nobody prunes them. Reported so they are visible, never acted
|
|
328
|
+
* on. Tables that keep removed rows (`onSourceRemoved: 'keep'`) opted out of removal
|
|
329
|
+
* semantics altogether, so there is nothing to explain there.
|
|
330
|
+
*/
|
|
331
|
+
SourceRecordLoader.prototype.countUnowned = function (db, table, keyProperty) {
|
|
332
|
+
var _a;
|
|
333
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
334
|
+
var qb, unowned;
|
|
335
|
+
var _b;
|
|
336
|
+
return __generator(this, function (_c) {
|
|
337
|
+
switch (_c.label) {
|
|
338
|
+
case 0:
|
|
339
|
+
if (((_a = table.sourceRecordOptions.onSourceRemoved) !== null && _a !== void 0 ? _a : 'delete') === 'keep') {
|
|
340
|
+
return [2 /*return*/, 0];
|
|
341
|
+
}
|
|
342
|
+
qb = db_query_1.QueryBuilder.fromObject({ isLoadedFromSource: true }, table.name);
|
|
343
|
+
qb.condition({ field: 'sourcePackage', operator: 'IS NULL' });
|
|
344
|
+
return [4 /*yield*/, db.query(table, qb)];
|
|
345
|
+
case 1:
|
|
346
|
+
unowned = _c.sent();
|
|
347
|
+
if (unowned.length > 0) {
|
|
348
|
+
this.logger.warn({
|
|
349
|
+
message: "(".concat(table.name, ") ").concat(unowned.length, " source-loaded ").concat(unowned.length == 1 ? 'record has' : 'records have', " no owning package and no declaration in this build \u2014 left untouched"),
|
|
350
|
+
obj: (_b = {}, _b[keyProperty] = unowned.map(function (record) { return record[keyProperty]; }), _b),
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
return [2 /*return*/, unowned.length];
|
|
228
354
|
}
|
|
229
355
|
});
|
|
230
356
|
});
|
|
@@ -307,30 +433,29 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
307
433
|
});
|
|
308
434
|
});
|
|
309
435
|
};
|
|
310
|
-
|
|
436
|
+
/**
|
|
437
|
+
* Every source-record table in this build with the records declared for it, plus the set of
|
|
438
|
+
* packages that declare ANY source record in this build — the packages this boot speaks for.
|
|
439
|
+
*/
|
|
440
|
+
SourceRecordLoader.prototype.getDeclarations = function () {
|
|
311
441
|
return __awaiter(this, void 0, void 0, function () {
|
|
312
|
-
var
|
|
313
|
-
return __generator(this, function (
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
if (!sourceRecordsMap[sourceRecordTable.name]) {
|
|
319
|
-
sourceRecordsMap[sourceRecordTable.name] = { table: sourceRecordTable, records: [] };
|
|
320
|
-
}
|
|
442
|
+
var tables, _i, _a, table, buildSources, _b, _c, _d, source, loader;
|
|
443
|
+
return __generator(this, function (_e) {
|
|
444
|
+
tables = {};
|
|
445
|
+
for (_i = 0, _a = (0, SourceRecord_1.getSourceRecordTables)(); _i < _a.length; _i++) {
|
|
446
|
+
table = _a[_i];
|
|
447
|
+
tables[table.name] = { table: table, records: [] };
|
|
321
448
|
}
|
|
322
|
-
|
|
323
|
-
for (
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
records: [],
|
|
329
|
-
};
|
|
449
|
+
buildSources = new Set();
|
|
450
|
+
for (_b = 0, _c = (0, SourceRecord_1.getSourceRecordLoaders)(); _b < _c.length; _b++) {
|
|
451
|
+
_d = _c[_b], source = _d.source, loader = _d.loader;
|
|
452
|
+
buildSources.add(source);
|
|
453
|
+
if (!tables[loader.table.name]) {
|
|
454
|
+
tables[loader.table.name] = { table: loader.table, records: [] };
|
|
330
455
|
}
|
|
331
|
-
|
|
456
|
+
tables[loader.table.name].records.push({ source: source, record: loader.record });
|
|
332
457
|
}
|
|
333
|
-
return [2 /*return*/,
|
|
458
|
+
return [2 /*return*/, { tables: tables, buildSources: buildSources }];
|
|
334
459
|
});
|
|
335
460
|
});
|
|
336
461
|
};
|
|
@@ -421,6 +546,145 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
421
546
|
.sort();
|
|
422
547
|
return '{' + keys.map(function (k) { return JSON.stringify(k) + ':' + _this.canonicalStringify(obj[k]); }).join(',') + '}';
|
|
423
548
|
};
|
|
549
|
+
/** Memoized {@link resolveSourceVersion} — one resolution (and at most one warning) per source. */
|
|
550
|
+
SourceRecordLoader.prototype.sourceVersion = function (source) {
|
|
551
|
+
if (!this.sourceVersions.has(source)) {
|
|
552
|
+
this.sourceVersions.set(source, this.resolveSourceVersion(source));
|
|
553
|
+
}
|
|
554
|
+
return this.sourceVersions.get(source);
|
|
555
|
+
};
|
|
556
|
+
/**
|
|
557
|
+
* The declaring package's version, read from its own package.json at runtime. Resolution runs
|
|
558
|
+
* from the process cwd — the booting server's package, the one dependency tree every declaring
|
|
559
|
+
* package is reachable from (`@proteinjs/db` itself does not depend on the packages that
|
|
560
|
+
* declare records, so module-relative resolution could never find them). The package's entry
|
|
561
|
+
* is resolved (honoring exports maps, where `<pkg>/package.json` is usually not requireable),
|
|
562
|
+
* then the nearest package.json whose `name` matches is read walking up from it.
|
|
563
|
+
*
|
|
564
|
+
* Returns undefined where resolution is impossible — no Node `require` (browser bundles), or a
|
|
565
|
+
* package not resolvable from cwd. The sync then has no place in the version order for that
|
|
566
|
+
* package: it never touches its version-stamped rows, and what it writes is unversioned
|
|
567
|
+
* (see {@link isNewerStamp}). Logged once per boot so a misconfigured cwd is visible.
|
|
568
|
+
*/
|
|
569
|
+
SourceRecordLoader.prototype.resolveSourceVersion = function (source) {
|
|
570
|
+
// The ambient CJS `require` — the only require carrying `.resolve` (module.require does
|
|
571
|
+
// not). Every use below goes through the variable, so bundlers never see a statically
|
|
572
|
+
// analyzable `require(...)` call; in a browser bundle the runtime attempts throw into
|
|
573
|
+
// their catches and the method degrades to undefined.
|
|
574
|
+
var nodeRequire = typeof require === 'function' && typeof require.resolve === 'function' ? require : undefined;
|
|
575
|
+
var cwd = typeof process !== 'undefined' && typeof process.cwd === 'function' ? process.cwd() : undefined;
|
|
576
|
+
if (nodeRequire && cwd) {
|
|
577
|
+
try {
|
|
578
|
+
var entryPath = nodeRequire.resolve(source, { paths: [cwd] });
|
|
579
|
+
var path = nodeRequire('path');
|
|
580
|
+
var fs = nodeRequire('fs');
|
|
581
|
+
// Walk up from the entry file to the package's own package.json (the name check skips
|
|
582
|
+
// nested stubs like a dist/package.json); stop at the filesystem root.
|
|
583
|
+
for (var directory = path.dirname(entryPath);; directory = path.dirname(directory)) {
|
|
584
|
+
var candidate = path.join(directory, 'package.json');
|
|
585
|
+
if (fs.existsSync(candidate)) {
|
|
586
|
+
var packageJson = JSON.parse(fs.readFileSync(candidate, 'utf8'));
|
|
587
|
+
if ((packageJson === null || packageJson === void 0 ? void 0 : packageJson.name) === source && typeof packageJson.version === 'string') {
|
|
588
|
+
return packageJson.version;
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
if (path.dirname(directory) === directory) {
|
|
592
|
+
break;
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
catch (error) {
|
|
597
|
+
// Unresolvable from cwd — reported below.
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
this.logger.warn({
|
|
601
|
+
message: "Could not resolve a version for source package '".concat(source, "' from '").concat(cwd, "' \u2014 its records sync without version ordering (this build never touches its version-stamped rows)"),
|
|
602
|
+
});
|
|
603
|
+
return undefined;
|
|
604
|
+
};
|
|
605
|
+
/**
|
|
606
|
+
* Whether a row's version stamp is strictly newer than the reconciling build's version of the
|
|
607
|
+
* same package — the guard that makes version skew of one package safe on a shared database:
|
|
608
|
+
* an older build never prunes (or flags) rows a newer build of the same package declared.
|
|
609
|
+
*
|
|
610
|
+
* Unversioned stamps (NULL — legacy rows, or builds whose version could not be resolved)
|
|
611
|
+
* carry no ordering and stay reconcilable (last-writer-wins, the pre-version behavior). A
|
|
612
|
+
* build whose OWN version is unresolvable cannot place itself in the order, so it never
|
|
613
|
+
* touches a version-stamped row — conservative: prefer leaving a removed row behind over
|
|
614
|
+
* deleting one that might be newer.
|
|
615
|
+
*/
|
|
616
|
+
SourceRecordLoader.prototype.isNewerStamp = function (stampedVersion, reconcilingVersion) {
|
|
617
|
+
if (stampedVersion == null) {
|
|
618
|
+
return false;
|
|
619
|
+
}
|
|
620
|
+
if (reconcilingVersion == null) {
|
|
621
|
+
return true;
|
|
622
|
+
}
|
|
623
|
+
var comparison = this.compareVersions(stampedVersion, reconcilingVersion);
|
|
624
|
+
return comparison === undefined ? true : comparison > 0;
|
|
625
|
+
};
|
|
626
|
+
/**
|
|
627
|
+
* Semver comparison (major.minor.patch, prerelease-aware): negative when a < b, 0 when equal,
|
|
628
|
+
* positive when a > b, and undefined when either side does not parse as semver (unorderable —
|
|
629
|
+
* the caller treats that conservatively).
|
|
630
|
+
*/
|
|
631
|
+
SourceRecordLoader.prototype.compareVersions = function (a, b) {
|
|
632
|
+
var parse = function (version) {
|
|
633
|
+
var _a;
|
|
634
|
+
var match = /^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?/.exec(version.trim());
|
|
635
|
+
if (!match) {
|
|
636
|
+
return undefined;
|
|
637
|
+
}
|
|
638
|
+
return { main: [Number(match[1]), Number(match[2]), Number(match[3])], prerelease: (_a = match[4]) === null || _a === void 0 ? void 0 : _a.split('.') };
|
|
639
|
+
};
|
|
640
|
+
var parsedA = parse(a);
|
|
641
|
+
var parsedB = parse(b);
|
|
642
|
+
if (!parsedA || !parsedB) {
|
|
643
|
+
return undefined;
|
|
644
|
+
}
|
|
645
|
+
for (var i = 0; i < 3; i++) {
|
|
646
|
+
if (parsedA.main[i] !== parsedB.main[i]) {
|
|
647
|
+
return parsedA.main[i] - parsedB.main[i];
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
if (!parsedA.prerelease && !parsedB.prerelease) {
|
|
651
|
+
return 0;
|
|
652
|
+
}
|
|
653
|
+
if (!parsedA.prerelease) {
|
|
654
|
+
return 1; // a release outranks any prerelease of the same triple
|
|
655
|
+
}
|
|
656
|
+
if (!parsedB.prerelease) {
|
|
657
|
+
return -1;
|
|
658
|
+
}
|
|
659
|
+
var length = Math.max(parsedA.prerelease.length, parsedB.prerelease.length);
|
|
660
|
+
for (var i = 0; i < length; i++) {
|
|
661
|
+
var identifierA = parsedA.prerelease[i];
|
|
662
|
+
var identifierB = parsedB.prerelease[i];
|
|
663
|
+
if (identifierA === undefined) {
|
|
664
|
+
return -1; // fewer identifiers sorts first when all shared ones are equal
|
|
665
|
+
}
|
|
666
|
+
if (identifierB === undefined) {
|
|
667
|
+
return 1;
|
|
668
|
+
}
|
|
669
|
+
var numericA = /^\d+$/.test(identifierA) ? Number(identifierA) : undefined;
|
|
670
|
+
var numericB = /^\d+$/.test(identifierB) ? Number(identifierB) : undefined;
|
|
671
|
+
if (numericA !== undefined && numericB !== undefined) {
|
|
672
|
+
if (numericA !== numericB) {
|
|
673
|
+
return numericA - numericB;
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
else if (numericA !== undefined) {
|
|
677
|
+
return -1; // numeric identifiers sort before alphanumeric ones
|
|
678
|
+
}
|
|
679
|
+
else if (numericB !== undefined) {
|
|
680
|
+
return 1;
|
|
681
|
+
}
|
|
682
|
+
else if (identifierA !== identifierB) {
|
|
683
|
+
return identifierA < identifierB ? -1 : 1;
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
return 0;
|
|
687
|
+
};
|
|
424
688
|
return SourceRecordLoader;
|
|
425
689
|
}());
|
|
426
690
|
exports.SourceRecordLoader = SourceRecordLoader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceRecordLoader.js","sourceRoot":"","sources":["../../../src/source/SourceRecordLoader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SourceRecordLoader.js","sourceRoot":"","sources":["../../../src/source/SourceRecordLoader.ts"],"names":[],"mappings":"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"}
|