@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
|
@@ -47,15 +47,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
49
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
-
exports.
|
|
50
|
+
exports.SourceRecordSyncRunner = void 0;
|
|
51
51
|
var logger_1 = require("@proteinjs/logger");
|
|
52
52
|
var db_query_1 = require("@proteinjs/db-query");
|
|
53
53
|
var SourceRecord_1 = require("./SourceRecord");
|
|
54
54
|
var Db_1 = require("../Db");
|
|
55
55
|
var SourceRecordRepo_1 = require("./SourceRecordRepo");
|
|
56
56
|
var Record_1 = require("../Record");
|
|
57
|
-
var
|
|
58
|
-
function
|
|
57
|
+
var SourceRecordSyncRunner = /** @class */ (function () {
|
|
58
|
+
function SourceRecordSyncRunner() {
|
|
59
59
|
this.logger = new logger_1.Logger({ name: this.constructor.name });
|
|
60
60
|
/** Memo of resolved package versions — one resolution (and at most one warning) per source. */
|
|
61
61
|
this.sourceVersions = new Map();
|
|
@@ -100,7 +100,7 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
100
100
|
* {@link MigrationRunner.runPreSchemaSyncMigrations}); the later full pass re-reconciles the
|
|
101
101
|
* same rows idempotently under the same ownership model.
|
|
102
102
|
*/
|
|
103
|
-
|
|
103
|
+
SourceRecordSyncRunner.prototype.load = function (onlyTable) {
|
|
104
104
|
var _a, _b;
|
|
105
105
|
return __awaiter(this, void 0, void 0, function () {
|
|
106
106
|
var _c, tables, buildSources, db, summary, _loop_1, this_1, _d, _e, _f, _i, tableName;
|
|
@@ -304,7 +304,7 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
304
304
|
* differ (idempotent boots), through `Db.update` so table watchers observe each write.
|
|
305
305
|
* See {@link load} for the ownership model.
|
|
306
306
|
*/
|
|
307
|
-
|
|
307
|
+
SourceRecordSyncRunner.prototype.reconcileRemoved = function (db, table, keyProperty, buildSources, allDeclaredKeys) {
|
|
308
308
|
var _a;
|
|
309
309
|
return __awaiter(this, void 0, void 0, function () {
|
|
310
310
|
var policy, qb, candidates, stampedNewer, removedRecords, skippedNewer, deleteQb, removedUpdateCount, _i, removedRecords_1, removedRecord;
|
|
@@ -405,7 +405,7 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
405
405
|
* seam, not rewriting the semantics. The contract lives on
|
|
406
406
|
* {@link SourceRecordOptions.onSourceRemoved}.
|
|
407
407
|
*/
|
|
408
|
-
|
|
408
|
+
SourceRecordSyncRunner.prototype.softRemovedRecordHoldingDeclaredId = function (db, table, keyProperty, declaredId, source, allDeclaredKeys) {
|
|
409
409
|
return __awaiter(this, void 0, void 0, function () {
|
|
410
410
|
var policy, holder;
|
|
411
411
|
return __generator(this, function (_a) {
|
|
@@ -436,7 +436,7 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
436
436
|
* on. Tables that keep removed rows (`onSourceRemoved: 'keep'`) opted out of removal
|
|
437
437
|
* semantics altogether, so there is nothing to explain there.
|
|
438
438
|
*/
|
|
439
|
-
|
|
439
|
+
SourceRecordSyncRunner.prototype.countUnowned = function (db, table, keyProperty) {
|
|
440
440
|
var _a;
|
|
441
441
|
return __awaiter(this, void 0, void 0, function () {
|
|
442
442
|
var qb, unowned;
|
|
@@ -469,7 +469,7 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
469
469
|
* column or a single-column unique index in `Table.indexes`), present on every declaration, and
|
|
470
470
|
* unambiguous across declarations — each violation fails boot loudly by name.
|
|
471
471
|
*/
|
|
472
|
-
|
|
472
|
+
SourceRecordSyncRunner.prototype.validateSyncKey = function (table, records) {
|
|
473
473
|
var _a, _b, _c;
|
|
474
474
|
var naturalKey = table.sourceRecordOptions.naturalKey;
|
|
475
475
|
if (!naturalKey) {
|
|
@@ -521,7 +521,7 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
521
521
|
* A row with NO stamp (written before versions existed, or by a build that could not resolve
|
|
522
522
|
* its version) still gets one — once — so version ordering can protect it from then on.
|
|
523
523
|
*/
|
|
524
|
-
|
|
524
|
+
SourceRecordSyncRunner.prototype.hasChanges = function (table, sourceRecord, existingRecord) {
|
|
525
525
|
var _a;
|
|
526
526
|
return __awaiter(this, void 0, void 0, function () {
|
|
527
527
|
var serializer, serializedSource, serializedExisting, versionStampColumn, columnName, sourceValue, existingValue;
|
|
@@ -558,7 +558,7 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
558
558
|
* Every source-record table in this build with the records declared for it, plus the set of
|
|
559
559
|
* packages that declare ANY source record in this build — the packages this boot speaks for.
|
|
560
560
|
*/
|
|
561
|
-
|
|
561
|
+
SourceRecordSyncRunner.prototype.getDeclarations = function () {
|
|
562
562
|
return __awaiter(this, void 0, void 0, function () {
|
|
563
563
|
var tables, _i, _a, table, buildSources, _b, _c, _d, source, qualifiedName, name_2, loader;
|
|
564
564
|
return __generator(this, function (_e) {
|
|
@@ -587,13 +587,13 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
587
587
|
* For object-valued fields (e.g. a `JsonColumn` blob), source is treated as
|
|
588
588
|
* fully authoritative: any structural drift — extra keys in existing, missing
|
|
589
589
|
* keys in existing, or value differences anywhere in the subtree — produces
|
|
590
|
-
* a mismatch. Comparison goes through {@link
|
|
590
|
+
* a mismatch. Comparison goes through {@link SourceRecordSyncRunner.canonicalStringify}
|
|
591
591
|
* so that key ordering (which backing stores may canonicalize alphabetically)
|
|
592
592
|
* does not cause false positives.
|
|
593
593
|
*
|
|
594
594
|
* For arrays, order and length must match exactly.
|
|
595
595
|
*/
|
|
596
|
-
|
|
596
|
+
SourceRecordSyncRunner.prototype.findMismatchPath = function (source, existing, path) {
|
|
597
597
|
if (source === existing) {
|
|
598
598
|
return null;
|
|
599
599
|
}
|
|
@@ -648,7 +648,7 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
648
648
|
* Arrays preserve order (order is semantic for arrays); only object keys
|
|
649
649
|
* are sorted.
|
|
650
650
|
*/
|
|
651
|
-
|
|
651
|
+
SourceRecordSyncRunner.prototype.canonicalStringify = function (value) {
|
|
652
652
|
var _this = this;
|
|
653
653
|
if (value === null || typeof value !== 'object') {
|
|
654
654
|
return JSON.stringify(value);
|
|
@@ -668,7 +668,7 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
668
668
|
return '{' + keys.map(function (k) { return JSON.stringify(k) + ':' + _this.canonicalStringify(obj[k]); }).join(',') + '}';
|
|
669
669
|
};
|
|
670
670
|
/** Memoized {@link resolveSourceVersion} — one resolution (and at most one warning) per source. */
|
|
671
|
-
|
|
671
|
+
SourceRecordSyncRunner.prototype.sourceVersion = function (source) {
|
|
672
672
|
if (!this.sourceVersions.has(source)) {
|
|
673
673
|
this.sourceVersions.set(source, this.resolveSourceVersion(source));
|
|
674
674
|
}
|
|
@@ -678,16 +678,22 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
678
678
|
* The declaring package's version, read from its own package.json at runtime. Resolution runs
|
|
679
679
|
* from the process cwd — the booting server's package, the one dependency tree every declaring
|
|
680
680
|
* package is reachable from (`@proteinjs/db` itself does not depend on the packages that
|
|
681
|
-
* declare records, so module-relative resolution could never find them).
|
|
682
|
-
* is resolved (honoring exports maps, where `<pkg>/package.json` is usually not requireable),
|
|
683
|
-
* then the nearest package.json whose `name` matches is read walking up from it.
|
|
681
|
+
* declare records, so module-relative resolution could never find them).
|
|
684
682
|
*
|
|
685
|
-
*
|
|
683
|
+
* Two roads, in order:
|
|
684
|
+
* 1. The booting package itself: `<cwd>/package.json`, when its `name` is `source`. A lookup by
|
|
685
|
+
* name from cwd searches cwd's node_modules chain, which never contains the package cwd IS,
|
|
686
|
+
* so without this read the server's own records would sync unversioned.
|
|
687
|
+
* 2. Any other package: its entry is resolved from cwd (honoring exports maps, where
|
|
688
|
+
* `<pkg>/package.json` is usually not requireable), then the nearest package.json whose
|
|
689
|
+
* `name` matches is read walking up from it.
|
|
690
|
+
*
|
|
691
|
+
* Returns undefined where neither road resolves — no Node `require` (browser bundles), or a
|
|
686
692
|
* package not resolvable from cwd. The sync then has no place in the version order for that
|
|
687
693
|
* package: it never touches its version-stamped rows, and what it writes is unversioned
|
|
688
694
|
* (see {@link isNewerStamp}). Logged once per boot so a misconfigured cwd is visible.
|
|
689
695
|
*/
|
|
690
|
-
|
|
696
|
+
SourceRecordSyncRunner.prototype.resolveSourceVersion = function (source) {
|
|
691
697
|
// The ambient CJS `require` — the only require carrying `.resolve` (module.require does
|
|
692
698
|
// not). Every use below goes through the variable, so bundlers never see a statically
|
|
693
699
|
// analyzable `require(...)` call; in a browser bundle the runtime attempts throw into
|
|
@@ -696,18 +702,19 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
696
702
|
var cwd = typeof process !== 'undefined' && typeof process.cwd === 'function' ? process.cwd() : undefined;
|
|
697
703
|
if (nodeRequire && cwd) {
|
|
698
704
|
try {
|
|
699
|
-
var entryPath = nodeRequire.resolve(source, { paths: [cwd] });
|
|
700
705
|
var path = nodeRequire('path');
|
|
701
706
|
var fs = nodeRequire('fs');
|
|
707
|
+
var ownVersion = this.packageVersionAt(fs, path.join(cwd, 'package.json'), source);
|
|
708
|
+
if (ownVersion) {
|
|
709
|
+
return ownVersion;
|
|
710
|
+
}
|
|
711
|
+
var entryPath = nodeRequire.resolve(source, { paths: [cwd] });
|
|
702
712
|
// Walk up from the entry file to the package's own package.json (the name check skips
|
|
703
713
|
// nested stubs like a dist/package.json); stop at the filesystem root.
|
|
704
714
|
for (var directory = path.dirname(entryPath);; directory = path.dirname(directory)) {
|
|
705
|
-
var
|
|
706
|
-
if (
|
|
707
|
-
|
|
708
|
-
if ((packageJson === null || packageJson === void 0 ? void 0 : packageJson.name) === source && typeof packageJson.version === 'string') {
|
|
709
|
-
return packageJson.version;
|
|
710
|
-
}
|
|
715
|
+
var version = this.packageVersionAt(fs, path.join(directory, 'package.json'), source);
|
|
716
|
+
if (version) {
|
|
717
|
+
return version;
|
|
711
718
|
}
|
|
712
719
|
if (path.dirname(directory) === directory) {
|
|
713
720
|
break;
|
|
@@ -723,6 +730,14 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
723
730
|
});
|
|
724
731
|
return undefined;
|
|
725
732
|
};
|
|
733
|
+
/** The `version` of the package.json at `packageJsonPath` when it exists and names `source`. */
|
|
734
|
+
SourceRecordSyncRunner.prototype.packageVersionAt = function (fs, packageJsonPath, source) {
|
|
735
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
736
|
+
return undefined;
|
|
737
|
+
}
|
|
738
|
+
var packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
739
|
+
return (packageJson === null || packageJson === void 0 ? void 0 : packageJson.name) === source && typeof packageJson.version === 'string' ? packageJson.version : undefined;
|
|
740
|
+
};
|
|
726
741
|
/**
|
|
727
742
|
* Whether a row's version stamp is strictly newer than the reconciling build's version of the
|
|
728
743
|
* same package — the guard that makes version skew of one package safe on a shared database:
|
|
@@ -734,7 +749,7 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
734
749
|
* touches a version-stamped row — conservative: prefer leaving a removed row behind over
|
|
735
750
|
* deleting one that might be newer.
|
|
736
751
|
*/
|
|
737
|
-
|
|
752
|
+
SourceRecordSyncRunner.prototype.isNewerStamp = function (stampedVersion, reconcilingVersion) {
|
|
738
753
|
if (stampedVersion == null) {
|
|
739
754
|
return false;
|
|
740
755
|
}
|
|
@@ -749,7 +764,7 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
749
764
|
* positive when a > b, and undefined when either side does not parse as semver (unorderable —
|
|
750
765
|
* the caller treats that conservatively).
|
|
751
766
|
*/
|
|
752
|
-
|
|
767
|
+
SourceRecordSyncRunner.prototype.compareVersions = function (a, b) {
|
|
753
768
|
var parse = function (version) {
|
|
754
769
|
var _a;
|
|
755
770
|
var match = /^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?/.exec(version.trim());
|
|
@@ -806,7 +821,7 @@ var SourceRecordLoader = /** @class */ (function () {
|
|
|
806
821
|
}
|
|
807
822
|
return 0;
|
|
808
823
|
};
|
|
809
|
-
return
|
|
824
|
+
return SourceRecordSyncRunner;
|
|
810
825
|
}());
|
|
811
|
-
exports.
|
|
812
|
-
//# sourceMappingURL=
|
|
826
|
+
exports.SourceRecordSyncRunner = SourceRecordSyncRunner;
|
|
827
|
+
//# sourceMappingURL=SourceRecordSyncRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SourceRecordSyncRunner.js","sourceRoot":"","sources":["../../../src/source/SourceRecordSyncRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,10 +68,18 @@ export declare class MigrationTable extends Table<Migration> {
|
|
|
68
68
|
* the service api, and the runner writes run state via the db api as the calling user.
|
|
69
69
|
* INSERT deliberately has no door — for anyone, break-glass included: ledger rows are born
|
|
70
70
|
* from source declarations only (boot-time loading rides getDbAsSystem, which bypasses
|
|
71
|
-
* doors), so a caller-path insert could only mint a row no source owns.
|
|
72
|
-
*
|
|
71
|
+
* doors), so a caller-path insert could only mint a row no source owns. DELETE has no door
|
|
72
|
+
* either: the ledger is {@link MigrationTable.durable}. The generic record surfaces derive
|
|
73
|
+
* their affordances from these doors (db-ui renders no create button and no delete act here).
|
|
73
74
|
*/
|
|
74
75
|
auth: Table<Migration>['auth'];
|
|
76
|
+
/**
|
|
77
|
+
* The ledger keeps every row: run history is the record of what ran against this database, so
|
|
78
|
+
* no caller deletes it (the house's rule: migration rows are durable records; a row that must go
|
|
79
|
+
* goes by hand in the database's own console). The source-record sync keeps
|
|
80
|
+
* removed migrations' rows too ({@link MigrationTable.sourceRecordOptions} `onSourceRemoved`).
|
|
81
|
+
*/
|
|
82
|
+
durable: boolean;
|
|
75
83
|
/**
|
|
76
84
|
* The row scan: WHICH migration (name — the loader's class name), what it does, how the run
|
|
77
85
|
* went, WHEN it ran ("Ran at" = start_time, the one timestamp that answers "when did it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrationTable.d.ts","sourceRoot":"","sources":["../../../src/tables/MigrationTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,YAAY,EAA2B,MAAM,wBAAwB,CAAC;AAE/E,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;CAChC;AAED,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC;IAC3C,IAAI,SAAe;IAC1B
|
|
1
|
+
{"version":3,"file":"MigrationTable.d.ts","sourceRoot":"","sources":["../../../src/tables/MigrationTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,YAAY,EAA2B,MAAM,wBAAwB,CAAC;AAE/E,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;CAChC;AAED,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC;IAC3C,IAAI,SAAe;IAC1B;;;;;;;;;OASG;IACI,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAGnC;IACF;;;;;OAKG;IACI,OAAO,UAAQ;IACtB;;;;;;;;;;;;;;OAcG;IACI,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAQ/B;IACF;;;;;OAKG;IACI,OAAO;;;;;;;;;;;;;;;;;;;;;;MAeX;IACI,mBAAmB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CASjE;CACH"}
|
|
@@ -66,13 +66,21 @@ var MigrationTable = /** @class */ (function (_super) {
|
|
|
66
66
|
* the service api, and the runner writes run state via the db api as the calling user.
|
|
67
67
|
* INSERT deliberately has no door — for anyone, break-glass included: ledger rows are born
|
|
68
68
|
* from source declarations only (boot-time loading rides getDbAsSystem, which bypasses
|
|
69
|
-
* doors), so a caller-path insert could only mint a row no source owns.
|
|
70
|
-
*
|
|
69
|
+
* doors), so a caller-path insert could only mint a row no source owns. DELETE has no door
|
|
70
|
+
* either: the ledger is {@link MigrationTable.durable}. The generic record surfaces derive
|
|
71
|
+
* their affordances from these doors (db-ui renders no create button and no delete act here).
|
|
71
72
|
*/
|
|
72
73
|
_this.auth = {
|
|
73
|
-
db: { query: { permission: 'dev' }, update: { permission: 'dev' }
|
|
74
|
-
service: { query: { permission: 'dev' }, update: { permission: 'dev' }
|
|
74
|
+
db: { query: { permission: 'dev' }, update: { permission: 'dev' } },
|
|
75
|
+
service: { query: { permission: 'dev' }, update: { permission: 'dev' } },
|
|
75
76
|
};
|
|
77
|
+
/**
|
|
78
|
+
* The ledger keeps every row: run history is the record of what ran against this database, so
|
|
79
|
+
* no caller deletes it (the house's rule: migration rows are durable records; a row that must go
|
|
80
|
+
* goes by hand in the database's own console). The source-record sync keeps
|
|
81
|
+
* removed migrations' rows too ({@link MigrationTable.sourceRecordOptions} `onSourceRemoved`).
|
|
82
|
+
*/
|
|
83
|
+
_this.durable = true;
|
|
76
84
|
/**
|
|
77
85
|
* The row scan: WHICH migration (name — the loader's class name), what it does, how the run
|
|
78
86
|
* went, WHEN it ran ("Ran at" = start_time, the one timestamp that answers "when did it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrationTable.js","sourceRoot":"","sources":["../../../src/tables/MigrationTable.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,sCAAuF;AACvF,kCAAiC;AACjC,uDAA+E;AA8D/E;IAAoC,kCAAgB;IAApD;QAAA,
|
|
1
|
+
{"version":3,"file":"MigrationTable.js","sourceRoot":"","sources":["../../../src/tables/MigrationTable.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Record } from '../Record';
|
|
2
2
|
import { DbService } from '../services/DbService';
|
|
3
|
+
import { TransactionRunOptions } from '../services/TransactionRunnerService';
|
|
3
4
|
import { Table } from '../Table';
|
|
4
5
|
import { ArrayMembershipUpdate } from '../reference/ArrayMembershipOps';
|
|
5
6
|
import { PreservedPath } from '../UpdatePreserving';
|
|
@@ -87,7 +88,11 @@ export declare class Transaction implements OperationQueue {
|
|
|
87
88
|
private getIdsFromInCondition;
|
|
88
89
|
/**
|
|
89
90
|
* Run the operations in order (not a batch), as a single transaction.
|
|
91
|
+
*
|
|
92
|
+
* `options.afterRows` declares rows the operations depend on that may not exist yet (see
|
|
93
|
+
* {@link TransactionRunOptions}); the server waits for them before running. A run with nothing
|
|
94
|
+
* to declare hands the runner the operations alone — the request is the one it always was.
|
|
90
95
|
*/
|
|
91
|
-
run(): Promise<void>;
|
|
96
|
+
run(options?: TransactionRunOptions): Promise<void>;
|
|
92
97
|
}
|
|
93
98
|
//# sourceMappingURL=Transaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/Transaction.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/Transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -309,8 +309,12 @@ var Transaction = /** @class */ (function () {
|
|
|
309
309
|
};
|
|
310
310
|
/**
|
|
311
311
|
* Run the operations in order (not a batch), as a single transaction.
|
|
312
|
+
*
|
|
313
|
+
* `options.afterRows` declares rows the operations depend on that may not exist yet (see
|
|
314
|
+
* {@link TransactionRunOptions}); the server waits for them before running. A run with nothing
|
|
315
|
+
* to declare hands the runner the operations alone — the request is the one it always was.
|
|
312
316
|
*/
|
|
313
|
-
Transaction.prototype.run = function () {
|
|
317
|
+
Transaction.prototype.run = function (options) {
|
|
314
318
|
return __awaiter(this, void 0, void 0, function () {
|
|
315
319
|
var runner;
|
|
316
320
|
return __generator(this, function (_a) {
|
|
@@ -320,9 +324,16 @@ var Transaction = /** @class */ (function () {
|
|
|
320
324
|
return [2 /*return*/];
|
|
321
325
|
}
|
|
322
326
|
runner = (0, TransactionRunner_1.getTransactionRunner)();
|
|
323
|
-
return [
|
|
327
|
+
if (!((options === null || options === void 0 ? void 0 : options.afterRows) && options.afterRows.length > 0)) return [3 /*break*/, 2];
|
|
328
|
+
return [4 /*yield*/, runner.run(this.ops, { afterRows: options.afterRows })];
|
|
324
329
|
case 1:
|
|
325
330
|
_a.sent();
|
|
331
|
+
return [3 /*break*/, 4];
|
|
332
|
+
case 2: return [4 /*yield*/, runner.run(this.ops)];
|
|
333
|
+
case 3:
|
|
334
|
+
_a.sent();
|
|
335
|
+
_a.label = 4;
|
|
336
|
+
case 4:
|
|
326
337
|
this.ops = [];
|
|
327
338
|
return [2 /*return*/];
|
|
328
339
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../../src/transaction/Transaction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yDAA2D;
|
|
1
|
+
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../../src/transaction/Transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,55 @@
|
|
|
1
|
-
import { TransactionRunnerService } from '../services/TransactionRunnerService';
|
|
1
|
+
import { TransactionRunnerService, TransactionRunOptions } from '../services/TransactionRunnerService';
|
|
2
2
|
import { Operation } from './Transaction';
|
|
3
3
|
export declare const getTransactionRunner: () => TransactionRunner;
|
|
4
|
+
/**
|
|
5
|
+
* Runs a client `Transaction`'s operations as one server-side transaction.
|
|
6
|
+
*
|
|
7
|
+
* A write may DECLARE the rows it depends on (`options.afterRows`): rows its operations
|
|
8
|
+
* reference whose own insert may still be in flight when this request arrives — a text update
|
|
9
|
+
* released by a page that was going away while its row's insert was still being served, a child
|
|
10
|
+
* row's insert whose root (its permission source, and the owner grant that commits with the
|
|
11
|
+
* root) is still landing. Without the declaration such a write ran to completion inside the
|
|
12
|
+
* insert's window and matched nothing, silently, or was refused at the door for a grant that was
|
|
13
|
+
* a moment from existing — and the page that could have retried was gone. The server outlives
|
|
14
|
+
* the page: it waits, bounded by the db driver's per-operation deadline, for every declared row to
|
|
15
|
+
* exist AND be visible to the caller (a read as the caller sees a row exactly when the caller's
|
|
16
|
+
* grant on its scope has committed), then runs the operations. A row that never appears fails the
|
|
17
|
+
* request with a plain clause.
|
|
18
|
+
*/
|
|
4
19
|
export declare class TransactionRunner implements TransactionRunnerService {
|
|
5
20
|
serviceMetadata: {
|
|
6
21
|
auth: {
|
|
7
22
|
allUsers: boolean;
|
|
8
23
|
};
|
|
9
24
|
};
|
|
10
|
-
|
|
25
|
+
private static readonly FIRST_POLL_INTERVAL_MS;
|
|
26
|
+
private static readonly MAX_POLL_INTERVAL_MS;
|
|
27
|
+
private logger;
|
|
28
|
+
run(ops: Operation<any>[], options?: TransactionRunOptions): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Wait until every declared row exists and is visible to the caller, bounded by the db driver's
|
|
31
|
+
* per-operation deadline (`DbDriver.getOperationDeadlineMs`), read when the write waits. The
|
|
32
|
+
* bound is the ceiling for a row that NEVER comes — the named failure, never a hang. A
|
|
33
|
+
* dependency's insert lands in hundreds of milliseconds on a healthy link and in seconds on a
|
|
34
|
+
* degraded one (a root's birth of a few dozen sequential statements has taken 13 s), and the
|
|
35
|
+
* writes released behind it by a page that is gone have no second chance. The driver's deadline
|
|
36
|
+
* is how long the deployment lets one statement of that insert run before failing it: the wait
|
|
37
|
+
* takes its measure from there — one owner for the number, configured with the database — not
|
|
38
|
+
* from a number of its own. A write that waits here holds one request and a poll, nothing else.
|
|
39
|
+
*
|
|
40
|
+
* Each poll is a single-use strong read outside any transaction, so a commit is seen the moment
|
|
41
|
+
* it lands; the interval starts short and backs off so a dependency landing in hundreds of
|
|
42
|
+
* milliseconds is caught within tens.
|
|
43
|
+
*/
|
|
44
|
+
private awaitRows;
|
|
45
|
+
/**
|
|
46
|
+
* The rows the operations reference, by id → the table(s) they are read from: the permission
|
|
47
|
+
* source a row attaches to (an insert whose `permissionSource` is another row), the row an
|
|
48
|
+
* update / preserving update / membership update / delete targets. The rows the operations
|
|
49
|
+
* insert themselves are not dependencies.
|
|
50
|
+
*/
|
|
51
|
+
private static rowsTheOperationsReference;
|
|
52
|
+
/** The table a permission source lives in: the insert's own table when it names the same one. */
|
|
53
|
+
private static tableNamed;
|
|
11
54
|
}
|
|
12
55
|
//# sourceMappingURL=TransactionRunner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionRunner.d.ts","sourceRoot":"","sources":["../../../src/transaction/TransactionRunner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TransactionRunner.d.ts","sourceRoot":"","sources":["../../../src/transaction/TransactionRunner.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EAEtB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,eAAO,MAAM,oBAAoB,yBAC6E,CAAC;AAE/G;;;;;;;;;;;;;;GAcG;AACH,qBAAa,iBAAkB,YAAW,wBAAwB;IACzD,eAAe;;;;MAIpB;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAM;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAO;IAEnD,OAAO,CAAC,MAAM,CAA+C;IAEvD,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAchF;;;;;;;;;;;;;;OAcG;YACW,SAAS;IAkEvB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAgDzC,iGAAiG;IACjG,OAAO,CAAC,MAAM,CAAC,UAAU;CAG1B"}
|