diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644
index 000000000..734f5f518
--- /dev/null
+++ b/.github/workflows/lint.yml
@@ -0,0 +1,34 @@
+name: Lint
+
+on:
+ pull_request:
+ push:
+ branches:
+ - development
+ - staging
+ - production
+ - mainnet
+
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-node@v3
+ with:
+ node-version: 20
+ cache: "npm"
+ - run: npm ci
+ - run: npm run lint:ci
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-node@v3
+ with:
+ node-version: 20
+ cache: "npm"
+ - run: npm ci
+ - run: npm run build
diff --git a/.github/workflows/wormhole-connect.yml b/.github/workflows/wormhole-connect.yml
deleted file mode 100644
index 7803344ea..000000000
--- a/.github/workflows/wormhole-connect.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-name: Run tests
-
-on: [push, pull_request]
-
-jobs:
- lint:
- runs-on: ubuntu-latest
-
- steps:
- - name: Lint
- run: npm run lint
-
- test:
- runs-on: ubuntu-latest
-
- steps:
- - name: Test
- run: npm run test
diff --git a/.prettierignore b/.prettierignore
index 59745b70d..ff4c822fc 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1,5 +1,3 @@
dist
build
*.md
-builder
-wormhole-connect-loader
\ No newline at end of file
diff --git a/builder/package.json b/builder/package.json
index 5a5a15388..4080073ab 100644
--- a/builder/package.json
+++ b/builder/package.json
@@ -22,6 +22,7 @@
"web-vitals": "^2.1.4"
},
"scripts": {
+ "lint:ci": "prettier -c ./src && eslint --max-warnings=0 ./src",
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
diff --git a/builder/src/App.test.tsx b/builder/src/App.test.tsx
index 2a68616d9..d76787ed6 100644
--- a/builder/src/App.test.tsx
+++ b/builder/src/App.test.tsx
@@ -1,8 +1,8 @@
-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";
-test('renders learn react link', () => {
+test("renders learn react link", () => {
render();
const linkElement = screen.getByText(/learn react/i);
expect(linkElement).toBeInTheDocument();
diff --git a/builder/src/App.tsx b/builder/src/App.tsx
index d4aa374a7..a4630e26c 100644
--- a/builder/src/App.tsx
+++ b/builder/src/App.tsx
@@ -1,32 +1,35 @@
-import React from 'react';
-import { copyTextToClipboard } from './utils';
-import Background from './Background';
-import { makeStyles } from 'tss-react/mui';
-import WormholeBridge, { defaultTheme, WormholeConnectConfig } from '@wormhole-foundation/wormhole-connect';
+import React from "react";
+import { copyTextToClipboard } from "./utils";
+import Background from "./Background";
+import { makeStyles } from "tss-react/mui";
+import WormholeBridge, {
+ defaultTheme,
+ WormholeConnectConfig,
+} from "@wormhole-foundation/wormhole-connect";
const useStyles = makeStyles()(() => ({
appContent: {
- paddingBottom: '60px',
+ paddingBottom: "60px",
},
title: {
- marginTop: '60px',
- textAlign: 'center',
- marginBottom: '16px',
- color: 'white',
+ marginTop: "60px",
+ textAlign: "center",
+ marginBottom: "16px",
+ color: "white",
},
copy: {
- padding: '16px',
- backgroundColor: 'rgba(255,255,255,0.05)',
- border: '1px solid rgba(255,255,255,0.3)',
- borderRadius: '8px',
- maxWidth: '150px',
- margin: 'auto',
- cursor: 'pointer',
- display: 'flex',
- justifyContent: 'center',
- color: 'white',
- }
-}))
+ padding: "16px",
+ backgroundColor: "rgba(255,255,255,0.05)",
+ border: "1px solid rgba(255,255,255,0.3)",
+ borderRadius: "8px",
+ maxWidth: "150px",
+ margin: "auto",
+ cursor: "pointer",
+ display: "flex",
+ justifyContent: "center",
+ color: "white",
+ },
+}));
function App() {
const { classes } = useStyles();
@@ -34,14 +37,14 @@ function App() {
- `
+ `;
const customized = defaultTheme;
- customized.background.default = 'transparent';
+ customized.background.default = "transparent";
const config: WormholeConnectConfig = {
- mode: 'dark',
+ mode: "dark",
customTheme: customized,
- networks: ['goerli', 'alfajores', 'fuji']
- }
+ networks: ["goerli", "alfajores", "fuji"],
+ };
return (
diff --git a/builder/src/Background.tsx b/builder/src/Background.tsx
index 7b74dc995..090f6014c 100644
--- a/builder/src/Background.tsx
+++ b/builder/src/Background.tsx
@@ -1,31 +1,31 @@
-import React from 'react';
-import { makeStyles } from 'tss-react/mui';
+import React from "react";
+import { makeStyles } from "tss-react/mui";
import bg from "./bg.svg";
-import { OPACITY } from './theme';
+import { OPACITY } from "./theme";
const colors = {
- bg: '#030712',
- purple: '#3B234E',
- blue: '#302A60',
- pink: '#5A1E46',
-}
+ bg: "#030712",
+ purple: "#3B234E",
+ blue: "#302A60",
+ pink: "#5A1E46",
+};
const useStyles = makeStyles()((theme) => ({
container: {
backgroundColor: `${colors.bg} !important`,
- width: '100%',
+ width: "100%",
minHeight: "100vh",
- height: '100%',
- zIndex: '-2',
+ height: "100%",
+ zIndex: "-2",
},
bg: {
display: "flex",
flexDirection: "column",
position: "relative",
overflow: "hidden",
- width: '100%',
+ width: "100%",
height: "100%",
- minHeight: '100vh',
+ minHeight: "100vh",
overscrollBehaviorY: "none",
backgroundImage: `url(${bg})`,
backgroundPosition: "top center",
@@ -34,8 +34,8 @@ const useStyles = makeStyles()((theme) => ({
},
background: {
position: "absolute",
- width: '100%',
- height: '100%',
+ width: "100%",
+ height: "100%",
top: 0,
bottom: 0,
left: 0,
@@ -50,8 +50,7 @@ const useStyles = makeStyles()((theme) => ({
right: "-1000px",
width: "1757px",
height: "1506px",
- background:
- `radial-gradient(closest-side at 50% 50%, ${colors.blue} 0%, ${colors.blue}00 100%)`,
+ background: `radial-gradient(closest-side at 50% 50%, ${colors.blue} 0%, ${colors.blue}00 100%)`,
opacity: "0.5",
transform: "matrix(0.87, 0.48, -0.48, 0.87, 0, 0)",
zIndex: "-1",
@@ -66,8 +65,7 @@ const useStyles = makeStyles()((theme) => ({
width: "1379px",
height: "1378px",
position: "absolute",
- background:
- `radial-gradient(closest-side at 50% 50%, ${colors.pink}${OPACITY[60]} 0%, ${colors.pink}00 100%)`,
+ background: `radial-gradient(closest-side at 50% 50%, ${colors.pink}${OPACITY[60]} 0%, ${colors.pink}00 100%)`,
opacity: "0.5",
zIndex: "-1",
pointerEvent: "none",
@@ -78,8 +76,7 @@ const useStyles = makeStyles()((theme) => ({
width: "1379px",
height: "1378px",
position: "absolute",
- background:
- `radial-gradient(closest-side at 50% 50%, ${colors.purple} 0%, ${colors.purple}00 100%)`,
+ background: `radial-gradient(closest-side at 50% 50%, ${colors.purple} 0%, ${colors.purple}00 100%)`,
opacity: "0.5",
zIndex: "-1",
pointerEvent: "none",
@@ -93,8 +90,7 @@ const useStyles = makeStyles()((theme) => ({
right: "-1000px",
width: "1757px",
height: "1506px",
- background:
- `radial-gradient(closest-side at 50% 50%, ${colors.purple} 0%, ${colors.purple}00 100%)`,
+ background: `radial-gradient(closest-side at 50% 50%, ${colors.purple} 0%, ${colors.purple}00 100%)`,
opacity: "0.5",
transform: "matrix(0.87, 0.48, -0.48, 0.87, 0, 0);",
zIndex: "-1",
@@ -103,11 +99,11 @@ const useStyles = makeStyles()((theme) => ({
display: "none",
},
},
-}))
+}));
type Props = {
- children: React.ReactNode | React.ReactNode[]
-}
+ children: React.ReactNode | React.ReactNode[];
+};
function Background({ children }: Props) {
const { classes } = useStyles();
diff --git a/builder/src/index.css b/builder/src/index.css
index ec2585e8c..4a1df4db7 100644
--- a/builder/src/index.css
+++ b/builder/src/index.css
@@ -1,13 +1,13 @@
body {
margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
- 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
+ "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
code {
- font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
+ font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
monospace;
}
diff --git a/builder/src/index.tsx b/builder/src/index.tsx
index 032464fb6..ccbac81f4 100644
--- a/builder/src/index.tsx
+++ b/builder/src/index.tsx
@@ -1,11 +1,11 @@
-import React from 'react';
-import ReactDOM from 'react-dom/client';
-import './index.css';
-import App from './App';
-import reportWebVitals from './reportWebVitals';
+import React from "react";
+import ReactDOM from "react-dom/client";
+import "./index.css";
+import App from "./App";
+import reportWebVitals from "./reportWebVitals";
const root = ReactDOM.createRoot(
- document.getElementById('root') as HTMLElement
+ document.getElementById("root") as HTMLElement
);
root.render(
diff --git a/builder/src/reportWebVitals.ts b/builder/src/reportWebVitals.ts
index 49a2a16e0..5fa3583b7 100644
--- a/builder/src/reportWebVitals.ts
+++ b/builder/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/builder/src/theme.ts b/builder/src/theme.ts
index e0b1af40f..1c8e4de55 100644
--- a/builder/src/theme.ts
+++ b/builder/src/theme.ts
@@ -1,59 +1,52 @@
-import { Theme } from '@wormhole-foundation/wormhole-connect';
-import {
- grey,
- green,
- orange,
- red,
- cyan,
- purple,
-} from '@mui/material/colors';
+import { Theme } from "@wormhole-foundation/wormhole-connect";
+import { grey, green, orange, red, cyan, purple } from "@mui/material/colors";
export const OPACITY = {
- 0: '00',
- 5: '0C',
- 7: '0F',
- 10: '19',
- 15: '26',
- 20: '33',
- 25: '3F',
- 30: '4C',
- 35: '59',
- 40: '66',
- 45: '72',
- 50: '7F',
- 55: '8C',
- 60: '99',
- 65: 'A5',
- 70: 'B2',
- 75: 'BF',
- 80: 'CC',
- 85: 'D8',
- 90: 'E5',
- 95: 'F2',
- 100: 'FF',
+ 0: "00",
+ 5: "0C",
+ 7: "0F",
+ 10: "19",
+ 15: "26",
+ 20: "33",
+ 25: "3F",
+ 30: "4C",
+ 35: "59",
+ 40: "66",
+ 45: "72",
+ 50: "7F",
+ 55: "8C",
+ 60: "99",
+ 65: "A5",
+ 70: "B2",
+ 75: "BF",
+ 80: "CC",
+ 85: "D8",
+ 90: "E5",
+ 95: "F2",
+ 100: "FF",
};
export const light: Theme = {
primary: {
- 50: '#161718',
- 100: '#2d2e30',
- 200: '#444548',
- 300: '#5b5c60',
- 400: '#727479',
- 500: '#898b91',
- 600: '#a0a2a9',
- 700: '#b7b9c1',
- 800: '#ced0d9',
- 900: '#E5E8F2',
- A100: '#ceced1',
- A200: '#9d9ea4',
- A400: '#535660',
- A700: '#0a0e1c',
+ 50: "#161718",
+ 100: "#2d2e30",
+ 200: "#444548",
+ 300: "#5b5c60",
+ 400: "#727479",
+ 500: "#898b91",
+ 600: "#a0a2a9",
+ 700: "#b7b9c1",
+ 800: "#ced0d9",
+ 900: "#E5E8F2",
+ A100: "#ceced1",
+ A200: "#9d9ea4",
+ A400: "#535660",
+ A700: "#0a0e1c",
},
secondary: grey,
- divider: '#a0a2a9',
+ divider: "#a0a2a9",
background: {
- default: '#E5E8F2',
+ default: "#E5E8F2",
},
text: {
primary: grey[900],
@@ -61,48 +54,48 @@ export const light: Theme = {
},
error: red,
info: {
- 50: '#d1e3f9',
- 100: '#c8def7',
- 200: '#bfd8f6',
- 300: '#b6d3f5',
- 400: '#adcdf4',
- 500: '#A4C8F3',
- 600: '#93b4da',
- 700: '#83a0c2',
- 800: '#728caa',
- 900: '#627891',
- A100: '#A4C8F3',
- A200: '#A4C8F3',
- A400: '#A4C8F3',
- A700: '#A4C8F3',
+ 50: "#d1e3f9",
+ 100: "#c8def7",
+ 200: "#bfd8f6",
+ 300: "#b6d3f5",
+ 400: "#adcdf4",
+ 500: "#A4C8F3",
+ 600: "#93b4da",
+ 700: "#83a0c2",
+ 800: "#728caa",
+ 900: "#627891",
+ A100: "#A4C8F3",
+ A200: "#A4C8F3",
+ A400: "#A4C8F3",
+ A700: "#A4C8F3",
},
success: green,
warning: orange,
button: {
- primary: '#ffffff',
+ primary: "#ffffff",
primaryText: grey[900],
- disabled: '#c8cad1',
+ disabled: "#c8cad1",
disabledText: grey[800],
- action: '#F3A01E',
- actionText: '#000000',
- hover: '#b7b9c1',
+ action: "#F3A01E",
+ actionText: "#000000",
+ hover: "#b7b9c1",
},
options: {
- hover: '#f9f9fb',
- select: '#F0F0F5',
+ hover: "#f9f9fb",
+ select: "#F0F0F5",
},
card: {
- background: '#ffffff',
- elevation: '10px 10px 30px 15px #CCD2E7',
- secondary: '#F0F0F5',
+ background: "#ffffff",
+ elevation: "10px 10px 30px 15px #CCD2E7",
+ secondary: "#F0F0F5",
},
popover: {
- background: '#ffffff',
- elevation: '10px 10px 30px 15px #CCD2E7',
- secondary: '#F0F0F5',
+ background: "#ffffff",
+ elevation: "10px 10px 30px 15px #CCD2E7",
+ secondary: "#F0F0F5",
},
modal: {
- background: '#ffffff',
+ background: "#ffffff",
},
font: {
primary: '"Inter", sans-serif',
@@ -113,12 +106,12 @@ export const light: Theme = {
export const dark: Theme = {
primary: grey,
secondary: grey,
- divider: '#ffffff' + OPACITY[20],
+ divider: "#ffffff" + OPACITY[20],
background: {
- default: '#212121',
+ default: "#212121",
},
text: {
- primary: '#ffffff',
+ primary: "#ffffff",
secondary: grey[500],
},
error: red,
@@ -126,30 +119,30 @@ export const dark: Theme = {
success: green,
warning: orange,
button: {
- primary: '#ffffff' + OPACITY[20],
- primaryText: '#ffffff',
- disabled: '#ffffff' + OPACITY[10],
- disabledText: '#ffffff' + OPACITY[40],
+ primary: "#ffffff" + OPACITY[20],
+ primaryText: "#ffffff",
+ disabled: "#ffffff" + OPACITY[10],
+ disabledText: "#ffffff" + OPACITY[40],
action: purple[400],
- actionText: '#000000',
- hover: '#ffffff' + OPACITY[7],
+ actionText: "#000000",
+ hover: "#ffffff" + OPACITY[7],
},
options: {
- hover: '#373737',
- select: '#3F3F3F',
+ hover: "#373737",
+ select: "#3F3F3F",
},
card: {
- background: '#2F2F2F',
- secondary: '#474747',
- elevation: 'none',
+ background: "#2F2F2F",
+ secondary: "#474747",
+ elevation: "none",
},
popover: {
- background: '#111111',
- secondary: '#ffffff' + OPACITY[5],
- elevation: 'none',
+ background: "#111111",
+ secondary: "#ffffff" + OPACITY[5],
+ elevation: "none",
},
modal: {
- background: '#2d2d2d',
+ background: "#2d2d2d",
},
font: {
primary: '"Inter", sans-serif',
@@ -160,89 +153,89 @@ export const dark: Theme = {
export const custom: Theme = {
primary: grey,
secondary: grey,
- divider: '#ffffff' + OPACITY[20],
+ divider: "#ffffff" + OPACITY[20],
background: {
- default: 'transparent',
+ default: "transparent",
},
text: {
- primary: '#ffffff',
+ primary: "#ffffff",
secondary: grey[500],
},
error: red,
info: {
- 50: '#97a5b7',
- 100: '#8293a9',
- 200: '#6e819a',
- 300: '#596f8c',
- 400: '#445d7e',
- 500: '#304C70',
- 600: '#2b4464',
- 700: '#263c59',
- 800: '#21354e',
- 900: '#1c2d43',
- A100: '#304C70',
- A200: '#304C70',
- A400: '#304C70',
- A700: '#304C70',
+ 50: "#97a5b7",
+ 100: "#8293a9",
+ 200: "#6e819a",
+ 300: "#596f8c",
+ 400: "#445d7e",
+ 500: "#304C70",
+ 600: "#2b4464",
+ 700: "#263c59",
+ 800: "#21354e",
+ 900: "#1c2d43",
+ A100: "#304C70",
+ A200: "#304C70",
+ A400: "#304C70",
+ A700: "#304C70",
},
// success: green,
success: {
- 50: '#66d6cd',
- 100: '#4dcfc4',
- 200: '#33c8bc',
- 300: '#1ac1b4',
- 400: '#01BBAC',
- 500: '#00a89a',
- 600: '#009589',
- 700: '#008278',
- 800: '#007067',
- 900: '#005d56',
- A100: '#00a89a',
- A200: '#00a89a',
- A400: '#00a89a',
- A700: '#00a89a',
+ 50: "#66d6cd",
+ 100: "#4dcfc4",
+ 200: "#33c8bc",
+ 300: "#1ac1b4",
+ 400: "#01BBAC",
+ 500: "#00a89a",
+ 600: "#009589",
+ 700: "#008278",
+ 800: "#007067",
+ 900: "#005d56",
+ A100: "#00a89a",
+ A200: "#00a89a",
+ A400: "#00a89a",
+ A700: "#00a89a",
},
warning: {
- 50: '#ffe3a4',
- 100: '#ffdd91',
- 200: '#ffd77f',
- 300: '#ffd26d',
- 400: '#ffcc5b',
- 500: '#FFC749',
- 600: '#e5b341',
- 700: '#cc9f3a',
- 800: '#b28b33',
- 900: '#99772b',
- A100: '#FFC749',
- A200: '#FFC749',
- A400: '#FFC749',
- A700: '#FFC749',
+ 50: "#ffe3a4",
+ 100: "#ffdd91",
+ 200: "#ffd77f",
+ 300: "#ffd26d",
+ 400: "#ffcc5b",
+ 500: "#FFC749",
+ 600: "#e5b341",
+ 700: "#cc9f3a",
+ 800: "#b28b33",
+ 900: "#99772b",
+ A100: "#FFC749",
+ A200: "#FFC749",
+ A400: "#FFC749",
+ A700: "#FFC749",
},
button: {
- primary: '#ffffff' + OPACITY[10],
- primaryText: '#ffffff',
- disabled: '#ffffff' + OPACITY[7],
- disabledText: '#ffffff' + OPACITY[40],
- action: '#ffffff' + OPACITY[20],
- actionText: '#ffffff',
- hover: '#ffffff' + OPACITY[7],
+ primary: "#ffffff" + OPACITY[10],
+ primaryText: "#ffffff",
+ disabled: "#ffffff" + OPACITY[7],
+ disabledText: "#ffffff" + OPACITY[40],
+ action: "#ffffff" + OPACITY[20],
+ actionText: "#ffffff",
+ hover: "#ffffff" + OPACITY[7],
},
options: {
- hover: '#ffffff' + OPACITY[7],
- select: '#ffffff' + OPACITY[10],
+ hover: "#ffffff" + OPACITY[7],
+ select: "#ffffff" + OPACITY[10],
},
card: {
- background: '#ffffff' + OPACITY[5],
- secondary: '#ffffff' + OPACITY[5],
- elevation: 'none',
+ background: "#ffffff" + OPACITY[5],
+ secondary: "#ffffff" + OPACITY[5],
+ elevation: "none",
},
popover: {
- background: '#1b2033',
- secondary: '#ffffff' + OPACITY[5],
- elevation: 'none',
+ background: "#1b2033",
+ secondary: "#ffffff" + OPACITY[5],
+ elevation: "none",
},
modal: {
- background: '#0F1024',
+ background: "#0F1024",
},
font: {
primary: '"Inter", sans-serif',
diff --git a/builder/src/utils.js b/builder/src/utils.js
index 2f3c107f8..72f5e0d2b 100644
--- a/builder/src/utils.js
+++ b/builder/src/utils.js
@@ -1,26 +1,26 @@
function fallbackCopyTextToClipboard(text) {
- const textArea = document.createElement('textarea')
- textArea.value = text
+ const textArea = document.createElement("textarea");
+ textArea.value = text;
// Avoid scrolling to bottom
- textArea.style.top = '0'
- textArea.style.left = '0'
- textArea.style.position = 'fixed'
+ textArea.style.top = "0";
+ textArea.style.left = "0";
+ textArea.style.position = "fixed";
- document.body.appendChild(textArea)
- textArea.focus()
- textArea.select()
+ document.body.appendChild(textArea);
+ textArea.focus();
+ textArea.select();
try {
- const successful = document.execCommand('copy')
- const msg = successful ? 'successful' : 'unsuccessful'
- console.log('Fallback: Copying text command was ' + msg)
- document.body.removeChild(textArea)
- return true
+ const successful = document.execCommand("copy");
+ const msg = successful ? "successful" : "unsuccessful";
+ console.log("Fallback: Copying text command was " + msg);
+ document.body.removeChild(textArea);
+ return true;
} catch (err) {
- console.error('Fallback: Oops, unable to copy', err)
- document.body.removeChild(textArea)
- return false
+ console.error("Fallback: Oops, unable to copy", err);
+ document.body.removeChild(textArea);
+ return false;
}
}
@@ -28,14 +28,14 @@ export async function copyTextToClipboard(text) {
if (navigator.clipboard) {
return await navigator.clipboard.writeText(text).then(
function () {
- console.log('Async: Copying to clipboard was successful!')
- return true
+ console.log("Async: Copying to clipboard was successful!");
+ return true;
},
function (err) {
- console.error('Async: Could not copy text: ', err)
- return fallbackCopyTextToClipboard(text)
+ console.error("Async: Could not copy text: ", err);
+ return fallbackCopyTextToClipboard(text);
}
- )
+ );
}
- return fallbackCopyTextToClipboard(text)
+ return fallbackCopyTextToClipboard(text);
}
diff --git a/builder/src/wormhole-config.json b/builder/src/wormhole-config.json
index 1a28c63ea..b9f16b3fa 100644
--- a/builder/src/wormhole-config.json
+++ b/builder/src/wormhole-config.json
@@ -1,4 +1,17 @@
{
"networks": ["goerli", "bsc", "fuji", "fantom", "alfajores", "solana"],
- "tokens": ["ETH", "WETH", "USDC", "MATIC", "WMATIC", "BNB", "WBNB", "AVAX", "WAVAX", "FTM", "WFTM", "CELO"]
+ "tokens": [
+ "ETH",
+ "WETH",
+ "USDC",
+ "MATIC",
+ "WMATIC",
+ "BNB",
+ "WBNB",
+ "AVAX",
+ "WAVAX",
+ "FTM",
+ "WFTM",
+ "CELO"
+ ]
}
diff --git a/package-lock.json b/package-lock.json
index c16b100f2..2324ee40a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,9 +6,10 @@
"": {
"name": "wormhole-foundation",
"workspaces": [
- "wormhole-connect",
"sdk",
- "builder"
+ "wormhole-connect",
+ "builder",
+ "wormhole-connect-loader"
],
"dependencies": {
"tss-react": "^4.7.7"
@@ -42,6 +43,18 @@
"web-vitals": "^2.1.4"
}
},
+ "builder/node_modules/@wormhole-foundation/wormhole-connect": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/@wormhole-foundation/wormhole-connect/-/wormhole-connect-0.0.4.tgz",
+ "integrity": "sha512-txm+8XDO1veJK/zydgm141QfjY9zCw7eWJ7tMpXWgheaqtPrMMOY6q+x3+iCVnuL4gbdUsf2Je8GheGq8sLohg==",
+ "dependencies": {
+ "@mui/material": "^5.12.1"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ }
+ },
"node_modules/@adobe/css-tools": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz",
@@ -2640,6 +2653,15 @@
"postcss-selector-parser": "^6.0.10"
}
},
+ "node_modules/@discoveryjs/json-ext": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/@emotion/babel-plugin": {
"version": "11.10.6",
"license": "MIT",
@@ -10421,18 +10443,54 @@
"@xtuc/long": "4.2.2"
}
},
- "node_modules/@wormhole-foundation/wormhole-connect": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/@wormhole-foundation/wormhole-connect/-/wormhole-connect-0.0.4.tgz",
- "integrity": "sha512-txm+8XDO1veJK/zydgm141QfjY9zCw7eWJ7tMpXWgheaqtPrMMOY6q+x3+iCVnuL4gbdUsf2Je8GheGq8sLohg==",
- "dependencies": {
- "@mui/material": "^5.12.1"
+ "node_modules/@webpack-cli/configtest": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
+ "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.15.0"
},
"peerDependencies": {
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
}
},
+ "node_modules/@webpack-cli/info": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz",
+ "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
+ }
+ },
+ "node_modules/@webpack-cli/serve": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz",
+ "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
+ },
+ "peerDependenciesMeta": {
+ "webpack-dev-server": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@wormhole-foundation/wormhole-connect": {
+ "resolved": "wormhole-connect-loader",
+ "link": true
+ },
"node_modules/@wormhole-foundation/wormhole-connect-app": {
"resolved": "wormhole-connect",
"link": true
@@ -12414,6 +12472,20 @@
"node": ">=0.8"
}
},
+ "node_modules/clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/clone-response": {
"version": "1.0.3",
"license": "MIT",
@@ -14011,6 +14083,18 @@
"node": ">=8.0.0"
}
},
+ "node_modules/envinfo": {
+ "version": "7.10.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz",
+ "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==",
+ "dev": true,
+ "bin": {
+ "envinfo": "dist/cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/errno": {
"version": "0.1.8",
"license": "MIT",
@@ -16094,6 +16178,15 @@
"version": "1.0.0",
"license": "MIT"
},
+ "node_modules/fastest-levenshtein": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.9.1"
+ }
+ },
"node_modules/fastq": {
"version": "1.15.0",
"license": "ISC",
@@ -17719,6 +17812,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/is-potential-custom-element-name": {
"version": "1.0.1",
"license": "MIT"
@@ -17871,6 +17976,15 @@
"version": "2.0.0",
"license": "ISC"
},
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/isomorphic-ws": {
"version": "4.0.1",
"license": "MIT",
@@ -27033,6 +27147,18 @@
"buffer": "6.0.3"
}
},
+ "node_modules/shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"license": "MIT",
@@ -28516,6 +28642,128 @@
"version": "4.0.0",
"license": "ISC"
},
+ "node_modules/ts-loader": {
+ "version": "9.4.4",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz",
+ "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "enhanced-resolve": "^5.0.0",
+ "micromatch": "^4.0.0",
+ "semver": "^7.3.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "typescript": "*",
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/ts-loader/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/ts-loader/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/ts-loader/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/ts-loader/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/ts-loader/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ts-loader/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ts-loader/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ts-loader/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ts-loader/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
"node_modules/tsconfig-paths": {
"version": "3.14.2",
"license": "MIT",
@@ -29663,6 +29911,81 @@
}
}
},
+ "node_modules/webpack-cli": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz",
+ "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
+ "dev": true,
+ "dependencies": {
+ "@discoveryjs/json-ext": "^0.5.0",
+ "@webpack-cli/configtest": "^2.1.1",
+ "@webpack-cli/info": "^2.0.2",
+ "@webpack-cli/serve": "^2.0.5",
+ "colorette": "^2.0.14",
+ "commander": "^10.0.1",
+ "cross-spawn": "^7.0.3",
+ "envinfo": "^7.7.3",
+ "fastest-levenshtein": "^1.0.12",
+ "import-local": "^3.0.2",
+ "interpret": "^3.1.1",
+ "rechoir": "^0.8.0",
+ "webpack-merge": "^5.7.3"
+ },
+ "bin": {
+ "webpack-cli": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x"
+ },
+ "peerDependenciesMeta": {
+ "@webpack-cli/generators": {
+ "optional": true
+ },
+ "webpack-bundle-analyzer": {
+ "optional": true
+ },
+ "webpack-dev-server": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-cli/node_modules/commander": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/webpack-cli/node_modules/interpret": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
+ "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack-cli/node_modules/rechoir": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
+ "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.20.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
"node_modules/webpack-dev-middleware": {
"version": "5.3.3",
"license": "MIT",
@@ -29896,6 +30219,19 @@
"node": ">=10.13.0"
}
},
+ "node_modules/webpack-merge": {
+ "version": "5.9.0",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz",
+ "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==",
+ "dev": true,
+ "dependencies": {
+ "clone-deep": "^4.0.1",
+ "wildcard": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/webpack-sources": {
"version": "3.2.3",
"license": "MIT",
@@ -30062,6 +30398,12 @@
"bs58check": "<3.0.0"
}
},
+ "node_modules/wildcard": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
+ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
+ "dev": true
+ },
"node_modules/word-wrap": {
"version": "1.2.3",
"license": "MIT",
@@ -31136,6 +31478,216 @@
"react-dom": "^18.2.0"
}
},
+ "wormhole-connect-loader": {
+ "version": "0.0.12",
+ "license": "ISC",
+ "dependencies": {
+ "@mui/material": "^5.12.1"
+ },
+ "devDependencies": {
+ "@testing-library/jest-dom": "^5.16.5",
+ "@testing-library/react": "^13.4.0",
+ "@testing-library/user-event": "^13.5.0",
+ "@types/jest": "^27.5.2",
+ "@types/node": "^16.18.23",
+ "@types/react": "^18.0.37",
+ "@types/react-dom": "^18.0.11",
+ "babel-loader": "^9.1.2",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "ts-loader": "^9.4.2",
+ "typescript": "^4.9.5",
+ "webpack": "^5.79.0",
+ "webpack-cli": "^5.0.1"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ }
+ },
+ "wormhole-connect-loader/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "wormhole-connect-loader/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "wormhole-connect-loader/node_modules/babel-loader": {
+ "version": "9.1.3",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz",
+ "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==",
+ "dev": true,
+ "dependencies": {
+ "find-cache-dir": "^4.0.0",
+ "schema-utils": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14.15.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0",
+ "webpack": ">=5"
+ }
+ },
+ "wormhole-connect-loader/node_modules/find-cache-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz",
+ "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==",
+ "dev": true,
+ "dependencies": {
+ "common-path-prefix": "^3.0.0",
+ "pkg-dir": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "wormhole-connect-loader/node_modules/find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "wormhole-connect-loader/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "wormhole-connect-loader/node_modules/locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "wormhole-connect-loader/node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "wormhole-connect-loader/node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "wormhole-connect-loader/node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "wormhole-connect-loader/node_modules/pkg-dir": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
+ "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "wormhole-connect-loader/node_modules/schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "wormhole-connect-loader/node_modules/yocto-queue": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
+ "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"wormhole-connect/node_modules/@blocto/sdk": {
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/@blocto/sdk/-/sdk-0.3.6.tgz",
@@ -32996,6 +33548,12 @@
"version": "2.2.0",
"requires": {}
},
+ "@discoveryjs/json-ext": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
+ "dev": true
+ },
"@emotion/babel-plugin": {
"version": "11.10.6",
"requires": {
@@ -38480,12 +39038,164 @@
"@xtuc/long": "4.2.2"
}
},
+ "@webpack-cli/configtest": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
+ "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==",
+ "dev": true,
+ "requires": {}
+ },
+ "@webpack-cli/info": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz",
+ "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==",
+ "dev": true,
+ "requires": {}
+ },
+ "@webpack-cli/serve": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz",
+ "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==",
+ "dev": true,
+ "requires": {}
+ },
"@wormhole-foundation/wormhole-connect": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/@wormhole-foundation/wormhole-connect/-/wormhole-connect-0.0.4.tgz",
- "integrity": "sha512-txm+8XDO1veJK/zydgm141QfjY9zCw7eWJ7tMpXWgheaqtPrMMOY6q+x3+iCVnuL4gbdUsf2Je8GheGq8sLohg==",
+ "version": "file:wormhole-connect-loader",
"requires": {
- "@mui/material": "^5.12.1"
+ "@mui/material": "^5.12.1",
+ "@testing-library/jest-dom": "^5.16.5",
+ "@testing-library/react": "^13.4.0",
+ "@testing-library/user-event": "^13.5.0",
+ "@types/jest": "^27.5.2",
+ "@types/node": "^16.18.23",
+ "@types/react": "^18.0.37",
+ "@types/react-dom": "^18.0.11",
+ "babel-loader": "^9.1.2",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "ts-loader": "^9.4.2",
+ "typescript": "^4.9.5",
+ "webpack": "^5.79.0",
+ "webpack-cli": "^5.0.1"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.3"
+ }
+ },
+ "babel-loader": {
+ "version": "9.1.3",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz",
+ "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==",
+ "dev": true,
+ "requires": {
+ "find-cache-dir": "^4.0.0",
+ "schema-utils": "^4.0.0"
+ }
+ },
+ "find-cache-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz",
+ "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==",
+ "dev": true,
+ "requires": {
+ "common-path-prefix": "^3.0.0",
+ "pkg-dir": "^7.0.0"
+ }
+ },
+ "find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^6.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "dev": true,
+ "requires": {
+ "yocto-queue": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^4.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
+ "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^6.3.0"
+ }
+ },
+ "schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ }
+ },
+ "yocto-queue": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
+ "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
+ "dev": true
+ }
}
},
"@wormhole-foundation/wormhole-connect-app": {
@@ -40495,6 +41205,17 @@
"clone": {
"version": "2.1.2"
},
+ "clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ }
+ },
"clone-response": {
"version": "1.0.3",
"requires": {
@@ -41490,6 +42211,12 @@
"cross-spawn": "^7.0.0"
}
},
+ "envinfo": {
+ "version": "7.10.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz",
+ "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==",
+ "dev": true
+ },
"errno": {
"version": "0.1.8",
"requires": {
@@ -43005,6 +43732,12 @@
"fast-stable-stringify": {
"version": "1.0.0"
},
+ "fastest-levenshtein": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
+ "dev": true
+ },
"fastq": {
"version": "1.15.0",
"requires": {
@@ -43939,6 +44672,15 @@
"is-plain-obj": {
"version": "3.0.0"
},
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
"is-potential-custom-element-name": {
"version": "1.0.1"
},
@@ -44020,6 +44762,12 @@
"isexe": {
"version": "2.0.0"
},
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ },
"isomorphic-ws": {
"version": "4.0.1",
"requires": {}
@@ -49712,6 +50460,15 @@
"buffer": "6.0.3"
}
},
+ "shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.2"
+ }
+ },
"shebang-command": {
"version": "2.0.0",
"requires": {
@@ -50663,6 +51420,93 @@
}
}
},
+ "ts-loader": {
+ "version": "9.4.4",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz",
+ "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.1.0",
+ "enhanced-resolve": "^5.0.0",
+ "micromatch": "^4.0.0",
+ "semver": "^7.3.4"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
+ }
+ },
"tsconfig-paths": {
"version": "3.14.2",
"requires": {
@@ -51458,6 +52302,50 @@
"webpack-sources": "^3.2.3"
}
},
+ "webpack-cli": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz",
+ "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
+ "dev": true,
+ "requires": {
+ "@discoveryjs/json-ext": "^0.5.0",
+ "@webpack-cli/configtest": "^2.1.1",
+ "@webpack-cli/info": "^2.0.2",
+ "@webpack-cli/serve": "^2.0.5",
+ "colorette": "^2.0.14",
+ "commander": "^10.0.1",
+ "cross-spawn": "^7.0.3",
+ "envinfo": "^7.7.3",
+ "fastest-levenshtein": "^1.0.12",
+ "import-local": "^3.0.2",
+ "interpret": "^3.1.1",
+ "rechoir": "^0.8.0",
+ "webpack-merge": "^5.7.3"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "dev": true
+ },
+ "interpret": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
+ "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
+ "dev": true
+ },
+ "rechoir": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
+ "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.20.0"
+ }
+ }
+ }
+ },
"webpack-dev-middleware": {
"version": "5.3.3",
"requires": {
@@ -51593,6 +52481,16 @@
}
}
},
+ "webpack-merge": {
+ "version": "5.9.0",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz",
+ "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==",
+ "dev": true,
+ "requires": {
+ "clone-deep": "^4.0.1",
+ "wildcard": "^2.0.0"
+ }
+ },
"webpack-sources": {
"version": "3.2.3"
},
@@ -51708,6 +52606,12 @@
"bs58check": "<3.0.0"
}
},
+ "wildcard": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
+ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
+ "dev": true
+ },
"word-wrap": {
"version": "1.2.3"
},
@@ -51947,6 +52851,16 @@
"tss-react": "^4.8.2",
"typescript": "^4.9.5",
"web-vitals": "^2.1.4"
+ },
+ "dependencies": {
+ "@wormhole-foundation/wormhole-connect": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/@wormhole-foundation/wormhole-connect/-/wormhole-connect-0.0.4.tgz",
+ "integrity": "sha512-txm+8XDO1veJK/zydgm141QfjY9zCw7eWJ7tMpXWgheaqtPrMMOY6q+x3+iCVnuL4gbdUsf2Je8GheGq8sLohg==",
+ "requires": {
+ "@mui/material": "^5.12.1"
+ }
+ }
}
},
"wrap-ansi": {
diff --git a/package.json b/package.json
index c54a3a2fc..d8bb3f620 100644
--- a/package.json
+++ b/package.json
@@ -2,14 +2,16 @@
"name": "wormhole-foundation",
"private": true,
"workspaces": [
- "wormhole-connect",
"sdk",
+ "wormhole-connect",
+ "wormhole-connect-loader",
"builder"
],
"scripts": {
"build": "npm run build --workspaces --if-present",
"compile": "npm run compile --workspaces --if-present",
"lint": "npm run lint --workspaces --if-present",
+ "lint:ci": "npm run lint:ci --workspaces --if-present",
"wormhole-connect": "npm run workspace @wormhole-foundation/wormhole-connect",
"sdk": "npm run workspace @wormhole-foundation/wormhole-connect-sdk",
"builder": "npm run workspace wormhole-connect-builder",
diff --git a/sdk/package.json b/sdk/package.json
index 63cdad61f..0d6c6f4f3 100644
--- a/sdk/package.json
+++ b/sdk/package.json
@@ -42,12 +42,24 @@
"typescript": "^4.9.4"
},
"scripts": {
- "lint": "npm run prettier && eslint --fix",
+ "lint": "npm run prettier && eslint --fix ./src",
+ "lint:ci": "prettier -c ./src && eslint --max-warnings=0 ./src",
"prettier": "prettier --write ./src",
"build": "tsc --build",
"check": "tsc --noEmit",
"doc": "typedoc src/index.ts --out ../docs"
},
+ "eslintConfig": {
+ "extends": [
+ "react-app",
+ "react-app/jest"
+ ],
+ "rules": {
+ "eqeqeq": "off",
+ "no-empty-pattern": "off",
+ "@typescript-eslint/no-useless-constructor": "off"
+ }
+ },
"repository": {
"type": "git",
"url": "git+https://github.com/wormhole-foundation/wormhole-connect.git"
diff --git a/sdk/src/contexts/solana/utils/wormhole/coder/instruction.ts b/sdk/src/contexts/solana/utils/wormhole/coder/instruction.ts
index e33a10063..2b10b5f66 100644
--- a/sdk/src/contexts/solana/utils/wormhole/coder/instruction.ts
+++ b/sdk/src/contexts/solana/utils/wormhole/coder/instruction.ts
@@ -6,6 +6,22 @@ import { IdlField, IdlStateMethod } from '../../anchor';
import * as borsh from '@coral-xyz/borsh';
import { IdlCoder } from './idl';
+/** Solitaire enum of existing the Core Bridge's instructions.
+ *
+ * https://github.com/certusone/wormhole/blob/main/solana/bridge/program/src/lib.rs#L92
+ */
+export enum WormholeInstruction {
+ Initialize,
+ PostMessage,
+ PostVaa,
+ SetFees,
+ TransferFees,
+ UpgradeContract,
+ UpgradeGuardianSet,
+ VerifySignatures,
+ PostMessageUnreliable, // sounds useful
+}
+
// Inspired by coral-xyz/anchor
//
// https://github.com/coral-xyz/anchor/blob/master/ts/packages/anchor/src/coder/borsh/instruction.ts
@@ -85,22 +101,6 @@ export class WormholeInstructionCoder implements InstructionCoder {
}
}
-/** Solitaire enum of existing the Core Bridge's instructions.
- *
- * https://github.com/certusone/wormhole/blob/main/solana/bridge/program/src/lib.rs#L92
- */
-export enum WormholeInstruction {
- Initialize,
- PostMessage,
- PostVaa,
- SetFees,
- TransferFees,
- UpgradeContract,
- UpgradeGuardianSet,
- VerifySignatures,
- PostMessageUnreliable, // sounds useful
-}
-
function encodeWormholeInstructionData(
discriminator: number,
data?: Buffer,
diff --git a/wormhole-connect-loader/package.json b/wormhole-connect-loader/package.json
index 9bb610bf4..b815f1f0f 100644
--- a/wormhole-connect-loader/package.json
+++ b/wormhole-connect-loader/package.json
@@ -25,6 +25,7 @@
"react-dom": "^18.2.0"
},
"scripts": {
+ "lint:ci": "prettier -c ./src && eslint --max-warnings=0 ./src",
"build:cjs": "tsc -p tsconfig.cjs.json",
"build:esm": "tsc -p tsconfig.esm.json",
"build": "rm -rf lib && npm run build:cjs && npm run build:esm"
diff --git a/wormhole-connect-loader/src/theme.ts b/wormhole-connect-loader/src/theme.ts
index bc34e0648..0edddc6a1 100644
--- a/wormhole-connect-loader/src/theme.ts
+++ b/wormhole-connect-loader/src/theme.ts
@@ -1,11 +1,4 @@
-import {
- grey,
- green,
- orange,
- red,
- cyan,
- purple,
-} from '@mui/material/colors';
+import { grey, green, orange, red, cyan, purple } from "@mui/material/colors";
export type PaletteColor = {
50: string;
@@ -72,51 +65,51 @@ export type Theme = {
};
export const OPACITY = {
- 0: '00',
- 5: '0C',
- 7: '0F',
- 10: '19',
- 15: '26',
- 20: '33',
- 25: '3F',
- 30: '4C',
- 35: '59',
- 40: '66',
- 45: '72',
- 50: '7F',
- 55: '8C',
- 60: '99',
- 65: 'A5',
- 70: 'B2',
- 75: 'BF',
- 80: 'CC',
- 85: 'D8',
- 90: 'E5',
- 95: 'F2',
- 100: 'FF',
+ 0: "00",
+ 5: "0C",
+ 7: "0F",
+ 10: "19",
+ 15: "26",
+ 20: "33",
+ 25: "3F",
+ 30: "4C",
+ 35: "59",
+ 40: "66",
+ 45: "72",
+ 50: "7F",
+ 55: "8C",
+ 60: "99",
+ 65: "A5",
+ 70: "B2",
+ 75: "BF",
+ 80: "CC",
+ 85: "D8",
+ 90: "E5",
+ 95: "F2",
+ 100: "FF",
};
export const light: Theme = {
primary: {
- 50: '#161718',
- 100: '#2d2e30',
- 200: '#444548',
- 300: '#5b5c60',
- 400: '#727479',
- 500: '#898b91',
- 600: '#a0a2a9',
- 700: '#b7b9c1',
- 800: '#ced0d9',
- 900: '#E5E8F2',
- A100: '#ceced1',
- A200: '#9d9ea4',
- A400: '#535660',
- A700: '#0a0e1c',
+ 50: "#161718",
+ 100: "#2d2e30",
+ 200: "#444548",
+ 300: "#5b5c60",
+ 400: "#727479",
+ 500: "#898b91",
+ 600: "#a0a2a9",
+ 700: "#b7b9c1",
+ 800: "#ced0d9",
+ 900: "#E5E8F2",
+ A100: "#ceced1",
+ A200: "#9d9ea4",
+ A400: "#535660",
+ A700: "#0a0e1c",
},
secondary: grey,
- divider: '#a0a2a9',
+ divider: "#a0a2a9",
background: {
- default: '#E5E8F2',
+ default: "#E5E8F2",
},
text: {
primary: grey[900],
@@ -124,48 +117,48 @@ export const light: Theme = {
},
error: red,
info: {
- 50: '#d1e3f9',
- 100: '#c8def7',
- 200: '#bfd8f6',
- 300: '#b6d3f5',
- 400: '#adcdf4',
- 500: '#A4C8F3',
- 600: '#93b4da',
- 700: '#83a0c2',
- 800: '#728caa',
- 900: '#627891',
- A100: '#A4C8F3',
- A200: '#A4C8F3',
- A400: '#A4C8F3',
- A700: '#A4C8F3',
+ 50: "#d1e3f9",
+ 100: "#c8def7",
+ 200: "#bfd8f6",
+ 300: "#b6d3f5",
+ 400: "#adcdf4",
+ 500: "#A4C8F3",
+ 600: "#93b4da",
+ 700: "#83a0c2",
+ 800: "#728caa",
+ 900: "#627891",
+ A100: "#A4C8F3",
+ A200: "#A4C8F3",
+ A400: "#A4C8F3",
+ A700: "#A4C8F3",
},
success: green,
warning: orange,
button: {
- primary: '#ffffff',
+ primary: "#ffffff",
primaryText: grey[900],
- disabled: '#c8cad1',
+ disabled: "#c8cad1",
disabledText: grey[800],
- action: '#F3A01E',
- actionText: '#000000',
- hover: '#b7b9c1',
+ action: "#F3A01E",
+ actionText: "#000000",
+ hover: "#b7b9c1",
},
options: {
- hover: '#f9f9fb',
- select: '#F0F0F5',
+ hover: "#f9f9fb",
+ select: "#F0F0F5",
},
card: {
- background: '#ffffff',
- elevation: '10px 10px 30px 15px #CCD2E7',
- secondary: '#F0F0F5',
+ background: "#ffffff",
+ elevation: "10px 10px 30px 15px #CCD2E7",
+ secondary: "#F0F0F5",
},
popover: {
- background: '#ffffff',
- elevation: '10px 10px 30px 15px #CCD2E7',
- secondary: '#F0F0F5',
+ background: "#ffffff",
+ elevation: "10px 10px 30px 15px #CCD2E7",
+ secondary: "#F0F0F5",
},
modal: {
- background: '#ffffff',
+ background: "#ffffff",
},
font: {
primary: '"Inter", sans-serif',
@@ -176,12 +169,12 @@ export const light: Theme = {
export const dark: Theme = {
primary: grey,
secondary: grey,
- divider: '#ffffff' + OPACITY[20],
+ divider: "#ffffff" + OPACITY[20],
background: {
- default: '#212121',
+ default: "#212121",
},
text: {
- primary: '#ffffff',
+ primary: "#ffffff",
secondary: grey[500],
},
error: red,
@@ -189,30 +182,30 @@ export const dark: Theme = {
success: green,
warning: orange,
button: {
- primary: '#ffffff' + OPACITY[20],
- primaryText: '#ffffff',
- disabled: '#ffffff' + OPACITY[10],
- disabledText: '#ffffff' + OPACITY[40],
+ primary: "#ffffff" + OPACITY[20],
+ primaryText: "#ffffff",
+ disabled: "#ffffff" + OPACITY[10],
+ disabledText: "#ffffff" + OPACITY[40],
action: purple[400],
- actionText: '#000000',
- hover: '#ffffff' + OPACITY[7],
+ actionText: "#000000",
+ hover: "#ffffff" + OPACITY[7],
},
options: {
- hover: '#373737',
- select: '#3F3F3F',
+ hover: "#373737",
+ select: "#3F3F3F",
},
card: {
- background: '#2F2F2F',
- secondary: '#474747',
- elevation: 'none',
+ background: "#2F2F2F",
+ secondary: "#474747",
+ elevation: "none",
},
popover: {
- background: '#111111',
- secondary: '#ffffff' + OPACITY[5],
- elevation: 'none',
+ background: "#111111",
+ secondary: "#ffffff" + OPACITY[5],
+ elevation: "none",
},
modal: {
- background: '#2d2d2d',
+ background: "#2d2d2d",
},
font: {
primary: '"Inter", sans-serif',
@@ -223,89 +216,89 @@ export const dark: Theme = {
export const defaultTheme: Theme = {
primary: grey,
secondary: grey,
- divider: '#ffffff' + OPACITY[20],
+ divider: "#ffffff" + OPACITY[20],
background: {
- default: 'wormhole',
+ default: "wormhole",
},
text: {
- primary: '#ffffff',
+ primary: "#ffffff",
secondary: grey[500],
},
error: red,
info: {
- 50: '#97a5b7',
- 100: '#8293a9',
- 200: '#6e819a',
- 300: '#596f8c',
- 400: '#445d7e',
- 500: '#304C70',
- 600: '#2b4464',
- 700: '#263c59',
- 800: '#21354e',
- 900: '#1c2d43',
- A100: '#304C70',
- A200: '#304C70',
- A400: '#304C70',
- A700: '#304C70',
+ 50: "#97a5b7",
+ 100: "#8293a9",
+ 200: "#6e819a",
+ 300: "#596f8c",
+ 400: "#445d7e",
+ 500: "#304C70",
+ 600: "#2b4464",
+ 700: "#263c59",
+ 800: "#21354e",
+ 900: "#1c2d43",
+ A100: "#304C70",
+ A200: "#304C70",
+ A400: "#304C70",
+ A700: "#304C70",
},
// success: green,
success: {
- 50: '#66d6cd',
- 100: '#4dcfc4',
- 200: '#33c8bc',
- 300: '#1ac1b4',
- 400: '#01BBAC',
- 500: '#00a89a',
- 600: '#009589',
- 700: '#008278',
- 800: '#007067',
- 900: '#005d56',
- A100: '#00a89a',
- A200: '#00a89a',
- A400: '#00a89a',
- A700: '#00a89a',
+ 50: "#66d6cd",
+ 100: "#4dcfc4",
+ 200: "#33c8bc",
+ 300: "#1ac1b4",
+ 400: "#01BBAC",
+ 500: "#00a89a",
+ 600: "#009589",
+ 700: "#008278",
+ 800: "#007067",
+ 900: "#005d56",
+ A100: "#00a89a",
+ A200: "#00a89a",
+ A400: "#00a89a",
+ A700: "#00a89a",
},
warning: {
- 50: '#ffe3a4',
- 100: '#ffdd91',
- 200: '#ffd77f',
- 300: '#ffd26d',
- 400: '#ffcc5b',
- 500: '#FFC749',
- 600: '#e5b341',
- 700: '#cc9f3a',
- 800: '#b28b33',
- 900: '#99772b',
- A100: '#FFC749',
- A200: '#FFC749',
- A400: '#FFC749',
- A700: '#FFC749',
+ 50: "#ffe3a4",
+ 100: "#ffdd91",
+ 200: "#ffd77f",
+ 300: "#ffd26d",
+ 400: "#ffcc5b",
+ 500: "#FFC749",
+ 600: "#e5b341",
+ 700: "#cc9f3a",
+ 800: "#b28b33",
+ 900: "#99772b",
+ A100: "#FFC749",
+ A200: "#FFC749",
+ A400: "#FFC749",
+ A700: "#FFC749",
},
button: {
- primary: '#ffffff' + OPACITY[10],
- primaryText: '#ffffff',
- disabled: '#ffffff' + OPACITY[7],
- disabledText: '#ffffff' + OPACITY[40],
- action: '#ffffff',
- actionText: '#000000',
- hover: '#ffffff' + OPACITY[7],
+ primary: "#ffffff" + OPACITY[10],
+ primaryText: "#ffffff",
+ disabled: "#ffffff" + OPACITY[7],
+ disabledText: "#ffffff" + OPACITY[40],
+ action: "#ffffff",
+ actionText: "#000000",
+ hover: "#ffffff" + OPACITY[7],
},
options: {
- hover: '#ffffff' + OPACITY[7],
- select: '#ffffff' + OPACITY[10],
+ hover: "#ffffff" + OPACITY[7],
+ select: "#ffffff" + OPACITY[10],
},
card: {
- background: '#ffffff' + OPACITY[5],
- secondary: '#ffffff' + OPACITY[5],
- elevation: 'none',
+ background: "#ffffff" + OPACITY[5],
+ secondary: "#ffffff" + OPACITY[5],
+ elevation: "none",
},
popover: {
- background: '#1b2033',
- secondary: '#ffffff' + OPACITY[5],
- elevation: 'none',
+ background: "#1b2033",
+ secondary: "#ffffff" + OPACITY[5],
+ elevation: "none",
},
modal: {
- background: '#0F1024',
+ background: "#0F1024",
},
font: {
primary: '"Inter", sans-serif',
diff --git a/wormhole-connect/package.json b/wormhole-connect/package.json
index e7e56bf03..68bbf23bc 100644
--- a/wormhole-connect/package.json
+++ b/wormhole-connect/package.json
@@ -67,9 +67,10 @@
},
"scripts": {
"lint": "npm run prettier && eslint --fix ./src",
+ "lint:ci": "prettier -c ./src && eslint --max-warnings=0 ./src",
"prettier": "prettier --write ./src",
"start": "react-app-rewired start",
- "build": "NODE_ENV=production GENERATE_SOURCEMAP=false react-app-rewired build --max_old_space_size=4096 build",
+ "build": "NODE_ENV=production GENERATE_SOURCEMAP=false react-app-rewired --max_old_space_size=6144 build",
"test": "jest ./tests/*.test.ts --detectOpenHandles",
"eject": "react-app-rewired eject"
},
diff --git a/wormhole-connect/src/utils/index.ts b/wormhole-connect/src/utils/index.ts
index 7dbd3f90b..0015edb7d 100644
--- a/wormhole-connect/src/utils/index.ts
+++ b/wormhole-connect/src/utils/index.ts
@@ -203,4 +203,4 @@ export function toNormalizedDecimals(
export async function sleep(timeout: number) {
return new Promise((resolve) => setTimeout(resolve, timeout));
-}
\ No newline at end of file
+}