├── .gitignore ├── README.md ├── docs ├── apple-touch-icon.png ├── assets │ ├── index-5691f1c2.js │ └── index-f6cd27ed.css ├── index.html ├── privacy-policy.txt ├── tc-verify.json ├── terms-of-use.txt └── tonconnect-manifest.json ├── index.html ├── package-lock.json ├── package.json ├── public ├── apple-touch-icon.png ├── privacy-policy.txt ├── tc-verify.json ├── terms-of-use.txt └── tonconnect-manifest.json ├── src ├── App.scss ├── App.tsx ├── TonProofDemoApi.ts ├── assets │ └── react.svg ├── components │ ├── Footer │ │ ├── ColorsModal │ │ │ ├── ColorsModal.tsx │ │ │ └── style.scss │ │ ├── ColorsSelect │ │ │ ├── ColorsSelect.tsx │ │ │ └── style.scss │ │ ├── Footer.tsx │ │ └── footer.scss │ ├── Header │ │ ├── Header.tsx │ │ └── header.scss │ ├── TonProofDemo │ │ ├── TonProofDemo.tsx │ │ └── style.scss │ └── TxForm │ │ ├── TxForm.tsx │ │ └── style.scss ├── hooks │ └── useInterval.ts ├── index.scss ├── main.tsx ├── patch-local-storage-for-github-pages.ts ├── trackers.ts └── vite-env.d.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | .ssh 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Demo dApp with @tonconnect/ui-react 2 | 3 | This Demo dApp showcases the integration with @tonconnect/ui-react. Experience it live at [Demo dApp with Wallet](https://ton-connect.github.io/demo-dapp-with-wallet/). 4 | 5 | ## Learn More About Ton Connect 6 | 7 | To understand more about Ton Connect and how it enables blockchain functionalities in your applications, refer to the following resources: 8 | - Ton Connect Documentation: [https://docs.ton.org/develop/dapps/ton-connect/](https://docs.ton.org/develop/dapps/ton-connect/) 9 | - Ton Connect SDK and UI Library on GitHub: [https://github.com/ton-connect/sdk/tree/main/packages/ui](https://github.com/ton-connect/sdk/tree/main/packages/ui) 10 | 11 | ## Installation 12 | 13 | ### Project Dependencies 14 | 15 | Install the necessary packages for this project: 16 | 17 | ```bash 18 | npm install 19 | ``` 20 | 21 | ### ngrok or localtunnel (Optional) 22 | 23 | Choose either ngrok or localtunnel to expose your local server to the internet for testing in Telegram. 24 | 25 | #### ngrok Installation 26 | 27 | ```bash 28 | npm install -g ngrok 29 | ``` 30 | 31 | ngrok Documentation: [https://ngrok.com/docs](https://ngrok.com/docs) 32 | 33 | #### localtunnel Installation 34 | 35 | ```bash 36 | npm install -g localtunnel 37 | ``` 38 | 39 | LocalTunnel Documentation: [https://localtunnel.github.io/www/](https://localtunnel.github.io/www/) 40 | 41 | ### Creating Telegram Mini Apps (Optional) 42 | 43 | 1. Open [@BotFather](https://t.me/BotFather) in Telegram. 44 | 2. Send the `/newbot` command to create a new bot. 45 | 3. Follow the prompts to set up your bot, providing all necessary information. 46 | 4. After the bot is created, send the `/newapp` command to BotFather. 47 | 5. Select your bot from the list. 48 | 6. Provide all the required information for your Mini App. 49 | 50 | 51 | ### Returning to the Application (Optional) 52 | 53 | To return to the application after interacting with the wallet, you must specify a `twaReturnUrl` in `src/App.tsx`. 54 | 55 | Here's a concise guide: 56 | 57 | - **twaReturnUrl**: This is the return URL used by Telegram Web Apps. Set it to redirect users back to your application after wallet interaction. Example: `'https://t.me/WebAppWalletBot/myapp'`. 58 | 59 | Here is a sample configuration for specifying a return URL: 60 | 61 | ```jsx 62 | 69 | ``` 70 | 71 | ### Adding a Custom Wallet (Optional) 72 | 73 | To integrate a custom wallet into your application, adjust the `walletsListConfiguration` in `src/App.tsx`. Include your wallet details in `includeWallets` and specify `universalLink`. 74 | 75 | Here's a concise guide: 76 | 77 | - **universalLink**: This URL is used to open the wallet directly from a web link. It should link to your wallet's bot or app. Example: `'https://t.me/wallet/start'`. 78 | 79 | Here is a sample configuration for adding a custom wallet: 80 | 81 | ```jsx 82 | 102 | ``` 103 | 104 | ## Running the Application 105 | 106 | ### Starting the Application 107 | 108 | To start the application, run: 109 | 110 | ```bash 111 | npm dev 112 | ``` 113 | 114 | The application will be accessible at [http://localhost:5173](http://localhost:5173). 115 | 116 | ### Exposing Your Local Server (Optional) 117 | 118 | #### Using ngrok 119 | 120 | ```bash 121 | ngrok http 5173 122 | ``` 123 | 124 | #### Using localtunnel 125 | 126 | ```bash 127 | lt --port 5173 128 | ``` 129 | 130 | After setting up ngrok or localtunnel, update your Telegram bot's configuration with the provided URL to ensure the bot points to your local development environment. 131 | 132 | ### Updating Telegram Bot Configuration (Optional) 133 | 134 | #### Update the Menu Button URL in Telegram Bot 135 | 136 | 1. Open [@BotFather](https://t.me/BotFather) in Telegram. 137 | 2. Send the `/mybots` command and select your bot. 138 | 3. Choose "Bot Settings" then "Menu Button" and finally "Configure menu button". 139 | 4. Enter the ngrok or localtunnel URL as the new destination. 140 | 141 | #### Update Mini Apps URL in Telegram 142 | 143 | 1. Open [@BotFather](https://t.me/BotFather) in Telegram. 144 | 2. Send the `/myapps` command and select your Mini App. 145 | 3. Choose "Edit Web App URL". 146 | 4. Enter the ngrok or localtunnel URL as the new destination. 147 | -------------------------------------------------------------------------------- /docs/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-connect/demo-dapp-with-wallet/71af027d55f9f5b3f7f15b4d0f6339055e148280/docs/apple-touch-icon.png -------------------------------------------------------------------------------- /docs/assets/index-f6cd27ed.css: -------------------------------------------------------------------------------- 1 | .app{height:100%;display:flex;flex-direction:column}.app>header{margin-bottom:10px}.footer{padding:20px;display:flex;gap:20px;justify-content:flex-end;align-items:center;flex-wrap:wrap}.footer>div>label{color:#fff;margin-right:5px}.footer-checkbox-container{display:flex;flex-direction:column}.footer-checkbox-container>span{color:#fff;font-weight:700;margin-bottom:4px}.footer-checkbox-container input{margin-left:3px}.colors-container>div{margin-bottom:20px}.colors-container>div>span{margin-right:14px;font-weight:700}.colors-container>div>label{margin-right:10px}.modal{position:fixed;left:0;top:0;bottom:0;right:0;z-index:10000000;background-color:#10161f;padding:20px;color:#fff}.modal>button{float:right}.modal__toggle{display:flex;justify-content:center;gap:20px}.modal__toggle>a{color:#fff}header{display:flex;align-items:center;justify-content:space-between;padding:10px 25px}header>span{font-size:30px;line-height:34px;color:#66aaeee8;font-weight:700}@media (max-width: 525px){header{flex-direction:column;gap:10px}header>*:nth-child(2){align-self:flex-end}}.send-tx-form{flex:1;display:flex;width:100%;flex-direction:column;gap:20px;padding:20px;align-items:center}.send-tx-form h3{color:#fff;opacity:.8;font-size:28px}.send-tx-form>div:nth-child(2){width:100%}.send-tx-form>div:nth-child(2) span{word-break:break-word}.send-tx-form>button{border:none;padding:7px 15px;border-radius:15px;cursor:pointer;background-color:#66aaeee8;color:#fff;font-size:16px;line-height:20px;transition:transform .1s ease-in-out}.send-tx-form>button:hover{transform:scale(1.03)}.send-tx-form>button:active{transform:scale(.97)}html,body,#root{height:100%}body{margin:0;background-color:#10161feb;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,monospace}*{box-sizing:border-box} 2 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Demo Dapp with @tonconnect/ui-react 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /docs/privacy-policy.txt: -------------------------------------------------------------------------------- 1 | Privacy Policy example 2 | ... 3 | -------------------------------------------------------------------------------- /docs/tc-verify.json: -------------------------------------------------------------------------------- 1 | { 2 | "payload": "9hE-Ov4dBR8AAAAAZT_L0NIswgedrN4hc4upm0e9vASVO4nl_MP5hbybtMYIfhkZ" 3 | } 4 | -------------------------------------------------------------------------------- /docs/terms-of-use.txt: -------------------------------------------------------------------------------- 1 | Terms of use example 2 | ... 3 | -------------------------------------------------------------------------------- /docs/tonconnect-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "url": "https://ton-connect.github.io/demo-dapp-with-wallet/", 3 | "name": "Demo Dapp with wallet", 4 | "iconUrl": "https://ton-connect.github.io/demo-dapp-with-wallet/apple-touch-icon.png", 5 | "termsOfUseUrl": "https://ton-connect.github.io/demo-dapp-with-wallet/terms-of-use.txt", 6 | "privacyPolicyUrl": "https://ton-connect.github.io/demo-dapp-with-wallet/privacy-policy.txt" 7 | } 8 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Demo Dapp with @tonconnect/ui-react 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-dapp-react-ui", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "demo-dapp-react-ui", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "@tonconnect/ui-react": "2.1.1-beta.0", 12 | "eruda": "^2.11.2", 13 | "react": "^17.0.0", 14 | "react-dom": "^17.0.0", 15 | "react-json-view": "^1.21.3" 16 | }, 17 | "devDependencies": { 18 | "@types/react": "^18.0.26", 19 | "@types/react-dom": "^18.0.9", 20 | "@vitejs/plugin-react": "^3.0.0", 21 | "sass": "^1.57.1", 22 | "typescript": "^4.9.3", 23 | "vite": "^4.0.0" 24 | } 25 | }, 26 | "../tonconnect/sdk/packages/ui-react": { 27 | "name": "@tonconnect/ui-react", 28 | "version": "2.0.0-beta.0", 29 | "extraneous": true, 30 | "license": "Apache-2.0", 31 | "dependencies": { 32 | "@tonconnect/ui": "^2.0.0-beta.0" 33 | }, 34 | "devDependencies": { 35 | "@types/react": "^18.0.26", 36 | "@types/react-dom": "^18.0.9", 37 | "@vitejs/plugin-react": "^3.0.0", 38 | "csstype": "^3.1.1", 39 | "eslint-plugin-react": "^7.31.11", 40 | "eslint-plugin-react-hooks": "^4.6.0", 41 | "typescript": "^4.9.3", 42 | "vite": "^4.0.0", 43 | "vite-plugin-dts": "^1.7.1" 44 | }, 45 | "peerDependencies": { 46 | "react": ">=17.0.0", 47 | "react-dom": ">=17.0.0" 48 | } 49 | }, 50 | "node_modules/@ampproject/remapping": { 51 | "version": "2.2.0", 52 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 53 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 54 | "dev": true, 55 | "dependencies": { 56 | "@jridgewell/gen-mapping": "^0.1.0", 57 | "@jridgewell/trace-mapping": "^0.3.9" 58 | }, 59 | "engines": { 60 | "node": ">=6.0.0" 61 | } 62 | }, 63 | "node_modules/@babel/code-frame": { 64 | "version": "7.21.4", 65 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", 66 | "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", 67 | "dev": true, 68 | "dependencies": { 69 | "@babel/highlight": "^7.18.6" 70 | }, 71 | "engines": { 72 | "node": ">=6.9.0" 73 | } 74 | }, 75 | "node_modules/@babel/compat-data": { 76 | "version": "7.21.4", 77 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", 78 | "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", 79 | "dev": true, 80 | "engines": { 81 | "node": ">=6.9.0" 82 | } 83 | }, 84 | "node_modules/@babel/core": { 85 | "version": "7.21.4", 86 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", 87 | "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", 88 | "dev": true, 89 | "dependencies": { 90 | "@ampproject/remapping": "^2.2.0", 91 | "@babel/code-frame": "^7.21.4", 92 | "@babel/generator": "^7.21.4", 93 | "@babel/helper-compilation-targets": "^7.21.4", 94 | "@babel/helper-module-transforms": "^7.21.2", 95 | "@babel/helpers": "^7.21.0", 96 | "@babel/parser": "^7.21.4", 97 | "@babel/template": "^7.20.7", 98 | "@babel/traverse": "^7.21.4", 99 | "@babel/types": "^7.21.4", 100 | "convert-source-map": "^1.7.0", 101 | "debug": "^4.1.0", 102 | "gensync": "^1.0.0-beta.2", 103 | "json5": "^2.2.2", 104 | "semver": "^6.3.0" 105 | }, 106 | "engines": { 107 | "node": ">=6.9.0" 108 | }, 109 | "funding": { 110 | "type": "opencollective", 111 | "url": "https://opencollective.com/babel" 112 | } 113 | }, 114 | "node_modules/@babel/generator": { 115 | "version": "7.21.4", 116 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", 117 | "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", 118 | "dev": true, 119 | "dependencies": { 120 | "@babel/types": "^7.21.4", 121 | "@jridgewell/gen-mapping": "^0.3.2", 122 | "@jridgewell/trace-mapping": "^0.3.17", 123 | "jsesc": "^2.5.1" 124 | }, 125 | "engines": { 126 | "node": ">=6.9.0" 127 | } 128 | }, 129 | "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { 130 | "version": "0.3.2", 131 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 132 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 133 | "dev": true, 134 | "dependencies": { 135 | "@jridgewell/set-array": "^1.0.1", 136 | "@jridgewell/sourcemap-codec": "^1.4.10", 137 | "@jridgewell/trace-mapping": "^0.3.9" 138 | }, 139 | "engines": { 140 | "node": ">=6.0.0" 141 | } 142 | }, 143 | "node_modules/@babel/helper-compilation-targets": { 144 | "version": "7.21.4", 145 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", 146 | "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", 147 | "dev": true, 148 | "dependencies": { 149 | "@babel/compat-data": "^7.21.4", 150 | "@babel/helper-validator-option": "^7.21.0", 151 | "browserslist": "^4.21.3", 152 | "lru-cache": "^5.1.1", 153 | "semver": "^6.3.0" 154 | }, 155 | "engines": { 156 | "node": ">=6.9.0" 157 | }, 158 | "peerDependencies": { 159 | "@babel/core": "^7.0.0" 160 | } 161 | }, 162 | "node_modules/@babel/helper-environment-visitor": { 163 | "version": "7.18.9", 164 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", 165 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", 166 | "dev": true, 167 | "engines": { 168 | "node": ">=6.9.0" 169 | } 170 | }, 171 | "node_modules/@babel/helper-function-name": { 172 | "version": "7.21.0", 173 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", 174 | "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", 175 | "dev": true, 176 | "dependencies": { 177 | "@babel/template": "^7.20.7", 178 | "@babel/types": "^7.21.0" 179 | }, 180 | "engines": { 181 | "node": ">=6.9.0" 182 | } 183 | }, 184 | "node_modules/@babel/helper-hoist-variables": { 185 | "version": "7.18.6", 186 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 187 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 188 | "dev": true, 189 | "dependencies": { 190 | "@babel/types": "^7.18.6" 191 | }, 192 | "engines": { 193 | "node": ">=6.9.0" 194 | } 195 | }, 196 | "node_modules/@babel/helper-module-imports": { 197 | "version": "7.21.4", 198 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", 199 | "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", 200 | "dev": true, 201 | "dependencies": { 202 | "@babel/types": "^7.21.4" 203 | }, 204 | "engines": { 205 | "node": ">=6.9.0" 206 | } 207 | }, 208 | "node_modules/@babel/helper-module-transforms": { 209 | "version": "7.21.2", 210 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", 211 | "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", 212 | "dev": true, 213 | "dependencies": { 214 | "@babel/helper-environment-visitor": "^7.18.9", 215 | "@babel/helper-module-imports": "^7.18.6", 216 | "@babel/helper-simple-access": "^7.20.2", 217 | "@babel/helper-split-export-declaration": "^7.18.6", 218 | "@babel/helper-validator-identifier": "^7.19.1", 219 | "@babel/template": "^7.20.7", 220 | "@babel/traverse": "^7.21.2", 221 | "@babel/types": "^7.21.2" 222 | }, 223 | "engines": { 224 | "node": ">=6.9.0" 225 | } 226 | }, 227 | "node_modules/@babel/helper-plugin-utils": { 228 | "version": "7.20.2", 229 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", 230 | "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", 231 | "dev": true, 232 | "engines": { 233 | "node": ">=6.9.0" 234 | } 235 | }, 236 | "node_modules/@babel/helper-simple-access": { 237 | "version": "7.20.2", 238 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", 239 | "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", 240 | "dev": true, 241 | "dependencies": { 242 | "@babel/types": "^7.20.2" 243 | }, 244 | "engines": { 245 | "node": ">=6.9.0" 246 | } 247 | }, 248 | "node_modules/@babel/helper-split-export-declaration": { 249 | "version": "7.18.6", 250 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 251 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 252 | "dev": true, 253 | "dependencies": { 254 | "@babel/types": "^7.18.6" 255 | }, 256 | "engines": { 257 | "node": ">=6.9.0" 258 | } 259 | }, 260 | "node_modules/@babel/helper-string-parser": { 261 | "version": "7.19.4", 262 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", 263 | "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", 264 | "dev": true, 265 | "engines": { 266 | "node": ">=6.9.0" 267 | } 268 | }, 269 | "node_modules/@babel/helper-validator-identifier": { 270 | "version": "7.19.1", 271 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 272 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 273 | "dev": true, 274 | "engines": { 275 | "node": ">=6.9.0" 276 | } 277 | }, 278 | "node_modules/@babel/helper-validator-option": { 279 | "version": "7.21.0", 280 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", 281 | "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", 282 | "dev": true, 283 | "engines": { 284 | "node": ">=6.9.0" 285 | } 286 | }, 287 | "node_modules/@babel/helpers": { 288 | "version": "7.21.0", 289 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", 290 | "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", 291 | "dev": true, 292 | "dependencies": { 293 | "@babel/template": "^7.20.7", 294 | "@babel/traverse": "^7.21.0", 295 | "@babel/types": "^7.21.0" 296 | }, 297 | "engines": { 298 | "node": ">=6.9.0" 299 | } 300 | }, 301 | "node_modules/@babel/highlight": { 302 | "version": "7.18.6", 303 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 304 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 305 | "dev": true, 306 | "dependencies": { 307 | "@babel/helper-validator-identifier": "^7.18.6", 308 | "chalk": "^2.0.0", 309 | "js-tokens": "^4.0.0" 310 | }, 311 | "engines": { 312 | "node": ">=6.9.0" 313 | } 314 | }, 315 | "node_modules/@babel/parser": { 316 | "version": "7.21.4", 317 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", 318 | "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", 319 | "dev": true, 320 | "bin": { 321 | "parser": "bin/babel-parser.js" 322 | }, 323 | "engines": { 324 | "node": ">=6.0.0" 325 | } 326 | }, 327 | "node_modules/@babel/plugin-transform-react-jsx-self": { 328 | "version": "7.21.0", 329 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", 330 | "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==", 331 | "dev": true, 332 | "dependencies": { 333 | "@babel/helper-plugin-utils": "^7.20.2" 334 | }, 335 | "engines": { 336 | "node": ">=6.9.0" 337 | }, 338 | "peerDependencies": { 339 | "@babel/core": "^7.0.0-0" 340 | } 341 | }, 342 | "node_modules/@babel/plugin-transform-react-jsx-source": { 343 | "version": "7.19.6", 344 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", 345 | "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", 346 | "dev": true, 347 | "dependencies": { 348 | "@babel/helper-plugin-utils": "^7.19.0" 349 | }, 350 | "engines": { 351 | "node": ">=6.9.0" 352 | }, 353 | "peerDependencies": { 354 | "@babel/core": "^7.0.0-0" 355 | } 356 | }, 357 | "node_modules/@babel/runtime": { 358 | "version": "7.21.0", 359 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", 360 | "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", 361 | "dependencies": { 362 | "regenerator-runtime": "^0.13.11" 363 | }, 364 | "engines": { 365 | "node": ">=6.9.0" 366 | } 367 | }, 368 | "node_modules/@babel/template": { 369 | "version": "7.20.7", 370 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", 371 | "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", 372 | "dev": true, 373 | "dependencies": { 374 | "@babel/code-frame": "^7.18.6", 375 | "@babel/parser": "^7.20.7", 376 | "@babel/types": "^7.20.7" 377 | }, 378 | "engines": { 379 | "node": ">=6.9.0" 380 | } 381 | }, 382 | "node_modules/@babel/traverse": { 383 | "version": "7.21.4", 384 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", 385 | "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", 386 | "dev": true, 387 | "dependencies": { 388 | "@babel/code-frame": "^7.21.4", 389 | "@babel/generator": "^7.21.4", 390 | "@babel/helper-environment-visitor": "^7.18.9", 391 | "@babel/helper-function-name": "^7.21.0", 392 | "@babel/helper-hoist-variables": "^7.18.6", 393 | "@babel/helper-split-export-declaration": "^7.18.6", 394 | "@babel/parser": "^7.21.4", 395 | "@babel/types": "^7.21.4", 396 | "debug": "^4.1.0", 397 | "globals": "^11.1.0" 398 | }, 399 | "engines": { 400 | "node": ">=6.9.0" 401 | } 402 | }, 403 | "node_modules/@babel/types": { 404 | "version": "7.21.4", 405 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", 406 | "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", 407 | "dev": true, 408 | "dependencies": { 409 | "@babel/helper-string-parser": "^7.19.4", 410 | "@babel/helper-validator-identifier": "^7.19.1", 411 | "to-fast-properties": "^2.0.0" 412 | }, 413 | "engines": { 414 | "node": ">=6.9.0" 415 | } 416 | }, 417 | "node_modules/@esbuild/android-arm": { 418 | "version": "0.18.20", 419 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", 420 | "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", 421 | "cpu": [ 422 | "arm" 423 | ], 424 | "dev": true, 425 | "optional": true, 426 | "os": [ 427 | "android" 428 | ], 429 | "engines": { 430 | "node": ">=12" 431 | } 432 | }, 433 | "node_modules/@esbuild/android-arm64": { 434 | "version": "0.18.20", 435 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", 436 | "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", 437 | "cpu": [ 438 | "arm64" 439 | ], 440 | "dev": true, 441 | "optional": true, 442 | "os": [ 443 | "android" 444 | ], 445 | "engines": { 446 | "node": ">=12" 447 | } 448 | }, 449 | "node_modules/@esbuild/android-x64": { 450 | "version": "0.18.20", 451 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", 452 | "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", 453 | "cpu": [ 454 | "x64" 455 | ], 456 | "dev": true, 457 | "optional": true, 458 | "os": [ 459 | "android" 460 | ], 461 | "engines": { 462 | "node": ">=12" 463 | } 464 | }, 465 | "node_modules/@esbuild/darwin-arm64": { 466 | "version": "0.18.20", 467 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", 468 | "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", 469 | "cpu": [ 470 | "arm64" 471 | ], 472 | "dev": true, 473 | "optional": true, 474 | "os": [ 475 | "darwin" 476 | ], 477 | "engines": { 478 | "node": ">=12" 479 | } 480 | }, 481 | "node_modules/@esbuild/darwin-x64": { 482 | "version": "0.18.20", 483 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", 484 | "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", 485 | "cpu": [ 486 | "x64" 487 | ], 488 | "dev": true, 489 | "optional": true, 490 | "os": [ 491 | "darwin" 492 | ], 493 | "engines": { 494 | "node": ">=12" 495 | } 496 | }, 497 | "node_modules/@esbuild/freebsd-arm64": { 498 | "version": "0.18.20", 499 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", 500 | "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", 501 | "cpu": [ 502 | "arm64" 503 | ], 504 | "dev": true, 505 | "optional": true, 506 | "os": [ 507 | "freebsd" 508 | ], 509 | "engines": { 510 | "node": ">=12" 511 | } 512 | }, 513 | "node_modules/@esbuild/freebsd-x64": { 514 | "version": "0.18.20", 515 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", 516 | "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", 517 | "cpu": [ 518 | "x64" 519 | ], 520 | "dev": true, 521 | "optional": true, 522 | "os": [ 523 | "freebsd" 524 | ], 525 | "engines": { 526 | "node": ">=12" 527 | } 528 | }, 529 | "node_modules/@esbuild/linux-arm": { 530 | "version": "0.18.20", 531 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", 532 | "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", 533 | "cpu": [ 534 | "arm" 535 | ], 536 | "dev": true, 537 | "optional": true, 538 | "os": [ 539 | "linux" 540 | ], 541 | "engines": { 542 | "node": ">=12" 543 | } 544 | }, 545 | "node_modules/@esbuild/linux-arm64": { 546 | "version": "0.18.20", 547 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", 548 | "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", 549 | "cpu": [ 550 | "arm64" 551 | ], 552 | "dev": true, 553 | "optional": true, 554 | "os": [ 555 | "linux" 556 | ], 557 | "engines": { 558 | "node": ">=12" 559 | } 560 | }, 561 | "node_modules/@esbuild/linux-ia32": { 562 | "version": "0.18.20", 563 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", 564 | "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", 565 | "cpu": [ 566 | "ia32" 567 | ], 568 | "dev": true, 569 | "optional": true, 570 | "os": [ 571 | "linux" 572 | ], 573 | "engines": { 574 | "node": ">=12" 575 | } 576 | }, 577 | "node_modules/@esbuild/linux-loong64": { 578 | "version": "0.18.20", 579 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", 580 | "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", 581 | "cpu": [ 582 | "loong64" 583 | ], 584 | "dev": true, 585 | "optional": true, 586 | "os": [ 587 | "linux" 588 | ], 589 | "engines": { 590 | "node": ">=12" 591 | } 592 | }, 593 | "node_modules/@esbuild/linux-mips64el": { 594 | "version": "0.18.20", 595 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", 596 | "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", 597 | "cpu": [ 598 | "mips64el" 599 | ], 600 | "dev": true, 601 | "optional": true, 602 | "os": [ 603 | "linux" 604 | ], 605 | "engines": { 606 | "node": ">=12" 607 | } 608 | }, 609 | "node_modules/@esbuild/linux-ppc64": { 610 | "version": "0.18.20", 611 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", 612 | "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", 613 | "cpu": [ 614 | "ppc64" 615 | ], 616 | "dev": true, 617 | "optional": true, 618 | "os": [ 619 | "linux" 620 | ], 621 | "engines": { 622 | "node": ">=12" 623 | } 624 | }, 625 | "node_modules/@esbuild/linux-riscv64": { 626 | "version": "0.18.20", 627 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", 628 | "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", 629 | "cpu": [ 630 | "riscv64" 631 | ], 632 | "dev": true, 633 | "optional": true, 634 | "os": [ 635 | "linux" 636 | ], 637 | "engines": { 638 | "node": ">=12" 639 | } 640 | }, 641 | "node_modules/@esbuild/linux-s390x": { 642 | "version": "0.18.20", 643 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", 644 | "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", 645 | "cpu": [ 646 | "s390x" 647 | ], 648 | "dev": true, 649 | "optional": true, 650 | "os": [ 651 | "linux" 652 | ], 653 | "engines": { 654 | "node": ">=12" 655 | } 656 | }, 657 | "node_modules/@esbuild/linux-x64": { 658 | "version": "0.18.20", 659 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", 660 | "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", 661 | "cpu": [ 662 | "x64" 663 | ], 664 | "dev": true, 665 | "optional": true, 666 | "os": [ 667 | "linux" 668 | ], 669 | "engines": { 670 | "node": ">=12" 671 | } 672 | }, 673 | "node_modules/@esbuild/netbsd-x64": { 674 | "version": "0.18.20", 675 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", 676 | "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", 677 | "cpu": [ 678 | "x64" 679 | ], 680 | "dev": true, 681 | "optional": true, 682 | "os": [ 683 | "netbsd" 684 | ], 685 | "engines": { 686 | "node": ">=12" 687 | } 688 | }, 689 | "node_modules/@esbuild/openbsd-x64": { 690 | "version": "0.18.20", 691 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", 692 | "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", 693 | "cpu": [ 694 | "x64" 695 | ], 696 | "dev": true, 697 | "optional": true, 698 | "os": [ 699 | "openbsd" 700 | ], 701 | "engines": { 702 | "node": ">=12" 703 | } 704 | }, 705 | "node_modules/@esbuild/sunos-x64": { 706 | "version": "0.18.20", 707 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", 708 | "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", 709 | "cpu": [ 710 | "x64" 711 | ], 712 | "dev": true, 713 | "optional": true, 714 | "os": [ 715 | "sunos" 716 | ], 717 | "engines": { 718 | "node": ">=12" 719 | } 720 | }, 721 | "node_modules/@esbuild/win32-arm64": { 722 | "version": "0.18.20", 723 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", 724 | "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", 725 | "cpu": [ 726 | "arm64" 727 | ], 728 | "dev": true, 729 | "optional": true, 730 | "os": [ 731 | "win32" 732 | ], 733 | "engines": { 734 | "node": ">=12" 735 | } 736 | }, 737 | "node_modules/@esbuild/win32-ia32": { 738 | "version": "0.18.20", 739 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", 740 | "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", 741 | "cpu": [ 742 | "ia32" 743 | ], 744 | "dev": true, 745 | "optional": true, 746 | "os": [ 747 | "win32" 748 | ], 749 | "engines": { 750 | "node": ">=12" 751 | } 752 | }, 753 | "node_modules/@esbuild/win32-x64": { 754 | "version": "0.18.20", 755 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", 756 | "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", 757 | "cpu": [ 758 | "x64" 759 | ], 760 | "dev": true, 761 | "optional": true, 762 | "os": [ 763 | "win32" 764 | ], 765 | "engines": { 766 | "node": ">=12" 767 | } 768 | }, 769 | "node_modules/@jridgewell/gen-mapping": { 770 | "version": "0.1.1", 771 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 772 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 773 | "dev": true, 774 | "dependencies": { 775 | "@jridgewell/set-array": "^1.0.0", 776 | "@jridgewell/sourcemap-codec": "^1.4.10" 777 | }, 778 | "engines": { 779 | "node": ">=6.0.0" 780 | } 781 | }, 782 | "node_modules/@jridgewell/resolve-uri": { 783 | "version": "3.1.0", 784 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 785 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 786 | "dev": true, 787 | "engines": { 788 | "node": ">=6.0.0" 789 | } 790 | }, 791 | "node_modules/@jridgewell/set-array": { 792 | "version": "1.1.2", 793 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 794 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 795 | "dev": true, 796 | "engines": { 797 | "node": ">=6.0.0" 798 | } 799 | }, 800 | "node_modules/@jridgewell/sourcemap-codec": { 801 | "version": "1.4.14", 802 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 803 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 804 | "dev": true 805 | }, 806 | "node_modules/@jridgewell/trace-mapping": { 807 | "version": "0.3.17", 808 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 809 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 810 | "dev": true, 811 | "dependencies": { 812 | "@jridgewell/resolve-uri": "3.1.0", 813 | "@jridgewell/sourcemap-codec": "1.4.14" 814 | } 815 | }, 816 | "node_modules/@tonconnect/isomorphic-eventsource": { 817 | "version": "0.0.2", 818 | "resolved": "https://registry.npmjs.org/@tonconnect/isomorphic-eventsource/-/isomorphic-eventsource-0.0.2.tgz", 819 | "integrity": "sha512-B4UoIjPi0QkvIzZH5fV3BQLWrqSYABdrzZQSI9sJA9aA+iC0ohOzFwVVGXanlxeDAy1bcvPbb29f6sVUk0UnnQ==", 820 | "license": "Apache-2.0", 821 | "dependencies": { 822 | "eventsource": "^2.0.2" 823 | } 824 | }, 825 | "node_modules/@tonconnect/isomorphic-fetch": { 826 | "version": "0.0.3", 827 | "resolved": "https://registry.npmjs.org/@tonconnect/isomorphic-fetch/-/isomorphic-fetch-0.0.3.tgz", 828 | "integrity": "sha512-jIg5nTrDwnite4fXao3dD83eCpTvInTjZon/rZZrIftIegh4XxyVb5G2mpMqXrVGk1e8SVXm3Kj5OtfMplQs0w==", 829 | "license": "Apache-2.0", 830 | "dependencies": { 831 | "node-fetch": "^2.6.9" 832 | } 833 | }, 834 | "node_modules/@tonconnect/isomorphic-fetch/node_modules/node-fetch": { 835 | "version": "2.7.0", 836 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", 837 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 838 | "license": "MIT", 839 | "dependencies": { 840 | "whatwg-url": "^5.0.0" 841 | }, 842 | "engines": { 843 | "node": "4.x || >=6.0.0" 844 | }, 845 | "peerDependencies": { 846 | "encoding": "^0.1.0" 847 | }, 848 | "peerDependenciesMeta": { 849 | "encoding": { 850 | "optional": true 851 | } 852 | } 853 | }, 854 | "node_modules/@tonconnect/protocol": { 855 | "version": "2.2.7", 856 | "resolved": "https://registry.npmjs.org/@tonconnect/protocol/-/protocol-2.2.7.tgz", 857 | "integrity": "sha512-mmuS5ekaRVQtXOug30znXXSnuQfuLa6kDOv17X2ttk8Al9PlTFG/AtPRkWxCp8X5BdhPzGFELTog7kypukjWnQ==", 858 | "license": "Apache-2.0", 859 | "dependencies": { 860 | "tweetnacl": "^1.0.3", 861 | "tweetnacl-util": "^0.15.1" 862 | } 863 | }, 864 | "node_modules/@tonconnect/sdk": { 865 | "version": "3.1.1-beta.0", 866 | "resolved": "https://registry.npmjs.org/@tonconnect/sdk/-/sdk-3.1.1-beta.0.tgz", 867 | "integrity": "sha512-zwt8g8/oWLRTmXZeF4/dEn6lAcO7J3ynBFNbd4/Wv6X5qMKs9cGaHXOCmRW9enLrvdYa+L/8XFQUyqzMecRH9w==", 868 | "license": "Apache-2.0", 869 | "dependencies": { 870 | "@tonconnect/isomorphic-eventsource": "^0.0.2", 871 | "@tonconnect/isomorphic-fetch": "^0.0.3", 872 | "@tonconnect/protocol": "^2.2.7" 873 | } 874 | }, 875 | "node_modules/@tonconnect/ui": { 876 | "version": "2.1.1-beta.0", 877 | "resolved": "https://registry.npmjs.org/@tonconnect/ui/-/ui-2.1.1-beta.0.tgz", 878 | "integrity": "sha512-5DdFbObn0oWLA4G3LlYDlsAmMOgh6ksidEa9L664ZSAScLworn/rXGjOfsLN1uGVei+gs38ivBYhxrCMyHSp/A==", 879 | "license": "Apache-2.0", 880 | "dependencies": { 881 | "@tonconnect/sdk": "3.1.1-beta.0", 882 | "classnames": "^2.3.2", 883 | "csstype": "^3.1.1", 884 | "deepmerge": "^4.2.2", 885 | "ua-parser-js": "^1.0.35" 886 | } 887 | }, 888 | "node_modules/@tonconnect/ui-react": { 889 | "version": "2.1.1-beta.0", 890 | "resolved": "https://registry.npmjs.org/@tonconnect/ui-react/-/ui-react-2.1.1-beta.0.tgz", 891 | "integrity": "sha512-gD5gzUvNjMYsBr5K3ZoHxWavUIzdCSdAXNknCDNHuixoVSnmHLIktOatHx95yOfEDo0WwYX8g+mQA1oTxQx0nA==", 892 | "license": "Apache-2.0", 893 | "dependencies": { 894 | "@tonconnect/ui": "2.1.1-beta.0" 895 | }, 896 | "peerDependencies": { 897 | "react": ">=17.0.0", 898 | "react-dom": ">=17.0.0" 899 | } 900 | }, 901 | "node_modules/@tonconnect/ui/node_modules/ua-parser-js": { 902 | "version": "1.0.40", 903 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", 904 | "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==", 905 | "funding": [ 906 | { 907 | "type": "opencollective", 908 | "url": "https://opencollective.com/ua-parser-js" 909 | }, 910 | { 911 | "type": "paypal", 912 | "url": "https://paypal.me/faisalman" 913 | }, 914 | { 915 | "type": "github", 916 | "url": "https://github.com/sponsors/faisalman" 917 | } 918 | ], 919 | "license": "MIT", 920 | "bin": { 921 | "ua-parser-js": "script/cli.js" 922 | }, 923 | "engines": { 924 | "node": "*" 925 | } 926 | }, 927 | "node_modules/@types/prop-types": { 928 | "version": "15.7.5", 929 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 930 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 931 | "dev": true 932 | }, 933 | "node_modules/@types/react": { 934 | "version": "18.0.33", 935 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.33.tgz", 936 | "integrity": "sha512-sHxzVxeanvQyQ1lr8NSHaj0kDzcNiGpILEVt69g9S31/7PfMvNCKLKcsHw4lYKjs3cGNJjXSP4mYzX43QlnjNA==", 937 | "dev": true, 938 | "dependencies": { 939 | "@types/prop-types": "*", 940 | "@types/scheduler": "*", 941 | "csstype": "^3.0.2" 942 | } 943 | }, 944 | "node_modules/@types/react-dom": { 945 | "version": "18.0.11", 946 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", 947 | "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", 948 | "dev": true, 949 | "dependencies": { 950 | "@types/react": "*" 951 | } 952 | }, 953 | "node_modules/@types/scheduler": { 954 | "version": "0.16.3", 955 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", 956 | "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", 957 | "dev": true 958 | }, 959 | "node_modules/@vitejs/plugin-react": { 960 | "version": "3.1.0", 961 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz", 962 | "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==", 963 | "dev": true, 964 | "dependencies": { 965 | "@babel/core": "^7.20.12", 966 | "@babel/plugin-transform-react-jsx-self": "^7.18.6", 967 | "@babel/plugin-transform-react-jsx-source": "^7.19.6", 968 | "magic-string": "^0.27.0", 969 | "react-refresh": "^0.14.0" 970 | }, 971 | "engines": { 972 | "node": "^14.18.0 || >=16.0.0" 973 | }, 974 | "peerDependencies": { 975 | "vite": "^4.1.0-beta.0" 976 | } 977 | }, 978 | "node_modules/ansi-styles": { 979 | "version": "3.2.1", 980 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 981 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 982 | "dev": true, 983 | "dependencies": { 984 | "color-convert": "^1.9.0" 985 | }, 986 | "engines": { 987 | "node": ">=4" 988 | } 989 | }, 990 | "node_modules/anymatch": { 991 | "version": "3.1.3", 992 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 993 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 994 | "dev": true, 995 | "dependencies": { 996 | "normalize-path": "^3.0.0", 997 | "picomatch": "^2.0.4" 998 | }, 999 | "engines": { 1000 | "node": ">= 8" 1001 | } 1002 | }, 1003 | "node_modules/asap": { 1004 | "version": "2.0.6", 1005 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 1006 | "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" 1007 | }, 1008 | "node_modules/base16": { 1009 | "version": "1.0.0", 1010 | "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", 1011 | "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" 1012 | }, 1013 | "node_modules/binary-extensions": { 1014 | "version": "2.2.0", 1015 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 1016 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 1017 | "dev": true, 1018 | "engines": { 1019 | "node": ">=8" 1020 | } 1021 | }, 1022 | "node_modules/braces": { 1023 | "version": "3.0.2", 1024 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1025 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1026 | "dev": true, 1027 | "dependencies": { 1028 | "fill-range": "^7.0.1" 1029 | }, 1030 | "engines": { 1031 | "node": ">=8" 1032 | } 1033 | }, 1034 | "node_modules/browserslist": { 1035 | "version": "4.21.5", 1036 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", 1037 | "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", 1038 | "dev": true, 1039 | "funding": [ 1040 | { 1041 | "type": "opencollective", 1042 | "url": "https://opencollective.com/browserslist" 1043 | }, 1044 | { 1045 | "type": "tidelift", 1046 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1047 | } 1048 | ], 1049 | "dependencies": { 1050 | "caniuse-lite": "^1.0.30001449", 1051 | "electron-to-chromium": "^1.4.284", 1052 | "node-releases": "^2.0.8", 1053 | "update-browserslist-db": "^1.0.10" 1054 | }, 1055 | "bin": { 1056 | "browserslist": "cli.js" 1057 | }, 1058 | "engines": { 1059 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 1060 | } 1061 | }, 1062 | "node_modules/caniuse-lite": { 1063 | "version": "1.0.30001474", 1064 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001474.tgz", 1065 | "integrity": "sha512-iaIZ8gVrWfemh5DG3T9/YqarVZoYf0r188IjaGwx68j4Pf0SGY6CQkmJUIE+NZHkkecQGohzXmBGEwWDr9aM3Q==", 1066 | "dev": true, 1067 | "funding": [ 1068 | { 1069 | "type": "opencollective", 1070 | "url": "https://opencollective.com/browserslist" 1071 | }, 1072 | { 1073 | "type": "tidelift", 1074 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 1075 | }, 1076 | { 1077 | "type": "github", 1078 | "url": "https://github.com/sponsors/ai" 1079 | } 1080 | ] 1081 | }, 1082 | "node_modules/chalk": { 1083 | "version": "2.4.2", 1084 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1085 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1086 | "dev": true, 1087 | "dependencies": { 1088 | "ansi-styles": "^3.2.1", 1089 | "escape-string-regexp": "^1.0.5", 1090 | "supports-color": "^5.3.0" 1091 | }, 1092 | "engines": { 1093 | "node": ">=4" 1094 | } 1095 | }, 1096 | "node_modules/chokidar": { 1097 | "version": "3.5.3", 1098 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 1099 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 1100 | "dev": true, 1101 | "funding": [ 1102 | { 1103 | "type": "individual", 1104 | "url": "https://paulmillr.com/funding/" 1105 | } 1106 | ], 1107 | "dependencies": { 1108 | "anymatch": "~3.1.2", 1109 | "braces": "~3.0.2", 1110 | "glob-parent": "~5.1.2", 1111 | "is-binary-path": "~2.1.0", 1112 | "is-glob": "~4.0.1", 1113 | "normalize-path": "~3.0.0", 1114 | "readdirp": "~3.6.0" 1115 | }, 1116 | "engines": { 1117 | "node": ">= 8.10.0" 1118 | }, 1119 | "optionalDependencies": { 1120 | "fsevents": "~2.3.2" 1121 | } 1122 | }, 1123 | "node_modules/classnames": { 1124 | "version": "2.5.1", 1125 | "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", 1126 | "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", 1127 | "license": "MIT" 1128 | }, 1129 | "node_modules/color-convert": { 1130 | "version": "1.9.3", 1131 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1132 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1133 | "dev": true, 1134 | "dependencies": { 1135 | "color-name": "1.1.3" 1136 | } 1137 | }, 1138 | "node_modules/color-name": { 1139 | "version": "1.1.3", 1140 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1141 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 1142 | "dev": true 1143 | }, 1144 | "node_modules/convert-source-map": { 1145 | "version": "1.9.0", 1146 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", 1147 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", 1148 | "dev": true 1149 | }, 1150 | "node_modules/cross-fetch": { 1151 | "version": "3.1.5", 1152 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 1153 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 1154 | "dependencies": { 1155 | "node-fetch": "2.6.7" 1156 | } 1157 | }, 1158 | "node_modules/csstype": { 1159 | "version": "3.1.2", 1160 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", 1161 | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" 1162 | }, 1163 | "node_modules/debug": { 1164 | "version": "4.3.4", 1165 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1166 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1167 | "dev": true, 1168 | "dependencies": { 1169 | "ms": "2.1.2" 1170 | }, 1171 | "engines": { 1172 | "node": ">=6.0" 1173 | }, 1174 | "peerDependenciesMeta": { 1175 | "supports-color": { 1176 | "optional": true 1177 | } 1178 | } 1179 | }, 1180 | "node_modules/deepmerge": { 1181 | "version": "4.3.1", 1182 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 1183 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 1184 | "license": "MIT", 1185 | "engines": { 1186 | "node": ">=0.10.0" 1187 | } 1188 | }, 1189 | "node_modules/electron-to-chromium": { 1190 | "version": "1.4.353", 1191 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.353.tgz", 1192 | "integrity": "sha512-IdJVpMHJoBT/nn0GQ02wPfbhogDVpd1ud95lP//FTf5l35wzxKJwibB4HBdY7Q+xKPA1nkZ0UDLOMyRj5U5IAQ==", 1193 | "dev": true 1194 | }, 1195 | "node_modules/eruda": { 1196 | "version": "2.11.3", 1197 | "resolved": "https://registry.npmjs.org/eruda/-/eruda-2.11.3.tgz", 1198 | "integrity": "sha512-e1EqrGJvN5PSXoFCSAmRqqDfziEL5bNSdPcJbRg5QVOHtcFMcG4n/6uTOfs2FTjAhg4X4GbxhHB+l7ITu/1zmQ==" 1199 | }, 1200 | "node_modules/esbuild": { 1201 | "version": "0.18.20", 1202 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", 1203 | "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", 1204 | "dev": true, 1205 | "hasInstallScript": true, 1206 | "bin": { 1207 | "esbuild": "bin/esbuild" 1208 | }, 1209 | "engines": { 1210 | "node": ">=12" 1211 | }, 1212 | "optionalDependencies": { 1213 | "@esbuild/android-arm": "0.18.20", 1214 | "@esbuild/android-arm64": "0.18.20", 1215 | "@esbuild/android-x64": "0.18.20", 1216 | "@esbuild/darwin-arm64": "0.18.20", 1217 | "@esbuild/darwin-x64": "0.18.20", 1218 | "@esbuild/freebsd-arm64": "0.18.20", 1219 | "@esbuild/freebsd-x64": "0.18.20", 1220 | "@esbuild/linux-arm": "0.18.20", 1221 | "@esbuild/linux-arm64": "0.18.20", 1222 | "@esbuild/linux-ia32": "0.18.20", 1223 | "@esbuild/linux-loong64": "0.18.20", 1224 | "@esbuild/linux-mips64el": "0.18.20", 1225 | "@esbuild/linux-ppc64": "0.18.20", 1226 | "@esbuild/linux-riscv64": "0.18.20", 1227 | "@esbuild/linux-s390x": "0.18.20", 1228 | "@esbuild/linux-x64": "0.18.20", 1229 | "@esbuild/netbsd-x64": "0.18.20", 1230 | "@esbuild/openbsd-x64": "0.18.20", 1231 | "@esbuild/sunos-x64": "0.18.20", 1232 | "@esbuild/win32-arm64": "0.18.20", 1233 | "@esbuild/win32-ia32": "0.18.20", 1234 | "@esbuild/win32-x64": "0.18.20" 1235 | } 1236 | }, 1237 | "node_modules/escalade": { 1238 | "version": "3.1.1", 1239 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1240 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1241 | "dev": true, 1242 | "engines": { 1243 | "node": ">=6" 1244 | } 1245 | }, 1246 | "node_modules/escape-string-regexp": { 1247 | "version": "1.0.5", 1248 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1249 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 1250 | "dev": true, 1251 | "engines": { 1252 | "node": ">=0.8.0" 1253 | } 1254 | }, 1255 | "node_modules/eventsource": { 1256 | "version": "2.0.2", 1257 | "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", 1258 | "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", 1259 | "license": "MIT", 1260 | "engines": { 1261 | "node": ">=12.0.0" 1262 | } 1263 | }, 1264 | "node_modules/fbemitter": { 1265 | "version": "3.0.0", 1266 | "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", 1267 | "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", 1268 | "dependencies": { 1269 | "fbjs": "^3.0.0" 1270 | } 1271 | }, 1272 | "node_modules/fbjs": { 1273 | "version": "3.0.4", 1274 | "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", 1275 | "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", 1276 | "dependencies": { 1277 | "cross-fetch": "^3.1.5", 1278 | "fbjs-css-vars": "^1.0.0", 1279 | "loose-envify": "^1.0.0", 1280 | "object-assign": "^4.1.0", 1281 | "promise": "^7.1.1", 1282 | "setimmediate": "^1.0.5", 1283 | "ua-parser-js": "^0.7.30" 1284 | } 1285 | }, 1286 | "node_modules/fbjs-css-vars": { 1287 | "version": "1.0.2", 1288 | "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", 1289 | "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" 1290 | }, 1291 | "node_modules/fill-range": { 1292 | "version": "7.0.1", 1293 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1294 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1295 | "dev": true, 1296 | "dependencies": { 1297 | "to-regex-range": "^5.0.1" 1298 | }, 1299 | "engines": { 1300 | "node": ">=8" 1301 | } 1302 | }, 1303 | "node_modules/flux": { 1304 | "version": "4.0.4", 1305 | "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz", 1306 | "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==", 1307 | "dependencies": { 1308 | "fbemitter": "^3.0.0", 1309 | "fbjs": "^3.0.1" 1310 | }, 1311 | "peerDependencies": { 1312 | "react": "^15.0.2 || ^16.0.0 || ^17.0.0" 1313 | } 1314 | }, 1315 | "node_modules/fsevents": { 1316 | "version": "2.3.2", 1317 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1318 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1319 | "dev": true, 1320 | "hasInstallScript": true, 1321 | "optional": true, 1322 | "os": [ 1323 | "darwin" 1324 | ], 1325 | "engines": { 1326 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1327 | } 1328 | }, 1329 | "node_modules/gensync": { 1330 | "version": "1.0.0-beta.2", 1331 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1332 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1333 | "dev": true, 1334 | "engines": { 1335 | "node": ">=6.9.0" 1336 | } 1337 | }, 1338 | "node_modules/glob-parent": { 1339 | "version": "5.1.2", 1340 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1341 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1342 | "dev": true, 1343 | "dependencies": { 1344 | "is-glob": "^4.0.1" 1345 | }, 1346 | "engines": { 1347 | "node": ">= 6" 1348 | } 1349 | }, 1350 | "node_modules/globals": { 1351 | "version": "11.12.0", 1352 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1353 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1354 | "dev": true, 1355 | "engines": { 1356 | "node": ">=4" 1357 | } 1358 | }, 1359 | "node_modules/has-flag": { 1360 | "version": "3.0.0", 1361 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1362 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1363 | "dev": true, 1364 | "engines": { 1365 | "node": ">=4" 1366 | } 1367 | }, 1368 | "node_modules/immutable": { 1369 | "version": "4.3.0", 1370 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", 1371 | "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", 1372 | "dev": true 1373 | }, 1374 | "node_modules/is-binary-path": { 1375 | "version": "2.1.0", 1376 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1377 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1378 | "dev": true, 1379 | "dependencies": { 1380 | "binary-extensions": "^2.0.0" 1381 | }, 1382 | "engines": { 1383 | "node": ">=8" 1384 | } 1385 | }, 1386 | "node_modules/is-extglob": { 1387 | "version": "2.1.1", 1388 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1389 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1390 | "dev": true, 1391 | "engines": { 1392 | "node": ">=0.10.0" 1393 | } 1394 | }, 1395 | "node_modules/is-glob": { 1396 | "version": "4.0.3", 1397 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1398 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1399 | "dev": true, 1400 | "dependencies": { 1401 | "is-extglob": "^2.1.1" 1402 | }, 1403 | "engines": { 1404 | "node": ">=0.10.0" 1405 | } 1406 | }, 1407 | "node_modules/is-number": { 1408 | "version": "7.0.0", 1409 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1410 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1411 | "dev": true, 1412 | "engines": { 1413 | "node": ">=0.12.0" 1414 | } 1415 | }, 1416 | "node_modules/js-tokens": { 1417 | "version": "4.0.0", 1418 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1419 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1420 | }, 1421 | "node_modules/jsesc": { 1422 | "version": "2.5.2", 1423 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1424 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1425 | "dev": true, 1426 | "bin": { 1427 | "jsesc": "bin/jsesc" 1428 | }, 1429 | "engines": { 1430 | "node": ">=4" 1431 | } 1432 | }, 1433 | "node_modules/json5": { 1434 | "version": "2.2.3", 1435 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 1436 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 1437 | "dev": true, 1438 | "bin": { 1439 | "json5": "lib/cli.js" 1440 | }, 1441 | "engines": { 1442 | "node": ">=6" 1443 | } 1444 | }, 1445 | "node_modules/lodash.curry": { 1446 | "version": "4.1.1", 1447 | "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", 1448 | "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" 1449 | }, 1450 | "node_modules/lodash.flow": { 1451 | "version": "3.5.0", 1452 | "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", 1453 | "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" 1454 | }, 1455 | "node_modules/loose-envify": { 1456 | "version": "1.4.0", 1457 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1458 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1459 | "dependencies": { 1460 | "js-tokens": "^3.0.0 || ^4.0.0" 1461 | }, 1462 | "bin": { 1463 | "loose-envify": "cli.js" 1464 | } 1465 | }, 1466 | "node_modules/lru-cache": { 1467 | "version": "5.1.1", 1468 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 1469 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 1470 | "dev": true, 1471 | "dependencies": { 1472 | "yallist": "^3.0.2" 1473 | } 1474 | }, 1475 | "node_modules/magic-string": { 1476 | "version": "0.27.0", 1477 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", 1478 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", 1479 | "dev": true, 1480 | "dependencies": { 1481 | "@jridgewell/sourcemap-codec": "^1.4.13" 1482 | }, 1483 | "engines": { 1484 | "node": ">=12" 1485 | } 1486 | }, 1487 | "node_modules/ms": { 1488 | "version": "2.1.2", 1489 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1490 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1491 | "dev": true 1492 | }, 1493 | "node_modules/nanoid": { 1494 | "version": "3.3.6", 1495 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 1496 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 1497 | "dev": true, 1498 | "funding": [ 1499 | { 1500 | "type": "github", 1501 | "url": "https://github.com/sponsors/ai" 1502 | } 1503 | ], 1504 | "bin": { 1505 | "nanoid": "bin/nanoid.cjs" 1506 | }, 1507 | "engines": { 1508 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1509 | } 1510 | }, 1511 | "node_modules/node-fetch": { 1512 | "version": "2.6.7", 1513 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 1514 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 1515 | "dependencies": { 1516 | "whatwg-url": "^5.0.0" 1517 | }, 1518 | "engines": { 1519 | "node": "4.x || >=6.0.0" 1520 | }, 1521 | "peerDependencies": { 1522 | "encoding": "^0.1.0" 1523 | }, 1524 | "peerDependenciesMeta": { 1525 | "encoding": { 1526 | "optional": true 1527 | } 1528 | } 1529 | }, 1530 | "node_modules/node-releases": { 1531 | "version": "2.0.10", 1532 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", 1533 | "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", 1534 | "dev": true 1535 | }, 1536 | "node_modules/normalize-path": { 1537 | "version": "3.0.0", 1538 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1539 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1540 | "dev": true, 1541 | "engines": { 1542 | "node": ">=0.10.0" 1543 | } 1544 | }, 1545 | "node_modules/object-assign": { 1546 | "version": "4.1.1", 1547 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1548 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 1549 | "engines": { 1550 | "node": ">=0.10.0" 1551 | } 1552 | }, 1553 | "node_modules/picocolors": { 1554 | "version": "1.0.0", 1555 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1556 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1557 | "dev": true 1558 | }, 1559 | "node_modules/picomatch": { 1560 | "version": "2.3.1", 1561 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1562 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1563 | "dev": true, 1564 | "engines": { 1565 | "node": ">=8.6" 1566 | }, 1567 | "funding": { 1568 | "url": "https://github.com/sponsors/jonschlinkert" 1569 | } 1570 | }, 1571 | "node_modules/postcss": { 1572 | "version": "8.4.29", 1573 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", 1574 | "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", 1575 | "dev": true, 1576 | "funding": [ 1577 | { 1578 | "type": "opencollective", 1579 | "url": "https://opencollective.com/postcss/" 1580 | }, 1581 | { 1582 | "type": "tidelift", 1583 | "url": "https://tidelift.com/funding/github/npm/postcss" 1584 | }, 1585 | { 1586 | "type": "github", 1587 | "url": "https://github.com/sponsors/ai" 1588 | } 1589 | ], 1590 | "dependencies": { 1591 | "nanoid": "^3.3.6", 1592 | "picocolors": "^1.0.0", 1593 | "source-map-js": "^1.0.2" 1594 | }, 1595 | "engines": { 1596 | "node": "^10 || ^12 || >=14" 1597 | } 1598 | }, 1599 | "node_modules/promise": { 1600 | "version": "7.3.1", 1601 | "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", 1602 | "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", 1603 | "dependencies": { 1604 | "asap": "~2.0.3" 1605 | } 1606 | }, 1607 | "node_modules/pure-color": { 1608 | "version": "1.3.0", 1609 | "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", 1610 | "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" 1611 | }, 1612 | "node_modules/react": { 1613 | "version": "17.0.2", 1614 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 1615 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 1616 | "dependencies": { 1617 | "loose-envify": "^1.1.0", 1618 | "object-assign": "^4.1.1" 1619 | }, 1620 | "engines": { 1621 | "node": ">=0.10.0" 1622 | } 1623 | }, 1624 | "node_modules/react-base16-styling": { 1625 | "version": "0.6.0", 1626 | "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", 1627 | "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==", 1628 | "dependencies": { 1629 | "base16": "^1.0.0", 1630 | "lodash.curry": "^4.0.1", 1631 | "lodash.flow": "^3.3.0", 1632 | "pure-color": "^1.2.0" 1633 | } 1634 | }, 1635 | "node_modules/react-dom": { 1636 | "version": "17.0.2", 1637 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 1638 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 1639 | "dependencies": { 1640 | "loose-envify": "^1.1.0", 1641 | "object-assign": "^4.1.1", 1642 | "scheduler": "^0.20.2" 1643 | }, 1644 | "peerDependencies": { 1645 | "react": "17.0.2" 1646 | } 1647 | }, 1648 | "node_modules/react-json-view": { 1649 | "version": "1.21.3", 1650 | "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", 1651 | "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", 1652 | "dependencies": { 1653 | "flux": "^4.0.1", 1654 | "react-base16-styling": "^0.6.0", 1655 | "react-lifecycles-compat": "^3.0.4", 1656 | "react-textarea-autosize": "^8.3.2" 1657 | }, 1658 | "peerDependencies": { 1659 | "react": "^17.0.0 || ^16.3.0 || ^15.5.4", 1660 | "react-dom": "^17.0.0 || ^16.3.0 || ^15.5.4" 1661 | } 1662 | }, 1663 | "node_modules/react-lifecycles-compat": { 1664 | "version": "3.0.4", 1665 | "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", 1666 | "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" 1667 | }, 1668 | "node_modules/react-refresh": { 1669 | "version": "0.14.0", 1670 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", 1671 | "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", 1672 | "dev": true, 1673 | "engines": { 1674 | "node": ">=0.10.0" 1675 | } 1676 | }, 1677 | "node_modules/react-textarea-autosize": { 1678 | "version": "8.4.1", 1679 | "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.4.1.tgz", 1680 | "integrity": "sha512-aD2C+qK6QypknC+lCMzteOdIjoMbNlgSFmJjCV+DrfTPwp59i/it9mMNf2HDzvRjQgKAyBDPyLJhcrzElf2U4Q==", 1681 | "dependencies": { 1682 | "@babel/runtime": "^7.20.13", 1683 | "use-composed-ref": "^1.3.0", 1684 | "use-latest": "^1.2.1" 1685 | }, 1686 | "engines": { 1687 | "node": ">=10" 1688 | }, 1689 | "peerDependencies": { 1690 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0" 1691 | } 1692 | }, 1693 | "node_modules/readdirp": { 1694 | "version": "3.6.0", 1695 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1696 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1697 | "dev": true, 1698 | "dependencies": { 1699 | "picomatch": "^2.2.1" 1700 | }, 1701 | "engines": { 1702 | "node": ">=8.10.0" 1703 | } 1704 | }, 1705 | "node_modules/regenerator-runtime": { 1706 | "version": "0.13.11", 1707 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", 1708 | "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" 1709 | }, 1710 | "node_modules/rollup": { 1711 | "version": "3.29.1", 1712 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.1.tgz", 1713 | "integrity": "sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg==", 1714 | "dev": true, 1715 | "bin": { 1716 | "rollup": "dist/bin/rollup" 1717 | }, 1718 | "engines": { 1719 | "node": ">=14.18.0", 1720 | "npm": ">=8.0.0" 1721 | }, 1722 | "optionalDependencies": { 1723 | "fsevents": "~2.3.2" 1724 | } 1725 | }, 1726 | "node_modules/sass": { 1727 | "version": "1.60.0", 1728 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.60.0.tgz", 1729 | "integrity": "sha512-updbwW6fNb5gGm8qMXzVO7V4sWf7LMXnMly/JEyfbfERbVH46Fn6q02BX7/eHTdKpE7d+oTkMMQpFWNUMfFbgQ==", 1730 | "dev": true, 1731 | "dependencies": { 1732 | "chokidar": ">=3.0.0 <4.0.0", 1733 | "immutable": "^4.0.0", 1734 | "source-map-js": ">=0.6.2 <2.0.0" 1735 | }, 1736 | "bin": { 1737 | "sass": "sass.js" 1738 | }, 1739 | "engines": { 1740 | "node": ">=12.0.0" 1741 | } 1742 | }, 1743 | "node_modules/scheduler": { 1744 | "version": "0.20.2", 1745 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 1746 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 1747 | "dependencies": { 1748 | "loose-envify": "^1.1.0", 1749 | "object-assign": "^4.1.1" 1750 | } 1751 | }, 1752 | "node_modules/semver": { 1753 | "version": "6.3.0", 1754 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1755 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1756 | "dev": true, 1757 | "bin": { 1758 | "semver": "bin/semver.js" 1759 | } 1760 | }, 1761 | "node_modules/setimmediate": { 1762 | "version": "1.0.5", 1763 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 1764 | "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" 1765 | }, 1766 | "node_modules/source-map-js": { 1767 | "version": "1.0.2", 1768 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1769 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1770 | "dev": true, 1771 | "engines": { 1772 | "node": ">=0.10.0" 1773 | } 1774 | }, 1775 | "node_modules/supports-color": { 1776 | "version": "5.5.0", 1777 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1778 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1779 | "dev": true, 1780 | "dependencies": { 1781 | "has-flag": "^3.0.0" 1782 | }, 1783 | "engines": { 1784 | "node": ">=4" 1785 | } 1786 | }, 1787 | "node_modules/to-fast-properties": { 1788 | "version": "2.0.0", 1789 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1790 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 1791 | "dev": true, 1792 | "engines": { 1793 | "node": ">=4" 1794 | } 1795 | }, 1796 | "node_modules/to-regex-range": { 1797 | "version": "5.0.1", 1798 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1799 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1800 | "dev": true, 1801 | "dependencies": { 1802 | "is-number": "^7.0.0" 1803 | }, 1804 | "engines": { 1805 | "node": ">=8.0" 1806 | } 1807 | }, 1808 | "node_modules/tr46": { 1809 | "version": "0.0.3", 1810 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1811 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 1812 | }, 1813 | "node_modules/tweetnacl": { 1814 | "version": "1.0.3", 1815 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", 1816 | "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", 1817 | "license": "Unlicense" 1818 | }, 1819 | "node_modules/tweetnacl-util": { 1820 | "version": "0.15.1", 1821 | "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", 1822 | "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", 1823 | "license": "Unlicense" 1824 | }, 1825 | "node_modules/typescript": { 1826 | "version": "4.9.5", 1827 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 1828 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 1829 | "dev": true, 1830 | "bin": { 1831 | "tsc": "bin/tsc", 1832 | "tsserver": "bin/tsserver" 1833 | }, 1834 | "engines": { 1835 | "node": ">=4.2.0" 1836 | } 1837 | }, 1838 | "node_modules/ua-parser-js": { 1839 | "version": "0.7.35", 1840 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.35.tgz", 1841 | "integrity": "sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==", 1842 | "funding": [ 1843 | { 1844 | "type": "opencollective", 1845 | "url": "https://opencollective.com/ua-parser-js" 1846 | }, 1847 | { 1848 | "type": "paypal", 1849 | "url": "https://paypal.me/faisalman" 1850 | } 1851 | ], 1852 | "engines": { 1853 | "node": "*" 1854 | } 1855 | }, 1856 | "node_modules/update-browserslist-db": { 1857 | "version": "1.0.10", 1858 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", 1859 | "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", 1860 | "dev": true, 1861 | "funding": [ 1862 | { 1863 | "type": "opencollective", 1864 | "url": "https://opencollective.com/browserslist" 1865 | }, 1866 | { 1867 | "type": "tidelift", 1868 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1869 | } 1870 | ], 1871 | "dependencies": { 1872 | "escalade": "^3.1.1", 1873 | "picocolors": "^1.0.0" 1874 | }, 1875 | "bin": { 1876 | "browserslist-lint": "cli.js" 1877 | }, 1878 | "peerDependencies": { 1879 | "browserslist": ">= 4.21.0" 1880 | } 1881 | }, 1882 | "node_modules/use-composed-ref": { 1883 | "version": "1.3.0", 1884 | "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", 1885 | "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", 1886 | "peerDependencies": { 1887 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0" 1888 | } 1889 | }, 1890 | "node_modules/use-isomorphic-layout-effect": { 1891 | "version": "1.1.2", 1892 | "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", 1893 | "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", 1894 | "peerDependencies": { 1895 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0" 1896 | }, 1897 | "peerDependenciesMeta": { 1898 | "@types/react": { 1899 | "optional": true 1900 | } 1901 | } 1902 | }, 1903 | "node_modules/use-latest": { 1904 | "version": "1.2.1", 1905 | "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", 1906 | "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", 1907 | "dependencies": { 1908 | "use-isomorphic-layout-effect": "^1.1.1" 1909 | }, 1910 | "peerDependencies": { 1911 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0" 1912 | }, 1913 | "peerDependenciesMeta": { 1914 | "@types/react": { 1915 | "optional": true 1916 | } 1917 | } 1918 | }, 1919 | "node_modules/vite": { 1920 | "version": "4.4.9", 1921 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", 1922 | "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", 1923 | "dev": true, 1924 | "dependencies": { 1925 | "esbuild": "^0.18.10", 1926 | "postcss": "^8.4.27", 1927 | "rollup": "^3.27.1" 1928 | }, 1929 | "bin": { 1930 | "vite": "bin/vite.js" 1931 | }, 1932 | "engines": { 1933 | "node": "^14.18.0 || >=16.0.0" 1934 | }, 1935 | "funding": { 1936 | "url": "https://github.com/vitejs/vite?sponsor=1" 1937 | }, 1938 | "optionalDependencies": { 1939 | "fsevents": "~2.3.2" 1940 | }, 1941 | "peerDependencies": { 1942 | "@types/node": ">= 14", 1943 | "less": "*", 1944 | "lightningcss": "^1.21.0", 1945 | "sass": "*", 1946 | "stylus": "*", 1947 | "sugarss": "*", 1948 | "terser": "^5.4.0" 1949 | }, 1950 | "peerDependenciesMeta": { 1951 | "@types/node": { 1952 | "optional": true 1953 | }, 1954 | "less": { 1955 | "optional": true 1956 | }, 1957 | "lightningcss": { 1958 | "optional": true 1959 | }, 1960 | "sass": { 1961 | "optional": true 1962 | }, 1963 | "stylus": { 1964 | "optional": true 1965 | }, 1966 | "sugarss": { 1967 | "optional": true 1968 | }, 1969 | "terser": { 1970 | "optional": true 1971 | } 1972 | } 1973 | }, 1974 | "node_modules/webidl-conversions": { 1975 | "version": "3.0.1", 1976 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1977 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 1978 | }, 1979 | "node_modules/whatwg-url": { 1980 | "version": "5.0.0", 1981 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1982 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1983 | "dependencies": { 1984 | "tr46": "~0.0.3", 1985 | "webidl-conversions": "^3.0.0" 1986 | } 1987 | }, 1988 | "node_modules/yallist": { 1989 | "version": "3.1.1", 1990 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 1991 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 1992 | "dev": true 1993 | } 1994 | }, 1995 | "dependencies": { 1996 | "@ampproject/remapping": { 1997 | "version": "2.2.0", 1998 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 1999 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 2000 | "dev": true, 2001 | "requires": { 2002 | "@jridgewell/gen-mapping": "^0.1.0", 2003 | "@jridgewell/trace-mapping": "^0.3.9" 2004 | } 2005 | }, 2006 | "@babel/code-frame": { 2007 | "version": "7.21.4", 2008 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", 2009 | "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", 2010 | "dev": true, 2011 | "requires": { 2012 | "@babel/highlight": "^7.18.6" 2013 | } 2014 | }, 2015 | "@babel/compat-data": { 2016 | "version": "7.21.4", 2017 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", 2018 | "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", 2019 | "dev": true 2020 | }, 2021 | "@babel/core": { 2022 | "version": "7.21.4", 2023 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", 2024 | "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", 2025 | "dev": true, 2026 | "requires": { 2027 | "@ampproject/remapping": "^2.2.0", 2028 | "@babel/code-frame": "^7.21.4", 2029 | "@babel/generator": "^7.21.4", 2030 | "@babel/helper-compilation-targets": "^7.21.4", 2031 | "@babel/helper-module-transforms": "^7.21.2", 2032 | "@babel/helpers": "^7.21.0", 2033 | "@babel/parser": "^7.21.4", 2034 | "@babel/template": "^7.20.7", 2035 | "@babel/traverse": "^7.21.4", 2036 | "@babel/types": "^7.21.4", 2037 | "convert-source-map": "^1.7.0", 2038 | "debug": "^4.1.0", 2039 | "gensync": "^1.0.0-beta.2", 2040 | "json5": "^2.2.2", 2041 | "semver": "^6.3.0" 2042 | } 2043 | }, 2044 | "@babel/generator": { 2045 | "version": "7.21.4", 2046 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", 2047 | "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", 2048 | "dev": true, 2049 | "requires": { 2050 | "@babel/types": "^7.21.4", 2051 | "@jridgewell/gen-mapping": "^0.3.2", 2052 | "@jridgewell/trace-mapping": "^0.3.17", 2053 | "jsesc": "^2.5.1" 2054 | }, 2055 | "dependencies": { 2056 | "@jridgewell/gen-mapping": { 2057 | "version": "0.3.2", 2058 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 2059 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 2060 | "dev": true, 2061 | "requires": { 2062 | "@jridgewell/set-array": "^1.0.1", 2063 | "@jridgewell/sourcemap-codec": "^1.4.10", 2064 | "@jridgewell/trace-mapping": "^0.3.9" 2065 | } 2066 | } 2067 | } 2068 | }, 2069 | "@babel/helper-compilation-targets": { 2070 | "version": "7.21.4", 2071 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", 2072 | "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", 2073 | "dev": true, 2074 | "requires": { 2075 | "@babel/compat-data": "^7.21.4", 2076 | "@babel/helper-validator-option": "^7.21.0", 2077 | "browserslist": "^4.21.3", 2078 | "lru-cache": "^5.1.1", 2079 | "semver": "^6.3.0" 2080 | } 2081 | }, 2082 | "@babel/helper-environment-visitor": { 2083 | "version": "7.18.9", 2084 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", 2085 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", 2086 | "dev": true 2087 | }, 2088 | "@babel/helper-function-name": { 2089 | "version": "7.21.0", 2090 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", 2091 | "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", 2092 | "dev": true, 2093 | "requires": { 2094 | "@babel/template": "^7.20.7", 2095 | "@babel/types": "^7.21.0" 2096 | } 2097 | }, 2098 | "@babel/helper-hoist-variables": { 2099 | "version": "7.18.6", 2100 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 2101 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 2102 | "dev": true, 2103 | "requires": { 2104 | "@babel/types": "^7.18.6" 2105 | } 2106 | }, 2107 | "@babel/helper-module-imports": { 2108 | "version": "7.21.4", 2109 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", 2110 | "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", 2111 | "dev": true, 2112 | "requires": { 2113 | "@babel/types": "^7.21.4" 2114 | } 2115 | }, 2116 | "@babel/helper-module-transforms": { 2117 | "version": "7.21.2", 2118 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", 2119 | "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", 2120 | "dev": true, 2121 | "requires": { 2122 | "@babel/helper-environment-visitor": "^7.18.9", 2123 | "@babel/helper-module-imports": "^7.18.6", 2124 | "@babel/helper-simple-access": "^7.20.2", 2125 | "@babel/helper-split-export-declaration": "^7.18.6", 2126 | "@babel/helper-validator-identifier": "^7.19.1", 2127 | "@babel/template": "^7.20.7", 2128 | "@babel/traverse": "^7.21.2", 2129 | "@babel/types": "^7.21.2" 2130 | } 2131 | }, 2132 | "@babel/helper-plugin-utils": { 2133 | "version": "7.20.2", 2134 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", 2135 | "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", 2136 | "dev": true 2137 | }, 2138 | "@babel/helper-simple-access": { 2139 | "version": "7.20.2", 2140 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", 2141 | "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", 2142 | "dev": true, 2143 | "requires": { 2144 | "@babel/types": "^7.20.2" 2145 | } 2146 | }, 2147 | "@babel/helper-split-export-declaration": { 2148 | "version": "7.18.6", 2149 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 2150 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 2151 | "dev": true, 2152 | "requires": { 2153 | "@babel/types": "^7.18.6" 2154 | } 2155 | }, 2156 | "@babel/helper-string-parser": { 2157 | "version": "7.19.4", 2158 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", 2159 | "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", 2160 | "dev": true 2161 | }, 2162 | "@babel/helper-validator-identifier": { 2163 | "version": "7.19.1", 2164 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 2165 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 2166 | "dev": true 2167 | }, 2168 | "@babel/helper-validator-option": { 2169 | "version": "7.21.0", 2170 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", 2171 | "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", 2172 | "dev": true 2173 | }, 2174 | "@babel/helpers": { 2175 | "version": "7.21.0", 2176 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", 2177 | "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", 2178 | "dev": true, 2179 | "requires": { 2180 | "@babel/template": "^7.20.7", 2181 | "@babel/traverse": "^7.21.0", 2182 | "@babel/types": "^7.21.0" 2183 | } 2184 | }, 2185 | "@babel/highlight": { 2186 | "version": "7.18.6", 2187 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 2188 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 2189 | "dev": true, 2190 | "requires": { 2191 | "@babel/helper-validator-identifier": "^7.18.6", 2192 | "chalk": "^2.0.0", 2193 | "js-tokens": "^4.0.0" 2194 | } 2195 | }, 2196 | "@babel/parser": { 2197 | "version": "7.21.4", 2198 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", 2199 | "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", 2200 | "dev": true 2201 | }, 2202 | "@babel/plugin-transform-react-jsx-self": { 2203 | "version": "7.21.0", 2204 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", 2205 | "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==", 2206 | "dev": true, 2207 | "requires": { 2208 | "@babel/helper-plugin-utils": "^7.20.2" 2209 | } 2210 | }, 2211 | "@babel/plugin-transform-react-jsx-source": { 2212 | "version": "7.19.6", 2213 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", 2214 | "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", 2215 | "dev": true, 2216 | "requires": { 2217 | "@babel/helper-plugin-utils": "^7.19.0" 2218 | } 2219 | }, 2220 | "@babel/runtime": { 2221 | "version": "7.21.0", 2222 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", 2223 | "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", 2224 | "requires": { 2225 | "regenerator-runtime": "^0.13.11" 2226 | } 2227 | }, 2228 | "@babel/template": { 2229 | "version": "7.20.7", 2230 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", 2231 | "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", 2232 | "dev": true, 2233 | "requires": { 2234 | "@babel/code-frame": "^7.18.6", 2235 | "@babel/parser": "^7.20.7", 2236 | "@babel/types": "^7.20.7" 2237 | } 2238 | }, 2239 | "@babel/traverse": { 2240 | "version": "7.21.4", 2241 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", 2242 | "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", 2243 | "dev": true, 2244 | "requires": { 2245 | "@babel/code-frame": "^7.21.4", 2246 | "@babel/generator": "^7.21.4", 2247 | "@babel/helper-environment-visitor": "^7.18.9", 2248 | "@babel/helper-function-name": "^7.21.0", 2249 | "@babel/helper-hoist-variables": "^7.18.6", 2250 | "@babel/helper-split-export-declaration": "^7.18.6", 2251 | "@babel/parser": "^7.21.4", 2252 | "@babel/types": "^7.21.4", 2253 | "debug": "^4.1.0", 2254 | "globals": "^11.1.0" 2255 | } 2256 | }, 2257 | "@babel/types": { 2258 | "version": "7.21.4", 2259 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", 2260 | "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", 2261 | "dev": true, 2262 | "requires": { 2263 | "@babel/helper-string-parser": "^7.19.4", 2264 | "@babel/helper-validator-identifier": "^7.19.1", 2265 | "to-fast-properties": "^2.0.0" 2266 | } 2267 | }, 2268 | "@esbuild/android-arm": { 2269 | "version": "0.18.20", 2270 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", 2271 | "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", 2272 | "dev": true, 2273 | "optional": true 2274 | }, 2275 | "@esbuild/android-arm64": { 2276 | "version": "0.18.20", 2277 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", 2278 | "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", 2279 | "dev": true, 2280 | "optional": true 2281 | }, 2282 | "@esbuild/android-x64": { 2283 | "version": "0.18.20", 2284 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", 2285 | "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", 2286 | "dev": true, 2287 | "optional": true 2288 | }, 2289 | "@esbuild/darwin-arm64": { 2290 | "version": "0.18.20", 2291 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", 2292 | "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", 2293 | "dev": true, 2294 | "optional": true 2295 | }, 2296 | "@esbuild/darwin-x64": { 2297 | "version": "0.18.20", 2298 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", 2299 | "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", 2300 | "dev": true, 2301 | "optional": true 2302 | }, 2303 | "@esbuild/freebsd-arm64": { 2304 | "version": "0.18.20", 2305 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", 2306 | "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", 2307 | "dev": true, 2308 | "optional": true 2309 | }, 2310 | "@esbuild/freebsd-x64": { 2311 | "version": "0.18.20", 2312 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", 2313 | "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", 2314 | "dev": true, 2315 | "optional": true 2316 | }, 2317 | "@esbuild/linux-arm": { 2318 | "version": "0.18.20", 2319 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", 2320 | "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", 2321 | "dev": true, 2322 | "optional": true 2323 | }, 2324 | "@esbuild/linux-arm64": { 2325 | "version": "0.18.20", 2326 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", 2327 | "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", 2328 | "dev": true, 2329 | "optional": true 2330 | }, 2331 | "@esbuild/linux-ia32": { 2332 | "version": "0.18.20", 2333 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", 2334 | "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", 2335 | "dev": true, 2336 | "optional": true 2337 | }, 2338 | "@esbuild/linux-loong64": { 2339 | "version": "0.18.20", 2340 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", 2341 | "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", 2342 | "dev": true, 2343 | "optional": true 2344 | }, 2345 | "@esbuild/linux-mips64el": { 2346 | "version": "0.18.20", 2347 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", 2348 | "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", 2349 | "dev": true, 2350 | "optional": true 2351 | }, 2352 | "@esbuild/linux-ppc64": { 2353 | "version": "0.18.20", 2354 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", 2355 | "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", 2356 | "dev": true, 2357 | "optional": true 2358 | }, 2359 | "@esbuild/linux-riscv64": { 2360 | "version": "0.18.20", 2361 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", 2362 | "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", 2363 | "dev": true, 2364 | "optional": true 2365 | }, 2366 | "@esbuild/linux-s390x": { 2367 | "version": "0.18.20", 2368 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", 2369 | "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", 2370 | "dev": true, 2371 | "optional": true 2372 | }, 2373 | "@esbuild/linux-x64": { 2374 | "version": "0.18.20", 2375 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", 2376 | "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", 2377 | "dev": true, 2378 | "optional": true 2379 | }, 2380 | "@esbuild/netbsd-x64": { 2381 | "version": "0.18.20", 2382 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", 2383 | "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", 2384 | "dev": true, 2385 | "optional": true 2386 | }, 2387 | "@esbuild/openbsd-x64": { 2388 | "version": "0.18.20", 2389 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", 2390 | "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", 2391 | "dev": true, 2392 | "optional": true 2393 | }, 2394 | "@esbuild/sunos-x64": { 2395 | "version": "0.18.20", 2396 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", 2397 | "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", 2398 | "dev": true, 2399 | "optional": true 2400 | }, 2401 | "@esbuild/win32-arm64": { 2402 | "version": "0.18.20", 2403 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", 2404 | "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", 2405 | "dev": true, 2406 | "optional": true 2407 | }, 2408 | "@esbuild/win32-ia32": { 2409 | "version": "0.18.20", 2410 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", 2411 | "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", 2412 | "dev": true, 2413 | "optional": true 2414 | }, 2415 | "@esbuild/win32-x64": { 2416 | "version": "0.18.20", 2417 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", 2418 | "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", 2419 | "dev": true, 2420 | "optional": true 2421 | }, 2422 | "@jridgewell/gen-mapping": { 2423 | "version": "0.1.1", 2424 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 2425 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 2426 | "dev": true, 2427 | "requires": { 2428 | "@jridgewell/set-array": "^1.0.0", 2429 | "@jridgewell/sourcemap-codec": "^1.4.10" 2430 | } 2431 | }, 2432 | "@jridgewell/resolve-uri": { 2433 | "version": "3.1.0", 2434 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 2435 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 2436 | "dev": true 2437 | }, 2438 | "@jridgewell/set-array": { 2439 | "version": "1.1.2", 2440 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 2441 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 2442 | "dev": true 2443 | }, 2444 | "@jridgewell/sourcemap-codec": { 2445 | "version": "1.4.14", 2446 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 2447 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 2448 | "dev": true 2449 | }, 2450 | "@jridgewell/trace-mapping": { 2451 | "version": "0.3.17", 2452 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 2453 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 2454 | "dev": true, 2455 | "requires": { 2456 | "@jridgewell/resolve-uri": "3.1.0", 2457 | "@jridgewell/sourcemap-codec": "1.4.14" 2458 | } 2459 | }, 2460 | "@tonconnect/isomorphic-eventsource": { 2461 | "version": "0.0.2", 2462 | "resolved": "https://registry.npmjs.org/@tonconnect/isomorphic-eventsource/-/isomorphic-eventsource-0.0.2.tgz", 2463 | "integrity": "sha512-B4UoIjPi0QkvIzZH5fV3BQLWrqSYABdrzZQSI9sJA9aA+iC0ohOzFwVVGXanlxeDAy1bcvPbb29f6sVUk0UnnQ==", 2464 | "requires": { 2465 | "eventsource": "^2.0.2" 2466 | } 2467 | }, 2468 | "@tonconnect/isomorphic-fetch": { 2469 | "version": "0.0.3", 2470 | "resolved": "https://registry.npmjs.org/@tonconnect/isomorphic-fetch/-/isomorphic-fetch-0.0.3.tgz", 2471 | "integrity": "sha512-jIg5nTrDwnite4fXao3dD83eCpTvInTjZon/rZZrIftIegh4XxyVb5G2mpMqXrVGk1e8SVXm3Kj5OtfMplQs0w==", 2472 | "requires": { 2473 | "node-fetch": "^2.6.9" 2474 | }, 2475 | "dependencies": { 2476 | "node-fetch": { 2477 | "version": "2.7.0", 2478 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", 2479 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 2480 | "requires": { 2481 | "whatwg-url": "^5.0.0" 2482 | } 2483 | } 2484 | } 2485 | }, 2486 | "@tonconnect/protocol": { 2487 | "version": "2.2.7", 2488 | "resolved": "https://registry.npmjs.org/@tonconnect/protocol/-/protocol-2.2.7.tgz", 2489 | "integrity": "sha512-mmuS5ekaRVQtXOug30znXXSnuQfuLa6kDOv17X2ttk8Al9PlTFG/AtPRkWxCp8X5BdhPzGFELTog7kypukjWnQ==", 2490 | "requires": { 2491 | "tweetnacl": "^1.0.3", 2492 | "tweetnacl-util": "^0.15.1" 2493 | } 2494 | }, 2495 | "@tonconnect/sdk": { 2496 | "version": "3.1.1-beta.0", 2497 | "resolved": "https://registry.npmjs.org/@tonconnect/sdk/-/sdk-3.1.1-beta.0.tgz", 2498 | "integrity": "sha512-zwt8g8/oWLRTmXZeF4/dEn6lAcO7J3ynBFNbd4/Wv6X5qMKs9cGaHXOCmRW9enLrvdYa+L/8XFQUyqzMecRH9w==", 2499 | "requires": { 2500 | "@tonconnect/isomorphic-eventsource": "^0.0.2", 2501 | "@tonconnect/isomorphic-fetch": "^0.0.3", 2502 | "@tonconnect/protocol": "^2.2.7" 2503 | } 2504 | }, 2505 | "@tonconnect/ui": { 2506 | "version": "2.1.1-beta.0", 2507 | "resolved": "https://registry.npmjs.org/@tonconnect/ui/-/ui-2.1.1-beta.0.tgz", 2508 | "integrity": "sha512-5DdFbObn0oWLA4G3LlYDlsAmMOgh6ksidEa9L664ZSAScLworn/rXGjOfsLN1uGVei+gs38ivBYhxrCMyHSp/A==", 2509 | "requires": { 2510 | "@tonconnect/sdk": "3.1.1-beta.0", 2511 | "classnames": "^2.3.2", 2512 | "csstype": "^3.1.1", 2513 | "deepmerge": "^4.2.2", 2514 | "ua-parser-js": "^1.0.35" 2515 | }, 2516 | "dependencies": { 2517 | "ua-parser-js": { 2518 | "version": "1.0.40", 2519 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", 2520 | "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==" 2521 | } 2522 | } 2523 | }, 2524 | "@tonconnect/ui-react": { 2525 | "version": "2.1.1-beta.0", 2526 | "resolved": "https://registry.npmjs.org/@tonconnect/ui-react/-/ui-react-2.1.1-beta.0.tgz", 2527 | "integrity": "sha512-gD5gzUvNjMYsBr5K3ZoHxWavUIzdCSdAXNknCDNHuixoVSnmHLIktOatHx95yOfEDo0WwYX8g+mQA1oTxQx0nA==", 2528 | "requires": { 2529 | "@tonconnect/ui": "2.1.1-beta.0" 2530 | } 2531 | }, 2532 | "@types/prop-types": { 2533 | "version": "15.7.5", 2534 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 2535 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 2536 | "dev": true 2537 | }, 2538 | "@types/react": { 2539 | "version": "18.0.33", 2540 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.33.tgz", 2541 | "integrity": "sha512-sHxzVxeanvQyQ1lr8NSHaj0kDzcNiGpILEVt69g9S31/7PfMvNCKLKcsHw4lYKjs3cGNJjXSP4mYzX43QlnjNA==", 2542 | "dev": true, 2543 | "requires": { 2544 | "@types/prop-types": "*", 2545 | "@types/scheduler": "*", 2546 | "csstype": "^3.0.2" 2547 | } 2548 | }, 2549 | "@types/react-dom": { 2550 | "version": "18.0.11", 2551 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", 2552 | "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", 2553 | "dev": true, 2554 | "requires": { 2555 | "@types/react": "*" 2556 | } 2557 | }, 2558 | "@types/scheduler": { 2559 | "version": "0.16.3", 2560 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", 2561 | "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", 2562 | "dev": true 2563 | }, 2564 | "@vitejs/plugin-react": { 2565 | "version": "3.1.0", 2566 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz", 2567 | "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==", 2568 | "dev": true, 2569 | "requires": { 2570 | "@babel/core": "^7.20.12", 2571 | "@babel/plugin-transform-react-jsx-self": "^7.18.6", 2572 | "@babel/plugin-transform-react-jsx-source": "^7.19.6", 2573 | "magic-string": "^0.27.0", 2574 | "react-refresh": "^0.14.0" 2575 | } 2576 | }, 2577 | "ansi-styles": { 2578 | "version": "3.2.1", 2579 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2580 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2581 | "dev": true, 2582 | "requires": { 2583 | "color-convert": "^1.9.0" 2584 | } 2585 | }, 2586 | "anymatch": { 2587 | "version": "3.1.3", 2588 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 2589 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 2590 | "dev": true, 2591 | "requires": { 2592 | "normalize-path": "^3.0.0", 2593 | "picomatch": "^2.0.4" 2594 | } 2595 | }, 2596 | "asap": { 2597 | "version": "2.0.6", 2598 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 2599 | "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" 2600 | }, 2601 | "base16": { 2602 | "version": "1.0.0", 2603 | "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", 2604 | "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" 2605 | }, 2606 | "binary-extensions": { 2607 | "version": "2.2.0", 2608 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 2609 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 2610 | "dev": true 2611 | }, 2612 | "braces": { 2613 | "version": "3.0.2", 2614 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 2615 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 2616 | "dev": true, 2617 | "requires": { 2618 | "fill-range": "^7.0.1" 2619 | } 2620 | }, 2621 | "browserslist": { 2622 | "version": "4.21.5", 2623 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", 2624 | "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", 2625 | "dev": true, 2626 | "requires": { 2627 | "caniuse-lite": "^1.0.30001449", 2628 | "electron-to-chromium": "^1.4.284", 2629 | "node-releases": "^2.0.8", 2630 | "update-browserslist-db": "^1.0.10" 2631 | } 2632 | }, 2633 | "caniuse-lite": { 2634 | "version": "1.0.30001474", 2635 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001474.tgz", 2636 | "integrity": "sha512-iaIZ8gVrWfemh5DG3T9/YqarVZoYf0r188IjaGwx68j4Pf0SGY6CQkmJUIE+NZHkkecQGohzXmBGEwWDr9aM3Q==", 2637 | "dev": true 2638 | }, 2639 | "chalk": { 2640 | "version": "2.4.2", 2641 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2642 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2643 | "dev": true, 2644 | "requires": { 2645 | "ansi-styles": "^3.2.1", 2646 | "escape-string-regexp": "^1.0.5", 2647 | "supports-color": "^5.3.0" 2648 | } 2649 | }, 2650 | "chokidar": { 2651 | "version": "3.5.3", 2652 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 2653 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 2654 | "dev": true, 2655 | "requires": { 2656 | "anymatch": "~3.1.2", 2657 | "braces": "~3.0.2", 2658 | "fsevents": "~2.3.2", 2659 | "glob-parent": "~5.1.2", 2660 | "is-binary-path": "~2.1.0", 2661 | "is-glob": "~4.0.1", 2662 | "normalize-path": "~3.0.0", 2663 | "readdirp": "~3.6.0" 2664 | } 2665 | }, 2666 | "classnames": { 2667 | "version": "2.5.1", 2668 | "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", 2669 | "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" 2670 | }, 2671 | "color-convert": { 2672 | "version": "1.9.3", 2673 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2674 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2675 | "dev": true, 2676 | "requires": { 2677 | "color-name": "1.1.3" 2678 | } 2679 | }, 2680 | "color-name": { 2681 | "version": "1.1.3", 2682 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2683 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 2684 | "dev": true 2685 | }, 2686 | "convert-source-map": { 2687 | "version": "1.9.0", 2688 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", 2689 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", 2690 | "dev": true 2691 | }, 2692 | "cross-fetch": { 2693 | "version": "3.1.5", 2694 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 2695 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 2696 | "requires": { 2697 | "node-fetch": "2.6.7" 2698 | } 2699 | }, 2700 | "csstype": { 2701 | "version": "3.1.2", 2702 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", 2703 | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" 2704 | }, 2705 | "debug": { 2706 | "version": "4.3.4", 2707 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2708 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2709 | "dev": true, 2710 | "requires": { 2711 | "ms": "2.1.2" 2712 | } 2713 | }, 2714 | "deepmerge": { 2715 | "version": "4.3.1", 2716 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 2717 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" 2718 | }, 2719 | "electron-to-chromium": { 2720 | "version": "1.4.353", 2721 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.353.tgz", 2722 | "integrity": "sha512-IdJVpMHJoBT/nn0GQ02wPfbhogDVpd1ud95lP//FTf5l35wzxKJwibB4HBdY7Q+xKPA1nkZ0UDLOMyRj5U5IAQ==", 2723 | "dev": true 2724 | }, 2725 | "eruda": { 2726 | "version": "2.11.3", 2727 | "resolved": "https://registry.npmjs.org/eruda/-/eruda-2.11.3.tgz", 2728 | "integrity": "sha512-e1EqrGJvN5PSXoFCSAmRqqDfziEL5bNSdPcJbRg5QVOHtcFMcG4n/6uTOfs2FTjAhg4X4GbxhHB+l7ITu/1zmQ==" 2729 | }, 2730 | "esbuild": { 2731 | "version": "0.18.20", 2732 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", 2733 | "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", 2734 | "dev": true, 2735 | "requires": { 2736 | "@esbuild/android-arm": "0.18.20", 2737 | "@esbuild/android-arm64": "0.18.20", 2738 | "@esbuild/android-x64": "0.18.20", 2739 | "@esbuild/darwin-arm64": "0.18.20", 2740 | "@esbuild/darwin-x64": "0.18.20", 2741 | "@esbuild/freebsd-arm64": "0.18.20", 2742 | "@esbuild/freebsd-x64": "0.18.20", 2743 | "@esbuild/linux-arm": "0.18.20", 2744 | "@esbuild/linux-arm64": "0.18.20", 2745 | "@esbuild/linux-ia32": "0.18.20", 2746 | "@esbuild/linux-loong64": "0.18.20", 2747 | "@esbuild/linux-mips64el": "0.18.20", 2748 | "@esbuild/linux-ppc64": "0.18.20", 2749 | "@esbuild/linux-riscv64": "0.18.20", 2750 | "@esbuild/linux-s390x": "0.18.20", 2751 | "@esbuild/linux-x64": "0.18.20", 2752 | "@esbuild/netbsd-x64": "0.18.20", 2753 | "@esbuild/openbsd-x64": "0.18.20", 2754 | "@esbuild/sunos-x64": "0.18.20", 2755 | "@esbuild/win32-arm64": "0.18.20", 2756 | "@esbuild/win32-ia32": "0.18.20", 2757 | "@esbuild/win32-x64": "0.18.20" 2758 | } 2759 | }, 2760 | "escalade": { 2761 | "version": "3.1.1", 2762 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2763 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 2764 | "dev": true 2765 | }, 2766 | "escape-string-regexp": { 2767 | "version": "1.0.5", 2768 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2769 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 2770 | "dev": true 2771 | }, 2772 | "eventsource": { 2773 | "version": "2.0.2", 2774 | "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", 2775 | "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==" 2776 | }, 2777 | "fbemitter": { 2778 | "version": "3.0.0", 2779 | "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", 2780 | "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", 2781 | "requires": { 2782 | "fbjs": "^3.0.0" 2783 | } 2784 | }, 2785 | "fbjs": { 2786 | "version": "3.0.4", 2787 | "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", 2788 | "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", 2789 | "requires": { 2790 | "cross-fetch": "^3.1.5", 2791 | "fbjs-css-vars": "^1.0.0", 2792 | "loose-envify": "^1.0.0", 2793 | "object-assign": "^4.1.0", 2794 | "promise": "^7.1.1", 2795 | "setimmediate": "^1.0.5", 2796 | "ua-parser-js": "^0.7.30" 2797 | } 2798 | }, 2799 | "fbjs-css-vars": { 2800 | "version": "1.0.2", 2801 | "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", 2802 | "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" 2803 | }, 2804 | "fill-range": { 2805 | "version": "7.0.1", 2806 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2807 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2808 | "dev": true, 2809 | "requires": { 2810 | "to-regex-range": "^5.0.1" 2811 | } 2812 | }, 2813 | "flux": { 2814 | "version": "4.0.4", 2815 | "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz", 2816 | "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==", 2817 | "requires": { 2818 | "fbemitter": "^3.0.0", 2819 | "fbjs": "^3.0.1" 2820 | } 2821 | }, 2822 | "fsevents": { 2823 | "version": "2.3.2", 2824 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 2825 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 2826 | "dev": true, 2827 | "optional": true 2828 | }, 2829 | "gensync": { 2830 | "version": "1.0.0-beta.2", 2831 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 2832 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 2833 | "dev": true 2834 | }, 2835 | "glob-parent": { 2836 | "version": "5.1.2", 2837 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2838 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2839 | "dev": true, 2840 | "requires": { 2841 | "is-glob": "^4.0.1" 2842 | } 2843 | }, 2844 | "globals": { 2845 | "version": "11.12.0", 2846 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 2847 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 2848 | "dev": true 2849 | }, 2850 | "has-flag": { 2851 | "version": "3.0.0", 2852 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2853 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 2854 | "dev": true 2855 | }, 2856 | "immutable": { 2857 | "version": "4.3.0", 2858 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", 2859 | "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", 2860 | "dev": true 2861 | }, 2862 | "is-binary-path": { 2863 | "version": "2.1.0", 2864 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 2865 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 2866 | "dev": true, 2867 | "requires": { 2868 | "binary-extensions": "^2.0.0" 2869 | } 2870 | }, 2871 | "is-extglob": { 2872 | "version": "2.1.1", 2873 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2874 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2875 | "dev": true 2876 | }, 2877 | "is-glob": { 2878 | "version": "4.0.3", 2879 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2880 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2881 | "dev": true, 2882 | "requires": { 2883 | "is-extglob": "^2.1.1" 2884 | } 2885 | }, 2886 | "is-number": { 2887 | "version": "7.0.0", 2888 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2889 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2890 | "dev": true 2891 | }, 2892 | "js-tokens": { 2893 | "version": "4.0.0", 2894 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2895 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 2896 | }, 2897 | "jsesc": { 2898 | "version": "2.5.2", 2899 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 2900 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 2901 | "dev": true 2902 | }, 2903 | "json5": { 2904 | "version": "2.2.3", 2905 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 2906 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 2907 | "dev": true 2908 | }, 2909 | "lodash.curry": { 2910 | "version": "4.1.1", 2911 | "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", 2912 | "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" 2913 | }, 2914 | "lodash.flow": { 2915 | "version": "3.5.0", 2916 | "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", 2917 | "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" 2918 | }, 2919 | "loose-envify": { 2920 | "version": "1.4.0", 2921 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2922 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2923 | "requires": { 2924 | "js-tokens": "^3.0.0 || ^4.0.0" 2925 | } 2926 | }, 2927 | "lru-cache": { 2928 | "version": "5.1.1", 2929 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 2930 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 2931 | "dev": true, 2932 | "requires": { 2933 | "yallist": "^3.0.2" 2934 | } 2935 | }, 2936 | "magic-string": { 2937 | "version": "0.27.0", 2938 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", 2939 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", 2940 | "dev": true, 2941 | "requires": { 2942 | "@jridgewell/sourcemap-codec": "^1.4.13" 2943 | } 2944 | }, 2945 | "ms": { 2946 | "version": "2.1.2", 2947 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2948 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2949 | "dev": true 2950 | }, 2951 | "nanoid": { 2952 | "version": "3.3.6", 2953 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 2954 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 2955 | "dev": true 2956 | }, 2957 | "node-fetch": { 2958 | "version": "2.6.7", 2959 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 2960 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 2961 | "requires": { 2962 | "whatwg-url": "^5.0.0" 2963 | } 2964 | }, 2965 | "node-releases": { 2966 | "version": "2.0.10", 2967 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", 2968 | "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", 2969 | "dev": true 2970 | }, 2971 | "normalize-path": { 2972 | "version": "3.0.0", 2973 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2974 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2975 | "dev": true 2976 | }, 2977 | "object-assign": { 2978 | "version": "4.1.1", 2979 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2980 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 2981 | }, 2982 | "picocolors": { 2983 | "version": "1.0.0", 2984 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 2985 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 2986 | "dev": true 2987 | }, 2988 | "picomatch": { 2989 | "version": "2.3.1", 2990 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2991 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2992 | "dev": true 2993 | }, 2994 | "postcss": { 2995 | "version": "8.4.29", 2996 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", 2997 | "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", 2998 | "dev": true, 2999 | "requires": { 3000 | "nanoid": "^3.3.6", 3001 | "picocolors": "^1.0.0", 3002 | "source-map-js": "^1.0.2" 3003 | } 3004 | }, 3005 | "promise": { 3006 | "version": "7.3.1", 3007 | "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", 3008 | "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", 3009 | "requires": { 3010 | "asap": "~2.0.3" 3011 | } 3012 | }, 3013 | "pure-color": { 3014 | "version": "1.3.0", 3015 | "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", 3016 | "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" 3017 | }, 3018 | "react": { 3019 | "version": "17.0.2", 3020 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 3021 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 3022 | "requires": { 3023 | "loose-envify": "^1.1.0", 3024 | "object-assign": "^4.1.1" 3025 | } 3026 | }, 3027 | "react-base16-styling": { 3028 | "version": "0.6.0", 3029 | "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", 3030 | "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==", 3031 | "requires": { 3032 | "base16": "^1.0.0", 3033 | "lodash.curry": "^4.0.1", 3034 | "lodash.flow": "^3.3.0", 3035 | "pure-color": "^1.2.0" 3036 | } 3037 | }, 3038 | "react-dom": { 3039 | "version": "17.0.2", 3040 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 3041 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 3042 | "requires": { 3043 | "loose-envify": "^1.1.0", 3044 | "object-assign": "^4.1.1", 3045 | "scheduler": "^0.20.2" 3046 | } 3047 | }, 3048 | "react-json-view": { 3049 | "version": "1.21.3", 3050 | "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", 3051 | "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", 3052 | "requires": { 3053 | "flux": "^4.0.1", 3054 | "react-base16-styling": "^0.6.0", 3055 | "react-lifecycles-compat": "^3.0.4", 3056 | "react-textarea-autosize": "^8.3.2" 3057 | } 3058 | }, 3059 | "react-lifecycles-compat": { 3060 | "version": "3.0.4", 3061 | "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", 3062 | "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" 3063 | }, 3064 | "react-refresh": { 3065 | "version": "0.14.0", 3066 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", 3067 | "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", 3068 | "dev": true 3069 | }, 3070 | "react-textarea-autosize": { 3071 | "version": "8.4.1", 3072 | "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.4.1.tgz", 3073 | "integrity": "sha512-aD2C+qK6QypknC+lCMzteOdIjoMbNlgSFmJjCV+DrfTPwp59i/it9mMNf2HDzvRjQgKAyBDPyLJhcrzElf2U4Q==", 3074 | "requires": { 3075 | "@babel/runtime": "^7.20.13", 3076 | "use-composed-ref": "^1.3.0", 3077 | "use-latest": "^1.2.1" 3078 | } 3079 | }, 3080 | "readdirp": { 3081 | "version": "3.6.0", 3082 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 3083 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 3084 | "dev": true, 3085 | "requires": { 3086 | "picomatch": "^2.2.1" 3087 | } 3088 | }, 3089 | "regenerator-runtime": { 3090 | "version": "0.13.11", 3091 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", 3092 | "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" 3093 | }, 3094 | "rollup": { 3095 | "version": "3.29.1", 3096 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.1.tgz", 3097 | "integrity": "sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg==", 3098 | "dev": true, 3099 | "requires": { 3100 | "fsevents": "~2.3.2" 3101 | } 3102 | }, 3103 | "sass": { 3104 | "version": "1.60.0", 3105 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.60.0.tgz", 3106 | "integrity": "sha512-updbwW6fNb5gGm8qMXzVO7V4sWf7LMXnMly/JEyfbfERbVH46Fn6q02BX7/eHTdKpE7d+oTkMMQpFWNUMfFbgQ==", 3107 | "dev": true, 3108 | "requires": { 3109 | "chokidar": ">=3.0.0 <4.0.0", 3110 | "immutable": "^4.0.0", 3111 | "source-map-js": ">=0.6.2 <2.0.0" 3112 | } 3113 | }, 3114 | "scheduler": { 3115 | "version": "0.20.2", 3116 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 3117 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 3118 | "requires": { 3119 | "loose-envify": "^1.1.0", 3120 | "object-assign": "^4.1.1" 3121 | } 3122 | }, 3123 | "semver": { 3124 | "version": "6.3.0", 3125 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 3126 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 3127 | "dev": true 3128 | }, 3129 | "setimmediate": { 3130 | "version": "1.0.5", 3131 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 3132 | "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" 3133 | }, 3134 | "source-map-js": { 3135 | "version": "1.0.2", 3136 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 3137 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 3138 | "dev": true 3139 | }, 3140 | "supports-color": { 3141 | "version": "5.5.0", 3142 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3143 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3144 | "dev": true, 3145 | "requires": { 3146 | "has-flag": "^3.0.0" 3147 | } 3148 | }, 3149 | "to-fast-properties": { 3150 | "version": "2.0.0", 3151 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 3152 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 3153 | "dev": true 3154 | }, 3155 | "to-regex-range": { 3156 | "version": "5.0.1", 3157 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3158 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3159 | "dev": true, 3160 | "requires": { 3161 | "is-number": "^7.0.0" 3162 | } 3163 | }, 3164 | "tr46": { 3165 | "version": "0.0.3", 3166 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 3167 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 3168 | }, 3169 | "tweetnacl": { 3170 | "version": "1.0.3", 3171 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", 3172 | "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" 3173 | }, 3174 | "tweetnacl-util": { 3175 | "version": "0.15.1", 3176 | "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", 3177 | "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" 3178 | }, 3179 | "typescript": { 3180 | "version": "4.9.5", 3181 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 3182 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 3183 | "dev": true 3184 | }, 3185 | "ua-parser-js": { 3186 | "version": "0.7.35", 3187 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.35.tgz", 3188 | "integrity": "sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==" 3189 | }, 3190 | "update-browserslist-db": { 3191 | "version": "1.0.10", 3192 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", 3193 | "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", 3194 | "dev": true, 3195 | "requires": { 3196 | "escalade": "^3.1.1", 3197 | "picocolors": "^1.0.0" 3198 | } 3199 | }, 3200 | "use-composed-ref": { 3201 | "version": "1.3.0", 3202 | "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", 3203 | "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", 3204 | "requires": {} 3205 | }, 3206 | "use-isomorphic-layout-effect": { 3207 | "version": "1.1.2", 3208 | "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", 3209 | "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", 3210 | "requires": {} 3211 | }, 3212 | "use-latest": { 3213 | "version": "1.2.1", 3214 | "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", 3215 | "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", 3216 | "requires": { 3217 | "use-isomorphic-layout-effect": "^1.1.1" 3218 | } 3219 | }, 3220 | "vite": { 3221 | "version": "4.4.9", 3222 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", 3223 | "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", 3224 | "dev": true, 3225 | "requires": { 3226 | "esbuild": "^0.18.10", 3227 | "fsevents": "~2.3.2", 3228 | "postcss": "^8.4.27", 3229 | "rollup": "^3.27.1" 3230 | } 3231 | }, 3232 | "webidl-conversions": { 3233 | "version": "3.0.1", 3234 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 3235 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 3236 | }, 3237 | "whatwg-url": { 3238 | "version": "5.0.0", 3239 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 3240 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 3241 | "requires": { 3242 | "tr46": "~0.0.3", 3243 | "webidl-conversions": "^3.0.0" 3244 | } 3245 | }, 3246 | "yallist": { 3247 | "version": "3.1.1", 3248 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 3249 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 3250 | "dev": true 3251 | } 3252 | } 3253 | } 3254 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-dapp-react-ui", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite --host --force", 8 | "build": "tsc && GH_PAGES=true vite build", 9 | "build:dev": "tsc && vite build", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "@tonconnect/ui-react": "2.1.1-beta.0", 14 | "eruda": "^2.11.2", 15 | "react": "^17.0.0", 16 | "react-dom": "^17.0.0", 17 | "react-json-view": "^1.21.3" 18 | }, 19 | "devDependencies": { 20 | "@types/react": "^18.0.26", 21 | "@types/react-dom": "^18.0.9", 22 | "@vitejs/plugin-react": "^3.0.0", 23 | "sass": "^1.57.1", 24 | "typescript": "^4.9.3", 25 | "vite": "^4.0.0" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-connect/demo-dapp-with-wallet/71af027d55f9f5b3f7f15b4d0f6339055e148280/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/privacy-policy.txt: -------------------------------------------------------------------------------- 1 | Privacy Policy example 2 | ... 3 | -------------------------------------------------------------------------------- /public/tc-verify.json: -------------------------------------------------------------------------------- 1 | { 2 | "payload": "9hE-Ov4dBR8AAAAAZT_L0NIswgedrN4hc4upm0e9vASVO4nl_MP5hbybtMYIfhkZ" 3 | } 4 | -------------------------------------------------------------------------------- /public/terms-of-use.txt: -------------------------------------------------------------------------------- 1 | Terms of use example 2 | ... 3 | -------------------------------------------------------------------------------- /public/tonconnect-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "url": "https://ton-connect.github.io/demo-dapp-with-wallet/", 3 | "name": "Demo Dapp with wallet", 4 | "iconUrl": "https://ton-connect.github.io/demo-dapp-with-wallet/apple-touch-icon.png", 5 | "termsOfUseUrl": "https://ton-connect.github.io/demo-dapp-with-wallet/terms-of-use.txt", 6 | "privacyPolicyUrl": "https://ton-connect.github.io/demo-dapp-with-wallet/privacy-policy.txt" 7 | } 8 | -------------------------------------------------------------------------------- /src/App.scss: -------------------------------------------------------------------------------- 1 | .app { 2 | height: 100%; 3 | display: flex; 4 | flex-direction: column; 5 | 6 | > header { 7 | margin-bottom: 10px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import './App.scss'; 2 | import './trackers'; 3 | import {THEME, TonConnectUIProvider} from "@tonconnect/ui-react"; 4 | import {Footer} from "./components/Footer/Footer"; 5 | import {Header} from "./components/Header/Header"; 6 | import {TxForm} from "./components/TxForm/TxForm"; 7 | 8 | function App() { 9 | return ( 10 | 318 |
319 |
320 | 321 | {/**/} 322 |
324 |
325 | ) 326 | } 327 | 328 | export default App 329 | -------------------------------------------------------------------------------- /src/TonProofDemoApi.ts: -------------------------------------------------------------------------------- 1 | import {Account, ConnectAdditionalRequest, TonProofItemReplySuccess} from "@tonconnect/ui-react"; 2 | import './patch-local-storage-for-github-pages'; 3 | 4 | class TonProofDemoApiService { 5 | private localStorageKey = 'demo-api-access-token'; 6 | 7 | private host = 'https://demo.tonconnect.dev'; 8 | 9 | public accessToken: string | null = null; 10 | 11 | public readonly refreshIntervalMs = 9 * 60 * 1000; 12 | 13 | constructor() { 14 | this.accessToken = localStorage.getItem(this.localStorageKey); 15 | 16 | if (!this.accessToken) { 17 | this.generatePayload(); 18 | } 19 | } 20 | 21 | async generatePayload(): Promise { 22 | try { 23 | const response = await ( 24 | await fetch(`${this.host}/ton-proof/generatePayload`, { 25 | method: 'POST', 26 | }) 27 | ).json(); 28 | return {tonProof: response.payload as string}; 29 | } catch { 30 | return null; 31 | } 32 | 33 | } 34 | 35 | async checkProof(proof: TonProofItemReplySuccess['proof'], account: Account) { 36 | try { 37 | const reqBody = { 38 | address: account.address, 39 | network: account.chain, 40 | proof: { 41 | ...proof, 42 | state_init: account.walletStateInit, 43 | }, 44 | }; 45 | 46 | const response = await ( 47 | await fetch(`${this.host}/ton-proof/checkProof`, { 48 | method: 'POST', 49 | body: JSON.stringify(reqBody), 50 | }) 51 | ).json(); 52 | 53 | if (response?.token) { 54 | localStorage.setItem(this.localStorageKey, response.token); 55 | this.accessToken = response.token; 56 | } 57 | } catch (e) { 58 | console.log('checkProof error:', e); 59 | } 60 | } 61 | 62 | async getAccountInfo(account: Account) { 63 | const response = await ( 64 | await fetch(`${this.host}/dapp/getAccountInfo?network=${account.chain}`, { 65 | headers: { 66 | Authorization: `Bearer ${this.accessToken}`, 67 | 'Content-Type': 'application/json', 68 | }, 69 | }) 70 | ).json(); 71 | 72 | return response as {}; 73 | } 74 | 75 | reset() { 76 | this.accessToken = null; 77 | localStorage.removeItem(this.localStorageKey); 78 | this.generatePayload(); 79 | } 80 | } 81 | 82 | export const TonProofDemoApi = new TonProofDemoApiService(); 83 | -------------------------------------------------------------------------------- /src/assets/react.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/Footer/ColorsModal/ColorsModal.tsx: -------------------------------------------------------------------------------- 1 | import { THEME } from "@tonconnect/ui-react"; 2 | import {useState} from "react"; 3 | import {ColorsSelect} from "../ColorsSelect/ColorsSelect"; 4 | import './style.scss'; 5 | 6 | export const ColorsModal = () => { 7 | const [opened, setOpened] = useState(false); 8 | const [theme, setTheme] = useState(THEME.LIGHT); 9 | 10 | return(<> 11 | 12 | {opened && 13 |
14 | 15 |
16 | setTheme(THEME.LIGHT)}>LIGHT 17 | setTheme(THEME.DARK)}>DARK 18 |
19 | 20 | 21 |
22 | } 23 | 24 | ) 25 | } 26 | -------------------------------------------------------------------------------- /src/components/Footer/ColorsModal/style.scss: -------------------------------------------------------------------------------- 1 | .modal { 2 | position: fixed; 3 | left: 0; 4 | top: 0; 5 | bottom: 0; 6 | right: 0; 7 | z-index: 10000000; 8 | 9 | background-color: rgb(16, 22, 31); 10 | 11 | padding: 20px; 12 | 13 | color: white; 14 | 15 | > button { 16 | float: right; 17 | } 18 | 19 | &__toggle { 20 | display: flex; 21 | justify-content: center; 22 | gap: 20px; 23 | 24 | > a { 25 | color: white; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/components/Footer/ColorsSelect/ColorsSelect.tsx: -------------------------------------------------------------------------------- 1 | import {ColorsSet, THEME, useTonConnectUI} from "@tonconnect/ui-react"; 2 | import {FunctionComponent, useEffect, useState} from "react"; 3 | import './style.scss'; 4 | 5 | const defaultColors = { 6 | [THEME.LIGHT]: { 7 | constant: { 8 | black: '#000000', 9 | white: '#FFFFFF' 10 | }, 11 | connectButton: { 12 | background: '#0098EA', 13 | foreground: '#FFFFFF' 14 | }, 15 | accent: '#0098EA', 16 | telegramButton: '#0098EA', 17 | icon: { 18 | primary: '#0F0F0F', 19 | secondary: '#7A8999', 20 | tertiary: '#C1CAD2', 21 | success: '#29CC6A', 22 | error: '#F5A73B' 23 | }, 24 | background: { 25 | primary: '#FFFFFF', 26 | secondary: '#F1F3F5', 27 | segment: '#FFFFFF', 28 | tint: '#F1F3F5', 29 | qr: '#F1F3F5' 30 | }, 31 | text: { 32 | primary: '#0F0F0F', 33 | secondary: '#6A7785' 34 | } 35 | }, 36 | [THEME.DARK]: { 37 | constant: { 38 | black: '#000000', 39 | white: '#FFFFFF' 40 | }, 41 | connectButton: { 42 | background: '#0098EA', 43 | foreground: '#FFFFFF' 44 | }, 45 | accent: '#E5E5EA', 46 | telegramButton: '#31A6F5', 47 | icon: { 48 | primary: '#E5E5EA', 49 | secondary: '#909099', 50 | tertiary: '#434347', 51 | success: '#29CC6A', 52 | error: '#F5A73B' 53 | }, 54 | background: { 55 | primary: '#121214', 56 | secondary: '#18181A', 57 | segment: '#262629', 58 | tint: '#222224', 59 | qr: '#F1F3F5' 60 | }, 61 | text: { 62 | primary: '#E5E5EA', 63 | secondary: '#7D7D85' 64 | } 65 | } 66 | } 67 | 68 | export interface ColorsSelectProps { 69 | theme: THEME; 70 | } 71 | export const ColorsSelect: FunctionComponent = ({ theme }) => { 72 | const [_, setOptions] = useTonConnectUI(); 73 | const [colors, setColors] = useState(defaultColors[theme]); 74 | 75 | useEffect(() => { 76 | setColors(defaultColors[theme]); 77 | }, [theme]); 78 | 79 | const onChange = (value: string, property1: string, property2?: string) => { 80 | setOptions({ 81 | uiPreferences: { 82 | colorsSet: { 83 | [theme]: { 84 | [property1]: property2 ? { 85 | ...(colors as any)[property1], 86 | [property2]: value 87 | } : value 88 | } 89 | } 90 | } 91 | }) 92 | 93 | 94 | setColors(colors => ({ 95 | ...colors, 96 | [property1]: property2 ? { 97 | ...(colors as any)[property1], 98 | [property2]: value 99 | } : value 100 | })); 101 | 102 | defaultColors[theme] = { 103 | ...defaultColors[theme], 104 | [property1]: property2 ? { 105 | ...(colors as any)[property1], 106 | [property2]: value 107 | } : value 108 | } 109 | } 110 | 111 | return
112 | { Object.entries(colors).map(([key1, value1]) => { 113 | if (typeof value1 === 'object') { 114 | return
115 | {key1}: 116 | { 117 | Object.entries(value1).map(([key2, value2]) => 118 | 126 | ) 127 | } 128 | 129 |
130 | } 131 | 132 | return
133 | {key1}: 134 | 141 |
142 | 143 | }) 144 | } 145 |
146 | } 147 | -------------------------------------------------------------------------------- /src/components/Footer/ColorsSelect/style.scss: -------------------------------------------------------------------------------- 1 | .colors-container { 2 | > div { 3 | margin-bottom: 20px; 4 | 5 | > span { 6 | margin-right: 14px; 7 | font-weight: bold; 8 | } 9 | 10 | > label { 11 | margin-right: 10px; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/components/Footer/Footer.tsx: -------------------------------------------------------------------------------- 1 | import {BorderRadius, Locales, ReturnStrategy, Theme, THEME, useTonConnectUI} from "@tonconnect/ui-react"; 2 | import './footer.scss'; 3 | import {useEffect, useState} from "react"; 4 | import {ColorsModal} from "./ColorsModal/ColorsModal"; 5 | 6 | const defaultWalletsSelectValue = '["Tonkeeper", "OpenMask"]'; 7 | 8 | export const Footer = () => { 9 | const [checkboxes, setCheckboxes] = useState( 10 | [true, false, false, true, true, true] 11 | ); 12 | 13 | const [returnStrategy, setReturnStrategy] = useState('back'); 14 | const [skipRedirect, setSkipRedirect] = useState('ios'); 15 | 16 | const [_, setOptions] = useTonConnectUI(); 17 | 18 | const onLangChange = (lang: string) => { 19 | setOptions({language: lang as Locales}) 20 | } 21 | 22 | const onThemeChange = (theme: string) => { 23 | setOptions({uiPreferences: {theme: theme as Theme}}) 24 | } 25 | 26 | const onBordersChange = (borders: string) => { 27 | setOptions({uiPreferences: {borderRadius: borders as BorderRadius}}) 28 | } 29 | 30 | const onCheckboxChange = (position: number) => { 31 | setCheckboxes(state => state.map((item, index) => index === position ? !item : item )); 32 | } 33 | 34 | const onReturnStrategyInputBlur = () => { 35 | if (!returnStrategy) { 36 | setReturnStrategy('back'); 37 | return; 38 | } 39 | 40 | setOptions({ actionsConfiguration: { returnStrategy: returnStrategy as ReturnStrategy } }) 41 | 42 | } 43 | 44 | const onSkipRedirectInputBlur = () => { 45 | if (!skipRedirect) { 46 | setSkipRedirect('ios'); 47 | return; 48 | } 49 | 50 | setOptions({ actionsConfiguration: { skipRedirectToWallet: skipRedirect as 'ios' | 'never' | 'always' } }) 51 | 52 | } 53 | 54 | useEffect(() => { 55 | const actionValues = ['before', 'success', 'error']; 56 | const modals = actionValues.map((item, index) => checkboxes[index] ? item : undefined).filter(i => i) as ("before" | "success" | "error")[]; 57 | const notifications = actionValues.map((item, index) => checkboxes[index + 3] ? item : undefined).filter(i => i) as ("before" | "success" | "error")[]; 58 | 59 | setOptions({ actionsConfiguration: { modals, notifications } }) 60 | }, [checkboxes]) 61 | 62 | return
63 |
64 | 65 | 69 |
70 | 71 |
72 | 73 | 78 |
79 | 80 |
81 | 82 | 87 |
88 | 89 |
90 | modals 91 | 95 | 99 | 103 |
104 | 105 |
106 | notifications 107 | 111 | 115 | 119 |
120 | 121 |
122 | 123 |
124 | 125 |
126 | 134 |
135 | 136 |
137 | 150 |
151 |
152 | } 153 | -------------------------------------------------------------------------------- /src/components/Footer/footer.scss: -------------------------------------------------------------------------------- 1 | .footer { 2 | padding: 20px; 3 | display: flex; 4 | gap: 20px; 5 | justify-content: flex-end; 6 | align-items: center; 7 | flex-wrap: wrap; 8 | 9 | > div > label { 10 | color: white; 11 | margin-right: 5px; 12 | } 13 | } 14 | 15 | .footer-checkbox-container { 16 | display: flex; 17 | flex-direction: column; 18 | 19 | > span { 20 | color: white; 21 | font-weight: bold; 22 | margin-bottom: 4px; 23 | } 24 | 25 | input { 26 | margin-left: 3px; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/components/Header/Header.tsx: -------------------------------------------------------------------------------- 1 | import {TonConnectButton} from "@tonconnect/ui-react"; 2 | import './header.scss'; 3 | 4 | export const Header = () => { 5 | return
6 | My App with React UI 7 | 8 |
9 | } 10 | -------------------------------------------------------------------------------- /src/components/Header/header.scss: -------------------------------------------------------------------------------- 1 | header { 2 | display: flex; 3 | align-items: center; 4 | justify-content: space-between; 5 | padding: 10px 25px; 6 | 7 | > span { 8 | font-size: 30px; 9 | line-height: 34px; 10 | color: rgba(102,170,238,0.91); 11 | font-weight: bold; 12 | } 13 | } 14 | 15 | @media (max-width: 525px) { 16 | header { 17 | flex-direction: column; 18 | gap: 10px; 19 | 20 | > *:nth-child(2) { 21 | align-self: flex-end; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/components/TonProofDemo/TonProofDemo.tsx: -------------------------------------------------------------------------------- 1 | import React, {useCallback, useEffect, useRef, useState} from 'react'; 2 | import ReactJson from 'react-json-view'; 3 | import './style.scss'; 4 | import {TonProofDemoApi} from "../../TonProofDemoApi"; 5 | import {useTonConnectUI, useTonWallet} from "@tonconnect/ui-react"; 6 | import {CHAIN} from "@tonconnect/ui-react"; 7 | import useInterval from "../../hooks/useInterval"; 8 | 9 | 10 | export const TonProofDemo = () => { 11 | const firstProofLoading = useRef(true); 12 | 13 | const [data, setData] = useState({}); 14 | const wallet = useTonWallet(); 15 | const [authorized, setAuthorized] = useState(false); 16 | const [tonConnectUI] = useTonConnectUI(); 17 | 18 | const recreateProofPayload = useCallback(async () => { 19 | if (firstProofLoading.current) { 20 | tonConnectUI.setConnectRequestParameters({ state: 'loading' }); 21 | firstProofLoading.current = false; 22 | } 23 | 24 | const payload = await TonProofDemoApi.generatePayload(); 25 | 26 | if (payload) { 27 | tonConnectUI.setConnectRequestParameters({ state: 'ready', value: payload }); 28 | } else { 29 | tonConnectUI.setConnectRequestParameters(null); 30 | } 31 | }, [tonConnectUI, firstProofLoading]) 32 | 33 | if (firstProofLoading.current) { 34 | recreateProofPayload(); 35 | } 36 | 37 | useInterval(recreateProofPayload, TonProofDemoApi.refreshIntervalMs); 38 | 39 | useEffect(() => 40 | tonConnectUI.onStatusChange(async w => { 41 | if (!w || w.account.chain === CHAIN.TESTNET) { 42 | TonProofDemoApi.reset(); 43 | setAuthorized(false); 44 | return; 45 | } 46 | 47 | if (w.connectItems?.tonProof && 'proof' in w.connectItems.tonProof) { 48 | await TonProofDemoApi.checkProof(w.connectItems.tonProof.proof, w.account); 49 | } 50 | 51 | if (!TonProofDemoApi.accessToken) { 52 | tonConnectUI.disconnect(); 53 | setAuthorized(false); 54 | return; 55 | } 56 | 57 | setAuthorized(true); 58 | }), [tonConnectUI]); 59 | 60 | 61 | const handleClick = useCallback(async () => { 62 | if (!wallet) { 63 | return; 64 | } 65 | const response = await TonProofDemoApi.getAccountInfo(wallet.account); 66 | 67 | setData(response); 68 | }, [wallet]); 69 | 70 | if (!authorized) { 71 | return null; 72 | } 73 | 74 | return ( 75 |
76 |

Demo backend API with ton_proof verification

77 | {authorized ? ( 78 | 81 | ) : ( 82 |
Connect wallet to call API
83 | )} 84 | 85 |
86 | ); 87 | } 88 | -------------------------------------------------------------------------------- /src/components/TonProofDemo/style.scss: -------------------------------------------------------------------------------- 1 | .ton-proof-demo { 2 | display: flex; 3 | width: 100%; 4 | flex-direction: column; 5 | gap: 20px; 6 | align-items: center; 7 | margin-top: 60px; 8 | padding: 20px; 9 | 10 | h3 { 11 | color: white; 12 | opacity: 0.8; 13 | } 14 | 15 | > div:nth-child(3) { 16 | width: 100%; 17 | 18 | span { 19 | word-break: break-word; 20 | } 21 | } 22 | 23 | &__error { 24 | color: rgba(102,170,238,0.91); 25 | font-size: 18px; 26 | line-height: 20px; 27 | } 28 | 29 | button { 30 | border: none; 31 | padding: 7px 15px; 32 | border-radius: 15px; 33 | cursor: pointer; 34 | 35 | background-color: rgba(102,170,238,0.91); 36 | color: white; 37 | font-size: 16px; 38 | line-height: 20px; 39 | 40 | transition: transform 0.1s ease-in-out; 41 | 42 | &:hover { 43 | transform: scale(1.03); 44 | } 45 | 46 | &:active { 47 | transform: scale(0.97); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/components/TxForm/TxForm.tsx: -------------------------------------------------------------------------------- 1 | import React, {useCallback, useState} from 'react'; 2 | import ReactJson from 'react-json-view'; 3 | import './style.scss'; 4 | import {SendTransactionRequest, useTonConnectUI, useTonWallet} from "@tonconnect/ui-react"; 5 | 6 | // In this example, we are using a predefined smart contract state initialization (`stateInit`) 7 | // to interact with an "EchoContract". This contract is designed to send the value back to the sender, 8 | // serving as a testing tool to prevent users from accidentally spending money. 9 | const defaultTx: SendTransactionRequest = { 10 | // The transaction is valid for 10 minutes from now, in unix epoch seconds. 11 | validUntil: Math.floor(Date.now() / 1000) + 600, 12 | messages: [ 13 | 14 | { 15 | // The receiver's address. 16 | address: 'EQCKWpx7cNMpvmcN5ObM5lLUZHZRFKqYA4xmw9jOry0ZsF9M', 17 | // Amount to send in nanoTON. For example, 0.005 TON is 5000000 nanoTON. 18 | amount: '5000000', 19 | // (optional) State initialization in boc base64 format. 20 | stateInit: 'te6cckEBBAEAOgACATQCAQAAART/APSkE/S88sgLAwBI0wHQ0wMBcbCRW+D6QDBwgBDIywVYzxYh+gLLagHPFsmAQPsAlxCarA==', 21 | // (optional) Payload in boc base64 format. 22 | payload: 'te6ccsEBAQEADAAMABQAAAAASGVsbG8hCaTc/g==', 23 | }, 24 | 25 | // Uncomment the following message to send two messages in one transaction. 26 | /* 27 | { 28 | // Note: Funds sent to this address will not be returned back to the sender. 29 | address: 'UQAuz15H1ZHrZ_psVrAra7HealMIVeFq0wguqlmFno1f3B-m', 30 | amount: toNano('0.01').toString(), 31 | } 32 | */ 33 | 34 | ], 35 | }; 36 | 37 | export function TxForm() { 38 | const [tx, setTx] = useState(defaultTx); 39 | const wallet = useTonWallet(); 40 | const [tonConnectUi] = useTonConnectUI(); 41 | 42 | const onChange = useCallback((value: object) => setTx((value as { updated_src: typeof defaultTx }).updated_src), []); 43 | 44 | return ( 45 |
46 |

Configure and send transaction

47 | 48 | {wallet ? ( 49 | 52 | ) : ( 53 | 54 | )} 55 |
56 | ); 57 | } 58 | -------------------------------------------------------------------------------- /src/components/TxForm/style.scss: -------------------------------------------------------------------------------- 1 | .send-tx-form { 2 | flex: 1; 3 | display: flex; 4 | width: 100%; 5 | flex-direction: column; 6 | gap: 20px; 7 | padding: 20px; 8 | align-items: center; 9 | 10 | h3 { 11 | color: white; 12 | opacity: 0.8; 13 | font-size: 28px; 14 | } 15 | 16 | > div:nth-child(2) { 17 | width: 100%; 18 | 19 | span { 20 | word-break: break-word; 21 | } 22 | } 23 | 24 | > button { 25 | border: none; 26 | padding: 7px 15px; 27 | border-radius: 15px; 28 | cursor: pointer; 29 | 30 | background-color: rgba(102,170,238,0.91); 31 | color: white; 32 | font-size: 16px; 33 | line-height: 20px; 34 | 35 | transition: transform 0.1s ease-in-out; 36 | 37 | &:hover { 38 | transform: scale(1.03); 39 | } 40 | 41 | &:active { 42 | transform: scale(0.97); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/hooks/useInterval.ts: -------------------------------------------------------------------------------- 1 | import {useEffect, useLayoutEffect, useRef} from 'react' 2 | 3 | function useInterval(callback: () => void, delay: number | null) { 4 | const savedCallback = useRef(callback) 5 | 6 | useLayoutEffect(() => { 7 | savedCallback.current = callback 8 | }, [callback]) 9 | 10 | useEffect(() => { 11 | if (!delay && delay !== 0) { 12 | return 13 | } 14 | 15 | const id = setInterval(() => savedCallback.current(), delay) 16 | 17 | return () => clearInterval(id) 18 | }, [delay]) 19 | } 20 | 21 | export default useInterval 22 | -------------------------------------------------------------------------------- /src/index.scss: -------------------------------------------------------------------------------- 1 | html, body, #root { 2 | height: 100%; 3 | } 4 | 5 | body { 6 | margin: 0; 7 | background-color: rgba(16, 22, 31, 0.92);; 8 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 9 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 10 | sans-serif; 11 | -webkit-font-smoothing: antialiased; 12 | -moz-osx-font-smoothing: grayscale; 13 | } 14 | 15 | code { 16 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 17 | monospace; 18 | } 19 | 20 | * { 21 | box-sizing: border-box; 22 | } 23 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- 1 | import './patch-local-storage-for-github-pages'; 2 | 3 | import React, {StrictMode} from 'react' 4 | import { render } from 'react-dom'; 5 | import App from './App' 6 | import './index.scss' 7 | import eruda from "eruda"; 8 | 9 | eruda.init(); 10 | 11 | render( 12 | 13 | 14 | , 15 | document.getElementById('root') as HTMLElement 16 | ) 17 | -------------------------------------------------------------------------------- /src/patch-local-storage-for-github-pages.ts: -------------------------------------------------------------------------------- 1 | const separator = window.location.pathname.replace(/\/+$/, '') + ':'; 2 | 3 | const setItem = localStorage.setItem; 4 | localStorage.constructor.prototype.setItem = (key: unknown, value: string) => setItem.apply(localStorage, [separator + key, value]); 5 | localStorage.setItem = (key: unknown, value: string) => setItem.apply(localStorage, [separator + key, value]); 6 | 7 | const getItem = localStorage.getItem; 8 | localStorage.constructor.prototype.getItem = (key: unknown) => getItem.apply(localStorage, [separator + key]); 9 | localStorage.getItem = (key: unknown) => getItem.apply(localStorage, [separator + key]); 10 | 11 | const removeItem = localStorage.removeItem; 12 | localStorage.constructor.prototype.removeItem = (key: unknown) => removeItem.apply(localStorage, [separator + key]); 13 | localStorage.removeItem = (key: unknown) => removeItem.apply(localStorage, [separator + key]); 14 | 15 | export {}; 16 | -------------------------------------------------------------------------------- /src/trackers.ts: -------------------------------------------------------------------------------- 1 | import {UserActionEvent, SdkActionEvent} from "@tonconnect/ui-react"; 2 | 3 | const logEvent = (scope: string): (event: Event) => void => { 4 | scope = scope.startsWith('ton-connect-ui-') ? 'TonConnectUI' : 'TonConnect'; 5 | 6 | return (event: Event): void => { 7 | if (!(event instanceof CustomEvent)) { 8 | return; 9 | } 10 | const detail: UserActionEvent | SdkActionEvent = event.detail; 11 | console.log(`${scope} Event: ${detail.type}`, detail); 12 | } 13 | }; 14 | 15 | const tonConnectUiPrefix = 'ton-connect-ui-'; 16 | const tonConnectUiEvents = [ 17 | 'request-version', 18 | 'response-version', 19 | 'connection-started', 20 | 'connection-completed', 21 | 'connection-error', 22 | 'connection-restoring-started', 23 | 'connection-restoring-completed', 24 | 'connection-restoring-error', 25 | 'transaction-sent-for-signature', 26 | 'transaction-signed', 27 | 'transaction-signing-failed', 28 | 'disconnection', 29 | ].map(event => `${tonConnectUiPrefix}${event}`) 30 | 31 | const tonConnectPrefix = 'ton-connect-'; 32 | const tonConnectEvents = [ 33 | 'request-version', 34 | 'response-version', 35 | 'connection-started', 36 | 'connection-completed', 37 | 'connection-error', 38 | 'connection-restoring-started', 39 | 'connection-restoring-completed', 40 | 'connection-restoring-error', 41 | 'transaction-sent-for-signature', 42 | 'transaction-signed', 43 | 'transaction-signing-failed', 44 | 'disconnection', 45 | ].map(event => `${tonConnectPrefix}${event}`) 46 | 47 | const events = [ 48 | ...tonConnectUiEvents, 49 | ...tonConnectEvents 50 | ]; 51 | 52 | for (const event of events) { 53 | try { 54 | window.addEventListener(`${event}`, logEvent(event)); 55 | } catch (e) {} 56 | } 57 | -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": true, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx" 18 | }, 19 | "include": ["src"], 20 | "references": [{ "path": "./tsconfig.node.json" }] 21 | } 22 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | 6 | export default defineConfig({ 7 | plugins: [react()], 8 | build: { 9 | outDir: 'docs' 10 | }, 11 | // @ts-ignore 12 | base: process.env.GH_PAGES ? '/demo-dapp-with-wallet/' : './', 13 | server: { 14 | fs: { 15 | allow: ['../sdk', './'], 16 | }, 17 | }, 18 | }) 19 | --------------------------------------------------------------------------------