@prosopo/cli 3.8.38 → 3.9.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 (40) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +5 -4
  2. package/.turbo/turbo-build$colon$tsc.log +33 -33
  3. package/.turbo/turbo-build.log +5 -4
  4. package/CHANGELOG.md +59 -0
  5. package/Dockerfile +6 -0
  6. package/dist/argv.d.ts.map +1 -1
  7. package/dist/argv.js +3 -1
  8. package/dist/argv.js.map +1 -1
  9. package/dist/bundle/prosopo-native-puzzle.node +0 -0
  10. package/dist/bundle/provider.cli.bundle.js +80853 -80742
  11. package/dist/cjs/argv.cjs +3 -1
  12. package/dist/cjs/commands/detectorPoolSet.cjs +51 -0
  13. package/dist/cjs/commands/ensureExternalIndexes.cjs +1 -1
  14. package/dist/cjs/commands/ensureIndexes.cjs +1 -1
  15. package/dist/cjs/commands/index.cjs +2 -0
  16. package/dist/cjs/commands/migrateAbuserScoreThreshold.cjs +1 -1
  17. package/dist/cjs/commands/providerSetDataset.cjs +1 -1
  18. package/dist/cjs/commands/siteKeyRegister.cjs +2 -2
  19. package/dist/cjs/commands/siteKeyRegisterApi.cjs +1 -1
  20. package/dist/cjs/commands/storeCaptchasExternally.cjs +1 -1
  21. package/dist/cjs/commands/updateSpamEmailDomains.cjs +1 -1
  22. package/dist/cjs/start.cjs +1 -1
  23. package/dist/commands/detectorPoolSet.d.ts +14 -0
  24. package/dist/commands/detectorPoolSet.d.ts.map +1 -0
  25. package/dist/commands/detectorPoolSet.js +51 -0
  26. package/dist/commands/detectorPoolSet.js.map +1 -0
  27. package/dist/commands/ensureExternalIndexes.js +1 -1
  28. package/dist/commands/ensureIndexes.js +1 -1
  29. package/dist/commands/index.d.ts +1 -0
  30. package/dist/commands/index.d.ts.map +1 -1
  31. package/dist/commands/index.js +2 -1
  32. package/dist/commands/index.js.map +1 -1
  33. package/dist/commands/migrateAbuserScoreThreshold.js +1 -1
  34. package/dist/commands/providerSetDataset.js +1 -1
  35. package/dist/commands/siteKeyRegister.js +2 -2
  36. package/dist/commands/siteKeyRegisterApi.js +1 -1
  37. package/dist/commands/storeCaptchasExternally.js +1 -1
  38. package/dist/commands/updateSpamEmailDomains.js +1 -1
  39. package/dist/start.js +1 -1
  40. package/package.json +7 -7
@@ -68,7 +68,7 @@ ViteCommonJSConfig: .
68
68
  vite v8.1.6 building ssr environment for production...
69
69
  Bundle build started
70
70
  
71
- ✓ 21 modules transformed.
71
+ ✓ 22 modules transformed.
72
72
  rendering chunks...
73
73
  computing gzip size...
74
74
  dist/cjs/commands/version.cjs 0.52 kB │ gzip: 0.29 kB
@@ -80,14 +80,15 @@ dist/cjs/process.env.cjs 0.99 kB │ gzip: 0.42 kB
80
80
  dist/cjs/_virtual/_rolldown/runtime.cjs 1.00 kB │ gzip: 0.50 kB
81
81
  dist/cjs/commands/ensureExternalIndexes.cjs 1.07 kB │ gzip: 0.50 kB
82
82
  dist/cjs/files.cjs 1.27 kB │ gzip: 0.58 kB
83
- dist/cjs/commands/index.cjs 1.30 kB │ gzip: 0.29 kB
83
+ dist/cjs/commands/index.cjs 1.43 kB │ gzip: 0.31 kB
84
84
  dist/cjs/commands/providerSetDataset.cjs 1.49 kB │ gzip: 0.65 kB
