@prosopo/cli 3.8.26 → 3.8.28

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.
@@ -21,10 +21,12 @@ ViteCommonJSConfig: .
21
21
  '/home/runner/work/captcha/captcha/packages/keyring/tsconfig.json',
22
22
  '/home/runner/work/captcha/captcha/packages/provider/tsconfig.json',
23
23
  '/home/runner/work/captcha/captcha/packages/api-express-router/tsconfig.json',
24
+ '/home/runner/work/captcha/captcha/packages/audio-assets/tsconfig.json',
25
+ '/home/runner/work/captcha/captcha/packages/puzzle-assets/tsconfig.json',
24
26
  '/home/runner/work/captcha/captcha/packages/captcha-severity/tsconfig.json',
25
27
  '/home/runner/work/captcha/captcha/packages/datasets/tsconfig.json',
28
+ '/home/runner/work/captcha/captcha/packages/icon-order-assets/tsconfig.json',
26
29
  '/home/runner/work/captcha/captcha/packages/load-balancer/tsconfig.json',
27
- '/home/runner/work/captcha/captcha/packages/puzzle-assets/tsconfig.json',
28
30
  '/home/runner/work/captcha/captcha/packages/web-bot-auth/tsconfig.json'
29
31
  ]
30
32
  }
@@ -49,10 +51,12 @@ ViteCommonJSConfig: .
49
51
  '@prosopo/keyring',
50
52
  '@prosopo/provider',
51
53
  '@prosopo/api-express-router',
54
+ '@prosopo/audio-assets',
55
+ '@prosopo/puzzle-assets',
52
56
  '@prosopo/captcha-severity',
53
57
  '@prosopo/datasets',
58
+ '@prosopo/icon-order-assets',
54
59
  '@prosopo/load-balancer',
55
- '@prosopo/puzzle-assets',
56
60
  '@prosopo/web-bot-auth'
57
61
  ]
58
62
  }
@@ -80,10 +84,10 @@ dist/cjs/reloader.cjs 1.87 kB │ gzip: 0.76 kB
80
84
  dist/cjs/commands/migrateAbuserScoreThreshold.cjs 2.17 kB │ gzip: 0.90 kB
81
85
  dist/cjs/argv.cjs 2.30 kB │ gzip: 0.66 kB
82
86
  dist/cjs/start.cjs 2.45 kB │ gzip: 0.84 kB
83
- dist/cjs/commands/siteKeyRegisterApi.cjs 3.77 kB │ gzip: 1.20 kB
84
- dist/cjs/commands/siteKeyRegister.cjs 4.13 kB │ gzip: 1.24 kB
87
+ dist/cjs/commands/siteKeyRegisterApi.cjs 3.85 kB │ gzip: 1.22 kB
88
+ dist/cjs/commands/siteKeyRegister.cjs 4.22 kB │ gzip: 1.26 kB
85
89
  dist/cjs/prosopo.config.cjs 4.63 kB │ gzip: 1.47 kB
86
- dist/cjs/RateLimiter.cjs 5.78 kB │ gzip: 0.92 kB
90
+ dist/cjs/RateLimiter.cjs 7.05 kB │ gzip: 1.02 kB
87
91
 
88
92
  [EMPTY_IMPORT_META] `import.meta` may not be a valid syntax with the `cjs` output format.
89
93
  ╭─[ src/prosopo.config.ts:56:21 ]
@@ -93,4 +97,4 @@ dist/cjs/RateLimiter.cjs 5.78 kB │ gzip: 0.92 kB
93
97
   │ ╰─────── This `import.meta` will be replaced with an empty object (`{}`) automatically. If this is desired, you can suppress this warning by adding `transform.define: { 'import.meta': {} }`. If `import.meta` needs to be kept as-is, you need to set the output format to `esm`.
94
98
  ────╯
95
99
  
96
- ✓ built in 42ms
100
+ ✓ built in 63ms
@@ -1,5 +1,5 @@
1
1
  $ tsc --build --verbose
