@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.
Files changed (113) hide show
  1. package/.eslintrc.js +1 -1
  2. package/.prettierignore +2 -1
  3. package/CHANGELOG.md +37 -0
  4. package/dist/generated/index.d.ts.map +1 -1
  5. package/dist/generated/index.js +1 -3
  6. package/dist/generated/index.js.map +1 -1
  7. package/dist/generated/test/index.d.ts.map +1 -1
  8. package/dist/generated/test/index.js +1 -3
  9. package/dist/generated/test/index.js.map +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +4 -5
  13. package/dist/index.js.map +1 -1
  14. package/dist/src/Db.d.ts +9 -0
  15. package/dist/src/Db.d.ts.map +1 -1
  16. package/dist/src/Db.js +2 -2
  17. package/dist/src/Db.js.map +1 -1
  18. package/dist/src/MigrationRunner.js +2 -2
  19. package/dist/src/MigrationRunner.js.map +1 -1
  20. package/dist/src/Table.d.ts +16 -1
  21. package/dist/src/Table.d.ts.map +1 -1
  22. package/dist/src/Table.js +14 -0
  23. package/dist/src/Table.js.map +1 -1
  24. package/dist/src/auth/TableAuth.d.ts +4 -0
  25. package/dist/src/auth/TableAuth.d.ts.map +1 -1
  26. package/dist/src/auth/TableAuth.js +12 -0
  27. package/dist/src/auth/TableAuth.js.map +1 -1
  28. package/dist/src/auth/TableServiceAuth.d.ts.map +1 -1
  29. package/dist/src/auth/TableServiceAuth.js +5 -0
  30. package/dist/src/auth/TableServiceAuth.js.map +1 -1
  31. package/dist/src/schema/SchemaOperations.d.ts +4 -3
  32. package/dist/src/schema/SchemaOperations.d.ts.map +1 -1
  33. package/dist/src/schema/TableManager.d.ts +24 -6
  34. package/dist/src/schema/TableManager.d.ts.map +1 -1
  35. package/dist/src/schema/TableManager.js +93 -26
  36. package/dist/src/schema/TableManager.js.map +1 -1
  37. package/dist/src/services/TransactionRunnerService.d.ts +20 -1
  38. package/dist/src/services/TransactionRunnerService.d.ts.map +1 -1
  39. package/dist/src/source/SourceRecord.d.ts +2 -2
  40. package/dist/src/source/{SourceRecordLoader.d.ts → SourceRecordSyncRunner.d.ts} +15 -7
  41. package/dist/src/source/SourceRecordSyncRunner.d.ts.map +1 -0
  42. package/dist/src/source/{SourceRecordLoader.js → SourceRecordSyncRunner.js} +46 -31
  43. package/dist/src/source/SourceRecordSyncRunner.js.map +1 -0
  44. package/dist/src/tables/MigrationTable.d.ts +10 -2
  45. package/dist/src/tables/MigrationTable.d.ts.map +1 -1
  46. package/dist/src/tables/MigrationTable.js +12 -4
  47. package/dist/src/tables/MigrationTable.js.map +1 -1
  48. package/dist/src/transaction/Transaction.d.ts +6 -1
  49. package/dist/src/transaction/Transaction.d.ts.map +1 -1
  50. package/dist/src/transaction/Transaction.js +13 -2
  51. package/dist/src/transaction/Transaction.js.map +1 -1
  52. package/dist/src/transaction/TransactionRunner.d.ts +45 -2
  53. package/dist/src/transaction/TransactionRunner.d.ts.map +1 -1
  54. package/dist/src/transaction/TransactionRunner.js +227 -26
  55. package/dist/src/transaction/TransactionRunner.js.map +1 -1
  56. package/dist/test/DurableTable.test.d.ts +2 -0
  57. package/dist/test/DurableTable.test.d.ts.map +1 -0
  58. package/dist/test/DurableTable.test.js +172 -0
  59. package/dist/test/DurableTable.test.js.map +1 -0
  60. package/dist/test/MigrationAuth.test.js +12 -9
  61. package/dist/test/MigrationAuth.test.js.map +1 -1
  62. package/dist/test/SchemaReconcileLines.test.d.ts +2 -0
  63. package/dist/test/SchemaReconcileLines.test.d.ts.map +1 -0
  64. package/dist/test/SchemaReconcileLines.test.js +176 -0
  65. package/dist/test/SchemaReconcileLines.test.js.map +1 -0
  66. package/dist/test/SourceRecordLoaderQualifiedName.test.d.ts +2 -0
  67. package/dist/test/SourceRecordLoaderQualifiedName.test.d.ts.map +1 -0
  68. package/dist/test/SourceRecordLoaderQualifiedName.test.js +79 -0
  69. package/dist/test/SourceRecordLoaderQualifiedName.test.js.map +1 -0
  70. package/dist/test/SourceRecordSyncRunner.test.d.ts +2 -0
  71. package/dist/test/SourceRecordSyncRunner.test.d.ts.map +1 -0
  72. package/dist/test/{SourceRecordLoader.test.js → SourceRecordSyncRunner.test.js} +63 -7
  73. package/dist/test/SourceRecordSyncRunner.test.js.map +1 -0
  74. package/dist/test/TableManagerCreateOrder.test.d.ts +2 -0
  75. package/dist/test/TableManagerCreateOrder.test.d.ts.map +1 -0
  76. package/dist/test/TableManagerCreateOrder.test.js +66 -0
  77. package/dist/test/TableManagerCreateOrder.test.js.map +1 -0
  78. package/dist/test/reusable/SourceRecordSyncTests.d.ts.map +1 -1
  79. package/dist/test/reusable/SourceRecordSyncTests.js +3 -5
  80. package/dist/test/reusable/SourceRecordSyncTests.js.map +1 -1
  81. package/dist/test/reusable/TableManagerTests.d.ts.map +1 -1
  82. package/dist/test/reusable/TableManagerTests.js +180 -0
  83. package/dist/test/reusable/TableManagerTests.js.map +1 -1
  84. package/generated/index.ts +20 -19
  85. package/generated/test/index.ts +54 -53
  86. package/index.ts +3 -4
  87. package/package.json +4 -4
  88. package/src/Db.ts +11 -2
  89. package/src/MigrationRunner.ts +2 -2
  90. package/src/Table.ts +16 -1
  91. package/src/auth/TableAuth.ts +14 -0
  92. package/src/auth/TableServiceAuth.ts +6 -1
  93. package/src/schema/SchemaOperations.ts +4 -3
  94. package/src/schema/TableManager.ts +84 -26
  95. package/src/services/TransactionRunnerService.ts +21 -1
  96. package/src/source/SourceRecord.ts +2 -2
  97. package/src/source/{SourceRecordLoader.ts → SourceRecordSyncRunner.ts} +31 -13
  98. package/src/tables/MigrationTable.ts +12 -4
  99. package/src/transaction/Transaction.ts +11 -2
  100. package/src/transaction/TransactionRunner.ts +174 -3
  101. package/test/DurableTable.test.ts +156 -0
  102. package/test/MigrationAuth.test.ts +7 -5
  103. package/test/SchemaReconcileLines.test.ts +127 -0
  104. package/test/SourceRecordLoaderQualifiedName.test.ts +63 -0
  105. package/test/{SourceRecordLoader.test.ts → SourceRecordSyncRunner.test.ts} +75 -8
  106. package/test/TableManagerCreateOrder.test.ts +78 -0
  107. package/test/reusable/SourceRecordSyncTests.ts +3 -5
  108. package/test/reusable/TableManagerTests.ts +95 -0
  109. package/dist/src/source/SourceRecordLoader.d.ts.map +0 -1
  110. package/dist/src/source/SourceRecordLoader.js.map +0 -1
  111. package/dist/test/SourceRecordLoader.test.d.ts +0 -2
  112. package/dist/test/SourceRecordLoader.test.d.ts.map +0 -1
  113. package/dist/test/SourceRecordLoader.test.js.map +0 -1
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ 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;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ var util_1 = require("util");
51
+ var logger_1 = require("@proteinjs/logger");
52
+ var TableManager_1 = require("../src/schema/TableManager");
53
+ /**
54
+ * The schema-reconcile WARN lines (`TableManager.reconcileConcurrentSchemaChange`) carry the
55
+ * error a driver rejected with — never text copied out of it.
56
+ *
57
+ * A backend words a schema error itself and can quote row data in it (a unique index whose
58
+ * backfill meets duplicate rows names the duplicate key). A driver marks such an error so the
59
+ * logger prints its status and the driver's sentence in its place (`LogLineErrors`) — which the
60
+ * logger can only do for the error OBJECT. These lines used to interpolate the error's `details`
61
+ * / `message` into their own message, where nothing can recognize it.
62
+ *
63
+ * Judged at the log WRITER, as the text a writer would print, for each of the three outcomes
64
+ * that log: tolerated, still absent, a genuine conflict.
65
+ */
66
+ // A fixture value shaped like row content (not a real credential).
67
+ var VALUE = 'rst_reconcile_5d41402abc4b2a76b9719d911017c592';
68
+ var SENTENCE = 'Failed when executing schema update (ALREADY_EXISTS, code 6): what the statement creates already exists';
69
+ var noChanges = function () {
70
+ return ({
71
+ columnsToCreate: [],
72
+ columnsToRename: [],
73
+ columnsToAlter: [],
74
+ columnsWithForeignKeysToDrop: [],
75
+ columnsWithUniqueConstraintsToDrop: [],
76
+ indexesToCreate: [],
77
+ indexesToDrop: [],
78
+ });
79
+ };
80
+ /** What a driver rejects with when the backend refuses a schema change — marked, as a driver marks it. */
81
+ var backendError = function () {
82
+ var message = "6 ALREADY_EXISTS: Duplicate name in schema: ledger_by_email. duplicate key: {String(\"".concat(VALUE, "\")}");
83
+ var error = Object.assign(new Error(message), { code: 6, details: message });
84
+ logger_1.LogLineErrors.mark(error, function () { return ({ code: 6, sentence: SENTENCE, facts: { status: 'ALREADY_EXISTS' } }); });
85
+ return error;
86
+ };
87
+ var printedLine = function (log) { var _a, _b; return [(_a = log.message) !== null && _a !== void 0 ? _a : '', (0, util_1.inspect)(log.obj, { depth: 10, maxStringLength: null }), (_b = JSON.stringify(log.obj)) !== null && _b !== void 0 ? _b : ''].join('\n'); };
88
+ describe('the schema-reconcile lines carry the error itself, never its text', function () {
89
+ var table = { name: 'ledger' };
90
+ var captured;
91
+ var managerWhere = function (live) {
92
+ var manager = new TableManager_1.TableManager({}, {}, { isAlreadyExistsError: function () { return true; } }, { tableExists: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
93
+ return [2 /*return*/, live.exists];
94
+ }); }); } });
95
+ var internals = manager;
96
+ internals.logger = new logger_1.Logger({
97
+ name: 'TableManager',
98
+ logWriter: { write: function (log) { return captured.push(log); } },
99
+ });
100
+ internals.getTableChanges = function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
101
+ return [2 /*return*/, live.changes];
102
+ }); }); };
103
+ internals.delay = function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
104
+ return [2 /*return*/, undefined];
105
+ }); }); };
106
+ return internals;
107
+ };
108
+ beforeEach(function () {
109
+ captured = [];
110
+ });
111
+ var expectTheErrorNotItsText = function (line, error) {
112
+ expect(error.message).toContain(VALUE);
113
+ expect(printedLine(line)).not.toContain(VALUE);
114
+ expect(printedLine(line)).not.toContain('Duplicate name in schema');
115
+ expect(line.obj.error).toBeInstanceOf(Error);
116
+ expect(line.obj.error.message).toBe(SENTENCE);
117
+ expect(line.message).toContain('ledger');
118
+ };
119
+ test('tolerated: the table is there with the intended definition', function () { return __awaiter(void 0, void 0, void 0, function () {
120
+ var error;
121
+ return __generator(this, function (_a) {
122
+ switch (_a.label) {
123
+ case 0:
124
+ error = backendError();
125
+ return [4 /*yield*/, managerWhere({ exists: true, changes: noChanges() }).reconcileConcurrentSchemaChange([table], error)];
126
+ case 1:
127
+ _a.sent();
128
+ expect(captured).toHaveLength(1);
129
+ expect(captured[0].message).toContain('tolerated concurrent ALREADY_EXISTS');
130
+ expectTheErrorNotItsText(captured[0], error);
131
+ return [2 /*return*/];
132
+ }
133
+ });
134
+ }); });
135
+ test('still absent after every re-read: the original error is thrown as it is', function () { return __awaiter(void 0, void 0, void 0, function () {
136
+ var error, thrown;
137
+ return __generator(this, function (_a) {
138
+ switch (_a.label) {
139
+ case 0:
140
+ error = backendError();
141
+ return [4 /*yield*/, managerWhere({ exists: false, changes: noChanges() })
142
+ .reconcileConcurrentSchemaChange([table], error)
143
+ .catch(function (each) { return each; })];
144
+ case 1:
145
+ thrown = _a.sent();
146
+ expect(thrown).toBe(error);
147
+ expect(captured).toHaveLength(1);
148
+ expect(captured[0].message).toContain('still absent');
149
+ expectTheErrorNotItsText(captured[0], error);
150
+ return [2 /*return*/];
151
+ }
152
+ });
153
+ }); });
154
+ test('a genuine conflict: the live schema differs from the intended definition', function () { return __awaiter(void 0, void 0, void 0, function () {
155
+ var error, changes, thrown;
156
+ return __generator(this, function (_a) {
157
+ switch (_a.label) {
158
+ case 0:
159
+ error = backendError();
160
+ changes = __assign(__assign({}, noChanges()), { columnsToCreate: ['email'] });
161
+ return [4 /*yield*/, managerWhere({ exists: true, changes: changes })
162
+ .reconcileConcurrentSchemaChange([table], error)
163
+ .catch(function (each) { return each; })];
164
+ case 1:
165
+ thrown = _a.sent();
166
+ expect(thrown).toBe(error);
167
+ expect(captured).toHaveLength(1);
168
+ expect(captured[0].message).toContain('genuine conflict');
169
+ expect(captured[0].obj.remainingChanges).toEqual(changes);
170
+ expectTheErrorNotItsText(captured[0], error);
171
+ return [2 /*return*/];
172
+ }
173
+ });
174
+ }); });
175
+ });
176
+ //# sourceMappingURL=SchemaReconcileLines.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaReconcileLines.test.js","sourceRoot":"","sources":["../../test/SchemaReconcileLines.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SourceRecordLoaderQualifiedName.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SourceRecordLoaderQualifiedName.test.d.ts","sourceRoot":"","sources":["../../test/SourceRecordLoaderQualifiedName.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ var fs = __importStar(require("fs"));
27
+ var path = __importStar(require("path"));
28
+ var reflection_1 = require("@proteinjs/reflection");
29
+ var util_1 = require("@proteinjs/util");
30
+ /**
31
+ * `@proteinjs/db/SourceRecordLoader` is the qualified name every source-record declaration
32
+ * implements (`class X implements SourceRecordLoader<T>`) and the name `getSourceRecordLoaders`
33
+ * resolves through the reflection registry. The generated index keeps ONE node per qualified
34
+ * name, so a second declaration of the name anywhere in the package's reflected sources leaves
35
+ * which one the artifact records to the build's file order — and the loser disappears without
36
+ * a trace. These tests read the artifacts the build wrote (`generated/index.ts` for the package
37
+ * entry, `generated/test/index.ts` for the `./test` subpath, both built from `src/`) and assert
38
+ * the name holds the declaration interface, not some other declaration that shares it.
39
+ */
40
+ var QUALIFIED_NAME = '@proteinjs/db/SourceRecordLoader';
41
+ var ARTIFACTS = ['generated/index.ts', 'generated/test/index.ts'];
42
+ var readArtifact = function (relativePath) { return fs.readFileSync(path.join(__dirname, '..', relativePath), 'utf8'); };
43
+ /** The source graph exactly as the generated index hands it to `SourceRepository.merge`. */
44
+ var emittedGraph = function (artifact) {
45
+ var literal = artifact.match(/^const sourceGraph = (".*");$/m);
46
+ if (!literal) {
47
+ throw new Error('generated index carries no serialized source graph');
48
+ }
49
+ var serialized = JSON.parse(literal[1]);
50
+ return util_1.graphSerializer.deserialize(serialized.replace(/\\'/g, "'"));
51
+ };
52
+ describe.each(ARTIFACTS)('the qualified name SourceRecordLoader in %s', function (relativePath) {
53
+ var artifact = readArtifact(relativePath);
54
+ var graph = emittedGraph(artifact);
55
+ it('names exactly one declaration of this package: the interface declarations implement', function () {
56
+ var _a;
57
+ var qualifiedNames = graph.nodes();
58
+ var declarations = qualifiedNames
59
+ .map(function (qualifiedName) { return graph.node(qualifiedName); })
60
+ .filter(function (node) { return (node === null || node === void 0 ? void 0 : node.packageName) === '@proteinjs/db' && node.name === 'SourceRecordLoader'; });
61
+ expect(declarations).toHaveLength(1);
62
+ expect(declarations[0]).toMatchObject({
63
+ qualifiedName: QUALIFIED_NAME,
64
+ sourceType: reflection_1.SourceType.interface,
65
+ filePath: 'src/source/SourceRecord.ts',
66
+ });
67
+ var parents = (_a = graph.outEdges(QUALIFIED_NAME)) !== null && _a !== void 0 ? _a : [];
68
+ expect(parents.map(function (edge) { return [edge.w, graph.edge(edge)]; })).toEqual([
69
+ ['@proteinjs/reflection/Loadable', 'extends interface'],
70
+ ]);
71
+ });
72
+ it('links no runtime value under the name (an interface has none)', function () {
73
+ var _a;
74
+ var linkedNames = ((_a = artifact.match(/^\t'[^']+': /gm)) !== null && _a !== void 0 ? _a : []).map(function (line) { return line.slice(2, -3); });
75
+ expect(linkedNames).toContain('@proteinjs/db/MigrationRunner');
76
+ expect(linkedNames).not.toContain(QUALIFIED_NAME);
77
+ });
78
+ });
79
+ //# sourceMappingURL=SourceRecordLoaderQualifiedName.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SourceRecordLoaderQualifiedName.test.js","sourceRoot":"","sources":["../../test/SourceRecordLoaderQualifiedName.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SourceRecordSyncRunner.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SourceRecordSyncRunner.test.d.ts","sourceRoot":"","sources":["../../test/SourceRecordSyncRunner.test.ts"],"names":[],"mappings":""}
@@ -47,9 +47,9 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
47
47
  }
48
48
  };
49
49
  Object.defineProperty(exports, "__esModule", { value: true });
50
- var SourceRecordLoader_1 = require("../src/source/SourceRecordLoader");
51
- var internals = function () { return new SourceRecordLoader_1.SourceRecordLoader(); };
52
- describe('SourceRecordLoader.canonicalStringify', function () {
50
+ var SourceRecordSyncRunner_1 = require("../src/source/SourceRecordSyncRunner");
51
+ var internals = function () { return new SourceRecordSyncRunner_1.SourceRecordSyncRunner(); };
52
+ describe('SourceRecordSyncRunner.canonicalStringify', function () {
53
53
  it('produces the same string for objects with different key orders', function () {
54
54
  var loader = internals();
55
55
  var a = { foo: 1, bar: 2, baz: 3 };
@@ -73,7 +73,7 @@ describe('SourceRecordLoader.canonicalStringify', function () {
73
73
  expect(loader.canonicalStringify(null)).toBe('null');
74
74
  });
75
75
  });
76
- describe('SourceRecordLoader.findMismatchPath', function () {
76
+ describe('SourceRecordSyncRunner.findMismatchPath', function () {
77
77
  describe('object comparison', function () {
78
78
  it('returns null for identical objects', function () {
79
79
  var loader = internals();
@@ -170,12 +170,12 @@ describe('SourceRecordLoader.findMismatchPath', function () {
170
170
  * rewrites a row (bumping `updated`). The ownership stamps ride the declared record, so the
171
171
  * comparison must know which of them mean "the definition changed" and which are bookkeeping.
172
172
  */
173
- describe('SourceRecordLoader.hasChanges — stamp hygiene on the migration ledger', function () {
173
+ describe('SourceRecordSyncRunner.hasChanges — stamp hygiene on the migration ledger', function () {
174
174
  // eslint-disable-next-line @typescript-eslint/no-var-requires
175
175
  var MigrationTable = require('../src/tables/MigrationTable').MigrationTable;
176
176
  // eslint-disable-next-line @typescript-eslint/no-var-requires
177
177
  var moment = require('moment');
178
- var loader = function () { return new SourceRecordLoader_1.SourceRecordLoader(); };
178
+ var loader = function () { return new SourceRecordSyncRunner_1.SourceRecordSyncRunner(); };
179
179
  var table = new MigrationTable();
180
180
  /** What a build declares for a migration (the run function rides along, as it does at boot). */
181
181
  var declared = function (overrides) {
@@ -269,4 +269,60 @@ describe('getSourceRecordLoaders — declaration identity', function () {
269
269
  });
270
270
  });
271
271
  });
272
- //# sourceMappingURL=SourceRecordLoader.test.js.map
272
+ /**
273
+ * The version a booting server stamps on the records its OWN package declares. The loader
274
+ * resolves each declaring package by name from the process cwd — cwd's node_modules chain — and
275
+ * the package cwd IS never sits in that chain, so the server's own records used to sync with no
276
+ * version (and between two builds sharing a database, the last to boot won). The fixture is a
277
+ * server package in its own folder with no `exports` field, booted from that folder.
278
+ */
279
+ describe("SourceRecordSyncRunner.resolveSourceVersion — the booting package's own version", function () {
280
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
281
+ var fs = require('fs');
282
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
283
+ var os = require('os');
284
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
285
+ var path = require('path');
286
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
287
+ var Logger = require('@proteinjs/logger').Logger;
288
+ var resolveSourceVersion = function (source) {
289
+ return new SourceRecordSyncRunner_1.SourceRecordSyncRunner().resolveSourceVersion(source);
290
+ };
291
+ var writePackage = function (directory, packageJson) {
292
+ fs.mkdirSync(directory, { recursive: true });
293
+ fs.writeFileSync(path.join(directory, 'package.json'), JSON.stringify(packageJson));
294
+ fs.writeFileSync(path.join(directory, 'index.js'), 'module.exports = {};\n');
295
+ };
296
+ var serverDirectory;
297
+ var bootDirectory;
298
+ beforeEach(function () {
299
+ serverDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'source-version-server-'));
300
+ writePackage(serverDirectory, { name: '@fixture-scope/booting-server', version: '4.5.6', main: 'index.js' });
301
+ writePackage(path.join(serverDirectory, 'node_modules', '@fixture-scope', 'declaring-dependency'), {
302
+ name: '@fixture-scope/declaring-dependency',
303
+ version: '7.8.9',
304
+ main: 'index.js',
305
+ });
306
+ bootDirectory = process.cwd();
307
+ process.chdir(serverDirectory);
308
+ });
309
+ afterEach(function () {
310
+ process.chdir(bootDirectory);
311
+ fs.rmSync(serverDirectory, { recursive: true, force: true });
312
+ jest.restoreAllMocks();
313
+ });
314
+ it('stamps the booting package with the version in its own package.json', function () {
315
+ var warn = jest.spyOn(Logger.prototype, 'warn');
316
+ expect(resolveSourceVersion('@fixture-scope/booting-server')).toBe('4.5.6');
317
+ expect(warn).not.toHaveBeenCalled();
318
+ });
319
+ it("resolves other packages from cwd's dependencies, and warns when neither road resolves", function () {
320
+ var warn = jest.spyOn(Logger.prototype, 'warn');
321
+ expect(resolveSourceVersion('@fixture-scope/declaring-dependency')).toBe('7.8.9');
322
+ expect(warn).not.toHaveBeenCalled();
323
+ expect(resolveSourceVersion('@fixture-scope/not-installed')).toBeUndefined();
324
+ expect(warn).toHaveBeenCalledTimes(1);
325
+ expect(warn.mock.calls[0][0].message).toContain("Could not resolve a version for source package '@fixture-scope/not-installed'");
326
+ });
327
+ });
328
+ //# sourceMappingURL=SourceRecordSyncRunner.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SourceRecordSyncRunner.test.js","sourceRoot":"","sources":["../../test/SourceRecordSyncRunner.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TableManagerCreateOrder.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableManagerCreateOrder.test.d.ts","sourceRoot":"","sources":["../../test/TableManagerCreateOrder.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // TableManager first: it loads the Table/Record/Columns module cycle from its settled entry point.
4
+ var TableManager_1 = require("../src/schema/TableManager");
5
+ var Columns_1 = require("../src/Columns");
6
+ var tableManager = function () {
7
+ return new TableManager_1.TableManager({}, {}, {}, {});
8
+ };
9
+ /** A table named `name` with one foreign-key column per entry in `references`. */
10
+ var table = function (name) {
11
+ var references = [];
12
+ for (var _i = 1; _i < arguments.length; _i++) {
13
+ references[_i - 1] = arguments[_i];
14
+ }
15
+ var columns = { id: new Columns_1.StringColumn('id') };
16
+ references.forEach(function (referencedTable, index) {
17
+ columns["ref".concat(index)] = new Columns_1.StringColumn("ref_".concat(index), { references: { table: referencedTable } });
18
+ });
19
+ return { name: name, columns: columns, indexes: [] };
20
+ };
21
+ var names = function (tables) { return tables.map(function (each) { return each.name; }); };
22
+ describe('TableManager — the order absent tables are created in', function () {
23
+ it('creates a referenced table before the table enumerated ahead of it that references it', function () {
24
+ expect(names(tableManager().orderByReferences([table('child', 'parent'), table('parent')]))).toEqual([
25
+ 'parent',
26
+ 'child',
27
+ ]);
28
+ });
29
+ it('groups by rank and keeps the given order within a rank, so the output is deterministic', function () {
30
+ var ordered = tableManager().orderByReferences([
31
+ table('comment', 'post', 'account'),
32
+ table('post', 'account'),
33
+ table('reaction', 'account'),
34
+ table('account'),
35
+ table('tag'),
36
+ ]);
37
+ // rank 0: account, tag (given order) · rank 1: post, reaction (given order) · rank 2: comment
38
+ expect(names(ordered)).toEqual(['account', 'tag', 'post', 'reaction', 'comment']);
39
+ });
40
+ it('allows a table to reference itself', function () {
41
+ expect(names(tableManager().orderByReferences([table('node', 'node'), table('leaf', 'node')]))).toEqual([
42
+ 'node',
43
+ 'leaf',
44
+ ]);
45
+ });
46
+ it('ignores a reference to a table outside the set (already created, or not registered)', function () {
47
+ expect(names(tableManager().orderByReferences([table('late', 'existing'), table('early')]))).toEqual([
48
+ 'late',
49
+ 'early',
50
+ ]);
51
+ });
52
+ it('refuses a reference cycle, naming the cycle and every table it blocks', function () {
53
+ var cyclic = function () {
54
+ return tableManager().orderByReferences([
55
+ table('free'),
56
+ table('downstream', 'second'),
57
+ table('first', 'third'),
58
+ table('second', 'first'),
59
+ table('third', 'second'),
60
+ ]);
61
+ };
62
+ expect(cyclic).toThrow('foreign keys form a cycle: second -> first -> third -> second');
63
+ expect(cyclic).toThrow('Tables it blocks: downstream, first, second, third');
64
+ });
65
+ });
66
+ //# sourceMappingURL=TableManagerCreateOrder.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableManagerCreateOrder.test.js","sourceRoot":"","sources":["../../test/TableManagerCreateOrder.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SourceRecordSyncTests.d.ts","sourceRoot":"","sources":["../../../test/reusable/SourceRecordSyncTests.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,QAAQ,EAKR,KAAK,EAKN,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAsCtE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,WACxB,QAAQ,6BACW,gCAAgC,qBACxC,MAAM,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,eA27BhD,CAAC"}
1
+ {"version":3,"file":"SourceRecordSyncTests.d.ts","sourceRoot":"","sources":["../../../test/reusable/SourceRecordSyncTests.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,QAAQ,EAKR,KAAK,EAKN,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAoCtE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,WACxB,QAAQ,6BACW,gCAAgC,qBACxC,MAAM,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,eA27BhD,CAAC"}
@@ -65,9 +65,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
65
65
  exports.sourceRecordSyncTests = void 0;
66
66
  var reflection_1 = require("@proteinjs/reflection");
67
67
  var db_1 = require("@proteinjs/db");
68
- // Relative on purpose: the class shares its name with the SourceRecordLoader declaration
69
- // interface exported from the package index, so it is not index-exported.
70
- var SourceRecordLoader_1 = require("../../src/source/SourceRecordLoader");
68
+ var SourceRecordSyncRunner_1 = require("../../src/source/SourceRecordSyncRunner");
71
69
  var TableWatcherRunner_1 = require("../../src/TableWatcherRunner");
72
70
  var DbTestEnvironment_1 = require("../util/DbTestEnvironment");
73
71
  var sourceRecordSyncTestTables_1 = require("../util/tables/sourceRecordSyncTestTables");
@@ -129,7 +127,7 @@ var sourceRecordSyncTests = function (driver, transactionContextFactory, dropTab
129
127
  packageName: declaration.source,
130
128
  object: { table: declaration.table, record: declaration.record },
131
129
  }); });
132
- loader = new SourceRecordLoader_1.SourceRecordLoader();
130
+ loader = new SourceRecordSyncRunner_1.SourceRecordSyncRunner();
133
131
  loader.resolveSourceVersion = function (source) {
134
132
  return Object.prototype.hasOwnProperty.call(versions, source) ? versions[source] : undefined;
135
133
  };
@@ -1443,7 +1441,7 @@ var sourceRecordSyncTests = function (driver, transactionContextFactory, dropTab
1443
1441
  test("the version resolver reads the declaring package's real package.json", function () { return __awaiter(void 0, void 0, void 0, function () {
1444
1442
  var internals;
1445
1443
  return __generator(this, function (_a) {
1446
- internals = new SourceRecordLoader_1.SourceRecordLoader();
1444
+ internals = new SourceRecordSyncRunner_1.SourceRecordSyncRunner();
1447
1445
  // A real dependency of this build resolves to its actual version (entry resolution +
1448
1446
  // walk-up works for exports-mapped packages, where `<pkg>/package.json` is not requireable).
1449
1447
  expect(internals.resolveSourceVersion('@proteinjs/db-query')).toMatch(/^\d+\.\d+\.\d+/);