├── .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 |
--------------------------------------------------------------------------------