@prosopo/cli 3.6.74 → 3.6.75

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 (59) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +37 -27
  2. package/.turbo/turbo-build$colon$tsc.log +27 -27
  3. package/.turbo/turbo-build.log +30 -27
  4. package/CHANGELOG.md +25 -0
  5. package/dist/RateLimiter.js +118 -118
  6. package/dist/_virtual/_rolldown/runtime.js +3 -0
  7. package/dist/argv.js +37 -36
  8. package/dist/bundle/decodeBehavior-BnJdECMR.js +233 -0
  9. package/dist/bundle/decodeSimd-hDznYwxo.js +218 -0
  10. package/dist/bundle/i18nBackend-C078WszN.js +3553 -0
  11. package/dist/bundle/i18nFrontend-pIqw8hl9.js +850 -0
  12. package/dist/bundle/i18next-q3w8LsnI.js +1213 -0
  13. package/dist/bundle/node-ponyfill-BXKwLYwg.js +1534 -0
  14. package/dist/bundle/provider.cli.bundle.js +102274 -131300
  15. package/dist/bundle/src-DhRyWllF.js +1880 -0
  16. package/dist/cjs/RateLimiter.cjs +118 -118
  17. package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  18. package/dist/cjs/argv.cjs +41 -38
  19. package/dist/cjs/cli.cjs +32 -43
  20. package/dist/cjs/commands/ensureExternalIndexes.cjs +26 -27
  21. package/dist/cjs/commands/ensureIndexes.cjs +24 -25
  22. package/dist/cjs/commands/index.cjs +18 -20
  23. package/dist/cjs/commands/migrateAbuserScoreThreshold.cjs +54 -65
  24. package/dist/cjs/commands/providerSetDataset.cjs +45 -59
  25. package/dist/cjs/commands/siteKeyRegister.cjs +93 -105
  26. package/dist/cjs/commands/siteKeyRegisterApi.cjs +84 -102
  27. package/dist/cjs/commands/storeCaptchasExternally.cjs +24 -24
  28. package/dist/cjs/commands/updateSpamEmailDomains.cjs +42 -49
  29. package/dist/cjs/commands/validators.cjs +18 -37
  30. package/dist/cjs/commands/version.cjs +14 -15
  31. package/dist/cjs/files.cjs +32 -30
  32. package/dist/cjs/index.cjs +15 -17
  33. package/dist/cjs/process.env.cjs +14 -25
  34. package/dist/cjs/prosopo.config.cjs +108 -132
  35. package/dist/cjs/reloader.cjs +54 -63
  36. package/dist/cjs/start.cjs +59 -81
  37. package/dist/cli.js +27 -37
  38. package/dist/commands/ensureExternalIndexes.js +24 -26
  39. package/dist/commands/ensureIndexes.js +22 -24
  40. package/dist/commands/index.js +10 -20
  41. package/dist/commands/migrateAbuserScoreThreshold.js +52 -64
  42. package/dist/commands/providerSetDataset.js +41 -41
  43. package/dist/commands/siteKeyRegister.js +90 -103
  44. package/dist/commands/siteKeyRegisterApi.js +82 -101
  45. package/dist/commands/storeCaptchasExternally.js +22 -23
  46. package/dist/commands/updateSpamEmailDomains.js +40 -48
  47. package/dist/commands/validators.js +15 -37
  48. package/dist/commands/version.js +13 -15
  49. package/dist/files.js +28 -30
  50. package/dist/index.js +5 -16
  51. package/dist/process.env.js +14 -28
  52. package/dist/prosopo.config.js +108 -131
  53. package/dist/reloader.js +49 -61
  54. package/dist/start.js +57 -79
  55. package/package.json +16 -16
  56. package/dist/bundle/decodeBehavior-Btp_pZCR.js +0 -224
  57. package/dist/bundle/decodeSimd-Cz4sdHHN.js +0 -212
  58. package/dist/bundle/i18nBackend-BiuZSvrn.js +0 -5366
  59. package/dist/bundle/index-DUVLsNmB.js +0 -2371
