create-stitchkit 0.6.1 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -0
- package/dist/cli.js +8 -9
- package/examples/repository/packages/shared/src/contracts/repository.ts +2 -2
- package/package.json +5 -5
- package/template/bun.lock +57 -59
- package/template/package.json +3 -3
- package/template/packages/backend/package.json +1 -1
- package/template/packages/config/package.json +1 -1
- package/template/packages/frontend/package.json +6 -6
- package/template/packages/frontend/src/lib/query-client.test.ts +19 -2
- package/template/packages/frontend/src/lib/query-client.ts +14 -33
- package/templates/agent/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -12,6 +12,50 @@ step is overwritten by the next release.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.6.3] — 2026-09-23
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- **A scaffold starts on stitchkit 0.94.0.** The template's one framework range
|
|
20
|
+
moves from `^0.90.7` to `^0.94.0`, over a lockfile resolving 0.94.0; the
|
|
21
|
+
template itself needed no change for 0.91–0.94 beyond the example below.
|
|
22
|
+
- Updated the template's dependencies to their current compatible releases: AI
|
|
23
|
+
SDK 7.0.111, Next.js 16.3.6, next-intl 4.14.6, TanStack Query 5.103.2,
|
|
24
|
+
Tabler icons 3.48.0, framer-motion 13.4.1, dotenv 18.0.3, oxc-parser 0.151.0.
|
|
25
|
+
`@wrksz/themes` stays on 1.x (2.0 is a breaking major) and Prisma on 7.x (8 is
|
|
26
|
+
a release candidate).
|
|
27
|
+
- **The repository example names its tools in the `tool` group.** Stitchkit
|
|
28
|
+
0.94.0 moved an endpoint's tool options into `tool: { name, … }` and refuses
|
|
29
|
+
the old top-level `toolName` at startup, so the example's contract now writes
|
|
30
|
+
`tool: { name: 'repository_read' }` and `tool: { name: 'repository_refresh' }`.
|
|
31
|
+
A project generated from it that moves to 0.94.0 follows the framework's
|
|
32
|
+
[upgrading guide](../../docs/guide/upgrading.md) — one codemod run.
|
|
33
|
+
|
|
34
|
+
## [0.6.2] — 2026-09-21
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
|
|
38
|
+
- **A scaffold installs the framework the manifest promises.** 0.6.1 rode in the
|
|
39
|
+
same release train as stitchkit 0.90.6 and therefore shipped a lockfile
|
|
40
|
+
resolving 0.90.5: a lockfile is written by an install, so it could not name a
|
|
41
|
+
version that train had not published yet. Every scaffold from 0.6.1 got a
|
|
42
|
+
framework one release behind the one its own range allowed. The template now
|
|
43
|
+
targets `^0.90.7` over a lockfile resolving 0.90.7, and the framework's release
|
|
44
|
+
machinery refuses that shape of train outright.
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
|
|
48
|
+
- **The generated frontend takes its QueryClient from the framework.**
|
|
49
|
+
`lib/query-client.ts` now calls `createQueryClientFactory` from
|
|
50
|
+
`stitchkit/react` instead of restating it locally. The local copy spelled the
|
|
51
|
+
query retry as a plain `1`, which retries an unauthorized, forbidden or invalid
|
|
52
|
+
request exactly as eagerly as a network blip; the framework predicate retries
|
|
53
|
+
server failures and network faults and leaves the rest alone. Request-local
|
|
54
|
+
server identity, the browser singleton, pending dehydration and the
|
|
55
|
+
no-retry-for-mutations rule are unchanged in behaviour. This is the cutover
|
|
56
|
+
`UPGRADING.md` recorded under *Released migration: 0.6.1* — adopting it in a
|
|
57
|
+
project you already own remains optional.
|
|
58
|
+
|
|
15
59
|
## [0.6.1] — 2026-09-20
|
|
16
60
|
|
|
17
61
|
### Changed
|
package/dist/cli.js
CHANGED
|
@@ -9,7 +9,7 @@ var {spawn } = globalThis.Bun;
|
|
|
9
9
|
// src/identity.ts
|
|
10
10
|
import { basename } from "path";
|
|
11
11
|
|
|
12
|
-
// ../core/src/declaration.ts
|
|
12
|
+
// ../core/src/declaration/declaration.ts
|
|
13
13
|
import { z } from "zod";
|
|
14
14
|
var PROJECT_DECLARATION_SCHEMA_VERSION = 1;
|
|
15
15
|
var MACHINE_PATTERNS = [
|
|
@@ -164,7 +164,6 @@ function parseProjectDeclaration(source) {
|
|
|
164
164
|
}
|
|
165
165
|
return ProjectDeclarationSchema.parse(source);
|
|
166
166
|
}
|
|
167
|
-
|
|
168
167
|
// src/identity.ts
|
|
169
168
|
var APP_IDENTITY_PATH = "packages/config/src/app-identity.generated.ts";
|
|
170
169
|
function renderAppIdentityModule(identity) {
|
|
@@ -198,8 +197,8 @@ function createApplicationIdentity(destination, displayName) {
|
|
|
198
197
|
}
|
|
199
198
|
});
|
|
200
199
|
}
|
|
201
|
-
function withIdentity(
|
|
202
|
-
const copied = parseProjectDeclaration(
|
|
200
|
+
function withIdentity(declaration2, identity) {
|
|
201
|
+
const copied = parseProjectDeclaration(declaration2);
|
|
203
202
|
return parseProjectDeclaration({ ...copied, identity });
|
|
204
203
|
}
|
|
205
204
|
|
|
@@ -425,13 +424,13 @@ async function scaffoldProject(templateDirectory, destination, options = {}) {
|
|
|
425
424
|
await rm(join(resolvedDestination, "bun.lock"), { force: true });
|
|
426
425
|
}
|
|
427
426
|
const declarationPath = join(resolvedDestination, "project.json");
|
|
428
|
-
const
|
|
429
|
-
await writeFile(declarationPath, `${JSON.stringify(
|
|
427
|
+
const declaration2 = withIdentity(JSON.parse(await readFile(declarationPath, "utf8")), identity);
|
|
428
|
+
await writeFile(declarationPath, `${JSON.stringify(declaration2, undefined, 2)}
|
|
430
429
|
`);
|
|
431
430
|
if (options.identityModule !== false) {
|
|
432
431
|
const identityPath = join(resolvedDestination, APP_IDENTITY_PATH);
|
|
433
432
|
await mkdir(dirname(identityPath), { recursive: true });
|
|
434
|
-
await writeFile(identityPath, renderAppIdentityModule(
|
|
433
|
+
await writeFile(identityPath, renderAppIdentityModule(declaration2.identity));
|
|
435
434
|
}
|
|
436
435
|
const manifestPath = join(resolvedDestination, "package.json");
|
|
437
436
|
const manifest = RootManifestSchema.parse(JSON.parse(await readFile(manifestPath, "utf8")));
|
|
@@ -536,10 +535,10 @@ if (import.meta.main) {
|
|
|
536
535
|
}
|
|
537
536
|
async function roleAddresses(destination) {
|
|
538
537
|
try {
|
|
539
|
-
const
|
|
538
|
+
const declaration2 = parseProjectDeclaration(JSON.parse(await readFile2(join2(destination, "project.json"), "utf8")));
|
|
540
539
|
const environment = readEnvironmentExample(await readFile2(join2(destination, ".env.example"), "utf8"));
|
|
541
540
|
const host = environment.BIND_HOST ?? "127.0.0.1";
|
|
542
|
-
return
|
|
541
|
+
return declaration2.roles.flatMap((role) => {
|
|
543
542
|
const port = role.listener && environment[role.listener.portVariable];
|
|
544
543
|
if (!role.listener || !port)
|
|
545
544
|
return [];
|
|
@@ -14,7 +14,7 @@ export const repositoryContract = defineContract(
|
|
|
14
14
|
desc: 'Read the server-cached repository snapshot',
|
|
15
15
|
output: RepositorySnapshotSchema,
|
|
16
16
|
expose: ['HTTP', 'MCP', 'AGENT', 'CLI'],
|
|
17
|
-
|
|
17
|
+
tool: { name: 'repository_read' },
|
|
18
18
|
},
|
|
19
19
|
refresh: {
|
|
20
20
|
method: 'POST',
|
|
@@ -22,7 +22,7 @@ export const repositoryContract = defineContract(
|
|
|
22
22
|
desc: 'Refresh the repository snapshot from GitHub',
|
|
23
23
|
output: RepositorySnapshotSchema,
|
|
24
24
|
expose: ['HTTP', 'MCP', 'AGENT', 'CLI'],
|
|
25
|
-
|
|
25
|
+
tool: { name: 'repository_refresh' },
|
|
26
26
|
},
|
|
27
27
|
},
|
|
28
28
|
);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-stitchkit",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.3",
|
|
4
4
|
"description": "Create a production-shaped Stitchkit application",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Max Listov <maxlistov@gmail.com>",
|
|
@@ -76,14 +76,14 @@
|
|
|
76
76
|
"zod": "^4.6.5"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
|
-
"@opentui/core": "^0.5.
|
|
80
|
-
"@opentui/react": "^0.5.
|
|
79
|
+
"@opentui/core": "^0.5.12",
|
|
80
|
+
"@opentui/react": "^0.5.12",
|
|
81
81
|
"@openrouter/ai-sdk-provider": "^3.1.0",
|
|
82
82
|
"@types/bun": "^1.4.2",
|
|
83
83
|
"@types/react": "^19.3.0",
|
|
84
|
-
"ai": "^7.0.
|
|
84
|
+
"ai": "^7.0.111",
|
|
85
85
|
"react": "^19.3.0",
|
|
86
|
-
"stitchkit": "0.
|
|
86
|
+
"stitchkit": "0.93.0",
|
|
87
87
|
"typescript": "^7.0.2"
|
|
88
88
|
},
|
|
89
89
|
"engines": {
|
package/template/bun.lock
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"": {
|
|
6
6
|
"name": "stitchkit-starter",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"dotenv": "^18.0.
|
|
8
|
+
"dotenv": "^18.0.3",
|
|
9
9
|
},
|
|
10
10
|
"devDependencies": {
|
|
11
11
|
"@app/config": "workspace:*",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"@playwright/test": "^1.63.0",
|
|
17
17
|
"@types/bun": "^1.4.2",
|
|
18
18
|
"@types/node": "^26.6.2",
|
|
19
|
-
"oxc-parser": "^0.
|
|
19
|
+
"oxc-parser": "^0.151.0",
|
|
20
20
|
"socket.io-client": "^4.8.3",
|
|
21
21
|
"stitchkit": "catalog:",
|
|
22
22
|
"typescript": "^7.0.2",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@modelcontextprotocol/server": "^2.0.0",
|
|
34
34
|
"@prisma/adapter-pg": "^7.10.0",
|
|
35
35
|
"@socket.io/bun-engine": "^0.1.2",
|
|
36
|
-
"ai": "^7.0.
|
|
36
|
+
"ai": "^7.0.111",
|
|
37
37
|
"socket.io": "^4.8.3",
|
|
38
38
|
"stitchkit": "catalog:",
|
|
39
39
|
"zod": "^4.6.5",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"version": "0.1.0",
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@t3-oss/env-core": "^0.13.11",
|
|
51
|
-
"dotenv": "^18.0.
|
|
51
|
+
"dotenv": "^18.0.3",
|
|
52
52
|
"stitchkit": "catalog:",
|
|
53
53
|
"zod": "^4.6.5",
|
|
54
54
|
},
|
|
@@ -90,17 +90,17 @@
|
|
|
90
90
|
"@radix-ui/react-tabs": "^1.1.21",
|
|
91
91
|
"@radix-ui/react-tooltip": "^1.2.16",
|
|
92
92
|
"@t3-oss/env-nextjs": "^0.13.11",
|
|
93
|
-
"@tabler/icons-react": "^3.
|
|
94
|
-
"@tanstack/react-query": "^5.103.
|
|
93
|
+
"@tabler/icons-react": "^3.48.0",
|
|
94
|
+
"@tanstack/react-query": "^5.103.2",
|
|
95
95
|
"@tanstack/react-table": "^9.2.4",
|
|
96
96
|
"@wrksz/themes": "^1.2.0",
|
|
97
97
|
"class-variance-authority": "^0.7.1",
|
|
98
98
|
"clsx": "^2.1.1",
|
|
99
99
|
"date-fns": "^4.4.0",
|
|
100
|
-
"dotenv": "^18.0.
|
|
101
|
-
"framer-motion": "^13.4.
|
|
102
|
-
"next": "^16.3.
|
|
103
|
-
"next-intl": "^4.14.
|
|
100
|
+
"dotenv": "^18.0.3",
|
|
101
|
+
"framer-motion": "^13.4.1",
|
|
102
|
+
"next": "^16.3.6",
|
|
103
|
+
"next-intl": "^4.14.6",
|
|
104
104
|
"react": "^19.3.0",
|
|
105
105
|
"react-dom": "^19.3.0",
|
|
106
106
|
"react-query-kit": "^3.3.4",
|
|
@@ -145,10 +145,10 @@
|
|
|
145
145
|
"zod": "4.6.5",
|
|
146
146
|
},
|
|
147
147
|
"catalog": {
|
|
148
|
-
"stitchkit": "^0.
|
|
148
|
+
"stitchkit": "^0.94.0",
|
|
149
149
|
},
|
|
150
150
|
"packages": {
|
|
151
|
-
"@ai-sdk/gateway": ["@ai-sdk/gateway@4.0.
|
|
151
|
+
"@ai-sdk/gateway": ["@ai-sdk/gateway@4.0.89", "", { "dependencies": { "@ai-sdk/provider": "4.0.17", "@ai-sdk/provider-utils": "5.0.45", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-n0Q88UUASYQBGK3Ogs9pCe8h3ZXeTHFSuGOLBJAyH73MVGNKUv9w8EJX2f340WUF3eDWWOV305gO7YBpSCPblA=="],
|
|
152
152
|
|
|
153
153
|
"@ai-sdk/provider": ["@ai-sdk/provider@4.0.17", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-VYMBxIQdcHqbIf1j+YZlI9Ati6LZ4wJe0GGd4z4a5H/KxTggjeOiyaVYTnfF7LHZK5jMQ+rofmzz4QPqf++NUw=="],
|
|
154
154
|
|
|
@@ -292,63 +292,63 @@
|
|
|
292
292
|
|
|
293
293
|
"@modelcontextprotocol/server": ["@modelcontextprotocol/server@2.0.0", "", { "dependencies": { "@modelcontextprotocol/core": "2.0.0", "zod": "^4.2.0" } }, "sha512-YhHWdHfpFMQfd0prsEnxKeS3Qz3ytIGmsS0sth4KDjnacIT7hxk6hXHkJ9KysxlkvTM+WZAtQbbcUhdoP4Hvtw=="],
|
|
294
294
|
|
|
295
|
-
"@next/env": ["@next/env@16.3.
|
|
295
|
+
"@next/env": ["@next/env@16.3.6", "", {}, "sha512-x9Vblze1EbtltQYnNH38xCPWU3TVfBd1eXqA3+w9+BTpedkkdNpAaltXlGQ/nsc1+E0mVTNrtcbX3GoO09zeLQ=="],
|
|
296
296
|
|
|
297
|
-
"@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.3.
|
|
297
|
+
"@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.3.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-E/7GEqaUkt8mk/T8v9lAnrhzR06kdq1ZBkC12F8tAMkdIadwNp3H1KqHynDHrpcTlGCUdq/qu6vUL2aYVyYBdw=="],
|
|
298
298
|
|
|
299
|
-
"@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.3.
|
|
299
|
+
"@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.3.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-yBE893/nDWTlaiBD1p+qgt7NUen4U5R6FXyH0s67Npq1S3E0cVSef1WIXC2xBRgQvwAvJq6DnS6Y6PrY0cy4Ew=="],
|
|
300
300
|
|
|
301
|
-
"@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.3.
|
|
301
|
+
"@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.3.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-KJDpjBqBPYlvkivmyrp+Qys6k/7ksbqGQvRVc6ZEGfR+cjQxx+nUkJaWmNZJsmoOrqYNbaXByF8wa0lBwDhB3Q=="],
|
|
302
302
|
|
|
303
|
-
"@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.3.
|
|
303
|
+
"@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.3.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-mqNg2K+hvWskSRb/QM+Ix412DvBsuSF0XV+frTSw5vmoucNnIlynFwKYew8D01bfATErMOM7Bujrf0BA5DRKFA=="],
|
|
304
304
|
|
|
305
|
-
"@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.3.
|
|
305
|
+
"@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.3.6", "", { "os": "linux", "cpu": "x64" }, "sha512-nFncBNGAYouRHjRVaITs9beZRfhX4ssVwpnvPIAbkZVH6LtGoAVlH4bJ8Cnf9SOo9bsXgPFer/GdHtEE3JNOkw=="],
|
|
306
306
|
|
|
307
|
-
"@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.3.
|
|
307
|
+
"@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.3.6", "", { "os": "linux", "cpu": "x64" }, "sha512-5Mf3cHDGR/Iz0ng2Bj3zUR3p5QS9YK3Hn2QiAfavFmyF48zwThAjpFoiTKNIcOHLYS4zEk+gzyJ/9deQ2ZB8yQ=="],
|
|
308
308
|
|
|
309
|
-
"@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.3.
|
|
309
|
+
"@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.3.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-0jkJy0C2kbrJWTk4YLa3xk80pVBpx8FCHJym7CnUfDAXe/FWv5qT7SQJbR0KuemyxaEDlEx5WT4VQJoTW+/9Qw=="],
|
|
310
310
|
|
|
311
|
-
"@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.3.
|
|
311
|
+
"@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.3.6", "", { "os": "win32", "cpu": "x64" }, "sha512-/YXjI1e5OXcZ7YpxRwgP/1jAV/SBKTzeVKqN2mk7mLpcICsyn3Gl5+dIfDTJp70M0ccMhyMMRso4v6mPDCGepg=="],
|
|
312
312
|
|
|
313
|
-
"@oxc-parser/binding-android-arm-eabi": ["@oxc-parser/binding-android-arm-eabi@0.
|
|
313
|
+
"@oxc-parser/binding-android-arm-eabi": ["@oxc-parser/binding-android-arm-eabi@0.151.0", "", { "os": "android", "cpu": "arm" }, "sha512-QLfrdT2XmHMo8krBiKHtnTtU2ugxruwnIWMcIl5qpCRV9KPZk1s2YZzSHkIjzabLxG6/1yOoDLvqfS3TrJhfWA=="],
|
|
314
314
|
|
|
315
|
-
"@oxc-parser/binding-android-arm64": ["@oxc-parser/binding-android-arm64@0.
|
|
315
|
+
"@oxc-parser/binding-android-arm64": ["@oxc-parser/binding-android-arm64@0.151.0", "", { "os": "android", "cpu": "arm64" }, "sha512-APzs9QxkLGR85I6Slb93Onsd+9ZdR+PdKIy0g8oOuipiBRtXbEE3PW1QpRn3O2C9dCsfAC8+t7dWGRyByiTqJQ=="],
|
|
316
316
|
|
|
317
|
-
"@oxc-parser/binding-darwin-arm64": ["@oxc-parser/binding-darwin-arm64@0.
|
|
317
|
+
"@oxc-parser/binding-darwin-arm64": ["@oxc-parser/binding-darwin-arm64@0.151.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-uPj085g+2TcYKm4LrPOF6mU/ilb48ghAfLMA+YIxaSAasgDAXO0c5UMjRrB9L59A1aMU9fvPtCGoW9cov9UtFQ=="],
|
|
318
318
|
|
|
319
|
-
"@oxc-parser/binding-darwin-x64": ["@oxc-parser/binding-darwin-x64@0.
|
|
319
|
+
"@oxc-parser/binding-darwin-x64": ["@oxc-parser/binding-darwin-x64@0.151.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-gqOyGZsEX9r8i37ONL2X8heUKCbTAY3UvaWlEJKPJYdgaYoIAXSuZrG27legT+0e4m0X/53RupoH6lfbxtMiMw=="],
|
|
320
320
|
|
|
321
|
-
"@oxc-parser/binding-freebsd-x64": ["@oxc-parser/binding-freebsd-x64@0.
|
|
321
|
+
"@oxc-parser/binding-freebsd-x64": ["@oxc-parser/binding-freebsd-x64@0.151.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-Uih9lYFoB9k87b8jZ2263b8/HC0AuCQo9qPfu14KjoDmC7AmGvo4pCLiuEVVHjQycUjTO2dNtG39MIGUuCOx3A=="],
|
|
322
322
|
|
|
323
|
-
"@oxc-parser/binding-linux-arm-gnueabihf": ["@oxc-parser/binding-linux-arm-gnueabihf@0.
|
|
323
|
+
"@oxc-parser/binding-linux-arm-gnueabihf": ["@oxc-parser/binding-linux-arm-gnueabihf@0.151.0", "", { "os": "linux", "cpu": "arm" }, "sha512-BW9ryFV0V7h37xAEpb1rx+jI/ArFjXlSvJ2CaPwqxCj+kcJdDMvt5/PpWLRRk56UpNpxpq/5+puTUd0/4OPCZw=="],
|
|
324
324
|
|
|
325
|
-
"@oxc-parser/binding-linux-arm-musleabihf": ["@oxc-parser/binding-linux-arm-musleabihf@0.
|
|
325
|
+
"@oxc-parser/binding-linux-arm-musleabihf": ["@oxc-parser/binding-linux-arm-musleabihf@0.151.0", "", { "os": "linux", "cpu": "arm" }, "sha512-68zJuPgiFpZ9FF5WgpJiE9cukBZVNv79Yod2VV/wJLaiws+abCEfcxwVEH0608a7E/0zOO1Pj2iY7UrnUS8ydg=="],
|
|
326
326
|
|
|
327
|
-
"@oxc-parser/binding-linux-arm64-gnu": ["@oxc-parser/binding-linux-arm64-gnu@0.
|
|
327
|
+
"@oxc-parser/binding-linux-arm64-gnu": ["@oxc-parser/binding-linux-arm64-gnu@0.151.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-s/CCfZQcqoRo4Ij7ML43Yhe+gJZU7zmudd6StA0T9WDFPLaiWMoBlPRmoS39jPpODxPwI/6yPoiyjKOMNzSqCg=="],
|
|
328
328
|
|
|
329
|
-
"@oxc-parser/binding-linux-arm64-musl": ["@oxc-parser/binding-linux-arm64-musl@0.
|
|
329
|
+
"@oxc-parser/binding-linux-arm64-musl": ["@oxc-parser/binding-linux-arm64-musl@0.151.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-QSjn7WWZNGDTRlMT0SUGDHZNI9XOhGXWdqhL/FuDR/nh0MOqGQT8OHGBy95mZHne4WvoS0OgnUl/+55u07yBiQ=="],
|
|
330
330
|
|
|
331
|
-
"@oxc-parser/binding-linux-ppc64-gnu": ["@oxc-parser/binding-linux-ppc64-gnu@0.
|
|
331
|
+
"@oxc-parser/binding-linux-ppc64-gnu": ["@oxc-parser/binding-linux-ppc64-gnu@0.151.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-RnvhC+cOND1dsNqbsirtZa9IWVJCCnxIZxs7nAvW0ZFjqqofwKbR3+TNKPqx2eASRC6+b78rZMLiNbDeDUp8+w=="],
|
|
332
332
|
|
|
333
|
-
"@oxc-parser/binding-linux-riscv64-gnu": ["@oxc-parser/binding-linux-riscv64-gnu@0.
|
|
333
|
+
"@oxc-parser/binding-linux-riscv64-gnu": ["@oxc-parser/binding-linux-riscv64-gnu@0.151.0", "", { "os": "linux", "cpu": "none" }, "sha512-fpwItfDNVDgXOMV6GdMHD3QV3NdYWhwDH0E8BRuYNeQyUKchb8sNLvAQg+g1HxENvrYjiLqLWAafOja44/sLig=="],
|
|
334
334
|
|
|
335
|
-
"@oxc-parser/binding-linux-riscv64-musl": ["@oxc-parser/binding-linux-riscv64-musl@0.
|
|
335
|
+
"@oxc-parser/binding-linux-riscv64-musl": ["@oxc-parser/binding-linux-riscv64-musl@0.151.0", "", { "os": "linux", "cpu": "none" }, "sha512-fKchmw5aUlZem7uZZfxsQAl53cFiGWrAKhwjYxvJFiBPQyC9CZ2P7Qhv9unDJSezChu6iJ6XGQWQnRUyLp7j5g=="],
|
|
336
336
|
|
|
337
|
-
"@oxc-parser/binding-linux-s390x-gnu": ["@oxc-parser/binding-linux-s390x-gnu@0.
|
|
337
|
+
"@oxc-parser/binding-linux-s390x-gnu": ["@oxc-parser/binding-linux-s390x-gnu@0.151.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-vDtxikQV1AixMY5pFAW5tDtGHmoexjGpEgtmPBAF3tXvEubm9KucxV0CxtuAIGEZ1aGyvZ74Hfryb7Vvq52F3Q=="],
|
|
338
338
|
|
|
339
|
-
"@oxc-parser/binding-linux-x64-gnu": ["@oxc-parser/binding-linux-x64-gnu@0.
|
|
339
|
+
"@oxc-parser/binding-linux-x64-gnu": ["@oxc-parser/binding-linux-x64-gnu@0.151.0", "", { "os": "linux", "cpu": "x64" }, "sha512-JHB/TuPCUdnkMq9RXB7C/SZuauJUp1EYHi5DaH7ge7uNlCY4AOhc0QeWOjo2rj308+NjxgTwminglWpqlllAig=="],
|
|
340
340
|
|
|
341
|
-
"@oxc-parser/binding-linux-x64-musl": ["@oxc-parser/binding-linux-x64-musl@0.
|
|
341
|
+
"@oxc-parser/binding-linux-x64-musl": ["@oxc-parser/binding-linux-x64-musl@0.151.0", "", { "os": "linux", "cpu": "x64" }, "sha512-rkoZa4Wv5LbUHdCJ+3vC9G68r49gaoaQPg52Jx7+aC60q3QHIiysrDHQlQ3hiIevsmDl0RgzD+Y389q/hb34WA=="],
|
|
342
342
|
|
|
343
|
-
"@oxc-parser/binding-openharmony-arm64": ["@oxc-parser/binding-openharmony-arm64@0.
|
|
343
|
+
"@oxc-parser/binding-openharmony-arm64": ["@oxc-parser/binding-openharmony-arm64@0.151.0", "", { "os": "none", "cpu": "arm64" }, "sha512-zp74XxS9WHSp6ct8LEoTa87F5pJOjFPG0o7dg2YCXaKo0raxabpFMC7NTbefIzWmF9KLIuJF/Rg6CPIu6P/Aaw=="],
|
|
344
344
|
|
|
345
|
-
"@oxc-parser/binding-win32-arm64-msvc": ["@oxc-parser/binding-win32-arm64-msvc@0.
|
|
345
|
+
"@oxc-parser/binding-win32-arm64-msvc": ["@oxc-parser/binding-win32-arm64-msvc@0.151.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-xtqapASyiSTv6rdm29kKFoDsxTo1oCmMfhPLGCDbZQ0Y6sU4m7IPEH05NgNEs2SrTErBuldkvS6e0Aqzmu0BgQ=="],
|
|
346
346
|
|
|
347
|
-
"@oxc-parser/binding-win32-ia32-msvc": ["@oxc-parser/binding-win32-ia32-msvc@0.
|
|
347
|
+
"@oxc-parser/binding-win32-ia32-msvc": ["@oxc-parser/binding-win32-ia32-msvc@0.151.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-9s4L40gxkolXQx1Q675XEZqgI4j+7+os4kZAFHdrDQVapjB9J2iodub7A8VAZ0cGTfhZNLH4D9L26fwEyqu3fg=="],
|
|
348
348
|
|
|
349
|
-
"@oxc-parser/binding-win32-x64-msvc": ["@oxc-parser/binding-win32-x64-msvc@0.
|
|
349
|
+
"@oxc-parser/binding-win32-x64-msvc": ["@oxc-parser/binding-win32-x64-msvc@0.151.0", "", { "os": "win32", "cpu": "x64" }, "sha512-temy3DJf08taii88l13vfs5Om/HWECLSAj5Ca7ANMvocrekAgCuPC4GeHLi0mJ0cmGPznfeaaj80wqQoPIRYPA=="],
|
|
350
350
|
|
|
351
|
-
"@oxc-project/types": ["@oxc-project/types@0.
|
|
351
|
+
"@oxc-project/types": ["@oxc-project/types@0.151.0", "", {}, "sha512-J1yXrIlNDZVzE3ada310xeAw7nH8yCAyLPuUIsjKatFPmfn5bS1oW+cM+QsGOtVWd5nhSpbwZWx/rue+r5Z+PA=="],
|
|
352
352
|
|
|
353
353
|
"@parcel/watcher": ["@parcel/watcher@2.6.0", "", { "dependencies": { "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", "picomatch": "^4.0.4" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.6.0", "@parcel/watcher-darwin-arm64": "2.6.0", "@parcel/watcher-darwin-x64": "2.6.0", "@parcel/watcher-freebsd-x64": "2.6.0", "@parcel/watcher-linux-arm-glibc": "2.6.0", "@parcel/watcher-linux-arm-musl": "2.6.0", "@parcel/watcher-linux-arm64-glibc": "2.6.0", "@parcel/watcher-linux-arm64-musl": "2.6.0", "@parcel/watcher-linux-x64-glibc": "2.6.0", "@parcel/watcher-linux-x64-musl": "2.6.0", "@parcel/watcher-win32-arm64": "2.6.0", "@parcel/watcher-win32-x64": "2.6.0" } }, "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w=="],
|
|
354
354
|
|
|
@@ -548,9 +548,9 @@
|
|
|
548
548
|
|
|
549
549
|
"@t3-oss/env-nextjs": ["@t3-oss/env-nextjs@0.13.11", "", { "dependencies": { "@t3-oss/env-core": "0.13.11" }, "peerDependencies": { "arktype": "^2.1.0", "typescript": ">=5.0.0", "valibot": "^1.0.0-beta.7 || ^1.0.0", "zod": "^3.24.0 || ^4.0.0" }, "optionalPeers": ["arktype", "typescript", "valibot", "zod"] }, "sha512-NC+3j7YWgpzdFu1t5y/8wqibTK0lm5RS4bjXA1n8uwik3wIR4iZM4Fa+U2BaMa5k3Qk8RZiYhoAIX0WogmGkzg=="],
|
|
550
550
|
|
|
551
|
-
"@tabler/icons": ["@tabler/icons@3.
|
|
551
|
+
"@tabler/icons": ["@tabler/icons@3.48.0", "", {}, "sha512-lQk06gVHNVBnJp0UOgtth54mcZBJM7rdYKsAxKOProj1bbSAx+/xiuOWfHlyvgdL3M+Y+I0HINrjHa3ygp8eXQ=="],
|
|
552
552
|
|
|
553
|
-
"@tabler/icons-react": ["@tabler/icons-react@3.
|
|
553
|
+
"@tabler/icons-react": ["@tabler/icons-react@3.48.0", "", { "dependencies": { "@tabler/icons": "3.48.0" }, "peerDependencies": { "react": ">= 16" } }, "sha512-OCeAlpaWHEMV+EsgdVeGQ3YuKfmfnThZhc++CaZ/ujYzi5+/DONDQlX4OGvH1ikYhIfmc0grI4otJgHy7QAvng=="],
|
|
554
554
|
|
|
555
555
|
"@tailwindcss/node": ["@tailwindcss/node@4.3.3", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.24.1", "jiti": "^2.7.0", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.3.3" } }, "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg=="],
|
|
556
556
|
|
|
@@ -582,9 +582,9 @@
|
|
|
582
582
|
|
|
583
583
|
"@tailwindcss/postcss": ["@tailwindcss/postcss@4.3.3", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.3.3", "@tailwindcss/oxide": "4.3.3", "postcss": "^8.5.16", "tailwindcss": "4.3.3" } }, "sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg=="],
|
|
584
584
|
|
|
585
|
-
"@tanstack/query-core": ["@tanstack/query-core@5.103.
|
|
585
|
+
"@tanstack/query-core": ["@tanstack/query-core@5.103.2", "", {}, "sha512-I8DkFXls5jXLqtm8+QpOhEmG07hIblhSZFzafg9wHsMSEvMzULy9hK17wU1T/ahfhMbtITJhbxutwwCoihkR7A=="],
|
|
586
586
|
|
|
587
|
-
"@tanstack/react-query": ["@tanstack/react-query@5.103.
|
|
587
|
+
"@tanstack/react-query": ["@tanstack/react-query@5.103.2", "", { "dependencies": { "@tanstack/query-core": "5.103.2" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-B+fWiYZBc+0uUD5zDZAeLw9dKj7XEsdnuu6zRZ+no6LNKpeE3P3bJ+N6HINjcIlWR6fW3vUoTneEaGa2V6ehqw=="],
|
|
588
588
|
|
|
589
589
|
"@tanstack/react-store": ["@tanstack/react-store@0.11.1", "", { "dependencies": { "@tanstack/store": "0.11.1", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-HaIGKI3YLmjBYIvy5DFDY23oNaYZIsTZfngey07Uh5iLVJgM3bIGCnZeOFOqzjFld9JHWcaHJnasD/bKoGKwJQ=="],
|
|
590
590
|
|
|
@@ -714,7 +714,7 @@
|
|
|
714
714
|
|
|
715
715
|
"accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="],
|
|
716
716
|
|
|
717
|
-
"ai": ["ai@7.0.
|
|
717
|
+
"ai": ["ai@7.0.111", "", { "dependencies": { "@ai-sdk/gateway": "4.0.89", "@ai-sdk/provider": "4.0.17", "@ai-sdk/provider-utils": "5.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-jd35WisL5FT7lFB6wIsZ38G0EaL4p1o+bUuRfkZGTXqO21U3SWyEZ+muV7N191QQfNeExgoyaeFoa8Jx6Uo+0A=="],
|
|
718
718
|
|
|
719
719
|
"ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="],
|
|
720
720
|
|
|
@@ -816,7 +816,7 @@
|
|
|
816
816
|
|
|
817
817
|
"devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="],
|
|
818
818
|
|
|
819
|
-
"dotenv": ["dotenv@18.0.
|
|
819
|
+
"dotenv": ["dotenv@18.0.3", "", { "bin": { "dotenv": "dist/index.cjs" } }, "sha512-/8CJTyL817qPnfbQrJgOEcrU3fDrJkRIoXBE566wHuvIXKOCHUZhPqGPbCPi9SogjdGnreF0TlvnTgK6J/8zpA=="],
|
|
820
820
|
|
|
821
821
|
"effect": ["effect@3.20.0", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-qMLfDJscrNG8p/aw+IkT9W7fgj50Z4wG5bLBy0Txsxz8iUHjDIkOgO3SV0WZfnQbNG2VJYb0b+rDLMrhM4+Krw=="],
|
|
822
822
|
|
|
@@ -858,7 +858,7 @@
|
|
|
858
858
|
|
|
859
859
|
"foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="],
|
|
860
860
|
|
|
861
|
-
"framer-motion": ["framer-motion@13.4.
|
|
861
|
+
"framer-motion": ["framer-motion@13.4.1", "", { "dependencies": { "motion-dom": "^13.4.1", "motion-utils": "^13.3.0", "tslib": "^2.4.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["react", "react-dom"] }, "sha512-6DsbU4hsNsokXkwSp3ezdMWMiv5yWzCcdjFgakkeUC6FVIK01Py8ToSzsXvBw8cYA5hff/oXFvZFU7ltbVyUYA=="],
|
|
862
862
|
|
|
863
863
|
"generate-function": ["generate-function@2.3.1", "", { "dependencies": { "is-property": "^1.0.2" } }, "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ=="],
|
|
864
864
|
|
|
@@ -882,7 +882,7 @@
|
|
|
882
882
|
|
|
883
883
|
"iconv-lite": ["iconv-lite@0.7.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ=="],
|
|
884
884
|
|
|
885
|
-
"icu-minify": ["icu-minify@4.14.
|
|
885
|
+
"icu-minify": ["icu-minify@4.14.6", "", { "dependencies": { "@formatjs/icu-messageformat-parser": "^3.4.0" } }, "sha512-NlyqnxOx8UptHjxu+XcaAM0FbnnYRPlv0n8JsOSIykaw2qALrXkC0ODAjdnF9DLlt1O5HNjM3q7cPC3/4WQb4g=="],
|
|
886
886
|
|
|
887
887
|
"immer": ["immer@11.1.16", "", {}, "sha512-Xs7H9rBc+kti1J6RueUvbEBkmOz7jqj11XYgf+YMXAYzu8EeE7hwZ9poLXdVfVnGmJu7QAf41T7H2KuF6QoK6Q=="],
|
|
888
888
|
|
|
@@ -906,7 +906,7 @@
|
|
|
906
906
|
|
|
907
907
|
"json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="],
|
|
908
908
|
|
|
909
|
-
"ky": ["ky@2.0
|
|
909
|
+
"ky": ["ky@2.1.0", "", {}, "sha512-nIKwelw+7qVqKOlX4Eht6GXfEXlDHcdIjyLWV3s119kYt5s+70ayTnYS+0fRNmtgGRRAfqdeWQbh8YizqkS0ng=="],
|
|
910
910
|
|
|
911
911
|
"lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="],
|
|
912
912
|
|
|
@@ -956,7 +956,7 @@
|
|
|
956
956
|
|
|
957
957
|
"mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
|
|
958
958
|
|
|
959
|
-
"motion-dom": ["motion-dom@13.
|
|
959
|
+
"motion-dom": ["motion-dom@13.4.1", "", { "dependencies": { "motion-utils": "^13.3.0" } }, "sha512-qw6ILBFHrIPQd3k9Dd1fNlCLHTNzvMXW2zpeTlxn4wZXX02m0Dnsf8ycyvcjtAZtBiBnL4SfbyDIXWg+b1x/Ig=="],
|
|
960
960
|
|
|
961
961
|
"motion-utils": ["motion-utils@13.3.0", "", {}, "sha512-sgSschQp7EseHInIlR7hBbMuvet3RA0bs28KPZAXJcGKGdxHGvh1ogpYDilY3bOMtl73EqPNmp75sAKHYPU5sg=="],
|
|
962
962
|
|
|
@@ -970,11 +970,11 @@
|
|
|
970
970
|
|
|
971
971
|
"negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="],
|
|
972
972
|
|
|
973
|
-
"next": ["next@16.3.
|
|
973
|
+
"next": ["next@16.3.6", "", { "dependencies": { "@next/env": "16.3.6", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.3.6", "@next/swc-darwin-x64": "16.3.6", "@next/swc-linux-arm64-gnu": "16.3.6", "@next/swc-linux-arm64-musl": "16.3.6", "@next/swc-linux-x64-gnu": "16.3.6", "@next/swc-linux-x64-musl": "16.3.6", "@next/swc-win32-arm64-msvc": "16.3.6", "@next/swc-win32-x64-msvc": "16.3.6", "sharp": "^0.35.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-L+otWM/aQbYTx98aZhgEoMb4bZAXx1YVW4UMA/vuCyCoWG5HJyZUili8QAkqzrcC+5///tsz3s0M+SlyB5bLMw=="],
|
|
974
974
|
|
|
975
|
-
"next-intl": ["next-intl@4.14.
|
|
975
|
+
"next-intl": ["next-intl@4.14.6", "", { "dependencies": { "@eloqnt/config": "^0.1.0", "@eloqnt/format-json": "^0.1.0", "@eloqnt/format-po": "^0.1.0", "@formatjs/intl-localematcher": "^0.8.1", "@parcel/watcher": "^2.4.1", "@swc/core": "~1.16.0", "icu-minify": "^4.14.6", "negotiator": "^1.0.0", "next-intl-swc-plugin-extractor": "4.14.6", "use-intl": "^4.14.6" }, "peerDependencies": { "next": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" } }, "sha512-YRsXs/zqfz1cw/Lw7phGwvRwG6jzjtFuRdWrQj13vwWKwNSj8y1FXD40KYmLnnANnWqcuWhc1RIL1s47c2sM0Q=="],
|
|
976
976
|
|
|
977
|
-
"next-intl-swc-plugin-extractor": ["next-intl-swc-plugin-extractor@4.14.
|
|
977
|
+
"next-intl-swc-plugin-extractor": ["next-intl-swc-plugin-extractor@4.14.6", "", {}, "sha512-0xchoaNMF8dZTZaXz5fYsxjiU0/YnyTSewNdicrxYJn3922QwSswApYQQGMOmKiZjE55aK2sGjUg7P1HPDgqZg=="],
|
|
978
978
|
|
|
979
979
|
"node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="],
|
|
980
980
|
|
|
@@ -986,7 +986,7 @@
|
|
|
986
986
|
|
|
987
987
|
"oniguruma-to-es": ["oniguruma-to-es@4.3.6", "", { "dependencies": { "oniguruma-parser": "^0.12.2", "regex": "^6.1.0", "regex-recursion": "^6.0.2" } }, "sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA=="],
|
|
988
988
|
|
|
989
|
-
"oxc-parser": ["oxc-parser@0.
|
|
989
|
+
"oxc-parser": ["oxc-parser@0.151.0", "", { "dependencies": { "@oxc-project/types": "^0.151.0" }, "optionalDependencies": { "@oxc-parser/binding-android-arm-eabi": "0.151.0", "@oxc-parser/binding-android-arm64": "0.151.0", "@oxc-parser/binding-darwin-arm64": "0.151.0", "@oxc-parser/binding-darwin-x64": "0.151.0", "@oxc-parser/binding-freebsd-x64": "0.151.0", "@oxc-parser/binding-linux-arm-gnueabihf": "0.151.0", "@oxc-parser/binding-linux-arm-musleabihf": "0.151.0", "@oxc-parser/binding-linux-arm64-gnu": "0.151.0", "@oxc-parser/binding-linux-arm64-musl": "0.151.0", "@oxc-parser/binding-linux-ppc64-gnu": "0.151.0", "@oxc-parser/binding-linux-riscv64-gnu": "0.151.0", "@oxc-parser/binding-linux-riscv64-musl": "0.151.0", "@oxc-parser/binding-linux-s390x-gnu": "0.151.0", "@oxc-parser/binding-linux-x64-gnu": "0.151.0", "@oxc-parser/binding-linux-x64-musl": "0.151.0", "@oxc-parser/binding-openharmony-arm64": "0.151.0", "@oxc-parser/binding-win32-arm64-msvc": "0.151.0", "@oxc-parser/binding-win32-ia32-msvc": "0.151.0", "@oxc-parser/binding-win32-x64-msvc": "0.151.0" } }, "sha512-cX++XpBDCtSe52KKH3rhbh6xIRidYPpyB2reI3azD4l+Y0ci4JZiUgVXyM/r9rrMnYZf9gdWi+9fvFl1wol7nA=="],
|
|
990
990
|
|
|
991
991
|
"path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
|
|
992
992
|
|
|
@@ -1128,14 +1128,12 @@
|
|
|
1128
1128
|
|
|
1129
1129
|
"std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="],
|
|
1130
1130
|
|
|
1131
|
-
"stitchkit": ["stitchkit@0.
|
|
1131
|
+
"stitchkit": ["stitchkit@0.94.0", "", { "dependencies": { "ky": "^2.1.0" }, "peerDependencies": { "@modelcontextprotocol/ext-apps": "^1.7.2 || ^2.0.0", "@modelcontextprotocol/server": "^2.0.0", "@openrouter/ai-sdk-provider": "^3.1.0", "@opentelemetry/api": "^1.9.0", "@socket.io/bun-engine": "^0.1.2", "@socket.io/component-emitter": "^3.1.2", "@tanstack/react-query": ">=5", "@types/bun": "^1.4.2", "ai": "^7.0.107", "google-auth-library": "^11.1.0", "grammy": "^1.46.0", "maxmind": "^5.0.7", "react": ">=18", "react-query-kit": "^3.3.3", "socket.io": "^4.8.3", "socket.io-client": "^4.8.3", "srvx": "^0.12.5 || ^1.0.5", "zod": "^4.6.5" }, "optionalPeers": ["@modelcontextprotocol/ext-apps", "@modelcontextprotocol/server", "@openrouter/ai-sdk-provider", "@opentelemetry/api", "@socket.io/bun-engine", "@socket.io/component-emitter", "@tanstack/react-query", "@types/bun", "ai", "google-auth-library", "grammy", "maxmind", "react", "react-query-kit", "socket.io", "socket.io-client", "srvx"], "bin": { "stitchkit": "dist/entrypoints/bin/upgrade-cli.js" } }, "sha512-fZ7b/YwiOs8Hia5cNJgDxOzRBAb2nNMaEq2Zh7GWeIFdhKVz9Ywn2B83G4ZvUjqgNnPooclMdDXo6NBSOL/wBA=="],
|
|
1132
1132
|
|
|
1133
1133
|
"stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="],
|
|
1134
1134
|
|
|
1135
1135
|
"styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "@babel/core": "*", "babel-plugin-macros": "*", "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" }, "optionalPeers": ["@babel/core", "babel-plugin-macros"] }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="],
|
|
1136
1136
|
|
|
1137
|
-
"supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="],
|
|
1138
|
-
|
|
1139
1137
|
"tailwind-merge": ["tailwind-merge@3.7.0", "", {}, "sha512-XPPUyAc+cvspz3lHTcR/QgPfW2A0lv/xQNIjX3HGhLR+Nq2lHaLq5MtTesHn8GUr3W3DguT2KT5x3NVgRtYwmA=="],
|
|
1140
1138
|
|
|
1141
1139
|
"tailwindcss": ["tailwindcss@4.3.3", "", {}, "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ=="],
|
|
@@ -1168,7 +1166,7 @@
|
|
|
1168
1166
|
|
|
1169
1167
|
"use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="],
|
|
1170
1168
|
|
|
1171
|
-
"use-intl": ["use-intl@4.14.
|
|
1169
|
+
"use-intl": ["use-intl@4.14.6", "", { "dependencies": { "@formatjs/fast-memoize": "^3.1.0", "@schummar/icu-type-parser": "1.21.5", "icu-minify": "^4.14.6", "intl-messageformat": "^11.1.0" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" } }, "sha512-NZ2I5EPPh/SkdBE35/GTM5TWqtqZK1+R4ICZyW6OHupZHspqof61pNLAFVj1weAfuRzZjsy+0w3z2/AvO4qVIw=="],
|
|
1172
1170
|
|
|
1173
1171
|
"use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="],
|
|
1174
1172
|
|
package/template/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"packages/*"
|
|
8
8
|
],
|
|
9
9
|
"catalog": {
|
|
10
|
-
"stitchkit": "^0.
|
|
10
|
+
"stitchkit": "^0.94.0"
|
|
11
11
|
},
|
|
12
12
|
"overrides": {
|
|
13
13
|
"@playwright/test": "1.63.0",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"gen:declaration": "bun scripts/declaration.ts"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"dotenv": "^18.0.
|
|
46
|
+
"dotenv": "^18.0.3"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@app/config": "workspace:*",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"@playwright/test": "^1.63.0",
|
|
55
55
|
"@types/bun": "^1.4.2",
|
|
56
56
|
"@types/node": "^26.6.2",
|
|
57
|
-
"oxc-parser": "^0.
|
|
57
|
+
"oxc-parser": "^0.151.0",
|
|
58
58
|
"socket.io-client": "^4.8.3",
|
|
59
59
|
"stitchkit": "catalog:",
|
|
60
60
|
"typescript": "^7.0.2",
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
"@radix-ui/react-tabs": "^1.1.21",
|
|
26
26
|
"@radix-ui/react-tooltip": "^1.2.16",
|
|
27
27
|
"@t3-oss/env-nextjs": "^0.13.11",
|
|
28
|
-
"@tabler/icons-react": "^3.
|
|
29
|
-
"@tanstack/react-query": "^5.103.
|
|
28
|
+
"@tabler/icons-react": "^3.48.0",
|
|
29
|
+
"@tanstack/react-query": "^5.103.2",
|
|
30
30
|
"@tanstack/react-table": "^9.2.4",
|
|
31
31
|
"@wrksz/themes": "^1.2.0",
|
|
32
32
|
"class-variance-authority": "^0.7.1",
|
|
33
33
|
"clsx": "^2.1.1",
|
|
34
34
|
"date-fns": "^4.4.0",
|
|
35
|
-
"dotenv": "^18.0.
|
|
36
|
-
"framer-motion": "^13.4.
|
|
37
|
-
"next": "^16.3.
|
|
38
|
-
"next-intl": "^4.14.
|
|
35
|
+
"dotenv": "^18.0.3",
|
|
36
|
+
"framer-motion": "^13.4.1",
|
|
37
|
+
"next": "^16.3.6",
|
|
38
|
+
"next-intl": "^4.14.6",
|
|
39
39
|
"react": "^19.3.0",
|
|
40
40
|
"react-dom": "^19.3.0",
|
|
41
41
|
"react-query-kit": "^3.3.4",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test';
|
|
2
|
+
import { ApiError } from 'stitchkit';
|
|
2
3
|
import { getQueryClient } from './query-client';
|
|
3
4
|
|
|
4
5
|
describe('query dehydration policy', () => {
|
|
@@ -20,9 +21,25 @@ describe('query dehydration policy', () => {
|
|
|
20
21
|
expect(shouldDehydrate(pending)).toBe(true);
|
|
21
22
|
});
|
|
22
23
|
|
|
23
|
-
test('retries a
|
|
24
|
+
test('retries a server failure once and never retries a mutation', () => {
|
|
25
|
+
// Asserted through the decision, not through the literal: the policy is a
|
|
26
|
+
// predicate now, and `retry === 1` would pass for a client that retries an
|
|
27
|
+
// unauthorized request too.
|
|
24
28
|
const defaults = getQueryClient().getDefaultOptions();
|
|
25
|
-
|
|
29
|
+
const retry = defaults.queries?.retry;
|
|
30
|
+
if (typeof retry !== 'function') throw new Error('query retry policy is required');
|
|
31
|
+
const serverFailure = new ApiError('INTERNAL_SERVER_ERROR', 500);
|
|
32
|
+
expect(retry(0, serverFailure)).toBe(true);
|
|
33
|
+
expect(retry(1, serverFailure)).toBe(false);
|
|
26
34
|
expect(defaults.mutations?.retry).toBe(false);
|
|
27
35
|
});
|
|
36
|
+
|
|
37
|
+
test('a request the user cannot repeat into success is not retried', () => {
|
|
38
|
+
const defaults = getQueryClient().getDefaultOptions();
|
|
39
|
+
const retry = defaults.queries?.retry;
|
|
40
|
+
if (typeof retry !== 'function') throw new Error('query retry policy is required');
|
|
41
|
+
for (const code of ['UNAUTHORIZED', 'FORBIDDEN', 'VALIDATION_ERROR']) {
|
|
42
|
+
expect(retry(0, new ApiError(code, 401))).toBe(false);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
28
45
|
});
|
|
@@ -1,36 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
defaultShouldDehydrateQuery,
|
|
3
|
-
environmentManager,
|
|
4
|
-
QueryClient,
|
|
5
|
-
type QueryClientConfig,
|
|
6
|
-
} from '@tanstack/react-query';
|
|
7
1
|
import { cache } from 'react';
|
|
2
|
+
import { createQueryClientFactory } from 'stitchkit/react';
|
|
8
3
|
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
},
|
|
4
|
+
// One request-local server client and one browser singleton, both from the
|
|
5
|
+
// framework. The local construction this replaced was a second implementation
|
|
6
|
+
// of the same thing: it restated the dehydration policy and the mutation rule,
|
|
7
|
+
// and it spelled the query retry as a plain `1`, which retries an unauthorized
|
|
8
|
+
// or invalid request exactly as eagerly as a network blip. `apiErrorRetry` —
|
|
9
|
+
// the factory's default — retries what is worth retrying and nothing else.
|
|
10
|
+
// Project-specific cache configuration and mutation toasts belong in these
|
|
11
|
+
// options, never in a copy of the framework's retry predicate.
|
|
12
|
+
export const getQueryClient = createQueryClientFactory({
|
|
13
|
+
serverCache: cache,
|
|
14
|
+
queryClient: {
|
|
15
|
+
defaultOptions: { queries: { staleTime: 30_000 } },
|
|
22
16
|
},
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function createQueryClient(): QueryClient {
|
|
26
|
-
return new QueryClient(config);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const getServerQueryClient = cache(createQueryClient);
|
|
30
|
-
let browserQueryClient: QueryClient | undefined;
|
|
31
|
-
|
|
32
|
-
export function getQueryClient(): QueryClient {
|
|
33
|
-
if (environmentManager.isServer()) return getServerQueryClient();
|
|
34
|
-
browserQueryClient ??= createQueryClient();
|
|
35
|
-
return browserQueryClient;
|
|
36
|
-
}
|
|
17
|
+
});
|