├── .env
├── .gitignore
├── README.md
├── next.config.js
├── package.json
├── playwright.config.ts
├── pnpm-lock.yaml
├── prisma
├── migrations
│ ├── 20210304121245_
│ │ └── migration.sql
│ ├── 20241206100315_prisma-update
│ │ └── migration.sql
│ └── migration_lock.toml
└── schema.prisma
├── public
└── favicon.ico
├── src
├── components
│ └── footer.tsx
├── pages
│ ├── [filter].tsx
│ ├── _app.tsx
│ └── api
│ │ └── trpc
│ │ └── [trpc].ts
├── server
│ ├── context.ts
│ ├── prisma.ts
│ ├── routers
│ │ ├── _app.ts
│ │ └── todo.ts
│ ├── ssg-init.ts
│ └── trpc.ts
└── utils
│ ├── trpc.ts
│ └── use-click-outside.tsx
├── test
└── playwright.test.ts
├── tsconfig.json
└── vercel.json
/.env:
--------------------------------------------------------------------------------
1 | # Environment variables declared in this file are automatically made available to Prisma.
2 | # See the documentation for more detail: https://pris.ly/d/prisma-schema#using-environment-variables
3 |
4 | # Prisma supports the native connection string format for PostgreSQL, MySQL and SQLite.
5 | # See the documentation for all the connection string options: https://pris.ly/d/connection-strings
6 |
7 | DATABASE_URL="postgresql://postgres:@localhost:5432/todo?schema=public"
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 | next-env.d.ts
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # local env files
29 | .env.local
30 | .env.development.local
31 | .env.test.local
32 | .env.production.local
33 |
34 | # vercel
35 | .vercel
36 |
37 | *.db
38 | *.db-journal
39 | prisma/_sqlite/migrations
40 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## TodoMVC
2 |
3 | - [TodoMVC](https://todomvc.com/) implemented with tRPC + [Prisma](https://prisma.io)
4 | - Live at [todomvc.trpc.io](https://todomvc.trpc.io)
5 |
6 | ### Setup
7 |
8 | ```bash
9 | pnpm create next-app --example https://github.com/trpc/trpc --example-path examples/next-prisma-todomvc trpc-todo
10 | cd trpc-todo
11 | pnpm
12 | pnpm dev
13 | ```
14 |
15 | ### Useful commands
16 |
17 | ```bash
18 | pnpm dx # runs prisma studio + next
19 | ```
20 |
21 | ---
22 |
23 | Created by [@alexdotjs](https://twitter.com/alexdotjs).
24 |
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import("next").NextConfig} */
2 | const config = {
3 | async redirects() {
4 | return [
5 | {
6 | source: '/',
7 | destination: '/all',
8 | permanent: false,
9 | },
10 | ];
11 | },
12 |
13 | /** We run eslint as a separate task in CI */
14 | eslint: {
15 | ignoreDuringBuilds: !!process.env.CI,
16 | },
17 | };
18 |
19 | module.exports = config;
20 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "examples-trpc-next-prisma-todomvc",
3 | "private": true,
4 | "scripts": {
5 | "generate": "prisma generate",
6 | "prisma-studio": "prisma studio",
7 | "dx:next": "run-s migrate-dev && next dev",
8 | "dx:prisma-studio": "pnpm prisma-studio",
9 | "dx": "run-p dx:* --print-label",
10 | "dev": "pnpm dx:next",
11 | "prebuild": "run-s generate migrate",
12 | "build": "next build",
13 | "lint": "eslint --cache src",
14 | "start": "next start",
15 | "studio": "prisma studio",
16 | "migrate-dev": "prisma migrate dev",
17 | "migrate": "prisma migrate deploy",
18 | "test": "playwright test",
19 | "test-dev": "start-server-and-test dev http://127.0.0.1:3000 test",
20 | "test-start": "start-server-and-test start http://127.0.0.1:3000 test",
21 | "postinstall": "prisma generate"
22 | },
23 | "dependencies": {
24 | "@prisma/client": "^6.7.0",
25 | "@tanstack/react-query": "^5.80.3",
26 | "@trpc/client": "canary",
27 | "@trpc/next": "canary",
28 | "@trpc/react-query": "canary",
29 | "@trpc/server": "canary",
30 | "clsx": "^2.0.0",
31 | "next": "^15.3.1",
32 | "react": "^19.1.0",
33 | "react-dom": "^19.1.0",
34 | "superjson": "^1.12.4",
35 | "todomvc-app-css": "^2.3.0",
36 | "todomvc-common": "^1.0.5",
37 | "zod": "^3.25.51"
38 | },
39 | "devDependencies": {
40 | "@playwright/test": "^1.50.1",
41 | "@tanstack/react-query-devtools": "^5.80.3",
42 | "@types/node": "^22.13.5",
43 | "@types/react": "^19.1.0",
44 | "eslint": "^9.26.0",
45 | "npm-run-all": "^4.1.5",
46 | "prisma": "^6.7.0",
47 | "start-server-and-test": "^1.12.0",
48 | "typescript": "^5.8.2"
49 | },
50 | "publishConfig": {
51 | "access": "restricted"
52 | },
53 | "version": "11.4.1"
54 | }
55 |
--------------------------------------------------------------------------------
/playwright.config.ts:
--------------------------------------------------------------------------------
1 | import { devices, PlaywrightTestConfig } from '@playwright/test';
2 |
3 | const baseUrl = process.env.PLAYWRIGHT_TEST_BASE_URL || 'http://localhost:3000';
4 | console.log(`ℹ️ Using base URL "${baseUrl}"`);
5 |
6 | const opts = {
7 | // launch headless on CI, in browser locally
8 | headless: !!process.env.CI || !!process.env.PLAYWRIGHT_HEADLESS,
9 | // collectCoverage: !!process.env.PLAYWRIGHT_HEADLESS
10 | };
11 | const config: PlaywrightTestConfig = {
12 | testDir: './test',
13 | use: {
14 | ...devices['Desktop Chrome'],
15 | baseURL: baseUrl,
16 | headless: opts.headless,
17 | },
18 | retries: process.env.CI ? 3 : 0,
19 | };
20 |
21 | export default config;
22 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | '@prisma/client':
12 | specifier: ^6.7.0
13 | version: 6.9.0(prisma@6.9.0(typescript@5.8.3))(typescript@5.8.3)
14 | '@tanstack/react-query':
15 | specifier: ^5.80.3
16 | version: 5.80.7(react@19.1.0)
17 | '@trpc/client':
18 | specifier: canary
19 | version: 11.3.2-canary.4(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(typescript@5.8.3)
20 | '@trpc/next':
21 | specifier: canary
22 | version: 11.3.2-canary.4(@tanstack/react-query@5.80.7(react@19.1.0))(@trpc/client@11.3.2-canary.4(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.3.2-canary.4(@tanstack/react-query@5.80.7(react@19.1.0))(@trpc/client@11.3.2-canary.4(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(next@15.3.3(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
23 | '@trpc/react-query':
24 | specifier: canary
25 | version: 11.3.2-canary.4(@tanstack/react-query@5.80.7(react@19.1.0))(@trpc/client@11.3.2-canary.4(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
26 | '@trpc/server':
27 | specifier: canary
28 | version: 11.3.2-canary.4(typescript@5.8.3)
29 | clsx:
30 | specifier: ^2.0.0
31 | version: 2.1.1
32 | next:
33 | specifier: ^15.3.1
34 | version: 15.3.3(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
35 | react:
36 | specifier: ^19.1.0
37 | version: 19.1.0
38 | react-dom:
39 | specifier: ^19.1.0
40 | version: 19.1.0(react@19.1.0)
41 | superjson:
42 | specifier: ^1.12.4
43 | version: 1.13.3
44 | todomvc-app-css:
45 | specifier: ^2.3.0
46 | version: 2.4.3
47 | todomvc-common:
48 | specifier: ^1.0.5
49 | version: 1.0.5
50 | zod:
51 | specifier: ^3.25.51
52 | version: 3.25.64
53 | devDependencies:
54 | '@playwright/test':
55 | specifier: ^1.50.1
56 | version: 1.53.0
57 | '@tanstack/react-query-devtools':
58 | specifier: ^5.80.3
59 | version: 5.80.7(@tanstack/react-query@5.80.7(react@19.1.0))(react@19.1.0)
60 | '@types/node':
61 | specifier: ^22.13.5
62 | version: 22.15.31
63 | '@types/react':
64 | specifier: ^19.1.0
65 | version: 19.1.8
66 | eslint:
67 | specifier: ^9.26.0
68 | version: 9.28.0(jiti@2.4.2)
69 | npm-run-all:
70 | specifier: ^4.1.5
71 | version: 4.1.5
72 | prisma:
73 | specifier: ^6.7.0
74 | version: 6.9.0(typescript@5.8.3)
75 | start-server-and-test:
76 | specifier: ^1.12.0
77 | version: 1.15.5
78 | typescript:
79 | specifier: ^5.8.2
80 | version: 5.8.3
81 |
82 | packages:
83 |
84 | '@emnapi/runtime@1.4.3':
85 | resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==}
86 |
87 | '@eslint-community/eslint-utils@4.7.0':
88 | resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==}
89 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
90 | peerDependencies:
91 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
92 |
93 | '@eslint-community/regexpp@4.12.1':
94 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
95 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
96 |
97 | '@eslint/config-array@0.20.1':
98 | resolution: {integrity: sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==}
99 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
100 |
101 | '@eslint/config-helpers@0.2.3':
102 | resolution: {integrity: sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==}
103 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
104 |
105 | '@eslint/core@0.14.0':
106 | resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==}
107 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
108 |
109 | '@eslint/core@0.15.0':
110 | resolution: {integrity: sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==}
111 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
112 |
113 | '@eslint/eslintrc@3.3.1':
114 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
115 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
116 |
117 | '@eslint/js@9.28.0':
118 | resolution: {integrity: sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==}
119 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
120 |
121 | '@eslint/object-schema@2.1.6':
122 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
123 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
124 |
125 | '@eslint/plugin-kit@0.3.2':
126 | resolution: {integrity: sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==}
127 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
128 |
129 | '@hapi/hoek@9.3.0':
130 | resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
131 |
132 | '@hapi/topo@5.1.0':
133 | resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
134 |
135 | '@humanfs/core@0.19.1':
136 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
137 | engines: {node: '>=18.18.0'}
138 |
139 | '@humanfs/node@0.16.6':
140 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
141 | engines: {node: '>=18.18.0'}
142 |
143 | '@humanwhocodes/module-importer@1.0.1':
144 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
145 | engines: {node: '>=12.22'}
146 |
147 | '@humanwhocodes/retry@0.3.1':
148 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
149 | engines: {node: '>=18.18'}
150 |
151 | '@humanwhocodes/retry@0.4.3':
152 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
153 | engines: {node: '>=18.18'}
154 |
155 | '@img/sharp-darwin-arm64@0.34.2':
156 | resolution: {integrity: sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==}
157 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
158 | cpu: [arm64]
159 | os: [darwin]
160 |
161 | '@img/sharp-darwin-x64@0.34.2':
162 | resolution: {integrity: sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==}
163 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
164 | cpu: [x64]
165 | os: [darwin]
166 |
167 | '@img/sharp-libvips-darwin-arm64@1.1.0':
168 | resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==}
169 | cpu: [arm64]
170 | os: [darwin]
171 |
172 | '@img/sharp-libvips-darwin-x64@1.1.0':
173 | resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==}
174 | cpu: [x64]
175 | os: [darwin]
176 |
177 | '@img/sharp-libvips-linux-arm64@1.1.0':
178 | resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==}
179 | cpu: [arm64]
180 | os: [linux]
181 |
182 | '@img/sharp-libvips-linux-arm@1.1.0':
183 | resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==}
184 | cpu: [arm]
185 | os: [linux]
186 |
187 | '@img/sharp-libvips-linux-ppc64@1.1.0':
188 | resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==}
189 | cpu: [ppc64]
190 | os: [linux]
191 |
192 | '@img/sharp-libvips-linux-s390x@1.1.0':
193 | resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==}
194 | cpu: [s390x]
195 | os: [linux]
196 |
197 | '@img/sharp-libvips-linux-x64@1.1.0':
198 | resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==}
199 | cpu: [x64]
200 | os: [linux]
201 |
202 | '@img/sharp-libvips-linuxmusl-arm64@1.1.0':
203 | resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==}
204 | cpu: [arm64]
205 | os: [linux]
206 |
207 | '@img/sharp-libvips-linuxmusl-x64@1.1.0':
208 | resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==}
209 | cpu: [x64]
210 | os: [linux]
211 |
212 | '@img/sharp-linux-arm64@0.34.2':
213 | resolution: {integrity: sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==}
214 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
215 | cpu: [arm64]
216 | os: [linux]
217 |
218 | '@img/sharp-linux-arm@0.34.2':
219 | resolution: {integrity: sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==}
220 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
221 | cpu: [arm]
222 | os: [linux]
223 |
224 | '@img/sharp-linux-s390x@0.34.2':
225 | resolution: {integrity: sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==}
226 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
227 | cpu: [s390x]
228 | os: [linux]
229 |
230 | '@img/sharp-linux-x64@0.34.2':
231 | resolution: {integrity: sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==}
232 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
233 | cpu: [x64]
234 | os: [linux]
235 |
236 | '@img/sharp-linuxmusl-arm64@0.34.2':
237 | resolution: {integrity: sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==}
238 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
239 | cpu: [arm64]
240 | os: [linux]
241 |
242 | '@img/sharp-linuxmusl-x64@0.34.2':
243 | resolution: {integrity: sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==}
244 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
245 | cpu: [x64]
246 | os: [linux]
247 |
248 | '@img/sharp-wasm32@0.34.2':
249 | resolution: {integrity: sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==}
250 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
251 | cpu: [wasm32]
252 |
253 | '@img/sharp-win32-arm64@0.34.2':
254 | resolution: {integrity: sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==}
255 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
256 | cpu: [arm64]
257 | os: [win32]
258 |
259 | '@img/sharp-win32-ia32@0.34.2':
260 | resolution: {integrity: sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==}
261 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
262 | cpu: [ia32]
263 | os: [win32]
264 |
265 | '@img/sharp-win32-x64@0.34.2':
266 | resolution: {integrity: sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==}
267 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
268 | cpu: [x64]
269 | os: [win32]
270 |
271 | '@next/env@15.3.3':
272 | resolution: {integrity: sha512-OdiMrzCl2Xi0VTjiQQUK0Xh7bJHnOuET2s+3V+Y40WJBAXrJeGA3f+I8MZJ/YQ3mVGi5XGR1L66oFlgqXhQ4Vw==}
273 |
274 | '@next/swc-darwin-arm64@15.3.3':
275 | resolution: {integrity: sha512-WRJERLuH+O3oYB4yZNVahSVFmtxRNjNF1I1c34tYMoJb0Pve+7/RaLAJJizyYiFhjYNGHRAE1Ri2Fd23zgDqhg==}
276 | engines: {node: '>= 10'}
277 | cpu: [arm64]
278 | os: [darwin]
279 |
280 | '@next/swc-darwin-x64@15.3.3':
281 | resolution: {integrity: sha512-XHdzH/yBc55lu78k/XwtuFR/ZXUTcflpRXcsu0nKmF45U96jt1tsOZhVrn5YH+paw66zOANpOnFQ9i6/j+UYvw==}
282 | engines: {node: '>= 10'}
283 | cpu: [x64]
284 | os: [darwin]
285 |
286 | '@next/swc-linux-arm64-gnu@15.3.3':
287 | resolution: {integrity: sha512-VZ3sYL2LXB8znNGcjhocikEkag/8xiLgnvQts41tq6i+wql63SMS1Q6N8RVXHw5pEUjiof+II3HkDd7GFcgkzw==}
288 | engines: {node: '>= 10'}
289 | cpu: [arm64]
290 | os: [linux]
291 |
292 | '@next/swc-linux-arm64-musl@15.3.3':
293 | resolution: {integrity: sha512-h6Y1fLU4RWAp1HPNJWDYBQ+e3G7sLckyBXhmH9ajn8l/RSMnhbuPBV/fXmy3muMcVwoJdHL+UtzRzs0nXOf9SA==}
294 | engines: {node: '>= 10'}
295 | cpu: [arm64]
296 | os: [linux]
297 |
298 | '@next/swc-linux-x64-gnu@15.3.3':
299 | resolution: {integrity: sha512-jJ8HRiF3N8Zw6hGlytCj5BiHyG/K+fnTKVDEKvUCyiQ/0r5tgwO7OgaRiOjjRoIx2vwLR+Rz8hQoPrnmFbJdfw==}
300 | engines: {node: '>= 10'}
301 | cpu: [x64]
302 | os: [linux]
303 |
304 | '@next/swc-linux-x64-musl@15.3.3':
305 | resolution: {integrity: sha512-HrUcTr4N+RgiiGn3jjeT6Oo208UT/7BuTr7K0mdKRBtTbT4v9zJqCDKO97DUqqoBK1qyzP1RwvrWTvU6EPh/Cw==}
306 | engines: {node: '>= 10'}
307 | cpu: [x64]
308 | os: [linux]
309 |
310 | '@next/swc-win32-arm64-msvc@15.3.3':
311 | resolution: {integrity: sha512-SxorONgi6K7ZUysMtRF3mIeHC5aA3IQLmKFQzU0OuhuUYwpOBc1ypaLJLP5Bf3M9k53KUUUj4vTPwzGvl/NwlQ==}
312 | engines: {node: '>= 10'}
313 | cpu: [arm64]
314 | os: [win32]
315 |
316 | '@next/swc-win32-x64-msvc@15.3.3':
317 | resolution: {integrity: sha512-4QZG6F8enl9/S2+yIiOiju0iCTFd93d8VC1q9LZS4p/Xuk81W2QDjCFeoogmrWWkAD59z8ZxepBQap2dKS5ruw==}
318 | engines: {node: '>= 10'}
319 | cpu: [x64]
320 | os: [win32]
321 |
322 | '@playwright/test@1.53.0':
323 | resolution: {integrity: sha512-15hjKreZDcp7t6TL/7jkAo6Df5STZN09jGiv5dbP9A6vMVncXRqE7/B2SncsyOwrkZRBH2i6/TPOL8BVmm3c7w==}
324 | engines: {node: '>=18'}
325 | hasBin: true
326 |
327 | '@prisma/client@6.9.0':
328 | resolution: {integrity: sha512-Gg7j1hwy3SgF1KHrh0PZsYvAaykeR0PaxusnLXydehS96voYCGt1U5zVR31NIouYc63hWzidcrir1a7AIyCsNQ==}
329 | engines: {node: '>=18.18'}
330 | peerDependencies:
331 | prisma: '*'
332 | typescript: '>=5.1.0'
333 | peerDependenciesMeta:
334 | prisma:
335 | optional: true
336 | typescript:
337 | optional: true
338 |
339 | '@prisma/config@6.9.0':
340 | resolution: {integrity: sha512-Wcfk8/lN3WRJd5w4jmNQkUwhUw0eksaU/+BlAJwPQKW10k0h0LC9PD/6TQFmqKVbHQL0vG2z266r0S1MPzzhbA==}
341 |
342 | '@prisma/debug@6.9.0':
343 | resolution: {integrity: sha512-bFeur/qi/Q+Mqk4JdQ3R38upSYPebv5aOyD1RKywVD+rAMLtRkmTFn28ZuTtVOnZHEdtxnNOCH+bPIeSGz1+Fg==}
344 |
345 | '@prisma/engines-version@6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e':
346 | resolution: {integrity: sha512-Qp9gMoBHgqhKlrvumZWujmuD7q4DV/gooEyPCLtbkc13EZdSz2RsGUJ5mHb3RJgAbk+dm6XenqG7obJEhXcJ6Q==}
347 |
348 | '@prisma/engines@6.9.0':
349 | resolution: {integrity: sha512-im0X0bwDLA0244CDf8fuvnLuCQcBBdAGgr+ByvGfQY9wWl6EA+kRGwVk8ZIpG65rnlOwtaWIr/ZcEU5pNVvq9g==}
350 |
351 | '@prisma/fetch-engine@6.9.0':
352 | resolution: {integrity: sha512-PMKhJdl4fOdeE3J3NkcWZ+tf3W6rx3ht/rLU8w4SXFRcLhd5+3VcqY4Kslpdm8osca4ej3gTfB3+cSk5pGxgFg==}
353 |
354 | '@prisma/get-platform@6.9.0':
355 | resolution: {integrity: sha512-/B4n+5V1LI/1JQcHp+sUpyRT1bBgZVPHbsC4lt4/19Xp4jvNIVcq5KYNtQDk5e/ukTSjo9PZVAxxy9ieFtlpTQ==}
356 |
357 | '@sideway/address@4.1.5':
358 | resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
359 |
360 | '@sideway/formula@3.0.1':
361 | resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==}
362 |
363 | '@sideway/pinpoint@2.0.0':
364 | resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==}
365 |
366 | '@swc/counter@0.1.3':
367 | resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
368 |
369 | '@swc/helpers@0.5.15':
370 | resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
371 |
372 | '@tanstack/query-core@5.80.7':
373 | resolution: {integrity: sha512-s09l5zeUKC8q7DCCCIkVSns8zZrK4ZDT6ryEjxNBFi68G4z2EBobBS7rdOY3r6W1WbUDpc1fe5oY+YO/+2UVUg==}
374 |
375 | '@tanstack/query-devtools@5.80.0':
376 | resolution: {integrity: sha512-D6gH4asyjaoXrCOt5vG5Og/YSj0D/TxwNQgtLJIgWbhbWCC/emu2E92EFoVHh4ppVWg1qT2gKHvKyQBEFZhCuA==}
377 |
378 | '@tanstack/react-query-devtools@5.80.7':
379 | resolution: {integrity: sha512-7Dz/19fVo0i+jgLVBabV5vfGOlLyN5L1w8w1/ogFhe6ItNNsNA+ZgNTbtiKpbR3CcX2WDRRTInz1uMSmHzTsoQ==}
380 | peerDependencies:
381 | '@tanstack/react-query': ^5.80.7
382 | react: ^18 || ^19
383 |
384 | '@tanstack/react-query@5.80.7':
385 | resolution: {integrity: sha512-u2F0VK6+anItoEvB3+rfvTO9GEh2vb00Je05OwlUe/A0lkJBgW1HckiY3f9YZa+jx6IOe4dHPh10dyp9aY3iRQ==}
386 | peerDependencies:
387 | react: ^18 || ^19
388 |
389 | '@trpc/client@11.3.2-canary.4':
390 | resolution: {integrity: sha512-2JDSt/fq1hX9iYc5YiLQQxrrVqHwMhmbNQ0KkSrclecjQujkCQYTCu9a9R6BBPeEXAJCJV2iCr48AHfcKc2e2A==}
391 | peerDependencies:
392 | '@trpc/server': 11.3.2-canary.4+e70e78413
393 | typescript: '>=5.7.2'
394 |
395 | '@trpc/next@11.3.2-canary.4':
396 | resolution: {integrity: sha512-AVlaC9EPucHfA3xUyv8/lL9ShSWW60XBnTTE6oT/DIU+czsJUWZipkXExxNOq9qn2jHN2KTffTYKQoLF+Cyn1A==}
397 | peerDependencies:
398 | '@tanstack/react-query': ^5.59.15
399 | '@trpc/client': 11.3.2-canary.4+e70e78413
400 | '@trpc/react-query': 11.3.2-canary.4+e70e78413
401 | '@trpc/server': 11.3.2-canary.4+e70e78413
402 | next: '*'
403 | react: '>=16.8.0'
404 | react-dom: '>=16.8.0'
405 | typescript: '>=5.7.2'
406 | peerDependenciesMeta:
407 | '@tanstack/react-query':
408 | optional: true
409 | '@trpc/react-query':
410 | optional: true
411 |
412 | '@trpc/react-query@11.3.2-canary.4':
413 | resolution: {integrity: sha512-mAnyLevXSiha95xGbJFW4lhh2wJXKv+l4bmyIdQyACmjYSIGPRlroODZyaoPSnM7UZBSmLg53kkTshppW6XKXg==}
414 | peerDependencies:
415 | '@tanstack/react-query': ^5.80.3
416 | '@trpc/client': 11.3.2-canary.4+e70e78413
417 | '@trpc/server': 11.3.2-canary.4+e70e78413
418 | react: '>=18.2.0'
419 | react-dom: '>=18.2.0'
420 | typescript: '>=5.7.2'
421 |
422 | '@trpc/server@11.3.2-canary.4':
423 | resolution: {integrity: sha512-QlLuHopfOBIsf+AQ0X6lo6vIHjJEIl+As7RubgTSuZ9ZLnWkzxjR1TdpLnmYG6N3zCEJ0XpE7AFdFOcnkK2L5w==}
424 | peerDependencies:
425 | typescript: '>=5.7.2'
426 |
427 | '@types/estree@1.0.8':
428 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
429 |
430 | '@types/json-schema@7.0.15':
431 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
432 |
433 | '@types/node@22.15.31':
434 | resolution: {integrity: sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==}
435 |
436 | '@types/react@19.1.8':
437 | resolution: {integrity: sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==}
438 |
439 | acorn-jsx@5.3.2:
440 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
441 | peerDependencies:
442 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
443 |
444 | acorn@8.15.0:
445 | resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
446 | engines: {node: '>=0.4.0'}
447 | hasBin: true
448 |
449 | ajv@6.12.6:
450 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
451 |
452 | ansi-styles@3.2.1:
453 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
454 | engines: {node: '>=4'}
455 |
456 | ansi-styles@4.3.0:
457 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
458 | engines: {node: '>=8'}
459 |
460 | arg@5.0.2:
461 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
462 |
463 | argparse@2.0.1:
464 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
465 |
466 | array-buffer-byte-length@1.0.2:
467 | resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
468 | engines: {node: '>= 0.4'}
469 |
470 | arraybuffer.prototype.slice@1.0.4:
471 | resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
472 | engines: {node: '>= 0.4'}
473 |
474 | async-function@1.0.0:
475 | resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
476 | engines: {node: '>= 0.4'}
477 |
478 | asynckit@0.4.0:
479 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
480 |
481 | available-typed-arrays@1.0.7:
482 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
483 | engines: {node: '>= 0.4'}
484 |
485 | axios@0.27.2:
486 | resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==}
487 |
488 | balanced-match@1.0.2:
489 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
490 |
491 | bluebird@3.7.2:
492 | resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
493 |
494 | brace-expansion@1.1.12:
495 | resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
496 |
497 | busboy@1.6.0:
498 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
499 | engines: {node: '>=10.16.0'}
500 |
501 | call-bind-apply-helpers@1.0.2:
502 | resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
503 | engines: {node: '>= 0.4'}
504 |
505 | call-bind@1.0.8:
506 | resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
507 | engines: {node: '>= 0.4'}
508 |
509 | call-bound@1.0.4:
510 | resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
511 | engines: {node: '>= 0.4'}
512 |
513 | callsites@3.1.0:
514 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
515 | engines: {node: '>=6'}
516 |
517 | caniuse-lite@1.0.30001723:
518 | resolution: {integrity: sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==}
519 |
520 | chalk@2.4.2:
521 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
522 | engines: {node: '>=4'}
523 |
524 | chalk@4.1.2:
525 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
526 | engines: {node: '>=10'}
527 |
528 | check-more-types@2.24.0:
529 | resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==}
530 | engines: {node: '>= 0.8.0'}
531 |
532 | client-only@0.0.1:
533 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
534 |
535 | clsx@2.1.1:
536 | resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
537 | engines: {node: '>=6'}
538 |
539 | color-convert@1.9.3:
540 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
541 |
542 | color-convert@2.0.1:
543 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
544 | engines: {node: '>=7.0.0'}
545 |
546 | color-name@1.1.3:
547 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
548 |
549 | color-name@1.1.4:
550 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
551 |
552 | color-string@1.9.1:
553 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
554 |
555 | color@4.2.3:
556 | resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
557 | engines: {node: '>=12.5.0'}
558 |
559 | combined-stream@1.0.8:
560 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
561 | engines: {node: '>= 0.8'}
562 |
563 | concat-map@0.0.1:
564 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
565 |
566 | copy-anything@3.0.5:
567 | resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
568 | engines: {node: '>=12.13'}
569 |
570 | cross-spawn@6.0.6:
571 | resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==}
572 | engines: {node: '>=4.8'}
573 |
574 | cross-spawn@7.0.6:
575 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
576 | engines: {node: '>= 8'}
577 |
578 | csstype@3.1.3:
579 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
580 |
581 | data-view-buffer@1.0.2:
582 | resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
583 | engines: {node: '>= 0.4'}
584 |
585 | data-view-byte-length@1.0.2:
586 | resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
587 | engines: {node: '>= 0.4'}
588 |
589 | data-view-byte-offset@1.0.1:
590 | resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
591 | engines: {node: '>= 0.4'}
592 |
593 | debug@4.3.4:
594 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
595 | engines: {node: '>=6.0'}
596 | peerDependencies:
597 | supports-color: '*'
598 | peerDependenciesMeta:
599 | supports-color:
600 | optional: true
601 |
602 | debug@4.4.1:
603 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
604 | engines: {node: '>=6.0'}
605 | peerDependencies:
606 | supports-color: '*'
607 | peerDependenciesMeta:
608 | supports-color:
609 | optional: true
610 |
611 | deep-is@0.1.4:
612 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
613 |
614 | define-data-property@1.1.4:
615 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
616 | engines: {node: '>= 0.4'}
617 |
618 | define-properties@1.2.1:
619 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
620 | engines: {node: '>= 0.4'}
621 |
622 | delayed-stream@1.0.0:
623 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
624 | engines: {node: '>=0.4.0'}
625 |
626 | detect-libc@2.0.4:
627 | resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
628 | engines: {node: '>=8'}
629 |
630 | dunder-proto@1.0.1:
631 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
632 | engines: {node: '>= 0.4'}
633 |
634 | duplexer@0.1.2:
635 | resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
636 |
637 | error-ex@1.3.2:
638 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
639 |
640 | es-abstract@1.24.0:
641 | resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==}
642 | engines: {node: '>= 0.4'}
643 |
644 | es-define-property@1.0.1:
645 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
646 | engines: {node: '>= 0.4'}
647 |
648 | es-errors@1.3.0:
649 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
650 | engines: {node: '>= 0.4'}
651 |
652 | es-object-atoms@1.1.1:
653 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
654 | engines: {node: '>= 0.4'}
655 |
656 | es-set-tostringtag@2.1.0:
657 | resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
658 | engines: {node: '>= 0.4'}
659 |
660 | es-to-primitive@1.3.0:
661 | resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
662 | engines: {node: '>= 0.4'}
663 |
664 | escape-string-regexp@1.0.5:
665 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
666 | engines: {node: '>=0.8.0'}
667 |
668 | escape-string-regexp@4.0.0:
669 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
670 | engines: {node: '>=10'}
671 |
672 | eslint-scope@8.4.0:
673 | resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
674 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
675 |
676 | eslint-visitor-keys@3.4.3:
677 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
678 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
679 |
680 | eslint-visitor-keys@4.2.1:
681 | resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
682 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
683 |
684 | eslint@9.28.0:
685 | resolution: {integrity: sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==}
686 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
687 | hasBin: true
688 | peerDependencies:
689 | jiti: '*'
690 | peerDependenciesMeta:
691 | jiti:
692 | optional: true
693 |
694 | espree@10.4.0:
695 | resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
696 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
697 |
698 | esquery@1.6.0:
699 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
700 | engines: {node: '>=0.10'}
701 |
702 | esrecurse@4.3.0:
703 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
704 | engines: {node: '>=4.0'}
705 |
706 | estraverse@5.3.0:
707 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
708 | engines: {node: '>=4.0'}
709 |
710 | esutils@2.0.3:
711 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
712 | engines: {node: '>=0.10.0'}
713 |
714 | event-stream@3.3.4:
715 | resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==}
716 |
717 | execa@5.1.1:
718 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
719 | engines: {node: '>=10'}
720 |
721 | fast-deep-equal@3.1.3:
722 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
723 |
724 | fast-json-stable-stringify@2.1.0:
725 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
726 |
727 | fast-levenshtein@2.0.6:
728 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
729 |
730 | file-entry-cache@8.0.0:
731 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
732 | engines: {node: '>=16.0.0'}
733 |
734 | find-up@5.0.0:
735 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
736 | engines: {node: '>=10'}
737 |
738 | flat-cache@4.0.1:
739 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
740 | engines: {node: '>=16'}
741 |
742 | flatted@3.3.3:
743 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
744 |
745 | follow-redirects@1.15.9:
746 | resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
747 | engines: {node: '>=4.0'}
748 | peerDependencies:
749 | debug: '*'
750 | peerDependenciesMeta:
751 | debug:
752 | optional: true
753 |
754 | for-each@0.3.5:
755 | resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
756 | engines: {node: '>= 0.4'}
757 |
758 | form-data@4.0.3:
759 | resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==}
760 | engines: {node: '>= 6'}
761 |
762 | from@0.1.7:
763 | resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==}
764 |
765 | fsevents@2.3.2:
766 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
767 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
768 | os: [darwin]
769 |
770 | function-bind@1.1.2:
771 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
772 |
773 | function.prototype.name@1.1.8:
774 | resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
775 | engines: {node: '>= 0.4'}
776 |
777 | functions-have-names@1.2.3:
778 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
779 |
780 | get-intrinsic@1.3.0:
781 | resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
782 | engines: {node: '>= 0.4'}
783 |
784 | get-proto@1.0.1:
785 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
786 | engines: {node: '>= 0.4'}
787 |
788 | get-stream@6.0.1:
789 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
790 | engines: {node: '>=10'}
791 |
792 | get-symbol-description@1.1.0:
793 | resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
794 | engines: {node: '>= 0.4'}
795 |
796 | glob-parent@6.0.2:
797 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
798 | engines: {node: '>=10.13.0'}
799 |
800 | globals@14.0.0:
801 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
802 | engines: {node: '>=18'}
803 |
804 | globalthis@1.0.4:
805 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
806 | engines: {node: '>= 0.4'}
807 |
808 | gopd@1.2.0:
809 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
810 | engines: {node: '>= 0.4'}
811 |
812 | graceful-fs@4.2.11:
813 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
814 |
815 | has-bigints@1.1.0:
816 | resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
817 | engines: {node: '>= 0.4'}
818 |
819 | has-flag@3.0.0:
820 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
821 | engines: {node: '>=4'}
822 |
823 | has-flag@4.0.0:
824 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
825 | engines: {node: '>=8'}
826 |
827 | has-property-descriptors@1.0.2:
828 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
829 |
830 | has-proto@1.2.0:
831 | resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
832 | engines: {node: '>= 0.4'}
833 |
834 | has-symbols@1.1.0:
835 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
836 | engines: {node: '>= 0.4'}
837 |
838 | has-tostringtag@1.0.2:
839 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
840 | engines: {node: '>= 0.4'}
841 |
842 | hasown@2.0.2:
843 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
844 | engines: {node: '>= 0.4'}
845 |
846 | hosted-git-info@2.8.9:
847 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
848 |
849 | human-signals@2.1.0:
850 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
851 | engines: {node: '>=10.17.0'}
852 |
853 | ignore@5.3.2:
854 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
855 | engines: {node: '>= 4'}
856 |
857 | import-fresh@3.3.1:
858 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
859 | engines: {node: '>=6'}
860 |
861 | imurmurhash@0.1.4:
862 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
863 | engines: {node: '>=0.8.19'}
864 |
865 | internal-slot@1.1.0:
866 | resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
867 | engines: {node: '>= 0.4'}
868 |
869 | is-array-buffer@3.0.5:
870 | resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
871 | engines: {node: '>= 0.4'}
872 |
873 | is-arrayish@0.2.1:
874 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
875 |
876 | is-arrayish@0.3.2:
877 | resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
878 |
879 | is-async-function@2.1.1:
880 | resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
881 | engines: {node: '>= 0.4'}
882 |
883 | is-bigint@1.1.0:
884 | resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
885 | engines: {node: '>= 0.4'}
886 |
887 | is-boolean-object@1.2.2:
888 | resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
889 | engines: {node: '>= 0.4'}
890 |
891 | is-callable@1.2.7:
892 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
893 | engines: {node: '>= 0.4'}
894 |
895 | is-core-module@2.16.1:
896 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
897 | engines: {node: '>= 0.4'}
898 |
899 | is-data-view@1.0.2:
900 | resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
901 | engines: {node: '>= 0.4'}
902 |
903 | is-date-object@1.1.0:
904 | resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
905 | engines: {node: '>= 0.4'}
906 |
907 | is-extglob@2.1.1:
908 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
909 | engines: {node: '>=0.10.0'}
910 |
911 | is-finalizationregistry@1.1.1:
912 | resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
913 | engines: {node: '>= 0.4'}
914 |
915 | is-generator-function@1.1.0:
916 | resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
917 | engines: {node: '>= 0.4'}
918 |
919 | is-glob@4.0.3:
920 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
921 | engines: {node: '>=0.10.0'}
922 |
923 | is-map@2.0.3:
924 | resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
925 | engines: {node: '>= 0.4'}
926 |
927 | is-negative-zero@2.0.3:
928 | resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
929 | engines: {node: '>= 0.4'}
930 |
931 | is-number-object@1.1.1:
932 | resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
933 | engines: {node: '>= 0.4'}
934 |
935 | is-regex@1.2.1:
936 | resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
937 | engines: {node: '>= 0.4'}
938 |
939 | is-set@2.0.3:
940 | resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
941 | engines: {node: '>= 0.4'}
942 |
943 | is-shared-array-buffer@1.0.4:
944 | resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
945 | engines: {node: '>= 0.4'}
946 |
947 | is-stream@2.0.1:
948 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
949 | engines: {node: '>=8'}
950 |
951 | is-string@1.1.1:
952 | resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
953 | engines: {node: '>= 0.4'}
954 |
955 | is-symbol@1.1.1:
956 | resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
957 | engines: {node: '>= 0.4'}
958 |
959 | is-typed-array@1.1.15:
960 | resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
961 | engines: {node: '>= 0.4'}
962 |
963 | is-weakmap@2.0.2:
964 | resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
965 | engines: {node: '>= 0.4'}
966 |
967 | is-weakref@1.1.1:
968 | resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
969 | engines: {node: '>= 0.4'}
970 |
971 | is-weakset@2.0.4:
972 | resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
973 | engines: {node: '>= 0.4'}
974 |
975 | is-what@4.1.16:
976 | resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
977 | engines: {node: '>=12.13'}
978 |
979 | isarray@2.0.5:
980 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
981 |
982 | isexe@2.0.0:
983 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
984 |
985 | jiti@2.4.2:
986 | resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
987 | hasBin: true
988 |
989 | joi@17.13.3:
990 | resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==}
991 |
992 | js-yaml@4.1.0:
993 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
994 | hasBin: true
995 |
996 | json-buffer@3.0.1:
997 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
998 |
999 | json-parse-better-errors@1.0.2:
1000 | resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
1001 |
1002 | json-schema-traverse@0.4.1:
1003 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1004 |
1005 | json-stable-stringify-without-jsonify@1.0.1:
1006 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1007 |
1008 | keyv@4.5.4:
1009 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1010 |
1011 | lazy-ass@1.6.0:
1012 | resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==}
1013 | engines: {node: '> 0.8'}
1014 |
1015 | levn@0.4.1:
1016 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1017 | engines: {node: '>= 0.8.0'}
1018 |
1019 | load-json-file@4.0.0:
1020 | resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==}
1021 | engines: {node: '>=4'}
1022 |
1023 | locate-path@6.0.0:
1024 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1025 | engines: {node: '>=10'}
1026 |
1027 | lodash.merge@4.6.2:
1028 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1029 |
1030 | lodash@4.17.21:
1031 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1032 |
1033 | map-stream@0.1.0:
1034 | resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==}
1035 |
1036 | math-intrinsics@1.1.0:
1037 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
1038 | engines: {node: '>= 0.4'}
1039 |
1040 | memorystream@0.3.1:
1041 | resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
1042 | engines: {node: '>= 0.10.0'}
1043 |
1044 | merge-stream@2.0.0:
1045 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1046 |
1047 | mime-db@1.52.0:
1048 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
1049 | engines: {node: '>= 0.6'}
1050 |
1051 | mime-types@2.1.35:
1052 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
1053 | engines: {node: '>= 0.6'}
1054 |
1055 | mimic-fn@2.1.0:
1056 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
1057 | engines: {node: '>=6'}
1058 |
1059 | minimatch@3.1.2:
1060 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1061 |
1062 | minimist@1.2.8:
1063 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1064 |
1065 | ms@2.1.2:
1066 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1067 |
1068 | ms@2.1.3:
1069 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1070 |
1071 | nanoid@3.3.11:
1072 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
1073 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1074 | hasBin: true
1075 |
1076 | natural-compare@1.4.0:
1077 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1078 |
1079 | next@15.3.3:
1080 | resolution: {integrity: sha512-JqNj29hHNmCLtNvd090SyRbXJiivQ+58XjCcrC50Crb5g5u2zi7Y2YivbsEfzk6AtVI80akdOQbaMZwWB1Hthw==}
1081 | engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
1082 | hasBin: true
1083 | peerDependencies:
1084 | '@opentelemetry/api': ^1.1.0
1085 | '@playwright/test': ^1.41.2
1086 | babel-plugin-react-compiler: '*'
1087 | react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
1088 | react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
1089 | sass: ^1.3.0
1090 | peerDependenciesMeta:
1091 | '@opentelemetry/api':
1092 | optional: true
1093 | '@playwright/test':
1094 | optional: true
1095 | babel-plugin-react-compiler:
1096 | optional: true
1097 | sass:
1098 | optional: true
1099 |
1100 | nice-try@1.0.5:
1101 | resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
1102 |
1103 | normalize-package-data@2.5.0:
1104 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
1105 |
1106 | npm-run-all@4.1.5:
1107 | resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==}
1108 | engines: {node: '>= 4'}
1109 | hasBin: true
1110 |
1111 | npm-run-path@4.0.1:
1112 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
1113 | engines: {node: '>=8'}
1114 |
1115 | object-inspect@1.13.4:
1116 | resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
1117 | engines: {node: '>= 0.4'}
1118 |
1119 | object-keys@1.1.1:
1120 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1121 | engines: {node: '>= 0.4'}
1122 |
1123 | object.assign@4.1.7:
1124 | resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
1125 | engines: {node: '>= 0.4'}
1126 |
1127 | onetime@5.1.2:
1128 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
1129 | engines: {node: '>=6'}
1130 |
1131 | optionator@0.9.4:
1132 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
1133 | engines: {node: '>= 0.8.0'}
1134 |
1135 | own-keys@1.0.1:
1136 | resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
1137 | engines: {node: '>= 0.4'}
1138 |
1139 | p-limit@3.1.0:
1140 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1141 | engines: {node: '>=10'}
1142 |
1143 | p-locate@5.0.0:
1144 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1145 | engines: {node: '>=10'}
1146 |
1147 | parent-module@1.0.1:
1148 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1149 | engines: {node: '>=6'}
1150 |
1151 | parse-json@4.0.0:
1152 | resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
1153 | engines: {node: '>=4'}
1154 |
1155 | path-exists@4.0.0:
1156 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1157 | engines: {node: '>=8'}
1158 |
1159 | path-key@2.0.1:
1160 | resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
1161 | engines: {node: '>=4'}
1162 |
1163 | path-key@3.1.1:
1164 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1165 | engines: {node: '>=8'}
1166 |
1167 | path-parse@1.0.7:
1168 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1169 |
1170 | path-type@3.0.0:
1171 | resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
1172 | engines: {node: '>=4'}
1173 |
1174 | pause-stream@0.0.11:
1175 | resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==}
1176 |
1177 | picocolors@1.1.1:
1178 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1179 |
1180 | pidtree@0.3.1:
1181 | resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==}
1182 | engines: {node: '>=0.10'}
1183 | hasBin: true
1184 |
1185 | pify@3.0.0:
1186 | resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
1187 | engines: {node: '>=4'}
1188 |
1189 | playwright-core@1.53.0:
1190 | resolution: {integrity: sha512-mGLg8m0pm4+mmtB7M89Xw/GSqoNC+twivl8ITteqvAndachozYe2ZA7srU6uleV1vEdAHYqjq+SV8SNxRRFYBw==}
1191 | engines: {node: '>=18'}
1192 | hasBin: true
1193 |
1194 | playwright@1.53.0:
1195 | resolution: {integrity: sha512-ghGNnIEYZC4E+YtclRn4/p6oYbdPiASELBIYkBXfaTVKreQUYbMUYQDwS12a8F0/HtIjr/CkGjtwABeFPGcS4Q==}
1196 | engines: {node: '>=18'}
1197 | hasBin: true
1198 |
1199 | possible-typed-array-names@1.1.0:
1200 | resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
1201 | engines: {node: '>= 0.4'}
1202 |
1203 | postcss@8.4.31:
1204 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
1205 | engines: {node: ^10 || ^12 || >=14}
1206 |
1207 | prelude-ls@1.2.1:
1208 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1209 | engines: {node: '>= 0.8.0'}
1210 |
1211 | prisma@6.9.0:
1212 | resolution: {integrity: sha512-resJAwMyZREC/I40LF6FZ6rZTnlrlrYrb63oW37Gq+U+9xHwbyMSPJjKtM7VZf3gTO86t/Oyz+YeSXr3CmAY1Q==}
1213 | engines: {node: '>=18.18'}
1214 | hasBin: true
1215 | peerDependencies:
1216 | typescript: '>=5.1.0'
1217 | peerDependenciesMeta:
1218 | typescript:
1219 | optional: true
1220 |
1221 | ps-tree@1.2.0:
1222 | resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==}
1223 | engines: {node: '>= 0.10'}
1224 | hasBin: true
1225 |
1226 | punycode@2.3.1:
1227 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1228 | engines: {node: '>=6'}
1229 |
1230 | react-dom@19.1.0:
1231 | resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==}
1232 | peerDependencies:
1233 | react: ^19.1.0
1234 |
1235 | react@19.1.0:
1236 | resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==}
1237 | engines: {node: '>=0.10.0'}
1238 |
1239 | read-pkg@3.0.0:
1240 | resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==}
1241 | engines: {node: '>=4'}
1242 |
1243 | reflect.getprototypeof@1.0.10:
1244 | resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
1245 | engines: {node: '>= 0.4'}
1246 |
1247 | regexp.prototype.flags@1.5.4:
1248 | resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
1249 | engines: {node: '>= 0.4'}
1250 |
1251 | resolve-from@4.0.0:
1252 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1253 | engines: {node: '>=4'}
1254 |
1255 | resolve@1.22.10:
1256 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
1257 | engines: {node: '>= 0.4'}
1258 | hasBin: true
1259 |
1260 | rxjs@7.8.2:
1261 | resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
1262 |
1263 | safe-array-concat@1.1.3:
1264 | resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
1265 | engines: {node: '>=0.4'}
1266 |
1267 | safe-push-apply@1.0.0:
1268 | resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
1269 | engines: {node: '>= 0.4'}
1270 |
1271 | safe-regex-test@1.1.0:
1272 | resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
1273 | engines: {node: '>= 0.4'}
1274 |
1275 | scheduler@0.26.0:
1276 | resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==}
1277 |
1278 | semver@5.7.2:
1279 | resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
1280 | hasBin: true
1281 |
1282 | semver@7.7.2:
1283 | resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==}
1284 | engines: {node: '>=10'}
1285 | hasBin: true
1286 |
1287 | set-function-length@1.2.2:
1288 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
1289 | engines: {node: '>= 0.4'}
1290 |
1291 | set-function-name@2.0.2:
1292 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
1293 | engines: {node: '>= 0.4'}
1294 |
1295 | set-proto@1.0.0:
1296 | resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
1297 | engines: {node: '>= 0.4'}
1298 |
1299 | sharp@0.34.2:
1300 | resolution: {integrity: sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==}
1301 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
1302 |
1303 | shebang-command@1.2.0:
1304 | resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
1305 | engines: {node: '>=0.10.0'}
1306 |
1307 | shebang-command@2.0.0:
1308 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1309 | engines: {node: '>=8'}
1310 |
1311 | shebang-regex@1.0.0:
1312 | resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
1313 | engines: {node: '>=0.10.0'}
1314 |
1315 | shebang-regex@3.0.0:
1316 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1317 | engines: {node: '>=8'}
1318 |
1319 | shell-quote@1.8.3:
1320 | resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==}
1321 | engines: {node: '>= 0.4'}
1322 |
1323 | side-channel-list@1.0.0:
1324 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
1325 | engines: {node: '>= 0.4'}
1326 |
1327 | side-channel-map@1.0.1:
1328 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
1329 | engines: {node: '>= 0.4'}
1330 |
1331 | side-channel-weakmap@1.0.2:
1332 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
1333 | engines: {node: '>= 0.4'}
1334 |
1335 | side-channel@1.1.0:
1336 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
1337 | engines: {node: '>= 0.4'}
1338 |
1339 | signal-exit@3.0.7:
1340 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
1341 |
1342 | simple-swizzle@0.2.2:
1343 | resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
1344 |
1345 | source-map-js@1.2.1:
1346 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
1347 | engines: {node: '>=0.10.0'}
1348 |
1349 | spdx-correct@3.2.0:
1350 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
1351 |
1352 | spdx-exceptions@2.5.0:
1353 | resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
1354 |
1355 | spdx-expression-parse@3.0.1:
1356 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
1357 |
1358 | spdx-license-ids@3.0.21:
1359 | resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==}
1360 |
1361 | split@0.3.3:
1362 | resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==}
1363 |
1364 | start-server-and-test@1.15.5:
1365 | resolution: {integrity: sha512-o3EmkX0++GV+qsvIJ/OKWm3w91fD8uS/bPQVPrh/7loaxkpXSuAIHdnmN/P/regQK9eNAK76aBJcHt+OSTk+nA==}
1366 | engines: {node: '>=6'}
1367 | deprecated: this package has been deprecated
1368 | hasBin: true
1369 |
1370 | stop-iteration-iterator@1.1.0:
1371 | resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
1372 | engines: {node: '>= 0.4'}
1373 |
1374 | stream-combiner@0.0.4:
1375 | resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==}
1376 |
1377 | streamsearch@1.1.0:
1378 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
1379 | engines: {node: '>=10.0.0'}
1380 |
1381 | string.prototype.padend@3.1.6:
1382 | resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==}
1383 | engines: {node: '>= 0.4'}
1384 |
1385 | string.prototype.trim@1.2.10:
1386 | resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
1387 | engines: {node: '>= 0.4'}
1388 |
1389 | string.prototype.trimend@1.0.9:
1390 | resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
1391 | engines: {node: '>= 0.4'}
1392 |
1393 | string.prototype.trimstart@1.0.8:
1394 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
1395 | engines: {node: '>= 0.4'}
1396 |
1397 | strip-bom@3.0.0:
1398 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
1399 | engines: {node: '>=4'}
1400 |
1401 | strip-final-newline@2.0.0:
1402 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
1403 | engines: {node: '>=6'}
1404 |
1405 | strip-json-comments@3.1.1:
1406 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1407 | engines: {node: '>=8'}
1408 |
1409 | styled-jsx@5.1.6:
1410 | resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
1411 | engines: {node: '>= 12.0.0'}
1412 | peerDependencies:
1413 | '@babel/core': '*'
1414 | babel-plugin-macros: '*'
1415 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
1416 | peerDependenciesMeta:
1417 | '@babel/core':
1418 | optional: true
1419 | babel-plugin-macros:
1420 | optional: true
1421 |
1422 | superjson@1.13.3:
1423 | resolution: {integrity: sha512-mJiVjfd2vokfDxsQPOwJ/PtanO87LhpYY88ubI5dUB1Ab58Txbyje3+jpm+/83R/fevaq/107NNhtYBLuoTrFg==}
1424 | engines: {node: '>=10'}
1425 |
1426 | supports-color@5.5.0:
1427 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1428 | engines: {node: '>=4'}
1429 |
1430 | supports-color@7.2.0:
1431 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1432 | engines: {node: '>=8'}
1433 |
1434 | supports-preserve-symlinks-flag@1.0.0:
1435 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1436 | engines: {node: '>= 0.4'}
1437 |
1438 | through@2.3.8:
1439 | resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
1440 |
1441 | todomvc-app-css@2.4.3:
1442 | resolution: {integrity: sha512-mSnWZaKBWj9aQcFRsGguY/a8O8NR8GmecD48yU1rzwNemgZa/INLpIsxxMiToFGVth+uEKBrQ7IhWkaXZxwq5Q==}
1443 | engines: {node: '>=4'}
1444 |
1445 | todomvc-common@1.0.5:
1446 | resolution: {integrity: sha512-D8kEJmxVMQIWwztEdH+WeiAfXRbbSCpgXq4NkYi+gduJ2tr8CNq7sYLfJvjpQ10KD9QxJwig57rvMbV2QAESwQ==}
1447 |
1448 | tslib@2.8.1:
1449 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
1450 |
1451 | type-check@0.4.0:
1452 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1453 | engines: {node: '>= 0.8.0'}
1454 |
1455 | typed-array-buffer@1.0.3:
1456 | resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
1457 | engines: {node: '>= 0.4'}
1458 |
1459 | typed-array-byte-length@1.0.3:
1460 | resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
1461 | engines: {node: '>= 0.4'}
1462 |
1463 | typed-array-byte-offset@1.0.4:
1464 | resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
1465 | engines: {node: '>= 0.4'}
1466 |
1467 | typed-array-length@1.0.7:
1468 | resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
1469 | engines: {node: '>= 0.4'}
1470 |
1471 | typescript@5.8.3:
1472 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
1473 | engines: {node: '>=14.17'}
1474 | hasBin: true
1475 |
1476 | unbox-primitive@1.1.0:
1477 | resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
1478 | engines: {node: '>= 0.4'}
1479 |
1480 | undici-types@6.21.0:
1481 | resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
1482 |
1483 | uri-js@4.4.1:
1484 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1485 |
1486 | validate-npm-package-license@3.0.4:
1487 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
1488 |
1489 | wait-on@7.0.1:
1490 | resolution: {integrity: sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==}
1491 | engines: {node: '>=12.0.0'}
1492 | hasBin: true
1493 |
1494 | which-boxed-primitive@1.1.1:
1495 | resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
1496 | engines: {node: '>= 0.4'}
1497 |
1498 | which-builtin-type@1.2.1:
1499 | resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
1500 | engines: {node: '>= 0.4'}
1501 |
1502 | which-collection@1.0.2:
1503 | resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
1504 | engines: {node: '>= 0.4'}
1505 |
1506 | which-typed-array@1.1.19:
1507 | resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
1508 | engines: {node: '>= 0.4'}
1509 |
1510 | which@1.3.1:
1511 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
1512 | hasBin: true
1513 |
1514 | which@2.0.2:
1515 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1516 | engines: {node: '>= 8'}
1517 | hasBin: true
1518 |
1519 | word-wrap@1.2.5:
1520 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
1521 | engines: {node: '>=0.10.0'}
1522 |
1523 | yocto-queue@0.1.0:
1524 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1525 | engines: {node: '>=10'}
1526 |
1527 | zod@3.25.64:
1528 | resolution: {integrity: sha512-hbP9FpSZf7pkS7hRVUrOjhwKJNyampPgtXKc3AN6DsWtoHsg2Sb4SQaS4Tcay380zSwd2VPo9G9180emBACp5g==}
1529 |
1530 | snapshots:
1531 |
1532 | '@emnapi/runtime@1.4.3':
1533 | dependencies:
1534 | tslib: 2.8.1
1535 | optional: true
1536 |
1537 | '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0(jiti@2.4.2))':
1538 | dependencies:
1539 | eslint: 9.28.0(jiti@2.4.2)
1540 | eslint-visitor-keys: 3.4.3
1541 |
1542 | '@eslint-community/regexpp@4.12.1': {}
1543 |
1544 | '@eslint/config-array@0.20.1':
1545 | dependencies:
1546 | '@eslint/object-schema': 2.1.6
1547 | debug: 4.4.1
1548 | minimatch: 3.1.2
1549 | transitivePeerDependencies:
1550 | - supports-color
1551 |
1552 | '@eslint/config-helpers@0.2.3': {}
1553 |
1554 | '@eslint/core@0.14.0':
1555 | dependencies:
1556 | '@types/json-schema': 7.0.15
1557 |
1558 | '@eslint/core@0.15.0':
1559 | dependencies:
1560 | '@types/json-schema': 7.0.15
1561 |
1562 | '@eslint/eslintrc@3.3.1':
1563 | dependencies:
1564 | ajv: 6.12.6
1565 | debug: 4.4.1
1566 | espree: 10.4.0
1567 | globals: 14.0.0
1568 | ignore: 5.3.2
1569 | import-fresh: 3.3.1
1570 | js-yaml: 4.1.0
1571 | minimatch: 3.1.2
1572 | strip-json-comments: 3.1.1
1573 | transitivePeerDependencies:
1574 | - supports-color
1575 |
1576 | '@eslint/js@9.28.0': {}
1577 |
1578 | '@eslint/object-schema@2.1.6': {}
1579 |
1580 | '@eslint/plugin-kit@0.3.2':
1581 | dependencies:
1582 | '@eslint/core': 0.15.0
1583 | levn: 0.4.1
1584 |
1585 | '@hapi/hoek@9.3.0': {}
1586 |
1587 | '@hapi/topo@5.1.0':
1588 | dependencies:
1589 | '@hapi/hoek': 9.3.0
1590 |
1591 | '@humanfs/core@0.19.1': {}
1592 |
1593 | '@humanfs/node@0.16.6':
1594 | dependencies:
1595 | '@humanfs/core': 0.19.1
1596 | '@humanwhocodes/retry': 0.3.1
1597 |
1598 | '@humanwhocodes/module-importer@1.0.1': {}
1599 |
1600 | '@humanwhocodes/retry@0.3.1': {}
1601 |
1602 | '@humanwhocodes/retry@0.4.3': {}
1603 |
1604 | '@img/sharp-darwin-arm64@0.34.2':
1605 | optionalDependencies:
1606 | '@img/sharp-libvips-darwin-arm64': 1.1.0
1607 | optional: true
1608 |
1609 | '@img/sharp-darwin-x64@0.34.2':
1610 | optionalDependencies:
1611 | '@img/sharp-libvips-darwin-x64': 1.1.0
1612 | optional: true
1613 |
1614 | '@img/sharp-libvips-darwin-arm64@1.1.0':
1615 | optional: true
1616 |
1617 | '@img/sharp-libvips-darwin-x64@1.1.0':
1618 | optional: true
1619 |
1620 | '@img/sharp-libvips-linux-arm64@1.1.0':
1621 | optional: true
1622 |
1623 | '@img/sharp-libvips-linux-arm@1.1.0':
1624 | optional: true
1625 |
1626 | '@img/sharp-libvips-linux-ppc64@1.1.0':
1627 | optional: true
1628 |
1629 | '@img/sharp-libvips-linux-s390x@1.1.0':
1630 | optional: true
1631 |
1632 | '@img/sharp-libvips-linux-x64@1.1.0':
1633 | optional: true
1634 |
1635 | '@img/sharp-libvips-linuxmusl-arm64@1.1.0':
1636 | optional: true
1637 |
1638 | '@img/sharp-libvips-linuxmusl-x64@1.1.0':
1639 | optional: true
1640 |
1641 | '@img/sharp-linux-arm64@0.34.2':
1642 | optionalDependencies:
1643 | '@img/sharp-libvips-linux-arm64': 1.1.0
1644 | optional: true
1645 |
1646 | '@img/sharp-linux-arm@0.34.2':
1647 | optionalDependencies:
1648 | '@img/sharp-libvips-linux-arm': 1.1.0
1649 | optional: true
1650 |
1651 | '@img/sharp-linux-s390x@0.34.2':
1652 | optionalDependencies:
1653 | '@img/sharp-libvips-linux-s390x': 1.1.0
1654 | optional: true
1655 |
1656 | '@img/sharp-linux-x64@0.34.2':
1657 | optionalDependencies:
1658 | '@img/sharp-libvips-linux-x64': 1.1.0
1659 | optional: true
1660 |
1661 | '@img/sharp-linuxmusl-arm64@0.34.2':
1662 | optionalDependencies:
1663 | '@img/sharp-libvips-linuxmusl-arm64': 1.1.0
1664 | optional: true
1665 |
1666 | '@img/sharp-linuxmusl-x64@0.34.2':
1667 | optionalDependencies:
1668 | '@img/sharp-libvips-linuxmusl-x64': 1.1.0
1669 | optional: true
1670 |
1671 | '@img/sharp-wasm32@0.34.2':
1672 | dependencies:
1673 | '@emnapi/runtime': 1.4.3
1674 | optional: true
1675 |
1676 | '@img/sharp-win32-arm64@0.34.2':
1677 | optional: true
1678 |
1679 | '@img/sharp-win32-ia32@0.34.2':
1680 | optional: true
1681 |
1682 | '@img/sharp-win32-x64@0.34.2':
1683 | optional: true
1684 |
1685 | '@next/env@15.3.3': {}
1686 |
1687 | '@next/swc-darwin-arm64@15.3.3':
1688 | optional: true
1689 |
1690 | '@next/swc-darwin-x64@15.3.3':
1691 | optional: true
1692 |
1693 | '@next/swc-linux-arm64-gnu@15.3.3':
1694 | optional: true
1695 |
1696 | '@next/swc-linux-arm64-musl@15.3.3':
1697 | optional: true
1698 |
1699 | '@next/swc-linux-x64-gnu@15.3.3':
1700 | optional: true
1701 |
1702 | '@next/swc-linux-x64-musl@15.3.3':
1703 | optional: true
1704 |
1705 | '@next/swc-win32-arm64-msvc@15.3.3':
1706 | optional: true
1707 |
1708 | '@next/swc-win32-x64-msvc@15.3.3':
1709 | optional: true
1710 |
1711 | '@playwright/test@1.53.0':
1712 | dependencies:
1713 | playwright: 1.53.0
1714 |
1715 | '@prisma/client@6.9.0(prisma@6.9.0(typescript@5.8.3))(typescript@5.8.3)':
1716 | optionalDependencies:
1717 | prisma: 6.9.0(typescript@5.8.3)
1718 | typescript: 5.8.3
1719 |
1720 | '@prisma/config@6.9.0':
1721 | dependencies:
1722 | jiti: 2.4.2
1723 |
1724 | '@prisma/debug@6.9.0': {}
1725 |
1726 | '@prisma/engines-version@6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e': {}
1727 |
1728 | '@prisma/engines@6.9.0':
1729 | dependencies:
1730 | '@prisma/debug': 6.9.0
1731 | '@prisma/engines-version': 6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e
1732 | '@prisma/fetch-engine': 6.9.0
1733 | '@prisma/get-platform': 6.9.0
1734 |
1735 | '@prisma/fetch-engine@6.9.0':
1736 | dependencies:
1737 | '@prisma/debug': 6.9.0
1738 | '@prisma/engines-version': 6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e
1739 | '@prisma/get-platform': 6.9.0
1740 |
1741 | '@prisma/get-platform@6.9.0':
1742 | dependencies:
1743 | '@prisma/debug': 6.9.0
1744 |
1745 | '@sideway/address@4.1.5':
1746 | dependencies:
1747 | '@hapi/hoek': 9.3.0
1748 |
1749 | '@sideway/formula@3.0.1': {}
1750 |
1751 | '@sideway/pinpoint@2.0.0': {}
1752 |
1753 | '@swc/counter@0.1.3': {}
1754 |
1755 | '@swc/helpers@0.5.15':
1756 | dependencies:
1757 | tslib: 2.8.1
1758 |
1759 | '@tanstack/query-core@5.80.7': {}
1760 |
1761 | '@tanstack/query-devtools@5.80.0': {}
1762 |
1763 | '@tanstack/react-query-devtools@5.80.7(@tanstack/react-query@5.80.7(react@19.1.0))(react@19.1.0)':
1764 | dependencies:
1765 | '@tanstack/query-devtools': 5.80.0
1766 | '@tanstack/react-query': 5.80.7(react@19.1.0)
1767 | react: 19.1.0
1768 |
1769 | '@tanstack/react-query@5.80.7(react@19.1.0)':
1770 | dependencies:
1771 | '@tanstack/query-core': 5.80.7
1772 | react: 19.1.0
1773 |
1774 | '@trpc/client@11.3.2-canary.4(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(typescript@5.8.3)':
1775 | dependencies:
1776 | '@trpc/server': 11.3.2-canary.4(typescript@5.8.3)
1777 | typescript: 5.8.3
1778 |
1779 | '@trpc/next@11.3.2-canary.4(@tanstack/react-query@5.80.7(react@19.1.0))(@trpc/client@11.3.2-canary.4(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.3.2-canary.4(@tanstack/react-query@5.80.7(react@19.1.0))(@trpc/client@11.3.2-canary.4(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(next@15.3.3(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)':
1780 | dependencies:
1781 | '@trpc/client': 11.3.2-canary.4(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(typescript@5.8.3)
1782 | '@trpc/server': 11.3.2-canary.4(typescript@5.8.3)
1783 | next: 15.3.3(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
1784 | react: 19.1.0
1785 | react-dom: 19.1.0(react@19.1.0)
1786 | typescript: 5.8.3
1787 | optionalDependencies:
1788 | '@tanstack/react-query': 5.80.7(react@19.1.0)
1789 | '@trpc/react-query': 11.3.2-canary.4(@tanstack/react-query@5.80.7(react@19.1.0))(@trpc/client@11.3.2-canary.4(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
1790 |
1791 | '@trpc/react-query@11.3.2-canary.4(@tanstack/react-query@5.80.7(react@19.1.0))(@trpc/client@11.3.2-canary.4(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)':
1792 | dependencies:
1793 | '@tanstack/react-query': 5.80.7(react@19.1.0)
1794 | '@trpc/client': 11.3.2-canary.4(@trpc/server@11.3.2-canary.4(typescript@5.8.3))(typescript@5.8.3)
1795 | '@trpc/server': 11.3.2-canary.4(typescript@5.8.3)
1796 | react: 19.1.0
1797 | react-dom: 19.1.0(react@19.1.0)
1798 | typescript: 5.8.3
1799 |
1800 | '@trpc/server@11.3.2-canary.4(typescript@5.8.3)':
1801 | dependencies:
1802 | typescript: 5.8.3
1803 |
1804 | '@types/estree@1.0.8': {}
1805 |
1806 | '@types/json-schema@7.0.15': {}
1807 |
1808 | '@types/node@22.15.31':
1809 | dependencies:
1810 | undici-types: 6.21.0
1811 |
1812 | '@types/react@19.1.8':
1813 | dependencies:
1814 | csstype: 3.1.3
1815 |
1816 | acorn-jsx@5.3.2(acorn@8.15.0):
1817 | dependencies:
1818 | acorn: 8.15.0
1819 |
1820 | acorn@8.15.0: {}
1821 |
1822 | ajv@6.12.6:
1823 | dependencies:
1824 | fast-deep-equal: 3.1.3
1825 | fast-json-stable-stringify: 2.1.0
1826 | json-schema-traverse: 0.4.1
1827 | uri-js: 4.4.1
1828 |
1829 | ansi-styles@3.2.1:
1830 | dependencies:
1831 | color-convert: 1.9.3
1832 |
1833 | ansi-styles@4.3.0:
1834 | dependencies:
1835 | color-convert: 2.0.1
1836 |
1837 | arg@5.0.2: {}
1838 |
1839 | argparse@2.0.1: {}
1840 |
1841 | array-buffer-byte-length@1.0.2:
1842 | dependencies:
1843 | call-bound: 1.0.4
1844 | is-array-buffer: 3.0.5
1845 |
1846 | arraybuffer.prototype.slice@1.0.4:
1847 | dependencies:
1848 | array-buffer-byte-length: 1.0.2
1849 | call-bind: 1.0.8
1850 | define-properties: 1.2.1
1851 | es-abstract: 1.24.0
1852 | es-errors: 1.3.0
1853 | get-intrinsic: 1.3.0
1854 | is-array-buffer: 3.0.5
1855 |
1856 | async-function@1.0.0: {}
1857 |
1858 | asynckit@0.4.0: {}
1859 |
1860 | available-typed-arrays@1.0.7:
1861 | dependencies:
1862 | possible-typed-array-names: 1.1.0
1863 |
1864 | axios@0.27.2(debug@4.3.4):
1865 | dependencies:
1866 | follow-redirects: 1.15.9(debug@4.3.4)
1867 | form-data: 4.0.3
1868 | transitivePeerDependencies:
1869 | - debug
1870 |
1871 | balanced-match@1.0.2: {}
1872 |
1873 | bluebird@3.7.2: {}
1874 |
1875 | brace-expansion@1.1.12:
1876 | dependencies:
1877 | balanced-match: 1.0.2
1878 | concat-map: 0.0.1
1879 |
1880 | busboy@1.6.0:
1881 | dependencies:
1882 | streamsearch: 1.1.0
1883 |
1884 | call-bind-apply-helpers@1.0.2:
1885 | dependencies:
1886 | es-errors: 1.3.0
1887 | function-bind: 1.1.2
1888 |
1889 | call-bind@1.0.8:
1890 | dependencies:
1891 | call-bind-apply-helpers: 1.0.2
1892 | es-define-property: 1.0.1
1893 | get-intrinsic: 1.3.0
1894 | set-function-length: 1.2.2
1895 |
1896 | call-bound@1.0.4:
1897 | dependencies:
1898 | call-bind-apply-helpers: 1.0.2
1899 | get-intrinsic: 1.3.0
1900 |
1901 | callsites@3.1.0: {}
1902 |
1903 | caniuse-lite@1.0.30001723: {}
1904 |
1905 | chalk@2.4.2:
1906 | dependencies:
1907 | ansi-styles: 3.2.1
1908 | escape-string-regexp: 1.0.5
1909 | supports-color: 5.5.0
1910 |
1911 | chalk@4.1.2:
1912 | dependencies:
1913 | ansi-styles: 4.3.0
1914 | supports-color: 7.2.0
1915 |
1916 | check-more-types@2.24.0: {}
1917 |
1918 | client-only@0.0.1: {}
1919 |
1920 | clsx@2.1.1: {}
1921 |
1922 | color-convert@1.9.3:
1923 | dependencies:
1924 | color-name: 1.1.3
1925 |
1926 | color-convert@2.0.1:
1927 | dependencies:
1928 | color-name: 1.1.4
1929 |
1930 | color-name@1.1.3: {}
1931 |
1932 | color-name@1.1.4: {}
1933 |
1934 | color-string@1.9.1:
1935 | dependencies:
1936 | color-name: 1.1.4
1937 | simple-swizzle: 0.2.2
1938 | optional: true
1939 |
1940 | color@4.2.3:
1941 | dependencies:
1942 | color-convert: 2.0.1
1943 | color-string: 1.9.1
1944 | optional: true
1945 |
1946 | combined-stream@1.0.8:
1947 | dependencies:
1948 | delayed-stream: 1.0.0
1949 |
1950 | concat-map@0.0.1: {}
1951 |
1952 | copy-anything@3.0.5:
1953 | dependencies:
1954 | is-what: 4.1.16
1955 |
1956 | cross-spawn@6.0.6:
1957 | dependencies:
1958 | nice-try: 1.0.5
1959 | path-key: 2.0.1
1960 | semver: 5.7.2
1961 | shebang-command: 1.2.0
1962 | which: 1.3.1
1963 |
1964 | cross-spawn@7.0.6:
1965 | dependencies:
1966 | path-key: 3.1.1
1967 | shebang-command: 2.0.0
1968 | which: 2.0.2
1969 |
1970 | csstype@3.1.3: {}
1971 |
1972 | data-view-buffer@1.0.2:
1973 | dependencies:
1974 | call-bound: 1.0.4
1975 | es-errors: 1.3.0
1976 | is-data-view: 1.0.2
1977 |
1978 | data-view-byte-length@1.0.2:
1979 | dependencies:
1980 | call-bound: 1.0.4
1981 | es-errors: 1.3.0
1982 | is-data-view: 1.0.2
1983 |
1984 | data-view-byte-offset@1.0.1:
1985 | dependencies:
1986 | call-bound: 1.0.4
1987 | es-errors: 1.3.0
1988 | is-data-view: 1.0.2
1989 |
1990 | debug@4.3.4:
1991 | dependencies:
1992 | ms: 2.1.2
1993 |
1994 | debug@4.4.1:
1995 | dependencies:
1996 | ms: 2.1.3
1997 |
1998 | deep-is@0.1.4: {}
1999 |
2000 | define-data-property@1.1.4:
2001 | dependencies:
2002 | es-define-property: 1.0.1
2003 | es-errors: 1.3.0
2004 | gopd: 1.2.0
2005 |
2006 | define-properties@1.2.1:
2007 | dependencies:
2008 | define-data-property: 1.1.4
2009 | has-property-descriptors: 1.0.2
2010 | object-keys: 1.1.1
2011 |
2012 | delayed-stream@1.0.0: {}
2013 |
2014 | detect-libc@2.0.4:
2015 | optional: true
2016 |
2017 | dunder-proto@1.0.1:
2018 | dependencies:
2019 | call-bind-apply-helpers: 1.0.2
2020 | es-errors: 1.3.0
2021 | gopd: 1.2.0
2022 |
2023 | duplexer@0.1.2: {}
2024 |
2025 | error-ex@1.3.2:
2026 | dependencies:
2027 | is-arrayish: 0.2.1
2028 |
2029 | es-abstract@1.24.0:
2030 | dependencies:
2031 | array-buffer-byte-length: 1.0.2
2032 | arraybuffer.prototype.slice: 1.0.4
2033 | available-typed-arrays: 1.0.7
2034 | call-bind: 1.0.8
2035 | call-bound: 1.0.4
2036 | data-view-buffer: 1.0.2
2037 | data-view-byte-length: 1.0.2
2038 | data-view-byte-offset: 1.0.1
2039 | es-define-property: 1.0.1
2040 | es-errors: 1.3.0
2041 | es-object-atoms: 1.1.1
2042 | es-set-tostringtag: 2.1.0
2043 | es-to-primitive: 1.3.0
2044 | function.prototype.name: 1.1.8
2045 | get-intrinsic: 1.3.0
2046 | get-proto: 1.0.1
2047 | get-symbol-description: 1.1.0
2048 | globalthis: 1.0.4
2049 | gopd: 1.2.0
2050 | has-property-descriptors: 1.0.2
2051 | has-proto: 1.2.0
2052 | has-symbols: 1.1.0
2053 | hasown: 2.0.2
2054 | internal-slot: 1.1.0
2055 | is-array-buffer: 3.0.5
2056 | is-callable: 1.2.7
2057 | is-data-view: 1.0.2
2058 | is-negative-zero: 2.0.3
2059 | is-regex: 1.2.1
2060 | is-set: 2.0.3
2061 | is-shared-array-buffer: 1.0.4
2062 | is-string: 1.1.1
2063 | is-typed-array: 1.1.15
2064 | is-weakref: 1.1.1
2065 | math-intrinsics: 1.1.0
2066 | object-inspect: 1.13.4
2067 | object-keys: 1.1.1
2068 | object.assign: 4.1.7
2069 | own-keys: 1.0.1
2070 | regexp.prototype.flags: 1.5.4
2071 | safe-array-concat: 1.1.3
2072 | safe-push-apply: 1.0.0
2073 | safe-regex-test: 1.1.0
2074 | set-proto: 1.0.0
2075 | stop-iteration-iterator: 1.1.0
2076 | string.prototype.trim: 1.2.10
2077 | string.prototype.trimend: 1.0.9
2078 | string.prototype.trimstart: 1.0.8
2079 | typed-array-buffer: 1.0.3
2080 | typed-array-byte-length: 1.0.3
2081 | typed-array-byte-offset: 1.0.4
2082 | typed-array-length: 1.0.7
2083 | unbox-primitive: 1.1.0
2084 | which-typed-array: 1.1.19
2085 |
2086 | es-define-property@1.0.1: {}
2087 |
2088 | es-errors@1.3.0: {}
2089 |
2090 | es-object-atoms@1.1.1:
2091 | dependencies:
2092 | es-errors: 1.3.0
2093 |
2094 | es-set-tostringtag@2.1.0:
2095 | dependencies:
2096 | es-errors: 1.3.0
2097 | get-intrinsic: 1.3.0
2098 | has-tostringtag: 1.0.2
2099 | hasown: 2.0.2
2100 |
2101 | es-to-primitive@1.3.0:
2102 | dependencies:
2103 | is-callable: 1.2.7
2104 | is-date-object: 1.1.0
2105 | is-symbol: 1.1.1
2106 |
2107 | escape-string-regexp@1.0.5: {}
2108 |
2109 | escape-string-regexp@4.0.0: {}
2110 |
2111 | eslint-scope@8.4.0:
2112 | dependencies:
2113 | esrecurse: 4.3.0
2114 | estraverse: 5.3.0
2115 |
2116 | eslint-visitor-keys@3.4.3: {}
2117 |
2118 | eslint-visitor-keys@4.2.1: {}
2119 |
2120 | eslint@9.28.0(jiti@2.4.2):
2121 | dependencies:
2122 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.4.2))
2123 | '@eslint-community/regexpp': 4.12.1
2124 | '@eslint/config-array': 0.20.1
2125 | '@eslint/config-helpers': 0.2.3
2126 | '@eslint/core': 0.14.0
2127 | '@eslint/eslintrc': 3.3.1
2128 | '@eslint/js': 9.28.0
2129 | '@eslint/plugin-kit': 0.3.2
2130 | '@humanfs/node': 0.16.6
2131 | '@humanwhocodes/module-importer': 1.0.1
2132 | '@humanwhocodes/retry': 0.4.3
2133 | '@types/estree': 1.0.8
2134 | '@types/json-schema': 7.0.15
2135 | ajv: 6.12.6
2136 | chalk: 4.1.2
2137 | cross-spawn: 7.0.6
2138 | debug: 4.4.1
2139 | escape-string-regexp: 4.0.0
2140 | eslint-scope: 8.4.0
2141 | eslint-visitor-keys: 4.2.1
2142 | espree: 10.4.0
2143 | esquery: 1.6.0
2144 | esutils: 2.0.3
2145 | fast-deep-equal: 3.1.3
2146 | file-entry-cache: 8.0.0
2147 | find-up: 5.0.0
2148 | glob-parent: 6.0.2
2149 | ignore: 5.3.2
2150 | imurmurhash: 0.1.4
2151 | is-glob: 4.0.3
2152 | json-stable-stringify-without-jsonify: 1.0.1
2153 | lodash.merge: 4.6.2
2154 | minimatch: 3.1.2
2155 | natural-compare: 1.4.0
2156 | optionator: 0.9.4
2157 | optionalDependencies:
2158 | jiti: 2.4.2
2159 | transitivePeerDependencies:
2160 | - supports-color
2161 |
2162 | espree@10.4.0:
2163 | dependencies:
2164 | acorn: 8.15.0
2165 | acorn-jsx: 5.3.2(acorn@8.15.0)
2166 | eslint-visitor-keys: 4.2.1
2167 |
2168 | esquery@1.6.0:
2169 | dependencies:
2170 | estraverse: 5.3.0
2171 |
2172 | esrecurse@4.3.0:
2173 | dependencies:
2174 | estraverse: 5.3.0
2175 |
2176 | estraverse@5.3.0: {}
2177 |
2178 | esutils@2.0.3: {}
2179 |
2180 | event-stream@3.3.4:
2181 | dependencies:
2182 | duplexer: 0.1.2
2183 | from: 0.1.7
2184 | map-stream: 0.1.0
2185 | pause-stream: 0.0.11
2186 | split: 0.3.3
2187 | stream-combiner: 0.0.4
2188 | through: 2.3.8
2189 |
2190 | execa@5.1.1:
2191 | dependencies:
2192 | cross-spawn: 7.0.6
2193 | get-stream: 6.0.1
2194 | human-signals: 2.1.0
2195 | is-stream: 2.0.1
2196 | merge-stream: 2.0.0
2197 | npm-run-path: 4.0.1
2198 | onetime: 5.1.2
2199 | signal-exit: 3.0.7
2200 | strip-final-newline: 2.0.0
2201 |
2202 | fast-deep-equal@3.1.3: {}
2203 |
2204 | fast-json-stable-stringify@2.1.0: {}
2205 |
2206 | fast-levenshtein@2.0.6: {}
2207 |
2208 | file-entry-cache@8.0.0:
2209 | dependencies:
2210 | flat-cache: 4.0.1
2211 |
2212 | find-up@5.0.0:
2213 | dependencies:
2214 | locate-path: 6.0.0
2215 | path-exists: 4.0.0
2216 |
2217 | flat-cache@4.0.1:
2218 | dependencies:
2219 | flatted: 3.3.3
2220 | keyv: 4.5.4
2221 |
2222 | flatted@3.3.3: {}
2223 |
2224 | follow-redirects@1.15.9(debug@4.3.4):
2225 | optionalDependencies:
2226 | debug: 4.3.4
2227 |
2228 | for-each@0.3.5:
2229 | dependencies:
2230 | is-callable: 1.2.7
2231 |
2232 | form-data@4.0.3:
2233 | dependencies:
2234 | asynckit: 0.4.0
2235 | combined-stream: 1.0.8
2236 | es-set-tostringtag: 2.1.0
2237 | hasown: 2.0.2
2238 | mime-types: 2.1.35
2239 |
2240 | from@0.1.7: {}
2241 |
2242 | fsevents@2.3.2:
2243 | optional: true
2244 |
2245 | function-bind@1.1.2: {}
2246 |
2247 | function.prototype.name@1.1.8:
2248 | dependencies:
2249 | call-bind: 1.0.8
2250 | call-bound: 1.0.4
2251 | define-properties: 1.2.1
2252 | functions-have-names: 1.2.3
2253 | hasown: 2.0.2
2254 | is-callable: 1.2.7
2255 |
2256 | functions-have-names@1.2.3: {}
2257 |
2258 | get-intrinsic@1.3.0:
2259 | dependencies:
2260 | call-bind-apply-helpers: 1.0.2
2261 | es-define-property: 1.0.1
2262 | es-errors: 1.3.0
2263 | es-object-atoms: 1.1.1
2264 | function-bind: 1.1.2
2265 | get-proto: 1.0.1
2266 | gopd: 1.2.0
2267 | has-symbols: 1.1.0
2268 | hasown: 2.0.2
2269 | math-intrinsics: 1.1.0
2270 |
2271 | get-proto@1.0.1:
2272 | dependencies:
2273 | dunder-proto: 1.0.1
2274 | es-object-atoms: 1.1.1
2275 |
2276 | get-stream@6.0.1: {}
2277 |
2278 | get-symbol-description@1.1.0:
2279 | dependencies:
2280 | call-bound: 1.0.4
2281 | es-errors: 1.3.0
2282 | get-intrinsic: 1.3.0
2283 |
2284 | glob-parent@6.0.2:
2285 | dependencies:
2286 | is-glob: 4.0.3
2287 |
2288 | globals@14.0.0: {}
2289 |
2290 | globalthis@1.0.4:
2291 | dependencies:
2292 | define-properties: 1.2.1
2293 | gopd: 1.2.0
2294 |
2295 | gopd@1.2.0: {}
2296 |
2297 | graceful-fs@4.2.11: {}
2298 |
2299 | has-bigints@1.1.0: {}
2300 |
2301 | has-flag@3.0.0: {}
2302 |
2303 | has-flag@4.0.0: {}
2304 |
2305 | has-property-descriptors@1.0.2:
2306 | dependencies:
2307 | es-define-property: 1.0.1
2308 |
2309 | has-proto@1.2.0:
2310 | dependencies:
2311 | dunder-proto: 1.0.1
2312 |
2313 | has-symbols@1.1.0: {}
2314 |
2315 | has-tostringtag@1.0.2:
2316 | dependencies:
2317 | has-symbols: 1.1.0
2318 |
2319 | hasown@2.0.2:
2320 | dependencies:
2321 | function-bind: 1.1.2
2322 |
2323 | hosted-git-info@2.8.9: {}
2324 |
2325 | human-signals@2.1.0: {}
2326 |
2327 | ignore@5.3.2: {}
2328 |
2329 | import-fresh@3.3.1:
2330 | dependencies:
2331 | parent-module: 1.0.1
2332 | resolve-from: 4.0.0
2333 |
2334 | imurmurhash@0.1.4: {}
2335 |
2336 | internal-slot@1.1.0:
2337 | dependencies:
2338 | es-errors: 1.3.0
2339 | hasown: 2.0.2
2340 | side-channel: 1.1.0
2341 |
2342 | is-array-buffer@3.0.5:
2343 | dependencies:
2344 | call-bind: 1.0.8
2345 | call-bound: 1.0.4
2346 | get-intrinsic: 1.3.0
2347 |
2348 | is-arrayish@0.2.1: {}
2349 |
2350 | is-arrayish@0.3.2:
2351 | optional: true
2352 |
2353 | is-async-function@2.1.1:
2354 | dependencies:
2355 | async-function: 1.0.0
2356 | call-bound: 1.0.4
2357 | get-proto: 1.0.1
2358 | has-tostringtag: 1.0.2
2359 | safe-regex-test: 1.1.0
2360 |
2361 | is-bigint@1.1.0:
2362 | dependencies:
2363 | has-bigints: 1.1.0
2364 |
2365 | is-boolean-object@1.2.2:
2366 | dependencies:
2367 | call-bound: 1.0.4
2368 | has-tostringtag: 1.0.2
2369 |
2370 | is-callable@1.2.7: {}
2371 |
2372 | is-core-module@2.16.1:
2373 | dependencies:
2374 | hasown: 2.0.2
2375 |
2376 | is-data-view@1.0.2:
2377 | dependencies:
2378 | call-bound: 1.0.4
2379 | get-intrinsic: 1.3.0
2380 | is-typed-array: 1.1.15
2381 |
2382 | is-date-object@1.1.0:
2383 | dependencies:
2384 | call-bound: 1.0.4
2385 | has-tostringtag: 1.0.2
2386 |
2387 | is-extglob@2.1.1: {}
2388 |
2389 | is-finalizationregistry@1.1.1:
2390 | dependencies:
2391 | call-bound: 1.0.4
2392 |
2393 | is-generator-function@1.1.0:
2394 | dependencies:
2395 | call-bound: 1.0.4
2396 | get-proto: 1.0.1
2397 | has-tostringtag: 1.0.2
2398 | safe-regex-test: 1.1.0
2399 |
2400 | is-glob@4.0.3:
2401 | dependencies:
2402 | is-extglob: 2.1.1
2403 |
2404 | is-map@2.0.3: {}
2405 |
2406 | is-negative-zero@2.0.3: {}
2407 |
2408 | is-number-object@1.1.1:
2409 | dependencies:
2410 | call-bound: 1.0.4
2411 | has-tostringtag: 1.0.2
2412 |
2413 | is-regex@1.2.1:
2414 | dependencies:
2415 | call-bound: 1.0.4
2416 | gopd: 1.2.0
2417 | has-tostringtag: 1.0.2
2418 | hasown: 2.0.2
2419 |
2420 | is-set@2.0.3: {}
2421 |
2422 | is-shared-array-buffer@1.0.4:
2423 | dependencies:
2424 | call-bound: 1.0.4
2425 |
2426 | is-stream@2.0.1: {}
2427 |
2428 | is-string@1.1.1:
2429 | dependencies:
2430 | call-bound: 1.0.4
2431 | has-tostringtag: 1.0.2
2432 |
2433 | is-symbol@1.1.1:
2434 | dependencies:
2435 | call-bound: 1.0.4
2436 | has-symbols: 1.1.0
2437 | safe-regex-test: 1.1.0
2438 |
2439 | is-typed-array@1.1.15:
2440 | dependencies:
2441 | which-typed-array: 1.1.19
2442 |
2443 | is-weakmap@2.0.2: {}
2444 |
2445 | is-weakref@1.1.1:
2446 | dependencies:
2447 | call-bound: 1.0.4
2448 |
2449 | is-weakset@2.0.4:
2450 | dependencies:
2451 | call-bound: 1.0.4
2452 | get-intrinsic: 1.3.0
2453 |
2454 | is-what@4.1.16: {}
2455 |
2456 | isarray@2.0.5: {}
2457 |
2458 | isexe@2.0.0: {}
2459 |
2460 | jiti@2.4.2: {}
2461 |
2462 | joi@17.13.3:
2463 | dependencies:
2464 | '@hapi/hoek': 9.3.0
2465 | '@hapi/topo': 5.1.0
2466 | '@sideway/address': 4.1.5
2467 | '@sideway/formula': 3.0.1
2468 | '@sideway/pinpoint': 2.0.0
2469 |
2470 | js-yaml@4.1.0:
2471 | dependencies:
2472 | argparse: 2.0.1
2473 |
2474 | json-buffer@3.0.1: {}
2475 |
2476 | json-parse-better-errors@1.0.2: {}
2477 |
2478 | json-schema-traverse@0.4.1: {}
2479 |
2480 | json-stable-stringify-without-jsonify@1.0.1: {}
2481 |
2482 | keyv@4.5.4:
2483 | dependencies:
2484 | json-buffer: 3.0.1
2485 |
2486 | lazy-ass@1.6.0: {}
2487 |
2488 | levn@0.4.1:
2489 | dependencies:
2490 | prelude-ls: 1.2.1
2491 | type-check: 0.4.0
2492 |
2493 | load-json-file@4.0.0:
2494 | dependencies:
2495 | graceful-fs: 4.2.11
2496 | parse-json: 4.0.0
2497 | pify: 3.0.0
2498 | strip-bom: 3.0.0
2499 |
2500 | locate-path@6.0.0:
2501 | dependencies:
2502 | p-locate: 5.0.0
2503 |
2504 | lodash.merge@4.6.2: {}
2505 |
2506 | lodash@4.17.21: {}
2507 |
2508 | map-stream@0.1.0: {}
2509 |
2510 | math-intrinsics@1.1.0: {}
2511 |
2512 | memorystream@0.3.1: {}
2513 |
2514 | merge-stream@2.0.0: {}
2515 |
2516 | mime-db@1.52.0: {}
2517 |
2518 | mime-types@2.1.35:
2519 | dependencies:
2520 | mime-db: 1.52.0
2521 |
2522 | mimic-fn@2.1.0: {}
2523 |
2524 | minimatch@3.1.2:
2525 | dependencies:
2526 | brace-expansion: 1.1.12
2527 |
2528 | minimist@1.2.8: {}
2529 |
2530 | ms@2.1.2: {}
2531 |
2532 | ms@2.1.3: {}
2533 |
2534 | nanoid@3.3.11: {}
2535 |
2536 | natural-compare@1.4.0: {}
2537 |
2538 | next@15.3.3(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
2539 | dependencies:
2540 | '@next/env': 15.3.3
2541 | '@swc/counter': 0.1.3
2542 | '@swc/helpers': 0.5.15
2543 | busboy: 1.6.0
2544 | caniuse-lite: 1.0.30001723
2545 | postcss: 8.4.31
2546 | react: 19.1.0
2547 | react-dom: 19.1.0(react@19.1.0)
2548 | styled-jsx: 5.1.6(react@19.1.0)
2549 | optionalDependencies:
2550 | '@next/swc-darwin-arm64': 15.3.3
2551 | '@next/swc-darwin-x64': 15.3.3
2552 | '@next/swc-linux-arm64-gnu': 15.3.3
2553 | '@next/swc-linux-arm64-musl': 15.3.3
2554 | '@next/swc-linux-x64-gnu': 15.3.3
2555 | '@next/swc-linux-x64-musl': 15.3.3
2556 | '@next/swc-win32-arm64-msvc': 15.3.3
2557 | '@next/swc-win32-x64-msvc': 15.3.3
2558 | '@playwright/test': 1.53.0
2559 | sharp: 0.34.2
2560 | transitivePeerDependencies:
2561 | - '@babel/core'
2562 | - babel-plugin-macros
2563 |
2564 | nice-try@1.0.5: {}
2565 |
2566 | normalize-package-data@2.5.0:
2567 | dependencies:
2568 | hosted-git-info: 2.8.9
2569 | resolve: 1.22.10
2570 | semver: 5.7.2
2571 | validate-npm-package-license: 3.0.4
2572 |
2573 | npm-run-all@4.1.5:
2574 | dependencies:
2575 | ansi-styles: 3.2.1
2576 | chalk: 2.4.2
2577 | cross-spawn: 6.0.6
2578 | memorystream: 0.3.1
2579 | minimatch: 3.1.2
2580 | pidtree: 0.3.1
2581 | read-pkg: 3.0.0
2582 | shell-quote: 1.8.3
2583 | string.prototype.padend: 3.1.6
2584 |
2585 | npm-run-path@4.0.1:
2586 | dependencies:
2587 | path-key: 3.1.1
2588 |
2589 | object-inspect@1.13.4: {}
2590 |
2591 | object-keys@1.1.1: {}
2592 |
2593 | object.assign@4.1.7:
2594 | dependencies:
2595 | call-bind: 1.0.8
2596 | call-bound: 1.0.4
2597 | define-properties: 1.2.1
2598 | es-object-atoms: 1.1.1
2599 | has-symbols: 1.1.0
2600 | object-keys: 1.1.1
2601 |
2602 | onetime@5.1.2:
2603 | dependencies:
2604 | mimic-fn: 2.1.0
2605 |
2606 | optionator@0.9.4:
2607 | dependencies:
2608 | deep-is: 0.1.4
2609 | fast-levenshtein: 2.0.6
2610 | levn: 0.4.1
2611 | prelude-ls: 1.2.1
2612 | type-check: 0.4.0
2613 | word-wrap: 1.2.5
2614 |
2615 | own-keys@1.0.1:
2616 | dependencies:
2617 | get-intrinsic: 1.3.0
2618 | object-keys: 1.1.1
2619 | safe-push-apply: 1.0.0
2620 |
2621 | p-limit@3.1.0:
2622 | dependencies:
2623 | yocto-queue: 0.1.0
2624 |
2625 | p-locate@5.0.0:
2626 | dependencies:
2627 | p-limit: 3.1.0
2628 |
2629 | parent-module@1.0.1:
2630 | dependencies:
2631 | callsites: 3.1.0
2632 |
2633 | parse-json@4.0.0:
2634 | dependencies:
2635 | error-ex: 1.3.2
2636 | json-parse-better-errors: 1.0.2
2637 |
2638 | path-exists@4.0.0: {}
2639 |
2640 | path-key@2.0.1: {}
2641 |
2642 | path-key@3.1.1: {}
2643 |
2644 | path-parse@1.0.7: {}
2645 |
2646 | path-type@3.0.0:
2647 | dependencies:
2648 | pify: 3.0.0
2649 |
2650 | pause-stream@0.0.11:
2651 | dependencies:
2652 | through: 2.3.8
2653 |
2654 | picocolors@1.1.1: {}
2655 |
2656 | pidtree@0.3.1: {}
2657 |
2658 | pify@3.0.0: {}
2659 |
2660 | playwright-core@1.53.0: {}
2661 |
2662 | playwright@1.53.0:
2663 | dependencies:
2664 | playwright-core: 1.53.0
2665 | optionalDependencies:
2666 | fsevents: 2.3.2
2667 |
2668 | possible-typed-array-names@1.1.0: {}
2669 |
2670 | postcss@8.4.31:
2671 | dependencies:
2672 | nanoid: 3.3.11
2673 | picocolors: 1.1.1
2674 | source-map-js: 1.2.1
2675 |
2676 | prelude-ls@1.2.1: {}
2677 |
2678 | prisma@6.9.0(typescript@5.8.3):
2679 | dependencies:
2680 | '@prisma/config': 6.9.0
2681 | '@prisma/engines': 6.9.0
2682 | optionalDependencies:
2683 | typescript: 5.8.3
2684 |
2685 | ps-tree@1.2.0:
2686 | dependencies:
2687 | event-stream: 3.3.4
2688 |
2689 | punycode@2.3.1: {}
2690 |
2691 | react-dom@19.1.0(react@19.1.0):
2692 | dependencies:
2693 | react: 19.1.0
2694 | scheduler: 0.26.0
2695 |
2696 | react@19.1.0: {}
2697 |
2698 | read-pkg@3.0.0:
2699 | dependencies:
2700 | load-json-file: 4.0.0
2701 | normalize-package-data: 2.5.0
2702 | path-type: 3.0.0
2703 |
2704 | reflect.getprototypeof@1.0.10:
2705 | dependencies:
2706 | call-bind: 1.0.8
2707 | define-properties: 1.2.1
2708 | es-abstract: 1.24.0
2709 | es-errors: 1.3.0
2710 | es-object-atoms: 1.1.1
2711 | get-intrinsic: 1.3.0
2712 | get-proto: 1.0.1
2713 | which-builtin-type: 1.2.1
2714 |
2715 | regexp.prototype.flags@1.5.4:
2716 | dependencies:
2717 | call-bind: 1.0.8
2718 | define-properties: 1.2.1
2719 | es-errors: 1.3.0
2720 | get-proto: 1.0.1
2721 | gopd: 1.2.0
2722 | set-function-name: 2.0.2
2723 |
2724 | resolve-from@4.0.0: {}
2725 |
2726 | resolve@1.22.10:
2727 | dependencies:
2728 | is-core-module: 2.16.1
2729 | path-parse: 1.0.7
2730 | supports-preserve-symlinks-flag: 1.0.0
2731 |
2732 | rxjs@7.8.2:
2733 | dependencies:
2734 | tslib: 2.8.1
2735 |
2736 | safe-array-concat@1.1.3:
2737 | dependencies:
2738 | call-bind: 1.0.8
2739 | call-bound: 1.0.4
2740 | get-intrinsic: 1.3.0
2741 | has-symbols: 1.1.0
2742 | isarray: 2.0.5
2743 |
2744 | safe-push-apply@1.0.0:
2745 | dependencies:
2746 | es-errors: 1.3.0
2747 | isarray: 2.0.5
2748 |
2749 | safe-regex-test@1.1.0:
2750 | dependencies:
2751 | call-bound: 1.0.4
2752 | es-errors: 1.3.0
2753 | is-regex: 1.2.1
2754 |
2755 | scheduler@0.26.0: {}
2756 |
2757 | semver@5.7.2: {}
2758 |
2759 | semver@7.7.2:
2760 | optional: true
2761 |
2762 | set-function-length@1.2.2:
2763 | dependencies:
2764 | define-data-property: 1.1.4
2765 | es-errors: 1.3.0
2766 | function-bind: 1.1.2
2767 | get-intrinsic: 1.3.0
2768 | gopd: 1.2.0
2769 | has-property-descriptors: 1.0.2
2770 |
2771 | set-function-name@2.0.2:
2772 | dependencies:
2773 | define-data-property: 1.1.4
2774 | es-errors: 1.3.0
2775 | functions-have-names: 1.2.3
2776 | has-property-descriptors: 1.0.2
2777 |
2778 | set-proto@1.0.0:
2779 | dependencies:
2780 | dunder-proto: 1.0.1
2781 | es-errors: 1.3.0
2782 | es-object-atoms: 1.1.1
2783 |
2784 | sharp@0.34.2:
2785 | dependencies:
2786 | color: 4.2.3
2787 | detect-libc: 2.0.4
2788 | semver: 7.7.2
2789 | optionalDependencies:
2790 | '@img/sharp-darwin-arm64': 0.34.2
2791 | '@img/sharp-darwin-x64': 0.34.2
2792 | '@img/sharp-libvips-darwin-arm64': 1.1.0
2793 | '@img/sharp-libvips-darwin-x64': 1.1.0
2794 | '@img/sharp-libvips-linux-arm': 1.1.0
2795 | '@img/sharp-libvips-linux-arm64': 1.1.0
2796 | '@img/sharp-libvips-linux-ppc64': 1.1.0
2797 | '@img/sharp-libvips-linux-s390x': 1.1.0
2798 | '@img/sharp-libvips-linux-x64': 1.1.0
2799 | '@img/sharp-libvips-linuxmusl-arm64': 1.1.0
2800 | '@img/sharp-libvips-linuxmusl-x64': 1.1.0
2801 | '@img/sharp-linux-arm': 0.34.2
2802 | '@img/sharp-linux-arm64': 0.34.2
2803 | '@img/sharp-linux-s390x': 0.34.2
2804 | '@img/sharp-linux-x64': 0.34.2
2805 | '@img/sharp-linuxmusl-arm64': 0.34.2
2806 | '@img/sharp-linuxmusl-x64': 0.34.2
2807 | '@img/sharp-wasm32': 0.34.2
2808 | '@img/sharp-win32-arm64': 0.34.2
2809 | '@img/sharp-win32-ia32': 0.34.2
2810 | '@img/sharp-win32-x64': 0.34.2
2811 | optional: true
2812 |
2813 | shebang-command@1.2.0:
2814 | dependencies:
2815 | shebang-regex: 1.0.0
2816 |
2817 | shebang-command@2.0.0:
2818 | dependencies:
2819 | shebang-regex: 3.0.0
2820 |
2821 | shebang-regex@1.0.0: {}
2822 |
2823 | shebang-regex@3.0.0: {}
2824 |
2825 | shell-quote@1.8.3: {}
2826 |
2827 | side-channel-list@1.0.0:
2828 | dependencies:
2829 | es-errors: 1.3.0
2830 | object-inspect: 1.13.4
2831 |
2832 | side-channel-map@1.0.1:
2833 | dependencies:
2834 | call-bound: 1.0.4
2835 | es-errors: 1.3.0
2836 | get-intrinsic: 1.3.0
2837 | object-inspect: 1.13.4
2838 |
2839 | side-channel-weakmap@1.0.2:
2840 | dependencies:
2841 | call-bound: 1.0.4
2842 | es-errors: 1.3.0
2843 | get-intrinsic: 1.3.0
2844 | object-inspect: 1.13.4
2845 | side-channel-map: 1.0.1
2846 |
2847 | side-channel@1.1.0:
2848 | dependencies:
2849 | es-errors: 1.3.0
2850 | object-inspect: 1.13.4
2851 | side-channel-list: 1.0.0
2852 | side-channel-map: 1.0.1
2853 | side-channel-weakmap: 1.0.2
2854 |
2855 | signal-exit@3.0.7: {}
2856 |
2857 | simple-swizzle@0.2.2:
2858 | dependencies:
2859 | is-arrayish: 0.3.2
2860 | optional: true
2861 |
2862 | source-map-js@1.2.1: {}
2863 |
2864 | spdx-correct@3.2.0:
2865 | dependencies:
2866 | spdx-expression-parse: 3.0.1
2867 | spdx-license-ids: 3.0.21
2868 |
2869 | spdx-exceptions@2.5.0: {}
2870 |
2871 | spdx-expression-parse@3.0.1:
2872 | dependencies:
2873 | spdx-exceptions: 2.5.0
2874 | spdx-license-ids: 3.0.21
2875 |
2876 | spdx-license-ids@3.0.21: {}
2877 |
2878 | split@0.3.3:
2879 | dependencies:
2880 | through: 2.3.8
2881 |
2882 | start-server-and-test@1.15.5:
2883 | dependencies:
2884 | arg: 5.0.2
2885 | bluebird: 3.7.2
2886 | check-more-types: 2.24.0
2887 | debug: 4.3.4
2888 | execa: 5.1.1
2889 | lazy-ass: 1.6.0
2890 | ps-tree: 1.2.0
2891 | wait-on: 7.0.1(debug@4.3.4)
2892 | transitivePeerDependencies:
2893 | - supports-color
2894 |
2895 | stop-iteration-iterator@1.1.0:
2896 | dependencies:
2897 | es-errors: 1.3.0
2898 | internal-slot: 1.1.0
2899 |
2900 | stream-combiner@0.0.4:
2901 | dependencies:
2902 | duplexer: 0.1.2
2903 |
2904 | streamsearch@1.1.0: {}
2905 |
2906 | string.prototype.padend@3.1.6:
2907 | dependencies:
2908 | call-bind: 1.0.8
2909 | define-properties: 1.2.1
2910 | es-abstract: 1.24.0
2911 | es-object-atoms: 1.1.1
2912 |
2913 | string.prototype.trim@1.2.10:
2914 | dependencies:
2915 | call-bind: 1.0.8
2916 | call-bound: 1.0.4
2917 | define-data-property: 1.1.4
2918 | define-properties: 1.2.1
2919 | es-abstract: 1.24.0
2920 | es-object-atoms: 1.1.1
2921 | has-property-descriptors: 1.0.2
2922 |
2923 | string.prototype.trimend@1.0.9:
2924 | dependencies:
2925 | call-bind: 1.0.8
2926 | call-bound: 1.0.4
2927 | define-properties: 1.2.1
2928 | es-object-atoms: 1.1.1
2929 |
2930 | string.prototype.trimstart@1.0.8:
2931 | dependencies:
2932 | call-bind: 1.0.8
2933 | define-properties: 1.2.1
2934 | es-object-atoms: 1.1.1
2935 |
2936 | strip-bom@3.0.0: {}
2937 |
2938 | strip-final-newline@2.0.0: {}
2939 |
2940 | strip-json-comments@3.1.1: {}
2941 |
2942 | styled-jsx@5.1.6(react@19.1.0):
2943 | dependencies:
2944 | client-only: 0.0.1
2945 | react: 19.1.0
2946 |
2947 | superjson@1.13.3:
2948 | dependencies:
2949 | copy-anything: 3.0.5
2950 |
2951 | supports-color@5.5.0:
2952 | dependencies:
2953 | has-flag: 3.0.0
2954 |
2955 | supports-color@7.2.0:
2956 | dependencies:
2957 | has-flag: 4.0.0
2958 |
2959 | supports-preserve-symlinks-flag@1.0.0: {}
2960 |
2961 | through@2.3.8: {}
2962 |
2963 | todomvc-app-css@2.4.3: {}
2964 |
2965 | todomvc-common@1.0.5: {}
2966 |
2967 | tslib@2.8.1: {}
2968 |
2969 | type-check@0.4.0:
2970 | dependencies:
2971 | prelude-ls: 1.2.1
2972 |
2973 | typed-array-buffer@1.0.3:
2974 | dependencies:
2975 | call-bound: 1.0.4
2976 | es-errors: 1.3.0
2977 | is-typed-array: 1.1.15
2978 |
2979 | typed-array-byte-length@1.0.3:
2980 | dependencies:
2981 | call-bind: 1.0.8
2982 | for-each: 0.3.5
2983 | gopd: 1.2.0
2984 | has-proto: 1.2.0
2985 | is-typed-array: 1.1.15
2986 |
2987 | typed-array-byte-offset@1.0.4:
2988 | dependencies:
2989 | available-typed-arrays: 1.0.7
2990 | call-bind: 1.0.8
2991 | for-each: 0.3.5
2992 | gopd: 1.2.0
2993 | has-proto: 1.2.0
2994 | is-typed-array: 1.1.15
2995 | reflect.getprototypeof: 1.0.10
2996 |
2997 | typed-array-length@1.0.7:
2998 | dependencies:
2999 | call-bind: 1.0.8
3000 | for-each: 0.3.5
3001 | gopd: 1.2.0
3002 | is-typed-array: 1.1.15
3003 | possible-typed-array-names: 1.1.0
3004 | reflect.getprototypeof: 1.0.10
3005 |
3006 | typescript@5.8.3: {}
3007 |
3008 | unbox-primitive@1.1.0:
3009 | dependencies:
3010 | call-bound: 1.0.4
3011 | has-bigints: 1.1.0
3012 | has-symbols: 1.1.0
3013 | which-boxed-primitive: 1.1.1
3014 |
3015 | undici-types@6.21.0: {}
3016 |
3017 | uri-js@4.4.1:
3018 | dependencies:
3019 | punycode: 2.3.1
3020 |
3021 | validate-npm-package-license@3.0.4:
3022 | dependencies:
3023 | spdx-correct: 3.2.0
3024 | spdx-expression-parse: 3.0.1
3025 |
3026 | wait-on@7.0.1(debug@4.3.4):
3027 | dependencies:
3028 | axios: 0.27.2(debug@4.3.4)
3029 | joi: 17.13.3
3030 | lodash: 4.17.21
3031 | minimist: 1.2.8
3032 | rxjs: 7.8.2
3033 | transitivePeerDependencies:
3034 | - debug
3035 |
3036 | which-boxed-primitive@1.1.1:
3037 | dependencies:
3038 | is-bigint: 1.1.0
3039 | is-boolean-object: 1.2.2
3040 | is-number-object: 1.1.1
3041 | is-string: 1.1.1
3042 | is-symbol: 1.1.1
3043 |
3044 | which-builtin-type@1.2.1:
3045 | dependencies:
3046 | call-bound: 1.0.4
3047 | function.prototype.name: 1.1.8
3048 | has-tostringtag: 1.0.2
3049 | is-async-function: 2.1.1
3050 | is-date-object: 1.1.0
3051 | is-finalizationregistry: 1.1.1
3052 | is-generator-function: 1.1.0
3053 | is-regex: 1.2.1
3054 | is-weakref: 1.1.1
3055 | isarray: 2.0.5
3056 | which-boxed-primitive: 1.1.1
3057 | which-collection: 1.0.2
3058 | which-typed-array: 1.1.19
3059 |
3060 | which-collection@1.0.2:
3061 | dependencies:
3062 | is-map: 2.0.3
3063 | is-set: 2.0.3
3064 | is-weakmap: 2.0.2
3065 | is-weakset: 2.0.4
3066 |
3067 | which-typed-array@1.1.19:
3068 | dependencies:
3069 | available-typed-arrays: 1.0.7
3070 | call-bind: 1.0.8
3071 | call-bound: 1.0.4
3072 | for-each: 0.3.5
3073 | get-proto: 1.0.1
3074 | gopd: 1.2.0
3075 | has-tostringtag: 1.0.2
3076 |
3077 | which@1.3.1:
3078 | dependencies:
3079 | isexe: 2.0.0
3080 |
3081 | which@2.0.2:
3082 | dependencies:
3083 | isexe: 2.0.0
3084 |
3085 | word-wrap@1.2.5: {}
3086 |
3087 | yocto-queue@0.1.0: {}
3088 |
3089 | zod@3.25.64: {}
3090 |
--------------------------------------------------------------------------------
/prisma/migrations/20210304121245_/migration.sql:
--------------------------------------------------------------------------------
1 | -- CreateTable
2 | CREATE TABLE "Task" (
3 | "id" TEXT NOT NULL,
4 | "text" TEXT NOT NULL,
5 | "completed" BOOLEAN NOT NULL DEFAULT false,
6 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
7 |
8 | PRIMARY KEY ("id")
9 | );
10 |
11 | -- CreateIndex
12 | CREATE UNIQUE INDEX "Task.createdAt_unique" ON "Task"("createdAt");
13 |
--------------------------------------------------------------------------------
/prisma/migrations/20241206100315_prisma-update/migration.sql:
--------------------------------------------------------------------------------
1 | -- RenameIndex
2 | ALTER INDEX "Task.createdAt_unique" RENAME TO "Task_createdAt_key";
3 |
--------------------------------------------------------------------------------
/prisma/migrations/migration_lock.toml:
--------------------------------------------------------------------------------
1 | # Please do not edit this file manually
2 | # It should be added in your version-control system (i.e. Git)
3 | provider = "postgresql"
--------------------------------------------------------------------------------
/prisma/schema.prisma:
--------------------------------------------------------------------------------
1 | // This is your Prisma schema file,
2 | // learn more about it in the docs: https://pris.ly/d/prisma-schema
3 |
4 | datasource db {
5 | provider = "postgres"
6 | url = env("DATABASE_URL")
7 | }
8 |
9 | generator client {
10 | provider = "prisma-client-js"
11 | }
12 |
13 | model Task {
14 | id String @id @default(uuid())
15 | text String
16 | completed Boolean @default(value: false)
17 |
18 | createdAt DateTime @unique @default(now())
19 | // updatedAt DateTime @unique @default(now())
20 | }
21 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trpc/examples-next-prisma-todomvc/c27b498279acaac72f1d27fa36c8d894d664b068/public/favicon.ico
--------------------------------------------------------------------------------
/src/components/footer.tsx:
--------------------------------------------------------------------------------
1 | import Link from 'next/link';
2 |
3 | export function InfoFooter(props: { filter: string }) {
4 | return (
5 |
42 | );
43 | }
44 |
45 | function PoweredByVercel() {
46 | return (
47 |
61 | );
62 | }
63 |
64 | function TRPCLogo() {
65 | return (
66 |
81 | );
82 | }
83 |
--------------------------------------------------------------------------------
/src/pages/[filter].tsx:
--------------------------------------------------------------------------------
1 | import { useIsMutating } from '@tanstack/react-query';
2 | import type { inferProcedureOutput } from '@trpc/server';
3 | import clsx from 'clsx';
4 | import type {
5 | GetStaticPaths,
6 | GetStaticPropsContext,
7 | InferGetStaticPropsType,
8 | } from 'next';
9 | import Head from 'next/head';
10 | import Link from 'next/link';
11 | import { useEffect, useRef, useState } from 'react';
12 | import 'todomvc-app-css/index.css';
13 | import 'todomvc-common/base.css';
14 | import { InfoFooter } from '../components/footer';
15 | import type { AppRouter } from '../server/routers/_app';
16 | import { ssgInit } from '../server/ssg-init';
17 | import { trpc } from '../utils/trpc';
18 | import { useClickOutside } from '../utils/use-click-outside';
19 |
20 | type Task = inferProcedureOutput[number];
21 |
22 | function ListItem(props: { task: Task }) {
23 | const { task } = props;
24 |
25 | const [editing, setEditing] = useState(false);
26 | const wrapperRef = useRef(null);
27 | const inputRef = useRef(null);
28 |
29 | const utils = trpc.useUtils();
30 | const [text, setText] = useState(task.text);
31 |
32 | useEffect(() => {
33 | setText(task.text);
34 | }, [task.text]);
35 |
36 | const editTask = trpc.todo.edit.useMutation({
37 | async onMutate({ id, data }) {
38 | await utils.todo.all.cancel();
39 | const allTasks = utils.todo.all.getData();
40 | if (!allTasks) {
41 | return;
42 | }
43 | utils.todo.all.setData(
44 | undefined,
45 | allTasks.map((t) =>
46 | t.id === id
47 | ? {
48 | ...t,
49 | ...data,
50 | }
51 | : t,
52 | ),
53 | );
54 | },
55 | });
56 | const deleteTask = trpc.todo.delete.useMutation({
57 | async onMutate() {
58 | await utils.todo.all.cancel();
59 | const allTasks = utils.todo.all.getData();
60 | if (!allTasks) {
61 | return;
62 | }
63 | utils.todo.all.setData(
64 | undefined,
65 | allTasks.filter((t) => t.id != task.id),
66 | );
67 | },
68 | });
69 |
70 | useClickOutside({
71 | ref: wrapperRef,
72 | enabled: editing,
73 | callback() {
74 | editTask.mutate({
75 | id: task.id,
76 | data: { text },
77 | });
78 | setEditing(false);
79 | },
80 | });
81 |
82 | return (
83 |
88 |
89 | {
94 | const checked = e.currentTarget.checked;
95 | editTask.mutate({
96 | id: task.id,
97 | data: { completed: checked },
98 | });
99 | }}
100 | autoFocus={editing}
101 | />
102 |
110 |
117 | {
122 | const newText = e.currentTarget.value;
123 | setText(newText);
124 | }}
125 | onKeyPress={(e) => {
126 | if (e.key === 'Enter') {
127 | editTask.mutate({
128 | id: task.id,
129 | data: { text },
130 | });
131 | setEditing(false);
132 | }
133 | }}
134 | />
135 |
136 | );
137 | }
138 |
139 | type PageProps = InferGetStaticPropsType;
140 | export default function TodosPage(props: PageProps) {
141 | /*
142 | * This data will be hydrated from the `prefetch` in `getStaticProps`. This means that the page
143 | * will be rendered with the data from the server and there'll be no client loading state 👍
144 | */
145 | const allTasks = trpc.todo.all.useQuery(undefined, {
146 | staleTime: 3000,
147 | });
148 |
149 | const utils = trpc.useUtils();
150 | const addTask = trpc.todo.add.useMutation({
151 | async onMutate({ text }) {
152 | /**
153 | * Optimistically update the data
154 | * with the newly added task
155 | */
156 | await utils.todo.all.cancel();
157 | const tasks = allTasks.data ?? [];
158 | utils.todo.all.setData(undefined, [
159 | ...tasks,
160 | {
161 | id: `${Math.random()}`,
162 | completed: false,
163 | text,
164 | createdAt: new Date(),
165 | },
166 | ]);
167 | },
168 | });
169 |
170 | const clearCompleted = trpc.todo.clearCompleted.useMutation({
171 | async onMutate() {
172 | await utils.todo.all.cancel();
173 | const tasks = allTasks.data ?? [];
174 | utils.todo.all.setData(
175 | undefined,
176 | tasks.filter((t) => !t.completed),
177 | );
178 | },
179 | });
180 |
181 | const toggleAll = trpc.todo.toggleAll.useMutation({
182 | async onMutate({ completed }) {
183 | await utils.todo.all.cancel();
184 | const tasks = allTasks.data ?? [];
185 | utils.todo.all.setData(
186 | undefined,
187 | tasks.map((t) => ({
188 | ...t,
189 | completed,
190 | })),
191 | );
192 | },
193 | });
194 |
195 | const number = useIsMutating();
196 | useEffect(() => {
197 | // invalidate queries when mutations have settled
198 | // doing this here rather than in `onSettled()`
199 | // to avoid race conditions if you're clicking fast
200 | if (number === 0) {
201 | void utils.todo.all.invalidate();
202 | }
203 | }, [number, utils]);
204 |
205 | const tasksLeft = allTasks.data?.filter((t) => !t.completed).length ?? 0;
206 | const tasksCompleted = allTasks.data?.filter((t) => t.completed).length ?? 0;
207 |
208 | return (
209 | <>
210 |
211 | Todos
212 |
213 |
214 |
215 |
216 |
232 |
233 |
256 |
257 |
287 |
288 |
289 |
290 | >
291 | );
292 | }
293 |
294 | const filters = ['all', 'active', 'completed'] as const;
295 | export const getStaticPaths: GetStaticPaths = async () => {
296 | const paths = filters.map((filter) => ({
297 | params: { filter },
298 | }));
299 |
300 | return {
301 | paths,
302 | fallback: false,
303 | };
304 | };
305 |
306 | export const getStaticProps = async (context: GetStaticPropsContext) => {
307 | const ssg = await ssgInit(context);
308 |
309 | await ssg.todo.all.prefetch();
310 |
311 | return {
312 | props: {
313 | trpcState: ssg.dehydrate(),
314 | filter: (context.params?.filter as string) ?? 'all',
315 | },
316 | revalidate: 1,
317 | };
318 | };
319 |
--------------------------------------------------------------------------------
/src/pages/_app.tsx:
--------------------------------------------------------------------------------
1 | import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
2 | import type { AppProps } from 'next/app';
3 | import { trpc } from '../utils/trpc';
4 |
5 | const MyApp = ({ Component, pageProps }: AppProps) => {
6 | return (
7 | <>
8 |
9 |
10 | >
11 | );
12 | };
13 |
14 | export default trpc.withTRPC(MyApp);
15 |
--------------------------------------------------------------------------------
/src/pages/api/trpc/[trpc].ts:
--------------------------------------------------------------------------------
1 | import { createNextApiHandler } from '@trpc/server/adapters/next';
2 | import { createTRPCContext } from '../../../server/context';
3 | import { appRouter } from '../../../server/routers/_app';
4 |
5 | export default createNextApiHandler({
6 | router: appRouter,
7 | createContext: createTRPCContext,
8 | onError({ error }) {
9 | if (error.code === 'INTERNAL_SERVER_ERROR') {
10 | // send to bug reporting
11 | console.error('Something went wrong', error);
12 | }
13 | },
14 | });
15 |
--------------------------------------------------------------------------------
/src/server/context.ts:
--------------------------------------------------------------------------------
1 | import type { CreateNextContextOptions } from '@trpc/server/adapters/next';
2 | import { prisma } from './prisma';
3 |
4 | /**
5 | * Defines your inner context shape.
6 | * Add fields here that the inner context brings.
7 | */
8 | export interface CreateInnerContextOptions
9 | extends Partial {}
10 |
11 | /**
12 | * Inner context. Will always be available in your procedures, in contrast to the outer context.
13 | *
14 | * Also useful for:
15 | * - testing, so you don't have to mock Next.js' `req`/`res`
16 | * - tRPC's `createSSGHelpers` where we don't have `req`/`res`
17 | *
18 | * @see https://trpc.io/docs/v11/context#inner-and-outer-context
19 | */
20 | export async function createInnerTRPCContext(opts?: CreateInnerContextOptions) {
21 | return {
22 | prisma,
23 | task: prisma.task,
24 | ...opts,
25 | };
26 | }
27 |
28 | /**
29 | * Outer context. Used in the routers and will e.g. bring `req` & `res` to the context as "not `undefined`".
30 | *
31 | * @see https://trpc.io/docs/v11/context#inner-and-outer-context
32 | */
33 | export const createTRPCContext = async (opts?: CreateNextContextOptions) => {
34 | const innerContext = await createInnerTRPCContext({
35 | req: opts?.req,
36 | });
37 |
38 | return {
39 | ...innerContext,
40 | req: opts?.req,
41 | };
42 | };
43 |
--------------------------------------------------------------------------------
/src/server/prisma.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @see https://prisma.io/docs/support/help-articles/nextjs-prisma-client-dev-practices
3 | */
4 | import { PrismaClient } from '@prisma/client';
5 |
6 | const globalForPrisma = global as unknown as { prisma: PrismaClient };
7 |
8 | export const prisma = globalForPrisma.prisma || new PrismaClient();
9 |
10 | if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
11 |
--------------------------------------------------------------------------------
/src/server/routers/_app.ts:
--------------------------------------------------------------------------------
1 | import { baseProcedure, router } from '../trpc';
2 | import { todoRouter } from './todo';
3 |
4 | export const appRouter = router({
5 | todo: todoRouter,
6 | });
7 |
8 | export type AppRouter = typeof appRouter;
9 |
--------------------------------------------------------------------------------
/src/server/routers/todo.ts:
--------------------------------------------------------------------------------
1 | import { z } from 'zod';
2 | import { baseProcedure, router } from '../trpc';
3 |
4 | export const todoRouter = router({
5 | all: baseProcedure.query(({ ctx }) => {
6 | return ctx.task.findMany({
7 | orderBy: {
8 | createdAt: 'asc',
9 | },
10 | });
11 | }),
12 | add: baseProcedure
13 | .input(
14 | z.object({
15 | id: z.string().optional(),
16 | text: z.string().min(1),
17 | }),
18 | )
19 | .mutation(async ({ ctx, input }) => {
20 | const todo = await ctx.task.create({
21 | data: input,
22 | });
23 | return todo;
24 | }),
25 | edit: baseProcedure
26 | .input(
27 | z.object({
28 | id: z.string().uuid(),
29 | data: z.object({
30 | completed: z.boolean().optional(),
31 | text: z.string().min(1).optional(),
32 | }),
33 | }),
34 | )
35 | .mutation(async ({ ctx, input }) => {
36 | const { id, data } = input;
37 | const todo = await ctx.task.update({
38 | where: { id },
39 | data,
40 | });
41 | return todo;
42 | }),
43 | toggleAll: baseProcedure
44 | .input(z.object({ completed: z.boolean() }))
45 | .mutation(async ({ ctx, input }) => {
46 | await ctx.task.updateMany({
47 | data: { completed: input.completed },
48 | });
49 | }),
50 | delete: baseProcedure
51 | .input(z.string().uuid())
52 | .mutation(async ({ ctx, input: id }) => {
53 | await ctx.task.delete({ where: { id } });
54 | return id;
55 | }),
56 | clearCompleted: baseProcedure.mutation(async ({ ctx }) => {
57 | await ctx.task.deleteMany({ where: { completed: true } });
58 |
59 | return ctx.task.findMany();
60 | }),
61 | });
62 |
--------------------------------------------------------------------------------
/src/server/ssg-init.ts:
--------------------------------------------------------------------------------
1 | import { createServerSideHelpers } from '@trpc/react-query/server';
2 | import type { GetStaticPropsContext } from 'next';
3 | import SuperJSON from 'superjson';
4 | import { createInnerTRPCContext } from './context';
5 | import type { AppRouter } from './routers/_app';
6 | import { appRouter } from './routers/_app';
7 |
8 | export async function ssgInit(
9 | opts: GetStaticPropsContext,
10 | ) {
11 | // Using an external TRPC app
12 | // const client = createTRPCClient({
13 | // links: [
14 | // httpBatchLink({
15 | // url: 'http://localhost:3000/api/trpc',
16 | // }),
17 | // ],
18 | // transformer: SuperJSON,
19 | // });
20 |
21 | // const ssg = createServerSideHelpers({
22 | // client,
23 | // })
24 |
25 | const ssg = createServerSideHelpers({
26 | router: appRouter,
27 | ctx: await createInnerTRPCContext({}),
28 | transformer: SuperJSON,
29 | });
30 |
31 | return ssg;
32 | }
33 |
--------------------------------------------------------------------------------
/src/server/trpc.ts:
--------------------------------------------------------------------------------
1 | import { initTRPC } from '@trpc/server';
2 | import superjson from 'superjson';
3 | import type { createInnerTRPCContext } from './context';
4 |
5 | const t = initTRPC.context().create({
6 | transformer: superjson,
7 | });
8 |
9 | export const router = t.router;
10 | export const baseProcedure = t.procedure;
11 |
--------------------------------------------------------------------------------
/src/utils/trpc.ts:
--------------------------------------------------------------------------------
1 | import { httpBatchLink, loggerLink } from '@trpc/client';
2 | import { createTRPCNext } from '@trpc/next';
3 | import type { inferProcedureInput, inferProcedureOutput } from '@trpc/server';
4 | // ℹ️ Type-only import:
5 | // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export
6 | import superjson from 'superjson';
7 | import type { AppRouter } from '../server/routers/_app';
8 |
9 | function getBaseUrl() {
10 | if (typeof window !== 'undefined') {
11 | return '';
12 | }
13 | // reference for vercel.com
14 | if (process.env.VERCEL_URL) {
15 | return `https://${process.env.VERCEL_URL}`;
16 | }
17 |
18 | // // reference for render.com
19 | if (process.env.RENDER_INTERNAL_HOSTNAME) {
20 | return `http://${process.env.RENDER_INTERNAL_HOSTNAME}:${process.env.PORT}`;
21 | }
22 |
23 | // assume localhost
24 | return `http://localhost:${process.env.PORT ?? 3000}`;
25 | }
26 |
27 | /**
28 | * A set of strongly-typed React hooks from your `AppRouter` type signature with `createReactQueryHooks`.
29 | * @see https://trpc.io/docs/v11/react#3-create-trpc-hooks
30 | */
31 | export const trpc = createTRPCNext({
32 | transformer: superjson,
33 | config() {
34 | /**
35 | * If you want to use SSR, you need to use the server's full URL
36 | * @see https://trpc.io/docs/v11/ssr
37 | */
38 | return {
39 | /**
40 | * @see https://trpc.io/docs/v11/client/links
41 | */
42 | links: [
43 | // adds pretty logs to your console in development and logs errors in production
44 | loggerLink({
45 | enabled: (opts) =>
46 | process.env.NODE_ENV === 'development' ||
47 | (opts.direction === 'down' && opts.result instanceof Error),
48 | }),
49 | httpBatchLink({
50 | url: `${getBaseUrl()}/api/trpc`,
51 | /**
52 | * @see https://trpc.io/docs/v11/data-transformers
53 | */
54 | transformer: superjson,
55 | }),
56 | ],
57 | /**
58 | * @see https://tanstack.com/query/v5/docs/reference/QueryClient
59 | */
60 | // queryClientConfig: { defaultOptions: { queries: { staleTime: 60 } } },
61 | };
62 | },
63 | /**
64 | * @see https://trpc.io/docs/v11/ssr
65 | */
66 | ssr: false,
67 | });
68 |
--------------------------------------------------------------------------------
/src/utils/use-click-outside.tsx:
--------------------------------------------------------------------------------
1 | import type { RefObject } from 'react';
2 | import { useEffect, useRef } from 'react';
3 |
4 | /**
5 | * Hook for checking when the user clicks outside the passed ref
6 | */
7 | export function useClickOutside({
8 | ref,
9 | callback,
10 | enabled,
11 | }: {
12 | ref: RefObject;
13 | callback: () => void;
14 | enabled: boolean;
15 | }) {
16 | const callbackRef = useRef(callback);
17 | callbackRef.current = callback;
18 | useEffect(() => {
19 | if (!enabled) {
20 | return;
21 | }
22 | /**
23 | * Alert if clicked on outside of element
24 | */
25 | function handleClickOutside(event: MouseEvent) {
26 | if (ref.current && !ref.current.contains(event.target)) {
27 | callbackRef.current();
28 | }
29 | }
30 | // Bind the event listener
31 | document.addEventListener('mousedown', handleClickOutside);
32 | return () => {
33 | // Unbind the event listener on clean up
34 | document.removeEventListener('mousedown', handleClickOutside);
35 | };
36 | }, [ref, enabled]);
37 | }
38 |
--------------------------------------------------------------------------------
/test/playwright.test.ts:
--------------------------------------------------------------------------------
1 | import { test } from '@playwright/test';
2 |
3 | test.setTimeout(35e3);
4 |
5 | test('add todo', async ({ page }) => {
6 | await page.goto('/');
7 |
8 | const nonce = Math.random()
9 | .toString(36)
10 | .replace(/[^a-z]+/g, '')
11 | .slice(0, 6);
12 | await page.type('.new-todo', nonce);
13 | await page.keyboard.press('Enter');
14 | await page.waitForResponse('**/trpc/**');
15 | await page.waitForSelector(`text=${nonce}`);
16 | });
17 |
18 | export {};
19 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Base Options: */
4 | "skipLibCheck": true,
5 | "target": "es2022",
6 | "allowJs": true,
7 | "moduleDetection": "force",
8 | "isolatedModules": true,
9 |
10 | /* Strictness */
11 | "strict": true,
12 | "checkJs": true,
13 | "allowImportingTsExtensions": true,
14 |
15 | /* Bundled projects */
16 | "lib": ["dom", "dom.iterable", "ES2022"],
17 | "noEmit": true,
18 | "module": "Preserve",
19 | "moduleResolution": "bundler",
20 | "jsx": "preserve",
21 | "plugins": [{ "name": "next" }],
22 | "incremental": true,
23 |
24 | /* Path aliases */
25 | "paths": {
26 | "~/*": ["./src/*"]
27 | }
28 | },
29 | "include": [
30 | "next-env.d.ts",
31 | "**/*.ts",
32 | "**/*.tsx",
33 | "*.js",
34 | ".next/types/**/*.ts"
35 | ],
36 | "exclude": ["node_modules"]
37 | }
38 |
--------------------------------------------------------------------------------
/vercel.json:
--------------------------------------------------------------------------------
1 | {
2 | "github": {
3 | "silent": true
4 | }
5 | }
6 |
--------------------------------------------------------------------------------