@magda/typescript-common 2.0.0-alpha.6 → 2.0.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/dist/BaseApiClient.d.ts +1 -1
- package/dist/JsonConnector.js +1 -1
- package/dist/OpaCompileResponseParser.d.ts +2 -2
- package/dist/OpaCompileResponseParser.js.map +1 -1
- package/dist/SQLUtils.js +19 -12
- package/dist/SQLUtils.js.map +1 -1
- package/dist/authorization-api/ApiClient.js.map +1 -1
- package/dist/authorization-api/authMiddleware.d.ts +0 -6
- package/dist/authorization-api/authMiddleware.js +6 -73
- package/dist/authorization-api/authMiddleware.js.map +1 -1
- package/dist/getAbsoluteUrl.d.ts +3 -4
- package/dist/getAbsoluteUrl.js +1 -1
- package/dist/getAbsoluteUrl.js.map +1 -1
- package/dist/opa/AspectQuery.js +1 -1
- package/dist/opa/AspectQuery.js.map +1 -1
- package/dist/opa/AuthDecision.js +3 -1
- package/dist/opa/AuthDecision.js.map +1 -1
- package/dist/opa/AuthDecisionQueryClient.d.ts +1 -0
- package/dist/opa/AuthDecisionQueryClient.js +1 -1
- package/dist/opa/AuthDecisionQueryClient.js.map +1 -1
- package/dist/registry/AuthorizedRegistryClient.js +1 -1
- package/dist/registry/AuthorizedRegistryClient.js.map +1 -1
- package/dist/registry/RegistryClient.js +6 -3
- package/dist/registry/RegistryClient.js.map +1 -1
- package/dist/session/GetUserId.js.map +1 -1
- package/dist/session/destroySession.js.map +1 -1
- package/dist/test/arbitraries.js +14 -7
- package/dist/test/arbitraries.js.map +1 -1
- package/dist/test/connectors/runConnectorTest.js.map +1 -1
- package/dist/test/createMockAuthDecisionQueryClient.d.ts +6 -0
- package/dist/test/createMockAuthDecisionQueryClient.js +19 -0
- package/dist/test/createMockAuthDecisionQueryClient.js.map +1 -0
- package/dist/test/getStorageUrl.spec.js +1 -1
- package/dist/test/testAsyncPage.spec.js +1 -1
- package/package.json +6 -6
- package/dist/opa/OpaTypes.d.ts +0 -41
- package/dist/opa/OpaTypes.js +0 -3
- package/dist/opa/OpaTypes.js.map +0 -1
- package/dist/opa/getAuthDecision.d.ts +0 -19
- package/dist/opa/getAuthDecision.js +0 -94
- package/dist/opa/getAuthDecision.js.map +0 -1
- package/dist/opa/queryOpa.d.ts +0 -1
- package/dist/opa/queryOpa.js +0 -41
- package/dist/opa/queryOpa.js.map +0 -1
- package/dist/test/getAuthDecision.spec.d.ts +0 -1
- package/dist/test/getAuthDecision.spec.js +0 -22
- package/dist/test/getAuthDecision.spec.js.map +0 -1
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AuthOr = exports.AuthAnd = exports.AuthQuery = void 0;
|
|
4
|
-
class AuthQuery {
|
|
5
|
-
constructor(path, sign, value) {
|
|
6
|
-
this.path = path;
|
|
7
|
-
this.sign = sign;
|
|
8
|
-
this.value = value;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.AuthQuery = AuthQuery;
|
|
12
|
-
class AuthAnd {
|
|
13
|
-
constructor(parts) {
|
|
14
|
-
this.parts = parts;
|
|
15
|
-
this.joiner = "and";
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
exports.AuthAnd = AuthAnd;
|
|
19
|
-
class AuthOr {
|
|
20
|
-
constructor(parts) {
|
|
21
|
-
this.parts = parts;
|
|
22
|
-
this.joiner = "or";
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
exports.AuthOr = AuthOr;
|
|
26
|
-
function getAuthDecision(response) {
|
|
27
|
-
if (response.result.support) {
|
|
28
|
-
throw new Error("Cannot understand support in query " + JSON.stringify(response));
|
|
29
|
-
}
|
|
30
|
-
if (response.result.queries) {
|
|
31
|
-
if (response.result.queries.findIndex((query) => !(query === null || query === void 0 ? void 0 : query.length)) !== -1) {
|
|
32
|
-
// --- if any query is an empty array, we should consider it as an unconditional match / true
|
|
33
|
-
return true;
|
|
34
|
-
}
|
|
35
|
-
return new AuthOr(response.result.queries.map((query) => new AuthAnd(query.map((queryPart) => {
|
|
36
|
-
if (queryPart.terms.length !== 3) {
|
|
37
|
-
throw new Error("Could not understand terms " +
|
|
38
|
-
JSON.stringify(queryPart.terms));
|
|
39
|
-
}
|
|
40
|
-
const sign = getSign(queryPart.terms[0]);
|
|
41
|
-
const path = getPath(queryPart.terms[1]);
|
|
42
|
-
const value = getValue(queryPart.terms[2]);
|
|
43
|
-
return new AuthQuery(path, sign, value);
|
|
44
|
-
}))));
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
exports.default = getAuthDecision;
|
|
51
|
-
function getPath(term) {
|
|
52
|
-
if (term.type !== "ref" ||
|
|
53
|
-
term.value.length === 0 ||
|
|
54
|
-
term.value[0].type !== "var" ||
|
|
55
|
-
term.value[0].value !== "input") {
|
|
56
|
-
throw new Error("Could not understand " + JSON.stringify(term));
|
|
57
|
-
}
|
|
58
|
-
return term.value.slice(2).map((valueObj) => valueObj.value.toString());
|
|
59
|
-
}
|
|
60
|
-
function getSign(term) {
|
|
61
|
-
if (term.type !== "ref" ||
|
|
62
|
-
term.value.length !== 1 ||
|
|
63
|
-
term.value[0].type !== "var") {
|
|
64
|
-
throw new Error(JSON.stringify(term) + " is not a sign");
|
|
65
|
-
}
|
|
66
|
-
switch (term.value[0].value) {
|
|
67
|
-
case "eq":
|
|
68
|
-
case "equal":
|
|
69
|
-
return "=";
|
|
70
|
-
case "gt":
|
|
71
|
-
return ">";
|
|
72
|
-
case "gte":
|
|
73
|
-
return ">=";
|
|
74
|
-
case "lt":
|
|
75
|
-
return "<";
|
|
76
|
-
case "lte":
|
|
77
|
-
return "<=";
|
|
78
|
-
case "neq":
|
|
79
|
-
return "!=";
|
|
80
|
-
default:
|
|
81
|
-
throw new Error(term.value[0].value + " is not a sign");
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
function getValue(term) {
|
|
85
|
-
if (term.type === "string" ||
|
|
86
|
-
term.type === "boolean" ||
|
|
87
|
-
term.type === "number") {
|
|
88
|
-
return term.value;
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
throw new Error("Could not get value from " + JSON.stringify(term));
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=getAuthDecision.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getAuthDecision.js","sourceRoot":"","sources":["../../src/opa/getAuthDecision.ts"],"names":[],"mappings":"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"}
|
package/dist/opa/queryOpa.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function queryOpa(query: string, input: object, unknowns: string[], jwtToken: string, opaUrl: string): Promise<import("./getAuthDecision").AuthDecision>;
|
package/dist/opa/queryOpa.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const isomorphic_fetch_1 = __importDefault(require("isomorphic-fetch"));
|
|
16
|
-
const getAuthDecision_1 = __importDefault(require("./getAuthDecision"));
|
|
17
|
-
function queryOpa(query, input, unknowns, jwtToken, opaUrl) {
|
|
18
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
-
const body = {
|
|
20
|
-
query,
|
|
21
|
-
input,
|
|
22
|
-
unknowns
|
|
23
|
-
};
|
|
24
|
-
const res = yield isomorphic_fetch_1.default(`${opaUrl}compile`, {
|
|
25
|
-
method: "POST",
|
|
26
|
-
body: JSON.stringify(body),
|
|
27
|
-
headers: Object.assign({ "Content-Type": "application/json" }, (jwtToken ? { "X-Magda-Session": jwtToken } : {}))
|
|
28
|
-
});
|
|
29
|
-
if (res.status === 200) {
|
|
30
|
-
return getAuthDecision_1.default(yield res.json());
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
throw new Error("Could not contact OPA - " +
|
|
34
|
-
res.statusText +
|
|
35
|
-
" " +
|
|
36
|
-
(yield res.text()));
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
exports.default = queryOpa;
|
|
41
|
-
//# sourceMappingURL=queryOpa.js.map
|
package/dist/opa/queryOpa.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queryOpa.js","sourceRoot":"","sources":["../../src/opa/queryOpa.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,wEAAqC;AACrC,wEAAgD;AAEhD,SAA8B,QAAQ,CAClC,KAAa,EACb,KAAa,EACb,QAAkB,EAClB,QAAgB,EAChB,MAAc;;QAEd,MAAM,IAAI,GAAG;YACT,KAAK;YACL,KAAK;YACL,QAAQ;SACX,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,0BAAK,CAAC,GAAG,MAAM,SAAS,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,OAAO,kBACH,cAAc,EAAE,kBAAkB,IAC/B,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACvD;SACJ,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;YACpB,OAAO,yBAAe,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;SAC5C;aAAM;YACH,MAAM,IAAI,KAAK,CACX,0BAA0B;gBACtB,GAAG,CAAC,UAAU;gBACd,GAAG;gBACH,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CACzB,CAAC;SACL;IACL,CAAC;CAAA;AAhCD,2BAgCC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "mocha";
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const chai_1 = require("chai");
|
|
7
|
-
const getAuthDecision_1 = __importDefault(require("../opa/getAuthDecision"));
|
|
8
|
-
const unconditionalTrue_json_1 = __importDefault(require("./sampleOpaResponses/unconditionalTrue.json"));
|
|
9
|
-
require("mocha");
|
|
10
|
-
/*
|
|
11
|
-
getAuthDecision only support limited use case of OPA response AST.
|
|
12
|
-
Thus, we will not test other response sample as an error will be thrown (due to lack the support of resolving rule reference).
|
|
13
|
-
This test case is to ensure the unconditional true case can be handled for #2956
|
|
14
|
-
We should switch back to OpaCompileResponseParser to support more generic OPA AST
|
|
15
|
-
*/
|
|
16
|
-
describe("Test OpaCompileResultParser with unconditional true response", function () {
|
|
17
|
-
it("Should evalute query from parse result correctly", function () {
|
|
18
|
-
const result = getAuthDecision_1.default(unconditionalTrue_json_1.default);
|
|
19
|
-
chai_1.expect(result).to.be.equal(true);
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
//# sourceMappingURL=getAuthDecision.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getAuthDecision.spec.js","sourceRoot":"","sources":["../../src/test/getAuthDecision.spec.ts"],"names":[],"mappings":";;;;;AAAA,+BAA8B;AAC9B,6EAAqD;AACrD,yGAAoF;AACpF,iBAAe;AAEf;;;;;EAKE;AACF,QAAQ,CAAC,8DAA8D,EAAE;IACrE,EAAE,CAAC,kDAAkD,EAAE;QACnD,MAAM,MAAM,GAAG,yBAAe,CAAC,gCAAgC,CAAC,CAAC;QACjE,aAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|