2
- 1:38:24 PM - Projects in this build:
2
+ 11:34:32 AM - Projects in this build:
3
3
  * ../../dev/config/tsconfig.json
4
4
  * ../util/tsconfig.json
5
5
  * ../locale/tsconfig.json
@@ -19,68 +19,74 @@ $ tsc --build --verbose
19
19
  * ../types-env/tsconfig.json
20
20
  * ../env/tsconfig.json
21
21
  * ../api-express-router/tsconfig.json
22
+ * ../puzzle-assets/tsconfig.json
23
+ * ../audio-assets/tsconfig.json
22
24
  * ../captcha-severity/tsconfig.json
23
25
  * ../datasets/tsconfig.json
26
+ * ../icon-order-assets/tsconfig.json
24
27
  * ../load-balancer/tsconfig.json
25
- * ../puzzle-assets/tsconfig.json
26
28
  * ../web-bot-auth/tsconfig.json
27
29
  * ../provider/tsconfig.json
28
30
  * ../../dev/workspace/tsconfig.json
29
31
  * tsconfig.json
30
32
 
31
- 1:38:24 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'
33
+ 11:34:32 AM - 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'
34
+
35
+ 11:34:32 AM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
36
+
37
+ 11:34:32 AM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
32
38
 
33
- 1:38:24 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
39
+ 11:34:32 AM - 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'
34
40
 
35
- 1:38:24 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
41
+ 11:34:32 AM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
36
42
 
37
- 1:38:24 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'
43
+ 11:34:32 AM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/tests/apiHarness.ts' is older than output '../api/tsconfig.tsbuildinfo'
38
44
 
39
- 1:38:24 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
45
+ 11:34:32 AM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
40
46
 
41
- 1:38:24 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/tests/apiHarness.ts' is older than output '../api/tsconfig.tsbuildinfo'
47
+ 11:34:32 AM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/error.ts' is older than output '../common/tsconfig.tsbuildinfo'
42
48
 
43
- 1:38:24 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
49
+ 11:34:32 AM - Project '../dotenv/tsconfig.json' is up to date because newest input '../dotenv/src/index.ts' is older than output '../dotenv/tsconfig.tsbuildinfo'
44
50
 
45
- 1:38:25 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/index.ts' is older than output '../common/tsconfig.tsbuildinfo'
51
+ 11:34:32 AM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/IpInfoService.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
46
52
 
47
- 1:38:25 PM - Project '../dotenv/tsconfig.json' is up to date because newest input '../dotenv/src/env.ts' is older than output '../dotenv/tsconfig.tsbuildinfo'
53
+ 11:34:32 AM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/tests/apiRoute.unit.test.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
48
54
 
49
- 1:38:25 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/IpInfoService.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
55
+ 11:34:32 AM - 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'
50
56
 
51
- 1:38:25 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'
57
+ 11:34:32 AM - 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'
52
58
 
53
- 1:38:25 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'
59
+ 11:34:32 AM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/index.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
54
60
 
55
- 1:38:25 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/ruleRecord.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
61
+ 11:34:32 AM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/unit/captchaLabel.unit.test.ts' is older than output '../database/tsconfig.tsbuildinfo'
56
62
 
57
- 1:38:25 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/index.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
63
+ 11:34:32 AM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/pair/decode.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
58
64
 
59
- 1:38:25 PM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/unit/captchaLabel.unit.test.ts' is older than output '../database/tsconfig.tsbuildinfo'
65
+ 11:34:32 AM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/tests/typesEnv.test-d.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
60
66
 
61
- 1:38:25 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/pair/decode.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
67
+ 11:34:32 AM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/env.ts' is older than output '../env/tsconfig.tsbuildinfo'
62
68
 
63
- 1:38:25 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/tests/typesEnv.test-d.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
69
+ 11:34:32 AM - Project '../api-express-router/tsconfig.json' is up to date because newest input '../api-express-router/src/tests/unit/testDoubles.ts' is older than output '../api-express-router/tsconfig.tsbuildinfo'
64
70
 