@@ -1,140 +1,116 @@
1
- "use strict";
2
- const logger = require("@prosopo/logger");
3
- const types = require("@prosopo/types");
4
- const RateLimiter = require("./RateLimiter.cjs");
5
- const process_env = require("./process.env.cjs");
6
- var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
1
+ const require_RateLimiter = require("./RateLimiter.cjs");
2
+ const require_process_env = require("./process.env.cjs");
3
+ let _prosopo_logger = require("@prosopo/logger");
4
+ let _prosopo_types = require("@prosopo/types");
5
+ //#region src/prosopo.config.ts
7
6
  function getMongoURI() {
8
- const protocol = process.env.PROSOPO_DATABASE_PROTOCOL || "mongodb";
9
- const mongoSrv = protocol === "mongodb+srv";
10
- const password = process.env.PROSOPO_DATABASE_PASSWORD || "root";
11
- const username = process.env.PROSOPO_DATABASE_USERNAME || "root";
12
- const host = process.env.PROSOPO_DATABASE_HOST || "localhost";
13
- const port = mongoSrv ? "" : `:${process.env.PROSOPO_DATABASE_PORT || 27017}`;
14
- const retries = mongoSrv ? "?retryWrites=true&w=majority" : "";
15
- const mongoURI = `${protocol}://${username}:${password}@${host}${port}/${retries}`;
16
- return mongoURI;
7
+ const protocol = process.env.PROSOPO_DATABASE_PROTOCOL || "mongodb";
8
+ const mongoSrv = protocol === "mongodb+srv";
9
+ const password = process.env.PROSOPO_DATABASE_PASSWORD || "root";
10
+ return `${protocol}://${process.env.PROSOPO_DATABASE_USERNAME || "root"}:${password}@${process.env.PROSOPO_DATABASE_HOST || "localhost"}${mongoSrv ? "" : `:${process.env.PROSOPO_DATABASE_PORT || 27017}`}/${mongoSrv ? "?retryWrites=true&w=majority" : ""}`;
17
11
  }
18
- const getLRules = () => {
19
- if (!process.env.L_RULES) {
20
- return {};
21
- }
22
- try {
23
- return JSON.parse(process.env.L_RULES);
24
- } catch (e) {
25
- return {};
26
- }
12
+ var getLRules = () => {
13
+ if (!process.env.L_RULES) return {};
14
+ try {
15
+ return JSON.parse(process.env.L_RULES);
16
+ } catch (e) {
17
+ return {};
18
+ }
27
19
  };
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
- }
20
+ var isStringArray = (value) => Array.isArray(value) && value.every((item) => typeof item === "string");
21
+ var getDnsServers = () => {
22
+ if (!process.env.PROSOPO_DNS_SERVERS) return;
23
+ try {
24
+ const parsed = JSON.parse(process.env.PROSOPO_DNS_SERVERS);
25
+ if (isStringArray(parsed)) return parsed;
26
+ return;
27
+ } catch (e) {
28
+ return;
29
+ }
42
30
  };
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
- }
31
+ var getSpamEmailDomainsUrls = () => {
32
+ if (!process.env.SPAM_EMAIL_DOMAINS_URLS) return;
33
+ try {
34
+ const parsed = JSON.parse(process.env.SPAM_EMAIL_DOMAINS_URLS);
35
+ if (isStringArray(parsed)) return parsed;
36
+ return;
37
+ } catch (e) {
38
+ return;
39
+ }
56
40
  };
57
- const getHost = () => {
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 };
59
- return process.env.CADDY_DOMAIN || importMeta.env?.VITE_CADDY_DOMAIN;
41
+ var getHost = () => {
42
+ return process.env.CADDY_DOMAIN || {}.env?.VITE_CADDY_DOMAIN;
60
43
  };
