@prosopo/provider 4.7.2 → 4.8.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.
Files changed (58) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +13 -13
  2. package/.turbo/turbo-build$colon$tsc.log +24 -24
  3. package/.turbo/turbo-build.log +14 -14
  4. package/CHANGELOG.md +16 -0
  5. package/dist/api/admin/apiDnsEventEndpoint.d.ts +6 -2
  6. package/dist/api/admin/apiDnsEventEndpoint.d.ts.map +1 -1
  7. package/dist/api/admin/apiDnsEventEndpoint.js +19 -17
  8. package/dist/api/admin/apiDnsEventEndpoint.js.map +1 -1
  9. package/dist/api/blacklistRequestInspector.d.ts +4 -3
  10. package/dist/api/blacklistRequestInspector.d.ts.map +1 -1
  11. package/dist/api/blacklistRequestInspector.js +85 -39
  12. package/dist/api/blacklistRequestInspector.js.map +1 -1
  13. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
  14. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +3 -1
  15. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
  16. package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -1
  17. package/dist/api/captcha/getImageCaptchaChallenge.js +3 -1
  18. package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -1
  19. package/dist/api/captcha/getPoWCaptchaChallenge.d.ts.map +1 -1
  20. package/dist/api/captcha/getPoWCaptchaChallenge.js +3 -1
  21. package/dist/api/captcha/getPoWCaptchaChallenge.js.map +1 -1
  22. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
  23. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +3 -1
  24. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
  25. package/dist/cjs/api/admin/apiDnsEventEndpoint.cjs +19 -17
  26. package/dist/cjs/api/blacklistRequestInspector.cjs +83 -37
  27. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +3 -1
  28. package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +3 -1
  29. package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +3 -1
  30. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +3 -1
  31. package/dist/cjs/index.cjs +1 -0
  32. package/dist/cjs/tasks/captchaManager.cjs +3 -2
  33. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +2 -1
  34. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +2 -1
  35. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +2 -1
  36. package/dist/index.js +2 -1
  37. package/dist/tasks/captchaManager.d.ts +1 -1
  38. package/dist/tasks/captchaManager.d.ts.map +1 -1
  39. package/dist/tasks/captchaManager.js +3 -2
  40. package/dist/tasks/captchaManager.js.map +1 -1
  41. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
  42. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +2 -1
  43. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
  44. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
  45. package/dist/tasks/powCaptcha/powTasks.js +2 -1
  46. package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
  47. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
  48. package/dist/tasks/puzzleCaptcha/puzzleTasks.js +2 -1
  49. package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
  50. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +10 -94
  51. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +1 -1
  52. package/dist/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.d.ts +2 -0
  53. package/dist/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.d.ts.map +1 -0
  54. package/dist/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.js +150 -0
  55. package/dist/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.js.map +1 -0
  56. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js +132 -1
  57. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js.map +1 -1
  58. package/package.json +7 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiDnsEventEndpoint.unit.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,150 @@