85
85
  dist/cjs/commands/updateSpamEmailDomains.cjs 1.58 kB │ gzip: 0.65 kB
86
86
  dist/cjs/cli.cjs 1.76 kB │ gzip: 0.64 kB
87
87
  dist/cjs/reloader.cjs 1.87 kB │ gzip: 0.76 kB
88
+ dist/cjs/commands/detectorPoolSet.cjs 2.01 kB │ gzip: 0.95 kB
88
89
  dist/cjs/commands/migrateAbuserScoreThreshold.cjs 2.17 kB │ gzip: 0.90 kB
89
- dist/cjs/argv.cjs 2.30 kB │ gzip: 0.66 kB
90
90
  dist/cjs/start.cjs 2.45 kB │ gzip: 0.84 kB
91
+ dist/cjs/argv.cjs 2.45 kB │ gzip: 0.68 kB
91
92
  dist/cjs/commands/siteKeyRegisterApi.cjs 3.85 kB │ gzip: 1.22 kB
92
93
  dist/cjs/commands/siteKeyRegister.cjs 4.22 kB │ gzip: 1.26 kB
93
94
  dist/cjs/prosopo.config.cjs 4.63 kB │ gzip: 1.47 kB
@@ -101,4 +102,4 @@ dist/cjs/RateLimiter.cjs 7.05 kB │ gzip: 1.02 kB
101
102
   │ ╰─────── 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`.
102
103
  ────╯
103
104
  
104
- ✓ built in 62ms
105
+ ✓ built in 65ms
@@ -1,5 +1,5 @@
1
1
  $ tsc --build --verbose
2
- 9:34:11 PM - Projects in this build:
2
+ 4:00:36 PM - Projects in this build:
3
3
  * ../../dev/config/tsconfig.json
4
4
  * ../util/tsconfig.json
5
5
  * ../locale/tsconfig.json
@@ -32,67 +32,67 @@ $ tsc --build --verbose
32
32
  * ../../dev/workspace/tsconfig.json
33
33
  * tsconfig.json
34
34
 
35
- 9:34:11 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/vite/vite-plugin-modify-exports-files.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
35
+ 4:00:36 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'
36
36
 
37
- 9:34:11 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
37
+ 4:00:36 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
38
38
 
39
- 9:34:11 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
39
+ 4:00:36 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/process.ts' is older than output '../locale/tsconfig.tsbuildinfo'
40
40
 
41
- 9:34: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'
41
+ 4:00:36 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'
42
42
 
43
- 9:34:11 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'
43
+ 4:00:36 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'
44
44
 
45
- 9:34:11 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
45
+ 4:00:36 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/tests/apiHarness.ts' is older than output '../api/tsconfig.tsbuildinfo'
46
46
 
47
- 9:34:12 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/tests/errorSites.unit.test.ts' is older than output '../common/tsconfig.tsbuildinfo'
47
+ 4:00:36 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/tests/errorSites.unit.test.ts' is older than output '../common/tsconfig.tsbuildinfo'
48
48
 
49
- 9:34:12 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/logger.ts' is older than output '../logger/tsconfig.tsbuildinfo'
49
+ 4:00:36 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/tests/loggerBrowser.unit.test.ts' is older than output '../logger/tsconfig.tsbuildinfo'
50
50
 
51
- 9:34:12 PM - Project '../dotenv/tsconfig.json' is up to date because newest input '../dotenv/src/env.ts' is older than output '../dotenv/tsconfig.tsbuildinfo'
51
+ 4:00:36 PM - Project '../dotenv/tsconfig.json' is up to date because newest input '../dotenv/src/tests/env.unit.test.ts' is older than output '../dotenv/tsconfig.tsbuildinfo'
52
52
 
53
- 9:34:12 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/types.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
53
+ 4:00:36 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/IpInfoService.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
54
54
 
55
- 9:34:12 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'
55
+ 4:00:36 PM - 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'
56
56
 
57
- 9:34: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'
57
+ 4:00:36 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'
58
58
 
59
- 9:34: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'
59
+ 4:00:36 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'
60
60
 
61
- 9:34:12 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/types/provider.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
61
+ 4:00:36 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'
62
62
 
63
- 9:34:12 PM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/mongoGlobalSetup.ts' is older than output '../database/tsconfig.tsbuildinfo'
63
+ 4:00:36 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'
64
64
 
65
- 9:34:12 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/errorSites.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
65
+ 4:00:36 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/keyring/keyring.test.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
66
66
 
67
- 9:34:12 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/index.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
67
+ 4:00:36 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/index.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
68
68
 
69
- 9:34:12 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/errorSites.ts' is older than output '../env/tsconfig.tsbuildinfo'
69
+ 4:00:37 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/env.ts' is older than output '../env/tsconfig.tsbuildinfo'
70
70
 
71
- 9:34:12 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'
71
+ 4:00:37 PM - 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'
72
72
 
73
- 9:34:12 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'
73
+ 4:00:37 PM - 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'
74
74
 
75
- 9:34:12 PM - 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'
75
+ 4:00:37 PM - 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'
76
76
 
77
- 9:34:12 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'
77
+ 4:00:37 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'
78
78
 
79
- 9:34:12 PM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/tests/mocks/data/captchas.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
79
+ 4:00:37 PM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/tests/mocks/data/captchas.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
80
80
 
81
- 9:34:12 PM - 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'
81
+ 4:00:37 PM - 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'
82
82
 
83
- 9:34:12 PM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/tests/productionProviderList.unit.test.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
83
+ 4:00:37 PM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/tests/productionProviderList.unit.test.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
84
84
 
85
- 9:34:12 PM - Project '../fingerprintjs/tsconfig.json' is up to date because newest input '../fingerprintjs/src/utils/browser.ts' is older than output '../fingerprintjs/tsconfig.tsbuildinfo'
85
+ 4:00:37 PM - Project '../fingerprintjs/tsconfig.json' is up to date because newest input '../fingerprintjs/src/utils/browser.ts' is older than output '../fingerprintjs/tsconfig.tsbuildinfo'
86
86
 
87
- 9:34:12 PM - Project '../fingerprint/tsconfig.json' is up to date because newest input '../fingerprint/src/index.test.ts' is older than output '../fingerprint/tsconfig.tsbuildinfo'
87
+ 4:00:37 PM - Project '../fingerprint/tsconfig.json' is up to date because newest input '../fingerprint/src/index.test.ts' is older than output '../fingerprint/tsconfig.tsbuildinfo'
88
88
 
89
- 9:34:12 PM - Project '../web-bot-auth/tsconfig.json' is up to date because newest input '../web-bot-auth/src/base64.ts' is older than output '../web-bot-auth/tsconfig.tsbuildinfo'
89
+ 4:00:37 PM - Project '../web-bot-auth/tsconfig.json' is up to date because newest input '../web-bot-auth/src/base64.ts' is older than output '../web-bot-auth/tsconfig.tsbuildinfo'
90
90
 
91
- 9:34:12 PM - Project '../provider/tsconfig.json' is up to date because newest input '../provider/src/util/usageCounters.ts' is older than output '../provider/tsconfig.tsbuildinfo'
91
+ 4:00:37 PM - Project '../provider/tsconfig.json' is up to date because newest input '../provider/src/utils/devicePlatform.ts' is older than output '../provider/tsconfig.tsbuildinfo'
92
92
 
93
- 9:34:12 PM - Project '../../dev/workspace/tsconfig.json' is up to date because newest input '../../dev/workspace/src/projectInfo.ts' is older than output '../../dev/workspace/tsconfig.tsbuildinfo'
93
+ 4:00:37 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'
94
94
 
95
- 9:34:12 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
95
+ 4:00:37 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
96
96
 
97
- 9:34:12 PM - Building project '/home/runner/work/captcha/captcha/packages/cli/tsconfig.json'...
97
+ 4:00:37 PM - Building project '/home/runner/work/captcha/captcha/packages/cli/tsconfig.json'...
98
98
 
@@ -69,7 +69,7 @@ ViteEsmConfig: .
69
69
  vite v8.1.6 building ssr environment for production...
70
70
  Bundle build started
71
71
  
72
- ✓ 21 modules transformed.
72
+ ✓ 22 modules transformed.
73
73
  rendering chunks...
74
74
  computing gzip size...
75
75
  dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
@@ -81,17 +81,18 @@ dist/commands/storeCaptchasExternally.js 0.86 kB │ gzip: 0.44 kB
81
81
  dist/process.env.js 0.90 kB │ gzip: 0.40 kB
82
82
  dist/commands/ensureExternalIndexes.js 1.01 kB │ gzip: 0.49 kB
83
83
  dist/files.js 1.04 kB │ gzip: 0.50 kB
84
- dist/commands/index.js 1.12 kB │ gzip: 0.29 kB
84
+ dist/commands/index.js 1.23 kB │ gzip: 0.31 kB
85
85
  dist/commands/providerSetDataset.js 1.31 kB │ gzip: 0.60 kB
86
86
  dist/cli.js 1.34 kB │ gzip: 0.55 kB
87
87
  dist/commands/updateSpamEmailDomains.js 1.53 kB │ gzip: 0.64 kB
88
88
  dist/reloader.js 1.62 kB │ gzip: 0.69 kB
89
- dist/argv.js 1.98 kB │ gzip: 0.59 kB
89
+ dist/commands/detectorPoolSet.js 1.97 kB │ gzip: 0.94 kB
90
90
  dist/commands/migrateAbuserScoreThreshold.js 2.11 kB │ gzip: 0.89 kB
91
+ dist/argv.js 2.12 kB │ gzip: 0.62 kB
91
92
  dist/start.js 2.23 kB │ gzip: 0.82 kB
92
93
  dist/commands/siteKeyRegisterApi.js 3.81 kB │ gzip: 1.23 kB
93
94
  dist/commands/siteKeyRegister.js 4.10 kB │ gzip: 1.26 kB
94
95
  dist/prosopo.config.js 4.49 kB │ gzip: 1.48 kB
95
96
  dist/RateLimiter.js 6.52 kB │ gzip: 1.02 kB
96
97
 
97
- ✓ built in 64ms
98
+ ✓ built in 124ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,64 @@
1
1
  # @prosopo/cli
2
2
 
3
+ ## 3.9.0
4
+ ### Minor Changes
5
+
6
+ - 159766a: Let a self-hosted provider run a detector you built yourself, and ship a working example built on BotD.
7
+
8
+ Until now the only detector a provider could load was ours. Its output can only be read by the closed decoder in the
9
+ provider, so a self-hosted node with any other detector had nothing to score visitors with.
10
+
11
+ **Open detector format.** A pool bundle can now be marked `format: "open-v1"`. The provider reads those bundles with a
12
+ short, documented decoder: an AES-256-GCM payload whose key is wrapped with the bundle's RSA-OAEP public key, carrying
13
+ `{ score, timestamp, userId, userAgent, headHash, d }`. The same checks apply as for our detector — the token must
14
+ match this visitor's account, user agent and page, and be under ten minutes old — and `d` reaches decision and routing
15
+ machines as `input.d`. Open bundles are only loaded when `PROSOPO_DETECTOR_OPEN_FORMAT=1`; the hosted fleet never sets
16
+ it, so nothing changes there.
17
+
18
+ **`demos/detector-botd`.** A detector built on BotD that scores automated browsers as 1 and everything else as 0, plus a
19
+ `pool` script that builds the bundles with a fresh keypair each. Writing your own detector means replacing one function;
20
+ the encryption is done for you.
21
+
22
+ **`detector_pool_set` CLI command.** Writes a pool read from stdin into the provider's pool directory. Stdin rather than a
23
+ file because the provider image runs as a non-root user and cannot read a file copied in as root.
24
+
25
+ **Self-hosted compose and image.** The image now creates its pool directory owned by the runtime user, and the
26
+ self-hosted compose file mounts a `detector_pool` volume there and turns the open format on. The compose file no longer
27
+ defaults to provider 3.8.19, which it had silently stayed on for nineteen releases: `generateSelfHostedEnv.ts` writes
28
+ the version of the checkout it runs from.
29
+
30
+ `SELF_HOSTING.md` gains a "Bring your own detector" section and now loads the widget with `type="module"`, which the
31
+ bundle has needed since it was split into chunks.
32
+
33
+ Tested end to end on a stack built from this branch: stock headless Chromium was flagged by BotD and served a puzzle,
34
+ headed Chromium passed with proof of work, the detector's signals were stored on the session, and a provider without
35
+ the flag rejected the pool.
36
+
37
+ ### Patch Changes
38
+
39
+ - 5a1db28: Fix four things that broke the self-hosting guide for anyone starting from a fresh clone.
40
+
41
+ - **The `fingerprintjs` submodule used an SSH URL**, so it could only be fetched by someone with GitHub SSH keys. It is
42
+ now HTTPS. The repository is public, so nobody needs credentials for it. Without it `pnpm run build:all` fails.
43
+ - **The guide ran the env script before anything was built.** The script imports built workspace packages, so on a fresh
44
+ clone it crashed with `ERR_MODULE_NOT_FOUND`. The guide now clones with `--recurse-submodules` and runs
45
+ `pnpm run build:all` in step 1.
46
+ - **Every `docker compose exec` in the guide failed** with "no configuration file provided", because the compose file is
47
+ not named `docker-compose.yml`. `generateSelfHostedEnv.ts` now writes `COMPOSE_FILE=docker-compose.self-hosted.yml`
48
+ into `.env`, which Compose reads on its own, so plain `docker compose` commands work.
49
+ - **The provider CLI exited 0 on a command it did not have.** An older image given `detector_pool_set` did nothing and
50
+ reported success. It now fails with `Unknown command`.
51
+ - Updated dependencies [d02b3bc]
52
+ - Updated dependencies [b460b0b]
53
+ - Updated dependencies [159766a]
54
+ - @prosopo/provider@5.21.0
55
+ - @prosopo/locale@3.13.0
56
+ - @prosopo/types@5.18.0
57
+ - @prosopo/env@3.6.80
58
+ - @prosopo/api@4.7.6
59
+ - @prosopo/common@3.3.0
60
+ - @prosopo/keyring@2.10.11
61
+
3
62
  ## 3.8.38
4
63
  ### Patch Changes
5
64
 
package/Dockerfile CHANGED
@@ -22,6 +22,12 @@ COPY ./packages/cli/dist/bundle/ ./
22
22
 
23
23
  COPY ./packages/locale/dist/locales/ ./locales/
24
24
 
25
+ # Created here so it reaches the runtime image owned by the runtime user. A
26
+ # named volume mounted on it starts with that ownership; one mounted on a path
27
+ # the image lacks is created root-owned, and the provider cannot write a pool
28
+ # into it. The self-hosted compose file mounts its pool volume here.
29
+ RUN mkdir -p data/detector-pool
30
+
25
31
  # Download the GeoLite2 databases into the same directory. One layer rather
26
32
  # than three so the intermediate states are not retained.
27
33
  RUN curl -fLsS -o GeoLite2-Country.mmdb https://git.io/GeoLite2-Country.mmdb && \
@@ -1 +1 @@
1
- {"version":3,"file":"argv.d.ts","sourceRoot":"","sources":["../src/argv.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAe1D,MAAM,MAAM,oBAAoB,GAAG;IAClC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;CACX,CAAC;AAqBF,wBAAgB,WAAW,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,mBAAmB;;;;;;;;;;;;GAoB3B"}
1
+ {"version":3,"file":"argv.d.ts","sourceRoot":"","sources":["../src/argv.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAgB1D,MAAM,MAAM,oBAAoB,GAAG;IAClC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;CACX,CAAC;AAsBF,wBAAgB,WAAW,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,mBAAmB;;;;;;;;;;;;GAuB3B"}
package/dist/argv.js CHANGED
@@ -1,3 +1,4 @@
1
+ import detectorPoolSet_default from "./commands/detectorPoolSet.js";
1
2
  import providerSetDataset_default from "./commands/providerSetDataset.js";
2
3
  import storeCaptchasExternally_default from "./commands/storeCaptchasExternally.js";
3
4
  import updateSpamEmailDomains_default from "./commands/updateSpamEmailDomains.js";
@@ -17,6 +18,7 @@ function getCommands(pair, config, authAccount, logger) {
17
18
  ensureExternalIndexes_default(pair, config, { logger }),
18
19
  migrateAbuserScoreThreshold_default(pair, config, { logger }),
19
20
  providerSetDataset_default(pair, config, { logger }),
21
+ detectorPoolSet_default(pair, config, { logger }),
20
22
  storeCaptchasExternally_default(pair, config, { logger }),
21
23
  updateSpamEmailDomains_default(pair, config, { logger }),
22
24
  siteKeyRegister_default(pair, config, { logger }),
@@ -26,7 +28,7 @@ function getCommands(pair, config, authAccount, logger) {
26
28
  }
27
29
  function processArgs(args, pair, authAccount, config) {
28
30
  const logger = getLogger(LogLevel.enum.info, "cli");
29
- const commandManager = yargs(hideBin(args)).usage("Usage: $0 [global options] <command> [options]").option("api", {
31
+ const commandManager = yargs(hideBin(args)).usage("Usage: $0 [global options] <command> [options]").strictCommands().option("api", {
30
32
  demand: false,
31
33
  default: false,
32
34
  type: "boolean"
package/dist/argv.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"argv.js","sourceRoot":"","sources":["../src/argv.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAe,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACN,4BAA4B,EAC5B,oBAAoB,EACpB,kCAAkC,EAClC,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,cAAc,GACd,MAAM,qBAAqB,CAAC;AAS7B,SAAS,WAAW,CACnB,IAAiB,EACjB,MAA2B,EAC3B,WAAwB,EACxB,MAAc;IAEd,OAAO;QACN,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QAC9C,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QACtD,kCAAkC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QAC5D,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QACnD,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QACxD,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QACvD,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QAChD,yBAAyB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QAChE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;KACxC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAC1B,IAAc,EACd,IAAiB,EACjB,WAAwB,EACxB,MAA2B;IAE3B,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEpD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACzC,KAAK,CAAC,gDAAgD,CAAC;SACvD,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAW,CAAC;SAC1E,MAAM,CAAC,UAAU,EAAE;QACnB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,SAAS;KACN,CAAC,CAAC;IAEb,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAEhE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,cAAc,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"argv.js","sourceRoot":"","sources":["../src/argv.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAe,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACN,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,EACpB,kCAAkC,EAClC,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,cAAc,GACd,MAAM,qBAAqB,CAAC;AAS7B,SAAS,WAAW,CACnB,IAAiB,EACjB,MAA2B,EAC3B,WAAwB,EACxB,MAAc;IAEd,OAAO;QACN,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QAC9C,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QACtD,kCAAkC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QAC5D,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QACnD,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QAChD,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QACxD,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QACvD,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QAChD,yBAAyB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;QAChE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;KACxC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAC1B,IAAc,EACd,IAAiB,EACjB,WAAwB,EACxB,MAA2B;IAE3B,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAIpD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACzC,KAAK,CAAC,gDAAgD,CAAC;SACvD,cAAc,EAAE;SAChB,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAW,CAAC;SAC1E,MAAM,CAAC,UAAU,EAAE;QACnB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,SAAS;KACN,CAAC,CAAC;IAEb,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAEhE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,cAAc,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC"}