@prosopo/provider 4.14.3 → 4.14.4
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 +3 -3
- package/.turbo/turbo-build$colon$tsc.log +24 -24
- package/.turbo/turbo-build.log +4 -4
- package/CHANGELOG.md +21 -0
- package/dist/api/startProviderApi.d.ts.map +1 -1
- package/dist/api/startProviderApi.js +17 -1
- package/dist/api/startProviderApi.js.map +1 -1
- package/dist/cjs/api/startProviderApi.cjs +17 -1
- package/package.json +13 -13
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/provider@4.14.
|
|
2
|
+
> @prosopo/provider@4.14.4 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -138,7 +138,7 @@ rendering chunks...
|
|
|
138
138
|
[2mdist/cjs/[22m[36mapi/captcha/submitPoWCaptchaSolution.cjs [39m[1m[2m 6.76 kB[22m[1m[22m
|
|
139
139
|
[2mdist/cjs/[22m[36mapi/ja4.cjs [39m[1m[2m 7.14 kB[22m[1m[22m
|
|
140
140
|
[2mdist/cjs/[22m[36mapi/metrics.cjs [39m[1m[2m 7.94 kB[22m[1m[22m
|
|
141
|
-
[2mdist/cjs/[22m[36mapi/startProviderApi.cjs [39m[1m[2m 8.
|
|
141
|
+
[2mdist/cjs/[22m[36mapi/startProviderApi.cjs [39m[1m[2m 8.62 kB[22m[1m[22m
|
|
142
142
|
[2mdist/cjs/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs [39m[1m[2m10.21 kB[22m[1m[22m
|
|
143
143
|
[2mdist/cjs/[22m[36mtasks/decisionMachine/decisionMachineRunner.cjs [39m[1m[2m10.59 kB[22m[1m[22m
|
|
144
144
|
[2mdist/cjs/[22m[36mapi/blacklistRequestInspector.cjs [39m[1m[2m11.68 kB[22m[1m[22m
|
|
@@ -154,7 +154,7 @@ rendering chunks...
|
|
|
154
154
|
[2mdist/cjs/[22m[36mtasks/powCaptcha/powTasks.cjs [39m[1m[2m24.67 kB[22m[1m[22m
|
|
155
155
|
[2mdist/cjs/[22m[36mtasks/imgCaptcha/imgCaptchaTasks.cjs [39m[1m[2m28.81 kB[22m[1m[22m
|
|
156
156
|
[2mdist/cjs/[22m[36mtasks/detection/decodePayload.cjs [39m[1m[2m29.94 kB[22m[1m[22m
|
|
157
|
-
[32m✓ built in
|
|
157
|
+
[32m✓ built in 792ms[39m
|
|
158
158
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeBehavior.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodeBehavior.js
|
|
159
159
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodePayload.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodePayload.js
|
|
160
160
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeSimd.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodeSimd.js
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/provider@4.14.
|
|
2
|
+
> @prosopo/provider@4.14.4 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
12:39:11 PM - Projects in this build:
|
|
6
6
|
* ../../dev/config/tsconfig.json
|
|
7
7
|
* ../util/tsconfig.json
|
|
8
8
|
* ../logger/tsconfig.json
|
|
@@ -25,47 +25,47 @@
|
|
|
25
25
|
* ../load-balancer/tsconfig.json
|
|
26
26
|
* tsconfig.json
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
12:39:11 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
12:39:11 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
12:39:11 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
12:39:11 PM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/apiRoutes.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
12:39:11 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
12:39:11 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
12:39:11 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/provider/api.ts' is older than output '../types/tsconfig.tsbuildinfo'
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
12:39:11 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/index.ts' is older than output '../common/tsconfig.tsbuildinfo'
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
12:39:12 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/IpInfoService.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
12:39:12 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
12:39:12 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
12:39:12 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/transformRule.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
12:39:12 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/types/bannedDomain.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
12:39:12 PM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/unit/redisCacheEscalation.unit.test.ts' is older than output '../database/tsconfig.tsbuildinfo'
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
12:39:12 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/index.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
12:39:12 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/env.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
12:39:12 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/env.ts' is older than output '../env/tsconfig.tsbuildinfo'
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
12:39:12 PM - Project '../api-express-router/tsconfig.json' is up to date because newest input '../api-express-router/src/apiExpressRouterFactory.ts' is older than output '../api-express-router/tsconfig.tsbuildinfo'
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
12:39:12 PM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/index.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
12:39:12 PM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/balancer.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
12:39:12 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
12:39:12 PM - Building project '/home/runner/work/captcha/captcha/packages/provider/tsconfig.json'...
|
|
71
71
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/provider@4.14.
|
|
2
|
+
> @prosopo/provider@4.14.4 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/provider@4.14.
|
|
6
|
+
> @prosopo/provider@4.14.4 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -138,8 +138,8 @@ rendering chunks...
|
|
|
138
138
|
[2mdist/[22m[36mapi/captcha/getImageCaptchaChallenge.js [39m[1m[2m 6.35 kB[22m[1m[22m
|
|
139
139
|
[2mdist/[22m[36mapi/captcha/submitPoWCaptchaSolution.js [39m[1m[2m 6.51 kB[22m[1m[22m
|
|
140
140
|
[2mdist/[22m[36mapi/ja4.js [39m[1m[2m 7.01 kB[22m[1m[22m
|
|
141
|
-
[2mdist/[22m[36mapi/startProviderApi.js [39m[1m[2m 7.38 kB[22m[1m[22m
|
|
142
141
|
[2mdist/[22m[36mapi/metrics.js [39m[1m[2m 7.38 kB[22m[1m[22m
|
|
142
|
+
[2mdist/[22m[36mapi/startProviderApi.js [39m[1m[2m 7.89 kB[22m[1m[22m
|
|
143
143
|
[2mdist/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js [39m[1m[2m 9.77 kB[22m[1m[22m
|
|
144
144
|
[2mdist/[22m[36mtasks/decisionMachine/decisionMachineRunner.js [39m[1m[2m10.54 kB[22m[1m[22m
|
|
145
145
|
[2mdist/[22m[36mapi/blacklistRequestInspector.js [39m[1m[2m11.38 kB[22m[1m[22m
|
|
@@ -155,7 +155,7 @@ rendering chunks...
|
|
|
155
155
|
[2mdist/[22m[36mtasks/powCaptcha/powTasks.js [39m[1m[2m24.26 kB[22m[1m[22m
|
|
156
156
|
[2mdist/[22m[36mtasks/imgCaptcha/imgCaptchaTasks.js [39m[1m[2m28.37 kB[22m[1m[22m
|
|
157
157
|
[2mdist/[22m[36mtasks/detection/decodePayload.js [39m[1m[2m29.92 kB[22m[1m[22m
|
|
158
|
-
[32m✓ built in 1.
|
|
158
|
+
[32m✓ built in 1.66s[39m
|
|
159
159
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeBehavior.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodeBehavior.js
|
|
160
160
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodePayload.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodePayload.js
|
|
161
161
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeSimd.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodeSimd.js
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @prosopo/provider
|
|
2
2
|
|
|
3
|
+
## 4.14.4
|
|
4
|
+
### Patch Changes
|
|
5
|
+
|
|
6
|
+
- 6cb3218: feat(provider): relax captcha-flow rate limits 5x and log 429s
|
|
7
|
+
|
|
8
|
+
- Default rate limits for the captcha-flow endpoints (get/submit image, PoW, frictionless and puzzle challenges, plus the verify endpoints) are now 5x more permissive. The previous defaults were rate limiting legitimate widget traffic.
|
|
9
|
+
- The provider now logs a warning whenever a request is rejected with a 429, including the path, IP and site key, so operators can alarm on sustained rate limiting.
|
|
10
|
+
- Updated dependencies [6cb3218]
|
|
11
|
+
- @prosopo/types@4.9.5
|
|
12
|
+
- @prosopo/api@3.5.12
|
|
13
|
+
- @prosopo/api-express-router@3.1.39
|
|
14
|
+
- @prosopo/database@3.15.8
|
|
15
|
+
- @prosopo/datasets@3.1.46
|
|
16
|
+
- @prosopo/env@3.6.8
|
|
17
|
+
- @prosopo/ipinfo@0.2.32
|
|
18
|
+
- @prosopo/keyring@2.9.52
|
|
19
|
+
- @prosopo/load-balancer@2.10.6
|
|
20
|
+
- @prosopo/types-database@4.11.7
|
|
21
|
+
- @prosopo/types-env@2.10.7
|
|
22
|
+
- @prosopo/user-access-policy@3.11.3
|
|
23
|
+
|
|
3
24
|
## 4.14.3
|
|
4
25
|
### Patch Changes
|
|
5
26
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startProviderApi.d.ts","sourceRoot":"","sources":["../../src/api/startProviderApi.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AASvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,EAEN,cAAc,EAEd,MAAM,gBAAgB,CAAC;AAQxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAyBvC,eAAO,MAAM,cAAc,QAAO,OAEjC,CAAC;AAMF,eAAO,MAAM,wCAAwC,QAChD,cAAc,EAKjB,CAAC;AAOH,eAAO,MAAM,cAAc,QAAS,OAAO,KAAG,MAAM,GAAG,SAuBtD,CAAC;AA2BF,wBAAsB,gBAAgB,CACrC,GAAG,EAAE,mBAAmB,EACxB,KAAK,UAAQ,EACb,IAAI,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"startProviderApi.d.ts","sourceRoot":"","sources":["../../src/api/startProviderApi.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AASvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,EAEN,cAAc,EAEd,MAAM,gBAAgB,CAAC;AAQxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAyBvC,eAAO,MAAM,cAAc,QAAO,OAEjC,CAAC;AAMF,eAAO,MAAM,wCAAwC,QAChD,cAAc,EAKjB,CAAC;AAOH,eAAO,MAAM,cAAc,QAAS,OAAO,KAAG,MAAM,GAAG,SAuBtD,CAAC;AA2BF,wBAAsB,gBAAgB,CACrC,GAAG,EAAE,mBAAmB,EACxB,KAAK,UAAQ,EACb,IAAI,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAoOjB"}
|
|
@@ -112,6 +112,17 @@ async function startProviderApi(env, admin = false, port) {
|
|
|
112
112
|
...getExpressApiRuleRateLimits()
|
|
113
113
|
};
|
|
114
114
|
const adminPaths = Object.values(AdminApiPaths);
|
|
115
|
+
const rateLimitHandler = (path2) => (req, res, _next, options) => {
|
|
116
|
+
env.logger.warn(() => ({
|
|
117
|
+
msg: "Rate limit exceeded",
|
|
118
|
+
data: {
|
|
119
|
+
path: path2,
|
|
120
|
+
ip: req.ip,
|
|
121
|
+
siteKey: req.headers["prosopo-site-key"]
|
|
122
|
+
}
|
|
123
|
+
}));
|
|
124
|
+
res.status(options.statusCode).send(options.message);
|
|
125
|
+
};
|
|
115
126
|
for (const [path2, limit] of Object.entries(rateLimits)) {
|
|
116
127
|
const enumPath = path2;
|
|
117
128
|
if (adminPaths.includes(enumPath)) {
|
|
@@ -119,6 +130,7 @@ async function startProviderApi(env, admin = false, port) {
|
|
|
119
130
|
enumPath,
|
|
120
131
|
rateLimit({
|
|
121
132
|
...limit,
|
|
133
|
+
handler: rateLimitHandler(enumPath),
|
|
122
134
|
keyGenerator: (req) => {
|
|
123
135
|
const user = getUserFromJWT(req);
|
|
124
136
|
return user || req.ip || "unknown";
|
|
@@ -130,6 +142,7 @@ async function startProviderApi(env, admin = false, port) {
|
|
|
130
142
|
enumPath,
|
|
131
143
|
rateLimit({
|
|
132
144
|
...limit,
|
|
145
|
+
handler: rateLimitHandler(enumPath),
|
|
133
146
|
keyGenerator: (req) => {
|
|
134
147
|
const siteKey = req.headers["prosopo-site-key"];
|
|
135
148
|
return siteKey || req.ip || "unknown";
|
|
@@ -137,7 +150,10 @@ async function startProviderApi(env, admin = false, port) {
|
|
|
137
150
|
})
|
|
138
151
|
);
|
|
139
152
|
} else {
|
|
140
|
-
apiApp.use(
|
|
153
|
+
apiApp.use(
|
|
154
|
+
enumPath,
|
|
155
|
+
rateLimit({ ...limit, handler: rateLimitHandler(enumPath) })
|
|
156
|
+
);
|
|
141
157
|
}
|
|
142
158
|
}
|
|
143
159
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startProviderApi.js","sourceRoot":"","sources":["../../src/api/startProviderApi.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACN,uBAAuB,EACvB,cAAc,EACd,sCAAsC,EACtC,uBAAuB,GACvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACN,aAAa,EACb,cAAc,GAEd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,mBAAmB,EACnB,2BAA2B,GAC3B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,
|
|
1
|
+
{"version":3,"file":"startProviderApi.js","sourceRoot":"","sources":["../../src/api/startProviderApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -115,6 +115,17 @@ async function startProviderApi(env, admin = false, port) {
|
|
|
115
115
|
...api.getExpressApiRuleRateLimits()
|
|
116
116
|
};
|
|
117
117
|
const adminPaths = Object.values(types.AdminApiPaths);
|
|
118
|
+
const rateLimitHandler = (path2) => (req, res, _next, options) => {
|
|
119
|
+
env.logger.warn(() => ({
|
|
120
|
+
msg: "Rate limit exceeded",
|
|
121
|
+
data: {
|
|
122
|
+
path: path2,
|
|
123
|
+
ip: req.ip,
|
|
124
|
+
siteKey: req.headers["prosopo-site-key"]
|
|
125
|
+
}
|
|
126
|
+
}));
|
|
127
|
+
res.status(options.statusCode).send(options.message);
|
|
128
|
+
};
|
|
118
129
|
for (const [path2, limit] of Object.entries(rateLimits)) {
|
|
119
130
|
const enumPath = path2;
|
|
120
131
|
if (adminPaths.includes(enumPath)) {
|
|
@@ -122,6 +133,7 @@ async function startProviderApi(env, admin = false, port) {
|
|
|
122
133
|
enumPath,
|
|
123
134
|
rateLimit({
|
|
124
135
|
...limit,
|
|
136
|
+
handler: rateLimitHandler(enumPath),
|
|
125
137
|
keyGenerator: (req) => {
|
|
126
138
|
const user = getUserFromJWT(req);
|
|
127
139
|
return user || req.ip || "unknown";
|
|
@@ -133,6 +145,7 @@ async function startProviderApi(env, admin = false, port) {
|
|
|
133
145
|
enumPath,
|
|
134
146
|
rateLimit({
|
|
135
147
|
...limit,
|
|
148
|
+
handler: rateLimitHandler(enumPath),
|
|
136
149
|
keyGenerator: (req) => {
|
|
137
150
|
const siteKey = req.headers["prosopo-site-key"];
|
|
138
151
|
return siteKey || req.ip || "unknown";
|
|
@@ -140,7 +153,10 @@ async function startProviderApi(env, admin = false, port) {
|
|
|
140
153
|
})
|
|
141
154
|
);
|
|
142
155
|
} else {
|
|
143
|
-
apiApp.use(
|
|
156
|
+
apiApp.use(
|
|
157
|
+
enumPath,
|
|
158
|
+
rateLimit({ ...limit, handler: rateLimitHandler(enumPath) })
|
|
159
|
+
);
|
|
144
160
|
}
|
|
145
161
|
}
|
|
146
162
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prosopo/provider",
|
|
3
|
-
"version": "4.14.
|
|
3
|
+
"version": "4.14.4",
|
|
4
4
|
"author": "PROSOPO LIMITED <info@prosopo.io>",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -23,23 +23,23 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@noble/hashes": "1.8.0",
|
|
25
25
|
"@polkadot/util": "13.5.7",
|
|
26
|
-
"@prosopo/api": "3.5.
|
|
27
|
-
"@prosopo/api-express-router": "3.1.
|
|
26
|
+
"@prosopo/api": "3.5.12",
|
|
27
|
+
"@prosopo/api-express-router": "3.1.39",
|
|
28
28
|
"@prosopo/api-route": "2.6.50",
|
|
29
29
|
"@prosopo/common": "3.1.43",
|
|
30
30
|
"@prosopo/logger": "2.0.1",
|
|
31
|
-
"@prosopo/database": "3.15.
|
|
32
|
-
"@prosopo/datasets": "3.1.
|
|
33
|
-
"@prosopo/env": "3.6.
|
|
34
|
-
"@prosopo/ipinfo": "0.2.
|
|
35
|
-
"@prosopo/keyring": "2.9.
|
|
36
|
-
"@prosopo/load-balancer": "2.10.
|
|
31
|
+
"@prosopo/database": "3.15.8",
|
|
32
|
+
"@prosopo/datasets": "3.1.46",
|
|
33
|
+
"@prosopo/env": "3.6.8",
|
|
34
|
+
"@prosopo/ipinfo": "0.2.32",
|
|
35
|
+
"@prosopo/keyring": "2.9.52",
|
|
36
|
+
"@prosopo/load-balancer": "2.10.6",
|
|
37
37
|
"@prosopo/redis-client": "1.0.27",
|
|
38
38
|
"@prosopo/locale": "3.2.6",
|
|
39
|
-
"@prosopo/types": "4.9.
|
|
40
|
-
"@prosopo/types-database": "4.11.
|
|
41
|
-
"@prosopo/types-env": "2.10.
|
|
42
|
-
"@prosopo/user-access-policy": "3.11.
|
|
39
|
+
"@prosopo/types": "4.9.5",
|
|
40
|
+
"@prosopo/types-database": "4.11.7",
|
|
41
|
+
"@prosopo/types-env": "2.10.7",
|
|
42
|
+
"@prosopo/user-access-policy": "3.11.3",
|
|
43
43
|
"@prosopo/util": "3.3.3",
|
|
44
44
|
"@prosopo/util-crypto": "13.5.30",
|
|
45
45
|
"cron": "3.1.7",
|