1
+ import { ApiEndpointResponseStatus } from "@prosopo/api-route";
2
+ import { beforeEach, describe, expect, it, vi } from "vitest";
3
+ import { ApiDnsEventEndpoint, dnsEventToFields, } from "../../../../api/admin/apiDnsEventEndpoint.js";
4
+ describe("dnsEventToFields", () => {
5
+ it("extracts resolverIp from a dns-kind event", () => {
6
+ const event = {
7
+ kind: "dns",
8
+ ts: "2026-06-08T15:00:00Z",
9
+ src_ip: "1.2.3.4",
10
+ jti: "session-1",
11
+ };
12
+ expect(dnsEventToFields(event)).toEqual({ resolverIp: "1.2.3.4" });
13
+ });
14
+ it("extracts peerIp + pathValid from an http-kind event", () => {
15
+ const event = {
16
+ kind: "http",
17
+ ts: "2026-06-08T15:00:00Z",
18
+ src_ip: "5.6.7.8",
19
+ jti: "session-1",
20
+ path_valid: true,
21
+ };
22
+ expect(dnsEventToFields(event)).toEqual({
23
+ peerIp: "5.6.7.8",
24
+ pathValid: true,
25
+ });
26
+ });
27
+ it("omits pathValid when not present on the event", () => {
28
+ const event = {
29
+ kind: "http",
30
+ ts: "2026-06-08T15:00:00Z",
31
+ src_ip: "5.6.7.8",
32
+ jti: "session-1",
33
+ };
34
+ expect(dnsEventToFields(event)).toEqual({ peerIp: "5.6.7.8" });
35
+ });
36
+ });
37
+ describe("ApiDnsEventEndpoint", () => {
38
+ let mergeSessionDnsEvent;
39
+ let endpoint;
40
+ let mockLogger;
41
+ beforeEach(() => {
42
+ vi.clearAllMocks();
43
+ mergeSessionDnsEvent = vi.fn().mockResolvedValue(true);
44
+ mockLogger = { info: vi.fn(), warn: vi.fn() };
45
+ endpoint = new ApiDnsEventEndpoint({
46
+ mergeSessionDnsEvent,
47
+ });
48
+ });
49
+ it("skips events with no jti", async () => {
50
+ const event = {
51
+ kind: "dns",
52
+ ts: "2026-06-08T15:00:00Z",
53
+ src_ip: "1.2.3.4",
54
+ };
55
+ const result = await endpoint.processRequest({ events: [event] }, mockLogger);
56
+ expect(result.status).toBe(ApiEndpointResponseStatus.SUCCESS);
57
+ expect(result.data).toEqual({ stored: 0, errors: 0 });
58
+ expect(mergeSessionDnsEvent).not.toHaveBeenCalled();
59
+ });
60
+ it("calls mergeSessionDnsEvent with dotted resolverIp for a dns event", async () => {
61
+ const event = {
62
+ kind: "dns",
63
+ ts: "2026-06-08T15:00:00Z",
64
+ src_ip: "1.2.3.4",
65
+ jti: "session-A",
66
+ };
67
+ await endpoint.processRequest({ events: [event] }, mockLogger);
68
+ expect(mergeSessionDnsEvent).toHaveBeenCalledTimes(1);
69
+ expect(mergeSessionDnsEvent).toHaveBeenCalledWith("session-A", { resolverIp: "1.2.3.4" }, expect.any(Date));
70
+ });
71
+ it("calls mergeSessionDnsEvent with peerIp + pathValid for an http event", async () => {
72
+ const event = {
73
+ kind: "http",
74
+ ts: "2026-06-08T15:00:00Z",
75
+ src_ip: "5.6.7.8",
76
+ jti: "session-B",
77
+ path_valid: false,
78
+ };
79
+ await endpoint.processRequest({ events: [event] }, mockLogger);
80
+ expect(mergeSessionDnsEvent).toHaveBeenCalledWith("session-B", { peerIp: "5.6.7.8", pathValid: false }, expect.any(Date));
81
+ });
82
+ it("merges both legs onto the same session via two atomic calls", async () => {
83
+ const dns = {
84
+ kind: "dns",
85
+ ts: "2026-06-08T15:00:00Z",
86
+ src_ip: "1.2.3.4",
87
+ jti: "session-X",
88
+ };
89
+ const http = {
90
+ kind: "http",
91
+ ts: "2026-06-08T15:00:00.500Z",
92
+ src_ip: "5.6.7.8",
93
+ jti: "session-X",
94
+ path_valid: true,
95
+ };
96
+ await endpoint.processRequest({ events: [dns, http] }, mockLogger);
97
+ expect(mergeSessionDnsEvent).toHaveBeenCalledTimes(2);
98
+ expect(mergeSessionDnsEvent).toHaveBeenNthCalledWith(1, "session-X", { resolverIp: "1.2.3.4" }, expect.any(Date));
99
+ expect(mergeSessionDnsEvent).toHaveBeenNthCalledWith(2, "session-X", { peerIp: "5.6.7.8", pathValid: true }, expect.any(Date));
100
+ });
101
+ it("counts stored only when the session matched", async () => {
102
+ mergeSessionDnsEvent
103
+ .mockResolvedValueOnce(true)
104
+ .mockResolvedValueOnce(false);
105
+ const events = [
106
+ {
107
+ kind: "dns",
108
+ ts: "2026-06-08T15:00:00Z",
109
+ src_ip: "1.2.3.4",
110
+ jti: "session-found",
111
+ },
112
+ {
113
+ kind: "dns",
114
+ ts: "2026-06-08T15:00:00Z",
115
+ src_ip: "9.9.9.9",
116
+ jti: "session-missing",
117
+ },
118
+ ];
119
+ const result = await endpoint.processRequest({ events }, mockLogger);
120
+ expect(result.data).toEqual({ stored: 1, errors: 0 });
121
+ });
122
+ it("isolates per-event failures", async () => {
123
+ mergeSessionDnsEvent
124
+ .mockRejectedValueOnce(new Error("boom"))
125
+ .mockResolvedValueOnce(true);
126
+ const events = [
127
+ {
128
+ kind: "dns",
129
+ ts: "2026-06-08T15:00:00Z",
130
+ src_ip: "1.2.3.4",
131
+ jti: "session-fail",
132
+ },
133
+ {
134
+ kind: "dns",
135
+ ts: "2026-06-08T15:00:00Z",
136
+ src_ip: "5.6.7.8",
137
+ jti: "session-ok",
138
+ },
139
+ ];
140
+ const result = await endpoint.processRequest({ events }, mockLogger);
141
+ expect(result.status).toBe(ApiEndpointResponseStatus.SUCCESS);
142
+ expect(result.data).toEqual({ stored: 1, errors: 1 });
143
+ expect(mockLogger.warn).toHaveBeenCalledTimes(1);
144
+ });
145
+ it("returns the registered schema", () => {
146
+ const schema = endpoint.getRequestArgsSchema();
147
+ expect(schema).toBeDefined();
148
+ });
149
+ });
150
+ //# sourceMappingURL=apiDnsEventEndpoint.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiDnsEventEndpoint.unit.test.js","sourceRoot":"","sources":["../../../../../src/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { AccessPolicyType, } from "@prosopo/user-access-policy";
2
2
  import { describe, expect, it, vi } from "vitest";
