@proteinjs/db 1.55.1 → 1.57.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/CHANGELOG.md +22 -0
- package/dist/generated/index.js +1 -1
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/test/index.d.ts.map +1 -1
- package/dist/generated/test/index.js +5 -1
- package/dist/generated/test/index.js.map +1 -1
- package/dist/src/Db.d.ts +22 -6
- package/dist/src/Db.d.ts.map +1 -1
- package/dist/src/Db.js +35 -15
- package/dist/src/Db.js.map +1 -1
- package/dist/src/TableWatcher.d.ts +15 -6
- package/dist/src/TableWatcher.d.ts.map +1 -1
- package/dist/src/TableWatcher.js.map +1 -1
- package/dist/src/TableWatcherRunner.d.ts +14 -6
- package/dist/src/TableWatcherRunner.d.ts.map +1 -1
- package/dist/src/TableWatcherRunner.js +19 -12
- package/dist/src/TableWatcherRunner.js.map +1 -1
- package/dist/test/DbIsSystem.test.d.ts +2 -0
- package/dist/test/DbIsSystem.test.d.ts.map +1 -0
- package/dist/test/DbIsSystem.test.js +280 -0
- package/dist/test/DbIsSystem.test.js.map +1 -0
- package/dist/test/index.d.ts +2 -0
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +2 -0
- package/dist/test/index.js.map +1 -1
- package/dist/test/reusable/TableWatcherAuthorityTests.d.ts +13 -0
- package/dist/test/reusable/TableWatcherAuthorityTests.d.ts.map +1 -0
- package/dist/test/reusable/TableWatcherAuthorityTests.js +392 -0
- package/dist/test/reusable/TableWatcherAuthorityTests.js.map +1 -0
- package/dist/test/util/DbTestEnvironment.d.ts.map +1 -1
- package/dist/test/util/DbTestEnvironment.js +3 -2
- package/dist/test/util/DbTestEnvironment.js.map +1 -1
- package/dist/test/util/tables/tableWatcherAuthorityTestTables.d.ts +35 -0
- package/dist/test/util/tables/tableWatcherAuthorityTestTables.d.ts.map +1 -0
- package/dist/test/util/tables/tableWatcherAuthorityTestTables.js +113 -0
- package/dist/test/util/tables/tableWatcherAuthorityTestTables.js.map +1 -0
- package/generated/index.ts +1 -1
- package/generated/test/index.ts +5 -1
- package/package.json +2 -2
- package/src/Db.ts +50 -21
- package/src/TableWatcher.ts +17 -6
- package/src/TableWatcherRunner.ts +25 -12
- package/test/DbIsSystem.test.ts +173 -0
- package/test/index.ts +2 -0
- package/test/reusable/TableWatcherAuthorityTests.ts +204 -0
- package/test/util/DbTestEnvironment.ts +2 -0
- package/test/util/tables/tableWatcherAuthorityTestTables.ts +61 -0
|
@@ -43,6 +43,13 @@ var db_query_1 = require("@proteinjs/db-query");
|
|
|
43
43
|
var getEnvVar = function (key) {
|
|
44
44
|
return typeof process !== 'undefined' && process.env ? process.env[key] : undefined;
|
|
45
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* Runs a table's watchers around a write. Every hook is handed `db`, the Db the invoking write
|
|
48
|
+
* made for its hooks (`Db.newHookDb`): the write's driver, tables and transaction context AND its
|
|
49
|
+
* system mode, so a watcher's own reads and writes carry the authority of the write that fired
|
|
50
|
+
* it. A watcher never opens a Db of its own for the write's follow-on — a session-scoped Db ran
|
|
51
|
+
* as whoever the session held, which refused a system write's follow-on in a background context.
|
|
52
|
+
*/
|
|
46
53
|
var TableWatcherRunner = /** @class */ (function () {
|
|
47
54
|
function TableWatcherRunner() {
|
|
48
55
|
this.logger = new logger_1.Logger({ name: this.constructor.name, logLevel: getEnvVar('DB_LOG_LEVEL') });
|
|
@@ -50,7 +57,7 @@ var TableWatcherRunner = /** @class */ (function () {
|
|
|
50
57
|
TableWatcherRunner.tableWatcherMap = (0, TableWatcher_1.getTableWatcherMap)();
|
|
51
58
|
}
|
|
52
59
|
}
|
|
53
|
-
TableWatcherRunner.prototype.runBeforeInsertTableWatchers = function (table, record) {
|
|
60
|
+
TableWatcherRunner.prototype.runBeforeInsertTableWatchers = function (table, record, db) {
|
|
54
61
|
return __awaiter(this, void 0, void 0, function () {
|
|
55
62
|
var tableWatcherMap, tableWatchers, updatedRecord, _i, tableWatchers_1, tableWatcher;
|
|
56
63
|
return __generator(this, function (_a) {
|
|
@@ -72,7 +79,7 @@ var TableWatcherRunner = /** @class */ (function () {
|
|
|
72
79
|
if (!(_i < tableWatchers_1.length)) return [3 /*break*/, 4];
|
|
73
80
|
tableWatcher = tableWatchers_1[_i];
|
|
74
81
|
this.logger.info({ message: "(".concat(table.name, ") Running ").concat(tableWatcher.name(), ".beforeInsert") });
|
|
75
|
-
return [4 /*yield*/, tableWatcher.beforeInsert(updatedRecord)];
|
|
82
|
+
return [4 /*yield*/, tableWatcher.beforeInsert(updatedRecord, db)];
|
|
76
83
|
case 2:
|
|
77
84
|
updatedRecord = _a.sent();
|
|
78
85
|
this.logger.info({ message: "(".concat(table.name, ") Finished running ").concat(tableWatcher.name(), ".beforeInsert") });
|
|
@@ -87,7 +94,7 @@ var TableWatcherRunner = /** @class */ (function () {
|
|
|
87
94
|
});
|
|
88
95
|
});
|
|
89
96
|
};
|
|
90
|
-
TableWatcherRunner.prototype.runAfterInsertTableWatchers = function (table, record) {
|
|
97
|
+
TableWatcherRunner.prototype.runAfterInsertTableWatchers = function (table, record, db) {
|
|
91
98
|
return __awaiter(this, void 0, void 0, function () {
|
|
92
99
|
var tableWatcherMap, tableWatchers, _i, tableWatchers_2, tableWatcher;
|
|
93
100
|
return __generator(this, function (_a) {
|
|
@@ -108,7 +115,7 @@ var TableWatcherRunner = /** @class */ (function () {
|
|
|
108
115
|
if (!(_i < tableWatchers_2.length)) return [3 /*break*/, 4];
|
|
109
116
|
tableWatcher = tableWatchers_2[_i];
|
|
110
117
|
this.logger.info({ message: "(".concat(table.name, ") Running ").concat(tableWatcher.name(), ".afterInsert") });
|
|
111
|
-
return [4 /*yield*/, tableWatcher.afterInsert(record)];
|
|
118
|
+
return [4 /*yield*/, tableWatcher.afterInsert(record, db)];
|
|
112
119
|
case 2:
|
|
113
120
|
_a.sent();
|
|
114
121
|
this.logger.info({ message: "(".concat(table.name, ") Finished running ").concat(tableWatcher.name(), ".afterInsert") });
|
|
@@ -123,7 +130,7 @@ var TableWatcherRunner = /** @class */ (function () {
|
|
|
123
130
|
});
|
|
124
131
|
});
|
|
125
132
|
};
|
|
126
|
-
TableWatcherRunner.prototype.runBeforeUpdateTableWatchers = function (table, record, qb) {
|
|
133
|
+
TableWatcherRunner.prototype.runBeforeUpdateTableWatchers = function (table, record, qb, db) {
|
|
127
134
|
return __awaiter(this, void 0, void 0, function () {
|
|
128
135
|
var tableWatcherMap, tableWatchers, qbCopy, updatedRecord, _i, tableWatchers_3, tableWatcher;
|
|
129
136
|
return __generator(this, function (_a) {
|
|
@@ -146,7 +153,7 @@ var TableWatcherRunner = /** @class */ (function () {
|
|
|
146
153
|
if (!(_i < tableWatchers_3.length)) return [3 /*break*/, 4];
|
|
147
154
|
tableWatcher = tableWatchers_3[_i];
|
|
148
155
|
this.logger.info({ message: "(".concat(table.name, ") Running ").concat(tableWatcher.name(), ".beforeUpdate") });
|
|
149
|
-
return [4 /*yield*/, tableWatcher.beforeUpdate(updatedRecord, qbCopy)];
|
|
156
|
+
return [4 /*yield*/, tableWatcher.beforeUpdate(updatedRecord, qbCopy, db)];
|
|
150
157
|
case 2:
|
|
151
158
|
updatedRecord = _a.sent();
|
|
152
159
|
this.logger.info({ message: "(".concat(table.name, ") Finished running ").concat(tableWatcher.name(), ".beforeUpdate") });
|
|
@@ -161,7 +168,7 @@ var TableWatcherRunner = /** @class */ (function () {
|
|
|
161
168
|
});
|
|
162
169
|
});
|
|
163
170
|
};
|
|
164
|
-
TableWatcherRunner.prototype.runAfterUpdateTableWatchers = function (table, recordUpdateCount, record, qb) {
|
|
171
|
+
TableWatcherRunner.prototype.runAfterUpdateTableWatchers = function (table, recordUpdateCount, record, qb, db) {
|
|
165
172
|
return __awaiter(this, void 0, void 0, function () {
|
|
166
173
|
var tableWatcherMap, tableWatchers, qbCopy, _i, tableWatchers_4, tableWatcher;
|
|
167
174
|
return __generator(this, function (_a) {
|
|
@@ -183,7 +190,7 @@ var TableWatcherRunner = /** @class */ (function () {
|
|
|
183
190
|
if (!(_i < tableWatchers_4.length)) return [3 /*break*/, 4];
|
|
184
191
|
tableWatcher = tableWatchers_4[_i];
|
|
185
192
|
this.logger.info({ message: "(".concat(table.name, ") Running ").concat(tableWatcher.name(), ".afterUpdate") });
|
|
186
|
-
return [4 /*yield*/, tableWatcher.afterUpdate(recordUpdateCount, record, qbCopy)];
|
|
193
|
+
return [4 /*yield*/, tableWatcher.afterUpdate(recordUpdateCount, record, qbCopy, db)];
|
|
187
194
|
case 2:
|
|
188
195
|
_a.sent();
|
|
189
196
|
this.logger.info({ message: "(".concat(table.name, ") Finished running ").concat(tableWatcher.name(), ".afterUpdate") });
|
|
@@ -198,7 +205,7 @@ var TableWatcherRunner = /** @class */ (function () {
|
|
|
198
205
|
});
|
|
199
206
|
});
|
|
200
207
|
};
|
|
201
|
-
TableWatcherRunner.prototype.runBeforeDeleteTableWatchers = function (table, recordsToDelete, initialQb, deleteQb) {
|
|
208
|
+
TableWatcherRunner.prototype.runBeforeDeleteTableWatchers = function (table, recordsToDelete, initialQb, deleteQb, db) {
|
|
202
209
|
return __awaiter(this, void 0, void 0, function () {
|
|
203
210
|
var tableWatcherMap, tableWatchers, initialQbCopy, _i, tableWatchers_5, tableWatcher;
|
|
204
211
|
return __generator(this, function (_a) {
|
|
@@ -220,7 +227,7 @@ var TableWatcherRunner = /** @class */ (function () {
|
|
|
220
227
|
if (!(_i < tableWatchers_5.length)) return [3 /*break*/, 4];
|
|
221
228
|
tableWatcher = tableWatchers_5[_i];
|
|
222
229
|
this.logger.info({ message: "(".concat(table.name, ") Running ").concat(tableWatcher.name(), ".beforeDelete") });
|
|
223
|
-
return [4 /*yield*/, tableWatcher.beforeDelete(recordsToDelete, initialQbCopy, deleteQb)];
|
|
230
|
+
return [4 /*yield*/, tableWatcher.beforeDelete(recordsToDelete, initialQbCopy, deleteQb, db)];
|
|
224
231
|
case 2:
|
|
225
232
|
_a.sent();
|
|
226
233
|
this.logger.info({ message: "(".concat(table.name, ") Finished running ").concat(tableWatcher.name(), ".beforeDelete") });
|
|
@@ -235,7 +242,7 @@ var TableWatcherRunner = /** @class */ (function () {
|
|
|
235
242
|
});
|
|
236
243
|
});
|
|
237
244
|
};
|
|
238
|
-
TableWatcherRunner.prototype.runAfterDeleteTableWatchers = function (table, recordDeleteCount, deletedRecords, initialQb, deleteQb) {
|
|
245
|
+
TableWatcherRunner.prototype.runAfterDeleteTableWatchers = function (table, recordDeleteCount, deletedRecords, initialQb, deleteQb, db) {
|
|
239
246
|
return __awaiter(this, void 0, void 0, function () {
|
|
240
247
|
var tableWatcherMap, tableWatchers, initialQbCopy, _i, tableWatchers_6, tableWatcher;
|
|
241
248
|
return __generator(this, function (_a) {
|
|
@@ -257,7 +264,7 @@ var TableWatcherRunner = /** @class */ (function () {
|
|
|
257
264
|
if (!(_i < tableWatchers_6.length)) return [3 /*break*/, 4];
|
|
258
265
|
tableWatcher = tableWatchers_6[_i];
|
|
259
266
|
this.logger.info({ message: "(".concat(table.name, ") Running ").concat(tableWatcher.name(), ".afterDelete") });
|
|
260
|
-
return [4 /*yield*/, tableWatcher.afterDelete(recordDeleteCount, deletedRecords, initialQbCopy, deleteQb)];
|
|
267
|
+
return [4 /*yield*/, tableWatcher.afterDelete(recordDeleteCount, deletedRecords, initialQbCopy, deleteQb, db)];
|
|
261
268
|
case 2:
|
|
262
269
|
_a.sent();
|
|
263
270
|
this.logger.info({ message: "(".concat(table.name, ") Finished running ").concat(tableWatcher.name(), ".afterDelete") });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableWatcherRunner.js","sourceRoot":"","sources":["../../src/TableWatcherRunner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA2C;AAC3C,+CAAqE;
|
|
1
|
+
{"version":3,"file":"TableWatcherRunner.js","sourceRoot":"","sources":["../../src/TableWatcherRunner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA2C;AAC3C,+CAAqE;AAIrE,gDAAmD;AAEnD,IAAM,SAAS,GAAG,UAAC,GAAW;IAC5B,OAAA,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;AAA5E,CAA4E,CAAC;AAE/E;;;;;;GAMG;AACH;IAIE;QAFQ,WAAM,GAAG,IAAI,eAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,cAAc,CAAQ,EAAE,CAAC,CAAC;QAGvG,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE;YACvC,kBAAkB,CAAC,eAAe,GAAG,IAAA,iCAAkB,GAAE,CAAC;SAC3D;IACH,CAAC;IAEK,yDAA4B,GAAlC,UACE,KAAe,EACf,MAAwB,EACxB,EAAM;;;;;;wBAEA,eAAe,GAAG,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACvE,IAAI,CAAC,eAAe,EAAE;4BACpB,sBAAO,MAAM,EAAC;yBACf;wBAEK,aAAa,GAAG,eAAe,CAAC,YAAY,CAAC;wBACnD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC9B,sBAAO,MAAM,EAAC;yBACf;wBAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,2CAAwC,EAAE,CAAC,CAAC;wBAClF,aAAa,GAAQ,MAAM,CAAC;8BACQ,EAAb,+BAAa;;;6BAAb,CAAA,2BAAa,CAAA;wBAA7B,YAAY;wBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,uBAAa,YAAY,CAAC,IAAI,EAAE,kBAAe,EAAE,CAAC,CAAC;wBAC7E,qBAAM,YAAY,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC,EAAA;;wBAAlE,aAAa,GAAG,SAAkD,CAAC;wBACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,gCAAsB,YAAY,CAAC,IAAI,EAAE,kBAAe,EAAE,CAAC,CAAC;;;wBAH7E,IAAa,CAAA;;;wBAKxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,oDAAiD,EAAE,CAAC,CAAC;wBAE/F,sBAAO,aAAa,EAAC;;;;KACtB;IAEK,wDAA2B,GAAjC,UAA+C,KAAe,EAAE,MAAS,EAAE,EAAM;;;;;;wBACzE,eAAe,GAAG,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACvE,IAAI,CAAC,eAAe,EAAE;4BACpB,sBAAO;yBACR;wBAEK,aAAa,GAAG,eAAe,CAAC,WAAW,CAAC;wBAClD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC9B,sBAAO;yBACR;wBAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,0CAAuC,EAAE,CAAC,CAAC;8BAC7C,EAAb,+BAAa;;;6BAAb,CAAA,2BAAa,CAAA;wBAA7B,YAAY;wBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,uBAAa,YAAY,CAAC,IAAI,EAAE,iBAAc,EAAE,CAAC,CAAC;wBAC5F,qBAAM,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAA;;wBAA1C,SAA0C,CAAC;wBAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,gCAAsB,YAAY,CAAC,IAAI,EAAE,iBAAc,EAAE,CAAC,CAAC;;;wBAH5E,IAAa,CAAA;;;wBAKxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,mDAAgD,EAAE,CAAC,CAAC;;;;;KAC/F;IAEK,yDAA4B,GAAlC,UACE,KAAe,EACf,MAAkB,EAClB,EAAmB,EACnB,EAAM;;;;;;wBAEA,eAAe,GAAG,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACvE,IAAI,CAAC,eAAe,EAAE;4BACpB,sBAAO,MAAM,EAAC;yBACf;wBAEK,aAAa,GAAG,eAAe,CAAC,YAAY,CAAC;wBACnD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC9B,sBAAO,MAAM,EAAC;yBACf;wBAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,2CAAwC,EAAE,CAAC,CAAC;wBAChF,MAAM,GAAG,uBAAY,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;wBACzD,aAAa,GAAQ,MAAM,CAAC;8BACQ,EAAb,+BAAa;;;6BAAb,CAAA,2BAAa,CAAA;wBAA7B,YAAY;wBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,uBAAa,YAAY,CAAC,IAAI,EAAE,kBAAe,EAAE,CAAC,CAAC;wBAC7E,qBAAM,YAAY,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC,EAAA;;wBAA1E,aAAa,GAAG,SAA0D,CAAC;wBAC3E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,gCAAsB,YAAY,CAAC,IAAI,EAAE,kBAAe,EAAE,CAAC,CAAC;;;wBAH7E,IAAa,CAAA;;;wBAKxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,oDAAiD,EAAE,CAAC,CAAC;wBAE/F,sBAAO,aAAa,EAAC;;;;KACtB;IAEK,wDAA2B,GAAjC,UACE,KAAe,EACf,iBAAyB,EACzB,MAAkB,EAClB,EAAmB,EACnB,EAAM;;;;;;wBAEA,eAAe,GAAG,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACvE,IAAI,CAAC,eAAe,EAAE;4BACpB,sBAAO;yBACR;wBAEK,aAAa,GAAG,eAAe,CAAC,WAAW,CAAC;wBAClD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC9B,sBAAO;yBACR;wBAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,0CAAuC,EAAE,CAAC,CAAC;wBAC/E,MAAM,GAAG,uBAAY,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;8BACrB,EAAb,+BAAa;;;6BAAb,CAAA,2BAAa,CAAA;wBAA7B,YAAY;wBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,uBAAa,YAAY,CAAC,IAAI,EAAE,iBAAc,EAAE,CAAC,CAAC;wBAC5F,qBAAM,YAAY,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAA;;wBAArE,SAAqE,CAAC;wBACtE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,gCAAsB,YAAY,CAAC,IAAI,EAAE,iBAAc,EAAE,CAAC,CAAC;;;wBAH5E,IAAa,CAAA;;;wBAKxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,mDAAgD,EAAE,CAAC,CAAC;;;;;KAC/F;IAEK,yDAA4B,GAAlC,UACE,KAAe,EACf,eAAoB,EACpB,SAA0B,EAC1B,QAAyB,EACzB,EAAM;;;;;;wBAEA,eAAe,GAAG,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACvE,IAAI,CAAC,eAAe,EAAE;4BACpB,sBAAO;yBACR;wBAEK,aAAa,GAAG,eAAe,CAAC,YAAY,CAAC;wBACnD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC9B,sBAAO;yBACR;wBAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,2CAAwC,EAAE,CAAC,CAAC;wBAChF,aAAa,GAAG,uBAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;8BACnC,EAAb,+BAAa;;;6BAAb,CAAA,2BAAa,CAAA;wBAA7B,YAAY;wBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,uBAAa,YAAY,CAAC,IAAI,EAAE,kBAAe,EAAE,CAAC,CAAC;wBAC7F,qBAAM,YAAY,CAAC,YAAY,CAAC,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAA;;wBAA7E,SAA6E,CAAC;wBAC9E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,gCAAsB,YAAY,CAAC,IAAI,EAAE,kBAAe,EAAE,CAAC,CAAC;;;wBAH7E,IAAa,CAAA;;;wBAKxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,oDAAiD,EAAE,CAAC,CAAC;;;;;KAChG;IAEK,wDAA2B,GAAjC,UACE,KAAe,EACf,iBAAyB,EACzB,cAAmB,EACnB,SAA0B,EAC1B,QAAyB,EACzB,EAAM;;;;;;wBAEA,eAAe,GAAG,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACvE,IAAI,CAAC,eAAe,EAAE;4BACpB,sBAAO;yBACR;wBAEK,aAAa,GAAG,eAAe,CAAC,WAAW,CAAC;wBAClD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC9B,sBAAO;yBACR;wBAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,0CAAuC,EAAE,CAAC,CAAC;wBAC/E,aAAa,GAAG,uBAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;8BACnC,EAAb,+BAAa;;;6BAAb,CAAA,2BAAa,CAAA;wBAA7B,YAAY;wBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,uBAAa,YAAY,CAAC,IAAI,EAAE,iBAAc,EAAE,CAAC,CAAC;wBAC5F,qBAAM,YAAY,CAAC,WAAW,CAAC,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAA;;wBAA9F,SAA8F,CAAC;wBAC/F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,gCAAsB,YAAY,CAAC,IAAI,EAAE,iBAAc,EAAE,CAAC,CAAC;;;wBAH5E,IAAa,CAAA;;;wBAKxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,mDAAgD,EAAE,CAAC,CAAC;;;;;KAC/F;IACH,yBAAC;AAAD,CAAC,AAvKD,IAuKC;AAvKY,gDAAkB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DbIsSystem.test.d.ts","sourceRoot":"","sources":["../../test/DbIsSystem.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,280 @@
|
|
|
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
27
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
28
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
29
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
|
+
function step(op) {
|
|
31
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
33
|
+
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;
|
|
34
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
|
+
switch (op[0]) {
|
|
36
|
+
case 0: case 1: t = op; break;
|
|
37
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
38
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
39
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
40
|
+
default:
|
|
41
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
42
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
43
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
44
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
45
|
+
if (t[2]) _.ops.pop();
|
|
46
|
+
_.trys.pop(); continue;
|
|
47
|
+
}
|
|
48
|
+
op = body.call(thisArg, _);
|
|
49
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
50
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
var reflection_1 = require("@proteinjs/reflection");
|
|
55
|
+
var Db_1 = require("../src/Db");
|
|
56
|
+
var Table_1 = require("../src/Table");
|
|
57
|
+
var Record_1 = require("../src/Record");
|
|
58
|
+
var Columns_1 = require("../src/Columns");
|
|
59
|
+
var TableWatcherRunner_1 = require("../src/TableWatcherRunner");
|
|
60
|
+
var DocTable = /** @class */ (function (_super) {
|
|
61
|
+
__extends(DocTable, _super);
|
|
62
|
+
function DocTable() {
|
|
63
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
64
|
+
_this.name = 'is_system_doc';
|
|
65
|
+
/** Every door open to everyone: a session Db reaches the write with no user to resolve. */
|
|
66
|
+
_this.auth = { db: { all: 'public' } };
|
|
67
|
+
_this.columns = (0, Record_1.withRecordColumns)({
|
|
68
|
+
title: new Columns_1.StringColumn('title'),
|
|
69
|
+
});
|
|
70
|
+
return _this;
|
|
71
|
+
}
|
|
72
|
+
return DocTable;
|
|
73
|
+
}(Table_1.Table));
|
|
74
|
+
var docTable = new DocTable();
|
|
75
|
+
/** What each hook was handed: the mode of its trailing Db. */
|
|
76
|
+
var handed = [];
|
|
77
|
+
var ModeRecordingWatcher = /** @class */ (function () {
|
|
78
|
+
function ModeRecordingWatcher() {
|
|
79
|
+
}
|
|
80
|
+
ModeRecordingWatcher.prototype.name = function () {
|
|
81
|
+
return 'ModeRecordingWatcher';
|
|
82
|
+
};
|
|
83
|
+
ModeRecordingWatcher.prototype.table = function () {
|
|
84
|
+
return docTable;
|
|
85
|
+
};
|
|
86
|
+
ModeRecordingWatcher.prototype.beforeInsert = function (record, db) {
|
|
87
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
88
|
+
return __generator(this, function (_a) {
|
|
89
|
+
handed.push({ phase: 'beforeInsert', mode: db === null || db === void 0 ? void 0 : db.isSystem() });
|
|
90
|
+
return [2 /*return*/, record];
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
ModeRecordingWatcher.prototype.afterInsert = function (_record, db) {
|
|
95
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
96
|
+
return __generator(this, function (_a) {
|
|
97
|
+
handed.push({ phase: 'afterInsert', mode: db === null || db === void 0 ? void 0 : db.isSystem() });
|
|
98
|
+
return [2 /*return*/];
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
return ModeRecordingWatcher;
|
|
103
|
+
}());
|
|
104
|
+
var TestTransactionContextFactory = /** @class */ (function () {
|
|
105
|
+
function TestTransactionContextFactory() {
|
|
106
|
+
this.context = {};
|
|
107
|
+
}
|
|
108
|
+
TestTransactionContextFactory.prototype.getTransactionContext = function () {
|
|
109
|
+
return this.context;
|
|
110
|
+
};
|
|
111
|
+
TestTransactionContextFactory.prototype.runInContext = function (context, fn) {
|
|
112
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
113
|
+
var previous;
|
|
114
|
+
return __generator(this, function (_a) {
|
|
115
|
+
switch (_a.label) {
|
|
116
|
+
case 0:
|
|
117
|
+
previous = this.context;
|
|
118
|
+
this.context = context;
|
|
119
|
+
_a.label = 1;
|
|
120
|
+
case 1:
|
|
121
|
+
_a.trys.push([1, , 3, 4]);
|
|
122
|
+
return [4 /*yield*/, fn()];
|
|
123
|
+
case 2: return [2 /*return*/, _a.sent()];
|
|
124
|
+
case 3:
|
|
125
|
+
this.context = previous;
|
|
126
|
+
return [7 /*endfinally*/];
|
|
127
|
+
case 4: return [2 /*return*/];
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
return TestTransactionContextFactory;
|
|
133
|
+
}());
|
|
134
|
+
/** Accepts every statement; no database behind it. */
|
|
135
|
+
var AcceptingDriver = /** @class */ (function () {
|
|
136
|
+
function AcceptingDriver() {
|
|
137
|
+
}
|
|
138
|
+
AcceptingDriver.prototype.getDbName = function () {
|
|
139
|
+
return 'test';
|
|
140
|
+
};
|
|
141
|
+
AcceptingDriver.prototype.createDbIfNotExists = function () {
|
|
142
|
+
return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
143
|
+
return [2 /*return*/];
|
|
144
|
+
}); });
|
|
145
|
+
};
|
|
146
|
+
AcceptingDriver.prototype.createDb = function () {
|
|
147
|
+
return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
148
|
+
return [2 /*return*/];
|
|
149
|
+
}); });
|
|
150
|
+
};
|
|
151
|
+
AcceptingDriver.prototype.dropDb = function () {
|
|
152
|
+
return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
153
|
+
return [2 /*return*/];
|
|
154
|
+
}); });
|
|
155
|
+
};
|
|
156
|
+
AcceptingDriver.prototype.getTableManager = function () {
|
|
157
|
+
throw new Error('not used by these tests');
|
|
158
|
+
};
|
|
159
|
+
AcceptingDriver.prototype.runQuery = function () {
|
|
160
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
161
|
+
return __generator(this, function (_a) {
|
|
162
|
+
return [2 /*return*/, []];
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
AcceptingDriver.prototype.runDml = function (generateStatement) {
|
|
167
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
168
|
+
return __generator(this, function (_a) {
|
|
169
|
+
generateStatement({
|
|
170
|
+
useParams: true,
|
|
171
|
+
useNamedParams: true,
|
|
172
|
+
prefixTablesWithDb: false,
|
|
173
|
+
getDriverColumnType: function () { return 'STRING(MAX)'; },
|
|
174
|
+
});
|
|
175
|
+
return [2 /*return*/, 1];
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
AcceptingDriver.prototype.runTransaction = function (fn) {
|
|
180
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
181
|
+
return __generator(this, function (_a) {
|
|
182
|
+
switch (_a.label) {
|
|
183
|
+
case 0: return [4 /*yield*/, fn({ id: 'transaction' })];
|
|
184
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
};
|
|
189
|
+
AcceptingDriver.prototype.getOperationDeadlineMs = function () {
|
|
190
|
+
return 1000;
|
|
191
|
+
};
|
|
192
|
+
return AcceptingDriver;
|
|
193
|
+
}());
|
|
194
|
+
var objectCache = function () { return reflection_1.SourceRepository.get().objectCache; };
|
|
195
|
+
var DEFAULT_DRIVER_GLOBAL = '__proteinjs_db_defaultDbDriver';
|
|
196
|
+
var driver = new AcceptingDriver();
|
|
197
|
+
var transactions = new TestTransactionContextFactory();
|
|
198
|
+
var modesHandedBy = function (db) { return __awaiter(void 0, void 0, void 0, function () {
|
|
199
|
+
return __generator(this, function (_a) {
|
|
200
|
+
switch (_a.label) {
|
|
201
|
+
case 0:
|
|
202
|
+
handed.length = 0;
|
|
203
|
+
return [4 /*yield*/, db.insert(docTable, { title: 'row' })];
|
|
204
|
+
case 1:
|
|
205
|
+
_a.sent();
|
|
206
|
+
expect(handed.map(function (_a) {
|
|
207
|
+
var phase = _a.phase;
|
|
208
|
+
return phase;
|
|
209
|
+
})).toEqual(['beforeInsert', 'afterInsert']);
|
|
210
|
+
return [2 /*return*/, handed.map(function (_a) {
|
|
211
|
+
var mode = _a.mode;
|
|
212
|
+
return mode;
|
|
213
|
+
})];
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
}); };
|
|
217
|
+
describe('Db.isSystem', function () {
|
|
218
|
+
var originalWatchers;
|
|
219
|
+
var originalFactories;
|
|
220
|
+
var originalTransactionFactories;
|
|
221
|
+
beforeAll(function () {
|
|
222
|
+
originalWatchers = objectCache()['@proteinjs/db/TableWatcher'];
|
|
223
|
+
originalFactories = objectCache()['@proteinjs/db/DefaultDbDriverFactory'];
|
|
224
|
+
originalTransactionFactories = objectCache()['@proteinjs/db/DefaultTransactionContextFactory'];
|
|
225
|
+
objectCache()['@proteinjs/db/TableWatcher'] = [new ModeRecordingWatcher()];
|
|
226
|
+
// The public factories resolve their driver and transaction context through reflection.
|
|
227
|
+
objectCache()['@proteinjs/db/DefaultDbDriverFactory'] = [{ getDbDriver: function () { return driver; } }];
|
|
228
|
+
objectCache()['@proteinjs/db/DefaultTransactionContextFactory'] = [transactions];
|
|
229
|
+
delete globalThis[DEFAULT_DRIVER_GLOBAL];
|
|
230
|
+
TableWatcherRunner_1.TableWatcherRunner.tableWatcherMap = undefined;
|
|
231
|
+
});
|
|
232
|
+
afterAll(function () {
|
|
233
|
+
var restore = function (name, original) {
|
|
234
|
+
if (original) {
|
|
235
|
+
objectCache()[name] = original;
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
delete objectCache()[name];
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
restore('@proteinjs/db/TableWatcher', originalWatchers);
|
|
242
|
+
restore('@proteinjs/db/DefaultDbDriverFactory', originalFactories);
|
|
243
|
+
restore('@proteinjs/db/DefaultTransactionContextFactory', originalTransactionFactories);
|
|
244
|
+
delete globalThis[DEFAULT_DRIVER_GLOBAL];
|
|
245
|
+
TableWatcherRunner_1.TableWatcherRunner.tableWatcherMap = undefined;
|
|
246
|
+
});
|
|
247
|
+
test('a system Db answers true, a session Db false — on the public factories and on the constructor', function () {
|
|
248
|
+
expect((0, Db_1.getDbAsSystem)().isSystem()).toBe(true);
|
|
249
|
+
expect((0, Db_1.getDb)().isSystem()).toBe(false);
|
|
250
|
+
expect(new Db_1.Db(driver, function () { return docTable; }, transactions, true).isSystem()).toBe(true);
|
|
251
|
+
expect(new Db_1.Db(driver, function () { return docTable; }, transactions).isSystem()).toBe(false);
|
|
252
|
+
});
|
|
253
|
+
test("the Db a write hands its watchers answers for THAT write: a system write's hooks read true", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
254
|
+
var _a;
|
|
255
|
+
return __generator(this, function (_b) {
|
|
256
|
+
switch (_b.label) {
|
|
257
|
+
case 0:
|
|
258
|
+
_a = expect;
|
|
259
|
+
return [4 /*yield*/, modesHandedBy((0, Db_1.getDbAsSystem)())];
|
|
260
|
+
case 1:
|
|
261
|
+
_a.apply(void 0, [_b.sent()]).toEqual([true, true]);
|
|
262
|
+
return [2 /*return*/];
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
}); });
|
|
266
|
+
test("the Db a write hands its watchers answers for THAT write: a session write's hooks read false", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
267
|
+
var _a;
|
|
268
|
+
return __generator(this, function (_b) {
|
|
269
|
+
switch (_b.label) {
|
|
270
|
+
case 0:
|
|
271
|
+
_a = expect;
|
|
272
|
+
return [4 /*yield*/, modesHandedBy((0, Db_1.getDb)())];
|
|
273
|
+
case 1:
|
|
274
|
+
_a.apply(void 0, [_b.sent()]).toEqual([false, false]);
|
|
275
|
+
return [2 /*return*/];
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
}); });
|
|
279
|
+
});
|
|
280
|
+
//# sourceMappingURL=DbIsSystem.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DbIsSystem.test.js","sourceRoot":"","sources":["../../test/DbIsSystem.test.ts"],"names":[],"mappings":"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"}
|
package/dist/test/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from './reusable/PreloadReferencesTests';
|
|
|
8
8
|
export * from './reusable/RecordIteratorTests';
|
|
9
9
|
export * from './reusable/SourceRecordSyncTests';
|
|
10
10
|
export * from './reusable/StoredValueContractTests';
|
|
11
|
+
export * from './reusable/TableWatcherAuthorityTests';
|
|
11
12
|
export * from './util/testUser';
|
|
12
13
|
export * from './util/tables/cascadeDeleteTestTables';
|
|
13
14
|
export * from './util/tables/columnTypesTestTables';
|
|
@@ -17,5 +18,6 @@ export * from './util/tables/recordIteratorTestTables';
|
|
|
17
18
|
export * from './util/tables/sourceRecordSyncTestTables';
|
|
18
19
|
export * from './util/tables/storedValueContractTestTables';
|
|
19
20
|
export * from './util/tables/tableManagerTestTables';
|
|
21
|
+
export * from './util/tables/tableWatcherAuthorityTestTables';
|
|
20
22
|
export * from './util/tables/transactionTestTables';
|
|
21
23
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/test/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wCAAwC,CAAC;AACvD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wCAAwC,CAAC;AACvD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC;AAEtD,cAAc,iBAAiB,CAAC;AAEhC,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC;AACzD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,sCAAsC,CAAC;AACrD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,qCAAqC,CAAC"}
|
package/dist/test/index.js
CHANGED
|
@@ -24,6 +24,7 @@ __exportStar(require("./reusable/PreloadReferencesTests"), exports);
|
|
|
24
24
|
__exportStar(require("./reusable/RecordIteratorTests"), exports);
|
|
25
25
|
__exportStar(require("./reusable/SourceRecordSyncTests"), exports);
|
|
26
26
|
__exportStar(require("./reusable/StoredValueContractTests"), exports);
|
|
27
|
+
__exportStar(require("./reusable/TableWatcherAuthorityTests"), exports);
|
|
27
28
|
__exportStar(require("./util/testUser"), exports);
|
|
28
29
|
__exportStar(require("./util/tables/cascadeDeleteTestTables"), exports);
|
|
29
30
|
__exportStar(require("./util/tables/columnTypesTestTables"), exports);
|
|
@@ -33,5 +34,6 @@ __exportStar(require("./util/tables/recordIteratorTestTables"), exports);
|
|
|
33
34
|
__exportStar(require("./util/tables/sourceRecordSyncTestTables"), exports);
|
|
34
35
|
__exportStar(require("./util/tables/storedValueContractTestTables"), exports);
|
|
35
36
|
__exportStar(require("./util/tables/tableManagerTestTables"), exports);
|
|
37
|
+
__exportStar(require("./util/tables/tableWatcherAuthorityTestTables"), exports);
|
|
36
38
|
__exportStar(require("./util/tables/transactionTestTables"), exports);
|
|
37
39
|
//# sourceMappingURL=index.js.map
|
package/dist/test/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,uDAAqC;AACrC,8DAA4C;AAC5C,yEAAuD;AACvD,8DAA4C;AAC5C,gEAA8C;AAC9C,oEAAkD;AAClD,iEAA+C;AAC/C,mEAAiD;AACjD,sEAAoD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,uDAAqC;AACrC,8DAA4C;AAC5C,yEAAuD;AACvD,8DAA4C;AAC5C,gEAA8C;AAC9C,oEAAkD;AAClD,iEAA+C;AAC/C,mEAAiD;AACjD,sEAAoD;AACpD,wEAAsD;AAEtD,kDAAgC;AAEhC,wEAAsD;AACtD,sEAAoD;AACpD,+DAA6C;AAC7C,iFAA+D;AAC/D,yEAAuD;AACvD,2EAAyD;AACzD,8EAA4D;AAC5D,uEAAqD;AACrD,gFAA8D;AAC9D,sEAAoD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DbDriver, Table, DefaultTransactionContextFactory } from '@proteinjs/db';
|
|
2
|
+
/** The watcher's refusal when a hook arrives without the write's Db — the contract's first half. */
|
|
3
|
+
export declare const HOOK_HANDED_NO_DB = "the hook was handed no Db";
|
|
4
|
+
/**
|
|
5
|
+
* A table watcher's hooks run with the authority of the write that fired them: the Db hands every
|
|
6
|
+
* hook a Db carrying its driver, tables, transaction context and system mode. Before this the
|
|
7
|
+
* hooks were handed nothing and each watcher opened a session-scoped Db of its own, which a system
|
|
8
|
+
* write in a session-less context (an account purge, a sweep) could not use — the topic links of a
|
|
9
|
+
* purged message and the file of a system-deleted media row stayed behind, and the activity bump
|
|
10
|
+
* of a system-inserted message threw.
|
|
11
|
+
*/
|
|
12
|
+
export declare const tableWatcherAuthorityTests: (driver: DbDriver, transactionContextFactory: DefaultTransactionContextFactory, dropTable: (table: Table<any>) => Promise<void>) => () => void;
|
|
13
|
+
//# sourceMappingURL=TableWatcherAuthorityTests.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableWatcherAuthorityTests.d.ts","sourceRoot":"","sources":["../../../test/reusable/TableWatcherAuthorityTests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,QAAQ,EAAE,KAAK,EAAgB,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAmBpG,oGAAoG;AACpG,eAAO,MAAM,iBAAiB,8BAA8B,CAAC;AA2F7D;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,WAC7B,QAAQ,6BACW,gCAAgC,qBACxC,MAAM,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,eAiFhD,CAAC"}
|