@proteinjs/db 1.47.3 → 1.49.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/.eslintrc.js +1 -1
- package/.prettierignore +2 -1
- package/CHANGELOG.md +37 -0
- package/dist/generated/index.d.ts.map +1 -1
- package/dist/generated/index.js +1 -3
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/test/index.d.ts.map +1 -1
- package/dist/generated/test/index.js +1 -3
- package/dist/generated/test/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -5
- package/dist/index.js.map +1 -1
- package/dist/src/Db.d.ts +9 -0
- package/dist/src/Db.d.ts.map +1 -1
- package/dist/src/Db.js +2 -2
- package/dist/src/Db.js.map +1 -1
- package/dist/src/MigrationRunner.js +2 -2
- package/dist/src/MigrationRunner.js.map +1 -1
- package/dist/src/Table.d.ts +16 -1
- package/dist/src/Table.d.ts.map +1 -1
- package/dist/src/Table.js +14 -0
- package/dist/src/Table.js.map +1 -1
- package/dist/src/auth/TableAuth.d.ts +4 -0
- package/dist/src/auth/TableAuth.d.ts.map +1 -1
- package/dist/src/auth/TableAuth.js +12 -0
- package/dist/src/auth/TableAuth.js.map +1 -1
- package/dist/src/auth/TableServiceAuth.d.ts.map +1 -1
- package/dist/src/auth/TableServiceAuth.js +5 -0
- package/dist/src/auth/TableServiceAuth.js.map +1 -1
- package/dist/src/schema/SchemaOperations.d.ts +4 -3
- package/dist/src/schema/SchemaOperations.d.ts.map +1 -1
- package/dist/src/schema/TableManager.d.ts +24 -6
- package/dist/src/schema/TableManager.d.ts.map +1 -1
- package/dist/src/schema/TableManager.js +93 -26
- package/dist/src/schema/TableManager.js.map +1 -1
- package/dist/src/services/TransactionRunnerService.d.ts +20 -1
- package/dist/src/services/TransactionRunnerService.d.ts.map +1 -1
- package/dist/src/source/SourceRecord.d.ts +2 -2
- package/dist/src/source/{SourceRecordLoader.d.ts → SourceRecordSyncRunner.d.ts} +15 -7
- package/dist/src/source/SourceRecordSyncRunner.d.ts.map +1 -0
- package/dist/src/source/{SourceRecordLoader.js → SourceRecordSyncRunner.js} +46 -31
- package/dist/src/source/SourceRecordSyncRunner.js.map +1 -0
- package/dist/src/tables/MigrationTable.d.ts +10 -2
- package/dist/src/tables/MigrationTable.d.ts.map +1 -1
- package/dist/src/tables/MigrationTable.js +12 -4
- package/dist/src/tables/MigrationTable.js.map +1 -1
- package/dist/src/transaction/Transaction.d.ts +6 -1
- package/dist/src/transaction/Transaction.d.ts.map +1 -1
- package/dist/src/transaction/Transaction.js +13 -2
- package/dist/src/transaction/Transaction.js.map +1 -1
- package/dist/src/transaction/TransactionRunner.d.ts +45 -2
- package/dist/src/transaction/TransactionRunner.d.ts.map +1 -1
- package/dist/src/transaction/TransactionRunner.js +227 -26
- package/dist/src/transaction/TransactionRunner.js.map +1 -1
- package/dist/test/DurableTable.test.d.ts +2 -0
- package/dist/test/DurableTable.test.d.ts.map +1 -0
- package/dist/test/DurableTable.test.js +172 -0
- package/dist/test/DurableTable.test.js.map +1 -0
- package/dist/test/MigrationAuth.test.js +12 -9
- package/dist/test/MigrationAuth.test.js.map +1 -1
- package/dist/test/SchemaReconcileLines.test.d.ts +2 -0
- package/dist/test/SchemaReconcileLines.test.d.ts.map +1 -0
- package/dist/test/SchemaReconcileLines.test.js +176 -0
- package/dist/test/SchemaReconcileLines.test.js.map +1 -0
- package/dist/test/SourceRecordLoaderQualifiedName.test.d.ts +2 -0
- package/dist/test/SourceRecordLoaderQualifiedName.test.d.ts.map +1 -0
- package/dist/test/SourceRecordLoaderQualifiedName.test.js +79 -0
- package/dist/test/SourceRecordLoaderQualifiedName.test.js.map +1 -0
- package/dist/test/SourceRecordSyncRunner.test.d.ts +2 -0
- package/dist/test/SourceRecordSyncRunner.test.d.ts.map +1 -0
- package/dist/test/{SourceRecordLoader.test.js → SourceRecordSyncRunner.test.js} +63 -7
- package/dist/test/SourceRecordSyncRunner.test.js.map +1 -0
- package/dist/test/TableManagerCreateOrder.test.d.ts +2 -0
- package/dist/test/TableManagerCreateOrder.test.d.ts.map +1 -0
- package/dist/test/TableManagerCreateOrder.test.js +66 -0
- package/dist/test/TableManagerCreateOrder.test.js.map +1 -0
- package/dist/test/reusable/SourceRecordSyncTests.d.ts.map +1 -1
- package/dist/test/reusable/SourceRecordSyncTests.js +3 -5
- package/dist/test/reusable/SourceRecordSyncTests.js.map +1 -1
- package/dist/test/reusable/TableManagerTests.d.ts.map +1 -1
- package/dist/test/reusable/TableManagerTests.js +180 -0
- package/dist/test/reusable/TableManagerTests.js.map +1 -1
- package/generated/index.ts +20 -19
- package/generated/test/index.ts +54 -53
- package/index.ts +3 -4
- package/package.json +4 -4
- package/src/Db.ts +11 -2
- package/src/MigrationRunner.ts +2 -2
- package/src/Table.ts +16 -1
- package/src/auth/TableAuth.ts +14 -0
- package/src/auth/TableServiceAuth.ts +6 -1
- package/src/schema/SchemaOperations.ts +4 -3
- package/src/schema/TableManager.ts +84 -26
- package/src/services/TransactionRunnerService.ts +21 -1
- package/src/source/SourceRecord.ts +2 -2
- package/src/source/{SourceRecordLoader.ts → SourceRecordSyncRunner.ts} +31 -13
- package/src/tables/MigrationTable.ts +12 -4
- package/src/transaction/Transaction.ts +11 -2
- package/src/transaction/TransactionRunner.ts +174 -3
- package/test/DurableTable.test.ts +156 -0
- package/test/MigrationAuth.test.ts +7 -5
- package/test/SchemaReconcileLines.test.ts +127 -0
- package/test/SourceRecordLoaderQualifiedName.test.ts +63 -0
- package/test/{SourceRecordLoader.test.ts → SourceRecordSyncRunner.test.ts} +75 -8
- package/test/TableManagerCreateOrder.test.ts +78 -0
- package/test/reusable/SourceRecordSyncTests.ts +3 -5
- package/test/reusable/TableManagerTests.ts +95 -0
- package/dist/src/source/SourceRecordLoader.d.ts.map +0 -1
- package/dist/src/source/SourceRecordLoader.js.map +0 -1
- package/dist/test/SourceRecordLoader.test.d.ts +0 -2
- package/dist/test/SourceRecordLoader.test.d.ts.map +0 -1
- package/dist/test/SourceRecordLoader.test.js.map +0 -1
|
@@ -37,12 +37,30 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.TransactionRunner = exports.getTransactionRunner = void 0;
|
|
40
|
+
var logger_1 = require("@proteinjs/logger");
|
|
40
41
|
var Db_1 = require("../Db");
|
|
42
|
+
var Table_1 = require("../Table");
|
|
43
|
+
var TransactionContextFactory_1 = require("./TransactionContextFactory");
|
|
41
44
|
var TransactionRunnerService_1 = require("../services/TransactionRunnerService");
|
|
42
45
|
var getTransactionRunner = function () {
|
|
43
46
|
return typeof self === 'undefined' ? new TransactionRunner() : (0, TransactionRunnerService_1.getTransactionRunnerService)();
|
|
44
47
|
};
|
|
45
48
|
exports.getTransactionRunner = getTransactionRunner;
|
|
49
|
+
/**
|
|
50
|
+
* Runs a client `Transaction`'s operations as one server-side transaction.
|
|
51
|
+
*
|
|
52
|
+
* A write may DECLARE the rows it depends on (`options.afterRows`): rows its operations
|
|
53
|
+
* reference whose own insert may still be in flight when this request arrives — a text update
|
|
54
|
+
* released by a page that was going away while its row's insert was still being served, a child
|
|
55
|
+
* row's insert whose root (its permission source, and the owner grant that commits with the
|
|
56
|
+
* root) is still landing. Without the declaration such a write ran to completion inside the
|
|
57
|
+
* insert's window and matched nothing, silently, or was refused at the door for a grant that was
|
|
58
|
+
* a moment from existing — and the page that could have retried was gone. The server outlives
|
|
59
|
+
* the page: it waits, bounded by the db driver's per-operation deadline, for every declared row to
|
|
60
|
+
* exist AND be visible to the caller (a read as the caller sees a row exactly when the caller's
|
|
61
|
+
* grant on its scope has committed), then runs the operations. A row that never appears fails the
|
|
62
|
+
* request with a plain clause.
|
|
63
|
+
*/
|
|
46
64
|
var TransactionRunner = /** @class */ (function () {
|
|
47
65
|
function TransactionRunner() {
|
|
48
66
|
this.serviceMetadata = {
|
|
@@ -50,43 +68,226 @@ var TransactionRunner = /** @class */ (function () {
|
|
|
50
68
|
allUsers: true,
|
|
51
69
|
},
|
|
52
70
|
};
|
|
71
|
+
this.logger = new logger_1.Logger({ name: this.constructor.name });
|
|
53
72
|
}
|
|
54
|
-
TransactionRunner.prototype.run = function (ops) {
|
|
73
|
+
TransactionRunner.prototype.run = function (ops, options) {
|
|
74
|
+
var _a;
|
|
55
75
|
return __awaiter(this, void 0, void 0, function () {
|
|
56
|
-
var db;
|
|
76
|
+
var db, afterRows;
|
|
57
77
|
var _this = this;
|
|
58
|
-
return __generator(this, function (
|
|
59
|
-
switch (
|
|
78
|
+
return __generator(this, function (_b) {
|
|
79
|
+
switch (_b.label) {
|
|
60
80
|
case 0:
|
|
61
81
|
db = (0, Db_1.getDb)();
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
switch (_a.label) {
|
|
66
|
-
case 0:
|
|
67
|
-
_i = 0, ops_1 = ops;
|
|
68
|
-
_a.label = 1;
|
|
69
|
-
case 1:
|
|
70
|
-
if (!(_i < ops_1.length)) return [3 /*break*/, 4];
|
|
71
|
-
op = ops_1[_i];
|
|
72
|
-
return [4 /*yield*/, db[op.name].apply(db, op.args)];
|
|
73
|
-
case 2:
|
|
74
|
-
_a.sent();
|
|
75
|
-
_a.label = 3;
|
|
76
|
-
case 3:
|
|
77
|
-
_i++;
|
|
78
|
-
return [3 /*break*/, 1];
|
|
79
|
-
case 4: return [2 /*return*/];
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
}); })];
|
|
82
|
+
afterRows = (_a = options === null || options === void 0 ? void 0 : options.afterRows) !== null && _a !== void 0 ? _a : [];
|
|
83
|
+
if (!(afterRows.length > 0)) return [3 /*break*/, 2];
|
|
84
|
+
return [4 /*yield*/, this.awaitRows(ops, afterRows)];
|
|
83
85
|
case 1:
|
|
84
|
-
|
|
86
|
+
_b.sent();
|
|
87
|
+
_b.label = 2;
|
|
88
|
+
case 2: return [4 /*yield*/, db.runTransaction(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
89
|
+
var _i, ops_1, op;
|
|
90
|
+
return __generator(this, function (_a) {
|
|
91
|
+
switch (_a.label) {
|
|
92
|
+
case 0:
|
|
93
|
+
_i = 0, ops_1 = ops;
|
|
94
|
+
_a.label = 1;
|
|
95
|
+
case 1:
|
|
96
|
+
if (!(_i < ops_1.length)) return [3 /*break*/, 4];
|
|
97
|
+
op = ops_1[_i];
|
|
98
|
+
return [4 /*yield*/, db[op.name].apply(db, op.args)];
|
|
99
|
+
case 2:
|
|
100
|
+
_a.sent();
|
|
101
|
+
_a.label = 3;
|
|
102
|
+
case 3:
|
|
103
|
+
_i++;
|
|
104
|
+
return [3 /*break*/, 1];
|
|
105
|
+
case 4: return [2 /*return*/];
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}); })];
|
|
109
|
+
case 3:
|
|
110
|
+
_b.sent();
|
|
85
111
|
return [2 /*return*/];
|
|
86
112
|
}
|
|
87
113
|
});
|
|
88
114
|
});
|
|
89
115
|
};
|
|
116
|
+
/**
|
|
117
|
+
* Wait until every declared row exists and is visible to the caller, bounded by the db driver's
|
|
118
|
+
* per-operation deadline (`DbDriver.getOperationDeadlineMs`), read when the write waits. The
|
|
119
|
+
* bound is the ceiling for a row that NEVER comes — the named failure, never a hang. A
|
|
120
|
+
* dependency's insert lands in hundreds of milliseconds on a healthy link and in seconds on a
|
|
121
|
+
* degraded one (a root's birth of a few dozen sequential statements has taken 13 s), and the
|
|
122
|
+
* writes released behind it by a page that is gone have no second chance. The driver's deadline
|
|
123
|
+
* is how long the deployment lets one statement of that insert run before failing it: the wait
|
|
124
|
+
* takes its measure from there — one owner for the number, configured with the database — not
|
|
125
|
+
* from a number of its own. A write that waits here holds one request and a poll, nothing else.
|
|
126
|
+
*
|
|
127
|
+
* Each poll is a single-use strong read outside any transaction, so a commit is seen the moment
|
|
128
|
+
* it lands; the interval starts short and backs off so a dependency landing in hundreds of
|
|
129
|
+
* milliseconds is caught within tens.
|
|
130
|
+
*/
|
|
131
|
+
TransactionRunner.prototype.awaitRows = function (ops, afterRows) {
|
|
132
|
+
var _a;
|
|
133
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
134
|
+
var tablesById, unknown, db, boundMs, started, deadline, waiting, interval, polls, _loop_1, this_1, state_1;
|
|
135
|
+
return __generator(this, function (_b) {
|
|
136
|
+
switch (_b.label) {
|
|
137
|
+
case 0:
|
|
138
|
+
if ((_a = (0, TransactionContextFactory_1.getDefaultTransactionContextFactory)()) === null || _a === void 0 ? void 0 : _a.getTransactionContext().currentTransaction) {
|
|
139
|
+
throw new Error("TransactionRunner: afterRows cannot be honoured inside an ambient transaction \u2014 its reads would see the transaction's own snapshot, never a row committed after it began");
|
|
140
|
+
}
|
|
141
|
+
tablesById = TransactionRunner.rowsTheOperationsReference(ops);
|
|
142
|
+
unknown = afterRows.filter(function (id) { return !tablesById.has(id); });
|
|
143
|
+
if (unknown.length > 0) {
|
|
144
|
+
throw new Error("TransactionRunner: afterRows names rows none of the operations reference (".concat(unknown.join(', '), ") \u2014 the write was not run"));
|
|
145
|
+
}
|
|
146
|
+
db = (0, Db_1.getDb)();
|
|
147
|
+
boundMs = Db_1.Db.getDefaultDbDriver().getOperationDeadlineMs();
|
|
148
|
+
started = Date.now();
|
|
149
|
+
deadline = started + boundMs;
|
|
150
|
+
waiting = afterRows
|
|
151
|
+
.filter(function (id, index) { return afterRows.indexOf(id) === index; })
|
|
152
|
+
.map(function (id) { return ({ id: id, tables: tablesById.get(id).slice() }); });
|
|
153
|
+
interval = TransactionRunner.FIRST_POLL_INTERVAL_MS;
|
|
154
|
+
polls = 0;
|
|
155
|
+
_loop_1 = function () {
|
|
156
|
+
var _i, waiting_1, row, stillAbsent, _c, _d, table, waitedMs, line, now, absent;
|
|
157
|
+
return __generator(this, function (_e) {
|
|
158
|
+
switch (_e.label) {
|
|
159
|
+
case 0:
|
|
160
|
+
polls += 1;
|
|
161
|
+
_i = 0, waiting_1 = waiting;
|
|
162
|
+
_e.label = 1;
|
|
163
|
+
case 1:
|
|
164
|
+
if (!(_i < waiting_1.length)) return [3 /*break*/, 7];
|
|
165
|
+
row = waiting_1[_i];
|
|
166
|
+
stillAbsent = [];
|
|
167
|
+
_c = 0, _d = row.tables;
|
|
168
|
+
_e.label = 2;
|
|
169
|
+
case 2:
|
|
170
|
+
if (!(_c < _d.length)) return [3 /*break*/, 5];
|
|
171
|
+
table = _d[_c];
|
|
172
|
+
return [4 /*yield*/, db.get(table, { id: row.id })];
|
|
173
|
+
case 3:
|
|
174
|
+
if (!(_e.sent())) {
|
|
175
|
+
stillAbsent.push(table);
|
|
176
|
+
}
|
|
177
|
+
_e.label = 4;
|
|
178
|
+
case 4:
|
|
179
|
+
_c++;
|
|
180
|
+
return [3 /*break*/, 2];
|
|
181
|
+
case 5:
|
|
182
|
+
row.tables = stillAbsent;
|
|
183
|
+
_e.label = 6;
|
|
184
|
+
case 6:
|
|
185
|
+
_i++;
|
|
186
|
+
return [3 /*break*/, 1];
|
|
187
|
+
case 7:
|
|
188
|
+
waiting = waiting.filter(function (row) { return row.tables.length > 0; });
|
|
189
|
+
if (waiting.length === 0) {
|
|
190
|
+
waitedMs = Date.now() - started;
|
|
191
|
+
line = { message: "Declared rows present", obj: { afterRows: afterRows, waitedMs: waitedMs, polls: polls } };
|
|
192
|
+
if (polls > 1) {
|
|
193
|
+
this_1.logger.info(line);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
this_1.logger.debug(line);
|
|
197
|
+
}
|
|
198
|
+
return [2 /*return*/, { value: void 0 }];
|
|
199
|
+
}
|
|
200
|
+
now = Date.now();
|
|
201
|
+
if (now >= deadline) {
|
|
202
|
+
absent = waiting.map(function (row) { return row.tables.map(function (table) { return "".concat(table.name, ":").concat(row.id); }).join(', '); }).join(', ');
|
|
203
|
+
this_1.logger.warn({
|
|
204
|
+
message: "Declared rows absent at the bound \u2014 the write was not run",
|
|
205
|
+
obj: { absent: absent, boundMs: boundMs, waitedMs: now - started, polls: polls },
|
|
206
|
+
});
|
|
207
|
+
throw new Error("TransactionRunner: waited ".concat(boundMs, " ms for rows this write depends on to exist and be visible to the caller; still absent: ").concat(absent, " \u2014 the write was not run (the bound is the db driver's per-operation deadline)"));
|
|
208
|
+
}
|
|
209
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, Math.min(interval, deadline - now)); })];
|
|
210
|
+
case 8:
|
|
211
|
+
_e.sent();
|
|
212
|
+
interval = Math.min(interval * 2, TransactionRunner.MAX_POLL_INTERVAL_MS);
|
|
213
|
+
return [2 /*return*/];
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
};
|
|
217
|
+
this_1 = this;
|
|
218
|
+
_b.label = 1;
|
|
219
|
+
case 1: return [5 /*yield**/, _loop_1()];
|
|
220
|
+
case 2:
|
|
221
|
+
state_1 = _b.sent();
|
|
222
|
+
if (typeof state_1 === "object")
|
|
223
|
+
return [2 /*return*/, state_1.value];
|
|
224
|
+
_b.label = 3;
|
|
225
|
+
case 3: return [3 /*break*/, 1];
|
|
226
|
+
case 4: return [2 /*return*/];
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
232
|
+
* The rows the operations reference, by id → the table(s) they are read from: the permission
|
|
233
|
+
* source a row attaches to (an insert whose `permissionSource` is another row), the row an
|
|
234
|
+
* update / preserving update / membership update / delete targets. The rows the operations
|
|
235
|
+
* insert themselves are not dependencies.
|
|
236
|
+
*/
|
|
237
|
+
TransactionRunner.rowsTheOperationsReference = function (ops) {
|
|
238
|
+
var _a, _b, _c;
|
|
239
|
+
var inserted = [];
|
|
240
|
+
var referenced = new Map();
|
|
241
|
+
var reference = function (table, id) {
|
|
242
|
+
if (!table || typeof id !== 'string') {
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
var tables = referenced.get(id);
|
|
246
|
+
if (!tables) {
|
|
247
|
+
tables = [];
|
|
248
|
+
referenced.set(id, tables);
|
|
249
|
+
}
|
|
250
|
+
if (tables.indexOf(table) === -1) {
|
|
251
|
+
tables.push(table);
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
for (var _i = 0, ops_2 = ops; _i < ops_2.length; _i++) {
|
|
255
|
+
var op = ops_2[_i];
|
|
256
|
+
var args = op.args;
|
|
257
|
+
var table = args[0];
|
|
258
|
+
if (op.name === 'insert') {
|
|
259
|
+
var record = args[1];
|
|
260
|
+
if (record === null || record === void 0 ? void 0 : record.id) {
|
|
261
|
+
inserted.push(record.id);
|
|
262
|
+
}
|
|
263
|
+
var source = record === null || record === void 0 ? void 0 : record.permissionSource;
|
|
264
|
+
if ((source === null || source === void 0 ? void 0 : source._id) && source._id !== (record === null || record === void 0 ? void 0 : record.id)) {
|
|
265
|
+
var sourceTableName = (_a = record === null || record === void 0 ? void 0 : record.permissionSourceTable) !== null && _a !== void 0 ? _a : source._table;
|
|
266
|
+
reference(sourceTableName ? TransactionRunner.tableNamed(sourceTableName, table) : table, source._id);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else if (op.name === 'update' || op.name === 'updatePreserving') {
|
|
270
|
+
var record = args[1];
|
|
271
|
+
var query = args[2];
|
|
272
|
+
reference(table, (_b = record === null || record === void 0 ? void 0 : record.id) !== null && _b !== void 0 ? _b : (query && typeof query === 'object' && 'id' in query ? query.id : undefined));
|
|
273
|
+
}
|
|
274
|
+
else if (op.name === 'updateArrayMembership') {
|
|
275
|
+
reference(table, (_c = args[1]) === null || _c === void 0 ? void 0 : _c.recordId);
|
|
276
|
+
}
|
|
277
|
+
else if (op.name === 'delete') {
|
|
278
|
+
var query = args[1];
|
|
279
|
+
reference(table, query && typeof query === 'object' ? query.id : undefined);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
inserted.forEach(function (id) { return referenced.delete(id); });
|
|
283
|
+
return referenced;
|
|
284
|
+
};
|
|
285
|
+
/** The table a permission source lives in: the insert's own table when it names the same one. */
|
|
286
|
+
TransactionRunner.tableNamed = function (tableName, inserting) {
|
|
287
|
+
return inserting && inserting.name === tableName ? inserting : (0, Table_1.tableByName)(tableName);
|
|
288
|
+
};
|
|
289
|
+
TransactionRunner.FIRST_POLL_INTERVAL_MS = 25;
|
|
290
|
+
TransactionRunner.MAX_POLL_INTERVAL_MS = 250;
|
|
90
291
|
return TransactionRunner;
|
|
91
292
|
}());
|
|
92
293
|
exports.TransactionRunner = TransactionRunner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionRunner.js","sourceRoot":"","sources":["../../../src/transaction/TransactionRunner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"TransactionRunner.js","sourceRoot":"","sources":["../../../src/transaction/TransactionRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DurableTable.test.d.ts","sourceRoot":"","sources":["../../test/DurableTable.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
var user_auth_1 = require("@proteinjs/user-auth");
|
|
19
|
+
var Table_1 = require("../src/Table");
|
|
20
|
+
var Record_1 = require("../src/Record");
|
|
21
|
+
var Columns_1 = require("../src/Columns");
|
|
22
|
+
var TableAuth_1 = require("../src/auth/TableAuth");
|
|
23
|
+
var TableServiceAuth_1 = require("../src/auth/TableServiceAuth");
|
|
24
|
+
var MigrationTable_1 = require("../src/tables/MigrationTable");
|
|
25
|
+
var setUser = function (roles) {
|
|
26
|
+
user_auth_1.UserAuth.userRepo = {
|
|
27
|
+
getUser: function () { return ({ email: 'user@test.local', roles: roles }); },
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
var setMapping = function (mapping) {
|
|
31
|
+
user_auth_1.UserAuth.permissionRolesMapping = {
|
|
32
|
+
getRoles: function (permission) { return mapping[permission]; },
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
/** Every door open to the 'ledger' permission — the delete door included. */
|
|
36
|
+
var OpenLedgerTable = /** @class */ (function (_super) {
|
|
37
|
+
__extends(OpenLedgerTable, _super);
|
|
38
|
+
function OpenLedgerTable() {
|
|
39
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
40
|
+
_this.name = 'open_ledger_test';
|
|
41
|
+
_this.auth = {
|
|
42
|
+
db: { all: { permission: 'ledger' } },
|
|
43
|
+
service: { all: { permission: 'ledger' } },
|
|
44
|
+
};
|
|
45
|
+
_this.columns = (0, Record_1.withRecordColumns)({
|
|
46
|
+
title: new Columns_1.StringColumn('title'),
|
|
47
|
+
});
|
|
48
|
+
return _this;
|
|
49
|
+
}
|
|
50
|
+
return OpenLedgerTable;
|
|
51
|
+
}(Table_1.Table));
|
|
52
|
+
/** The same doors, declared durable: the declared delete doors do not reopen what durability closes. */
|
|
53
|
+
var DurableLedgerTable = /** @class */ (function (_super) {
|
|
54
|
+
__extends(DurableLedgerTable, _super);
|
|
55
|
+
function DurableLedgerTable() {
|
|
56
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
57
|
+
_this.name = 'durable_ledger_test';
|
|
58
|
+
_this.durable = true;
|
|
59
|
+
return _this;
|
|
60
|
+
}
|
|
61
|
+
return DurableLedgerTable;
|
|
62
|
+
}(OpenLedgerTable));
|
|
63
|
+
/** Durable with no auth block at all: admin's break-glass default does not reach delete either. */
|
|
64
|
+
var DurableNoAuthTable = /** @class */ (function (_super) {
|
|
65
|
+
__extends(DurableNoAuthTable, _super);
|
|
66
|
+
function DurableNoAuthTable() {
|
|
67
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
68
|
+
_this.name = 'durable_no_auth_test';
|
|
69
|
+
_this.durable = true;
|
|
70
|
+
_this.columns = (0, Record_1.withRecordColumns)({
|
|
71
|
+
title: new Columns_1.StringColumn('title'),
|
|
72
|
+
});
|
|
73
|
+
return _this;
|
|
74
|
+
}
|
|
75
|
+
return DurableNoAuthTable;
|
|
76
|
+
}(Table_1.Table));
|
|
77
|
+
/** What the refusal is, read by shape (the router reads a `ServiceRefusal` the same way). */
|
|
78
|
+
var refusalOf = function (act) {
|
|
79
|
+
try {
|
|
80
|
+
act();
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
return { name: error === null || error === void 0 ? void 0 : error.name, status: error === null || error === void 0 ? void 0 : error.status, message: error === null || error === void 0 ? void 0 : error.message };
|
|
84
|
+
}
|
|
85
|
+
return undefined;
|
|
86
|
+
};
|
|
87
|
+
describe('a durable table keeps its rows', function () {
|
|
88
|
+
beforeEach(function () {
|
|
89
|
+
setMapping({ ledger: ['ledger-keeper'] });
|
|
90
|
+
});
|
|
91
|
+
afterEach(function () {
|
|
92
|
+
user_auth_1.UserAuth.userRepo = undefined;
|
|
93
|
+
user_auth_1.UserAuth.permissionRolesMapping = undefined;
|
|
94
|
+
});
|
|
95
|
+
it('the delete door refuses every caller on both apis — a 403 refusal naming the table, whatever auth declares', function () {
|
|
96
|
+
var auth = new TableAuth_1.TableAuth();
|
|
97
|
+
var _loop_1 = function (table) {
|
|
98
|
+
for (var _b = 0, _c = [['ledger-keeper'], ['admin']]; _b < _c.length; _b++) {
|
|
99
|
+
var roles = _c[_b];
|
|
100
|
+
setUser(roles);
|
|
101
|
+
var _loop_2 = function (api) {
|
|
102
|
+
var refusal = refusalOf(function () { return auth.canDelete(table, api); });
|
|
103
|
+
expect(refusal).toEqual({
|
|
104
|
+
name: 'ServiceRefusal',
|
|
105
|
+
status: 403,
|
|
106
|
+
message: "Table ".concat(table.name, " is durable: its rows are never deleted"),
|
|
107
|
+
});
|
|
108
|
+
// The capability read the record surfaces derive their acts from agrees with the door.
|
|
109
|
+
expect(auth.canPerform(table, 'delete', api)).toBe(false);
|
|
110
|
+
};
|
|
111
|
+
for (var _d = 0, _e = ['db', 'service']; _d < _e.length; _d++) {
|
|
112
|
+
var api = _e[_d];
|
|
113
|
+
_loop_2(api);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
for (var _i = 0, _a = [new DurableLedgerTable(), new DurableNoAuthTable()]; _i < _a.length; _i++) {
|
|
118
|
+
var table = _a[_i];
|
|
119
|
+
_loop_1(table);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
it('the service door passes the refusal to the caller as it is — not a generic denial, not a failure', function () {
|
|
123
|
+
setUser(['admin']);
|
|
124
|
+
var table = new DurableLedgerTable();
|
|
125
|
+
var refusal = refusalOf(function () { return new TableServiceAuth_1.TableServiceAuth().canAccess('delete', [table, { id: 'entry-1' }]); });
|
|
126
|
+
expect(refusal).toEqual({
|
|
127
|
+
name: 'ServiceRefusal',
|
|
128
|
+
status: 403,
|
|
129
|
+
message: 'Table durable_ledger_test is durable: its rows are never deleted',
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
it('the durable table keeps every other door it declares', function () {
|
|
133
|
+
setUser(['ledger-keeper']);
|
|
134
|
+
var auth = new TableAuth_1.TableAuth();
|
|
135
|
+
var table = new DurableLedgerTable();
|
|
136
|
+
var _loop_3 = function (api) {
|
|
137
|
+
expect(function () { return auth.canQuery(table, api); }).not.toThrow();
|
|
138
|
+
expect(function () { return auth.canInsert(table, api); }).not.toThrow();
|
|
139
|
+
expect(function () { return auth.canUpdate(table, api); }).not.toThrow();
|
|
140
|
+
};
|
|
141
|
+
for (var _i = 0, _a = ['db', 'service']; _i < _a.length; _i++) {
|
|
142
|
+
var api = _a[_i];
|
|
143
|
+
_loop_3(api);
|
|
144
|
+
}
|
|
145
|
+
expect(new TableServiceAuth_1.TableServiceAuth().canAccess('query', [table, {}])).toBe(true);
|
|
146
|
+
expect(new TableServiceAuth_1.TableServiceAuth().canAccess('update', [table, { id: 'entry-1', title: 't' }])).toBe(true);
|
|
147
|
+
});
|
|
148
|
+
it('a table that does not declare it keeps its delete doors exactly as declared', function () {
|
|
149
|
+
var auth = new TableAuth_1.TableAuth();
|
|
150
|
+
var table = new OpenLedgerTable();
|
|
151
|
+
setUser(['ledger-keeper']);
|
|
152
|
+
var _loop_4 = function (api) {
|
|
153
|
+
expect(function () { return auth.canDelete(table, api); }).not.toThrow();
|
|
154
|
+
expect(auth.canPerform(table, 'delete', api)).toBe(true);
|
|
155
|
+
};
|
|
156
|
+
for (var _i = 0, _a = ['db', 'service']; _i < _a.length; _i++) {
|
|
157
|
+
var api = _a[_i];
|
|
158
|
+
_loop_4(api);
|
|
159
|
+
}
|
|
160
|
+
expect(new TableServiceAuth_1.TableServiceAuth().canAccess('delete', [table, { id: 'entry-1' }])).toBe(true);
|
|
161
|
+
setUser(['someone-else']);
|
|
162
|
+
expect(function () { return auth.canDelete(table, 'service'); }).toThrow('User is not authorized to delete records from table: open_ledger_test');
|
|
163
|
+
});
|
|
164
|
+
it('the migration ledger is durable', function () {
|
|
165
|
+
setUser(['admin']);
|
|
166
|
+
var table = new MigrationTable_1.MigrationTable();
|
|
167
|
+
var refusal = refusalOf(function () { return new TableServiceAuth_1.TableServiceAuth().canAccess('delete', [table, { id: 'migration-1' }]); });
|
|
168
|
+
expect(refusal === null || refusal === void 0 ? void 0 : refusal.status).toBe(403);
|
|
169
|
+
expect(refusal === null || refusal === void 0 ? void 0 : refusal.message).toBe('Table migration is durable: its rows are never deleted');
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
//# sourceMappingURL=DurableTable.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DurableTable.test.js","sourceRoot":"","sources":["../../test/DurableTable.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -90,17 +90,20 @@ describe('migrations ride the dev permission', function () {
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
});
|
|
93
|
-
it('delete
|
|
94
|
-
setUser(['dev-crew']);
|
|
93
|
+
it('delete has no door — for anyone, break-glass included: the ledger is durable', function () {
|
|
95
94
|
var auth = new TableAuth_1.TableAuth();
|
|
96
95
|
var table = new MigrationTable_1.MigrationTable();
|
|
97
|
-
var
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
96
|
+
for (var _i = 0, _a = [['dev-crew'], ['admin']]; _i < _a.length; _i++) {
|
|
97
|
+
var roles = _a[_i];
|
|
98
|
+
setUser(roles);
|
|
99
|
+
var _loop_5 = function (api) {
|
|
100
|
+
expect(function () { return auth.canDelete(table, api); }).toThrow('Table migration is durable: its rows are never deleted');
|
|
101
|
+
expect(auth.canPerform(table, 'delete', api)).toBe(false);
|
|
102
|
+
};
|
|
103
|
+
for (var _b = 0, _c = ['db', 'service']; _b < _c.length; _b++) {
|
|
104
|
+
var api = _c[_b];
|
|
105
|
+
_loop_5(api);
|
|
106
|
+
}
|
|
104
107
|
}
|
|
105
108
|
});
|
|
106
109
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrationAuth.test.js","sourceRoot":"","sources":["../../test/MigrationAuth.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MigrationAuth.test.js","sourceRoot":"","sources":["../../test/MigrationAuth.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaReconcileLines.test.d.ts","sourceRoot":"","sources":["../../test/SchemaReconcileLines.test.ts"],"names":[],"mappings":""}
|