@prosopo/user-access-policy 3.12.8 → 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.
Files changed (84) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +45 -41
  2. package/.turbo/turbo-build$colon$tsc.log +14 -14
  3. package/.turbo/turbo-build.log +46 -42
  4. package/CHANGELOG.md +18 -0
  5. package/dist/.export.js +7 -21
  6. package/dist/_virtual/_rolldown/runtime.js +3 -0
  7. package/dist/api/.export.js +2 -9
  8. package/dist/api/accessRulesApiClient.js +1 -1
  9. package/dist/api/delete/.export.js +2 -1
  10. package/dist/api/delete/deleteAllRules.js +22 -24
  11. package/dist/api/delete/deleteRuleGroups.js +39 -51
  12. package/dist/api/delete/deleteRules.js +37 -41
  13. package/dist/api/read/.export.js +2 -1
  14. package/dist/api/read/fetchRules.js +34 -42
  15. package/dist/api/read/findRuleIds.js +35 -48
  16. package/dist/api/read/getMissingIds.js +36 -40
  17. package/dist/api/ruleApiRoutes.js +62 -120
  18. package/dist/api/rulesApiClient.js +51 -87
  19. package/dist/api/write/.export.js +2 -1
  20. package/dist/api/write/insertRules.js +84 -102
  21. package/dist/api/write/rehashRules.js +48 -56
  22. package/dist/cjs/.export.cjs +21 -23
  23. package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  24. package/dist/cjs/api/.export.cjs +6 -10
  25. package/dist/cjs/api/accessRulesApiClient.cjs +0 -0
  26. package/dist/cjs/api/delete/.export.cjs +0 -1
  27. package/dist/cjs/api/delete/deleteAllRules.cjs +22 -24
  28. package/dist/cjs/api/delete/deleteRuleGroups.cjs +39 -51
  29. package/dist/cjs/api/delete/deleteRules.cjs +41 -42
  30. package/dist/cjs/api/read/.export.cjs +0 -1
  31. package/dist/cjs/api/read/fetchRules.cjs +34 -41
  32. package/dist/cjs/api/read/findRuleIds.cjs +37 -48
  33. package/dist/cjs/api/read/getMissingIds.cjs +36 -39
  34. package/dist/cjs/api/ruleApiRoutes.cjs +69 -125
  35. package/dist/cjs/api/rulesApiClient.cjs +54 -90
  36. package/dist/cjs/api/write/.export.cjs +0 -1
  37. package/dist/cjs/api/write/insertRules.cjs +85 -103
  38. package/dist/cjs/api/write/rehashRules.cjs +48 -56
  39. package/dist/cjs/classifyOs.cjs +46 -26
  40. package/dist/cjs/mongoose/.export.cjs +2 -3
  41. package/dist/cjs/mongoose/mongooseRuleSchema.cjs +97 -36
  42. package/dist/cjs/redis/.export.cjs +4 -5
  43. package/dist/cjs/redis/reader/redisAggregate.cjs +59 -84
  44. package/dist/cjs/redis/reader/redisRulesQuery.cjs +74 -116
  45. package/dist/cjs/redis/reader/redisRulesReader.cjs +322 -503
  46. package/dist/cjs/redis/reader/redisRulesSplitQuery.cjs +94 -72
  47. package/dist/cjs/redis/redisClient.cjs +53 -58
  48. package/dist/cjs/redis/redisRuleIndex.cjs +93 -49
  49. package/dist/cjs/redis/redisRulesStorage.cjs +21 -30
  50. package/dist/cjs/redis/redisRulesWriter.cjs +86 -112
  51. package/dist/cjs/rule.cjs +8 -7
  52. package/dist/cjs/ruleInput/.export.cjs +7 -8
  53. package/dist/cjs/ruleInput/policyInput.cjs +35 -58
  54. package/dist/cjs/ruleInput/ruleInput.cjs +37 -42
  55. package/dist/cjs/ruleInput/userScopeInput.cjs +47 -55
  56. package/dist/cjs/ruleRecord.cjs +15 -22
  57. package/dist/cjs/rulesStorage.cjs +7 -6
  58. package/dist/cjs/transformRule.cjs +36 -70
  59. package/dist/classifyOs.js +48 -29
  60. package/dist/mongoose/.export.js +2 -3
  61. package/dist/mongoose/mongooseRuleSchema.js +99 -38
  62. package/dist/redis/.export.js +3 -5
  63. package/dist/redis/reader/redisAggregate.js +60 -86
  64. package/dist/redis/reader/redisRulesQuery.js +75 -118
  65. package/dist/redis/reader/redisRulesReader.js +312 -487
  66. package/dist/redis/reader/redisRulesSplitQuery.js +96 -75
  67. package/dist/redis/redisClient.js +54 -62
  68. package/dist/redis/redisRuleIndex.js +93 -58
  69. package/dist/redis/redisRulesStorage.js +21 -30
  70. package/dist/redis/redisRulesWriter.js +82 -113
  71. package/dist/rule.js +10 -10
  72. package/dist/ruleInput/.export.js +3 -7
  73. package/dist/ruleInput/policyInput.js +35 -61
  74. package/dist/ruleInput/ruleInput.js +36 -44
  75. package/dist/ruleInput/userScopeInput.js +44 -55
  76. package/dist/ruleRecord.js +17 -27
  77. package/dist/rulesStorage.js +9 -8
  78. package/dist/tests/redis/redisRulesStorage.integration.test.js +1 -3
  79. package/dist/tests/redis/redisRulesStorage.integration.test.js.map +1 -1
  80. package/dist/transformRule.js +34 -73
  81. package/entries.ts +25 -6
  82. package/package.json +13 -12
  83. package/src/tests/redis/redisRulesStorage.integration.test.ts +191 -195
  84. package/tsconfig.tsbuildinfo +1 -1
