@huma-finance/widgets 0.0.35 → 0.0.36
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/.env.example +2 -2
- package/.eslintignore +2 -2
- package/.eslintrc.js +64 -64
- package/.prettierignore +4 -4
- package/.prettierrc.js +16 -16
- package/API.md +332 -332
- package/LICENSE +660 -660
- package/README.md +48 -48
- package/babel.config.js +15 -15
- package/config-overrides.js +9 -9
- package/cosmos.config.json +7 -7
- package/cypress/e2e/01-invoice-factoring-borrow.test.ts +62 -62
- package/cypress/support/e2e.ts +76 -76
- package/cypress/support/ethereum.ts +142 -142
- package/cypress/tsconfig.json +9 -9
- package/cypress/utils/index.ts +54 -54
- package/cypress.config.ts +20 -20
- package/dist/cjs/index.cjs +1646 -1226
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/index.d.ts +227 -195
- package/dist/index.js +1648 -1229
- package/dist/index.js.map +1 -1
- package/jsdoc2md.json +20 -20
- package/package.json +5 -4
- package/public/index.html +40 -40
- package/public/manifest.json +25 -25
- package/public/robots.txt +3 -3
- package/rollup.config.js +81 -81
- package/src/components/Activity.tsx +128 -132
- package/src/components/ApolloWrapper.tsx +15 -15
- package/src/components/ApproveAllowanceModal.tsx +138 -124
- package/src/components/BottomButton.tsx +33 -33
- package/src/components/ChainNotSupportedModal.tsx +33 -33
- package/src/components/ChooseAmountModal.tsx +322 -322
- package/src/components/ConfirmTransferModal.tsx +153 -153
- package/src/components/CreditLine/approve/1-ApproveAllowance.tsx +34 -0
- package/src/components/CreditLine/approve/2-Success.tsx +43 -0
- package/src/components/CreditLine/approve/index.tsx +85 -0
- package/src/components/CreditLine/borrow/1-Evaluation.tsx +157 -157
- package/src/components/CreditLine/borrow/2-ChooseAmount.tsx +74 -68
- package/src/components/CreditLine/borrow/{4-ApproveAllowance.tsx → 3-ApproveAllowance.tsx} +29 -29
- package/src/components/CreditLine/borrow/{3-Transfer.tsx → 4-Transfer.tsx} +34 -44
- package/src/components/CreditLine/borrow/5-Success.tsx +38 -38
- package/src/components/CreditLine/borrow/6-Notifications.tsx +10 -10
- package/src/components/CreditLine/borrow/index.tsx +136 -136
- package/src/components/CreditLine/payment/1-ChooseAmount.tsx +67 -67
- package/src/components/CreditLine/payment/2-ApproveAllowance.tsx +23 -23
- package/src/components/CreditLine/payment/3-Transfer.tsx +34 -34
- package/src/components/CreditLine/payment/4-Success.tsx +39 -39
- package/src/components/CreditLine/payment/index.tsx +94 -94
- package/src/components/ErrorModal.tsx +136 -136
- package/src/components/Factoring/FactoredList.tsx +143 -143
- package/src/components/Factoring/UpcomingList.tsx +90 -90
- package/src/components/Factoring/index.ts +2 -2
- package/src/components/HumaLoading.tsx +68 -68
- package/src/components/HumaSnackBar.tsx +60 -60
- package/src/components/HumaTable.tsx +203 -158
- package/src/components/InvoiceFactoring/borrow/1-Evaluation.tsx +49 -49
- package/src/components/InvoiceFactoring/borrow/2-ChooseAmount.tsx +88 -88
- package/src/components/InvoiceFactoring/borrow/3-ConfirmTransfer.tsx +37 -37
- package/src/components/InvoiceFactoring/borrow/4-ApproveNFT.tsx +55 -55
- package/src/components/InvoiceFactoring/borrow/5-Transfer.tsx +34 -34
- package/src/components/InvoiceFactoring/borrow/6-Success.tsx +20 -20
- package/src/components/InvoiceFactoring/borrow/index.tsx +94 -94
- package/src/components/InvoiceFactoring/payment/1-ChooseAmount.tsx +67 -67
- package/src/components/InvoiceFactoring/payment/2-ApproveAllowance.tsx +23 -23
- package/src/components/InvoiceFactoring/payment/3-Transfer.tsx +34 -34
- package/src/components/InvoiceFactoring/payment/4-Success.tsx +23 -23
- package/src/components/InvoiceFactoring/payment/index.tsx +86 -86
- package/src/components/Lend/supply/1-Evaluation/EvaluationEA.tsx +90 -90
- package/src/components/Lend/supply/1-Evaluation/EvaluationKYC.tsx +319 -286
- package/src/components/Lend/supply/1-Evaluation/index.tsx +31 -31
- package/src/components/Lend/supply/2-ChooseAmount.tsx +69 -69
- package/src/components/Lend/supply/3-ApproveAllowance.tsx +25 -25
- package/src/components/Lend/supply/4-Transfer.tsx +32 -32
- package/src/components/Lend/supply/5-Success.tsx +60 -60
- package/src/components/Lend/supply/6-Notifications.tsx +10 -10
- package/src/components/Lend/supply/index.tsx +167 -167
- package/src/components/Lend/withdraw/1-CheckWithdrawble.tsx +73 -73
- package/src/components/Lend/withdraw/2-ChooseAmount.tsx +50 -50
- package/src/components/Lend/withdraw/3-Transfer.tsx +32 -32
- package/src/components/Lend/withdraw/4-Success.tsx +49 -49
- package/src/components/Lend/withdraw/index.tsx +101 -101
- package/src/components/LoadingModal.tsx +49 -49
- package/src/components/Notifi/NotifiSubscriptionModal.tsx +268 -264
- package/src/components/StreamFactoring/borrow/1-Evaluation.tsx +55 -55
- package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +127 -127
- package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +42 -42
- package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +33 -33
- package/src/components/StreamFactoring/borrow/5-Permit.tsx +144 -144
- package/src/components/StreamFactoring/borrow/6-Transfer.tsx +37 -37
- package/src/components/StreamFactoring/borrow/7-Success.tsx +20 -20
- package/src/components/StreamFactoring/borrow/index.tsx +94 -94
- package/src/components/StreamFactoring/payment/ChooseAmount.tsx +54 -54
- package/src/components/StreamFactoring/payment/Success.tsx +23 -23
- package/src/components/StreamFactoring/payment/Transfer.tsx +34 -34
- package/src/components/StreamFactoring/payment/index.tsx +66 -66
- package/src/components/SuperfluidFactoring/SuperfluidFactoredList.tsx +69 -70
- package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +166 -167
- package/src/components/SuperfluidFactoring/index.tsx +85 -85
- package/src/components/TxDoneModal.tsx +85 -85
- package/src/components/TxSendModal.tsx +59 -59
- package/src/components/ViewOnExplorer.tsx +23 -26
- package/src/components/WidgetWrapper.tsx +74 -74
- package/src/components/WrapperModal.tsx +54 -54
- package/src/components/buttons/TableActionButton.tsx +36 -36
- package/src/components/buttons/index.ts +1 -1
- package/src/components/humaModal/HumaModal.tsx +68 -68
- package/src/components/humaModal/HumaModalHeader.tsx +70 -70
- package/src/components/humaModal/index.tsx +2 -2
- package/src/components/icons/approve-lender.svg +58 -58
- package/src/components/icons/auto-payback.svg +139 -139
- package/src/components/icons/check-circle.svg +3 -3
- package/src/components/icons/check-green.svg +3 -3
- package/src/components/icons/check.svg +10 -10
- package/src/components/icons/donut.svg +904 -904
- package/src/components/icons/ellipse.svg +3 -3
- package/src/components/icons/huma-full.svg +22 -22
- package/src/components/icons/huma.svg +15 -15
- package/src/components/icons/index.tsx +93 -93
- package/src/components/icons/loader.svg +229 -229
- package/src/components/icons/metamask.svg +31 -31
- package/src/components/icons/polygon.svg +16 -16
- package/src/components/icons/receipt.svg +3 -3
- package/src/components/icons/separator.svg +3 -3
- package/src/components/icons/sorry.svg +17 -17
- package/src/components/icons/usdc.svg +5 -5
- package/src/components/icons/wallet-connect.svg +11 -11
- package/src/components/images/index.ts +3 -3
- package/src/cosmos/CreditLineBorrow.fixture.tsx +86 -86
- package/src/cosmos/CreditLinePayment.fixture.tsx +50 -50
- package/src/cosmos/InvoiceFactoringBorrow.fixture.tsx +111 -111
- package/src/cosmos/InvoiceFactoringPayment.fixture.tsx +67 -67
- package/src/cosmos/LendSupply.fixture.tsx +75 -75
- package/src/cosmos/LendWithdraw.fixture.tsx +43 -43
- package/src/cosmos/SDKTesting.fixture.tsx +616 -616
- package/src/cosmos/SuperfluidFactoringBorrow.fixture.tsx +15 -15
- package/src/cosmos/WalletWrapper.tsx +52 -52
- package/src/cosmos/abis/InvoiceNFT.json +644 -644
- package/src/cosmos/abis/ReceivableFactoringPool.json +1529 -1529
- package/src/cosmos/utils/env.ts +6 -6
- package/src/cosmos/utils/index.ts +169 -169
- package/src/fonts/Recoleta/Recoleta-Black.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Bold.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Light.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Medium.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Regular.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-RegularDEMO.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-SemiBold.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Thin.otf +0 -0
- package/src/hooks/useEA.ts +53 -53
- package/src/hooks/useElementDimensions.ts +30 -0
- package/src/hooks/useNotifi.ts +71 -71
- package/src/hooks/useRedux.ts +6 -6
- package/src/index.css +61 -61
- package/src/index.tsx +283 -301
- package/src/react-app-env.d.ts +1 -1
- package/src/reportWebVitals.ts +15 -15
- package/src/setupTests.ts +6 -6
- package/src/store/index.ts +27 -27
- package/src/store/widgets.reducers.ts +120 -120
- package/src/store/widgets.selectors.ts +3 -3
- package/src/store/widgets.store.ts +55 -55
- package/src/theme/breakpoints.ts +10 -10
- package/src/theme/components.ts +70 -70
- package/src/theme/coreThemeConstants.ts +29 -29
- package/src/theme/cssMixins.ts +92 -92
- package/src/theme/hooks/useGetSizes.ts +31 -31
- package/src/theme/index.ts +24 -24
- package/src/theme/palette.ts +150 -150
- package/src/theme/shape.ts +7 -7
- package/src/theme/theme.types.ts +80 -80
- package/src/theme/typography.ts +117 -117
- package/src/utilTypes.d.ts +30 -31
- package/src/utils/env.ts +10 -10
- package/tsconfig.build.json +7 -7
- package/tsconfig.json +32 -32
- package/webpack.cosmos.js +54 -54
|
@@ -1,142 +1,142 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Updates cy.visit() to include an injected window.ethereum provider.
|
|
3
|
-
*/
|
|
4
|
-
import { Eip1193Bridge } from '@ethersproject/experimental/lib/eip1193-bridge'
|
|
5
|
-
import { ethers } from 'ethers'
|
|
6
|
-
import { deepCopy } from 'ethers/lib/utils'
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
addressForApprove,
|
|
10
|
-
addressForTx,
|
|
11
|
-
provider,
|
|
12
|
-
signerForApprove,
|
|
13
|
-
signerForTx,
|
|
14
|
-
} from '../utils'
|
|
15
|
-
|
|
16
|
-
class MetamaskBridge extends Eip1193Bridge {
|
|
17
|
-
private walletAddress: string
|
|
18
|
-
|
|
19
|
-
constructor(
|
|
20
|
-
signer: ethers.Signer,
|
|
21
|
-
provider: ethers.providers.Provider,
|
|
22
|
-
walletAddress: string,
|
|
23
|
-
) {
|
|
24
|
-
super(signer, provider)
|
|
25
|
-
this.walletAddress = walletAddress
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
chainId = 5
|
|
29
|
-
|
|
30
|
-
async sendAsync(...args: any[]) {
|
|
31
|
-
console.debug('sendAsync called', ...args)
|
|
32
|
-
return this.send(...args)
|
|
33
|
-
}
|
|
34
|
-
async send(...args: any[]) {
|
|
35
|
-
console.debug('send called', ...args)
|
|
36
|
-
const isCallbackForm =
|
|
37
|
-
typeof args[0] === 'object' && typeof args[1] === 'function'
|
|
38
|
-
let callback
|
|
39
|
-
let method
|
|
40
|
-
let params
|
|
41
|
-
if (isCallbackForm) {
|
|
42
|
-
callback = args[1]
|
|
43
|
-
method = args[0].method
|
|
44
|
-
params = args[0].params
|
|
45
|
-
} else {
|
|
46
|
-
method = args[0]
|
|
47
|
-
params = args[1]
|
|
48
|
-
}
|
|
49
|
-
if (method === 'eth_requestAccounts' || method === 'eth_accounts') {
|
|
50
|
-
if (isCallbackForm) {
|
|
51
|
-
callback({ result: [this.walletAddress] })
|
|
52
|
-
} else {
|
|
53
|
-
return Promise.resolve([this.walletAddress])
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
if (method === 'eth_chainId') {
|
|
57
|
-
if (isCallbackForm) {
|
|
58
|
-
callback(null, { result: '0x5' })
|
|
59
|
-
} else {
|
|
60
|
-
return Promise.resolve('0x5')
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
// Eip1193Bridge only supports eth_sign
|
|
64
|
-
// address is the first param for eth_sign
|
|
65
|
-
if (method === 'personal_sign') {
|
|
66
|
-
method = 'eth_sign'
|
|
67
|
-
const [data, address] = deepCopy(params)
|
|
68
|
-
params[0] = address
|
|
69
|
-
params[1] = data
|
|
70
|
-
}
|
|
71
|
-
try {
|
|
72
|
-
// Please refer to: https://github.com/ethers-io/ethers.js/issues/1683
|
|
73
|
-
// If from is present on eth_call it errors, removing it makes the library set
|
|
74
|
-
// from as the connected wallet which works fine
|
|
75
|
-
if (params && params.length && method === 'eth_call') {
|
|
76
|
-
if (params[0].from) {
|
|
77
|
-
delete params[0].from
|
|
78
|
-
}
|
|
79
|
-
if (params[0].gas) {
|
|
80
|
-
delete params[0].gas
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
let result
|
|
85
|
-
// For sending a transaction if we call send it will error
|
|
86
|
-
// as it wants gasLimit in sendTransaction but hexlify sets the property gas
|
|
87
|
-
// to gasLimit which makes sensd transaction error.
|
|
88
|
-
// This have taken the code from the super method for sendTransaction and altered
|
|
89
|
-
// it slightly to make it work with the gas limit issues.
|
|
90
|
-
if (
|
|
91
|
-
params &&
|
|
92
|
-
params.length &&
|
|
93
|
-
params[0].from &&
|
|
94
|
-
method === 'eth_sendTransaction'
|
|
95
|
-
) {
|
|
96
|
-
// Hexlify will not take gas, must be gasLimit, set this property to be gasLimit
|
|
97
|
-
params[0].gasLimit = params[0].gas
|
|
98
|
-
delete params[0].gas
|
|
99
|
-
// If from is present on eth_sendTransaction it errors, removing it makes the library set
|
|
100
|
-
// from as the connected wallet which works fine
|
|
101
|
-
delete params[0].from
|
|
102
|
-
const req = ethers.providers.JsonRpcProvider.hexlifyTransaction(
|
|
103
|
-
params[0],
|
|
104
|
-
)
|
|
105
|
-
// Hexlify sets the gasLimit property to be gas again and send transaction requires gasLimit
|
|
106
|
-
req.gasLimit = req.gas
|
|
107
|
-
delete req.gas
|
|
108
|
-
// Send the transaction
|
|
109
|
-
const tx = await this.signer.sendTransaction(req)
|
|
110
|
-
result = tx.hash
|
|
111
|
-
} else {
|
|
112
|
-
// All other transactions the base class works for
|
|
113
|
-
result = await super.send(method, params)
|
|
114
|
-
}
|
|
115
|
-
console.debug('result received', method, params, result)
|
|
116
|
-
if (isCallbackForm) {
|
|
117
|
-
callback(null, { result })
|
|
118
|
-
} else {
|
|
119
|
-
return result
|
|
120
|
-
}
|
|
121
|
-
} catch (error) {
|
|
122
|
-
console.log(error)
|
|
123
|
-
if (isCallbackForm) {
|
|
124
|
-
callback(error, null)
|
|
125
|
-
} else {
|
|
126
|
-
throw error
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
export const injectedForTx = new MetamaskBridge(
|
|
133
|
-
signerForTx,
|
|
134
|
-
provider,
|
|
135
|
-
addressForTx,
|
|
136
|
-
)
|
|
137
|
-
|
|
138
|
-
export const injectedForApprove = new MetamaskBridge(
|
|
139
|
-
signerForApprove,
|
|
140
|
-
provider,
|
|
141
|
-
addressForApprove,
|
|
142
|
-
)
|
|
1
|
+
/**
|
|
2
|
+
* Updates cy.visit() to include an injected window.ethereum provider.
|
|
3
|
+
*/
|
|
4
|
+
import { Eip1193Bridge } from '@ethersproject/experimental/lib/eip1193-bridge'
|
|
5
|
+
import { ethers } from 'ethers'
|
|
6
|
+
import { deepCopy } from 'ethers/lib/utils'
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
addressForApprove,
|
|
10
|
+
addressForTx,
|
|
11
|
+
provider,
|
|
12
|
+
signerForApprove,
|
|
13
|
+
signerForTx,
|
|
14
|
+
} from '../utils'
|
|
15
|
+
|
|
16
|
+
class MetamaskBridge extends Eip1193Bridge {
|
|
17
|
+
private walletAddress: string
|
|
18
|
+
|
|
19
|
+
constructor(
|
|
20
|
+
signer: ethers.Signer,
|
|
21
|
+
provider: ethers.providers.Provider,
|
|
22
|
+
walletAddress: string,
|
|
23
|
+
) {
|
|
24
|
+
super(signer, provider)
|
|
25
|
+
this.walletAddress = walletAddress
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
chainId = 5
|
|
29
|
+
|
|
30
|
+
async sendAsync(...args: any[]) {
|
|
31
|
+
console.debug('sendAsync called', ...args)
|
|
32
|
+
return this.send(...args)
|
|
33
|
+
}
|
|
34
|
+
async send(...args: any[]) {
|
|
35
|
+
console.debug('send called', ...args)
|
|
36
|
+
const isCallbackForm =
|
|
37
|
+
typeof args[0] === 'object' && typeof args[1] === 'function'
|
|
38
|
+
let callback
|
|
39
|
+
let method
|
|
40
|
+
let params
|
|
41
|
+
if (isCallbackForm) {
|
|
42
|
+
callback = args[1]
|
|
43
|
+
method = args[0].method
|
|
44
|
+
params = args[0].params
|
|
45
|
+
} else {
|
|
46
|
+
method = args[0]
|
|
47
|
+
params = args[1]
|
|
48
|
+
}
|
|
49
|
+
if (method === 'eth_requestAccounts' || method === 'eth_accounts') {
|
|
50
|
+
if (isCallbackForm) {
|
|
51
|
+
callback({ result: [this.walletAddress] })
|
|
52
|
+
} else {
|
|
53
|
+
return Promise.resolve([this.walletAddress])
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (method === 'eth_chainId') {
|
|
57
|
+
if (isCallbackForm) {
|
|
58
|
+
callback(null, { result: '0x5' })
|
|
59
|
+
} else {
|
|
60
|
+
return Promise.resolve('0x5')
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Eip1193Bridge only supports eth_sign
|
|
64
|
+
// address is the first param for eth_sign
|
|
65
|
+
if (method === 'personal_sign') {
|
|
66
|
+
method = 'eth_sign'
|
|
67
|
+
const [data, address] = deepCopy(params)
|
|
68
|
+
params[0] = address
|
|
69
|
+
params[1] = data
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
// Please refer to: https://github.com/ethers-io/ethers.js/issues/1683
|
|
73
|
+
// If from is present on eth_call it errors, removing it makes the library set
|
|
74
|
+
// from as the connected wallet which works fine
|
|
75
|
+
if (params && params.length && method === 'eth_call') {
|
|
76
|
+
if (params[0].from) {
|
|
77
|
+
delete params[0].from
|
|
78
|
+
}
|
|
79
|
+
if (params[0].gas) {
|
|
80
|
+
delete params[0].gas
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
let result
|
|
85
|
+
// For sending a transaction if we call send it will error
|
|
86
|
+
// as it wants gasLimit in sendTransaction but hexlify sets the property gas
|
|
87
|
+
// to gasLimit which makes sensd transaction error.
|
|
88
|
+
// This have taken the code from the super method for sendTransaction and altered
|
|
89
|
+
// it slightly to make it work with the gas limit issues.
|
|
90
|
+
if (
|
|
91
|
+
params &&
|
|
92
|
+
params.length &&
|
|
93
|
+
params[0].from &&
|
|
94
|
+
method === 'eth_sendTransaction'
|
|
95
|
+
) {
|
|
96
|
+
// Hexlify will not take gas, must be gasLimit, set this property to be gasLimit
|
|
97
|
+
params[0].gasLimit = params[0].gas
|
|
98
|
+
delete params[0].gas
|
|
99
|
+
// If from is present on eth_sendTransaction it errors, removing it makes the library set
|
|
100
|
+
// from as the connected wallet which works fine
|
|
101
|
+
delete params[0].from
|
|
102
|
+
const req = ethers.providers.JsonRpcProvider.hexlifyTransaction(
|
|
103
|
+
params[0],
|
|
104
|
+
)
|
|
105
|
+
// Hexlify sets the gasLimit property to be gas again and send transaction requires gasLimit
|
|
106
|
+
req.gasLimit = req.gas
|
|
107
|
+
delete req.gas
|
|
108
|
+
// Send the transaction
|
|
109
|
+
const tx = await this.signer.sendTransaction(req)
|
|
110
|
+
result = tx.hash
|
|
111
|
+
} else {
|
|
112
|
+
// All other transactions the base class works for
|
|
113
|
+
result = await super.send(method, params)
|
|
114
|
+
}
|
|
115
|
+
console.debug('result received', method, params, result)
|
|
116
|
+
if (isCallbackForm) {
|
|
117
|
+
callback(null, { result })
|
|
118
|
+
} else {
|
|
119
|
+
return result
|
|
120
|
+
}
|
|
121
|
+
} catch (error) {
|
|
122
|
+
console.log(error)
|
|
123
|
+
if (isCallbackForm) {
|
|
124
|
+
callback(error, null)
|
|
125
|
+
} else {
|
|
126
|
+
throw error
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export const injectedForTx = new MetamaskBridge(
|
|
133
|
+
signerForTx,
|
|
134
|
+
provider,
|
|
135
|
+
addressForTx,
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
export const injectedForApprove = new MetamaskBridge(
|
|
139
|
+
signerForApprove,
|
|
140
|
+
provider,
|
|
141
|
+
addressForApprove,
|
|
142
|
+
)
|
package/cypress/tsconfig.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"strict": true,
|
|
4
|
-
"target": "es5",
|
|
5
|
-
"lib": ["es5", "dom"],
|
|
6
|
-
"types": ["cypress"]
|
|
7
|
-
},
|
|
8
|
-
"include": ["**/*.ts"]
|
|
9
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"strict": true,
|
|
4
|
+
"target": "es5",
|
|
5
|
+
"lib": ["es5", "dom"],
|
|
6
|
+
"types": ["cypress"]
|
|
7
|
+
},
|
|
8
|
+
"include": ["**/*.ts"]
|
|
9
|
+
}
|
package/cypress/utils/index.ts
CHANGED
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
import { JsonRpcProvider } from '@ethersproject/providers'
|
|
2
|
-
import { Wallet } from '@ethersproject/wallet'
|
|
3
|
-
import { ethers } from 'ethers'
|
|
4
|
-
|
|
5
|
-
export const ONE_SECOND = 1 * 1000
|
|
6
|
-
export const THREE_SECONDS = 3 * 1000
|
|
7
|
-
export const FIVE_SECONDS = 5 * 1000
|
|
8
|
-
export const TEN_SECONDS = 10 * 1000
|
|
9
|
-
export const TWENTY_SECONDS = 20 * 1000
|
|
10
|
-
export const ONE_MINUTE = 60 * 1000
|
|
11
|
-
export const TWO_MINUTES = 120 * 1000
|
|
12
|
-
export const INVOICE_AMOUNT = 100
|
|
13
|
-
export const INVOICE_FACTORED_AMOUNT = 80
|
|
14
|
-
export const INVOICE_FEES = 8
|
|
15
|
-
|
|
16
|
-
const chain = { name: 'Goerli', chainId: 5 }
|
|
17
|
-
const infuraKey = Cypress.env('E2E_TEST_INFURA_GOERLI')
|
|
18
|
-
export const provider = new JsonRpcProvider(infuraKey, chain)
|
|
19
|
-
|
|
20
|
-
export const privateKeyForTx = Cypress.env('E2E_TEST_PRIVATE_KEY')
|
|
21
|
-
export const addressForTx = new Wallet(privateKeyForTx).address
|
|
22
|
-
export const signerForTx = new Wallet(privateKeyForTx, provider)
|
|
23
|
-
|
|
24
|
-
const wallet = ethers.Wallet.createRandom()
|
|
25
|
-
export const addressForApprove = wallet.address
|
|
26
|
-
export const signerForApprove = new Wallet(wallet.privateKey, provider)
|
|
27
|
-
|
|
28
|
-
export const toNumber = (text: string) => {
|
|
29
|
-
return Number(text.replace('$', '').replace(/,/g, '').replace('%', ''))
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export const getWalletAddressAbbr = (address: string) => {
|
|
33
|
-
if (!address) {
|
|
34
|
-
return address
|
|
35
|
-
}
|
|
36
|
-
const { length } = address
|
|
37
|
-
return `${address.slice(0, 6)}...${address.slice(length - 4, length)}`
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
-
export const isEmpty = (value: undefined | null | any) =>
|
|
42
|
-
value === undefined || value === null
|
|
43
|
-
|
|
44
|
-
const formatter = new Intl.NumberFormat('en-US', {
|
|
45
|
-
style: 'currency',
|
|
46
|
-
currency: 'USD',
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
export const formatMoney = (num: number | string | undefined) => {
|
|
50
|
-
if (isEmpty(num) || Number.isNaN(num)) {
|
|
51
|
-
return num
|
|
52
|
-
}
|
|
53
|
-
return formatter.format(Number(num))
|
|
54
|
-
}
|
|
1
|
+
import { JsonRpcProvider } from '@ethersproject/providers'
|
|
2
|
+
import { Wallet } from '@ethersproject/wallet'
|
|
3
|
+
import { ethers } from 'ethers'
|
|
4
|
+
|
|
5
|
+
export const ONE_SECOND = 1 * 1000
|
|
6
|
+
export const THREE_SECONDS = 3 * 1000
|
|
7
|
+
export const FIVE_SECONDS = 5 * 1000
|
|
8
|
+
export const TEN_SECONDS = 10 * 1000
|
|
9
|
+
export const TWENTY_SECONDS = 20 * 1000
|
|
10
|
+
export const ONE_MINUTE = 60 * 1000
|
|
11
|
+
export const TWO_MINUTES = 120 * 1000
|
|
12
|
+
export const INVOICE_AMOUNT = 100
|
|
13
|
+
export const INVOICE_FACTORED_AMOUNT = 80
|
|
14
|
+
export const INVOICE_FEES = 8
|
|
15
|
+
|
|
16
|
+
const chain = { name: 'Goerli', chainId: 5 }
|
|
17
|
+
const infuraKey = Cypress.env('E2E_TEST_INFURA_GOERLI')
|
|
18
|
+
export const provider = new JsonRpcProvider(infuraKey, chain)
|
|
19
|
+
|
|
20
|
+
export const privateKeyForTx = Cypress.env('E2E_TEST_PRIVATE_KEY')
|
|
21
|
+
export const addressForTx = new Wallet(privateKeyForTx).address
|
|
22
|
+
export const signerForTx = new Wallet(privateKeyForTx, provider)
|
|
23
|
+
|
|
24
|
+
const wallet = ethers.Wallet.createRandom()
|
|
25
|
+
export const addressForApprove = wallet.address
|
|
26
|
+
export const signerForApprove = new Wallet(wallet.privateKey, provider)
|
|
27
|
+
|
|
28
|
+
export const toNumber = (text: string) => {
|
|
29
|
+
return Number(text.replace('$', '').replace(/,/g, '').replace('%', ''))
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const getWalletAddressAbbr = (address: string) => {
|
|
33
|
+
if (!address) {
|
|
34
|
+
return address
|
|
35
|
+
}
|
|
36
|
+
const { length } = address
|
|
37
|
+
return `${address.slice(0, 6)}...${address.slice(length - 4, length)}`
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
+
export const isEmpty = (value: undefined | null | any) =>
|
|
42
|
+
value === undefined || value === null
|
|
43
|
+
|
|
44
|
+
const formatter = new Intl.NumberFormat('en-US', {
|
|
45
|
+
style: 'currency',
|
|
46
|
+
currency: 'USD',
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
export const formatMoney = (num: number | string | undefined) => {
|
|
50
|
+
if (isEmpty(num) || Number.isNaN(num)) {
|
|
51
|
+
return num
|
|
52
|
+
}
|
|
53
|
+
return formatter.format(Number(num))
|
|
54
|
+
}
|
package/cypress.config.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { defineConfig } from 'cypress'
|
|
2
|
-
|
|
3
|
-
export default defineConfig({
|
|
4
|
-
projectId: 'yq9qu9',
|
|
5
|
-
videoUploadOnPasses: false,
|
|
6
|
-
defaultCommandTimeout: 10000,
|
|
7
|
-
chromeWebSecurity: false,
|
|
8
|
-
e2e: {
|
|
9
|
-
testIsolation: false,
|
|
10
|
-
setupNodeEvents(on, config) {
|
|
11
|
-
return {
|
|
12
|
-
...config,
|
|
13
|
-
// Only enable Chrome.
|
|
14
|
-
// Electron (the default) has issues injecting window.ethereum before pageload, so it is not viable.
|
|
15
|
-
browsers: config.browsers.filter(({ name }) => name === 'chrome'),
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}',
|
|
19
|
-
},
|
|
20
|
-
})
|
|
1
|
+
import { defineConfig } from 'cypress'
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
projectId: 'yq9qu9',
|
|
5
|
+
videoUploadOnPasses: false,
|
|
6
|
+
defaultCommandTimeout: 10000,
|
|
7
|
+
chromeWebSecurity: false,
|
|
8
|
+
e2e: {
|
|
9
|
+
testIsolation: false,
|
|
10
|
+
setupNodeEvents(on, config) {
|
|
11
|
+
return {
|
|
12
|
+
...config,
|
|
13
|
+
// Only enable Chrome.
|
|
14
|
+
// Electron (the default) has issues injecting window.ethereum before pageload, so it is not viable.
|
|
15
|
+
browsers: config.browsers.filter(({ name }) => name === 'chrome'),
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}',
|
|
19
|
+
},
|
|
20
|
+
})
|