@magda/typescript-common 2.3.3 → 3.0.0-alpha.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/AspectBuilder.d.ts +1 -1
- package/dist/AspectBuilder.js +1 -2
- package/dist/AspectCreationFailure.js +3 -4
- package/dist/AspectCreationFailure.js.map +1 -1
- package/dist/AsyncPage.js +59 -79
- package/dist/AsyncPage.js.map +1 -1
- package/dist/BaseApiClient.d.ts +3 -3
- package/dist/BaseApiClient.js +20 -13
- package/dist/BaseApiClient.js.map +1 -1
- package/dist/ConnectionResult.d.ts +2 -2
- package/dist/ConnectionResult.js +17 -22
- package/dist/ConnectionResult.js.map +1 -1
- package/dist/ConnectorRecordId.d.ts +1 -1
- package/dist/ConnectorRecordId.js +9 -13
- package/dist/ConnectorRecordId.js.map +1 -1
- package/dist/IndexerApiClient.d.ts +1 -1
- package/dist/IndexerApiClient.js +13 -32
- package/dist/IndexerApiClient.js.map +1 -1
- package/dist/JsonConnector.d.ts +9 -9
- package/dist/JsonConnector.js +163 -206
- package/dist/JsonConnector.js.map +1 -1
- package/dist/JsonTransformer.d.ts +3 -3
- package/dist/JsonTransformer.js +71 -75
- package/dist/JsonTransformer.js.map +1 -1
- package/dist/OpaCompileResponseParser.d.ts +4 -4
- package/dist/OpaCompileResponseParser.js +278 -211
- package/dist/OpaCompileResponseParser.js.map +1 -1
- package/dist/RecordCreationFailure.d.ts +1 -1
- package/dist/RecordCreationFailure.js +4 -4
- package/dist/RecordCreationFailure.js.map +1 -1
- package/dist/SQLUtils.d.ts +3 -3
- package/dist/SQLUtils.js +139 -195
- package/dist/SQLUtils.js.map +1 -1
- package/dist/ServerError.js +2 -4
- package/dist/ServerError.js.map +1 -1
- package/dist/Try.js +20 -35
- package/dist/Try.js.map +1 -1
- package/dist/addTrailingSlash.js +1 -4
- package/dist/addTrailingSlash.js.map +1 -1
- package/dist/appendUrlSegments.js +3 -8
- package/dist/appendUrlSegments.js.map +1 -1
- package/dist/authorization-api/AccessControlError.d.ts +1 -1
- package/dist/authorization-api/AccessControlError.js +2 -8
- package/dist/authorization-api/AccessControlError.js.map +1 -1
- package/dist/authorization-api/ApiClient.d.ts +3 -3
- package/dist/authorization-api/ApiClient.js +211 -272
- package/dist/authorization-api/ApiClient.js.map +1 -1
- package/dist/authorization-api/AuthError.d.ts +1 -1
- package/dist/authorization-api/AuthError.js +2 -8
- package/dist/authorization-api/AuthError.js.map +1 -1
- package/dist/authorization-api/GenericError.js +2 -4
- package/dist/authorization-api/GenericError.js.map +1 -1
- package/dist/authorization-api/authMiddleware.d.ts +3 -3
- package/dist/authorization-api/authMiddleware.js +19 -40
- package/dist/authorization-api/authMiddleware.js.map +1 -1
- package/dist/authorization-api/constants.js +9 -12
- package/dist/authorization-api/constants.js.map +1 -1
- package/dist/authorization-api/model.d.ts +8 -8
- package/dist/authorization-api/model.js +1 -2
- package/dist/coerceJson.js +1 -3
- package/dist/coerceJson.js.map +1 -1
- package/dist/createNoCacheFetchOptions.d.ts +1 -1
- package/dist/createNoCacheFetchOptions.js +4 -7
- package/dist/createNoCacheFetchOptions.js.map +1 -1
- package/dist/createServiceError.d.ts +1 -1
- package/dist/createServiceError.js +4 -9
- package/dist/createServiceError.js.map +1 -1
- package/dist/delay.js +1 -3
- package/dist/delay.js.map +1 -1
- package/dist/express/getNoCacheHeaders.js +1 -3
- package/dist/express/getNoCacheHeaders.js.map +1 -1
- package/dist/express/setResponseNoCache.d.ts +1 -1
- package/dist/express/setResponseNoCache.js +3 -8
- package/dist/express/setResponseNoCache.js.map +1 -1
- package/dist/express/status.d.ts +14 -15
- package/dist/express/status.js +135 -126
- package/dist/express/status.js.map +1 -1
- package/dist/fetchRequest.d.ts +6 -6
- package/dist/fetchRequest.js +36 -51
- package/dist/fetchRequest.js.map +1 -1
- package/dist/formatServiceError.js +1 -4
- package/dist/formatServiceError.js.map +1 -1
- package/dist/generated/registry/api.d.ts +4 -4
- package/dist/generated/registry/api.js +197 -102
- package/dist/generated/registry/api.js.map +1 -1
- package/dist/getAbsoluteUrl.js +8 -11
- package/dist/getAbsoluteUrl.js.map +1 -1
- package/dist/getBasePathFromUrl.js +3 -9
- package/dist/getBasePathFromUrl.js.map +1 -1
- package/dist/getBoolValWithDefault.js +1 -3
- package/dist/getBoolValWithDefault.js.map +1 -1
- package/dist/getRequest.js +9 -26
- package/dist/getRequest.js.map +1 -1
- package/dist/getRequestNoCache.js +4 -21
- package/dist/getRequestNoCache.js.map +1 -1
- package/dist/getStorageUrl.js +13 -23
- package/dist/getStorageUrl.js.map +1 -1
- package/dist/handleServerError.js +3 -9
- package/dist/handleServerError.js.map +1 -1
- package/dist/markdownToHtml.js +5 -11
- package/dist/markdownToHtml.js.map +1 -1
- package/dist/opa/AspectQuery.js +55 -79
- package/dist/opa/AspectQuery.js.map +1 -1
- package/dist/opa/AuthDecision.d.ts +2 -2
- package/dist/opa/AuthDecision.js +52 -69
- package/dist/opa/AuthDecision.js.map +1 -1
- package/dist/opa/AuthDecisionQueryClient.d.ts +2 -2
- package/dist/opa/AuthDecisionQueryClient.js +72 -102
- package/dist/opa/AuthDecisionQueryClient.js.map +1 -1
- package/dist/pgTypes.js +4 -9
- package/dist/pgTypes.js.map +1 -1
- package/dist/registry/AuthorizedRegistryClient.d.ts +4 -4
- package/dist/registry/AuthorizedRegistryClient.js +52 -92
- package/dist/registry/AuthorizedRegistryClient.js.map +1 -1
- package/dist/registry/RegistryClient.d.ts +2 -2
- package/dist/registry/RegistryClient.js +60 -76
- package/dist/registry/RegistryClient.js.map +1 -1
- package/dist/registry/TenantConsts.js +3 -6
- package/dist/registry/TenantConsts.js.map +1 -1
- package/dist/registry/model.js +1 -2
- package/dist/registry-manual/api.d.ts +1 -1
- package/dist/registry-manual/api.js +18 -7
- package/dist/registry-manual/api.js.map +1 -1
- package/dist/request.d.ts +2 -2
- package/dist/request.js +4 -9
- package/dist/request.js.map +1 -1
- package/dist/retry.d.ts +1 -1
- package/dist/retry.js +3 -9
- package/dist/retry.js.map +1 -1
- package/dist/retryBackoff.js +3 -9
- package/dist/retryBackoff.js.map +1 -1
- package/dist/runLater.js +1 -4
- package/dist/runLater.js.map +1 -1
- package/dist/session/GetUserId.d.ts +2 -2
- package/dist/session/GetUserId.js +10 -16
- package/dist/session/GetUserId.js.map +1 -1
- package/dist/session/GetUserSession.d.ts +1 -1
- package/dist/session/GetUserSession.js +6 -10
- package/dist/session/GetUserSession.js.map +1 -1
- package/dist/session/addJwtSecretFromEnvVar.js +1 -4
- package/dist/session/addJwtSecretFromEnvVar.js.map +1 -1
- package/dist/session/buildJwt.d.ts +1 -1
- package/dist/session/buildJwt.js +2 -5
- package/dist/session/buildJwt.js.map +1 -1
- package/dist/session/buildJwtFromReq.d.ts +1 -1
- package/dist/session/buildJwtFromReq.js +3 -8
- package/dist/session/buildJwtFromReq.js.map +1 -1
- package/dist/session/cookieUtils.d.ts +2 -13
- package/dist/session/cookieUtils.js +8 -9
- package/dist/session/cookieUtils.js.map +1 -1
- package/dist/session/destroySession.js +18 -33
- package/dist/session/destroySession.js.map +1 -1
- package/dist/session/getSessionId.js +5 -11
- package/dist/session/getSessionId.js.map +1 -1
- package/dist/tenant-api/AuthorizedTenantClient.d.ts +1 -1
- package/dist/tenant-api/AuthorizedTenantClient.js +22 -36
- package/dist/tenant-api/AuthorizedTenantClient.js.map +1 -1
- package/dist/tenant-api/Tenant.js +13 -5
- package/dist/tenant-api/Tenant.js.map +1 -1
- package/dist/test/JsonConnector.spec.js +56 -61
- package/dist/test/JsonConnector.spec.js.map +1 -1
- package/dist/test/JsonTransformer.spec.js +15 -19
- package/dist/test/JsonTransformer.spec.js.map +1 -1
- package/dist/test/arbitraries.d.ts +21 -21
- package/dist/test/arbitraries.js +85 -99
- package/dist/test/arbitraries.js.map +1 -1
- package/dist/test/aspect-templates/organization-details.d.ts +1 -4
- package/dist/test/aspect-templates/organization-details.js +1 -1
- package/dist/test/aspect-templates/organization-details.js.map +1 -1
- package/dist/test/buildApiClient.spec.js +81 -107
- package/dist/test/buildApiClient.spec.js.map +1 -1
- package/dist/test/buildAuthorizedTenantClient.spec.js +25 -40
- package/dist/test/buildAuthorizedTenantClient.spec.js.map +1 -1
- package/dist/test/connectors/MockExpressServer.js +9 -23
- package/dist/test/connectors/MockExpressServer.js.map +1 -1
- package/dist/test/connectors/MockRegistry.d.ts +1 -1
- package/dist/test/connectors/MockRegistry.js +11 -18
- package/dist/test/connectors/MockRegistry.js.map +1 -1
- package/dist/test/connectors/runConnectorTest.js +33 -55
- package/dist/test/connectors/runConnectorTest.js.map +1 -1
- package/dist/test/createMockAuthDecisionQueryClient.d.ts +4 -4
- package/dist/test/createMockAuthDecisionQueryClient.js +4 -9
- package/dist/test/createMockAuthDecisionQueryClient.js.map +1 -1
- package/dist/test/db/getTestDBConfig.js +1 -3
- package/dist/test/db/getTestDBConfig.js.map +1 -1
- package/dist/test/db/runMigrationSql.js +37 -58
- package/dist/test/db/runMigrationSql.js.map +1 -1
- package/dist/test/express/status.spec.js +81 -72
- package/dist/test/express/status.spec.js.map +1 -1
- package/dist/test/fakeArgv.js +6 -5
- package/dist/test/fakeArgv.js.map +1 -1
- package/dist/test/getBasePathFromUrl.spec.js +5 -10
- package/dist/test/getBasePathFromUrl.spec.js.map +1 -1
- package/dist/test/getStorageUrl.spec.js +22 -46
- package/dist/test/getStorageUrl.spec.js.map +1 -1
- package/dist/test/mockAuthApiHost.js +26 -28
- package/dist/test/mockAuthApiHost.js.map +1 -1
- package/dist/test/mockAuthorization.js +4 -10
- package/dist/test/mockAuthorization.js.map +1 -1
- package/dist/test/mockTenantDataStore.d.ts +1 -1
- package/dist/test/mockTenantDataStore.js +3 -5
- package/dist/test/mockTenantDataStore.js.map +1 -1
- package/dist/test/mockUserDataStore.d.ts +1 -1
- package/dist/test/mockUserDataStore.js +4 -6
- package/dist/test/mockUserDataStore.js.map +1 -1
- package/dist/test/registry/buildAuthorizedClient.spec.js +65 -87
- package/dist/test/registry/buildAuthorizedClient.spec.js.map +1 -1
- package/dist/test/session/buildJwt.spec.js +15 -19
- package/dist/test/session/buildJwt.spec.js.map +1 -1
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.js +6 -11
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.js.map +1 -1
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.js +6 -11
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.js.map +1 -1
- package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.js +6 -11
- package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.js.map +1 -1
- package/dist/test/testAsyncPage.spec.js +84 -105
- package/dist/test/testAsyncPage.spec.js.map +1 -1
- package/dist/test/testOpaCompileResponseParser.spec.js +192 -196
- package/dist/test/testOpaCompileResponseParser.spec.js.map +1 -1
- package/dist/test/util.js +1 -5
- package/dist/test/util.js.map +1 -1
- package/dist/unknown2Error.d.ts +2 -0
- package/dist/unknown2Error.js +3 -0
- package/dist/unknown2Error.js.map +1 -0
- package/dist/util/arrayToMaybe.d.ts +1 -1
- package/dist/util/arrayToMaybe.js +3 -6
- package/dist/util/arrayToMaybe.js.map +1 -1
- package/dist/util/cleanOrgTitle.js +1 -4
- package/dist/util/cleanOrgTitle.js.map +1 -1
- package/dist/util/escapeRegExp.js +1 -3
- package/dist/util/escapeRegExp.js.map +1 -1
- package/dist/util/getMinikubeIP.js +3 -9
- package/dist/util/getMinikubeIP.js.map +1 -1
- package/dist/util/isArray.js +1 -3
- package/dist/util/isArray.js.map +1 -1
- package/dist/util/isUuid.js +1 -3
- package/dist/util/isUuid.js.map +1 -1
- package/dist/util/unionToThrowable.d.ts +1 -1
- package/dist/util/unionToThrowable.js +3 -9
- package/dist/util/unionToThrowable.js.map +1 -1
- package/dist/utilityTypes.d.ts +1 -1
- package/dist/utilityTypes.js +1 -2
- package/package.json +44 -26
- package/dist/test/jsverify.d.ts +0 -2
- package/dist/test/jsverify.js +0 -8
- package/dist/test/jsverify.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleServerError.js","sourceRoot":"","sources":["../src/handleServerError.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handleServerError.js","sourceRoot":"","sources":["../src/handleServerError.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAE3C,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,GAAY,EAAE,GAAa,EAAE,CAAM;IACzE,IAAI,CAAC,YAAY,WAAW,EAAE;QAC1B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;KAC5C;SAAM;QACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;KAChC;IACD,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC"}
|
package/dist/markdownToHtml.js
CHANGED
|
@@ -1,17 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const markdown_it_1 = __importDefault(require("markdown-it"));
|
|
7
|
-
const dompurify_1 = __importDefault(require("dompurify"));
|
|
8
|
-
const md = new markdown_it_1.default({
|
|
1
|
+
import MarkdownIt from "markdown-it";
|
|
2
|
+
import DOMPurify from "dompurify";
|
|
3
|
+
const md = new MarkdownIt({
|
|
9
4
|
html: true,
|
|
10
5
|
linkify: true,
|
|
11
6
|
breaks: true
|
|
12
7
|
});
|
|
13
8
|
const htmlRegex = /^\s*<[^>]+>/;
|
|
14
|
-
function markdownToHtml(markdownString, allowUnsafeHtml = false, options = {
|
|
9
|
+
export default function markdownToHtml(markdownString, allowUnsafeHtml = false, options = {
|
|
15
10
|
FORBID_TAGS: ["svg", "math", "style"]
|
|
16
11
|
}) {
|
|
17
12
|
if (!markdownString || typeof markdownString !== "string") {
|
|
@@ -31,8 +26,7 @@ function markdownToHtml(markdownString, allowUnsafeHtml = false, options = {
|
|
|
31
26
|
return unsafeHtml;
|
|
32
27
|
}
|
|
33
28
|
else {
|
|
34
|
-
return
|
|
29
|
+
return DOMPurify.sanitize(unsafeHtml, options);
|
|
35
30
|
}
|
|
36
31
|
}
|
|
37
|
-
exports.default = markdownToHtml;
|
|
38
32
|
//# sourceMappingURL=markdownToHtml.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownToHtml.js","sourceRoot":"","sources":["../src/markdownToHtml.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markdownToHtml.js","sourceRoot":"","sources":["../src/markdownToHtml.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC;IACtB,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,aAAa,CAAC;AAEhC,MAAM,CAAC,OAAO,UAAU,cAAc,CAClC,cAAsB,EACtB,kBAA2B,KAAK,EAChC,OAAO,GAAG;IACN,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;CACxC;IAED,IAAI,CAAC,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE;QACvD,OAAO,cAAc,CAAC;KACzB;IACD,6EAA6E;IAC7E,0CAA0C;IAC1C,IAAI,UAAU,CAAC;IACf,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;QAChC,UAAU,GAAG,cAAc,CAAC;KAC/B;SAAM;QACH,2GAA2G;QAC3G,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KAC1C;IACD,IAAI,eAAe,EAAE;QACjB,OAAO,UAAU,CAAC;KACrB;SAAM;QACH,OAAO,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;KAClD;AACL,CAAC"}
|
package/dist/opa/AspectQuery.js
CHANGED
|
@@ -1,39 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.AspectQueryGroup = exports.AspectQueryValueInArray = exports.AspectQueryArrayNotEmpty = exports.AspectQueryWithValue = exports.AspectQueryExists = exports.AspectQueryFalse = exports.AspectQueryTrue = exports.AspectQuery = exports.AspectQueryValue = void 0;
|
|
23
|
-
const sql_syntax_1 = __importStar(require("sql-syntax"));
|
|
24
|
-
const SQLUtils_1 = require("../SQLUtils");
|
|
25
|
-
class AspectQueryValue {
|
|
1
|
+
import SQLSyntax, { sqls } from "sql-syntax";
|
|
2
|
+
import { getTableColumnName } from "../SQLUtils.js";
|
|
3
|
+
export class AspectQueryValue {
|
|
4
|
+
value;
|
|
5
|
+
postgresType;
|
|
26
6
|
constructor(value) {
|
|
27
7
|
this.value = value;
|
|
28
8
|
switch (typeof value) {
|
|
29
9
|
case "number":
|
|
30
|
-
this.postgresType =
|
|
10
|
+
this.postgresType = sqls `NUMERIC`;
|
|
31
11
|
break;
|
|
32
12
|
case "boolean":
|
|
33
|
-
this.postgresType =
|
|
13
|
+
this.postgresType = sqls `BOOL`;
|
|
34
14
|
break;
|
|
35
15
|
case "string":
|
|
36
|
-
this.postgresType =
|
|
16
|
+
this.postgresType = sqls `TEXT`;
|
|
37
17
|
break;
|
|
38
18
|
default:
|
|
39
19
|
throw new Error("getPostgresValueTypeCastStr: unsupported data type: `${" +
|
|
@@ -42,8 +22,10 @@ class AspectQueryValue {
|
|
|
42
22
|
}
|
|
43
23
|
}
|
|
44
24
|
}
|
|
45
|
-
|
|
46
|
-
|
|
25
|
+
export class AspectQuery {
|
|
26
|
+
aspectId;
|
|
27
|
+
path;
|
|
28
|
+
negated;
|
|
47
29
|
constructor(aspectId, path = [], negated = false) {
|
|
48
30
|
this.aspectId = aspectId;
|
|
49
31
|
this.path = path;
|
|
@@ -63,54 +45,52 @@ class AspectQuery {
|
|
|
63
45
|
}
|
|
64
46
|
const sqlQuery = this.sqlQueries(config);
|
|
65
47
|
if (this.negated) {
|
|
66
|
-
return
|
|
48
|
+
return sqls `NOT ${sqlQuery}`;
|
|
67
49
|
}
|
|
68
50
|
else {
|
|
69
51
|
return sqlQuery;
|
|
70
52
|
}
|
|
71
53
|
}
|
|
72
54
|
}
|
|
73
|
-
|
|
74
|
-
class AspectQueryTrue extends AspectQuery {
|
|
55
|
+
export class AspectQueryTrue extends AspectQuery {
|
|
75
56
|
constructor() {
|
|
76
57
|
super(undefined);
|
|
77
58
|
}
|
|
78
59
|
sqlQueries(config) {
|
|
79
|
-
return
|
|
60
|
+
return sqls `TRUE`;
|
|
80
61
|
}
|
|
81
62
|
// override default toSql as we don't need any validation logic
|
|
82
63
|
toSql(config) {
|
|
83
64
|
return this.sqlQueries(config);
|
|
84
65
|
}
|
|
85
66
|
}
|
|
86
|
-
|
|
87
|
-
class AspectQueryFalse extends AspectQuery {
|
|
67
|
+
export class AspectQueryFalse extends AspectQuery {
|
|
88
68
|
constructor() {
|
|
89
69
|
super(undefined);
|
|
90
70
|
}
|
|
91
71
|
sqlQueries(config) {
|
|
92
|
-
return
|
|
72
|
+
return sqls `FALSE`;
|
|
93
73
|
}
|
|
94
74
|
// override default toSql as we don't need any validation logic
|
|
95
75
|
toSql(config) {
|
|
96
76
|
return this.sqlQueries(config);
|
|
97
77
|
}
|
|
98
78
|
}
|
|
99
|
-
|
|
100
|
-
class AspectQueryExists extends AspectQuery {
|
|
79
|
+
export class AspectQueryExists extends AspectQuery {
|
|
101
80
|
sqlQueries(config) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
return sql_syntax_1.sqls `(${fieldRef} #> string_to_array(${this.path.join(",")}, ',')) IS NOT NULL`;
|
|
81
|
+
const fieldRef = getTableColumnName(this.aspectId, config.tableRef, config.useLowerCaseColumnName);
|
|
82
|
+
if (this.path?.length) {
|
|
83
|
+
return sqls `(${fieldRef} #> string_to_array(${this.path.join(",")}, ',')) IS NOT NULL`;
|
|
106
84
|
}
|
|
107
85
|
else {
|
|
108
86
|
return fieldRef.isNotNull();
|
|
109
87
|
}
|
|
110
88
|
}
|
|
111
89
|
}
|
|
112
|
-
|
|
113
|
-
|
|
90
|
+
export class AspectQueryWithValue extends AspectQuery {
|
|
91
|
+
value;
|
|
92
|
+
operator;
|
|
93
|
+
placeReferenceFirst;
|
|
114
94
|
constructor(value, operator, placeReferenceFirst, aspectId, path = [], negated = false) {
|
|
115
95
|
super(aspectId, path, negated);
|
|
116
96
|
this.value = value;
|
|
@@ -118,44 +98,40 @@ class AspectQueryWithValue extends AspectQuery {
|
|
|
118
98
|
this.placeReferenceFirst = placeReferenceFirst;
|
|
119
99
|
}
|
|
120
100
|
sqlQueries(config) {
|
|
121
|
-
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
: sql_syntax_1.sqls `(${fieldRef} #>> string_to_array(${this.path.join(",")}, ','))::${this.value.postgresType}`;
|
|
101
|
+
const fieldRef = getTableColumnName(this.aspectId, config.tableRef, config.useLowerCaseColumnName);
|
|
102
|
+
const tableDataRef = !this.path?.length
|
|
103
|
+
? sqls `${fieldRef}::${this.value.postgresType}`
|
|
104
|
+
: sqls `(${fieldRef} #>> string_to_array(${this.path.join(",")}, ','))::${this.value.postgresType}`;
|
|
126
105
|
return this.placeReferenceFirst
|
|
127
|
-
?
|
|
128
|
-
:
|
|
106
|
+
? sqls `COALESCE(${tableDataRef} ${this.operator} ${this.value.value}::${this.value.postgresType}, false)`
|
|
107
|
+
: sqls `COALESCE(${this.value.value}::${this.value.postgresType} ${this.operator} ${tableDataRef}, false)`;
|
|
129
108
|
}
|
|
130
109
|
}
|
|
131
|
-
|
|
132
|
-
class AspectQueryArrayNotEmpty extends AspectQuery {
|
|
110
|
+
export class AspectQueryArrayNotEmpty extends AspectQuery {
|
|
133
111
|
sqlQueries(config) {
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
: sql_syntax_1.sqls `(${fieldRef} #>> string_to_array(${[...this.path, "0"].join(",")}, ','))`;
|
|
112
|
+
const fieldRef = getTableColumnName(this.aspectId, config.tableRef, config.useLowerCaseColumnName);
|
|
113
|
+
const tableDataRef = !this.path?.length
|
|
114
|
+
? sqls `(${fieldRef} #> string_to_array('0',','))`
|
|
115
|
+
: sqls `(${fieldRef} #>> string_to_array(${[...this.path, "0"].join(",")}, ','))`;
|
|
139
116
|
return tableDataRef.isNotNull();
|
|
140
117
|
}
|
|
141
118
|
}
|
|
142
|
-
|
|
143
|
-
|
|
119
|
+
export class AspectQueryValueInArray extends AspectQuery {
|
|
120
|
+
value;
|
|
144
121
|
constructor(value, aspectId, path = [], negated = false) {
|
|
145
122
|
super(aspectId, path, negated);
|
|
146
123
|
this.value = value;
|
|
147
124
|
}
|
|
148
125
|
sqlQueries(config) {
|
|
149
|
-
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
? sql_syntax_1.sqls `COALESCE(
|
|
126
|
+
const fieldRef = getTableColumnName(this.aspectId, config.tableRef, config.useLowerCaseColumnName);
|
|
127
|
+
const tableDataRef = !this.path?.length
|
|
128
|
+
? sqls `COALESCE(
|
|
153
129
|
(
|
|
154
130
|
(${fieldRef}::JSONB #> string_to_array('0',','))::JSONB
|
|
155
131
|
) @> to_json(${this.value.value})::JSONB,
|
|
156
132
|
FALSE
|
|
157
133
|
)`
|
|
158
|
-
:
|
|
134
|
+
: sqls `COALESCE(
|
|
159
135
|
(
|
|
160
136
|
(${fieldRef}::JSONB #> string_to_array(${this.path.join(",")}, ','))::JSONB
|
|
161
137
|
) @> to_json(${this.value.value})::JSONB,
|
|
@@ -164,27 +140,28 @@ class AspectQueryValueInArray extends AspectQuery {
|
|
|
164
140
|
return tableDataRef;
|
|
165
141
|
}
|
|
166
142
|
}
|
|
167
|
-
|
|
168
|
-
|
|
143
|
+
export class AspectQueryGroup {
|
|
144
|
+
queries;
|
|
145
|
+
joinWithAnd;
|
|
146
|
+
negated;
|
|
169
147
|
constructor(queries, joinWithAnd = true, negated = false) {
|
|
170
148
|
this.queries = queries;
|
|
171
149
|
this.joinWithAnd = joinWithAnd;
|
|
172
150
|
this.negated = negated;
|
|
173
151
|
}
|
|
174
152
|
toSql(config) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
return sql_syntax_1.default.empty;
|
|
153
|
+
if (!this.queries?.length) {
|
|
154
|
+
return SQLSyntax.empty;
|
|
178
155
|
}
|
|
179
156
|
let result;
|
|
180
157
|
if (this.joinWithAnd) {
|
|
181
158
|
if (this.queries.findIndex((item) => item instanceof AspectQueryFalse) !== -1) {
|
|
182
|
-
result =
|
|
159
|
+
result = sqls `FALSE`;
|
|
183
160
|
}
|
|
184
161
|
else {
|
|
185
|
-
result =
|
|
162
|
+
result = SQLSyntax.joinWithAnd(this.queries.map((q) => {
|
|
186
163
|
if (q instanceof AspectQueryTrue) {
|
|
187
|
-
return
|
|
164
|
+
return SQLSyntax.empty;
|
|
188
165
|
}
|
|
189
166
|
else {
|
|
190
167
|
return q.toSql(config);
|
|
@@ -194,12 +171,12 @@ class AspectQueryGroup {
|
|
|
194
171
|
}
|
|
195
172
|
else {
|
|
196
173
|
if (this.queries.findIndex((item) => item instanceof AspectQueryTrue) !== -1) {
|
|
197
|
-
result =
|
|
174
|
+
result = sqls `TRUE`;
|
|
198
175
|
}
|
|
199
176
|
else {
|
|
200
|
-
result =
|
|
177
|
+
result = SQLSyntax.joinWithOr(this.queries.map((q) => {
|
|
201
178
|
if (q instanceof AspectQueryFalse) {
|
|
202
|
-
return
|
|
179
|
+
return SQLSyntax.empty;
|
|
203
180
|
}
|
|
204
181
|
else {
|
|
205
182
|
return q.toSql(config);
|
|
@@ -208,12 +185,11 @@ class AspectQueryGroup {
|
|
|
208
185
|
}
|
|
209
186
|
}
|
|
210
187
|
if (this.negated) {
|
|
211
|
-
return
|
|
188
|
+
return sqls `NOT ${result}`;
|
|
212
189
|
}
|
|
213
190
|
else {
|
|
214
191
|
return result;
|
|
215
192
|
}
|
|
216
193
|
}
|
|
217
194
|
}
|
|
218
|
-
exports.AspectQueryGroup = AspectQueryGroup;
|
|
219
195
|
//# sourceMappingURL=AspectQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AspectQuery.js","sourceRoot":"","sources":["../../src/opa/AspectQuery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AspectQuery.js","sourceRoot":"","sources":["../../src/opa/AspectQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AspectQueryValue, AspectQuery, AspectQueryGroup, AspectQueryToSqlConfig } from "./AspectQuery";
|
|
1
|
+
import { AspectQueryValue, AspectQuery, AspectQueryGroup, AspectQueryToSqlConfig } from "./AspectQuery.js";
|
|
2
2
|
import SQLSyntax from "sql-syntax";
|
|
3
|
-
|
|
3
|
+
type PlainObject = {
|
|
4
4
|
[key: string]: any;
|
|
5
5
|
};
|
|
6
6
|
export default class AuthDecision {
|
package/dist/opa/AuthDecision.js
CHANGED
|
@@ -1,33 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.ConciseOperand = exports.ConciseExpression = exports.ConciseRule = exports.UnconditionalFalseDecision = exports.UnconditionalTrueDecision = exports.isTrueEquivalent = void 0;
|
|
23
|
-
const AspectQuery_1 = require("./AspectQuery");
|
|
24
|
-
const sql_syntax_1 = __importStar(require("sql-syntax"));
|
|
25
|
-
class AuthDecision {
|
|
1
|
+
import { AspectQueryValue, AspectQueryArrayNotEmpty, AspectQueryExists, AspectQueryValueInArray, AspectQueryWithValue, AspectQueryGroup, AspectQueryTrue, AspectQueryFalse } from "./AspectQuery.js";
|
|
2
|
+
import SQLSyntax, { sqls } from "sql-syntax";
|
|
3
|
+
export default class AuthDecision {
|
|
4
|
+
hasResidualRules;
|
|
5
|
+
result;
|
|
6
|
+
residualRules;
|
|
7
|
+
hasWarns;
|
|
8
|
+
warns;
|
|
9
|
+
unknowns;
|
|
26
10
|
constructor(hasResidualRules, residualRules, result, hasWarns = false, warns = [], unknowns) {
|
|
27
11
|
if (typeof hasResidualRules !== "boolean") {
|
|
28
12
|
throw new Error("Failed to create AuthDecision: invalid hasResidualRules type");
|
|
29
13
|
}
|
|
30
|
-
if (hasResidualRules && !
|
|
14
|
+
if (hasResidualRules && !residualRules?.length) {
|
|
31
15
|
throw new Error("Failed to create AuthDecision: residualRules must have at least one item when hasResidualRules == true");
|
|
32
16
|
}
|
|
33
17
|
this.hasResidualRules = hasResidualRules;
|
|
@@ -38,8 +22,7 @@ class AuthDecision {
|
|
|
38
22
|
this.unknowns = unknowns;
|
|
39
23
|
}
|
|
40
24
|
static fromJson(data) {
|
|
41
|
-
|
|
42
|
-
return new AuthDecision(data === null || data === void 0 ? void 0 : data.hasResidualRules, (_a = data === null || data === void 0 ? void 0 : data.residualRules) === null || _a === void 0 ? void 0 : _a.map((item) => ConciseRule.fromJson(item)), data === null || data === void 0 ? void 0 : data.result, (data === null || data === void 0 ? void 0 : data.hasWarns) ? true : false, data === null || data === void 0 ? void 0 : data.warns, data === null || data === void 0 ? void 0 : data.unknowns);
|
|
25
|
+
return new AuthDecision(data?.hasResidualRules, data?.residualRules?.map((item) => ConciseRule.fromJson(item)), data?.result, data?.hasWarns ? true : false, data?.warns, data?.unknowns);
|
|
43
26
|
}
|
|
44
27
|
toAspectQueryGroups(prefixes) {
|
|
45
28
|
if (this.hasResidualRules) {
|
|
@@ -48,19 +31,18 @@ class AuthDecision {
|
|
|
48
31
|
else {
|
|
49
32
|
if (isTrueEquivalent(this.result)) {
|
|
50
33
|
// unconditional true
|
|
51
|
-
return [new
|
|
34
|
+
return [new AspectQueryGroup([new AspectQueryTrue()])];
|
|
52
35
|
}
|
|
53
36
|
else {
|
|
54
|
-
return [new
|
|
37
|
+
return [new AspectQueryGroup([new AspectQueryFalse()])];
|
|
55
38
|
}
|
|
56
39
|
}
|
|
57
40
|
}
|
|
58
41
|
toSql(config) {
|
|
59
|
-
return
|
|
42
|
+
return SQLSyntax.joinWithOr(this.toAspectQueryGroups(config.prefixes).map((item) => item.toSql(config))).roundBracket();
|
|
60
43
|
}
|
|
61
44
|
}
|
|
62
|
-
|
|
63
|
-
function isTrueEquivalent(value) {
|
|
45
|
+
export function isTrueEquivalent(value) {
|
|
64
46
|
const typeStr = typeof value;
|
|
65
47
|
if (typeStr === "boolean") {
|
|
66
48
|
return value;
|
|
@@ -68,84 +50,85 @@ function isTrueEquivalent(value) {
|
|
|
68
50
|
else if (typeStr === "undefined") {
|
|
69
51
|
return false;
|
|
70
52
|
}
|
|
71
|
-
else if (typeof
|
|
53
|
+
else if (typeof value?.length !== "undefined") {
|
|
72
54
|
return !!value.length;
|
|
73
55
|
}
|
|
74
56
|
else {
|
|
75
57
|
return !!value;
|
|
76
58
|
}
|
|
77
59
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
60
|
+
export const UnconditionalTrueDecision = new AuthDecision(false, undefined, true);
|
|
61
|
+
export const UnconditionalFalseDecision = new AuthDecision(false, undefined, false);
|
|
62
|
+
export class ConciseRule {
|
|
63
|
+
default;
|
|
64
|
+
value;
|
|
65
|
+
fullName;
|
|
66
|
+
name;
|
|
67
|
+
expressions;
|
|
82
68
|
constructor(fullName, name, value, expressions, isDefault = false) {
|
|
83
|
-
if (!isDefault && !
|
|
69
|
+
if (!isDefault && !expressions?.length) {
|
|
84
70
|
throw new Error("Invalid ConciseRule data: it must contain at least one ConciseExpression item unless it's a default rule.");
|
|
85
71
|
}
|
|
86
72
|
this.default = isDefault ? true : false;
|
|
87
73
|
this.fullName = fullName;
|
|
88
74
|
this.name = name;
|
|
89
75
|
this.value = value;
|
|
90
|
-
this.expressions =
|
|
76
|
+
this.expressions = expressions?.length ? expressions : [];
|
|
91
77
|
}
|
|
92
78
|
static fromJson(data) {
|
|
93
|
-
|
|
94
|
-
return new ConciseRule(data === null || data === void 0 ? void 0 : data.fullName, data === null || data === void 0 ? void 0 : data.name, data === null || data === void 0 ? void 0 : data.value, (_a = data === null || data === void 0 ? void 0 : data.expressions) === null || _a === void 0 ? void 0 : _a.map((item) => ConciseExpression.fromJson(item)));
|
|
79
|
+
return new ConciseRule(data?.fullName, data?.name, data?.value, data?.expressions?.map((item) => ConciseExpression.fromJson(item)));
|
|
95
80
|
}
|
|
96
81
|
toAspectQueryGroup(prefixes) {
|
|
97
|
-
|
|
98
|
-
return new AspectQuery_1.AspectQueryGroup((_a = this.expressions) === null || _a === void 0 ? void 0 : _a.map((item) => item.toAspectQuery(prefixes)), true, !isTrueEquivalent(this.value));
|
|
82
|
+
return new AspectQueryGroup(this.expressions?.map((item) => item.toAspectQuery(prefixes)), true, !isTrueEquivalent(this.value));
|
|
99
83
|
}
|
|
100
84
|
}
|
|
101
|
-
|
|
102
|
-
|
|
85
|
+
export class ConciseExpression {
|
|
86
|
+
negated;
|
|
87
|
+
operator;
|
|
88
|
+
operands;
|
|
103
89
|
constructor(operands, operator, negated = false) {
|
|
104
|
-
var _a, _b;
|
|
105
90
|
this.negated = negated ? true : false;
|
|
106
91
|
this.operands = operands;
|
|
107
92
|
this.operator = operator;
|
|
108
|
-
if (!
|
|
93
|
+
if (!this.operands?.length) {
|
|
109
94
|
throw new Error("invalid ConciseExpression data: it must have at least one operand.");
|
|
110
95
|
}
|
|
111
|
-
if (
|
|
96
|
+
if (this.operands?.length > 1 && typeof operator !== "string") {
|
|
112
97
|
throw new Error("invalid ConciseExpression data: when operands number > 1, operator must be a valid string value.");
|
|
113
98
|
}
|
|
114
99
|
}
|
|
115
100
|
static fromJson(data) {
|
|
116
|
-
|
|
117
|
-
return new ConciseExpression((_a = data === null || data === void 0 ? void 0 : data.operands) === null || _a === void 0 ? void 0 : _a.map((item) => ConciseOperand.fromJson(item)), data === null || data === void 0 ? void 0 : data.operator, data === null || data === void 0 ? void 0 : data.negated);
|
|
101
|
+
return new ConciseExpression(data?.operands?.map((item) => ConciseOperand.fromJson(item)), data?.operator, data?.negated);
|
|
118
102
|
}
|
|
119
103
|
getSqlOperator() {
|
|
120
104
|
switch (this.operator) {
|
|
121
105
|
case "!=":
|
|
122
|
-
return
|
|
106
|
+
return sqls `!=`;
|
|
123
107
|
case "=":
|
|
124
|
-
return
|
|
108
|
+
return sqls `=`;
|
|
125
109
|
case ">":
|
|
126
|
-
return
|
|
110
|
+
return sqls `>`;
|
|
127
111
|
case "<":
|
|
128
|
-
return
|
|
112
|
+
return sqls `<`;
|
|
129
113
|
case ">=":
|
|
130
|
-
return
|
|
114
|
+
return sqls `>=`;
|
|
131
115
|
case "<=":
|
|
132
|
-
return
|
|
116
|
+
return sqls `<=`;
|
|
133
117
|
default:
|
|
134
118
|
throw new Error(`Failed to convert auth decision operator to SQL operator: unsupported operator: ${this.operator}`);
|
|
135
119
|
}
|
|
136
120
|
}
|
|
137
121
|
toAspectQuery(prefixes) {
|
|
138
|
-
|
|
139
|
-
if (((_a = this.operands) === null || _a === void 0 ? void 0 : _a.length) == 1) {
|
|
122
|
+
if (this.operands?.length == 1) {
|
|
140
123
|
const [aspectId, path, isCollection] = this.operands[0].extractAspectIdAndPath(prefixes);
|
|
141
124
|
if (isCollection) {
|
|
142
|
-
return new
|
|
125
|
+
return new AspectQueryArrayNotEmpty(aspectId, path, this.negated);
|
|
143
126
|
}
|
|
144
127
|
else {
|
|
145
|
-
return new
|
|
128
|
+
return new AspectQueryExists(aspectId, path, this.negated);
|
|
146
129
|
}
|
|
147
130
|
}
|
|
148
|
-
else if (
|
|
131
|
+
else if (this.operands?.length == 2) {
|
|
149
132
|
const refOperand = this.operands.find((item) => item.isRef);
|
|
150
133
|
const valOperand = this.operands.find((item) => !item.isRef);
|
|
151
134
|
if (!valOperand) {
|
|
@@ -163,10 +146,10 @@ class ConciseExpression {
|
|
|
163
146
|
`Only \`=\` operator is supported for collection reference. Expression: ${this}`);
|
|
164
147
|
}
|
|
165
148
|
if (isCollection && this.operator == "=") {
|
|
166
|
-
return new
|
|
149
|
+
return new AspectQueryValueInArray(valOperand.toAspectQueryValue(), aspectId, path, this.negated);
|
|
167
150
|
}
|
|
168
151
|
else {
|
|
169
|
-
return new
|
|
152
|
+
return new AspectQueryWithValue(valOperand.toAspectQueryValue(), this.getSqlOperator(), this.operands[0].isRef, aspectId, path, this.negated);
|
|
170
153
|
}
|
|
171
154
|
}
|
|
172
155
|
else {
|
|
@@ -174,8 +157,9 @@ class ConciseExpression {
|
|
|
174
157
|
}
|
|
175
158
|
}
|
|
176
159
|
}
|
|
177
|
-
|
|
178
|
-
|
|
160
|
+
export class ConciseOperand {
|
|
161
|
+
isRef;
|
|
162
|
+
value;
|
|
179
163
|
constructor(isRef, value) {
|
|
180
164
|
if (typeof isRef !== "boolean") {
|
|
181
165
|
throw new Error("Invalid ConciseOperand data: isRef must be a boolean value.");
|
|
@@ -187,7 +171,7 @@ class ConciseOperand {
|
|
|
187
171
|
this.value = value;
|
|
188
172
|
}
|
|
189
173
|
static fromJson(data) {
|
|
190
|
-
return new ConciseOperand(data
|
|
174
|
+
return new ConciseOperand(data?.isRef, data?.value);
|
|
191
175
|
}
|
|
192
176
|
refString() {
|
|
193
177
|
if (!this.isRef) {
|
|
@@ -236,8 +220,7 @@ class ConciseOperand {
|
|
|
236
220
|
if (this.isRef) {
|
|
237
221
|
throw new Error(`Attempt to covert reference \`Operand\` to \`AspectQueryValue\`: ${this}`);
|
|
238
222
|
}
|
|
239
|
-
return new
|
|
223
|
+
return new AspectQueryValue(this.value);
|
|
240
224
|
}
|
|
241
225
|
}
|
|
242
|
-
exports.ConciseOperand = ConciseOperand;
|
|
243
226
|
//# sourceMappingURL=AuthDecision.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthDecision.js","sourceRoot":"","sources":["../../src/opa/AuthDecision.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AuthDecision.js","sourceRoot":"","sources":["../../src/opa/AuthDecision.ts"],"names":[],"mappings":"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"}
|