diff --git a/.github/workflows/javascript.yml b/.github/workflows/javascript.yml
new file mode 100644
index 0000000000..2df2ba3ea9
--- /dev/null
+++ b/.github/workflows/javascript.yml
@@ -0,0 +1,45 @@
+name: JavaScript
+
+on:
+ push:
+
+jobs:
+ lint:
+ name: "Lint codebase"
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Check out repo
+ uses: actions/checkout@v2
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v2
+ with:
+ node-version: "16"
+ cache: "yarn"
+
+ - name: Install dependencies
+ run: yarn install
+
+ - name: Lint codebase
+ run: yarn run lint
+
+ test:
+ name: "Test codebase"
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Check out repo
+ uses: actions/checkout@v2
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v2
+ with:
+ node-version: "16"
+ cache: "yarn"
+
+ - name: Install dependencies
+ run: yarn install
+
+ - name: Test codebase
+ run: yarn run test
\ No newline at end of file
diff --git a/.prettierrc.json b/.prettierrc.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/.prettierrc.json
@@ -0,0 +1 @@
+{}
diff --git a/README.md b/README.md
index b58e0af830..549e78d3a6 100644
--- a/README.md
+++ b/README.md
@@ -29,6 +29,15 @@ Your app is ready to be deployed!
See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
+### `yarn lint`
+
+Lints the codebase using [`ESlint`](https://eslint.org). Errors and warnings are shown in your terminal, and can be shown in your text editor with the appropriate plugin.
+
+### `yarn lint:fix`
+
+Runs `yarn lint` with the `--fix` flag allowing [`ESlint`](https://eslint.org) to fix the issue automatically where possible.
+###
+
### `yarn eject`
**Note: this is a one-way operation. Once you `eject`, you can’t go back!**
diff --git a/package.json b/package.json
index f89de259a0..b441a2324f 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
"@types/node": "^12.0.0",
"@types/react": "^17.0.0",
"@types/react-dom": "^17.0.0",
+ "eslint-plugin-prettier": "^3.4.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
@@ -21,13 +22,22 @@
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
+ "lint": "eslint .",
+ "lint:fix": "eslint . --fix",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
- "react-app/jest"
- ]
+ "react-app/jest",
+ "prettier"
+ ],
+ "plugins": [
+ "prettier"
+ ],
+ "rules": {
+ "prettier/prettier": "error"
+ }
},
"browserslist": {
"production": [
@@ -40,5 +50,10 @@
"last 1 firefox version",
"last 1 safari version"
]
+ },
+ "devDependencies": {
+ "@peculiar/webcrypto": "^1.1.7",
+ "eslint-config-prettier": "^8.3.0",
+ "prettier": "^2.3.2"
}
}
diff --git a/src/App.test.tsx b/src/App.test.tsx
index 2a68616d98..0d5b488f9c 100644
--- a/src/App.test.tsx
+++ b/src/App.test.tsx
@@ -1,9 +1,14 @@
-import React from 'react';
-import { render, screen } from '@testing-library/react';
-import App from './App';
+import React from "react";
+import { render, screen } from "@testing-library/react";
+import App from "./App";
+import TestWalletProvider from "./test/helpers/TestWalletProvider";
-test('renders learn react link', () => {
- render();
- const linkElement = screen.getByText(/learn react/i);
+test("renders learn react link", () => {
+ render(
+
+
+
+ );
+ const linkElement = screen.getByText(/post tx/i);
expect(linkElement).toBeInTheDocument();
});
diff --git a/src/App.tsx b/src/App.tsx
index 049a425a24..1cb84cda9e 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,31 +1,36 @@
-import React from 'react';
-import logo from './tca-logo.png';
-import './App.css';
-import { ConnectTerraButton } from './components/ConnectTerraButton';
-import contracts from './contracts';
+import React from "react";
+import logo from "./tca-logo.png";
+import "./App.css";
+import { ConnectTerraButton } from "./components/ConnectTerraButton";
+import contracts from "./contracts";
import {
useConnectedWallet,
- UserDenied,
- CreateTxFailed,
- TxFailed,
- Timeout,
- TxUnspecifiedError } from '@terra-money/wallet-provider';
-import { CreateTxOptions, MsgExecuteContract, StdFee } from '@terra-money/terra.js';
+ UserDenied,
+ CreateTxFailed,
+ TxFailed,
+ Timeout,
+ TxUnspecifiedError,
+} from "@terra-money/wallet-provider";
+import {
+ CreateTxOptions,
+ MsgExecuteContract,
+ StdFee,
+} from "@terra-money/terra.js";
function App() {
const connectedWallet = useConnectedWallet();
console.log(JSON.stringify(connectedWallet));
const postTx = async () => {
- if (!connectedWallet) return
- const currentNetwork = 'localterra' // TODO: should be:
+ if (!connectedWallet) return;
+ const currentNetwork = "localterra"; // TODO: should be:
// const currentNetwork = connectedWallet.network.name
const execute = new MsgExecuteContract(
connectedWallet.terraAddress,
contracts.AngelProtocolIndexFund.address[currentNetwork],
- contracts.AngelProtocolIndexFund.handleMessages.depositDonor,
+ contracts.AngelProtocolIndexFund.handleMessages.depositDonor
);
const txOptions: CreateTxOptions = {
@@ -38,28 +43,28 @@ function App() {
console.log(result);
} catch (error) {
if (error instanceof UserDenied) {
- console.log('User Denied')
+ console.log("User Denied");
} else if (error instanceof CreateTxFailed) {
- console.log('Create Tx Failed')
- console.log(error.message)
- console.log(error.tx)
+ console.log("Create Tx Failed");
+ console.log(error.message);
+ console.log(error.tx);
} else if (error instanceof TxFailed) {
- console.log('Tx Failed')
- console.log(error.txhash)
- console.log(error.message)
- console.log(error.raw_message)
- console.log(error.tx)
+ console.log("Tx Failed");
+ console.log(error.txhash);
+ console.log(error.message);
+ console.log(error.raw_message);
+ console.log(error.tx);
} else if (error instanceof Timeout) {
- console.log('Timeout')
- console.log(error.message)
+ console.log("Timeout");
+ console.log(error.message);
} else if (error instanceof TxUnspecifiedError) {
- console.log(error.message)
- console.log(error.tx)
+ console.log(error.message);
+ console.log(error.tx);
} else {
- console.log(String(error))
+ console.log(String(error));
}
}
- };
+ };
return (
@@ -68,7 +73,10 @@ function App() {
-
diff --git a/src/components/ConnectTerraButton.tsx b/src/components/ConnectTerraButton.tsx
index 6e8bba8b33..508b592e41 100644
--- a/src/components/ConnectTerraButton.tsx
+++ b/src/components/ConnectTerraButton.tsx
@@ -1,6 +1,10 @@
-import React from 'react';
+import React from "react";
-import { useWallet, WalletStatus, ConnectType } from '@terra-money/wallet-provider';
+import {
+ useWallet,
+ WalletStatus,
+ ConnectType,
+} from "@terra-money/wallet-provider";
export function ConnectTerraButton() {
const {
@@ -10,48 +14,41 @@ export function ConnectTerraButton() {
connect,
disconnect,
install,
- wallets
- } = useWallet()
+ wallets,
+ } = useWallet();
switch (status) {
case WalletStatus.INITIALIZING:
return (
-
- Initializing Wallet...
-
+ Initializing Wallet...
);
case WalletStatus.WALLET_NOT_CONNECTED:
return (
- {
- availableConnectTypes.includes(ConnectType.CHROME_EXTENSION) &&
+ {availableConnectTypes.includes(ConnectType.CHROME_EXTENSION) && (
connect(ConnectType.CHROME_EXTENSION)}>
Connect Chrome Extension
- }
- {
- availableInstallTypes.includes(ConnectType.CHROME_EXTENSION) &&
+ )}
+ {availableInstallTypes.includes(ConnectType.CHROME_EXTENSION) && (
install(ConnectType.CHROME_EXTENSION)}>
Install Chrome Extension
- }
+ )}
- )
+ );
case WalletStatus.WALLET_CONNECTED:
return (
- {
- wallets.length > 0 &&
+ {wallets.length > 0 && (
terraAddress: {wallets[0].terraAddress}
- }
-
disconnect()}>
- Disconnect
-
+ )}
+
disconnect()}>Disconnect
- )
+ );
}
-}
\ No newline at end of file
+}
diff --git a/src/contracts/index.ts b/src/contracts/index.ts
index d662d0c367..c746b06fad 100644
--- a/src/contracts/index.ts
+++ b/src/contracts/index.ts
@@ -1,10 +1,10 @@
export default {
AngelProtocolIndexFund: {
address: {
- localterra: "terra18vd8fpwxzck93qlwghaj6arh4p7c5n896xzem5"
+ localterra: "terra18vd8fpwxzck93qlwghaj6arh4p7c5n896xzem5",
},
handleMessages: {
depositDonor: { increment: {} },
- }
+ },
},
};
diff --git a/src/index.tsx b/src/index.tsx
index 0a9dd9378e..f8533cc98e 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1,30 +1,27 @@
-import React from 'react';
-import ReactDOM from 'react-dom';
-import './index.css';
-import App from './App';
-import reportWebVitals from './reportWebVitals';
+import React from "react";
+import ReactDOM from "react-dom";
+import "./index.css";
+import App from "./App";
+import reportWebVitals from "./reportWebVitals";
-import {
- NetworkInfo,
- WalletProvider,
-} from '@terra-money/wallet-provider';
+import { NetworkInfo, WalletProvider } from "@terra-money/wallet-provider";
const localterra = {
- name: 'localterra',
- chainID: 'localterra',
- lcd: 'http://localhost:1317',
+ name: "localterra",
+ chainID: "localterra",
+ lcd: "http://localhost:1317",
};
const testnet = {
- name: 'testnet',
- chainID: 'tequila-0004',
- lcd: 'https://tequila-lcd.terra.dev',
+ name: "testnet",
+ chainID: "tequila-0004",
+ lcd: "https://tequila-lcd.terra.dev",
};
const mainnet = {
- name: 'mainnet',
- chainID: 'columbus-4',
- lcd: 'https://lcd.terra.dev',
+ name: "mainnet",
+ chainID: "columbus-4",
+ lcd: "https://lcd.terra.dev",
};
const walletConnectChainIds: Record
= {
@@ -42,7 +39,7 @@ ReactDOM.render(
,
- document.getElementById('root')
+ document.getElementById("root")
);
// If you want to start measuring performance in your app, pass a function
diff --git a/src/reportWebVitals.ts b/src/reportWebVitals.ts
index 49a2a16e0f..5fa3583b75 100644
--- a/src/reportWebVitals.ts
+++ b/src/reportWebVitals.ts
@@ -1,8 +1,8 @@
-import { ReportHandler } from 'web-vitals';
+import { ReportHandler } from "web-vitals";
const reportWebVitals = (onPerfEntry?: ReportHandler) => {
if (onPerfEntry && onPerfEntry instanceof Function) {
- import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
+ import("web-vitals").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
getCLS(onPerfEntry);
getFID(onPerfEntry);
getFCP(onPerfEntry);
diff --git a/src/setupTests.ts b/src/setupTests.ts
index 8f2609b7b3..d0a338daba 100644
--- a/src/setupTests.ts
+++ b/src/setupTests.ts
@@ -2,4 +2,9 @@
// allows you to do things like:
// expect(element).toHaveTextContent(/react/i)
// learn more: https://github.com/testing-library/jest-dom
-import '@testing-library/jest-dom';
+import "@testing-library/jest-dom";
+
+// NOTE(davidlumley): Override default Crypto for terra.js
+// see: https://github.com/terra-money/terra.js/issues/100
+import { Crypto } from "@peculiar/webcrypto";
+global.crypto = new Crypto();
diff --git a/src/test/helpers/TestWalletProvider.tsx b/src/test/helpers/TestWalletProvider.tsx
new file mode 100644
index 0000000000..fd3bc54cb3
--- /dev/null
+++ b/src/test/helpers/TestWalletProvider.tsx
@@ -0,0 +1,37 @@
+import React, { ReactNode } from "react";
+import {
+ NetworkInfo,
+ StaticWalletProvider,
+ WalletInfo,
+ WalletStatus,
+} from "@terra-money/wallet-provider";
+
+const testnet: NetworkInfo = {
+ name: "testnet",
+ chainID: "tequila-0004",
+ lcd: "https://tequila-lcd.terra.dev",
+};
+
+// NOTE(davidlumley): Via https://github.com/terra-money/wallet-provider/issues/6
+// TestWalletProvider takes two optional args: walletStatus, and walletInfo
+// which can be used to set the state.
+const TestWalletProvider: React.FC<{
+ children?: ReactNode;
+ walletStatus?: WalletStatus;
+ walletInfo?: WalletInfo;
+}> = ({ children, walletStatus, walletInfo }) => {
+ const status = walletStatus ?? WalletStatus.WALLET_NOT_CONNECTED;
+ const wallets = (walletInfo && [walletInfo]) ?? [];
+
+ return (
+
+ {children}
+
+ );
+};
+
+export default TestWalletProvider;
diff --git a/yarn.lock b/yarn.lock
index 0e587d3ac3..157f371a51 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1532,6 +1532,34 @@
mkdirp "^1.0.4"
rimraf "^3.0.2"
+"@peculiar/asn1-schema@^2.0.27", "@peculiar/asn1-schema@^2.0.32":
+ version "2.0.36"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.0.36.tgz#ca7978f43ffa4f35fbb74436c3f983c10a69ac27"
+ integrity sha512-x7fdMR6bzOBct2a0PLukrmVrrehHX5uisKRDWN2Bs1HojXd5nCi7MAQeV+umRxPK1oSJDstTBhGq3sLzDbL8Vw==
+ dependencies:
+ "@types/asn1js" "^2.0.0"
+ asn1js "^2.1.1"
+ pvtsutils "^1.1.7"
+ tslib "^2.2.0"
+
+"@peculiar/json-schema@^1.1.12":
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339"
+ integrity sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==
+ dependencies:
+ tslib "^2.0.0"
+
+"@peculiar/webcrypto@^1.1.7":
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.1.7.tgz#ff02008612e67ab7cc2a92fce04a7f0e2a04b71c"
+ integrity sha512-aCNLYdHZkvGH+T8/YBOY33jrVGVuLIa3bpizeHXqwN+P4ZtixhA+kxEEWM1amZwUY2nY/iuj+5jdZn/zB7EPPQ==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.0.32"
+ "@peculiar/json-schema" "^1.1.12"
+ pvtsutils "^1.1.6"
+ tslib "^2.2.0"
+ webcrypto-core "^1.2.0"
+
"@pedrouid/environment@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@pedrouid/environment/-/environment-1.0.1.tgz#858f0f8a057340e0b250398b75ead77d6f4342ec"
@@ -1914,6 +1942,11 @@
resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc"
integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==
+"@types/asn1js@^2.0.0":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@types/asn1js/-/asn1js-2.0.2.tgz#bb1992291381b5f06e22a829f2ae009267cdf8c5"
+ integrity sha512-t4YHCgtD+ERvH0FyxvNlYwJ2ezhqw7t+Ygh4urQ7dJER8i185JPv6oIM3ey5YQmGN6Zp9EMbpohkjZi9t3UxwA==
+
"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7":
version "7.1.15"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.15.tgz#2ccfb1ad55a02c83f8e0ad327cbc332f55eb1024"
@@ -2777,6 +2810,13 @@ asn1.js@^5.2.0:
minimalistic-assert "^1.0.0"
safer-buffer "^2.1.0"
+asn1js@^2.0.26, asn1js@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-2.1.1.tgz#bb3896191ebb5fb1caeda73436a6c6e20a2eedff"
+ integrity sha512-t9u0dU0rJN4ML+uxgN6VM2Z4H5jWIYm0w8LsZLzMJaQsgL3IJNbxHgmbWDvJAwspyHpDFuzUaUFh4c05UB4+6g==
+ dependencies:
+ pvutils latest
+
assert@^1.1.1:
version "1.5.0"
resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
@@ -4880,6 +4920,11 @@ escodegen@^2.0.0:
optionalDependencies:
source-map "~0.6.1"
+eslint-config-prettier@^8.3.0:
+ version "8.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a"
+ integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==
+
eslint-config-react-app@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e"
@@ -4956,6 +5001,13 @@ eslint-plugin-jsx-a11y@^6.3.1:
jsx-ast-utils "^3.1.0"
language-tags "^1.0.5"
+eslint-plugin-prettier@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz#cdbad3bf1dbd2b177e9825737fe63b476a08f0c7"
+ integrity sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==
+ dependencies:
+ prettier-linter-helpers "^1.0.0"
+
eslint-plugin-react-hooks@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556"
@@ -5307,6 +5359,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+fast-diff@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
+ integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
+
fast-glob@^3.1.1:
version "3.2.7"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1"
@@ -9176,6 +9233,18 @@ prepend-http@^1.0.0:
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
+prettier-linter-helpers@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
+ integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
+ dependencies:
+ fast-diff "^1.1.2"
+
+prettier@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d"
+ integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==
+
pretty-bytes@^5.3.0:
version "5.6.0"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
@@ -9321,6 +9390,18 @@ punycode@^2.1.0, punycode@^2.1.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+pvtsutils@^1.1.2, pvtsutils@^1.1.6, pvtsutils@^1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.1.7.tgz#39a65ccb3b7448c974f6a6141ce2aad037b3f13c"
+ integrity sha512-faOiD/XpB/cIebRzYwzYjCmYgiDd53YEBni+Mt1+8/HlrARHYBpsU2OHOt3EZ1ZhfRNxPL0dH3K/vKaMgNWVGA==
+ dependencies:
+ tslib "^2.2.0"
+
+pvutils@latest:
+ version "1.0.17"
+ resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.0.17.tgz#ade3c74dfe7178944fe44806626bd2e249d996bf"
+ integrity sha512-wLHYUQxWaXVQvKnwIDWFVKDJku9XDCvyhhxoq8dc5MFdIlRenyPI9eSfEtcvgHgD7FlvCyGAlWgOzRnZD99GZQ==
+
q@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -11070,7 +11151,7 @@ tslib@^1.8.1:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.0.3:
+tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
@@ -11477,6 +11558,17 @@ web-vitals@^1.0.1:
resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-1.1.2.tgz#06535308168986096239aa84716e68b4c6ae6d1c"
integrity sha512-PFMKIY+bRSXlMxVAQ+m2aw9c/ioUYfDgrYot0YUa+/xa0sakubWhSDyxAKwzymvXVdF4CZI71g06W+mqhzu6ig==
+webcrypto-core@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.2.0.tgz#44fda3f9315ed6effe9a1e47466e0935327733b5"
+ integrity sha512-p76Z/YLuE4CHCRdc49FB/ETaM4bzM3roqWNJeGs+QNY1fOTzKTOVnhmudW1fuO+5EZg6/4LG9NJ6gaAyxTk9XQ==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.0.27"
+ "@peculiar/json-schema" "^1.1.12"
+ asn1js "^2.0.26"
+ pvtsutils "^1.1.2"
+ tslib "^2.1.0"
+
webextension-polyfill-ts@^0.25.0:
version "0.25.0"
resolved "https://registry.yarnpkg.com/webextension-polyfill-ts/-/webextension-polyfill-ts-0.25.0.tgz#fff041626365dbd0e29c40b197e989a55ec221ca"