mirror of
https://github.com/simstudioai/sim.git
synced 2026-10-13 15:48:31 +08:00
chore(nextjs): upgrade to 16.4.0 (#8729)
This commit is contained in:
@@ -2,8 +2,6 @@ import type { CSSProperties } from 'react'
|
||||
import { ImageResponse } from 'next/og'
|
||||
import type { NextRequest } from 'next/server'
|
||||
|
||||
export const runtime = 'edge'
|
||||
|
||||
const TITLE_FONT_SIZE = {
|
||||
large: 110,
|
||||
medium: 96,
|
||||
@@ -136,10 +134,8 @@ function wrapTitleLines(title: string, fontSize: number): string[] {
|
||||
* Loads Söhne Kräftig (weight 500), the typeface used on the reference cover
|
||||
* template this OG image matches. Converted to a plain TTF from the
|
||||
* last-shipped `soehne-kraftig.woff2` since Satori (`next/og`'s renderer)
|
||||
* can't parse WOFF2 or variable fonts. Fetched over HTTP since the edge
|
||||
* runtime has no filesystem access — served from `/static/fonts/` (not
|
||||
* `/fonts/`) so it isn't intercepted by the site's proxy (`proxy.ts`),
|
||||
* whose matcher excludes `static` but not `fonts`.
|
||||
* can't parse WOFF2 or variable fonts. Fetched over HTTP for Next's revalidation
|
||||
* cache, from `/static/fonts/` so the site's proxy matcher excludes it.
|
||||
*/
|
||||
async function loadTitleFont(baseUrl: string): Promise<ArrayBuffer> {
|
||||
const response = await fetch(new URL('/static/fonts/Soehne-Kraftig.ttf', baseUrl), {
|
||||
|
||||
+19
-10
@@ -1,10 +1,15 @@
|
||||
import { readFileSync } from 'node:fs'
|
||||
import { join } from 'node:path'
|
||||
import type { MethodInformation } from 'fumadocs-openapi'
|
||||
import type { InlineCodeUsageGenerator } from 'fumadocs-openapi/requests/generators'
|
||||
import { createOpenAPI } from 'fumadocs-openapi/server'
|
||||
import { buildAuthCodeSamples } from '@/lib/openapi-code-samples'
|
||||
import { OPENAPI_SPEC_FILES } from '@/lib/openapi-specs'
|
||||
import billingSpec from '@/openapi-v2-billing.json'
|
||||
import filesAuditSpec from '@/openapi-v2-files-audit.json'
|
||||
import knowledgeSpec from '@/openapi-v2-knowledge.json'
|
||||
import logsSpec from '@/openapi-v2-logs.json'
|
||||
import resourcesSpec from '@/openapi-v2-resources.json'
|
||||
import tablesSpec from '@/openapi-v2-tables.json'
|
||||
import workflowsSpec from '@/openapi-v2-workflows.json'
|
||||
|
||||
export const openapi = createOpenAPI({
|
||||
input: OPENAPI_SPEC_FILES.map((file) => `./${file}`),
|
||||
@@ -66,16 +71,20 @@ function formatSchema(schema: unknown): string {
|
||||
return JSON.stringify(schema, null, 2)
|
||||
}
|
||||
|
||||
let cachedSpecs: Record<string, unknown>[] | null = null
|
||||
const SPEC_BY_FILE = {
|
||||
'openapi-v2-billing.json': billingSpec,
|
||||
'openapi-v2-files-audit.json': filesAuditSpec,
|
||||
'openapi-v2-knowledge.json': knowledgeSpec,
|
||||
'openapi-v2-logs.json': logsSpec,
|
||||
'openapi-v2-resources.json': resourcesSpec,
|
||||
'openapi-v2-tables.json': tablesSpec,
|
||||
'openapi-v2-workflows.json': workflowsSpec,
|
||||
} satisfies Record<(typeof OPENAPI_SPEC_FILES)[number], Record<string, unknown>>
|
||||
|
||||
const SPECS = OPENAPI_SPEC_FILES.map((file) => SPEC_BY_FILE[file])
|
||||
|
||||
function getSpecs(): Record<string, unknown>[] {
|
||||
if (!cachedSpecs) {
|
||||
cachedSpecs = OPENAPI_SPEC_FILES.map(
|
||||
(file) =>
|
||||
JSON.parse(readFileSync(join(process.cwd(), file), 'utf8')) as Record<string, unknown>
|
||||
)
|
||||
}
|
||||
return cachedSpecs
|
||||
return SPECS
|
||||
}
|
||||
|
||||
type SecurityRequirement = Record<string, string[]>
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
"fumadocs-mdx": "14.3.2",
|
||||
"fumadocs-openapi": "10.8.1",
|
||||
"fumadocs-ui": "16.8.5",
|
||||
"next": "16.3.6",
|
||||
"next": "16.4.0",
|
||||
"next-themes": "^0.4.6",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
"mssql": "12.7.0",
|
||||
"mysql2": "3.24.2",
|
||||
"neo4j-driver": "6.0.1",
|
||||
"next": "16.3.6",
|
||||
"next": "16.4.0",
|
||||
"next-mdx-remote": "^6.0.0",
|
||||
"next-themes": "^0.4.6",
|
||||
"nodemailer": "10.0.10",
|
||||
@@ -267,7 +267,7 @@
|
||||
"zustand": "^5.0.13"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@next/env": "16.3.6",
|
||||
"@next/env": "16.4.0",
|
||||
"@opentelemetry/context-async-hooks": "2.10.0",
|
||||
"@sim/testing": "workspace:*",
|
||||
"@sim/tsconfig": "workspace:*",
|
||||
|
||||
@@ -36,10 +36,10 @@
|
||||
"zod": "4.3.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-x64-gnu": "16.3.6",
|
||||
"@next/swc-darwin-arm64": "16.4.0",
|
||||
"@next/swc-darwin-x64": "16.4.0",
|
||||
"@next/swc-linux-arm64-gnu": "16.4.0",
|
||||
"@next/swc-linux-x64-gnu": "16.4.0",
|
||||
},
|
||||
},
|
||||
"apps/desktop": {
|
||||
@@ -99,7 +99,7 @@
|
||||
"fumadocs-mdx": "14.3.2",
|
||||
"fumadocs-openapi": "10.8.1",
|
||||
"fumadocs-ui": "16.8.5",
|
||||
"next": "16.3.6",
|
||||
"next": "16.4.0",
|
||||
"next-themes": "^0.4.6",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
@@ -341,7 +341,7 @@
|
||||
"mssql": "12.7.0",
|
||||
"mysql2": "3.24.2",
|
||||
"neo4j-driver": "6.0.1",
|
||||
"next": "16.3.6",
|
||||
"next": "16.4.0",
|
||||
"next-mdx-remote": "^6.0.0",
|
||||
"next-themes": "^0.4.6",
|
||||
"nodemailer": "10.0.10",
|
||||
@@ -390,7 +390,7 @@
|
||||
"zustand": "^5.0.13",
|
||||
},
|
||||
"devDependencies": {
|
||||
"@next/env": "16.3.6",
|
||||
"@next/env": "16.4.0",
|
||||
"@opentelemetry/context-async-hooks": "2.10.0",
|
||||
"@sim/testing": "workspace:*",
|
||||
"@sim/tsconfig": "workspace:*",
|
||||
@@ -559,7 +559,7 @@
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"framer-motion": "^12.5.0",
|
||||
"input-otp": "^1.4.2",
|
||||
"next": "16.3.6",
|
||||
"next": "16.4.0",
|
||||
"prismjs": "^1.30.0",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
@@ -690,7 +690,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@clack/prompts": "1.7.0",
|
||||
"@next/env": "16.3.6",
|
||||
"@next/env": "16.4.0",
|
||||
"@sim/deployment-config": "workspace:*",
|
||||
"@sim/security": "workspace:*",
|
||||
"@sim/tsconfig": "workspace:*",
|
||||
@@ -724,7 +724,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@sim/tsconfig": "workspace:*",
|
||||
"next": "16.3.6",
|
||||
"next": "16.4.0",
|
||||
"stripe": "18.5.0",
|
||||
"typescript": "^7.0.2",
|
||||
"vitest": "^5.0.1",
|
||||
@@ -837,7 +837,7 @@
|
||||
},
|
||||
"overrides": {
|
||||
"@hono/node-server": "1.19.15",
|
||||
"@next/env": "16.3.6",
|
||||
"@next/env": "16.4.0",
|
||||
"brace-expansion": "5.0.9",
|
||||
"deepmerge-ts": "8.0.0",
|
||||
"dompurify": "3.4.13",
|
||||
@@ -850,7 +850,7 @@
|
||||
"marked": "18.0.11",
|
||||
"mermaid": "11.16.1",
|
||||
"minimatch": "^10.2.5",
|
||||
"next": "16.3.6",
|
||||
"next": "16.4.0",
|
||||
"postcss": "8.5.26",
|
||||
"postgres": "^3.4.5",
|
||||
"protobufjs": "7.6.5",
|
||||
@@ -1542,23 +1542,23 @@
|
||||
|
||||
"@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.2.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" } }, "sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g=="],
|
||||
|
||||
"@next/env": ["@next/env@16.3.6", "", {}, "sha512-x9Vblze1EbtltQYnNH38xCPWU3TVfBd1eXqA3+w9+BTpedkkdNpAaltXlGQ/nsc1+E0mVTNrtcbX3GoO09zeLQ=="],
|
||||
"@next/env": ["@next/env@16.4.0", "", {}, "sha512-pyLlT5oafGlX8X7xjgGNXz5dNIDSxREm+qD6i9VLSZiZFopA/XWl8NM/KPmLx/8EG/++c49iid3gNWSQW1+2dQ=="],
|
||||
|
||||
"@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.3.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-E/7GEqaUkt8mk/T8v9lAnrhzR06kdq1ZBkC12F8tAMkdIadwNp3H1KqHynDHrpcTlGCUdq/qu6vUL2aYVyYBdw=="],
|
||||
"@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.4.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-yyZ+9MgViAKLLb5l1gPBGjRwnq3teNLb5Zx6JEw8LzNSTjlsnp+baUHFxTgl7PpjCmKf48VQfyipG1eBflb48Q=="],
|
||||
|
||||
"@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.3.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-yBE893/nDWTlaiBD1p+qgt7NUen4U5R6FXyH0s67Npq1S3E0cVSef1WIXC2xBRgQvwAvJq6DnS6Y6PrY0cy4Ew=="],
|
||||
"@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.4.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-RePEEejEj1Auf5s9qEcG0JbcDP3ceNUS/ofNX8AhxzgIjTVlZIHMatlp16YplcSMpsVo/ZMQHJTjbMYJznjGUg=="],
|
||||
|
||||
"@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.3.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-KJDpjBqBPYlvkivmyrp+Qys6k/7ksbqGQvRVc6ZEGfR+cjQxx+nUkJaWmNZJsmoOrqYNbaXByF8wa0lBwDhB3Q=="],
|
||||
"@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.4.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-HhsyCqd+NpmvDDVY/LqkAN24f+QVvXh3ie+PfcwKinWL2Mu826JymQxJXGjAIfmJ4VlHjp4Pe/nZtXtUoEMAqw=="],
|
||||
|
||||
"@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.3.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-mqNg2K+hvWskSRb/QM+Ix412DvBsuSF0XV+frTSw5vmoucNnIlynFwKYew8D01bfATErMOM7Bujrf0BA5DRKFA=="],
|
||||
"@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.4.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-sN9Pf+Zh+RpZAOmbR7d8KAA8T61CVhawtbEJ2Bk6QrRzx6Z/6haaF4UiwBzytM96GRRRWZh9/WALIEO3npMamA=="],
|
||||
|
||||
"@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.3.6", "", { "os": "linux", "cpu": "x64" }, "sha512-nFncBNGAYouRHjRVaITs9beZRfhX4ssVwpnvPIAbkZVH6LtGoAVlH4bJ8Cnf9SOo9bsXgPFer/GdHtEE3JNOkw=="],
|
||||
"@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.4.0", "", { "os": "linux", "cpu": "x64" }, "sha512-D5M5xLWQVd1CvR+L7BickM1weRfmM41x3L1NWcnKY/oyJJqr1qwaCgmu3dMAhLBOMdZwSuDCRV6DJRRpiUkbDQ=="],
|
||||
|
||||
"@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.3.6", "", { "os": "linux", "cpu": "x64" }, "sha512-5Mf3cHDGR/Iz0ng2Bj3zUR3p5QS9YK3Hn2QiAfavFmyF48zwThAjpFoiTKNIcOHLYS4zEk+gzyJ/9deQ2ZB8yQ=="],
|
||||
"@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.4.0", "", { "os": "linux", "cpu": "x64" }, "sha512-8d5WLS6a9YalqpOgXdlbvonFu+sIgjA+CO6tGzetrpPVcUL56foa7B7664h41rAlbLi5fJwK4vWji3zf4QDy+w=="],
|
||||
|
||||
"@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.3.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-0jkJy0C2kbrJWTk4YLa3xk80pVBpx8FCHJym7CnUfDAXe/FWv5qT7SQJbR0KuemyxaEDlEx5WT4VQJoTW+/9Qw=="],
|
||||
"@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.4.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-sQuOIiW3snb48UwrBcDMvFA/u03qtw2LeuSIxFIQ9AJuW9UG/4Ddsfo+eV73PnZwBhyncMtsKVh7PrzMol2/fA=="],
|
||||
|
||||
"@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.3.6", "", { "os": "win32", "cpu": "x64" }, "sha512-/YXjI1e5OXcZ7YpxRwgP/1jAV/SBKTzeVKqN2mk7mLpcICsyn3Gl5+dIfDTJp70M0ccMhyMMRso4v6mPDCGepg=="],
|
||||
"@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.4.0", "", { "os": "win32", "cpu": "x64" }, "sha512-6/33lCuxpdHUy27RegyGM/5uTpF7YZd3UR4D0gpkOA/tWY5YR7msbQjqPgCZmSmxrrTLGCXYA4A8vT2H5DPGTQ=="],
|
||||
|
||||
"@noble/ciphers": ["@noble/ciphers@2.2.0", "", {}, "sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA=="],
|
||||
|
||||
@@ -3902,7 +3902,7 @@
|
||||
|
||||
"neo4j-driver-core": ["neo4j-driver-core@6.0.1", "", {}, "sha512-5I2KxICAvcHxnWdJyDqwu8PBAQvWVTlQH2ve3VQmtVdJScPqWhpXN1PiX5IIl+cRF3pFpz9GQF53B5n6s0QQUQ=="],
|
||||
|
||||
"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=="],
|
||||
"next": ["next@16.4.0", "", { "dependencies": { "@next/env": "16.4.0", "@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.4.0", "@next/swc-darwin-x64": "16.4.0", "@next/swc-linux-arm64-gnu": "16.4.0", "@next/swc-linux-arm64-musl": "16.4.0", "@next/swc-linux-x64-gnu": "16.4.0", "@next/swc-linux-x64-musl": "16.4.0", "@next/swc-win32-arm64-msvc": "16.4.0", "@next/swc-win32-x64-msvc": "16.4.0", "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-N2C+9q89Z/oLrsepSRS4jRMtwmUZAoZuAHU0e9T6+sAB5DdhADmrnOW+zjYijlrYFmVfmQhGVGy9eMFoB7UgKg=="],
|
||||
|
||||
"next-mdx-remote": ["next-mdx-remote@6.0.0", "", { "dependencies": { "@babel/code-frame": "^7.23.5", "@mdx-js/mdx": "^3.0.1", "@mdx-js/react": "^3.0.1", "unist-util-remove": "^4.0.0", "unist-util-visit": "^5.1.0", "vfile": "^6.0.1", "vfile-matter": "^5.0.0" }, "peerDependencies": { "react": ">=16" } }, "sha512-cJEpEZlgD6xGjB4jL8BnI8FaYdN9BzZM4NwadPe1YQr7pqoWjg9EBCMv3nXBkuHqMRfv2y33SzUsuyNh9LFAQQ=="],
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@ exact = true
|
||||
# Supply-chain gate: only install package versions published at least 7 days ago
|
||||
# (blocks freshly published, potentially compromised releases).
|
||||
minimumReleaseAge = 604800
|
||||
# Explicit framework pins must install before their release reaches the age threshold.
|
||||
minimumReleaseAgeExcludes = ["next", "@next/env"]
|
||||
|
||||
[run]
|
||||
env = { NEXT_PUBLIC_APP_URL = "http://localhost:3000" }
|
||||
|
||||
+6
-6
@@ -136,8 +136,8 @@
|
||||
"overrides": {
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
"next": "16.3.6",
|
||||
"@next/env": "16.3.6",
|
||||
"next": "16.4.0",
|
||||
"@next/env": "16.4.0",
|
||||
"drizzle-orm": "^0.45.2",
|
||||
"postgres": "^3.4.5",
|
||||
"minimatch": "^10.2.5",
|
||||
@@ -160,10 +160,10 @@
|
||||
"ws": "8.21.3"
|
||||
},
|
||||
"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-x64-gnu": "16.3.6"
|
||||
"@next/swc-darwin-arm64": "16.4.0",
|
||||
"@next/swc-darwin-x64": "16.4.0",
|
||||
"@next/swc-linux-arm64-gnu": "16.4.0",
|
||||
"@next/swc-linux-x64-gnu": "16.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/parser": "7.29.2",
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"framer-motion": "^12.5.0",
|
||||
"input-otp": "^1.4.2",
|
||||
"next": "16.3.6",
|
||||
"next": "16.4.0",
|
||||
"prismjs": "^1.30.0",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@clack/prompts": "1.7.0",
|
||||
"@next/env": "16.3.6",
|
||||
"@next/env": "16.4.0",
|
||||
"@sim/deployment-config": "workspace:*",
|
||||
"@sim/security": "workspace:*",
|
||||
"@sim/tsconfig": "workspace:*",
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@sim/tsconfig": "workspace:*",
|
||||
"next": "16.3.6",
|
||||
"next": "16.4.0",
|
||||
"stripe": "18.5.0",
|
||||
"typescript": "^7.0.2",
|
||||
"vitest": "^5.0.1"
|
||||
|
||||
Reference in New Issue
Block a user