@prosopo/cli 3.5.8 → 3.6.31

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 (115) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +27 -21
  2. package/.turbo/turbo-build$colon$tsc.log +80 -0
  3. package/.turbo/turbo-build.log +32 -22
  4. package/CHANGELOG.md +696 -0
  5. package/README.md +52 -95
  6. package/dist/RateLimiter.d.ts +115 -0
  7. package/dist/RateLimiter.d.ts.map +1 -0
  8. package/dist/RateLimiter.js +57 -1
  9. package/dist/RateLimiter.js.map +1 -0
  10. package/dist/argv.d.ts +22 -0
  11. package/dist/argv.d.ts.map +1 -0
  12. package/dist/argv.js +5 -1
  13. package/dist/argv.js.map +1 -0
  14. package/dist/bundle/decodeBehavior-DA4X_swr.js +210 -0
  15. package/dist/bundle/decodeSimd-CKp22xIS.js +205 -0
  16. package/dist/bundle/{i18nBackend-D6GWR1ra.js → i18nBackend-o8t6Kg5r.js} +17 -17
  17. package/dist/bundle/index-DUVLsNmB.js +2371 -0
  18. package/dist/bundle/provider.cli.bundle.js +55437 -48199
  19. package/dist/cjs/RateLimiter.cjs +56 -0
  20. package/dist/cjs/argv.cjs +15 -11
  21. package/dist/cjs/cli.cjs +2 -2
  22. package/dist/cjs/commands/ensureExternalIndexes.cjs +3 -3
  23. package/dist/cjs/commands/ensureIndexes.cjs +3 -3
  24. package/dist/cjs/commands/index.cjs +4 -0
  25. package/dist/cjs/commands/migrateAbuserScoreThreshold.cjs +66 -0
  26. package/dist/cjs/commands/providerSetDataset.cjs +5 -5
  27. package/dist/cjs/commands/siteKeyRegister.cjs +14 -6
  28. package/dist/cjs/commands/siteKeyRegisterApi.cjs +14 -10
  29. package/dist/cjs/commands/storeCaptchasExternally.cjs +3 -3
  30. package/dist/cjs/commands/updateSpamEmailDomains.cjs +50 -0
  31. package/dist/cjs/commands/version.cjs +3 -3
  32. package/dist/cjs/index.cjs +0 -2
  33. package/dist/cjs/process.env.cjs +0 -8
  34. package/dist/cjs/prosopo.config.cjs +38 -3
  35. package/dist/cjs/reloader.cjs +2 -2
  36. package/dist/cjs/start.cjs +17 -86
  37. package/dist/cli.d.ts +2 -0
  38. package/dist/cli.d.ts.map +1 -0
  39. package/dist/cli.js +1 -1
  40. package/dist/cli.js.map +1 -0
  41. package/dist/commands/ensureExternalIndexes.d.ts +13 -0
  42. package/dist/commands/ensureExternalIndexes.d.ts.map +1 -0
  43. package/dist/commands/ensureExternalIndexes.js +1 -1
  44. package/dist/commands/ensureExternalIndexes.js.map +1 -0
  45. package/dist/commands/ensureIndexes.d.ts +13 -0
  46. package/dist/commands/ensureIndexes.d.ts.map +1 -0
  47. package/dist/commands/ensureIndexes.js +1 -1
  48. package/dist/commands/ensureIndexes.js.map +1 -0
  49. package/dist/commands/index.d.ts +10 -0
  50. package/dist/commands/index.d.ts.map +1 -0
  51. package/dist/commands/index.js +14 -10
  52. package/dist/commands/index.js.map +1 -0
  53. package/dist/commands/migrateAbuserScoreThreshold.d.ts +16 -0
  54. package/dist/commands/migrateAbuserScoreThreshold.d.ts.map +1 -0
  55. package/dist/commands/migrateAbuserScoreThreshold.js +67 -0
  56. package/dist/commands/migrateAbuserScoreThreshold.js.map +1 -0
  57. package/dist/commands/providerSetDataset.d.ts +17 -0
  58. package/dist/commands/providerSetDataset.d.ts.map +1 -0
  59. package/dist/commands/providerSetDataset.js +1 -1
  60. package/dist/commands/providerSetDataset.js.map +1 -0
  61. package/dist/commands/siteKeyRegister.d.ts +62 -0
  62. package/dist/commands/siteKeyRegister.d.ts.map +1 -0
  63. package/dist/commands/siteKeyRegister.js +12 -4
  64. package/dist/commands/siteKeyRegister.js.map +1 -0
  65. package/dist/commands/siteKeyRegisterApi.d.ts +35 -0
  66. package/dist/commands/siteKeyRegisterApi.d.ts.map +1 -0
  67. package/dist/commands/siteKeyRegisterApi.js +12 -8
  68. package/dist/commands/siteKeyRegisterApi.js.map +1 -0
  69. package/dist/commands/storeCaptchasExternally.d.ts +13 -0
  70. package/dist/commands/storeCaptchasExternally.d.ts.map +1 -0
  71. package/dist/commands/storeCaptchasExternally.js +1 -1
  72. package/dist/commands/storeCaptchasExternally.js.map +1 -0
  73. package/dist/commands/updateSpamEmailDomains.d.ts +13 -0
  74. package/dist/commands/updateSpamEmailDomains.d.ts.map +1 -0
  75. package/dist/commands/updateSpamEmailDomains.js +51 -0
  76. package/dist/commands/updateSpamEmailDomains.js.map +1 -0
  77. package/dist/commands/validators.d.ts +18 -0
  78. package/dist/commands/validators.d.ts.map +1 -0
  79. package/dist/commands/validators.js.map +1 -0
  80. package/dist/commands/version.d.ts +12 -0
  81. package/dist/commands/version.d.ts.map +1 -0
  82. package/dist/commands/version.js +1 -1
  83. package/dist/commands/version.js.map +1 -0
  84. package/dist/files.d.ts +4 -0
  85. package/dist/files.d.ts.map +1 -0
  86. package/dist/files.js.map +1 -0
  87. package/dist/index.d.ts +7 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +1 -3
  90. package/dist/index.js.map +1 -0
  91. package/dist/process.env.d.ts +5 -0
  92. package/dist/process.env.d.ts.map +1 -0
  93. package/dist/process.env.js +1 -9
  94. package/dist/process.env.js.map +1 -0
  95. package/dist/prosopo.config.d.ts +3 -0
  96. package/dist/prosopo.config.d.ts.map +1 -0
  97. package/dist/prosopo.config.js +37 -2
  98. package/dist/prosopo.config.js.map +1 -0
  99. package/dist/reloader.d.ts +20 -0
  100. package/dist/reloader.d.ts.map +1 -0
  101. package/dist/reloader.js +1 -1
  102. package/dist/reloader.js.map +1 -0
  103. package/dist/start.d.ts +3 -0
  104. package/dist/start.d.ts.map +1 -0
  105. package/dist/start.js +18 -87
  106. package/dist/start.js.map +1 -0
  107. package/dist/tests/bundle/bundle.unit.test.d.ts +2 -0
  108. package/dist/tests/bundle/bundle.unit.test.d.ts.map +1 -0
  109. package/dist/tests/bundle/bundle.unit.test.js +14 -0
  110. package/dist/tests/bundle/bundle.unit.test.js.map +1 -0
  111. package/package.json +21 -19
  112. package/vite.cjs.config.ts +1 -1
  113. package/vite.config.ts +9 -1
  114. package/vite.esm.config.ts +1 -1
  115. package/vite.test.config.ts +1 -1
