@proteinjs/db 1.54.1 → 1.54.3

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 (48) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/src/Columns.d.ts +12 -6
  3. package/dist/src/Columns.d.ts.map +1 -1
  4. package/dist/src/Columns.js +40 -65
  5. package/dist/src/Columns.js.map +1 -1
  6. package/dist/src/Db.d.ts.map +1 -1
  7. package/dist/src/Db.js +2 -5
  8. package/dist/src/Db.js.map +1 -1
  9. package/dist/src/Record.d.ts +35 -0
  10. package/dist/src/Record.d.ts.map +1 -1
  11. package/dist/src/Record.js +177 -45
  12. package/dist/src/Record.js.map +1 -1
  13. package/dist/src/Table.d.ts +18 -1
  14. package/dist/src/Table.d.ts.map +1 -1
  15. package/dist/src/encryption/EncryptionRecordHooks.d.ts +9 -4
  16. package/dist/src/encryption/EncryptionRecordHooks.d.ts.map +1 -1
  17. package/dist/src/encryption/EncryptionRecordHooks.js +65 -42
  18. package/dist/src/encryption/EncryptionRecordHooks.js.map +1 -1
  19. package/dist/test/DateTimeFieldReadOnFirstRead.test.d.ts +2 -0
  20. package/dist/test/DateTimeFieldReadOnFirstRead.test.d.ts.map +1 -0
  21. package/dist/test/DateTimeFieldReadOnFirstRead.test.js +238 -0
  22. package/dist/test/DateTimeFieldReadOnFirstRead.test.js.map +1 -0
  23. package/dist/test/HydrationBenchmark.test.d.ts +2 -0
  24. package/dist/test/HydrationBenchmark.test.d.ts.map +1 -0
  25. package/dist/test/HydrationBenchmark.test.js +299 -0
  26. package/dist/test/HydrationBenchmark.test.js.map +1 -0
  27. package/dist/test/LegacyCellHydration.test.d.ts +2 -0
  28. package/dist/test/LegacyCellHydration.test.d.ts.map +1 -0
  29. package/dist/test/LegacyCellHydration.test.js +321 -0
  30. package/dist/test/LegacyCellHydration.test.js.map +1 -0
  31. package/dist/test/SyncRowHydration.test.d.ts +2 -0
  32. package/dist/test/SyncRowHydration.test.d.ts.map +1 -0
  33. package/dist/test/SyncRowHydration.test.js +344 -0
  34. package/dist/test/SyncRowHydration.test.js.map +1 -0
  35. package/dist/test/reusable/ColumnTypesTests.d.ts.map +1 -1
  36. package/dist/test/reusable/ColumnTypesTests.js +55 -0
  37. package/dist/test/reusable/ColumnTypesTests.js.map +1 -1
  38. package/package.json +2 -2
  39. package/src/Columns.ts +14 -7
  40. package/src/Db.ts +3 -4
  41. package/src/Record.ts +202 -16
  42. package/src/Table.ts +21 -1
  43. package/src/encryption/EncryptionRecordHooks.ts +48 -17
  44. package/test/DateTimeFieldReadOnFirstRead.test.ts +162 -0
  45. package/test/HydrationBenchmark.test.ts +209 -0
  46. package/test/LegacyCellHydration.test.ts +234 -0
  47. package/test/SyncRowHydration.test.ts +249 -0
  48. package/test/reusable/ColumnTypesTests.ts +47 -1