65
- 1:38:25 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/env.ts' is older than output '../env/tsconfig.tsbuildinfo'
71
+ 11:34:32 AM - Project '../puzzle-assets/tsconfig.json' is up to date because newest input '../puzzle-assets/src/browser.ts' is older than output '../puzzle-assets/tsconfig.tsbuildinfo'
66
72
 
67
- 1:38:25 PM - Project '../api-express-router/tsconfig.json' is up to date because newest input '../api-express-router/src/errorHandler.ts' is older than output '../api-express-router/tsconfig.tsbuildinfo'
73
+ 11:34:32 AM - Project '../audio-assets/tsconfig.json' is up to date because newest input '../audio-assets/src/distort.ts' is older than output '../audio-assets/tsconfig.tsbuildinfo'
68
74
 
69
- 1:38:25 PM - Project '../captcha-severity/tsconfig.json' is up to date because newest input '../captcha-severity/src/index.test.ts' is older than output '../captcha-severity/tsconfig.tsbuildinfo'
75
+ 11:34:32 AM - Project '../captcha-severity/tsconfig.json' is up to date because newest input '../captcha-severity/src/index.test.ts' is older than output '../captcha-severity/tsconfig.tsbuildinfo'
70
76
 
71
- 1:38:25 PM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/index.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
77
+ 11:34:32 AM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/index.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
72
78
 
73
- 1:38:25 PM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/developmentProviderUrl.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
79
+ 11:34:32 AM - Project '../icon-order-assets/tsconfig.json' is up to date because newest input '../icon-order-assets/src/background.ts' is older than output '../icon-order-assets/tsconfig.tsbuildinfo'
74
80
 
75
- 1:38:25 PM - Project '../puzzle-assets/tsconfig.json' is up to date because newest input '../puzzle-assets/src/background.ts' is older than output '../puzzle-assets/tsconfig.tsbuildinfo'
81
+ 11:34:32 AM - 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'
76
82
 
77
- 1:38:25 PM - Project '../web-bot-auth/tsconfig.json' is up to date because newest input '../web-bot-auth/src/verify.ts' is older than output '../web-bot-auth/tsconfig.tsbuildinfo'
83
+ 11:34:32 AM - Project '../web-bot-auth/tsconfig.json' is up to date because newest input '../web-bot-auth/src/verify.ts' is older than output '../web-bot-auth/tsconfig.tsbuildinfo'
78
84
 
79
- 1:38:25 PM - Project '../provider/tsconfig.json' is up to date because newest input '../provider/src/util.ts' is older than output '../provider/tsconfig.tsbuildinfo'
85
+ 11:34:32 AM - Project '../provider/tsconfig.json' is up to date because newest input '../provider/src/utils/devicePlatform.ts' is older than output '../provider/tsconfig.tsbuildinfo'
80
86
 
81
- 1:38:25 PM - Project '../../dev/workspace/tsconfig.json' is up to date because newest input '../../dev/workspace/src/index.ts' is older than output '../../dev/workspace/tsconfig.tsbuildinfo'
87
+ 11:34:32 AM - Project '../../dev/workspace/tsconfig.json' is up to date because newest input '../../dev/workspace/src/index.ts' is older than output '../../dev/workspace/tsconfig.tsbuildinfo'
82
88
 
83
- 1:38:25 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
89
+ 11:34:32 AM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
84
90
 
85
- 1:38:25 PM - Building project '/home/runner/work/captcha/captcha/packages/cli/tsconfig.json'...
91
+ 11:34:32 AM - Building project '/home/runner/work/captcha/captcha/packages/cli/tsconfig.json'...
86
92
 
@@ -22,17 +22,18 @@ ViteEsmConfig: .
22
22
  '/home/runner/work/captcha/captcha/packages/keyring/tsconfig.json',
23
23
  '/home/runner/work/captcha/captcha/packages/provider/tsconfig.json',