@@ -27,6 +27,10 @@ const getRateLimitConfig = () => {
27
27
  windowMs: process.env.PROSOPO_VERIFY_IMAGE_CAPTCHA_SOLUTION_DAPP_WINDOW,
28
28
  limit: process.env.PROSOPO_VERIFY_IMAGE_CAPTCHA_SOLUTION_DAPP_LIMIT
29
29
  },
30
+ [types.ClientApiPaths.CheckSpamEmail]: {
31
+ windowMs: process.env.PROSOPO_CHECK_SPAM_EMAIL_WINDOW,
32
+ limit: process.env.PROSOPO_CHECK_SPAM_EMAIL_LIMIT
33
+ },
30
34
  [types.ClientApiPaths.GetProviderStatus]: {
31
35
  windowMs: process.env.PROSOPO_GET_PROVIDER_STATUS_WINDOW,
32
36
  limit: process.env.PROSOPO_GET_PROVIDER_STATUS_LIMIT
@@ -43,6 +47,18 @@ const getRateLimitConfig = () => {
43
47
  windowMs: process.env.PROSOPO_SITE_KEY_REGISTER_WINDOW,
44
48
  limit: process.env.PROSOPO_SITE_KEY_REGISTER_LIMIT
45
49
  },
50
+ [types.AdminApiPaths.SiteKeysRegister]: {
51
+ windowMs: process.env.PROSOPO_SITE_KEYS_REGISTER_WINDOW,
52
+ limit: process.env.PROSOPO_SITE_KEYS_REGISTER_LIMIT
53
+ },
54
+ [types.AdminApiPaths.SiteKeyRemove]: {
55
+ windowMs: process.env.PROSOPO_SITE_KEY_REMOVE_WINDOW,
56
+ limit: process.env.PROSOPO_SITE_KEY_REMOVE_LIMIT
57
+ },
58
+ [types.AdminApiPaths.SiteKeysRemove]: {
59
+ windowMs: process.env.PROSOPO_SITE_KEYS_REMOVE_WINDOW,
60
+ limit: process.env.PROSOPO_SITE_KEYS_REMOVE_LIMIT
61
+ },
46
62
  [types.AdminApiPaths.UpdateDetectorKey]: {
47
63
  windowMs: process.env.PROSOPO_UPDATE_DETECTOR_KEY_WINDOW,
48
64
  limit: process.env.PROSOPO_UPDATE_DETECTOR_KEY_LIMIT
@@ -55,9 +71,49 @@ const getRateLimitConfig = () => {
55
71
  windowMs: process.env.PROSOPO_TOGGLE_MAINTENANCE_MODE_WINDOW,
56
72
  limit: process.env.PROSOPO_TOGGLE_MAINTENANCE_MODE_LIMIT
57
73
  },
74
+ [types.AdminApiPaths.UpdateDecisionMachine]: {
75
+ windowMs: process.env.PROSOPO_UPDATE_DECISION_MACHINE_WINDOW,
76
+ limit: process.env.PROSOPO_UPDATE_DECISION_MACHINE_LIMIT
77
+ },
58
78
  [types.ClientApiPaths.GetFrictionlessCaptchaChallenge]: {
59
79
  windowMs: process.env.PROSOPO_GET_FR_CAPTCHA_CHALLENGE_WINDOW,
60
80
  limit: process.env.PROSOPO_GET_FR_CAPTCHA_CHALLENGE_LIMIT
81
+ },
82
+ [types.AdminApiPaths.GetDecisionMachine]: {
83
+ windowMs: process.env.PROSOPO_GET_DECISION_MACHINE_WINDOW,
84
+ limit: process.env.PROSOPO_GET_DECISION_MACHINE_LIMIT
85
+ },
86
+ [types.AdminApiPaths.GetAllDecisionMachines]: {
87
+ windowMs: process.env.PROSOPO_GET_ALL_DECISION_MACHINES_WINDOW,
88
+ limit: process.env.PROSOPO_GET_ALL_DECISION_MACHINES_LIMIT
89
+ },
90
+ [types.AdminApiPaths.RemoveAllDecisionMachines]: {
91
+ windowMs: process.env.PROSOPO_REMOVE_ALL_DECISION_MACHINES_WINDOW,
92
+ limit: process.env.PROSOPO_REMOVE_ALL_DECISION_MACHINES_LIMIT
93
+ },
94
+ [types.AdminApiPaths.RemoveDecisionMachine]: {
95
+ windowMs: process.env.PROSOPO_REMOVE_DECISION_MACHINE_WINDOW,
96
+ limit: process.env.PROSOPO_REMOVE_DECISION_MACHINE_LIMIT
97
+ },
98
+ [types.AdminApiPaths.ClearAllCounters]: {
99
+ windowMs: process.env.PROSOPO_CLEAR_ALL_COUNTERS_WINDOW,
100
+ limit: process.env.PROSOPO_CLEAR_ALL_COUNTERS_LIMIT
101
+ },
102
+ [types.ClientApiPaths.GetPuzzleCaptchaChallenge]: {
103
+ windowMs: process.env.PROSOPO_GET_PUZZLE_CAPTCHA_CHALLENGE_WINDOW,
104
+ limit: process.env.PROSOPO_GET_PUZZLE_CAPTCHA_CHALLENGE_LIMIT
105
+ },
106
+ [types.ClientApiPaths.SubmitPuzzleCaptchaSolution]: {
107
+ windowMs: process.env.PROSOPO_SUBMIT_PUZZLE_CAPTCHA_SOLUTION_WINDOW,
108
+ limit: process.env.PROSOPO_SUBMIT_PUZZLE_CAPTCHA_SOLUTION_LIMIT
109
+ },
110
+ [types.ClientApiPaths.VerifyPuzzleCaptchaSolution]: {
111
+ windowMs: process.env.PROSOPO_VERIFY_PUZZLE_CAPTCHA_SOLUTION_WINDOW,
112
+ limit: process.env.PROSOPO_VERIFY_PUZZLE_CAPTCHA_SOLUTION_LIMIT
113
+ },
114
+ [types.AdminApiPaths.DnsEvent]: {
115
+ windowMs: process.env.PROSOPO_DNS_EVENT_WINDOW,
116
+ limit: process.env.PROSOPO_DNS_EVENT_LIMIT
61
117
  }
62
118
  };
63
119
  };
