@prosopo/provider 0.2.4 → 0.2.6

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 (58) hide show
  1. package/dist/cjs/contracts/captcha/dist/contract-info/captcha.cjs +2 -2
  2. package/dist/cjs/util.cjs +2 -2
  3. package/dist/tests/accounts.d.ts +11 -0
  4. package/dist/tests/accounts.d.ts.map +1 -0
  5. package/dist/tests/accounts.js +47 -0
  6. package/dist/tests/accounts.js.map +1 -0
  7. package/dist/tests/batch/commitments.test.d.ts +6 -0
  8. package/dist/tests/batch/commitments.test.d.ts.map +1 -0
  9. package/dist/tests/batch/commitments.test.js +217 -0
  10. package/dist/tests/batch/commitments.test.js.map +1 -0
  11. package/dist/tests/contract/helpers.test.d.ts +6 -0
  12. package/dist/tests/contract/helpers.test.d.ts.map +1 -0
  13. package/dist/tests/contract/helpers.test.js +58 -0
  14. package/dist/tests/contract/helpers.test.js.map +1 -0
  15. package/dist/tests/data/captchas.d.ts +37 -0
  16. package/dist/tests/data/captchas.d.ts.map +1 -0
  17. package/dist/tests/data/captchas.js +902 -0
  18. package/dist/tests/data/captchas.js.map +1 -0
  19. package/dist/tests/data/captchas1.json +53 -0
  20. package/dist/tests/data/captchas2.json +69 -0
  21. package/dist/tests/data/captchas3.json +54 -0
  22. package/dist/tests/data/captchas4.json +53 -0
  23. package/dist/tests/dataUtils/DatabaseAccounts.d.ts +35 -0
  24. package/dist/tests/dataUtils/DatabaseAccounts.d.ts.map +1 -0
  25. package/dist/tests/dataUtils/DatabaseAccounts.js +85 -0
  26. package/dist/tests/dataUtils/DatabaseAccounts.js.map +1 -0
  27. package/dist/tests/dataUtils/DatabasePopulator.d.ts +66 -0
  28. package/dist/tests/dataUtils/DatabasePopulator.d.ts.map +1 -0
  29. package/dist/tests/dataUtils/DatabasePopulator.js +264 -0
  30. package/dist/tests/dataUtils/DatabasePopulator.js.map +1 -0
  31. package/dist/tests/dataUtils/dapp-example-contract/dapp.json +648 -0
  32. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.d.ts +4 -0
  33. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.d.ts.map +1 -0
  34. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.js +41 -0
  35. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.js.map +1 -0
  36. package/dist/tests/dataUtils/funds.d.ts +23 -0
  37. package/dist/tests/dataUtils/funds.d.ts.map +1 -0
  38. package/dist/tests/dataUtils/funds.js +102 -0
  39. package/dist/tests/dataUtils/funds.js.map +1 -0
  40. package/dist/tests/dataUtils/populateDatabase.d.ts +15 -0
  41. package/dist/tests/dataUtils/populateDatabase.d.ts.map +1 -0
  42. package/dist/tests/dataUtils/populateDatabase.js +76 -0
  43. package/dist/tests/dataUtils/populateDatabase.js.map +1 -0
  44. package/dist/tests/getUser.d.ts +5 -0
  45. package/dist/tests/getUser.d.ts.map +1 -0
  46. package/dist/tests/getUser.js +18 -0
  47. package/dist/tests/getUser.js.map +1 -0
  48. package/dist/tests/tasks/tasks.test.d.ts +7 -0
  49. package/dist/tests/tasks/tasks.test.d.ts.map +1 -0
  50. package/dist/tests/tasks/tasks.test.js +719 -0
  51. package/dist/tests/tasks/tasks.test.js.map +1 -0
  52. package/dist/tests/util.test.d.ts +2 -0
  53. package/dist/tests/util.test.d.ts.map +1 -0
  54. package/dist/tests/util.test.js +51 -0
  55. package/dist/tests/util.test.js.map +1 -0
  56. package/dist/util.js +2 -2
  57. package/dist/util.js.map +1 -1
  58. package/package.json +10 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadFiles.js","sourceRoot":"","sources":["../../../../src/tests/dataUtils/dapp-example-contract/loadFiles.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,GAAG,MAAM,UAAU,CAAA;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,qHAAqH;AACrH,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,WAAW;IAC7B,IAAI;QACA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAC3G,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;KACvB;IAAC,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAA;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAClB;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC1B,MAAM,IAAI,GAAkB,KAAK,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAA;IAC3G,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;QACnB,OAAO,SAAS,CAAA;KACnB;SAAM;QACH,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAClB;AACL,CAAC"}