24
24
  '/home/runner/work/captcha/captcha/packages/api-express-router/tsconfig.json',
25
+ '/home/runner/work/captcha/captcha/packages/audio-assets/tsconfig.json',
26
+ '/home/runner/work/captcha/captcha/packages/puzzle-assets/tsconfig.json',
25
27
  '/home/runner/work/captcha/captcha/packages/captcha-severity/tsconfig.json',
26
28
  '/home/runner/work/captcha/captcha/packages/datasets/tsconfig.json',
29
+ '/home/runner/work/captcha/captcha/packages/icon-order-assets/tsconfig.json',
27
30
  '/home/runner/work/captcha/captcha/packages/load-balancer/tsconfig.json',
28
- '/home/runner/work/captcha/captcha/packages/puzzle-assets/tsconfig.json',
29
31
  '/home/runner/work/captcha/captcha/packages/web-bot-auth/tsconfig.json'
30
32
  ]
31
33
  }
32
34
  {
33
35
  externals: [
34
36
  '@prosopo/api',
35
- The plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the resolve.tsconfigPaths option. You can remove the plugin and set resolve.tsconfigPaths: true in your Vite config instead.
36
37
  '@prosopo/types',
37
38
  '@prosopo/locale',
38
39
  '@prosopo/util',
@@ -51,13 +52,16 @@ ViteEsmConfig: .
51
52
  '@prosopo/keyring',
52
53
  '@prosopo/provider',
53
54
  '@prosopo/api-express-router',
55
+ '@prosopo/audio-assets',
56
+ '@prosopo/puzzle-assets',
54
57
  '@prosopo/captcha-severity',
55
58
  '@prosopo/datasets',
59
+ '@prosopo/icon-order-assets',
56
60
  '@prosopo/load-balancer',
57
- '@prosopo/puzzle-assets',
58
61
  '@prosopo/web-bot-auth'
59
62
  ]
60
63
  }
64
+ The plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the resolve.tsconfigPaths option. You can remove the plugin and set resolve.tsconfigPaths: true in your Vite config instead.
61
65
  vite v8.1.5 building ssr environment for production...
62
66
  Bundle build started
63
67
  
@@ -81,9 +85,9 @@ dist/reloader.js 1.62 kB │ gzip: 0.69 kB
81
85
  dist/argv.js 1.98 kB │ gzip: 0.59 kB
82
86
  dist/commands/migrateAbuserScoreThreshold.js 2.11 kB │ gzip: 0.89 kB
83
87
  dist/start.js 2.23 kB │ gzip: 0.82 kB
84
- dist/commands/siteKeyRegisterApi.js 3.71 kB │ gzip: 1.21 kB
85
- dist/commands/siteKeyRegister.js 3.99 kB │ gzip: 1.24 kB
88
+ dist/commands/siteKeyRegisterApi.js 3.81 kB │ gzip: 1.23 kB
89
+ dist/commands/siteKeyRegister.js 4.10 kB │ gzip: 1.26 kB
86
90
  dist/prosopo.config.js 4.49 kB │ gzip: 1.48 kB
87
- dist/RateLimiter.js 5.35 kB │ gzip: 0.92 kB
91
+ dist/RateLimiter.js 6.52 kB │ gzip: 1.02 kB
88
92
 
89
- ✓ built in 44ms
93
+ ✓ built in 58ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,51 @@
1
1
  # @prosopo/cli
2
2
 