package/dist/cjs/argv.cjs CHANGED
@@ -1,35 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const common = require("@prosopo/common");
3
+ const logger = require("@prosopo/logger");
4
4
  const yargs = require("yargs");
5
5
  const helpers = require("yargs/helpers");
6
6
  require("./commands/index.cjs");
7
7
  const ensureIndexes = require("./commands/ensureIndexes.cjs");
8
8
  const ensureExternalIndexes = require("./commands/ensureExternalIndexes.cjs");
9
+ const migrateAbuserScoreThreshold = require("./commands/migrateAbuserScoreThreshold.cjs");
9
10
  const providerSetDataset = require("./commands/providerSetDataset.cjs");
10
11
  const storeCaptchasExternally = require("./commands/storeCaptchasExternally.cjs");
12
+ const updateSpamEmailDomains = require("./commands/updateSpamEmailDomains.cjs");
11
13
  const siteKeyRegister = require("./commands/siteKeyRegister.cjs");
12
14
  const siteKeyRegisterApi = require("./commands/siteKeyRegisterApi.cjs");
13
15
  const version = require("./commands/version.cjs");
14
- function getCommands(pair, config, authAccount, logger) {
16
+ function getCommands(pair, config, authAccount, logger2) {
15
17
  return [
16
- ensureIndexes(pair, config, { logger }),
17
- ensureExternalIndexes(pair, config, { logger }),
18
- providerSetDataset(pair, config, { logger }),
19
- storeCaptchasExternally(pair, config, { logger }),
20
- siteKeyRegister.default(pair, config, { logger }),
21
- siteKeyRegisterApi(pair, authAccount, config, { logger }),
22
- version(pair, config, { logger })
18
+ ensureIndexes(pair, config, { logger: logger2 }),
19
+ ensureExternalIndexes(pair, config, { logger: logger2 }),
20
+ migrateAbuserScoreThreshold(pair, config, { logger: logger2 }),
21
+ providerSetDataset(pair, config, { logger: logger2 }),
22
+ storeCaptchasExternally(pair, config, { logger: logger2 }),
23
+ updateSpamEmailDomains(pair, config, { logger: logger2 }),
24
+ siteKeyRegister.default(pair, config, { logger: logger2 }),
25
+ siteKeyRegisterApi(pair, authAccount, config, { logger: logger2 }),
26
+ version(pair, config, { logger: logger2 })
23
27
  ];
24
28
  }
25
29
  function processArgs(args, pair, authAccount, config) {
26
- const logger = common.getLogger(common.LogLevel.enum.info, "CLI");
30
+ const logger$1 = logger.getLogger(logger.LogLevel.enum.info, "CLI");
27
31
  const commandManager = yargs(helpers.hideBin(args)).usage("Usage: $0 [global options] <command> [options]").option("api", { demand: false, default: false, type: "boolean" }).option("adminApi", {
28
32
  demand: false,
29
33
  default: false,
30
34
  type: "boolean"
31
35
  });
32
- const commands = getCommands(pair, config, authAccount, logger);
36
+ const commands = getCommands(pair, config, authAccount, logger$1);
33
37
  for (const command of commands) {
34
38
  commandManager.command(command);
35
39
  }
package/dist/cjs/cli.cjs CHANGED
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
  const process = require("node:process");
3
- const common = require("@prosopo/common");
4
3
  const dotenv = require("@prosopo/dotenv");
5
4
  const keyring = require("@prosopo/keyring");
6
5
  const locale = require("@prosopo/locale");
6
+ const logger = require("@prosopo/logger");
7
7
  const util = require("@prosopo/util");
8
8
  const argv = require("./argv.cjs");
9
9
  const prosopo_config = require("./prosopo.config.cjs");
10
10
  const reloader = require("./reloader.cjs");
11
11
  var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
12
- const log = common.getLogger(common.LogLevel.enum.info, "CLI");
12
+ const log = logger.getLogger(logger.LogLevel.enum.info, "CLI");
13
13
  async function main() {
14
14
  const envPath = dotenv.loadEnv();
15
15
  const config = prosopo_config();
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
- const common = require("@prosopo/common");
3
2
  const env = require("@prosopo/env");
3
+ const logger = require("@prosopo/logger");
4
4
  const provider = require("@prosopo/provider");
5
5
  const commandEnsureExternalIndexes = (pair, config, cmdArgs) => {
6
- const logger = cmdArgs?.logger || common.getLogger(common.LogLevel.enum.info, "cli.ensure_external_indexes");
6
+ const logger$1 = cmdArgs?.logger || logger.getLogger(logger.LogLevel.enum.info, "cli.ensure_external_indexes");
7
7
  return {
8
8
  command: "ensure_external_indexes",
9
9
  describe: "Ensure indexes for external database",
@@ -19,7 +19,7 @@ const commandEnsureExternalIndexes = (pair, config, cmdArgs) => {
19
19
  env$1.logger.error(() => ({ err }));
20
20
  });
21
21
  } catch (err) {
22
- logger.error(() => ({ err }));
22
+ logger$1.error(() => ({ err }));
23
23
  }
24
24
  },
25
25
  middlewares: []
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
- const common = require("@prosopo/common");
3
2
  const env = require("@prosopo/env");
3
+ const logger = require("@prosopo/logger");
4
4
  const provider = require("@prosopo/provider");
5
5
  const commandEnsureIndexes = (pair, config, cmdArgs) => {
6
- const logger = cmdArgs?.logger || common.getLogger(common.LogLevel.enum.info, "cli.ensure_indexes");
6
+ const logger$1 = cmdArgs?.logger || logger.getLogger(logger.LogLevel.enum.info, "cli.ensure_indexes");
7
7
  return {
8
8
  command: "ensure_indexes",
9
9
  describe: "Ensure indexes for internal database",
@@ -17,7 +17,7 @@ const commandEnsureIndexes = (pair, config, cmdArgs) => {
17
17
  }
18
18
  await tasks.db.ensureIndexes();
19
19
  } catch (err) {
20
- logger.error(() => ({ err }));
20
+ logger$1.error(() => ({ err }));
21
21
  }
22
22
  },
23
23
  middlewares: []
@@ -2,15 +2,19 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const providerSetDataset = require("./providerSetDataset.cjs");
4
4
  const storeCaptchasExternally = require("./storeCaptchasExternally.cjs");
5
+ const updateSpamEmailDomains = require("./updateSpamEmailDomains.cjs");
5
6
  const version = require("./version.cjs");
6
7
  const siteKeyRegister = require("./siteKeyRegister.cjs");
7
8
  const siteKeyRegisterApi = require("./siteKeyRegisterApi.cjs");
8
9
  const ensureExternalIndexes = require("./ensureExternalIndexes.cjs");
9
10
  const ensureIndexes = require("./ensureIndexes.cjs");
11
+ const migrateAbuserScoreThreshold = require("./migrateAbuserScoreThreshold.cjs");
10
12
  exports.commandProviderSetDataset = providerSetDataset;
11
13
  exports.commandStoreCaptchasExternally = storeCaptchasExternally;
14
+ exports.commandUpdateSpamEmailDomains = updateSpamEmailDomains;
12
15
  exports.commandVersion = version;
13
16
  exports.commandSiteKeyRegister = siteKeyRegister.default;
14
17
  exports.commandSiteKeyRegisterApi = siteKeyRegisterApi;
15
18
  exports.commandEnsureExternalIndexes = ensureExternalIndexes;
16
19
  exports.commandEnsureIndexes = ensureIndexes;
20
+ exports.commandMigrateAbuserScoreThreshold = migrateAbuserScoreThreshold;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ const env = require("@prosopo/env");
3
+ const logger = require("@prosopo/logger");
4
+ const provider = require("@prosopo/provider");
5
+ const commandMigrateAbuserScoreThreshold = (pair, config, cmdArgs) => {
6
+ const logger$1 = cmdArgs?.logger || logger.getLogger(logger.LogLevel.enum.info, "cli.migrate_abuser_score_threshold");
7
+ return {
8
+ command: "migrate_abuser_score_threshold",
9
+ describe: "Add abuserScoreThreshold field (default 0) to trafficFilter in provider client records",
10
+ builder: (yargs) => yargs.option("dryRun", {
11
+ type: "boolean",
12
+ default: false,
13
+ description: "Run without making changes to verify the migration"
14
+ }),
15
+ handler: async (argv) => {
16
+ try {
17
+ const dryRun = argv.dryRun ?? false;
18
+ logger$1.info(() => ({
19
+ msg: "Starting abuserScoreThreshold migration on provider DB...",
20
+ data: { dryRun }
21
+ }));
22
+ const env$1 = new env.ProviderEnvironment(config, pair);
23
+ await env$1.isReady();
24
+ const tasks = new provider.Tasks(env$1);
25
+ const clientModel = tasks.db.tables.client;
26
+ if (!clientModel) {
27
+ throw new Error("Client table not available");
28
+ }
29
+ const filter = {
30
+ "settings.trafficFilter": { $exists: true },
31
+ "settings.trafficFilter.abuserScoreThreshold": { $exists: false }
32
+ };
33
+ const count = await clientModel.countDocuments(filter);
34
+ logger$1.info(() => ({
35
+ msg: `Found ${count} client records needing migration`
36
+ }));
37
+ if (!dryRun && count > 0) {
38
+ const result = await clientModel.updateMany(filter, {
39
+ $set: {
40
+ "settings.trafficFilter.abuserScoreThreshold": 0
41
+ }
42
+ });
43
+ logger$1.info(() => ({
44
+ msg: `Updated ${result.modifiedCount} client records`
45
+ }));
46
+ }
47
+ logger$1.info(() => ({
48
+ msg: "Migration completed",
49
+ data: { recordsFound: count, dryRun }
50
+ }));
51
+ if (dryRun) {
52
+ logger$1.info(() => ({
53
+ msg: "DRY RUN: No changes were made. Run without --dryRun to apply changes."
54
+ }));
55
+ }
56
+ } catch (err) {
57
+ logger$1.error(() => ({
58
+ err,
59
+ msg: "Failed to migrate abuserScoreThreshold"
60
+ }));
61
+ }
62
+ },
63
+ middlewares: []
64
+ };
65
+ };
66
+ module.exports = commandMigrateAbuserScoreThreshold;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
- const common = require("@prosopo/common");
3
2
  const env = require("@prosopo/env");
3
+ const logger = require("@prosopo/logger");
4
4
  const provider = require("@prosopo/provider");
5
5
  const z = require("zod");
6
6
  const files = require("../files.cjs");
@@ -22,7 +22,7 @@ function _interopNamespaceDefault(e) {
22
22
  }
23
23
  const z__namespace = /* @__PURE__ */ _interopNamespaceDefault(z);
24
24
  const commandProviderSetDataset = (pair, config, cmdArgs) => {
25
- const logger = cmdArgs?.logger || common.getLogger(common.LogLevel.enum.info, "cli.provider_set_data_set");
25
+ const logger$1 = cmdArgs?.logger || logger.getLogger(logger.LogLevel.enum.info, "cli.provider_set_data_set");
26
26
  return {
27
27
  command: "provider_set_data_set",
28
28
  describe: "Add a dataset as a Provider",
@@ -38,17 +38,17 @@ const commandProviderSetDataset = (pair, config, cmdArgs) => {
38
38
  const tasks = new provider.Tasks(env$1);
39
39
  const file = z__namespace.string().parse(argv.file);
40
40
  const jsonFile = files.loadJSONFile(file);
41
- logger.info(() => ({
41
+ logger$1.info(() => ({
42
42
  data: { file },
43
43
  msg: "Loading JSON"
44
44
  }));
45
45
  const result = await tasks.datasetManager.providerSetDatasetFromFile(jsonFile);
46
- logger.info(() => ({
46
+ logger$1.info(() => ({
47
47
  data: { file },
48
48
  msg: "Loaded JSON"
49
49
  }));
50
50
  } catch (err) {
51
- logger.error(() => ({
51
+ logger$1.error(() => ({
52
52
  err,
53
53
  msg: "Error loading JSON"
54
54
  }));
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const common = require("@prosopo/common");
4
3
  const env = require("@prosopo/env");
4
+ const logger = require("@prosopo/logger");
5
5
  const provider = require("@prosopo/provider");
6
6
  const types = require("@prosopo/types");
7
7
  const z = require("zod");
@@ -13,10 +13,11 @@ const SiteKeyRegisterCommandArgsSpec = z.z.object({
13
13
  frictionless_threshold: z.z.number().max(1).min(0),
14
14
  pow_difficulty: z.z.number(),
15
15
  domains: z.z.array(z.z.string()),
16
- image_threshold: z.z.number().max(1).min(0)
16
+ image_threshold: z.z.number().max(1).min(0),
17
+ image_max_rounds: z.z.number().int().positive().optional().default(types.imageMaxRoundsDefault)
17
18
  });
18
19
  const commandSiteKeyRegister = (pair, config, cmdArgs) => {
19
- const logger = cmdArgs?.logger || common.getLogger(common.LogLevel.enum.info, "cli.dapp_register");
20
+ const logger$1 = cmdArgs?.logger || logger.getLogger(logger.LogLevel.enum.info, "cli.dapp_register");
20
21
  return {
21
22
  command: "site_key_register <sitekey> <tier>",
22
23
  describe: "Register a Site Key",
@@ -48,6 +49,10 @@ const commandSiteKeyRegister = (pair, config, cmdArgs) => {
48
49
  type: "number",
49
50
  demandOption: false,
50
51
  desc: "Image threshold for settings"
52
+ }).option("image_max_rounds", {
53
+ type: "number",
54
+ demandOption: false,
55
+ desc: "Image max rounds for settings"
51
56
  }),
52
57
  handler: async (argv) => {
53
58
  try {
@@ -60,7 +65,8 @@ const commandSiteKeyRegister = (pair, config, cmdArgs) => {
60
65
  frictionless_threshold,
61
66
  pow_difficulty,
62
67
  domains,
63
- image_threshold
68
+ image_threshold,
69
+ image_max_rounds
64
70
  } = SiteKeyRegisterCommandArgsSpec.parse(argv);
65
71
  const tasks = new provider.Tasks(env$1);
66
72
  await tasks.clientTaskManager.registerSiteKey(sitekey, tier, {
@@ -69,6 +75,8 @@ const commandSiteKeyRegister = (pair, config, cmdArgs) => {
69
75
  domains: domains || [],
70
76
  powDifficulty: pow_difficulty,
71
77
  imageThreshold: image_threshold,
78
+ imageMaxRounds: image_max_rounds,
79
+ puzzleTolerance: types.puzzleToleranceDefault,
72
80
  disallowWebView: false,
73
81
  contextAware: {
74
82
  enabled: false,
@@ -80,12 +88,12 @@ const commandSiteKeyRegister = (pair, config, cmdArgs) => {
80
88
  }
81
89
  }
82
90
  });
83
- logger.info(() => ({
91
+ logger$1.info(() => ({
84
92
  data: { sitekey },
85
93
  msg: "Site Key registered"
86
94
  }));
87
95
  } catch (err) {
88
- logger.error(() => ({
96
+ logger$1.error(() => ({
89
97
  err,
90
98
  msg: "Error registering Site Key"
91
99
  }));
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  const api = require("@prosopo/api");
3
- const common = require("@prosopo/common");
4
3
  const env = require("@prosopo/env");
4
+ const logger = require("@prosopo/logger");
5
5
  const types = require("@prosopo/types");
6
- const util = require("@prosopo/util");
7
6
  const z = require("zod");
8
7
  const siteKeyRegister = require("./siteKeyRegister.cjs");
9
8
  const validators = require("./validators.cjs");
@@ -13,7 +12,7 @@ const SiteKeyRegisterApiCommandArgsSpec = siteKeyRegister.SiteKeyRegisterCommand
13
12
  }
14
13
  );
15
14
  const commandSiteKeyRegisterApi = (pair, authAccount, config, cmdArgs) => {
16
- const logger = cmdArgs?.logger || common.getLogger(common.LogLevel.enum.info, "cli.dapp_register");
15
+ const logger$1 = cmdArgs?.logger || logger.getLogger(logger.LogLevel.enum.info, "cli.dapp_register");
17
16
  return {
18
17
  command: "site_key_register_api <sitekey> <url>",
19
18
  describe: "Register a Site Key",
@@ -49,6 +48,10 @@ const commandSiteKeyRegisterApi = (pair, authAccount, config, cmdArgs) => {
49
48
  type: "number",
50
49
  demandOption: false,
51
50
  desc: "Image threshold for settings"
51
+ }).option("image_max_rounds", {
52
+ type: "number",
53
+ demandOption: false,
54
+ desc: "Max image rounds"
52
55
  }),
53
56
  handler: async (argv) => {
54
57
  try {
@@ -61,11 +64,11 @@ const commandSiteKeyRegisterApi = (pair, authAccount, config, cmdArgs) => {
61
64
  url,
62
65
  domains,
63
66
  pow_difficulty,
64
- image_threshold
67
+ image_threshold,
68
+ image_max_rounds
65
69
  } = SiteKeyRegisterApiCommandArgsSpec.parse(argv);
66
70
  const api$1 = new api.ProviderApi(url, pair.address);
67
- const timestamp = (/* @__PURE__ */ new Date()).getTime().toString();
68
- const signature = util.u8aToHex(authAccount.sign(timestamp));
71
+ const jwt = pair.jwtIssue();
69
72
  await api$1.registerSiteKey(
70
73
  sitekey,
71
74
  argv.tier,
@@ -75,17 +78,18 @@ const commandSiteKeyRegisterApi = (pair, authAccount, config, cmdArgs) => {
75
78
  domains: domains || [],
76
79
  powDifficulty: pow_difficulty,
77
80
  imageThreshold: image_threshold,
81
+ imageMaxRounds: image_max_rounds,
82
+ puzzleTolerance: types.puzzleToleranceDefault,
78
83
  disallowWebView: false
79
84
  },
80
- timestamp,
81
- signature
85
+ jwt
82
86
  );
83
- logger.info(() => ({
87
+ logger$1.info(() => ({
84
88
  data: { sitekey },
85
89
  msg: "Site Key registered"
86
90
  }));
87
91
  } catch (err) {
88
- logger.error(() => ({
92
+ logger$1.error(() => ({
89
93
  err,
90
94
  msg: "Error registering Site Key"
91
95
  }));
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
- const common = require("@prosopo/common");
3
2
  const env = require("@prosopo/env");
3
+ const logger = require("@prosopo/logger");
4
4
  const provider = require("@prosopo/provider");
5
5
  const commandStoreCaptchasExternally = (pair, config, cmdArgs) => {
6
- const logger = cmdArgs?.logger || common.getLogger(common.LogLevel.enum.info, "cli.store_captchas");
6
+ const logger$1 = cmdArgs?.logger || logger.getLogger(logger.LogLevel.enum.info, "cli.store_captchas");
7
7
  return {
8
8
  command: "store_captchas",
9
9
  describe: "Store captcha records externally for billing purposes",
@@ -16,7 +16,7 @@ const commandStoreCaptchasExternally = (pair, config, cmdArgs) => {
16
16
  env$1.logger.error(() => ({ err }));
17
17
  });
18
18
  } catch (err) {
19
- logger.error(() => ({ err }));
19
+ logger$1.error(() => ({ err }));
20
20
  }
21
21
  },
22
22
  middlewares: []
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ const env = require("@prosopo/env");
3
+ const logger = require("@prosopo/logger");
4
+ const provider = require("@prosopo/provider");
5
+ const commandUpdateSpamEmailDomains = (pair, config, cmdArgs) => {
6
+ const logger$1 = cmdArgs?.logger || logger.getLogger(logger.LogLevel.enum.info, "cli.update_spam_email_domains");
7
+ return {
8
+ command: "update_spam_email_domains",
9
+ describe: "Update spam email domains from configured URLs",
10
+ handler: async () => {
11
+ try {
12
+ const env$1 = new env.ProviderEnvironment(config, pair);
13
+ await env$1.isReady();
14
+ const spamEmailDomainsUrls = config.spamEmailDomainsUrls || [];
15
+ if (spamEmailDomainsUrls.length === 0) {
16
+ logger$1.warn(() => ({
17
+ msg: "No spam email domains URLs configured. Set SPAM_EMAIL_DOMAINS_URLS in environment."
18
+ }));
19
+ return;
20
+ }
21
+ logger$1.info(() => ({
22
+ msg: "Starting spam email domains update",
23
+ data: { urlCount: spamEmailDomainsUrls.length }
24
+ }));
25
+ await provider.updateSpamEmailDomains(
26
+ env$1.getDb(),
27
+ env$1.logger,
28
+ spamEmailDomainsUrls
29
+ ).catch((err) => {
30
+ env$1.logger.error(() => ({
31
+ msg: "Error updating spam email domains",
32
+ err
33
+ }));
34
+ throw err;
35
+ });
36
+ logger$1.info(() => ({
37
+ msg: "Spam email domains update completed successfully"
38
+ }));
39
+ } catch (err) {
40
+ logger$1.error(() => ({
41
+ msg: "Failed to update spam email domains",
42
+ err
43
+ }));
44
+ throw err;
45
+ }
46
+ },
47
+ middlewares: []
48
+ };
49
+ };
50
+ module.exports = commandUpdateSpamEmailDomains;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
- const common = require("@prosopo/common");
2
+ const logger = require("@prosopo/logger");
3
3
  const util = require("@prosopo/util");
4
4
  const commandVersion = (pair, config, cmdArgs) => {
5
- const logger = cmdArgs?.logger || common.getLogger(common.LogLevel.enum.info, "cli.version");
5
+ const logger$1 = cmdArgs?.logger || logger.getLogger(logger.LogLevel.enum.info, "cli.version");
6
6
  return {
7
7
  command: "version",
8
8
  describe: "Return the version of the software",
9
9
  handler: () => {
10
- logger.info(() => ({
10
+ logger$1.info(() => ({
11
11
  data: { version: util.version }
12
12
  }));
13
13
  }
@@ -10,10 +10,8 @@ exports.processArgs = argv.processArgs;
10
10
  exports.start = start.start;
11
11
  exports.getAddress = process_env.getAddress;
12
12
  exports.getDB = process_env.getDB;
13
- exports.getPairType = process_env.getPairType;
14
13
  exports.getPassword = process_env.getPassword;
15
14
  exports.getSecret = process_env.getSecret;
16
- exports.getSs58Format = process_env.getSs58Format;
17
15
  exports.loadJSONFile = files.loadJSONFile;
18
16
  exports.readFile = files.readFile;
19
17
  exports.writeJSONFile = files.writeJSONFile;
@@ -1,12 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const common = require("@prosopo/common");
4
- function getSs58Format() {
5
- return Number.parseInt(process.env.SS58_FORMAT || "") || 42;
6
- }
7
- function getPairType() {
8
- return process.env.PROSOPO_PAIR_TYPE || "sr25519";
9
- }
10
4
  function getAddress(who) {
11
5
  if (!who) {
12
6
  who = "PROVIDER";
@@ -39,7 +33,5 @@ function getDB() {
39
33
  }
40
34
  exports.getAddress = getAddress;
41
35
  exports.getDB = getDB;
42
- exports.getPairType = getPairType;
43
36
  exports.getPassword = getPassword;
44
37
  exports.getSecret = getSecret;
45
- exports.getSs58Format = getSs58Format;
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- const common = require("@prosopo/common");
2
+ const logger = require("@prosopo/logger");
3
3
  const types = require("@prosopo/types");
4
4
  const RateLimiter = require("./RateLimiter.cjs");
5
5
  const process_env = require("./process.env.cjs");
@@ -25,13 +25,42 @@ const getLRules = () => {
25
25
  return {};
26
26
  }
27
27
  };
28
+ const isStringArray = (value) => Array.isArray(value) && value.every((item) => typeof item === "string");
29
+ const getDnsServers = () => {
30
+ if (!process.env.PROSOPO_DNS_SERVERS) {
31
+ return void 0;
32
+ }
33
+ try {
34
+ const parsed = JSON.parse(process.env.PROSOPO_DNS_SERVERS);
35
+ if (isStringArray(parsed)) {
36
+ return parsed;
37
+ }
38
+ return void 0;
39
+ } catch (e) {
40
+ return void 0;
41
+ }
42
+ };
43
+ const getSpamEmailDomainsUrls = () => {
44
+ if (!process.env.SPAM_EMAIL_DOMAINS_URLS) {
45
+ return void 0;
46
+ }
47
+ try {
48
+ const parsed = JSON.parse(process.env.SPAM_EMAIL_DOMAINS_URLS);
49
+ if (isStringArray(parsed)) {
50
+ return parsed;
51
+ }
52
+ return void 0;
53
+ } catch (e) {
54
+ return void 0;
55
+ }
56
+ };
28
57
  const getHost = () => {
29
58
  const importMeta = { url: typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("prosopo.config.cjs", document.baseURI).href };
30
59
  return process.env.CADDY_DOMAIN || importMeta.env?.VITE_CADDY_DOMAIN;
31
60
  };
32
61
  function getConfig(captchaSolutionsConfig, captchaServeConfig, who = "PROVIDER", admin = "ADMIN") {
33
62
  return types.ProsopoConfigSchema.parse({
34
- logLevel: common.parseLogLevel(process.env.PROSOPO_LOG_LEVEL, "info"),
63
+ logLevel: logger.parseLogLevel(process.env.PROSOPO_LOG_LEVEL, "info"),
35
64
  host: getHost(),
36
65
  defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT ? types.EnvironmentTypesSchema.parse(process.env.PROSOPO_DEFAULT_ENVIRONMENT) : types.EnvironmentTypesSchema.enum.development,
37
66
  account: {
@@ -88,9 +117,13 @@ function getConfig(captchaSolutionsConfig, captchaServeConfig, who = "PROVIDER",
88
117
  },
89
118
  clientEntropyScheduler: {
90
119
  schedule: process.env.CLIENT_ENTROPY_SCHEDULE
120
+ },
121
+ spamEmailDomainsScheduler: {
122
+ schedule: process.env.SPAM_EMAIL_DOMAINS_SCHEDULE
91
123
  }
92
124
  },
93
125
  lRules: getLRules(),
126
+ spamEmailDomainsUrls: getSpamEmailDomainsUrls(),
94
127
  authAccount: {
95
128
  address: process_env.getAddress(admin),
96
129
  password: process_env.getPassword(admin),
@@ -99,7 +132,9 @@ function getConfig(captchaSolutionsConfig, captchaServeConfig, who = "PROVIDER",
99
132
  ipApi: {
100
133
  apiKey: process.env.PROSOPO_IPAPI_KEY,
101
134
  baseUrl: process.env.PROSOPO_IPAPI_URL
102
- }
135
+ },
136
+ maxmindDbPath: process.env.MAXMIND_DB_PATH,
137
+ dnsServers: getDnsServers()
103
138
  });
104
139
  }
105
140
  module.exports = getConfig;
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  const fs = require("node:fs");
3
- const common = require("@prosopo/common");
4
3
  const dotenv = require("@prosopo/dotenv");
5
4
  const env = require("@prosopo/env");
5
+ const logger = require("@prosopo/logger");
6
6
  const start = require("./start.cjs");
7
- const log = common.getLogger(common.LogLevel.enum.info, "CLI");
7
+ const log = logger.getLogger(logger.LogLevel.enum.info, "CLI");
8
8
  class ReloadingAPI {
9
9
  constructor(envPath, config, pair, authAccount, processedArgs) {
10
10
  this._envPath = envPath;