├── .eslintrc.cjs
├── .github
├── deployment-branches.png
└── workflows
│ └── github-pages-deploy.yml
├── .gitignore
├── README.md
├── index.html
├── package.json
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── public
└── tonconnect-manifest.json
├── src
├── components
│ ├── App.tsx
│ ├── DisplayData
│ │ ├── DisplayData.css
│ │ └── DisplayData.tsx
│ ├── Link
│ │ ├── Link.css
│ │ └── Link.tsx
│ ├── Page
│ │ ├── Page.css
│ │ └── Page.tsx
│ ├── RGB
│ │ ├── RGB.css
│ │ └── RGB.tsx
│ └── Root.tsx
├── css
│ ├── bem.ts
│ └── classnames.ts
├── helpers
│ └── publicUrl.ts
├── index.css
├── index.tsx
├── init.ts
├── mockEnv.ts
├── navigation
│ └── routes.tsx
├── pages
│ ├── IndexPage
│ │ ├── IndexPage.css
│ │ └── IndexPage.tsx
│ ├── InitDataPage
│ │ ├── InitDataPage.css
│ │ └── InitDataPage.tsx
│ ├── LaunchParamsPage.tsx
│ ├── ThemeParamsPage.tsx
│ └── TonConnectPage
│ │ ├── TonConnectPage.css
│ │ └── TonConnectPage.tsx
└── tonconnect
│ ├── TonConnectButton.tsx
│ ├── TonConnectUIContext.ts
│ ├── TonConnectUIProvider.tsx
│ ├── useTonConnectUI.ts
│ └── useTonWallet.ts
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | env: {
3 | browser: true,
4 | es2021: true
5 | },
6 | extends: [
7 | 'eslint:recommended',
8 | 'plugin:@typescript-eslint/recommended',
9 | 'plugin:solid/typescript'
10 | ],
11 | overrides: [
12 | {
13 | env: {
14 | node: true
15 | },
16 | files: [
17 | '.eslintrc.{js,cjs}'
18 | ],
19 | parserOptions: {
20 | sourceType: 'script'
21 | }
22 | }
23 | ],
24 | parser: '@typescript-eslint/parser',
25 | parserOptions: {
26 | ecmaVersion: 'latest',
27 | sourceType: 'module'
28 | },
29 | plugins: [
30 | '@typescript-eslint'
31 | ],
32 | rules: {}
33 | };
34 |
--------------------------------------------------------------------------------
/.github/deployment-branches.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Telegram-Mini-Apps/solidjs-template/a373a15528d5cbb4c7a99d966c14869e051ca3e2/.github/deployment-branches.png
--------------------------------------------------------------------------------
/.github/workflows/github-pages-deploy.yml:
--------------------------------------------------------------------------------
1 | # Simple workflow for deploying static content to GitHub Pages
2 | name: Deploy static content to Pages
3 |
4 | on:
5 | # Runs on pushes targeting the default branch
6 | push:
7 | branches: ['master']
8 |
9 | # Allows you to run this workflow manually from the Actions tab
10 | workflow_dispatch:
11 |
12 | # Sets the GITHUB_TOKEN permissions to allow deployment to GitHub Pages
13 | permissions:
14 | contents: read
15 | pages: write
16 | id-token: write
17 |
18 | # Allow one concurrent deployment
19 | concurrency:
20 | group: 'pages'
21 | cancel-in-progress: true
22 |
23 | jobs:
24 | # Single deploy job since we're just deploying
25 | deploy:
26 | environment:
27 | name: github-pages
28 | url: ${{ steps.deployment.outputs.page_url }}
29 | runs-on: ubuntu-latest
30 | steps:
31 | - name: Checkout
32 | uses: actions/checkout@v4
33 |
34 | - name: Setup node
35 | uses: actions/setup-node@v3
36 | with:
37 | node-version: 18
38 | registry-url: 'https://registry.npmjs.org'
39 |
40 | - name: Install pnpm
41 | uses: pnpm/action-setup@v2
42 | id: pnpm-install
43 | with:
44 | version: 8
45 | run_install: true
46 |
47 | - name: Build
48 | run: pnpm run build
49 |
50 | - name: Setup Pages
51 | uses: actions/configure-pages@v3
52 |
53 | - name: Upload artifact
54 | uses: actions/upload-pages-artifact@v2
55 | with:
56 | # Upload dist repository
57 | path: './dist'
58 |
59 | - name: Deploy to GitHub Pages
60 | id: deployment
61 | uses: actions/deploy-pages@v2
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | *.pem
3 | node_modules
4 | dist
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Telegram Mini Apps Solid.js Template
2 |
3 | This template demonstrates how developers can implement a single-page
4 | application on the Telegram Mini Apps platform using the following technologies
5 | and libraries:
6 |
7 | - [Solid](https://solidjs.com/)
8 | - [TypeScript](https://www.typescriptlang.org/)
9 | - [TON Connect](https://docs.ton.org/develop/dapps/ton-connect/overview)
10 | - [@tma.js SDK](https://docs.telegram-mini-apps.com/packages/tma-js-sdk)
11 | - [Vite](https://vitejs.dev/)
12 |
13 | > This boilerplate was created using [pnpm](https://pnpm.io/). Therefore, it is
14 | > required to use it for this project as well.
15 |
16 | ## Install Dependencies
17 |
18 | If you have just cloned this template, you should install the project
19 | dependencies using the command:
20 |
21 | ```Bash
22 | pnpm install
23 | ```
24 |
25 | ## Scripts
26 |
27 | This project contains the following scripts:
28 |
29 | - `dev`. Runs the application in development mode.
30 | - `dev:https`. Runs the application in development mode using locally created valid
31 | SSL-certificates.
32 | - `build`. Builds the application for production.
33 | - `lint`. Runs [eslint](https://eslint.org/) to ensure the code quality meets
34 | the required
35 | standards.
36 | - `deploy`. Deploys the application to GitHub Pages.
37 |
38 | To run a script, use the `pnpm run` command:
39 |
40 | ```Bash
41 | pnpm run {script}
42 | # Example: pnpm run build
43 | ```
44 |
45 | ## Create Bot and Mini App
46 |
47 | Before you start, make sure you have already created a Telegram Bot. Here is
48 | a [comprehensive guide](https://docs.telegram-mini-apps.com/platform/creating-new-app)
49 | on how to do it.
50 |
51 | ## Run
52 |
53 | Although Mini Apps are designed to be opened
54 | within [Telegram applications](https://docs.telegram-mini-apps.com/platform/about#supported-applications),
55 | you can still develop and test them outside of Telegram during the development
56 | process.
57 |
58 | To run the application in the development mode, use the `dev` script:
59 |
60 | ```bash
61 | npm run dev:https
62 | ```
63 |
64 | > [!NOTE]
65 | > As long as we use [vite-plugin-mkcert](https://www.npmjs.com/package/vite-plugin-mkcert),
66 | > launching the dev mode for the first time, you may see sudo password request.
67 | > The plugin requires it to properly configure SSL-certificates. To disable the plugin, use
68 | > the `pnpm run dev` command.
69 |
70 | After this, you will see a similar message in your terminal:
71 |
72 | ```bash
73 | VITE v5.2.12 ready in 237 ms
74 |
75 | ➜ Local: https://localhost:5173/solidjs-template
76 | ➜ Network: https://172.18.16.1:5173/solidjs-template
77 | ➜ Network: https://172.19.32.1:5173/solidjs-template
78 | ➜ Network: https://192.168.0.171:5173/solidjs-template
79 | ➜ press h + enter to show help
80 | ```
81 |
82 | Here, you can see the `Local` link, available locally, and `Network` links
83 | accessible to all devices in the same network with the current device.
84 |
85 | To view the application, you need to open the `Local`
86 | link (`https://localhost:5173/solidjs-template` in this example) in your
87 | browser.
88 |
89 | It is important to note that some libraries in this template, such as
90 | `@tma.js/sdk-solid`, are not intended for use outside of Telegram.
91 |
92 | Nevertheless, they appear to function properly. This is because the
93 | `src/mockEnv.ts` file, which is imported in the application's entry point (
94 | `src/index.ts`), employs the `mockTelegramEnv` function to simulate the Telegram
95 | environment. This trick convinces the application that it is running in a
96 | Telegram-based environment. Therefore, be cautious not to use this function in
97 | production mode unless you fully understand its implications.
98 |
99 | > [!WARNING]
100 | > Because we are using self-signed SSL certificates, the Android and iOS
101 | > Telegram applications will not be able to display the application. These
102 | > operating systems enforce stricter security measures, preventing the Mini App
103 | > from loading. To address this issue, refer to
104 | > [this guide](https://docs.telegram-mini-apps.com/platform/getting-app-link#remote).
105 |
106 | ## Deploy
107 |
108 | This boilerplate uses GitHub Pages as the way to host the application
109 | externally. GitHub Pages provides a CDN which will let your users receive the
110 | application rapidly. Alternatively, you could
111 | use such services as [Heroku](https://www.heroku.com/)
112 | or [Vercel](https://vercel.com).
113 |
114 | ### Manual Deployment
115 |
116 | This boilerplate uses the [gh-pages](https://www.npmjs.com/package/gh-pages)
117 | tool, which allows deploying your application right from your PC.
118 |
119 | #### Configuring
120 |
121 | Before running the deployment process, ensure that you have done the following:
122 |
123 | 1. Replaced the `homepage` value in `package.json`. The GitHub Pages deploy tool
124 | uses this value to
125 | determine the related GitHub project.
126 | 2. Replaced the `base` value in `vite.config.ts` and have set it to the name of
127 | your GitHub
128 | repository. Vite will use this value when creating paths to static assets.
129 |
130 | For instance, if your GitHub username is `telegram-mini-apps` and the repository
131 | name is `is-awesome`, the value in the `homepage` field should be the following:
132 |
133 | ```json
134 | {
135 | "homepage": "https://telegram-mini-apps.github.io/is-awesome"
136 | }
137 | ```
138 |
139 | And `vite.config.ts` should have this content:
140 |
141 | ```ts
142 | export default defineConfig({
143 | base: '/is-awesome/',
144 | // ...
145 | });
146 | ```
147 |
148 | You can find more information on configuring the deployment in the `gh-pages`
149 | [docs](https://github.com/tschaub/gh-pages?tab=readme-ov-file#github-pages-project-sites).
150 |
151 | #### Before Deploying
152 |
153 | Before deploying the application, make sure that you've built it and going to
154 | deploy the fresh static files:
155 |
156 | ```bash
157 | npm run build
158 | ```
159 |
160 | Then, run the deployment process, using the `deploy` script:
161 |
162 | ```Bash
163 | npm run deploy
164 | ```
165 |
166 | After the deployment completed successfully, visit the page with data according
167 | to your username and repository name. Here is the page link example using the
168 | data mentioned above:
169 | https://telegram-mini-apps.github.io/is-awesome
170 |
171 | ### GitHub Workflow
172 |
173 | To simplify the deployment process, this template includes a
174 | pre-configured [GitHub workflow](.github/workflows/github-pages-deploy.yml) that
175 | automatically deploys the project when changes are pushed to the `master`
176 | branch.
177 |
178 | To enable this workflow, create a new environment (or edit the existing one) in
179 | the GitHub repository settings and name it `github-pages`. Then, add the
180 | `master` branch to the list of deployment branches.
181 |
182 | You can find the environment settings using this
183 | URL: `https://github.com/{username}/{repository}/settings/environments`.
184 |
185 | 
186 |
187 | In case, you don't want to do it automatically, or you don't use GitHub as the
188 | project codebase, remove the `.github` directory.
189 |
190 | ### GitHub Web Interface
191 |
192 | Alternatively, developers can configure automatic deployment using the GitHub
193 | web interface. To do this, follow the link:
194 | `https://github.com/{username}/{repository}/settings/pages`.
195 |
196 | ## TON Connect
197 |
198 | This boilerplate utilizes
199 | the [TON Connect](https://docs.ton.org/develop/dapps/ton-connect/overview)
200 | project to demonstrate how developers can integrate functionality related to TON
201 | cryptocurrency.
202 |
203 | The TON Connect manifest used in this boilerplate is stored in the `public`
204 | folder, where all publicly accessible static files are located. Remember
205 | to [configure](https://docs.ton.org/develop/dapps/ton-connect/manifest) this
206 | file according to your project's information.
207 |
208 | ## Useful Links
209 |
210 | - [Platform documentation](https://docs.telegram-mini-apps.com/)
211 | - [@tma.js/sdk-solid documentation](https://docs.telegram-mini-apps.com/packages/tma-js-sdk-solid)
212 | - [Telegram developers community chat](https://t.me/devs_cis)
213 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite + Solid + TS
8 |
9 |
10 |
14 |
15 |
16 | You need to enable JavaScript to run this app.
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "solidjs-template",
3 | "private": true,
4 | "version": "0.0.2",
5 | "type": "module",
6 | "main": "index.js",
7 | "homepage": "https://telegram-mini-apps.github.io/solidjs-template",
8 | "scripts": {
9 | "deploy": "gh-pages -d dist",
10 | "dev": "vite",
11 | "dev:https": "cross-env HTTPS=true vite",
12 | "build": "tsc --noEmit && vite build",
13 | "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
14 | "lint:fix": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 --fix",
15 | "preview": "vite preview",
16 | "predeploy": "pnpm run build"
17 | },
18 | "publishConfig": {
19 | "access": "public"
20 | },
21 | "dependencies": {
22 | "@solidjs/router": "^0.13.6",
23 | "@tma.js/sdk-solid": "^3.0.7",
24 | "@tonconnect/ui": "^2.0.5",
25 | "eruda": "^3.0.1",
26 | "solid-js": "^1.9.9"
27 | },
28 | "devDependencies": {
29 | "@eslint/js": "^9.2.0",
30 | "@types/node": "^20.12.5",
31 | "@typescript-eslint/eslint-plugin": "^7.8.0",
32 | "@typescript-eslint/parser": "^7.8.0",
33 | "@vitejs/plugin-basic-ssl": "^1.1.0",
34 | "cross-env": "^7.0.3",
35 | "eslint": "^8.57.0",
36 | "eslint-plugin-solid": "^0.14.0",
37 | "gh-pages": "^6.1.1",
38 | "globals": "^15.2.0",
39 | "solid-devtools": "^0.30.1",
40 | "typescript": "^5.4.4",
41 | "typescript-eslint": "^7.8.0",
42 | "vite": "^5.2.11",
43 | "vite-plugin-mkcert": "^1.17.6",
44 | "vite-plugin-solid": "^2.10.2",
45 | "vite-tsconfig-paths": "^4.3.2"
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | '@solidjs/router':
12 | specifier: ^0.13.6
13 | version: 0.13.6(solid-js@1.9.9)
14 | '@tma.js/sdk-solid':
15 | specifier: ^3.0.7
16 | version: 3.0.7(solid-js@1.9.9)(typescript@5.4.4)
17 | '@tonconnect/ui':
18 | specifier: ^2.0.5
19 | version: 2.0.5
20 | eruda:
21 | specifier: ^3.0.1
22 | version: 3.0.1
23 | solid-js:
24 | specifier: ^1.9.9
25 | version: 1.9.9
26 | devDependencies:
27 | '@eslint/js':
28 | specifier: ^9.2.0
29 | version: 9.2.0
30 | '@types/node':
31 | specifier: ^20.12.5
32 | version: 20.12.5
33 | '@typescript-eslint/eslint-plugin':
34 | specifier: ^7.8.0
35 | version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0)(typescript@5.4.4)
36 | '@typescript-eslint/parser':
37 | specifier: ^7.8.0
38 | version: 7.8.0(eslint@8.57.0)(typescript@5.4.4)
39 | '@vitejs/plugin-basic-ssl':
40 | specifier: ^1.1.0
41 | version: 1.1.0(vite@5.2.11(@types/node@20.12.5))
42 | cross-env:
43 | specifier: ^7.0.3
44 | version: 7.0.3
45 | eslint:
46 | specifier: ^8.57.0
47 | version: 8.57.0
48 | eslint-plugin-solid:
49 | specifier: ^0.14.0
50 | version: 0.14.0(eslint@8.57.0)(typescript@5.4.4)
51 | gh-pages:
52 | specifier: ^6.1.1
53 | version: 6.1.1
54 | globals:
55 | specifier: ^15.2.0
56 | version: 15.2.0
57 | solid-devtools:
58 | specifier: ^0.30.1
59 | version: 0.30.1(solid-js@1.9.9)(vite@5.2.11(@types/node@20.12.5))
60 | typescript:
61 | specifier: ^5.4.4
62 | version: 5.4.4
63 | typescript-eslint:
64 | specifier: ^7.8.0
65 | version: 7.8.0(eslint@8.57.0)(typescript@5.4.4)
66 | vite:
67 | specifier: ^5.2.11
68 | version: 5.2.11(@types/node@20.12.5)
69 | vite-plugin-mkcert:
70 | specifier: ^1.17.6
71 | version: 1.17.6(vite@5.2.11(@types/node@20.12.5))
72 | vite-plugin-solid:
73 | specifier: ^2.10.2
74 | version: 2.10.2(solid-js@1.9.9)(vite@5.2.11(@types/node@20.12.5))
75 | vite-tsconfig-paths:
76 | specifier: ^4.3.2
77 | version: 4.3.2(typescript@5.4.4)(vite@5.2.11(@types/node@20.12.5))
78 |
79 | packages:
80 |
81 | '@aashutoshrathi/word-wrap@1.2.6':
82 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
83 | engines: {node: '>=0.10.0'}
84 |
85 | '@ampproject/remapping@2.3.0':
86 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
87 | engines: {node: '>=6.0.0'}
88 |
89 | '@babel/code-frame@7.24.2':
90 | resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
91 | engines: {node: '>=6.9.0'}
92 |
93 | '@babel/compat-data@7.24.4':
94 | resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==}
95 | engines: {node: '>=6.9.0'}
96 |
97 | '@babel/core@7.24.4':
98 | resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==}
99 | engines: {node: '>=6.9.0'}
100 |
101 | '@babel/generator@7.24.4':
102 | resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==}
103 | engines: {node: '>=6.9.0'}
104 |
105 | '@babel/helper-compilation-targets@7.23.6':
106 | resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
107 | engines: {node: '>=6.9.0'}
108 |
109 | '@babel/helper-environment-visitor@7.22.20':
110 | resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
111 | engines: {node: '>=6.9.0'}
112 |
113 | '@babel/helper-function-name@7.23.0':
114 | resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
115 | engines: {node: '>=6.9.0'}
116 |
117 | '@babel/helper-hoist-variables@7.22.5':
118 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
119 | engines: {node: '>=6.9.0'}
120 |
121 | '@babel/helper-module-imports@7.18.6':
122 | resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
123 | engines: {node: '>=6.9.0'}
124 |
125 | '@babel/helper-module-imports@7.24.3':
126 | resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==}
127 | engines: {node: '>=6.9.0'}
128 |
129 | '@babel/helper-module-transforms@7.23.3':
130 | resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
131 | engines: {node: '>=6.9.0'}
132 | peerDependencies:
133 | '@babel/core': ^7.0.0
134 |
135 | '@babel/helper-plugin-utils@7.24.0':
136 | resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==}
137 | engines: {node: '>=6.9.0'}
138 |
139 | '@babel/helper-simple-access@7.22.5':
140 | resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
141 | engines: {node: '>=6.9.0'}
142 |
143 | '@babel/helper-split-export-declaration@7.22.6':
144 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
145 | engines: {node: '>=6.9.0'}
146 |
147 | '@babel/helper-string-parser@7.24.1':
148 | resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
149 | engines: {node: '>=6.9.0'}
150 |
151 | '@babel/helper-validator-identifier@7.22.20':
152 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
153 | engines: {node: '>=6.9.0'}
154 |
155 | '@babel/helper-validator-option@7.23.5':
156 | resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
157 | engines: {node: '>=6.9.0'}
158 |
159 | '@babel/helpers@7.24.4':
160 | resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==}
161 | engines: {node: '>=6.9.0'}
162 |
163 | '@babel/highlight@7.24.2':
164 | resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==}
165 | engines: {node: '>=6.9.0'}
166 |
167 | '@babel/parser@7.24.4':
168 | resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==}
169 | engines: {node: '>=6.0.0'}
170 | hasBin: true
171 |
172 | '@babel/plugin-syntax-jsx@7.24.1':
173 | resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==}
174 | engines: {node: '>=6.9.0'}
175 | peerDependencies:
176 | '@babel/core': ^7.0.0-0
177 |
178 | '@babel/plugin-syntax-typescript@7.24.1':
179 | resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==}
180 | engines: {node: '>=6.9.0'}
181 | peerDependencies:
182 | '@babel/core': ^7.0.0-0
183 |
184 | '@babel/template@7.24.0':
185 | resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==}
186 | engines: {node: '>=6.9.0'}
187 |
188 | '@babel/traverse@7.24.1':
189 | resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==}
190 | engines: {node: '>=6.9.0'}
191 |
192 | '@babel/types@7.24.0':
193 | resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==}
194 | engines: {node: '>=6.9.0'}
195 |
196 | '@esbuild/aix-ppc64@0.20.2':
197 | resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
198 | engines: {node: '>=12'}
199 | cpu: [ppc64]
200 | os: [aix]
201 |
202 | '@esbuild/android-arm64@0.20.2':
203 | resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==}
204 | engines: {node: '>=12'}
205 | cpu: [arm64]
206 | os: [android]
207 |
208 | '@esbuild/android-arm@0.20.2':
209 | resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==}
210 | engines: {node: '>=12'}
211 | cpu: [arm]
212 | os: [android]
213 |
214 | '@esbuild/android-x64@0.20.2':
215 | resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==}
216 | engines: {node: '>=12'}
217 | cpu: [x64]
218 | os: [android]
219 |
220 | '@esbuild/darwin-arm64@0.20.2':
221 | resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==}
222 | engines: {node: '>=12'}
223 | cpu: [arm64]
224 | os: [darwin]
225 |
226 | '@esbuild/darwin-x64@0.20.2':
227 | resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==}
228 | engines: {node: '>=12'}
229 | cpu: [x64]
230 | os: [darwin]
231 |
232 | '@esbuild/freebsd-arm64@0.20.2':
233 | resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==}
234 | engines: {node: '>=12'}
235 | cpu: [arm64]
236 | os: [freebsd]
237 |
238 | '@esbuild/freebsd-x64@0.20.2':
239 | resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==}
240 | engines: {node: '>=12'}
241 | cpu: [x64]
242 | os: [freebsd]
243 |
244 | '@esbuild/linux-arm64@0.20.2':
245 | resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==}
246 | engines: {node: '>=12'}
247 | cpu: [arm64]
248 | os: [linux]
249 |
250 | '@esbuild/linux-arm@0.20.2':
251 | resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==}
252 | engines: {node: '>=12'}
253 | cpu: [arm]
254 | os: [linux]
255 |
256 | '@esbuild/linux-ia32@0.20.2':
257 | resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==}
258 | engines: {node: '>=12'}
259 | cpu: [ia32]
260 | os: [linux]
261 |
262 | '@esbuild/linux-loong64@0.20.2':
263 | resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==}
264 | engines: {node: '>=12'}
265 | cpu: [loong64]
266 | os: [linux]
267 |
268 | '@esbuild/linux-mips64el@0.20.2':
269 | resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==}
270 | engines: {node: '>=12'}
271 | cpu: [mips64el]
272 | os: [linux]
273 |
274 | '@esbuild/linux-ppc64@0.20.2':
275 | resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==}
276 | engines: {node: '>=12'}
277 | cpu: [ppc64]
278 | os: [linux]
279 |
280 | '@esbuild/linux-riscv64@0.20.2':
281 | resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==}
282 | engines: {node: '>=12'}
283 | cpu: [riscv64]
284 | os: [linux]
285 |
286 | '@esbuild/linux-s390x@0.20.2':
287 | resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==}
288 | engines: {node: '>=12'}
289 | cpu: [s390x]
290 | os: [linux]
291 |
292 | '@esbuild/linux-x64@0.20.2':
293 | resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==}
294 | engines: {node: '>=12'}
295 | cpu: [x64]
296 | os: [linux]
297 |
298 | '@esbuild/netbsd-x64@0.20.2':
299 | resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==}
300 | engines: {node: '>=12'}
301 | cpu: [x64]
302 | os: [netbsd]
303 |
304 | '@esbuild/openbsd-x64@0.20.2':
305 | resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==}
306 | engines: {node: '>=12'}
307 | cpu: [x64]
308 | os: [openbsd]
309 |
310 | '@esbuild/sunos-x64@0.20.2':
311 | resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==}
312 | engines: {node: '>=12'}
313 | cpu: [x64]
314 | os: [sunos]
315 |
316 | '@esbuild/win32-arm64@0.20.2':
317 | resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==}
318 | engines: {node: '>=12'}
319 | cpu: [arm64]
320 | os: [win32]
321 |
322 | '@esbuild/win32-ia32@0.20.2':
323 | resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==}
324 | engines: {node: '>=12'}
325 | cpu: [ia32]
326 | os: [win32]
327 |
328 | '@esbuild/win32-x64@0.20.2':
329 | resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==}
330 | engines: {node: '>=12'}
331 | cpu: [x64]
332 | os: [win32]
333 |
334 | '@eslint-community/eslint-utils@4.4.0':
335 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
336 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
337 | peerDependencies:
338 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
339 |
340 | '@eslint-community/regexpp@4.10.0':
341 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
342 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
343 |
344 | '@eslint/eslintrc@2.1.4':
345 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
346 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
347 |
348 | '@eslint/js@8.57.0':
349 | resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
350 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
351 |
352 | '@eslint/js@9.2.0':
353 | resolution: {integrity: sha512-ESiIudvhoYni+MdsI8oD7skpprZ89qKocwRM2KEvhhBJ9nl5MRh7BXU5GTod7Mdygq+AUl+QzId6iWJKR/wABA==}
354 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
355 |
356 | '@humanwhocodes/config-array@0.11.14':
357 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
358 | engines: {node: '>=10.10.0'}
359 |
360 | '@humanwhocodes/module-importer@1.0.1':
361 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
362 | engines: {node: '>=12.22'}
363 |
364 | '@humanwhocodes/object-schema@2.0.3':
365 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
366 |
367 | '@jridgewell/gen-mapping@0.3.5':
368 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
369 | engines: {node: '>=6.0.0'}
370 |
371 | '@jridgewell/resolve-uri@3.1.2':
372 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
373 | engines: {node: '>=6.0.0'}
374 |
375 | '@jridgewell/set-array@1.2.1':
376 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
377 | engines: {node: '>=6.0.0'}
378 |
379 | '@jridgewell/sourcemap-codec@1.4.15':
380 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
381 |
382 | '@jridgewell/trace-mapping@0.3.25':
383 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
384 |
385 | '@nodelib/fs.scandir@2.1.5':
386 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
387 | engines: {node: '>= 8'}
388 |
389 | '@nodelib/fs.stat@2.0.5':
390 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
391 | engines: {node: '>= 8'}
392 |
393 | '@nodelib/fs.walk@1.2.8':
394 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
395 | engines: {node: '>= 8'}
396 |
397 | '@nothing-but/utils@0.12.1':
398 | resolution: {integrity: sha512-1qZU1Q5El0IjE7JT/ucvJNzdr2hL3W8Rm27xNf1p6gb3Nw8pGnZmxp6/GEW9h+I1k1cICxXNq25hBwknTQ7yhg==}
399 |
400 | '@octokit/auth-token@4.0.0':
401 | resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==}
402 | engines: {node: '>= 18'}
403 |
404 | '@octokit/core@5.2.0':
405 | resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==}
406 | engines: {node: '>= 18'}
407 |
408 | '@octokit/endpoint@9.0.5':
409 | resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==}
410 | engines: {node: '>= 18'}
411 |
412 | '@octokit/graphql@7.1.0':
413 | resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==}
414 | engines: {node: '>= 18'}
415 |
416 | '@octokit/openapi-types@22.2.0':
417 | resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==}
418 |
419 | '@octokit/plugin-paginate-rest@11.3.1':
420 | resolution: {integrity: sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==}
421 | engines: {node: '>= 18'}
422 | peerDependencies:
423 | '@octokit/core': '5'
424 |
425 | '@octokit/plugin-request-log@4.0.1':
426 | resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==}
427 | engines: {node: '>= 18'}
428 | peerDependencies:
429 | '@octokit/core': '5'
430 |
431 | '@octokit/plugin-rest-endpoint-methods@13.2.2':
432 | resolution: {integrity: sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==}
433 | engines: {node: '>= 18'}
434 | peerDependencies:
435 | '@octokit/core': ^5
436 |
437 | '@octokit/request-error@5.1.0':
438 | resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==}
439 | engines: {node: '>= 18'}
440 |
441 | '@octokit/request@8.4.0':
442 | resolution: {integrity: sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==}
443 | engines: {node: '>= 18'}
444 |
445 | '@octokit/rest@20.1.1':
446 | resolution: {integrity: sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==}
447 | engines: {node: '>= 18'}
448 |
449 | '@octokit/types@13.6.1':
450 | resolution: {integrity: sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==}
451 |
452 | '@rollup/rollup-android-arm-eabi@4.14.1':
453 | resolution: {integrity: sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==}
454 | cpu: [arm]
455 | os: [android]
456 |
457 | '@rollup/rollup-android-arm64@4.14.1':
458 | resolution: {integrity: sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==}
459 | cpu: [arm64]
460 | os: [android]
461 |
462 | '@rollup/rollup-darwin-arm64@4.14.1':
463 | resolution: {integrity: sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==}
464 | cpu: [arm64]
465 | os: [darwin]
466 |
467 | '@rollup/rollup-darwin-x64@4.14.1':
468 | resolution: {integrity: sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==}
469 | cpu: [x64]
470 | os: [darwin]
471 |
472 | '@rollup/rollup-linux-arm-gnueabihf@4.14.1':
473 | resolution: {integrity: sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==}
474 | cpu: [arm]
475 | os: [linux]
476 |
477 | '@rollup/rollup-linux-arm64-gnu@4.14.1':
478 | resolution: {integrity: sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==}
479 | cpu: [arm64]
480 | os: [linux]
481 |
482 | '@rollup/rollup-linux-arm64-musl@4.14.1':
483 | resolution: {integrity: sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==}
484 | cpu: [arm64]
485 | os: [linux]
486 |
487 | '@rollup/rollup-linux-powerpc64le-gnu@4.14.1':
488 | resolution: {integrity: sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==}
489 | cpu: [ppc64le]
490 | os: [linux]
491 |
492 | '@rollup/rollup-linux-riscv64-gnu@4.14.1':
493 | resolution: {integrity: sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==}
494 | cpu: [riscv64]
495 | os: [linux]
496 |
497 | '@rollup/rollup-linux-s390x-gnu@4.14.1':
498 | resolution: {integrity: sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==}
499 | cpu: [s390x]
500 | os: [linux]
501 |
502 | '@rollup/rollup-linux-x64-gnu@4.14.1':
503 | resolution: {integrity: sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==}
504 | cpu: [x64]
505 | os: [linux]
506 |
507 | '@rollup/rollup-linux-x64-musl@4.14.1':
508 | resolution: {integrity: sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==}
509 | cpu: [x64]
510 | os: [linux]
511 |
512 | '@rollup/rollup-win32-arm64-msvc@4.14.1':
513 | resolution: {integrity: sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==}
514 | cpu: [arm64]
515 | os: [win32]
516 |
517 | '@rollup/rollup-win32-ia32-msvc@4.14.1':
518 | resolution: {integrity: sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==}
519 | cpu: [ia32]
520 | os: [win32]
521 |
522 | '@rollup/rollup-win32-x64-msvc@4.14.1':
523 | resolution: {integrity: sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==}
524 | cpu: [x64]
525 | os: [win32]
526 |
527 | '@solid-devtools/debugger@0.23.4':
528 | resolution: {integrity: sha512-EfTB1Eo313wztQYGJ4Ec/wE70Ay2d603VCXfT3RlyqO5QfLrQGRHX5NXC07hJpQTJJJ3tbNgzO7+ZKo76MM5uA==}
529 | peerDependencies:
530 | solid-js: ^1.8.0
531 |
532 | '@solid-devtools/shared@0.13.2':
533 | resolution: {integrity: sha512-Y4uaC4EfTVwBR537MZwfaY/eiWAh+hW4mbtnwNuUw/LFmitHSkQhNQTUlLQv/S0chtwrYWQBxvXos1dC7e8R9g==}
534 | peerDependencies:
535 | solid-js: ^1.8.0
536 |
537 | '@solid-primitives/bounds@0.0.118':
538 | resolution: {integrity: sha512-Qj42w8LlnhJ3r/t+t0c0vrdwIvvQMPgjEFGmLiwREaA85ojLbgL9lSBq2tKvljeLCvRVkgj10KEUf+vc99VCIg==}
539 | peerDependencies:
540 | solid-js: ^1.6.12
541 |
542 | '@solid-primitives/cursor@0.0.112':
543 | resolution: {integrity: sha512-TAtU7qD7ipSLSXHnq8FhhosAPVX+dnOCb/ITcGcLlj8e/C9YKcxDhgBHJ3R/d1xDRb5/vO/szJtEz6fnQD311Q==}
544 | peerDependencies:
545 | solid-js: ^1.6.12
546 |
547 | '@solid-primitives/event-bus@1.0.11':
548 | resolution: {integrity: sha512-bSwVA4aI2aNHomSbEroUnisMSyDDXJbrw4U8kFEvrcYdlLrJX5i6QeCFx+vj/zdQQw62KAllrEIyWP8KMpPVnQ==}
549 | peerDependencies:
550 | solid-js: ^1.6.12
551 |
552 | '@solid-primitives/event-listener@2.3.3':
553 | resolution: {integrity: sha512-DAJbl+F0wrFW2xmcV8dKMBhk9QLVLuBSW+TR4JmIfTaObxd13PuL7nqaXnaYKDWOYa6otB00qcCUIGbuIhSUgQ==}
554 | peerDependencies:
555 | solid-js: ^1.6.12
556 |
557 | '@solid-primitives/keyboard@1.2.8':
558 | resolution: {integrity: sha512-pJtcbkjozS6L1xvTht9rPpyPpX55nAkfBzbFWdf3y0Suwh6qClTibvvObzKOf7uzQ+8aZRDH4LsoGmbTKXtJjQ==}
559 | peerDependencies:
560 | solid-js: ^1.6.12
561 |
562 | '@solid-primitives/media@2.2.8':
563 | resolution: {integrity: sha512-jcwTxjEn07W5KEeQIc0nR+07xRjvsWTf115PIwScCWgo6aPkfW3x74aq7lH5F3mLfb/9SeTn0ixz8fBVel3cHg==}
564 | peerDependencies:
565 | solid-js: ^1.6.12
566 |
567 | '@solid-primitives/platform@0.1.2':
568 | resolution: {integrity: sha512-sSxcZfuUrtxcwV0vdjmGnZQcflACzMfLriVeIIWXKp8hzaS3Or3tO6EFQkTd3L8T5dTq+kTtLvPscXIpL0Wzdg==}
569 | peerDependencies:
570 | solid-js: ^1.6.12
571 |
572 | '@solid-primitives/refs@1.0.8':
573 | resolution: {integrity: sha512-+jIsWG8/nYvhaCoG2Vg6CJOLgTmPKFbaCrNQKWfChalgUf9WrVxWw0CdJb3yX15n5lUcQ0jBo6qYtuVVmBLpBw==}
574 | peerDependencies:
575 | solid-js: ^1.6.12
576 |
577 | '@solid-primitives/resize-observer@2.0.25':
578 | resolution: {integrity: sha512-jVDXkt2MiriYRaz4DYs62185d+6jQ+1DCsR+v7f6XMsIJJuf963qdBRFjtZtKXBaxdPNMyuPeDgf5XQe3EoDJg==}
579 | peerDependencies:
580 | solid-js: ^1.6.12
581 |
582 | '@solid-primitives/rootless@1.4.5':
583 | resolution: {integrity: sha512-GFJE9GC3ojx0aUKqAUZmQPyU8fOVMtnVNrkdk2yS4kd17WqVSpXpoTmo9CnOwA+PG7FTzdIkogvfLQSLs4lrww==}
584 | peerDependencies:
585 | solid-js: ^1.6.12
586 |
587 | '@solid-primitives/scheduled@1.4.3':
588 | resolution: {integrity: sha512-HfWN5w7b7FEc6VPLBKnnE302h90jsLMuR28Fcf7neRGGf8jBj6wm6/UFQ00VlKexHFMR6KQ2u4VBh5a1ZcqM8g==}
589 | peerDependencies:
590 | solid-js: ^1.6.12
591 |
592 | '@solid-primitives/static-store@0.0.5':
593 | resolution: {integrity: sha512-ssQ+s/wrlFAEE4Zw8GV499yBfvWx7SMm+ZVc11wvao4T5xg9VfXCL9Oa+x4h+vPMvSV/Knv5LrsLiUa+wlJUXQ==}
594 | peerDependencies:
595 | solid-js: ^1.6.12
596 |
597 | '@solid-primitives/static-store@0.0.8':
598 | resolution: {integrity: sha512-ZecE4BqY0oBk0YG00nzaAWO5Mjcny8Fc06CdbXadH9T9lzq/9GefqcSe/5AtdXqjvY/DtJ5C6CkcjPZO0o/eqg==}
599 | peerDependencies:
600 | solid-js: ^1.6.12
601 |
602 | '@solid-primitives/styles@0.0.111':
603 | resolution: {integrity: sha512-1mBxOGAPXmfD5oYCvqjKBDN7SuNjz2qz7RdH7KtsuNLQh6lpuSKadtHnLvru0Y8Vz1InqTJisBIy/6P5kyDmPw==}
604 | peerDependencies:
605 | solid-js: ^1.6.12
606 |
607 | '@solid-primitives/utils@6.2.3':
608 | resolution: {integrity: sha512-CqAwKb2T5Vi72+rhebSsqNZ9o67buYRdEJrIFzRXz3U59QqezuuxPsyzTSVCacwS5Pf109VRsgCJQoxKRoECZQ==}
609 | peerDependencies:
610 | solid-js: ^1.6.12
611 |
612 | '@solidjs/router@0.13.6':
613 | resolution: {integrity: sha512-CdpFsBYoiJ/FQ4wZIamj3KEFRkmrYu5sVXM6PouNkmSENta1YJamsm9wa/VjaPmkw2RsnDnO0UvZ705v6EgOXQ==}
614 | peerDependencies:
615 | solid-js: ^1.8.6
616 |
617 | '@tma.js/bridge@2.1.3':
618 | resolution: {integrity: sha512-mJPdGP3AgQ10ovW2A/yKdLPqhMt1Mx/uHvXRz1qyyy9L6kQlCojx68ib1Km7jumKdYvljy3470Yhk18V65pcdw==}
619 |
620 | '@tma.js/sdk-solid@3.0.7':
621 | resolution: {integrity: sha512-QYTYNKonFe+OBoCOW3S/7wTDRsyegFBlTCyrFQnqgysYU9U6nU06YGQoKUrFfuGNM04qCByW8cnBiVhXloR3qQ==}
622 | peerDependencies:
623 | solid-js: ^1.0.0
624 |
625 | '@tma.js/sdk@3.0.7':
626 | resolution: {integrity: sha512-5CEHqs3HQTEjls+XLkZ5IS+j9dwVfCnQFoaL3jRwQqISqHDrLYds1h4TLvZ+vROTaAxVyJZtbLA+QorX+TldDw==}
627 |
628 | '@tma.js/signals@1.0.1':
629 | resolution: {integrity: sha512-i2HUuwGqL4BmM5KAklAUhMhlEgUOF+F4nMHHS/zxrmD0upHE/0CiXCEdQxVeeOGN6e2RrKlonA40sDtR6OUDCw==}
630 |
631 | '@tma.js/toolkit@1.0.2':
632 | resolution: {integrity: sha512-HGKYFZuxfbrlUguyoV+q+0ghNWqEYnnI66oI5DH2zSrafA0QyTsMOYXZ95aU+fzKbulf5S+YOVJTnFZQZnqLMQ==}
633 |
634 | '@tma.js/transformers@1.1.1':
635 | resolution: {integrity: sha512-FTzsUXojndg/zk5Ai/lxncc11gxGiI2szdK4tsN36elhig8lPj0gg9uYDlIfyWNM7TCyq2ZWE3jliCz3ofpiiA==}
636 |
637 | '@tma.js/types@1.0.2':
638 | resolution: {integrity: sha512-qs4mi+U1xZmMQBdMhWAo1X4YqUJ/ae0y28s+GNCpQq58bsJo0h8rvyVOB1RwPvXogIY9+yribbZe6z3AIJmsAQ==}
639 |
640 | '@tonconnect/isomorphic-eventsource@0.0.2':
641 | resolution: {integrity: sha512-B4UoIjPi0QkvIzZH5fV3BQLWrqSYABdrzZQSI9sJA9aA+iC0ohOzFwVVGXanlxeDAy1bcvPbb29f6sVUk0UnnQ==}
642 |
643 | '@tonconnect/isomorphic-fetch@0.0.3':
644 | resolution: {integrity: sha512-jIg5nTrDwnite4fXao3dD83eCpTvInTjZon/rZZrIftIegh4XxyVb5G2mpMqXrVGk1e8SVXm3Kj5OtfMplQs0w==}
645 |
646 | '@tonconnect/protocol@2.2.6':
647 | resolution: {integrity: sha512-kyoDz5EqgsycYP+A+JbVsAUYHNT059BCrK+m0pqxykMODwpziuSAXfwAZmHcg8v7NB9VKYbdFY55xKeXOuEd0w==}
648 |
649 | '@tonconnect/sdk@3.0.3':
650 | resolution: {integrity: sha512-ElVre1DPixzQLgLtQIa8Wu5xS8nozlgblZTJhFFPrk82M2rZ+sawyF+LAVwt9wZRN7+htWnJrNz0+bBr4b3geA==}
651 |
652 | '@tonconnect/ui@2.0.5':
653 | resolution: {integrity: sha512-AuVtBqX450lJyJtrJDhBPwPzkhm10QCsnS1/p2CLkzzcMH5b5o50oVp5yuRWw/1eIwJZSLjVplkgA/JjMAlmsA==}
654 |
655 | '@types/babel__core@7.20.5':
656 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
657 |
658 | '@types/babel__generator@7.6.8':
659 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
660 |
661 | '@types/babel__template@7.4.4':
662 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
663 |
664 | '@types/babel__traverse@7.20.5':
665 | resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==}
666 |
667 | '@types/estree@1.0.5':
668 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
669 |
670 | '@types/json-schema@7.0.15':
671 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
672 |
673 | '@types/node@20.12.5':
674 | resolution: {integrity: sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==}
675 |
676 | '@types/semver@7.5.8':
677 | resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
678 |
679 | '@typescript-eslint/eslint-plugin@7.8.0':
680 | resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==}
681 | engines: {node: ^18.18.0 || >=20.0.0}
682 | peerDependencies:
683 | '@typescript-eslint/parser': ^7.0.0
684 | eslint: ^8.56.0
685 | typescript: '*'
686 | peerDependenciesMeta:
687 | typescript:
688 | optional: true
689 |
690 | '@typescript-eslint/parser@7.8.0':
691 | resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==}
692 | engines: {node: ^18.18.0 || >=20.0.0}
693 | peerDependencies:
694 | eslint: ^8.56.0
695 | typescript: '*'
696 | peerDependenciesMeta:
697 | typescript:
698 | optional: true
699 |
700 | '@typescript-eslint/scope-manager@7.6.0':
701 | resolution: {integrity: sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==}
702 | engines: {node: ^18.18.0 || >=20.0.0}
703 |
704 | '@typescript-eslint/scope-manager@7.8.0':
705 | resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==}
706 | engines: {node: ^18.18.0 || >=20.0.0}
707 |
708 | '@typescript-eslint/type-utils@7.8.0':
709 | resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==}
710 | engines: {node: ^18.18.0 || >=20.0.0}
711 | peerDependencies:
712 | eslint: ^8.56.0
713 | typescript: '*'
714 | peerDependenciesMeta:
715 | typescript:
716 | optional: true
717 |
718 | '@typescript-eslint/types@7.6.0':
719 | resolution: {integrity: sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==}
720 | engines: {node: ^18.18.0 || >=20.0.0}
721 |
722 | '@typescript-eslint/types@7.8.0':
723 | resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==}
724 | engines: {node: ^18.18.0 || >=20.0.0}
725 |
726 | '@typescript-eslint/typescript-estree@7.6.0':
727 | resolution: {integrity: sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==}
728 | engines: {node: ^18.18.0 || >=20.0.0}
729 | peerDependencies:
730 | typescript: '*'
731 | peerDependenciesMeta:
732 | typescript:
733 | optional: true
734 |
735 | '@typescript-eslint/typescript-estree@7.8.0':
736 | resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==}
737 | engines: {node: ^18.18.0 || >=20.0.0}
738 | peerDependencies:
739 | typescript: '*'
740 | peerDependenciesMeta:
741 | typescript:
742 | optional: true
743 |
744 | '@typescript-eslint/utils@7.6.0':
745 | resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==}
746 | engines: {node: ^18.18.0 || >=20.0.0}
747 | peerDependencies:
748 | eslint: ^8.56.0
749 |
750 | '@typescript-eslint/utils@7.8.0':
751 | resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==}
752 | engines: {node: ^18.18.0 || >=20.0.0}
753 | peerDependencies:
754 | eslint: ^8.56.0
755 |
756 | '@typescript-eslint/visitor-keys@7.6.0':
757 | resolution: {integrity: sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==}
758 | engines: {node: ^18.18.0 || >=20.0.0}
759 |
760 | '@typescript-eslint/visitor-keys@7.8.0':
761 | resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==}
762 | engines: {node: ^18.18.0 || >=20.0.0}
763 |
764 | '@ungap/structured-clone@1.2.0':
765 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
766 |
767 | '@vitejs/plugin-basic-ssl@1.1.0':
768 | resolution: {integrity: sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==}
769 | engines: {node: '>=14.6.0'}
770 | peerDependencies:
771 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0
772 |
773 | acorn-jsx@5.3.2:
774 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
775 | peerDependencies:
776 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
777 |
778 | acorn@8.11.3:
779 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
780 | engines: {node: '>=0.4.0'}
781 | hasBin: true
782 |
783 | ajv@6.12.6:
784 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
785 |
786 | ansi-regex@5.0.1:
787 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
788 | engines: {node: '>=8'}
789 |
790 | ansi-styles@3.2.1:
791 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
792 | engines: {node: '>=4'}
793 |
794 | ansi-styles@4.3.0:
795 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
796 | engines: {node: '>=8'}
797 |
798 | argparse@2.0.1:
799 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
800 |
801 | array-union@1.0.2:
802 | resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==}
803 | engines: {node: '>=0.10.0'}
804 |
805 | array-union@2.1.0:
806 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
807 | engines: {node: '>=8'}
808 |
809 | array-uniq@1.0.3:
810 | resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==}
811 | engines: {node: '>=0.10.0'}
812 |
813 | async@3.2.5:
814 | resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==}
815 |
816 | asynckit@0.4.0:
817 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
818 |
819 | axios@1.7.7:
820 | resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==}
821 |
822 | babel-plugin-jsx-dom-expressions@0.37.19:
823 | resolution: {integrity: sha512-nef2eLpWBgFggwrYwN6O3dNKn3RnlX6n4DIamNEAeHwp03kVQUaKUiLaEPnHPJHwxie1KwPelyIY9QikU03vUA==}
824 | peerDependencies:
825 | '@babel/core': ^7.20.12
826 |
827 | babel-preset-solid@1.8.16:
828 | resolution: {integrity: sha512-b4HFg/xaKM+H3Tu5iUlZ/43TJOZnhi85xrm3JrXDQ0s4cmtmU37bXXYzb2m55G4QKiFjxLAjvb7sUorPrAMs5w==}
829 | peerDependencies:
830 | '@babel/core': ^7.0.0
831 |
832 | balanced-match@1.0.2:
833 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
834 |
835 | before-after-hook@2.2.3:
836 | resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
837 |
838 | better-promises@1.0.0:
839 | resolution: {integrity: sha512-gPgL2nRgeSbMIe3QpsYdKR3K0S9OZuphVuos60Eqsw8d/6GivOkyJ5D/zmnolJ6hzh7upnnflBUWUlQh4qpU2A==}
840 |
841 | brace-expansion@1.1.11:
842 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
843 |
844 | brace-expansion@2.0.1:
845 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
846 |
847 | braces@3.0.2:
848 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
849 | engines: {node: '>=8'}
850 |
851 | browserslist@4.23.0:
852 | resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
853 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
854 | hasBin: true
855 |
856 | callsites@3.1.0:
857 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
858 | engines: {node: '>=6'}
859 |
860 | caniuse-lite@1.0.30001607:
861 | resolution: {integrity: sha512-WcvhVRjXLKFB/kmOFVwELtMxyhq3iM/MvmXcyCe2PNf166c39mptscOc/45TTS96n2gpNV2z7+NakArTWZCQ3w==}
862 |
863 | chalk@2.4.2:
864 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
865 | engines: {node: '>=4'}
866 |
867 | chalk@4.1.2:
868 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
869 | engines: {node: '>=10'}
870 |
871 | classnames@2.5.1:
872 | resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
873 |
874 | color-convert@1.9.3:
875 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
876 |
877 | color-convert@2.0.1:
878 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
879 | engines: {node: '>=7.0.0'}
880 |
881 | color-name@1.1.3:
882 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
883 |
884 | color-name@1.1.4:
885 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
886 |
887 | combined-stream@1.0.8:
888 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
889 | engines: {node: '>= 0.8'}
890 |
891 | commander@11.1.0:
892 | resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
893 | engines: {node: '>=16'}
894 |
895 | commondir@1.0.1:
896 | resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
897 |
898 | concat-map@0.0.1:
899 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
900 |
901 | convert-source-map@2.0.0:
902 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
903 |
904 | cross-env@7.0.3:
905 | resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
906 | engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
907 | hasBin: true
908 |
909 | cross-spawn@7.0.3:
910 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
911 | engines: {node: '>= 8'}
912 |
913 | csstype@3.1.3:
914 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
915 |
916 | debug@4.3.4:
917 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
918 | engines: {node: '>=6.0'}
919 | peerDependencies:
920 | supports-color: '*'
921 | peerDependenciesMeta:
922 | supports-color:
923 | optional: true
924 |
925 | debug@4.3.7:
926 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
927 | engines: {node: '>=6.0'}
928 | peerDependencies:
929 | supports-color: '*'
930 | peerDependenciesMeta:
931 | supports-color:
932 | optional: true
933 |
934 | deep-is@0.1.4:
935 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
936 |
937 | deepmerge@4.3.1:
938 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
939 | engines: {node: '>=0.10.0'}
940 |
941 | delayed-stream@1.0.0:
942 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
943 | engines: {node: '>=0.4.0'}
944 |
945 | deprecation@2.3.1:
946 | resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==}
947 |
948 | dir-glob@3.0.1:
949 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
950 | engines: {node: '>=8'}
951 |
952 | doctrine@3.0.0:
953 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
954 | engines: {node: '>=6.0.0'}
955 |
956 | electron-to-chromium@1.4.730:
957 | resolution: {integrity: sha512-oJRPo82XEqtQAobHpJIR3zW5YO3sSRRkPz2an4yxi1UvqhsGm54vR/wzTFV74a3soDOJ8CKW7ajOOX5ESzddwg==}
958 |
959 | email-addresses@5.0.0:
960 | resolution: {integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==}
961 |
962 | error-kid@1.0.2:
963 | resolution: {integrity: sha512-Xvq0ZrY/azCbREWKt9E/3mXDF0MkuEVVvHnOKutUhtq2O8pyneEixQ4nSFkA19Xfn+/OVSg//iVG0dxIDj7DIA==}
964 |
965 | eruda@3.0.1:
966 | resolution: {integrity: sha512-6q1Xdwga4JTr1mKSW4mzuWSSbmXgqpm/8Wa1QGFGfCWRjC0bCQjbS4u06M1te1moucIS3hBLlbSTPWYH2W0qbQ==}
967 |
968 | esbuild@0.20.2:
969 | resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==}
970 | engines: {node: '>=12'}
971 | hasBin: true
972 |
973 | escalade@3.1.2:
974 | resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
975 | engines: {node: '>=6'}
976 |
977 | escape-string-regexp@1.0.5:
978 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
979 | engines: {node: '>=0.8.0'}
980 |
981 | escape-string-regexp@4.0.0:
982 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
983 | engines: {node: '>=10'}
984 |
985 | eslint-plugin-solid@0.14.0:
986 | resolution: {integrity: sha512-EY0GJLOZdLynAyBM39WBLJH2bUftGI0KekyzpfxQEhCTuOhXkIRf648P97mQjME3TDaQQbY+ObVXeE2mjfs4FQ==}
987 | engines: {node: '>=12.0.0'}
988 | peerDependencies:
989 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
990 |
991 | eslint-scope@7.2.2:
992 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
993 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
994 |
995 | eslint-visitor-keys@3.4.3:
996 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
997 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
998 |
999 | eslint@8.57.0:
1000 | resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
1001 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1002 | hasBin: true
1003 |
1004 | espree@9.6.1:
1005 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1006 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1007 |
1008 | esquery@1.5.0:
1009 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
1010 | engines: {node: '>=0.10'}
1011 |
1012 | esrecurse@4.3.0:
1013 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1014 | engines: {node: '>=4.0'}
1015 |
1016 | estraverse@5.3.0:
1017 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1018 | engines: {node: '>=4.0'}
1019 |
1020 | esutils@2.0.3:
1021 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1022 | engines: {node: '>=0.10.0'}
1023 |
1024 | eventsource@2.0.2:
1025 | resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==}
1026 | engines: {node: '>=12.0.0'}
1027 |
1028 | fast-deep-equal@3.1.3:
1029 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1030 |
1031 | fast-glob@3.3.2:
1032 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
1033 | engines: {node: '>=8.6.0'}
1034 |
1035 | fast-json-stable-stringify@2.1.0:
1036 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1037 |
1038 | fast-levenshtein@2.0.6:
1039 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1040 |
1041 | fastq@1.17.1:
1042 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
1043 |
1044 | file-entry-cache@6.0.1:
1045 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1046 | engines: {node: ^10.12.0 || >=12.0.0}
1047 |
1048 | filename-reserved-regex@2.0.0:
1049 | resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==}
1050 | engines: {node: '>=4'}
1051 |
1052 | filenamify@4.3.0:
1053 | resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==}
1054 | engines: {node: '>=8'}
1055 |
1056 | fill-range@7.0.1:
1057 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1058 | engines: {node: '>=8'}
1059 |
1060 | find-cache-dir@3.3.2:
1061 | resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
1062 | engines: {node: '>=8'}
1063 |
1064 | find-up@4.1.0:
1065 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
1066 | engines: {node: '>=8'}
1067 |
1068 | find-up@5.0.0:
1069 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1070 | engines: {node: '>=10'}
1071 |
1072 | flat-cache@3.2.0:
1073 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
1074 | engines: {node: ^10.12.0 || >=12.0.0}
1075 |
1076 | flatted@3.3.1:
1077 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
1078 |
1079 | follow-redirects@1.15.9:
1080 | resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
1081 | engines: {node: '>=4.0'}
1082 | peerDependencies:
1083 | debug: '*'
1084 | peerDependenciesMeta:
1085 | debug:
1086 | optional: true
1087 |
1088 | form-data@4.0.1:
1089 | resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==}
1090 | engines: {node: '>= 6'}
1091 |
1092 | fp-ts@2.16.11:
1093 | resolution: {integrity: sha512-LaI+KaX2NFkfn1ZGHoKCmcfv7yrZsC3b8NtWsTVQeHkq4F27vI5igUuO53sxqDEa2gNQMHFPmpojDw/1zmUK7w==}
1094 |
1095 | fs-extra@11.2.0:
1096 | resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
1097 | engines: {node: '>=14.14'}
1098 |
1099 | fs.realpath@1.0.0:
1100 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1101 |
1102 | fsevents@2.3.3:
1103 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1104 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1105 | os: [darwin]
1106 |
1107 | gensync@1.0.0-beta.2:
1108 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
1109 | engines: {node: '>=6.9.0'}
1110 |
1111 | gh-pages@6.1.1:
1112 | resolution: {integrity: sha512-upnohfjBwN5hBP9w2dPE7HO5JJTHzSGMV1JrLrHvNuqmjoYHg6TBrCcnEoorjG/e0ejbuvnwyKMdTyM40PEByw==}
1113 | engines: {node: '>=10'}
1114 | hasBin: true
1115 |
1116 | glob-parent@5.1.2:
1117 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1118 | engines: {node: '>= 6'}
1119 |
1120 | glob-parent@6.0.2:
1121 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1122 | engines: {node: '>=10.13.0'}
1123 |
1124 | glob@7.2.3:
1125 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1126 |
1127 | globals@11.12.0:
1128 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
1129 | engines: {node: '>=4'}
1130 |
1131 | globals@13.24.0:
1132 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
1133 | engines: {node: '>=8'}
1134 |
1135 | globals@15.2.0:
1136 | resolution: {integrity: sha512-FQ5YwCHZM3nCmtb5FzEWwdUc9K5d3V/w9mzcz8iGD1gC/aOTHc6PouYu0kkKipNJqHAT7m51sqzQjEjIP+cK0A==}
1137 | engines: {node: '>=18'}
1138 |
1139 | globby@11.1.0:
1140 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1141 | engines: {node: '>=10'}
1142 |
1143 | globby@6.1.0:
1144 | resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==}
1145 | engines: {node: '>=0.10.0'}
1146 |
1147 | globrex@0.1.2:
1148 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
1149 |
1150 | graceful-fs@4.2.11:
1151 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1152 |
1153 | graphemer@1.4.0:
1154 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1155 |
1156 | has-flag@3.0.0:
1157 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1158 | engines: {node: '>=4'}
1159 |
1160 | has-flag@4.0.0:
1161 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1162 | engines: {node: '>=8'}
1163 |
1164 | html-entities@2.3.3:
1165 | resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
1166 |
1167 | html-tags@3.3.1:
1168 | resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
1169 | engines: {node: '>=8'}
1170 |
1171 | ignore@5.3.1:
1172 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
1173 | engines: {node: '>= 4'}
1174 |
1175 | import-fresh@3.3.0:
1176 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1177 | engines: {node: '>=6'}
1178 |
1179 | imurmurhash@0.1.4:
1180 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1181 | engines: {node: '>=0.8.19'}
1182 |
1183 | inflight@1.0.6:
1184 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1185 |
1186 | inherits@2.0.4:
1187 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1188 |
1189 | inline-style-parser@0.2.3:
1190 | resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==}
1191 |
1192 | is-extglob@2.1.1:
1193 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1194 | engines: {node: '>=0.10.0'}
1195 |
1196 | is-glob@4.0.3:
1197 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1198 | engines: {node: '>=0.10.0'}
1199 |
1200 | is-html@2.0.0:
1201 | resolution: {integrity: sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==}
1202 | engines: {node: '>=8'}
1203 |
1204 | is-number@7.0.0:
1205 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1206 | engines: {node: '>=0.12.0'}
1207 |
1208 | is-path-inside@3.0.3:
1209 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1210 | engines: {node: '>=8'}
1211 |
1212 | is-what@4.1.16:
1213 | resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
1214 | engines: {node: '>=12.13'}
1215 |
1216 | isexe@2.0.0:
1217 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1218 |
1219 | js-tokens@4.0.0:
1220 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1221 |
1222 | js-yaml@4.1.0:
1223 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1224 | hasBin: true
1225 |
1226 | jsesc@2.5.2:
1227 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
1228 | engines: {node: '>=4'}
1229 | hasBin: true
1230 |
1231 | json-buffer@3.0.1:
1232 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1233 |
1234 | json-schema-traverse@0.4.1:
1235 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1236 |
1237 | json-stable-stringify-without-jsonify@1.0.1:
1238 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1239 |
1240 | json5@2.2.3:
1241 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
1242 | engines: {node: '>=6'}
1243 | hasBin: true
1244 |
1245 | jsonfile@6.1.0:
1246 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
1247 |
1248 | kebab-case@1.0.2:
1249 | resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==}
1250 |
1251 | keyv@4.5.4:
1252 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1253 |
1254 | known-css-properties@0.30.0:
1255 | resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==}
1256 |
1257 | levn@0.4.1:
1258 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1259 | engines: {node: '>= 0.8.0'}
1260 |
1261 | locate-path@5.0.0:
1262 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
1263 | engines: {node: '>=8'}
1264 |
1265 | locate-path@6.0.0:
1266 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1267 | engines: {node: '>=10'}
1268 |
1269 | lodash.merge@4.6.2:
1270 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1271 |
1272 | lru-cache@5.1.1:
1273 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
1274 |
1275 | lru-cache@6.0.0:
1276 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1277 | engines: {node: '>=10'}
1278 |
1279 | make-dir@3.1.0:
1280 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
1281 | engines: {node: '>=8'}
1282 |
1283 | merge-anything@5.1.7:
1284 | resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
1285 | engines: {node: '>=12.13'}
1286 |
1287 | merge2@1.4.1:
1288 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1289 | engines: {node: '>= 8'}
1290 |
1291 | micromatch@4.0.5:
1292 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1293 | engines: {node: '>=8.6'}
1294 |
1295 | mime-db@1.52.0:
1296 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
1297 | engines: {node: '>= 0.6'}
1298 |
1299 | mime-types@2.1.35:
1300 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
1301 | engines: {node: '>= 0.6'}
1302 |
1303 | minimatch@3.1.2:
1304 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1305 |
1306 | minimatch@9.0.4:
1307 | resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
1308 | engines: {node: '>=16 || 14 >=14.17'}
1309 |
1310 | mitt@3.0.1:
1311 | resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
1312 |
1313 | ms@2.1.2:
1314 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1315 |
1316 | ms@2.1.3:
1317 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1318 |
1319 | nanoid@3.3.7:
1320 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
1321 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1322 | hasBin: true
1323 |
1324 | natural-compare@1.4.0:
1325 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1326 |
1327 | node-fetch@2.7.0:
1328 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
1329 | engines: {node: 4.x || >=6.0.0}
1330 | peerDependencies:
1331 | encoding: ^0.1.0
1332 | peerDependenciesMeta:
1333 | encoding:
1334 | optional: true
1335 |
1336 | node-releases@2.0.14:
1337 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
1338 |
1339 | object-assign@4.1.1:
1340 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1341 | engines: {node: '>=0.10.0'}
1342 |
1343 | once@1.4.0:
1344 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1345 |
1346 | optionator@0.9.3:
1347 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
1348 | engines: {node: '>= 0.8.0'}
1349 |
1350 | p-limit@2.3.0:
1351 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
1352 | engines: {node: '>=6'}
1353 |
1354 | p-limit@3.1.0:
1355 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1356 | engines: {node: '>=10'}
1357 |
1358 | p-locate@4.1.0:
1359 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
1360 | engines: {node: '>=8'}
1361 |
1362 | p-locate@5.0.0:
1363 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1364 | engines: {node: '>=10'}
1365 |
1366 | p-try@2.2.0:
1367 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
1368 | engines: {node: '>=6'}
1369 |
1370 | parent-module@1.0.1:
1371 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1372 | engines: {node: '>=6'}
1373 |
1374 | path-exists@4.0.0:
1375 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1376 | engines: {node: '>=8'}
1377 |
1378 | path-is-absolute@1.0.1:
1379 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1380 | engines: {node: '>=0.10.0'}
1381 |
1382 | path-key@3.1.1:
1383 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1384 | engines: {node: '>=8'}
1385 |
1386 | path-type@4.0.0:
1387 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1388 | engines: {node: '>=8'}
1389 |
1390 | picocolors@1.0.0:
1391 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1392 |
1393 | picocolors@1.1.0:
1394 | resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
1395 |
1396 | picomatch@2.3.1:
1397 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1398 | engines: {node: '>=8.6'}
1399 |
1400 | pify@2.3.0:
1401 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
1402 | engines: {node: '>=0.10.0'}
1403 |
1404 | pinkie-promise@2.0.1:
1405 | resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
1406 | engines: {node: '>=0.10.0'}
1407 |
1408 | pinkie@2.0.4:
1409 | resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
1410 | engines: {node: '>=0.10.0'}
1411 |
1412 | pkg-dir@4.2.0:
1413 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
1414 | engines: {node: '>=8'}
1415 |
1416 | postcss@8.4.38:
1417 | resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
1418 | engines: {node: ^10 || ^12 || >=14}
1419 |
1420 | prelude-ls@1.2.1:
1421 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1422 | engines: {node: '>= 0.8.0'}
1423 |
1424 | proxy-from-env@1.1.0:
1425 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
1426 |
1427 | punycode@2.3.1:
1428 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1429 | engines: {node: '>=6'}
1430 |
1431 | queue-microtask@1.2.3:
1432 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1433 |
1434 | resolve-from@4.0.0:
1435 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1436 | engines: {node: '>=4'}
1437 |
1438 | reusify@1.0.4:
1439 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1440 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1441 |
1442 | rimraf@3.0.2:
1443 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1444 | hasBin: true
1445 |
1446 | rollup@4.14.1:
1447 | resolution: {integrity: sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==}
1448 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1449 | hasBin: true
1450 |
1451 | run-parallel@1.2.0:
1452 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1453 |
1454 | semver@6.3.1:
1455 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
1456 | hasBin: true
1457 |
1458 | semver@7.6.0:
1459 | resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
1460 | engines: {node: '>=10'}
1461 | hasBin: true
1462 |
1463 | seroval-plugins@1.3.3:
1464 | resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==}
1465 | engines: {node: '>=10'}
1466 | peerDependencies:
1467 | seroval: ^1.0
1468 |
1469 | seroval@1.3.2:
1470 | resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
1471 | engines: {node: '>=10'}
1472 |
1473 | shebang-command@2.0.0:
1474 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1475 | engines: {node: '>=8'}
1476 |
1477 | shebang-regex@3.0.0:
1478 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1479 | engines: {node: '>=8'}
1480 |
1481 | slash@3.0.0:
1482 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1483 | engines: {node: '>=8'}
1484 |
1485 | solid-devtools@0.30.1:
1486 | resolution: {integrity: sha512-axpXL4JV1dnGhuei+nSGS8ewGeNkmIgFDsAlO90YyYY5t8wU1R0aYAQtL+I+5KICLKPBvfkzdcFa2br7AV4lAw==}
1487 | peerDependencies:
1488 | solid-js: ^1.8.0
1489 | solid-start: ^0.3.0
1490 | vite: ^2.2.3 || ^3.0.0 || ^4.0.0 || ^5.0.0
1491 | peerDependenciesMeta:
1492 | solid-start:
1493 | optional: true
1494 | vite:
1495 | optional: true
1496 |
1497 | solid-js@1.9.9:
1498 | resolution: {integrity: sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==}
1499 |
1500 | solid-refresh@0.6.3:
1501 | resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
1502 | peerDependencies:
1503 | solid-js: ^1.3
1504 |
1505 | source-map-js@1.2.0:
1506 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
1507 | engines: {node: '>=0.10.0'}
1508 |
1509 | strip-ansi@6.0.1:
1510 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1511 | engines: {node: '>=8'}
1512 |
1513 | strip-json-comments@3.1.1:
1514 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1515 | engines: {node: '>=8'}
1516 |
1517 | strip-outer@1.0.1:
1518 | resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==}
1519 | engines: {node: '>=0.10.0'}
1520 |
1521 | style-to-object@1.0.6:
1522 | resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==}
1523 |
1524 | supports-color@5.5.0:
1525 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1526 | engines: {node: '>=4'}
1527 |
1528 | supports-color@7.2.0:
1529 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1530 | engines: {node: '>=8'}
1531 |
1532 | text-table@0.2.0:
1533 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
1534 |
1535 | to-fast-properties@2.0.0:
1536 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
1537 | engines: {node: '>=4'}
1538 |
1539 | to-regex-range@5.0.1:
1540 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1541 | engines: {node: '>=8.0'}
1542 |
1543 | tr46@0.0.3:
1544 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
1545 |
1546 | trim-repeated@1.0.0:
1547 | resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==}
1548 | engines: {node: '>=0.10.0'}
1549 |
1550 | ts-api-utils@1.3.0:
1551 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
1552 | engines: {node: '>=16'}
1553 | peerDependencies:
1554 | typescript: '>=4.2.0'
1555 |
1556 | tsconfck@3.0.3:
1557 | resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==}
1558 | engines: {node: ^18 || >=20}
1559 | hasBin: true
1560 | peerDependencies:
1561 | typescript: ^5.0.0
1562 | peerDependenciesMeta:
1563 | typescript:
1564 | optional: true
1565 |
1566 | tweetnacl-util@0.15.1:
1567 | resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==}
1568 |
1569 | tweetnacl@1.0.3:
1570 | resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==}
1571 |
1572 | type-check@0.4.0:
1573 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1574 | engines: {node: '>= 0.8.0'}
1575 |
1576 | type-fest@0.20.2:
1577 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
1578 | engines: {node: '>=10'}
1579 |
1580 | typescript-eslint@7.8.0:
1581 | resolution: {integrity: sha512-sheFG+/D8N/L7gC3WT0Q8sB97Nm573Yfr+vZFzl/4nBdYcmviBPtwGSX9TJ7wpVg28ocerKVOt+k2eGmHzcgVA==}
1582 | engines: {node: ^18.18.0 || >=20.0.0}
1583 | peerDependencies:
1584 | eslint: ^8.56.0
1585 | typescript: '*'
1586 | peerDependenciesMeta:
1587 | typescript:
1588 | optional: true
1589 |
1590 | typescript@5.4.4:
1591 | resolution: {integrity: sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==}
1592 | engines: {node: '>=14.17'}
1593 | hasBin: true
1594 |
1595 | ua-parser-js@1.0.38:
1596 | resolution: {integrity: sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==}
1597 |
1598 | undici-types@5.26.5:
1599 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
1600 |
1601 | universal-user-agent@6.0.1:
1602 | resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==}
1603 |
1604 | universalify@2.0.1:
1605 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
1606 | engines: {node: '>= 10.0.0'}
1607 |
1608 | update-browserslist-db@1.0.13:
1609 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
1610 | hasBin: true
1611 | peerDependencies:
1612 | browserslist: '>= 4.21.0'
1613 |
1614 | uri-js@4.4.1:
1615 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1616 |
1617 | valibot@1.1.0:
1618 | resolution: {integrity: sha512-Nk8lX30Qhu+9txPYTwM0cFlWLdPFsFr6LblzqIySfbZph9+BFsAHsNvHOymEviUepeIW6KFHzpX8TKhbptBXXw==}
1619 | peerDependencies:
1620 | typescript: '>=5'
1621 | peerDependenciesMeta:
1622 | typescript:
1623 | optional: true
1624 |
1625 | validate-html-nesting@1.2.2:
1626 | resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==}
1627 |
1628 | vite-plugin-mkcert@1.17.6:
1629 | resolution: {integrity: sha512-4JR1RN0HEg/w17eRQJ/Ve2pSa6KCVQcQO6yKtIaKQCFDyd63zGfXHWpygBkvvRSpqa0GcqNKf0fjUJ0HiJQXVQ==}
1630 | engines: {node: '>=v16.7.0'}
1631 | peerDependencies:
1632 | vite: '>=3'
1633 |
1634 | vite-plugin-solid@2.10.2:
1635 | resolution: {integrity: sha512-AOEtwMe2baBSXMXdo+BUwECC8IFHcKS6WQV/1NEd+Q7vHPap5fmIhLcAzr+DUJ04/KHx/1UBU0l1/GWP+rMAPQ==}
1636 | peerDependencies:
1637 | '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.*
1638 | solid-js: ^1.7.2
1639 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0
1640 | peerDependenciesMeta:
1641 | '@testing-library/jest-dom':
1642 | optional: true
1643 |
1644 | vite-tsconfig-paths@4.3.2:
1645 | resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==}
1646 | peerDependencies:
1647 | vite: '*'
1648 | peerDependenciesMeta:
1649 | vite:
1650 | optional: true
1651 |
1652 | vite@5.2.11:
1653 | resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==}
1654 | engines: {node: ^18.0.0 || >=20.0.0}
1655 | hasBin: true
1656 | peerDependencies:
1657 | '@types/node': ^18.0.0 || >=20.0.0
1658 | less: '*'
1659 | lightningcss: ^1.21.0
1660 | sass: '*'
1661 | stylus: '*'
1662 | sugarss: '*'
1663 | terser: ^5.4.0
1664 | peerDependenciesMeta:
1665 | '@types/node':
1666 | optional: true
1667 | less:
1668 | optional: true
1669 | lightningcss:
1670 | optional: true
1671 | sass:
1672 | optional: true
1673 | stylus:
1674 | optional: true
1675 | sugarss:
1676 | optional: true
1677 | terser:
1678 | optional: true
1679 |
1680 | vitefu@0.2.5:
1681 | resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
1682 | peerDependencies:
1683 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0
1684 | peerDependenciesMeta:
1685 | vite:
1686 | optional: true
1687 |
1688 | webidl-conversions@3.0.1:
1689 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
1690 |
1691 | whatwg-url@5.0.0:
1692 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
1693 |
1694 | which@2.0.2:
1695 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1696 | engines: {node: '>= 8'}
1697 | hasBin: true
1698 |
1699 | wrappy@1.0.2:
1700 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1701 |
1702 | yallist@3.1.1:
1703 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
1704 |
1705 | yallist@4.0.0:
1706 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
1707 |
1708 | yocto-queue@0.1.0:
1709 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1710 | engines: {node: '>=10'}
1711 |
1712 | snapshots:
1713 |
1714 | '@aashutoshrathi/word-wrap@1.2.6': {}
1715 |
1716 | '@ampproject/remapping@2.3.0':
1717 | dependencies:
1718 | '@jridgewell/gen-mapping': 0.3.5
1719 | '@jridgewell/trace-mapping': 0.3.25
1720 |
1721 | '@babel/code-frame@7.24.2':
1722 | dependencies:
1723 | '@babel/highlight': 7.24.2
1724 | picocolors: 1.0.0
1725 |
1726 | '@babel/compat-data@7.24.4': {}
1727 |
1728 | '@babel/core@7.24.4':
1729 | dependencies:
1730 | '@ampproject/remapping': 2.3.0
1731 | '@babel/code-frame': 7.24.2
1732 | '@babel/generator': 7.24.4
1733 | '@babel/helper-compilation-targets': 7.23.6
1734 | '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4)
1735 | '@babel/helpers': 7.24.4
1736 | '@babel/parser': 7.24.4
1737 | '@babel/template': 7.24.0
1738 | '@babel/traverse': 7.24.1
1739 | '@babel/types': 7.24.0
1740 | convert-source-map: 2.0.0
1741 | debug: 4.3.4
1742 | gensync: 1.0.0-beta.2
1743 | json5: 2.2.3
1744 | semver: 6.3.1
1745 | transitivePeerDependencies:
1746 | - supports-color
1747 |
1748 | '@babel/generator@7.24.4':
1749 | dependencies:
1750 | '@babel/types': 7.24.0
1751 | '@jridgewell/gen-mapping': 0.3.5
1752 | '@jridgewell/trace-mapping': 0.3.25
1753 | jsesc: 2.5.2
1754 |
1755 | '@babel/helper-compilation-targets@7.23.6':
1756 | dependencies:
1757 | '@babel/compat-data': 7.24.4
1758 | '@babel/helper-validator-option': 7.23.5
1759 | browserslist: 4.23.0
1760 | lru-cache: 5.1.1
1761 | semver: 6.3.1
1762 |
1763 | '@babel/helper-environment-visitor@7.22.20': {}
1764 |
1765 | '@babel/helper-function-name@7.23.0':
1766 | dependencies:
1767 | '@babel/template': 7.24.0
1768 | '@babel/types': 7.24.0
1769 |
1770 | '@babel/helper-hoist-variables@7.22.5':
1771 | dependencies:
1772 | '@babel/types': 7.24.0
1773 |
1774 | '@babel/helper-module-imports@7.18.6':
1775 | dependencies:
1776 | '@babel/types': 7.24.0
1777 |
1778 | '@babel/helper-module-imports@7.24.3':
1779 | dependencies:
1780 | '@babel/types': 7.24.0
1781 |
1782 | '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4)':
1783 | dependencies:
1784 | '@babel/core': 7.24.4
1785 | '@babel/helper-environment-visitor': 7.22.20
1786 | '@babel/helper-module-imports': 7.24.3
1787 | '@babel/helper-simple-access': 7.22.5
1788 | '@babel/helper-split-export-declaration': 7.22.6
1789 | '@babel/helper-validator-identifier': 7.22.20
1790 |
1791 | '@babel/helper-plugin-utils@7.24.0': {}
1792 |
1793 | '@babel/helper-simple-access@7.22.5':
1794 | dependencies:
1795 | '@babel/types': 7.24.0
1796 |
1797 | '@babel/helper-split-export-declaration@7.22.6':
1798 | dependencies:
1799 | '@babel/types': 7.24.0
1800 |
1801 | '@babel/helper-string-parser@7.24.1': {}
1802 |
1803 | '@babel/helper-validator-identifier@7.22.20': {}
1804 |
1805 | '@babel/helper-validator-option@7.23.5': {}
1806 |
1807 | '@babel/helpers@7.24.4':
1808 | dependencies:
1809 | '@babel/template': 7.24.0
1810 | '@babel/traverse': 7.24.1
1811 | '@babel/types': 7.24.0
1812 | transitivePeerDependencies:
1813 | - supports-color
1814 |
1815 | '@babel/highlight@7.24.2':
1816 | dependencies:
1817 | '@babel/helper-validator-identifier': 7.22.20
1818 | chalk: 2.4.2
1819 | js-tokens: 4.0.0
1820 | picocolors: 1.0.0
1821 |
1822 | '@babel/parser@7.24.4':
1823 | dependencies:
1824 | '@babel/types': 7.24.0
1825 |
1826 | '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.4)':
1827 | dependencies:
1828 | '@babel/core': 7.24.4
1829 | '@babel/helper-plugin-utils': 7.24.0
1830 |
1831 | '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.4)':
1832 | dependencies:
1833 | '@babel/core': 7.24.4
1834 | '@babel/helper-plugin-utils': 7.24.0
1835 |
1836 | '@babel/template@7.24.0':
1837 | dependencies:
1838 | '@babel/code-frame': 7.24.2
1839 | '@babel/parser': 7.24.4
1840 | '@babel/types': 7.24.0
1841 |
1842 | '@babel/traverse@7.24.1':
1843 | dependencies:
1844 | '@babel/code-frame': 7.24.2
1845 | '@babel/generator': 7.24.4
1846 | '@babel/helper-environment-visitor': 7.22.20
1847 | '@babel/helper-function-name': 7.23.0
1848 | '@babel/helper-hoist-variables': 7.22.5
1849 | '@babel/helper-split-export-declaration': 7.22.6
1850 | '@babel/parser': 7.24.4
1851 | '@babel/types': 7.24.0
1852 | debug: 4.3.4
1853 | globals: 11.12.0
1854 | transitivePeerDependencies:
1855 | - supports-color
1856 |
1857 | '@babel/types@7.24.0':
1858 | dependencies:
1859 | '@babel/helper-string-parser': 7.24.1
1860 | '@babel/helper-validator-identifier': 7.22.20
1861 | to-fast-properties: 2.0.0
1862 |
1863 | '@esbuild/aix-ppc64@0.20.2':
1864 | optional: true
1865 |
1866 | '@esbuild/android-arm64@0.20.2':
1867 | optional: true
1868 |
1869 | '@esbuild/android-arm@0.20.2':
1870 | optional: true
1871 |
1872 | '@esbuild/android-x64@0.20.2':
1873 | optional: true
1874 |
1875 | '@esbuild/darwin-arm64@0.20.2':
1876 | optional: true
1877 |
1878 | '@esbuild/darwin-x64@0.20.2':
1879 | optional: true
1880 |
1881 | '@esbuild/freebsd-arm64@0.20.2':
1882 | optional: true
1883 |
1884 | '@esbuild/freebsd-x64@0.20.2':
1885 | optional: true
1886 |
1887 | '@esbuild/linux-arm64@0.20.2':
1888 | optional: true
1889 |
1890 | '@esbuild/linux-arm@0.20.2':
1891 | optional: true
1892 |
1893 | '@esbuild/linux-ia32@0.20.2':
1894 | optional: true
1895 |
1896 | '@esbuild/linux-loong64@0.20.2':
1897 | optional: true
1898 |
1899 | '@esbuild/linux-mips64el@0.20.2':
1900 | optional: true
1901 |
1902 | '@esbuild/linux-ppc64@0.20.2':
1903 | optional: true
1904 |
1905 | '@esbuild/linux-riscv64@0.20.2':
1906 | optional: true
1907 |
1908 | '@esbuild/linux-s390x@0.20.2':
1909 | optional: true
1910 |
1911 | '@esbuild/linux-x64@0.20.2':
1912 | optional: true
1913 |
1914 | '@esbuild/netbsd-x64@0.20.2':
1915 | optional: true
1916 |
1917 | '@esbuild/openbsd-x64@0.20.2':
1918 | optional: true
1919 |
1920 | '@esbuild/sunos-x64@0.20.2':
1921 | optional: true
1922 |
1923 | '@esbuild/win32-arm64@0.20.2':
1924 | optional: true
1925 |
1926 | '@esbuild/win32-ia32@0.20.2':
1927 | optional: true
1928 |
1929 | '@esbuild/win32-x64@0.20.2':
1930 | optional: true
1931 |
1932 | '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
1933 | dependencies:
1934 | eslint: 8.57.0
1935 | eslint-visitor-keys: 3.4.3
1936 |
1937 | '@eslint-community/regexpp@4.10.0': {}
1938 |
1939 | '@eslint/eslintrc@2.1.4':
1940 | dependencies:
1941 | ajv: 6.12.6
1942 | debug: 4.3.4
1943 | espree: 9.6.1
1944 | globals: 13.24.0
1945 | ignore: 5.3.1
1946 | import-fresh: 3.3.0
1947 | js-yaml: 4.1.0
1948 | minimatch: 3.1.2
1949 | strip-json-comments: 3.1.1
1950 | transitivePeerDependencies:
1951 | - supports-color
1952 |
1953 | '@eslint/js@8.57.0': {}
1954 |
1955 | '@eslint/js@9.2.0': {}
1956 |
1957 | '@humanwhocodes/config-array@0.11.14':
1958 | dependencies:
1959 | '@humanwhocodes/object-schema': 2.0.3
1960 | debug: 4.3.4
1961 | minimatch: 3.1.2
1962 | transitivePeerDependencies:
1963 | - supports-color
1964 |
1965 | '@humanwhocodes/module-importer@1.0.1': {}
1966 |
1967 | '@humanwhocodes/object-schema@2.0.3': {}
1968 |
1969 | '@jridgewell/gen-mapping@0.3.5':
1970 | dependencies:
1971 | '@jridgewell/set-array': 1.2.1
1972 | '@jridgewell/sourcemap-codec': 1.4.15
1973 | '@jridgewell/trace-mapping': 0.3.25
1974 |
1975 | '@jridgewell/resolve-uri@3.1.2': {}
1976 |
1977 | '@jridgewell/set-array@1.2.1': {}
1978 |
1979 | '@jridgewell/sourcemap-codec@1.4.15': {}
1980 |
1981 | '@jridgewell/trace-mapping@0.3.25':
1982 | dependencies:
1983 | '@jridgewell/resolve-uri': 3.1.2
1984 | '@jridgewell/sourcemap-codec': 1.4.15
1985 |
1986 | '@nodelib/fs.scandir@2.1.5':
1987 | dependencies:
1988 | '@nodelib/fs.stat': 2.0.5
1989 | run-parallel: 1.2.0
1990 |
1991 | '@nodelib/fs.stat@2.0.5': {}
1992 |
1993 | '@nodelib/fs.walk@1.2.8':
1994 | dependencies:
1995 | '@nodelib/fs.scandir': 2.1.5
1996 | fastq: 1.17.1
1997 |
1998 | '@nothing-but/utils@0.12.1': {}
1999 |
2000 | '@octokit/auth-token@4.0.0': {}
2001 |
2002 | '@octokit/core@5.2.0':
2003 | dependencies:
2004 | '@octokit/auth-token': 4.0.0
2005 | '@octokit/graphql': 7.1.0
2006 | '@octokit/request': 8.4.0
2007 | '@octokit/request-error': 5.1.0
2008 | '@octokit/types': 13.6.1
2009 | before-after-hook: 2.2.3
2010 | universal-user-agent: 6.0.1
2011 |
2012 | '@octokit/endpoint@9.0.5':
2013 | dependencies:
2014 | '@octokit/types': 13.6.1
2015 | universal-user-agent: 6.0.1
2016 |
2017 | '@octokit/graphql@7.1.0':
2018 | dependencies:
2019 | '@octokit/request': 8.4.0
2020 | '@octokit/types': 13.6.1
2021 | universal-user-agent: 6.0.1
2022 |
2023 | '@octokit/openapi-types@22.2.0': {}
2024 |
2025 | '@octokit/plugin-paginate-rest@11.3.1(@octokit/core@5.2.0)':
2026 | dependencies:
2027 | '@octokit/core': 5.2.0
2028 | '@octokit/types': 13.6.1
2029 |
2030 | '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.0)':
2031 | dependencies:
2032 | '@octokit/core': 5.2.0
2033 |
2034 | '@octokit/plugin-rest-endpoint-methods@13.2.2(@octokit/core@5.2.0)':
2035 | dependencies:
2036 | '@octokit/core': 5.2.0
2037 | '@octokit/types': 13.6.1
2038 |
2039 | '@octokit/request-error@5.1.0':
2040 | dependencies:
2041 | '@octokit/types': 13.6.1
2042 | deprecation: 2.3.1
2043 | once: 1.4.0
2044 |
2045 | '@octokit/request@8.4.0':
2046 | dependencies:
2047 | '@octokit/endpoint': 9.0.5
2048 | '@octokit/request-error': 5.1.0
2049 | '@octokit/types': 13.6.1
2050 | universal-user-agent: 6.0.1
2051 |
2052 | '@octokit/rest@20.1.1':
2053 | dependencies:
2054 | '@octokit/core': 5.2.0
2055 | '@octokit/plugin-paginate-rest': 11.3.1(@octokit/core@5.2.0)
2056 | '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.0)
2057 | '@octokit/plugin-rest-endpoint-methods': 13.2.2(@octokit/core@5.2.0)
2058 |
2059 | '@octokit/types@13.6.1':
2060 | dependencies:
2061 | '@octokit/openapi-types': 22.2.0
2062 |
2063 | '@rollup/rollup-android-arm-eabi@4.14.1':
2064 | optional: true
2065 |
2066 | '@rollup/rollup-android-arm64@4.14.1':
2067 | optional: true
2068 |
2069 | '@rollup/rollup-darwin-arm64@4.14.1':
2070 | optional: true
2071 |
2072 | '@rollup/rollup-darwin-x64@4.14.1':
2073 | optional: true
2074 |
2075 | '@rollup/rollup-linux-arm-gnueabihf@4.14.1':
2076 | optional: true
2077 |
2078 | '@rollup/rollup-linux-arm64-gnu@4.14.1':
2079 | optional: true
2080 |
2081 | '@rollup/rollup-linux-arm64-musl@4.14.1':
2082 | optional: true
2083 |
2084 | '@rollup/rollup-linux-powerpc64le-gnu@4.14.1':
2085 | optional: true
2086 |
2087 | '@rollup/rollup-linux-riscv64-gnu@4.14.1':
2088 | optional: true
2089 |
2090 | '@rollup/rollup-linux-s390x-gnu@4.14.1':
2091 | optional: true
2092 |
2093 | '@rollup/rollup-linux-x64-gnu@4.14.1':
2094 | optional: true
2095 |
2096 | '@rollup/rollup-linux-x64-musl@4.14.1':
2097 | optional: true
2098 |
2099 | '@rollup/rollup-win32-arm64-msvc@4.14.1':
2100 | optional: true
2101 |
2102 | '@rollup/rollup-win32-ia32-msvc@4.14.1':
2103 | optional: true
2104 |
2105 | '@rollup/rollup-win32-x64-msvc@4.14.1':
2106 | optional: true
2107 |
2108 | '@solid-devtools/debugger@0.23.4(solid-js@1.9.9)':
2109 | dependencies:
2110 | '@nothing-but/utils': 0.12.1
2111 | '@solid-devtools/shared': 0.13.2(solid-js@1.9.9)
2112 | '@solid-primitives/bounds': 0.0.118(solid-js@1.9.9)
2113 | '@solid-primitives/cursor': 0.0.112(solid-js@1.9.9)
2114 | '@solid-primitives/event-bus': 1.0.11(solid-js@1.9.9)
2115 | '@solid-primitives/event-listener': 2.3.3(solid-js@1.9.9)
2116 | '@solid-primitives/keyboard': 1.2.8(solid-js@1.9.9)
2117 | '@solid-primitives/platform': 0.1.2(solid-js@1.9.9)
2118 | '@solid-primitives/rootless': 1.4.5(solid-js@1.9.9)
2119 | '@solid-primitives/scheduled': 1.4.3(solid-js@1.9.9)
2120 | '@solid-primitives/static-store': 0.0.5(solid-js@1.9.9)
2121 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2122 | solid-js: 1.9.9
2123 |
2124 | '@solid-devtools/shared@0.13.2(solid-js@1.9.9)':
2125 | dependencies:
2126 | '@solid-primitives/event-bus': 1.0.11(solid-js@1.9.9)
2127 | '@solid-primitives/event-listener': 2.3.3(solid-js@1.9.9)
2128 | '@solid-primitives/media': 2.2.8(solid-js@1.9.9)
2129 | '@solid-primitives/refs': 1.0.8(solid-js@1.9.9)
2130 | '@solid-primitives/rootless': 1.4.5(solid-js@1.9.9)
2131 | '@solid-primitives/scheduled': 1.4.3(solid-js@1.9.9)
2132 | '@solid-primitives/static-store': 0.0.5(solid-js@1.9.9)
2133 | '@solid-primitives/styles': 0.0.111(solid-js@1.9.9)
2134 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2135 | solid-js: 1.9.9
2136 |
2137 | '@solid-primitives/bounds@0.0.118(solid-js@1.9.9)':
2138 | dependencies:
2139 | '@solid-primitives/event-listener': 2.3.3(solid-js@1.9.9)
2140 | '@solid-primitives/resize-observer': 2.0.25(solid-js@1.9.9)
2141 | '@solid-primitives/static-store': 0.0.5(solid-js@1.9.9)
2142 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2143 | solid-js: 1.9.9
2144 |
2145 | '@solid-primitives/cursor@0.0.112(solid-js@1.9.9)':
2146 | dependencies:
2147 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2148 | solid-js: 1.9.9
2149 |
2150 | '@solid-primitives/event-bus@1.0.11(solid-js@1.9.9)':
2151 | dependencies:
2152 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2153 | solid-js: 1.9.9
2154 |
2155 | '@solid-primitives/event-listener@2.3.3(solid-js@1.9.9)':
2156 | dependencies:
2157 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2158 | solid-js: 1.9.9
2159 |
2160 | '@solid-primitives/keyboard@1.2.8(solid-js@1.9.9)':
2161 | dependencies:
2162 | '@solid-primitives/event-listener': 2.3.3(solid-js@1.9.9)
2163 | '@solid-primitives/rootless': 1.4.5(solid-js@1.9.9)
2164 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2165 | solid-js: 1.9.9
2166 |
2167 | '@solid-primitives/media@2.2.8(solid-js@1.9.9)':
2168 | dependencies:
2169 | '@solid-primitives/event-listener': 2.3.3(solid-js@1.9.9)
2170 | '@solid-primitives/rootless': 1.4.5(solid-js@1.9.9)
2171 | '@solid-primitives/static-store': 0.0.8(solid-js@1.9.9)
2172 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2173 | solid-js: 1.9.9
2174 |
2175 | '@solid-primitives/platform@0.1.2(solid-js@1.9.9)':
2176 | dependencies:
2177 | solid-js: 1.9.9
2178 |
2179 | '@solid-primitives/refs@1.0.8(solid-js@1.9.9)':
2180 | dependencies:
2181 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2182 | solid-js: 1.9.9
2183 |
2184 | '@solid-primitives/resize-observer@2.0.25(solid-js@1.9.9)':
2185 | dependencies:
2186 | '@solid-primitives/event-listener': 2.3.3(solid-js@1.9.9)
2187 | '@solid-primitives/rootless': 1.4.5(solid-js@1.9.9)
2188 | '@solid-primitives/static-store': 0.0.8(solid-js@1.9.9)
2189 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2190 | solid-js: 1.9.9
2191 |
2192 | '@solid-primitives/rootless@1.4.5(solid-js@1.9.9)':
2193 | dependencies:
2194 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2195 | solid-js: 1.9.9
2196 |
2197 | '@solid-primitives/scheduled@1.4.3(solid-js@1.9.9)':
2198 | dependencies:
2199 | solid-js: 1.9.9
2200 |
2201 | '@solid-primitives/static-store@0.0.5(solid-js@1.9.9)':
2202 | dependencies:
2203 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2204 | solid-js: 1.9.9
2205 |
2206 | '@solid-primitives/static-store@0.0.8(solid-js@1.9.9)':
2207 | dependencies:
2208 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2209 | solid-js: 1.9.9
2210 |
2211 | '@solid-primitives/styles@0.0.111(solid-js@1.9.9)':
2212 | dependencies:
2213 | '@solid-primitives/rootless': 1.4.5(solid-js@1.9.9)
2214 | '@solid-primitives/utils': 6.2.3(solid-js@1.9.9)
2215 | solid-js: 1.9.9
2216 |
2217 | '@solid-primitives/utils@6.2.3(solid-js@1.9.9)':
2218 | dependencies:
2219 | solid-js: 1.9.9
2220 |
2221 | '@solidjs/router@0.13.6(solid-js@1.9.9)':
2222 | dependencies:
2223 | solid-js: 1.9.9
2224 |
2225 | '@tma.js/bridge@2.1.3(typescript@5.4.4)':
2226 | dependencies:
2227 | '@tma.js/signals': 1.0.1
2228 | '@tma.js/toolkit': 1.0.2
2229 | '@tma.js/transformers': 1.1.1(typescript@5.4.4)
2230 | '@tma.js/types': 1.0.2
2231 | better-promises: 1.0.0
2232 | error-kid: 1.0.2
2233 | fp-ts: 2.16.11
2234 | mitt: 3.0.1
2235 | valibot: 1.1.0(typescript@5.4.4)
2236 | transitivePeerDependencies:
2237 | - typescript
2238 |
2239 | '@tma.js/sdk-solid@3.0.7(solid-js@1.9.9)(typescript@5.4.4)':
2240 | dependencies:
2241 | '@tma.js/sdk': 3.0.7(typescript@5.4.4)
2242 | solid-js: 1.9.9
2243 | transitivePeerDependencies:
2244 | - typescript
2245 |
2246 | '@tma.js/sdk@3.0.7(typescript@5.4.4)':
2247 | dependencies:
2248 | '@tma.js/bridge': 2.1.3(typescript@5.4.4)
2249 | '@tma.js/signals': 1.0.1
2250 | '@tma.js/toolkit': 1.0.2
2251 | '@tma.js/transformers': 1.1.1(typescript@5.4.4)
2252 | '@tma.js/types': 1.0.2
2253 | better-promises: 1.0.0
2254 | error-kid: 1.0.2
2255 | fp-ts: 2.16.11
2256 | valibot: 1.1.0(typescript@5.4.4)
2257 | transitivePeerDependencies:
2258 | - typescript
2259 |
2260 | '@tma.js/signals@1.0.1': {}
2261 |
2262 | '@tma.js/toolkit@1.0.2':
2263 | dependencies:
2264 | better-promises: 1.0.0
2265 | fp-ts: 2.16.11
2266 |
2267 | '@tma.js/transformers@1.1.1(typescript@5.4.4)':
2268 | dependencies:
2269 | '@tma.js/toolkit': 1.0.2
2270 | '@tma.js/types': 1.0.2
2271 | fp-ts: 2.16.11
2272 | valibot: 1.1.0(typescript@5.4.4)
2273 | transitivePeerDependencies:
2274 | - typescript
2275 |
2276 | '@tma.js/types@1.0.2': {}
2277 |
2278 | '@tonconnect/isomorphic-eventsource@0.0.2':
2279 | dependencies:
2280 | eventsource: 2.0.2
2281 |
2282 | '@tonconnect/isomorphic-fetch@0.0.3':
2283 | dependencies:
2284 | node-fetch: 2.7.0
2285 | transitivePeerDependencies:
2286 | - encoding
2287 |
2288 | '@tonconnect/protocol@2.2.6':
2289 | dependencies:
2290 | tweetnacl: 1.0.3
2291 | tweetnacl-util: 0.15.1
2292 |
2293 | '@tonconnect/sdk@3.0.3':
2294 | dependencies:
2295 | '@tonconnect/isomorphic-eventsource': 0.0.2
2296 | '@tonconnect/isomorphic-fetch': 0.0.3
2297 | '@tonconnect/protocol': 2.2.6
2298 | transitivePeerDependencies:
2299 | - encoding
2300 |
2301 | '@tonconnect/ui@2.0.5':
2302 | dependencies:
2303 | '@tonconnect/sdk': 3.0.3
2304 | classnames: 2.5.1
2305 | deepmerge: 4.3.1
2306 | ua-parser-js: 1.0.38
2307 | transitivePeerDependencies:
2308 | - encoding
2309 |
2310 | '@types/babel__core@7.20.5':
2311 | dependencies:
2312 | '@babel/parser': 7.24.4
2313 | '@babel/types': 7.24.0
2314 | '@types/babel__generator': 7.6.8
2315 | '@types/babel__template': 7.4.4
2316 | '@types/babel__traverse': 7.20.5
2317 |
2318 | '@types/babel__generator@7.6.8':
2319 | dependencies:
2320 | '@babel/types': 7.24.0
2321 |
2322 | '@types/babel__template@7.4.4':
2323 | dependencies:
2324 | '@babel/parser': 7.24.4
2325 | '@babel/types': 7.24.0
2326 |
2327 | '@types/babel__traverse@7.20.5':
2328 | dependencies:
2329 | '@babel/types': 7.24.0
2330 |
2331 | '@types/estree@1.0.5': {}
2332 |
2333 | '@types/json-schema@7.0.15': {}
2334 |
2335 | '@types/node@20.12.5':
2336 | dependencies:
2337 | undici-types: 5.26.5
2338 |
2339 | '@types/semver@7.5.8': {}
2340 |
2341 | '@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0)(typescript@5.4.4)':
2342 | dependencies:
2343 | '@eslint-community/regexpp': 4.10.0
2344 | '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.4)
2345 | '@typescript-eslint/scope-manager': 7.8.0
2346 | '@typescript-eslint/type-utils': 7.8.0(eslint@8.57.0)(typescript@5.4.4)
2347 | '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.4)
2348 | '@typescript-eslint/visitor-keys': 7.8.0
2349 | debug: 4.3.4
2350 | eslint: 8.57.0
2351 | graphemer: 1.4.0
2352 | ignore: 5.3.1
2353 | natural-compare: 1.4.0
2354 | semver: 7.6.0
2355 | ts-api-utils: 1.3.0(typescript@5.4.4)
2356 | optionalDependencies:
2357 | typescript: 5.4.4
2358 | transitivePeerDependencies:
2359 | - supports-color
2360 |
2361 | '@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.4)':
2362 | dependencies:
2363 | '@typescript-eslint/scope-manager': 7.8.0
2364 | '@typescript-eslint/types': 7.8.0
2365 | '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.4)
2366 | '@typescript-eslint/visitor-keys': 7.8.0
2367 | debug: 4.3.4
2368 | eslint: 8.57.0
2369 | optionalDependencies:
2370 | typescript: 5.4.4
2371 | transitivePeerDependencies:
2372 | - supports-color
2373 |
2374 | '@typescript-eslint/scope-manager@7.6.0':
2375 | dependencies:
2376 | '@typescript-eslint/types': 7.6.0
2377 | '@typescript-eslint/visitor-keys': 7.6.0
2378 |
2379 | '@typescript-eslint/scope-manager@7.8.0':
2380 | dependencies:
2381 | '@typescript-eslint/types': 7.8.0
2382 | '@typescript-eslint/visitor-keys': 7.8.0
2383 |
2384 | '@typescript-eslint/type-utils@7.8.0(eslint@8.57.0)(typescript@5.4.4)':
2385 | dependencies:
2386 | '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.4)
2387 | '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.4)
2388 | debug: 4.3.4
2389 | eslint: 8.57.0
2390 | ts-api-utils: 1.3.0(typescript@5.4.4)
2391 | optionalDependencies:
2392 | typescript: 5.4.4
2393 | transitivePeerDependencies:
2394 | - supports-color
2395 |
2396 | '@typescript-eslint/types@7.6.0': {}
2397 |
2398 | '@typescript-eslint/types@7.8.0': {}
2399 |
2400 | '@typescript-eslint/typescript-estree@7.6.0(typescript@5.4.4)':
2401 | dependencies:
2402 | '@typescript-eslint/types': 7.6.0
2403 | '@typescript-eslint/visitor-keys': 7.6.0
2404 | debug: 4.3.4
2405 | globby: 11.1.0
2406 | is-glob: 4.0.3
2407 | minimatch: 9.0.4
2408 | semver: 7.6.0
2409 | ts-api-utils: 1.3.0(typescript@5.4.4)
2410 | optionalDependencies:
2411 | typescript: 5.4.4
2412 | transitivePeerDependencies:
2413 | - supports-color
2414 |
2415 | '@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.4)':
2416 | dependencies:
2417 | '@typescript-eslint/types': 7.8.0
2418 | '@typescript-eslint/visitor-keys': 7.8.0
2419 | debug: 4.3.4
2420 | globby: 11.1.0
2421 | is-glob: 4.0.3
2422 | minimatch: 9.0.4
2423 | semver: 7.6.0
2424 | ts-api-utils: 1.3.0(typescript@5.4.4)
2425 | optionalDependencies:
2426 | typescript: 5.4.4
2427 | transitivePeerDependencies:
2428 | - supports-color
2429 |
2430 | '@typescript-eslint/utils@7.6.0(eslint@8.57.0)(typescript@5.4.4)':
2431 | dependencies:
2432 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
2433 | '@types/json-schema': 7.0.15
2434 | '@types/semver': 7.5.8
2435 | '@typescript-eslint/scope-manager': 7.6.0
2436 | '@typescript-eslint/types': 7.6.0
2437 | '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.4)
2438 | eslint: 8.57.0
2439 | semver: 7.6.0
2440 | transitivePeerDependencies:
2441 | - supports-color
2442 | - typescript
2443 |
2444 | '@typescript-eslint/utils@7.8.0(eslint@8.57.0)(typescript@5.4.4)':
2445 | dependencies:
2446 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
2447 | '@types/json-schema': 7.0.15
2448 | '@types/semver': 7.5.8
2449 | '@typescript-eslint/scope-manager': 7.8.0
2450 | '@typescript-eslint/types': 7.8.0
2451 | '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.4)
2452 | eslint: 8.57.0
2453 | semver: 7.6.0
2454 | transitivePeerDependencies:
2455 | - supports-color
2456 | - typescript
2457 |
2458 | '@typescript-eslint/visitor-keys@7.6.0':
2459 | dependencies:
2460 | '@typescript-eslint/types': 7.6.0
2461 | eslint-visitor-keys: 3.4.3
2462 |
2463 | '@typescript-eslint/visitor-keys@7.8.0':
2464 | dependencies:
2465 | '@typescript-eslint/types': 7.8.0
2466 | eslint-visitor-keys: 3.4.3
2467 |
2468 | '@ungap/structured-clone@1.2.0': {}
2469 |
2470 | '@vitejs/plugin-basic-ssl@1.1.0(vite@5.2.11(@types/node@20.12.5))':
2471 | dependencies:
2472 | vite: 5.2.11(@types/node@20.12.5)
2473 |
2474 | acorn-jsx@5.3.2(acorn@8.11.3):
2475 | dependencies:
2476 | acorn: 8.11.3
2477 |
2478 | acorn@8.11.3: {}
2479 |
2480 | ajv@6.12.6:
2481 | dependencies:
2482 | fast-deep-equal: 3.1.3
2483 | fast-json-stable-stringify: 2.1.0
2484 | json-schema-traverse: 0.4.1
2485 | uri-js: 4.4.1
2486 |
2487 | ansi-regex@5.0.1: {}
2488 |
2489 | ansi-styles@3.2.1:
2490 | dependencies:
2491 | color-convert: 1.9.3
2492 |
2493 | ansi-styles@4.3.0:
2494 | dependencies:
2495 | color-convert: 2.0.1
2496 |
2497 | argparse@2.0.1: {}
2498 |
2499 | array-union@1.0.2:
2500 | dependencies:
2501 | array-uniq: 1.0.3
2502 |
2503 | array-union@2.1.0: {}
2504 |
2505 | array-uniq@1.0.3: {}
2506 |
2507 | async@3.2.5: {}
2508 |
2509 | asynckit@0.4.0: {}
2510 |
2511 | axios@1.7.7(debug@4.3.7):
2512 | dependencies:
2513 | follow-redirects: 1.15.9(debug@4.3.7)
2514 | form-data: 4.0.1
2515 | proxy-from-env: 1.1.0
2516 | transitivePeerDependencies:
2517 | - debug
2518 |
2519 | babel-plugin-jsx-dom-expressions@0.37.19(@babel/core@7.24.4):
2520 | dependencies:
2521 | '@babel/core': 7.24.4
2522 | '@babel/helper-module-imports': 7.18.6
2523 | '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4)
2524 | '@babel/types': 7.24.0
2525 | html-entities: 2.3.3
2526 | validate-html-nesting: 1.2.2
2527 |
2528 | babel-preset-solid@1.8.16(@babel/core@7.24.4):
2529 | dependencies:
2530 | '@babel/core': 7.24.4
2531 | babel-plugin-jsx-dom-expressions: 0.37.19(@babel/core@7.24.4)
2532 |
2533 | balanced-match@1.0.2: {}
2534 |
2535 | before-after-hook@2.2.3: {}
2536 |
2537 | better-promises@1.0.0:
2538 | dependencies:
2539 | error-kid: 1.0.2
2540 |
2541 | brace-expansion@1.1.11:
2542 | dependencies:
2543 | balanced-match: 1.0.2
2544 | concat-map: 0.0.1
2545 |
2546 | brace-expansion@2.0.1:
2547 | dependencies:
2548 | balanced-match: 1.0.2
2549 |
2550 | braces@3.0.2:
2551 | dependencies:
2552 | fill-range: 7.0.1
2553 |
2554 | browserslist@4.23.0:
2555 | dependencies:
2556 | caniuse-lite: 1.0.30001607
2557 | electron-to-chromium: 1.4.730
2558 | node-releases: 2.0.14
2559 | update-browserslist-db: 1.0.13(browserslist@4.23.0)
2560 |
2561 | callsites@3.1.0: {}
2562 |
2563 | caniuse-lite@1.0.30001607: {}
2564 |
2565 | chalk@2.4.2:
2566 | dependencies:
2567 | ansi-styles: 3.2.1
2568 | escape-string-regexp: 1.0.5
2569 | supports-color: 5.5.0
2570 |
2571 | chalk@4.1.2:
2572 | dependencies:
2573 | ansi-styles: 4.3.0
2574 | supports-color: 7.2.0
2575 |
2576 | classnames@2.5.1: {}
2577 |
2578 | color-convert@1.9.3:
2579 | dependencies:
2580 | color-name: 1.1.3
2581 |
2582 | color-convert@2.0.1:
2583 | dependencies:
2584 | color-name: 1.1.4
2585 |
2586 | color-name@1.1.3: {}
2587 |
2588 | color-name@1.1.4: {}
2589 |
2590 | combined-stream@1.0.8:
2591 | dependencies:
2592 | delayed-stream: 1.0.0
2593 |
2594 | commander@11.1.0: {}
2595 |
2596 | commondir@1.0.1: {}
2597 |
2598 | concat-map@0.0.1: {}
2599 |
2600 | convert-source-map@2.0.0: {}
2601 |
2602 | cross-env@7.0.3:
2603 | dependencies:
2604 | cross-spawn: 7.0.3
2605 |
2606 | cross-spawn@7.0.3:
2607 | dependencies:
2608 | path-key: 3.1.1
2609 | shebang-command: 2.0.0
2610 | which: 2.0.2
2611 |
2612 | csstype@3.1.3: {}
2613 |
2614 | debug@4.3.4:
2615 | dependencies:
2616 | ms: 2.1.2
2617 |
2618 | debug@4.3.7:
2619 | dependencies:
2620 | ms: 2.1.3
2621 |
2622 | deep-is@0.1.4: {}
2623 |
2624 | deepmerge@4.3.1: {}
2625 |
2626 | delayed-stream@1.0.0: {}
2627 |
2628 | deprecation@2.3.1: {}
2629 |
2630 | dir-glob@3.0.1:
2631 | dependencies:
2632 | path-type: 4.0.0
2633 |
2634 | doctrine@3.0.0:
2635 | dependencies:
2636 | esutils: 2.0.3
2637 |
2638 | electron-to-chromium@1.4.730: {}
2639 |
2640 | email-addresses@5.0.0: {}
2641 |
2642 | error-kid@1.0.2: {}
2643 |
2644 | eruda@3.0.1: {}
2645 |
2646 | esbuild@0.20.2:
2647 | optionalDependencies:
2648 | '@esbuild/aix-ppc64': 0.20.2
2649 | '@esbuild/android-arm': 0.20.2
2650 | '@esbuild/android-arm64': 0.20.2
2651 | '@esbuild/android-x64': 0.20.2
2652 | '@esbuild/darwin-arm64': 0.20.2
2653 | '@esbuild/darwin-x64': 0.20.2
2654 | '@esbuild/freebsd-arm64': 0.20.2
2655 | '@esbuild/freebsd-x64': 0.20.2
2656 | '@esbuild/linux-arm': 0.20.2
2657 | '@esbuild/linux-arm64': 0.20.2
2658 | '@esbuild/linux-ia32': 0.20.2
2659 | '@esbuild/linux-loong64': 0.20.2
2660 | '@esbuild/linux-mips64el': 0.20.2
2661 | '@esbuild/linux-ppc64': 0.20.2
2662 | '@esbuild/linux-riscv64': 0.20.2
2663 | '@esbuild/linux-s390x': 0.20.2
2664 | '@esbuild/linux-x64': 0.20.2
2665 | '@esbuild/netbsd-x64': 0.20.2
2666 | '@esbuild/openbsd-x64': 0.20.2
2667 | '@esbuild/sunos-x64': 0.20.2
2668 | '@esbuild/win32-arm64': 0.20.2
2669 | '@esbuild/win32-ia32': 0.20.2
2670 | '@esbuild/win32-x64': 0.20.2
2671 |
2672 | escalade@3.1.2: {}
2673 |
2674 | escape-string-regexp@1.0.5: {}
2675 |
2676 | escape-string-regexp@4.0.0: {}
2677 |
2678 | eslint-plugin-solid@0.14.0(eslint@8.57.0)(typescript@5.4.4):
2679 | dependencies:
2680 | '@typescript-eslint/utils': 7.6.0(eslint@8.57.0)(typescript@5.4.4)
2681 | eslint: 8.57.0
2682 | estraverse: 5.3.0
2683 | is-html: 2.0.0
2684 | kebab-case: 1.0.2
2685 | known-css-properties: 0.30.0
2686 | style-to-object: 1.0.6
2687 | transitivePeerDependencies:
2688 | - supports-color
2689 | - typescript
2690 |
2691 | eslint-scope@7.2.2:
2692 | dependencies:
2693 | esrecurse: 4.3.0
2694 | estraverse: 5.3.0
2695 |
2696 | eslint-visitor-keys@3.4.3: {}
2697 |
2698 | eslint@8.57.0:
2699 | dependencies:
2700 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
2701 | '@eslint-community/regexpp': 4.10.0
2702 | '@eslint/eslintrc': 2.1.4
2703 | '@eslint/js': 8.57.0
2704 | '@humanwhocodes/config-array': 0.11.14
2705 | '@humanwhocodes/module-importer': 1.0.1
2706 | '@nodelib/fs.walk': 1.2.8
2707 | '@ungap/structured-clone': 1.2.0
2708 | ajv: 6.12.6
2709 | chalk: 4.1.2
2710 | cross-spawn: 7.0.3
2711 | debug: 4.3.4
2712 | doctrine: 3.0.0
2713 | escape-string-regexp: 4.0.0
2714 | eslint-scope: 7.2.2
2715 | eslint-visitor-keys: 3.4.3
2716 | espree: 9.6.1
2717 | esquery: 1.5.0
2718 | esutils: 2.0.3
2719 | fast-deep-equal: 3.1.3
2720 | file-entry-cache: 6.0.1
2721 | find-up: 5.0.0
2722 | glob-parent: 6.0.2
2723 | globals: 13.24.0
2724 | graphemer: 1.4.0
2725 | ignore: 5.3.1
2726 | imurmurhash: 0.1.4
2727 | is-glob: 4.0.3
2728 | is-path-inside: 3.0.3
2729 | js-yaml: 4.1.0
2730 | json-stable-stringify-without-jsonify: 1.0.1
2731 | levn: 0.4.1
2732 | lodash.merge: 4.6.2
2733 | minimatch: 3.1.2
2734 | natural-compare: 1.4.0
2735 | optionator: 0.9.3
2736 | strip-ansi: 6.0.1
2737 | text-table: 0.2.0
2738 | transitivePeerDependencies:
2739 | - supports-color
2740 |
2741 | espree@9.6.1:
2742 | dependencies:
2743 | acorn: 8.11.3
2744 | acorn-jsx: 5.3.2(acorn@8.11.3)
2745 | eslint-visitor-keys: 3.4.3
2746 |
2747 | esquery@1.5.0:
2748 | dependencies:
2749 | estraverse: 5.3.0
2750 |
2751 | esrecurse@4.3.0:
2752 | dependencies:
2753 | estraverse: 5.3.0
2754 |
2755 | estraverse@5.3.0: {}
2756 |
2757 | esutils@2.0.3: {}
2758 |
2759 | eventsource@2.0.2: {}
2760 |
2761 | fast-deep-equal@3.1.3: {}
2762 |
2763 | fast-glob@3.3.2:
2764 | dependencies:
2765 | '@nodelib/fs.stat': 2.0.5
2766 | '@nodelib/fs.walk': 1.2.8
2767 | glob-parent: 5.1.2
2768 | merge2: 1.4.1
2769 | micromatch: 4.0.5
2770 |
2771 | fast-json-stable-stringify@2.1.0: {}
2772 |
2773 | fast-levenshtein@2.0.6: {}
2774 |
2775 | fastq@1.17.1:
2776 | dependencies:
2777 | reusify: 1.0.4
2778 |
2779 | file-entry-cache@6.0.1:
2780 | dependencies:
2781 | flat-cache: 3.2.0
2782 |
2783 | filename-reserved-regex@2.0.0: {}
2784 |
2785 | filenamify@4.3.0:
2786 | dependencies:
2787 | filename-reserved-regex: 2.0.0
2788 | strip-outer: 1.0.1
2789 | trim-repeated: 1.0.0
2790 |
2791 | fill-range@7.0.1:
2792 | dependencies:
2793 | to-regex-range: 5.0.1
2794 |
2795 | find-cache-dir@3.3.2:
2796 | dependencies:
2797 | commondir: 1.0.1
2798 | make-dir: 3.1.0
2799 | pkg-dir: 4.2.0
2800 |
2801 | find-up@4.1.0:
2802 | dependencies:
2803 | locate-path: 5.0.0
2804 | path-exists: 4.0.0
2805 |
2806 | find-up@5.0.0:
2807 | dependencies:
2808 | locate-path: 6.0.0
2809 | path-exists: 4.0.0
2810 |
2811 | flat-cache@3.2.0:
2812 | dependencies:
2813 | flatted: 3.3.1
2814 | keyv: 4.5.4
2815 | rimraf: 3.0.2
2816 |
2817 | flatted@3.3.1: {}
2818 |
2819 | follow-redirects@1.15.9(debug@4.3.7):
2820 | optionalDependencies:
2821 | debug: 4.3.7
2822 |
2823 | form-data@4.0.1:
2824 | dependencies:
2825 | asynckit: 0.4.0
2826 | combined-stream: 1.0.8
2827 | mime-types: 2.1.35
2828 |
2829 | fp-ts@2.16.11: {}
2830 |
2831 | fs-extra@11.2.0:
2832 | dependencies:
2833 | graceful-fs: 4.2.11
2834 | jsonfile: 6.1.0
2835 | universalify: 2.0.1
2836 |
2837 | fs.realpath@1.0.0: {}
2838 |
2839 | fsevents@2.3.3:
2840 | optional: true
2841 |
2842 | gensync@1.0.0-beta.2: {}
2843 |
2844 | gh-pages@6.1.1:
2845 | dependencies:
2846 | async: 3.2.5
2847 | commander: 11.1.0
2848 | email-addresses: 5.0.0
2849 | filenamify: 4.3.0
2850 | find-cache-dir: 3.3.2
2851 | fs-extra: 11.2.0
2852 | globby: 6.1.0
2853 |
2854 | glob-parent@5.1.2:
2855 | dependencies:
2856 | is-glob: 4.0.3
2857 |
2858 | glob-parent@6.0.2:
2859 | dependencies:
2860 | is-glob: 4.0.3
2861 |
2862 | glob@7.2.3:
2863 | dependencies:
2864 | fs.realpath: 1.0.0
2865 | inflight: 1.0.6
2866 | inherits: 2.0.4
2867 | minimatch: 3.1.2
2868 | once: 1.4.0
2869 | path-is-absolute: 1.0.1
2870 |
2871 | globals@11.12.0: {}
2872 |
2873 | globals@13.24.0:
2874 | dependencies:
2875 | type-fest: 0.20.2
2876 |
2877 | globals@15.2.0: {}
2878 |
2879 | globby@11.1.0:
2880 | dependencies:
2881 | array-union: 2.1.0
2882 | dir-glob: 3.0.1
2883 | fast-glob: 3.3.2
2884 | ignore: 5.3.1
2885 | merge2: 1.4.1
2886 | slash: 3.0.0
2887 |
2888 | globby@6.1.0:
2889 | dependencies:
2890 | array-union: 1.0.2
2891 | glob: 7.2.3
2892 | object-assign: 4.1.1
2893 | pify: 2.3.0
2894 | pinkie-promise: 2.0.1
2895 |
2896 | globrex@0.1.2: {}
2897 |
2898 | graceful-fs@4.2.11: {}
2899 |
2900 | graphemer@1.4.0: {}
2901 |
2902 | has-flag@3.0.0: {}
2903 |
2904 | has-flag@4.0.0: {}
2905 |
2906 | html-entities@2.3.3: {}
2907 |
2908 | html-tags@3.3.1: {}
2909 |
2910 | ignore@5.3.1: {}
2911 |
2912 | import-fresh@3.3.0:
2913 | dependencies:
2914 | parent-module: 1.0.1
2915 | resolve-from: 4.0.0
2916 |
2917 | imurmurhash@0.1.4: {}
2918 |
2919 | inflight@1.0.6:
2920 | dependencies:
2921 | once: 1.4.0
2922 | wrappy: 1.0.2
2923 |
2924 | inherits@2.0.4: {}
2925 |
2926 | inline-style-parser@0.2.3: {}
2927 |
2928 | is-extglob@2.1.1: {}
2929 |
2930 | is-glob@4.0.3:
2931 | dependencies:
2932 | is-extglob: 2.1.1
2933 |
2934 | is-html@2.0.0:
2935 | dependencies:
2936 | html-tags: 3.3.1
2937 |
2938 | is-number@7.0.0: {}
2939 |
2940 | is-path-inside@3.0.3: {}
2941 |
2942 | is-what@4.1.16: {}
2943 |
2944 | isexe@2.0.0: {}
2945 |
2946 | js-tokens@4.0.0: {}
2947 |
2948 | js-yaml@4.1.0:
2949 | dependencies:
2950 | argparse: 2.0.1
2951 |
2952 | jsesc@2.5.2: {}
2953 |
2954 | json-buffer@3.0.1: {}
2955 |
2956 | json-schema-traverse@0.4.1: {}
2957 |
2958 | json-stable-stringify-without-jsonify@1.0.1: {}
2959 |
2960 | json5@2.2.3: {}
2961 |
2962 | jsonfile@6.1.0:
2963 | dependencies:
2964 | universalify: 2.0.1
2965 | optionalDependencies:
2966 | graceful-fs: 4.2.11
2967 |
2968 | kebab-case@1.0.2: {}
2969 |
2970 | keyv@4.5.4:
2971 | dependencies:
2972 | json-buffer: 3.0.1
2973 |
2974 | known-css-properties@0.30.0: {}
2975 |
2976 | levn@0.4.1:
2977 | dependencies:
2978 | prelude-ls: 1.2.1
2979 | type-check: 0.4.0
2980 |
2981 | locate-path@5.0.0:
2982 | dependencies:
2983 | p-locate: 4.1.0
2984 |
2985 | locate-path@6.0.0:
2986 | dependencies:
2987 | p-locate: 5.0.0
2988 |
2989 | lodash.merge@4.6.2: {}
2990 |
2991 | lru-cache@5.1.1:
2992 | dependencies:
2993 | yallist: 3.1.1
2994 |
2995 | lru-cache@6.0.0:
2996 | dependencies:
2997 | yallist: 4.0.0
2998 |
2999 | make-dir@3.1.0:
3000 | dependencies:
3001 | semver: 6.3.1
3002 |
3003 | merge-anything@5.1.7:
3004 | dependencies:
3005 | is-what: 4.1.16
3006 |
3007 | merge2@1.4.1: {}
3008 |
3009 | micromatch@4.0.5:
3010 | dependencies:
3011 | braces: 3.0.2
3012 | picomatch: 2.3.1
3013 |
3014 | mime-db@1.52.0: {}
3015 |
3016 | mime-types@2.1.35:
3017 | dependencies:
3018 | mime-db: 1.52.0
3019 |
3020 | minimatch@3.1.2:
3021 | dependencies:
3022 | brace-expansion: 1.1.11
3023 |
3024 | minimatch@9.0.4:
3025 | dependencies:
3026 | brace-expansion: 2.0.1
3027 |
3028 | mitt@3.0.1: {}
3029 |
3030 | ms@2.1.2: {}
3031 |
3032 | ms@2.1.3: {}
3033 |
3034 | nanoid@3.3.7: {}
3035 |
3036 | natural-compare@1.4.0: {}
3037 |
3038 | node-fetch@2.7.0:
3039 | dependencies:
3040 | whatwg-url: 5.0.0
3041 |
3042 | node-releases@2.0.14: {}
3043 |
3044 | object-assign@4.1.1: {}
3045 |
3046 | once@1.4.0:
3047 | dependencies:
3048 | wrappy: 1.0.2
3049 |
3050 | optionator@0.9.3:
3051 | dependencies:
3052 | '@aashutoshrathi/word-wrap': 1.2.6
3053 | deep-is: 0.1.4
3054 | fast-levenshtein: 2.0.6
3055 | levn: 0.4.1
3056 | prelude-ls: 1.2.1
3057 | type-check: 0.4.0
3058 |
3059 | p-limit@2.3.0:
3060 | dependencies:
3061 | p-try: 2.2.0
3062 |
3063 | p-limit@3.1.0:
3064 | dependencies:
3065 | yocto-queue: 0.1.0
3066 |
3067 | p-locate@4.1.0:
3068 | dependencies:
3069 | p-limit: 2.3.0
3070 |
3071 | p-locate@5.0.0:
3072 | dependencies:
3073 | p-limit: 3.1.0
3074 |
3075 | p-try@2.2.0: {}
3076 |
3077 | parent-module@1.0.1:
3078 | dependencies:
3079 | callsites: 3.1.0
3080 |
3081 | path-exists@4.0.0: {}
3082 |
3083 | path-is-absolute@1.0.1: {}
3084 |
3085 | path-key@3.1.1: {}
3086 |
3087 | path-type@4.0.0: {}
3088 |
3089 | picocolors@1.0.0: {}
3090 |
3091 | picocolors@1.1.0: {}
3092 |
3093 | picomatch@2.3.1: {}
3094 |
3095 | pify@2.3.0: {}
3096 |
3097 | pinkie-promise@2.0.1:
3098 | dependencies:
3099 | pinkie: 2.0.4
3100 |
3101 | pinkie@2.0.4: {}
3102 |
3103 | pkg-dir@4.2.0:
3104 | dependencies:
3105 | find-up: 4.1.0
3106 |
3107 | postcss@8.4.38:
3108 | dependencies:
3109 | nanoid: 3.3.7
3110 | picocolors: 1.0.0
3111 | source-map-js: 1.2.0
3112 |
3113 | prelude-ls@1.2.1: {}
3114 |
3115 | proxy-from-env@1.1.0: {}
3116 |
3117 | punycode@2.3.1: {}
3118 |
3119 | queue-microtask@1.2.3: {}
3120 |
3121 | resolve-from@4.0.0: {}
3122 |
3123 | reusify@1.0.4: {}
3124 |
3125 | rimraf@3.0.2:
3126 | dependencies:
3127 | glob: 7.2.3
3128 |
3129 | rollup@4.14.1:
3130 | dependencies:
3131 | '@types/estree': 1.0.5
3132 | optionalDependencies:
3133 | '@rollup/rollup-android-arm-eabi': 4.14.1
3134 | '@rollup/rollup-android-arm64': 4.14.1
3135 | '@rollup/rollup-darwin-arm64': 4.14.1
3136 | '@rollup/rollup-darwin-x64': 4.14.1
3137 | '@rollup/rollup-linux-arm-gnueabihf': 4.14.1
3138 | '@rollup/rollup-linux-arm64-gnu': 4.14.1
3139 | '@rollup/rollup-linux-arm64-musl': 4.14.1
3140 | '@rollup/rollup-linux-powerpc64le-gnu': 4.14.1
3141 | '@rollup/rollup-linux-riscv64-gnu': 4.14.1
3142 | '@rollup/rollup-linux-s390x-gnu': 4.14.1
3143 | '@rollup/rollup-linux-x64-gnu': 4.14.1
3144 | '@rollup/rollup-linux-x64-musl': 4.14.1
3145 | '@rollup/rollup-win32-arm64-msvc': 4.14.1
3146 | '@rollup/rollup-win32-ia32-msvc': 4.14.1
3147 | '@rollup/rollup-win32-x64-msvc': 4.14.1
3148 | fsevents: 2.3.3
3149 |
3150 | run-parallel@1.2.0:
3151 | dependencies:
3152 | queue-microtask: 1.2.3
3153 |
3154 | semver@6.3.1: {}
3155 |
3156 | semver@7.6.0:
3157 | dependencies:
3158 | lru-cache: 6.0.0
3159 |
3160 | seroval-plugins@1.3.3(seroval@1.3.2):
3161 | dependencies:
3162 | seroval: 1.3.2
3163 |
3164 | seroval@1.3.2: {}
3165 |
3166 | shebang-command@2.0.0:
3167 | dependencies:
3168 | shebang-regex: 3.0.0
3169 |
3170 | shebang-regex@3.0.0: {}
3171 |
3172 | slash@3.0.0: {}
3173 |
3174 | solid-devtools@0.30.1(solid-js@1.9.9)(vite@5.2.11(@types/node@20.12.5)):
3175 | dependencies:
3176 | '@babel/core': 7.24.4
3177 | '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.4)
3178 | '@babel/types': 7.24.0
3179 | '@solid-devtools/debugger': 0.23.4(solid-js@1.9.9)
3180 | '@solid-devtools/shared': 0.13.2(solid-js@1.9.9)
3181 | solid-js: 1.9.9
3182 | optionalDependencies:
3183 | vite: 5.2.11(@types/node@20.12.5)
3184 | transitivePeerDependencies:
3185 | - supports-color
3186 |
3187 | solid-js@1.9.9:
3188 | dependencies:
3189 | csstype: 3.1.3
3190 | seroval: 1.3.2
3191 | seroval-plugins: 1.3.3(seroval@1.3.2)
3192 |
3193 | solid-refresh@0.6.3(solid-js@1.9.9):
3194 | dependencies:
3195 | '@babel/generator': 7.24.4
3196 | '@babel/helper-module-imports': 7.24.3
3197 | '@babel/types': 7.24.0
3198 | solid-js: 1.9.9
3199 |
3200 | source-map-js@1.2.0: {}
3201 |
3202 | strip-ansi@6.0.1:
3203 | dependencies:
3204 | ansi-regex: 5.0.1
3205 |
3206 | strip-json-comments@3.1.1: {}
3207 |
3208 | strip-outer@1.0.1:
3209 | dependencies:
3210 | escape-string-regexp: 1.0.5
3211 |
3212 | style-to-object@1.0.6:
3213 | dependencies:
3214 | inline-style-parser: 0.2.3
3215 |
3216 | supports-color@5.5.0:
3217 | dependencies:
3218 | has-flag: 3.0.0
3219 |
3220 | supports-color@7.2.0:
3221 | dependencies:
3222 | has-flag: 4.0.0
3223 |
3224 | text-table@0.2.0: {}
3225 |
3226 | to-fast-properties@2.0.0: {}
3227 |
3228 | to-regex-range@5.0.1:
3229 | dependencies:
3230 | is-number: 7.0.0
3231 |
3232 | tr46@0.0.3: {}
3233 |
3234 | trim-repeated@1.0.0:
3235 | dependencies:
3236 | escape-string-regexp: 1.0.5
3237 |
3238 | ts-api-utils@1.3.0(typescript@5.4.4):
3239 | dependencies:
3240 | typescript: 5.4.4
3241 |
3242 | tsconfck@3.0.3(typescript@5.4.4):
3243 | optionalDependencies:
3244 | typescript: 5.4.4
3245 |
3246 | tweetnacl-util@0.15.1: {}
3247 |
3248 | tweetnacl@1.0.3: {}
3249 |
3250 | type-check@0.4.0:
3251 | dependencies:
3252 | prelude-ls: 1.2.1
3253 |
3254 | type-fest@0.20.2: {}
3255 |
3256 | typescript-eslint@7.8.0(eslint@8.57.0)(typescript@5.4.4):
3257 | dependencies:
3258 | '@typescript-eslint/eslint-plugin': 7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.4))(eslint@8.57.0)(typescript@5.4.4)
3259 | '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.4)
3260 | '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.4)
3261 | eslint: 8.57.0
3262 | optionalDependencies:
3263 | typescript: 5.4.4
3264 | transitivePeerDependencies:
3265 | - supports-color
3266 |
3267 | typescript@5.4.4: {}
3268 |
3269 | ua-parser-js@1.0.38: {}
3270 |
3271 | undici-types@5.26.5: {}
3272 |
3273 | universal-user-agent@6.0.1: {}
3274 |
3275 | universalify@2.0.1: {}
3276 |
3277 | update-browserslist-db@1.0.13(browserslist@4.23.0):
3278 | dependencies:
3279 | browserslist: 4.23.0
3280 | escalade: 3.1.2
3281 | picocolors: 1.0.0
3282 |
3283 | uri-js@4.4.1:
3284 | dependencies:
3285 | punycode: 2.3.1
3286 |
3287 | valibot@1.1.0(typescript@5.4.4):
3288 | optionalDependencies:
3289 | typescript: 5.4.4
3290 |
3291 | validate-html-nesting@1.2.2: {}
3292 |
3293 | vite-plugin-mkcert@1.17.6(vite@5.2.11(@types/node@20.12.5)):
3294 | dependencies:
3295 | '@octokit/rest': 20.1.1
3296 | axios: 1.7.7(debug@4.3.7)
3297 | debug: 4.3.7
3298 | picocolors: 1.1.0
3299 | vite: 5.2.11(@types/node@20.12.5)
3300 | transitivePeerDependencies:
3301 | - supports-color
3302 |
3303 | vite-plugin-solid@2.10.2(solid-js@1.9.9)(vite@5.2.11(@types/node@20.12.5)):
3304 | dependencies:
3305 | '@babel/core': 7.24.4
3306 | '@types/babel__core': 7.20.5
3307 | babel-preset-solid: 1.8.16(@babel/core@7.24.4)
3308 | merge-anything: 5.1.7
3309 | solid-js: 1.9.9
3310 | solid-refresh: 0.6.3(solid-js@1.9.9)
3311 | vite: 5.2.11(@types/node@20.12.5)
3312 | vitefu: 0.2.5(vite@5.2.11(@types/node@20.12.5))
3313 | transitivePeerDependencies:
3314 | - supports-color
3315 |
3316 | vite-tsconfig-paths@4.3.2(typescript@5.4.4)(vite@5.2.11(@types/node@20.12.5)):
3317 | dependencies:
3318 | debug: 4.3.4
3319 | globrex: 0.1.2
3320 | tsconfck: 3.0.3(typescript@5.4.4)
3321 | optionalDependencies:
3322 | vite: 5.2.11(@types/node@20.12.5)
3323 | transitivePeerDependencies:
3324 | - supports-color
3325 | - typescript
3326 |
3327 | vite@5.2.11(@types/node@20.12.5):
3328 | dependencies:
3329 | esbuild: 0.20.2
3330 | postcss: 8.4.38
3331 | rollup: 4.14.1
3332 | optionalDependencies:
3333 | '@types/node': 20.12.5
3334 | fsevents: 2.3.3
3335 |
3336 | vitefu@0.2.5(vite@5.2.11(@types/node@20.12.5)):
3337 | optionalDependencies:
3338 | vite: 5.2.11(@types/node@20.12.5)
3339 |
3340 | webidl-conversions@3.0.1: {}
3341 |
3342 | whatwg-url@5.0.0:
3343 | dependencies:
3344 | tr46: 0.0.3
3345 | webidl-conversions: 3.0.1
3346 |
3347 | which@2.0.2:
3348 | dependencies:
3349 | isexe: 2.0.0
3350 |
3351 | wrappy@1.0.2: {}
3352 |
3353 | yallist@3.1.1: {}
3354 |
3355 | yallist@4.0.0: {}
3356 |
3357 | yocto-queue@0.1.0: {}
3358 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | ignoredBuiltDependencies:
2 | - esbuild
3 |
--------------------------------------------------------------------------------
/public/tonconnect-manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "url": "https://ton.vote",
3 | "name": "TON Vote",
4 | "iconUrl": "https://ton.vote/logo.png"
5 | }
--------------------------------------------------------------------------------
/src/components/App.tsx:
--------------------------------------------------------------------------------
1 | import { Navigate, Route, HashRouter } from '@solidjs/router';
2 | import { For } from 'solid-js';
3 |
4 | import { routes } from '@/navigation/routes.js';
5 |
6 | export function App() {
7 | return (
8 |
9 |
10 | {(route) => }
11 |
12 | }/>
13 |
14 | );
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/DisplayData/DisplayData.css:
--------------------------------------------------------------------------------
1 | .display-data__line {
2 | display: flex;
3 | align-items: center;
4 | margin-bottom: 8px;
5 | gap: 10px;
6 | flex-flow: wrap;
7 | }
8 |
9 | .display-data__line-title {
10 | border: 1px solid var(--tg-theme-accent-text-color);
11 | background-color: var(--tg-theme-bg-color);
12 | border-radius: 5px;
13 | padding: 2px 8px 4px;
14 | box-sizing: border-box;
15 | }
16 |
17 | .display-data__line-value {
18 | word-break: break-word;
19 | }
20 |
--------------------------------------------------------------------------------
/src/components/DisplayData/DisplayData.tsx:
--------------------------------------------------------------------------------
1 | import { isRGB, type RGB as RGBType } from '@tma.js/sdk-solid';
2 | import { type Component, For, type JSXElement, Match, Switch } from 'solid-js';
3 |
4 | import { RGB } from '@/components/RGB/RGB.js';
5 |
6 | import './DisplayData.css';
7 |
8 | export interface DisplayDataRow {
9 | title: string;
10 | value?: RGBType | string | boolean | JSXElement;
11 | }
12 |
13 | export interface DisplayDataProps {
14 | rows: DisplayDataRow[];
15 | }
16 |
17 | export const DisplayData: Component = (props) => {
18 | return (
19 |
20 |
21 | {(row) => (
22 |
23 | {row.title}
24 |
25 |
26 |
27 | {(color) => }
28 |
29 | ❌
30 | ✔️
31 | empty
32 |
33 |
34 |
35 | )}
36 |
37 |
38 | );
39 | };
40 |
--------------------------------------------------------------------------------
/src/components/Link/Link.css:
--------------------------------------------------------------------------------
1 | .link {
2 | text-decoration: none;
3 | color: var(--tg-theme-link-color);
4 | }
--------------------------------------------------------------------------------
/src/components/Link/Link.tsx:
--------------------------------------------------------------------------------
1 | import { A, type AnchorProps } from '@solidjs/router';
2 | import { openLink } from '@tma.js/sdk-solid';
3 | import type { Component } from 'solid-js';
4 |
5 | import { classNames } from '@/css/classnames.js';
6 |
7 | import './Link.css';
8 |
9 | export const Link: Component = (props) => {
10 | const onClick = (e: MouseEvent) => {
11 | // Compute if target path is external. In this case we would like to open link using
12 | // TMA method.
13 | const targetUrl = new URL(props.href, window.location.toString());
14 | const currentUrl = new URL(window.location.toString());
15 | const isExternal = targetUrl.protocol !== currentUrl.protocol
16 | || targetUrl.host !== currentUrl.host;
17 |
18 | if (isExternal) {
19 | e.preventDefault();
20 | openLink(targetUrl.toString());
21 | }
22 | };
23 |
24 | return (
25 |
30 | );
31 | };
32 |
--------------------------------------------------------------------------------
/src/components/Page/Page.css:
--------------------------------------------------------------------------------
1 | .page {
2 | padding: 0 10px;
3 | box-sizing: border-box;
4 | }
5 |
6 | .page__disclaimer {
7 | margin-bottom: 16px;
8 | }
--------------------------------------------------------------------------------
/src/components/Page/Page.tsx:
--------------------------------------------------------------------------------
1 | import {
2 | type Component,
3 | createEffect,
4 | createMemo,
5 | type JSX, onCleanup,
6 | type ParentProps,
7 | } from 'solid-js';
8 | import { backButton } from '@tma.js/sdk-solid';
9 |
10 | import { useNavigate } from '@solidjs/router';
11 |
12 | import './Page.css';
13 |
14 | export interface PageProps extends ParentProps {
15 | title: string;
16 | disclaimer?: JSX.Element;
17 | /**
18 | * True if it is allowed to go back from this page.
19 | * @default true
20 | */
21 | back?: boolean;
22 | }
23 |
24 | export const Page: Component = (props) => {
25 | const navigate = useNavigate();
26 | const back = createMemo(() => typeof props.back === 'boolean' ? props.back : true);
27 |
28 | createEffect(() => {
29 | if (back()) {
30 | backButton.show();
31 | onCleanup(backButton.onClick(() => {
32 | navigate(-1);
33 | }));
34 | return;
35 | }
36 | backButton.hide();
37 | });
38 |
39 | return (
40 |
41 |
{props.title}
42 | {props.disclaimer &&
{props.disclaimer}
}
43 | {props.children}
44 |
45 | );
46 | };
47 |
--------------------------------------------------------------------------------
/src/components/RGB/RGB.css:
--------------------------------------------------------------------------------
1 | .rgb {
2 | display: inline-flex;
3 | align-items: center;
4 | gap: 5px;
5 | }
6 |
7 | .rgb__icon {
8 | width: 18px;
9 | aspect-ratio: 1;
10 | border: 1px solid #555;
11 | border-radius: 50%;
12 | }
--------------------------------------------------------------------------------
/src/components/RGB/RGB.tsx:
--------------------------------------------------------------------------------
1 | import type { RGB as RGBType } from '@tma.js/sdk-solid';
2 | import { type Component, type JSX, splitProps } from 'solid-js';
3 |
4 | import { classNames } from '@/css/classnames.js';
5 |
6 | import './RGB.css';
7 |
8 | export type RGBProps = JSX.IntrinsicElements['span'] & {
9 | color: RGBType;
10 | };
11 |
12 | export const RGB: Component = (props) => (
13 |
14 |
15 | {props.color}
16 |
17 | );
18 |
--------------------------------------------------------------------------------
/src/components/Root.tsx:
--------------------------------------------------------------------------------
1 | import { ErrorBoundary, type Component, Switch, Match } from 'solid-js';
2 |
3 | import { App } from '@/components/App.js';
4 | import { TonConnectUIProvider } from '@/tonconnect/TonConnectUIProvider.js';
5 | import { publicUrl } from '@/helpers/publicUrl.js';
6 |
7 | export const Root: Component = () => {
8 | return (
9 | {
11 | console.error('ErrorBoundary handled error:', err);
12 |
13 | return (
14 |
15 |
ErrorBoundary handled error:
16 |
17 |
18 |
19 |
20 | {v => v()}
21 |
22 |
23 | {v => v()}
24 |
25 |
26 |
27 |
28 |
29 | );
30 | }}
31 | >
32 |
33 |
34 |
35 |
36 | );
37 | };
38 |
--------------------------------------------------------------------------------
/src/css/bem.ts:
--------------------------------------------------------------------------------
1 | import { classNames, isRecord } from '@/css/classnames.js';
2 |
3 | export interface BlockFn {
4 | (...mods: unknown[]): string;
5 | }
6 |
7 | export interface ElemFn {
8 | (elem: string, ...mods: unknown[]): string;
9 | }
10 |
11 | /**
12 | * Applies mods to the specified element.
13 | * @param element - element name.
14 | * @param mod - mod to apply.
15 | */
16 | function applyMods(element: string, mod: unknown): string {
17 | if (Array.isArray(mod)) {
18 | return classNames(mod.map(m => applyMods(element, m)));
19 | }
20 | if (isRecord(mod)) {
21 | return classNames(
22 | Object.entries(mod).map(([mod, v]) => v && applyMods(element, mod)),
23 | );
24 | }
25 | const v = classNames(mod);
26 | return v && `${element}--${v}`;
27 | }
28 |
29 | /**
30 | * Computes final classname for the specified element.
31 | * @param element - element name.
32 | * @param mods - mod to apply.
33 | */
34 | function computeClassnames(element: string, ...mods: unknown[]): string {
35 | return classNames(element, applyMods(element, mods));
36 | }
37 |
38 | /**
39 | * @returns A tuple, containing two functions. The first one generates classnames list for the
40 | * block, the second one generates classnames for its elements.
41 | * @param block - BEM block name.
42 | */
43 | export function bem(block: string): [BlockFn, ElemFn] {
44 | return [
45 | (...mods) => computeClassnames(block, mods),
46 | (elem, ...mods) => computeClassnames(`${block}__${elem}`, mods),
47 | ];
48 | }
--------------------------------------------------------------------------------
/src/css/classnames.ts:
--------------------------------------------------------------------------------
1 | export function isRecord(v: unknown): v is Record {
2 | return !!v && typeof v === 'object' && !Array.isArray(v);
3 | }
4 |
5 | /**
6 | * Function which joins passed values with space following these rules:
7 | * 1. If value is non-empty string, it will be added to output.
8 | * 2. If value is object, only those keys will be added, which values are truthy.
9 | * 3. If value is array, classNames will be called with this value spread.
10 | * 4. All other values are ignored.
11 | *
12 | * You can find this function to similar one from the package {@link https://www.npmjs.com/package/classnames|classnames}.
13 | * @param values - values array.
14 | * @returns Final class name.
15 | */
16 | export function classNames(...values: any[]): string {
17 | return values
18 | .map((value) => {
19 | if (typeof value === 'string') {
20 | return value;
21 | }
22 |
23 | if (isRecord(value)) {
24 | return classNames(Object.entries(value).map((entry) => entry[1] && entry[0]));
25 | }
26 |
27 | if (Array.isArray(value)) {
28 | return classNames(...value);
29 | }
30 | })
31 | .filter(Boolean)
32 | .join(' ');
33 | }
34 |
35 | type UnionStringKeys = U extends U
36 | ? { [K in keyof U]-?: U[K] extends string | undefined ? K : never }[keyof U]
37 | : never;
38 |
39 | type UnionRequiredKeys = U extends U
40 | ? { [K in UnionStringKeys]: (object extends Pick ? never : K) }[UnionStringKeys]
41 | : never;
42 |
43 | type UnionOptionalKeys = Exclude, UnionRequiredKeys>;
44 |
45 | export type MergeClassNames =
46 | // Removes all types from union that will be ignored by the mergeClassNames function.
47 | Exclude extends infer Union
48 | ?
49 | & { [K in UnionRequiredKeys]: string; }
50 | & { [K in UnionOptionalKeys]?: string; }
51 | : never;
52 |
53 | /**
54 | * Merges two sets of classnames.
55 | *
56 | * The function expects to pass an array of objects with values that could be passed to
57 | * the `classNames` function.
58 | * @returns An object with keys from all objects with merged values.
59 | * @see classNames
60 | */
61 | export function mergeClassNames(...partials: T): MergeClassNames {
62 | return partials.reduce>((acc, partial) => {
63 | if (isRecord(partial)) {
64 | Object.entries(partial).forEach(([key, value]) => {
65 | const className = classNames((acc as any)[key], value);
66 | if (className) {
67 | (acc as any)[key] = className;
68 | }
69 | });
70 | }
71 | return acc;
72 | }, {} as MergeClassNames);
73 | }
--------------------------------------------------------------------------------
/src/helpers/publicUrl.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @returns A complete public URL prefixed with the public static assets base
3 | * path.
4 | * @param path - path to prepend prefix to
5 | */
6 | export function publicUrl(path: string): string {
7 | // The baseUrl must be ending with the slash. The reason is if the baseUrl will
8 | // equal to "/my-base", then passing the path equal to "tonconnect-manifest.json" will not
9 | // give us the expected result, it will actually be "/tonconnect-manifest.json", but the expected
10 | // one is "/my-base/tonconnect-manifest.json". This is due to the URL constructor.
11 | let baseUrl = import.meta.env.BASE_URL;
12 | if (!baseUrl.endsWith('/')) {
13 | baseUrl += '/';
14 | }
15 |
16 | let isBaseAbsolute = false;
17 | try {
18 | new URL(baseUrl);
19 | isBaseAbsolute = true;
20 | } catch { /* empty */
21 | }
22 |
23 | return new URL(
24 | // The path is not allowed to be starting with the slash as long as it will break the
25 | // base URL. For instance, having the "/my-base/" base URL and path
26 | // equal to "/tonconnect-manifest.json", we will not get the expected result like
27 | // "/my-base/tonconnect-manifest.json", but "/tonconnect-manifest.json".
28 | path.replace(/^\/+/, ''),
29 | isBaseAbsolute
30 | ? baseUrl
31 | : window.location.origin + baseUrl,
32 | ).toString();
33 | }
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: -apple-system, BlinkMacSystemFont, 'Roboto', 'Oxygen',
3 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
4 | sans-serif;
5 | -webkit-font-smoothing: antialiased;
6 | -moz-osx-font-smoothing: grayscale;
7 | line-height: 1.5;
8 |
9 | background: var(--tg-theme-secondary-bg-color, white);
10 | color: var(--tg-theme-text-color, black);
11 | }
12 |
13 | blockquote {
14 | margin: 0;
15 | }
16 |
17 | blockquote p {
18 | padding: 15px;
19 | background: #eee;
20 | border-radius: 5px;
21 | }
22 |
23 | pre {
24 | overflow: auto;
25 | }
--------------------------------------------------------------------------------
/src/index.tsx:
--------------------------------------------------------------------------------
1 | /* @refresh reload */
2 | import { render } from 'solid-js/web';
3 | import { retrieveLaunchParams } from '@tma.js/sdk-solid';
4 |
5 | import { Root } from '@/components/Root.js';
6 | import { init } from '@/init.js';
7 |
8 | import './index.css';
9 |
10 | // Mock the environment in case, we are outside Telegram.
11 | import './mockEnv.js';
12 |
13 | try {
14 | const launchParams = retrieveLaunchParams();
15 | const { tgWebAppPlatform: platform } = launchParams;
16 | const debug = (launchParams.tgWebAppStartParam || '').includes('debug')
17 | || import.meta.env.DEV;
18 |
19 | // Configure all application dependencies.
20 | await init({
21 | debug,
22 | eruda: debug && ['ios', 'android'].includes(platform),
23 | mockForMacOS: platform === 'macos',
24 | })
25 | .then(() => {
26 | const root = document.getElementById('root');
27 |
28 | if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
29 | throw new Error(
30 | 'Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?',
31 | );
32 | }
33 |
34 | render(() => ( ), root!);
35 | });
36 | } catch (e) {
37 | // Handling the issue is on you :)
38 | }
39 |
40 |
41 |
--------------------------------------------------------------------------------
/src/init.ts:
--------------------------------------------------------------------------------
1 | import {
2 | setDebug,
3 | themeParams,
4 | initData,
5 | viewport,
6 | init as initSDK,
7 | mockTelegramEnv,
8 | type ThemeParams,
9 | retrieveLaunchParams,
10 | emitEvent,
11 | miniApp,
12 | backButton,
13 | } from '@tma.js/sdk-solid';
14 |
15 | /**
16 | * Initializes the application and configures its dependencies.
17 | */
18 | export async function init(options: {
19 | debug: boolean;
20 | eruda: boolean;
21 | mockForMacOS: boolean;
22 | }): Promise {
23 | // Set @telegram-apps/sdk-solid debug mode and initialize it.
24 | setDebug(options.debug);
25 | initSDK();
26 |
27 | // Add Eruda if needed.
28 | options.eruda && void import('eruda').then(({ default: eruda }) => {
29 | eruda.init();
30 | eruda.position({ x: window.innerWidth - 50, y: 0 });
31 | });
32 |
33 | // Telegram for macOS has a ton of bugs, including cases, when the client doesn't
34 | // even response to the "web_app_request_theme" method. It also generates an incorrect
35 | // event for the "web_app_request_safe_area" method.
36 | if (options.mockForMacOS) {
37 | let firstThemeSent = false;
38 | mockTelegramEnv({
39 | onEvent(event, next) {
40 | if (event.name === 'web_app_request_theme') {
41 | let tp: ThemeParams = {};
42 | if (firstThemeSent) {
43 | tp = themeParams.state();
44 | } else {
45 | firstThemeSent = true;
46 | tp ||= retrieveLaunchParams().tgWebAppThemeParams;
47 | }
48 | return emitEvent('theme_changed', { theme_params: tp });
49 | }
50 |
51 | if (event.name === 'web_app_request_safe_area') {
52 | return emitEvent('safe_area_changed', { left: 0, top: 0, right: 0, bottom: 0 });
53 | }
54 |
55 | next();
56 | },
57 | });
58 | }
59 |
60 | // Mount all components used in the project.
61 | backButton.mount.ifAvailable();
62 | initData.restore();
63 |
64 | if (miniApp.mount.isAvailable()) {
65 | themeParams.mount();
66 | miniApp.mount();
67 | themeParams.bindCssVars();
68 | }
69 |
70 | if (viewport.mount.isAvailable()) {
71 | viewport.mount().then(() => {
72 | viewport.bindCssVars();
73 | });
74 | }
75 | }
--------------------------------------------------------------------------------
/src/mockEnv.ts:
--------------------------------------------------------------------------------
1 | import { emitEvent, isTMA, mockTelegramEnv } from '@tma.js/sdk-solid';
2 |
3 | // It is important, to mock the environment only for development purposes. When building the
4 | // application, import.meta.env.DEV will become false, and the code inside will be tree-shaken,
5 | // so you will not see it in your final bundle.
6 | if (import.meta.env.DEV) {
7 | if (!await isTMA('complete')) {
8 | const themeParams = {
9 | accent_text_color: '#6ab2f2',
10 | bg_color: '#17212b',
11 | button_color: '#5288c1',
12 | button_text_color: '#ffffff',
13 | destructive_text_color: '#ec3942',
14 | header_bg_color: '#17212b',
15 | hint_color: '#708499',
16 | link_color: '#6ab3f3',
17 | secondary_bg_color: '#232e3c',
18 | section_bg_color: '#17212b',
19 | section_header_text_color: '#6ab3f3',
20 | subtitle_text_color: '#708499',
21 | text_color: '#f5f5f5',
22 | } as const;
23 | const noInsets = { left: 0, top: 0, bottom: 0, right: 0 } as const;
24 |
25 | mockTelegramEnv({
26 | onEvent(e) {
27 | // Here you can write your own handlers for all known Telegram Mini Apps methods:
28 | // https://docs.telegram-mini-apps.com/platform/methods
29 | if (e.name === 'web_app_request_theme') {
30 | return emitEvent('theme_changed', { theme_params: themeParams });
31 | }
32 | if (e.name === 'web_app_request_viewport') {
33 | return emitEvent('viewport_changed', {
34 | height: window.innerHeight,
35 | width: window.innerWidth,
36 | is_expanded: true,
37 | is_state_stable: true,
38 | });
39 | }
40 | if (e.name === 'web_app_request_content_safe_area') {
41 | return emitEvent('content_safe_area_changed', noInsets);
42 | }
43 | if (e.name === 'web_app_request_safe_area') {
44 | return emitEvent('safe_area_changed', noInsets);
45 | }
46 | },
47 | launchParams: new URLSearchParams([
48 | // Discover more launch parameters:
49 | // https://docs.telegram-mini-apps.com/platform/launch-parameters#parameters-list
50 | ['tgWebAppThemeParams', JSON.stringify(themeParams)],
51 | // Your init data goes here. Learn more about it here:
52 | // https://docs.telegram-mini-apps.com/platform/init-data#parameters-list
53 | //
54 | // Note that to make sure, you are using a valid init data, you must pass it exactly as it
55 | // is sent from the Telegram application. The reason is in case you will sort its keys
56 | // (auth_date, hash, user, etc.) or values your own way, init data validation will more
57 | // likely to fail on your server side. So, to make sure you are working with a valid init
58 | // data, it is better to take a real one from your application and paste it here. It should
59 | // look something like this (a correctly encoded URL search params):
60 | // ```
61 | // user=%7B%22id%22%3A279058397%2C%22first_name%22%3A%22Vladislav%22%2C%22last_name%22...
62 | // ```
63 | // But in case you don't really need a valid init data, use this one:
64 | ['tgWebAppData', new URLSearchParams([
65 | ['auth_date', (new Date().getTime() / 1000 | 0).toString()],
66 | ['hash', 'some-hash'],
67 | ['signature', 'some-signature'],
68 | ['user', JSON.stringify({ id: 1, first_name: 'Vladislav' })],
69 | ]).toString()],
70 | ['tgWebAppVersion', '8.4'],
71 | ['tgWebAppPlatform', 'tdesktop'],
72 | ]),
73 | });
74 |
75 | console.info(
76 | '⚠️ As long as the current environment was not considered as the Telegram-based one, it was mocked. Take a note, that you should not do it in production and current behavior is only specific to the development process. Environment mocking is also applied only in development mode. So, after building the application, you will not see this behavior and related warning, leading to crashing the application outside Telegram.',
77 | );
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/navigation/routes.tsx:
--------------------------------------------------------------------------------
1 | import type { Component } from 'solid-js';
2 |
3 | import { IndexPage } from '@/pages/IndexPage/IndexPage.js';
4 | import { InitDataPage } from '@/pages/InitDataPage/InitDataPage.js';
5 | import { LaunchParamsPage } from '@/pages/LaunchParamsPage.js';
6 | import { ThemeParamsPage } from '@/pages/ThemeParamsPage.js';
7 | import { TonConnectPage } from '@/pages/TonConnectPage/TonConnectPage.js';
8 |
9 | interface Route {
10 | path: string;
11 | Component: Component;
12 | title?: string;
13 | Icon?: Component;
14 | }
15 |
16 | export const routes: Route[] = [
17 | { path: '/', Component: IndexPage },
18 | { path: '/init-data', Component: InitDataPage, title: 'Init Data' },
19 | { path: '/theme-params', Component: ThemeParamsPage, title: 'Theme Params' },
20 | { path: '/launch-params', Component: LaunchParamsPage, title: 'Launch Params' },
21 | {
22 | path: '/ton-connect',
23 | Component: TonConnectPage,
24 | title: 'TON Connect',
25 | Icon: () => (
26 |
33 |
37 |
41 |
42 | ),
43 | },
44 | ];
45 |
--------------------------------------------------------------------------------
/src/pages/IndexPage/IndexPage.css:
--------------------------------------------------------------------------------
1 | .index-page__links {
2 | list-style: none;
3 | padding-left: 0;
4 | }
5 |
6 | .index-page__link {
7 | font-weight: bold;
8 | display: inline-flex;
9 | gap: 5px;
10 | }
11 |
12 | .index-page__link-item + .index-page__link-item {
13 | margin-top: 10px;
14 | }
15 |
16 | .index-page__link-icon {
17 | width: 20px;
18 | display: block;
19 | }
20 |
21 | .index-page__link-icon svg {
22 | display: block;
23 | }
--------------------------------------------------------------------------------
/src/pages/IndexPage/IndexPage.tsx:
--------------------------------------------------------------------------------
1 | import { For, Show, type Component } from 'solid-js';
2 | import { Dynamic } from 'solid-js/web';
3 |
4 | import { Link } from '@/components/Link/Link.js';
5 | import { Page } from '@/components/Page/Page.js';
6 | import { routes } from '@/navigation/routes.js';
7 |
8 | import './IndexPage.css';
9 |
10 | export const IndexPage: Component = () => {
11 | return (
12 |
13 |
14 | This page is a home page in this boilerplate. You can use the links below to visit other
15 | pages with their own functionality.
16 |
17 |
18 |
19 | {(route) => (
20 |
21 |
22 |
23 |
24 | {(Icon) => (
25 |
26 |
27 |
28 | )}
29 |
30 | {route.title}
31 |
32 |
33 |
34 | )}
35 |
36 |
37 |
38 | );
39 | };
40 |
--------------------------------------------------------------------------------
/src/pages/InitDataPage/InitDataPage.css:
--------------------------------------------------------------------------------
1 | .init-data-page__section + .init-data-page__section {
2 | margin-top: 12px;
3 | }
4 |
5 | .init-data-page__section-title {
6 | margin-bottom: 4px;
7 | }
--------------------------------------------------------------------------------
/src/pages/InitDataPage/InitDataPage.tsx:
--------------------------------------------------------------------------------
1 | import { initData, type User, useSignal } from '@tma.js/sdk-solid';
2 | import { createMemo, Show, type Component } from 'solid-js';
3 |
4 | import {
5 | DisplayData,
6 | type DisplayDataRow,
7 | } from '@/components/DisplayData/DisplayData.js';
8 | import { Link } from '@/components/Link/Link.js';
9 | import { Page } from '@/components/Page/Page.js';
10 |
11 | import './InitDataPage.css';
12 |
13 | function getUserRows(user: User): DisplayDataRow[] {
14 | return Object.entries(user).map(([title, value]) => ({ title, value }));
15 | }
16 |
17 | export const InitDataPage: Component = () => {
18 | const initDataState = useSignal(initData.state);
19 | const initDataRaw = useSignal(initData.raw);
20 |
21 | const initDataRows = createMemo(() => {
22 | const state = initDataState();
23 | const raw = initDataRaw();
24 | if (!state || !raw) {
25 | return;
26 | }
27 | return [
28 | { title: 'raw', value: raw },
29 | ...Object.entries(initDataState).reduce((acc, [title, value]) => {
30 | if (value instanceof Date) {
31 | acc.push({ title, value: value.toISOString() });
32 | } else if (!value || typeof value !== 'object') {
33 | acc.push({ title, value });
34 | }
35 | return acc;
36 | }, []),
37 | ];
38 | });
39 |
40 | const userRows = createMemo(() => {
41 | const user = initDataState()?.user;
42 | return user ? getUserRows(user) : undefined;
43 | });
44 |
45 | const receiverRows = createMemo(() => {
46 | const receiver = initDataState()?.receiver;
47 | return receiver ? getUserRows(receiver) : undefined;
48 | });
49 |
50 | const chatRows = createMemo(() => {
51 | const chat = initDataState()?.chat;
52 | return chat
53 | ? Object.entries(chat).map(([title, value]) => ({ title, value }))
54 | : undefined;
55 | });
56 |
57 | return (
58 |
62 | This page displays application
63 | {' '}
64 |
65 | init data
66 |
67 | .
68 | >
69 | )}
70 | >
71 | Application was launched with missing init data}
74 | >
75 | {(rows) => (
76 | <>
77 |
78 |
Init data
79 |
80 |
81 |
82 |
83 |
User
84 | User information missing}>
86 | {(uRows) => }
87 |
88 |
89 |
90 |
91 |
Receiver
92 | Receiver information missing}>
94 | {(rRows) => }
95 |
96 |
97 |
98 |
99 |
Chat
100 | Chat information missing}>
102 | {(cRows) => }
103 |
104 |
105 | >
106 | )}
107 |
108 |
109 | );
110 | };
111 |
--------------------------------------------------------------------------------
/src/pages/LaunchParamsPage.tsx:
--------------------------------------------------------------------------------
1 | import { retrieveLaunchParams } from '@tma.js/sdk-solid';
2 | import type { Component } from 'solid-js';
3 |
4 | import { DisplayData } from '@/components/DisplayData/DisplayData.js';
5 | import { Link } from '@/components/Link/Link.js';
6 | import { Page } from '@/components/Page/Page.js';
7 |
8 | export const LaunchParamsPage: Component = () => {
9 | const lp = retrieveLaunchParams();
10 |
11 | return (
12 |
16 | This page displays application
17 | {' '}
18 |
19 | launch parameters
20 |
21 | .
22 | >
23 | )}
24 | >
25 | View },
33 | { title: 'tgWebAppThemeParams', value: View },
34 | ]}
35 | />
36 |
37 | );
38 | };
39 |
--------------------------------------------------------------------------------
/src/pages/ThemeParamsPage.tsx:
--------------------------------------------------------------------------------
1 | import { useSignal, themeParams } from '@tma.js/sdk-solid';
2 | import type { Component } from 'solid-js';
3 |
4 | import { DisplayData } from '@/components/DisplayData/DisplayData.js';
5 | import { Link } from '@/components/Link/Link.js';
6 | import { Page } from '@/components/Page/Page.js';
7 |
8 | export const ThemeParamsPage: Component = () => {
9 | const tpState = useSignal(themeParams.state);
10 |
11 | return (
12 |
16 | This page displays current
17 | {' '}
18 |
19 | theme parameters
20 |
21 | . It is reactive, so, changing theme externally will lead to this page updates.
22 | >
23 | )}
24 | >
25 | ({
30 | title: title
31 | .replace(/[A-Z]/g, (m) => `_${m.toLowerCase()}`)
32 | .replace(/background/, 'bg'),
33 | value,
34 | }))
35 | }
36 | />
37 |
38 | );
39 | };
40 |
--------------------------------------------------------------------------------
/src/pages/TonConnectPage/TonConnectPage.css:
--------------------------------------------------------------------------------
1 | .ton-connect-page__button-container {
2 | display: flex;
3 | align-items: center;
4 | justify-content: flex-end;
5 | }
6 |
7 | .ton-connect-page__provider {
8 | display: flex;
9 | align-items: center;
10 | gap: 15px;
11 | margin-bottom: 16px;
12 | }
13 |
14 | .ton-connect-page__provider-image {
15 | border-radius: 5px;
16 | }
17 |
18 | .ton-connect-page__provider-meta {
19 | display: flex;
20 | flex-direction: column;
21 | }
22 |
23 | .ton-connect-page__provider-wallet-name {
24 | font-weight: bold;
25 | font-size: 20px;
26 | margin: 0;
27 | }
28 |
29 | .ton-connect-page__provider-app-name {
30 | opacity: .4;
31 | font-weight: 400;
32 | font-size: 14px;
33 | vertical-align: top;
34 | }
--------------------------------------------------------------------------------
/src/pages/TonConnectPage/TonConnectPage.tsx:
--------------------------------------------------------------------------------
1 | import { Show, type Component } from 'solid-js';
2 |
3 | import { DisplayData } from '@/components/DisplayData/DisplayData.js';
4 | import { Link } from '@/components/Link/Link.js';
5 | import { Page } from '@/components/Page/Page.js';
6 | import { TonConnectButton } from '@/tonconnect/TonConnectButton.js';
7 | import { useTonWallet } from '@/tonconnect/useTonWallet.js';
8 |
9 | import './TonConnectPage.css';
10 |
11 | export const TonConnectPage: Component = () => {
12 | const wallet = useTonWallet();
13 |
14 | return (
15 |
16 |
20 | To display the data related to the TON Connect, it is required to connect your wallet.
21 |
22 | }
23 | >
24 | {(walletBasic) => {
25 | const walletExtended = () => {
26 | const w = walletBasic();
27 | return 'imageUrl' in w ? w : null;
28 | };
29 | const account = () => walletBasic().account;
30 |
31 | return (
32 | <>
33 |
34 | {(w) => (
35 |
36 |
43 |
44 |
45 | {w().name}
46 |
47 | ({w().appName})
48 |
49 |
50 |
51 | About connected wallet
52 |
53 |
54 |
55 | )}
56 |
57 |
64 | >
65 | );
66 | }}
67 |
68 |
69 |
70 |
71 |
72 | );
73 | };
74 |
--------------------------------------------------------------------------------
/src/tonconnect/TonConnectButton.tsx:
--------------------------------------------------------------------------------
1 | import { onCleanup, onMount, type Component } from 'solid-js';
2 |
3 | import { useTonConnectUI } from '@/tonconnect/TonConnectUIContext.js';
4 |
5 | export const TonConnectButton: Component = () => {
6 | const [, { setUIOptions }] = useTonConnectUI();
7 | const buttonRootId = 'ton-connect-button';
8 |
9 | onMount(() => {
10 | setUIOptions({ buttonRootId });
11 | });
12 |
13 | onCleanup(() => {
14 | setUIOptions({ buttonRootId: null });
15 | });
16 |
17 | return
;
18 | };
19 |
--------------------------------------------------------------------------------
/src/tonconnect/TonConnectUIContext.ts:
--------------------------------------------------------------------------------
1 | import { createContext, useContext } from 'solid-js';
2 | import type { TonConnectUI, TonConnectUiOptions } from '@tonconnect/ui';
3 |
4 | export type TonConnectUIContextType = [
5 | get: () => TonConnectUI,
6 | {
7 | setUIOptions(options: TonConnectUiOptions): void;
8 | },
9 | ];
10 |
11 | export const TonConnectUIContext = createContext();
12 |
13 | export function useTonConnectUI(): TonConnectUIContextType {
14 | const context = useContext(TonConnectUIContext);
15 | if (!context) {
16 | throw new Error('Unable to get TonConnectUIContext');
17 | }
18 | return context;
19 | }
20 |
--------------------------------------------------------------------------------
/src/tonconnect/TonConnectUIProvider.tsx:
--------------------------------------------------------------------------------
1 | import { TonConnectUI, type TonConnectUiOptions } from '@tonconnect/ui';
2 | import { createMemo, type Component, type ParentProps } from 'solid-js';
3 |
4 | import { TonConnectUIContext } from '@/tonconnect/TonConnectUIContext.js';
5 |
6 | export interface TonConnectUIProviderProps extends ParentProps {
7 | manifestUrl: string;
8 | }
9 |
10 | // FIXME: Well, we found this code in the official tonconnect implementation for React. Doesn't
11 | // seem to work the other way due to **constructor side effects**. Sad.
12 | // https://github.com/ton-connect/sdk/blob/main/packages/ui-react/src/components/TonConnectUIProvider.tsx#L75
13 | let cached: TonConnectUI | undefined;
14 |
15 | export const TonConnectUIProvider: Component = (props) => {
16 | const tonConnectUI = createMemo(() => {
17 | return cached || (cached = new TonConnectUI({
18 | manifestUrl: props.manifestUrl,
19 | }));
20 | });
21 |
22 | return (
23 |
33 | {props.children}
34 |
35 | );
36 | };
37 |
--------------------------------------------------------------------------------
/src/tonconnect/useTonConnectUI.ts:
--------------------------------------------------------------------------------
1 | import { useContext } from 'solid-js';
2 |
3 | import {
4 | TonConnectUIContext,
5 | type TonConnectUIContextType,
6 | } from '@/tonconnect/TonConnectUIContext.js';
7 |
8 | export function useTonConnectUI(): TonConnectUIContextType {
9 | const context = useContext(TonConnectUIContext);
10 | if (!context) {
11 | throw new Error('Unable to get TonConnectUIContext');
12 | }
13 | return context;
14 | }
15 |
--------------------------------------------------------------------------------
/src/tonconnect/useTonWallet.ts:
--------------------------------------------------------------------------------
1 | import { createEffect, createSignal, onCleanup, type Accessor } from 'solid-js';
2 | import type { Wallet, WalletInfoWithOpenMethod } from '@tonconnect/ui';
3 |
4 | import { useTonConnectUI } from './useTonConnectUI.js';
5 |
6 | /**
7 | * Use it to get user's current ton wallet. If wallet is not connected hook will return null.
8 | * @see Original React code:
9 | * https://github.com/ton-connect/sdk/blob/main/packages/ui-react/src/hooks/useTonWallet.ts
10 | */
11 | export function useTonWallet(): Accessor {
12 | const [tonConnectUI] = useTonConnectUI();
13 | const [wallet, setWallet] = createSignal(
14 | tonConnectUI().wallet || null,
15 | );
16 |
17 | createEffect(() => onCleanup(
18 | tonConnectUI().onStatusChange((value) => {
19 | setWallet(value);
20 | }),
21 | ));
22 |
23 | return wallet;
24 | }
25 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "allowSyntheticDefaultImports": true,
4 | "esModuleInterop": true,
5 | "isolatedModules": true,
6 | "jsx": "preserve",
7 | "jsxImportSource": "solid-js",
8 | "lib": [
9 | "ES2020",
10 | "DOM",
11 | "DOM.Iterable"
12 | ],
13 | "module": "NodeNext",
14 | "moduleResolution": "NodeNext",
15 | "noEmit": true,
16 | "noFallthroughCasesInSwitch": true,
17 | "noUnusedLocals": true,
18 | "noUnusedParameters": true,
19 | "paths": {
20 | "@/*": [
21 | "./src/*"
22 | ]
23 | },
24 | "resolveJsonModule": true,
25 | "skipLibCheck": true,
26 | "strict": true,
27 | "target": "ESNext",
28 | "types": [
29 | "vite/client"
30 | ]
31 | },
32 | "include": [
33 | "src"
34 | ],
35 | "references": [
36 | {
37 | "path": "./tsconfig.node.json"
38 | }
39 | ]
40 | }
41 |
--------------------------------------------------------------------------------
/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "include": ["vite.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite';
2 | import solidPlugin from 'vite-plugin-solid';
3 | import tsconfigPaths from 'vite-tsconfig-paths';
4 | import mkcert from 'vite-plugin-mkcert';
5 |
6 | export default defineConfig({
7 | base: '/solidjs-template',
8 | plugins: [
9 | // Uncomment the following line to enable solid-devtools.
10 | // For more info see https://github.com/thetarnav/solid-devtools/tree/main/packages/extension#readme
11 | // devtools(),
12 | solidPlugin(),
13 | // Allows using the compilerOptions.paths property in tsconfig.json.
14 | // https://www.npmjs.com/package/vite-tsconfig-paths
15 | tsconfigPaths(),
16 | // Creates a custom SSL certificate valid for the local machine.
17 | // Using this plugin requires admin rights on the first dev-mode launch.
18 | // https://www.npmjs.com/package/vite-plugin-mkcert
19 | process.env.HTTPS && mkcert(),
20 | ],
21 | build: {
22 | target: 'esnext',
23 | },
24 | publicDir: './public',
25 | server: {
26 | // Exposes your dev server and makes it accessible for the devices in the same network.
27 | host: true,
28 | },
29 | });
30 |
--------------------------------------------------------------------------------