├── .env.local.example ├── .eslintrc.json ├── .gitignore ├── .prettierignore ├── .prettierrc ├── LICENSE ├── README.md ├── next.config.js ├── package.json ├── pnpm-lock.yaml ├── public ├── next.svg └── vercel.svg ├── src └── app │ ├── api │ └── turnkey │ │ ├── proxy │ │ └── route.ts │ │ └── register │ │ └── route.ts │ ├── bytes.ts │ ├── favicon.ico │ ├── globals.css │ ├── hooks │ └── useLocalStorage.ts │ ├── layout.tsx │ ├── page.module.css │ ├── page.tsx │ └── turnkey.ts └── tsconfig.json /.env.local.example: -------------------------------------------------------------------------------- 1 | NEXT_PUBLIC_TURNKEY_API_BASE_URL=https://api.turnkey.com 2 | TURNKEY_API_BASE_URL=https://api.turnkey.com 3 | TURNKEY_API_PUBLIC_KEY= 4 | TURNKEY_API_PRIVATE_KEY= 5 | TURNKEY_ORGANIZATION_ID= 6 | TURNKEY_SOLANA_PRIVATE_KEY_ID= 7 | TURNKEY_SOLANA_PUBLIC_KEY= 8 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env*.local 29 | !.env.local.example 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .changeset 2 | .github 3 | .next 4 | 5 | out 6 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "trailingComma": "es5", 4 | "tabWidth": 4, 5 | "semi": true, 6 | "singleQuote": true 7 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). 2 | 3 | ## Getting Started 4 | 5 | First, run the development server: 6 | 7 | ```bash 8 | npm run dev 9 | # or 10 | yarn dev 11 | # or 12 | pnpm dev 13 | ``` 14 | 15 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 16 | 17 | You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. 18 | 19 | This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. 20 | 21 | ## Learn More 22 | 23 | To learn more about Next.js, take a look at the following resources: 24 | 25 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 26 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. 27 | 28 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! 29 | 30 | ## Deploy on Vercel 31 | 32 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. 33 | 34 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. 35 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {}; 3 | 4 | module.exports = nextConfig; 5 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "solana-passkeys", 3 | "version": "0.1.0", 4 | "private": true, 5 | "engines": { 6 | "node": ">=16", 7 | "pnpm": ">=8" 8 | }, 9 | "scripts": { 10 | "dev": "next dev", 11 | "build": "next build", 12 | "start": "next start", 13 | "lint": "next lint", 14 | "fmt": "prettier --write '{*,**/*}.{ts,tsx,js,jsx,json}'" 15 | }, 16 | "dependencies": { 17 | "@noble/curves": "^1.1.0", 18 | "@solana/web3.js": "1.78.3", 19 | "@turnkey/http": "^1.0.1", 20 | "@types/bs58": "^4.0.1", 21 | "@types/node": "20.4.9", 22 | "@types/react": "18.2.20", 23 | "@types/react-dom": "18.2.7", 24 | "bs58": "^4.0.1", 25 | "eslint": "8.46.0", 26 | "eslint-config-next": "13.4.13", 27 | "pnpm": "8.6.12", 28 | "prettier": "^3.0.1", 29 | "next": "13.4.13", 30 | "react": "18.2.0", 31 | "react-dom": "18.2.0", 32 | "sonner": "^0.6.2", 33 | "typescript": "5.1.6" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@noble/curves': 9 | specifier: ^1.1.0 10 | version: 1.1.0 11 | '@solana/web3.js': 12 | specifier: 1.78.3 13 | version: 1.78.3 14 | '@turnkey/http': 15 | specifier: ^1.0.1 16 | version: 1.0.1 17 | '@types/bs58': 18 | specifier: ^4.0.1 19 | version: 4.0.1 20 | '@types/node': 21 | specifier: 20.4.9 22 | version: 20.4.9 23 | '@types/react': 24 | specifier: 18.2.20 25 | version: 18.2.20 26 | '@types/react-dom': 27 | specifier: 18.2.7 28 | version: 18.2.7 29 | bs58: 30 | specifier: ^4.0.1 31 | version: 4.0.1 32 | eslint: 33 | specifier: 8.46.0 34 | version: 8.46.0 35 | eslint-config-next: 36 | specifier: 13.4.13 37 | version: 13.4.13(eslint@8.46.0)(typescript@5.1.6) 38 | next: 39 | specifier: 13.4.13 40 | version: 13.4.13(react-dom@18.2.0)(react@18.2.0) 41 | pnpm: 42 | specifier: 8.6.12 43 | version: 8.6.12 44 | prettier: 45 | specifier: ^3.0.1 46 | version: 3.0.1 47 | react: 48 | specifier: 18.2.0 49 | version: 18.2.0 50 | react-dom: 51 | specifier: 18.2.0 52 | version: 18.2.0(react@18.2.0) 53 | sonner: 54 | specifier: ^0.6.2 55 | version: 0.6.2(react-dom@18.2.0)(react@18.2.0) 56 | typescript: 57 | specifier: 5.1.6 58 | version: 5.1.6 59 | 60 | packages: 61 | 62 | /@aashutoshrathi/word-wrap@1.2.6: 63 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 64 | engines: {node: '>=0.10.0'} 65 | dev: false 66 | 67 | /@babel/runtime@7.22.10: 68 | resolution: {integrity: sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==} 69 | engines: {node: '>=6.9.0'} 70 | dependencies: 71 | regenerator-runtime: 0.14.0 72 | dev: false 73 | 74 | /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0): 75 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 76 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 77 | peerDependencies: 78 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 79 | dependencies: 80 | eslint: 8.46.0 81 | eslint-visitor-keys: 3.4.2 82 | dev: false 83 | 84 | /@eslint-community/regexpp@4.6.2: 85 | resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} 86 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 87 | dev: false 88 | 89 | /@eslint/eslintrc@2.1.1: 90 | resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==} 91 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 92 | dependencies: 93 | ajv: 6.12.6 94 | debug: 4.3.4 95 | espree: 9.6.1 96 | globals: 13.20.0 97 | ignore: 5.2.4 98 | import-fresh: 3.3.0 99 | js-yaml: 4.1.0 100 | minimatch: 3.1.2 101 | strip-json-comments: 3.1.1 102 | transitivePeerDependencies: 103 | - supports-color 104 | dev: false 105 | 106 | /@eslint/js@8.46.0: 107 | resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} 108 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 109 | dev: false 110 | 111 | /@humanwhocodes/config-array@0.11.10: 112 | resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} 113 | engines: {node: '>=10.10.0'} 114 | dependencies: 115 | '@humanwhocodes/object-schema': 1.2.1 116 | debug: 4.3.4 117 | minimatch: 3.1.2 118 | transitivePeerDependencies: 119 | - supports-color 120 | dev: false 121 | 122 | /@humanwhocodes/module-importer@1.0.1: 123 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 124 | engines: {node: '>=12.22'} 125 | dev: false 126 | 127 | /@humanwhocodes/object-schema@1.2.1: 128 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 129 | dev: false 130 | 131 | /@next/env@13.4.13: 132 | resolution: {integrity: sha512-fwz2QgVg08v7ZL7KmbQBLF2PubR/6zQdKBgmHEl3BCyWTEDsAQEijjw2gbFhI1tcKfLdOOJUXntz5vZ4S0Polg==} 133 | dev: false 134 | 135 | /@next/eslint-plugin-next@13.4.13: 136 | resolution: {integrity: sha512-RpZeXlPxQ9FLeYN84XHDqRN20XxmVNclYCraLYdifRsmibtcWUWdwE/ANp2C8kgesFRsvwfsw6eOkYNl9sLJ3A==} 137 | dependencies: 138 | glob: 7.1.7 139 | dev: false 140 | 141 | /@next/swc-darwin-arm64@13.4.13: 142 | resolution: {integrity: sha512-ZptVhHjzUuivnXMNCJ6lER33HN7lC+rZ01z+PM10Ows21NHFYMvGhi5iXkGtBDk6VmtzsbqnAjnx4Oz5um0FjA==} 143 | engines: {node: '>= 10'} 144 | cpu: [arm64] 145 | os: [darwin] 146 | requiresBuild: true 147 | dev: false 148 | optional: true 149 | 150 | /@next/swc-darwin-x64@13.4.13: 151 | resolution: {integrity: sha512-t9nTiWCLApw8W4G1kqJyYP7y6/7lyal3PftmRturIxAIBlZss9wrtVN8nci50StDHmIlIDxfguYIEGVr9DbFTg==} 152 | engines: {node: '>= 10'} 153 | cpu: [x64] 154 | os: [darwin] 155 | requiresBuild: true 156 | dev: false 157 | optional: true 158 | 159 | /@next/swc-linux-arm64-gnu@13.4.13: 160 | resolution: {integrity: sha512-xEHUqC8eqR5DHe8SOmMnDU1K3ggrJ28uIKltrQAwqFSSSmzjnN/XMocZkcVhuncuxYrpbri0iMQstRyRVdQVWg==} 161 | engines: {node: '>= 10'} 162 | cpu: [arm64] 163 | os: [linux] 164 | requiresBuild: true 165 | dev: false 166 | optional: true 167 | 168 | /@next/swc-linux-arm64-musl@13.4.13: 169 | resolution: {integrity: sha512-sNf3MnLAm8rquSSAoeD9nVcdaDeRYOeey4stOWOyWIgbBDtP+C93amSgH/LPTDoUV7gNiU6f+ghepTjTjRgIUQ==} 170 | engines: {node: '>= 10'} 171 | cpu: [arm64] 172 | os: [linux] 173 | requiresBuild: true 174 | dev: false 175 | optional: true 176 | 177 | /@next/swc-linux-x64-gnu@13.4.13: 178 | resolution: {integrity: sha512-WhcRaJJSHyx9OWmKjjz+OWHumiPZWRqmM/09Bt7Up4UqUJFFhGExeztR4trtv3rflvULatu9IH/nTV8fUUgaMA==} 179 | engines: {node: '>= 10'} 180 | cpu: [x64] 181 | os: [linux] 182 | requiresBuild: true 183 | dev: false 184 | optional: true 185 | 186 | /@next/swc-linux-x64-musl@13.4.13: 187 | resolution: {integrity: sha512-+Y4LLhOWWZQIDKVwr2R17lq2KSN0F1c30QVgGIWfnjjHpH8nrIWHEndhqYU+iFuW8It78CiJjQKTw4f51HD7jA==} 188 | engines: {node: '>= 10'} 189 | cpu: [x64] 190 | os: [linux] 191 | requiresBuild: true 192 | dev: false 193 | optional: true 194 | 195 | /@next/swc-win32-arm64-msvc@13.4.13: 196 | resolution: {integrity: sha512-rWurdOR20uxjfqd1X9vDAgv0Jb26KjyL8akF9CBeFqX8rVaBAnW/Wf6A2gYEwyYY4Bai3T7p1kro6DFrsvBAAw==} 197 | engines: {node: '>= 10'} 198 | cpu: [arm64] 199 | os: [win32] 200 | requiresBuild: true 201 | dev: false 202 | optional: true 203 | 204 | /@next/swc-win32-ia32-msvc@13.4.13: 205 | resolution: {integrity: sha512-E8bSPwRuY5ibJ3CzLQmJEt8qaWrPYuUTwnrwygPUEWoLzD5YRx9SD37oXRdU81TgGwDzCxpl7z5Nqlfk50xAog==} 206 | engines: {node: '>= 10'} 207 | cpu: [ia32] 208 | os: [win32] 209 | requiresBuild: true 210 | dev: false 211 | optional: true 212 | 213 | /@next/swc-win32-x64-msvc@13.4.13: 214 | resolution: {integrity: sha512-4KlyC6jWRubPnppgfYsNTPeWfGCxtWLh5vaOAW/kdzAk9widqho8Qb5S4K2vHmal1tsURi7Onk2MMCV1phvyqA==} 215 | engines: {node: '>= 10'} 216 | cpu: [x64] 217 | os: [win32] 218 | requiresBuild: true 219 | dev: false 220 | optional: true 221 | 222 | /@noble/curves@1.1.0: 223 | resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} 224 | dependencies: 225 | '@noble/hashes': 1.3.1 226 | dev: false 227 | 228 | /@noble/hashes@1.3.1: 229 | resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} 230 | engines: {node: '>= 16'} 231 | dev: false 232 | 233 | /@nodelib/fs.scandir@2.1.5: 234 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 235 | engines: {node: '>= 8'} 236 | dependencies: 237 | '@nodelib/fs.stat': 2.0.5 238 | run-parallel: 1.2.0 239 | dev: false 240 | 241 | /@nodelib/fs.stat@2.0.5: 242 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 243 | engines: {node: '>= 8'} 244 | dev: false 245 | 246 | /@nodelib/fs.walk@1.2.8: 247 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 248 | engines: {node: '>= 8'} 249 | dependencies: 250 | '@nodelib/fs.scandir': 2.1.5 251 | fastq: 1.15.0 252 | dev: false 253 | 254 | /@rushstack/eslint-patch@1.3.3: 255 | resolution: {integrity: sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==} 256 | dev: false 257 | 258 | /@solana/buffer-layout@4.0.1: 259 | resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} 260 | engines: {node: '>=5.10'} 261 | dependencies: 262 | buffer: 6.0.3 263 | dev: false 264 | 265 | /@solana/web3.js@1.78.3: 266 | resolution: {integrity: sha512-qhpnyIlrj/4Czw1dBFZK6KgZBk5FwuJhvMl0C7m94jhl90yDC8b6w4svKwPjhB+OOrdQAzHyRp0+ocEs/Liw7w==} 267 | dependencies: 268 | '@babel/runtime': 7.22.10 269 | '@noble/curves': 1.1.0 270 | '@noble/hashes': 1.3.1 271 | '@solana/buffer-layout': 4.0.1 272 | agentkeepalive: 4.5.0 273 | bigint-buffer: 1.1.5 274 | bn.js: 5.2.1 275 | borsh: 0.7.0 276 | bs58: 4.0.1 277 | buffer: 6.0.3 278 | fast-stable-stringify: 1.0.0 279 | jayson: 4.1.0 280 | node-fetch: 2.6.12 281 | rpc-websockets: 7.5.1 282 | superstruct: 0.14.2 283 | transitivePeerDependencies: 284 | - bufferutil 285 | - encoding 286 | - utf-8-validate 287 | dev: false 288 | 289 | /@swc/helpers@0.5.1: 290 | resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} 291 | dependencies: 292 | tslib: 2.6.1 293 | dev: false 294 | 295 | /@turnkey/http@1.0.1: 296 | resolution: {integrity: sha512-Tp2SKHeZa03HYMnXDFfAUw1akS+VBwTKOqKe2GOusLVQAcOXMhLIXCjipRkAfYynD/kDXPkr8sEVhDXxdSejsw==} 297 | engines: {node: '>=16.0.0'} 298 | dependencies: 299 | cross-fetch: 3.1.8 300 | transitivePeerDependencies: 301 | - encoding 302 | dev: false 303 | 304 | /@types/bs58@4.0.1: 305 | resolution: {integrity: sha512-yfAgiWgVLjFCmRv8zAcOIHywYATEwiTVccTLnRp6UxTNavT55M9d/uhK3T03St/+8/z/wW+CRjGKUNmEqoHHCA==} 306 | dependencies: 307 | base-x: 3.0.9 308 | dev: false 309 | 310 | /@types/connect@3.4.35: 311 | resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} 312 | dependencies: 313 | '@types/node': 20.4.9 314 | dev: false 315 | 316 | /@types/json5@0.0.29: 317 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 318 | dev: false 319 | 320 | /@types/node@12.20.55: 321 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} 322 | dev: false 323 | 324 | /@types/node@20.4.9: 325 | resolution: {integrity: sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==} 326 | dev: false 327 | 328 | /@types/prop-types@15.7.5: 329 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 330 | dev: false 331 | 332 | /@types/react-dom@18.2.7: 333 | resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} 334 | dependencies: 335 | '@types/react': 18.2.20 336 | dev: false 337 | 338 | /@types/react@18.2.20: 339 | resolution: {integrity: sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==} 340 | dependencies: 341 | '@types/prop-types': 15.7.5 342 | '@types/scheduler': 0.16.3 343 | csstype: 3.1.2 344 | dev: false 345 | 346 | /@types/scheduler@0.16.3: 347 | resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} 348 | dev: false 349 | 350 | /@types/ws@7.4.7: 351 | resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} 352 | dependencies: 353 | '@types/node': 20.4.9 354 | dev: false 355 | 356 | /@typescript-eslint/parser@6.3.0(eslint@8.46.0)(typescript@5.1.6): 357 | resolution: {integrity: sha512-ibP+y2Gr6p0qsUkhs7InMdXrwldjxZw66wpcQq9/PzAroM45wdwyu81T+7RibNCh8oc0AgrsyCwJByncY0Ongg==} 358 | engines: {node: ^16.0.0 || >=18.0.0} 359 | peerDependencies: 360 | eslint: ^7.0.0 || ^8.0.0 361 | typescript: '*' 362 | peerDependenciesMeta: 363 | typescript: 364 | optional: true 365 | dependencies: 366 | '@typescript-eslint/scope-manager': 6.3.0 367 | '@typescript-eslint/types': 6.3.0 368 | '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.1.6) 369 | '@typescript-eslint/visitor-keys': 6.3.0 370 | debug: 4.3.4 371 | eslint: 8.46.0 372 | typescript: 5.1.6 373 | transitivePeerDependencies: 374 | - supports-color 375 | dev: false 376 | 377 | /@typescript-eslint/scope-manager@6.3.0: 378 | resolution: {integrity: sha512-WlNFgBEuGu74ahrXzgefiz/QlVb+qg8KDTpknKwR7hMH+lQygWyx0CQFoUmMn1zDkQjTBBIn75IxtWss77iBIQ==} 379 | engines: {node: ^16.0.0 || >=18.0.0} 380 | dependencies: 381 | '@typescript-eslint/types': 6.3.0 382 | '@typescript-eslint/visitor-keys': 6.3.0 383 | dev: false 384 | 385 | /@typescript-eslint/types@6.3.0: 386 | resolution: {integrity: sha512-K6TZOvfVyc7MO9j60MkRNWyFSf86IbOatTKGrpTQnzarDZPYPVy0oe3myTMq7VjhfsUAbNUW8I5s+2lZvtx1gg==} 387 | engines: {node: ^16.0.0 || >=18.0.0} 388 | dev: false 389 | 390 | /@typescript-eslint/typescript-estree@6.3.0(typescript@5.1.6): 391 | resolution: {integrity: sha512-Xh4NVDaC4eYKY4O3QGPuQNp5NxBAlEvNQYOqJquR2MePNxO11E5K3t5x4M4Mx53IZvtpW+mBxIT0s274fLUocg==} 392 | engines: {node: ^16.0.0 || >=18.0.0} 393 | peerDependencies: 394 | typescript: '*' 395 | peerDependenciesMeta: 396 | typescript: 397 | optional: true 398 | dependencies: 399 | '@typescript-eslint/types': 6.3.0 400 | '@typescript-eslint/visitor-keys': 6.3.0 401 | debug: 4.3.4 402 | globby: 11.1.0 403 | is-glob: 4.0.3 404 | semver: 7.5.4 405 | ts-api-utils: 1.0.1(typescript@5.1.6) 406 | typescript: 5.1.6 407 | transitivePeerDependencies: 408 | - supports-color 409 | dev: false 410 | 411 | /@typescript-eslint/visitor-keys@6.3.0: 412 | resolution: {integrity: sha512-kEhRRj7HnvaSjux1J9+7dBen15CdWmDnwrpyiHsFX6Qx2iW5LOBUgNefOFeh2PjWPlNwN8TOn6+4eBU3J/gupw==} 413 | engines: {node: ^16.0.0 || >=18.0.0} 414 | dependencies: 415 | '@typescript-eslint/types': 6.3.0 416 | eslint-visitor-keys: 3.4.2 417 | dev: false 418 | 419 | /JSONStream@1.3.5: 420 | resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} 421 | hasBin: true 422 | dependencies: 423 | jsonparse: 1.3.1 424 | through: 2.3.8 425 | dev: false 426 | 427 | /acorn-jsx@5.3.2(acorn@8.10.0): 428 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 429 | peerDependencies: 430 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 431 | dependencies: 432 | acorn: 8.10.0 433 | dev: false 434 | 435 | /acorn@8.10.0: 436 | resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} 437 | engines: {node: '>=0.4.0'} 438 | hasBin: true 439 | dev: false 440 | 441 | /agentkeepalive@4.5.0: 442 | resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} 443 | engines: {node: '>= 8.0.0'} 444 | dependencies: 445 | humanize-ms: 1.2.1 446 | dev: false 447 | 448 | /ajv@6.12.6: 449 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 450 | dependencies: 451 | fast-deep-equal: 3.1.3 452 | fast-json-stable-stringify: 2.1.0 453 | json-schema-traverse: 0.4.1 454 | uri-js: 4.4.1 455 | dev: false 456 | 457 | /ansi-regex@5.0.1: 458 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 459 | engines: {node: '>=8'} 460 | dev: false 461 | 462 | /ansi-styles@4.3.0: 463 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 464 | engines: {node: '>=8'} 465 | dependencies: 466 | color-convert: 2.0.1 467 | dev: false 468 | 469 | /argparse@2.0.1: 470 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 471 | dev: false 472 | 473 | /aria-query@5.3.0: 474 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 475 | dependencies: 476 | dequal: 2.0.3 477 | dev: false 478 | 479 | /array-buffer-byte-length@1.0.0: 480 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 481 | dependencies: 482 | call-bind: 1.0.2 483 | is-array-buffer: 3.0.2 484 | dev: false 485 | 486 | /array-includes@3.1.6: 487 | resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} 488 | engines: {node: '>= 0.4'} 489 | dependencies: 490 | call-bind: 1.0.2 491 | define-properties: 1.2.0 492 | es-abstract: 1.22.1 493 | get-intrinsic: 1.2.1 494 | is-string: 1.0.7 495 | dev: false 496 | 497 | /array-union@2.1.0: 498 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 499 | engines: {node: '>=8'} 500 | dev: false 501 | 502 | /array.prototype.findlastindex@1.2.2: 503 | resolution: {integrity: sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==} 504 | engines: {node: '>= 0.4'} 505 | dependencies: 506 | call-bind: 1.0.2 507 | define-properties: 1.2.0 508 | es-abstract: 1.22.1 509 | es-shim-unscopables: 1.0.0 510 | get-intrinsic: 1.2.1 511 | dev: false 512 | 513 | /array.prototype.flat@1.3.1: 514 | resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} 515 | engines: {node: '>= 0.4'} 516 | dependencies: 517 | call-bind: 1.0.2 518 | define-properties: 1.2.0 519 | es-abstract: 1.22.1 520 | es-shim-unscopables: 1.0.0 521 | dev: false 522 | 523 | /array.prototype.flatmap@1.3.1: 524 | resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} 525 | engines: {node: '>= 0.4'} 526 | dependencies: 527 | call-bind: 1.0.2 528 | define-properties: 1.2.0 529 | es-abstract: 1.22.1 530 | es-shim-unscopables: 1.0.0 531 | dev: false 532 | 533 | /array.prototype.tosorted@1.1.1: 534 | resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} 535 | dependencies: 536 | call-bind: 1.0.2 537 | define-properties: 1.2.0 538 | es-abstract: 1.22.1 539 | es-shim-unscopables: 1.0.0 540 | get-intrinsic: 1.2.1 541 | dev: false 542 | 543 | /arraybuffer.prototype.slice@1.0.1: 544 | resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} 545 | engines: {node: '>= 0.4'} 546 | dependencies: 547 | array-buffer-byte-length: 1.0.0 548 | call-bind: 1.0.2 549 | define-properties: 1.2.0 550 | get-intrinsic: 1.2.1 551 | is-array-buffer: 3.0.2 552 | is-shared-array-buffer: 1.0.2 553 | dev: false 554 | 555 | /ast-types-flow@0.0.7: 556 | resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} 557 | dev: false 558 | 559 | /available-typed-arrays@1.0.5: 560 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 561 | engines: {node: '>= 0.4'} 562 | dev: false 563 | 564 | /axe-core@4.7.2: 565 | resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} 566 | engines: {node: '>=4'} 567 | dev: false 568 | 569 | /axobject-query@3.2.1: 570 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 571 | dependencies: 572 | dequal: 2.0.3 573 | dev: false 574 | 575 | /balanced-match@1.0.2: 576 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 577 | dev: false 578 | 579 | /base-x@3.0.9: 580 | resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} 581 | dependencies: 582 | safe-buffer: 5.2.1 583 | dev: false 584 | 585 | /base64-js@1.5.1: 586 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 587 | dev: false 588 | 589 | /bigint-buffer@1.1.5: 590 | resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} 591 | engines: {node: '>= 10.0.0'} 592 | requiresBuild: true 593 | dependencies: 594 | bindings: 1.5.0 595 | dev: false 596 | 597 | /bindings@1.5.0: 598 | resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 599 | dependencies: 600 | file-uri-to-path: 1.0.0 601 | dev: false 602 | 603 | /bn.js@5.2.1: 604 | resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} 605 | dev: false 606 | 607 | /borsh@0.7.0: 608 | resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} 609 | dependencies: 610 | bn.js: 5.2.1 611 | bs58: 4.0.1 612 | text-encoding-utf-8: 1.0.2 613 | dev: false 614 | 615 | /brace-expansion@1.1.11: 616 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 617 | dependencies: 618 | balanced-match: 1.0.2 619 | concat-map: 0.0.1 620 | dev: false 621 | 622 | /braces@3.0.2: 623 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 624 | engines: {node: '>=8'} 625 | dependencies: 626 | fill-range: 7.0.1 627 | dev: false 628 | 629 | /bs58@4.0.1: 630 | resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} 631 | dependencies: 632 | base-x: 3.0.9 633 | dev: false 634 | 635 | /buffer@6.0.3: 636 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 637 | dependencies: 638 | base64-js: 1.5.1 639 | ieee754: 1.2.1 640 | dev: false 641 | 642 | /bufferutil@4.0.7: 643 | resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} 644 | engines: {node: '>=6.14.2'} 645 | requiresBuild: true 646 | dependencies: 647 | node-gyp-build: 4.6.0 648 | dev: false 649 | 650 | /busboy@1.6.0: 651 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 652 | engines: {node: '>=10.16.0'} 653 | dependencies: 654 | streamsearch: 1.1.0 655 | dev: false 656 | 657 | /call-bind@1.0.2: 658 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 659 | dependencies: 660 | function-bind: 1.1.1 661 | get-intrinsic: 1.2.1 662 | dev: false 663 | 664 | /callsites@3.1.0: 665 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 666 | engines: {node: '>=6'} 667 | dev: false 668 | 669 | /caniuse-lite@1.0.30001519: 670 | resolution: {integrity: sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==} 671 | dev: false 672 | 673 | /chalk@4.1.2: 674 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 675 | engines: {node: '>=10'} 676 | dependencies: 677 | ansi-styles: 4.3.0 678 | supports-color: 7.2.0 679 | dev: false 680 | 681 | /client-only@0.0.1: 682 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 683 | dev: false 684 | 685 | /color-convert@2.0.1: 686 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 687 | engines: {node: '>=7.0.0'} 688 | dependencies: 689 | color-name: 1.1.4 690 | dev: false 691 | 692 | /color-name@1.1.4: 693 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 694 | dev: false 695 | 696 | /commander@2.20.3: 697 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 698 | dev: false 699 | 700 | /concat-map@0.0.1: 701 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 702 | dev: false 703 | 704 | /cross-fetch@3.1.8: 705 | resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} 706 | dependencies: 707 | node-fetch: 2.6.12 708 | transitivePeerDependencies: 709 | - encoding 710 | dev: false 711 | 712 | /cross-spawn@7.0.3: 713 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 714 | engines: {node: '>= 8'} 715 | dependencies: 716 | path-key: 3.1.1 717 | shebang-command: 2.0.0 718 | which: 2.0.2 719 | dev: false 720 | 721 | /csstype@3.1.2: 722 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 723 | dev: false 724 | 725 | /damerau-levenshtein@1.0.8: 726 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 727 | dev: false 728 | 729 | /debug@3.2.7: 730 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 731 | peerDependencies: 732 | supports-color: '*' 733 | peerDependenciesMeta: 734 | supports-color: 735 | optional: true 736 | dependencies: 737 | ms: 2.1.3 738 | dev: false 739 | 740 | /debug@4.3.4: 741 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 742 | engines: {node: '>=6.0'} 743 | peerDependencies: 744 | supports-color: '*' 745 | peerDependenciesMeta: 746 | supports-color: 747 | optional: true 748 | dependencies: 749 | ms: 2.1.2 750 | dev: false 751 | 752 | /deep-is@0.1.4: 753 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 754 | dev: false 755 | 756 | /define-properties@1.2.0: 757 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} 758 | engines: {node: '>= 0.4'} 759 | dependencies: 760 | has-property-descriptors: 1.0.0 761 | object-keys: 1.1.1 762 | dev: false 763 | 764 | /delay@5.0.0: 765 | resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} 766 | engines: {node: '>=10'} 767 | dev: false 768 | 769 | /dequal@2.0.3: 770 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 771 | engines: {node: '>=6'} 772 | dev: false 773 | 774 | /dir-glob@3.0.1: 775 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 776 | engines: {node: '>=8'} 777 | dependencies: 778 | path-type: 4.0.0 779 | dev: false 780 | 781 | /doctrine@2.1.0: 782 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 783 | engines: {node: '>=0.10.0'} 784 | dependencies: 785 | esutils: 2.0.3 786 | dev: false 787 | 788 | /doctrine@3.0.0: 789 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 790 | engines: {node: '>=6.0.0'} 791 | dependencies: 792 | esutils: 2.0.3 793 | dev: false 794 | 795 | /emoji-regex@9.2.2: 796 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 797 | dev: false 798 | 799 | /enhanced-resolve@5.15.0: 800 | resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} 801 | engines: {node: '>=10.13.0'} 802 | dependencies: 803 | graceful-fs: 4.2.11 804 | tapable: 2.2.1 805 | dev: false 806 | 807 | /es-abstract@1.22.1: 808 | resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} 809 | engines: {node: '>= 0.4'} 810 | dependencies: 811 | array-buffer-byte-length: 1.0.0 812 | arraybuffer.prototype.slice: 1.0.1 813 | available-typed-arrays: 1.0.5 814 | call-bind: 1.0.2 815 | es-set-tostringtag: 2.0.1 816 | es-to-primitive: 1.2.1 817 | function.prototype.name: 1.1.5 818 | get-intrinsic: 1.2.1 819 | get-symbol-description: 1.0.0 820 | globalthis: 1.0.3 821 | gopd: 1.0.1 822 | has: 1.0.3 823 | has-property-descriptors: 1.0.0 824 | has-proto: 1.0.1 825 | has-symbols: 1.0.3 826 | internal-slot: 1.0.5 827 | is-array-buffer: 3.0.2 828 | is-callable: 1.2.7 829 | is-negative-zero: 2.0.2 830 | is-regex: 1.1.4 831 | is-shared-array-buffer: 1.0.2 832 | is-string: 1.0.7 833 | is-typed-array: 1.1.12 834 | is-weakref: 1.0.2 835 | object-inspect: 1.12.3 836 | object-keys: 1.1.1 837 | object.assign: 4.1.4 838 | regexp.prototype.flags: 1.5.0 839 | safe-array-concat: 1.0.0 840 | safe-regex-test: 1.0.0 841 | string.prototype.trim: 1.2.7 842 | string.prototype.trimend: 1.0.6 843 | string.prototype.trimstart: 1.0.6 844 | typed-array-buffer: 1.0.0 845 | typed-array-byte-length: 1.0.0 846 | typed-array-byte-offset: 1.0.0 847 | typed-array-length: 1.0.4 848 | unbox-primitive: 1.0.2 849 | which-typed-array: 1.1.11 850 | dev: false 851 | 852 | /es-set-tostringtag@2.0.1: 853 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} 854 | engines: {node: '>= 0.4'} 855 | dependencies: 856 | get-intrinsic: 1.2.1 857 | has: 1.0.3 858 | has-tostringtag: 1.0.0 859 | dev: false 860 | 861 | /es-shim-unscopables@1.0.0: 862 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 863 | dependencies: 864 | has: 1.0.3 865 | dev: false 866 | 867 | /es-to-primitive@1.2.1: 868 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 869 | engines: {node: '>= 0.4'} 870 | dependencies: 871 | is-callable: 1.2.7 872 | is-date-object: 1.0.5 873 | is-symbol: 1.0.4 874 | dev: false 875 | 876 | /es6-promise@4.2.8: 877 | resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} 878 | dev: false 879 | 880 | /es6-promisify@5.0.0: 881 | resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} 882 | dependencies: 883 | es6-promise: 4.2.8 884 | dev: false 885 | 886 | /escape-string-regexp@4.0.0: 887 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 888 | engines: {node: '>=10'} 889 | dev: false 890 | 891 | /eslint-config-next@13.4.13(eslint@8.46.0)(typescript@5.1.6): 892 | resolution: {integrity: sha512-EXAh5h1yG/YTNa5YdskzaSZncBjKjvFe2zclMCi2KXyTsXha22wB6MPs/U7idB6a2qjpBdbZcruQY1TWjfNMZw==} 893 | peerDependencies: 894 | eslint: ^7.23.0 || ^8.0.0 895 | typescript: '>=3.3.1' 896 | peerDependenciesMeta: 897 | typescript: 898 | optional: true 899 | dependencies: 900 | '@next/eslint-plugin-next': 13.4.13 901 | '@rushstack/eslint-patch': 1.3.3 902 | '@typescript-eslint/parser': 6.3.0(eslint@8.46.0)(typescript@5.1.6) 903 | eslint: 8.46.0 904 | eslint-import-resolver-node: 0.3.9 905 | eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.0)(eslint@8.46.0) 906 | eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.46.0) 907 | eslint-plugin-jsx-a11y: 6.7.1(eslint@8.46.0) 908 | eslint-plugin-react: 7.33.1(eslint@8.46.0) 909 | eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.46.0) 910 | typescript: 5.1.6 911 | transitivePeerDependencies: 912 | - eslint-import-resolver-webpack 913 | - supports-color 914 | dev: false 915 | 916 | /eslint-import-resolver-node@0.3.9: 917 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 918 | dependencies: 919 | debug: 3.2.7 920 | is-core-module: 2.13.0 921 | resolve: 1.22.4 922 | transitivePeerDependencies: 923 | - supports-color 924 | dev: false 925 | 926 | /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.0)(eslint@8.46.0): 927 | resolution: {integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==} 928 | engines: {node: ^14.18.0 || >=16.0.0} 929 | peerDependencies: 930 | eslint: '*' 931 | eslint-plugin-import: '*' 932 | dependencies: 933 | debug: 4.3.4 934 | enhanced-resolve: 5.15.0 935 | eslint: 8.46.0 936 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.46.0) 937 | eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.46.0) 938 | fast-glob: 3.3.1 939 | get-tsconfig: 4.6.2 940 | is-core-module: 2.13.0 941 | is-glob: 4.0.3 942 | transitivePeerDependencies: 943 | - '@typescript-eslint/parser' 944 | - eslint-import-resolver-node 945 | - eslint-import-resolver-webpack 946 | - supports-color 947 | dev: false 948 | 949 | /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.46.0): 950 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} 951 | engines: {node: '>=4'} 952 | peerDependencies: 953 | '@typescript-eslint/parser': '*' 954 | eslint: '*' 955 | eslint-import-resolver-node: '*' 956 | eslint-import-resolver-typescript: '*' 957 | eslint-import-resolver-webpack: '*' 958 | peerDependenciesMeta: 959 | '@typescript-eslint/parser': 960 | optional: true 961 | eslint: 962 | optional: true 963 | eslint-import-resolver-node: 964 | optional: true 965 | eslint-import-resolver-typescript: 966 | optional: true 967 | eslint-import-resolver-webpack: 968 | optional: true 969 | dependencies: 970 | '@typescript-eslint/parser': 6.3.0(eslint@8.46.0)(typescript@5.1.6) 971 | debug: 3.2.7 972 | eslint: 8.46.0 973 | eslint-import-resolver-node: 0.3.9 974 | eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.0)(eslint@8.46.0) 975 | transitivePeerDependencies: 976 | - supports-color 977 | dev: false 978 | 979 | /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.46.0): 980 | resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} 981 | engines: {node: '>=4'} 982 | peerDependencies: 983 | '@typescript-eslint/parser': '*' 984 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 985 | peerDependenciesMeta: 986 | '@typescript-eslint/parser': 987 | optional: true 988 | dependencies: 989 | '@typescript-eslint/parser': 6.3.0(eslint@8.46.0)(typescript@5.1.6) 990 | array-includes: 3.1.6 991 | array.prototype.findlastindex: 1.2.2 992 | array.prototype.flat: 1.3.1 993 | array.prototype.flatmap: 1.3.1 994 | debug: 3.2.7 995 | doctrine: 2.1.0 996 | eslint: 8.46.0 997 | eslint-import-resolver-node: 0.3.9 998 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.46.0) 999 | has: 1.0.3 1000 | is-core-module: 2.13.0 1001 | is-glob: 4.0.3 1002 | minimatch: 3.1.2 1003 | object.fromentries: 2.0.6 1004 | object.groupby: 1.0.0 1005 | object.values: 1.1.6 1006 | resolve: 1.22.4 1007 | semver: 6.3.1 1008 | tsconfig-paths: 3.14.2 1009 | transitivePeerDependencies: 1010 | - eslint-import-resolver-typescript 1011 | - eslint-import-resolver-webpack 1012 | - supports-color 1013 | dev: false 1014 | 1015 | /eslint-plugin-jsx-a11y@6.7.1(eslint@8.46.0): 1016 | resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} 1017 | engines: {node: '>=4.0'} 1018 | peerDependencies: 1019 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1020 | dependencies: 1021 | '@babel/runtime': 7.22.10 1022 | aria-query: 5.3.0 1023 | array-includes: 3.1.6 1024 | array.prototype.flatmap: 1.3.1 1025 | ast-types-flow: 0.0.7 1026 | axe-core: 4.7.2 1027 | axobject-query: 3.2.1 1028 | damerau-levenshtein: 1.0.8 1029 | emoji-regex: 9.2.2 1030 | eslint: 8.46.0 1031 | has: 1.0.3 1032 | jsx-ast-utils: 3.3.5 1033 | language-tags: 1.0.5 1034 | minimatch: 3.1.2 1035 | object.entries: 1.1.6 1036 | object.fromentries: 2.0.6 1037 | semver: 6.3.1 1038 | dev: false 1039 | 1040 | /eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705(eslint@8.46.0): 1041 | resolution: {integrity: sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==} 1042 | engines: {node: '>=10'} 1043 | peerDependencies: 1044 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1045 | dependencies: 1046 | eslint: 8.46.0 1047 | dev: false 1048 | 1049 | /eslint-plugin-react@7.33.1(eslint@8.46.0): 1050 | resolution: {integrity: sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==} 1051 | engines: {node: '>=4'} 1052 | peerDependencies: 1053 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1054 | dependencies: 1055 | array-includes: 3.1.6 1056 | array.prototype.flatmap: 1.3.1 1057 | array.prototype.tosorted: 1.1.1 1058 | doctrine: 2.1.0 1059 | eslint: 8.46.0 1060 | estraverse: 5.3.0 1061 | jsx-ast-utils: 3.3.5 1062 | minimatch: 3.1.2 1063 | object.entries: 1.1.6 1064 | object.fromentries: 2.0.6 1065 | object.hasown: 1.1.2 1066 | object.values: 1.1.6 1067 | prop-types: 15.8.1 1068 | resolve: 2.0.0-next.4 1069 | semver: 6.3.1 1070 | string.prototype.matchall: 4.0.8 1071 | dev: false 1072 | 1073 | /eslint-scope@7.2.2: 1074 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1075 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1076 | dependencies: 1077 | esrecurse: 4.3.0 1078 | estraverse: 5.3.0 1079 | dev: false 1080 | 1081 | /eslint-visitor-keys@3.4.2: 1082 | resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} 1083 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1084 | dev: false 1085 | 1086 | /eslint@8.46.0: 1087 | resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} 1088 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1089 | hasBin: true 1090 | dependencies: 1091 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) 1092 | '@eslint-community/regexpp': 4.6.2 1093 | '@eslint/eslintrc': 2.1.1 1094 | '@eslint/js': 8.46.0 1095 | '@humanwhocodes/config-array': 0.11.10 1096 | '@humanwhocodes/module-importer': 1.0.1 1097 | '@nodelib/fs.walk': 1.2.8 1098 | ajv: 6.12.6 1099 | chalk: 4.1.2 1100 | cross-spawn: 7.0.3 1101 | debug: 4.3.4 1102 | doctrine: 3.0.0 1103 | escape-string-regexp: 4.0.0 1104 | eslint-scope: 7.2.2 1105 | eslint-visitor-keys: 3.4.2 1106 | espree: 9.6.1 1107 | esquery: 1.5.0 1108 | esutils: 2.0.3 1109 | fast-deep-equal: 3.1.3 1110 | file-entry-cache: 6.0.1 1111 | find-up: 5.0.0 1112 | glob-parent: 6.0.2 1113 | globals: 13.20.0 1114 | graphemer: 1.4.0 1115 | ignore: 5.2.4 1116 | imurmurhash: 0.1.4 1117 | is-glob: 4.0.3 1118 | is-path-inside: 3.0.3 1119 | js-yaml: 4.1.0 1120 | json-stable-stringify-without-jsonify: 1.0.1 1121 | levn: 0.4.1 1122 | lodash.merge: 4.6.2 1123 | minimatch: 3.1.2 1124 | natural-compare: 1.4.0 1125 | optionator: 0.9.3 1126 | strip-ansi: 6.0.1 1127 | text-table: 0.2.0 1128 | transitivePeerDependencies: 1129 | - supports-color 1130 | dev: false 1131 | 1132 | /espree@9.6.1: 1133 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1134 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1135 | dependencies: 1136 | acorn: 8.10.0 1137 | acorn-jsx: 5.3.2(acorn@8.10.0) 1138 | eslint-visitor-keys: 3.4.2 1139 | dev: false 1140 | 1141 | /esquery@1.5.0: 1142 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1143 | engines: {node: '>=0.10'} 1144 | dependencies: 1145 | estraverse: 5.3.0 1146 | dev: false 1147 | 1148 | /esrecurse@4.3.0: 1149 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1150 | engines: {node: '>=4.0'} 1151 | dependencies: 1152 | estraverse: 5.3.0 1153 | dev: false 1154 | 1155 | /estraverse@5.3.0: 1156 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1157 | engines: {node: '>=4.0'} 1158 | dev: false 1159 | 1160 | /esutils@2.0.3: 1161 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1162 | engines: {node: '>=0.10.0'} 1163 | dev: false 1164 | 1165 | /eventemitter3@4.0.7: 1166 | resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} 1167 | dev: false 1168 | 1169 | /eyes@0.1.8: 1170 | resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} 1171 | engines: {node: '> 0.1.90'} 1172 | dev: false 1173 | 1174 | /fast-deep-equal@3.1.3: 1175 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1176 | dev: false 1177 | 1178 | /fast-glob@3.3.1: 1179 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} 1180 | engines: {node: '>=8.6.0'} 1181 | dependencies: 1182 | '@nodelib/fs.stat': 2.0.5 1183 | '@nodelib/fs.walk': 1.2.8 1184 | glob-parent: 5.1.2 1185 | merge2: 1.4.1 1186 | micromatch: 4.0.5 1187 | dev: false 1188 | 1189 | /fast-json-stable-stringify@2.1.0: 1190 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1191 | dev: false 1192 | 1193 | /fast-levenshtein@2.0.6: 1194 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1195 | dev: false 1196 | 1197 | /fast-stable-stringify@1.0.0: 1198 | resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} 1199 | dev: false 1200 | 1201 | /fastq@1.15.0: 1202 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1203 | dependencies: 1204 | reusify: 1.0.4 1205 | dev: false 1206 | 1207 | /file-entry-cache@6.0.1: 1208 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1209 | engines: {node: ^10.12.0 || >=12.0.0} 1210 | dependencies: 1211 | flat-cache: 3.0.4 1212 | dev: false 1213 | 1214 | /file-uri-to-path@1.0.0: 1215 | resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} 1216 | dev: false 1217 | 1218 | /fill-range@7.0.1: 1219 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1220 | engines: {node: '>=8'} 1221 | dependencies: 1222 | to-regex-range: 5.0.1 1223 | dev: false 1224 | 1225 | /find-up@5.0.0: 1226 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1227 | engines: {node: '>=10'} 1228 | dependencies: 1229 | locate-path: 6.0.0 1230 | path-exists: 4.0.0 1231 | dev: false 1232 | 1233 | /flat-cache@3.0.4: 1234 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1235 | engines: {node: ^10.12.0 || >=12.0.0} 1236 | dependencies: 1237 | flatted: 3.2.7 1238 | rimraf: 3.0.2 1239 | dev: false 1240 | 1241 | /flatted@3.2.7: 1242 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1243 | dev: false 1244 | 1245 | /for-each@0.3.3: 1246 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1247 | dependencies: 1248 | is-callable: 1.2.7 1249 | dev: false 1250 | 1251 | /fs.realpath@1.0.0: 1252 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1253 | dev: false 1254 | 1255 | /function-bind@1.1.1: 1256 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1257 | dev: false 1258 | 1259 | /function.prototype.name@1.1.5: 1260 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1261 | engines: {node: '>= 0.4'} 1262 | dependencies: 1263 | call-bind: 1.0.2 1264 | define-properties: 1.2.0 1265 | es-abstract: 1.22.1 1266 | functions-have-names: 1.2.3 1267 | dev: false 1268 | 1269 | /functions-have-names@1.2.3: 1270 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1271 | dev: false 1272 | 1273 | /get-intrinsic@1.2.1: 1274 | resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} 1275 | dependencies: 1276 | function-bind: 1.1.1 1277 | has: 1.0.3 1278 | has-proto: 1.0.1 1279 | has-symbols: 1.0.3 1280 | dev: false 1281 | 1282 | /get-symbol-description@1.0.0: 1283 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1284 | engines: {node: '>= 0.4'} 1285 | dependencies: 1286 | call-bind: 1.0.2 1287 | get-intrinsic: 1.2.1 1288 | dev: false 1289 | 1290 | /get-tsconfig@4.6.2: 1291 | resolution: {integrity: sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==} 1292 | dependencies: 1293 | resolve-pkg-maps: 1.0.0 1294 | dev: false 1295 | 1296 | /glob-parent@5.1.2: 1297 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1298 | engines: {node: '>= 6'} 1299 | dependencies: 1300 | is-glob: 4.0.3 1301 | dev: false 1302 | 1303 | /glob-parent@6.0.2: 1304 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1305 | engines: {node: '>=10.13.0'} 1306 | dependencies: 1307 | is-glob: 4.0.3 1308 | dev: false 1309 | 1310 | /glob-to-regexp@0.4.1: 1311 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 1312 | dev: false 1313 | 1314 | /glob@7.1.7: 1315 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 1316 | dependencies: 1317 | fs.realpath: 1.0.0 1318 | inflight: 1.0.6 1319 | inherits: 2.0.4 1320 | minimatch: 3.1.2 1321 | once: 1.4.0 1322 | path-is-absolute: 1.0.1 1323 | dev: false 1324 | 1325 | /glob@7.2.3: 1326 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1327 | dependencies: 1328 | fs.realpath: 1.0.0 1329 | inflight: 1.0.6 1330 | inherits: 2.0.4 1331 | minimatch: 3.1.2 1332 | once: 1.4.0 1333 | path-is-absolute: 1.0.1 1334 | dev: false 1335 | 1336 | /globals@13.20.0: 1337 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} 1338 | engines: {node: '>=8'} 1339 | dependencies: 1340 | type-fest: 0.20.2 1341 | dev: false 1342 | 1343 | /globalthis@1.0.3: 1344 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1345 | engines: {node: '>= 0.4'} 1346 | dependencies: 1347 | define-properties: 1.2.0 1348 | dev: false 1349 | 1350 | /globby@11.1.0: 1351 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1352 | engines: {node: '>=10'} 1353 | dependencies: 1354 | array-union: 2.1.0 1355 | dir-glob: 3.0.1 1356 | fast-glob: 3.3.1 1357 | ignore: 5.2.4 1358 | merge2: 1.4.1 1359 | slash: 3.0.0 1360 | dev: false 1361 | 1362 | /gopd@1.0.1: 1363 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1364 | dependencies: 1365 | get-intrinsic: 1.2.1 1366 | dev: false 1367 | 1368 | /graceful-fs@4.2.11: 1369 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1370 | dev: false 1371 | 1372 | /graphemer@1.4.0: 1373 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1374 | dev: false 1375 | 1376 | /has-bigints@1.0.2: 1377 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1378 | dev: false 1379 | 1380 | /has-flag@4.0.0: 1381 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1382 | engines: {node: '>=8'} 1383 | dev: false 1384 | 1385 | /has-property-descriptors@1.0.0: 1386 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1387 | dependencies: 1388 | get-intrinsic: 1.2.1 1389 | dev: false 1390 | 1391 | /has-proto@1.0.1: 1392 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1393 | engines: {node: '>= 0.4'} 1394 | dev: false 1395 | 1396 | /has-symbols@1.0.3: 1397 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1398 | engines: {node: '>= 0.4'} 1399 | dev: false 1400 | 1401 | /has-tostringtag@1.0.0: 1402 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1403 | engines: {node: '>= 0.4'} 1404 | dependencies: 1405 | has-symbols: 1.0.3 1406 | dev: false 1407 | 1408 | /has@1.0.3: 1409 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1410 | engines: {node: '>= 0.4.0'} 1411 | dependencies: 1412 | function-bind: 1.1.1 1413 | dev: false 1414 | 1415 | /humanize-ms@1.2.1: 1416 | resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} 1417 | dependencies: 1418 | ms: 2.1.3 1419 | dev: false 1420 | 1421 | /ieee754@1.2.1: 1422 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 1423 | dev: false 1424 | 1425 | /ignore@5.2.4: 1426 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1427 | engines: {node: '>= 4'} 1428 | dev: false 1429 | 1430 | /import-fresh@3.3.0: 1431 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1432 | engines: {node: '>=6'} 1433 | dependencies: 1434 | parent-module: 1.0.1 1435 | resolve-from: 4.0.0 1436 | dev: false 1437 | 1438 | /imurmurhash@0.1.4: 1439 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1440 | engines: {node: '>=0.8.19'} 1441 | dev: false 1442 | 1443 | /inflight@1.0.6: 1444 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1445 | dependencies: 1446 | once: 1.4.0 1447 | wrappy: 1.0.2 1448 | dev: false 1449 | 1450 | /inherits@2.0.4: 1451 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1452 | dev: false 1453 | 1454 | /internal-slot@1.0.5: 1455 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} 1456 | engines: {node: '>= 0.4'} 1457 | dependencies: 1458 | get-intrinsic: 1.2.1 1459 | has: 1.0.3 1460 | side-channel: 1.0.4 1461 | dev: false 1462 | 1463 | /is-array-buffer@3.0.2: 1464 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 1465 | dependencies: 1466 | call-bind: 1.0.2 1467 | get-intrinsic: 1.2.1 1468 | is-typed-array: 1.1.12 1469 | dev: false 1470 | 1471 | /is-bigint@1.0.4: 1472 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1473 | dependencies: 1474 | has-bigints: 1.0.2 1475 | dev: false 1476 | 1477 | /is-boolean-object@1.1.2: 1478 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1479 | engines: {node: '>= 0.4'} 1480 | dependencies: 1481 | call-bind: 1.0.2 1482 | has-tostringtag: 1.0.0 1483 | dev: false 1484 | 1485 | /is-callable@1.2.7: 1486 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1487 | engines: {node: '>= 0.4'} 1488 | dev: false 1489 | 1490 | /is-core-module@2.13.0: 1491 | resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} 1492 | dependencies: 1493 | has: 1.0.3 1494 | dev: false 1495 | 1496 | /is-date-object@1.0.5: 1497 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1498 | engines: {node: '>= 0.4'} 1499 | dependencies: 1500 | has-tostringtag: 1.0.0 1501 | dev: false 1502 | 1503 | /is-extglob@2.1.1: 1504 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1505 | engines: {node: '>=0.10.0'} 1506 | dev: false 1507 | 1508 | /is-glob@4.0.3: 1509 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1510 | engines: {node: '>=0.10.0'} 1511 | dependencies: 1512 | is-extglob: 2.1.1 1513 | dev: false 1514 | 1515 | /is-negative-zero@2.0.2: 1516 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1517 | engines: {node: '>= 0.4'} 1518 | dev: false 1519 | 1520 | /is-number-object@1.0.7: 1521 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1522 | engines: {node: '>= 0.4'} 1523 | dependencies: 1524 | has-tostringtag: 1.0.0 1525 | dev: false 1526 | 1527 | /is-number@7.0.0: 1528 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1529 | engines: {node: '>=0.12.0'} 1530 | dev: false 1531 | 1532 | /is-path-inside@3.0.3: 1533 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1534 | engines: {node: '>=8'} 1535 | dev: false 1536 | 1537 | /is-regex@1.1.4: 1538 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1539 | engines: {node: '>= 0.4'} 1540 | dependencies: 1541 | call-bind: 1.0.2 1542 | has-tostringtag: 1.0.0 1543 | dev: false 1544 | 1545 | /is-shared-array-buffer@1.0.2: 1546 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1547 | dependencies: 1548 | call-bind: 1.0.2 1549 | dev: false 1550 | 1551 | /is-string@1.0.7: 1552 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1553 | engines: {node: '>= 0.4'} 1554 | dependencies: 1555 | has-tostringtag: 1.0.0 1556 | dev: false 1557 | 1558 | /is-symbol@1.0.4: 1559 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1560 | engines: {node: '>= 0.4'} 1561 | dependencies: 1562 | has-symbols: 1.0.3 1563 | dev: false 1564 | 1565 | /is-typed-array@1.1.12: 1566 | resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} 1567 | engines: {node: '>= 0.4'} 1568 | dependencies: 1569 | which-typed-array: 1.1.11 1570 | dev: false 1571 | 1572 | /is-weakref@1.0.2: 1573 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1574 | dependencies: 1575 | call-bind: 1.0.2 1576 | dev: false 1577 | 1578 | /isarray@2.0.5: 1579 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1580 | dev: false 1581 | 1582 | /isexe@2.0.0: 1583 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1584 | dev: false 1585 | 1586 | /isomorphic-ws@4.0.1(ws@7.5.9): 1587 | resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} 1588 | peerDependencies: 1589 | ws: '*' 1590 | dependencies: 1591 | ws: 7.5.9 1592 | dev: false 1593 | 1594 | /jayson@4.1.0: 1595 | resolution: {integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==} 1596 | engines: {node: '>=8'} 1597 | hasBin: true 1598 | dependencies: 1599 | '@types/connect': 3.4.35 1600 | '@types/node': 12.20.55 1601 | '@types/ws': 7.4.7 1602 | JSONStream: 1.3.5 1603 | commander: 2.20.3 1604 | delay: 5.0.0 1605 | es6-promisify: 5.0.0 1606 | eyes: 0.1.8 1607 | isomorphic-ws: 4.0.1(ws@7.5.9) 1608 | json-stringify-safe: 5.0.1 1609 | uuid: 8.3.2 1610 | ws: 7.5.9 1611 | transitivePeerDependencies: 1612 | - bufferutil 1613 | - utf-8-validate 1614 | dev: false 1615 | 1616 | /js-tokens@4.0.0: 1617 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1618 | dev: false 1619 | 1620 | /js-yaml@4.1.0: 1621 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1622 | hasBin: true 1623 | dependencies: 1624 | argparse: 2.0.1 1625 | dev: false 1626 | 1627 | /json-schema-traverse@0.4.1: 1628 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1629 | dev: false 1630 | 1631 | /json-stable-stringify-without-jsonify@1.0.1: 1632 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1633 | dev: false 1634 | 1635 | /json-stringify-safe@5.0.1: 1636 | resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} 1637 | dev: false 1638 | 1639 | /json5@1.0.2: 1640 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 1641 | hasBin: true 1642 | dependencies: 1643 | minimist: 1.2.8 1644 | dev: false 1645 | 1646 | /jsonparse@1.3.1: 1647 | resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} 1648 | engines: {'0': node >= 0.2.0} 1649 | dev: false 1650 | 1651 | /jsx-ast-utils@3.3.5: 1652 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} 1653 | engines: {node: '>=4.0'} 1654 | dependencies: 1655 | array-includes: 3.1.6 1656 | array.prototype.flat: 1.3.1 1657 | object.assign: 4.1.4 1658 | object.values: 1.1.6 1659 | dev: false 1660 | 1661 | /language-subtag-registry@0.3.22: 1662 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 1663 | dev: false 1664 | 1665 | /language-tags@1.0.5: 1666 | resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} 1667 | dependencies: 1668 | language-subtag-registry: 0.3.22 1669 | dev: false 1670 | 1671 | /levn@0.4.1: 1672 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1673 | engines: {node: '>= 0.8.0'} 1674 | dependencies: 1675 | prelude-ls: 1.2.1 1676 | type-check: 0.4.0 1677 | dev: false 1678 | 1679 | /locate-path@6.0.0: 1680 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1681 | engines: {node: '>=10'} 1682 | dependencies: 1683 | p-locate: 5.0.0 1684 | dev: false 1685 | 1686 | /lodash.merge@4.6.2: 1687 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1688 | dev: false 1689 | 1690 | /loose-envify@1.4.0: 1691 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1692 | hasBin: true 1693 | dependencies: 1694 | js-tokens: 4.0.0 1695 | dev: false 1696 | 1697 | /lru-cache@6.0.0: 1698 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1699 | engines: {node: '>=10'} 1700 | dependencies: 1701 | yallist: 4.0.0 1702 | dev: false 1703 | 1704 | /merge2@1.4.1: 1705 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1706 | engines: {node: '>= 8'} 1707 | dev: false 1708 | 1709 | /micromatch@4.0.5: 1710 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1711 | engines: {node: '>=8.6'} 1712 | dependencies: 1713 | braces: 3.0.2 1714 | picomatch: 2.3.1 1715 | dev: false 1716 | 1717 | /minimatch@3.1.2: 1718 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1719 | dependencies: 1720 | brace-expansion: 1.1.11 1721 | dev: false 1722 | 1723 | /minimist@1.2.8: 1724 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1725 | dev: false 1726 | 1727 | /ms@2.1.2: 1728 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1729 | dev: false 1730 | 1731 | /ms@2.1.3: 1732 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1733 | dev: false 1734 | 1735 | /nanoid@3.3.6: 1736 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 1737 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1738 | hasBin: true 1739 | dev: false 1740 | 1741 | /natural-compare@1.4.0: 1742 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1743 | dev: false 1744 | 1745 | /next@13.4.13(react-dom@18.2.0)(react@18.2.0): 1746 | resolution: {integrity: sha512-A3YVbVDNeXLhWsZ8Nf6IkxmNlmTNz0yVg186NJ97tGZqPDdPzTrHotJ+A1cuJm2XfuWPrKOUZILl5iBQkIf8Jw==} 1747 | engines: {node: '>=16.8.0'} 1748 | hasBin: true 1749 | peerDependencies: 1750 | '@opentelemetry/api': ^1.1.0 1751 | react: ^18.2.0 1752 | react-dom: ^18.2.0 1753 | sass: ^1.3.0 1754 | peerDependenciesMeta: 1755 | '@opentelemetry/api': 1756 | optional: true 1757 | sass: 1758 | optional: true 1759 | dependencies: 1760 | '@next/env': 13.4.13 1761 | '@swc/helpers': 0.5.1 1762 | busboy: 1.6.0 1763 | caniuse-lite: 1.0.30001519 1764 | postcss: 8.4.14 1765 | react: 18.2.0 1766 | react-dom: 18.2.0(react@18.2.0) 1767 | styled-jsx: 5.1.1(react@18.2.0) 1768 | watchpack: 2.4.0 1769 | zod: 3.21.4 1770 | optionalDependencies: 1771 | '@next/swc-darwin-arm64': 13.4.13 1772 | '@next/swc-darwin-x64': 13.4.13 1773 | '@next/swc-linux-arm64-gnu': 13.4.13 1774 | '@next/swc-linux-arm64-musl': 13.4.13 1775 | '@next/swc-linux-x64-gnu': 13.4.13 1776 | '@next/swc-linux-x64-musl': 13.4.13 1777 | '@next/swc-win32-arm64-msvc': 13.4.13 1778 | '@next/swc-win32-ia32-msvc': 13.4.13 1779 | '@next/swc-win32-x64-msvc': 13.4.13 1780 | transitivePeerDependencies: 1781 | - '@babel/core' 1782 | - babel-plugin-macros 1783 | dev: false 1784 | 1785 | /node-fetch@2.6.12: 1786 | resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} 1787 | engines: {node: 4.x || >=6.0.0} 1788 | peerDependencies: 1789 | encoding: ^0.1.0 1790 | peerDependenciesMeta: 1791 | encoding: 1792 | optional: true 1793 | dependencies: 1794 | whatwg-url: 5.0.0 1795 | dev: false 1796 | 1797 | /node-gyp-build@4.6.0: 1798 | resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} 1799 | hasBin: true 1800 | requiresBuild: true 1801 | dev: false 1802 | 1803 | /object-assign@4.1.1: 1804 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1805 | engines: {node: '>=0.10.0'} 1806 | dev: false 1807 | 1808 | /object-inspect@1.12.3: 1809 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} 1810 | dev: false 1811 | 1812 | /object-keys@1.1.1: 1813 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1814 | engines: {node: '>= 0.4'} 1815 | dev: false 1816 | 1817 | /object.assign@4.1.4: 1818 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 1819 | engines: {node: '>= 0.4'} 1820 | dependencies: 1821 | call-bind: 1.0.2 1822 | define-properties: 1.2.0 1823 | has-symbols: 1.0.3 1824 | object-keys: 1.1.1 1825 | dev: false 1826 | 1827 | /object.entries@1.1.6: 1828 | resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} 1829 | engines: {node: '>= 0.4'} 1830 | dependencies: 1831 | call-bind: 1.0.2 1832 | define-properties: 1.2.0 1833 | es-abstract: 1.22.1 1834 | dev: false 1835 | 1836 | /object.fromentries@2.0.6: 1837 | resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} 1838 | engines: {node: '>= 0.4'} 1839 | dependencies: 1840 | call-bind: 1.0.2 1841 | define-properties: 1.2.0 1842 | es-abstract: 1.22.1 1843 | dev: false 1844 | 1845 | /object.groupby@1.0.0: 1846 | resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==} 1847 | dependencies: 1848 | call-bind: 1.0.2 1849 | define-properties: 1.2.0 1850 | es-abstract: 1.22.1 1851 | get-intrinsic: 1.2.1 1852 | dev: false 1853 | 1854 | /object.hasown@1.1.2: 1855 | resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} 1856 | dependencies: 1857 | define-properties: 1.2.0 1858 | es-abstract: 1.22.1 1859 | dev: false 1860 | 1861 | /object.values@1.1.6: 1862 | resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} 1863 | engines: {node: '>= 0.4'} 1864 | dependencies: 1865 | call-bind: 1.0.2 1866 | define-properties: 1.2.0 1867 | es-abstract: 1.22.1 1868 | dev: false 1869 | 1870 | /once@1.4.0: 1871 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1872 | dependencies: 1873 | wrappy: 1.0.2 1874 | dev: false 1875 | 1876 | /optionator@0.9.3: 1877 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 1878 | engines: {node: '>= 0.8.0'} 1879 | dependencies: 1880 | '@aashutoshrathi/word-wrap': 1.2.6 1881 | deep-is: 0.1.4 1882 | fast-levenshtein: 2.0.6 1883 | levn: 0.4.1 1884 | prelude-ls: 1.2.1 1885 | type-check: 0.4.0 1886 | dev: false 1887 | 1888 | /p-limit@3.1.0: 1889 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1890 | engines: {node: '>=10'} 1891 | dependencies: 1892 | yocto-queue: 0.1.0 1893 | dev: false 1894 | 1895 | /p-locate@5.0.0: 1896 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1897 | engines: {node: '>=10'} 1898 | dependencies: 1899 | p-limit: 3.1.0 1900 | dev: false 1901 | 1902 | /parent-module@1.0.1: 1903 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1904 | engines: {node: '>=6'} 1905 | dependencies: 1906 | callsites: 3.1.0 1907 | dev: false 1908 | 1909 | /path-exists@4.0.0: 1910 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1911 | engines: {node: '>=8'} 1912 | dev: false 1913 | 1914 | /path-is-absolute@1.0.1: 1915 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1916 | engines: {node: '>=0.10.0'} 1917 | dev: false 1918 | 1919 | /path-key@3.1.1: 1920 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1921 | engines: {node: '>=8'} 1922 | dev: false 1923 | 1924 | /path-parse@1.0.7: 1925 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1926 | dev: false 1927 | 1928 | /path-type@4.0.0: 1929 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1930 | engines: {node: '>=8'} 1931 | dev: false 1932 | 1933 | /picocolors@1.0.0: 1934 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1935 | dev: false 1936 | 1937 | /picomatch@2.3.1: 1938 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1939 | engines: {node: '>=8.6'} 1940 | dev: false 1941 | 1942 | /pnpm@8.6.12: 1943 | resolution: {integrity: sha512-Eza4C5SO/Xl5IYozupbZ5NOA5leBRPYxmXmXfe7G4/4uCkRLhks84rB33aitxNZU/uMrnDGGjwrLktoKvPjqHA==} 1944 | engines: {node: '>=16.14'} 1945 | hasBin: true 1946 | dev: false 1947 | 1948 | /postcss@8.4.14: 1949 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} 1950 | engines: {node: ^10 || ^12 || >=14} 1951 | dependencies: 1952 | nanoid: 3.3.6 1953 | picocolors: 1.0.0 1954 | source-map-js: 1.0.2 1955 | dev: false 1956 | 1957 | /prelude-ls@1.2.1: 1958 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1959 | engines: {node: '>= 0.8.0'} 1960 | dev: false 1961 | 1962 | /prettier@3.0.1: 1963 | resolution: {integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==} 1964 | engines: {node: '>=14'} 1965 | hasBin: true 1966 | dev: false 1967 | 1968 | /prop-types@15.8.1: 1969 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 1970 | dependencies: 1971 | loose-envify: 1.4.0 1972 | object-assign: 4.1.1 1973 | react-is: 16.13.1 1974 | dev: false 1975 | 1976 | /punycode@2.3.0: 1977 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 1978 | engines: {node: '>=6'} 1979 | dev: false 1980 | 1981 | /queue-microtask@1.2.3: 1982 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1983 | dev: false 1984 | 1985 | /react-dom@18.2.0(react@18.2.0): 1986 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 1987 | peerDependencies: 1988 | react: ^18.2.0 1989 | dependencies: 1990 | loose-envify: 1.4.0 1991 | react: 18.2.0 1992 | scheduler: 0.23.0 1993 | dev: false 1994 | 1995 | /react-is@16.13.1: 1996 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 1997 | dev: false 1998 | 1999 | /react@18.2.0: 2000 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2001 | engines: {node: '>=0.10.0'} 2002 | dependencies: 2003 | loose-envify: 1.4.0 2004 | dev: false 2005 | 2006 | /regenerator-runtime@0.14.0: 2007 | resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} 2008 | dev: false 2009 | 2010 | /regexp.prototype.flags@1.5.0: 2011 | resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} 2012 | engines: {node: '>= 0.4'} 2013 | dependencies: 2014 | call-bind: 1.0.2 2015 | define-properties: 1.2.0 2016 | functions-have-names: 1.2.3 2017 | dev: false 2018 | 2019 | /resolve-from@4.0.0: 2020 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2021 | engines: {node: '>=4'} 2022 | dev: false 2023 | 2024 | /resolve-pkg-maps@1.0.0: 2025 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 2026 | dev: false 2027 | 2028 | /resolve@1.22.4: 2029 | resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} 2030 | hasBin: true 2031 | dependencies: 2032 | is-core-module: 2.13.0 2033 | path-parse: 1.0.7 2034 | supports-preserve-symlinks-flag: 1.0.0 2035 | dev: false 2036 | 2037 | /resolve@2.0.0-next.4: 2038 | resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} 2039 | hasBin: true 2040 | dependencies: 2041 | is-core-module: 2.13.0 2042 | path-parse: 1.0.7 2043 | supports-preserve-symlinks-flag: 1.0.0 2044 | dev: false 2045 | 2046 | /reusify@1.0.4: 2047 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2048 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2049 | dev: false 2050 | 2051 | /rimraf@3.0.2: 2052 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2053 | hasBin: true 2054 | dependencies: 2055 | glob: 7.2.3 2056 | dev: false 2057 | 2058 | /rpc-websockets@7.5.1: 2059 | resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==} 2060 | dependencies: 2061 | '@babel/runtime': 7.22.10 2062 | eventemitter3: 4.0.7 2063 | uuid: 8.3.2 2064 | ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) 2065 | optionalDependencies: 2066 | bufferutil: 4.0.7 2067 | utf-8-validate: 5.0.10 2068 | dev: false 2069 | 2070 | /run-parallel@1.2.0: 2071 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2072 | dependencies: 2073 | queue-microtask: 1.2.3 2074 | dev: false 2075 | 2076 | /safe-array-concat@1.0.0: 2077 | resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} 2078 | engines: {node: '>=0.4'} 2079 | dependencies: 2080 | call-bind: 1.0.2 2081 | get-intrinsic: 1.2.1 2082 | has-symbols: 1.0.3 2083 | isarray: 2.0.5 2084 | dev: false 2085 | 2086 | /safe-buffer@5.2.1: 2087 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2088 | dev: false 2089 | 2090 | /safe-regex-test@1.0.0: 2091 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 2092 | dependencies: 2093 | call-bind: 1.0.2 2094 | get-intrinsic: 1.2.1 2095 | is-regex: 1.1.4 2096 | dev: false 2097 | 2098 | /scheduler@0.23.0: 2099 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2100 | dependencies: 2101 | loose-envify: 1.4.0 2102 | dev: false 2103 | 2104 | /semver@6.3.1: 2105 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 2106 | hasBin: true 2107 | dev: false 2108 | 2109 | /semver@7.5.4: 2110 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 2111 | engines: {node: '>=10'} 2112 | hasBin: true 2113 | dependencies: 2114 | lru-cache: 6.0.0 2115 | dev: false 2116 | 2117 | /shebang-command@2.0.0: 2118 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2119 | engines: {node: '>=8'} 2120 | dependencies: 2121 | shebang-regex: 3.0.0 2122 | dev: false 2123 | 2124 | /shebang-regex@3.0.0: 2125 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2126 | engines: {node: '>=8'} 2127 | dev: false 2128 | 2129 | /side-channel@1.0.4: 2130 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2131 | dependencies: 2132 | call-bind: 1.0.2 2133 | get-intrinsic: 1.2.1 2134 | object-inspect: 1.12.3 2135 | dev: false 2136 | 2137 | /slash@3.0.0: 2138 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2139 | engines: {node: '>=8'} 2140 | dev: false 2141 | 2142 | /sonner@0.6.2(react-dom@18.2.0)(react@18.2.0): 2143 | resolution: {integrity: sha512-bh4FWhYoNN481ZIW94W4e0kSLBTMGislYg2YXvDS1px1AJJz4erQe9jHV8s5pS1VMVDgfh3CslNSFLaU6Ldrnw==} 2144 | peerDependencies: 2145 | react: ^18.0.0 2146 | react-dom: ^18.0.0 2147 | dependencies: 2148 | react: 18.2.0 2149 | react-dom: 18.2.0(react@18.2.0) 2150 | dev: false 2151 | 2152 | /source-map-js@1.0.2: 2153 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2154 | engines: {node: '>=0.10.0'} 2155 | dev: false 2156 | 2157 | /streamsearch@1.1.0: 2158 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 2159 | engines: {node: '>=10.0.0'} 2160 | dev: false 2161 | 2162 | /string.prototype.matchall@4.0.8: 2163 | resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} 2164 | dependencies: 2165 | call-bind: 1.0.2 2166 | define-properties: 1.2.0 2167 | es-abstract: 1.22.1 2168 | get-intrinsic: 1.2.1 2169 | has-symbols: 1.0.3 2170 | internal-slot: 1.0.5 2171 | regexp.prototype.flags: 1.5.0 2172 | side-channel: 1.0.4 2173 | dev: false 2174 | 2175 | /string.prototype.trim@1.2.7: 2176 | resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} 2177 | engines: {node: '>= 0.4'} 2178 | dependencies: 2179 | call-bind: 1.0.2 2180 | define-properties: 1.2.0 2181 | es-abstract: 1.22.1 2182 | dev: false 2183 | 2184 | /string.prototype.trimend@1.0.6: 2185 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 2186 | dependencies: 2187 | call-bind: 1.0.2 2188 | define-properties: 1.2.0 2189 | es-abstract: 1.22.1 2190 | dev: false 2191 | 2192 | /string.prototype.trimstart@1.0.6: 2193 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 2194 | dependencies: 2195 | call-bind: 1.0.2 2196 | define-properties: 1.2.0 2197 | es-abstract: 1.22.1 2198 | dev: false 2199 | 2200 | /strip-ansi@6.0.1: 2201 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2202 | engines: {node: '>=8'} 2203 | dependencies: 2204 | ansi-regex: 5.0.1 2205 | dev: false 2206 | 2207 | /strip-bom@3.0.0: 2208 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2209 | engines: {node: '>=4'} 2210 | dev: false 2211 | 2212 | /strip-json-comments@3.1.1: 2213 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2214 | engines: {node: '>=8'} 2215 | dev: false 2216 | 2217 | /styled-jsx@5.1.1(react@18.2.0): 2218 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 2219 | engines: {node: '>= 12.0.0'} 2220 | peerDependencies: 2221 | '@babel/core': '*' 2222 | babel-plugin-macros: '*' 2223 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 2224 | peerDependenciesMeta: 2225 | '@babel/core': 2226 | optional: true 2227 | babel-plugin-macros: 2228 | optional: true 2229 | dependencies: 2230 | client-only: 0.0.1 2231 | react: 18.2.0 2232 | dev: false 2233 | 2234 | /superstruct@0.14.2: 2235 | resolution: {integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==} 2236 | dev: false 2237 | 2238 | /supports-color@7.2.0: 2239 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2240 | engines: {node: '>=8'} 2241 | dependencies: 2242 | has-flag: 4.0.0 2243 | dev: false 2244 | 2245 | /supports-preserve-symlinks-flag@1.0.0: 2246 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2247 | engines: {node: '>= 0.4'} 2248 | dev: false 2249 | 2250 | /tapable@2.2.1: 2251 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 2252 | engines: {node: '>=6'} 2253 | dev: false 2254 | 2255 | /text-encoding-utf-8@1.0.2: 2256 | resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} 2257 | dev: false 2258 | 2259 | /text-table@0.2.0: 2260 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2261 | dev: false 2262 | 2263 | /through@2.3.8: 2264 | resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} 2265 | dev: false 2266 | 2267 | /to-regex-range@5.0.1: 2268 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2269 | engines: {node: '>=8.0'} 2270 | dependencies: 2271 | is-number: 7.0.0 2272 | dev: false 2273 | 2274 | /tr46@0.0.3: 2275 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 2276 | dev: false 2277 | 2278 | /ts-api-utils@1.0.1(typescript@5.1.6): 2279 | resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} 2280 | engines: {node: '>=16.13.0'} 2281 | peerDependencies: 2282 | typescript: '>=4.2.0' 2283 | dependencies: 2284 | typescript: 5.1.6 2285 | dev: false 2286 | 2287 | /tsconfig-paths@3.14.2: 2288 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} 2289 | dependencies: 2290 | '@types/json5': 0.0.29 2291 | json5: 1.0.2 2292 | minimist: 1.2.8 2293 | strip-bom: 3.0.0 2294 | dev: false 2295 | 2296 | /tslib@2.6.1: 2297 | resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} 2298 | dev: false 2299 | 2300 | /type-check@0.4.0: 2301 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2302 | engines: {node: '>= 0.8.0'} 2303 | dependencies: 2304 | prelude-ls: 1.2.1 2305 | dev: false 2306 | 2307 | /type-fest@0.20.2: 2308 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2309 | engines: {node: '>=10'} 2310 | dev: false 2311 | 2312 | /typed-array-buffer@1.0.0: 2313 | resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} 2314 | engines: {node: '>= 0.4'} 2315 | dependencies: 2316 | call-bind: 1.0.2 2317 | get-intrinsic: 1.2.1 2318 | is-typed-array: 1.1.12 2319 | dev: false 2320 | 2321 | /typed-array-byte-length@1.0.0: 2322 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} 2323 | engines: {node: '>= 0.4'} 2324 | dependencies: 2325 | call-bind: 1.0.2 2326 | for-each: 0.3.3 2327 | has-proto: 1.0.1 2328 | is-typed-array: 1.1.12 2329 | dev: false 2330 | 2331 | /typed-array-byte-offset@1.0.0: 2332 | resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} 2333 | engines: {node: '>= 0.4'} 2334 | dependencies: 2335 | available-typed-arrays: 1.0.5 2336 | call-bind: 1.0.2 2337 | for-each: 0.3.3 2338 | has-proto: 1.0.1 2339 | is-typed-array: 1.1.12 2340 | dev: false 2341 | 2342 | /typed-array-length@1.0.4: 2343 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 2344 | dependencies: 2345 | call-bind: 1.0.2 2346 | for-each: 0.3.3 2347 | is-typed-array: 1.1.12 2348 | dev: false 2349 | 2350 | /typescript@5.1.6: 2351 | resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} 2352 | engines: {node: '>=14.17'} 2353 | hasBin: true 2354 | dev: false 2355 | 2356 | /unbox-primitive@1.0.2: 2357 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2358 | dependencies: 2359 | call-bind: 1.0.2 2360 | has-bigints: 1.0.2 2361 | has-symbols: 1.0.3 2362 | which-boxed-primitive: 1.0.2 2363 | dev: false 2364 | 2365 | /uri-js@4.4.1: 2366 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2367 | dependencies: 2368 | punycode: 2.3.0 2369 | dev: false 2370 | 2371 | /utf-8-validate@5.0.10: 2372 | resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} 2373 | engines: {node: '>=6.14.2'} 2374 | requiresBuild: true 2375 | dependencies: 2376 | node-gyp-build: 4.6.0 2377 | dev: false 2378 | 2379 | /uuid@8.3.2: 2380 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 2381 | hasBin: true 2382 | dev: false 2383 | 2384 | /watchpack@2.4.0: 2385 | resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} 2386 | engines: {node: '>=10.13.0'} 2387 | dependencies: 2388 | glob-to-regexp: 0.4.1 2389 | graceful-fs: 4.2.11 2390 | dev: false 2391 | 2392 | /webidl-conversions@3.0.1: 2393 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 2394 | dev: false 2395 | 2396 | /whatwg-url@5.0.0: 2397 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 2398 | dependencies: 2399 | tr46: 0.0.3 2400 | webidl-conversions: 3.0.1 2401 | dev: false 2402 | 2403 | /which-boxed-primitive@1.0.2: 2404 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2405 | dependencies: 2406 | is-bigint: 1.0.4 2407 | is-boolean-object: 1.1.2 2408 | is-number-object: 1.0.7 2409 | is-string: 1.0.7 2410 | is-symbol: 1.0.4 2411 | dev: false 2412 | 2413 | /which-typed-array@1.1.11: 2414 | resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} 2415 | engines: {node: '>= 0.4'} 2416 | dependencies: 2417 | available-typed-arrays: 1.0.5 2418 | call-bind: 1.0.2 2419 | for-each: 0.3.3 2420 | gopd: 1.0.1 2421 | has-tostringtag: 1.0.0 2422 | dev: false 2423 | 2424 | /which@2.0.2: 2425 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2426 | engines: {node: '>= 8'} 2427 | hasBin: true 2428 | dependencies: 2429 | isexe: 2.0.0 2430 | dev: false 2431 | 2432 | /wrappy@1.0.2: 2433 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2434 | dev: false 2435 | 2436 | /ws@7.5.9: 2437 | resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} 2438 | engines: {node: '>=8.3.0'} 2439 | peerDependencies: 2440 | bufferutil: ^4.0.1 2441 | utf-8-validate: ^5.0.2 2442 | peerDependenciesMeta: 2443 | bufferutil: 2444 | optional: true 2445 | utf-8-validate: 2446 | optional: true 2447 | dev: false 2448 | 2449 | /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10): 2450 | resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} 2451 | engines: {node: '>=10.0.0'} 2452 | peerDependencies: 2453 | bufferutil: ^4.0.1 2454 | utf-8-validate: '>=5.0.2' 2455 | peerDependenciesMeta: 2456 | bufferutil: 2457 | optional: true 2458 | utf-8-validate: 2459 | optional: true 2460 | dependencies: 2461 | bufferutil: 4.0.7 2462 | utf-8-validate: 5.0.10 2463 | dev: false 2464 | 2465 | /yallist@4.0.0: 2466 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2467 | dev: false 2468 | 2469 | /yocto-queue@0.1.0: 2470 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2471 | engines: {node: '>=10'} 2472 | dev: false 2473 | 2474 | /zod@3.21.4: 2475 | resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} 2476 | dev: false 2477 | -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/api/turnkey/proxy/route.ts: -------------------------------------------------------------------------------- 1 | import { SignedRequest } from '@turnkey/http'; 2 | import { NextRequest, NextResponse } from 'next/server'; 3 | 4 | export async function POST(request: NextRequest): Promise { 5 | const { url, stamp, body }: SignedRequest = await request.json(); 6 | 7 | const response = await fetch(url, { 8 | method: 'POST', 9 | headers: { 10 | Accept: 'application/json', 11 | 'Content-Type': 'application/json', 12 | 'X-Stamp-WebAuthn': stamp, 13 | }, 14 | body, 15 | }); 16 | const json = await response.json(); 17 | 18 | return NextResponse.json(json); 19 | } 20 | -------------------------------------------------------------------------------- /src/app/api/turnkey/register/route.ts: -------------------------------------------------------------------------------- 1 | import { init, TurnkeyActivityError, TurnkeyApi, TurnkeyApiTypes, withAsyncPolling } from '@turnkey/http'; 2 | import { 3 | getPrivateKey, 4 | getUsers, 5 | } from '@turnkey/http/dist/__generated__/services/coordinator/public/v1/public_api.fetcher'; 6 | import { NextRequest, NextResponse } from 'next/server'; 7 | import bs58 from 'bs58'; 8 | 9 | init({ 10 | apiPublicKey: process.env.TURNKEY_API_PUBLIC_KEY!, 11 | apiPrivateKey: process.env.TURNKEY_API_PRIVATE_KEY!, 12 | baseUrl: process.env.TURNKEY_API_BASE_URL!, 13 | }); 14 | 15 | const createSubOrganization = withAsyncPolling({ 16 | request: TurnkeyApi.createSubOrganization, 17 | refreshIntervalMs: 250, 18 | }); 19 | 20 | const createPrivateKeys = withAsyncPolling({ 21 | request: TurnkeyApi.createPrivateKeys, 22 | refreshIntervalMs: 250, 23 | }); 24 | 25 | const updateRootQuorum = withAsyncPolling({ 26 | request: TurnkeyApi.updateRootQuorum, 27 | refreshIntervalMs: 250, 28 | }); 29 | 30 | export type POSTResponse = { 31 | subOrganizationId: string; 32 | privateKeyId: string; 33 | publicKey: string; 34 | }; 35 | 36 | export async function POST(request: NextRequest): Promise> { 37 | const { 38 | challenge, 39 | attestation, 40 | }: { 41 | challenge: string; 42 | attestation: TurnkeyApiTypes['v1Attestation']; 43 | } = await request.json(); 44 | 45 | // Create a new sub-org for the user. 46 | const createSubOrganizationActivity = await createSubOrganization({ 47 | body: { 48 | type: 'ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V2', 49 | timestampMs: Date.now().toString(), 50 | organizationId: process.env.TURNKEY_ORGANIZATION_ID!, 51 | parameters: { 52 | subOrganizationName: 'Sub Organization Name', // FIXME 53 | rootQuorumThreshold: 1, 54 | rootUsers: [ 55 | { 56 | userName: 'Passkey', 57 | apiKeys: [], 58 | authenticators: [ 59 | { 60 | authenticatorName: 'Passkey', 61 | challenge, 62 | attestation, 63 | }, 64 | ], 65 | }, 66 | // Add a helper root user using the root org API key to create a private key without attestation. 67 | { 68 | userName: 'Helper', 69 | apiKeys: [ 70 | { 71 | apiKeyName: 'Helper', 72 | publicKey: process.env.TURNKEY_API_PUBLIC_KEY!, 73 | }, 74 | ], 75 | authenticators: [], 76 | }, 77 | ], 78 | }, 79 | }, 80 | }); 81 | 82 | const subOrganizationId = createSubOrganizationActivity.result.createSubOrganizationResult?.subOrganizationId; 83 | if (!subOrganizationId) 84 | throw new TurnkeyActivityError({ 85 | message: 'missing CREATE_SUB_ORGANIZATION result', 86 | cause: null, 87 | activityId: createSubOrganizationActivity.id, 88 | activityStatus: createSubOrganizationActivity.status, 89 | activityType: createSubOrganizationActivity.type, 90 | }); 91 | 92 | // Create a private key using the helper root user API key. 93 | const createPrivateKeysActivity = await createPrivateKeys({ 94 | body: { 95 | type: 'ACTIVITY_TYPE_CREATE_PRIVATE_KEYS_V2', 96 | organizationId: subOrganizationId, 97 | timestampMs: Date.now().toString(), 98 | parameters: { 99 | privateKeys: [ 100 | { 101 | privateKeyName: 'Private Key', // FIXME 102 | curve: 'CURVE_ED25519', 103 | addressFormats: [], 104 | privateKeyTags: [], 105 | }, 106 | ], 107 | }, 108 | }, 109 | }); 110 | 111 | const privateKeyId = createPrivateKeysActivity.result.createPrivateKeysResultV2?.privateKeys[0]?.privateKeyId; 112 | if (!privateKeyId) 113 | throw new TurnkeyActivityError({ 114 | message: 'missing CREATE_PRIVATE_KEYS result', 115 | cause: null, 116 | activityId: createSubOrganizationActivity.id, 117 | activityStatus: createSubOrganizationActivity.status, 118 | activityType: createSubOrganizationActivity.type, 119 | }); 120 | 121 | // Get the public key of the private key. 122 | const { privateKey } = await getPrivateKey({ 123 | body: { 124 | privateKeyId, 125 | organizationId: subOrganizationId, 126 | }, 127 | }); 128 | const publicKey = bs58.encode(Buffer.from(privateKey.publicKey, 'hex')); 129 | 130 | // Enumerate the users in the sub-org and remove the helper root user from the root quorum. 131 | const users = await getUsers({ 132 | body: { 133 | organizationId: subOrganizationId, 134 | }, 135 | }); 136 | for (const user of users.users) { 137 | if (user.userName === 'Passkey') { 138 | await updateRootQuorum({ 139 | body: { 140 | type: 'ACTIVITY_TYPE_UPDATE_ROOT_QUORUM', 141 | organizationId: subOrganizationId, 142 | timestampMs: Date.now().toString(), 143 | parameters: { 144 | userIds: [user.userId], 145 | threshold: 1, 146 | }, 147 | }, 148 | }); 149 | break; 150 | } 151 | } 152 | 153 | return NextResponse.json({ subOrganizationId, privateKeyId, publicKey }); 154 | } 155 | -------------------------------------------------------------------------------- /src/app/bytes.ts: -------------------------------------------------------------------------------- 1 | export function getRandomBytes(length: number): Uint8Array { 2 | const bytes = new Uint8Array(length); 3 | crypto.getRandomValues(bytes); 4 | return bytes; 5 | } 6 | 7 | export function bytesToBase64Url(bytes: Uint8Array): string { 8 | const base64 = btoa(String.fromCharCode(...bytes)); 9 | return base64.replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', ''); 10 | } 11 | 12 | export function hexToBytes(hex: string): Uint8Array { 13 | return new Uint8Array(hex.match(/.{1,2}/g)!.map((byte) => parseInt(byte, 16))); 14 | } 15 | 16 | export function bytesToHex(bytes: Uint8Array): string { 17 | return bytes.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), ''); 18 | } 19 | -------------------------------------------------------------------------------- /src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jordaaash/solana-passkeys/3b05db3fb96bfe490643290cf4441ccbe2de3aa5/src/app/favicon.ico -------------------------------------------------------------------------------- /src/app/globals.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: #071952; 3 | } 4 | 5 | .toast[data-sonner-toast] { 6 | word-break: break-word; 7 | display: flex; 8 | } 9 | 10 | .toast[data-sonner-toast] [data-icon] { 11 | margin-top: 2px; 12 | } 13 | 14 | .toast[data-sonner-toast] [data-content] { 15 | align-self: center; 16 | flex-grow: 1; 17 | } 18 | 19 | .toast[data-sonner-toast] [data-button] { 20 | align-self: flex-start; 21 | height: unset; 22 | border: 0; 23 | border-radius: 4px; 24 | padding: 8px; 25 | margin: 0; 26 | background: #0B666A; 27 | color: #ffffff; 28 | word-break: initial; 29 | transition: background-color 250ms ease-in-out; 30 | cursor: pointer; 31 | } 32 | 33 | .toast[data-sonner-toast] [data-button]:hover { 34 | background: #35A29F; 35 | } 36 | -------------------------------------------------------------------------------- /src/app/hooks/useLocalStorage.ts: -------------------------------------------------------------------------------- 1 | import { type Dispatch, type SetStateAction, useEffect, useRef, useState } from 'react'; 2 | 3 | export function useLocalStorage(key: string, defaultState: T): [T, Dispatch>] { 4 | const [state, setState] = useState(() => { 5 | try { 6 | const value = localStorage.getItem(key); 7 | if (value) return JSON.parse(value) as T; 8 | } catch (error: any) { 9 | if (typeof window !== 'undefined') { 10 | console.error(error); 11 | } 12 | } 13 | 14 | return defaultState; 15 | }); 16 | const isFirstRenderRef = useRef(true); 17 | useEffect(() => { 18 | if (isFirstRenderRef.current) { 19 | isFirstRenderRef.current = false; 20 | return; 21 | } 22 | try { 23 | if (state === null) { 24 | localStorage.removeItem(key); 25 | } else { 26 | localStorage.setItem(key, JSON.stringify(state)); 27 | } 28 | } catch (error: any) { 29 | if (typeof window !== 'undefined') { 30 | console.error(error); 31 | } 32 | } 33 | }, [state, key]); 34 | 35 | return [state, setState]; 36 | } 37 | -------------------------------------------------------------------------------- /src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import './globals.css'; 2 | import type { Metadata } from 'next'; 3 | import { Inter } from 'next/font/google'; 4 | 5 | const inter = Inter({ subsets: ['latin'] }); 6 | 7 | export const metadata: Metadata = { 8 | title: 'Create Next App', 9 | description: 'Generated by create next app', 10 | }; 11 | 12 | export default function RootLayout({ children }: { children: React.ReactNode }) { 13 | return ( 14 | 15 | {children} 16 | 17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /src/app/page.module.css: -------------------------------------------------------------------------------- 1 | .main { 2 | display: flex; 3 | align-items: flex-start; 4 | justify-content: center; 5 | min-height: 100vh; 6 | } 7 | 8 | .button { 9 | border: 0; 10 | border-radius: 4px; 11 | padding: 12px; 12 | margin: 8px; 13 | background: #0B666A; 14 | color: #ffffff; 15 | transition: background-color 250ms ease-in-out; 16 | cursor: pointer; 17 | } 18 | 19 | .button:disabled { 20 | background: #08474A; 21 | cursor: default; 22 | } 23 | 24 | .button:not(:disabled):hover { 25 | background: #35A29F; 26 | } 27 | -------------------------------------------------------------------------------- /src/app/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { ed25519 } from '@noble/curves/ed25519'; 4 | import { clusterApiUrl, Connection, LAMPORTS_PER_SOL, PublicKey, SystemProgram, Transaction } from '@solana/web3.js'; 5 | import { browserInit } from '@turnkey/http'; 6 | import bs58 from 'bs58'; 7 | import { useCallback, useEffect, useMemo, useState } from 'react'; 8 | import { toast, Toaster } from 'sonner'; 9 | import { getRandomBytes } from './bytes'; 10 | import { useLocalStorage } from './hooks/useLocalStorage'; 11 | import styles from './page.module.css'; 12 | import { register, Registration, signBytes, signTransaction } from './turnkey'; 13 | 14 | export default function Home() { 15 | useEffect(() => browserInit({ baseUrl: process.env.NEXT_PUBLIC_TURNKEY_API_BASE_URL! }), []); 16 | 17 | const [registration, setRegistration] = useLocalStorage('registration', null); 18 | const publicKey = useMemo(() => (registration ? new PublicKey(registration.publicKey) : null), [registration]); 19 | const connection = useMemo(() => new Connection(clusterApiUrl('devnet')), []); 20 | 21 | const [loading, setLoading] = useState(true); 22 | useEffect(() => setLoading(false), []); 23 | 24 | const onRegister = useCallback(async () => { 25 | if (registration) return; 26 | try { 27 | setLoading(true); 28 | toast('Registering ...'); 29 | let newRegistration: Registration; 30 | try { 31 | newRegistration = await register(); 32 | setRegistration(newRegistration); 33 | } catch (error) { 34 | toast.error('Registration failed!', { description: String(error) }); 35 | return; 36 | } 37 | 38 | toast.success('Registered successfully!', { 39 | description: `Your public key is ${newRegistration.publicKey}`, 40 | action: { 41 | label: 'View', 42 | onClick: () => 43 | window.open(`https://explorer.solana.com/address/${newRegistration.publicKey}?cluster=devnet`), 44 | }, 45 | }); 46 | } finally { 47 | setLoading(false); 48 | } 49 | }, [registration, setRegistration]); 50 | 51 | const onSignMessage = useCallback(async () => { 52 | if (!registration || !publicKey) return; 53 | try { 54 | setLoading(true); 55 | const bytes = getRandomBytes(32); 56 | toast('Signing ...'); 57 | let signature: Uint8Array; 58 | try { 59 | ({ signature } = await signBytes({ 60 | bytes, 61 | subOrganizationId: registration.subOrganizationId, 62 | privateKeyId: registration.privateKeyId, 63 | })); 64 | } catch (error) { 65 | toast.error('Signing failed!', { description: String(error) }); 66 | return; 67 | } 68 | 69 | if (!ed25519.verify(signature, bytes, publicKey.toBytes())) { 70 | toast.error('Signature invalid!', { 71 | description: `Your message signature is ${bs58.encode(signature)}`, 72 | }); 73 | return; 74 | } 75 | 76 | toast.success('Signature verified!', { 77 | description: `Your message signature is ${bs58.encode(signature)}`, 78 | }); 79 | } finally { 80 | setLoading(false); 81 | } 82 | }, [registration, publicKey]); 83 | 84 | const onRequestAirdrop = useCallback(async () => { 85 | if (!publicKey) return; 86 | try { 87 | setLoading(true); 88 | toast('Requesting airdrop ...'); 89 | let txid: string; 90 | try { 91 | txid = await connection.requestAirdrop(publicKey, LAMPORTS_PER_SOL); 92 | } catch (error) { 93 | toast.error('Airdrop failed!', { description: String(error) }); 94 | return; 95 | } 96 | 97 | toast.success('Airdrop requested!', { 98 | description: '', 99 | action: { 100 | label: 'View', 101 | onClick: () => window.open(`https://explorer.solana.com/tx/${txid}?cluster=devnet`), 102 | }, 103 | }); 104 | 105 | toast('Confirming airdrop ...'); 106 | try { 107 | await connection.confirmTransaction(txid, 'confirmed'); 108 | } catch (error) { 109 | toast.error('Airdrop failed!', { 110 | description: String(error), 111 | action: { 112 | label: 'View', 113 | onClick: () => window.open(`https://explorer.solana.com/tx/${txid}?cluster=devnet`), 114 | }, 115 | }); 116 | return; 117 | } 118 | 119 | toast.success('Airdrop confirmed!', { 120 | action: { 121 | label: 'View', 122 | onClick: () => window.open(`https://explorer.solana.com/tx/${txid}?cluster=devnet`), 123 | }, 124 | }); 125 | } finally { 126 | setLoading(false); 127 | } 128 | }, [publicKey, connection]); 129 | 130 | const onSignAndSendTransaction = useCallback(async () => { 131 | if (!registration || !publicKey) return; 132 | try { 133 | setLoading(true); 134 | toast('Preparing transaction ...'); 135 | const { 136 | value: { blockhash, lastValidBlockHeight }, 137 | context: { slot: minContextSlot }, 138 | } = await connection.getLatestBlockhashAndContext(); 139 | let transaction = new Transaction({ 140 | feePayer: publicKey, 141 | blockhash, 142 | lastValidBlockHeight, 143 | }).add( 144 | SystemProgram.transfer({ 145 | fromPubkey: publicKey, 146 | toPubkey: publicKey, 147 | lamports: 0, 148 | }) 149 | ); 150 | 151 | toast('Signing transaction ...'); 152 | let signature: Uint8Array; 153 | try { 154 | ({ transaction, signature } = await signTransaction({ 155 | transaction, 156 | publicKey, 157 | subOrganizationId: registration.subOrganizationId, 158 | privateKeyId: registration.privateKeyId, 159 | })); 160 | } catch (error) { 161 | toast.error('Signing failed!', { description: String(error) }); 162 | return; 163 | } 164 | 165 | if (!transaction.verifySignatures()) { 166 | toast.error('Signature invalid!', { 167 | description: `Your transaction signature is ${bs58.encode(signature)}`, 168 | }); 169 | return; 170 | } 171 | 172 | toast.success('Signature verified!', { 173 | description: `Your transaction signature is ${bs58.encode(signature)}`, 174 | }); 175 | 176 | toast('Sending transaction ...'); 177 | let txid: string; 178 | try { 179 | txid = await connection.sendRawTransaction(transaction.serialize(), { 180 | minContextSlot, 181 | }); 182 | } catch (error) { 183 | toast.error('Sending failed!', { description: String(error) }); 184 | return; 185 | } 186 | 187 | toast.success('Transaction sent!', { 188 | action: { 189 | label: 'View', 190 | onClick: () => window.open(`https://explorer.solana.com/tx/${txid}?cluster=devnet`), 191 | }, 192 | }); 193 | 194 | toast('Confirming transaction ...'); 195 | try { 196 | await connection.confirmTransaction( 197 | { 198 | signature: txid, 199 | blockhash, 200 | lastValidBlockHeight, 201 | minContextSlot, 202 | }, 203 | 'confirmed' 204 | ); 205 | } catch (error) { 206 | toast.error('Transaction failed!', { 207 | description: String(error), 208 | action: { 209 | label: 'View', 210 | onClick: () => window.open(`https://explorer.solana.com/tx/${txid}?cluster=devnet`), 211 | }, 212 | }); 213 | return; 214 | } 215 | 216 | toast.success('Transaction confirmed!', { 217 | action: { 218 | label: 'View', 219 | onClick: () => window.open(`https://explorer.solana.com/tx/${txid}?cluster=devnet`), 220 | }, 221 | }); 222 | } finally { 223 | setLoading(false); 224 | } 225 | }, [registration, publicKey, connection]); 226 | 227 | return ( 228 |
229 | {!registration ? ( 230 | 233 | ) : ( 234 | <> 235 | 238 | 241 | 244 | 245 | )} 246 | 255 |
256 | ); 257 | } 258 | -------------------------------------------------------------------------------- /src/app/turnkey.ts: -------------------------------------------------------------------------------- 1 | import { PublicKey, Transaction } from '@solana/web3.js'; 2 | import { getWebAuthnAttestation, SignedRequest, TurnkeyActivityError, TurnkeyApi } from '@turnkey/http'; 3 | import { bytesToBase64Url, bytesToHex, getRandomBytes, hexToBytes } from './bytes'; 4 | 5 | export type Registration = { subOrganizationId: string; privateKeyId: string; publicKey: string }; 6 | 7 | export async function register(): Promise { 8 | const challenge = getRandomBytes(32); 9 | const username = 'Solana Passkey'; 10 | 11 | const attestation = await getWebAuthnAttestation({ 12 | publicKey: { 13 | attestation: 'none', 14 | authenticatorSelection: { 15 | requireResidentKey: true, 16 | residentKey: 'required', 17 | }, 18 | challenge: challenge.buffer, 19 | excludeCredentials: [], 20 | extensions: { 21 | credProps: true, 22 | }, 23 | pubKeyCredParams: [{ alg: -7, type: 'public-key' }], 24 | rp: { 25 | id: window.location.hostname, 26 | name: 'Solana Passkeys', 27 | }, 28 | timeout: 60000, 29 | user: { 30 | id: getRandomBytes(16).buffer, 31 | name: username, 32 | displayName: username, 33 | }, 34 | }, 35 | }); 36 | 37 | const response = await fetch('/api/turnkey/register', { 38 | method: 'POST', 39 | headers: { 40 | Accept: 'application/json', 41 | 'Content-Type': 'application/json', 42 | }, 43 | body: JSON.stringify({ 44 | challenge: bytesToBase64Url(challenge), 45 | attestation, 46 | }), 47 | }); 48 | 49 | return await response.json(); 50 | } 51 | 52 | export type Signature = { signature: Uint8Array }; 53 | 54 | export async function signTransaction({ 55 | transaction, 56 | publicKey, 57 | subOrganizationId, 58 | privateKeyId, 59 | }: { 60 | transaction: Transaction; 61 | publicKey: PublicKey; 62 | subOrganizationId: string; 63 | privateKeyId: string; 64 | }): Promise<{ transaction: Transaction; signature: Uint8Array }> { 65 | const { signature } = await signBytes({ 66 | bytes: transaction.serializeMessage(), 67 | subOrganizationId, 68 | privateKeyId, 69 | }); 70 | transaction.addSignature(publicKey, Buffer.from(signature)); 71 | return { transaction, signature }; 72 | } 73 | 74 | export async function signBytes({ 75 | bytes, 76 | subOrganizationId, 77 | privateKeyId, 78 | }: { 79 | bytes: Uint8Array; 80 | subOrganizationId: string; 81 | privateKeyId: string; 82 | }): Promise { 83 | const signedRequest = await TurnkeyApi.signSignRawPayload({ 84 | body: { 85 | type: 'ACTIVITY_TYPE_SIGN_RAW_PAYLOAD', 86 | organizationId: subOrganizationId, 87 | timestampMs: Date.now().toString(), 88 | parameters: { 89 | privateKeyId, 90 | payload: bytesToHex(bytes), 91 | encoding: 'PAYLOAD_ENCODING_HEXADECIMAL', 92 | hashFunction: 'HASH_FUNCTION_NOT_APPLICABLE', 93 | }, 94 | }, 95 | }); 96 | const { activity }: Awaited> = await proxy(signedRequest); 97 | 98 | const result = activity.result.signRawPayloadResult; 99 | if (!result) 100 | throw new TurnkeyActivityError({ 101 | message: 'missing SIGN_RAW_PAYLOAD result', 102 | cause: null, 103 | activityId: activity.id, 104 | activityStatus: activity.status, 105 | activityType: activity.type, 106 | }); 107 | 108 | const signature = hexToBytes(`${result.r}${result.s}`); 109 | return { signature }; 110 | } 111 | 112 | async function proxy(signedRequest: SignedRequest): Promise { 113 | const response = await fetch('/api/turnkey/proxy', { 114 | method: 'POST', 115 | headers: { 116 | Accept: 'application/json', 117 | 'Content-Type': 'application/json', 118 | }, 119 | body: JSON.stringify(signedRequest), 120 | }); 121 | return await response.json(); 122 | } 123 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "bundler", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "incremental": true, 17 | "plugins": [ 18 | { 19 | "name": "next" 20 | } 21 | ], 22 | "paths": { 23 | "@/*": ["./src/*"] 24 | } 25 | }, 26 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 27 | "exclude": ["node_modules"] 28 | } 29 | --------------------------------------------------------------------------------