@proteinjs/db 1.50.1 → 1.51.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/test/index.js +1 -1
- package/dist/src/auth/TableAuth.d.ts +9 -2
- package/dist/src/auth/TableAuth.d.ts.map +1 -1
- package/dist/src/auth/TableAuth.js +26 -11
- package/dist/src/auth/TableAuth.js.map +1 -1
- package/dist/src/services/DbService.d.ts +7 -0
- package/dist/src/services/DbService.d.ts.map +1 -1
- package/dist/src/services/DbService.js +13 -1
- package/dist/src/services/DbService.js.map +1 -1
- package/dist/test/DbServiceRetryDeclaration.test.d.ts +2 -0
- package/dist/test/DbServiceRetryDeclaration.test.d.ts.map +1 -0
- package/dist/test/DbServiceRetryDeclaration.test.js +139 -0
- package/dist/test/DbServiceRetryDeclaration.test.js.map +1 -0
- package/dist/test/TableAuthIdentity.test.js +134 -8
- package/dist/test/TableAuthIdentity.test.js.map +1 -1
- package/generated/test/index.ts +1 -1
- package/package.json +3 -3
- package/src/auth/TableAuth.ts +26 -11
- package/src/services/DbService.ts +13 -1
- package/test/DbServiceRetryDeclaration.test.ts +105 -0
- package/test/TableAuthIdentity.test.ts +129 -9
|
@@ -63,8 +63,15 @@ export declare class TableAuth {
|
|
|
63
63
|
*/
|
|
64
64
|
canDelete(table: Table<any>, api?: 'db' | 'service'): void;
|
|
65
65
|
private canAccess;
|
|
66
|
-
/**
|
|
67
|
-
|
|
66
|
+
/**
|
|
67
|
+
* The mirror: the service block's door for `operation` (its `all` and its own entry, as the RPC
|
|
68
|
+
* gate reads them) where every identity it declares is exactly `['admin']` admits the admin
|
|
69
|
+
* here too; a door declared any wider, or not at all, mirrors nothing. A table with no service
|
|
70
|
+
* block declares no door to mirror.
|
|
71
|
+
*/
|
|
72
|
+
private mirrorsAdminOnlyServiceDoor;
|
|
73
|
+
/** A roles list naming the admin role and nothing else. */
|
|
74
|
+
private isAdminOnly;
|
|
68
75
|
/** One identity against the current user; undefined (nothing declared) is not a grant. */
|
|
69
76
|
private allows;
|
|
70
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableAuth.d.ts","sourceRoot":"","sources":["../../../src/auth/TableAuth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,eAAe,GAAG,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAKlF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB;;;;;;;;;OASG;IACH,UAAU,CACR,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACnD,GAAG,GAAE,IAAI,GAAG,SAAgB,GAC3B,OAAO;IAQV;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO;IAQvD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAE,IAAI,GAAG,SAAgB,GAAG,IAAI;IAM/D,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAE,IAAI,GAAG,SAAgB,GAAG,IAAI;IAMhE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAE,IAAI,GAAG,SAAgB,GAAG,IAAI;IAMhE;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAE,IAAI,GAAG,SAAgB,GAAG,IAAI;IAUhE,OAAO,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"TableAuth.d.ts","sourceRoot":"","sources":["../../../src/auth/TableAuth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,eAAe,GAAG,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAKlF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB;;;;;;;;;OASG;IACH,UAAU,CACR,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACnD,GAAG,GAAE,IAAI,GAAG,SAAgB,GAC3B,OAAO;IAQV;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO;IAQvD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAE,IAAI,GAAG,SAAgB,GAAG,IAAI;IAM/D,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAE,IAAI,GAAG,SAAgB,GAAG,IAAI;IAMhE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAE,IAAI,GAAG,SAAgB,GAAG,IAAI;IAMhE;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAE,IAAI,GAAG,SAAgB,GAAG,IAAI;IAUhE,OAAO,CAAC,SAAS;IAuCjB;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAUnC,2DAA2D;IAC3D,OAAO,CAAC,WAAW;IAInB,0FAA0F;IAC1F,OAAO,CAAC,MAAM;CAef"}
|
|
@@ -124,25 +124,40 @@ var TableAuth = /** @class */ (function () {
|
|
|
124
124
|
return true;
|
|
125
125
|
}
|
|
126
126
|
// ...except that a db door the block leaves UNDECLARED mirrors the door the table's SERVICE
|
|
127
|
-
// block declares for the same operation
|
|
128
|
-
// (TableServiceAuth), then the inner Db's
|
|
129
|
-
//
|
|
130
|
-
//
|
|
131
|
-
//
|
|
132
|
-
//
|
|
133
|
-
//
|
|
127
|
+
// block declares for the same operation — and only where that door admits the admin role
|
|
128
|
+
// ALONE. The RPC runs both doors — the service gate (TableServiceAuth), then the inner Db's
|
|
129
|
+
// db-api re-check as the calling user — so an ['admin'] service write door with no db mirror
|
|
130
|
+
// admitted the admin at the gate and refused them behind it, in the gate's own words ("db
|
|
131
|
+
// doors mirror service doors" was a rule tables hand-copied; the owner derives it). Any wider
|
|
132
|
+
// service door — a permission, a non-admin role, 'authenticated', 'public' — leaves the
|
|
133
|
+
// undeclared db door shut: role privilege and the reach of a permission are different things,
|
|
134
|
+
// so a table that means a wider identity to write through the db api declares that door at
|
|
135
|
+
// the db block itself. One-way: a service block that omits the door keeps the lock (the
|
|
136
|
+
// session / audit-trail pattern — no write door on either api, break-glass included), and a
|
|
137
|
+
// table with no service block keeps its db block as written.
|
|
134
138
|
return api === 'db' && tableAuth.all === undefined && tableAuth[operation] === undefined
|
|
135
|
-
? this.
|
|
139
|
+
? this.mirrorsAdminOnlyServiceDoor(table, operation)
|
|
136
140
|
: false;
|
|
137
141
|
};
|
|
138
|
-
/**
|
|
139
|
-
|
|
142
|
+
/**
|
|
143
|
+
* The mirror: the service block's door for `operation` (its `all` and its own entry, as the RPC
|
|
144
|
+
* gate reads them) where every identity it declares is exactly `['admin']` admits the admin
|
|
145
|
+
* here too; a door declared any wider, or not at all, mirrors nothing. A table with no service
|
|
146
|
+
* block declares no door to mirror.
|
|
147
|
+
*/
|
|
148
|
+
TableAuth.prototype.mirrorsAdminOnlyServiceDoor = function (table, operation) {
|
|
149
|
+
var _this = this;
|
|
140
150
|
var _a;
|
|
141
151
|
var serviceAuth = (_a = table.auth) === null || _a === void 0 ? void 0 : _a.service;
|
|
142
152
|
if (!serviceAuth || Object.keys(serviceAuth).length == 0) {
|
|
143
153
|
return false;
|
|
144
154
|
}
|
|
145
|
-
|
|
155
|
+
var door = [serviceAuth.all, serviceAuth[operation]].filter(function (identity) { return identity !== undefined; });
|
|
156
|
+
return door.length > 0 && door.every(function (identity) { return _this.isAdminOnly(identity); }) && user_auth_1.UserAuth.hasRole('admin');
|
|
157
|
+
};
|
|
158
|
+
/** A roles list naming the admin role and nothing else. */
|
|
159
|
+
TableAuth.prototype.isAdminOnly = function (identity) {
|
|
160
|
+
return Array.isArray(identity) && identity.length === 1 && identity[0] === 'admin';
|
|
146
161
|
};
|
|
147
162
|
/** One identity against the current user; undefined (nothing declared) is not a grant. */
|
|
148
163
|
TableAuth.prototype.allows = function (identity) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableAuth.js","sourceRoot":"","sources":["../../../src/auth/TableAuth.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,kDAAgD;AAChD,8CAAoD;AAepD,IAAM,oBAAoB,GAAG,UAAC,QAA8B;IAC1D,OAAA,CAAC,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ;AAAjH,CAAiH,CAAC;AAcpH;;;;;GAKG;AACH;IAAoC,kCAAK;IACvC,wBAAY,OAAe;QAA3B,YACE,kBAAM,OAAO,CAAC,SAEf;QADC,KAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;;IAC/B,CAAC;IACH,qBAAC;AAAD,CAAC,AALD,CAAoC,KAAK,GAKxC;AALY,wCAAc;AAO3B;;GAEG;AACH;IAAA;
|
|
1
|
+
{"version":3,"file":"TableAuth.js","sourceRoot":"","sources":["../../../src/auth/TableAuth.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,13 @@ import { Record } from '../Record';
|
|
|
4
4
|
import { QueryBuilder } from '@proteinjs/db-query';
|
|
5
5
|
import { ArrayMembershipUpdate } from '../reference/ArrayMembershipOps';
|
|
6
6
|
import { PreservedPath } from '../UpdatePreserving';
|
|
7
|
+
/**
|
|
8
|
+
* The db service rides the service client's retry policy by declaration alone, no logic of its
|
|
9
|
+
* own: the reads (`query`, `get`, `getRowCount`, `tableExists`) are declared `'read'` — bounded at
|
|
10
|
+
* the first contact and redelivered under the client's series when a delivery produced no
|
|
11
|
+
* response — and every write stays undeclared: one delivery, never redelivered (a redelivered
|
|
12
|
+
* `insert` would insert twice). The policy's numbers and exceptions are @proteinjs/service's.
|
|
13
|
+
*/
|
|
7
14
|
export declare const getDbService: () => DbService<Record>;
|
|
8
15
|
export type Query<T> = ObjectQuery<T> | QueryBuilder<T>;
|
|
9
16
|
export type ObjectQuery<T> = Partial<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbService.d.ts","sourceRoot":"","sources":["../../../src/services/DbService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"DbService.d.ts","sourceRoot":"","sources":["../../../src/services/DbService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,yBAKvB,CAAC;AAEH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AACxD,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG;CAAE,CAAC,CAAC;AAC9D,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC5B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAAC,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;KAAE,CAAC;CAC5G,CAAC;AAEF,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,OAAO;IACnE,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5F;;;;;;;;;;;;;;;;;OAiBG;IACH,qBAAqB,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpG;;;;;;;;;;;;;;;OAeG;IACH,gBAAgB,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/G,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9F,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9E"}
|
|
@@ -2,5 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getDbService = void 0;
|
|
4
4
|
var service_1 = require("@proteinjs/service");
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* The db service rides the service client's retry policy by declaration alone, no logic of its
|
|
7
|
+
* own: the reads (`query`, `get`, `getRowCount`, `tableExists`) are declared `'read'` — bounded at
|
|
8
|
+
* the first contact and redelivered under the client's series when a delivery produced no
|
|
9
|
+
* response — and every write stays undeclared: one delivery, never redelivered (a redelivered
|
|
10
|
+
* `insert` would insert twice). The policy's numbers and exceptions are @proteinjs/service's.
|
|
11
|
+
*/
|
|
12
|
+
exports.getDbService = (0, service_1.serviceFactory)('@proteinjs/db/DbService', undefined, {
|
|
13
|
+
query: 'read',
|
|
14
|
+
get: 'read',
|
|
15
|
+
getRowCount: 'read',
|
|
16
|
+
tableExists: 'read',
|
|
17
|
+
});
|
|
6
18
|
//# sourceMappingURL=DbService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbService.js","sourceRoot":"","sources":["../../../src/services/DbService.ts"],"names":[],"mappings":";;;AAAA,8CAA6D;
|
|
1
|
+
{"version":3,"file":"DbService.js","sourceRoot":"","sources":["../../../src/services/DbService.ts"],"names":[],"mappings":";;;AAAA,8CAA6D;AAO7D;;;;;;GAMG;AACU,QAAA,YAAY,GAAG,IAAA,wBAAc,EAAY,yBAAyB,EAAE,SAAS,EAAE;IAC1F,KAAK,EAAE,MAAM;IACb,GAAG,EAAE,MAAM;IACX,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;CACpB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DbServiceRetryDeclaration.test.d.ts","sourceRoot":"","sources":["../../test/DbServiceRetryDeclaration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
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;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
39
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
40
|
+
if (ar || !(i in from)) {
|
|
41
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
42
|
+
ar[i] = from[i];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
var reflection_1 = require("@proteinjs/reflection");
|
|
49
|
+
var service_1 = require("@proteinjs/service");
|
|
50
|
+
var DbService_1 = require("../src/services/DbService");
|
|
51
|
+
var READS = ['query', 'get', 'getRowCount', 'tableExists'];
|
|
52
|
+
var WRITES = ['insert', 'update', 'updateArrayMembership', 'updatePreserving', 'delete'];
|
|
53
|
+
beforeAll(function () {
|
|
54
|
+
// Node's Request rejects the relative service paths a browser resolves against the page origin.
|
|
55
|
+
global.Request = /** @class */ (function () {
|
|
56
|
+
function class_1(url, init) {
|
|
57
|
+
this.url = url;
|
|
58
|
+
this.init = init;
|
|
59
|
+
}
|
|
60
|
+
return class_1;
|
|
61
|
+
}());
|
|
62
|
+
var returnType = { name: 'Promise<any>' };
|
|
63
|
+
var methods = __spreadArray(__spreadArray([], READS, true), WRITES, true).map(function (name) { return new reflection_1.Method(name, returnType, true, false, false, false, 'public', []); });
|
|
64
|
+
reflection_1.SourceRepository.get().flattenedSourceGraph.interfaces['@proteinjs/db/DbService'] = new reflection_1.Interface('@proteinjs/db', 'DbService', [], methods);
|
|
65
|
+
});
|
|
66
|
+
/** A transport that never answers: its promise settles only when the request is abandoned (its signal aborts). */
|
|
67
|
+
var neverAnswers = function () {
|
|
68
|
+
return jest.fn(function (request) {
|
|
69
|
+
return new Promise(function (unused, reject) {
|
|
70
|
+
var _a;
|
|
71
|
+
(_a = request.init.signal) === null || _a === void 0 ? void 0 : _a.addEventListener('abort', function () {
|
|
72
|
+
return reject(Object.assign(new Error('The operation was aborted.'), { name: 'AbortError' }));
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
var sentRequests = function () { return global.fetch.mock.calls.map(function (_a) {
|
|
78
|
+
var request = _a[0];
|
|
79
|
+
return request;
|
|
80
|
+
}); };
|
|
81
|
+
/** The call's outcome, readable without awaiting it — a pending call must read as pending. */
|
|
82
|
+
var track = function (promise) {
|
|
83
|
+
var outcome = { state: 'pending' };
|
|
84
|
+
promise.then(function () {
|
|
85
|
+
outcome.state = 'resolved';
|
|
86
|
+
}, function () {
|
|
87
|
+
outcome.state = 'rejected';
|
|
88
|
+
});
|
|
89
|
+
return outcome;
|
|
90
|
+
};
|
|
91
|
+
var aTable = { name: 'a_table' };
|
|
92
|
+
describe('the db service under the client retry policy', function () {
|
|
93
|
+
beforeEach(function () { return jest.useFakeTimers(); });
|
|
94
|
+
afterEach(function () { return jest.useRealTimers(); });
|
|
95
|
+
it.each(READS)('%s is a declared read: bounded at the first contact, redelivered as a fresh request', function (name) { return __awaiter(void 0, void 0, void 0, function () {
|
|
96
|
+
var service, outcome;
|
|
97
|
+
return __generator(this, function (_a) {
|
|
98
|
+
switch (_a.label) {
|
|
99
|
+
case 0:
|
|
100
|
+
global.fetch = neverAnswers();
|
|
101
|
+
service = (0, DbService_1.getDbService)();
|
|
102
|
+
outcome = track(service[name](aTable, {}));
|
|
103
|
+
return [4 /*yield*/, jest.advanceTimersByTimeAsync(service_1.READ_CONTACT_TIMEOUT_MS)];
|
|
104
|
+
case 1:
|
|
105
|
+
_a.sent();
|
|
106
|
+
expect(sentRequests()).toHaveLength(1);
|
|
107
|
+
expect(sentRequests()[0].url).toBe("/service/@proteinjs/db/DbService/".concat(name));
|
|
108
|
+
expect(sentRequests()[0].init.signal.aborted).toBe(true);
|
|
109
|
+
return [4 /*yield*/, jest.advanceTimersByTimeAsync(service_1.REDELIVERY_BASE_MS)];
|
|
110
|
+
case 2:
|
|
111
|
+
_a.sent();
|
|
112
|
+
expect(sentRequests()).toHaveLength(2);
|
|
113
|
+
expect(sentRequests()[1].init.signal.aborted).toBe(false);
|
|
114
|
+
expect(outcome.state).toBe('pending');
|
|
115
|
+
return [2 /*return*/];
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}); });
|
|
119
|
+
it.each(WRITES)('%s is undeclared: one delivery, no bound, never redelivered', function (name) { return __awaiter(void 0, void 0, void 0, function () {
|
|
120
|
+
var service, outcome;
|
|
121
|
+
return __generator(this, function (_a) {
|
|
122
|
+
switch (_a.label) {
|
|
123
|
+
case 0:
|
|
124
|
+
global.fetch = neverAnswers();
|
|
125
|
+
service = (0, DbService_1.getDbService)();
|
|
126
|
+
outcome = track(service[name](aTable, {}));
|
|
127
|
+
return [4 /*yield*/, jest.advanceTimersByTimeAsync(service_1.READ_CONTACT_TIMEOUT_MS * 4)];
|
|
128
|
+
case 1:
|
|
129
|
+
_a.sent();
|
|
130
|
+
expect(sentRequests()).toHaveLength(1);
|
|
131
|
+
expect(sentRequests()[0].url).toBe("/service/@proteinjs/db/DbService/".concat(name));
|
|
132
|
+
expect(sentRequests()[0].init.signal).toBeUndefined();
|
|
133
|
+
expect(outcome.state).toBe('pending');
|
|
134
|
+
return [2 /*return*/];
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}); });
|
|
138
|
+
});
|
|
139
|
+
//# sourceMappingURL=DbServiceRetryDeclaration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DbServiceRetryDeclaration.test.js","sourceRoot":"","sources":["../../test/DbServiceRetryDeclaration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,13 +110,15 @@ describe('TableAuth operation doors keep their declared-block semantics', functi
|
|
|
110
110
|
/**
|
|
111
111
|
* The RPC runs BOTH doors — the service gate (`TableServiceAuth`) and then the inner `Db`'s
|
|
112
112
|
* db-api re-check as the calling user — so a db door a table leaves UNDECLARED mirrors the door
|
|
113
|
-
* its service block declares for the same operation
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
113
|
+
* its service block declares for the same operation, where that door admits the admin role ALONE
|
|
114
|
+
* (declared exactly `['admin']`). "db doors mirror service doors" was a rule tables hand-copied;
|
|
115
|
+
* the owner derives it now: consumer tables opened `['admin']` writes on the service api over a
|
|
116
|
+
* query-only db block, and every one refused the admin at the inner check in the gate's own words
|
|
117
|
+
* — the gate admitted them, the re-check behind it did not, two verdicts for one caller. One-way:
|
|
118
|
+
* a service block that omits the door keeps the lock (the session / audit-trail pattern — no
|
|
119
|
+
* write door on either api, break-glass included), and a table with no service block keeps its
|
|
120
|
+
* db block as written (the pin above). A service door declared any wider than the admin role is
|
|
121
|
+
* the next describe's: it mirrors nothing.
|
|
120
122
|
*/
|
|
121
123
|
var ReadOpenWriteAdminTable = /** @class */ (function (_super) {
|
|
122
124
|
__extends(ReadOpenWriteAdminTable, _super);
|
|
@@ -146,7 +148,7 @@ var LockedLedgerTable = /** @class */ (function (_super) {
|
|
|
146
148
|
}
|
|
147
149
|
return LockedLedgerTable;
|
|
148
150
|
}(Table_1.Table));
|
|
149
|
-
describe(
|
|
151
|
+
describe("TableAuth — an undeclared db door mirrors the declared ['admin'] service door", function () {
|
|
150
152
|
beforeEach(function () {
|
|
151
153
|
setMapping({ ledger: ['ledger'] });
|
|
152
154
|
});
|
|
@@ -192,4 +194,128 @@ describe('TableAuth — an undeclared db door mirrors the declared service door'
|
|
|
192
194
|
expect(function () { return new TableAuth_1.TableAuth().canUpdate(new QueryOnlyTable()); }).toThrow('User is not authorized to update records in table: identity_query_only_test');
|
|
193
195
|
});
|
|
194
196
|
});
|
|
197
|
+
/**
|
|
198
|
+
* Role privilege and the reach of a permission are different things: the mirror carries the
|
|
199
|
+
* admin's break-glass across the two apis, never a wider identity. The service block here opens
|
|
200
|
+
* three writes to identities wider than the admin role — a permission, a non-admin role, every
|
|
201
|
+
* signed-in user — over a query-only db block, and none of them is mirrored: the gate admits the
|
|
202
|
+
* holder and the db door behind it stays shut, exactly as before the mirror existed. A table that
|
|
203
|
+
* means a wider identity to write through the db api declares that door at the db block itself.
|
|
204
|
+
*/
|
|
205
|
+
var WiderServiceDoorsTable = /** @class */ (function (_super) {
|
|
206
|
+
__extends(WiderServiceDoorsTable, _super);
|
|
207
|
+
function WiderServiceDoorsTable() {
|
|
208
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
209
|
+
_this.name = 'identity_wider_service_doors_test';
|
|
210
|
+
_this.auth = {
|
|
211
|
+
db: { query: { permission: 'ledger' } },
|
|
212
|
+
service: {
|
|
213
|
+
query: { permission: 'ledger' },
|
|
214
|
+
update: { permission: 'ledger' },
|
|
215
|
+
insert: ['ledger'],
|
|
216
|
+
delete: 'authenticated',
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
_this.columns = (0, Record_1.withRecordColumns)({ title: new Columns_1.StringColumn('title') });
|
|
220
|
+
return _this;
|
|
221
|
+
}
|
|
222
|
+
return WiderServiceDoorsTable;
|
|
223
|
+
}(Table_1.Table));
|
|
224
|
+
/** A service write door the admin role shares with another role: not the admin role alone. */
|
|
225
|
+
var SharedRoleDoorTable = /** @class */ (function (_super) {
|
|
226
|
+
__extends(SharedRoleDoorTable, _super);
|
|
227
|
+
function SharedRoleDoorTable() {
|
|
228
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
229
|
+
_this.name = 'identity_shared_role_door_test';
|
|
230
|
+
_this.auth = {
|
|
231
|
+
db: { query: 'authenticated' },
|
|
232
|
+
service: { query: 'authenticated', update: ['admin', 'ledger'] },
|
|
233
|
+
};
|
|
234
|
+
_this.columns = (0, Record_1.withRecordColumns)({ title: new Columns_1.StringColumn('title') });
|
|
235
|
+
return _this;
|
|
236
|
+
}
|
|
237
|
+
return SharedRoleDoorTable;
|
|
238
|
+
}(Table_1.Table));
|
|
239
|
+
/** The admin-only door named by `all`: the same door, read the way the gate reads it. */
|
|
240
|
+
var AllAdminServiceTable = /** @class */ (function (_super) {
|
|
241
|
+
__extends(AllAdminServiceTable, _super);
|
|
242
|
+
function AllAdminServiceTable() {
|
|
243
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
244
|
+
_this.name = 'identity_all_admin_service_test';
|
|
245
|
+
_this.auth = {
|
|
246
|
+
db: { query: 'authenticated' },
|
|
247
|
+
service: { all: ['admin'] },
|
|
248
|
+
};
|
|
249
|
+
_this.columns = (0, Record_1.withRecordColumns)({ title: new Columns_1.StringColumn('title') });
|
|
250
|
+
return _this;
|
|
251
|
+
}
|
|
252
|
+
return AllAdminServiceTable;
|
|
253
|
+
}(Table_1.Table));
|
|
254
|
+
/** An `['admin']` entry beside an `all` that widens the door to every signed-in user: not admin alone. */
|
|
255
|
+
var WidenedByAllTable = /** @class */ (function (_super) {
|
|
256
|
+
__extends(WidenedByAllTable, _super);
|
|
257
|
+
function WidenedByAllTable() {
|
|
258
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
259
|
+
_this.name = 'identity_widened_by_all_test';
|
|
260
|
+
_this.auth = {
|
|
261
|
+
db: { query: 'authenticated' },
|
|
262
|
+
service: { all: 'authenticated', update: ['admin'] },
|
|
263
|
+
};
|
|
264
|
+
_this.columns = (0, Record_1.withRecordColumns)({ title: new Columns_1.StringColumn('title') });
|
|
265
|
+
return _this;
|
|
266
|
+
}
|
|
267
|
+
return WidenedByAllTable;
|
|
268
|
+
}(Table_1.Table));
|
|
269
|
+
describe('TableAuth — the mirror reaches only a service door that admits the admin role alone', function () {
|
|
270
|
+
beforeEach(function () {
|
|
271
|
+
setMapping({ ledger: ['ledger'] });
|
|
272
|
+
});
|
|
273
|
+
afterEach(function () {
|
|
274
|
+
user_auth_1.UserAuth.userRepo = undefined;
|
|
275
|
+
user_auth_1.UserAuth.permissionRolesMapping = undefined;
|
|
276
|
+
});
|
|
277
|
+
test('a permission-declared service write with no db door stays shut for the permission holder — the gate admits, the db door does not', function () {
|
|
278
|
+
setUser(['ledger']);
|
|
279
|
+
var table = new WiderServiceDoorsTable();
|
|
280
|
+
expect(new TableAuth_1.TableAuth().canPerform(table, 'update', 'service')).toBe(true);
|
|
281
|
+
expect(new TableAuth_1.TableAuth().canPerform(table, 'update', 'db')).toBe(false);
|
|
282
|
+
expect(function () { return new TableAuth_1.TableAuth().canUpdate(table); }).toThrow('User is not authorized to update records in table: identity_wider_service_doors_test');
|
|
283
|
+
expect(function () { return new TableAuth_1.TableAuth().canQuery(table); }).not.toThrow();
|
|
284
|
+
});
|
|
285
|
+
test("a non-admin role door and an 'authenticated' door are as shut on the db api as the permission door", function () {
|
|
286
|
+
setUser(['ledger']);
|
|
287
|
+
var table = new WiderServiceDoorsTable();
|
|
288
|
+
expect(new TableAuth_1.TableAuth().canPerform(table, 'insert', 'service')).toBe(true);
|
|
289
|
+
expect(new TableAuth_1.TableAuth().canPerform(table, 'insert', 'db')).toBe(false);
|
|
290
|
+
expect(new TableAuth_1.TableAuth().canPerform(table, 'delete', 'service')).toBe(true);
|
|
291
|
+
expect(new TableAuth_1.TableAuth().canPerform(table, 'delete', 'db')).toBe(false);
|
|
292
|
+
expect(function () { return new TableAuth_1.TableAuth().canInsert(table); }).toThrow('User is not authorized to insert records into table: identity_wider_service_doors_test');
|
|
293
|
+
});
|
|
294
|
+
test('a wider service door opens nothing on the db api for the admin either — shut as it was before the mirror', function () {
|
|
295
|
+
setUser(['admin']);
|
|
296
|
+
var table = new WiderServiceDoorsTable();
|
|
297
|
+
expect(new TableAuth_1.TableAuth().canPerform(table, 'update', 'db')).toBe(false);
|
|
298
|
+
expect(new TableAuth_1.TableAuth().canPerform(table, 'insert', 'db')).toBe(false);
|
|
299
|
+
expect(new TableAuth_1.TableAuth().canPerform(table, 'delete', 'db')).toBe(false);
|
|
300
|
+
expect(function () { return new TableAuth_1.TableAuth().canUpdate(table); }).toThrow('User is not authorized to update records in table: identity_wider_service_doors_test');
|
|
301
|
+
});
|
|
302
|
+
test('a door the admin role shares with another role is not the admin role alone: shut on the db api for both', function () {
|
|
303
|
+
var table = new SharedRoleDoorTable();
|
|
304
|
+
setUser(['admin']);
|
|
305
|
+
expect(new TableAuth_1.TableAuth().canPerform(table, 'update', 'service')).toBe(true);
|
|
306
|
+
expect(new TableAuth_1.TableAuth().canPerform(table, 'update', 'db')).toBe(false);
|
|
307
|
+
setUser(['ledger']);
|
|
308
|
+
expect(new TableAuth_1.TableAuth().canPerform(table, 'update', 'service')).toBe(true);
|
|
309
|
+
expect(new TableAuth_1.TableAuth().canPerform(table, 'update', 'db')).toBe(false);
|
|
310
|
+
});
|
|
311
|
+
test("the admin-only door may be named by `all`; an `all` that widens the door beside an ['admin'] entry mirrors nothing", function () {
|
|
312
|
+
setUser(['admin']);
|
|
313
|
+
expect(new TableAuth_1.TableAuth().canPerform(new AllAdminServiceTable(), 'update', 'db')).toBe(true);
|
|
314
|
+
expect(function () { return new TableAuth_1.TableAuth().canUpdate(new AllAdminServiceTable()); }).not.toThrow();
|
|
315
|
+
expect(new TableAuth_1.TableAuth().canPerform(new WidenedByAllTable(), 'update', 'service')).toBe(true);
|
|
316
|
+
expect(new TableAuth_1.TableAuth().canPerform(new WidenedByAllTable(), 'update', 'db')).toBe(false);
|
|
317
|
+
setUser(['ledger']);
|
|
318
|
+
expect(new TableAuth_1.TableAuth().canPerform(new AllAdminServiceTable(), 'update', 'db')).toBe(false);
|
|
319
|
+
});
|
|
320
|
+
});
|
|
195
321
|
//# sourceMappingURL=TableAuthIdentity.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableAuthIdentity.test.js","sourceRoot":"","sources":["../../test/TableAuthIdentity.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kDAAgD;AAChD,sCAAqC;AACrC,wCAA0D;AAC1D,0CAA8C;AAC9C,mDAAkD;AAoBlD;IAA6B,kCAAU;IAAvC;QAAA,qEAMC;QALQ,UAAI,GAAG,0BAA0B,CAAC;QAClC,UAAI,GAAuB;YAChC,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;SAC/B,CAAC;QACK,aAAO,GAAG,IAAA,0BAAiB,EAAM,EAAE,KAAK,EAAE,IAAI,sBAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;;IAChF,CAAC;IAAD,qBAAC;AAAD,CAAC,AAND,CAA6B,aAAK,GAMjC;AAED,IAAM,OAAO,GAAG,UAAC,KAAe,EAAE,KAAyB;IAAzB,sBAAA,EAAA,yBAAyB;IACxD,oBAAgB,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,cAAM,OAAA,CAAC,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAC,EAAlB,CAAkB,EAAE,CAAC;AACrE,CAAC,CAAC;AACF,IAAM,QAAQ,GAAG;IACd,oBAAgB,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,cAAM,OAAA,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAA/B,CAA+B,EAAE,CAAC;AAClF,CAAC,CAAC;AACF,IAAM,UAAU,GAAG,UAAC,OAA2C;IAC5D,oBAAgB,CAAC,sBAAsB,GAAG,EAAE,QAAQ,EAAE,UAAC,UAAkB,IAAK,OAAA,OAAO,CAAC,UAAU,CAAC,EAAnB,CAAmB,EAAE,CAAC;AACvG,CAAC,CAAC;AAEF,QAAQ,CAAC,0BAA0B,EAAE;IACnC,UAAU,CAAC;QACT,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC;QACP,oBAAgB,CAAC,QAAQ,GAAG,SAAS,CAAC;QACtC,oBAAgB,CAAC,sBAAsB,GAAG,SAAS,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE;QAChD,QAAQ,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6DAA6D,EAAE;QAClE,OAAO,CAAC,EAAE,CAAC,CAAC;QACZ,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,QAAQ,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mDAAmD,EAAE;QACxD,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mFAAmF,EAAE;QACxF,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACnB,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACnB,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACnB,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE;QACvD,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACnB,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE;QAC/C,oBAAgB,CAAC,QAAQ,GAAG;YAC3B,OAAO,EAAE;gBACP,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;SACF,CAAC;QACF,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+DAA+D,EAAE;IACxE,SAAS,CAAC;QACP,oBAAgB,CAAC,QAAQ,GAAG,SAAS,CAAC;QACtC,oBAAgB,CAAC,sBAAsB,GAAG,SAAS,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4CAA4C,EAAE;QACjD,OAAO,CAAC,EAAE,CAAC,CAAC;QACZ,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,UAAU,CAAC,IAAI,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+EAA+E,EAAE;QACpF,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACnB,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,UAAU,CAAC,IAAI,cAAc,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/E,OAAO,CAAC,EAAE,CAAC,CAAC;QACZ,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,UAAU,CAAC,IAAI,cAAc,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH;IAAsC,2CAAU;IAAhD;QAAA,qEAOC;QANQ,UAAI,GAAG,qCAAqC,CAAC;QAC7C,UAAI,GAAuB;YAChC,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;YAC9B,OAAO,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;SAC7F,CAAC;QACK,aAAO,GAAG,IAAA,0BAAiB,EAAM,EAAE,KAAK,EAAE,IAAI,sBAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;;IAChF,CAAC;IAAD,8BAAC;AAAD,CAAC,AAPD,CAAsC,aAAK,GAO1C;AAED;IAAgC,qCAAU;IAA1C;QAAA,qEAOC;QANQ,UAAI,GAAG,6BAA6B,CAAC;QACrC,UAAI,GAAuB;YAChC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;YACvC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;SAC7C,CAAC;QACK,aAAO,GAAG,IAAA,0BAAiB,EAAM,EAAE,KAAK,EAAE,IAAI,sBAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;;IAChF,CAAC;IAAD,wBAAC;AAAD,CAAC,AAPD,CAAgC,aAAK,GAOpC;AAED,QAAQ,CAAC,qEAAqE,EAAE;IAC9E,UAAU,CAAC;QACT,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC;QACP,oBAAgB,CAAC,QAAQ,GAAG,SAAS,CAAC;QACtC,oBAAgB,CAAC,sBAAsB,GAAG,SAAS,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sFAAsF,EAAE;QAC3F,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACnB,IAAM,KAAK,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC5C,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACxE,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAhC,CAAgC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7D,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAhC,CAAgC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7D,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAhC,CAAgC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iFAAiF,EAAE;QACtF,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpB,IAAM,KAAK,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC5C,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAC,OAAO,CAC/D,wFAAwF,CACzF,CAAC;QACF,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAhC,CAAgC,CAAC,CAAC,OAAO,CACpD,wFAAwF,CACzF,CAAC;QACF,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAA/B,CAA+B,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+BAA+B,EAAE;QACpC,QAAQ,EAAE,CAAC;QACX,IAAM,KAAK,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC5C,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAA/B,CAA+B,CAAC,CAAC,OAAO,CACnD,4EAA4E,CAC7E,CAAC;QACF,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAhC,CAAgC,CAAC,CAAC,OAAO,EAAE,CAAC;QACzD,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAC,OAAO,EAAE,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gGAAgG,EAAE;QACrG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACnB,IAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3E,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAhC,CAAgC,CAAC,CAAC,OAAO,CACpD,gFAAgF,CACjF,CAAC;QACF,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAC,OAAO,EAAE,CAAC;QACpE,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAA/B,CAA+B,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8EAA8E,EAAE;QACnF,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACnB,MAAM,CAAC,IAAI,qBAAS,EAAE,CAAC,UAAU,CAAC,IAAI,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrF,MAAM,CAAC,cAAM,OAAA,IAAI,qBAAS,EAAE,CAAC,SAAS,CAAC,IAAI,cAAc,EAAE,CAAC,EAA/C,CAA+C,CAAC,CAAC,OAAO,CACnE,6EAA6E,CAC9E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"TableAuthIdentity.test.js","sourceRoot":"","sources":["../../test/TableAuthIdentity.test.ts"],"names":[],"mappings":"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"}
|