updated self host vars, reduced the number of required env vars

This commit is contained in:
Zai Shi 2024-12-08 16:29:05 -08:00
parent 1b5b38e35a
commit 55a6309277
9 changed files with 188 additions and 170 deletions

View File

@ -1,7 +1,7 @@
# Basic
NEXT_PUBLIC_STACK_API_URL=# the base URL of Stack's backend/API. For local development, this is `http://localhost:8102`; for the managed service, this is `https://api.stack-auth.com`.
NEXT_PUBLIC_STACK_DASHBOARD_URL=# the URL of Stack's dashboard. For local development, this is `http://localhost:8101`; for the managed service, this is `https://app.stack-auth.com`.
STACK_SERVER_SECRET=# a random, unguessable secret key generated by `pnpm generate-keys`
STACK_SECRET_SERVER_KEY=# a random, unguessable secret key generated by `pnpm generate-keys`
# seed script settings
STACK_SEED_INTERNAL_PROJECT_SIGN_UP_ENABLED=# true to add OTP auth to the dashboard when seeding

View File

@ -18,10 +18,13 @@ async function seed() {
const dashboardDomain = process.env.NEXT_PUBLIC_STACK_DASHBOARD_URL;
const oauthProviderIds = process.env.STACK_SEED_INTERNAL_PROJECT_OAUTH_PROVIDERS?.split(',') ?? [];
const otpEnabled = process.env.STACK_SEED_INTERNAL_PROJECT_OTP_ENABLED === 'true';
const signUpEnabled = process.env.STACK_SEED_INTERNAL_PROJECT_SIGN_UP_ENABLED === 'true';
const signUpEnabled = process.env.STACK_SEED_INTERNAL_PROJECT_SIGN_UP_DISABLED !== 'true';
const allowLocalhost = process.env.STACK_SEED_INTERNAL_PROJECT_ALLOW_LOCALHOST === 'true';
const clientTeamCreation = process.env.STACK_SEED_INTERNAL_PROJECT_CLIENT_TEAM_CREATION === 'true';
const apiKeyId = '3142e763-b230-44b5-8636-aa62f7489c26';
const defaultUserId = '33e7c043-d2d1-4187-acd3-f91b5ed64b46';
let internalProject = await prisma.project.findUnique({
where: {
id: 'internal',
@ -38,20 +41,9 @@ async function seed() {
displayName: 'Stack Dashboard',
description: 'Stack\'s admin dashboard',
isProductionMode: false,
apiKeySets: {
create: [{
description: "Internal API key set",
// These keys must match the values used in the Stack dashboard env to be able to login via the UI.
publishableClientKey: process.env.STACK_SEED_INTERNAL_PROJECT_PUBLISHABLE_CLIENT_KEY || throwErr('STACK_SEED_INTERNAL_PROJECT_PUBLISHABLE_CLIENT_KEY is not set'),
secretServerKey: process.env.STACK_SEED_INTERNAL_PROJECT_SECRET_SERVER_KEY || throwErr('STACK_SEED_INTERNAL_PROJECT_SECRET_SERVER_KEY is not set'),
superSecretAdminKey: process.env.STACK_SEED_INTERNAL_PROJECT_SUPER_SECRET_ADMIN_KEY || throwErr('STACK_SEED_INTERNAL_PROJECT_SUPER_SECRET_ADMIN_KEY is not set'),
expiresAt: new Date('2099-12-31T23:59:59Z'),
}],
},
config: {
create: {
allowLocalhost: true,
signUpEnabled,
emailServiceConfig: {
create: {
proxiedEmailServiceConfig: {
@ -123,6 +115,34 @@ async function seed() {
console.log('Internal project created');
}
if (internalProject.config.signUpEnabled !== signUpEnabled) {
await prisma.projectConfig.update({
where: {
id: internalProject.configId,
},
data: {
signUpEnabled,
}
});
console.log(`Updated signUpEnabled for internal project: ${signUpEnabled}`);
}
await prisma.apiKeySet.upsert({
where: { projectId_id: { projectId: 'internal', id: apiKeyId } },
update: {},
create: {
id: apiKeyId,
projectId: 'internal',
description: "Internal API key set",
// These keys must match the values used in the Stack dashboard env to be able to login via the UI.
publishableClientKey: process.env.STACK_SEED_INTERNAL_PROJECT_PUBLISHABLE_CLIENT_KEY || throwErr('STACK_SEED_INTERNAL_PROJECT_PUBLISHABLE_CLIENT_KEY is not set'),
secretServerKey: process.env.STACK_SEED_INTERNAL_PROJECT_SECRET_SERVER_KEY || throwErr('STACK_SEED_INTERNAL_PROJECT_SECRET_SERVER_KEY is not set'),
superSecretAdminKey: process.env.STACK_SEED_INTERNAL_PROJECT_SUPER_SECRET_ADMIN_KEY || throwErr('STACK_SEED_INTERNAL_PROJECT_SUPER_SECRET_ADMIN_KEY is not set'),
expiresAt: new Date('2099-12-31T23:59:59Z'),
}
});
// Create optional default admin user if credentials are provided.
// This user will be able to login to the dashboard with both email/password and magic link.
if ((adminEmail && adminPassword) || adminGithubId) {
@ -130,7 +150,7 @@ async function seed() {
const oldAdminUser = await tx.projectUser.findFirst({
where: {
projectId: 'internal',
projectUserId: '33e7c043-d2d1-4187-acd3-f91b5ed64b46'
projectUserId: defaultUserId
}
});
@ -140,7 +160,7 @@ async function seed() {
const newUser = await tx.projectUser.create({
data: {
displayName: 'Administrator (created by seed script)',
projectUserId: '33e7c043-d2d1-4187-acd3-f91b5ed64b46',
projectUserId: defaultUserId,
projectId: 'internal',
serverMetadata: adminInternalAccess
? { managedProjectIds: ['internal'] }

View File

@ -1,13 +1,9 @@
NEXT_PUBLIC_STACK_API_URL=# https://your-backend-domain.com
NEXT_PUBLIC_STACK_DASHBOARD_URL=# https://your-dashboard-domain.com, this will be added as a trusted domain by the seed script
STACK_SEED_INTERNAL_PROJECT_ALLOW_LOCALHOST=# if true, the internal dashboard project will allow localhost as a trusted domain. Do not set this to true in production.
STACK_DATABASE_CONNECTION_STRING=# postgres connection string with pooler
STACK_DIRECT_DATABASE_CONNECTION_STRING=# postgres direct connection string
NEXT_PUBLIC_STACK_PROJECT_ID=internal
NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY=# a secure random string
STACK_SECRET_SERVER_KEY=# a secure random string
STACK_SERVER_SECRET=# a 32 bytes base64url encoded random string, used for JWT encryption. can be generated with `pnpm generate-keys`
# seed script settings
@ -33,5 +29,5 @@ STACK_SVIX_SERVER_URL=# this is only needed if you self-host the Svix service
STACK_SVIX_API_KEY=
STACK_RUN_MIGRATIONS=true
STACK_RUN_SEED_SCRIPT=true
STACK_SKIP_MIGRATIONS=# true to skip prisma migrations
STACK_SKIP_SEED_SCRIPT=# true to skip the seed script

View File

@ -4,13 +4,10 @@ NEXT_PUBLIC_STACK_DASHBOARD_URL=http://localhost:8101
STACK_DATABASE_CONNECTION_STRING=postgres://postgres:PASSWORD-PLACEHOLDER--uqfEC1hmmv@host.docker.internal:5432/stackframe
STACK_DIRECT_DATABASE_CONNECTION_STRING=postgres://postgres:PASSWORD-PLACEHOLDER--uqfEC1hmmv@host.docker.internal:5432/stackframe
STACK_SEED_INTERNAL_PROJECT_PUBLISHABLE_CLIENT_KEY=this-publishable-client-key-is-for-local-development-only
STACK_SEED_INTERNAL_PROJECT_SECRET_SERVER_KEY=this-secret-server-key-is-for-local-development-only
STACK_SEED_INTERNAL_PROJECT_SUPER_SECRET_ADMIN_KEY=23-wuNpik0gIW4mruTz25rbIvhuuvZFrLOLtL7J4tyo
STACK_SERVER_SECRET=23-wuNpik0gIW4mruTz25rbIvhuuvZFrLOLtL7J4tyo
STACK_SEED_INTERNAL_PROJECT_ALLOW_LOCALHOST=true
STACK_SEED_INTERNAL_PROJECT_USER_EMAIL=admin@email.com
STACK_SEED_INTERNAL_PROJECT_USER_PASSWORD=password
STACK_SEED_INTERNAL_PROJECT_USER_INTERNAL_ACCESS=false
STACK_SEED_INTERNAL_PROJECT_SIGN_UP_ENABLED=true
STACK_RUN_MIGRATIONS=true
STACK_RUN_SEED_SCRIPT=true

View File

@ -2,25 +2,29 @@
set -e
export STACK_SEED_INTERNAL_PROJECT_PUBLISHABLE_CLIENT_KEY=$(openssl rand -base64 32)
export STACK_SEED_INTERNAL_PROJECT_SECRET_SERVER_KEY=$(openssl rand -base64 32)
export STACK_SEED_INTERNAL_PROJECT_SUPER_SECRET_ADMIN_KEY=$(openssl rand -base64 32)
export NEXT_PUBLIC_STACK_PROJECT_ID=internal
export NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY=${STACK_SEED_INTERNAL_PROJECT_PUBLISHABLE_CLIENT_KEY}
export STACK_SECRET_SERVER_KEY=${STACK_SEED_INTERNAL_PROJECT_SECRET_SERVER_KEY}
export STACK_SUPER_SECRET_ADMIN_KEY=${STACK_SEED_INTERNAL_PROJECT_SUPER_SECRET_ADMIN_KEY}
if [ "$STACK_RUN_MIGRATIONS" = "true" ]; then
if [ "$STACK_SKIP_MIGRATIONS" = "true" ]; then
echo "Skipping migrations."
else
echo "Running migrations..."
prisma migrate deploy --schema=./apps/backend/prisma/schema.prisma
else
echo "Skipping migrations."
fi
if [ "$STACK_RUN_SEED_SCRIPT" = "true" ]; then
if [ "$STACK_SKIP_SEED_SCRIPT" = "true" ]; then
echo "Skipping seed script."
else
echo "Running seed script..."
cd apps/backend
node seed.js
cd ../..
else
echo "Skipping seed script."
fi
# Start backend and dashboard in parallel

View File

@ -1,4 +1,3 @@
NEXT_PUBLIC_STACK_API_URL=# enter your stack endpoint here, e.g. http://localhost:8102
NEXT_PUBLIC_STACK_PROJECT_ID=# enter your stack project id here
NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY=# enter your stack publishable client key here
STACK_SECRET_SERVER_KEY=# enter your stack secret server key here

View File

@ -3,4 +3,4 @@
NEXT_PUBLIC_STACK_API_URL=http://localhost:8102
NEXT_PUBLIC_STACK_PROJECT_ID=internal
NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY=this-publishable-client-key-is-for-local-development-only
STACK_SECRET_SERVER_KEY=this-secret-server-key-is-for-local-development-only
STACK_SECRET_SERVER_KEY=this-secret-server-key-is-for-local-development-only

View File

@ -3,7 +3,8 @@
"version": "2.6.34",
"private": true,
"scripts": {
"dev": "next dev --port 8115",
"dev": "next dev --turbo --port 8103",
"clean": "rimraf .next && rimraf node_modules",
"build": "next build",
"start": "next start"
},
@ -12,7 +13,7 @@
"@supabase/ssr": "latest",
"@supabase/supabase-js": "latest",
"jose": "^5.2.2",
"next": "latest",
"next": "^15.0.3",
"react": "18.2.0",
"react-dom": "18.2.0"
},

View File

@ -712,8 +712,8 @@ importers:
specifier: ^5.2.2
version: 5.6.3
next:
specifier: latest
version: 14.2.7(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
specifier: ^15.0.3
version: 15.0.4(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
react:
specifier: 18.2.0
version: 18.2.0
@ -2733,15 +2733,15 @@ packages:
'@next/env@14.2.5':
resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==}
'@next/env@14.2.7':
resolution: {integrity: sha512-OTx9y6I3xE/eih+qtthppwLytmpJVPM5PPoJxChFsbjIEFXIayG0h/xLzefHGJviAa3Q5+Fd+9uYojKkHDKxoQ==}
'@next/env@14.3.0-canary.26':
resolution: {integrity: sha512-jAg7nNWnMT8GmbmOUjUPqc1LZym3bYJPbMOUBUgX2OibS6ZdUCfSg8R9JYYoUFmEaNeP9RM4yEYcoUZa4py0vA==}
'@next/env@15.0.3':
resolution: {integrity: sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA==}
'@next/env@15.0.4':
resolution: {integrity: sha512-WNRvtgnRVDD4oM8gbUcRc27IAhaL4eXQ/2ovGbgLnPGUvdyDr8UdXP4Q/IBDdAdojnD2eScryIDirv0YUCjUVw==}
'@next/eslint-plugin-next@14.2.17':
resolution: {integrity: sha512-fW6/u1jjlBQrMs1ExyINehaK3B+LEW5UqdF6QYL07QK+SECkX0hnEyPMaNKj0ZFzirQ9D8jLWQ00P8oua4yx9g==}
@ -2786,12 +2786,6 @@ packages:
cpu: [arm64]
os: [darwin]
'@next/swc-darwin-arm64@14.2.7':
resolution: {integrity: sha512-UhZGcOyI9LE/tZL3h9rs/2wMZaaJKwnpAyegUVDGZqwsla6hMfeSj9ssBWQS9yA4UXun3pPhrFLVnw5KXZs3vw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@next/swc-darwin-arm64@14.3.0-canary.26':
resolution: {integrity: sha512-BqCmXRkE1oU/a826Ri7Itp/2A7sSy6IU59gWR42a4mfjtq/znKeVkGYRcNDFgG81JsUFajeDAeKwzRuOM4Avig==}
engines: {node: '>= 10'}
@ -2804,6 +2798,12 @@ packages:
cpu: [arm64]
os: [darwin]
'@next/swc-darwin-arm64@15.0.4':
resolution: {integrity: sha512-QecQXPD0yRHxSXWL5Ff80nD+A56sUXZG9koUsjWJwA2Z0ZgVQfuy7gd0/otjxoOovPVHR2eVEvPMHbtZP+pf9w==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@next/swc-darwin-x64@14.1.0':
resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==}
engines: {node: '>= 10'}
@ -2828,12 +2828,6 @@ packages:
cpu: [x64]
os: [darwin]
'@next/swc-darwin-x64@14.2.7':
resolution: {integrity: sha512-ys2cUgZYRc+CbyDeLAaAdZgS7N1Kpyy+wo0b/gAj+SeOeaj0Lw/q+G1hp+DuDiDAVyxLBCJXEY/AkhDmtihUTA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@next/swc-darwin-x64@14.3.0-canary.26':
resolution: {integrity: sha512-14VzggH8GwX/AHAxd/SKzuzhhyVdmEWrJQTL/1Hp6/oWYX+12FbG8bwk/8JClJgnRoD9ZFRz4TSaR1dk6soN4Q==}
engines: {node: '>= 10'}
@ -2846,6 +2840,12 @@ packages:
cpu: [x64]
os: [darwin]
'@next/swc-darwin-x64@15.0.4':
resolution: {integrity: sha512-pb7Bye3y1Og3PlCtnz2oO4z+/b3pH2/HSYkLbL0hbVuTGil7fPen8/3pyyLjdiTLcFJ+ymeU3bck5hd4IPFFCA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@next/swc-linux-arm64-gnu@14.1.0':
resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==}
engines: {node: '>= 10'}
@ -2870,12 +2870,6 @@ packages:
cpu: [arm64]
os: [linux]
'@next/swc-linux-arm64-gnu@14.2.7':
resolution: {integrity: sha512-2xoWtE13sUJ3qrC1lwE/HjbDPm+kBQYFkkiVECJWctRASAHQ+NwjMzgrfqqMYHfMxFb5Wws3w9PqzZJqKFdWcQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@next/swc-linux-arm64-gnu@14.3.0-canary.26':
resolution: {integrity: sha512-+RhBR/OIjiGy0rFTiwtYWsn0lKsoT9xC3sy0eQQ8sBNzsI+v3K1oK3jlwU5sm/NDJbg2tSRag54jGf61vXtJOQ==}
engines: {node: '>= 10'}
@ -2888,6 +2882,12 @@ packages:
cpu: [arm64]
os: [linux]
'@next/swc-linux-arm64-gnu@15.0.4':
resolution: {integrity: sha512-12oSaBFjGpB227VHzoXF3gJoK2SlVGmFJMaBJSu5rbpaoT5OjP5OuCLuR9/jnyBF1BAWMs/boa6mLMoJPRriMA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@next/swc-linux-arm64-musl@14.1.0':
resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==}
engines: {node: '>= 10'}
@ -2912,12 +2912,6 @@ packages:
cpu: [arm64]
os: [linux]
'@next/swc-linux-arm64-musl@14.2.7':
resolution: {integrity: sha512-+zJ1gJdl35BSAGpkCbfyiY6iRTaPrt3KTl4SF/B1NyELkqqnrNX6cp4IjjjxKpd64/7enI0kf6b9O1Uf3cL0pw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@next/swc-linux-arm64-musl@14.3.0-canary.26':
resolution: {integrity: sha512-cKSmrQLC6R6xaFWPkx/Z6ni1WrROxfDVM8hs9DdF2Zb//TZCK02iS+gKb7RccMgpZjDibMqcNZIt6FR+qMfkJw==}
engines: {node: '>= 10'}
@ -2930,6 +2924,12 @@ packages:
cpu: [arm64]
os: [linux]
'@next/swc-linux-arm64-musl@15.0.4':
resolution: {integrity: sha512-QARO88fR/a+wg+OFC3dGytJVVviiYFEyjc/Zzkjn/HevUuJ7qGUUAUYy5PGVWY1YgTzeRYz78akQrVQ8r+sMjw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@next/swc-linux-x64-gnu@14.1.0':
resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==}
engines: {node: '>= 10'}
@ -2954,12 +2954,6 @@ packages:
cpu: [x64]
os: [linux]
'@next/swc-linux-x64-gnu@14.2.7':
resolution: {integrity: sha512-m6EBqrskeMUzykBrv0fDX/28lWIBGhMzOYaStp0ihkjzIYJiKUOzVYD1gULHc8XDf5EMSqoH/0/TRAgXqpQwmw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@next/swc-linux-x64-gnu@14.3.0-canary.26':
resolution: {integrity: sha512-/NU7H6gXXceakh+JOb/Ut1B7hsfriPv0jqc7Ch3k9UAw2VlbMv7y1iKNLzAzss7RW3FTarP4f3ci9lzeGiWc9w==}
engines: {node: '>= 10'}
@ -2972,6 +2966,12 @@ packages:
cpu: [x64]
os: [linux]
'@next/swc-linux-x64-gnu@15.0.4':
resolution: {integrity: sha512-Z50b0gvYiUU1vLzfAMiChV8Y+6u/T2mdfpXPHraqpypP7yIT2UV9YBBhcwYkxujmCvGEcRTVWOj3EP7XW/wUnw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@next/swc-linux-x64-musl@14.1.0':
resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==}
engines: {node: '>= 10'}
@ -2996,12 +2996,6 @@ packages:
cpu: [x64]
os: [linux]
'@next/swc-linux-x64-musl@14.2.7':
resolution: {integrity: sha512-gUu0viOMvMlzFRz1r1eQ7Ql4OE+hPOmA7smfZAhn8vC4+0swMZaZxa9CSIozTYavi+bJNDZ3tgiSdMjmMzRJlQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@next/swc-linux-x64-musl@14.3.0-canary.26':
resolution: {integrity: sha512-5+7PjO2ZnBALTeTTodu8+x3J45MRyJN3p2C5PJBUzGrnmtzLYeZXWfrbyNGJHVLsIZ0j03dYtIThsApMGCOB/w==}
engines: {node: '>= 10'}
@ -3014,6 +3008,12 @@ packages:
cpu: [x64]
os: [linux]
'@next/swc-linux-x64-musl@15.0.4':
resolution: {integrity: sha512-7H9C4FAsrTAbA/ENzvFWsVytqRYhaJYKa2B3fyQcv96TkOGVMcvyS6s+sj4jZlacxxTcn7ygaMXUPkEk7b78zw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@next/swc-win32-arm64-msvc@14.1.0':
resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==}
engines: {node: '>= 10'}
@ -3038,12 +3038,6 @@ packages:
cpu: [arm64]
os: [win32]
'@next/swc-win32-arm64-msvc@14.2.7':
resolution: {integrity: sha512-PGbONHIVIuzWlYmLvuFKcj+8jXnLbx4WrlESYlVnEzDsa3+Q2hI1YHoXaSmbq0k4ZwZ7J6sWNV4UZfx1OeOlbQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@next/swc-win32-arm64-msvc@14.3.0-canary.26':
resolution: {integrity: sha512-asjtzwt+02IgOGyisQFDbPxaVkD7QYcea306KyiHgaRdxUuUsycmGvqdDuqYCzU1xbHclfMzFHjVGYsq/YpL+Q==}
engines: {node: '>= 10'}
@ -3056,6 +3050,12 @@ packages:
cpu: [arm64]
os: [win32]
'@next/swc-win32-arm64-msvc@15.0.4':
resolution: {integrity: sha512-Z/v3WV5xRaeWlgJzN9r4PydWD8sXV35ywc28W63i37G2jnUgScA4OOgS8hQdiXLxE3gqfSuHTicUhr7931OXPQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@next/swc-win32-ia32-msvc@14.1.0':
resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==}
engines: {node: '>= 10'}
@ -3080,12 +3080,6 @@ packages:
cpu: [ia32]
os: [win32]
'@next/swc-win32-ia32-msvc@14.2.7':
resolution: {integrity: sha512-BiSY5umlx9ed5RQDoHcdbuKTUkuFORDqzYKPHlLeS+STUWQKWziVOn3Ic41LuTBvqE0TRJPKpio9GSIblNR+0w==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
'@next/swc-win32-ia32-msvc@14.3.0-canary.26':
resolution: {integrity: sha512-evsx3P3jtUJJ0A1misY1QVk/EUQXWBi4vQEfFCbnJ5/F5wacmwcWtmBLmdt0nKEIomK3g17B1Cxg8U82W7rQug==}
engines: {node: '>= 10'}
@ -3116,12 +3110,6 @@ packages:
cpu: [x64]
os: [win32]
'@next/swc-win32-x64-msvc@14.2.7':
resolution: {integrity: sha512-pxsI23gKWRt/SPHFkDEsP+w+Nd7gK37Hpv0ngc5HpWy2e7cKx9zR/+Q2ptAUqICNTecAaGWvmhway7pj/JLEWA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
'@next/swc-win32-x64-msvc@14.3.0-canary.26':
resolution: {integrity: sha512-y3SMXv7ZE2GNClZdnDiEx1qvxeoNEYzLEySL51HF+noH9BKlJeikogZHu0fKZ2+ag7XbDuiu7wvQVflD9je7DA==}
engines: {node: '>= 10'}
@ -3134,6 +3122,12 @@ packages:
cpu: [x64]
os: [win32]
'@next/swc-win32-x64-msvc@15.0.4':
resolution: {integrity: sha512-NGLchGruagh8lQpDr98bHLyWJXOBSmkEAfK980OiNBa7vNm6PsNoPvzTfstT78WyOeMRQphEQ455rggd7Eo+Dw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
'@node-oauth/formats@1.0.0':
resolution: {integrity: sha512-DwSbLtdC8zC5B5gTJkFzJj5s9vr9SGzOgQvV9nH7tUVuMSScg0EswAczhjIapOmH3Y8AyP7C4Jv7b8+QJObWZA==}
@ -8722,24 +8716,6 @@ packages:
sass:
optional: true
next@14.2.7:
resolution: {integrity: sha512-4Qy2aK0LwH4eQiSvQWyKuC7JXE13bIopEQesWE0c/P3uuNRnZCQanI0vsrMLmUQJLAto+A+/8+sve2hd+BQuOQ==}
engines: {node: '>=18.17.0'}
hasBin: true
peerDependencies:
'@opentelemetry/api': ^1.1.0
'@playwright/test': ^1.41.2
react: ^18.2.0
react-dom: ^18.2.0
sass: ^1.3.0
peerDependenciesMeta:
'@opentelemetry/api':
optional: true
'@playwright/test':
optional: true
sass:
optional: true
next@14.3.0-canary.26:
resolution: {integrity: sha512-QixsrJnVlL6Q8vhnXt1W3K1g7k/8eJWqELtLG+CCEJPA4qfvodyynCp4Huj9/SWWRdoklBDxek+bPHSUEcS3Rw==}
engines: {node: '>=18.17.0'}
@ -8779,6 +8755,27 @@ packages:
sass:
optional: true
next@15.0.4:
resolution: {integrity: sha512-nuy8FH6M1FG0lktGotamQDCXhh5hZ19Vo0ht1AOIQWrYJLP598TIUagKtvJrfJ5AGwB/WmDqkKaKhMpVifvGPA==}
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
hasBin: true
peerDependencies:
'@opentelemetry/api': ^1.1.0
'@playwright/test': ^1.41.2
babel-plugin-react-compiler: '*'
react: ^18.2.0 || 19.0.0-rc-66855b96-20241106 || ^19.0.0
react-dom: ^18.2.0 || 19.0.0-rc-66855b96-20241106 || ^19.0.0
sass: ^1.3.0
peerDependenciesMeta:
'@opentelemetry/api':
optional: true
'@playwright/test':
optional: true
babel-plugin-react-compiler:
optional: true
sass:
optional: true
node-abi@3.65.0:
resolution: {integrity: sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==}
engines: {node: '>=10'}
@ -12533,12 +12530,12 @@ snapshots:
'@next/env@14.2.5': {}
'@next/env@14.2.7': {}
'@next/env@14.3.0-canary.26': {}
'@next/env@15.0.3': {}
'@next/env@15.0.4': {}
'@next/eslint-plugin-next@14.2.17':
dependencies:
glob: 10.3.10
@ -12570,15 +12567,15 @@ snapshots:
'@next/swc-darwin-arm64@14.2.5':
optional: true
'@next/swc-darwin-arm64@14.2.7':
optional: true
'@next/swc-darwin-arm64@14.3.0-canary.26':
optional: true
'@next/swc-darwin-arm64@15.0.3':
optional: true
'@next/swc-darwin-arm64@15.0.4':
optional: true
'@next/swc-darwin-x64@14.1.0':
optional: true
@ -12591,15 +12588,15 @@ snapshots:
'@next/swc-darwin-x64@14.2.5':
optional: true
'@next/swc-darwin-x64@14.2.7':
optional: true
'@next/swc-darwin-x64@14.3.0-canary.26':
optional: true
'@next/swc-darwin-x64@15.0.3':
optional: true
'@next/swc-darwin-x64@15.0.4':
optional: true
'@next/swc-linux-arm64-gnu@14.1.0':
optional: true
@ -12612,15 +12609,15 @@ snapshots:
'@next/swc-linux-arm64-gnu@14.2.5':
optional: true
'@next/swc-linux-arm64-gnu@14.2.7':
optional: true
'@next/swc-linux-arm64-gnu@14.3.0-canary.26':
optional: true
'@next/swc-linux-arm64-gnu@15.0.3':
optional: true
'@next/swc-linux-arm64-gnu@15.0.4':
optional: true
'@next/swc-linux-arm64-musl@14.1.0':
optional: true
@ -12633,15 +12630,15 @@ snapshots:
'@next/swc-linux-arm64-musl@14.2.5':
optional: true
'@next/swc-linux-arm64-musl@14.2.7':
optional: true
'@next/swc-linux-arm64-musl@14.3.0-canary.26':
optional: true
'@next/swc-linux-arm64-musl@15.0.3':
optional: true
'@next/swc-linux-arm64-musl@15.0.4':
optional: true
'@next/swc-linux-x64-gnu@14.1.0':
optional: true
@ -12654,15 +12651,15 @@ snapshots:
'@next/swc-linux-x64-gnu@14.2.5':
optional: true
'@next/swc-linux-x64-gnu@14.2.7':
optional: true
'@next/swc-linux-x64-gnu@14.3.0-canary.26':
optional: true
'@next/swc-linux-x64-gnu@15.0.3':
optional: true
'@next/swc-linux-x64-gnu@15.0.4':
optional: true
'@next/swc-linux-x64-musl@14.1.0':
optional: true
@ -12675,15 +12672,15 @@ snapshots:
'@next/swc-linux-x64-musl@14.2.5':
optional: true
'@next/swc-linux-x64-musl@14.2.7':
optional: true
'@next/swc-linux-x64-musl@14.3.0-canary.26':
optional: true
'@next/swc-linux-x64-musl@15.0.3':
optional: true
'@next/swc-linux-x64-musl@15.0.4':
optional: true
'@next/swc-win32-arm64-msvc@14.1.0':
optional: true
@ -12696,15 +12693,15 @@ snapshots:
'@next/swc-win32-arm64-msvc@14.2.5':
optional: true
'@next/swc-win32-arm64-msvc@14.2.7':
optional: true
'@next/swc-win32-arm64-msvc@14.3.0-canary.26':
optional: true
'@next/swc-win32-arm64-msvc@15.0.3':
optional: true
'@next/swc-win32-arm64-msvc@15.0.4':
optional: true
'@next/swc-win32-ia32-msvc@14.1.0':
optional: true
@ -12717,9 +12714,6 @@ snapshots:
'@next/swc-win32-ia32-msvc@14.2.5':
optional: true
'@next/swc-win32-ia32-msvc@14.2.7':
optional: true
'@next/swc-win32-ia32-msvc@14.3.0-canary.26':
optional: true
@ -12735,15 +12729,15 @@ snapshots:
'@next/swc-win32-x64-msvc@14.2.5':
optional: true
'@next/swc-win32-x64-msvc@14.2.7':
optional: true
'@next/swc-win32-x64-msvc@14.3.0-canary.26':
optional: true
'@next/swc-win32-x64-msvc@15.0.3':
optional: true
'@next/swc-win32-x64-msvc@15.0.4':
optional: true
'@node-oauth/formats@1.0.0': {}
'@node-oauth/oauth2-server@5.1.0':
@ -16032,7 +16026,7 @@ snapshots:
browserslist@4.23.3:
dependencies:
caniuse-lite: 1.0.30001653
caniuse-lite: 1.0.30001678
electron-to-chromium: 1.5.13
node-releases: 2.0.18
update-browserslist-db: 1.1.0(browserslist@4.23.3)
@ -19529,32 +19523,6 @@ snapshots:
- '@babel/core'
- babel-plugin-macros
next@14.2.7(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0):
dependencies:
'@next/env': 14.2.7
'@swc/helpers': 0.5.5
busboy: 1.6.0
caniuse-lite: 1.0.30001653
graceful-fs: 4.2.11
postcss: 8.4.31
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
styled-jsx: 5.1.1(@babel/core@7.26.0)(react@18.2.0)
optionalDependencies:
'@next/swc-darwin-arm64': 14.2.7
'@next/swc-darwin-x64': 14.2.7
'@next/swc-linux-arm64-gnu': 14.2.7
'@next/swc-linux-arm64-musl': 14.2.7
'@next/swc-linux-x64-gnu': 14.2.7
'@next/swc-linux-x64-musl': 14.2.7
'@next/swc-win32-arm64-msvc': 14.2.7
'@next/swc-win32-ia32-msvc': 14.2.7
'@next/swc-win32-x64-msvc': 14.2.7
'@opentelemetry/api': 1.9.0
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
next@14.3.0-canary.26(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@next/env': 14.3.0-canary.26
@ -19608,6 +19576,32 @@ snapshots:
- '@babel/core'
- babel-plugin-macros
next@15.0.4(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0):
dependencies:
'@next/env': 15.0.4
'@swc/counter': 0.1.3
'@swc/helpers': 0.5.13
busboy: 1.6.0
caniuse-lite: 1.0.30001678
postcss: 8.4.31
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
styled-jsx: 5.1.6(@babel/core@7.26.0)(react@18.2.0)
optionalDependencies:
'@next/swc-darwin-arm64': 15.0.4
'@next/swc-darwin-x64': 15.0.4
'@next/swc-linux-arm64-gnu': 15.0.4
'@next/swc-linux-arm64-musl': 15.0.4
'@next/swc-linux-x64-gnu': 15.0.4
'@next/swc-linux-x64-musl': 15.0.4
'@next/swc-win32-arm64-msvc': 15.0.4
'@next/swc-win32-x64-msvc': 15.0.4
'@opentelemetry/api': 1.9.0
sharp: 0.33.5
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
node-abi@3.65.0:
dependencies:
semver: 7.6.3
@ -21183,6 +21177,13 @@ snapshots:
optionalDependencies:
'@babel/core': 7.26.0
styled-jsx@5.1.6(@babel/core@7.26.0)(react@18.2.0):
dependencies:
client-only: 0.0.1
react: 18.2.0
optionalDependencies:
'@babel/core': 7.26.0
styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.0.0-rc-65a56d0e-20241020):
dependencies:
client-only: 0.0.1