@prosopo/cli 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/argv.cjs +25 -0
- package/dist/cjs/cli.cjs +37 -0
- package/dist/cjs/commands/batchCommit.cjs +42 -0
- package/dist/cjs/commands/calculateCaptchaSolutions.cjs +32 -0
- package/dist/cjs/commands/dappAccounts.cjs +25 -0
- package/dist/cjs/commands/dappDetails.cjs +30 -0
- package/dist/cjs/commands/dappRegister.cjs +46 -0
- package/dist/cjs/commands/dappUpdate.cjs +48 -0
- package/dist/cjs/commands/index.cjs +30 -0
- package/dist/cjs/commands/providerAccounts.cjs +24 -0
- package/dist/cjs/commands/providerDataset.cjs +41 -0
- package/dist/cjs/commands/providerDeregister.cjs +29 -0
- package/dist/cjs/commands/providerDetails.cjs +31 -0
- package/dist/cjs/commands/providerRegister.cjs +74 -0
- package/dist/cjs/commands/providerSetDataset.cjs +34 -0
- package/dist/cjs/commands/providerUpdate.cjs +67 -0
- package/dist/cjs/commands/validators.cjs +59 -0
- package/dist/cjs/commands/version.cjs +14 -0
- package/dist/cjs/env.cjs +26 -0
- package/dist/cjs/files.cjs +38 -0
- package/dist/cjs/index.cjs +23 -0
- package/dist/cjs/process.env.cjs +29 -0
- package/dist/cjs/prosopo.config.cjs +79 -0
- package/dist/cjs/start.cjs +60 -0
- package/package.json +16 -18
- package/vite.cjs.config.ts +6 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const common = require("@prosopo/common");
|
|
4
|
+
require("./commands/index.cjs");
|
|
5
|
+
const helpers = require("yargs/helpers");
|
|
6
|
+
const yargs = require("yargs");
|
|
7
|
+
const providerRegister = require("./commands/providerRegister.cjs");
|
|
8
|
+
const providerUpdate = require("./commands/providerUpdate.cjs");
|
|
9
|
+
const providerDeregister = require("./commands/providerDeregister.cjs");
|
|
10
|
+
const providerSetDataset = require("./commands/providerSetDataset.cjs");
|
|
11
|
+
const dappRegister = require("./commands/dappRegister.cjs");
|
|
12
|
+
const dappUpdate = require("./commands/dappUpdate.cjs");
|
|
13
|
+
const providerAccounts = require("./commands/providerAccounts.cjs");
|
|
14
|
+
const dappAccounts = require("./commands/dappAccounts.cjs");
|
|
15
|
+
const providerDetails = require("./commands/providerDetails.cjs");
|
|
16
|
+
const providerDataset = require("./commands/providerDataset.cjs");
|
|
17
|
+
const dappDetails = require("./commands/dappDetails.cjs");
|
|
18
|
+
const calculateCaptchaSolutions = require("./commands/calculateCaptchaSolutions.cjs");
|
|
19
|
+
const batchCommit = require("./commands/batchCommit.cjs");
|
|
20
|
+
const version = require("./commands/version.cjs");
|
|
21
|
+
function processArgs(args, pair, config) {
|
|
22
|
+
const logger = common.getLogger(common.LogLevel.enum.info, "CLI");
|
|
23
|
+
return yargs(helpers.hideBin(args)).usage("Usage: $0 [global options] <command> [options]").option("api", { demand: false, default: false, type: "boolean" }).command(providerRegister(pair, config, { logger })).command(providerUpdate(pair, config, { logger })).command(providerDeregister(pair, config, { logger })).command(providerSetDataset(pair, config, { logger })).command(dappRegister(pair, config, { logger })).command(dappUpdate(pair, config, { logger })).command(providerAccounts(pair, config, { logger })).command(dappAccounts(pair, config, { logger })).command(providerDetails(pair, config, { logger })).command(providerDataset(pair, config, { logger })).command(dappDetails(pair, config, { logger })).command(calculateCaptchaSolutions(pair, config, { logger })).command(batchCommit(pair, config, { logger })).command(version(pair, config, { logger })).parse();
|
|
24
|
+
}
|
|
25
|
+
exports.processArgs = processArgs;
|
package/dist/cjs/cli.cjs
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const common = require("@prosopo/common");
|
|
3
|
+
const env$1 = require("@prosopo/env");
|
|
4
|
+
const process_env = require("./process.env.cjs");
|
|
5
|
+
const env = require("./env.cjs");
|
|
6
|
+
const argv = require("./argv.cjs");
|
|
7
|
+
const start = require("./start.cjs");
|
|
8
|
+
const esMain = require("es-main");
|
|
9
|
+
const process = require("process");
|
|
10
|
+
var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
|
|
11
|
+
const log = common.getLogger(common.LogLevel.enum.info, "cli");
|
|
12
|
+
async function main() {
|
|
13
|
+
env.loadEnv();
|
|
14
|
+
const secret = process_env.getSecret();
|
|
15
|
+
const ss58Format = process_env.getSs58Format();
|
|
16
|
+
const pairType = process_env.getPairType();
|
|
17
|
+
const config = process_env.getConfig();
|
|
18
|
+
const pair = await common.getPair(pairType, ss58Format, secret);
|
|
19
|
+
log.info(`Pair address: ${pair.address}`);
|
|
20
|
+
log.info(`Contract address: ${process.env.PROTOCOL_CONTRACT_ADDRESS}`);
|
|
21
|
+
const processedArgs = await argv.processArgs(process.argv, pair, config);
|
|
22
|
+
if (processedArgs.api) {
|
|
23
|
+
const env2 = new env$1.ProviderEnvironment(pair, config);
|
|
24
|
+
await env2.isReady();
|
|
25
|
+
log.info("Starting API");
|
|
26
|
+
await start.start(env2);
|
|
27
|
+
} else {
|
|
28
|
+
process.exit(0);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (esMain({ url: typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.src || new URL("cli.cjs", document.baseURI).href })) {
|
|
32
|
+
main().then(() => {
|
|
33
|
+
log.info("Running main process...");
|
|
34
|
+
}).catch((error) => {
|
|
35
|
+
log.error(error);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const provider = require("@prosopo/provider");
|
|
3
|
+
const common = require("@prosopo/common");
|
|
4
|
+
const env = require("@prosopo/env");
|
|
5
|
+
const validators = require("./validators.cjs");
|
|
6
|
+
const commandBatchCommit = (pair, config, cmdArgs) => {
|
|
7
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.batch_commit");
|
|
8
|
+
return {
|
|
9
|
+
command: "batch_commit",
|
|
10
|
+
describe: "Batch commit user solutions to contract",
|
|
11
|
+
builder: (yargs) => {
|
|
12
|
+
return yargs.option("schedule", {
|
|
13
|
+
type: "string",
|
|
14
|
+
demand: false,
|
|
15
|
+
desc: "A Recurring schedule expression"
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
handler: async (argv) => {
|
|
19
|
+
const env$1 = new env.ProviderEnvironment(pair, config);
|
|
20
|
+
await env$1.isReady();
|
|
21
|
+
if (argv.schedule) {
|
|
22
|
+
throw new common.ProsopoEnvError("GENERAL.NOT_IMPLEMENTED");
|
|
23
|
+
} else {
|
|
24
|
+
if (env$1.db) {
|
|
25
|
+
const batchCommitter = new provider.BatchCommitmentsTask(
|
|
26
|
+
env$1.config.batchCommit,
|
|
27
|
+
env$1.getContractInterface(),
|
|
28
|
+
env$1.db,
|
|
29
|
+
0n,
|
|
30
|
+
env$1.logger
|
|
31
|
+
);
|
|
32
|
+
const result = await batchCommitter.run();
|
|
33
|
+
logger.info(`Batch commit complete: ${result}`);
|
|
34
|
+
} else {
|
|
35
|
+
logger.error("No database configured");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
middlewares: [validators.validateScheduleExpression]
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
module.exports = commandBatchCommit;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const provider = require("@prosopo/provider");
|
|
3
|
+
const common = require("@prosopo/common");
|
|
4
|
+
const env = require("@prosopo/env");
|
|
5
|
+
const validators = require("./validators.cjs");
|
|
6
|
+
const commandCalculateCaptchaSolutions = (pair, config, cmdArgs) => {
|
|
7
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.calculate_captcha_solutions");
|
|
8
|
+
return {
|
|
9
|
+
command: "calculate_captcha_solutions",
|
|
10
|
+
describe: "Calculate captcha solutions",
|
|
11
|
+
builder: (yargs) => {
|
|
12
|
+
return yargs.option("schedule", {
|
|
13
|
+
type: "string",
|
|
14
|
+
demand: false,
|
|
15
|
+
desc: "A Recurring schedule expression"
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
handler: async (argv) => {
|
|
19
|
+
const env$1 = new env.ProviderEnvironment(pair, config);
|
|
20
|
+
await env$1.isReady();
|
|
21
|
+
if (argv.schedule) {
|
|
22
|
+
throw new common.ProsopoEnvError("GENERAL.NOT_IMPLEMENTED");
|
|
23
|
+
} else {
|
|
24
|
+
const calculateSolutionsTask = new provider.CalculateSolutionsTask(env$1);
|
|
25
|
+
const result = await calculateSolutionsTask.run();
|
|
26
|
+
logger.info(`Updated ${result} captcha solutions`);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
middlewares: [validators.validateScheduleExpression]
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
module.exports = commandCalculateCaptchaSolutions;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const common = require("@prosopo/common");
|
|
3
|
+
const env = require("@prosopo/env");
|
|
4
|
+
const provider = require("@prosopo/provider");
|
|
5
|
+
const commandDappAccounts = (pair, config, cmdArgs) => {
|
|
6
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.dapp_accounts");
|
|
7
|
+
return {
|
|
8
|
+
command: "dapp_accounts",
|
|
9
|
+
describe: "List all dapp accounts",
|
|
10
|
+
builder: (yargs) => yargs,
|
|
11
|
+
handler: async (argv) => {
|
|
12
|
+
try {
|
|
13
|
+
const env$1 = new env.ProviderEnvironment(pair, config);
|
|
14
|
+
await env$1.isReady();
|
|
15
|
+
const tasks = new provider.Tasks(env$1);
|
|
16
|
+
const result = await tasks.contract.contract["dappAccounts"]();
|
|
17
|
+
logger.info(JSON.stringify(result, null, 2));
|
|
18
|
+
} catch (err) {
|
|
19
|
+
logger.error(err);
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
middlewares: []
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
module.exports = commandDappAccounts;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const common = require("@prosopo/common");
|
|
3
|
+
const env = require("@prosopo/env");
|
|
4
|
+
const provider = require("@prosopo/provider");
|
|
5
|
+
const validators = require("./validators.cjs");
|
|
6
|
+
const commandDappDetails = (pair, config, cmdArgs) => {
|
|
7
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.dapp_details");
|
|
8
|
+
return {
|
|
9
|
+
command: "dapp_details",
|
|
10
|
+
describe: "List details of a single Dapp",
|
|
11
|
+
builder: (yargs) => yargs.option("address", {
|
|
12
|
+
type: "string",
|
|
13
|
+
demand: true,
|
|
14
|
+
desc: "The AccountId of the Dapp"
|
|
15
|
+
}),
|
|
16
|
+
handler: async (argv) => {
|
|
17
|
+
try {
|
|
18
|
+
const env$1 = new env.ProviderEnvironment(pair, config);
|
|
19
|
+
await env$1.isReady();
|
|
20
|
+
const tasks = new provider.Tasks(env$1);
|
|
21
|
+
const result = (await tasks.contract.query.getDapp(validators.validateAddress(argv).address)).value.unwrap().unwrap();
|
|
22
|
+
logger.info(JSON.stringify(result, null, 2));
|
|
23
|
+
} catch (err) {
|
|
24
|
+
logger.error(err);
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
middlewares: [validators.validateAddress]
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
module.exports = commandDappDetails;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const types = require("@prosopo/types");
|
|
3
|
+
const common = require("@prosopo/common");
|
|
4
|
+
const env = require("@prosopo/env");
|
|
5
|
+
const provider = require("@prosopo/provider");
|
|
6
|
+
const util = require("@prosopo/util");
|
|
7
|
+
const validators = require("./validators.cjs");
|
|
8
|
+
const contract = require("@prosopo/contract");
|
|
9
|
+
const z = require("zod");
|
|
10
|
+
const commandDappRegister = (pair, config, cmdArgs) => {
|
|
11
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.dapp_register");
|
|
12
|
+
return {
|
|
13
|
+
command: "dapp_register",
|
|
14
|
+
describe: "Register a Dapp",
|
|
15
|
+
builder: (yargs) => yargs.option("contract", {
|
|
16
|
+
type: "string",
|
|
17
|
+
demand: true,
|
|
18
|
+
desc: "The AccountId of the Dapp"
|
|
19
|
+
}).option("payee", {
|
|
20
|
+
type: "string",
|
|
21
|
+
demand: true,
|
|
22
|
+
desc: "The person who receives the fee (`Provider` or `Dapp`)"
|
|
23
|
+
}),
|
|
24
|
+
handler: async (argv) => {
|
|
25
|
+
try {
|
|
26
|
+
const env$1 = new env.ProviderEnvironment(pair, config);
|
|
27
|
+
await env$1.isReady();
|
|
28
|
+
const tasks = new provider.Tasks(env$1);
|
|
29
|
+
const dappRegisterArgs = [
|
|
30
|
+
z.z.string().parse(argv.contract),
|
|
31
|
+
util.get(types.DappPayee, z.z.string().parse(argv.payee)),
|
|
32
|
+
{
|
|
33
|
+
value: 0
|
|
34
|
+
}
|
|
35
|
+
];
|
|
36
|
+
await contract.wrapQuery(tasks.contract.query.dappRegister, tasks.contract.query)(...dappRegisterArgs);
|
|
37
|
+
const result = await tasks.contract.tx.dappRegister(...dappRegisterArgs);
|
|
38
|
+
logger.info(JSON.stringify(result, null, 2));
|
|
39
|
+
} catch (err) {
|
|
40
|
+
logger.error(err);
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
middlewares: [validators.validateContract, validators.validatePayee]
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
module.exports = commandDappRegister;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const types = require("@prosopo/types");
|
|
3
|
+
const common = require("@prosopo/common");
|
|
4
|
+
const env = require("@prosopo/env");
|
|
5
|
+
const provider = require("@prosopo/provider");
|
|
6
|
+
const util = require("@prosopo/util");
|
|
7
|
+
const validators = require("./validators.cjs");
|
|
8
|
+
const contract = require("@prosopo/contract");
|
|
9
|
+
const z = require("zod");
|
|
10
|
+
const commandDappUpdate = (pair, config, cmdArgs) => {
|
|
11
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.dapp_update");
|
|
12
|
+
return {
|
|
13
|
+
command: "dapp_update",
|
|
14
|
+
describe: "Register a Dapp",
|
|
15
|
+
builder: (yargs) => yargs.option("contract", {
|
|
16
|
+
type: "string",
|
|
17
|
+
demand: true,
|
|
18
|
+
desc: "The AccountId of the Dapp"
|
|
19
|
+
}).option("payee", {
|
|
20
|
+
type: "string",
|
|
21
|
+
demand: true,
|
|
22
|
+
desc: "The person who receives the fee (`Provider` or `Dapp`)"
|
|
23
|
+
}),
|
|
24
|
+
handler: async (argv) => {
|
|
25
|
+
try {
|
|
26
|
+
const env$1 = new env.ProviderEnvironment(pair, config);
|
|
27
|
+
await env$1.isReady();
|
|
28
|
+
const tasks = new provider.Tasks(env$1);
|
|
29
|
+
const stakeThreshold = (await tasks.contract.query.getDappStakeThreshold({})).value.unwrap();
|
|
30
|
+
const dappRegisterArgs = [
|
|
31
|
+
z.z.string().parse(argv.contract),
|
|
32
|
+
util.get(types.DappPayee, z.z.string().parse(argv.payee)),
|
|
33
|
+
z.z.string().parse(argv.owner),
|
|
34
|
+
{
|
|
35
|
+
value: stakeThreshold.toNumber()
|
|
36
|
+
}
|
|
37
|
+
];
|
|
38
|
+
await contract.wrapQuery(tasks.contract.query.dappUpdate, tasks.contract.query)(...dappRegisterArgs);
|
|
39
|
+
const result = await tasks.contract.tx.dappUpdate(...dappRegisterArgs);
|
|
40
|
+
logger.info(JSON.stringify(result, null, 2));
|
|
41
|
+
} catch (err) {
|
|
42
|
+
logger.error(err);
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
middlewares: [validators.validateContract, validators.validatePayee]
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
module.exports = commandDappUpdate;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const batchCommit = require("./batchCommit.cjs");
|
|
4
|
+
const calculateCaptchaSolutions = require("./calculateCaptchaSolutions.cjs");
|
|
5
|
+
const dappAccounts = require("./dappAccounts.cjs");
|
|
6
|
+
const dappDetails = require("./dappDetails.cjs");
|
|
7
|
+
const dappUpdate = require("./dappUpdate.cjs");
|
|
8
|
+
const dappRegister = require("./dappRegister.cjs");
|
|
9
|
+
const providerAccounts = require("./providerAccounts.cjs");
|
|
10
|
+
const providerDataset = require("./providerDataset.cjs");
|
|
11
|
+
const providerDetails = require("./providerDetails.cjs");
|
|
12
|
+
const providerDeregister = require("./providerDeregister.cjs");
|
|
13
|
+
const providerRegister = require("./providerRegister.cjs");
|
|
14
|
+
const providerSetDataset = require("./providerSetDataset.cjs");
|
|
15
|
+
const providerUpdate = require("./providerUpdate.cjs");
|
|
16
|
+
const version = require("./version.cjs");
|
|
17
|
+
exports.commandBatchCommit = batchCommit;
|
|
18
|
+
exports.commandCalculateCaptchaSolutions = calculateCaptchaSolutions;
|
|
19
|
+
exports.commandDappAccounts = dappAccounts;
|
|
20
|
+
exports.commandDappDetails = dappDetails;
|
|
21
|
+
exports.commandDappUpdate = dappUpdate;
|
|
22
|
+
exports.commandDappRegister = dappRegister;
|
|
23
|
+
exports.commandProviderAccounts = providerAccounts;
|
|
24
|
+
exports.commandProviderDataset = providerDataset;
|
|
25
|
+
exports.commandProviderDetails = providerDetails;
|
|
26
|
+
exports.commandProviderDeregister = providerDeregister;
|
|
27
|
+
exports.commandProviderRegister = providerRegister;
|
|
28
|
+
exports.commandProviderSetDataset = providerSetDataset;
|
|
29
|
+
exports.commandProviderUpdate = providerUpdate;
|
|
30
|
+
exports.commandVersion = version;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const common = require("@prosopo/common");
|
|
3
|
+
const env = require("@prosopo/env");
|
|
4
|
+
const provider = require("@prosopo/provider");
|
|
5
|
+
const commandProviderAccounts = (pair, config, cmdArgs) => {
|
|
6
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.provider_accounts");
|
|
7
|
+
return {
|
|
8
|
+
command: "provider_accounts",
|
|
9
|
+
describe: "List all provider accounts",
|
|
10
|
+
builder: (yargs) => yargs,
|
|
11
|
+
handler: async (argv) => {
|
|
12
|
+
try {
|
|
13
|
+
const env$1 = new env.ProviderEnvironment(pair, config);
|
|
14
|
+
await env$1.isReady();
|
|
15
|
+
const tasks = new provider.Tasks(env$1);
|
|
16
|
+
const result = await tasks.contract.contract["providerAccounts"]();
|
|
17
|
+
logger.info(JSON.stringify(result, null, 2));
|
|
18
|
+
} catch (err) {
|
|
19
|
+
logger.error(err);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
module.exports = commandProviderAccounts;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const common = require("@prosopo/common");
|
|
3
|
+
const env = require("@prosopo/env");
|
|
4
|
+
const provider = require("@prosopo/provider");
|
|
5
|
+
const files = require("../files.cjs");
|
|
6
|
+
const z = require("zod");
|
|
7
|
+
const commandProviderDataset = (pair, config, cmdArgs) => {
|
|
8
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.provider_dataset");
|
|
9
|
+
return {
|
|
10
|
+
command: "provider_dataset",
|
|
11
|
+
describe: "Exports a dataset from the provider database",
|
|
12
|
+
builder: (yargs) => yargs.option("dataset-id", {
|
|
13
|
+
type: "string",
|
|
14
|
+
demand: false,
|
|
15
|
+
desc: "The dataset ID to export"
|
|
16
|
+
}).option("file", {
|
|
17
|
+
type: "string",
|
|
18
|
+
demand: true,
|
|
19
|
+
desc: "The file path to export the dataset to"
|
|
20
|
+
}),
|
|
21
|
+
handler: async (argv) => {
|
|
22
|
+
try {
|
|
23
|
+
const env$1 = new env.ProviderEnvironment(pair, config);
|
|
24
|
+
await env$1.isReady();
|
|
25
|
+
const tasks = new provider.Tasks(env$1);
|
|
26
|
+
let datasetId = z.z.string().parse(argv.datasetId);
|
|
27
|
+
if (datasetId === void 0) {
|
|
28
|
+
const providerAddress = env$1.config.account.address;
|
|
29
|
+
const provider2 = (await tasks.contract.query.getProvider(providerAddress)).value.unwrap().unwrap();
|
|
30
|
+
logger.info(`Getting dataset ID from provider ${providerAddress}`);
|
|
31
|
+
datasetId = provider2.datasetId.toString();
|
|
32
|
+
}
|
|
33
|
+
const result = await tasks.getProviderDataset(datasetId);
|
|
34
|
+
await files.writeJSONFile(z.z.string().parse(argv.file), result);
|
|
35
|
+
} catch (err) {
|
|
36
|
+
logger.error(err);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
module.exports = commandProviderDataset;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const common = require("@prosopo/common");
|
|
3
|
+
const env = require("@prosopo/env");
|
|
4
|
+
const provider = require("@prosopo/provider");
|
|
5
|
+
const validators = require("./validators.cjs");
|
|
6
|
+
const commandProviderDeregister = (pair, config, cmdArgs) => {
|
|
7
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.provider_deregister");
|
|
8
|
+
return {
|
|
9
|
+
command: "provider_deregister",
|
|
10
|
+
describe: "Deregister a Provider",
|
|
11
|
+
builder: (yargs) => yargs.option("address", {
|
|
12
|
+
type: "string",
|
|
13
|
+
demand: true,
|
|
14
|
+
desc: "The AccountId of the Provider"
|
|
15
|
+
}),
|
|
16
|
+
handler: async (argv) => {
|
|
17
|
+
try {
|
|
18
|
+
const env$1 = new env.ProviderEnvironment(pair, config);
|
|
19
|
+
await env$1.isReady();
|
|
20
|
+
const tasks = new provider.Tasks(env$1);
|
|
21
|
+
throw new common.ProsopoEnvError("GENERAL.NOT_IMPLEMENTED");
|
|
22
|
+
} catch (err) {
|
|
23
|
+
logger.error(err);
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
middlewares: [validators.validateAddress]
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
module.exports = commandProviderDeregister;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const common = require("@prosopo/common");
|
|
3
|
+
const env = require("@prosopo/env");
|
|
4
|
+
const provider = require("@prosopo/provider");
|
|
5
|
+
const validators = require("./validators.cjs");
|
|
6
|
+
const z = require("zod");
|
|
7
|
+
const commandProviderDetails = (pair, config, cmdArgs) => {
|
|
8
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.provider_details");
|
|
9
|
+
return {
|
|
10
|
+
command: "provider_details",
|
|
11
|
+
describe: "List details of a single Provider",
|
|
12
|
+
builder: (yargs) => yargs.option("address", {
|
|
13
|
+
type: "string",
|
|
14
|
+
demand: true,
|
|
15
|
+
desc: "The AccountId of the Provider"
|
|
16
|
+
}),
|
|
17
|
+
handler: async (argv) => {
|
|
18
|
+
try {
|
|
19
|
+
const env$1 = new env.ProviderEnvironment(pair, config);
|
|
20
|
+
await env$1.isReady();
|
|
21
|
+
const tasks = new provider.Tasks(env$1);
|
|
22
|
+
const result = (await tasks.contract.query.getProvider(z.z.string().parse(argv.address), {})).value.unwrap().unwrap();
|
|
23
|
+
logger.info(JSON.stringify(result, null, 2));
|
|
24
|
+
} catch (err) {
|
|
25
|
+
logger.error(err);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
middlewares: [validators.validateAddress]
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
module.exports = commandProviderDetails;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const z = require("zod");
|
|
3
|
+
const common = require("@prosopo/common");
|
|
4
|
+
const types = require("@prosopo/types");
|
|
5
|
+
const env = require("@prosopo/env");
|
|
6
|
+
const provider = require("@prosopo/provider");
|
|
7
|
+
const util = require("@polkadot/util");
|
|
8
|
+
const validators = require("./validators.cjs");
|
|
9
|
+
const contract = require("@prosopo/contract");
|
|
10
|
+
function _interopNamespaceDefault(e) {
|
|
11
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
12
|
+
if (e) {
|
|
13
|
+
for (const k in e) {
|
|
14
|
+
if (k !== "default") {
|
|
15
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
16
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: () => e[k]
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
n.default = e;
|
|
24
|
+
return Object.freeze(n);
|
|
25
|
+
}
|
|
26
|
+
const z__namespace = /* @__PURE__ */ _interopNamespaceDefault(z);
|
|
27
|
+
const providerRegisterArgsParser = z__namespace.object({
|
|
28
|
+
url: z__namespace.string(),
|
|
29
|
+
fee: z__namespace.number(),
|
|
30
|
+
payee: z__namespace.nativeEnum(types.Payee)
|
|
31
|
+
});
|
|
32
|
+
const commandProviderRegister = (pair, config, cmdArgs) => {
|
|
33
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.provider_register");
|
|
34
|
+
return {
|
|
35
|
+
command: "provider_register",
|
|
36
|
+
describe: "Register a Provider",
|
|
37
|
+
builder: (yargs) => yargs.option("url", {
|
|
38
|
+
type: "string",
|
|
39
|
+
demand: true,
|
|
40
|
+
desc: "The provider service origin (URI)"
|
|
41
|
+
}).option("fee", {
|
|
42
|
+
type: "number",
|
|
43
|
+
demand: true,
|
|
44
|
+
desc: "The fee to pay per solved captcha"
|
|
45
|
+
}).option("payee", {
|
|
46
|
+
type: "string",
|
|
47
|
+
demand: true,
|
|
48
|
+
desc: "The person who receives the fee (`Provider` or `Dapp`)"
|
|
49
|
+
}),
|
|
50
|
+
handler: async (argv) => {
|
|
51
|
+
try {
|
|
52
|
+
const parsedArgs = providerRegisterArgsParser.parse(argv);
|
|
53
|
+
const env$1 = new env.ProviderEnvironment(pair, config);
|
|
54
|
+
await env$1.isReady();
|
|
55
|
+
const tasks = new provider.Tasks(env$1);
|
|
56
|
+
const providerRegisterArgs = [
|
|
57
|
+
Array.from(util.stringToU8a(parsedArgs.url)),
|
|
58
|
+
parsedArgs.fee,
|
|
59
|
+
parsedArgs.payee,
|
|
60
|
+
{
|
|
61
|
+
value: 0
|
|
62
|
+
}
|
|
63
|
+
];
|
|
64
|
+
await contract.wrapQuery(tasks.contract.query.providerRegister, tasks.contract.query)(...providerRegisterArgs);
|
|
65
|
+
const result = await tasks.contract.tx.providerRegister(...providerRegisterArgs);
|
|
66
|
+
logger.info(JSON.stringify(result, null, 2));
|
|
67
|
+
} catch (err) {
|
|
68
|
+
logger.error(err);
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
middlewares: [validators.validatePayee, validators.validateFee]
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
module.exports = commandProviderRegister;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const common = require("@prosopo/common");
|
|
3
|
+
const env = require("@prosopo/env");
|
|
4
|
+
const provider = require("@prosopo/provider");
|
|
5
|
+
const files = require("../files.cjs");
|
|
6
|
+
const z = require("zod");
|
|
7
|
+
const commandProviderSetDataset = (pair, config, cmdArgs) => {
|
|
8
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.provider_set_data_set");
|
|
9
|
+
return {
|
|
10
|
+
command: "provider_set_data_set",
|
|
11
|
+
describe: "Add a dataset as a Provider",
|
|
12
|
+
builder: (yargs) => yargs.option("file", {
|
|
13
|
+
type: "string",
|
|
14
|
+
demand: true,
|
|
15
|
+
desc: "The file path of a JSON dataset file"
|
|
16
|
+
}),
|
|
17
|
+
handler: async (argv) => {
|
|
18
|
+
try {
|
|
19
|
+
const env$1 = new env.ProviderEnvironment(pair, config);
|
|
20
|
+
await env$1.isReady();
|
|
21
|
+
const tasks = new provider.Tasks(env$1);
|
|
22
|
+
const file = z.z.string().parse(argv.file);
|
|
23
|
+
const jsonFile = files.loadJSONFile(file, logger);
|
|
24
|
+
logger.info(`Loaded JSON from ${file}`);
|
|
25
|
+
const result = await tasks.providerSetDatasetFromFile(jsonFile);
|
|
26
|
+
logger.info(JSON.stringify(result, null, 2));
|
|
27
|
+
} catch (err) {
|
|
28
|
+
logger.error(err);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
middlewares: []
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
module.exports = commandProviderSetDataset;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const common = require("@prosopo/common");
|
|
3
|
+
const types = require("@prosopo/types");
|
|
4
|
+
const env = require("@prosopo/env");
|
|
5
|
+
const provider = require("@prosopo/provider");
|
|
6
|
+
const validators = require("./validators.cjs");
|
|
7
|
+
const contract = require("@prosopo/contract");
|
|
8
|
+
const z = require("zod");
|
|
9
|
+
const commandProviderUpdate = (pair, config, cmdArgs) => {
|
|
10
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.provider_update");
|
|
11
|
+
return {
|
|
12
|
+
command: "provider_update",
|
|
13
|
+
describe: "Update a Provider",
|
|
14
|
+
builder: (yargs) => yargs.option("url", {
|
|
15
|
+
type: "string",
|
|
16
|
+
demand: false,
|
|
17
|
+
desc: "The provider service origin (URI)"
|
|
18
|
+
}).option("fee", {
|
|
19
|
+
type: "number",
|
|
20
|
+
demand: false,
|
|
21
|
+
desc: "The fee to pay per solved captcha"
|
|
22
|
+
}).option("payee", {
|
|
23
|
+
type: "string",
|
|
24
|
+
demand: false,
|
|
25
|
+
desc: "The person who receives the fee (`Provider` or `Dapp`)"
|
|
26
|
+
}).option("value", {
|
|
27
|
+
type: "number",
|
|
28
|
+
demand: false,
|
|
29
|
+
desc: "The value to stake in the contract"
|
|
30
|
+
}),
|
|
31
|
+
handler: async (argv) => {
|
|
32
|
+
try {
|
|
33
|
+
const env$1 = new env.ProviderEnvironment(pair, config);
|
|
34
|
+
await env$1.isReady();
|
|
35
|
+
const tasks = new provider.Tasks(env$1);
|
|
36
|
+
const { url, fee, payee, value, address } = z.z.object({
|
|
37
|
+
url: z.z.string().optional(),
|
|
38
|
+
fee: z.z.number().optional(),
|
|
39
|
+
payee: z.z.nativeEnum(types.Payee).optional(),
|
|
40
|
+
value: z.z.number().optional(),
|
|
41
|
+
address: z.z.string()
|
|
42
|
+
}).parse(argv);
|
|
43
|
+
const provider$1 = (await tasks.contract.query.getProvider(address, {})).value.unwrap().unwrap();
|
|
44
|
+
if (provider$1 && (url || fee || payee || value)) {
|
|
45
|
+
const urlConverted = url ? Array.from(new common.UrlConverter().encode(url.toString())) : provider$1.url;
|
|
46
|
+
await contract.wrapQuery(tasks.contract.query.providerUpdate, tasks.contract.query)(
|
|
47
|
+
urlConverted,
|
|
48
|
+
fee || provider$1.fee,
|
|
49
|
+
payee || provider$1.payee,
|
|
50
|
+
{ value: value || 0 }
|
|
51
|
+
);
|
|
52
|
+
const result = await tasks.contract.tx.providerUpdate(
|
|
53
|
+
urlConverted,
|
|
54
|
+
fee || provider$1.fee,
|
|
55
|
+
payee || provider$1.payee,
|
|
56
|
+
{ value: value || 0 }
|
|
57
|
+
);
|
|
58
|
+
logger.info(JSON.stringify(result, null, 2));
|
|
59
|
+
}
|
|
60
|
+
} catch (err) {
|
|
61
|
+
logger.error(err);
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
middlewares: [validators.validateAddress, validators.validatePayee]
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
module.exports = commandProviderUpdate;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const types = require("@prosopo/types");
|
|
4
|
+
const common = require("@prosopo/common");
|
|
5
|
+
const provider = require("@prosopo/provider");
|
|
6
|
+
const util = require("@prosopo/util");
|
|
7
|
+
const z = require("zod");
|
|
8
|
+
const parser = require("cron-parser");
|
|
9
|
+
const validateAddress = (argv) => {
|
|
10
|
+
const address = provider.encodeStringAddress(argv.address);
|
|
11
|
+
return { address };
|
|
12
|
+
};
|
|
13
|
+
const validateContract = (argv) => {
|
|
14
|
+
const address = provider.encodeStringAddress(argv.contract);
|
|
15
|
+
return { address };
|
|
16
|
+
};
|
|
17
|
+
const validatePayee = (argv) => {
|
|
18
|
+
try {
|
|
19
|
+
if (!argv.payee)
|
|
20
|
+
return;
|
|
21
|
+
const _ = util.lodash();
|
|
22
|
+
const payeeArg = _.capitalize(z.z.string().parse(argv.payee));
|
|
23
|
+
const payee = types.PayeeSchema.parse(payeeArg);
|
|
24
|
+
return { payee };
|
|
25
|
+
} catch (error) {
|
|
26
|
+
throw new common.ProsopoEnvError(error, "CLI.PARAMETER_ERROR", {}, [argv.payee]);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const validateValue = (argv) => {
|
|
30
|
+
if (typeof argv.value !== "number") {
|
|
31
|
+
throw new common.ProsopoEnvError("CLI.PARAMETER_ERROR", validateValue.name, {}, argv.value);
|
|
32
|
+
}
|
|
33
|
+
const value = argv.value;
|
|
34
|
+
return { value };
|
|
35
|
+
};
|
|
36
|
+
const validateFee = (argv) => {
|
|
37
|
+
if (typeof argv.fee !== "number") {
|
|
38
|
+
throw new common.ProsopoEnvError("CLI.PARAMETER_ERROR", validateValue.name, {}, argv.fee);
|
|
39
|
+
}
|
|
40
|
+
const fee = argv.fee;
|
|
41
|
+
return { fee };
|
|
42
|
+
};
|
|
43
|
+
const validateScheduleExpression = (argv) => {
|
|
44
|
+
if (typeof argv.schedule === "string") {
|
|
45
|
+
const result = parser.parseString(argv.schedule);
|
|
46
|
+
if (argv.schedule in result.errors) {
|
|
47
|
+
throw new common.ProsopoEnvError("CLI.PARAMETER_ERROR", validateScheduleExpression.name, {}, [argv.schedule]);
|
|
48
|
+
}
|
|
49
|
+
return { schedule: argv.schedule };
|
|
50
|
+
} else {
|
|
51
|
+
return { schedule: null };
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
exports.validateAddress = validateAddress;
|
|
55
|
+
exports.validateContract = validateContract;
|
|
56
|
+
exports.validateFee = validateFee;
|
|
57
|
+
exports.validatePayee = validatePayee;
|
|
58
|
+
exports.validateScheduleExpression = validateScheduleExpression;
|
|
59
|
+
exports.validateValue = validateValue;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const common = require("@prosopo/common");
|
|
3
|
+
const commandVersion = (pair, config, cmdArgs) => {
|
|
4
|
+
const logger = (cmdArgs == null ? void 0 : cmdArgs.logger) || common.getLogger(common.LogLevel.enum.info, "cli.version");
|
|
5
|
+
return {
|
|
6
|
+
command: "version",
|
|
7
|
+
describe: "Return the version of the software",
|
|
8
|
+
handler: async () => {
|
|
9
|
+
const version = JSON.stringify(process.env.PROSOPO_PACKAGE_VERSION) || "dev";
|
|
10
|
+
logger.info(`Version: ${version}`);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
module.exports = commandVersion;
|
package/dist/cjs/env.cjs
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const url = require("url");
|
|
4
|
+
const dotenv = require("dotenv");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
|
|
7
|
+
const __filename$1 = url.fileURLToPath(typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.src || new URL("env.cjs", document.baseURI).href);
|
|
8
|
+
const __dirname$1 = path.dirname(__filename$1);
|
|
9
|
+
function getEnv() {
|
|
10
|
+
if (process.env.NODE_ENV) {
|
|
11
|
+
return process.env.NODE_ENV.replace(/[^0-9a-z_]/gi, "");
|
|
12
|
+
}
|
|
13
|
+
return "development";
|
|
14
|
+
}
|
|
15
|
+
function loadEnv(rootDir, filename, filePath) {
|
|
16
|
+
const envPath = getEnvFile(path.resolve(rootDir || "."), filename, filePath);
|
|
17
|
+
const args = { path: envPath };
|
|
18
|
+
dotenv.config(args);
|
|
19
|
+
}
|
|
20
|
+
function getEnvFile(rootDir, filename = ".env", filepath = path.join(__dirname$1, "../..")) {
|
|
21
|
+
const env = getEnv();
|
|
22
|
+
return path.join(rootDir || filepath, `${filename}.${env}`);
|
|
23
|
+
}
|
|
24
|
+
exports.getEnv = getEnv;
|
|
25
|
+
exports.getEnvFile = getEnvFile;
|
|
26
|
+
exports.loadEnv = loadEnv;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const common = require("@prosopo/common");
|
|
4
|
+
const stream = require("stream");
|
|
5
|
+
const fs = require("fs");
|
|
6
|
+
function loadJSONFile(filePath, logger) {
|
|
7
|
+
try {
|
|
8
|
+
return JSON.parse(fs.readFileSync(filePath, "utf8"));
|
|
9
|
+
} catch (err) {
|
|
10
|
+
throw new common.ProsopoEnvError(err, "GENERAL.JSON_LOAD_FAILED", {}, filePath);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function writeJSONFile(filePath, jsonData) {
|
|
14
|
+
return new Promise((resolve, reject) => {
|
|
15
|
+
const writeStream = fs.createWriteStream(filePath);
|
|
16
|
+
writeStream.setDefaultEncoding("utf-8");
|
|
17
|
+
writeStream.on("finish", () => {
|
|
18
|
+
resolve(true);
|
|
19
|
+
});
|
|
20
|
+
writeStream.on("error", (err) => {
|
|
21
|
+
reject(err);
|
|
22
|
+
});
|
|
23
|
+
const readable = stream.Readable.from(JSON.stringify(jsonData));
|
|
24
|
+
readable.pipe(writeStream);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
async function readFile(filePath) {
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
fs.readFile(filePath, (err, data) => {
|
|
30
|
+
if (err)
|
|
31
|
+
reject(err);
|
|
32
|
+
resolve(data);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
exports.loadJSONFile = loadJSONFile;
|
|
37
|
+
exports.readFile = readFile;
|
|
38
|
+
exports.writeJSONFile = writeJSONFile;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const argv = require("./argv.cjs");
|
|
4
|
+
require("./cli.cjs");
|
|
5
|
+
const start = require("./start.cjs");
|
|
6
|
+
const process_env = require("./process.env.cjs");
|
|
7
|
+
const files = require("./files.cjs");
|
|
8
|
+
const prosopo_config = require("./prosopo.config.cjs");
|
|
9
|
+
const env = require("./env.cjs");
|
|
10
|
+
exports.processArgs = argv.processArgs;
|
|
11
|
+
exports.handleErrors = start.handleErrors;
|
|
12
|
+
exports.start = start.start;
|
|
13
|
+
exports.getConfig = process_env.getConfig;
|
|
14
|
+
exports.getPairType = process_env.getPairType;
|
|
15
|
+
exports.getSecret = process_env.getSecret;
|
|
16
|
+
exports.getSs58Format = process_env.getSs58Format;
|
|
17
|
+
exports.loadJSONFile = files.loadJSONFile;
|
|
18
|
+
exports.readFile = files.readFile;
|
|
19
|
+
exports.writeJSONFile = files.writeJSONFile;
|
|
20
|
+
exports.defaultConfig = prosopo_config;
|
|
21
|
+
exports.getEnv = env.getEnv;
|
|
22
|
+
exports.getEnvFile = env.getEnvFile;
|
|
23
|
+
exports.loadEnv = env.loadEnv;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const common = require("@prosopo/common");
|
|
4
|
+
const prosopo_config = require("./prosopo.config.cjs");
|
|
5
|
+
function getSs58Format() {
|
|
6
|
+
return parseInt(process.env.SS58_FORMAT || "") || 42;
|
|
7
|
+
}
|
|
8
|
+
function getPairType() {
|
|
9
|
+
return process.env.PAIR_TYPE || "sr25519";
|
|
10
|
+
}
|
|
11
|
+
function getSecret(who) {
|
|
12
|
+
if (!who) {
|
|
13
|
+
who = "PROVIDER";
|
|
14
|
+
} else {
|
|
15
|
+
who = who.toUpperCase();
|
|
16
|
+
}
|
|
17
|
+
const secret = process.env[`${who}_MNEMONIC`] || process.env[`${who}_SEED`] || process.env[`${who}_URI`] || process.env[`${who}_JSON`];
|
|
18
|
+
if (!secret) {
|
|
19
|
+
throw new common.ProsopoEnvError("GENERAL.NO_MNEMONIC_OR_SEED");
|
|
20
|
+
}
|
|
21
|
+
return secret;
|
|
22
|
+
}
|
|
23
|
+
function getConfig() {
|
|
24
|
+
return prosopo_config();
|
|
25
|
+
}
|
|
26
|
+
exports.getConfig = getConfig;
|
|
27
|
+
exports.getPairType = getPairType;
|
|
28
|
+
exports.getSecret = getSecret;
|
|
29
|
+
exports.getSs58Format = getSs58Format;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const types = require("@prosopo/types");
|
|
3
|
+
const common = require("@prosopo/common");
|
|
4
|
+
function getMongoURI() {
|
|
5
|
+
const protocol = process.env.DATABASE_PROTOCOL || "mongodb";
|
|
6
|
+
const mongoSrv = protocol === "mongodb+srv";
|
|
7
|
+
const password = process.env.DATABASE_PASSWORD || "";
|
|
8
|
+
const username = process.env.DATABASE_USERNAME || "";
|
|
9
|
+
const host = process.env.DATABASE_HOST || "localhost";
|
|
10
|
+
const port = mongoSrv ? "" : `:${process.env.DATABASE_PORT ? process.env.DATABASE_PORT : 27017}`;
|
|
11
|
+
const retries = mongoSrv ? "?retryWrites=true&w=majority" : "";
|
|
12
|
+
return `${protocol}://${username}:${password}@${host}${port}/${retries}`;
|
|
13
|
+
}
|
|
14
|
+
const prosopoConfig = () => ({
|
|
15
|
+
logLevel: common.getLogLevel(),
|
|
16
|
+
defaultEnvironment: process.env.DEFAULT_ENVIRONMENT || types.EnvironmentTypesSchema.enum.development,
|
|
17
|
+
account: {
|
|
18
|
+
address: process.env.PROVIDER_ADDRESS || "",
|
|
19
|
+
password: process.env.PROVIDER_ACCOUNT_PASSWORD || void 0
|
|
20
|
+
},
|
|
21
|
+
networks: {
|
|
22
|
+
development: {
|
|
23
|
+
endpoint: process.env.SUBSTRATE_NODE_URL || "http://localhost:9944",
|
|
24
|
+
// TODO accept array of endpoints. WsProvider takes array and has failover.
|
|
25
|
+
contract: {
|
|
26
|
+
address: process.env.PROTOCOL_CONTRACT_ADDRESS || "",
|
|
27
|
+
name: "prosopo"
|
|
28
|
+
},
|
|
29
|
+
accounts: ["//Alice", "//Bob", "//Charlie", "//Dave", "//Eve", "//Ferdie"]
|
|
30
|
+
},
|
|
31
|
+
rococo: {
|
|
32
|
+
endpoint: process.env.SUBSTRATE_NODE_URL || "wss://rococo-contracts-rpc.polkadot.io:443",
|
|
33
|
+
contract: {
|
|
34
|
+
address: process.env.PROTOCOL_CONTRACT_ADDRESS || "",
|
|
35
|
+
name: "prosopo"
|
|
36
|
+
},
|
|
37
|
+
accounts: []
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
captchas: {
|
|
41
|
+
solved: {
|
|
42
|
+
count: 1
|
|
43
|
+
// TODO add env var
|
|
44
|
+
},
|
|
45
|
+
unsolved: {
|
|
46
|
+
count: 1
|
|
47
|
+
// TODO add env var
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
captchaSolutions: {
|
|
51
|
+
captchaBlockRecency: 10,
|
|
52
|
+
// TODO add env var
|
|
53
|
+
requiredNumberOfSolutions: 3,
|
|
54
|
+
// TODO add env var
|
|
55
|
+
solutionWinningPercentage: 80,
|
|
56
|
+
// TODO add env var
|
|
57
|
+
captchaFilePath: "../../data/captchas_big.json"
|
|
58
|
+
// TODO add env var
|
|
59
|
+
},
|
|
60
|
+
database: {
|
|
61
|
+
development: {
|
|
62
|
+
type: types.DatabaseTypes.enum.mongo,
|
|
63
|
+
endpoint: getMongoURI(),
|
|
64
|
+
dbname: process.env.DATABASE_NAME || "",
|
|
65
|
+
authSource: "admin"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
batchCommit: {
|
|
69
|
+
interval: 300,
|
|
70
|
+
// TODO add env var
|
|
71
|
+
maxBatchExtrinsicPercentage: 59
|
|
72
|
+
// TODO add env var
|
|
73
|
+
},
|
|
74
|
+
server: {
|
|
75
|
+
baseURL: process.env.API_BASE_URL || "",
|
|
76
|
+
port: process.env.API_PORT ? parseInt(process.env.API_PORT) : 9229
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
module.exports = prosopoConfig;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const common = require("@prosopo/common");
|
|
4
|
+
const env$1 = require("@prosopo/env");
|
|
5
|
+
const process_env = require("./process.env.cjs");
|
|
6
|
+
const env = require("./env.cjs");
|
|
7
|
+
const provider = require("@prosopo/provider");
|
|
8
|
+
const cors = require("cors");
|
|
9
|
+
const esMain = require("es-main");
|
|
10
|
+
const express = require("express");
|
|
11
|
+
var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
|
|
12
|
+
let apiAppSrv;
|
|
13
|
+
const handleErrors = (err, req, res, next) => {
|
|
14
|
+
let message = err.message;
|
|
15
|
+
try {
|
|
16
|
+
message = JSON.parse(err.message);
|
|
17
|
+
} catch {
|
|
18
|
+
console.debug("Invalid JSON error message");
|
|
19
|
+
}
|
|
20
|
+
return res.status(err.code).json({
|
|
21
|
+
message,
|
|
22
|
+
name: err.name
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
function startApi(env2) {
|
|
26
|
+
env2.logger.info(`Starting Prosopo API`);
|
|
27
|
+
const apiApp = express();
|
|
28
|
+
const apiPort = env2.config.server.port;
|
|
29
|
+
apiApp.use(cors());
|
|
30
|
+
apiApp.use(express.json());
|
|
31
|
+
apiApp.use(common.i18nMiddleware({}));
|
|
32
|
+
apiApp.use(provider.prosopoRouter(env2));
|
|
33
|
+
apiApp.use(handleErrors);
|
|
34
|
+
apiAppSrv = apiApp.listen(apiPort, () => {
|
|
35
|
+
env2.logger.info(`Prosopo app listening at http://localhost:${apiPort}`);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async function start(env$2) {
|
|
39
|
+
if (!env$2) {
|
|
40
|
+
env.loadEnv();
|
|
41
|
+
const ss58Format = process_env.getSs58Format();
|
|
42
|
+
const pairType = process_env.getPairType();
|
|
43
|
+
const secret = process_env.getSecret();
|
|
44
|
+
const config = process_env.getConfig();
|
|
45
|
+
const pair = await common.getPair(pairType, ss58Format, secret);
|
|
46
|
+
env$2 = new env$1.ProviderEnvironment(pair, config);
|
|
47
|
+
}
|
|
48
|
+
await env$2.isReady();
|
|
49
|
+
startApi(env$2);
|
|
50
|
+
}
|
|
51
|
+
function stop() {
|
|
52
|
+
apiAppSrv.close();
|
|
53
|
+
}
|
|
54
|
+
if (esMain({ url: typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.src || new URL("start.cjs", document.baseURI).href })) {
|
|
55
|
+
start().catch((error) => {
|
|
56
|
+
console.error(error);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
exports.handleErrors = handleErrors;
|
|
60
|
+
exports.start = start;
|
package/package.json
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prosopo/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "CLI for Prosopo Provider",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./dist/index.js",
|
|
10
|
+
"require": "./dist/cjs/index.cjs"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
7
13
|
"scripts": {
|
|
8
14
|
"clean": "tsc --build --clean",
|
|
9
15
|
"build": "tsc --build --verbose",
|
|
16
|
+
"build:cjs": "npx vite --config vite.cjs.config.ts build",
|
|
10
17
|
"build:dev": "npm run build && vite build --mode development",
|
|
11
18
|
"build:prod": "npm run build && vite build --mode production",
|
|
12
19
|
"cli": "node ./dist/cli.js",
|
|
@@ -16,30 +23,21 @@
|
|
|
16
23
|
},
|
|
17
24
|
"dependencies": {
|
|
18
25
|
"@polkadot/util-crypto": "12.3.2",
|
|
19
|
-
"@prosopo/common": "0.2.
|
|
20
|
-
"@prosopo/contract": "0.2.
|
|
21
|
-
"@prosopo/env": "0.2.
|
|
22
|
-
"@prosopo/provider": "0.2.
|
|
23
|
-
"@prosopo/types": "0.2.
|
|
24
|
-
"@prosopo/util": "0.2.
|
|
26
|
+
"@prosopo/common": "0.2.2",
|
|
27
|
+
"@prosopo/contract": "0.2.2",
|
|
28
|
+
"@prosopo/env": "0.2.2",
|
|
29
|
+
"@prosopo/provider": "0.2.2",
|
|
30
|
+
"@prosopo/types": "0.2.2",
|
|
31
|
+
"@prosopo/util": "0.2.2",
|
|
25
32
|
"cors": "^2.8.5",
|
|
26
33
|
"dotenv": "^16.0.1",
|
|
27
34
|
"es-main": "^1.2.0"
|
|
28
35
|
},
|
|
29
36
|
"devDependencies": {
|
|
30
|
-
"@prosopo/config": "0.2.
|
|
31
|
-
"@rollup/plugin-node-resolve": "^15.1.0",
|
|
32
|
-
"@rollup/plugin-wasm": "^6.1.3",
|
|
37
|
+
"@prosopo/config": "0.2.2",
|
|
33
38
|
"@types/cors": "^2.8.14",
|
|
34
|
-
"rollup-plugin-import-css": "^3.3.4",
|
|
35
|
-
"rollup-plugin-natives": "^0.7.6",
|
|
36
39
|
"tslib": "^2.6.2",
|
|
37
|
-
"typescript": "^5.1.6"
|
|
38
|
-
"vite-plugin-dts": "^3.5.2",
|
|
39
|
-
"vite-plugin-node": "^3.0.2",
|
|
40
|
-
"vite-tsconfig-paths": "^4.2.0",
|
|
41
|
-
"webpack-merge": "^5.9.0",
|
|
42
|
-
"webpack-node-externals": "^3.0.0"
|
|
40
|
+
"typescript": "^5.1.6"
|
|
43
41
|
},
|
|
44
42
|
"author": "Prosopo",
|
|
45
43
|
"license": "Apache-2.0",
|