@prosopo/user-access-policy 3.12.7 → 3.12.9
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/.turbo/turbo-build$colon$cjs.log +45 -41
- package/.turbo/turbo-build$colon$tsc.log +14 -14
- package/.turbo/turbo-build.log +46 -42
- package/CHANGELOG.md +40 -0
- package/dist/.export.js +7 -21
- package/dist/_virtual/_rolldown/runtime.js +3 -0
- package/dist/api/.export.js +2 -9
- package/dist/api/accessRulesApiClient.js +1 -1
- package/dist/api/delete/.export.js +2 -1
- package/dist/api/delete/deleteAllRules.js +22 -24
- package/dist/api/delete/deleteRuleGroups.js +39 -51
- package/dist/api/delete/deleteRules.js +37 -41
- package/dist/api/read/.export.js +2 -1
- package/dist/api/read/fetchRules.js +34 -42
- package/dist/api/read/findRuleIds.js +35 -48
- package/dist/api/read/getMissingIds.js +36 -40
- package/dist/api/ruleApiRoutes.js +62 -120
- package/dist/api/rulesApiClient.js +51 -87
- package/dist/api/write/.export.js +2 -1
- package/dist/api/write/insertRules.js +84 -102
- package/dist/api/write/rehashRules.js +48 -56
- package/dist/cjs/.export.cjs +21 -23
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/cjs/api/.export.cjs +6 -10
- package/dist/cjs/api/accessRulesApiClient.cjs +0 -0
- package/dist/cjs/api/delete/.export.cjs +0 -1
- package/dist/cjs/api/delete/deleteAllRules.cjs +22 -24
- package/dist/cjs/api/delete/deleteRuleGroups.cjs +39 -51
- package/dist/cjs/api/delete/deleteRules.cjs +41 -42
- package/dist/cjs/api/read/.export.cjs +0 -1
- package/dist/cjs/api/read/fetchRules.cjs +34 -41
- package/dist/cjs/api/read/findRuleIds.cjs +37 -48
- package/dist/cjs/api/read/getMissingIds.cjs +36 -39
- package/dist/cjs/api/ruleApiRoutes.cjs +69 -125
- package/dist/cjs/api/rulesApiClient.cjs +54 -90
- package/dist/cjs/api/write/.export.cjs +0 -1
- package/dist/cjs/api/write/insertRules.cjs +85 -103
- package/dist/cjs/api/write/rehashRules.cjs +48 -56
- package/dist/cjs/classifyOs.cjs +46 -26
- package/dist/cjs/mongoose/.export.cjs +2 -3
- package/dist/cjs/mongoose/mongooseRuleSchema.cjs +97 -36
- package/dist/cjs/redis/.export.cjs +4 -5
- package/dist/cjs/redis/reader/redisAggregate.cjs +59 -84
- package/dist/cjs/redis/reader/redisRulesQuery.cjs +74 -116
- package/dist/cjs/redis/reader/redisRulesReader.cjs +322 -503
- package/dist/cjs/redis/reader/redisRulesSplitQuery.cjs +94 -72
- package/dist/cjs/redis/redisClient.cjs +53 -58
- package/dist/cjs/redis/redisRuleIndex.cjs +93 -49
- package/dist/cjs/redis/redisRulesStorage.cjs +21 -30
- package/dist/cjs/redis/redisRulesWriter.cjs +86 -112
- package/dist/cjs/rule.cjs +8 -7
- package/dist/cjs/ruleInput/.export.cjs +7 -8
- package/dist/cjs/ruleInput/policyInput.cjs +36 -39
- package/dist/cjs/ruleInput/ruleInput.cjs +37 -42
- package/dist/cjs/ruleInput/userScopeInput.cjs +47 -55
- package/dist/cjs/ruleRecord.cjs +15 -22
- package/dist/cjs/rulesStorage.cjs +7 -6
- package/dist/cjs/transformRule.cjs +36 -70
- package/dist/classifyOs.js +48 -29
- package/dist/mongoose/.export.js +2 -3
- package/dist/mongoose/mongooseRuleSchema.js +99 -38
- package/dist/redis/.export.js +3 -5
- package/dist/redis/reader/redisAggregate.js +60 -86
- package/dist/redis/reader/redisRulesQuery.js +75 -118
- package/dist/redis/reader/redisRulesReader.js +312 -487
- package/dist/redis/reader/redisRulesSplitQuery.js +96 -75
- package/dist/redis/redisClient.js +54 -62
- package/dist/redis/redisRuleIndex.js +93 -58
- package/dist/redis/redisRulesStorage.js +21 -30
- package/dist/redis/redisRulesWriter.js +82 -113
- package/dist/rule.js +10 -10
- package/dist/ruleInput/.export.js +3 -7
- package/dist/ruleInput/policyInput.d.ts +52 -1
- package/dist/ruleInput/policyInput.d.ts.map +1 -1
- package/dist/ruleInput/policyInput.js +35 -41
- package/dist/ruleInput/policyInput.js.map +1 -1
- package/dist/ruleInput/ruleInput.d.ts.map +1 -1
- package/dist/ruleInput/ruleInput.js +36 -44
- package/dist/ruleInput/ruleInput.js.map +1 -1
- package/dist/ruleInput/userScopeInput.js +44 -55
- package/dist/ruleRecord.js +17 -27
- package/dist/rulesStorage.js +9 -8
- package/dist/tests/policyInput.unit.test.js +50 -1
- package/dist/tests/policyInput.unit.test.js.map +1 -1
- package/dist/tests/redis/redisRulesStorage.integration.test.js +22 -3
- package/dist/tests/redis/redisRulesStorage.integration.test.js.map +1 -1
- package/dist/transformRule.js +34 -73
- package/dist/transformRule.js.map +1 -1
- package/entries.ts +25 -6
- package/package.json +13 -12
- package/src/ruleInput/policyInput.ts +45 -2
- package/src/ruleInput/ruleInput.ts +10 -3
- package/src/tests/policyInput.unit.test.ts +69 -1
- package/src/tests/redis/redisRulesStorage.integration.test.ts +191 -148
- package/src/transformRule.ts +2 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,44 +1,37 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
data: {
|
|
38
|
-
ruleEntries
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
}
|
|
2
|
+
const require_ruleInput_ruleInput = require("../../ruleInput/ruleInput.cjs");
|
|
3
|
+
let zod = require("zod");
|
|
4
|
+
let _prosopo_api_route = require("@prosopo/api-route");
|
|
5
|
+
//#region src/api/read/fetchRules.ts
|
|
6
|
+
var fetchRulesResponse = zod.z.object({ ruleEntries: require_ruleInput_ruleInput.ruleEntryInput.array() });
|
|
7
|
+
var FetchRulesEndpoint = class {
|
|
8
|
+
constructor(accessRulesStorage, logger) {
|
|
9
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
}
|
|
12
|
+
getRequestArgsSchema() {
|
|
13
|
+
return zod.z.object({ ids: zod.z.string().array() });
|
|
14
|
+
}
|
|
15
|
+
async processRequest(args, logger) {
|
|
16
|
+
const log = logger ?? this.logger;
|
|
17
|
+
const ruleEntries = await this.accessRulesStorage.fetchRules(args.ids);
|
|
18
|
+
log.info(() => ({
|
|
19
|
+
msg: "Endpoint fetched rules",
|
|
20
|
+
data: {
|
|
21
|
+
requestedCount: args.ids.length,
|
|
22
|
+
foundCount: ruleEntries.length
|
|
23
|
+
}
|
|
24
|
+
}));
|
|
25
|
+
log.debug(() => ({
|
|
26
|
+
msg: "Fetched rule details",
|
|
27
|
+
data: { ruleEntries }
|
|
28
|
+
}));
|
|
29
|
+
return {
|
|
30
|
+
status: _prosopo_api_route.ApiEndpointResponseStatus.SUCCESS,
|
|
31
|
+
data: { ruleEntries }
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
//#endregion
|
|
43
36
|
exports.FetchRulesEndpoint = FetchRulesEndpoint;
|
|
44
37
|
exports.fetchRulesResponse = fetchRulesResponse;
|
|
@@ -1,51 +1,40 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
}));
|
|
42
|
-
return {
|
|
43
|
-
status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
|
|
44
|
-
data: {
|
|
45
|
-
ruleIds: uniqueRuleIds
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
}
|
|
2
|
+
const require_ruleInput_ruleInput = require("../../ruleInput/ruleInput.cjs");
|
|
3
|
+
let zod = require("zod");
|
|
4
|
+
let _prosopo_api_route = require("@prosopo/api-route");
|
|
5
|
+
let _prosopo_common = require("@prosopo/common");
|
|
6
|
+
//#region src/api/read/findRuleIds.ts
|
|
7
|
+
var ruleIdsResponse = zod.z.object({ ruleIds: zod.z.string().array() });
|
|
8
|
+
var FindRuleIdsEndpoint = class {
|
|
9
|
+
constructor(accessRulesStorage, logger) {
|
|
10
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
11
|
+
this.logger = logger;
|
|
12
|
+
}
|
|
13
|
+
getRequestArgsSchema() {
|
|
14
|
+
return zod.z.array(require_ruleInput_ruleInput.accessRulesFilterInput);
|
|
15
|
+
}
|
|
16
|
+
async processRequest(args, logger) {
|
|
17
|
+
const log = logger ?? this.logger;
|
|
18
|
+
const ruleIds = (await (0, _prosopo_common.executeBatchesSequentially)(args, async (rulesFilterInput) => {
|
|
19
|
+
const ruleFilters = require_ruleInput_ruleInput.getAccessRuleFiltersFromInput(rulesFilterInput);
|
|
20
|
+
return (await (0, _prosopo_common.executeBatchesSequentially)(ruleFilters, (ruleFilter) => this.accessRulesStorage.findRuleIds(ruleFilter))).flat();
|
|
21
|
+
})).flat();
|
|
22
|
+
const uniqueRuleIds = [...new Set(ruleIds)];
|
|
23
|
+
log.info(() => ({
|
|
24
|
+
msg: "Endpoint found rules",
|
|
25
|
+
data: {
|
|
26
|
+
totalFoundCount: ruleIds.length,
|
|
27
|
+
uniqueFoundCount: uniqueRuleIds.length,
|
|
28
|
+
searchFilters: args,
|
|
29
|
+
foundIds: uniqueRuleIds
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
return {
|
|
33
|
+
status: _prosopo_api_route.ApiEndpointResponseStatus.SUCCESS,
|
|
34
|
+
data: { ruleIds: uniqueRuleIds }
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
//#endregion
|
|
50
39
|
exports.FindRuleIdsEndpoint = FindRuleIdsEndpoint;
|
|
51
40
|
exports.ruleIdsResponse = ruleIdsResponse;
|
|
@@ -1,42 +1,39 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
}
|
|
2
|
+
let zod = require("zod");
|
|
3
|
+
let _prosopo_api_route = require("@prosopo/api-route");
|
|
4
|
+
//#region src/api/read/getMissingIds.ts
|
|
5
|
+
var missingIdsResponse = zod.z.object({ ids: zod.z.string().array() });
|
|
6
|
+
var GetMissingIdsEndpoint = class {
|
|
7
|
+
constructor(accessRulesStorage, logger) {
|
|
8
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
9
|
+
this.logger = logger;
|
|
10
|
+
}
|
|
11
|
+
getRequestArgsSchema() {
|
|
12
|
+
return zod.z.string().array();
|
|
13
|
+
}
|
|
14
|
+
async processRequest(args, logger) {
|
|
15
|
+
const log = logger ?? this.logger;
|
|
16
|
+
const missingIds = await this.accessRulesStorage.getMissingRuleIds(args);
|
|
17
|
+
log.info(() => ({
|
|
18
|
+
msg: "Endpoint checked missing ids",
|
|
19
|
+
data: {
|
|
20
|
+
idsToCheck: args.length,
|
|
21
|
+
missingIds: missingIds.length
|
|
22
|
+
}
|
|
23
|
+
}));
|
|
24
|
+
log.debug(() => ({
|
|
25
|
+
msg: "Missing id details",
|
|
26
|
+
data: {
|
|
27
|
+
idsToCheck: args,
|
|
28
|
+
missingIds
|
|
29
|
+
}
|
|
30
|
+
}));
|
|
31
|
+
return {
|
|
32
|
+
status: _prosopo_api_route.ApiEndpointResponseStatus.SUCCESS,
|
|
33
|
+
data: { ids: missingIds }
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
//#endregion
|
|
41
38
|
exports.GetMissingIdsEndpoint = GetMissingIdsEndpoint;
|
|
42
39
|
exports.missingIdsResponse = missingIdsResponse;
|
|
@@ -1,131 +1,75 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
this.logger
|
|
56
|
-
)
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
makeReadEndpoints() {
|
|
60
|
-
return {
|
|
61
|
-
[
|
|
62
|
-
"/v1/prosopo/user-access-policy/rules/fetch-many"
|
|
63
|
-
/* FETCH_MANY */
|
|
64
|
-
]: new fetchRules.FetchRulesEndpoint(
|
|
65
|
-
this.accessRulesStorage,
|
|
66
|
-
this.logger
|
|
67
|
-
),
|
|
68
|
-
[
|
|
69
|
-
"/v1/prosopo/user-access-policy/rules/find-ids"
|
|
70
|
-
/* FIND_IDS */
|
|
71
|
-
]: new findRuleIds.FindRuleIdsEndpoint(
|
|
72
|
-
this.accessRulesStorage,
|
|
73
|
-
this.logger
|
|
74
|
-
),
|
|
75
|
-
[
|
|
76
|
-
"/v1/prosopo/user-access-policy/rules/get-missing-ids"
|
|
77
|
-
/* GET_MISSING_IDS */
|
|
78
|
-
]: new getMissingIds.GetMissingIdsEndpoint(
|
|
79
|
-
this.accessRulesStorage,
|
|
80
|
-
this.logger
|
|
81
|
-
)
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
makeWriteEndpoints() {
|
|
85
|
-
return {
|
|
86
|
-
[
|
|
87
|
-
"/v1/prosopo/user-access-policy/rules/insert-many"
|
|
88
|
-
/* INSERT_MANY */
|
|
89
|
-
]: new insertRules.InsertRulesEndpoint(
|
|
90
|
-
this.accessRulesStorage,
|
|
91
|
-
this.logger
|
|
92
|
-
),
|
|
93
|
-
[
|
|
94
|
-
"/v1/prosopo/user-access-policy/rules/rehash-all"
|
|
95
|
-
/* REHASH_ALL */
|
|
96
|
-
]: new rehashRules.RehashRulesEndpoint(
|
|
97
|
-
this.accessRulesStorage,
|
|
98
|
-
this.logger
|
|
99
|
-
)
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
const getExpressApiRuleRateLimits = () => {
|
|
104
|
-
const defaults = {
|
|
105
|
-
limit: 5,
|
|
106
|
-
windowSeconds: 10
|
|
107
|
-
};
|
|
108
|
-
const defaultWindowMs = defaults.windowSeconds * 1e3;
|
|
109
|
-
const rateLimitEntries = Object.entries(accessRuleApiPaths).map(
|
|
110
|
-
([endpointName, endpointPath]) => [
|
|
111
|
-
endpointPath,
|
|
112
|
-
{
|
|
113
|
-
windowMs: getIntEnvironmentVariable(
|
|
114
|
-
`PROSOPO_USER_ACCESS_POLICY_RULE_${endpointName}_WINDOW`
|
|
115
|
-
) || defaultWindowMs,
|
|
116
|
-
limit: getIntEnvironmentVariable(
|
|
117
|
-
`PROSOPO_USER_ACCESS_POLICY_RULE_${endpointName}_LIMIT`
|
|
118
|
-
) || defaults.limit
|
|
119
|
-
}
|
|
120
|
-
]
|
|
121
|
-
);
|
|
122
|
-
return Object.fromEntries(rateLimitEntries);
|
|
2
|
+
const require_api_read_fetchRules = require("./read/fetchRules.cjs");
|
|
3
|
+
const require_api_read_findRuleIds = require("./read/findRuleIds.cjs");
|
|
4
|
+
const require_api_read_getMissingIds = require("./read/getMissingIds.cjs");
|
|
5
|
+
const require_api_write_rehashRules = require("./write/rehashRules.cjs");
|
|
6
|
+
const require_api_delete_deleteAllRules = require("./delete/deleteAllRules.cjs");
|
|
7
|
+
const require_api_delete_deleteRuleGroups = require("./delete/deleteRuleGroups.cjs");
|
|
8
|
+
const require_api_delete_deleteRules = require("./delete/deleteRules.cjs");
|
|
9
|
+
const require_api_write_insertRules = require("./write/insertRules.cjs");
|
|
10
|
+
//#region src/api/ruleApiRoutes.ts
|
|
11
|
+
var accessRuleApiPaths = /* @__PURE__ */ function(accessRuleApiPaths) {
|
|
12
|
+
accessRuleApiPaths["DELETE_ALL"] = "/v1/prosopo/user-access-policy/rules/delete-all";
|
|
13
|
+
accessRuleApiPaths["DELETE_GROUPS"] = "/v1/prosopo/user-access-policy/rules/delete-groups";
|
|
14
|
+
accessRuleApiPaths["DELETE_MANY"] = "/v1/prosopo/user-access-policy/rules/delete-many";
|
|
15
|
+
accessRuleApiPaths["FETCH_MANY"] = "/v1/prosopo/user-access-policy/rules/fetch-many";
|
|
16
|
+
accessRuleApiPaths["FIND_IDS"] = "/v1/prosopo/user-access-policy/rules/find-ids";
|
|
17
|
+
accessRuleApiPaths["GET_MISSING_IDS"] = "/v1/prosopo/user-access-policy/rules/get-missing-ids";
|
|
18
|
+
accessRuleApiPaths["INSERT_MANY"] = "/v1/prosopo/user-access-policy/rules/insert-many";
|
|
19
|
+
accessRuleApiPaths["REHASH_ALL"] = "/v1/prosopo/user-access-policy/rules/rehash-all";
|
|
20
|
+
return accessRuleApiPaths;
|
|
21
|
+
}({});
|
|
22
|
+
var AccessRuleApiRoutes = class {
|
|
23
|
+
constructor(accessRulesStorage, logger) {
|
|
24
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
25
|
+
this.logger = logger;
|
|
26
|
+
}
|
|
27
|
+
getRoutes() {
|
|
28
|
+
return {
|
|
29
|
+
...this.makeDeleteEndpoints(),
|
|
30
|
+
...this.makeReadEndpoints(),
|
|
31
|
+
...this.makeWriteEndpoints()
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
makeDeleteEndpoints() {
|
|
35
|
+
return {
|
|
36
|
+
["/v1/prosopo/user-access-policy/rules/delete-all"]: new require_api_delete_deleteAllRules.DeleteAllRulesEndpoint(this.accessRulesStorage, this.logger),
|
|
37
|
+
["/v1/prosopo/user-access-policy/rules/delete-groups"]: new require_api_delete_deleteRuleGroups.DeleteRuleGroupsEndpoint(this.accessRulesStorage, this.logger),
|
|
38
|
+
["/v1/prosopo/user-access-policy/rules/delete-many"]: new require_api_delete_deleteRules.DeleteRulesEndpoint(this.accessRulesStorage, this.logger)
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
makeReadEndpoints() {
|
|
42
|
+
return {
|
|
43
|
+
["/v1/prosopo/user-access-policy/rules/fetch-many"]: new require_api_read_fetchRules.FetchRulesEndpoint(this.accessRulesStorage, this.logger),
|
|
44
|
+
["/v1/prosopo/user-access-policy/rules/find-ids"]: new require_api_read_findRuleIds.FindRuleIdsEndpoint(this.accessRulesStorage, this.logger),
|
|
45
|
+
["/v1/prosopo/user-access-policy/rules/get-missing-ids"]: new require_api_read_getMissingIds.GetMissingIdsEndpoint(this.accessRulesStorage, this.logger)
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
makeWriteEndpoints() {
|
|
49
|
+
return {
|
|
50
|
+
["/v1/prosopo/user-access-policy/rules/insert-many"]: new require_api_write_insertRules.InsertRulesEndpoint(this.accessRulesStorage, this.logger),
|
|
51
|
+
["/v1/prosopo/user-access-policy/rules/rehash-all"]: new require_api_write_rehashRules.RehashRulesEndpoint(this.accessRulesStorage, this.logger)
|
|
52
|
+
};
|
|
53
|
+
}
|
|
123
54
|
};
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
55
|
+
var getExpressApiRuleRateLimits = () => {
|
|
56
|
+
const defaults = {
|
|
57
|
+
limit: 5,
|
|
58
|
+
windowSeconds: 10
|
|
59
|
+
};
|
|
60
|
+
const defaultWindowMs = defaults.windowSeconds * 1e3;
|
|
61
|
+
const rateLimitEntries = Object.entries(accessRuleApiPaths).map(([endpointName, endpointPath]) => [endpointPath, {
|
|
62
|
+
windowMs: getIntEnvironmentVariable(`PROSOPO_USER_ACCESS_POLICY_RULE_${endpointName}_WINDOW`) || defaultWindowMs,
|
|
63
|
+
limit: getIntEnvironmentVariable(`PROSOPO_USER_ACCESS_POLICY_RULE_${endpointName}_LIMIT`) || defaults.limit
|
|
64
|
+
}]);
|
|
65
|
+
return Object.fromEntries(rateLimitEntries);
|
|
128
66
|
};
|
|
67
|
+
var getIntEnvironmentVariable = (variableName) => {
|
|
68
|
+
const variableValue = process.env[variableName];
|
|
69
|
+
const numericValue = variableValue ? Number.parseInt(variableValue) : NaN;
|
|
70
|
+
return Number.isInteger(numericValue) ? numericValue : void 0;
|
|
71
|
+
};
|
|
72
|
+
//#endregion
|
|
129
73
|
exports.AccessRuleApiRoutes = AccessRuleApiRoutes;
|
|
130
74
|
exports.accessRuleApiPaths = accessRuleApiPaths;
|
|
131
75
|
exports.getExpressApiRuleRateLimits = getExpressApiRuleRateLimits;
|
|
@@ -1,92 +1,56 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const endpointResponse = await this.post(
|
|
58
|
-
ruleApiRoutes.accessRuleApiPaths.FIND_IDS,
|
|
59
|
-
filters,
|
|
60
|
-
this.getAuthHeaders(jwt)
|
|
61
|
-
);
|
|
62
|
-
const parsedData = findRuleIds.ruleIdsResponse.safeParse(endpointResponse.data);
|
|
63
|
-
return {
|
|
64
|
-
...endpointResponse,
|
|
65
|
-
data: parsedData.success ? parsedData.data : void 0
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
//// write
|
|
69
|
-
async rehashAll(jwt) {
|
|
70
|
-
return this.post(
|
|
71
|
-
ruleApiRoutes.accessRuleApiPaths.REHASH_ALL,
|
|
72
|
-
{},
|
|
73
|
-
this.getAuthHeaders(jwt)
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
insertMany(ruleGroups, jwt) {
|
|
77
|
-
return this.post(
|
|
78
|
-
ruleApiRoutes.accessRuleApiPaths.INSERT_MANY,
|
|
79
|
-
ruleGroups,
|
|
80
|
-
this.getAuthHeaders(jwt)
|
|
81
|
-
);
|
|
82
|
-
}
|
|
83
|
-
getAuthHeaders(jwt) {
|
|
84
|
-
return {
|
|
85
|
-
headers: {
|
|
86
|
-
"Prosopo-Site-Key": this.account,
|
|
87
|
-
Authorization: `Bearer ${jwt}`
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
}
|
|
2
|
+
const require_api_read_fetchRules = require("./read/fetchRules.cjs");
|
|
3
|
+
const require_api_read_findRuleIds = require("./read/findRuleIds.cjs");
|
|
4
|
+
const require_api_read_getMissingIds = require("./read/getMissingIds.cjs");
|
|
5
|
+
const require_api_ruleApiRoutes = require("./ruleApiRoutes.cjs");
|
|
6
|
+
let _prosopo_api = require("@prosopo/api");
|
|
7
|
+
//#region src/api/rulesApiClient.ts
|
|
8
|
+
var AccessRulesApiClient = class extends _prosopo_api.ApiClient {
|
|
9
|
+
deleteMany(filters, jwt) {
|
|
10
|
+
return this.post(require_api_ruleApiRoutes.accessRuleApiPaths.DELETE_MANY, filters, this.getAuthHeaders(jwt));
|
|
11
|
+
}
|
|
12
|
+
deleteGroups(siteGroups, jwt) {
|
|
13
|
+
return this.post(require_api_ruleApiRoutes.accessRuleApiPaths.DELETE_GROUPS, siteGroups, this.getAuthHeaders(jwt));
|
|
14
|
+
}
|
|
15
|
+
deleteAll(jwt) {
|
|
16
|
+
return this.post(require_api_ruleApiRoutes.accessRuleApiPaths.DELETE_ALL, {}, this.getAuthHeaders(jwt));
|
|
17
|
+
}
|
|
18
|
+
async getMissingIds(idsToCheck, jwt) {
|
|
19
|
+
const endpointResponse = await this.post(require_api_ruleApiRoutes.accessRuleApiPaths.GET_MISSING_IDS, idsToCheck, this.getAuthHeaders(jwt));
|
|
20
|
+
const parsedData = require_api_read_getMissingIds.missingIdsResponse.safeParse(endpointResponse.data);
|
|
21
|
+
return {
|
|
22
|
+
...endpointResponse,
|
|
23
|
+
data: parsedData.success ? parsedData.data : void 0
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
async fetchMany(fetchOptions, jwt) {
|
|
27
|
+
const endpointResponse = await this.post(require_api_ruleApiRoutes.accessRuleApiPaths.FETCH_MANY, fetchOptions, this.getAuthHeaders(jwt));
|
|
28
|
+
const parsedData = require_api_read_fetchRules.fetchRulesResponse.safeParse(endpointResponse.data);
|
|
29
|
+
return {
|
|
30
|
+
...endpointResponse,
|
|
31
|
+
data: parsedData.success ? parsedData.data : void 0
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async findIds(filters, jwt) {
|
|
35
|
+
const endpointResponse = await this.post(require_api_ruleApiRoutes.accessRuleApiPaths.FIND_IDS, filters, this.getAuthHeaders(jwt));
|
|
36
|
+
const parsedData = require_api_read_findRuleIds.ruleIdsResponse.safeParse(endpointResponse.data);
|
|
37
|
+
return {
|
|
38
|
+
...endpointResponse,
|
|
39
|
+
data: parsedData.success ? parsedData.data : void 0
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async rehashAll(jwt) {
|
|
43
|
+
return this.post(require_api_ruleApiRoutes.accessRuleApiPaths.REHASH_ALL, {}, this.getAuthHeaders(jwt));
|
|
44
|
+
}
|
|
45
|
+
insertMany(ruleGroups, jwt) {
|
|
46
|
+
return this.post(require_api_ruleApiRoutes.accessRuleApiPaths.INSERT_MANY, ruleGroups, this.getAuthHeaders(jwt));
|
|
47
|
+
}
|
|
48
|
+
getAuthHeaders(jwt) {
|
|
49
|
+
return { headers: {
|
|
50
|
+
"Prosopo-Site-Key": this.account,
|
|
51
|
+
Authorization: `Bearer ${jwt}`
|
|
52
|
+
} };
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
//#endregion
|
|
92
56
|
exports.AccessRulesApiClient = AccessRulesApiClient;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|