@proteinjs/db 1.54.0 → 1.54.2
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.js +1 -1
- package/dist/generated/test/index.js.map +1 -1
- package/dist/src/Columns.d.ts +12 -6
- package/dist/src/Columns.d.ts.map +1 -1
- package/dist/src/Columns.js +40 -65
- package/dist/src/Columns.js.map +1 -1
- package/dist/src/Db.d.ts.map +1 -1
- package/dist/src/Db.js +2 -5
- package/dist/src/Db.js.map +1 -1
- package/dist/src/Record.d.ts +19 -0
- package/dist/src/Record.d.ts.map +1 -1
- package/dist/src/Record.js +127 -45
- package/dist/src/Record.js.map +1 -1
- package/dist/src/Table.d.ts +18 -1
- package/dist/src/Table.d.ts.map +1 -1
- package/dist/src/encryption/EncryptionRecordHooks.d.ts +9 -4
- package/dist/src/encryption/EncryptionRecordHooks.d.ts.map +1 -1
- package/dist/src/encryption/EncryptionRecordHooks.js +65 -42
- package/dist/src/encryption/EncryptionRecordHooks.js.map +1 -1
- package/dist/src/services/TransactionRunnerService.d.ts +3 -1
- package/dist/src/services/TransactionRunnerService.d.ts.map +1 -1
- package/dist/src/transaction/TransactionRunner.d.ts +13 -5
- package/dist/src/transaction/TransactionRunner.d.ts.map +1 -1
- package/dist/src/transaction/TransactionRunner.js +48 -12
- package/dist/src/transaction/TransactionRunner.js.map +1 -1
- package/dist/test/DateTimeFieldReadOnFirstRead.test.d.ts +2 -0
- package/dist/test/DateTimeFieldReadOnFirstRead.test.d.ts.map +1 -0
- package/dist/test/DateTimeFieldReadOnFirstRead.test.js +238 -0
- package/dist/test/DateTimeFieldReadOnFirstRead.test.js.map +1 -0
- package/dist/test/HydrationBenchmark.test.d.ts +2 -0
- package/dist/test/HydrationBenchmark.test.d.ts.map +1 -0
- package/dist/test/HydrationBenchmark.test.js +299 -0
- package/dist/test/HydrationBenchmark.test.js.map +1 -0
- package/dist/test/SyncRowHydration.test.d.ts +2 -0
- package/dist/test/SyncRowHydration.test.d.ts.map +1 -0
- package/dist/test/SyncRowHydration.test.js +344 -0
- package/dist/test/SyncRowHydration.test.js.map +1 -0
- package/generated/index.ts +1 -1
- package/generated/test/index.ts +1 -1
- package/package.json +2 -2
- package/src/Columns.ts +14 -7
- package/src/Db.ts +3 -4
- package/src/Record.ts +151 -17
- package/src/Table.ts +21 -1
- package/src/encryption/EncryptionRecordHooks.ts +48 -17
- package/src/services/TransactionRunnerService.ts +3 -1
- package/src/transaction/TransactionRunner.ts +53 -13
- package/test/DateTimeFieldReadOnFirstRead.test.ts +162 -0
- package/test/HydrationBenchmark.test.ts +209 -0
- package/test/SyncRowHydration.test.ts +249 -0
|
@@ -38,8 +38,13 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.TransactionRunner = exports.getTransactionRunner = void 0;
|
|
40
40
|
var logger_1 = require("@proteinjs/logger");
|
|
41
|
+
var util_1 = require("@proteinjs/util");
|
|
41
42
|
var Db_1 = require("../Db");
|
|
42
43
|
var Table_1 = require("../Table");
|
|
44
|
+
// After Table: Columns ↔ Table ↔ Record load in a cycle that resolves only when Record is entered
|
|
45
|
+
// before Columns (Record constructs its columns at module load); a module that enters Columns
|
|
46
|
+
// first — as this one would when it is the first module loaded — leaves those constructors undefined.
|
|
47
|
+
var Columns_1 = require("../Columns");
|
|
43
48
|
var TransactionContextFactory_1 = require("./TransactionContextFactory");
|
|
44
49
|
var TransactionRunnerService_1 = require("../services/TransactionRunnerService");
|
|
45
50
|
var getTransactionRunner = function () {
|
|
@@ -229,13 +234,14 @@ var TransactionRunner = /** @class */ (function () {
|
|
|
229
234
|
});
|
|
230
235
|
};
|
|
231
236
|
/**
|
|
232
|
-
* The rows the operations reference, by id → the table(s) they are read from
|
|
233
|
-
*
|
|
234
|
-
*
|
|
235
|
-
*
|
|
237
|
+
* The rows the operations reference, by id → the table(s) they are read from. An insert
|
|
238
|
+
* references every row its table's reference columns name (`rowsTheInsertReferences`) — the
|
|
239
|
+
* permission source a row attaches to is one of these, a row named through any other reference
|
|
240
|
+
* column another. An update / preserving update / membership update / delete references the row
|
|
241
|
+
* it targets. The rows the operations insert themselves are not dependencies.
|
|
236
242
|
*/
|
|
237
243
|
TransactionRunner.rowsTheOperationsReference = function (ops) {
|
|
238
|
-
var _a, _b
|
|
244
|
+
var _a, _b;
|
|
239
245
|
var inserted = [];
|
|
240
246
|
var referenced = new Map();
|
|
241
247
|
var reference = function (table, id) {
|
|
@@ -260,19 +266,18 @@ var TransactionRunner = /** @class */ (function () {
|
|
|
260
266
|
if (record === null || record === void 0 ? void 0 : record.id) {
|
|
261
267
|
inserted.push(record.id);
|
|
262
268
|
}
|
|
263
|
-
var
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
reference(sourceTableName ? TransactionRunner.tableNamed(sourceTableName, table) : table, source._id);
|
|
269
|
+
for (var _c = 0, _d = TransactionRunner.rowsTheInsertReferences(table, record); _c < _d.length; _c++) {
|
|
270
|
+
var row = _d[_c];
|
|
271
|
+
reference(TransactionRunner.tableNamed(row.tableName, table), row.id);
|
|
267
272
|
}
|
|
268
273
|
}
|
|
269
274
|
else if (op.name === 'update' || op.name === 'updatePreserving') {
|
|
270
275
|
var record = args[1];
|
|
271
276
|
var query = args[2];
|
|
272
|
-
reference(table, (
|
|
277
|
+
reference(table, (_a = record === null || record === void 0 ? void 0 : record.id) !== null && _a !== void 0 ? _a : (query && typeof query === 'object' && 'id' in query ? query.id : undefined));
|
|
273
278
|
}
|
|
274
279
|
else if (op.name === 'updateArrayMembership') {
|
|
275
|
-
reference(table, (
|
|
280
|
+
reference(table, (_b = args[1]) === null || _b === void 0 ? void 0 : _b.recordId);
|
|
276
281
|
}
|
|
277
282
|
else if (op.name === 'delete') {
|
|
278
283
|
var query = args[1];
|
|
@@ -282,7 +287,38 @@ var TransactionRunner = /** @class */ (function () {
|
|
|
282
287
|
inserted.forEach(function (id) { return referenced.delete(id); });
|
|
283
288
|
return referenced;
|
|
284
289
|
};
|
|
285
|
-
/**
|
|
290
|
+
/**
|
|
291
|
+
* The rows an inserted record names through its table's reference columns: for each column
|
|
292
|
+
* whose value carries an id, that id and the table it lives in — a `ReferenceColumn`'s declared
|
|
293
|
+
* table; for a `DynamicReferenceColumn`, the table its paired table-name column carries on the
|
|
294
|
+
* record (a client's queued insert ran the column's default), else the reference's own.
|
|
295
|
+
*/
|
|
296
|
+
TransactionRunner.rowsTheInsertReferences = function (table, record) {
|
|
297
|
+
if (!table || !record) {
|
|
298
|
+
return [];
|
|
299
|
+
}
|
|
300
|
+
var rows = [];
|
|
301
|
+
for (var _i = 0, _a = Object.entries(table.columns); _i < _a.length; _i++) {
|
|
302
|
+
var _b = _a[_i], field = _b[0], column = _b[1];
|
|
303
|
+
var value = record[field];
|
|
304
|
+
if (!value || typeof value._id !== 'string') {
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
var tableName = void 0;
|
|
308
|
+
if ((0, util_1.isInstanceOf)(column, Columns_1.ReferenceColumn)) {
|
|
309
|
+
tableName = column.referenceTable;
|
|
310
|
+
}
|
|
311
|
+
else if ((0, util_1.isInstanceOf)(column, Columns_1.DynamicReferenceColumn)) {
|
|
312
|
+
var tableNameField = (0, Table_1.getColumnPropertyName)(table, column.dynamicRefTableColName);
|
|
313
|
+
tableName = (tableNameField && record[tableNameField]) || value._table;
|
|
314
|
+
}
|
|
315
|
+
if (typeof tableName === 'string' && tableName) {
|
|
316
|
+
rows.push({ id: value._id, tableName: tableName });
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return rows;
|
|
320
|
+
};
|
|
321
|
+
/** The table a referenced row lives in: the insert's own table when it names the same one. */
|
|
286
322
|
TransactionRunner.tableNamed = function (tableName, inserting) {
|
|
287
323
|
return inserting && inserting.name === tableName ? inserting : (0, Table_1.tableByName)(tableName);
|
|
288
324
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionRunner.js","sourceRoot":"","sources":["../../../src/transaction/TransactionRunner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA2C;AAC3C,4BAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"TransactionRunner.js","sourceRoot":"","sources":["../../../src/transaction/TransactionRunner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA2C;AAC3C,wCAA+C;AAC/C,4BAAkC;AAClC,kCAA6E;AAC7E,kGAAkG;AAClG,8FAA8F;AAC9F,sGAAsG;AACtG,sCAAqE;AACrE,yEAAkF;AAClF,iFAI8C;AAGvC,IAAM,oBAAoB,GAAG;IAClC,OAAA,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAE,IAAA,sDAA2B,GAAwB;AAA5G,CAA4G,CAAC;AADlG,QAAA,oBAAoB,wBAC8E;AAE/G;;;;;;;;;;;;;;GAcG;AACH;IAAA;QACS,oBAAe,GAAG;YACvB,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI;aACf;SACF,CAAC;QAKM,WAAM,GAAG,IAAI,eAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IA8L/D,CAAC;IA5LO,+BAAG,GAAT,UAAU,GAAqB,EAAE,OAA+B;;;;;;;;wBACxD,EAAE,GAAG,IAAA,UAAK,GAAE,CAAC;wBACb,SAAS,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAAI,EAAE,CAAC;6BACvC,CAAA,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA,EAApB,wBAAoB;wBACtB,qBAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,EAAA;;wBAApC,SAAoC,CAAC;;4BAGvC,qBAAM,EAAE,CAAC,cAAc,CAAC;;;;;8CACF,EAAH,WAAG;;;6CAAH,CAAA,iBAAG,CAAA;wCAAT,EAAE;wCACX,qBAAO,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAX,EAAE,EAA0B,EAAE,CAAC,IAAI,GAAC;;wCAA3C,SAA2C,CAAC;;;wCAD7B,IAAG,CAAA;;;;;6BAGrB,CAAC,EAAA;;wBAJF,SAIE,CAAC;;;;;KACJ;IAED;;;;;;;;;;;;;;OAcG;IACW,qCAAS,GAAvB,UAAwB,GAAqB,EAAE,SAAmB;;;;;;;wBAChE,IAAI,MAAA,IAAA,+DAAmC,GAAE,0CAAE,qBAAqB,GAAG,kBAAkB,EAAE;4BACrF,MAAM,IAAI,KAAK,CACb,+KAA0K,CAC3K,CAAC;yBACH;wBAEK,UAAU,GAAG,iBAAiB,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;wBAC/D,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,UAAC,EAAE,IAAK,OAAA,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAnB,CAAmB,CAAC,CAAC;wBAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;4BACtB,MAAM,IAAI,KAAK,CACb,oFAA6E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mCAA2B,CAC3H,CAAC;yBACH;wBAEK,EAAE,GAAG,IAAA,UAAK,GAAE,CAAC;wBACb,OAAO,GAAG,OAAE,CAAC,kBAAkB,EAAE,CAAC,sBAAsB,EAAE,CAAC;wBAC3D,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBACrB,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;wBAE/B,OAAO,GAA2C,SAAS;6BAC5D,MAAM,CAAC,UAAC,EAAE,EAAE,KAAK,IAAK,OAAA,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,KAAK,EAA/B,CAA+B,CAAC;6BACtD,GAAG,CAAC,UAAC,EAAE,IAAK,OAAA,CAAC,EAAE,EAAE,IAAA,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,KAAK,EAAE,EAAE,CAAC,EAA7C,CAA6C,CAAC,CAAC;wBAC1D,QAAQ,GAAG,iBAAiB,CAAC,sBAAsB,CAAC;wBACpD,KAAK,GAAG,CAAC,CAAC;;;;;;wCAEZ,KAAK,IAAI,CAAC,CAAC;8CACc,EAAP,mBAAO;;;6CAAP,CAAA,qBAAO,CAAA;wCAAd,GAAG;wCACN,WAAW,GAAiB,EAAE,CAAC;8CACP,EAAV,KAAA,GAAG,CAAC,MAAM;;;6CAAV,CAAA,cAAU,CAAA;wCAAnB,KAAK;wCACR,qBAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAS,CAAC,EAAA;;wCAAhD,IAAI,CAAC,CAAC,SAA0C,CAAC,EAAE;4CACjD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yCACzB;;;wCAHiB,IAAU,CAAA;;;wCAK9B,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC;;;wCAPT,IAAO,CAAA;;;wCASzB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAArB,CAAqB,CAAC,CAAC;wCACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;4CAClB,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;4CAGhC,IAAI,GAAG,EAAE,OAAO,EAAE,uBAAuB,EAAE,GAAG,EAAE,EAAE,SAAS,WAAA,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,EAAE,CAAC;4CACvF,IAAI,KAAK,GAAG,CAAC,EAAE;gDACb,OAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;6CACxB;iDAAM;gDACL,OAAK,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;6CACzB;;yCAEF;wCAEK,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wCACvB,IAAI,GAAG,IAAI,QAAQ,EAAE;4CACb,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,UAAG,KAAK,CAAC,IAAI,cAAI,GAAG,CAAC,EAAE,CAAE,EAAzB,CAAyB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAA/D,CAA+D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4CAChH,OAAK,MAAM,CAAC,IAAI,CAAC;gDACf,OAAO,EAAE,gEAA2D;gDACpE,GAAG,EAAE,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,EAAE,KAAK,OAAA,EAAE;6CACzD,CAAC,CAAC;4CACH,MAAM,IAAI,KAAK,CACb,oCAA6B,OAAO,qGAA2F,MAAM,wFAAgF,CACtN,CAAC;yCACH;wCACD,qBAAM,IAAI,OAAO,CAAC,UAAC,OAAO,IAAK,OAAA,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAAC,CAAC,EAAvD,CAAuD,CAAC,EAAA;;wCAAvF,SAAuF,CAAC;wCACxF,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;;;;;;;;;;;;;;;;;;KAE7E;IAED;;;;;;OAMG;IACY,4CAA0B,GAAzC,UAA0C,GAAqB;;QAC7D,IAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAM,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;QACnD,IAAM,SAAS,GAAG,UAAC,KAA6B,EAAE,EAAW;YAC3D,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;gBACpC,OAAO;aACR;YACD,IAAI,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,GAAG,EAAE,CAAC;gBACZ,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;aAC5B;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;gBAChC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpB;QACH,CAAC,CAAC;QAEF,KAAiB,UAAG,EAAH,WAAG,EAAH,iBAAG,EAAH,IAAG,EAAE;YAAjB,IAAM,EAAE,YAAA;YACX,IAAM,IAAI,GAAG,EAAE,CAAC,IAAiB,CAAC;YAClC,IAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAA2B,CAAC;YAChD,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACxB,IAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAgC,CAAC;gBACtD,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,EAAE;oBACd,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;iBAC1B;gBACD,KAAkB,UAAwD,EAAxD,KAAA,iBAAiB,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAxD,cAAwD,EAAxD,IAAwD,EAAE;oBAAvE,IAAM,GAAG,SAAA;oBACZ,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;iBACvE;aACF;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,kBAAkB,EAAE;gBACjE,IAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAgC,CAAC;gBACtD,IAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAiC,CAAC;gBACtD,SAAS,CAAC,KAAK,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,mCAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;aAC9G;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,uBAAuB,EAAE;gBAC9C,SAAS,CAAC,KAAK,EAAE,MAAC,IAAI,CAAC,CAAC,CAAuC,0CAAE,QAAQ,CAAC,CAAC;aAC5E;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC/B,IAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAiC,CAAC;gBACtD,SAAS,CAAC,KAAK,EAAE,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAC7E;SACF;QAED,QAAQ,CAAC,OAAO,CAAC,UAAC,EAAE,IAAK,OAAA,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAArB,CAAqB,CAAC,CAAC;QAChD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACY,yCAAuB,GAAtC,UACE,KAA6B,EAC7B,MAAgD;QAEhD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;YACrB,OAAO,EAAE,CAAC;SACX;QAED,IAAM,IAAI,GAAwC,EAAE,CAAC;QACrD,KAA8B,UAAsE,EAAtE,KAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAgD,CAAC,EAAtE,cAAsE,EAAtE,IAAsE,EAAE;YAA3F,IAAA,WAAe,EAAd,KAAK,QAAA,EAAE,MAAM,QAAA;YACvB,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAA2D,CAAC;YACtF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC3C,SAAS;aACV;YACD,IAAI,SAAS,SAAS,CAAC;YACvB,IAAI,IAAA,mBAAY,EAAC,MAAM,EAAE,yBAAe,CAAC,EAAE;gBACzC,SAAS,GAAI,MAA+B,CAAC,cAAc,CAAC;aAC7D;iBAAM,IAAI,IAAA,mBAAY,EAAC,MAAM,EAAE,gCAAsB,CAAC,EAAE;gBACvD,IAAM,cAAc,GAAG,IAAA,6BAAqB,EAC1C,KAAK,EACJ,MAAsC,CAAC,sBAAsB,CAC/D,CAAC;gBACF,SAAS,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;aACxE;YACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,EAAE;gBAC9C,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;aACzC;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8FAA8F;IAC/E,4BAAU,GAAzB,UAA0B,SAAiB,EAAE,SAAiC;QAC5E,OAAO,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,mBAAW,EAAC,SAAS,CAAC,CAAC;IACxF,CAAC;IAhMuB,wCAAsB,GAAG,EAAE,AAAL,CAAM;IAC5B,sCAAoB,GAAG,GAAG,AAAN,CAAO;IAgMrD,wBAAC;CAAA,AAxMD,IAwMC;AAxMY,8CAAiB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateTimeFieldReadOnFirstRead.test.d.ts","sourceRoot":"","sources":["../../test/DateTimeFieldReadOnFirstRead.test.ts"],"names":[],"mappings":"AAcA,OAAO,cAAc,CAAC"}
|
|
@@ -0,0 +1,238 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
65
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
66
|
+
};
|
|
67
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
68
|
+
/**
|
|
69
|
+
* A DateTime column's moment is built on the field's FIRST READ, not at hydration
|
|
70
|
+
* (`Column.deserializeOnFirstRead`): a row carries many such columns and most are never read, and
|
|
71
|
+
* every moment built at hydration was event-loop time under a large read. What a reader sees is
|
|
72
|
+
* unchanged — an own, enumerable field holding a moment at the stored instant, the same instance on
|
|
73
|
+
* every read, replaceable by a write, present to Object.keys, spread and JSON alike.
|
|
74
|
+
*/
|
|
75
|
+
jest.mock('moment', function () {
|
|
76
|
+
var actual = jest.requireActual('moment');
|
|
77
|
+
var factory = jest.fn(function () {
|
|
78
|
+
var args = [];
|
|
79
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
80
|
+
args[_i] = arguments[_i];
|
|
81
|
+
}
|
|
82
|
+
return actual.apply(void 0, args);
|
|
83
|
+
});
|
|
84
|
+
Object.assign(factory, actual);
|
|
85
|
+
return factory;
|
|
86
|
+
});
|
|
87
|
+
require("../src/Table");
|
|
88
|
+
var moment_1 = __importDefault(require("moment"));
|
|
89
|
+
var Table_1 = require("../src/Table");
|
|
90
|
+
var Record_1 = require("../src/Record");
|
|
91
|
+
var Columns_1 = require("../src/Columns");
|
|
92
|
+
var momentFactory = moment_1.default;
|
|
93
|
+
var StampedTable = /** @class */ (function (_super) {
|
|
94
|
+
__extends(StampedTable, _super);
|
|
95
|
+
function StampedTable() {
|
|
96
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
97
|
+
_this.name = 'stamped';
|
|
98
|
+
_this.columns = (0, Record_1.withRecordColumns)({
|
|
99
|
+
title: new Columns_1.StringColumn('title'),
|
|
100
|
+
t0: new Columns_1.DateTimeColumn('t0'),
|
|
101
|
+
t1: new Columns_1.DateTimeColumn('t1'),
|
|
102
|
+
t2: new Columns_1.DateTimeColumn('t2'),
|
|
103
|
+
t3: new Columns_1.DateTimeColumn('t3'),
|
|
104
|
+
t4: new Columns_1.DateTimeColumn('t4'),
|
|
105
|
+
t5: new Columns_1.DateTimeColumn('t5'),
|
|
106
|
+
t6: new Columns_1.DateTimeColumn('t6'),
|
|
107
|
+
t7: new Columns_1.DateTimeColumn('t7'),
|
|
108
|
+
t8: new Columns_1.DateTimeColumn('t8'),
|
|
109
|
+
t9: new Columns_1.DateTimeColumn('t9'),
|
|
110
|
+
});
|
|
111
|
+
return _this;
|
|
112
|
+
}
|
|
113
|
+
return StampedTable;
|
|
114
|
+
}(Table_1.Table));
|
|
115
|
+
var stampedTable = new StampedTable();
|
|
116
|
+
/** What a driver hands the column: a Date (Spanner's is a Date subclass) — the instant is what the column takes. */
|
|
117
|
+
var stampsOf = function (row) { return Array.from({ length: 10 }, function (_, i) { return new Date(1700000000000 + row * 100 + i); }); };
|
|
118
|
+
var storedRows = function (count) {
|
|
119
|
+
return Array.from({ length: count }, function (_, row) {
|
|
120
|
+
var stamps = stampsOf(row);
|
|
121
|
+
var stored = {
|
|
122
|
+
id: "row-".concat(row),
|
|
123
|
+
created: new Date(1600000000000 + row),
|
|
124
|
+
updated: new Date(1600000000000 + row),
|
|
125
|
+
title: "title ".concat(row),
|
|
126
|
+
};
|
|
127
|
+
stamps.forEach(function (stamp, i) {
|
|
128
|
+
stored["t".concat(i)] = i === 9 ? null : stamp;
|
|
129
|
+
});
|
|
130
|
+
return stored;
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
/** Through the per-row door; the result-set door shares the hydrator (SyncRowHydration proves its one pass). */
|
|
134
|
+
var hydrate = function (rows) {
|
|
135
|
+
var serializer = new Record_1.RecordSerializer(stampedTable);
|
|
136
|
+
return Promise.all(rows.map(function (row) { return serializer.deserialize(row); }));
|
|
137
|
+
};
|
|
138
|
+
describe('a DateTime field builds its moment on the first read', function () {
|
|
139
|
+
beforeEach(function () {
|
|
140
|
+
momentFactory.mockClear();
|
|
141
|
+
});
|
|
142
|
+
it('hydrating rows with ten DateTime columns builds no moment', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
143
|
+
var records;
|
|
144
|
+
return __generator(this, function (_a) {
|
|
145
|
+
switch (_a.label) {
|
|
146
|
+
case 0: return [4 /*yield*/, hydrate(storedRows(50))];
|
|
147
|
+
case 1:
|
|
148
|
+
records = _a.sent();
|
|
149
|
+
expect(records).toHaveLength(50);
|
|
150
|
+
expect(momentFactory).not.toHaveBeenCalled();
|
|
151
|
+
return [2 /*return*/];
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}); });
|
|
155
|
+
it('the first read builds the moment at the stored instant, once; every read after returns that instance', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
156
|
+
var record, stamps, first;
|
|
157
|
+
return __generator(this, function (_a) {
|
|
158
|
+
switch (_a.label) {
|
|
159
|
+
case 0: return [4 /*yield*/, hydrate(storedRows(1))];
|
|
160
|
+
case 1:
|
|
161
|
+
record = (_a.sent())[0];
|
|
162
|
+
stamps = stampsOf(0);
|
|
163
|
+
first = record.t3;
|
|
164
|
+
expect(moment_1.default.isMoment(first)).toBe(true);
|
|
165
|
+
expect(first.valueOf()).toBe(stamps[3].getTime());
|
|
166
|
+
expect(momentFactory).toHaveBeenCalledTimes(1);
|
|
167
|
+
expect(record.t3).toBe(first);
|
|
168
|
+
expect(momentFactory).toHaveBeenCalledTimes(1);
|
|
169
|
+
expect(record.created.valueOf()).toBe(1600000000000);
|
|
170
|
+
expect(momentFactory).toHaveBeenCalledTimes(2);
|
|
171
|
+
return [2 /*return*/];
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}); });
|
|
175
|
+
it('a stored null reads null; a write replaces the field', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
176
|
+
var record, assigned;
|
|
177
|
+
return __generator(this, function (_a) {
|
|
178
|
+
switch (_a.label) {
|
|
179
|
+
case 0: return [4 /*yield*/, hydrate(storedRows(1))];
|
|
180
|
+
case 1:
|
|
181
|
+
record = (_a.sent())[0];
|
|
182
|
+
expect(record.t9).toBeNull();
|
|
183
|
+
expect(momentFactory).not.toHaveBeenCalled();
|
|
184
|
+
assigned = (0, moment_1.default)(0);
|
|
185
|
+
record.t4 = assigned;
|
|
186
|
+
expect(record.t4).toBe(assigned);
|
|
187
|
+
expect(momentFactory).toHaveBeenCalledTimes(1);
|
|
188
|
+
return [2 /*return*/];
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
}); });
|
|
192
|
+
it('the record keeps its shape: own enumerable fields in column order, under spread and JSON alike', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
193
|
+
var record, stamps, copy, json;
|
|
194
|
+
return __generator(this, function (_a) {
|
|
195
|
+
switch (_a.label) {
|
|
196
|
+
case 0: return [4 /*yield*/, hydrate(storedRows(1))];
|
|
197
|
+
case 1:
|
|
198
|
+
record = (_a.sent())[0];
|
|
199
|
+
stamps = stampsOf(0);
|
|
200
|
+
expect(Object.keys(record)).toEqual([
|
|
201
|
+
'id',
|
|
202
|
+
'created',
|
|
203
|
+
'updated',
|
|
204
|
+
'title',
|
|
205
|
+
't0',
|
|
206
|
+
't1',
|
|
207
|
+
't2',
|
|
208
|
+
't3',
|
|
209
|
+
't4',
|
|
210
|
+
't5',
|
|
211
|
+
't6',
|
|
212
|
+
't7',
|
|
213
|
+
't8',
|
|
214
|
+
't9',
|
|
215
|
+
]);
|
|
216
|
+
expect(Object.prototype.hasOwnProperty.call(record, 't5')).toBe(true);
|
|
217
|
+
expect(momentFactory).not.toHaveBeenCalled();
|
|
218
|
+
copy = __assign({}, record);
|
|
219
|
+
expect(moment_1.default.isMoment(copy.t5)).toBe(true);
|
|
220
|
+
expect(copy.t5).toBe(record.t5);
|
|
221
|
+
json = JSON.parse(JSON.stringify(record));
|
|
222
|
+
expect(json.t7).toBe(stamps[7].toISOString());
|
|
223
|
+
expect(json.t9).toBeNull();
|
|
224
|
+
expect(json.title).toBe('title 0');
|
|
225
|
+
return [2 /*return*/];
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
}); });
|
|
229
|
+
it('a column read directly still answers the moment itself', function () {
|
|
230
|
+
var column = stampedTable.columns.t0;
|
|
231
|
+
var stamp = new Date(1700000000123);
|
|
232
|
+
var value = column.deserialize(stamp);
|
|
233
|
+
expect(moment_1.default.isMoment(value)).toBe(true);
|
|
234
|
+
expect(value.valueOf()).toBe(1700000000123);
|
|
235
|
+
expect(column.deserialize(null)).toBeNull();
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
//# sourceMappingURL=DateTimeFieldReadOnFirstRead.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateTimeFieldReadOnFirstRead.test.js","sourceRoot":"","sources":["../../test/DateTimeFieldReadOnFirstRead.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HydrationBenchmark.test.d.ts","sourceRoot":"","sources":["../../test/HydrationBenchmark.test.ts"],"names":[],"mappings":""}
|