@docknetwork/wallet-sdk-wasm 1.5.6 → 1.5.9
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/lib/{account-bf00e5c0.js → account-357ab05d.js} +1 -23
- package/lib/{account-e48dc9b6.js → account-399e6053.js} +1 -23
- package/lib/index.js +0 -9
- package/lib/index.mjs +0 -9
- package/lib/modules/account.js +5 -12
- package/lib/modules/account.mjs +5 -12
- package/lib/modules/accounts.js +4 -11
- package/lib/modules/accounts.mjs +4 -11
- package/lib/modules/network-manager.js +4 -4
- package/lib/modules/network-manager.mjs +4 -4
- package/lib/modules/wallet.js +1 -8
- package/lib/modules/wallet.mjs +1 -8
- package/lib/rpc-server.js +0 -9
- package/lib/rpc-server.mjs +0 -9
- package/lib/services/blockchain/index.js +0 -2
- package/lib/services/blockchain/index.mjs +0 -2
- package/lib/services/blockchain/service.js +33 -74
- package/lib/services/blockchain/service.mjs +34 -75
- package/lib/services/credential/bbs-revocation.js +0 -2
- package/lib/services/credential/bbs-revocation.mjs +0 -2
- package/lib/services/credential/index.js +0 -2
- package/lib/services/credential/index.mjs +0 -2
- package/lib/services/credential/service.js +0 -2
- package/lib/services/credential/service.mjs +0 -2
- package/lib/services/dids/index.js +0 -2
- package/lib/services/dids/index.mjs +0 -2
- package/lib/services/dids/service.js +1 -3
- package/lib/services/dids/service.mjs +1 -3
- package/lib/services/edv/hmac.js +1 -2
- package/lib/services/edv/hmac.mjs +1 -2
- package/lib/services/edv/index.js +1 -3
- package/lib/services/edv/index.mjs +1 -3
- package/lib/services/edv/service-rpc.js +4 -0
- package/lib/services/edv/service-rpc.mjs +4 -0
- package/lib/services/edv/service.js +9 -6
- package/lib/services/edv/service.mjs +9 -5
- package/lib/services/index.js +0 -12
- package/lib/services/index.mjs +0 -12
- package/lib/services/pex/service.js +2 -1
- package/lib/services/pex/service.mjs +2 -1
- package/lib/services/test-utils.js +3 -198
- package/lib/services/test-utils.mjs +4 -194
- package/lib/setup-nodejs.js +0 -9
- package/lib/setup-nodejs.mjs +0 -9
- package/lib/setup-tests.js +0 -9
- package/lib/setup-tests.mjs +0 -9
- package/lib/src/modules/accounts.d.ts +0 -1
- package/lib/src/modules/accounts.d.ts.map +1 -1
- package/lib/src/services/blockchain/service.d.ts +7 -3
- package/lib/src/services/blockchain/service.d.ts.map +1 -1
- package/lib/src/services/edv/hmac.d.ts +1 -1
- package/lib/src/services/edv/hmac.d.ts.map +1 -1
- package/lib/src/services/edv/service.d.ts +3 -1
- package/lib/src/services/edv/service.d.ts.map +1 -1
- package/lib/src/services/pex/service.d.ts.map +1 -1
- package/lib/test/setup-test-state.js +8 -20
- package/lib/test/setup-test-state.mjs +8 -20
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -8
- package/src/modules/accounts.test.js +0 -25
- package/src/modules/accounts.ts +0 -33
- package/src/modules/data-migration.test.js +0 -11
- package/src/modules/network-manager.ts +4 -4
- package/src/modules/wallet.test.js +0 -11
- package/src/modules/wallet.ts +1 -1
- package/src/services/blockchain/index.test.js +4 -15
- package/src/services/blockchain/service.ts +38 -98
- package/src/services/dids/index.test.js +1 -1
- package/src/services/dids/service.ts +1 -1
- package/src/services/edv/hmac.ts +2 -3
- package/src/services/edv/index.test.js +7 -2
- package/src/services/edv/service-rpc.js +4 -0
- package/src/services/edv/service.ts +9 -3
- package/src/services/index.js +0 -4
- package/src/services/pex/service.ts +7 -1
- package/src/services/test-utils.js +0 -178
- package/src/test/setup-test-state.js +1 -3
- package/lib/services/substrate/api-utils.js +0 -85
- package/lib/services/substrate/api-utils.mjs +0 -74
- package/lib/services/substrate/configs.js +0 -30
- package/lib/services/substrate/configs.mjs +0 -21
- package/lib/services/substrate/index.android.js +0 -22
- package/lib/services/substrate/index.android.mjs +0 -18
- package/lib/services/substrate/index.ios.js +0 -22
- package/lib/services/substrate/index.ios.mjs +0 -18
- package/lib/services/substrate/index.js +0 -37
- package/lib/services/substrate/index.mjs +0 -29
- package/lib/services/substrate/service-rpc.js +0 -37
- package/lib/services/substrate/service-rpc.mjs +0 -33
- package/lib/services/substrate/service.js +0 -115
- package/lib/services/substrate/service.mjs +0 -102
- package/lib/services/trust-registry/configs.js +0 -25
- package/lib/services/trust-registry/configs.mjs +0 -16
- package/lib/services/trust-registry/index.android.js +0 -19
- package/lib/services/trust-registry/index.android.mjs +0 -15
- package/lib/services/trust-registry/index.ios.js +0 -19
- package/lib/services/trust-registry/index.ios.mjs +0 -15
- package/lib/services/trust-registry/index.js +0 -33
- package/lib/services/trust-registry/index.mjs +0 -25
- package/lib/services/trust-registry/service-rpc.js +0 -29
- package/lib/services/trust-registry/service-rpc.mjs +0 -25
- package/lib/services/trust-registry/service.js +0 -89
- package/lib/services/trust-registry/service.mjs +0 -85
- package/lib/src/services/substrate/api-utils.d.ts +0 -14
- package/lib/src/services/substrate/api-utils.d.ts.map +0 -1
- package/lib/src/services/substrate/configs.d.ts +0 -16
- package/lib/src/services/substrate/configs.d.ts.map +0 -1
- package/lib/src/services/substrate/index.d.ts +0 -2
- package/lib/src/services/substrate/index.d.ts.map +0 -1
- package/lib/src/services/substrate/service.d.ts +0 -13
- package/lib/src/services/substrate/service.d.ts.map +0 -1
- package/lib/src/services/trust-registry/configs.d.ts +0 -6
- package/lib/src/services/trust-registry/configs.d.ts.map +0 -1
- package/lib/src/services/trust-registry/service.d.ts +0 -25
- package/lib/src/services/trust-registry/service.d.ts.map +0 -1
- package/src/services/substrate/api-utils.test.js +0 -73
- package/src/services/substrate/api-utils.ts +0 -66
- package/src/services/substrate/configs.ts +0 -34
- package/src/services/substrate/index.android.js +0 -3
- package/src/services/substrate/index.ios.js +0 -3
- package/src/services/substrate/index.js +0 -1
- package/src/services/substrate/index.test.js +0 -116
- package/src/services/substrate/service-rpc.js +0 -24
- package/src/services/substrate/service.ts +0 -117
- package/src/services/trust-registry/configs.ts +0 -14
- package/src/services/trust-registry/index.android.js +0 -3
- package/src/services/trust-registry/index.ios.js +0 -3
- package/src/services/trust-registry/index.js +0 -1
- package/src/services/trust-registry/index.test.js +0 -67
- package/src/services/trust-registry/service-rpc.js +0 -15
- package/src/services/trust-registry/service.ts +0 -94
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/substrate/index.js"],"names":[],"mappings":""}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import BigNumber from 'bignumber.js';
|
|
2
|
-
import { GetAccountBalanceParams, TransactionParams } from './configs';
|
|
3
|
-
export declare const FEE_ESTIMATION_BUFFER = 1.1;
|
|
4
|
-
export declare function getFeeWithBuffer(paymentFee: BigNumber): BigNumber;
|
|
5
|
-
export declare class SubstrateService {
|
|
6
|
-
rpcMethods: (((params: GetAccountBalanceParams) => Promise<number>) | ((params: TransactionParams) => Promise<unknown>))[];
|
|
7
|
-
constructor();
|
|
8
|
-
getAccountBalance(params: GetAccountBalanceParams): Promise<number>;
|
|
9
|
-
getFeeAmount(params: TransactionParams): Promise<number>;
|
|
10
|
-
sendTokens(params: TransactionParams): Promise<unknown>;
|
|
11
|
-
}
|
|
12
|
-
export declare const substrateService: SubstrateService;
|
|
13
|
-
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/services/substrate/service.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,cAAc,CAAC;AAKrC,OAAO,EACL,uBAAuB,EAEvB,iBAAiB,EAElB,MAAM,WAAW,CAAC;AAGnB,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,SAAS,aAIrD;AAED,qBAAa,gBAAgB;IAC3B,UAAU,aAUsB,uBAAuB,kCAwC9B,iBAAiB,0BA9CxC;;IAMI,iBAAiB,CAAC,MAAM,EAAE,uBAAuB;IAejD,YAAY,CAAC,MAAM,EAAE,iBAAiB;IAyBtC,UAAU,CAAC,MAAM,EAAE,iBAAiB;CAwC3C;AAED,eAAO,MAAM,gBAAgB,EAAE,gBAAyC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../../../../src/services/trust-registry/configs.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,mBAAmB,CAAC;AAC5C,eAAO,MAAM,UAAU;;;CAStB,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
declare class TrustRegistryService {
|
|
2
|
-
constructor();
|
|
3
|
-
rpcMethods: ((({ schemaId, issuerDID, verifierDID, }: {
|
|
4
|
-
schemaId?: string;
|
|
5
|
-
issuerDID?: string;
|
|
6
|
-
verifierDID?: string;
|
|
7
|
-
}) => Promise<any>) | (({ schemaId, trustRegistryId, issuerDID }: {
|
|
8
|
-
schemaId: any;
|
|
9
|
-
trustRegistryId: any;
|
|
10
|
-
issuerDID: any;
|
|
11
|
-
}) => Promise<any>))[];
|
|
12
|
-
getTrustRegistries({ schemaId, issuerDID, verifierDID, }: {
|
|
13
|
-
schemaId?: string;
|
|
14
|
-
issuerDID?: string;
|
|
15
|
-
verifierDID?: string;
|
|
16
|
-
}): Promise<any>;
|
|
17
|
-
getTrustRegistryVerifiers({ schemaId, trustRegistryId, issuerDID }: {
|
|
18
|
-
schemaId: any;
|
|
19
|
-
trustRegistryId: any;
|
|
20
|
-
issuerDID: any;
|
|
21
|
-
}): Promise<any>;
|
|
22
|
-
}
|
|
23
|
-
export declare const trustRegistryService: TrustRegistryService;
|
|
24
|
-
export {};
|
|
25
|
-
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/services/trust-registry/service.ts"],"names":[],"mappings":"AAaA,cAAM,oBAAoB;;IAIxB,UAAU;mBAUG,MAAM;oBACL,MAAM;sBACJ,MAAM;;;;;2BATpB;IAEI,kBAAkB,CAAC,EACvB,QAAQ,EACR,SAAS,EACT,WAAW,GACZ,EAAE;QACD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;IAoCK,yBAAyB,CAAC,EAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAC;;;;KAAA;CAyBvE;AAED,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import {DOCK_TOKEN_UNIT} from '../../core/format-utils';
|
|
2
|
-
import {TestFixtures} from '../../fixtures';
|
|
3
|
-
import {once} from '../../modules/event-manager';
|
|
4
|
-
import {blockchainService} from '../blockchain/service';
|
|
5
|
-
import {mockDockService, setMockTransactionError} from '../test-utils';
|
|
6
|
-
import {signAndSend} from './api-utils';
|
|
7
|
-
import {substrateService} from './service';
|
|
8
|
-
|
|
9
|
-
describe('ApiUtils', () => {
|
|
10
|
-
let unmockDockService;
|
|
11
|
-
|
|
12
|
-
beforeAll(async () => {
|
|
13
|
-
unmockDockService = await mockDockService();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
describe('signAndSend', () => {
|
|
17
|
-
it('expect to send tokens', async () => {
|
|
18
|
-
const account = TestFixtures.account1.getKeyring();
|
|
19
|
-
blockchainService.dock.setAccount(account);
|
|
20
|
-
const extrinsic = blockchainService.dock.api.tx.balances.transfer(
|
|
21
|
-
TestFixtures.account2.address,
|
|
22
|
-
1,
|
|
23
|
-
);
|
|
24
|
-
setMockTransactionError(null);
|
|
25
|
-
const emitter = signAndSend(account, extrinsic);
|
|
26
|
-
const [result] = await once(emitter, 'done');
|
|
27
|
-
|
|
28
|
-
console.log('tx hash', result);
|
|
29
|
-
|
|
30
|
-
expect(typeof result).toBe('string');
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('expect to get error: Inability to pay fees', async () => {
|
|
34
|
-
const account = TestFixtures.noBalanceAccount.getKeyring();
|
|
35
|
-
blockchainService.dock.setAccount(account);
|
|
36
|
-
const extrinsic = blockchainService.dock.api.tx.balances.transfer(
|
|
37
|
-
TestFixtures.account2.address,
|
|
38
|
-
1,
|
|
39
|
-
);
|
|
40
|
-
const errorMessage =
|
|
41
|
-
'1010: Invalid Transaction: Inability to pay some fees , e.g. account balance too low';
|
|
42
|
-
|
|
43
|
-
setMockTransactionError(errorMessage);
|
|
44
|
-
const emitter = signAndSend(account, extrinsic);
|
|
45
|
-
const error = await once(emitter, 'error');
|
|
46
|
-
|
|
47
|
-
expect(error.message).toBe(errorMessage);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it('expect to get error: Not enough balance', async () => {
|
|
51
|
-
const account = TestFixtures.account1.getKeyring();
|
|
52
|
-
blockchainService.dock.setAccount(account);
|
|
53
|
-
const balance = await substrateService.getAccountBalance({
|
|
54
|
-
address: TestFixtures.account1.address,
|
|
55
|
-
});
|
|
56
|
-
const extrinsic = blockchainService.dock.api.tx.balances.transfer(
|
|
57
|
-
TestFixtures.account2.address,
|
|
58
|
-
balance * 2 * DOCK_TOKEN_UNIT,
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
const errorMessage =
|
|
62
|
-
'balances.InsufficientBalance: Balance too low to send value';
|
|
63
|
-
|
|
64
|
-
setMockTransactionError(errorMessage);
|
|
65
|
-
const emitter = signAndSend(account, extrinsic);
|
|
66
|
-
const error = await once(emitter, 'error');
|
|
67
|
-
|
|
68
|
-
expect(error.message).toBe(errorMessage);
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
afterAll(() => unmockDockService);
|
|
73
|
-
});
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import assert from 'assert';
|
|
3
|
-
import {EventEmitter} from 'events';
|
|
4
|
-
import {Logger} from '../../core/logger';
|
|
5
|
-
import {blockchainService} from '../blockchain/service';
|
|
6
|
-
|
|
7
|
-
export const extrisicErrorsFilter = ({event}) => {
|
|
8
|
-
return blockchainService.dock.api.events.system.ExtrinsicFailed.is(event);
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export const mapEventToErrorMessage = ({event}) => {
|
|
12
|
-
assert(!!event, 'event is required');
|
|
13
|
-
|
|
14
|
-
const [error] = event.data;
|
|
15
|
-
assert(!!error, 'error is required');
|
|
16
|
-
|
|
17
|
-
if (error.isModule) {
|
|
18
|
-
// for module errors, we have the section indexed, lookup
|
|
19
|
-
const decoded = blockchainService.dock.api.registry.findMetaError(error.asModule);
|
|
20
|
-
const {docs, method, section} = decoded;
|
|
21
|
-
|
|
22
|
-
return `${section}.${method}: ${docs.join(' ')}`;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return error.toString();
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export const getExtrinsicErrors = ({status, events}) =>
|
|
29
|
-
events.filter(extrisicErrorsFilter).map(mapEventToErrorMessage);
|
|
30
|
-
|
|
31
|
-
export function signAndSend(account, extrinsic: any): EventEmitter {
|
|
32
|
-
const emitter = new EventEmitter();
|
|
33
|
-
|
|
34
|
-
function execute() {
|
|
35
|
-
extrinsic
|
|
36
|
-
.signAndSend(account, result => {
|
|
37
|
-
const {status} = result;
|
|
38
|
-
|
|
39
|
-
Logger.debug(`extrinsic update ${JSON.stringify(result)}`);
|
|
40
|
-
|
|
41
|
-
if (status.isInBlock || status.isFinalized) {
|
|
42
|
-
const errors = getExtrinsicErrors(result);
|
|
43
|
-
|
|
44
|
-
if (!errors.length) {
|
|
45
|
-
return emitter.emit('done', status.toHex());
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
emitter.emit('error', new Error(errors[0]));
|
|
49
|
-
emitter.emit('errors', errors);
|
|
50
|
-
} else if (status.isInvalid) {
|
|
51
|
-
emitter.emit('error', new Error('Transaction status is invalid'));
|
|
52
|
-
} else if (status.isDropped) {
|
|
53
|
-
emitter.emit('error', new Error('Transaction status dropped'));
|
|
54
|
-
} else if (status.isRetracted) {
|
|
55
|
-
emitter.emit('error', new Error('Transaction status is retracted'));
|
|
56
|
-
}
|
|
57
|
-
})
|
|
58
|
-
.catch(err => {
|
|
59
|
-
emitter.emit('error', err);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
setTimeout(execute, 1);
|
|
64
|
-
|
|
65
|
-
return emitter;
|
|
66
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import assert from 'assert';
|
|
3
|
-
import {isAddressValid, isNumberValid} from '../../core/validation';
|
|
4
|
-
|
|
5
|
-
const assertTransaction = ({
|
|
6
|
-
toAddress,
|
|
7
|
-
fromAddress,
|
|
8
|
-
amount,
|
|
9
|
-
}: TransactionParams) => {
|
|
10
|
-
assert(isAddressValid(toAddress), 'invalid toAddress');
|
|
11
|
-
assert(isAddressValid(fromAddress), 'invalid fromAddress');
|
|
12
|
-
assert(isNumberValid(amount), 'invalid amount');
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export const validation = {
|
|
16
|
-
getAccountBalance({address}: GetAccountBalanceParams) {
|
|
17
|
-
assert(isAddressValid(address), `invalid address ${address}`);
|
|
18
|
-
},
|
|
19
|
-
getFeeAmount: assertTransaction,
|
|
20
|
-
sendTokens: assertTransaction,
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
export const serviceName = 'substrate';
|
|
24
|
-
|
|
25
|
-
export type GetAccountBalanceParams = {
|
|
26
|
-
address: string,
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export type TransactionParams = {
|
|
30
|
-
toAddress: string,
|
|
31
|
-
fromAddress: string,
|
|
32
|
-
amount: number | string,
|
|
33
|
-
transferAll?: boolean,
|
|
34
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {substrateService} from './service';
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import BigNumber from 'bignumber.js';
|
|
2
|
-
import {TestFixtures} from '../../fixtures';
|
|
3
|
-
import {
|
|
4
|
-
assertRpcService,
|
|
5
|
-
getPromiseError,
|
|
6
|
-
mockDockService,
|
|
7
|
-
setMockTransactionError,
|
|
8
|
-
setupTestWallet,
|
|
9
|
-
TEST_FEE_AMOUNT,
|
|
10
|
-
} from '../test-utils';
|
|
11
|
-
import {validation} from './configs';
|
|
12
|
-
import {
|
|
13
|
-
substrateService as service,
|
|
14
|
-
getFeeWithBuffer,
|
|
15
|
-
FEE_ESTIMATION_BUFFER,
|
|
16
|
-
} from './service';
|
|
17
|
-
import {SubstrateServiceRpc} from './service-rpc';
|
|
18
|
-
|
|
19
|
-
describe('ExampleService', () => {
|
|
20
|
-
it('ServiceRpc', () => {
|
|
21
|
-
assertRpcService(SubstrateServiceRpc, service, validation);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
describe('service', () => {
|
|
25
|
-
let unmockDockService;
|
|
26
|
-
let testKeypairJSON;
|
|
27
|
-
|
|
28
|
-
beforeAll(async () => {
|
|
29
|
-
unmockDockService = await mockDockService();
|
|
30
|
-
testKeypairJSON = TestFixtures.account1.getKeyring().toJson('');
|
|
31
|
-
await setupTestWallet();
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
describe('getAccountBalance', () => {
|
|
35
|
-
it('expect to get account balance', async () => {
|
|
36
|
-
const balance = await service.getAccountBalance({
|
|
37
|
-
address: TestFixtures.account1.address,
|
|
38
|
-
});
|
|
39
|
-
expect(typeof balance).toBe('number');
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it('expect to validate params', async () => {
|
|
43
|
-
const error = await getPromiseError(() =>
|
|
44
|
-
service.getAccountBalance({address: null}),
|
|
45
|
-
);
|
|
46
|
-
expect(error.message).toBe('invalid address null');
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
describe('getFeeAmount', () => {
|
|
51
|
-
it('expect to add buffer to the fee', () => {
|
|
52
|
-
expect(getFeeWithBuffer(new BigNumber(1)).toNumber()).toBe(
|
|
53
|
-
1 * FEE_ESTIMATION_BUFFER,
|
|
54
|
-
);
|
|
55
|
-
expect(() => getFeeWithBuffer(null)).toThrowError();
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it('expect to get fee amount', async () => {
|
|
59
|
-
const fee = await service.getFeeAmount({
|
|
60
|
-
toAddress: TestFixtures.account2.address,
|
|
61
|
-
fromAddress: TestFixtures.account1.address,
|
|
62
|
-
amount: 1,
|
|
63
|
-
keyPair: testKeypairJSON,
|
|
64
|
-
});
|
|
65
|
-
expect(fee).toBe(TEST_FEE_AMOUNT * 1.1);
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it('expect to validate params', async () => {
|
|
69
|
-
const error = await getPromiseError(() =>
|
|
70
|
-
service.getFeeAmount({
|
|
71
|
-
amount: null,
|
|
72
|
-
fromAddress: 'address',
|
|
73
|
-
toAddress: 'adress',
|
|
74
|
-
}),
|
|
75
|
-
);
|
|
76
|
-
expect(error.message).toBe('invalid amount');
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
describe('sendTokens', () => {
|
|
81
|
-
it('expect to send tokens', async () => {
|
|
82
|
-
setMockTransactionError(null);
|
|
83
|
-
const hash = await service.sendTokens({
|
|
84
|
-
amount: 1,
|
|
85
|
-
fromAddress: TestFixtures.account1.address,
|
|
86
|
-
toAddress: TestFixtures.account2.address,
|
|
87
|
-
keyPair: testKeypairJSON,
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
console.log('tx hash', hash);
|
|
91
|
-
|
|
92
|
-
expect(typeof hash).toBe('string');
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
it('expect to handle transaction error', async () => {
|
|
96
|
-
const errorMessage = 'some error from substrate';
|
|
97
|
-
|
|
98
|
-
setMockTransactionError(errorMessage);
|
|
99
|
-
|
|
100
|
-
const error = await getPromiseError(() =>
|
|
101
|
-
service.sendTokens({
|
|
102
|
-
amount: 1,
|
|
103
|
-
fromAddress: TestFixtures.account1.address,
|
|
104
|
-
toAddress: TestFixtures.account2.address,
|
|
105
|
-
}),
|
|
106
|
-
);
|
|
107
|
-
|
|
108
|
-
expect(error.message).toBeDefined();
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
afterAll(async () => {
|
|
113
|
-
await unmockDockService();
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
});
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import {RpcService} from '../rpc-service-client';
|
|
2
|
-
import {
|
|
3
|
-
GetAccountBalanceParams,
|
|
4
|
-
serviceName,
|
|
5
|
-
TransactionParams,
|
|
6
|
-
} from './configs';
|
|
7
|
-
|
|
8
|
-
export class SubstrateServiceRpc extends RpcService {
|
|
9
|
-
constructor() {
|
|
10
|
-
super(serviceName);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
getAccountBalance(params: GetAccountBalanceParams): Promise<any> {
|
|
14
|
-
return this.call('getAccountBalance', params);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
getFeeAmount(params: TransactionParams): Promise<any> {
|
|
18
|
-
return this.call('getFeeAmount', params);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
sendTokens(params: TransactionParams): Promise<any> {
|
|
22
|
-
return this.call('sendTokens', params);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import assert from 'assert';
|
|
3
|
-
import BigNumber from 'bignumber.js';
|
|
4
|
-
import BN from 'bn.js';
|
|
5
|
-
import {DOCK_TOKEN_UNIT, getPlainDockAmount} from '../../core/format-utils';
|
|
6
|
-
import {blockchainService} from '../blockchain/service';
|
|
7
|
-
import {signAndSend} from './api-utils';
|
|
8
|
-
import {
|
|
9
|
-
GetAccountBalanceParams,
|
|
10
|
-
serviceName,
|
|
11
|
-
TransactionParams,
|
|
12
|
-
validation,
|
|
13
|
-
} from './configs';
|
|
14
|
-
import {keyringService} from '../keyring/service';
|
|
15
|
-
|
|
16
|
-
export const FEE_ESTIMATION_BUFFER = 1.1;
|
|
17
|
-
|
|
18
|
-
export function getFeeWithBuffer(paymentFee: BigNumber) {
|
|
19
|
-
assert(!!paymentFee, 'paymentFee is required');
|
|
20
|
-
|
|
21
|
-
return new BigNumber(paymentFee).multipliedBy(FEE_ESTIMATION_BUFFER);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export class SubstrateService {
|
|
25
|
-
rpcMethods = [
|
|
26
|
-
SubstrateService.prototype.getAccountBalance,
|
|
27
|
-
SubstrateService.prototype.getFeeAmount,
|
|
28
|
-
SubstrateService.prototype.sendTokens,
|
|
29
|
-
];
|
|
30
|
-
|
|
31
|
-
constructor() {
|
|
32
|
-
this.name = serviceName;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
async getAccountBalance(params: GetAccountBalanceParams) {
|
|
36
|
-
validation.getAccountBalance(params);
|
|
37
|
-
|
|
38
|
-
console.log('ensure dock ready');
|
|
39
|
-
await blockchainService.ensureBlockchainReady();
|
|
40
|
-
|
|
41
|
-
console.log('ensure dock ready done');
|
|
42
|
-
|
|
43
|
-
const {
|
|
44
|
-
data: {free},
|
|
45
|
-
} = await blockchainService.dock.api.query.system.account(params.address);
|
|
46
|
-
|
|
47
|
-
return free.toNumber() / DOCK_TOKEN_UNIT;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
async getFeeAmount(params: TransactionParams) {
|
|
51
|
-
validation.getFeeAmount(params);
|
|
52
|
-
|
|
53
|
-
const {toAddress, keyPair} = params;
|
|
54
|
-
const amount = getPlainDockAmount(params.amount).toNumber();
|
|
55
|
-
|
|
56
|
-
const account = keyringService.decryptKeyPair({
|
|
57
|
-
jsonData: keyPair,
|
|
58
|
-
password: '',
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
blockchainService.dock.setAccount(account);
|
|
62
|
-
|
|
63
|
-
const extrinsic = blockchainService.dock.api.tx.balances.transfer(
|
|
64
|
-
toAddress,
|
|
65
|
-
amount,
|
|
66
|
-
);
|
|
67
|
-
const paymentInfo = await extrinsic.paymentInfo(account);
|
|
68
|
-
const fee = getFeeWithBuffer(paymentInfo.partialFee)
|
|
69
|
-
.dividedBy(DOCK_TOKEN_UNIT)
|
|
70
|
-
.toNumber();
|
|
71
|
-
|
|
72
|
-
return fee;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
async sendTokens(params: TransactionParams) {
|
|
76
|
-
validation.sendTokens(params);
|
|
77
|
-
|
|
78
|
-
let {toAddress, fromAddress, keyPair} = params;
|
|
79
|
-
let amount = getPlainDockAmount(params.amount).toNumber();
|
|
80
|
-
const account = keyringService.decryptKeyPair({
|
|
81
|
-
jsonData: keyPair,
|
|
82
|
-
password: '',
|
|
83
|
-
});
|
|
84
|
-
const {dock} = blockchainService;
|
|
85
|
-
|
|
86
|
-
dock.setAccount(account);
|
|
87
|
-
|
|
88
|
-
if (params.transferAll) {
|
|
89
|
-
const api = dock.api;
|
|
90
|
-
const balances = await api.derive.balances.all(account.address);
|
|
91
|
-
|
|
92
|
-
await api.tx.balances
|
|
93
|
-
.transfer(fromAddress, balances.availableBalance)
|
|
94
|
-
.paymentInfo(account)
|
|
95
|
-
.then(async ({partialFee}): void => {
|
|
96
|
-
const adjFee = getFeeWithBuffer(partialFee);
|
|
97
|
-
let maxTransfer = balances.availableBalance.sub(
|
|
98
|
-
new BN(adjFee.toNumber()),
|
|
99
|
-
);
|
|
100
|
-
|
|
101
|
-
if (!maxTransfer.gt(api.consts.balances.existentialDeposit)) {
|
|
102
|
-
throw new Error('balance too low');
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
amount = maxTransfer;
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return new Promise((resolve, reject) => {
|
|
110
|
-
const extrinsic = dock.api.tx.balances.transfer(toAddress, amount);
|
|
111
|
-
|
|
112
|
-
signAndSend(account, extrinsic).on('done', resolve).on('error', reject);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
export const substrateService: SubstrateService = new SubstrateService();
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import assert from 'assert';
|
|
3
|
-
|
|
4
|
-
export const serviceName = 'trust-registry';
|
|
5
|
-
export const validation = {
|
|
6
|
-
getTrustRegistries: params => {
|
|
7
|
-
const {schemaId, issuerDID, verifierDID} = params;
|
|
8
|
-
assert(!!schemaId || !!issuerDID || !!verifierDID, 'no query option provider');
|
|
9
|
-
},
|
|
10
|
-
getTrustRegistryVerifiers: params => {
|
|
11
|
-
const {trustRegistryId} = params;
|
|
12
|
-
assert(!!trustRegistryId, 'trustRegistryId is required');
|
|
13
|
-
},
|
|
14
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {trustRegistryService} from './service';
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import {blockchainService} from '../blockchain/service';
|
|
2
|
-
|
|
3
|
-
import {trustRegistryService as service} from './service';
|
|
4
|
-
import {
|
|
5
|
-
TEST_SCHEMA_METADATA,
|
|
6
|
-
TEST_TRUST_REGISTRIES,
|
|
7
|
-
mockDockService,
|
|
8
|
-
} from '../test-utils';
|
|
9
|
-
|
|
10
|
-
describe('TrustRegistryService', () => {
|
|
11
|
-
let unmockDockService;
|
|
12
|
-
|
|
13
|
-
beforeAll(async () => {
|
|
14
|
-
unmockDockService = await mockDockService();
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
it('should successfully fetch trust registries', async () => {
|
|
18
|
-
const params = {
|
|
19
|
-
schemaId: 'some-schema-id',
|
|
20
|
-
issuerDID: 'did:key:z6MkhN7PBjWgSMQ24Bebdpvvw8fVRv7m6MHDqiwTKozzBgrJ',
|
|
21
|
-
verifierDID: 'did:key:z6MkhN7PBjWgSMQ24Bebdpvvw8fVRv7m6MHDqiwTKozzBgrJ',
|
|
22
|
-
};
|
|
23
|
-
const result = await service.getTrustRegistries(params);
|
|
24
|
-
|
|
25
|
-
const queryObject =
|
|
26
|
-
blockchainService.dock.trustRegistry.registriesInfo.mock.calls[0][0];
|
|
27
|
-
expect(queryObject.issuers.AnyOf).toHaveLength(1);
|
|
28
|
-
expect(queryObject.verifiers.AnyOf).toHaveLength(1);
|
|
29
|
-
expect(queryObject.schemaIds.AnyOf[0]).toEqual(
|
|
30
|
-
'0x719455878946440f05937aba69d20a84ef32a2e254a03be324d72bf81d37d19b',
|
|
31
|
-
);
|
|
32
|
-
expect(result).toEqual(TEST_TRUST_REGISTRIES);
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it('should successfully fetch trust registry verifiers', async () => {
|
|
36
|
-
const trustRegistryId =
|
|
37
|
-
'0xc255301bad77eab2a86760a80dfac734d85f1378b95671b169e3a519aa7eadd2';
|
|
38
|
-
const params = {
|
|
39
|
-
schemaId: 'some-schema-id',
|
|
40
|
-
issuerDID: 'did:key:z6MkhN7PBjWgSMQ24Bebdpvvw8fVRv7m6MHDqiwTKozzBgrJ',
|
|
41
|
-
trustRegistryId,
|
|
42
|
-
};
|
|
43
|
-
const result = await service.getTrustRegistryVerifiers(params);
|
|
44
|
-
const queryObject =
|
|
45
|
-
blockchainService.dock.trustRegistry.registrySchemasMetadata.mock
|
|
46
|
-
.calls[0][0];
|
|
47
|
-
|
|
48
|
-
expect(
|
|
49
|
-
blockchainService.dock.trustRegistry.registrySchemasMetadata.mock
|
|
50
|
-
.calls[0][1],
|
|
51
|
-
).toEqual(trustRegistryId);
|
|
52
|
-
expect(queryObject.issuers.AnyOf).toHaveLength(1);
|
|
53
|
-
expect(queryObject.schemaIds[0]).toEqual(
|
|
54
|
-
'0x719455878946440f05937aba69d20a84ef32a2e254a03be324d72bf81d37d19b',
|
|
55
|
-
);
|
|
56
|
-
|
|
57
|
-
expect(result).toEqual(
|
|
58
|
-
TEST_SCHEMA_METADATA[
|
|
59
|
-
'0x719455878946440f05937aba69d20a84ef32a2e254a03be324d72bf81d37d19b'
|
|
60
|
-
].verifiers,
|
|
61
|
-
);
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
afterAll(async () => {
|
|
65
|
-
await unmockDockService();
|
|
66
|
-
});
|
|
67
|
-
});
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import {RpcService} from '../rpc-service-client';
|
|
2
|
-
import {serviceName} from './configs';
|
|
3
|
-
|
|
4
|
-
export class TrustRegistryServiceRpc extends RpcService {
|
|
5
|
-
constructor() {
|
|
6
|
-
super(serviceName);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
async getTrustRegistries(params) {
|
|
10
|
-
return this.call('getTrustRegistries', params);
|
|
11
|
-
}
|
|
12
|
-
async getTrustRegistryVerifiers(params) {
|
|
13
|
-
return this.call('getTrustRegistryVerifiers', params);
|
|
14
|
-
}
|
|
15
|
-
}
|