3
+ ## 3.8.28
4
+ ### Patch Changes
5
+
6
+ - Updated dependencies [4570692]
7
+ - @prosopo/provider@5.17.0
8
+ - @prosopo/api@4.6.0
9
+ - @prosopo/types@5.15.0
10
+ - @prosopo/locale@3.9.0
11
+ - @prosopo/common@3.1.64
12
+ - @prosopo/env@3.6.71
13
+ - @prosopo/keyring@2.10.3
14
+
15
+ ## 3.8.27
16
+ ### Patch Changes
17
+
18
+ - b299a91: An audio challenge, offered only as an accessibility alternative, like reCAPTCHA's audio option. The user hears a short sequence of spoken digits and types them in.
19
+
20
+ It is off by default and needs two switches. Prosopo has to turn on the `captchaTypeFeatureFlags.audio` feature flag for the site, which the site owner cannot do, and the site owner has to set `audioAccessibilityEnabled`. When both are on, image, puzzle and icon-order challenges show a "Use audio instead" button. Pressing it swaps the visual challenge for the audio one. After a wrong answer the user stays on audio and gets a fresh clip.
21
+
22
+ Audio is never a captcha type that can be selected or routed to. A site's `captchaType`, traffic-filter categories, Restrict rules and the site-key CLI all reject it, and routing, PoW escalation and the severity tiers leave it out. The provider only serves audio against the visual session the user was already given, and only on a site with both switches on; any other audio request is refused before the session is used up, and a request without a session is always refused.
23
+
24
+ The spoken digits are synthesised by `@prosopo/audio-assets`, so there is no recorded set of clips to collect. The answer never leaves the provider, and a challenge can be submitted and verified only once, even under concurrent requests. `@prosopo/procaptcha-audio` is the widget. It and the "Use audio instead" button are built on the shared widget code in `@prosopo/procaptcha-common`, and the provider side is built on the shared interactive-captcha code that puzzle and icon-order use.
25
+
26
+ The demo playground has audio pages, and there is an end-to-end test for it.
27
+ - e13d7a8: New captcha type: `iconOrder`. The user is shown a frame of icons and a legend, and clicks the legend's icons in the order given.
28
+
29
+ Icon-order is off by default. Only Prosopo can switch it on for a site, with the `captchaTypeFeatureFlags.iconOrder` feature flag; the site owner cannot. A site without the flag is never served icon-order by any route, and the challenge endpoint refuses it. Once the flag is on, the owner can still keep icon-order out of the frictionless flow with `frictionlessTypes.iconOrder`, the same way as image and puzzle.
30
+
31
+ The answer never leaves the provider. Icon positions are stored on the challenge record, and the widget receives only the rendered frame and legend. Grading checks order as well as position, and each icon's hit radius scales with its size. Verifying a token is single-use under concurrent requests.
32
+
33
+ `@prosopo/icon-order-assets` draws the imagery, and `@prosopo/procaptcha-icon-order` is the widget. Its text is translated into every supported language.
34
+
35
+ Puzzle and icon-order now share their server code: challenge and solution handlers, the verify route, the submit and verify pipeline, and the database record methods. The widget code they have in common moves into `@prosopo/procaptcha-common`: the lazy mount wrapper, manager expiry and dispose, spent-session handling, behavioural data encryption and trusted click coordinates. Puzzle's behaviour is unchanged.
36
+
37
+ The demo playground has icon-order pages, and there is an end-to-end test for it.
38
+ - Updated dependencies [b299a91]
39
+ - Updated dependencies [e13d7a8]
40
+ - Updated dependencies [270395d]
41
+ - @prosopo/types@5.14.0
42
+ - @prosopo/provider@5.16.0
43
+ - @prosopo/api@4.5.0
44
+ - @prosopo/locale@3.8.0
45
+ - @prosopo/keyring@2.10.2
46
+ - @prosopo/common@3.1.63
47
+ - @prosopo/env@3.6.70
48
+
3
49
  ## 3.8.26
4
50
  ### Patch Changes
5
51
 
@@ -103,6 +103,30 @@ export declare const getRateLimitConfig: () => {
103
103
  windowMs: string | undefined;
104
104
  limit: string | undefined;
105
105
  };