@@ -0,0 +1,321 @@
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
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ var __generator = (this && this.__generator) || function (thisArg, body) {
38
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
+ function verb(n) { return function (v) { return step([n, v]); }; }
41
+ function step(op) {
42
+ if (f) throw new TypeError("Generator is already executing.");
43
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
44
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
+ if (y = 0, t) op = [op[0] & 2, t.value];
46
+ switch (op[0]) {
47
+ case 0: case 1: t = op; break;
48
+ case 4: _.label++; return { value: op[1], done: false };
49
+ case 5: _.label++; y = op[1]; op = [0]; continue;
50
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
+ default:
52
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
+ if (t[2]) _.ops.pop();
57
+ _.trys.pop(); continue;
58
+ }
59
+ op = body.call(thisArg, _);
60
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
+ }
63
+ };
64
+ Object.defineProperty(exports, "__esModule", { value: true });
65
+ var reflection_1 = require("@proteinjs/reflection");
66
+ var Db_1 = require("../src/Db");
67
+ var TableWatcherRunner_1 = require("../src/TableWatcherRunner");
68
+ var Table_1 = require("../src/Table");
69
+ var Record_1 = require("../src/Record");
70
+ var Columns_1 = require("../src/Columns");
71
+ var DocTable = /** @class */ (function (_super) {
72
+ __extends(DocTable, _super);
73
+ function DocTable() {
74
+ var _this = _super !== null && _super.apply(this, arguments) || this;
75
+ _this.name = 'legacy_cell_doc';
76
+ _this.columns = (0, Record_1.withRecordColumns)({
77
+ title: new Columns_1.StringColumn('title'),
78
+ tags: new Columns_1.ArrayColumn('tag_list'),
79
+ settings: new Columns_1.ObjectColumn('settings'),
80
+ after: new Columns_1.StringColumn('after'),
81
+ });
82
+ return _this;
83
+ }
84
+ return DocTable;
85
+ }(Table_1.Table));
86
+ var docTable = new DocTable();
87
+ var TestTransactionContextFactory = /** @class */ (function () {
88
+ function TestTransactionContextFactory() {
89
+ this.context = {};
90
+ }
91
+ TestTransactionContextFactory.prototype.getTransactionContext = function () {
92
+ return this.context;
93
+ };
94
+ TestTransactionContextFactory.prototype.runInContext = function (context, fn) {
95
+ return __awaiter(this, void 0, void 0, function () {
96
+ var previous;
97
+ return __generator(this, function (_a) {
98
+ switch (_a.label) {
99
+ case 0:
100
+ previous = this.context;
101
+ this.context = context;
102
+ _a.label = 1;
103
+ case 1:
104
+ _a.trys.push([1, , 3, 4]);
105
+ return [4 /*yield*/, fn()];
106
+ case 2: return [2 /*return*/, _a.sent()];
107
+ case 3:
108
+ this.context = previous;
109
+ return [7 /*endfinally*/];
110
+ case 4: return [2 /*return*/];
111
+ }
112
+ });
113
+ });
114
+ };
115
+ return TestTransactionContextFactory;
116
+ }());
117
+ /** A driver that answers every query with the rows it was handed — the stored cells as the database holds them. */
118
+ var RowsDriver = /** @class */ (function () {
119
+ function RowsDriver(rows) {
120
+ this.rows = rows;
121
+ }
122
+ RowsDriver.prototype.getDbName = function () {
123
+ return 'test';
124
+ };
125
+ RowsDriver.prototype.createDbIfNotExists = function () {
126
+ return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
127
+ return [2 /*return*/];
128
+ }); });
129
+ };
130
+ RowsDriver.prototype.createDb = function () {
131
+ return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
132
+ return [2 /*return*/];
133
+ }); });
134
+ };
135
+ RowsDriver.prototype.dropDb = function () {
136
+ return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
137
+ return [2 /*return*/];
138
+ }); });
139
+ };
140
+ RowsDriver.prototype.getTableManager = function () {
141
+ throw new Error('not used by these tests');
142
+ };
143
+ RowsDriver.prototype.runQuery = function () {
144
+ return __awaiter(this, void 0, void 0, function () {
145
+ return __generator(this, function (_a) {
146
+ return [2 /*return*/, this.rows];
147
+ });
148
+ });
149
+ };
150
+ RowsDriver.prototype.runDml = function () {
151
+ return __awaiter(this, void 0, void 0, function () {
152
+ return __generator(this, function (_a) {
153
+ return [2 /*return*/, 0];
154
+ });
155
+ });
156
+ };
157
+ RowsDriver.prototype.runTransaction = function (fn) {
158
+ return __awaiter(this, void 0, void 0, function () {
159
+ return __generator(this, function (_a) {
160
+ switch (_a.label) {
161
+ case 0: return [4 /*yield*/, fn({ id: 'transaction' })];
162
+ case 1: return [2 /*return*/, _a.sent()];
163
+ }
164
+ });
165
+ });
166
+ };
167
+ RowsDriver.prototype.getOperationDeadlineMs = function () {
168
+ return 1000;
169
+ };
170
+ return RowsDriver;
171
+ }());
172
+ var dbOver = function (table, rows) {
173
+ return new Db_1.Db(new RowsDriver(rows), function () { return table; }, new TestTransactionContextFactory(), true);
174
+ };
175
+ var storedRow = function (id, cells) { return (__assign({ id: id, created: new Date(1700000000000), updated: new Date(1700000000000), title: "title ".concat(id), tag_list: '["a","b"]', settings: '{"theme":"dark"}', after: "after ".concat(id) }, cells)); };
176
+ /** The stored value no warning may ever carry — distinctive, so a leak is unmistakable. */
177
+ var LEGACY_WORD = 'legacyword7';
178
+ var objectCache = function () { return reflection_1.SourceRepository.get().objectCache; };
179
+ var originalWatchers;
180
+ beforeEach(function () {
181
+ var _a;
182
+ (_a = Record_1.RecordSerializer.legacyCellsWarned) === null || _a === void 0 ? void 0 : _a.clear();
183
+ });
184
+ // No reflection graph in a unit test: the watcher registry is empty by declaration.
185
+ beforeAll(function () {
186
+ originalWatchers = objectCache()['@proteinjs/db/TableWatcher'];
187
+ objectCache()['@proteinjs/db/TableWatcher'] = [];
188
+ TableWatcherRunner_1.TableWatcherRunner.tableWatcherMap = undefined;
189
+ });
190
+ afterAll(function () {
191
+ if (originalWatchers) {
192
+ objectCache()['@proteinjs/db/TableWatcher'] = originalWatchers;
193
+ }
194
+ else {
195
+ delete objectCache()['@proteinjs/db/TableWatcher'];
196
+ }
197
+ TableWatcherRunner_1.TableWatcherRunner.tableWatcherMap = undefined;
198
+ });
199
+ /** Every warning a serializer logs, as the logger received it. */
200
+ var warningsOf = function (serializer) {
201
+ var calls = [];
202
+ var logger = serializer.logger;
203
+ logger.warn = function () {
204
+ var args = [];
205
+ for (var _i = 0; _i < arguments.length; _i++) {
206
+ args[_i] = arguments[_i];
207
+ }
208
+ calls.push(args);
209
+ };
210
+ return calls;
211
+ };
212
+ describe('a stored cell a column cannot deserialize', function () {
213
+ it('a query over a row holding a legacy value resolves: the field is omitted, every other field lands', function () { return __awaiter(void 0, void 0, void 0, function () {
214
+ var rows, records;
215
+ return __generator(this, function (_a) {
216
+ switch (_a.label) {
217
+ case 0:
218
+ rows = [storedRow('r1', {}), storedRow('r2', { tag_list: LEGACY_WORD }), storedRow('r3', {})];
219
+ return [4 /*yield*/, dbOver(docTable, rows).query(docTable, {})];
220
+ case 1:
221
+ records = _a.sent();
222
+ expect(records.map(function (record) { return record.id; })).toEqual(['r1', 'r2', 'r3']);
223
+ expect(records[0].tags).toEqual(['a', 'b']);
224
+ expect(records[2].tags).toEqual(['a', 'b']);
225
+ expect(records[1]).not.toHaveProperty('tags');
226
+ expect(records[1]).toMatchObject({
227
+ id: 'r2',
228
+ title: 'title r2',
229
+ settings: { theme: 'dark' },
230
+ after: 'after r2',
231
+ });
232
+ return [2 /*return*/];
233
+ }
234
+ });
235
+ }); });
236
+ it('a get of the row answers the record, not a rejection', function () { return __awaiter(void 0, void 0, void 0, function () {
237
+ var rows, record;
238
+ return __generator(this, function (_a) {
239
+ switch (_a.label) {
240
+ case 0:
241
+ rows = [storedRow('r2', { settings: LEGACY_WORD })];
242
+ return [4 /*yield*/, dbOver(docTable, rows).get(docTable, { id: 'r2' })];
243
+ case 1:
244
+ record = _a.sent();
245
+ expect(record).toMatchObject({ id: 'r2', title: 'title r2', tags: ['a', 'b'], after: 'after r2' });
246
+ expect(record).not.toHaveProperty('settings');
247
+ return [2 /*return*/];
248
+ }
249
+ });
250
+ }); });
251
+ it('warns once per table and column per process, naming the table, the column and the first row — never the value', function () {
252
+ var serializer = new Record_1.RecordSerializer(docTable);
253
+ var warnings = warningsOf(serializer);
254
+ var rows = [
255
+ storedRow('r1', { tag_list: LEGACY_WORD }),
256
+ storedRow('r2', { tag_list: LEGACY_WORD }),
257
+ storedRow('r3', { settings: LEGACY_WORD }),
258
+ ];
259
+ var records = serializer.deserializeAll(rows);
260
+ expect(Array.isArray(records)).toBe(true);
261
+ expect(records.map(function (record) { return record.id; })).toEqual(['r1', 'r2', 'r3']);
262
+ expect(warnings).toHaveLength(2);
263
+ expect(warnings[0][0]).toMatchObject({
264
+ obj: { table: 'legacy_cell_doc', column: 'tag_list', id: 'r1', error: 'SyntaxError' },
265
+ });
266
+ expect(warnings[1][0]).toMatchObject({
267
+ obj: { table: 'legacy_cell_doc', column: 'settings', id: 'r3', error: 'SyntaxError' },
268
+ });
269
+ expect(JSON.stringify(warnings)).not.toContain(LEGACY_WORD);
270
+ });
271
+ it('a column whose deserialize answers with a rejecting promise is omitted the same way', function () { return __awaiter(void 0, void 0, void 0, function () {
272
+ var LaterColumn, LaterTable, laterTable, serializer, warnings, rows, records;
273
+ return __generator(this, function (_a) {
274
+ switch (_a.label) {
275
+ case 0:
276
+ LaterColumn = /** @class */ (function () {
277
+ function LaterColumn(name) {
278
+ this.name = name;
279
+ }
280
+ LaterColumn.prototype.deserialize = function (storedValue) {
281
+ return storedValue === -1 ? Promise.reject(new RangeError('unreadable')) : Promise.resolve(storedValue);
282
+ };
283
+ return LaterColumn;
284
+ }());
285
+ LaterTable = /** @class */ (function (_super) {
286
+ __extends(LaterTable, _super);
287
+ function LaterTable() {
288
+ var _this = _super !== null && _super.apply(this, arguments) || this;
289
+ _this.name = 'legacy_cell_later';
290
+ _this.columns = (0, Record_1.withRecordColumns)({
291
+ title: new Columns_1.StringColumn('title'),
292
+ later: new LaterColumn('later'),
293
+ after: new Columns_1.StringColumn('after'),
294
+ });
295
+ return _this;
296
+ }
297
+ return LaterTable;
298
+ }(Table_1.Table));
299
+ laterTable = new LaterTable();
300
+ serializer = new Record_1.RecordSerializer(laterTable);
301
+ warnings = warningsOf(serializer);
302
+ rows = [
303
+ { id: 'l1', title: 'one', later: 1, after: 'x' },
304
+ { id: 'l2', title: 'two', later: -1, after: 'y' },
305
+ ];
306
+ return [4 /*yield*/, serializer.deserializeAll(rows)];
307
+ case 1:
308
+ records = _a.sent();
309
+ expect(records[0]).toMatchObject({ id: 'l1', title: 'one', later: 1, after: 'x' });
310
+ expect(records[1]).toMatchObject({ id: 'l2', title: 'two', after: 'y' });
311
+ expect(records[1]).not.toHaveProperty('later');
312
+ expect(warnings).toHaveLength(1);
313
+ expect(warnings[0][0]).toMatchObject({
314
+ obj: { table: 'legacy_cell_later', column: 'later', id: 'l2', error: 'RangeError' },
315
+ });
316
+ return [2 /*return*/];
317
+ }
318
+ });
319
+ }); });
320
+ });
321
+ //# sourceMappingURL=LegacyCellHydration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LegacyCellHydration.test.js","sourceRoot":"","sources":["../../test/LegacyCellHydration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SyncRowHydration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncRowHydration.test.d.ts","sourceRoot":"","sources":["../../test/SyncRowHydration.test.ts"],"names":[],"mappings":""}