@@ -0,0 +1,23 @@
1
+ /// <reference types="bn.js" />
2
+ import { AnyNumber } from '@polkadot/types-codec/types';
3
+ import { BN } from '@polkadot/util';
4
+ import { ProsopoEnvironment } from '@prosopo/types-env';
5
+ /** Send funds from one of the development accounts to another account. */
6
+ export declare function sendFunds(env: ProsopoEnvironment, address: string, who: string, amount: AnyNumber): Promise<void>;
7
+ /**
8
+ * Takes the providerStakeDefault and works out if multiplying it by 100 or
9
+ * stakeMultiplier is greater than the maxStake. If it is, it returns the maxStake
10
+ * If chain decimals = 12, 1 UNIT = 1e12
11
+ * @param env
12
+ * @param providerStakeDefault
13
+ * @param stakeMultiplier
14
+ */
15
+ export declare function getStakeAmount(env: ProsopoEnvironment, providerStakeDefault: BN, stakeMultiplier?: number): BN;
16
+ /**
17
+ * Send funds to a test account, adding the max of 2 * stakeAmount or 1000 * the
18
+ * existential deposit
19
+ * @param env
20
+ * @param stakeAmount
21
+ */
22
+ export declare function getSendAmount(env: ProsopoEnvironment, stakeAmount: BN): BN;
23
+ //# sourceMappingURL=funds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"funds.d.ts","sourceRoot":"","sources":["../../../src/tests/dataUtils/funds.ts"],"names":[],"mappings":";AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAGnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAgBvD,0EAA0E;AAC1E,wBAAsB,SAAS,CAC3B,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,GAClB,OAAO,CAAC,IAAI,CAAC,CA+Df;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,EAAE,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,EAAE,CAoB9G;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,kBAAkB,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,CAS1E"}
@@ -0,0 +1,102 @@
1
+ import { BN } from '@polkadot/util';
2
+ import { ProsopoEnvError } from '@prosopo/common';
3
+ import { at } from '@prosopo/util';
4
+ import { dispatchErrorHandler, oneUnit } from '@prosopo/contract';
5
+ const devMnemonics = ['//Alice', '//Bob', '//Charlie', '//Dave', '//Eve', '//Ferdie'];
6
+ let current = -1;
7
+ const MAX_ACCOUNT_FUND = 10000; // 10000 UNIT
8
+ /** Cycle through the dev mnemonics so as not to deplete the funds too quickly
9
+ */
10
+ function getNextMnemonic() {
11
+ current = (current + 1) % devMnemonics.length;
12
+ return at(devMnemonics, current);
13
+ }
14
+ /** Send funds from one of the development accounts to another account. */
15
+ export async function sendFunds(env, address, who, amount) {
16
+ await env.getApi().isReady;
17
+ const mnemonic = getNextMnemonic();
18
+ const pair = env.keyring.addFromMnemonic(mnemonic);
19
+ const nonce = await env.getApi().rpc.system.accountNextIndex(pair.address);
20
+ const { data: { free: previousFree }, } = await env.getContractInterface().api.query.system.account(pair.address);
21
+ if (previousFree.lt(new BN(amount.toString()))) {
22
+ throw new ProsopoEnvError('DEVELOPER.BALANCE_TOO_LOW', undefined, undefined, {
23
+ mnemonic,
24
+ previousFree: previousFree.toString(),
25
+ amount: amount.toString(),
26
+ });
27
+ }
28
+ const api = env.getContractInterface().api;
29
+ const unit = oneUnit(env.getApi());
30
+ const unitAmount = new BN(amount.toString()).div(unit).toString();
31
+ env.logger.debug('Sending funds from`', pair.address, '`to`', address, '`Amount:`', unitAmount, '`UNIT. Free balance:`', previousFree.div(unit).toString(), '`UNIT');
32
+ // eslint-disable-next-line no-async-promise-executor
33
+ const result = new Promise(async (resolve, reject) => {
34
+ const unsub = await api.tx.balances
35
+ .transfer(address, amount)
36
+ .signAndSend(pair, { nonce }, (result) => {
37
+ if (result.status.isInBlock || result.status.isFinalized) {
38
+ result.events
39
+ .filter(({ event: { section } }) => section === 'system')
40
+ .forEach((event) => {
41
+ const { event: { method }, } = event;
42
+ if (method === 'ExtrinsicFailed') {
43
+ unsub();
44
+ reject(dispatchErrorHandler(api.registry, event));
45
+ }
46
+ });
47
+ unsub();
48
+ resolve(result);
49
+ }
50
+ else if (result.isError) {
51
+ unsub();
52
+ reject(result);
53
+ }
54
+ });
55
+ });
56
+ await result
57
+ .then((result) => {
58
+ env.logger.debug(who, 'sent amount', unitAmount, 'UNIT at tx hash ', result.status.asInBlock.toHex());
59
+ })
60
+ .catch((e) => {
61
+ throw new ProsopoEnvError('DEVELOPER.FUNDING_FAILED', undefined, undefined, { e });
62
+ });
63
+ }
64
+ /**
65
+ * Takes the providerStakeDefault and works out if multiplying it by 100 or
66
+ * stakeMultiplier is greater than the maxStake. If it is, it returns the maxStake
67
+ * If chain decimals = 12, 1 UNIT = 1e12
68
+ * @param env
69
+ * @param providerStakeDefault
70
+ * @param stakeMultiplier
71
+ */
72
+ export function getStakeAmount(env, providerStakeDefault, stakeMultiplier) {
73
+ const unit = oneUnit(env.getApi());
74
+ // We want to give each provider 100 * the required stake or 1 UNIT, whichever is greater, so that gas fees can be
75
+ // refunded to the Dapp User from within the contract
76
+ const stake100 = BN.max(providerStakeDefault.muln(stakeMultiplier || 100), env.getApi().consts.balances.existentialDeposit.toBn());
77
+ // We don't want to stake any more than MAX_ACCOUNT_FUND * existentialDeposit UNIT per provider as the test account
78
+ // funds will be depleted too quickly
79
+ const maxStake = env.getApi().consts.balances.existentialDeposit.toBn().muln(MAX_ACCOUNT_FUND);
80
+ if (stake100.lt(maxStake)) {
81
+ env.logger.debug('Setting stake amount to', stake100.div(unit).toNumber(), 'UNIT');
82
+ return stake100;
83
+ }
84
+ env.logger.debug('Setting stake amount to', maxStake.div(unit).toNumber(), 'UNIT');
85
+ return maxStake;
86
+ }
87
+ /**
88
+ * Send funds to a test account, adding the max of 2 * stakeAmount or 1000 * the
89
+ * existential deposit
90
+ * @param env
91
+ * @param stakeAmount
92
+ */
93
+ export function getSendAmount(env, stakeAmount) {
94
+ const unit = oneUnit(env.getApi());
95
+ env.logger.debug('Stake amount', stakeAmount.div(unit).toNumber(), 'UNIT');
96
+ let sendAmount = new BN(stakeAmount).muln(2);
97
+ // Should result in each account receiving a minimum of existentialDeposit
98
+ sendAmount = BN.max(sendAmount, env.getApi().consts.balances.existentialDeposit.muln(10000));
99
+ env.logger.debug('Setting send amount to', sendAmount.div(unit).toNumber(), 'UNIT');
100
+ return sendAmount;
101
+ }
102
+ //# sourceMappingURL=funds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"funds.js","sourceRoot":"","sources":["../../../src/tests/dataUtils/funds.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Abi } from '@polkadot/api-contract';
2
+ import { AccountKey, IDatabaseAccounts } from './DatabaseAccounts.js';
3
+ import { KeyringPair } from '@polkadot/keyring/types';
4
+ import { ProsopoConfig } from '@prosopo/types';
5
+ import { ProviderEnvironment } from '@prosopo/env';
6
+ export type UserCount = {
7
+ [key in AccountKey]: number;
8
+ };
9
+ export type UserFund = {
10
+ [key in AccountKey]: boolean;
11
+ };
12
+ export declare const userFundMapDefault: UserFund;
13
+ export declare function populateDatabase(env: ProviderEnvironment, userCounts: UserCount, fundMap: UserFund, exportData: boolean, dappAbi: Abi, dappWasm: Uint8Array): Promise<IDatabaseAccounts>;
14
+ export default function run(pair: KeyringPair, config: ProsopoConfig): Promise<void>;
15
+ //# sourceMappingURL=populateDatabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populateDatabase.d.ts","sourceRoot":"","sources":["../../../src/tests/dataUtils/populateDatabase.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAA0B,MAAM,uBAAuB,CAAA;AAE7F,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAOlD,MAAM,MAAM,SAAS,GAAG;KACnB,GAAG,IAAI,UAAU,GAAG,MAAM;CAC9B,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;KAClB,GAAG,IAAI,UAAU,GAAG,OAAO;CAC/B,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,QAOhC,CAAA;AAiDD,wBAAsB,gBAAgB,CAClC,GAAG,EAAE,mBAAmB,EACxB,UAAU,EAAE,SAAS,EACrB,OAAO,EAAE,QAAQ,EACjB,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE,UAAU,GACrB,OAAO,CAAC,iBAAiB,CAAC,CA6B5B;AAED,wBAA8B,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,iBAYzE"}
@@ -0,0 +1,76 @@
1
+ import { AccountKey, exportDatabaseAccounts } from './DatabaseAccounts.js';
2
+ import { DappAbiJSON, DappWasm } from './dapp-example-contract/loadFiles.js';
3
+ import { ProsopoEnvError } from '@prosopo/common';
4
+ import { ProviderEnvironment } from '@prosopo/env';
5
+ import { get } from '@prosopo/util';
6
+ import { promiseQueue } from '../../util.js';
7
+ import DatabasePopulator, { IDatabasePopulatorMethodNames } from './DatabasePopulator.js';
8
+ const msToSecString = (ms) => `${Math.round(ms / 100) / 10}s`;
9
+ export const userFundMapDefault = {
10
+ [AccountKey.providers]: true,
11
+ [AccountKey.providersWithStake]: true,
12
+ [AccountKey.providersWithStakeAndDataset]: true,
13
+ [AccountKey.dapps]: true,
14
+ [AccountKey.dappsWithStake]: true,
15
+ [AccountKey.dappUsers]: true,
16
+ };
17
+ const userPopulatorMethodMap = {
18
+ [AccountKey.providers]: IDatabasePopulatorMethodNames.registerProvider,
19
+ [AccountKey.providersWithStake]: IDatabasePopulatorMethodNames.registerProviderWithStake,
20
+ [AccountKey.providersWithStakeAndDataset]: IDatabasePopulatorMethodNames.registerProviderWithStakeAndDataset,
21
+ [AccountKey.dapps]: IDatabasePopulatorMethodNames.registerDapp,
22
+ [AccountKey.dappsWithStake]: IDatabasePopulatorMethodNames.registerDappWithStake,
23
+ [AccountKey.dappUsers]: IDatabasePopulatorMethodNames.registerDappUser,
24
+ };
25
+ const DEFAULT_USER_COUNT = {
26
+ [AccountKey.providers]: 20,
27
+ [AccountKey.providersWithStake]: 20,
28
+ [AccountKey.providersWithStakeAndDataset]: 20,
29
+ [AccountKey.dapps]: 20,
30
+ [AccountKey.dappsWithStake]: 20,
31
+ [AccountKey.dappUsers]: 0,
32
+ };
33
+ async function populateStep(databasePopulator, key, fund, text, userCount, logger) {
34
+ const startDate = Date.now();
35
+ logger.debug(text);
36
+ const dummyArray = new Array(userCount).fill(userCount);
37
+ const promise = await promiseQueue(dummyArray.map(() => () => databasePopulator[key](fund)));
38
+ const time = Date.now() - startDate;
39
+ logger.debug(` [ ${msToSecString(time)} ]\n`);
40
+ ///console.log('promiseQueue:', promise)
41
+ promise
42
+ .filter(({ error }) => error)
43
+ .forEach(({ error }) => {
44
+ if (error) {
45
+ throw new ProsopoEnvError(error);
46
+ }
47
+ });
48
+ }
49
+ export async function populateDatabase(env, userCounts, fundMap, exportData, dappAbi, dappWasm) {
50
+ env.logger.debug('Starting database populator...');
51
+ const databasePopulator = new DatabasePopulator(env, dappAbi, dappWasm);
52
+ await databasePopulator.isReady();
53
+ const userPromises = Object.entries(userCounts).map(async ([userType, userCount]) => {
54
+ if (userCount > 0) {
55
+ env.logger.debug(`Fund ${userType}`, get(fundMap, userType));
56
+ await populateStep(databasePopulator, get(userPopulatorMethodMap, userType), get(fundMap, userType), `Running ${userType}...`, userCount, env.logger);
57
+ }
58
+ });
59
+ try {
60
+ const promiseResult = await Promise.all(userPromises);
61
+ }
62
+ catch (e) {
63
+ throw new Error(String(e));
64
+ }
65
+ if (exportData) {
66
+ env.logger.info('Exporting accounts...');
67
+ await exportDatabaseAccounts(databasePopulator);
68
+ }
69
+ return databasePopulator;
70
+ }
71
+ export default async function run(pair, config) {
72
+ const dappAbiMetadata = await DappAbiJSON();
73
+ const dappWasm = await DappWasm();
74
+ await populateDatabase(new ProviderEnvironment(pair, config), DEFAULT_USER_COUNT, userFundMapDefault, true, dappAbiMetadata, dappWasm);
75
+ }
76
+ //# sourceMappingURL=populateDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populateDatabase.js","sourceRoot":"","sources":["../../../src/tests/dataUtils/populateDatabase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Account } from './accounts.js';
2
+ import { AccountKey } from './dataUtils/DatabaseAccounts.js';
3
+ import { ProviderEnvironment } from '@prosopo/env';
4
+ export declare function getUser(env: ProviderEnvironment, accountType: AccountKey, fund?: boolean): Promise<Account>;
5
+ //# sourceMappingURL=getUser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUser.d.ts","sourceRoot":"","sources":["../../src/tests/getUser.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,UAAU,EAAqB,MAAM,iCAAiC,CAAA;AAG/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAGlD,wBAAsB,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAmB9G"}
@@ -0,0 +1,18 @@
1
+ import { AccountKey } from './dataUtils/DatabaseAccounts.js';
2
+ import { DappAbiJSON, DappWasm } from './dataUtils/dapp-example-contract/loadFiles.js';
3
+ import { ProsopoEnvError } from '@prosopo/common';
4
+ import { populateDatabase, userFundMapDefault } from './dataUtils/populateDatabase.js';
5
+ export async function getUser(env, accountType, fund = true) {
6
+ const accountConfig = Object.assign({}, ...Object.keys(AccountKey).map((item) => ({ [item]: 0 })));
7
+ accountConfig[accountType] = 1;
8
+ const dappWasm = await DappWasm();
9
+ const dappAbiJSON = await DappAbiJSON();
10
+ const fundMap = { ...userFundMapDefault, [accountType]: fund };
11
+ const databaseAccounts = await populateDatabase(env, accountConfig, fundMap, false, dappAbiJSON, dappWasm);
12
+ const account = databaseAccounts[accountType].pop();
13
+ if (account === undefined) {
14
+ throw new ProsopoEnvError(new Error(`${accountType} not created by databasePopulator`));
15
+ }
16
+ return account;
17
+ }
18
+ //# sourceMappingURL=getUser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUser.js","sourceRoot":"","sources":["../../src/tests/getUser.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAqB,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAA;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAEtF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAwB,EAAE,WAAuB,EAAE,IAAI,GAAG,IAAI;IACxF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAClG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,QAAQ,GAAG,MAAM,QAAQ,EAAE,CAAA;IACjC,MAAM,WAAW,GAAG,MAAM,WAAW,EAAE,CAAA;IACvC,MAAM,OAAO,GAAG,EAAE,GAAG,kBAAkB,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAA;IAC9D,MAAM,gBAAgB,GAAsB,MAAM,gBAAgB,CAC9D,GAAG,EACH,aAAa,EACb,OAAO,EACP,KAAK,EACL,WAAW,EACX,QAAQ,CACX,CAAA;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,CAAA;IACnD,IAAI,OAAO,KAAK,SAAS,EAAE;QACvB,MAAM,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC,GAAG,WAAW,mCAAmC,CAAC,CAAC,CAAA;KAC1F;IACD,OAAO,OAAO,CAAA;AAClB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ViteTestContext } from '@prosopo/env';
2
+ export declare function sleep(timeout: number): Promise<void>;
3
+ declare module 'vitest' {
4
+ interface TestContext extends ViteTestContext {
5
+ }
6
+ }
7
+ //# sourceMappingURL=tasks.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.test.d.ts","sourceRoot":"","sources":["../../../src/tests/tasks/tasks.test.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAe9C,wBAAsB,KAAK,CAAC,OAAO,EAAE,MAAM,iBAE1C;AAGD,OAAO,QAAQ,QAAQ,CAAC;IAEpB,UAAiB,WAAY,SAAQ,eAAe;KAAG;CAC1D"}