106
+ "/v1/prosopo/provider/client/captcha/audio": {
107
+ windowMs: string | undefined;
108
+ limit: string | undefined;
109
+ };
110
+ "/v1/prosopo/provider/client/audio/solution": {
111
+ windowMs: string | undefined;
112
+ limit: string | undefined;
113
+ };
114
+ "/v1/prosopo/provider/client/audio/verify": {
115
+ windowMs: string | undefined;
116
+ limit: string | undefined;
117
+ };
118
+ "/v1/prosopo/provider/client/captcha/icon-order": {
119
+ windowMs: string | undefined;
120
+ limit: string | undefined;
121
+ };
122
+ "/v1/prosopo/provider/client/icon-order/solution": {
123
+ windowMs: string | undefined;
124
+ limit: string | undefined;
125
+ };
126
+ "/v1/prosopo/provider/client/icon-order/verify": {
127
+ windowMs: string | undefined;
128
+ limit: string | undefined;
129
+ };
106
130
  "/v1/prosopo/provider/client/authenticated/verify": {
107
131
  windowMs: string | undefined;
108
132
  limit: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../src/RateLimiter.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2H9B,CAAC"}
1
+ {"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../src/RateLimiter.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmJ9B,CAAC"}
@@ -106,6 +106,30 @@ var getRateLimitConfig = () => {
106
106
  windowMs: process.env.PROSOPO_VERIFY_PUZZLE_CAPTCHA_SOLUTION_WINDOW,
107
107
  limit: process.env.PROSOPO_VERIFY_PUZZLE_CAPTCHA_SOLUTION_LIMIT
108
108
  },
109
+ [ClientApiPaths.GetAudioCaptchaChallenge]: {
110
+ windowMs: process.env.PROSOPO_GET_AUDIO_CAPTCHA_CHALLENGE_WINDOW,
111
+ limit: process.env.PROSOPO_GET_AUDIO_CAPTCHA_CHALLENGE_LIMIT
112
+ },
113
+ [ClientApiPaths.SubmitAudioCaptchaSolution]: {
114
+ windowMs: process.env.PROSOPO_SUBMIT_AUDIO_CAPTCHA_SOLUTION_WINDOW,
115
+ limit: process.env.PROSOPO_SUBMIT_AUDIO_CAPTCHA_SOLUTION_LIMIT
116
+ },
117
+ [ClientApiPaths.VerifyAudioCaptchaSolution]: {
118
+ windowMs: process.env.PROSOPO_VERIFY_AUDIO_CAPTCHA_SOLUTION_WINDOW,
119
+ limit: process.env.PROSOPO_VERIFY_AUDIO_CAPTCHA_SOLUTION_LIMIT
120
+ },
121
+ [ClientApiPaths.GetIconOrderCaptchaChallenge]: {
122
+ windowMs: process.env.PROSOPO_GET_ICON_ORDER_CAPTCHA_CHALLENGE_WINDOW,
123
+ limit: process.env.PROSOPO_GET_ICON_ORDER_CAPTCHA_CHALLENGE_LIMIT
124
+ },
125
+ [ClientApiPaths.SubmitIconOrderCaptchaSolution]: {
126
+ windowMs: process.env.PROSOPO_SUBMIT_ICON_ORDER_CAPTCHA_SOLUTION_WINDOW,
127
+ limit: process.env.PROSOPO_SUBMIT_ICON_ORDER_CAPTCHA_SOLUTION_LIMIT
128
+ },
129
+ [ClientApiPaths.VerifyIconOrderCaptchaSolution]: {
130
+ windowMs: process.env.PROSOPO_VERIFY_ICON_ORDER_CAPTCHA_SOLUTION_WINDOW,
131
+ limit: process.env.PROSOPO_VERIFY_ICON_ORDER_CAPTCHA_SOLUTION_LIMIT
132
+ },
109
133
  [ClientApiPaths.VerifyAuthenticatedSession]: {
110
134
  windowMs: process.env.PROSOPO_VERIFY_AUTHENTICATED_SESSION_WINDOW,
111
135
  limit: process.env.PROSOPO_VERIFY_AUTHENTICATED_SESSION_LIMIT
@@ -1 +1 @@
1
- {"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../src/RateLimiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../src/RateLimiter.ts"],"names":[],"mappings":"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"}