@prosopo/server 0.1.14

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.
@@ -0,0 +1,32 @@
1
+ import { ApiPromise } from '@polkadot/api';
2
+ import { ContractAbi, NetworkConfig, ProsopoServerConfig } from '@prosopo/types';
3
+ import { Keyring } from '@polkadot/keyring';
4
+ import { KeyringPair } from '@polkadot/keyring/types';
5
+ import { Logger } from '@prosopo/common';
6
+ import { ProcaptchaOutput } from '@prosopo/types';
7
+ import { ProsopoCaptchaContract } from '@prosopo/contract';
8
+ import { ProviderApi } from '@prosopo/api';
9
+ import { WsProvider } from '@polkadot/rpc-provider';
10
+ export declare class ProsopoServer {
11
+ config: ProsopoServerConfig;
12
+ contract: ProsopoCaptchaContract;
13
+ mnemonic: string;
14
+ prosopoContractAddress: string;
15
+ dappContractAddress: string;
16
+ defaultEnvironment: string;
17
+ contractName: string;
18
+ abi: ContractAbi;
19
+ logger: Logger;
20
+ wsProvider: WsProvider;
21
+ keyring: Keyring;
22
+ pair: KeyringPair;
23
+ api: ApiPromise;
24
+ network: NetworkConfig;
25
+ constructor(mnemonic: string, config: ProsopoServerConfig);
26
+ getProviderApi(providerUrl: string): Promise<ProviderApi>;
27
+ isReady(): Promise<void>;
28
+ getSigner(): Promise<void>;
29
+ isVerified(payload: ProcaptchaOutput): Promise<boolean>;
30
+ getContractApi(): Promise<ProsopoCaptchaContract>;
31
+ }
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAkB,MAAM,gBAAgB,CAAA;AAChG,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAY,MAAM,EAAU,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,sBAAsB,EAAW,MAAM,mBAAmB,CAAA;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,qBAAa,aAAa;IACtB,MAAM,EAAE,mBAAmB,CAAA;IAC3B,QAAQ,EAAE,sBAAsB,CAAA;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,WAAW,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,WAAW,CAAA;IACjB,GAAG,EAAE,UAAU,CAAA;IACf,OAAO,EAAE,aAAa,CAAA;gBAEV,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB;IA4B5C,cAAc,CAAC,WAAW,EAAE,MAAM;IAIzC,OAAO;IAUP,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAUnB,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvD,cAAc,IAAI,OAAO,CAAC,sBAAsB,CAAC;CAWjE"}
package/dist/index.js ADDED
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProsopoServer = void 0;
4
+ const api_1 = require("@polkadot/api");
5
+ const keyring_1 = require("@polkadot/keyring");
6
+ const common_1 = require("@prosopo/common");
7
+ const contract_1 = require("@prosopo/contract");
8
+ const common_2 = require("@prosopo/common");
9
+ const api_2 = require("@prosopo/api");
10
+ const rpc_provider_1 = require("@polkadot/rpc-provider");
11
+ class ProsopoServer {
12
+ config;
13
+ contract;
14
+ mnemonic;
15
+ prosopoContractAddress;
16
+ dappContractAddress;
17
+ defaultEnvironment;
18
+ contractName;
19
+ abi;
20
+ logger;
21
+ wsProvider;
22
+ keyring;
23
+ pair;
24
+ api;
25
+ network;
26
+ constructor(mnemonic, config) {
27
+ this.config = config;
28
+ this.mnemonic = mnemonic;
29
+ if (this.config.defaultEnvironment &&
30
+ Object.prototype.hasOwnProperty.call(this.config.networks, this.config.defaultEnvironment)) {
31
+ this.defaultEnvironment = this.config.defaultEnvironment;
32
+ this.network = this.config.networks[this.defaultEnvironment];
33
+ this.wsProvider = new rpc_provider_1.WsProvider(this.config.networks[this.defaultEnvironment].endpoint);
34
+ this.prosopoContractAddress = this.config.networks[this.defaultEnvironment].contract.address;
35
+ this.dappContractAddress = this.config.account.address;
36
+ this.contractName = this.config.networks[this.defaultEnvironment].contract.name;
37
+ this.logger = (0, common_1.logger)(this.config.logLevel, '@prosopo/server');
38
+ this.keyring = new keyring_1.Keyring({
39
+ type: 'sr25519', // TODO get this from the chain
40
+ });
41
+ this.abi = contract_1.abiJson;
42
+ }
43
+ else {
44
+ throw new common_2.ProsopoEnvError('CONFIG.UNKNOWN_ENVIRONMENT', this.constructor.name, {}, this.config.defaultEnvironment);
45
+ }
46
+ }
47
+ async getProviderApi(providerUrl) {
48
+ return new api_2.ProviderApi(this.network, providerUrl, this.config.account.address);
49
+ }
50
+ async isReady() {
51
+ try {
52
+ this.api = await api_1.ApiPromise.create({ provider: this.wsProvider });
53
+ await this.getSigner();
54
+ await this.getContractApi();
55
+ }
56
+ catch (err) {
57
+ throw new common_2.ProsopoEnvError(err, 'GENERAL.ENVIRONMENT_NOT_READY');
58
+ }
59
+ }
60
+ async getSigner() {
61
+ this.api = await api_1.ApiPromise.create({ provider: this.wsProvider });
62
+ await this.api.isReadyOrError;
63
+ const { mnemonic } = this;
64
+ if (!mnemonic) {
65
+ throw new common_2.ProsopoEnvError('CONTRACT.SIGNER_UNDEFINED');
66
+ }
67
+ this.pair = this.keyring.addFromMnemonic(mnemonic);
68
+ }
69
+ async isVerified(payload) {
70
+ const { user, dapp, providerUrl, commitmentId, blockNumber } = payload;
71
+ // first check if the provider was actually chosen at blockNumber
72
+ const contractApi = await this.getContractApi();
73
+ const block = (await this.api.rpc.chain.getBlockHash(blockNumber));
74
+ const getRandomProviderResponse = await this.contract.queryAtBlock(block, 'getRandomActiveProvider', [user, dapp]);
75
+ const providerUrlTrimmed = (0, common_2.trimProviderUrl)(getRandomProviderResponse.provider.url.toString());
76
+ if (providerUrlTrimmed !== providerUrl) {
77
+ return false;
78
+ }
79
+ console.log('providerUrlTrimmed', providerUrlTrimmed, 'commitmentId', commitmentId);
80
+ if (providerUrlTrimmed && commitmentId) {
81
+ const providerApi = await this.getProviderApi(providerUrl);
82
+ const result = await providerApi.verifyDappUser(user, commitmentId);
83
+ console.log(result);
84
+ return result.solutionApproved;
85
+ }
86
+ else {
87
+ return (await contractApi.query.dappOperatorIsHumanUser(user, this.config.solutionThreshold)).value
88
+ .unwrap()
89
+ .unwrap();
90
+ }
91
+ }
92
+ async getContractApi() {
93
+ this.contract = new contract_1.ProsopoCaptchaContract(this.api, this.abi, this.prosopoContractAddress, this.pair, this.contractName, 0);
94
+ return this.contract;
95
+ }
96
+ }
97
+ exports.ProsopoServer = ProsopoServer;
98
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@prosopo/server",
3
+ "version": "0.1.14",
4
+ "description": "NodeJS package for server side communication with the prosopo captcha client",
5
+ "main": "./dist/index.js",
6
+ "scripts": {
7
+ "clean": "tsc --build --clean",
8
+ "build": "tsc --build --verbose",
9
+ "test": "echo \"Error: no test specified\" && exit 1",
10
+ "lint": "npx eslint .",
11
+ "lint:fix": "npx eslint . --fix"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/prosopo/captcha.git"
16
+ },
17
+ "author": "PROSOPO LIMITED",
18
+ "license": "Apache-2.0",
19
+ "bugs": {
20
+ "url": "https://github.com/prosopo/captcha/issues"
21
+ },
22
+ "homepage": "https://github.com/prosopo/captcha#readme",
23
+ "sideEffects": false,
24
+ "dependencies": {
25
+ "@polkadot/api": "10.9.1",
26
+ "@polkadot/keyring": "12.3.2",
27
+ "@polkadot/rpc-provider": "10.9.1",
28
+ "@polkadot/types": "10.9.1",
29
+ "@prosopo/api": "^0.1.14",
30
+ "@prosopo/contract": "^0.1.14",
31
+ "@prosopo/procaptcha": "^0.1.14",
32
+ "@prosopo/types": "^0.1.14"
33
+ },
34
+ "devDependencies": {
35
+ "typescript": "^4.9.4"
36
+ }
37
+ }