@@ -1,44 +1,37 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const apiRoute = require("@prosopo/api-route");
4
- const zod = require("zod");
5
- const ruleInput = require("../../ruleInput/ruleInput.cjs");
6
- const fetchRulesResponse = zod.z.object({
7
- ruleEntries: ruleInput.ruleEntryInput.array()
8
- });
9
- class FetchRulesEndpoint {
10
- constructor(accessRulesStorage, logger) {
11
- this.accessRulesStorage = accessRulesStorage;
12
- this.logger = logger;
13
- }
14
- getRequestArgsSchema() {
15
- return zod.z.object({
16
- ids: zod.z.string().array()
17
- });
18
- }
19
- async processRequest(args, logger) {
20
- const log = logger ?? this.logger;
21
- const ruleEntries = await this.accessRulesStorage.fetchRules(args.ids);
22
- log.info(() => ({
23
- msg: "Endpoint fetched rules",
24
- data: {
25
- requestedCount: args.ids.length,
26
- foundCount: ruleEntries.length
27
- }
28
- }));
29
- log.debug(() => ({
30
- msg: "Fetched rule details",
31
- data: {
32
- ruleEntries
33
- }
34
- }));
35
- return {
36
- status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
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 apiRoute = require("@prosopo/api-route");
4
- const common = require("@prosopo/common");
5
- const zod = require("zod");
6
- const ruleInput = require("../../ruleInput/ruleInput.cjs");
7
- const ruleIdsResponse = zod.z.object({
8
- ruleIds: zod.z.string().array()
9
- });
10
- class FindRuleIdsEndpoint {
11
- constructor(accessRulesStorage, logger) {
12
- this.accessRulesStorage = accessRulesStorage;
13
- this.logger = logger;
14
- }
15
- getRequestArgsSchema() {
16
- return zod.z.array(ruleInput.accessRulesFilterInput);
17
- }
18
- async processRequest(args, logger) {
19
- const log = logger ?? this.logger;
20
- const ruleIdBatches = await common.executeBatchesSequentially(
21
- args,
22
- async (rulesFilterInput) => {
23
- const ruleFilters = ruleInput.getAccessRuleFiltersFromInput(rulesFilterInput);
24
- const ruleIds2 = await common.executeBatchesSequentially(
25
- ruleFilters,
26
- (ruleFilter) => this.accessRulesStorage.findRuleIds(ruleFilter)
27
- );
28
- return ruleIds2.flat();
29
- }
30
- );
31
- const ruleIds = ruleIdBatches.flat();
32
- const uniqueRuleIds = [...new Set(ruleIds)];
33
- log.info(() => ({
34
- msg: "Endpoint found rules",
35
- data: {
36
- totalFoundCount: ruleIds.length,
37
- uniqueFoundCount: uniqueRuleIds.length,
38
- searchFilters: args,
39
- foundIds: uniqueRuleIds
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
- const apiRoute = require("@prosopo/api-route");
4
- const zod = require("zod");
5
- const missingIdsResponse = zod.z.object({
6
- ids: zod.z.string().array()
7
- });
8
- class GetMissingIdsEndpoint {
9
- constructor(accessRulesStorage, logger) {
10
- this.accessRulesStorage = accessRulesStorage;
11
- this.logger = logger;
12
- }
13
- getRequestArgsSchema() {
14
- return zod.z.string().array();
15
- }
16
- async processRequest(args, logger) {
17
- const log = logger ?? this.logger;
18
- const missingIds = await this.accessRulesStorage.getMissingRuleIds(args);
19
- log.info(() => ({
20
- msg: "Endpoint checked missing ids",
21
- data: {
22
- idsToCheck: args.length,
23
- missingIds: missingIds.length
24
- }
25
- }));
26
- log.debug(() => ({
27
- msg: "Missing id details",
28
- data: {
29
- idsToCheck: args,
30
- missingIds
31
- }
32
- }));
33
- return {
34
- status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
35
- data: {
36
- ids: missingIds
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 fetchRules = require("./read/fetchRules.cjs");
4
- const findRuleIds = require("./read/findRuleIds.cjs");
5
- const getMissingIds = require("./read/getMissingIds.cjs");
6
- const rehashRules = require("./write/rehashRules.cjs");
7
- const deleteAllRules = require("./delete/deleteAllRules.cjs");
8
- const deleteRuleGroups = require("./delete/deleteRuleGroups.cjs");
9
- const deleteRules = require("./delete/deleteRules.cjs");
10
- const insertRules = require("./write/insertRules.cjs");
11
- var accessRuleApiPaths = /* @__PURE__ */ ((accessRuleApiPaths2) => {
12
- accessRuleApiPaths2["DELETE_ALL"] = "/v1/prosopo/user-access-policy/rules/delete-all";
13
- accessRuleApiPaths2["DELETE_GROUPS"] = "/v1/prosopo/user-access-policy/rules/delete-groups";
14
- accessRuleApiPaths2["DELETE_MANY"] = "/v1/prosopo/user-access-policy/rules/delete-many";
15
- accessRuleApiPaths2["FETCH_MANY"] = "/v1/prosopo/user-access-policy/rules/fetch-many";
16
- accessRuleApiPaths2["FIND_IDS"] = "/v1/prosopo/user-access-policy/rules/find-ids";
17
- accessRuleApiPaths2["GET_MISSING_IDS"] = "/v1/prosopo/user-access-policy/rules/get-missing-ids";
18
- accessRuleApiPaths2["INSERT_MANY"] = "/v1/prosopo/user-access-policy/rules/insert-many";
19
- accessRuleApiPaths2["REHASH_ALL"] = "/v1/prosopo/user-access-policy/rules/rehash-all";
20
- return accessRuleApiPaths2;
21
- })(accessRuleApiPaths || {});
22
- class AccessRuleApiRoutes {
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
- [
37
- "/v1/prosopo/user-access-policy/rules/delete-all"
38
- /* DELETE_ALL */
39
- ]: new deleteAllRules.DeleteAllRulesEndpoint(
40
- this.accessRulesStorage,
41
- this.logger
42
- ),
43
- [
44
- "/v1/prosopo/user-access-policy/rules/delete-groups"
45
- /* DELETE_GROUPS */
46
- ]: new deleteRuleGroups.DeleteRuleGroupsEndpoint(
47
- this.accessRulesStorage,
48
- this.logger
49
- ),
50
- [
51
- "/v1/prosopo/user-access-policy/rules/delete-many"
52
- /* DELETE_MANY */
53
- ]: new deleteRules.DeleteRulesEndpoint(
54
- this.accessRulesStorage,
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
- const getIntEnvironmentVariable = (variableName) => {
125
- const variableValue = process.env[variableName];
126
- const numericValue = variableValue ? Number.parseInt(variableValue) : Number.NaN;
127
- return Number.isInteger(numericValue) ? numericValue : void 0;
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 api = require("@prosopo/api");
4
- const fetchRules = require("./read/fetchRules.cjs");
5
- const findRuleIds = require("./read/findRuleIds.cjs");
6
- const getMissingIds = require("./read/getMissingIds.cjs");
7
- const ruleApiRoutes = require("./ruleApiRoutes.cjs");
8
- class AccessRulesApiClient extends api.ApiClient {
9
- //// delete
10
- deleteMany(filters, jwt) {
11
- return this.post(
12
- ruleApiRoutes.accessRuleApiPaths.DELETE_MANY,
13
- filters,
14
- this.getAuthHeaders(jwt)
15
- );
16
- }
17
- deleteGroups(siteGroups, jwt) {
18
- return this.post(
19
- ruleApiRoutes.accessRuleApiPaths.DELETE_GROUPS,
20
- siteGroups,
21
- this.getAuthHeaders(jwt)
22
- );
23
- }
24
- deleteAll(jwt) {
25
- return this.post(
26
- ruleApiRoutes.accessRuleApiPaths.DELETE_ALL,
27
- {},
28
- this.getAuthHeaders(jwt)
29
- );
30
- }
31
- //// read
32
- async getMissingIds(idsToCheck, jwt) {
33
- const endpointResponse = await this.post(
34
- ruleApiRoutes.accessRuleApiPaths.GET_MISSING_IDS,
35
- idsToCheck,
36
- this.getAuthHeaders(jwt)
37
- );
38
- const parsedData = getMissingIds.missingIdsResponse.safeParse(endpointResponse.data);
39
- return {
40
- ...endpointResponse,
41
- data: parsedData.success ? parsedData.data : void 0
42
- };
43
- }
44
- async fetchMany(fetchOptions, jwt) {
45
- const endpointResponse = await this.post(
46
- ruleApiRoutes.accessRuleApiPaths.FETCH_MANY,
47
- fetchOptions,
48
- this.getAuthHeaders(jwt)
49
- );
50
- const parsedData = fetchRules.fetchRulesResponse.safeParse(endpointResponse.data);
51
- return {
52
- ...endpointResponse,
53
- data: parsedData.success ? parsedData.data : void 0
54
- };
55
- }
56
- async findIds(filters, jwt) {
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";