61
44
  function getConfig(captchaSolutionsConfig, captchaServeConfig, who = "PROVIDER", admin = "ADMIN") {
62
- return types.ProsopoConfigSchema.parse({
63
- logLevel: logger.parseLogLevel(process.env.PROSOPO_LOG_LEVEL, "info"),
64
- host: getHost(),
65
- defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT ? types.EnvironmentTypesSchema.parse(process.env.PROSOPO_DEFAULT_ENVIRONMENT) : types.EnvironmentTypesSchema.enum.development,
66
- account: {
67
- address: process_env.getAddress(who),
68
- password: process_env.getPassword(who),
69
- secret: process_env.getSecret(who)
70
- },
71
- database: {
72
- development: {
73
- type: types.DatabaseTypes.enum.provider,
74
- endpoint: getMongoURI(),
75
- dbname: process.env.PROSOPO_DATABASE_NAME,
76
- authSource: process.env.PROSOPO_DATABASE_AUTH_SOURCE
77
- },
78
- staging: {
79
- type: types.DatabaseTypes.enum.provider,
80
- endpoint: getMongoURI(),
81
- dbname: process.env.PROSOPO_DATABASE_NAME,
82
- authSource: process.env.PROSOPO_DATABASE_AUTH_SOURCE
83
- },
84
- production: {
85
- type: types.DatabaseTypes.enum.provider,
86
- endpoint: getMongoURI(),
87
- dbname: process.env.PROSOPO_DATABASE_NAME,
88
- authSource: process.env.PROSOPO_DATABASE_AUTH_SOURCE
89
- }
90
- },
91
- server: {
92
- baseURL: process.env.PROSOPO_API_BASE_URL || "http://localhost",
93
- port: process.env.PROSOPO_API_PORT ? Number.parseInt(process.env.PROSOPO_API_PORT) : 9229
94
- },
95
- captchaSolutions: captchaSolutionsConfig,
96
- captchas: captchaServeConfig,
97
- penalties: types.FrictionlessPenalties.parse({
98
- PENALTY_OLD_TIMESTAMP: process.env.PENALTY_OLD_TIMESTAMP,
99
- PENALTY_ACCESS_RULE: process.env.PENALTY_ACCESS_RULE,
100
- PENALTY_UNVERIFIED_HOST: process.env.PENALTY_UNVERIFIED_HOST
101
- }),
102
- mongoEventsUri: process.env.PROSOPO_MONGO_EVENTS_URI || "",
103
- mongoCaptchaUri: process.env.PROSOPO_MONGO_CAPTCHA_URI || "",
104
- mongoClientUri: process.env.PROSOPO_MONGO_CLIENT_URI || "",
105
- redisConnection: {
106
- url: process.env.REDIS_CONNECTION_URL || "",
107
- password: process.env.REDIS_CONNECTION_PASSWORD || ""
108
- },
109
- rateLimits: RateLimiter.getRateLimitConfig(),
110
- proxyCount: process.env.PROSOPO_PROXY_COUNT ? Number.parseInt(process.env.PROSOPO_PROXY_COUNT) : 0,
111
- scheduledTasks: {
112
- captchaScheduler: {
113
- schedule: process.env.CAPTCHA_STORAGE_SCHEDULE
114
- },
115
- clientListScheduler: {
116
- schedule: process.env.CLIENT_LIST_SCHEDULE
117
- },
118
- clientEntropyScheduler: {
119
- schedule: process.env.CLIENT_ENTROPY_SCHEDULE
120
- },
121
- spamEmailDomainsScheduler: {
122
- schedule: process.env.SPAM_EMAIL_DOMAINS_SCHEDULE
123
- }
124
- },
125
- lRules: getLRules(),
126
- spamEmailDomainsUrls: getSpamEmailDomainsUrls(),
127
- authAccount: {
128
- address: process_env.getAddress(admin),
129
- password: process_env.getPassword(admin),
130
- secret: process_env.getSecret(admin)
131
- },
132
- ipApi: {
133
- apiKey: process.env.PROSOPO_IPAPI_KEY,
134
- baseUrl: process.env.PROSOPO_IPAPI_URL
135
- },
136
- maxmindDbPath: process.env.MAXMIND_DB_PATH,
137
- dnsServers: getDnsServers()
138
- });
45
+ return _prosopo_types.ProsopoConfigSchema.parse({
46
+ logLevel: (0, _prosopo_logger.parseLogLevel)(process.env.PROSOPO_LOG_LEVEL, "info"),
47
+ host: getHost(),
48
+ defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT ? _prosopo_types.EnvironmentTypesSchema.parse(process.env.PROSOPO_DEFAULT_ENVIRONMENT) : _prosopo_types.EnvironmentTypesSchema.enum.development,
49
+ account: {
50
+ address: require_process_env.getAddress(who),
51
+ password: require_process_env.getPassword(who),
52
+ secret: require_process_env.getSecret(who)
53
+ },
54
+ database: {
55
+ development: {
56
+ type: _prosopo_types.DatabaseTypes.enum.provider,
57
+ endpoint: getMongoURI(),
58
+ dbname: process.env.PROSOPO_DATABASE_NAME,
59
+ authSource: process.env.PROSOPO_DATABASE_AUTH_SOURCE
60
+ },
61
+ staging: {
62
+ type: _prosopo_types.DatabaseTypes.enum.provider,
63
+ endpoint: getMongoURI(),
64
+ dbname: process.env.PROSOPO_DATABASE_NAME,
65
+ authSource: process.env.PROSOPO_DATABASE_AUTH_SOURCE
66
+ },
67
+ production: {
68
+ type: _prosopo_types.DatabaseTypes.enum.provider,
69
+ endpoint: getMongoURI(),
70
+ dbname: process.env.PROSOPO_DATABASE_NAME,
71
+ authSource: process.env.PROSOPO_DATABASE_AUTH_SOURCE
72
+ }
73
+ },
74
+ server: {
75
+ baseURL: process.env.PROSOPO_API_BASE_URL || "http://localhost",
76
+ port: process.env.PROSOPO_API_PORT ? Number.parseInt(process.env.PROSOPO_API_PORT) : 9229
77
+ },
78
+ captchaSolutions: captchaSolutionsConfig,
79
+ captchas: captchaServeConfig,
80
+ penalties: _prosopo_types.FrictionlessPenalties.parse({
81
+ PENALTY_OLD_TIMESTAMP: process.env.PENALTY_OLD_TIMESTAMP,
82
+ PENALTY_ACCESS_RULE: process.env.PENALTY_ACCESS_RULE,
83
+ PENALTY_UNVERIFIED_HOST: process.env.PENALTY_UNVERIFIED_HOST
84
+ }),
85
+ mongoEventsUri: process.env.PROSOPO_MONGO_EVENTS_URI || "",
86
+ mongoCaptchaUri: process.env.PROSOPO_MONGO_CAPTCHA_URI || "",
87
+ mongoClientUri: process.env.PROSOPO_MONGO_CLIENT_URI || "",
88
+ redisConnection: {
89
+ url: process.env.REDIS_CONNECTION_URL || "",
90
+ password: process.env.REDIS_CONNECTION_PASSWORD || ""
91
+ },
92
+ rateLimits: require_RateLimiter.getRateLimitConfig(),
93
+ proxyCount: process.env.PROSOPO_PROXY_COUNT ? Number.parseInt(process.env.PROSOPO_PROXY_COUNT) : 0,
94
+ scheduledTasks: {
95
+ captchaScheduler: { schedule: process.env.CAPTCHA_STORAGE_SCHEDULE },
96
+ clientListScheduler: { schedule: process.env.CLIENT_LIST_SCHEDULE },
97
+ clientEntropyScheduler: { schedule: process.env.CLIENT_ENTROPY_SCHEDULE },
98
+ spamEmailDomainsScheduler: { schedule: process.env.SPAM_EMAIL_DOMAINS_SCHEDULE }
99
+ },
100
+ lRules: getLRules(),
101
+ spamEmailDomainsUrls: getSpamEmailDomainsUrls(),
102
+ authAccount: {
103
+ address: require_process_env.getAddress(admin),
104
+ password: require_process_env.getPassword(admin),
105
+ secret: require_process_env.getSecret(admin)
106
+ },
107
+ ipApi: {
108
+ apiKey: process.env.PROSOPO_IPAPI_KEY,
109
+ baseUrl: process.env.PROSOPO_IPAPI_URL
110
+ },
111
+ maxmindDbPath: process.env.MAXMIND_DB_PATH,
112
+ dnsServers: getDnsServers()
113
+ });
139
114
  }