3
- import { BlacklistRequestInspector, getRequestUserScope, } from "../../../api/blacklistRequestInspector.js";
3
+ import { BlacklistRequestInspector, getRequestUserScope, rankCandidateRules, } from "../../../api/blacklistRequestInspector.js";
4
4
  describe("getRequestUserScope", () => {
5
5
  it("should return a user scope with ja4Hash and userAgent and ip and userId", () => {
6
6
  const ja4 = "t13d1516h2_8daaf6152771_8eba31f8906f";
@@ -134,4 +134,135 @@ describe("BlacklistRequestInspector.shouldAbortRequest", () => {
134
134
  expect(shouldAbort).toBe(true);
135
135
  });
136
136
  });
137
+ describe("rankCandidateRules", () => {
138
+ const request = {
139
+ ja4Hash: "ja4-A",
140
+ userAgentHash: "ua-X",
141
+ numericIp: 16909060n,
142
+ asn: 205016,
143
+ };
144
+ it("rejects a rule whose IP doesn't match the request, even if ja4 does", () => {
145
+ const ruleA = {
146
+ type: AccessPolicyType.Block,
147
+ ja4Hash: "ja4-A",
148
+ numericIp: 99999n,
149
+ };
150
+ const ranked = rankCandidateRules([ruleA], request, undefined);
151
+ expect(ranked).toEqual([]);
152
+ });
153
+ it("accepts a rule whose populated fields all match", () => {
154
+ const rule = {
155
+ type: AccessPolicyType.Block,
156
+ ja4Hash: "ja4-A",
157
+ numericIp: 16909060n,
158
+ };
159
+ const ranked = rankCandidateRules([rule], request, undefined);
160
+ expect(ranked).toEqual([rule]);
161
+ });
162
+ it("accepts a CIDR rule when request IP is in range", () => {
163
+ const rule = {
164
+ type: AccessPolicyType.Block,
165
+ ja4Hash: "ja4-A",
166
+ numericIpMaskMin: 16909000n,
167
+ numericIpMaskMax: 16910000n,
168
+ };
169
+ const ranked = rankCandidateRules([rule], request, undefined);
170
+ expect(ranked).toEqual([rule]);
171
+ });
172
+ it("rejects a CIDR rule when request IP is outside range", () => {
173
+ const rule = {
174
+ type: AccessPolicyType.Block,
175
+ numericIpMaskMin: 99000n,
176
+ numericIpMaskMax: 99999n,
177
+ };
178
+ const ranked = rankCandidateRules([rule], request, undefined);
179
+ expect(ranked).toEqual([]);
180
+ });
181
+ it("ranks more-specific rules first (more populated fields wins)", () => {
182
+ const broad = {
183
+ type: AccessPolicyType.Block,
184
+ ja4Hash: "ja4-A",
185
+ };
186
+ const specific = {
187
+ type: AccessPolicyType.Block,
188
+ ja4Hash: "ja4-A",
189
+ asn: 205016,
190
+ };
191
+ const ranked = rankCandidateRules([broad, specific], request, undefined);
192
+ expect(ranked).toEqual([specific, broad]);
193
+ });
194
+ it("ranks a client-scoped rule above a global rule of equal user-scope specificity", () => {
195
+ const global = {
196
+ type: AccessPolicyType.Block,
197
+ ja4Hash: "ja4-A",
198
+ };
199
+ const clientScoped = {
200
+ type: AccessPolicyType.Block,
201
+ clientId: "site-1",
202
+ ja4Hash: "ja4-A",
203
+ };
204
+ const ranked = rankCandidateRules([global, clientScoped], request, "site-1");
205
+ expect(ranked[0]).toEqual(clientScoped);
206
+ expect(ranked[1]).toEqual(global);
207
+ });
208
+ it("rejects a client-scoped rule whose clientId doesn't match the request", () => {
209
+ const rule = {
210
+ type: AccessPolicyType.Block,
211
+ clientId: "site-2",
212
+ ja4Hash: "ja4-A",
213
+ };
214
+ const ranked = rankCandidateRules([rule], request, "site-1");
215
+ expect(ranked).toEqual([]);
216
+ });
217
+ it("accepts a global rule (no clientId) when no request clientId is passed", () => {
218
+ const rule = {
219
+ type: AccessPolicyType.Block,
220
+ ja4Hash: "ja4-A",
221
+ };
222
+ const ranked = rankCandidateRules([rule], request, undefined);
223
+ expect(ranked).toEqual([rule]);
224
+ });
225
+ it("accepts a rule with no user-scope fields (matches every request)", () => {
226
+ const rule = {
227
+ type: AccessPolicyType.Block,
228
+ };
229
+ const ranked = rankCandidateRules([rule], request, undefined);
230
+ expect(ranked).toEqual([rule]);
231
+ });
232
+ it("rejects a rule that requires a field the request doesn't have", () => {
233
+ const rule = {
234
+ type: AccessPolicyType.Block,
235
+ ja4Hash: "ja4-A",
236
+ headHash: "hash-X",
237
+ };
238
+ const ranked = rankCandidateRules([rule], request, undefined);
239
+ expect(ranked).toEqual([]);
240
+ });
241
+ it("on equal specificity, Block wins over Restrict (safety tiebreaker)", () => {
242
+ const restrict = {
243
+ type: AccessPolicyType.Restrict,
244
+ ja4Hash: "ja4-A",
245
+ };
246
+ const block = {
247
+ type: AccessPolicyType.Block,
248
+ ja4Hash: "ja4-A",
249
+ };
250
+ const ranked = rankCandidateRules([restrict, block], request, undefined);
251
+ expect(ranked[0]).toEqual(block);
252
+ expect(ranked[1]).toEqual(restrict);
253
+ });
254
+ it("specificity still beats severity (a more-specific Restrict beats a less-specific Block)", () => {
255
+ const broadBlock = {
256
+ type: AccessPolicyType.Block,
257
+ ja4Hash: "ja4-A",
258
+ };
259
+ const specificRestrict = {
260
+ type: AccessPolicyType.Restrict,
261
+ ja4Hash: "ja4-A",
262
+ asn: 205016,
263
+ };
264
+ const ranked = rankCandidateRules([broadBlock, specificRestrict], request, undefined);
265
+ expect(ranked[0]).toEqual(specificRestrict);
266
+ });
267
+ });
137
268
  //# sourceMappingURL=blacklistRequestInspector.unit.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blacklistRequestInspector.unit.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/api/blacklistRequestInspector.unit.test.ts"],"names":[],"mappings":"AAgBA,OAAO,EACN,gBAAgB,GAEhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EACN,yBAAyB,EACzB,mBAAmB,GACnB,MAAM,2CAA2C,CAAC;AAEnD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QAClF,MAAM,GAAG,GAAG,sCAAsC,CAAC;QACnD,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC;QACxB,MAAM,IAAI,GAAG,UAAU,CAAC;QACxB,MAAM,cAAc,GAAG;YACtB,YAAY,EAAE,SAAS;YACvB,iBAAiB,EAAE,KAAK;SACxB,CAAC;QACF,MAAM,SAAS,GAAG,mBAAmB,CAAC,cAAc,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACxE,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACzB,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,SAAS;YACpB,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,UAAU;SAClB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACvE,MAAM,GAAG,GAAG,sCAAsC,CAAC;QACnD,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC;QACxB,MAAM,cAAc,GAAG;YACtB,YAAY,EAAE,SAAS;YACvB,iBAAiB,EAAE,KAAK;SACxB,CAAC;QACF,MAAM,SAAS,GAAG,mBAAmB,CAAC,cAAc,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACzB,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,SAAS;YACpB,EAAE,EAAE,KAAK;SACT,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC3D,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC;QACxB,MAAM,cAAc,GAAG;YACtB,YAAY,EAAE,SAAS;YACvB,iBAAiB,EAAE,KAAK;SACxB,CAAC;QACF,MAAM,SAAS,GAAG,mBAAmB,CAAC,cAAc,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACzB,SAAS,EAAE,SAAS;YACpB,EAAE,EAAE,KAAK;SACT,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACpD,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACnC,MAAM,cAAc,GAAG;YACtB,YAAY,EAAE,SAAS;SACvB,CAAC;QACF,MAAM,SAAS,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACtD,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACzB,SAAS,EAAE,SAAS;SACpB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAChE,MAAM,SAAS,GAAG,mBAAmB,CACpC,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EACL,SAAS,EACT,OAAO,EACP,SAAS,EACT,SAAS,EACT,IAAI,CACJ,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;IAC7D,MAAM,UAAU,GAAG;QAClB,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;QACb,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;KACQ,CAAC;IAEvB,MAAM,YAAY,GAAG,CACpB,SAAkD,EAC7B,EAAE,CACvB,CAAC;QACA,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC;KAChD,CAAkC,CAAC;IAErC,MAAM,WAAW,GAAG,CAAC,WAAmB,EAAkB,EAAE,CAAC,CAAC;QAC7D,EAAE,EAAE,SAAS;QACb,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,KAAK;QAChB,WAAW;KACX,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,UAAU,GAAmC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,CAAC,GAAG,MAAgD,CAAC;YAC3D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC7B,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAC9C,OAAO,EACP,KAAK,IAAI,EAAE,CAAC,SAAS,CACrB,CAAC;QAEF,MAAM,SAAS,CAAC,kBAAkB,CACjC,kDAAkD,EAClD,SAAS,EACT,SAAS,EACT,EAAE,EACF,EAAE,EACF,UAAU,EACV,WAAW,CAAC,IAAI,CAAC,CACjB,CAAC;QAKF,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;QAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,UAAU,GAAmC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,CAAC,GAAG,MAAgD,CAAC;YAC3D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC7B,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAC9C,OAAO,EACP,KAAK,IAAI,EAAE,CAAC,SAAS,CACrB,CAAC;QAEF,MAAM,SAAS,CAAC,kBAAkB,CACjC,kDAAkD,EAClD,SAAS,EACT,SAAS,EACT,EAAE,EACF,EAAE,EACF,UAAU,EACV,SAAS,CACT,CAAC;QAEF,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC;QACtE,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,UAAU,GAAmC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,CAAC,GAAG,MAAgD,CAAC;YAC3D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC7B,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAC9C,OAAO,EACP,KAAK,IAAI,EAAE,CAAC,SAAS,CACrB,CAAC;QAEF,MAAM,SAAS,CAAC,kBAAkB,CACjC,kDAAkD,EAClD,SAAS,EACT,SAAS,EACT,EAAE,EACF,EAAE,EACF,UAAU,EACV,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,SAAS,EAAE,CACzD,CAAC;QAEF,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC;QACtE,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAE7C,MAAM,CAAC,GAAG,MAAiD,CAAC;YAC5D,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gBACtC,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAC9C,OAAO,EACP,KAAK,IAAI,EAAE,CAAC,SAAS,CACrB,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,kBAAkB,CACrD,kDAAkD,EAClD,SAAS,EACT,SAAS,EACT,EAAE,EACF,EAAE,EACF,UAAU,EACV,WAAW,CAAC,IAAI,CAAC,CACjB,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"blacklistRequestInspector.unit.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/api/blacklistRequestInspector.unit.test.ts"],"names":[],"mappings":"AAgBA,OAAO,EACN,gBAAgB,GAIhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EACN,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,GAClB,MAAM,2CAA2C,CAAC;AAEnD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QAClF,MAAM,GAAG,GAAG,sCAAsC,CAAC;QACnD,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC;QACxB,MAAM,IAAI,GAAG,UAAU,CAAC;QACxB,MAAM,cAAc,GAAG;YACtB,YAAY,EAAE,SAAS;YACvB,iBAAiB,EAAE,KAAK;SACxB,CAAC;QACF,MAAM,SAAS,GAAG,mBAAmB,CAAC,cAAc,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACxE,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACzB,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,SAAS;YACpB,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,UAAU;SAClB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACvE,MAAM,GAAG,GAAG,sCAAsC,CAAC;QACnD,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC;QACxB,MAAM,cAAc,GAAG;YACtB,YAAY,EAAE,SAAS;YACvB,iBAAiB,EAAE,KAAK;SACxB,CAAC;QACF,MAAM,SAAS,GAAG,mBAAmB,CAAC,cAAc,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACzB,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,SAAS;YACpB,EAAE,EAAE,KAAK;SACT,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC3D,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC;QACxB,MAAM,cAAc,GAAG;YACtB,YAAY,EAAE,SAAS;YACvB,iBAAiB,EAAE,KAAK;SACxB,CAAC;QACF,MAAM,SAAS,GAAG,mBAAmB,CAAC,cAAc,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACzB,SAAS,EAAE,SAAS;YACpB,EAAE,EAAE,KAAK;SACT,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACpD,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACnC,MAAM,cAAc,GAAG;YACtB,YAAY,EAAE,SAAS;SACvB,CAAC;QACF,MAAM,SAAS,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACtD,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACzB,SAAS,EAAE,SAAS;SACpB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAChE,MAAM,SAAS,GAAG,mBAAmB,CACpC,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,EACL,SAAS,EACT,OAAO,EACP,SAAS,EACT,SAAS,EACT,IAAI,CACJ,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;IAC7D,MAAM,UAAU,GAAG;QAClB,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;QACb,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;KACQ,CAAC;IAEvB,MAAM,YAAY,GAAG,CACpB,SAAkD,EAC7B,EAAE,CACvB,CAAC;QACA,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC;KAChD,CAAkC,CAAC;IAErC,MAAM,WAAW,GAAG,CAAC,WAAmB,EAAkB,EAAE,CAAC,CAAC;QAC7D,EAAE,EAAE,SAAS;QACb,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,KAAK;QAChB,WAAW;KACX,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,UAAU,GAAmC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,CAAC,GAAG,MAAgD,CAAC;YAC3D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC7B,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAC9C,OAAO,EACP,KAAK,IAAI,EAAE,CAAC,SAAS,CACrB,CAAC;QAEF,MAAM,SAAS,CAAC,kBAAkB,CACjC,kDAAkD,EAClD,SAAS,EACT,SAAS,EACT,EAAE,EACF,EAAE,EACF,UAAU,EACV,WAAW,CAAC,IAAI,CAAC,CACjB,CAAC;QAKF,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;QAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,UAAU,GAAmC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,CAAC,GAAG,MAAgD,CAAC;YAC3D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC7B,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAC9C,OAAO,EACP,KAAK,IAAI,EAAE,CAAC,SAAS,CACrB,CAAC;QAEF,MAAM,SAAS,CAAC,kBAAkB,CACjC,kDAAkD,EAClD,SAAS,EACT,SAAS,EACT,EAAE,EACF,EAAE,EACF,UAAU,EACV,SAAS,CACT,CAAC;QAEF,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC;QACtE,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,UAAU,GAAmC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,CAAC,GAAG,MAAgD,CAAC;YAC3D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC7B,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAC9C,OAAO,EACP,KAAK,IAAI,EAAE,CAAC,SAAS,CACrB,CAAC;QAEF,MAAM,SAAS,CAAC,kBAAkB,CACjC,kDAAkD,EAClD,SAAS,EACT,SAAS,EACT,EAAE,EACF,EAAE,EACF,UAAU,EACV,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,SAAS,EAAE,CACzD,CAAC;QAEF,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC;QACtE,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAE7C,MAAM,CAAC,GAAG,MAAiD,CAAC;YAC5D,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gBACtC,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAC9C,OAAO,EACP,KAAK,IAAI,EAAE,CAAC,SAAS,CACrB,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,kBAAkB,CACrD,kDAAkD,EAClD,SAAS,EACT,SAAS,EACT,EAAE,EACF,EAAE,EACF,UAAU,EACV,WAAW,CAAC,IAAI,CAAC,CACjB,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACnC,MAAM,OAAO,GAAc;QAC1B,OAAO,EAAE,OAAO;QAChB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,SAAS;QACpB,GAAG,EAAE,MAAM;KACX,CAAC;IAEF,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAG9E,MAAM,KAAK,GAAe;YACzB,IAAI,EAAE,gBAAgB,CAAC,KAAK;YAC5B,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,MAAM;SACjB,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAe;YACxB,IAAI,EAAE,gBAAgB,CAAC,KAAK;YAC5B,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,SAAS;SACpB,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAe;YACxB,IAAI,EAAE,gBAAgB,CAAC,KAAK;YAC5B,OAAO,EAAE,OAAO;YAChB,gBAAgB,EAAE,SAAS;YAC3B,gBAAgB,EAAE,SAAS;SAC3B,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAe;YACxB,IAAI,EAAE,gBAAgB,CAAC,KAAK;YAC5B,gBAAgB,EAAE,MAAM;YACxB,gBAAgB,EAAE,MAAM;SACxB,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACvE,MAAM,KAAK,GAAe;YACzB,IAAI,EAAE,gBAAgB,CAAC,KAAK;YAC5B,OAAO,EAAE,OAAO;SAChB,CAAC;QACF,MAAM,QAAQ,GAAe;YAC5B,IAAI,EAAE,gBAAgB,CAAC,KAAK;YAC5B,OAAO,EAAE,OAAO;YAChB,GAAG,EAAE,MAAM;SACX,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACzF,MAAM,MAAM,GAAe;YAC1B,IAAI,EAAE,gBAAgB,CAAC,KAAK;YAC5B,OAAO,EAAE,OAAO;SAChB,CAAC;QACF,MAAM,YAAY,GAAe;YAChC,IAAI,EAAE,gBAAgB,CAAC,KAAK;YAC5B,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,OAAO;SAChB,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAChC,CAAC,MAAM,EAAE,YAAY,CAAC,EACtB,OAAO,EACP,QAAQ,CACR,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAChF,MAAM,IAAI,GAAe;YACxB,IAAI,EAAE,gBAAgB,CAAC,KAAK;YAC5B,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,OAAO;SAChB,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QACjF,MAAM,IAAI,GAAe;YACxB,IAAI,EAAE,gBAAgB,CAAC,KAAK;YAC5B,OAAO,EAAE,OAAO;SAChB,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC3E,MAAM,IAAI,GAAe;YACxB,IAAI,EAAE,gBAAgB,CAAC,KAAK;SAC5B,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QAExE,MAAM,IAAI,GAAe;YACxB,IAAI,EAAE,gBAAgB,CAAC,KAAK;YAC5B,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,QAAQ;SAClB,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC7E,MAAM,QAAQ,GAAe;YAC5B,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,OAAO,EAAE,OAAO;SAChB,CAAC;QACF,MAAM,KAAK,GAAe;YACzB,IAAI,EAAE,gBAAgB,CAAC,KAAK;YAC5B,OAAO,EAAE,OAAO;SAChB,CAAC;QAEF,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yFAAyF,EAAE,GAAG,EAAE;QAIlG,MAAM,UAAU,GAAe;YAC9B,IAAI,EAAE,gBAAgB,CAAC,KAAK;YAC5B,OAAO,EAAE,OAAO;SAChB,CAAC;QACF,MAAM,gBAAgB,GAAe;YACpC,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,OAAO,EAAE,OAAO;YAChB,GAAG,EAAE,MAAM;SACX,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAChC,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAC9B,OAAO,EACP,SAAS,CACT,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/provider",
3
- "version": "4.7.2",
3
+ "version": "4.8.0",
4
4
  "author": "PROSOPO LIMITED <info@prosopo.io>",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -24,21 +24,21 @@
24
24
  "@noble/hashes": "1.8.0",
25
25
  "@polkadot/util": "13.5.7",
26
26
  "@prosopo/api": "3.4.9",
27
- "@prosopo/api-express-router": "3.1.18",
27
+ "@prosopo/api-express-router": "3.1.19",
28
28
  "@prosopo/api-route": "2.6.46",
29
29
  "@prosopo/common": "3.1.38",
30
30
  "@prosopo/logger": "1.0.2",
31
- "@prosopo/database": "3.13.8",
31
+ "@prosopo/database": "3.13.9",
32
32
  "@prosopo/datasets": "3.1.29",
33
- "@prosopo/env": "3.5.8",
33
+ "@prosopo/env": "3.5.9",
34
34
  "@prosopo/keyring": "2.9.35",
35
35
  "@prosopo/load-balancer": "2.9.11",
36
36
  "@prosopo/redis-client": "1.0.23",
37
37
  "@prosopo/locale": "3.2.4",
38
38
  "@prosopo/types": "4.3.1",
39
- "@prosopo/types-database": "4.8.1",
40
- "@prosopo/types-env": "2.9.17",
41
- "@prosopo/user-access-policy": "3.7.12",
39
+ "@prosopo/types-database": "4.8.2",
40
+ "@prosopo/types-env": "2.9.18",
41
+ "@prosopo/user-access-policy": "3.8.0",
42
42
  "@prosopo/util": "3.2.15",
43
43
  "@prosopo/util-crypto": "13.5.29",
44
44
  "cron": "3.1.7",