140
- module.exports = getConfig;
115
+ //#endregion
116
+ exports.default = getConfig;
@@ -1,63 +1,54 @@
1
- "use strict";
2
- const fs = require("node:fs");
3
- const dotenv = require("@prosopo/dotenv");
4
- const env = require("@prosopo/env");
5
- const logger = require("@prosopo/logger");
6
- const start = require("./start.cjs");
7
- const log = logger.getLogger(logger.LogLevel.enum.info, "cli");
8
- class ReloadingAPI {
9
- constructor(envPath, config, pair, authAccount, processedArgs) {
10
- this._envPath = envPath;
11
- this._config = config;
12
- this._pair = pair;
13
- this._authAccount = authAccount;
14
- this._processedArgs = processedArgs;
15
- this._restarting = false;
16
- }
17
- get env() {
18
- if (!this._env) {
19
- throw new Error("Environment not initialized. Call start() first.");
20
- }
21
- return this._env;
22
- }
23
- async start(reloadEnv = false) {
24
- log.info(() => ({ msg: "Starting API" }));
25
- dotenv.loadEnv();
26
- if (!this._env || reloadEnv) {
27
- this._env = new env.ProviderEnvironment(
28
- this._config,
29
- this._pair,
30
- this._authAccount
31
- );
32
- }
33
- await this.env.isReady();
34
- this.api = await start.start(this.env, !!this._processedArgs.adminApi);
35
- if (process.env.NODE_ENV === "development") {
36
- this._envWatcher = await this._watchEnv();
37
- }
38
- }
39
- async stop() {
40
- log.info(() => ({ msg: "Stopping API" }));
41
- return new Promise((resolve) => {
42
- if (this.api) {
43
- this.api.close(resolve);
44
- }
45
- });
46
- }
47
- async _watchEnv() {
48
- return fs.watch(this._envPath, async () => {
49
- log.info(() => ({
50
- data: { restarting: this._restarting },
51
- msg: "env file change detected. Restarting"
52
- }));
53
- if (!this._restarting) {
54
- this._restarting = true;
55
- await this.stop();
56
- dotenv.loadEnv();
57
- await this.start(true);
58
- this._restarting = false;
59
- }
60
- });
61
- }
62
- }
63
- module.exports = ReloadingAPI;
1
+ const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
+ const require_start = require("./start.cjs");
3
+ let _prosopo_logger = require("@prosopo/logger");
4
+ let _prosopo_env = require("@prosopo/env");
5
+ let node_fs = require("node:fs");
6
+ node_fs = require_runtime.__toESM(node_fs, 1);
7
+ let _prosopo_dotenv = require("@prosopo/dotenv");
8
+ //#region src/reloader.ts
9
+ var log = (0, _prosopo_logger.getLogger)(_prosopo_logger.LogLevel.enum.info, "cli");
10
+ var ReloadingAPI = class {
11
+ constructor(envPath, config, pair, authAccount, processedArgs) {
12
+ this._envPath = envPath;
13
+ this._config = config;
14
+ this._pair = pair;
15
+ this._authAccount = authAccount;
16
+ this._processedArgs = processedArgs;
17
+ this._restarting = false;
18
+ }
19
+ get env() {
20
+ if (!this._env) throw new Error("Environment not initialized. Call start() first.");
21
+ return this._env;
22
+ }
23
+ async start(reloadEnv = false) {
24
+ log.info(() => ({ msg: "Starting API" }));
25
+ (0, _prosopo_dotenv.loadEnv)();
26
+ if (!this._env || reloadEnv) this._env = new _prosopo_env.ProviderEnvironment(this._config, this._pair, this._authAccount);
27
+ await this.env.isReady();
28
+ this.api = await require_start.start(this.env, !!this._processedArgs.adminApi);
29
+ if (process.env.NODE_ENV === "development") this._envWatcher = await this._watchEnv();
30
+ }
31
+ async stop() {
32
+ log.info(() => ({ msg: "Stopping API" }));
33
+ return new Promise((resolve) => {
34
+ if (this.api) this.api.close(resolve);
35
+ });
36
+ }
37
+ async _watchEnv() {
38
+ return node_fs.default.watch(this._envPath, async () => {
39
+ log.info(() => ({
40
+ data: { restarting: this._restarting },
41
+ msg: "env file change detected. Restarting"
42
+ }));
43
+ if (!this._restarting) {
44
+ this._restarting = true;
45
+ await this.stop();
46
+ (0, _prosopo_dotenv.loadEnv)();
47
+ await this.start(true);
48
+ this._restarting = false;
49
+ }
50
+ });
51
+ }
52
+ };
53
+ //#endregion
54
+ exports.default = ReloadingAPI;
@@ -1,83 +1,61 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const dotenv = require("@prosopo/dotenv");
4
- const env = require("@prosopo/env");
5
- const keyring = require("@prosopo/keyring");
6
- const provider = require("@prosopo/provider");
7
- const process_env = require("./process.env.cjs");
8
- const prosopo_config = require("./prosopo.config.cjs");
9
- async function start(env$1, admin, port) {
10
- if (!env$1) {
11
- dotenv.loadEnv();
12
- process_env.getDB();
13
- const secret = process_env.getSecret();
14
- const config = prosopo_config(void 0, {
15
- solved: { count: 2 },
16
- unsolved: { count: 0 }
17
- });
18
- const pair = keyring.getPair(secret);
19
- let authAccount;
20
- if (config.authAccount) {
21
- authAccount = keyring.getPair(void 0, config.authAccount.address);
22
- }
23
- env$1 = new env.ProviderEnvironment(config, pair, authAccount);
24
- } else {
25
- env$1.logger.debug(() => ({
26
- msg: "Env already defined",
27
- data: {
28
- config: env$1?.config
29
- }
30
- }));
31
- }
32
- await env$1.isReady();
33
- env$1.cleanup();
34
- const maintenanceMode = process.env.MAINTENANCE_MODE?.toLowerCase() === "true";
35
- if (env$1.pair && !maintenanceMode) {
36
- const cronScheduleStorage = env$1.config.scheduledTasks?.captchaScheduler?.schedule;
37
- if (cronScheduleStorage) {
38
- provider.storeCaptchasExternally(env$1.pair, cronScheduleStorage, env$1.config).catch(
39
- (err) => {
40
- console.error("Failed to start scheduler:", err);
41
- }
42
- );
43
- }
44
- const cronScheduleClient = env$1.config.scheduledTasks?.clientListScheduler?.schedule;
45
- if (cronScheduleClient) {
46
- provider.getClientList(env$1.pair, cronScheduleClient, env$1.config).catch((err) => {
47
- env$1.logger.error(() => ({
48
- msg: "Failed to start client list scheduler",
49
- err,
50
- context: { failedFuncName: provider.getClientList.name }
51
- }));
52
- });
53
- }
54
- const cronClientEntropySetter = env$1.config.scheduledTasks?.clientEntropyScheduler?.schedule;
55
- if (cronClientEntropySetter) {
56
- provider.setClientEntropy(env$1.pair, cronClientEntropySetter, env$1.config).catch(
57
- (err) => {
58
- env$1.logger.error(() => ({
59
- msg: "Failed to start client entropy scheduler",
60
- err,
61
- context: { failedFuncName: provider.setClientEntropy.name }
62
- }));
63
- }
64
- );
65
- }
66
- const cronSpamEmailDomains = env$1.config.scheduledTasks?.spamEmailDomainsScheduler?.schedule;
67
- if (cronSpamEmailDomains) {
68
- provider.updateSpamEmailDomainsScheduler(
69
- env$1.pair,
70
- cronSpamEmailDomains,
71
- env$1.config
72
- ).catch((err) => {
73
- env$1.logger.error(() => ({
74
- msg: "Failed to start spam email domains scheduler",
75
- err,
76
- context: { failedFuncName: provider.updateSpamEmailDomainsScheduler.name }
77
- }));
78
- });
79
- }
80
- }
81
- return provider.startProviderApi(env$1, admin, port);
1
+ const require_process_env = require("./process.env.cjs");
2
+ const require_prosopo_config = require("./prosopo.config.cjs");
3
+ let _prosopo_env = require("@prosopo/env");
4
+ let _prosopo_provider = require("@prosopo/provider");
5
+ let _prosopo_dotenv = require("@prosopo/dotenv");
6
+ let _prosopo_keyring = require("@prosopo/keyring");
7
+ //#region src/start.ts
8
+ async function start(env, admin, port) {
9
+ if (!env) {
10
+ (0, _prosopo_dotenv.loadEnv)();
11
+ require_process_env.getDB();
12
+ const secret = require_process_env.getSecret();
13
+ const config = require_prosopo_config.default(void 0, {
14
+ solved: { count: 2 },
15
+ unsolved: { count: 0 }
16
+ });
17
+ const pair = (0, _prosopo_keyring.getPair)(secret);
18
+ let authAccount;
19
+ if (config.authAccount) authAccount = (0, _prosopo_keyring.getPair)(void 0, config.authAccount.address);
20
+ env = new _prosopo_env.ProviderEnvironment(config, pair, authAccount);
21
+ } else env.logger.debug(() => ({
22
+ msg: "Env already defined",
23
+ data: { config: env?.config }
24
+ }));
25
+ await env.isReady();
26
+ env.cleanup();
27
+ const maintenanceMode = process.env.MAINTENANCE_MODE?.toLowerCase() === "true";
28
+ if (env.pair && !maintenanceMode) {
29
+ const cronScheduleStorage = env.config.scheduledTasks?.captchaScheduler?.schedule;
30
+ if (cronScheduleStorage) (0, _prosopo_provider.storeCaptchasExternally)(env.pair, cronScheduleStorage, env.config).catch((err) => {
31
+ console.error("Failed to start scheduler:", err);
32
+ });
33
+ const cronScheduleClient = env.config.scheduledTasks?.clientListScheduler?.schedule;
34
+ if (cronScheduleClient) (0, _prosopo_provider.getClientList)(env.pair, cronScheduleClient, env.config).catch((err) => {
35
+ env.logger.error(() => ({
36
+ msg: "Failed to start client list scheduler",
37
+ err,
38
+ context: { failedFuncName: _prosopo_provider.getClientList.name }
39
+ }));
40
+ });
41
+ const cronClientEntropySetter = env.config.scheduledTasks?.clientEntropyScheduler?.schedule;
42
+ if (cronClientEntropySetter) (0, _prosopo_provider.setClientEntropy)(env.pair, cronClientEntropySetter, env.config).catch((err) => {
43
+ env.logger.error(() => ({
44
+ msg: "Failed to start client entropy scheduler",
45
+ err,
46
+ context: { failedFuncName: _prosopo_provider.setClientEntropy.name }
47
+ }));
48
+ });
49
+ const cronSpamEmailDomains = env.config.scheduledTasks?.spamEmailDomainsScheduler?.schedule;
50
+ if (cronSpamEmailDomains) (0, _prosopo_provider.updateSpamEmailDomainsScheduler)(env.pair, cronSpamEmailDomains, env.config).catch((err) => {
51
+ env.logger.error(() => ({
52
+ msg: "Failed to start spam email domains scheduler",
53
+ err,
54
+ context: { failedFuncName: _prosopo_provider.updateSpamEmailDomainsScheduler.name }
55
+ }));
56
+ });
57
+ }
58
+ return (0, _prosopo_provider.startProviderApi)(env, admin, port);
82
59
  }
60
+ //#endregion
83
61
  exports.start = start;
package/dist/cli.js CHANGED
@@ -1,43 +1,33 @@
1
+ import { processArgs } from "./argv.js";
2
+ import getConfig from "./prosopo.config.js";
3
+ import ReloadingAPI from "./reloader.js";
4
+ import { LogLevel, getLogger } from "@prosopo/logger";
5
+ import { isMain } from "@prosopo/util";
1
6
  import process from "node:process";
2
7
  import { loadEnv } from "@prosopo/dotenv";
3
8
  import { getPair } from "@prosopo/keyring";
4
9
  import { loadI18next } from "@prosopo/locale";
5
- import { getLogger, LogLevel } from "@prosopo/logger";
6
- import { isMain } from "@prosopo/util";
7
- import { processArgs } from "./argv.js";
8
- import getConfig from "./prosopo.config.js";
9
- import ReloadingAPI from "./reloader.js";
10
- const log = getLogger(LogLevel.enum.info, "cli");
10
+ //#region src/cli.ts
11
+ var log = getLogger(LogLevel.enum.info, "cli");
11
12
  async function main() {
12
- const envPath = loadEnv();
13
- const config = getConfig();
14
- const pair = getPair(config.account.secret, config.account.address);
15
- const authAccount = getPair(
16
- config.authAccount.secret,
17
- config.authAccount.address
18
- );
19
- log.info(() => ({ data: { pairAddress: pair.address } }));
20
- const processedArgs = await processArgs(
21
- process.argv,
22
- pair,
23
- authAccount,
24
- config
25
- );
26
- log.info(() => ({ data: { cliArgs: processedArgs } }));
27
- if (processedArgs.api) {
28
- await new ReloadingAPI(envPath, config, pair, authAccount, processedArgs).start().then(() => {
29
- log.info(() => ({ msg: "Reloading API started..." }));
30
- });
31
- } else {
32
- process.exit(0);
33
- }
34
- }
35
- if (isMain(import.meta.url, "provider")) {
36
- loadI18next(true).then(() => {
37
- main().then(() => {
38
- log.info(() => ({ msg: "Running main process..." }));
39
- }).catch((error) => {
40
- log.error(() => ({ err: error }));
41
- });
42
- });
13
+ const envPath = loadEnv();
14
+ const config = getConfig();
15
+ const pair = getPair(config.account.secret, config.account.address);
16
+ const authAccount = getPair(config.authAccount.secret, config.authAccount.address);
17
+ log.info(() => ({ data: { pairAddress: pair.address } }));
18
+ const processedArgs = await processArgs(process.argv, pair, authAccount, config);
19
+ log.info(() => ({ data: { cliArgs: processedArgs } }));
20
+ if (processedArgs.api) await new ReloadingAPI(envPath, config, pair, authAccount, processedArgs).start().then(() => {
21
+ log.info(() => ({ msg: "Reloading API started..." }));
22
+ });
23
+ else process.exit(0);
43
24
  }
25
+ if (isMain(import.meta.url, "provider")) loadI18next(true).then(() => {
26
+ main().then(() => {
27
+ log.info(() => ({ msg: "Running main process..." }));
28
+ }).catch((error) => {
29
+ log.error(() => ({ err: error }));
30
+ });
31
+ });
32
+ //#endregion
33
+ export {};
@@ -1,29 +1,27 @@
1
+ import { LogLevel, getLogger } from "@prosopo/logger";
1
2
  import { ProviderEnvironment } from "@prosopo/env";
2
- import { getLogger, LogLevel } from "@prosopo/logger";
3
3
  import { Tasks } from "@prosopo/provider";
4
- const commandEnsureExternalIndexes = (pair, config, cmdArgs) => {
5
- const logger = cmdArgs?.logger || getLogger(LogLevel.enum.info, "cli.ensure_external_indexes");
6
- return {
7
- command: "ensure_external_indexes",
8
- describe: "Ensure indexes for external database",
9
- handler: async () => {
10
- try {
11
- const env = new ProviderEnvironment(config, pair);
12
- await env.isReady();
13
- const tasks = new Tasks(env);
14
- if (!env.config.mongoCaptchaUri) {
15
- throw new Error("mongoCaptchaUri not set in config");
16
- }
17
- await tasks.clientTaskManager.getCaptchaDB(env.config.mongoCaptchaUri).ensureIndexes().catch((err) => {
18
- env.logger.error(() => ({ err }));
19
- });
20
- } catch (err) {
21
- logger.error(() => ({ err }));
22
- }
23
- },
24
- middlewares: []
25
- };
26
- };
27
- export {
28
- commandEnsureExternalIndexes as default
4
+ //#region src/commands/ensureExternalIndexes.ts
5
+ var ensureExternalIndexes_default = (pair, config, cmdArgs) => {
6
+ const logger = cmdArgs?.logger || getLogger(LogLevel.enum.info, "cli.ensure_external_indexes");
7
+ return {
8
+ command: "ensure_external_indexes",
9
+ describe: "Ensure indexes for external database",
10
+ handler: async () => {
11
+ try {
12
+ const env = new ProviderEnvironment(config, pair);
13
+ await env.isReady();
14
+ const tasks = new Tasks(env);
15
+ if (!env.config.mongoCaptchaUri) throw new Error("mongoCaptchaUri not set in config");
16
+ await tasks.clientTaskManager.getCaptchaDB(env.config.mongoCaptchaUri).ensureIndexes().catch((err) => {
17
+ env.logger.error(() => ({ err }));
18
+ });
19
+ } catch (err) {
20
+ logger.error(() => ({ err }));
21
+ }
22
+ },
23
+ middlewares: []
24
+ };
29
25
  };
26
+ //#endregion
27
+ export { ensureExternalIndexes_default as default };