From 9e782088adad456aa804e8facd592dcbc9eb5553 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Sun, 28 Sep 2025 17:49:12 +0530 Subject: [PATCH 01/33] feat(cli): add internal packages for servers --- apps/cli/src/helpers/core/template-manager.ts | 148 +++++++++++------- .../templates/api/orpc/server/base/_gitignore | 34 ++++ .../api/orpc/server/base/package.json.hbs | 22 +++ .../server/base}/src/routers/index.ts.hbs | 0 .../api/orpc/server/base/tsconfig.json.hbs | 10 ++ .../api/orpc/server/base/tsdown.config.ts.hbs | 7 + .../{base/src/lib => rest/src}/context.ts.hbs | 0 .../lib/orpc.ts.hbs => rest/src/index.ts.hbs} | 0 .../templates/api/trpc/server/base/_gitignore | 34 ++++ .../api/trpc/server/base/package.json.hbs | 22 +++ .../trpc/server/base/src/routers/index.ts.hbs | 55 +++++++ .../api/trpc/server/base/tsconfig.json.hbs | 10 ++ .../api/trpc/server/base/tsdown.config.ts.hbs | 7 + .../{base/src/lib => rest/src}/context.ts.hbs | 0 .../lib/trpc.ts.hbs => rest/src/index.ts.hbs} | 0 .../auth/better-auth/server/base/_gitignore | 34 ++++ .../better-auth/server/base/package.json.hbs | 22 +++ .../src/{lib/auth.ts.hbs => index.ts.hbs} | 0 .../better-auth/server/base/tsconfig.json.hbs | 10 ++ .../server/base/tsdown.config.ts.hbs | 7 + .../drizzle/mysql/src/{db => }/schema/auth.ts | 0 .../postgres/src/{db => }/schema/auth.ts | 0 .../sqlite/src/{db => }/schema/auth.ts | 0 .../mongodb/src/{db => }/models/auth.model.ts | 0 .../server/{server-base => base}/_gitignore | 0 .../{server-base => base}/package.json.hbs | 0 .../{server-base => base}/tsconfig.json.hbs | 0 apps/cli/templates/db/base/_gitignore | 34 ++++ apps/cli/templates/db/base/package.json.hbs | 20 +++ apps/cli/templates/db/base/tsconfig.json.hbs | 10 ++ .../templates/db/base/tsdown.config.ts.hbs | 7 + .../drizzle/mysql/src/{db => }/index.ts.hbs | 0 .../postgres/src/{db => }/index.ts.hbs | 0 .../drizzle/sqlite/src/{db => }/index.ts.hbs | 0 .../mongodb/src/{db => }/index.ts.hbs | 0 .../prisma/mongodb/src/{db => }/index.ts.hbs | 0 .../db/prisma/mysql/src/{db => }/index.ts.hbs | 0 .../prisma/postgres/src/{db => }/index.ts.hbs | 0 .../prisma/sqlite/src/{db => }/index.ts.hbs | 0 39 files changed, 437 insertions(+), 56 deletions(-) create mode 100644 apps/cli/templates/api/orpc/server/base/_gitignore create mode 100644 apps/cli/templates/api/orpc/server/base/package.json.hbs rename apps/cli/templates/{backend/server/server-base => api/orpc/server/base}/src/routers/index.ts.hbs (100%) create mode 100644 apps/cli/templates/api/orpc/server/base/tsconfig.json.hbs create mode 100644 apps/cli/templates/api/orpc/server/base/tsdown.config.ts.hbs rename apps/cli/templates/api/orpc/server/{base/src/lib => rest/src}/context.ts.hbs (100%) rename apps/cli/templates/api/orpc/server/{base/src/lib/orpc.ts.hbs => rest/src/index.ts.hbs} (100%) create mode 100644 apps/cli/templates/api/trpc/server/base/_gitignore create mode 100644 apps/cli/templates/api/trpc/server/base/package.json.hbs create mode 100644 apps/cli/templates/api/trpc/server/base/src/routers/index.ts.hbs create mode 100644 apps/cli/templates/api/trpc/server/base/tsconfig.json.hbs create mode 100644 apps/cli/templates/api/trpc/server/base/tsdown.config.ts.hbs rename apps/cli/templates/api/trpc/server/{base/src/lib => rest/src}/context.ts.hbs (100%) rename apps/cli/templates/api/trpc/server/{base/src/lib/trpc.ts.hbs => rest/src/index.ts.hbs} (100%) create mode 100644 apps/cli/templates/auth/better-auth/server/base/_gitignore create mode 100644 apps/cli/templates/auth/better-auth/server/base/package.json.hbs rename apps/cli/templates/auth/better-auth/server/base/src/{lib/auth.ts.hbs => index.ts.hbs} (100%) create mode 100644 apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs create mode 100644 apps/cli/templates/auth/better-auth/server/base/tsdown.config.ts.hbs rename apps/cli/templates/auth/better-auth/server/db/drizzle/mysql/src/{db => }/schema/auth.ts (100%) rename apps/cli/templates/auth/better-auth/server/db/drizzle/postgres/src/{db => }/schema/auth.ts (100%) rename apps/cli/templates/auth/better-auth/server/db/drizzle/sqlite/src/{db => }/schema/auth.ts (100%) rename apps/cli/templates/auth/better-auth/server/db/mongoose/mongodb/src/{db => }/models/auth.model.ts (100%) rename apps/cli/templates/backend/server/{server-base => base}/_gitignore (100%) rename apps/cli/templates/backend/server/{server-base => base}/package.json.hbs (100%) rename apps/cli/templates/backend/server/{server-base => base}/tsconfig.json.hbs (100%) create mode 100644 apps/cli/templates/db/base/_gitignore create mode 100644 apps/cli/templates/db/base/package.json.hbs create mode 100644 apps/cli/templates/db/base/tsconfig.json.hbs create mode 100644 apps/cli/templates/db/base/tsdown.config.ts.hbs rename apps/cli/templates/db/drizzle/mysql/src/{db => }/index.ts.hbs (100%) rename apps/cli/templates/db/drizzle/postgres/src/{db => }/index.ts.hbs (100%) rename apps/cli/templates/db/drizzle/sqlite/src/{db => }/index.ts.hbs (100%) rename apps/cli/templates/db/mongoose/mongodb/src/{db => }/index.ts.hbs (100%) rename apps/cli/templates/db/prisma/mongodb/src/{db => }/index.ts.hbs (100%) rename apps/cli/templates/db/prisma/mysql/src/{db => }/index.ts.hbs (100%) rename apps/cli/templates/db/prisma/postgres/src/{db => }/index.ts.hbs (100%) rename apps/cli/templates/db/prisma/sqlite/src/{db => }/index.ts.hbs (100%) diff --git a/apps/cli/src/helpers/core/template-manager.ts b/apps/cli/src/helpers/core/template-manager.ts index f8c3e2c33..2b964c07e 100644 --- a/apps/cli/src/helpers/core/template-manager.ts +++ b/apps/cli/src/helpers/core/template-manager.ts @@ -272,15 +272,13 @@ export async function setupBackendFramework( await fs.ensureDir(serverAppDir); - const serverBaseDir = path.join( - PKG_ROOT, - "templates/backend/server/server-base", - ); + // Copy base server template + const serverBaseDir = path.join(PKG_ROOT, "templates/backend/server/base"); if (await fs.pathExists(serverBaseDir)) { await processAndCopyFiles("**/*", serverBaseDir, serverAppDir, context); - } else { } + // Copy framework-specific server template const frameworkSrcDir = path.join( PKG_ROOT, `templates/backend/server/${context.backend}`, @@ -293,10 +291,14 @@ export async function setupBackendFramework( context, true, ); - } else { } + // Setup API package if API is not none if (context.api !== "none") { + const apiPackageDir = path.join(projectDir, "packages/api"); + await fs.ensureDir(apiPackageDir); + + // Copy API base template to packages/api const apiServerBaseDir = path.join( PKG_ROOT, `templates/api/${context.api}/server/base`, @@ -305,55 +307,68 @@ export async function setupBackendFramework( await processAndCopyFiles( "**/*", apiServerBaseDir, - serverAppDir, + apiPackageDir, context, - true, + ); + } + + // Copy API framework-specific template to packages/api + let apiServerFrameworkDir = ""; + if (context.backend === "next") { + apiServerFrameworkDir = path.join( + PKG_ROOT, + `templates/api/${context.api}/server/${context.backend}`, ); } else { + // For non-Next.js backends, use the rest template + apiServerFrameworkDir = path.join( + PKG_ROOT, + `templates/api/${context.api}/server/rest`, + ); } - const apiServerFrameworkDir = path.join( - PKG_ROOT, - `templates/api/${context.api}/server/${context.backend}`, - ); if (await fs.pathExists(apiServerFrameworkDir)) { await processAndCopyFiles( "**/*", apiServerFrameworkDir, - serverAppDir, + apiPackageDir, context, true, ); - } else { } } -} - -export async function setupDbOrmTemplates( - projectDir: string, - context: ProjectConfig, -) { - if ( - context.backend === "convex" || - context.orm === "none" || - context.database === "none" - ) - return; - const serverAppDir = path.join(projectDir, "apps/server"); - await fs.ensureDir(serverAppDir); + // Setup DB package if database and ORM are not none + if (context.database !== "none" && context.orm !== "none") { + const dbPackageDir = path.join(projectDir, "packages/db"); + await fs.ensureDir(dbPackageDir); - const dbOrmSrcDir = path.join( - PKG_ROOT, - `templates/db/${context.orm}/${context.database}`, - ); + // Copy DB base template to packages/db + const dbBaseDir = path.join(PKG_ROOT, "templates/db/base"); + if (await fs.pathExists(dbBaseDir)) { + await processAndCopyFiles("**/*", dbBaseDir, dbPackageDir, context); + } - if (await fs.pathExists(dbOrmSrcDir)) { - await processAndCopyFiles("**/*", dbOrmSrcDir, serverAppDir, context); - } else { + // Copy ORM and database-specific templates to packages/db + const dbOrmSrcDir = path.join( + PKG_ROOT, + `templates/db/${context.orm}/${context.database}`, + ); + if (await fs.pathExists(dbOrmSrcDir)) { + await processAndCopyFiles("**/*", dbOrmSrcDir, dbPackageDir, context); + } } } +export async function setupDbOrmTemplates( + _projectDir: string, + _context: ProjectConfig, +) { + // DB and ORM templates are now handled in setupBackendFramework + // This function is kept for backward compatibility but is no longer used + return; +} + export async function setupAuthTemplate( projectDir: string, context: ProjectConfig, @@ -509,6 +524,10 @@ export async function setupAuthTemplate( } if (serverAppDirExists && context.backend !== "convex") { + // Setup auth package + const authPackageDir = path.join(projectDir, "packages/auth"); + await fs.ensureDir(authPackageDir); + const authServerBaseSrc = path.join( PKG_ROOT, `templates/auth/${authProvider}/server/base`, @@ -517,7 +536,7 @@ export async function setupAuthTemplate( await processAndCopyFiles( "**/*", authServerBaseSrc, - serverAppDir, + authPackageDir, context, ); } @@ -531,13 +550,17 @@ export async function setupAuthTemplate( await processAndCopyFiles( "**/*", authServerNextSrc, - serverAppDir, + authPackageDir, context, ); } } + // Auth database schemas should go to packages/db, not packages/auth if (context.orm !== "none" && context.database !== "none") { + const dbPackageDir = path.join(projectDir, "packages/db"); + await fs.ensureDir(dbPackageDir); + const orm = context.orm; const db = context.database; let authDbSrc = ""; @@ -558,7 +581,7 @@ export async function setupAuthTemplate( ); } if (authDbSrc && (await fs.pathExists(authDbSrc))) { - await processAndCopyFiles("**/*", authDbSrc, serverAppDir, context); + await processAndCopyFiles("**/*", authDbSrc, dbPackageDir, context); } } } @@ -673,6 +696,9 @@ export async function setupPaymentsTemplate( const webAppDirExists = await fs.pathExists(webAppDir); if (serverAppDirExists && context.backend !== "convex") { + const authPackageDir = path.join(projectDir, "packages/auth"); + await fs.ensureDir(authPackageDir); + const paymentsServerSrc = path.join( PKG_ROOT, `templates/payments/${context.payments}/server/base`, @@ -681,7 +707,7 @@ export async function setupPaymentsTemplate( await processAndCopyFiles( "**/*", paymentsServerSrc, - serverAppDir, + authPackageDir, context, ); } @@ -833,20 +859,11 @@ export async function setupExamplesTemplate( ) { const exampleServerSrc = path.join(exampleBaseDir, "server"); - if (example === "ai" && context.backend === "next") { - const aiNextServerSrc = path.join(exampleServerSrc, "next"); - if (await fs.pathExists(aiNextServerSrc)) { - await processAndCopyFiles( - "**/*", - aiNextServerSrc, - serverAppDir, - context, - false, - ); - } - } + // Copy API examples to packages/api (routes) + if (context.api !== "none") { + const apiPackageDir = path.join(projectDir, "packages/api"); + await fs.ensureDir(apiPackageDir); - if (context.orm !== "none" && context.database !== "none") { const exampleOrmBaseSrc = path.join( exampleServerSrc, context.orm, @@ -856,11 +873,17 @@ export async function setupExamplesTemplate( await processAndCopyFiles( "**/*", exampleOrmBaseSrc, - serverAppDir, + apiPackageDir, context, false, ); } + } + + // Copy database examples to packages/db (schemas) + if (context.orm !== "none" && context.database !== "none") { + const dbPackageDir = path.join(projectDir, "packages/db"); + await fs.ensureDir(dbPackageDir); const exampleDbSchemaSrc = path.join( exampleServerSrc, @@ -871,6 +894,20 @@ export async function setupExamplesTemplate( await processAndCopyFiles( "**/*", exampleDbSchemaSrc, + dbPackageDir, + context, + false, + ); + } + } + + // Copy AI-specific server examples to apps/server (for Next.js AI routes) + if (example === "ai" && context.backend === "next") { + const aiNextServerSrc = path.join(exampleServerSrc, "next"); + if (await fs.pathExists(aiNextServerSrc)) { + await processAndCopyFiles( + "**/*", + aiNextServerSrc, serverAppDir, context, false, @@ -1035,15 +1072,14 @@ export async function setupDockerComposeTemplates( return; } - const serverAppDir = path.join(projectDir, "apps/server"); + const dbPackageDir = path.join(projectDir, "packages/db"); const dockerSrcDir = path.join( PKG_ROOT, `templates/db-setup/docker-compose/${context.database}`, ); if (await fs.pathExists(dockerSrcDir)) { - await processAndCopyFiles("**/*", dockerSrcDir, serverAppDir, context); - } else { + await processAndCopyFiles("**/*", dockerSrcDir, dbPackageDir, context); } } diff --git a/apps/cli/templates/api/orpc/server/base/_gitignore b/apps/cli/templates/api/orpc/server/base/_gitignore new file mode 100644 index 000000000..a14702c40 --- /dev/null +++ b/apps/cli/templates/api/orpc/server/base/_gitignore @@ -0,0 +1,34 @@ +# dependencies (bun install) +node_modules + +# output +out +dist +*.tgz + +# code coverage +coverage +*.lcov + +# logs +logs +_.log +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# caches +.eslintcache +.cache +*.tsbuildinfo + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/apps/cli/templates/api/orpc/server/base/package.json.hbs b/apps/cli/templates/api/orpc/server/base/package.json.hbs new file mode 100644 index 000000000..e89788363 --- /dev/null +++ b/apps/cli/templates/api/orpc/server/base/package.json.hbs @@ -0,0 +1,22 @@ +{ + "name": "@{{projectName}}/api", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*.js" + }, + "type": "module", + "scripts": { + "build": "tsdown" + }, + "devDependencies": { + "@types/bun": "latest", + "tsdown": "^0.15.5" + }, + "peerDependencies": { + "typescript": "^5" + }, + "dependencies": { + "@{{projectName}}/auth": "workspace:*", + "@{{projectName}}/db": "workspace:*" + } +} \ No newline at end of file diff --git a/apps/cli/templates/backend/server/server-base/src/routers/index.ts.hbs b/apps/cli/templates/api/orpc/server/base/src/routers/index.ts.hbs similarity index 100% rename from apps/cli/templates/backend/server/server-base/src/routers/index.ts.hbs rename to apps/cli/templates/api/orpc/server/base/src/routers/index.ts.hbs diff --git a/apps/cli/templates/api/orpc/server/base/tsconfig.json.hbs b/apps/cli/templates/api/orpc/server/base/tsconfig.json.hbs new file mode 100644 index 000000000..2e7085d0c --- /dev/null +++ b/apps/cli/templates/api/orpc/server/base/tsconfig.json.hbs @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "types": [ + "bun" + ], + } +} \ No newline at end of file diff --git a/apps/cli/templates/api/orpc/server/base/tsdown.config.ts.hbs b/apps/cli/templates/api/orpc/server/base/tsdown.config.ts.hbs new file mode 100644 index 000000000..a0439f944 --- /dev/null +++ b/apps/cli/templates/api/orpc/server/base/tsdown.config.ts.hbs @@ -0,0 +1,7 @@ +import { defineConfig } from "tsdown"; + +export default defineConfig({ + entry: 'src/**/*.ts', + sourcemap: true, + dts: true, +}); diff --git a/apps/cli/templates/api/orpc/server/base/src/lib/context.ts.hbs b/apps/cli/templates/api/orpc/server/rest/src/context.ts.hbs similarity index 100% rename from apps/cli/templates/api/orpc/server/base/src/lib/context.ts.hbs rename to apps/cli/templates/api/orpc/server/rest/src/context.ts.hbs diff --git a/apps/cli/templates/api/orpc/server/base/src/lib/orpc.ts.hbs b/apps/cli/templates/api/orpc/server/rest/src/index.ts.hbs similarity index 100% rename from apps/cli/templates/api/orpc/server/base/src/lib/orpc.ts.hbs rename to apps/cli/templates/api/orpc/server/rest/src/index.ts.hbs diff --git a/apps/cli/templates/api/trpc/server/base/_gitignore b/apps/cli/templates/api/trpc/server/base/_gitignore new file mode 100644 index 000000000..a14702c40 --- /dev/null +++ b/apps/cli/templates/api/trpc/server/base/_gitignore @@ -0,0 +1,34 @@ +# dependencies (bun install) +node_modules + +# output +out +dist +*.tgz + +# code coverage +coverage +*.lcov + +# logs +logs +_.log +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# caches +.eslintcache +.cache +*.tsbuildinfo + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/apps/cli/templates/api/trpc/server/base/package.json.hbs b/apps/cli/templates/api/trpc/server/base/package.json.hbs new file mode 100644 index 000000000..e89788363 --- /dev/null +++ b/apps/cli/templates/api/trpc/server/base/package.json.hbs @@ -0,0 +1,22 @@ +{ + "name": "@{{projectName}}/api", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*.js" + }, + "type": "module", + "scripts": { + "build": "tsdown" + }, + "devDependencies": { + "@types/bun": "latest", + "tsdown": "^0.15.5" + }, + "peerDependencies": { + "typescript": "^5" + }, + "dependencies": { + "@{{projectName}}/auth": "workspace:*", + "@{{projectName}}/db": "workspace:*" + } +} \ No newline at end of file diff --git a/apps/cli/templates/api/trpc/server/base/src/routers/index.ts.hbs b/apps/cli/templates/api/trpc/server/base/src/routers/index.ts.hbs new file mode 100644 index 000000000..2804e1120 --- /dev/null +++ b/apps/cli/templates/api/trpc/server/base/src/routers/index.ts.hbs @@ -0,0 +1,55 @@ +{{#if (eq api "orpc")}} +import { {{#if (eq auth "better-auth")}}protectedProcedure, {{/if}}publicProcedure } from "../lib/orpc"; +import type { RouterClient } from "@orpc/server"; +{{#if (includes examples "todo")}} +import { todoRouter } from "./todo"; +{{/if}} + +export const appRouter = { + healthCheck: publicProcedure.handler(() => { + return "OK"; + }), + {{#if (eq auth "better-auth")}} + privateData: protectedProcedure.handler(({ context }) => { + return { + message: "This is private", + user: context.session?.user, + }; + }), + {{/if}} + {{#if (includes examples "todo")}} + todo: todoRouter, + {{/if}} +}; +export type AppRouter = typeof appRouter; +export type AppRouterClient = RouterClient; +{{else if (eq api "trpc")}} +import { + {{#if (eq auth "better-auth")}}protectedProcedure, {{/if}}publicProcedure, + router, +} from "../lib/trpc"; +{{#if (includes examples "todo")}} +import { todoRouter } from "./todo"; +{{/if}} + +export const appRouter = router({ + healthCheck: publicProcedure.query(() => { + return "OK"; + }), + {{#if (eq auth "better-auth")}} + privateData: protectedProcedure.query(({ ctx }) => { + return { + message: "This is private", + user: ctx.session.user, + }; + }), + {{/if}} + {{#if (includes examples "todo")}} + todo: todoRouter, + {{/if}} +}); +export type AppRouter = typeof appRouter; +{{else}} +export const appRouter = {}; +export type AppRouter = typeof appRouter; +{{/if}} diff --git a/apps/cli/templates/api/trpc/server/base/tsconfig.json.hbs b/apps/cli/templates/api/trpc/server/base/tsconfig.json.hbs new file mode 100644 index 000000000..2e7085d0c --- /dev/null +++ b/apps/cli/templates/api/trpc/server/base/tsconfig.json.hbs @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "types": [ + "bun" + ], + } +} \ No newline at end of file diff --git a/apps/cli/templates/api/trpc/server/base/tsdown.config.ts.hbs b/apps/cli/templates/api/trpc/server/base/tsdown.config.ts.hbs new file mode 100644 index 000000000..a0439f944 --- /dev/null +++ b/apps/cli/templates/api/trpc/server/base/tsdown.config.ts.hbs @@ -0,0 +1,7 @@ +import { defineConfig } from "tsdown"; + +export default defineConfig({ + entry: 'src/**/*.ts', + sourcemap: true, + dts: true, +}); diff --git a/apps/cli/templates/api/trpc/server/base/src/lib/context.ts.hbs b/apps/cli/templates/api/trpc/server/rest/src/context.ts.hbs similarity index 100% rename from apps/cli/templates/api/trpc/server/base/src/lib/context.ts.hbs rename to apps/cli/templates/api/trpc/server/rest/src/context.ts.hbs diff --git a/apps/cli/templates/api/trpc/server/base/src/lib/trpc.ts.hbs b/apps/cli/templates/api/trpc/server/rest/src/index.ts.hbs similarity index 100% rename from apps/cli/templates/api/trpc/server/base/src/lib/trpc.ts.hbs rename to apps/cli/templates/api/trpc/server/rest/src/index.ts.hbs diff --git a/apps/cli/templates/auth/better-auth/server/base/_gitignore b/apps/cli/templates/auth/better-auth/server/base/_gitignore new file mode 100644 index 000000000..a14702c40 --- /dev/null +++ b/apps/cli/templates/auth/better-auth/server/base/_gitignore @@ -0,0 +1,34 @@ +# dependencies (bun install) +node_modules + +# output +out +dist +*.tgz + +# code coverage +coverage +*.lcov + +# logs +logs +_.log +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# caches +.eslintcache +.cache +*.tsbuildinfo + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/apps/cli/templates/auth/better-auth/server/base/package.json.hbs b/apps/cli/templates/auth/better-auth/server/base/package.json.hbs new file mode 100644 index 000000000..498ecf684 --- /dev/null +++ b/apps/cli/templates/auth/better-auth/server/base/package.json.hbs @@ -0,0 +1,22 @@ +{ + "name": "@{{projectName}}/auth", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*.js" + }, + "type": "module", + "scripts": { + "build": "tsdown" + }, + "devDependencies": { + "@types/bun": "latest", + "@types/node": "^24.5.2", + "tsdown": "^0.15.5" + }, + "peerDependencies": { + "typescript": "^5" + }, + "dependencies": { + "@{{projectName}}/db": "workspace:*" + } +} \ No newline at end of file diff --git a/apps/cli/templates/auth/better-auth/server/base/src/lib/auth.ts.hbs b/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs similarity index 100% rename from apps/cli/templates/auth/better-auth/server/base/src/lib/auth.ts.hbs rename to apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs diff --git a/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs b/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs new file mode 100644 index 000000000..2e7085d0c --- /dev/null +++ b/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "types": [ + "bun" + ], + } +} \ No newline at end of file diff --git a/apps/cli/templates/auth/better-auth/server/base/tsdown.config.ts.hbs b/apps/cli/templates/auth/better-auth/server/base/tsdown.config.ts.hbs new file mode 100644 index 000000000..a0439f944 --- /dev/null +++ b/apps/cli/templates/auth/better-auth/server/base/tsdown.config.ts.hbs @@ -0,0 +1,7 @@ +import { defineConfig } from "tsdown"; + +export default defineConfig({ + entry: 'src/**/*.ts', + sourcemap: true, + dts: true, +}); diff --git a/apps/cli/templates/auth/better-auth/server/db/drizzle/mysql/src/db/schema/auth.ts b/apps/cli/templates/auth/better-auth/server/db/drizzle/mysql/src/schema/auth.ts similarity index 100% rename from apps/cli/templates/auth/better-auth/server/db/drizzle/mysql/src/db/schema/auth.ts rename to apps/cli/templates/auth/better-auth/server/db/drizzle/mysql/src/schema/auth.ts diff --git a/apps/cli/templates/auth/better-auth/server/db/drizzle/postgres/src/db/schema/auth.ts b/apps/cli/templates/auth/better-auth/server/db/drizzle/postgres/src/schema/auth.ts similarity index 100% rename from apps/cli/templates/auth/better-auth/server/db/drizzle/postgres/src/db/schema/auth.ts rename to apps/cli/templates/auth/better-auth/server/db/drizzle/postgres/src/schema/auth.ts diff --git a/apps/cli/templates/auth/better-auth/server/db/drizzle/sqlite/src/db/schema/auth.ts b/apps/cli/templates/auth/better-auth/server/db/drizzle/sqlite/src/schema/auth.ts similarity index 100% rename from apps/cli/templates/auth/better-auth/server/db/drizzle/sqlite/src/db/schema/auth.ts rename to apps/cli/templates/auth/better-auth/server/db/drizzle/sqlite/src/schema/auth.ts diff --git a/apps/cli/templates/auth/better-auth/server/db/mongoose/mongodb/src/db/models/auth.model.ts b/apps/cli/templates/auth/better-auth/server/db/mongoose/mongodb/src/models/auth.model.ts similarity index 100% rename from apps/cli/templates/auth/better-auth/server/db/mongoose/mongodb/src/db/models/auth.model.ts rename to apps/cli/templates/auth/better-auth/server/db/mongoose/mongodb/src/models/auth.model.ts diff --git a/apps/cli/templates/backend/server/server-base/_gitignore b/apps/cli/templates/backend/server/base/_gitignore similarity index 100% rename from apps/cli/templates/backend/server/server-base/_gitignore rename to apps/cli/templates/backend/server/base/_gitignore diff --git a/apps/cli/templates/backend/server/server-base/package.json.hbs b/apps/cli/templates/backend/server/base/package.json.hbs similarity index 100% rename from apps/cli/templates/backend/server/server-base/package.json.hbs rename to apps/cli/templates/backend/server/base/package.json.hbs diff --git a/apps/cli/templates/backend/server/server-base/tsconfig.json.hbs b/apps/cli/templates/backend/server/base/tsconfig.json.hbs similarity index 100% rename from apps/cli/templates/backend/server/server-base/tsconfig.json.hbs rename to apps/cli/templates/backend/server/base/tsconfig.json.hbs diff --git a/apps/cli/templates/db/base/_gitignore b/apps/cli/templates/db/base/_gitignore new file mode 100644 index 000000000..a14702c40 --- /dev/null +++ b/apps/cli/templates/db/base/_gitignore @@ -0,0 +1,34 @@ +# dependencies (bun install) +node_modules + +# output +out +dist +*.tgz + +# code coverage +coverage +*.lcov + +# logs +logs +_.log +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# caches +.eslintcache +.cache +*.tsbuildinfo + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/apps/cli/templates/db/base/package.json.hbs b/apps/cli/templates/db/base/package.json.hbs new file mode 100644 index 000000000..22721fb85 --- /dev/null +++ b/apps/cli/templates/db/base/package.json.hbs @@ -0,0 +1,20 @@ +{ + "name": "@{{projectName}}/db", + "type": "module", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*.js" + }, + "scripts": { + "build": "tsdown" + }, + "devDependencies": { + "@types/node": "^24.5.2", + "tsdown": "^0.15.5" + }, + "peerDependencies": { + "typescript": "^5" + }, + "dependencies": { + } +} \ No newline at end of file diff --git a/apps/cli/templates/db/base/tsconfig.json.hbs b/apps/cli/templates/db/base/tsconfig.json.hbs new file mode 100644 index 000000000..2e7085d0c --- /dev/null +++ b/apps/cli/templates/db/base/tsconfig.json.hbs @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "types": [ + "bun" + ], + } +} \ No newline at end of file diff --git a/apps/cli/templates/db/base/tsdown.config.ts.hbs b/apps/cli/templates/db/base/tsdown.config.ts.hbs new file mode 100644 index 000000000..a0439f944 --- /dev/null +++ b/apps/cli/templates/db/base/tsdown.config.ts.hbs @@ -0,0 +1,7 @@ +import { defineConfig } from "tsdown"; + +export default defineConfig({ + entry: 'src/**/*.ts', + sourcemap: true, + dts: true, +}); diff --git a/apps/cli/templates/db/drizzle/mysql/src/db/index.ts.hbs b/apps/cli/templates/db/drizzle/mysql/src/index.ts.hbs similarity index 100% rename from apps/cli/templates/db/drizzle/mysql/src/db/index.ts.hbs rename to apps/cli/templates/db/drizzle/mysql/src/index.ts.hbs diff --git a/apps/cli/templates/db/drizzle/postgres/src/db/index.ts.hbs b/apps/cli/templates/db/drizzle/postgres/src/index.ts.hbs similarity index 100% rename from apps/cli/templates/db/drizzle/postgres/src/db/index.ts.hbs rename to apps/cli/templates/db/drizzle/postgres/src/index.ts.hbs diff --git a/apps/cli/templates/db/drizzle/sqlite/src/db/index.ts.hbs b/apps/cli/templates/db/drizzle/sqlite/src/index.ts.hbs similarity index 100% rename from apps/cli/templates/db/drizzle/sqlite/src/db/index.ts.hbs rename to apps/cli/templates/db/drizzle/sqlite/src/index.ts.hbs diff --git a/apps/cli/templates/db/mongoose/mongodb/src/db/index.ts.hbs b/apps/cli/templates/db/mongoose/mongodb/src/index.ts.hbs similarity index 100% rename from apps/cli/templates/db/mongoose/mongodb/src/db/index.ts.hbs rename to apps/cli/templates/db/mongoose/mongodb/src/index.ts.hbs diff --git a/apps/cli/templates/db/prisma/mongodb/src/db/index.ts.hbs b/apps/cli/templates/db/prisma/mongodb/src/index.ts.hbs similarity index 100% rename from apps/cli/templates/db/prisma/mongodb/src/db/index.ts.hbs rename to apps/cli/templates/db/prisma/mongodb/src/index.ts.hbs diff --git a/apps/cli/templates/db/prisma/mysql/src/db/index.ts.hbs b/apps/cli/templates/db/prisma/mysql/src/index.ts.hbs similarity index 100% rename from apps/cli/templates/db/prisma/mysql/src/db/index.ts.hbs rename to apps/cli/templates/db/prisma/mysql/src/index.ts.hbs diff --git a/apps/cli/templates/db/prisma/postgres/src/db/index.ts.hbs b/apps/cli/templates/db/prisma/postgres/src/index.ts.hbs similarity index 100% rename from apps/cli/templates/db/prisma/postgres/src/db/index.ts.hbs rename to apps/cli/templates/db/prisma/postgres/src/index.ts.hbs diff --git a/apps/cli/templates/db/prisma/sqlite/src/db/index.ts.hbs b/apps/cli/templates/db/prisma/sqlite/src/index.ts.hbs similarity index 100% rename from apps/cli/templates/db/prisma/sqlite/src/db/index.ts.hbs rename to apps/cli/templates/db/prisma/sqlite/src/index.ts.hbs From 071aa167a88dacf16dc68d7dd2b822115a73a2f3 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Mon, 29 Sep 2025 00:46:26 +0530 Subject: [PATCH 02/33] update --- .../api/orpc/server/base/src/routers/index.ts.hbs | 4 ++-- .../templates/api/orpc/server/rest/src/context.ts.hbs | 10 +++++----- .../templates/api/trpc/server/rest/src/context.ts.hbs | 10 +++++----- .../auth/better-auth/server/base/src/index.ts.hbs | 6 +++--- .../todo/server/drizzle/base/src/routers/todo.ts.hbs | 8 ++++---- .../todo/server/mongoose/base/src/routers/todo.ts.hbs | 8 ++++---- .../src/db/models/{todo.model.ts => todo.model.ts.hbs} | 0 .../todo/server/prisma/base/src/routers/todo.ts.hbs | 2 +- .../prisma/schema/{todo.prisma => todo.prisma.hbs} | 0 .../prisma/schema/{todo.prisma => todo.prisma.hbs} | 0 .../prisma/schema/{todo.prisma => todo.prisma.hbs} | 0 .../prisma/schema/{todo.prisma => todo.prisma.hbs} | 0 12 files changed, 24 insertions(+), 24 deletions(-) rename apps/cli/templates/examples/todo/server/mongoose/mongodb/src/db/models/{todo.model.ts => todo.model.ts.hbs} (100%) rename apps/cli/templates/examples/todo/server/prisma/mongodb/prisma/schema/{todo.prisma => todo.prisma.hbs} (100%) rename apps/cli/templates/examples/todo/server/prisma/mysql/prisma/schema/{todo.prisma => todo.prisma.hbs} (100%) rename apps/cli/templates/examples/todo/server/prisma/postgres/prisma/schema/{todo.prisma => todo.prisma.hbs} (100%) rename apps/cli/templates/examples/todo/server/prisma/sqlite/prisma/schema/{todo.prisma => todo.prisma.hbs} (100%) diff --git a/apps/cli/templates/api/orpc/server/base/src/routers/index.ts.hbs b/apps/cli/templates/api/orpc/server/base/src/routers/index.ts.hbs index 2804e1120..e394eb7c7 100644 --- a/apps/cli/templates/api/orpc/server/base/src/routers/index.ts.hbs +++ b/apps/cli/templates/api/orpc/server/base/src/routers/index.ts.hbs @@ -1,5 +1,5 @@ {{#if (eq api "orpc")}} -import { {{#if (eq auth "better-auth")}}protectedProcedure, {{/if}}publicProcedure } from "../lib/orpc"; +import { {{#if (eq auth "better-auth")}}protectedProcedure, {{/if}}publicProcedure } from "../index"; import type { RouterClient } from "@orpc/server"; {{#if (includes examples "todo")}} import { todoRouter } from "./todo"; @@ -27,7 +27,7 @@ export type AppRouterClient = RouterClient; import { {{#if (eq auth "better-auth")}}protectedProcedure, {{/if}}publicProcedure, router, -} from "../lib/trpc"; +} from "../index"; {{#if (includes examples "todo")}} import { todoRouter } from "./todo"; {{/if}} diff --git a/apps/cli/templates/api/orpc/server/rest/src/context.ts.hbs b/apps/cli/templates/api/orpc/server/rest/src/context.ts.hbs index 8dcd19a43..645052a9f 100644 --- a/apps/cli/templates/api/orpc/server/rest/src/context.ts.hbs +++ b/apps/cli/templates/api/orpc/server/rest/src/context.ts.hbs @@ -1,7 +1,7 @@ {{#if (eq backend 'next')}} import type { NextRequest } from "next/server"; {{#if (eq auth "better-auth")}} -import { auth } from "./auth"; +import { auth } from "@{{projectName}}/auth"; {{/if}} export async function createContext(req: NextRequest) { @@ -20,7 +20,7 @@ export async function createContext(req: NextRequest) { {{else if (eq backend 'hono')}} import type { Context as HonoContext } from "hono"; {{#if (eq auth "better-auth")}} -import { auth } from "./auth"; +import { auth } from "@{{projectName}}/auth"; {{/if}} export type CreateContextOptions = { @@ -46,7 +46,7 @@ export async function createContext({ context }: CreateContextOptions) { {{else if (eq backend 'elysia')}} import type { Context as ElysiaContext } from "elysia"; {{#if (eq auth "better-auth")}} -import { auth } from "./auth"; +import { auth } from "@{{projectName}}/auth"; {{/if}} export type CreateContextOptions = { @@ -72,7 +72,7 @@ export async function createContext({ context }: CreateContextOptions) { {{else if (eq backend 'express')}} {{#if (eq auth "better-auth")}} import { fromNodeHeaders } from "better-auth/node"; -import { auth } from "./auth"; +import { auth } from "@{{projectName}}/auth"; {{/if}} export async function createContext(opts: any) { @@ -95,7 +95,7 @@ export async function createContext(opts: any) { import type { IncomingHttpHeaders } from "node:http"; {{#if (eq auth "better-auth")}} import { fromNodeHeaders } from "better-auth/node"; -import { auth } from "./auth"; +import { auth } from "@{{projectName}}/auth"; {{/if}} export async function createContext(req: IncomingHttpHeaders) { diff --git a/apps/cli/templates/api/trpc/server/rest/src/context.ts.hbs b/apps/cli/templates/api/trpc/server/rest/src/context.ts.hbs index cc816e107..8cf2c4d9d 100644 --- a/apps/cli/templates/api/trpc/server/rest/src/context.ts.hbs +++ b/apps/cli/templates/api/trpc/server/rest/src/context.ts.hbs @@ -1,7 +1,7 @@ {{#if (eq backend 'next')}} import type { NextRequest } from "next/server"; {{#if (eq auth "better-auth")}} -import { auth } from "./auth"; +import { auth } from "@{{projectName}}/auth"; {{/if}} export async function createContext(req: NextRequest) { @@ -23,7 +23,7 @@ export async function createContext(req: NextRequest) { {{else if (eq backend 'hono')}} import type { Context as HonoContext } from "hono"; {{#if (eq auth "better-auth")}} -import { auth } from "./auth"; +import { auth } from "@{{projectName}}/auth"; {{/if}} export type CreateContextOptions = { @@ -49,7 +49,7 @@ export async function createContext({ context }: CreateContextOptions) { {{else if (eq backend 'elysia')}} import type { Context as ElysiaContext } from "elysia"; {{#if (eq auth "better-auth")}} -import { auth } from "./auth"; +import { auth } from "@{{projectName}}/auth"; {{/if}} export type CreateContextOptions = { @@ -76,7 +76,7 @@ export async function createContext({ context }: CreateContextOptions) { import type { CreateExpressContextOptions } from "@trpc/server/adapters/express"; {{#if (eq auth "better-auth")}} import { fromNodeHeaders } from "better-auth/node"; -import { auth } from "./auth"; +import { auth } from "@{{projectName}}/auth"; {{/if}} export async function createContext(opts: CreateExpressContextOptions) { @@ -99,7 +99,7 @@ export async function createContext(opts: CreateExpressContextOptions) { import type { CreateFastifyContextOptions } from "@trpc/server/adapters/fastify"; {{#if (eq auth "better-auth")}} import { fromNodeHeaders } from "better-auth/node"; -import { auth } from "./auth"; +import { auth } from "@{{projectName}}/auth"; {{/if}} export async function createContext({ req, res }: CreateFastifyContextOptions) { diff --git a/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs b/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs index f752cd25b..bbb78a8aa 100644 --- a/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs +++ b/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs @@ -77,7 +77,7 @@ import { polar, checkout, portal } from "@polar-sh/better-auth"; import { polarClient } from "./payments"; {{/if}} import { db } from "../db"; -import * as schema from "../db/schema/auth"; +import * as schema from "@{{projectName}}/db/schema/auth"; export const auth = betterAuth({ database: drizzleAdapter(db, { @@ -145,7 +145,7 @@ import { polar, checkout, portal } from "@polar-sh/better-auth"; import { polarClient } from "./payments"; {{/if}} import { db } from "../db"; -import * as schema from "../db/schema/auth"; +import * as schema from "@{{projectName}}/db/schema/auth"; import { env } from "cloudflare:workers"; export const auth = betterAuth({ @@ -226,7 +226,7 @@ import { expo } from "@better-auth/expo"; import { polar, checkout, portal } from "@polar-sh/better-auth"; import { polarClient } from "./payments"; {{/if}} -import { client } from "../db"; +import { client } from "@{{projectName}}/db"; export const auth = betterAuth({ database: mongodbAdapter(client), diff --git a/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs b/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs index 922c637f3..1a1e8ff9b 100644 --- a/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs +++ b/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs @@ -1,9 +1,9 @@ {{#if (eq api "orpc")}} -import { eq } from "drizzle-orm"; +import { eq } from "@{{projectName}}/db"; import z from "zod"; -import { db } from "../db"; -import { todo } from "../db/schema/todo"; -import { publicProcedure } from "../lib/orpc"; +import { db } from "@{{projectName}}/db"; +import { todo } from "@{{projectName}}/db/schema/todo"; +import { publicProcedure } from "../index"; export const todoRouter = { getAll: publicProcedure.handler(async () => { diff --git a/apps/cli/templates/examples/todo/server/mongoose/base/src/routers/todo.ts.hbs b/apps/cli/templates/examples/todo/server/mongoose/base/src/routers/todo.ts.hbs index 6a89e4b52..187fee7fe 100644 --- a/apps/cli/templates/examples/todo/server/mongoose/base/src/routers/todo.ts.hbs +++ b/apps/cli/templates/examples/todo/server/mongoose/base/src/routers/todo.ts.hbs @@ -1,7 +1,7 @@ {{#if (eq api "orpc")}} import z from "zod"; -import { publicProcedure } from "../lib/orpc"; -import { Todo } from "../db/models/todo.model"; +import { publicProcedure } from "../index"; +import { Todo } from "@{{projectName}}/db/models/todo.model"; export const todoRouter = { getAll: publicProcedure.handler(async () => { @@ -34,8 +34,8 @@ export const todoRouter = { {{#if (eq api "trpc")}} import z from "zod"; -import { router, publicProcedure } from "../lib/trpc"; -import { Todo } from "../db/models/todo.model"; +import { router, publicProcedure } from "../index"; +import { Todo } from "@{{projectName}}/db/models/todo.model"; export const todoRouter = router({ getAll: publicProcedure.query(async () => { diff --git a/apps/cli/templates/examples/todo/server/mongoose/mongodb/src/db/models/todo.model.ts b/apps/cli/templates/examples/todo/server/mongoose/mongodb/src/db/models/todo.model.ts.hbs similarity index 100% rename from apps/cli/templates/examples/todo/server/mongoose/mongodb/src/db/models/todo.model.ts rename to apps/cli/templates/examples/todo/server/mongoose/mongodb/src/db/models/todo.model.ts.hbs diff --git a/apps/cli/templates/examples/todo/server/prisma/base/src/routers/todo.ts.hbs b/apps/cli/templates/examples/todo/server/prisma/base/src/routers/todo.ts.hbs index 57303b665..b9184b0fd 100644 --- a/apps/cli/templates/examples/todo/server/prisma/base/src/routers/todo.ts.hbs +++ b/apps/cli/templates/examples/todo/server/prisma/base/src/routers/todo.ts.hbs @@ -1,7 +1,7 @@ {{#if (eq api "orpc")}} import z from "zod"; import prisma from "../db"; -import { publicProcedure } from "../lib/orpc"; +import { publicProcedure } from "../index"; export const todoRouter = { getAll: publicProcedure.handler(async () => { diff --git a/apps/cli/templates/examples/todo/server/prisma/mongodb/prisma/schema/todo.prisma b/apps/cli/templates/examples/todo/server/prisma/mongodb/prisma/schema/todo.prisma.hbs similarity index 100% rename from apps/cli/templates/examples/todo/server/prisma/mongodb/prisma/schema/todo.prisma rename to apps/cli/templates/examples/todo/server/prisma/mongodb/prisma/schema/todo.prisma.hbs diff --git a/apps/cli/templates/examples/todo/server/prisma/mysql/prisma/schema/todo.prisma b/apps/cli/templates/examples/todo/server/prisma/mysql/prisma/schema/todo.prisma.hbs similarity index 100% rename from apps/cli/templates/examples/todo/server/prisma/mysql/prisma/schema/todo.prisma rename to apps/cli/templates/examples/todo/server/prisma/mysql/prisma/schema/todo.prisma.hbs diff --git a/apps/cli/templates/examples/todo/server/prisma/postgres/prisma/schema/todo.prisma b/apps/cli/templates/examples/todo/server/prisma/postgres/prisma/schema/todo.prisma.hbs similarity index 100% rename from apps/cli/templates/examples/todo/server/prisma/postgres/prisma/schema/todo.prisma rename to apps/cli/templates/examples/todo/server/prisma/postgres/prisma/schema/todo.prisma.hbs diff --git a/apps/cli/templates/examples/todo/server/prisma/sqlite/prisma/schema/todo.prisma b/apps/cli/templates/examples/todo/server/prisma/sqlite/prisma/schema/todo.prisma.hbs similarity index 100% rename from apps/cli/templates/examples/todo/server/prisma/sqlite/prisma/schema/todo.prisma rename to apps/cli/templates/examples/todo/server/prisma/sqlite/prisma/schema/todo.prisma.hbs From 9af580cbafa598a26e3d067de8bd5da534aa0987 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Mon, 29 Sep 2025 01:07:17 +0530 Subject: [PATCH 03/33] ok --- apps/cli/src/helpers/core/api-setup.ts | 12 +- apps/cli/src/helpers/core/auth-setup.ts | 14 +- apps/cli/src/helpers/core/db-setup.ts | 24 +-- apps/cli/src/helpers/core/project-config.ts | 153 +++++++++++++++----- 4 files changed, 142 insertions(+), 61 deletions(-) diff --git a/apps/cli/src/helpers/core/api-setup.ts b/apps/cli/src/helpers/core/api-setup.ts index f685ac39c..4cbd2d560 100644 --- a/apps/cli/src/helpers/core/api-setup.ts +++ b/apps/cli/src/helpers/core/api-setup.ts @@ -206,29 +206,31 @@ export async function setupApi(config: ProjectConfig) { const webDirExists = await fs.pathExists(webDir); const nativeDirExists = await fs.pathExists(nativeDir); - const serverDirExists = await fs.pathExists(serverDir); + const _serverDirExists = await fs.pathExists(serverDir); const frontendType = getFrontendType(frontend); if (!isConvex && api !== "none") { const apiDeps = getApiDependencies(api, frontendType); + const apiPackageDir = path.join(projectDir, "packages/api"); - if (serverDirExists && apiDeps.server) { + // Install API dependencies in packages/api + if (apiDeps.server) { await addPackageDependency({ dependencies: apiDeps.server.dependencies as AvailableDependencies[], - projectDir: serverDir, + projectDir: apiPackageDir, }); if (api === "trpc") { if (backend === "hono") { await addPackageDependency({ dependencies: ["@hono/trpc-server"], - projectDir: serverDir, + projectDir: apiPackageDir, }); } else if (backend === "elysia") { await addPackageDependency({ dependencies: ["@elysiajs/trpc"], - projectDir: serverDir, + projectDir: apiPackageDir, }); } } diff --git a/apps/cli/src/helpers/core/auth-setup.ts b/apps/cli/src/helpers/core/auth-setup.ts index f6246ce20..9ae65c485 100644 --- a/apps/cli/src/helpers/core/auth-setup.ts +++ b/apps/cli/src/helpers/core/auth-setup.ts @@ -17,7 +17,7 @@ export async function setupAuth(config: ProjectConfig) { const clientDirExists = await fs.pathExists(clientDir); const nativeDirExists = await fs.pathExists(nativeDir); - const serverDirExists = await fs.pathExists(serverDir); + const _serverDirExists = await fs.pathExists(serverDir); try { if (backend === "convex") { @@ -102,10 +102,14 @@ export async function setupAuth(config: ProjectConfig) { return; } - if (serverDirExists && auth === "better-auth") { + // Install auth dependencies in packages/auth for non-Convex backends + const authPackageDir = path.join(projectDir, "packages/auth"); + const authPackageDirExists = await fs.pathExists(authPackageDir); + + if (authPackageDirExists && auth === "better-auth") { await addPackageDependency({ dependencies: ["better-auth"], - projectDir: serverDir, + projectDir: authPackageDir, }); } @@ -140,10 +144,10 @@ export async function setupAuth(config: ProjectConfig) { dependencies: ["better-auth", "@better-auth/expo"], projectDir: nativeDir, }); - if (serverDirExists) { + if (authPackageDirExists) { await addPackageDependency({ dependencies: ["@better-auth/expo"], - projectDir: serverDir, + projectDir: authPackageDir, }); } } diff --git a/apps/cli/src/helpers/core/db-setup.ts b/apps/cli/src/helpers/core/db-setup.ts index adf32cdee..d7e0b17c9 100644 --- a/apps/cli/src/helpers/core/db-setup.ts +++ b/apps/cli/src/helpers/core/db-setup.ts @@ -32,9 +32,9 @@ export async function setupDatabase( } const s = spinner(); - const serverDir = path.join(projectDir, "apps/server"); + const dbPackageDir = path.join(projectDir, "packages/db"); - if (!(await fs.pathExists(serverDir))) { + if (!(await fs.pathExists(dbPackageDir))) { return; } @@ -48,19 +48,19 @@ export async function setupDatabase( "@planetscale/database", ], devDependencies: ["prisma"], - projectDir: serverDir, + projectDir: dbPackageDir, }); } else if (database === "sqlite" && dbSetup === "turso") { await addPackageDependency({ dependencies: ["@prisma/client", "@prisma/adapter-libsql"], devDependencies: ["prisma"], - projectDir: serverDir, + projectDir: dbPackageDir, }); } else { await addPackageDependency({ dependencies: ["@prisma/client"], devDependencies: ["prisma"], - projectDir: serverDir, + projectDir: dbPackageDir, }); } } else if (orm === "drizzle") { @@ -68,26 +68,26 @@ export async function setupDatabase( await addPackageDependency({ dependencies: ["drizzle-orm", "@libsql/client"], devDependencies: ["drizzle-kit"], - projectDir: serverDir, + projectDir: dbPackageDir, }); } else if (database === "postgres") { if (dbSetup === "neon") { await addPackageDependency({ dependencies: ["drizzle-orm", "@neondatabase/serverless", "ws"], devDependencies: ["drizzle-kit", "@types/ws"], - projectDir: serverDir, + projectDir: dbPackageDir, }); } else if (dbSetup === "planetscale") { await addPackageDependency({ dependencies: ["drizzle-orm", "pg"], devDependencies: ["drizzle-kit", "@types/pg"], - projectDir: serverDir, + projectDir: dbPackageDir, }); } else { await addPackageDependency({ dependencies: ["drizzle-orm", "pg"], devDependencies: ["drizzle-kit", "@types/pg"], - projectDir: serverDir, + projectDir: dbPackageDir, }); } } else if (database === "mysql") { @@ -95,13 +95,13 @@ export async function setupDatabase( await addPackageDependency({ dependencies: ["drizzle-orm", "@planetscale/database"], devDependencies: ["drizzle-kit"], - projectDir: serverDir, + projectDir: dbPackageDir, }); } else { await addPackageDependency({ dependencies: ["drizzle-orm", "mysql2"], devDependencies: ["drizzle-kit"], - projectDir: serverDir, + projectDir: dbPackageDir, }); } } @@ -109,7 +109,7 @@ export async function setupDatabase( await addPackageDependency({ dependencies: ["mongoose"], devDependencies: [], - projectDir: serverDir, + projectDir: dbPackageDir, }); } diff --git a/apps/cli/src/helpers/core/project-config.ts b/apps/cli/src/helpers/core/project-config.ts index e680abf84..01cde0b3f 100644 --- a/apps/cli/src/helpers/core/project-config.ts +++ b/apps/cli/src/helpers/core/project-config.ts @@ -3,6 +3,7 @@ import { log } from "@clack/prompts"; import { execa } from "execa"; import fs from "fs-extra"; import type { ProjectConfig } from "../../types"; +import { addPackageDependency } from "../../utils/add-package-deps"; export async function updatePackageConfigurations( projectDir: string, @@ -11,6 +12,7 @@ export async function updatePackageConfigurations( await updateRootPackageJson(projectDir, options); if (options.backend !== "convex") { await updateServerPackageJson(projectDir, options); + await updateWorkspaceDependencies(projectDir, options); } else { await updateConvexPackageJson(projectDir, options); } @@ -33,6 +35,7 @@ async function updateRootPackageJson( const backendPackageName = options.backend === "convex" ? `@${options.projectName}/backend` : "server"; + const dbPackageName = "db"; let serverDevScript = ""; if (options.addons.includes("turborepo")) { @@ -70,17 +73,17 @@ async function updateRootPackageJson( scripts["dev:setup"] = `turbo -F ${backendPackageName} dev:setup`; } if (needsDbScripts) { - scripts["db:push"] = `turbo -F ${backendPackageName} db:push`; + scripts["db:push"] = `turbo -F ${dbPackageName} db:push`; if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) { - scripts["db:studio"] = `turbo -F ${backendPackageName} db:studio`; + scripts["db:studio"] = `turbo -F ${dbPackageName} db:studio`; } if (options.orm === "prisma") { - scripts["db:generate"] = `turbo -F ${backendPackageName} db:generate`; - scripts["db:migrate"] = `turbo -F ${backendPackageName} db:migrate`; + scripts["db:generate"] = `turbo -F ${dbPackageName} db:generate`; + scripts["db:migrate"] = `turbo -F ${dbPackageName} db:migrate`; } else if (options.orm === "drizzle") { - scripts["db:generate"] = `turbo -F ${backendPackageName} db:generate`; + scripts["db:generate"] = `turbo -F ${dbPackageName} db:generate`; if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) { - scripts["db:migrate"] = `turbo -F ${backendPackageName} db:migrate`; + scripts["db:migrate"] = `turbo -F ${dbPackageName} db:migrate`; } } } @@ -101,21 +104,17 @@ async function updateRootPackageJson( scripts["dev:setup"] = `pnpm --filter ${backendPackageName} dev:setup`; } if (needsDbScripts) { - scripts["db:push"] = `pnpm --filter ${backendPackageName} db:push`; + scripts["db:push"] = `pnpm --filter ${dbPackageName} db:push`; if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) { - scripts["db:studio"] = `pnpm --filter ${backendPackageName} db:studio`; + scripts["db:studio"] = `pnpm --filter ${dbPackageName} db:studio`; } if (options.orm === "prisma") { - scripts["db:generate"] = - `pnpm --filter ${backendPackageName} db:generate`; - scripts["db:migrate"] = - `pnpm --filter ${backendPackageName} db:migrate`; + scripts["db:generate"] = `pnpm --filter ${dbPackageName} db:generate`; + scripts["db:migrate"] = `pnpm --filter ${dbPackageName} db:migrate`; } else if (options.orm === "drizzle") { - scripts["db:generate"] = - `pnpm --filter ${backendPackageName} db:generate`; + scripts["db:generate"] = `pnpm --filter ${dbPackageName} db:generate`; if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) { - scripts["db:migrate"] = - `pnpm --filter ${backendPackageName} db:migrate`; + scripts["db:migrate"] = `pnpm --filter ${dbPackageName} db:migrate`; } } } @@ -137,22 +136,21 @@ async function updateRootPackageJson( `npm run dev:setup --workspace ${backendPackageName}`; } if (needsDbScripts) { - scripts["db:push"] = `npm run db:push --workspace ${backendPackageName}`; + scripts["db:push"] = `npm run db:push --workspace ${dbPackageName}`; if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) { - scripts["db:studio"] = - `npm run db:studio --workspace ${backendPackageName}`; + scripts["db:studio"] = `npm run db:studio --workspace ${dbPackageName}`; } if (options.orm === "prisma") { scripts["db:generate"] = - `npm run db:generate --workspace ${backendPackageName}`; + `npm run db:generate --workspace ${dbPackageName}`; scripts["db:migrate"] = - `npm run db:migrate --workspace ${backendPackageName}`; + `npm run db:migrate --workspace ${dbPackageName}`; } else if (options.orm === "drizzle") { scripts["db:generate"] = - `npm run db:generate --workspace ${backendPackageName}`; + `npm run db:generate --workspace ${dbPackageName}`; if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) { scripts["db:migrate"] = - `npm run db:migrate --workspace ${backendPackageName}`; + `npm run db:migrate --workspace ${dbPackageName}`; } } } @@ -175,22 +173,20 @@ async function updateRootPackageJson( scripts["dev:setup"] = `bun run --filter ${backendPackageName} dev:setup`; } if (needsDbScripts) { - scripts["db:push"] = `bun run --filter ${backendPackageName} db:push`; + scripts["db:push"] = `bun run --filter ${dbPackageName} db:push`; if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) { - scripts["db:studio"] = - `bun run --filter ${backendPackageName} db:studio`; + scripts["db:studio"] = `bun run --filter ${dbPackageName} db:studio`; } if (options.orm === "prisma") { scripts["db:generate"] = - `bun run --filter ${backendPackageName} db:generate`; - scripts["db:migrate"] = - `bun run --filter ${backendPackageName} db:migrate`; + `bun run --filter ${dbPackageName} db:generate`; + scripts["db:migrate"] = `bun run --filter ${dbPackageName} db:migrate`; } else if (options.orm === "drizzle") { scripts["db:generate"] = - `bun run --filter ${backendPackageName} db:generate`; + `bun run --filter ${dbPackageName} db:generate`; if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) { scripts["db:migrate"] = - `bun run --filter ${backendPackageName} db:migrate`; + `bun run --filter ${dbPackageName} db:migrate`; } } } @@ -255,6 +251,37 @@ async function updateServerPackageJson( } const scripts = serverPackageJson.scripts; + // Server package only needs server-specific scripts now + // Database scripts are handled in packages/db + + if (options.dbSetup === "docker") { + scripts["db:start"] = "docker compose up -d"; + scripts["db:watch"] = "docker compose up"; + scripts["db:stop"] = "docker compose stop"; + scripts["db:down"] = "docker compose down"; + } + + await fs.writeJson(serverPackageJsonPath, serverPackageJson, { + spaces: 2, + }); + + // Update database package scripts + await updateDbPackageJson(projectDir, options); +} + +async function updateDbPackageJson(projectDir: string, options: ProjectConfig) { + const dbPackageJsonPath = path.join(projectDir, "packages/db/package.json"); + + if (!(await fs.pathExists(dbPackageJsonPath))) return; + + const dbPackageJson = await fs.readJson(dbPackageJsonPath); + dbPackageJson.name = `@${options.projectName}/db`; + + if (!dbPackageJson.scripts) { + dbPackageJson.scripts = {}; + } + const scripts = dbPackageJson.scripts; + if (options.database !== "none") { if ( options.database === "sqlite" && @@ -283,14 +310,7 @@ async function updateServerPackageJson( } } - if (options.dbSetup === "docker") { - scripts["db:start"] = "docker compose up -d"; - scripts["db:watch"] = "docker compose up"; - scripts["db:stop"] = "docker compose stop"; - scripts["db:down"] = "docker compose down"; - } - - await fs.writeJson(serverPackageJsonPath, serverPackageJson, { + await fs.writeJson(dbPackageJsonPath, dbPackageJson, { spaces: 2, }); } @@ -315,3 +335,58 @@ async function updateConvexPackageJson( await fs.writeJson(convexPackageJsonPath, convexPackageJson, { spaces: 2 }); } + +async function updateWorkspaceDependencies( + projectDir: string, + options: ProjectConfig, +) { + const projectName = options.projectName; + const workspaceVersion = + options.packageManager === "npm" ? "*" : "workspace:*"; + + // Update packages/auth dependencies + const authPackageDir = path.join(projectDir, "packages/auth"); + if (await fs.pathExists(authPackageDir)) { + const authPackagePath = path.join(authPackageDir, "package.json"); + const authPackage = await fs.readJson(authPackagePath); + authPackage.name = `@${projectName}/auth`; + await fs.writeJson(authPackagePath, authPackage, { spaces: 2 }); + + await addPackageDependency({ + customDependencies: { + [`@${projectName}/db`]: workspaceVersion, + }, + projectDir: authPackageDir, + }); + } + + // Update packages/api dependencies + const apiPackageDir = path.join(projectDir, "packages/api"); + if (await fs.pathExists(apiPackageDir)) { + const apiPackagePath = path.join(apiPackageDir, "package.json"); + const apiPackage = await fs.readJson(apiPackagePath); + apiPackage.name = `@${projectName}/api`; + await fs.writeJson(apiPackagePath, apiPackage, { spaces: 2 }); + + await addPackageDependency({ + customDependencies: { + [`@${projectName}/auth`]: workspaceVersion, + [`@${projectName}/db`]: workspaceVersion, + }, + projectDir: apiPackageDir, + }); + } + + // Update apps/server dependencies + const serverPackageDir = path.join(projectDir, "apps/server"); + if (await fs.pathExists(serverPackageDir)) { + await addPackageDependency({ + customDependencies: { + [`@${projectName}/api`]: workspaceVersion, + [`@${projectName}/auth`]: workspaceVersion, + [`@${projectName}/db`]: workspaceVersion, + }, + projectDir: serverPackageDir, + }); + } +} From 56bf5ad23f0fc8b533553de33e80ae9d23c7f284 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Mon, 29 Sep 2025 08:13:57 +0530 Subject: [PATCH 04/33] ok --- apps/cli/src/helpers/core/project-config.ts | 63 +------------------- apps/cli/src/helpers/core/workspace-setup.ts | 49 +++++++++++++++ 2 files changed, 51 insertions(+), 61 deletions(-) create mode 100644 apps/cli/src/helpers/core/workspace-setup.ts diff --git a/apps/cli/src/helpers/core/project-config.ts b/apps/cli/src/helpers/core/project-config.ts index 01cde0b3f..aa12f9055 100644 --- a/apps/cli/src/helpers/core/project-config.ts +++ b/apps/cli/src/helpers/core/project-config.ts @@ -3,7 +3,7 @@ import { log } from "@clack/prompts"; import { execa } from "execa"; import fs from "fs-extra"; import type { ProjectConfig } from "../../types"; -import { addPackageDependency } from "../../utils/add-package-deps"; +import { setupWorkspaceDependencies } from "./workspace-setup"; export async function updatePackageConfigurations( projectDir: string, @@ -12,7 +12,7 @@ export async function updatePackageConfigurations( await updateRootPackageJson(projectDir, options); if (options.backend !== "convex") { await updateServerPackageJson(projectDir, options); - await updateWorkspaceDependencies(projectDir, options); + await setupWorkspaceDependencies(projectDir, options); } else { await updateConvexPackageJson(projectDir, options); } @@ -251,9 +251,6 @@ async function updateServerPackageJson( } const scripts = serverPackageJson.scripts; - // Server package only needs server-specific scripts now - // Database scripts are handled in packages/db - if (options.dbSetup === "docker") { scripts["db:start"] = "docker compose up -d"; scripts["db:watch"] = "docker compose up"; @@ -265,7 +262,6 @@ async function updateServerPackageJson( spaces: 2, }); - // Update database package scripts await updateDbPackageJson(projectDir, options); } @@ -335,58 +331,3 @@ async function updateConvexPackageJson( await fs.writeJson(convexPackageJsonPath, convexPackageJson, { spaces: 2 }); } - -async function updateWorkspaceDependencies( - projectDir: string, - options: ProjectConfig, -) { - const projectName = options.projectName; - const workspaceVersion = - options.packageManager === "npm" ? "*" : "workspace:*"; - - // Update packages/auth dependencies - const authPackageDir = path.join(projectDir, "packages/auth"); - if (await fs.pathExists(authPackageDir)) { - const authPackagePath = path.join(authPackageDir, "package.json"); - const authPackage = await fs.readJson(authPackagePath); - authPackage.name = `@${projectName}/auth`; - await fs.writeJson(authPackagePath, authPackage, { spaces: 2 }); - - await addPackageDependency({ - customDependencies: { - [`@${projectName}/db`]: workspaceVersion, - }, - projectDir: authPackageDir, - }); - } - - // Update packages/api dependencies - const apiPackageDir = path.join(projectDir, "packages/api"); - if (await fs.pathExists(apiPackageDir)) { - const apiPackagePath = path.join(apiPackageDir, "package.json"); - const apiPackage = await fs.readJson(apiPackagePath); - apiPackage.name = `@${projectName}/api`; - await fs.writeJson(apiPackagePath, apiPackage, { spaces: 2 }); - - await addPackageDependency({ - customDependencies: { - [`@${projectName}/auth`]: workspaceVersion, - [`@${projectName}/db`]: workspaceVersion, - }, - projectDir: apiPackageDir, - }); - } - - // Update apps/server dependencies - const serverPackageDir = path.join(projectDir, "apps/server"); - if (await fs.pathExists(serverPackageDir)) { - await addPackageDependency({ - customDependencies: { - [`@${projectName}/api`]: workspaceVersion, - [`@${projectName}/auth`]: workspaceVersion, - [`@${projectName}/db`]: workspaceVersion, - }, - projectDir: serverPackageDir, - }); - } -} diff --git a/apps/cli/src/helpers/core/workspace-setup.ts b/apps/cli/src/helpers/core/workspace-setup.ts new file mode 100644 index 000000000..a5bff3926 --- /dev/null +++ b/apps/cli/src/helpers/core/workspace-setup.ts @@ -0,0 +1,49 @@ +import path from "node:path"; +import fs from "fs-extra"; +import type { ProjectConfig } from "../../types"; +import { addPackageDependency } from "../../utils/add-package-deps"; + +export async function setupWorkspaceDependencies( + projectDir: string, + options: ProjectConfig, +) { + const projectName = options.projectName; + const workspaceVersion = + options.packageManager === "npm" ? "*" : "workspace:*"; + + // Update packages/auth dependencies + const authPackageDir = path.join(projectDir, "packages/auth"); + if (await fs.pathExists(authPackageDir)) { + await addPackageDependency({ + customDependencies: { + [`@${projectName}/db`]: workspaceVersion, + }, + projectDir: authPackageDir, + }); + } + + // Update packages/api dependencies + const apiPackageDir = path.join(projectDir, "packages/api"); + if (await fs.pathExists(apiPackageDir)) { + await addPackageDependency({ + customDependencies: { + [`@${projectName}/auth`]: workspaceVersion, + [`@${projectName}/db`]: workspaceVersion, + }, + projectDir: apiPackageDir, + }); + } + + // Update apps/server dependencies + const serverPackageDir = path.join(projectDir, "apps/server"); + if (await fs.pathExists(serverPackageDir)) { + await addPackageDependency({ + customDependencies: { + [`@${projectName}/api`]: workspaceVersion, + [`@${projectName}/auth`]: workspaceVersion, + [`@${projectName}/db`]: workspaceVersion, + }, + projectDir: serverPackageDir, + }); + } +} From 00e6b2e58f00a009d9de4f98eb9cbd5ea44148dc Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Mon, 29 Sep 2025 10:26:49 +0530 Subject: [PATCH 05/33] ok --- apps/cli/src/helpers/addons/examples-setup.ts | 8 +- apps/cli/src/helpers/core/api-setup.ts | 1 - apps/cli/src/helpers/core/auth-setup.ts | 1 - apps/cli/src/helpers/core/create-project.ts | 2 - apps/cli/src/helpers/core/env-setup.ts | 126 ++++++++++-------- apps/cli/src/helpers/core/project-config.ts | 37 +++++ apps/cli/src/helpers/core/template-manager.ts | 23 ---- apps/cli/src/helpers/core/workspace-setup.ts | 86 ++++++------ .../helpers/database-providers/d1-setup.ts | 6 +- .../docker-compose-setup.ts | 2 +- .../database-providers/mongodb-atlas-setup.ts | 4 +- .../helpers/database-providers/neon-setup.ts | 8 +- .../database-providers/planetscale-setup.ts | 10 +- .../prisma-postgres-setup.ts | 8 +- .../database-providers/supabase-setup.ts | 10 +- .../helpers/database-providers/turso-setup.ts | 4 +- apps/cli/src/utils/config-validation.ts | 1 - .../api/orpc/web/nuxt/app/plugins/orpc.ts.hbs | 2 +- .../orpc/web/react/base/src/utils/orpc.ts.hbs | 2 +- .../api/orpc/web/solid/src/utils/orpc.ts.hbs | 2 +- .../api/orpc/web/svelte/src/lib/orpc.ts.hbs | 2 +- .../trpc/web/react/base/src/utils/trpc.ts.hbs | 4 +- .../db/drizzle/mysql/drizzle.config.ts.hbs | 4 +- .../db/drizzle/postgres/drizzle.config.ts.hbs | 4 +- .../db/drizzle/sqlite/drizzle.config.ts.hbs | 4 +- .../tanstack-router/src/routes/__root.tsx.hbs | 2 +- .../tanstack-start/src/routes/__root.tsx.hbs | 2 +- 27 files changed, 198 insertions(+), 167 deletions(-) diff --git a/apps/cli/src/helpers/addons/examples-setup.ts b/apps/cli/src/helpers/addons/examples-setup.ts index 0013a6945..51b08443b 100644 --- a/apps/cli/src/helpers/addons/examples-setup.ts +++ b/apps/cli/src/helpers/addons/examples-setup.ts @@ -19,11 +19,11 @@ export async function setupExamples(config: ProjectConfig) { if (examples.includes("ai")) { const webClientDir = path.join(projectDir, "apps/web"); const nativeClientDir = path.join(projectDir, "apps/native"); - const serverDir = path.join(projectDir, "apps/server"); + const apiDir = path.join(projectDir, "packages/api"); const webClientDirExists = await fs.pathExists(webClientDir); const nativeClientDirExists = await fs.pathExists(nativeClientDir); - const serverDirExists = await fs.pathExists(serverDir); + const apiDirExists = await fs.pathExists(apiDir); const hasNuxt = frontend.includes("nuxt"); const hasSvelte = frontend.includes("svelte"); @@ -64,10 +64,10 @@ export async function setupExamples(config: ProjectConfig) { }); } - if (serverDirExists && backend !== "none") { + if (apiDirExists && backend !== "none") { await addPackageDependency({ dependencies: ["ai", "@ai-sdk/google"], - projectDir: serverDir, + projectDir: apiDir, }); } } diff --git a/apps/cli/src/helpers/core/api-setup.ts b/apps/cli/src/helpers/core/api-setup.ts index 4cbd2d560..6f35c89ae 100644 --- a/apps/cli/src/helpers/core/api-setup.ts +++ b/apps/cli/src/helpers/core/api-setup.ts @@ -214,7 +214,6 @@ export async function setupApi(config: ProjectConfig) { const apiDeps = getApiDependencies(api, frontendType); const apiPackageDir = path.join(projectDir, "packages/api"); - // Install API dependencies in packages/api if (apiDeps.server) { await addPackageDependency({ dependencies: apiDeps.server.dependencies as AvailableDependencies[], diff --git a/apps/cli/src/helpers/core/auth-setup.ts b/apps/cli/src/helpers/core/auth-setup.ts index 9ae65c485..b73d86d98 100644 --- a/apps/cli/src/helpers/core/auth-setup.ts +++ b/apps/cli/src/helpers/core/auth-setup.ts @@ -102,7 +102,6 @@ export async function setupAuth(config: ProjectConfig) { return; } - // Install auth dependencies in packages/auth for non-Convex backends const authPackageDir = path.join(projectDir, "packages/auth"); const authPackageDirExists = await fs.pathExists(authPackageDir); diff --git a/apps/cli/src/helpers/core/create-project.ts b/apps/cli/src/helpers/core/create-project.ts index c7721830b..f80a21afa 100644 --- a/apps/cli/src/helpers/core/create-project.ts +++ b/apps/cli/src/helpers/core/create-project.ts @@ -25,7 +25,6 @@ import { setupAddonsTemplate, setupAuthTemplate, setupBackendFramework, - setupDbOrmTemplates, setupDeploymentTemplates, setupDockerComposeTemplates, setupExamplesTemplate, @@ -47,7 +46,6 @@ export async function createProject( await setupFrontendTemplates(projectDir, options); await setupBackendFramework(projectDir, options); if (!isConvex) { - await setupDbOrmTemplates(projectDir, options); await setupDockerComposeTemplates(projectDir, options); } await setupAuthTemplate(projectDir, options); diff --git a/apps/cli/src/helpers/core/env-setup.ts b/apps/cli/src/helpers/core/env-setup.ts index 02febdc19..7e8c77b8a 100644 --- a/apps/cli/src/helpers/core/env-setup.ts +++ b/apps/cli/src/helpers/core/env-setup.ts @@ -277,11 +277,10 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { return; } + const authDir = path.join(projectDir, "packages/auth"); + const apiDir = path.join(projectDir, "packages/api"); + const dbDir = path.join(projectDir, "packages/db"); const serverDir = path.join(projectDir, "apps/server"); - if (!(await fs.pathExists(serverDir))) { - return; - } - const envPath = path.join(serverDir, ".env"); let corsOrigin = "http://localhost:3001"; if (hasReactRouter || hasSvelte) { @@ -311,45 +310,61 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { } } - const serverVars: EnvVariable[] = [ - { - key: "CORS_ORIGIN", - value: corsOrigin, - condition: true, - }, - { - key: "BETTER_AUTH_SECRET", - value: generateAuthSecret(), - condition: !!auth, - }, - { - key: "BETTER_AUTH_URL", - value: "http://localhost:3000", - condition: !!auth, - }, - { - key: "DATABASE_URL", - value: databaseUrl, - condition: database !== "none" && dbSetup === "none", - }, - { - key: "GOOGLE_GENERATIVE_AI_API_KEY", - value: "", - condition: examples?.includes("ai") || false, - }, - { - key: "POLAR_ACCESS_TOKEN", - value: "", - condition: config.payments === "polar", - }, - { - key: "POLAR_SUCCESS_URL", - value: `${corsOrigin}/success?checkout_id={CHECKOUT_ID}`, - condition: config.payments === "polar", - }, - ]; - - await addEnvVariablesToFile(envPath, serverVars); + if (await fs.pathExists(authDir)) { + const authEnvPath = path.join(authDir, ".env"); + const authVars: EnvVariable[] = [ + { + key: "BETTER_AUTH_SECRET", + value: generateAuthSecret(), + condition: !!auth, + }, + { + key: "BETTER_AUTH_URL", + value: "http://localhost:3000", + condition: !!auth, + }, + { + key: "POLAR_ACCESS_TOKEN", + value: "", + condition: config.payments === "polar", + }, + { + key: "POLAR_SUCCESS_URL", + value: `${corsOrigin}/success?checkout_id={CHECKOUT_ID}`, + condition: config.payments === "polar", + }, + ]; + await addEnvVariablesToFile(authEnvPath, authVars); + } + + if (await fs.pathExists(apiDir)) { + const apiEnvPath = path.join(apiDir, ".env"); + const apiVars: EnvVariable[] = [ + { + key: "CORS_ORIGIN", + value: corsOrigin, + condition: true, + }, + { + key: "GOOGLE_GENERATIVE_AI_API_KEY", + value: "", + condition: examples?.includes("ai") || false, + }, + ]; + await addEnvVariablesToFile(apiEnvPath, apiVars); + } + + if (await fs.pathExists(dbDir)) { + const dbEnvPath = path.join(dbDir, ".env"); + const dbVars: EnvVariable[] = [ + { + key: "DATABASE_URL", + value: databaseUrl, + condition: database !== "none" && dbSetup === "none", + }, + ]; + await addEnvVariablesToFile(dbEnvPath, dbVars); + } const isUnifiedAlchemy = webDeploy === "alchemy" && serverDeploy === "alchemy"; @@ -382,20 +397,17 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { } if (serverDeploy === "alchemy") { - const serverDir = path.join(projectDir, "apps/server"); - if (await fs.pathExists(serverDir)) { - const serverAlchemyVars: EnvVariable[] = [ - { - key: "ALCHEMY_PASSWORD", - value: "please-change-this", - condition: true, - }, - ]; - await addEnvVariablesToFile( - path.join(serverDir, ".env"), - serverAlchemyVars, - ); - } + const serverAlchemyVars: EnvVariable[] = [ + { + key: "ALCHEMY_PASSWORD", + value: "please-change-this", + condition: true, + }, + ]; + await addEnvVariablesToFile( + path.join(serverDir, ".env"), + serverAlchemyVars, + ); } } } diff --git a/apps/cli/src/helpers/core/project-config.ts b/apps/cli/src/helpers/core/project-config.ts index aa12f9055..21458c70d 100644 --- a/apps/cli/src/helpers/core/project-config.ts +++ b/apps/cli/src/helpers/core/project-config.ts @@ -12,6 +12,8 @@ export async function updatePackageConfigurations( await updateRootPackageJson(projectDir, options); if (options.backend !== "convex") { await updateServerPackageJson(projectDir, options); + await updateAuthPackageJson(projectDir, options); + await updateApiPackageJson(projectDir, options); await setupWorkspaceDependencies(projectDir, options); } else { await updateConvexPackageJson(projectDir, options); @@ -311,6 +313,41 @@ async function updateDbPackageJson(projectDir: string, options: ProjectConfig) { }); } +async function updateAuthPackageJson( + projectDir: string, + options: ProjectConfig, +) { + const authPackageJsonPath = path.join( + projectDir, + "packages/auth/package.json", + ); + + if (!(await fs.pathExists(authPackageJsonPath))) return; + + const authPackageJson = await fs.readJson(authPackageJsonPath); + authPackageJson.name = `@${options.projectName}/auth`; + + await fs.writeJson(authPackageJsonPath, authPackageJson, { + spaces: 2, + }); +} + +async function updateApiPackageJson( + projectDir: string, + options: ProjectConfig, +) { + const apiPackageJsonPath = path.join(projectDir, "packages/api/package.json"); + + if (!(await fs.pathExists(apiPackageJsonPath))) return; + + const apiPackageJson = await fs.readJson(apiPackageJsonPath); + apiPackageJson.name = `@${options.projectName}/api`; + + await fs.writeJson(apiPackageJsonPath, apiPackageJson, { + spaces: 2, + }); +} + async function updateConvexPackageJson( projectDir: string, options: ProjectConfig, diff --git a/apps/cli/src/helpers/core/template-manager.ts b/apps/cli/src/helpers/core/template-manager.ts index 2b964c07e..ed76ac8ef 100644 --- a/apps/cli/src/helpers/core/template-manager.ts +++ b/apps/cli/src/helpers/core/template-manager.ts @@ -272,13 +272,11 @@ export async function setupBackendFramework( await fs.ensureDir(serverAppDir); - // Copy base server template const serverBaseDir = path.join(PKG_ROOT, "templates/backend/server/base"); if (await fs.pathExists(serverBaseDir)) { await processAndCopyFiles("**/*", serverBaseDir, serverAppDir, context); } - // Copy framework-specific server template const frameworkSrcDir = path.join( PKG_ROOT, `templates/backend/server/${context.backend}`, @@ -293,12 +291,10 @@ export async function setupBackendFramework( ); } - // Setup API package if API is not none if (context.api !== "none") { const apiPackageDir = path.join(projectDir, "packages/api"); await fs.ensureDir(apiPackageDir); - // Copy API base template to packages/api const apiServerBaseDir = path.join( PKG_ROOT, `templates/api/${context.api}/server/base`, @@ -312,7 +308,6 @@ export async function setupBackendFramework( ); } - // Copy API framework-specific template to packages/api let apiServerFrameworkDir = ""; if (context.backend === "next") { apiServerFrameworkDir = path.join( @@ -320,7 +315,6 @@ export async function setupBackendFramework( `templates/api/${context.api}/server/${context.backend}`, ); } else { - // For non-Next.js backends, use the rest template apiServerFrameworkDir = path.join( PKG_ROOT, `templates/api/${context.api}/server/rest`, @@ -338,18 +332,15 @@ export async function setupBackendFramework( } } - // Setup DB package if database and ORM are not none if (context.database !== "none" && context.orm !== "none") { const dbPackageDir = path.join(projectDir, "packages/db"); await fs.ensureDir(dbPackageDir); - // Copy DB base template to packages/db const dbBaseDir = path.join(PKG_ROOT, "templates/db/base"); if (await fs.pathExists(dbBaseDir)) { await processAndCopyFiles("**/*", dbBaseDir, dbPackageDir, context); } - // Copy ORM and database-specific templates to packages/db const dbOrmSrcDir = path.join( PKG_ROOT, `templates/db/${context.orm}/${context.database}`, @@ -360,15 +351,6 @@ export async function setupBackendFramework( } } -export async function setupDbOrmTemplates( - _projectDir: string, - _context: ProjectConfig, -) { - // DB and ORM templates are now handled in setupBackendFramework - // This function is kept for backward compatibility but is no longer used - return; -} - export async function setupAuthTemplate( projectDir: string, context: ProjectConfig, @@ -524,7 +506,6 @@ export async function setupAuthTemplate( } if (serverAppDirExists && context.backend !== "convex") { - // Setup auth package const authPackageDir = path.join(projectDir, "packages/auth"); await fs.ensureDir(authPackageDir); @@ -556,7 +537,6 @@ export async function setupAuthTemplate( } } - // Auth database schemas should go to packages/db, not packages/auth if (context.orm !== "none" && context.database !== "none") { const dbPackageDir = path.join(projectDir, "packages/db"); await fs.ensureDir(dbPackageDir); @@ -859,7 +839,6 @@ export async function setupExamplesTemplate( ) { const exampleServerSrc = path.join(exampleBaseDir, "server"); - // Copy API examples to packages/api (routes) if (context.api !== "none") { const apiPackageDir = path.join(projectDir, "packages/api"); await fs.ensureDir(apiPackageDir); @@ -880,7 +859,6 @@ export async function setupExamplesTemplate( } } - // Copy database examples to packages/db (schemas) if (context.orm !== "none" && context.database !== "none") { const dbPackageDir = path.join(projectDir, "packages/db"); await fs.ensureDir(dbPackageDir); @@ -901,7 +879,6 @@ export async function setupExamplesTemplate( } } - // Copy AI-specific server examples to apps/server (for Next.js AI routes) if (example === "ai" && context.backend === "next") { const aiNextServerSrc = path.join(exampleServerSrc, "next"); if (await fs.pathExists(aiNextServerSrc)) { diff --git a/apps/cli/src/helpers/core/workspace-setup.ts b/apps/cli/src/helpers/core/workspace-setup.ts index a5bff3926..ad119d559 100644 --- a/apps/cli/src/helpers/core/workspace-setup.ts +++ b/apps/cli/src/helpers/core/workspace-setup.ts @@ -4,46 +4,56 @@ import type { ProjectConfig } from "../../types"; import { addPackageDependency } from "../../utils/add-package-deps"; export async function setupWorkspaceDependencies( - projectDir: string, - options: ProjectConfig, + projectDir: string, + options: ProjectConfig, ) { - const projectName = options.projectName; - const workspaceVersion = - options.packageManager === "npm" ? "*" : "workspace:*"; + const projectName = options.projectName; + const workspaceVersion = + options.packageManager === "npm" ? "*" : "workspace:*"; - // Update packages/auth dependencies - const authPackageDir = path.join(projectDir, "packages/auth"); - if (await fs.pathExists(authPackageDir)) { - await addPackageDependency({ - customDependencies: { - [`@${projectName}/db`]: workspaceVersion, - }, - projectDir: authPackageDir, - }); - } + const authPackageDir = path.join(projectDir, "packages/auth"); + if (await fs.pathExists(authPackageDir)) { + await addPackageDependency({ + customDependencies: { + [`@${projectName}/db`]: workspaceVersion, + }, + projectDir: authPackageDir, + }); + } - // Update packages/api dependencies - const apiPackageDir = path.join(projectDir, "packages/api"); - if (await fs.pathExists(apiPackageDir)) { - await addPackageDependency({ - customDependencies: { - [`@${projectName}/auth`]: workspaceVersion, - [`@${projectName}/db`]: workspaceVersion, - }, - projectDir: apiPackageDir, - }); - } + const apiPackageDir = path.join(projectDir, "packages/api"); + if (await fs.pathExists(apiPackageDir)) { + await addPackageDependency({ + customDependencies: { + [`@${projectName}/auth`]: workspaceVersion, + [`@${projectName}/db`]: workspaceVersion, + }, + projectDir: apiPackageDir, + }); + } - // Update apps/server dependencies - const serverPackageDir = path.join(projectDir, "apps/server"); - if (await fs.pathExists(serverPackageDir)) { - await addPackageDependency({ - customDependencies: { - [`@${projectName}/api`]: workspaceVersion, - [`@${projectName}/auth`]: workspaceVersion, - [`@${projectName}/db`]: workspaceVersion, - }, - projectDir: serverPackageDir, - }); - } + const serverPackageDir = path.join(projectDir, "apps/server"); + if (await fs.pathExists(serverPackageDir)) { + await addPackageDependency({ + customDependencies: { + [`@${projectName}/api`]: workspaceVersion, + [`@${projectName}/auth`]: workspaceVersion, + [`@${projectName}/db`]: workspaceVersion, + }, + projectDir: serverPackageDir, + }); + } + + const needsApiDependency = options.api && options.api !== "none"; + if (needsApiDependency) { + const webPackageDir = path.join(projectDir, "apps/web"); + if (await fs.pathExists(webPackageDir)) { + await addPackageDependency({ + customDependencies: { + [`@${projectName}/api`]: workspaceVersion, + }, + projectDir: webPackageDir, + }); + } + } } diff --git a/apps/cli/src/helpers/database-providers/d1-setup.ts b/apps/cli/src/helpers/database-providers/d1-setup.ts index 05d8988e4..2f9913842 100644 --- a/apps/cli/src/helpers/database-providers/d1-setup.ts +++ b/apps/cli/src/helpers/database-providers/d1-setup.ts @@ -7,7 +7,7 @@ export async function setupCloudflareD1(config: ProjectConfig) { const { projectDir, serverDeploy, orm } = config; if (serverDeploy === "wrangler") { - const envPath = path.join(projectDir, "apps/server", ".env"); + const envPath = path.join(projectDir, "packages/db", ".env"); const variables: EnvVariable[] = [ { @@ -36,7 +36,7 @@ export async function setupCloudflareD1(config: ProjectConfig) { (serverDeploy === "wrangler" || serverDeploy === "alchemy") && orm === "prisma" ) { - const envPath = path.join(projectDir, "apps/server", ".env"); + const envPath = path.join(projectDir, "packages/db", ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -49,7 +49,7 @@ export async function setupCloudflareD1(config: ProjectConfig) { await addEnvVariablesToFile(envPath, variables); } catch (_err) {} - const serverDir = path.join(projectDir, "apps/server"); + const serverDir = path.join(projectDir, "packages/db"); await addPackageDependency({ dependencies: ["@prisma/adapter-d1"], projectDir: serverDir, diff --git a/apps/cli/src/helpers/database-providers/docker-compose-setup.ts b/apps/cli/src/helpers/database-providers/docker-compose-setup.ts index 32b417765..98ee5f4c0 100644 --- a/apps/cli/src/helpers/database-providers/docker-compose-setup.ts +++ b/apps/cli/src/helpers/database-providers/docker-compose-setup.ts @@ -23,7 +23,7 @@ async function writeEnvFile( database: Database, projectName: string, ) { - const envPath = path.join(projectDir, "apps/server", ".env"); + const envPath = path.join(projectDir, "packages/db", ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", diff --git a/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts b/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts index 6ee969de3..6791042b2 100644 --- a/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts +++ b/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts @@ -82,7 +82,7 @@ async function initMongoDBAtlas(serverDir: string) { async function writeEnvFile(projectDir: string, config?: MongoDBConfig) { try { - const envPath = path.join(projectDir, "apps/server", ".env"); + const envPath = path.join(projectDir, "packages/db", ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -125,7 +125,7 @@ export async function setupMongoDBAtlas( const { projectDir } = config; const manualDb = cliInput?.manualDb ?? false; - const serverDir = path.join(projectDir, "apps/server"); + const serverDir = path.join(projectDir, "packages/db"); try { await fs.ensureDir(serverDir); diff --git a/apps/cli/src/helpers/database-providers/neon-setup.ts b/apps/cli/src/helpers/database-providers/neon-setup.ts index f01c8421a..e7b8ee4f6 100644 --- a/apps/cli/src/helpers/database-providers/neon-setup.ts +++ b/apps/cli/src/helpers/database-providers/neon-setup.ts @@ -98,7 +98,7 @@ async function createNeonProject( } async function writeEnvFile(projectDir: string, config?: NeonConfig) { - const envPath = path.join(projectDir, "apps/server", ".env"); + const envPath = path.join(projectDir, "packages/db", ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -121,7 +121,7 @@ async function setupWithNeonDb( const s = spinner(); s.start("Creating Neon database using neondb..."); - const serverDir = path.join(projectDir, "apps/server"); + const serverDir = path.join(projectDir, "packages/db"); await fs.ensureDir(serverDir); const packageCmd = getPackageExecutionCommand( @@ -149,7 +149,7 @@ function displayManualSetupInstructions() { 1. Visit https://neon.tech and create an account 2. Create a new project from the dashboard 3. Get your connection string -4. Add the database URL to the .env file in apps/server/.env +4. Add the database URL to the .env file in packages/db/.env DATABASE_URL="your_connection_string"`); } @@ -246,7 +246,7 @@ export async function setupNeonPostgres( const finalSpinner = spinner(); finalSpinner.start("Configuring database connection"); - await fs.ensureDir(path.join(projectDir, "apps/server")); + await fs.ensureDir(path.join(projectDir, "packages/db")); await writeEnvFile(projectDir, neonConfig); finalSpinner.stop("Neon database configured!"); diff --git a/apps/cli/src/helpers/database-providers/planetscale-setup.ts b/apps/cli/src/helpers/database-providers/planetscale-setup.ts index f2c94116a..65c44428a 100644 --- a/apps/cli/src/helpers/database-providers/planetscale-setup.ts +++ b/apps/cli/src/helpers/database-providers/planetscale-setup.ts @@ -6,7 +6,7 @@ import { addEnvVariablesToFile, type EnvVariable } from "../core/env-setup"; export async function setupPlanetScale(config: ProjectConfig) { const { projectDir, database, orm } = config; - const envPath = path.join(projectDir, "apps/server", ".env"); + const envPath = path.join(projectDir, "packages/db", ".env"); if (database === "mysql" && orm === "drizzle") { const variables: EnvVariable[] = [ @@ -33,7 +33,7 @@ export async function setupPlanetScale(config: ProjectConfig) { }, ]; - await fs.ensureDir(path.join(projectDir, "apps/server")); + await fs.ensureDir(path.join(projectDir, "packages/db")); await addEnvVariablesToFile(envPath, variables); } @@ -46,7 +46,7 @@ export async function setupPlanetScale(config: ProjectConfig) { }, ]; - await fs.ensureDir(path.join(projectDir, "apps/server")); + await fs.ensureDir(path.join(projectDir, "packages/db")); await addEnvVariablesToFile(envPath, variables); } @@ -60,7 +60,7 @@ export async function setupPlanetScale(config: ProjectConfig) { }, ]; - await fs.ensureDir(path.join(projectDir, "apps/server")); + await fs.ensureDir(path.join(projectDir, "packages/db")); await addEnvVariablesToFile(envPath, variables); } @@ -73,7 +73,7 @@ export async function setupPlanetScale(config: ProjectConfig) { }, ]; - await fs.ensureDir(path.join(projectDir, "apps/server")); + await fs.ensureDir(path.join(projectDir, "packages/db")); await addEnvVariablesToFile(envPath, variables); } } diff --git a/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts b/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts index 165d8d237..2c5aaa5fa 100644 --- a/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts +++ b/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts @@ -146,7 +146,7 @@ async function initPrismaDatabase( async function writeEnvFile(projectDir: string, config?: PrismaConfig) { try { - const envPath = path.join(projectDir, "apps/server", ".env"); + const envPath = path.join(projectDir, "packages/db", ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -175,7 +175,7 @@ async function addDotenvImportToPrismaConfig(projectDir: string) { try { const prismaConfigPath = path.join( projectDir, - "apps/server/prisma.config.ts", + "packages/db/prisma.config.ts", ); let content = await fs.readFile(prismaConfigPath, "utf8"); content = `import "dotenv/config";\n${content}`; @@ -191,7 +191,7 @@ function displayManualSetupInstructions() { 1. Visit https://console.prisma.io and create an account 2. Create a new PostgreSQL database from the dashboard 3. Get your database URL -4. Add the database URL to the .env file in apps/server/.env +4. Add the database URL to the .env file in packages/db/.env DATABASE_URL="your_database_url"`); } @@ -218,7 +218,7 @@ export async function setupPrismaPostgres( ) { const { packageManager, projectDir, orm } = config; const manualDb = cliInput?.manualDb ?? false; - const serverDir = path.join(projectDir, "apps/server"); + const serverDir = path.join(projectDir, "packages/db"); try { await fs.ensureDir(serverDir); diff --git a/apps/cli/src/helpers/database-providers/supabase-setup.ts b/apps/cli/src/helpers/database-providers/supabase-setup.ts index ce6ee1510..b9406877a 100644 --- a/apps/cli/src/helpers/database-providers/supabase-setup.ts +++ b/apps/cli/src/helpers/database-providers/supabase-setup.ts @@ -11,7 +11,7 @@ import { addEnvVariablesToFile, type EnvVariable } from "../core/env-setup"; async function writeSupabaseEnvFile(projectDir: string, databaseUrl: string) { try { - const envPath = path.join(projectDir, "apps/server", ".env"); + const envPath = path.join(projectDir, "packages/db", ".env"); const dbUrlToUse = databaseUrl || "postgresql://postgres:postgres@127.0.0.1:54322/postgres"; const variables: EnvVariable[] = [ @@ -138,8 +138,8 @@ function displayManualSupabaseInstructions(output?: string | null) { `"Manual Supabase Setup Instructions:" 1. Ensure Docker is installed and running. 2. Install the Supabase CLI (e.g., \`npm install -g supabase\`). -3. Run \`supabase init\` in your project's \`apps/server\` directory. -4. Run \`supabase start\` in your project's \`apps/server\` directory. +3. Run \`supabase init\` in your project's \`packages/db\` directory. +4. Run \`supabase start\` in your project's \`packages/db\` directory. 5. Copy the 'DB URL' from the output.${ output ? ` @@ -147,7 +147,7 @@ ${pc.bold("Relevant output from `supabase start`:")} ${pc.dim(output)}` : "" } -6. Add the DB URL to the .env file in \`apps/server/.env\` as \`DATABASE_URL\`: +6. Add the DB URL to the .env file in \`packages/db/.env\` as \`DATABASE_URL\`: ${pc.gray('DATABASE_URL="your_supabase_db_url"')}`, ); } @@ -159,7 +159,7 @@ export async function setupSupabase( const { projectDir, packageManager } = config; const manualDb = cliInput?.manualDb ?? false; - const serverDir = path.join(projectDir, "apps", "server"); + const serverDir = path.join(projectDir, "packages", "db"); try { await fs.ensureDir(serverDir); diff --git a/apps/cli/src/helpers/database-providers/turso-setup.ts b/apps/cli/src/helpers/database-providers/turso-setup.ts index 99afb85af..40ed9e6ba 100644 --- a/apps/cli/src/helpers/database-providers/turso-setup.ts +++ b/apps/cli/src/helpers/database-providers/turso-setup.ts @@ -158,7 +158,7 @@ async function createTursoDatabase(dbName: string, groupName: string | null) { } async function writeEnvFile(projectDir: string, config?: TursoConfig) { - const envPath = path.join(projectDir, "apps/server", ".env"); + const envPath = path.join(projectDir, "packages/db", ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -180,7 +180,7 @@ function displayManualSetupInstructions() { 1. Visit https://turso.tech and create an account 2. Create a new database from the dashboard 3. Get your database URL and authentication token -4. Add these credentials to the .env file in apps/server/.env +4. Add these credentials to the .env file in packages/db/.env DATABASE_URL=your_database_url DATABASE_AUTH_TOKEN=your_auth_token`); diff --git a/apps/cli/src/utils/config-validation.ts b/apps/cli/src/utils/config-validation.ts index 85c94eade..1459e00b1 100644 --- a/apps/cli/src/utils/config-validation.ts +++ b/apps/cli/src/utils/config-validation.ts @@ -156,7 +156,6 @@ export function validateDatabaseSetup( if (dbSetup && dbSetup !== "none") { const validation = setupValidations[dbSetup]; - // Special handling for PlanetScale - supports both postgres and mysql if (dbSetup === "planetscale") { if (database !== "postgres" && database !== "mysql") { exitWithError(validation.errorMessage); diff --git a/apps/cli/templates/api/orpc/web/nuxt/app/plugins/orpc.ts.hbs b/apps/cli/templates/api/orpc/web/nuxt/app/plugins/orpc.ts.hbs index 43257cf51..2b22dc961 100644 --- a/apps/cli/templates/api/orpc/web/nuxt/app/plugins/orpc.ts.hbs +++ b/apps/cli/templates/api/orpc/web/nuxt/app/plugins/orpc.ts.hbs @@ -1,5 +1,5 @@ import { defineNuxtPlugin, useRuntimeConfig } from '#app' -import type { AppRouterClient } from "../../../server/src/routers/index"; +import type { AppRouterClient } from "@{{projectName}}/api/src/routers/index"; import { createORPCClient } from '@orpc/client' import { RPCLink } from '@orpc/client/fetch' import { createTanstackQueryUtils } from "@orpc/tanstack-query"; diff --git a/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs b/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs index b13564840..ff80fb2c6 100644 --- a/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs +++ b/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs @@ -3,7 +3,7 @@ import { RPCLink } from "@orpc/client/fetch"; import { createTanstackQueryUtils } from "@orpc/tanstack-query"; import { QueryCache, QueryClient } from "@tanstack/react-query"; import { toast } from "sonner"; -import type { AppRouterClient } from "../../../server/src/routers/index"; +import type { AppRouterClient } from "@{{projectName}}/api/src/routers/index"; export const queryClient = new QueryClient({ queryCache: new QueryCache({ diff --git a/apps/cli/templates/api/orpc/web/solid/src/utils/orpc.ts.hbs b/apps/cli/templates/api/orpc/web/solid/src/utils/orpc.ts.hbs index 8dabcd0ce..75a9c4e3a 100644 --- a/apps/cli/templates/api/orpc/web/solid/src/utils/orpc.ts.hbs +++ b/apps/cli/templates/api/orpc/web/solid/src/utils/orpc.ts.hbs @@ -2,7 +2,7 @@ import { createORPCClient } from "@orpc/client"; import { RPCLink } from "@orpc/client/fetch"; import { createTanstackQueryUtils } from "@orpc/tanstack-query"; import { QueryCache, QueryClient } from "@tanstack/solid-query"; -import type { AppRouterClient } from "../../../server/src/routers/index"; +import type { AppRouterClient } from "@{{projectName}}/api/src/routers/index"; export const queryClient = new QueryClient({ queryCache: new QueryCache({ diff --git a/apps/cli/templates/api/orpc/web/svelte/src/lib/orpc.ts.hbs b/apps/cli/templates/api/orpc/web/svelte/src/lib/orpc.ts.hbs index f95cdab51..c4edbaed0 100644 --- a/apps/cli/templates/api/orpc/web/svelte/src/lib/orpc.ts.hbs +++ b/apps/cli/templates/api/orpc/web/svelte/src/lib/orpc.ts.hbs @@ -3,7 +3,7 @@ import { createORPCClient } from "@orpc/client"; import { RPCLink } from "@orpc/client/fetch"; import { createTanstackQueryUtils } from "@orpc/tanstack-query"; import { QueryCache, QueryClient } from "@tanstack/svelte-query"; -import type { AppRouterClient } from "../../../server/src/routers/index"; +import type { AppRouterClient } from "@{{projectName}}/api/src/routers/index"; export const queryClient = new QueryClient({ queryCache: new QueryCache({ diff --git a/apps/cli/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs b/apps/cli/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs index 8132362c7..946e16b00 100644 --- a/apps/cli/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs +++ b/apps/cli/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs @@ -47,13 +47,13 @@ export const trpc = createTRPCOptionsProxy({ {{else if (includes frontend 'tanstack-start')}} import { createTRPCContext } from "@trpc/tanstack-react-query"; -import type { AppRouter } from "../../../server/src/routers"; +import type { AppRouter } from "@{{projectName}}/api/src/routers/index"; export const { TRPCProvider, useTRPC, useTRPCClient } = createTRPCContext(); {{else}} -import type { AppRouter } from "../../../server/src/routers"; +import type { AppRouter } from "@{{projectName}}/api/src/routers/index"; import { QueryCache, QueryClient } from "@tanstack/react-query"; import { createTRPCClient, httpBatchLink } from "@trpc/client"; import { createTRPCOptionsProxy } from "@trpc/tanstack-react-query"; diff --git a/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs b/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs index 5188a2485..5b84906ff 100644 --- a/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs +++ b/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs @@ -1,8 +1,8 @@ import { defineConfig } from "drizzle-kit"; export default defineConfig({ - schema: "./src/db/schema", - out: "./src/db/migrations", + schema: "./src/schema", + out: "./src/migrations", dialect: "mysql", dbCredentials: { url: process.env.DATABASE_URL || "", diff --git a/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs b/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs index c1775ea71..18a910941 100644 --- a/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs +++ b/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs @@ -1,8 +1,8 @@ import { defineConfig } from "drizzle-kit"; export default defineConfig({ - schema: "./src/db/schema", - out: "./src/db/migrations", + schema: "./src/schema", + out: "./src/migrations", dialect: "postgresql", dbCredentials: { url: process.env.DATABASE_URL || "", diff --git a/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs b/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs index 4bbf2f134..2a7663d62 100644 --- a/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs +++ b/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs @@ -1,8 +1,8 @@ import { defineConfig } from "drizzle-kit"; export default defineConfig({ - schema: "./src/db/schema", - out: "./src/db/migrations", + schema: "./src/schema", + out: "./src/migrations", {{#if (eq dbSetup "d1")}} // DOCS: https://orm.drizzle.team/docs/guides/d1-http-with-drizzle-kit dialect: "sqlite", diff --git a/apps/cli/templates/frontend/react/tanstack-router/src/routes/__root.tsx.hbs b/apps/cli/templates/frontend/react/tanstack-router/src/routes/__root.tsx.hbs index e1f92d43a..e747434a9 100644 --- a/apps/cli/templates/frontend/react/tanstack-router/src/routes/__root.tsx.hbs +++ b/apps/cli/templates/frontend/react/tanstack-router/src/routes/__root.tsx.hbs @@ -8,7 +8,7 @@ import type { QueryClient } from "@tanstack/react-query"; import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import { useState } from "react"; import { createTanstackQueryUtils } from "@orpc/tanstack-query"; -import type { AppRouterClient } from "../../../server/src/routers"; +import type { AppRouterClient } from "@{{projectName}}/api/src/routers/index"; import { createORPCClient } from "@orpc/client"; {{/if}} {{#if (eq api "trpc")}} diff --git a/apps/cli/templates/frontend/react/tanstack-start/src/routes/__root.tsx.hbs b/apps/cli/templates/frontend/react/tanstack-start/src/routes/__root.tsx.hbs index c0f53130e..ca7f90172 100644 --- a/apps/cli/templates/frontend/react/tanstack-start/src/routes/__root.tsx.hbs +++ b/apps/cli/templates/frontend/react/tanstack-start/src/routes/__root.tsx.hbs @@ -66,7 +66,7 @@ export interface RouterAppContext { {{else}} {{#if (eq api "trpc")}} import type { TRPCOptionsProxy } from "@trpc/tanstack-react-query"; -import type { AppRouter } from "../../../server/src/routers"; +import type { AppRouter } from "@{{projectName}}/api/src/routers/index"; export interface RouterAppContext { trpc: TRPCOptionsProxy; queryClient: QueryClient; From 3f31b7b33cedde152e0e4076bd8bed79b36d3269 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Mon, 29 Sep 2025 10:36:36 +0530 Subject: [PATCH 06/33] ok --- apps/cli/src/helpers/core/project-config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/cli/src/helpers/core/project-config.ts b/apps/cli/src/helpers/core/project-config.ts index 21458c70d..c90ddd442 100644 --- a/apps/cli/src/helpers/core/project-config.ts +++ b/apps/cli/src/helpers/core/project-config.ts @@ -37,7 +37,7 @@ async function updateRootPackageJson( const backendPackageName = options.backend === "convex" ? `@${options.projectName}/backend` : "server"; - const dbPackageName = "db"; + const dbPackageName = `@${options.projectName}/db`; let serverDevScript = ""; if (options.addons.includes("turborepo")) { From e02bd0a76f03955d78bcfd112f60bc920adbf0b3 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Tue, 30 Sep 2025 09:08:49 +0530 Subject: [PATCH 07/33] ok --- apps/cli/src/constants.ts | 2 +- apps/cli/src/helpers/core/api-setup.ts | 19 ++++++++ apps/cli/src/helpers/core/env-setup.ts | 27 ++--------- .../helpers/database-providers/d1-setup.ts | 8 ++-- .../docker-compose-setup.ts | 2 +- .../database-providers/mongodb-atlas-setup.ts | 4 +- .../helpers/database-providers/neon-setup.ts | 8 ++-- .../database-providers/planetscale-setup.ts | 10 ++-- .../prisma-postgres-setup.ts | 8 ++-- .../database-providers/supabase-setup.ts | 2 +- .../helpers/database-providers/turso-setup.ts | 4 +- apps/cli/src/utils/add-package-deps.ts | 14 ++++-- .../api/trpc/server/base/package.json.hbs | 14 +++--- .../trpc/server/base/src/routers/index.ts.hbs | 4 +- .../api/trpc/server/base/tsconfig.json.hbs | 11 +++-- .../better-auth/server/base/package.json.hbs | 13 +++-- .../better-auth/server/base/src/index.ts.hbs | 6 +-- .../better-auth/server/base/tsconfig.json.hbs | 11 +++-- .../backend/server/base/tsconfig.json.hbs | 14 ++---- .../backend/server/elysia/src/index.ts.hbs | 10 ++-- .../backend/server/express/src/index.ts.hbs | 10 ++-- .../backend/server/fastify/src/index.ts.hbs | 10 ++-- .../backend/server/hono/src/index.ts.hbs | 10 ++-- apps/cli/templates/base/_gitignore | 48 ++++++++++++++++++- apps/cli/templates/base/tsconfig.base.json | 23 +++++++++ apps/cli/templates/db/base/package.json.hbs | 12 +++-- apps/cli/templates/db/base/tsconfig.json.hbs | 11 +++-- .../db/drizzle/mysql/drizzle.config.ts.hbs | 5 ++ .../db/drizzle/postgres/drizzle.config.ts.hbs | 5 ++ .../db/drizzle/sqlite/drizzle.config.ts.hbs | 5 ++ .../drizzle/base/src/routers/todo.ts.hbs | 4 +- .../prisma/base/src/routers/todo.ts.hbs | 6 +-- 32 files changed, 223 insertions(+), 117 deletions(-) create mode 100644 apps/cli/templates/base/tsconfig.base.json diff --git a/apps/cli/src/constants.ts b/apps/cli/src/constants.ts index 47de29e61..17074e5cf 100644 --- a/apps/cli/src/constants.ts +++ b/apps/cli/src/constants.ts @@ -157,7 +157,7 @@ export const dependencyVersionMap = { // temporary workaround for alchemy + tanstack start nitropack: "^2.12.4", - dotenv: "^17.2.1", + dotenv: "^17.2.2", "@polar-sh/better-auth": "^1.1.3", "@polar-sh/sdk": "^0.34.16", diff --git a/apps/cli/src/helpers/core/api-setup.ts b/apps/cli/src/helpers/core/api-setup.ts index 6f35c89ae..e7d2cfabd 100644 --- a/apps/cli/src/helpers/core/api-setup.ts +++ b/apps/cli/src/helpers/core/api-setup.ts @@ -220,6 +220,25 @@ export async function setupApi(config: ProjectConfig) { projectDir: apiPackageDir, }); + // Add framework-specific dependencies for context types + const frameworkDeps: AvailableDependencies[] = []; + if (backend === "hono") { + frameworkDeps.push("hono"); + } else if (backend === "elysia") { + frameworkDeps.push("elysia"); + } else if (backend === "express") { + frameworkDeps.push("express", "@types/express"); + } else if (backend === "fastify") { + frameworkDeps.push("fastify"); + } + + if (frameworkDeps.length > 0) { + await addPackageDependency({ + dependencies: frameworkDeps, + projectDir: apiPackageDir, + }); + } + if (api === "trpc") { if (backend === "hono") { await addPackageDependency({ diff --git a/apps/cli/src/helpers/core/env-setup.ts b/apps/cli/src/helpers/core/env-setup.ts index 7e8c77b8a..2fee447a8 100644 --- a/apps/cli/src/helpers/core/env-setup.ts +++ b/apps/cli/src/helpers/core/env-setup.ts @@ -277,9 +277,6 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { return; } - const authDir = path.join(projectDir, "packages/auth"); - const apiDir = path.join(projectDir, "packages/api"); - const dbDir = path.join(projectDir, "packages/db"); const serverDir = path.join(projectDir, "apps/server"); let corsOrigin = "http://localhost:3001"; @@ -304,15 +301,15 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { if (config.runtime === "workers") { databaseUrl = "http://127.0.0.1:8080"; } else { - databaseUrl = "file:./local.db"; + databaseUrl = `file:${path.join(config.projectDir, "apps/server", "local.db")}`; } break; } } - if (await fs.pathExists(authDir)) { - const authEnvPath = path.join(authDir, ".env"); - const authVars: EnvVariable[] = [ + if (await fs.pathExists(serverDir)) { + const serverEnvPath = path.join(serverDir, ".env"); + const serverVars: EnvVariable[] = [ { key: "BETTER_AUTH_SECRET", value: generateAuthSecret(), @@ -333,13 +330,6 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { value: `${corsOrigin}/success?checkout_id={CHECKOUT_ID}`, condition: config.payments === "polar", }, - ]; - await addEnvVariablesToFile(authEnvPath, authVars); - } - - if (await fs.pathExists(apiDir)) { - const apiEnvPath = path.join(apiDir, ".env"); - const apiVars: EnvVariable[] = [ { key: "CORS_ORIGIN", value: corsOrigin, @@ -350,20 +340,13 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { value: "", condition: examples?.includes("ai") || false, }, - ]; - await addEnvVariablesToFile(apiEnvPath, apiVars); - } - - if (await fs.pathExists(dbDir)) { - const dbEnvPath = path.join(dbDir, ".env"); - const dbVars: EnvVariable[] = [ { key: "DATABASE_URL", value: databaseUrl, condition: database !== "none" && dbSetup === "none", }, ]; - await addEnvVariablesToFile(dbEnvPath, dbVars); + await addEnvVariablesToFile(serverEnvPath, serverVars); } const isUnifiedAlchemy = diff --git a/apps/cli/src/helpers/database-providers/d1-setup.ts b/apps/cli/src/helpers/database-providers/d1-setup.ts index 2f9913842..260a33ac7 100644 --- a/apps/cli/src/helpers/database-providers/d1-setup.ts +++ b/apps/cli/src/helpers/database-providers/d1-setup.ts @@ -7,7 +7,7 @@ export async function setupCloudflareD1(config: ProjectConfig) { const { projectDir, serverDeploy, orm } = config; if (serverDeploy === "wrangler") { - const envPath = path.join(projectDir, "packages/db", ".env"); + const envPath = path.join(projectDir, "apps/server", ".env"); const variables: EnvVariable[] = [ { @@ -36,11 +36,11 @@ export async function setupCloudflareD1(config: ProjectConfig) { (serverDeploy === "wrangler" || serverDeploy === "alchemy") && orm === "prisma" ) { - const envPath = path.join(projectDir, "packages/db", ".env"); + const envPath = path.join(projectDir, "apps/server", ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", - value: "file:./local.db", + value: `file:${path.join(projectDir, "apps/server", "local.db")}`, condition: true, }, ]; @@ -49,7 +49,7 @@ export async function setupCloudflareD1(config: ProjectConfig) { await addEnvVariablesToFile(envPath, variables); } catch (_err) {} - const serverDir = path.join(projectDir, "packages/db"); + const serverDir = path.join(projectDir, "apps/server"); await addPackageDependency({ dependencies: ["@prisma/adapter-d1"], projectDir: serverDir, diff --git a/apps/cli/src/helpers/database-providers/docker-compose-setup.ts b/apps/cli/src/helpers/database-providers/docker-compose-setup.ts index 98ee5f4c0..32b417765 100644 --- a/apps/cli/src/helpers/database-providers/docker-compose-setup.ts +++ b/apps/cli/src/helpers/database-providers/docker-compose-setup.ts @@ -23,7 +23,7 @@ async function writeEnvFile( database: Database, projectName: string, ) { - const envPath = path.join(projectDir, "packages/db", ".env"); + const envPath = path.join(projectDir, "apps/server", ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", diff --git a/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts b/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts index 6791042b2..6ee969de3 100644 --- a/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts +++ b/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts @@ -82,7 +82,7 @@ async function initMongoDBAtlas(serverDir: string) { async function writeEnvFile(projectDir: string, config?: MongoDBConfig) { try { - const envPath = path.join(projectDir, "packages/db", ".env"); + const envPath = path.join(projectDir, "apps/server", ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -125,7 +125,7 @@ export async function setupMongoDBAtlas( const { projectDir } = config; const manualDb = cliInput?.manualDb ?? false; - const serverDir = path.join(projectDir, "packages/db"); + const serverDir = path.join(projectDir, "apps/server"); try { await fs.ensureDir(serverDir); diff --git a/apps/cli/src/helpers/database-providers/neon-setup.ts b/apps/cli/src/helpers/database-providers/neon-setup.ts index e7b8ee4f6..f01c8421a 100644 --- a/apps/cli/src/helpers/database-providers/neon-setup.ts +++ b/apps/cli/src/helpers/database-providers/neon-setup.ts @@ -98,7 +98,7 @@ async function createNeonProject( } async function writeEnvFile(projectDir: string, config?: NeonConfig) { - const envPath = path.join(projectDir, "packages/db", ".env"); + const envPath = path.join(projectDir, "apps/server", ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -121,7 +121,7 @@ async function setupWithNeonDb( const s = spinner(); s.start("Creating Neon database using neondb..."); - const serverDir = path.join(projectDir, "packages/db"); + const serverDir = path.join(projectDir, "apps/server"); await fs.ensureDir(serverDir); const packageCmd = getPackageExecutionCommand( @@ -149,7 +149,7 @@ function displayManualSetupInstructions() { 1. Visit https://neon.tech and create an account 2. Create a new project from the dashboard 3. Get your connection string -4. Add the database URL to the .env file in packages/db/.env +4. Add the database URL to the .env file in apps/server/.env DATABASE_URL="your_connection_string"`); } @@ -246,7 +246,7 @@ export async function setupNeonPostgres( const finalSpinner = spinner(); finalSpinner.start("Configuring database connection"); - await fs.ensureDir(path.join(projectDir, "packages/db")); + await fs.ensureDir(path.join(projectDir, "apps/server")); await writeEnvFile(projectDir, neonConfig); finalSpinner.stop("Neon database configured!"); diff --git a/apps/cli/src/helpers/database-providers/planetscale-setup.ts b/apps/cli/src/helpers/database-providers/planetscale-setup.ts index 65c44428a..f2c94116a 100644 --- a/apps/cli/src/helpers/database-providers/planetscale-setup.ts +++ b/apps/cli/src/helpers/database-providers/planetscale-setup.ts @@ -6,7 +6,7 @@ import { addEnvVariablesToFile, type EnvVariable } from "../core/env-setup"; export async function setupPlanetScale(config: ProjectConfig) { const { projectDir, database, orm } = config; - const envPath = path.join(projectDir, "packages/db", ".env"); + const envPath = path.join(projectDir, "apps/server", ".env"); if (database === "mysql" && orm === "drizzle") { const variables: EnvVariable[] = [ @@ -33,7 +33,7 @@ export async function setupPlanetScale(config: ProjectConfig) { }, ]; - await fs.ensureDir(path.join(projectDir, "packages/db")); + await fs.ensureDir(path.join(projectDir, "apps/server")); await addEnvVariablesToFile(envPath, variables); } @@ -46,7 +46,7 @@ export async function setupPlanetScale(config: ProjectConfig) { }, ]; - await fs.ensureDir(path.join(projectDir, "packages/db")); + await fs.ensureDir(path.join(projectDir, "apps/server")); await addEnvVariablesToFile(envPath, variables); } @@ -60,7 +60,7 @@ export async function setupPlanetScale(config: ProjectConfig) { }, ]; - await fs.ensureDir(path.join(projectDir, "packages/db")); + await fs.ensureDir(path.join(projectDir, "apps/server")); await addEnvVariablesToFile(envPath, variables); } @@ -73,7 +73,7 @@ export async function setupPlanetScale(config: ProjectConfig) { }, ]; - await fs.ensureDir(path.join(projectDir, "packages/db")); + await fs.ensureDir(path.join(projectDir, "apps/server")); await addEnvVariablesToFile(envPath, variables); } } diff --git a/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts b/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts index 2c5aaa5fa..165d8d237 100644 --- a/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts +++ b/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts @@ -146,7 +146,7 @@ async function initPrismaDatabase( async function writeEnvFile(projectDir: string, config?: PrismaConfig) { try { - const envPath = path.join(projectDir, "packages/db", ".env"); + const envPath = path.join(projectDir, "apps/server", ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -175,7 +175,7 @@ async function addDotenvImportToPrismaConfig(projectDir: string) { try { const prismaConfigPath = path.join( projectDir, - "packages/db/prisma.config.ts", + "apps/server/prisma.config.ts", ); let content = await fs.readFile(prismaConfigPath, "utf8"); content = `import "dotenv/config";\n${content}`; @@ -191,7 +191,7 @@ function displayManualSetupInstructions() { 1. Visit https://console.prisma.io and create an account 2. Create a new PostgreSQL database from the dashboard 3. Get your database URL -4. Add the database URL to the .env file in packages/db/.env +4. Add the database URL to the .env file in apps/server/.env DATABASE_URL="your_database_url"`); } @@ -218,7 +218,7 @@ export async function setupPrismaPostgres( ) { const { packageManager, projectDir, orm } = config; const manualDb = cliInput?.manualDb ?? false; - const serverDir = path.join(projectDir, "packages/db"); + const serverDir = path.join(projectDir, "apps/server"); try { await fs.ensureDir(serverDir); diff --git a/apps/cli/src/helpers/database-providers/supabase-setup.ts b/apps/cli/src/helpers/database-providers/supabase-setup.ts index b9406877a..4f9173f8e 100644 --- a/apps/cli/src/helpers/database-providers/supabase-setup.ts +++ b/apps/cli/src/helpers/database-providers/supabase-setup.ts @@ -11,7 +11,7 @@ import { addEnvVariablesToFile, type EnvVariable } from "../core/env-setup"; async function writeSupabaseEnvFile(projectDir: string, databaseUrl: string) { try { - const envPath = path.join(projectDir, "packages/db", ".env"); + const envPath = path.join(projectDir, "apps/server", ".env"); const dbUrlToUse = databaseUrl || "postgresql://postgres:postgres@127.0.0.1:54322/postgres"; const variables: EnvVariable[] = [ diff --git a/apps/cli/src/helpers/database-providers/turso-setup.ts b/apps/cli/src/helpers/database-providers/turso-setup.ts index 40ed9e6ba..99afb85af 100644 --- a/apps/cli/src/helpers/database-providers/turso-setup.ts +++ b/apps/cli/src/helpers/database-providers/turso-setup.ts @@ -158,7 +158,7 @@ async function createTursoDatabase(dbName: string, groupName: string | null) { } async function writeEnvFile(projectDir: string, config?: TursoConfig) { - const envPath = path.join(projectDir, "packages/db", ".env"); + const envPath = path.join(projectDir, "apps/server", ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -180,7 +180,7 @@ function displayManualSetupInstructions() { 1. Visit https://turso.tech and create an account 2. Create a new database from the dashboard 3. Get your database URL and authentication token -4. Add these credentials to the .env file in packages/db/.env +4. Add these credentials to the .env file in apps/server/.env DATABASE_URL=your_database_url DATABASE_AUTH_TOKEN=your_auth_token`); diff --git a/apps/cli/src/utils/add-package-deps.ts b/apps/cli/src/utils/add-package-deps.ts index 6be80ef34..757a707ba 100644 --- a/apps/cli/src/utils/add-package-deps.ts +++ b/apps/cli/src/utils/add-package-deps.ts @@ -26,8 +26,7 @@ export const addPackageDependency = async (opts: { if (!pkgJson.devDependencies) pkgJson.devDependencies = {}; for (const pkgName of dependencies) { - const version = - customDependencies[pkgName] || dependencyVersionMap[pkgName]; + const version = dependencyVersionMap[pkgName]; if (version) { pkgJson.dependencies[pkgName] = version; } else { @@ -36,8 +35,7 @@ export const addPackageDependency = async (opts: { } for (const pkgName of devDependencies) { - const version = - customDevDependencies[pkgName] || dependencyVersionMap[pkgName]; + const version = dependencyVersionMap[pkgName]; if (version) { pkgJson.devDependencies[pkgName] = version; } else { @@ -47,6 +45,14 @@ export const addPackageDependency = async (opts: { } } + for (const [pkgName, version] of Object.entries(customDependencies)) { + pkgJson.dependencies[pkgName] = version; + } + + for (const [pkgName, version] of Object.entries(customDevDependencies)) { + pkgJson.devDependencies[pkgName] = version; + } + await fs.writeJson(pkgJsonPath, pkgJson, { spaces: 2, }); diff --git a/apps/cli/templates/api/trpc/server/base/package.json.hbs b/apps/cli/templates/api/trpc/server/base/package.json.hbs index e89788363..978b7e5fc 100644 --- a/apps/cli/templates/api/trpc/server/base/package.json.hbs +++ b/apps/cli/templates/api/trpc/server/base/package.json.hbs @@ -1,8 +1,14 @@ { "name": "@{{projectName}}/api", "exports": { - ".": "./dist/index.js", - "./*": "./dist/*.js" + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./*": { + "types": "./dist/*.d.ts", + "default": "./dist/*.js" + } }, "type": "module", "scripts": { @@ -14,9 +20,5 @@ }, "peerDependencies": { "typescript": "^5" - }, - "dependencies": { - "@{{projectName}}/auth": "workspace:*", - "@{{projectName}}/db": "workspace:*" } } \ No newline at end of file diff --git a/apps/cli/templates/api/trpc/server/base/src/routers/index.ts.hbs b/apps/cli/templates/api/trpc/server/base/src/routers/index.ts.hbs index 2804e1120..e394eb7c7 100644 --- a/apps/cli/templates/api/trpc/server/base/src/routers/index.ts.hbs +++ b/apps/cli/templates/api/trpc/server/base/src/routers/index.ts.hbs @@ -1,5 +1,5 @@ {{#if (eq api "orpc")}} -import { {{#if (eq auth "better-auth")}}protectedProcedure, {{/if}}publicProcedure } from "../lib/orpc"; +import { {{#if (eq auth "better-auth")}}protectedProcedure, {{/if}}publicProcedure } from "../index"; import type { RouterClient } from "@orpc/server"; {{#if (includes examples "todo")}} import { todoRouter } from "./todo"; @@ -27,7 +27,7 @@ export type AppRouterClient = RouterClient; import { {{#if (eq auth "better-auth")}}protectedProcedure, {{/if}}publicProcedure, router, -} from "../lib/trpc"; +} from "../index"; {{#if (includes examples "todo")}} import { todoRouter } from "./todo"; {{/if}} diff --git a/apps/cli/templates/api/trpc/server/base/tsconfig.json.hbs b/apps/cli/templates/api/trpc/server/base/tsconfig.json.hbs index 2e7085d0c..f290e2e59 100644 --- a/apps/cli/templates/api/trpc/server/base/tsconfig.json.hbs +++ b/apps/cli/templates/api/trpc/server/base/tsconfig.json.hbs @@ -1,10 +1,13 @@ { + "extends": "../../tsconfig.base.json", "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "bundler", + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "dist", + "composite": true, "types": [ "bun" - ], + ] } } \ No newline at end of file diff --git a/apps/cli/templates/auth/better-auth/server/base/package.json.hbs b/apps/cli/templates/auth/better-auth/server/base/package.json.hbs index 498ecf684..45b8d0e04 100644 --- a/apps/cli/templates/auth/better-auth/server/base/package.json.hbs +++ b/apps/cli/templates/auth/better-auth/server/base/package.json.hbs @@ -1,8 +1,14 @@ { "name": "@{{projectName}}/auth", "exports": { - ".": "./dist/index.js", - "./*": "./dist/*.js" + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./*": { + "types": "./dist/*.d.ts", + "default": "./dist/*.js" + } }, "type": "module", "scripts": { @@ -15,8 +21,5 @@ }, "peerDependencies": { "typescript": "^5" - }, - "dependencies": { - "@{{projectName}}/db": "workspace:*" } } \ No newline at end of file diff --git a/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs b/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs index bbb78a8aa..beba81ff0 100644 --- a/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs +++ b/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs @@ -8,7 +8,7 @@ import { expo } from "@better-auth/expo"; import { polar, checkout, portal } from "@polar-sh/better-auth"; import { polarClient } from "./payments"; {{/if}} -import prisma from "../db"; +import prisma from "@{{projectName}}/db"; export const auth = betterAuth({ database: prismaAdapter(prisma, { @@ -76,7 +76,7 @@ import { expo } from "@better-auth/expo"; import { polar, checkout, portal } from "@polar-sh/better-auth"; import { polarClient } from "./payments"; {{/if}} -import { db } from "../db"; +import { db } from "@{{projectName}}/db"; import * as schema from "@{{projectName}}/db/schema/auth"; export const auth = betterAuth({ @@ -144,7 +144,7 @@ import { expo } from "@better-auth/expo"; import { polar, checkout, portal } from "@polar-sh/better-auth"; import { polarClient } from "./payments"; {{/if}} -import { db } from "../db"; +import { db } from "@{{projectName}}/db"; import * as schema from "@{{projectName}}/db/schema/auth"; import { env } from "cloudflare:workers"; diff --git a/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs b/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs index 2e7085d0c..f290e2e59 100644 --- a/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs +++ b/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs @@ -1,10 +1,13 @@ { + "extends": "../../tsconfig.base.json", "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "bundler", + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "dist", + "composite": true, "types": [ "bun" - ], + ] } } \ No newline at end of file diff --git a/apps/cli/templates/backend/server/base/tsconfig.json.hbs b/apps/cli/templates/backend/server/base/tsconfig.json.hbs index e005871b1..d1695f423 100644 --- a/apps/cli/templates/backend/server/base/tsconfig.json.hbs +++ b/apps/cli/templates/backend/server/base/tsconfig.json.hbs @@ -1,12 +1,9 @@ { + "extends": "../../tsconfig.base.json", "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "bundler", - "verbatimModuleSyntax": true, - "strict": true, - "skipLibCheck": true, - "baseUrl": "./", + "composite": true, + "outDir": "dist", + "baseUrl": ".", "paths": { "@/*": ["./src/*"]{{#if (eq orm "prisma")}}, "prisma": ["node_modules/prisma"]{{/if}} @@ -24,8 +21,7 @@ "bun" {{/if}}{{#if (eq serverDeploy "alchemy")}}, "@cloudflare/workers-types"{{/if}} - ]{{#unless (or (eq backend "convex") (eq backend "none"))}}, - "composite": true{{/unless}}, + ], "jsx": "react-jsx"{{#if (eq backend "hono")}}, "jsxImportSource": "hono/jsx"{{/if}} } diff --git a/apps/cli/templates/backend/server/elysia/src/index.ts.hbs b/apps/cli/templates/backend/server/elysia/src/index.ts.hbs index fdb305b0b..7736b9ed2 100644 --- a/apps/cli/templates/backend/server/elysia/src/index.ts.hbs +++ b/apps/cli/templates/backend/server/elysia/src/index.ts.hbs @@ -9,8 +9,8 @@ import { google } from "@ai-sdk/google"; import { convertToModelMessages, streamText } from "ai"; {{/if}} {{#if (eq api "trpc")}} -import { createContext } from "./lib/context"; -import { appRouter } from "./routers/index"; +import { createContext } from "@{{projectName}}/api/context"; +import { appRouter } from "@{{projectName}}/api/routers/index"; import { fetchRequestHandler } from "@trpc/server/adapters/fetch"; {{/if}} {{#if (eq api "orpc")}} @@ -19,11 +19,11 @@ import { OpenAPIReferencePlugin } from "@orpc/openapi/plugins"; import { ZodToJsonSchemaConverter } from "@orpc/zod/zod4"; import { RPCHandler } from "@orpc/server/fetch"; import { onError } from "@orpc/server"; -import { appRouter } from "./routers"; -import { createContext } from "./lib/context"; +import { appRouter } from "@{{projectName}}/api/routers"; +import { createContext } from "@{{projectName}}/api/context"; {{/if}} {{#if (eq auth "better-auth")}} -import { auth } from "./lib/auth"; +import { auth } from "@{{projectName}}/auth"; {{/if}} {{#if (eq api "orpc")}} diff --git a/apps/cli/templates/backend/server/express/src/index.ts.hbs b/apps/cli/templates/backend/server/express/src/index.ts.hbs index 43cfa74f4..00f061df5 100644 --- a/apps/cli/templates/backend/server/express/src/index.ts.hbs +++ b/apps/cli/templates/backend/server/express/src/index.ts.hbs @@ -1,8 +1,8 @@ import "dotenv/config"; {{#if (eq api "trpc")}} import { createExpressMiddleware } from "@trpc/server/adapters/express"; -import { createContext } from "./lib/context"; -import { appRouter } from "./routers/index"; +import { createContext } from "@{{projectName}}/api/context"; +import { appRouter } from "@{{projectName}}/api/routers/index"; {{/if}} {{#if (eq api "orpc")}} import { OpenAPIHandler } from "@orpc/openapi/node"; @@ -10,9 +10,9 @@ import { OpenAPIReferencePlugin } from "@orpc/openapi/plugins"; import { ZodToJsonSchemaConverter } from "@orpc/zod/zod4"; import { RPCHandler } from "@orpc/server/node"; import { onError } from "@orpc/server"; -import { appRouter } from "./routers"; +import { appRouter } from "@{{projectName}}/api/routers"; {{#if (eq auth "better-auth")}} -import { createContext } from "./lib/context"; +import { createContext } from "@{{projectName}}/api/context"; {{/if}} {{/if}} import cors from "cors"; @@ -22,7 +22,7 @@ import { streamText, type UIMessage, convertToModelMessages } from "ai"; import { google } from "@ai-sdk/google"; {{/if}} {{#if (eq auth "better-auth")}} -import { auth } from "./lib/auth"; +import { auth } from "@{{projectName}}/auth"; import { toNodeHandler } from "better-auth/node"; {{/if}} diff --git a/apps/cli/templates/backend/server/fastify/src/index.ts.hbs b/apps/cli/templates/backend/server/fastify/src/index.ts.hbs index 79c88c19f..ca0e88c18 100644 --- a/apps/cli/templates/backend/server/fastify/src/index.ts.hbs +++ b/apps/cli/templates/backend/server/fastify/src/index.ts.hbs @@ -4,8 +4,8 @@ import fastifyCors from "@fastify/cors"; {{#if (eq api "trpc")}} import { fastifyTRPCPlugin, type FastifyTRPCPluginOptions } from "@trpc/server/adapters/fastify"; -import { createContext } from "./lib/context"; -import { appRouter, type AppRouter } from "./routers/index"; +import { createContext } from "@{{projectName}}/api/context"; +import { appRouter, type AppRouter } from "@{{projectName}}/api/routers/index"; {{/if}} {{#if (eq api "orpc")}} @@ -15,10 +15,10 @@ import { ZodToJsonSchemaConverter } from "@orpc/zod/zod4"; import { RPCHandler } from "@orpc/server/node"; import { CORSPlugin } from "@orpc/server/plugins"; import { onError } from "@orpc/server"; -import { appRouter } from "./routers/index"; +import { appRouter } from "@{{projectName}}/api/routers/index"; import { createServer } from "node:http"; {{#if (eq auth "better-auth")}} -import { createContext } from "./lib/context"; +import { createContext } from "@{{projectName}}/api/context"; {{/if}} {{/if}} @@ -28,7 +28,7 @@ import { google } from "@ai-sdk/google"; {{/if}} {{#if (eq auth "better-auth")}} -import { auth } from "./lib/auth"; +import { auth } from "@{{projectName}}/auth"; {{/if}} const baseCorsConfig = { diff --git a/apps/cli/templates/backend/server/hono/src/index.ts.hbs b/apps/cli/templates/backend/server/hono/src/index.ts.hbs index 35cb9aee2..5c9a1f765 100644 --- a/apps/cli/templates/backend/server/hono/src/index.ts.hbs +++ b/apps/cli/templates/backend/server/hono/src/index.ts.hbs @@ -10,16 +10,16 @@ import { OpenAPIReferencePlugin } from "@orpc/openapi/plugins"; import { ZodToJsonSchemaConverter } from "@orpc/zod/zod4"; import { RPCHandler } from "@orpc/server/fetch"; import { onError } from "@orpc/server"; -import { createContext } from "./lib/context"; -import { appRouter } from "./routers/index"; +import { createContext } from "@{{projectName}}/api/context"; +import { appRouter } from "@{{projectName}}/api/routers/index"; {{/if}} {{#if (eq api "trpc")}} import { trpcServer } from "@hono/trpc-server"; -import { createContext } from "./lib/context"; -import { appRouter } from "./routers/index"; +import { createContext } from "@{{projectName}}/api/context"; +import { appRouter } from "@{{projectName}}/api/routers/index"; {{/if}} {{#if (eq auth "better-auth")}} -import { auth } from "./lib/auth"; +import { auth } from "@{{projectName}}/auth"; {{/if}} import { Hono } from "hono"; import { cors } from "hono/cors"; diff --git a/apps/cli/templates/base/_gitignore b/apps/cli/templates/base/_gitignore index abfadf003..6542adf87 100644 --- a/apps/cli/templates/base/_gitignore +++ b/apps/cli/templates/base/_gitignore @@ -1,4 +1,50 @@ +# Dependencies node_modules +.pnp +.pnp.js + +# Build outputs +dist +build +*.tsbuildinfo + +# Environment variables +.env +.env*.local + +# IDEs and editors +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.idea +*.swp +*.swo +*~ +.DS_Store + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Turbo .turbo + +# Better-T-Stack .alchemy -.env \ No newline at end of file + +# Testing +coverage +.nyc_output + +# Misc +*.tgz +.cache +tmp +temp \ No newline at end of file diff --git a/apps/cli/templates/base/tsconfig.base.json b/apps/cli/templates/base/tsconfig.base.json new file mode 100644 index 000000000..940c8369e --- /dev/null +++ b/apps/cli/templates/base/tsconfig.base.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "lib": [ + "ESNext" + ], + "verbatimModuleSyntax": true, + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "noUncheckedIndexedAccess": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + } +} \ No newline at end of file diff --git a/apps/cli/templates/db/base/package.json.hbs b/apps/cli/templates/db/base/package.json.hbs index 22721fb85..56babc35f 100644 --- a/apps/cli/templates/db/base/package.json.hbs +++ b/apps/cli/templates/db/base/package.json.hbs @@ -2,8 +2,14 @@ "name": "@{{projectName}}/db", "type": "module", "exports": { - ".": "./dist/index.js", - "./*": "./dist/*.js" + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./*": { + "types": "./dist/*.d.ts", + "default": "./dist/*.js" + } }, "scripts": { "build": "tsdown" @@ -14,7 +20,5 @@ }, "peerDependencies": { "typescript": "^5" - }, - "dependencies": { } } \ No newline at end of file diff --git a/apps/cli/templates/db/base/tsconfig.json.hbs b/apps/cli/templates/db/base/tsconfig.json.hbs index 2e7085d0c..f290e2e59 100644 --- a/apps/cli/templates/db/base/tsconfig.json.hbs +++ b/apps/cli/templates/db/base/tsconfig.json.hbs @@ -1,10 +1,13 @@ { + "extends": "../../tsconfig.base.json", "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "bundler", + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "dist", + "composite": true, "types": [ "bun" - ], + ] } } \ No newline at end of file diff --git a/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs b/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs index 5b84906ff..f3737f568 100644 --- a/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs +++ b/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs @@ -1,4 +1,9 @@ import { defineConfig } from "drizzle-kit"; +import dotenv from "dotenv"; + +config({ + path: "../../apps/server/.env", +}); export default defineConfig({ schema: "./src/schema", diff --git a/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs b/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs index 18a910941..050b50270 100644 --- a/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs +++ b/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs @@ -1,4 +1,9 @@ import { defineConfig } from "drizzle-kit"; +import dotenv from "dotenv"; + +config({ + path: "../../apps/server/.env", +}); export default defineConfig({ schema: "./src/schema", diff --git a/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs b/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs index 2a7663d62..2fc78f460 100644 --- a/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs +++ b/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs @@ -1,4 +1,9 @@ import { defineConfig } from "drizzle-kit"; +import dotenv from "dotenv"; + +config({ + path: "../../apps/server/.env", +}); export default defineConfig({ schema: "./src/schema", diff --git a/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs b/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs index 1a1e8ff9b..4d054a6a7 100644 --- a/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs +++ b/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs @@ -39,10 +39,10 @@ export const todoRouter = { {{#if (eq api "trpc")}} import z from "zod"; -import { router, publicProcedure } from "../lib/trpc"; +import { router, publicProcedure } from "../index"; import { todo } from "../db/schema/todo"; import { eq } from "drizzle-orm"; -import { db } from "../db"; +import { db } from "@{{projectName}}/db"; export const todoRouter = router({ getAll: publicProcedure.query(async () => { diff --git a/apps/cli/templates/examples/todo/server/prisma/base/src/routers/todo.ts.hbs b/apps/cli/templates/examples/todo/server/prisma/base/src/routers/todo.ts.hbs index b9184b0fd..5168c3445 100644 --- a/apps/cli/templates/examples/todo/server/prisma/base/src/routers/todo.ts.hbs +++ b/apps/cli/templates/examples/todo/server/prisma/base/src/routers/todo.ts.hbs @@ -1,6 +1,6 @@ {{#if (eq api "orpc")}} import z from "zod"; -import prisma from "../db"; +import prisma from "@{{projectName}}/db"; import { publicProcedure } from "../index"; export const todoRouter = { @@ -52,8 +52,8 @@ export const todoRouter = { {{#if (eq api "trpc")}} import { TRPCError } from "@trpc/server"; import z from "zod"; -import prisma from "../db"; -import { publicProcedure, router } from "../lib/trpc"; +import prisma from "@{{projectName}}/db"; +import { publicProcedure, router } from "../index"; export const todoRouter = router({ getAll: publicProcedure.query(async () => { From 1b56df080798f224dd08061f18b49bfe75002386 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Tue, 30 Sep 2025 10:40:20 +0530 Subject: [PATCH 08/33] ok --- apps/cli/src/constants.ts | 1 + apps/cli/src/helpers/core/workspace-setup.ts | 20 +++++++++++++++++++ .../api/orpc/server/base/package.json.hbs | 3 +-- .../api/trpc/server/base/package.json.hbs | 3 +-- .../better-auth/server/base/package.json.hbs | 3 +-- .../backend/server/base/package.json.hbs | 1 - apps/cli/templates/base/package.json.hbs | 4 +--- apps/cli/templates/db/base/package.json.hbs | 3 +-- .../db/drizzle/mysql/drizzle.config.ts.hbs | 2 +- .../db/drizzle/postgres/drizzle.config.ts.hbs | 2 +- .../db/drizzle/sqlite/drizzle.config.ts.hbs | 2 +- 11 files changed, 29 insertions(+), 15 deletions(-) diff --git a/apps/cli/src/constants.ts b/apps/cli/src/constants.ts index 17074e5cf..f6bec70a0 100644 --- a/apps/cli/src/constants.ts +++ b/apps/cli/src/constants.ts @@ -158,6 +158,7 @@ export const dependencyVersionMap = { nitropack: "^2.12.4", dotenv: "^17.2.2", + tsdown: "^0.15.5", "@polar-sh/better-auth": "^1.1.3", "@polar-sh/sdk": "^0.34.16", diff --git a/apps/cli/src/helpers/core/workspace-setup.ts b/apps/cli/src/helpers/core/workspace-setup.ts index ad119d559..0fb6422ae 100644 --- a/apps/cli/src/helpers/core/workspace-setup.ts +++ b/apps/cli/src/helpers/core/workspace-setup.ts @@ -1,5 +1,6 @@ import path from "node:path"; import fs from "fs-extra"; +import type { AvailableDependencies } from "../../constants"; import type { ProjectConfig } from "../../types"; import { addPackageDependency } from "../../utils/add-package-deps"; @@ -11,9 +12,24 @@ export async function setupWorkspaceDependencies( const workspaceVersion = options.packageManager === "npm" ? "*" : "workspace:*"; + // Add common dependencies to all packages + const commonDeps: AvailableDependencies[] = ["dotenv"]; + const commonDevDeps: AvailableDependencies[] = ["tsdown"]; + + const dbPackageDir = path.join(projectDir, "packages/db"); + if (await fs.pathExists(dbPackageDir)) { + await addPackageDependency({ + dependencies: commonDeps, + devDependencies: commonDevDeps, + projectDir: dbPackageDir, + }); + } + const authPackageDir = path.join(projectDir, "packages/auth"); if (await fs.pathExists(authPackageDir)) { await addPackageDependency({ + dependencies: commonDeps, + devDependencies: commonDevDeps, customDependencies: { [`@${projectName}/db`]: workspaceVersion, }, @@ -24,6 +40,8 @@ export async function setupWorkspaceDependencies( const apiPackageDir = path.join(projectDir, "packages/api"); if (await fs.pathExists(apiPackageDir)) { await addPackageDependency({ + dependencies: commonDeps, + devDependencies: commonDevDeps, customDependencies: { [`@${projectName}/auth`]: workspaceVersion, [`@${projectName}/db`]: workspaceVersion, @@ -35,6 +53,8 @@ export async function setupWorkspaceDependencies( const serverPackageDir = path.join(projectDir, "apps/server"); if (await fs.pathExists(serverPackageDir)) { await addPackageDependency({ + dependencies: commonDeps, + devDependencies: commonDevDeps, customDependencies: { [`@${projectName}/api`]: workspaceVersion, [`@${projectName}/auth`]: workspaceVersion, diff --git a/apps/cli/templates/api/orpc/server/base/package.json.hbs b/apps/cli/templates/api/orpc/server/base/package.json.hbs index e89788363..315f3933e 100644 --- a/apps/cli/templates/api/orpc/server/base/package.json.hbs +++ b/apps/cli/templates/api/orpc/server/base/package.json.hbs @@ -9,8 +9,7 @@ "build": "tsdown" }, "devDependencies": { - "@types/bun": "latest", - "tsdown": "^0.15.5" + "@types/bun": "latest" }, "peerDependencies": { "typescript": "^5" diff --git a/apps/cli/templates/api/trpc/server/base/package.json.hbs b/apps/cli/templates/api/trpc/server/base/package.json.hbs index 978b7e5fc..ffeee5181 100644 --- a/apps/cli/templates/api/trpc/server/base/package.json.hbs +++ b/apps/cli/templates/api/trpc/server/base/package.json.hbs @@ -15,8 +15,7 @@ "build": "tsdown" }, "devDependencies": { - "@types/bun": "latest", - "tsdown": "^0.15.5" + "@types/bun": "latest" }, "peerDependencies": { "typescript": "^5" diff --git a/apps/cli/templates/auth/better-auth/server/base/package.json.hbs b/apps/cli/templates/auth/better-auth/server/base/package.json.hbs index 45b8d0e04..70eff9a76 100644 --- a/apps/cli/templates/auth/better-auth/server/base/package.json.hbs +++ b/apps/cli/templates/auth/better-auth/server/base/package.json.hbs @@ -16,8 +16,7 @@ }, "devDependencies": { "@types/bun": "latest", - "@types/node": "^24.5.2", - "tsdown": "^0.15.5" + "@types/node": "^24.5.2" }, "peerDependencies": { "typescript": "^5" diff --git a/apps/cli/templates/backend/server/base/package.json.hbs b/apps/cli/templates/backend/server/base/package.json.hbs index 728a483c4..e65dbf749 100644 --- a/apps/cli/templates/backend/server/base/package.json.hbs +++ b/apps/cli/templates/backend/server/base/package.json.hbs @@ -17,7 +17,6 @@ ], {{/if}} "devDependencies": { - "tsdown": "^0.15.1", "typescript": "^5.8.2" } } diff --git a/apps/cli/templates/base/package.json.hbs b/apps/cli/templates/base/package.json.hbs index 36575a3d4..84d5c799b 100644 --- a/apps/cli/templates/base/package.json.hbs +++ b/apps/cli/templates/base/package.json.hbs @@ -6,7 +6,5 @@ "apps/*", "packages/*" ], - "scripts": { - - } + "scripts": {} } diff --git a/apps/cli/templates/db/base/package.json.hbs b/apps/cli/templates/db/base/package.json.hbs index 56babc35f..f4c6354c7 100644 --- a/apps/cli/templates/db/base/package.json.hbs +++ b/apps/cli/templates/db/base/package.json.hbs @@ -15,8 +15,7 @@ "build": "tsdown" }, "devDependencies": { - "@types/node": "^24.5.2", - "tsdown": "^0.15.5" + "@types/node": "^24.5.2" }, "peerDependencies": { "typescript": "^5" diff --git a/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs b/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs index f3737f568..4bcf08bb3 100644 --- a/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs +++ b/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs @@ -1,7 +1,7 @@ import { defineConfig } from "drizzle-kit"; import dotenv from "dotenv"; -config({ +dotenv.config({ path: "../../apps/server/.env", }); diff --git a/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs b/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs index 050b50270..3a0fc0223 100644 --- a/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs +++ b/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs @@ -1,7 +1,7 @@ import { defineConfig } from "drizzle-kit"; import dotenv from "dotenv"; -config({ +dotenv.config({ path: "../../apps/server/.env", }); diff --git a/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs b/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs index 2fc78f460..ea67fffd4 100644 --- a/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs +++ b/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs @@ -1,7 +1,7 @@ import { defineConfig } from "drizzle-kit"; import dotenv from "dotenv"; -config({ +dotenv.config({ path: "../../apps/server/.env", }); From ace9371f8bb57630211dad03bb4458e24a6a88b1 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Tue, 30 Sep 2025 15:48:54 +0530 Subject: [PATCH 09/33] ok --- apps/cli/src/helpers/core/create-project.ts | 7 ++- apps/cli/src/helpers/core/workspace-setup.ts | 1 - .../api/orpc/server/base/package.json.hbs | 41 +++++++++-------- .../api/trpc/server/base/package.json.hbs | 42 +++++++++--------- .../better-auth/server/base/package.json.hbs | 44 +++++++++---------- .../backend/server/base/tsconfig.json.hbs | 1 - .../backend/server/base/tsdown.config.ts.hbs | 9 ++++ apps/cli/templates/db/base/package.json.hbs | 42 +++++++++--------- 8 files changed, 101 insertions(+), 86 deletions(-) create mode 100644 apps/cli/templates/backend/server/base/tsdown.config.ts.hbs diff --git a/apps/cli/src/helpers/core/create-project.ts b/apps/cli/src/helpers/core/create-project.ts index f80a21afa..d033f964c 100644 --- a/apps/cli/src/helpers/core/create-project.ts +++ b/apps/cli/src/helpers/core/create-project.ts @@ -31,6 +31,7 @@ import { setupFrontendTemplates, setupPaymentsTemplate, } from "./template-manager"; +import { spinner } from "@clack/prompts"; export async function createProject( options: ProjectConfig, @@ -40,6 +41,10 @@ export async function createProject( const isConvex = options.backend === "convex"; try { + const s = spinner(); + + s.start("Scaffolding project template..."); + await fs.ensureDir(projectDir); await copyBaseTemplate(projectDir, options); @@ -94,7 +99,7 @@ export async function createProject( await writeBtsConfig(options); - log.success("Project template successfully scaffolded!"); + s.stop("Project template successfully scaffolded!"); if (options.install) { await installDependencies({ diff --git a/apps/cli/src/helpers/core/workspace-setup.ts b/apps/cli/src/helpers/core/workspace-setup.ts index 0fb6422ae..39ac16c11 100644 --- a/apps/cli/src/helpers/core/workspace-setup.ts +++ b/apps/cli/src/helpers/core/workspace-setup.ts @@ -12,7 +12,6 @@ export async function setupWorkspaceDependencies( const workspaceVersion = options.packageManager === "npm" ? "*" : "workspace:*"; - // Add common dependencies to all packages const commonDeps: AvailableDependencies[] = ["dotenv"]; const commonDevDeps: AvailableDependencies[] = ["tsdown"]; diff --git a/apps/cli/templates/api/orpc/server/base/package.json.hbs b/apps/cli/templates/api/orpc/server/base/package.json.hbs index 315f3933e..32ea3c630 100644 --- a/apps/cli/templates/api/orpc/server/base/package.json.hbs +++ b/apps/cli/templates/api/orpc/server/base/package.json.hbs @@ -1,21 +1,24 @@ { - "name": "@{{projectName}}/api", - "exports": { - ".": "./dist/index.js", - "./*": "./dist/*.js" - }, - "type": "module", - "scripts": { - "build": "tsdown" - }, - "devDependencies": { - "@types/bun": "latest" - }, - "peerDependencies": { - "typescript": "^5" - }, - "dependencies": { - "@{{projectName}}/auth": "workspace:*", - "@{{projectName}}/db": "workspace:*" - } + "name": "@{{projectName}}/api", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./src/index.ts" + }, + "./*": { + "types": "./dist/*.d.ts", + "default": "./src/*.ts" + } + }, + "type": "module", + "scripts": { + "build": "tsdown" + }, + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5" + }, + "dependencies": {} } \ No newline at end of file diff --git a/apps/cli/templates/api/trpc/server/base/package.json.hbs b/apps/cli/templates/api/trpc/server/base/package.json.hbs index ffeee5181..8d8e10361 100644 --- a/apps/cli/templates/api/trpc/server/base/package.json.hbs +++ b/apps/cli/templates/api/trpc/server/base/package.json.hbs @@ -1,23 +1,23 @@ { - "name": "@{{projectName}}/api", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./*": { - "types": "./dist/*.d.ts", - "default": "./dist/*.js" - } - }, - "type": "module", - "scripts": { - "build": "tsdown" - }, - "devDependencies": { - "@types/bun": "latest" - }, - "peerDependencies": { - "typescript": "^5" - } + "name": "@{{projectName}}/api", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./src/index.ts" + }, + "./*": { + "types": "./dist/*.d.ts", + "default": "./src/*.ts" + } + }, + "type": "module", + "scripts": { + "build": "tsdown" + }, + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5" + } } \ No newline at end of file diff --git a/apps/cli/templates/auth/better-auth/server/base/package.json.hbs b/apps/cli/templates/auth/better-auth/server/base/package.json.hbs index 70eff9a76..82c4087eb 100644 --- a/apps/cli/templates/auth/better-auth/server/base/package.json.hbs +++ b/apps/cli/templates/auth/better-auth/server/base/package.json.hbs @@ -1,24 +1,24 @@ { - "name": "@{{projectName}}/auth", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./*": { - "types": "./dist/*.d.ts", - "default": "./dist/*.js" - } - }, - "type": "module", - "scripts": { - "build": "tsdown" - }, - "devDependencies": { - "@types/bun": "latest", - "@types/node": "^24.5.2" - }, - "peerDependencies": { - "typescript": "^5" - } + "name": "@{{projectName}}/auth", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./src/index.ts" + }, + "./*": { + "types": "./dist/*.d.ts", + "default": "./src/*.ts" + } + }, + "type": "module", + "scripts": { + "build": "tsdown" + }, + "devDependencies": { + "@types/bun": "latest", + "@types/node": "^24.5.2" + }, + "peerDependencies": { + "typescript": "^5" + } } \ No newline at end of file diff --git a/apps/cli/templates/backend/server/base/tsconfig.json.hbs b/apps/cli/templates/backend/server/base/tsconfig.json.hbs index d1695f423..58bcfd051 100644 --- a/apps/cli/templates/backend/server/base/tsconfig.json.hbs +++ b/apps/cli/templates/backend/server/base/tsconfig.json.hbs @@ -8,7 +8,6 @@ "@/*": ["./src/*"]{{#if (eq orm "prisma")}}, "prisma": ["node_modules/prisma"]{{/if}} }, - "outDir": "./dist", "types": [ {{#if (eq runtime "node")}} "node" diff --git a/apps/cli/templates/backend/server/base/tsdown.config.ts.hbs b/apps/cli/templates/backend/server/base/tsdown.config.ts.hbs new file mode 100644 index 000000000..7a10188c8 --- /dev/null +++ b/apps/cli/templates/backend/server/base/tsdown.config.ts.hbs @@ -0,0 +1,9 @@ +import { defineConfig } from 'tsdown'; + +export default defineConfig({ + entry: './src/index.ts', + format: 'esm', + outDir: './dist', + clean: true, + noExternal: [/@{{projectName}}\/.*/] +}); diff --git a/apps/cli/templates/db/base/package.json.hbs b/apps/cli/templates/db/base/package.json.hbs index f4c6354c7..f99e75138 100644 --- a/apps/cli/templates/db/base/package.json.hbs +++ b/apps/cli/templates/db/base/package.json.hbs @@ -1,23 +1,23 @@ { - "name": "@{{projectName}}/db", - "type": "module", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./*": { - "types": "./dist/*.d.ts", - "default": "./dist/*.js" - } - }, - "scripts": { - "build": "tsdown" - }, - "devDependencies": { - "@types/node": "^24.5.2" - }, - "peerDependencies": { - "typescript": "^5" - } + "name": "@{{projectName}}/db", + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./src/index.ts" + }, + "./*": { + "types": "./dist/*.d.ts", + "default": "./src/*.ts" + } + }, + "scripts": { + "build": "tsdown" + }, + "devDependencies": { + "@types/node": "^24.5.2" + }, + "peerDependencies": { + "typescript": "^5" + } } \ No newline at end of file From 0a09b64ef7ea5299a51d7eeff952b96c06d1dabf Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Tue, 30 Sep 2025 17:32:30 +0530 Subject: [PATCH 10/33] ok --- apps/cli/src/constants.ts | 2 ++ apps/cli/src/helpers/core/api-setup.ts | 28 +++++++++++++++++-- apps/cli/src/helpers/core/backend-setup.ts | 27 +++++++++++++++++- apps/cli/src/helpers/core/create-project.ts | 7 +---- apps/cli/src/helpers/core/db-setup.ts | 2 +- apps/cli/src/helpers/core/workspace-setup.ts | 2 +- .../prisma-postgres-setup.ts | 11 ++++---- .../backend/server/base/tsdown.config.ts.hbs | 7 ++++- .../backend/server/elysia/src/index.ts.hbs | 2 +- .../backend/server/express/src/index.ts.hbs | 2 +- .../db/prisma/mongodb/prisma.config.ts.hbs | 6 +++- .../db/prisma/mongodb/src/index.ts.hbs | 2 +- .../db/prisma/mysql/prisma.config.ts.hbs | 6 +++- .../db/prisma/mysql/src/index.ts.hbs | 2 +- .../db/prisma/postgres/prisma.config.ts.hbs | 10 +++++-- .../db/prisma/postgres/src/index.ts.hbs | 2 +- .../db/prisma/sqlite/prisma.config.ts.hbs | 6 +++- .../db/prisma/sqlite/src/index.ts.hbs | 6 ++-- 18 files changed, 99 insertions(+), 31 deletions(-) diff --git a/apps/cli/src/constants.ts b/apps/cli/src/constants.ts index f6bec70a0..3e5908823 100644 --- a/apps/cli/src/constants.ts +++ b/apps/cli/src/constants.ts @@ -53,6 +53,7 @@ export const dependencyVersionMap = { "@planetscale/database": "^1.19.0", "@libsql/client": "^0.15.9", + libsql: "^0.5.22", "@neondatabase/serverless": "^1.0.1", pg: "^8.14.1", @@ -159,6 +160,7 @@ export const dependencyVersionMap = { dotenv: "^17.2.2", tsdown: "^0.15.5", + zod: "^4.1.11", "@polar-sh/better-auth": "^1.1.3", "@polar-sh/sdk": "^0.34.16", diff --git a/apps/cli/src/helpers/core/api-setup.ts b/apps/cli/src/helpers/core/api-setup.ts index e7d2cfabd..7009ff602 100644 --- a/apps/cli/src/helpers/core/api-setup.ts +++ b/apps/cli/src/helpers/core/api-setup.ts @@ -196,8 +196,15 @@ function getConvexDependencies(frontend: Frontend[]) { } export async function setupApi(config: ProjectConfig) { - const { api, projectName, frontend, backend, packageManager, projectDir } = - config; + const { + api, + projectName, + frontend, + backend, + packageManager, + projectDir, + auth, + } = config; const isConvex = backend === "convex"; const webDir = path.join(projectDir, "apps/web"); @@ -250,8 +257,25 @@ export async function setupApi(config: ProjectConfig) { dependencies: ["@elysiajs/trpc"], projectDir: apiPackageDir, }); + } else if (backend === "express") { + await addPackageDependency({ + dependencies: ["@trpc/server"], + projectDir: apiPackageDir, + }); + } else if (backend === "fastify") { + await addPackageDependency({ + dependencies: ["@trpc/server"], + projectDir: apiPackageDir, + }); } } + + if (auth === "better-auth") { + await addPackageDependency({ + dependencies: ["better-auth"], + projectDir: apiPackageDir, + }); + } } if (webDirExists && apiDeps.web) { diff --git a/apps/cli/src/helpers/core/backend-setup.ts b/apps/cli/src/helpers/core/backend-setup.ts index 0425042e4..0f26c7182 100644 --- a/apps/cli/src/helpers/core/backend-setup.ts +++ b/apps/cli/src/helpers/core/backend-setup.ts @@ -4,7 +4,7 @@ import type { ProjectConfig } from "../../types"; import { addPackageDependency } from "../../utils/add-package-deps"; export async function setupBackendDependencies(config: ProjectConfig) { - const { backend, runtime, api, projectDir } = config; + const { backend, runtime, api, auth, examples, projectDir } = config; if (backend === "convex") { return; @@ -16,6 +16,7 @@ export async function setupBackendDependencies(config: ProjectConfig) { const dependencies: AvailableDependencies[] = []; const devDependencies: AvailableDependencies[] = []; + // Framework-specific dependencies if (framework === "hono") { dependencies.push("hono"); if (api === "trpc") { @@ -50,6 +51,30 @@ export async function setupBackendDependencies(config: ProjectConfig) { } } + // API-specific dependencies + if (api === "trpc") { + if (framework === "express") { + dependencies.push("@trpc/server"); + } else if (framework === "fastify") { + dependencies.push("@trpc/server"); + } else if (runtime === "workers") { + dependencies.push("@trpc/server"); + } + } else if (api === "orpc") { + dependencies.push("@orpc/server", "@orpc/openapi", "@orpc/zod"); + } + + // Auth-specific dependencies + if (auth === "better-auth") { + dependencies.push("better-auth"); + } + + // AI example dependencies + if (examples.includes("ai")) { + dependencies.push("ai", "@ai-sdk/google"); + } + + // Runtime-specific dependencies if (runtime === "bun") { devDependencies.push("@types/bun"); } diff --git a/apps/cli/src/helpers/core/create-project.ts b/apps/cli/src/helpers/core/create-project.ts index d033f964c..f80a21afa 100644 --- a/apps/cli/src/helpers/core/create-project.ts +++ b/apps/cli/src/helpers/core/create-project.ts @@ -31,7 +31,6 @@ import { setupFrontendTemplates, setupPaymentsTemplate, } from "./template-manager"; -import { spinner } from "@clack/prompts"; export async function createProject( options: ProjectConfig, @@ -41,10 +40,6 @@ export async function createProject( const isConvex = options.backend === "convex"; try { - const s = spinner(); - - s.start("Scaffolding project template..."); - await fs.ensureDir(projectDir); await copyBaseTemplate(projectDir, options); @@ -99,7 +94,7 @@ export async function createProject( await writeBtsConfig(options); - s.stop("Project template successfully scaffolded!"); + log.success("Project template successfully scaffolded!"); if (options.install) { await installDependencies({ diff --git a/apps/cli/src/helpers/core/db-setup.ts b/apps/cli/src/helpers/core/db-setup.ts index d7e0b17c9..92f75d6e3 100644 --- a/apps/cli/src/helpers/core/db-setup.ts +++ b/apps/cli/src/helpers/core/db-setup.ts @@ -66,7 +66,7 @@ export async function setupDatabase( } else if (orm === "drizzle") { if (database === "sqlite") { await addPackageDependency({ - dependencies: ["drizzle-orm", "@libsql/client"], + dependencies: ["drizzle-orm", "@libsql/client", "libsql"], devDependencies: ["drizzle-kit"], projectDir: dbPackageDir, }); diff --git a/apps/cli/src/helpers/core/workspace-setup.ts b/apps/cli/src/helpers/core/workspace-setup.ts index 39ac16c11..8e296508c 100644 --- a/apps/cli/src/helpers/core/workspace-setup.ts +++ b/apps/cli/src/helpers/core/workspace-setup.ts @@ -12,7 +12,7 @@ export async function setupWorkspaceDependencies( const workspaceVersion = options.packageManager === "npm" ? "*" : "workspace:*"; - const commonDeps: AvailableDependencies[] = ["dotenv"]; + const commonDeps: AvailableDependencies[] = ["dotenv", "zod"]; const commonDevDeps: AvailableDependencies[] = ["tsdown"]; const dbPackageDir = path.join(projectDir, "packages/db"); diff --git a/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts b/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts index 165d8d237..ebad6210d 100644 --- a/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts +++ b/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts @@ -175,10 +175,10 @@ async function addDotenvImportToPrismaConfig(projectDir: string) { try { const prismaConfigPath = path.join( projectDir, - "apps/server/prisma.config.ts", + "packages/db/prisma.config.ts", ); let content = await fs.readFile(prismaConfigPath, "utf8"); - content = `import "dotenv/config";\n${content}`; + content = `import dotenv from "dotenv";\ndotenv.config({ path: "../../apps/server/.env" });\n${content}`; await fs.writeFile(prismaConfigPath, content); } catch (_error) { consola.error("Failed to update prisma.config.ts"); @@ -196,11 +196,12 @@ function displayManualSetupInstructions() { DATABASE_URL="your_database_url"`); } -async function addPrismaAccelerateExtension(serverDir: string) { +async function addPrismaAccelerateExtension(projectDir: string) { try { + const dbPackageDir = path.join(projectDir, "packages/db"); await addPackageDependency({ dependencies: ["@prisma/extension-accelerate"], - projectDir: serverDir, + projectDir: dbPackageDir, }); return true; @@ -291,7 +292,7 @@ export async function setupPrismaPostgres( if (orm === "prisma") { await addDotenvImportToPrismaConfig(projectDir); - await addPrismaAccelerateExtension(serverDir); + await addPrismaAccelerateExtension(projectDir); } const connectionType = diff --git a/apps/cli/templates/backend/server/base/tsdown.config.ts.hbs b/apps/cli/templates/backend/server/base/tsdown.config.ts.hbs index 7a10188c8..f3aef1956 100644 --- a/apps/cli/templates/backend/server/base/tsdown.config.ts.hbs +++ b/apps/cli/templates/backend/server/base/tsdown.config.ts.hbs @@ -5,5 +5,10 @@ export default defineConfig({ format: 'esm', outDir: './dist', clean: true, - noExternal: [/@{{projectName}}\/.*/] + noExternal: [/@{{projectName}}\/.*/], + {{#if (and (eq orm "drizzle") (eq database "sqlite") (or (eq dbSetup "turso") (eq dbSetup "none")))}} + external: [ + /^@libsql\/(linux|darwin|win32).*/ + ] + {{/if}} }); diff --git a/apps/cli/templates/backend/server/elysia/src/index.ts.hbs b/apps/cli/templates/backend/server/elysia/src/index.ts.hbs index 7736b9ed2..e00b90441 100644 --- a/apps/cli/templates/backend/server/elysia/src/index.ts.hbs +++ b/apps/cli/templates/backend/server/elysia/src/index.ts.hbs @@ -19,7 +19,7 @@ import { OpenAPIReferencePlugin } from "@orpc/openapi/plugins"; import { ZodToJsonSchemaConverter } from "@orpc/zod/zod4"; import { RPCHandler } from "@orpc/server/fetch"; import { onError } from "@orpc/server"; -import { appRouter } from "@{{projectName}}/api/routers"; +import { appRouter } from "@{{projectName}}/api/routers/index"; import { createContext } from "@{{projectName}}/api/context"; {{/if}} {{#if (eq auth "better-auth")}} diff --git a/apps/cli/templates/backend/server/express/src/index.ts.hbs b/apps/cli/templates/backend/server/express/src/index.ts.hbs index 00f061df5..475faf3fb 100644 --- a/apps/cli/templates/backend/server/express/src/index.ts.hbs +++ b/apps/cli/templates/backend/server/express/src/index.ts.hbs @@ -10,7 +10,7 @@ import { OpenAPIReferencePlugin } from "@orpc/openapi/plugins"; import { ZodToJsonSchemaConverter } from "@orpc/zod/zod4"; import { RPCHandler } from "@orpc/server/node"; import { onError } from "@orpc/server"; -import { appRouter } from "@{{projectName}}/api/routers"; +import { appRouter } from "@{{projectName}}/api/routers/index"; {{#if (eq auth "better-auth")}} import { createContext } from "@{{projectName}}/api/context"; {{/if}} diff --git a/apps/cli/templates/db/prisma/mongodb/prisma.config.ts.hbs b/apps/cli/templates/db/prisma/mongodb/prisma.config.ts.hbs index b6cf18b94..4aa544e7b 100644 --- a/apps/cli/templates/db/prisma/mongodb/prisma.config.ts.hbs +++ b/apps/cli/templates/db/prisma/mongodb/prisma.config.ts.hbs @@ -1,6 +1,10 @@ -import "dotenv/config"; import path from "node:path"; import type { PrismaConfig } from "prisma"; +import dotenv from "dotenv"; + +dotenv.config({ + path: "../../apps/server/.env", +}); export default { schema: path.join("prisma", "schema"), diff --git a/apps/cli/templates/db/prisma/mongodb/src/index.ts.hbs b/apps/cli/templates/db/prisma/mongodb/src/index.ts.hbs index daa212a7b..bf16a10b2 100644 --- a/apps/cli/templates/db/prisma/mongodb/src/index.ts.hbs +++ b/apps/cli/templates/db/prisma/mongodb/src/index.ts.hbs @@ -1,4 +1,4 @@ -import { PrismaClient } from "../../prisma/generated/client"; +import { PrismaClient } from "../prisma/generated/client"; const prisma = new PrismaClient(); diff --git a/apps/cli/templates/db/prisma/mysql/prisma.config.ts.hbs b/apps/cli/templates/db/prisma/mysql/prisma.config.ts.hbs index b6cf18b94..4aa544e7b 100644 --- a/apps/cli/templates/db/prisma/mysql/prisma.config.ts.hbs +++ b/apps/cli/templates/db/prisma/mysql/prisma.config.ts.hbs @@ -1,6 +1,10 @@ -import "dotenv/config"; import path from "node:path"; import type { PrismaConfig } from "prisma"; +import dotenv from "dotenv"; + +dotenv.config({ + path: "../../apps/server/.env", +}); export default { schema: path.join("prisma", "schema"), diff --git a/apps/cli/templates/db/prisma/mysql/src/index.ts.hbs b/apps/cli/templates/db/prisma/mysql/src/index.ts.hbs index 81193e877..5fbc8bb9a 100644 --- a/apps/cli/templates/db/prisma/mysql/src/index.ts.hbs +++ b/apps/cli/templates/db/prisma/mysql/src/index.ts.hbs @@ -1,4 +1,4 @@ -import { PrismaClient } from "../../prisma/generated/client"; +import { PrismaClient } from "../prisma/generated/client"; {{#if (eq dbSetup "planetscale")}} import { PrismaPlanetScale } from '@prisma/adapter-planetscale' diff --git a/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs b/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs index 2266314c0..65887edfb 100644 --- a/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs +++ b/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs @@ -1,8 +1,12 @@ -{{#unless (eq dbSetup "prisma-postgres")}} -import "dotenv/config"; -{{/unless}} import path from "node:path"; import type { PrismaConfig } from "prisma"; +{{#unless (eq dbSetup "prisma-postgres")}} +import dotenv from "dotenv"; + +dotenv.config({ + path: "../../apps/server/.env", +}); +{{/unless}} export default { schema: path.join("prisma", "schema"), diff --git a/apps/cli/templates/db/prisma/postgres/src/index.ts.hbs b/apps/cli/templates/db/prisma/postgres/src/index.ts.hbs index 6afc3bbcc..c83c72363 100644 --- a/apps/cli/templates/db/prisma/postgres/src/index.ts.hbs +++ b/apps/cli/templates/db/prisma/postgres/src/index.ts.hbs @@ -1,4 +1,4 @@ -import { PrismaClient } from "../../prisma/generated/client"; +import { PrismaClient } from "../prisma/generated/client"; {{#if (and (eq dbSetup "prisma-postgres") (eq orm "prisma"))}} import { withAccelerate } from "@prisma/extension-accelerate"; diff --git a/apps/cli/templates/db/prisma/sqlite/prisma.config.ts.hbs b/apps/cli/templates/db/prisma/sqlite/prisma.config.ts.hbs index b6cf18b94..4aa544e7b 100644 --- a/apps/cli/templates/db/prisma/sqlite/prisma.config.ts.hbs +++ b/apps/cli/templates/db/prisma/sqlite/prisma.config.ts.hbs @@ -1,6 +1,10 @@ -import "dotenv/config"; import path from "node:path"; import type { PrismaConfig } from "prisma"; +import dotenv from "dotenv"; + +dotenv.config({ + path: "../../apps/server/.env", +}); export default { schema: path.join("prisma", "schema"), diff --git a/apps/cli/templates/db/prisma/sqlite/src/index.ts.hbs b/apps/cli/templates/db/prisma/sqlite/src/index.ts.hbs index 926a78b25..2c39edc3f 100644 --- a/apps/cli/templates/db/prisma/sqlite/src/index.ts.hbs +++ b/apps/cli/templates/db/prisma/sqlite/src/index.ts.hbs @@ -1,7 +1,7 @@ {{#if (eq dbSetup "d1")}} import { env } from "cloudflare:workers"; import { PrismaD1 } from "@prisma/adapter-d1"; -import { PrismaClient } from "../../prisma/generated/client"; +import { PrismaClient } from "../prisma/generated/client"; const adapter = new PrismaD1(env.DB); const prisma = new PrismaClient({ adapter }); @@ -9,7 +9,7 @@ const prisma = new PrismaClient({ adapter }); export default prisma; {{else if (eq dbSetup "turso")}} import { PrismaLibSQL } from "@prisma/adapter-libsql"; -import { PrismaClient } from "../../prisma/generated/client"; +import { PrismaClient } from "../prisma/generated/client"; const adapter = new PrismaLibSQL({ url: process.env.DATABASE_URL || "", @@ -20,7 +20,7 @@ const prisma = new PrismaClient({ adapter }); export default prisma; {{else}} -import { PrismaClient } from "../../prisma/generated/client"; +import { PrismaClient } from "../prisma/generated/client"; const prisma = new PrismaClient(); From fa0949feaaa430e28c764db00a59ddc7b7cfffd3 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Tue, 30 Sep 2025 21:13:02 +0530 Subject: [PATCH 11/33] add catalogs --- CATALOG_IMPLEMENTATION.md | 183 ++++++++++++ apps/cli/package.json | 3 +- apps/cli/src/helpers/core/create-project.ts | 3 + apps/cli/src/utils/setup-catalogs.ts | 195 +++++++++++++ apps/cli/test/catalogs.test.ts | 292 ++++++++++++++++++++ bun.lock | 1 + 6 files changed, 676 insertions(+), 1 deletion(-) create mode 100644 CATALOG_IMPLEMENTATION.md create mode 100644 apps/cli/src/utils/setup-catalogs.ts create mode 100644 apps/cli/test/catalogs.test.ts diff --git a/CATALOG_IMPLEMENTATION.md b/CATALOG_IMPLEMENTATION.md new file mode 100644 index 000000000..adfe35524 --- /dev/null +++ b/CATALOG_IMPLEMENTATION.md @@ -0,0 +1,183 @@ +# Catalog Implementation Summary + +## Overview +Implemented support for Bun and pnpm catalogs to reduce duplication of dependency versions across monorepo packages. + +## What are Catalogs? +Catalogs allow you to define dependency versions once in a central location and reference them across multiple packages using the `catalog:` protocol. This ensures version consistency and makes updates easier. + +## Implementation Details + +### Files Created/Modified + +1. **`apps/cli/src/utils/setup-catalogs.ts`** (NEW) + - Main implementation file for catalog functionality + - Scans all workspace packages for dependencies: + - apps/server + - apps/web + - packages/api + - packages/db + - packages/auth + - packages/backend (for Convex) + - Identifies duplicated dependencies (those appearing in 2+ packages) + - Creates catalog entries for Bun or pnpm + - Updates package.json files to use `catalog:` protocol + +2. **`apps/cli/src/helpers/core/create-project.ts`** (MODIFIED) + - Added `setupCatalogs()` call after `updatePackageConfigurations()` + - Catalogs are set up after all dependencies are added but before deployment setup + +3. **`apps/cli/package.json`** (MODIFIED) + - Added `yaml` dependency for pnpm-workspace.yaml parsing + +4. **`apps/cli/test/catalogs.test.ts`** (NEW) + - Comprehensive test suite covering: + - Bun catalog setup + - pnpm catalog setup + - npm (no catalog) behavior + - Convex backend catalog support + - Selective cataloging (only duplicates) + +## How It Works + +### For Bun +- Catalogs are added to `package.json` under `workspaces.catalog` +- If `workspaces` is an array, it's converted to object format: + +**Before (array format)**: +```json +{ + "workspaces": ["apps/*", "packages/*"] +} +``` + +**After (object format with catalog)**: +```json +{ + "workspaces": { + "packages": ["apps/*", "packages/*"], + "catalog": { + "dotenv": "^16.4.7", + "zod": "^4.1.11", + "tsdown": "^0.15.4" + } + } +} +``` + +### For pnpm +- Catalogs are added to `pnpm-workspace.yaml`: +```yaml +packages: + - "apps/*" + - "packages/*" +catalog: + dotenv: ^16.4.7 + zod: ^4.1.11 + tsdown: ^0.15.4 +``` + +### For npm +- No catalogs are created (npm doesn't support this feature) +- Dependencies keep their actual version numbers + +### Package References +- Package.json files in workspace packages use `catalog:` protocol: +```json +{ + "dependencies": { + "dotenv": "catalog:", + "zod": "catalog:" + } +} +``` + +## Behavior + +### When Catalogs Are Created +- Package manager is Bun or pnpm +- At least one dependency appears in multiple packages +- Works for both regular server backends (Hono, Elysia) and Convex backends + +### What Gets Cataloged +- Only external dependencies (not workspace packages like `@project-name/db`) +- Only dependencies that appear in 2+ of these packages: + - apps/server + - apps/web + - packages/api + - packages/db + - packages/auth + - packages/backend (for Convex) + +### What Doesn't Get Cataloged +- Workspace dependencies (those starting with `@project-name/`) +- Dependencies with `workspace:` protocol +- Dependencies appearing in only one package +- Any dependencies when npm is the package manager + +## Benefits + +1. **Version Consistency**: All packages use the same version of shared dependencies +2. **Easier Updates**: Update a dependency version in one place instead of multiple +3. **Reduced Duplication**: Less repetition in package.json files +4. **Better Maintenance**: Clear view of which dependencies are standardized + +## Example Output + +For a project using Bun with hono backend, better-auth, and trpc: + +**Root package.json (Bun)**: +```json +{ + "workspaces": { + "catalog": { + "dotenv": "^16.4.7", + "zod": "^4.1.11", + "tsdown": "^0.15.4" + } + } +} +``` + +**packages/db/package.json**: +```json +{ + "dependencies": { + "dotenv": "catalog:", + "zod": "catalog:" + }, + "devDependencies": { + "tsdown": "catalog:" + } +} +``` + +**packages/auth/package.json**: +```json +{ + "dependencies": { + "dotenv": "catalog:", + "zod": "catalog:", + "@my-app/db": "workspace:*" + }, + "devDependencies": { + "tsdown": "catalog:" + } +} +``` + +## Testing + +Run tests with: +```bash +cd apps/cli +bun test catalogs.test.ts +``` + +Tests verify: +- Bun catalog creation and references +- pnpm catalog creation and references +- npm skips catalog creation +- Convex backend catalog support (packages/backend) +- Only duplicated dependencies are cataloged +- Web app dependencies are included in catalogs diff --git a/apps/cli/package.json b/apps/cli/package.json index cec43190d..819387de4 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -77,6 +77,7 @@ "tinyglobby": "^0.2.15", "trpc-cli": "^0.11.0", "ts-morph": "^27.0.0", + "yaml": "^2.7.0", "zod": "^4.1.11" }, "devDependencies": { @@ -88,4 +89,4 @@ "typescript": "^5.9.2", "vitest": "^3.2.4" } -} +} \ No newline at end of file diff --git a/apps/cli/src/helpers/core/create-project.ts b/apps/cli/src/helpers/core/create-project.ts index f80a21afa..b5c164338 100644 --- a/apps/cli/src/helpers/core/create-project.ts +++ b/apps/cli/src/helpers/core/create-project.ts @@ -3,6 +3,7 @@ import fs from "fs-extra"; import type { ProjectConfig } from "../../types"; import { writeBtsConfig } from "../../utils/bts-config"; import { exitWithError } from "../../utils/errors"; +import { setupCatalogs } from "../../utils/setup-catalogs"; import { setupAddons } from "../addons/addons-setup"; import { setupExamples } from "../addons/examples-setup"; import { setupApi } from "../core/api-setup"; @@ -87,6 +88,8 @@ export async function createProject( await setupEnvironmentVariables(options); await updatePackageConfigurations(projectDir, options); + await setupCatalogs(projectDir, options); + await setupWebDeploy(options); await setupServerDeploy(options); diff --git a/apps/cli/src/utils/setup-catalogs.ts b/apps/cli/src/utils/setup-catalogs.ts new file mode 100644 index 000000000..526cfd497 --- /dev/null +++ b/apps/cli/src/utils/setup-catalogs.ts @@ -0,0 +1,195 @@ +import path from "node:path"; +import fs from "fs-extra"; +import yaml from "yaml"; +import type { ProjectConfig } from "../types"; + +type PackageInfo = { + path: string; + dependencies: Record; + devDependencies: Record; +}; + +type CatalogEntry = { + version: string; + packages: string[]; +}; + +export async function setupCatalogs( + projectDir: string, + options: ProjectConfig, +) { + if (options.packageManager === "npm") { + return; + } + + const packagePaths = [ + "apps/server", + "apps/web", + "packages/api", + "packages/db", + "packages/auth", + "packages/backend", + ]; + + const packagesInfo: PackageInfo[] = []; + + for (const pkgPath of packagePaths) { + const fullPath = path.join(projectDir, pkgPath); + const pkgJsonPath = path.join(fullPath, "package.json"); + + if (await fs.pathExists(pkgJsonPath)) { + const pkgJson = await fs.readJson(pkgJsonPath); + packagesInfo.push({ + path: fullPath, + dependencies: pkgJson.dependencies || {}, + devDependencies: pkgJson.devDependencies || {}, + }); + } + } + + const catalog = findDuplicateDependencies(packagesInfo, options.projectName); + + if (Object.keys(catalog).length === 0) { + return; + } + + if (options.packageManager === "bun") { + await setupBunCatalogs(projectDir, catalog); + } else if (options.packageManager === "pnpm") { + await setupPnpmCatalogs(projectDir, catalog); + } + + await updatePackageJsonsWithCatalogs(packagesInfo, catalog); +} + +function findDuplicateDependencies( + packagesInfo: PackageInfo[], + projectName: string, +): Record { + const depCount = new Map(); + const projectScope = `@${projectName}/`; + + for (const pkg of packagesInfo) { + const allDeps = { + ...pkg.dependencies, + ...pkg.devDependencies, + }; + + for (const [depName, version] of Object.entries(allDeps)) { + if (depName.startsWith(projectScope)) { + continue; + } + + if (version.startsWith("workspace:")) { + continue; + } + + const existing = depCount.get(depName); + if (existing) { + existing.packages.push(pkg.path); + } else { + depCount.set(depName, { + version, + packages: [pkg.path], + }); + } + } + } + + const catalog: Record = {}; + for (const [depName, info] of depCount.entries()) { + if (info.packages.length > 1) { + catalog[depName] = info.version; + } + } + + return catalog; +} + +async function setupBunCatalogs( + projectDir: string, + catalog: Record, +) { + const rootPkgJsonPath = path.join(projectDir, "package.json"); + const rootPkgJson = await fs.readJson(rootPkgJsonPath); + + if (!rootPkgJson.workspaces) { + rootPkgJson.workspaces = {}; + } + + if (Array.isArray(rootPkgJson.workspaces)) { + rootPkgJson.workspaces = { + packages: rootPkgJson.workspaces, + catalog, + }; + } else if (typeof rootPkgJson.workspaces === "object") { + if (!rootPkgJson.workspaces.catalog) { + rootPkgJson.workspaces.catalog = {}; + } + rootPkgJson.workspaces.catalog = { + ...rootPkgJson.workspaces.catalog, + ...catalog, + }; + } + + await fs.writeJson(rootPkgJsonPath, rootPkgJson, { spaces: 2 }); +} + +async function setupPnpmCatalogs( + projectDir: string, + catalog: Record, +) { + const workspaceYamlPath = path.join(projectDir, "pnpm-workspace.yaml"); + + if (!(await fs.pathExists(workspaceYamlPath))) { + return; + } + + const workspaceContent = await fs.readFile(workspaceYamlPath, "utf-8"); + const workspaceYaml = yaml.parse(workspaceContent); + + if (!workspaceYaml.catalog) { + workspaceYaml.catalog = {}; + } + + workspaceYaml.catalog = { + ...workspaceYaml.catalog, + ...catalog, + }; + + await fs.writeFile(workspaceYamlPath, yaml.stringify(workspaceYaml)); +} + +async function updatePackageJsonsWithCatalogs( + packagesInfo: PackageInfo[], + catalog: Record, +) { + for (const pkg of packagesInfo) { + const pkgJsonPath = path.join(pkg.path, "package.json"); + const pkgJson = await fs.readJson(pkgJsonPath); + + let updated = false; + + if (pkgJson.dependencies) { + for (const depName of Object.keys(pkgJson.dependencies)) { + if (catalog[depName]) { + pkgJson.dependencies[depName] = "catalog:"; + updated = true; + } + } + } + + if (pkgJson.devDependencies) { + for (const depName of Object.keys(pkgJson.devDependencies)) { + if (catalog[depName]) { + pkgJson.devDependencies[depName] = "catalog:"; + updated = true; + } + } + } + + if (updated) { + await fs.writeJson(pkgJsonPath, pkgJson, { spaces: 2 }); + } + } +} diff --git a/apps/cli/test/catalogs.test.ts b/apps/cli/test/catalogs.test.ts new file mode 100644 index 000000000..f31fdc957 --- /dev/null +++ b/apps/cli/test/catalogs.test.ts @@ -0,0 +1,292 @@ +import path from "node:path"; +import fs from "fs-extra"; +import { afterEach, beforeEach, describe, expect, it } from "vitest"; +import yaml from "yaml"; +import { init } from "../src"; +import { cleanupSmokeDirectory } from "./test-utils"; + +const SMOKE_DIR = path.join(process.cwd(), ".smoke"); + +describe("Catalogs", () => { + beforeEach(async () => { + await fs.ensureDir(SMOKE_DIR); + }); + + afterEach(async () => { + await cleanupSmokeDirectory(); + }); + + it("should setup Bun catalogs for duplicated dependencies", async () => { + const projectName = "test-bun-catalog"; + const projectDir = path.join(SMOKE_DIR, projectName); + + await init(projectName, { + packageManager: "bun", + backend: "hono", + runtime: "bun", + database: "postgres", + orm: "drizzle", + auth: "better-auth", + frontend: ["tanstack-router"], + api: "trpc", + install: false, + git: false, + directoryConflict: "overwrite", + disableAnalytics: true, + dbSetup: "none", + }); + + const rootPkgJson = await fs.readJson( + path.join(projectDir, "package.json"), + ); + expect(rootPkgJson.workspaces.catalog).toBeDefined(); + expect(Object.keys(rootPkgJson.workspaces.catalog).length).toBeGreaterThan( + 0, + ); + + const serverPkgJson = await fs.readJson( + path.join(projectDir, "apps/server/package.json"), + ); + const dbPkgJson = await fs.readJson( + path.join(projectDir, "packages/db/package.json"), + ); + + const hasCatalogDep = + Object.values(serverPkgJson.dependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ) || + Object.values(dbPkgJson.dependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ); + + expect(hasCatalogDep).toBe(true); + }); + + it("should setup pnpm catalogs for duplicated dependencies", async () => { + const projectName = "test-pnpm-catalog"; + const projectDir = path.join(SMOKE_DIR, projectName); + + await init(projectName, { + packageManager: "pnpm", + backend: "hono", + runtime: "bun", + database: "postgres", + orm: "drizzle", + auth: "better-auth", + frontend: ["tanstack-router"], + api: "trpc", + install: false, + git: false, + directoryConflict: "overwrite", + disableAnalytics: true, + dbSetup: "none", + }); + + const workspaceYamlPath = path.join(projectDir, "pnpm-workspace.yaml"); + const workspaceContent = await fs.readFile(workspaceYamlPath, "utf-8"); + const workspaceYaml = yaml.parse(workspaceContent); + + expect(workspaceYaml.catalog).toBeDefined(); + expect(Object.keys(workspaceYaml.catalog).length).toBeGreaterThan(0); + + const serverPkgJson = await fs.readJson( + path.join(projectDir, "apps/server/package.json"), + ); + const dbPkgJson = await fs.readJson( + path.join(projectDir, "packages/db/package.json"), + ); + + const hasCatalogDep = + Object.values(serverPkgJson.dependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ) || + Object.values(dbPkgJson.dependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ); + + expect(hasCatalogDep).toBe(true); + }); + + it("should NOT setup catalogs for npm", async () => { + const projectName = "test-npm-no-catalog"; + const projectDir = path.join(SMOKE_DIR, projectName); + + await init(projectName, { + packageManager: "npm", + backend: "hono", + runtime: "bun", + database: "postgres", + orm: "drizzle", + auth: "better-auth", + frontend: ["tanstack-router"], + api: "trpc", + install: false, + git: false, + directoryConflict: "overwrite", + disableAnalytics: true, + dbSetup: "none", + }); + + const rootPkgJson = await fs.readJson( + path.join(projectDir, "package.json"), + ); + expect(rootPkgJson.workspaces.catalog).toBeUndefined(); + + const serverPkgJson = await fs.readJson( + path.join(projectDir, "apps/server/package.json"), + ); + + const hasCatalogDep = Object.values(serverPkgJson.dependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ); + + expect(hasCatalogDep).toBe(false); + }); + + it("should setup catalogs for Convex backend", async () => { + const projectName = "test-convex-catalog"; + const projectDir = path.join(SMOKE_DIR, projectName); + + await init(projectName, { + packageManager: "bun", + backend: "convex", + frontend: ["tanstack-router"], + auth: "none", + install: false, + git: false, + directoryConflict: "overwrite", + disableAnalytics: true, + }); + + const rootPkgJson = await fs.readJson( + path.join(projectDir, "package.json"), + ); + + if (rootPkgJson.workspaces?.catalog) { + expect( + Object.keys(rootPkgJson.workspaces.catalog).length, + ).toBeGreaterThanOrEqual(0); + } + + const backendPkgJsonPath = path.join( + projectDir, + "packages/backend/package.json", + ); + if (await fs.pathExists(backendPkgJsonPath)) { + const backendPkgJson = await fs.readJson(backendPkgJsonPath); + const hasCatalogDep = + Object.values(backendPkgJson.dependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ) || + Object.values(backendPkgJson.devDependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ); + + if ( + rootPkgJson.workspaces?.catalog && + Object.keys(rootPkgJson.workspaces.catalog).length > 0 + ) { + expect(hasCatalogDep).toBe(true); + } + } + }); + + it("should convert workspaces array to object format for Bun", async () => { + const projectName = "test-bun-workspaces-conversion"; + const projectDir = path.join(SMOKE_DIR, projectName); + + await init(projectName, { + packageManager: "bun", + backend: "hono", + runtime: "bun", + database: "postgres", + orm: "drizzle", + auth: "better-auth", + frontend: ["tanstack-router"], + api: "trpc", + install: false, + git: false, + directoryConflict: "overwrite", + disableAnalytics: true, + dbSetup: "none", + }); + + const rootPkgJson = await fs.readJson( + path.join(projectDir, "package.json"), + ); + + expect(rootPkgJson.workspaces).toBeDefined(); + expect(typeof rootPkgJson.workspaces).toBe("object"); + expect(Array.isArray(rootPkgJson.workspaces)).toBe(false); + + if ( + typeof rootPkgJson.workspaces === "object" && + !Array.isArray(rootPkgJson.workspaces) + ) { + expect(rootPkgJson.workspaces.packages).toBeDefined(); + expect(Array.isArray(rootPkgJson.workspaces.packages)).toBe(true); + expect(rootPkgJson.workspaces.packages).toContain("apps/*"); + expect(rootPkgJson.workspaces.packages).toContain("packages/*"); + expect(rootPkgJson.workspaces.catalog).toBeDefined(); + } + }); + + it("should only catalog dependencies that appear in multiple packages", async () => { + const projectName = "test-bun-selective-catalog"; + const projectDir = path.join(SMOKE_DIR, projectName); + + await init(projectName, { + packageManager: "bun", + backend: "hono", + runtime: "bun", + database: "postgres", + orm: "drizzle", + auth: "better-auth", + frontend: ["tanstack-router"], + api: "trpc", + install: false, + git: false, + directoryConflict: "overwrite", + disableAnalytics: true, + dbSetup: "none", + }); + + const rootPkgJson = await fs.readJson( + path.join(projectDir, "package.json"), + ); + const catalog = rootPkgJson.workspaces.catalog; + + if (catalog) { + for (const depName of Object.keys(catalog)) { + let count = 0; + const packagePaths = [ + "apps/server", + "apps/web", + "packages/api", + "packages/db", + "packages/auth", + "packages/backend", + ]; + + for (const pkgPath of packagePaths) { + const fullPath = path.join(projectDir, pkgPath); + const pkgJsonPath = path.join(fullPath, "package.json"); + + if (await fs.pathExists(pkgJsonPath)) { + const pkgJson = await fs.readJson(pkgJsonPath); + const allDeps = { + ...pkgJson.dependencies, + ...pkgJson.devDependencies, + }; + + if (allDeps[depName]) { + count++; + } + } + } + + expect(count).toBeGreaterThan(1); + } + } + }); +}); diff --git a/bun.lock b/bun.lock index ca569b52e..bb03cb79c 100644 --- a/bun.lock +++ b/bun.lock @@ -34,6 +34,7 @@ "tinyglobby": "^0.2.15", "trpc-cli": "^0.11.0", "ts-morph": "^27.0.0", + "yaml": "^2.7.0", "zod": "^4.1.11", }, "devDependencies": { From e99132c62595c3c8977144d051752fd2ef37709e Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Tue, 30 Sep 2025 22:50:36 +0530 Subject: [PATCH 12/33] ok --- .../todo/server/drizzle/mysql/src/{db => }/schema/todo.ts | 0 .../todo/server/drizzle/postgres/src/{db => }/schema/todo.ts | 0 .../todo/server/drizzle/sqlite/src/{db => }/schema/todo.ts | 0 .../server/mongoose/mongodb/src/{db => }/models/todo.model.ts.hbs | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename apps/cli/templates/examples/todo/server/drizzle/mysql/src/{db => }/schema/todo.ts (100%) rename apps/cli/templates/examples/todo/server/drizzle/postgres/src/{db => }/schema/todo.ts (100%) rename apps/cli/templates/examples/todo/server/drizzle/sqlite/src/{db => }/schema/todo.ts (100%) rename apps/cli/templates/examples/todo/server/mongoose/mongodb/src/{db => }/models/todo.model.ts.hbs (100%) diff --git a/apps/cli/templates/examples/todo/server/drizzle/mysql/src/db/schema/todo.ts b/apps/cli/templates/examples/todo/server/drizzle/mysql/src/schema/todo.ts similarity index 100% rename from apps/cli/templates/examples/todo/server/drizzle/mysql/src/db/schema/todo.ts rename to apps/cli/templates/examples/todo/server/drizzle/mysql/src/schema/todo.ts diff --git a/apps/cli/templates/examples/todo/server/drizzle/postgres/src/db/schema/todo.ts b/apps/cli/templates/examples/todo/server/drizzle/postgres/src/schema/todo.ts similarity index 100% rename from apps/cli/templates/examples/todo/server/drizzle/postgres/src/db/schema/todo.ts rename to apps/cli/templates/examples/todo/server/drizzle/postgres/src/schema/todo.ts diff --git a/apps/cli/templates/examples/todo/server/drizzle/sqlite/src/db/schema/todo.ts b/apps/cli/templates/examples/todo/server/drizzle/sqlite/src/schema/todo.ts similarity index 100% rename from apps/cli/templates/examples/todo/server/drizzle/sqlite/src/db/schema/todo.ts rename to apps/cli/templates/examples/todo/server/drizzle/sqlite/src/schema/todo.ts diff --git a/apps/cli/templates/examples/todo/server/mongoose/mongodb/src/db/models/todo.model.ts.hbs b/apps/cli/templates/examples/todo/server/mongoose/mongodb/src/models/todo.model.ts.hbs similarity index 100% rename from apps/cli/templates/examples/todo/server/mongoose/mongodb/src/db/models/todo.model.ts.hbs rename to apps/cli/templates/examples/todo/server/mongoose/mongodb/src/models/todo.model.ts.hbs From 43d8eb0e239ce473dd9e3ca551b7a0069bfe5ae6 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Tue, 30 Sep 2025 23:57:56 +0530 Subject: [PATCH 13/33] ok --- apps/cli/templates/backend/server/express/src/index.ts.hbs | 2 +- apps/cli/templates/backend/server/fastify/src/index.ts.hbs | 2 +- apps/cli/templates/backend/server/hono/src/index.ts.hbs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/cli/templates/backend/server/express/src/index.ts.hbs b/apps/cli/templates/backend/server/express/src/index.ts.hbs index 475faf3fb..366beb574 100644 --- a/apps/cli/templates/backend/server/express/src/index.ts.hbs +++ b/apps/cli/templates/backend/server/express/src/index.ts.hbs @@ -105,7 +105,7 @@ app.use(express.json()); app.post("/ai", async (req, res) => { const { messages = [] } = (req.body || {}) as { messages: UIMessage[] }; const result = streamText({ - model: google("gemini-1.5-flash"), + model: google("gemini-2.5-flash"), messages: convertToModelMessages(messages), }); result.pipeUIMessageStreamToResponse(res); diff --git a/apps/cli/templates/backend/server/fastify/src/index.ts.hbs b/apps/cli/templates/backend/server/fastify/src/index.ts.hbs index ca0e88c18..58627794b 100644 --- a/apps/cli/templates/backend/server/fastify/src/index.ts.hbs +++ b/apps/cli/templates/backend/server/fastify/src/index.ts.hbs @@ -161,7 +161,7 @@ interface AiRequestBody { fastify.post('/ai', async function (request) { const { messages } = request.body as AiRequestBody; const result = streamText({ - model: google('gemini-1.5-flash'), + model: google('gemini-2.5-flash'), messages: convertToModelMessages(messages), }); diff --git a/apps/cli/templates/backend/server/hono/src/index.ts.hbs b/apps/cli/templates/backend/server/hono/src/index.ts.hbs index 5c9a1f765..32e482e01 100644 --- a/apps/cli/templates/backend/server/hono/src/index.ts.hbs +++ b/apps/cli/templates/backend/server/hono/src/index.ts.hbs @@ -121,7 +121,7 @@ app.post("/ai", async (c) => { const body = await c.req.json(); const uiMessages = body.messages || []; const result = streamText({ - model: google("gemini-1.5-flash"), + model: google("gemini-2.5-flash"), messages: convertToModelMessages(uiMessages), }); @@ -137,7 +137,7 @@ app.post("/ai", async (c) => { apiKey: env.GOOGLE_GENERATIVE_AI_API_KEY, }); const result = streamText({ - model: google("gemini-1.5-flash"), + model: google("gemini-2.5-flash"), messages: convertToModelMessages(uiMessages), }); From dbf44e156b34b6c161188541c4d20aedd35e1bcb Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Wed, 1 Oct 2025 09:38:38 +0530 Subject: [PATCH 14/33] ok --- FULLSTACK_BACKEND_IMPLEMENTATION.md | 178 ++++++ apps/cli/src/helpers/core/create-project.ts | 13 +- apps/cli/src/helpers/core/project-config.ts | 26 +- apps/cli/src/helpers/core/template-manager.ts | 205 +++---- apps/cli/src/helpers/core/workspace-setup.ts | 21 +- apps/cli/src/prompts/backend.ts | 31 +- apps/cli/src/prompts/runtime.ts | 6 +- apps/cli/src/types.ts | 2 +- apps/cli/src/utils/compatibility-rules.ts | 47 ++ apps/cli/src/utils/config-validation.ts | 2 + apps/cli/src/utils/setup-catalogs.ts | 320 +++++----- .../next/src/app/rpc/[...all]/route.ts.hbs | 52 -- .../server/next/src/app/trpc/[trpc]/route.ts | 14 - .../next/src/app/api/auth/[...all]/route.ts | 4 - .../backend/server/next/next-env.d.ts | 5 - .../backend/server/next/next.config.ts | 7 - .../backend/server/next/package.json.hbs | 27 - .../backend/server/next/src/app/route.ts | 5 - .../backend/server/next/src/middleware.ts | 19 - .../backend/server/next/tsconfig.json.hbs | 33 - apps/cli/test/catalogs.test.ts | 562 +++++++++--------- 21 files changed, 832 insertions(+), 747 deletions(-) create mode 100644 FULLSTACK_BACKEND_IMPLEMENTATION.md delete mode 100644 apps/cli/templates/api/orpc/server/next/src/app/rpc/[...all]/route.ts.hbs delete mode 100644 apps/cli/templates/api/trpc/server/next/src/app/trpc/[trpc]/route.ts delete mode 100644 apps/cli/templates/auth/better-auth/server/next/src/app/api/auth/[...all]/route.ts delete mode 100644 apps/cli/templates/backend/server/next/next-env.d.ts delete mode 100644 apps/cli/templates/backend/server/next/next.config.ts delete mode 100644 apps/cli/templates/backend/server/next/package.json.hbs delete mode 100644 apps/cli/templates/backend/server/next/src/app/route.ts delete mode 100644 apps/cli/templates/backend/server/next/src/middleware.ts delete mode 100644 apps/cli/templates/backend/server/next/tsconfig.json.hbs diff --git a/FULLSTACK_BACKEND_IMPLEMENTATION.md b/FULLSTACK_BACKEND_IMPLEMENTATION.md new file mode 100644 index 000000000..13e2495c1 --- /dev/null +++ b/FULLSTACK_BACKEND_IMPLEMENTATION.md @@ -0,0 +1,178 @@ +# Fullstack Backend Implementation + +## Overview +Implemented `--backend self` option to support fullstack frameworks (Next.js, Nuxt, SvelteKit, TanStack Start) that have their own backend capabilities. + +## Key Changes + +### 1. Updated Backend Schema +**File:** `apps/cli/src/types.ts` +- Removed `"next"` from backend options (no longer needed as separate backend) +- Added `"self"` to backend options: `["hono", "express", "fastify", "elysia", "convex", "self", "none"]` + +### 2. Updated Backend Prompt +**File:** `apps/cli/src/prompts/backend.ts` +- Shows "Self (Fullstack)" option when a fullstack-capable frontend is selected (next, nuxt, svelte, tanstack-start) +- Makes "self" the default when a fullstack frontend is chosen +- Hides "self" option when non-fullstack frontends are selected + +### 3. Added Validation +**File:** `apps/cli/src/utils/compatibility-rules.ts` +- New function: `validateSelfBackendCompatibility()` +- Ensures `--backend self` only works with fullstack frontends +- Prevents using multiple frontends with `--backend self` +- Provides clear error messages + +**File:** `apps/cli/src/utils/config-validation.ts` +- Added validation call in `validateFullConfig()` + +### 4. Updated Prompts +**File:** `apps/cli/src/prompts/api.ts` +- Still prompts for API choice (tRPC, oRPC, or none) +- Fullstack frameworks can use tRPC/oRPC for type-safe client-server communication + +**File:** `apps/cli/src/prompts/runtime.ts` +- Returns `"none"` when `backend === "self"` (fullstack frameworks handle their own runtime) + +### 5. Updated Project Creation +**File:** `apps/cli/src/helpers/core/create-project.ts` +- Skips `apps/server` creation when `backend === "self"` +- Skips backend framework setup when `backend === "self"` +- Still creates packages (api, auth, db) for shared business logic + +### 6. Updated Package Configuration +**File:** `apps/cli/src/helpers/core/project-config.ts` +- Skips `dev:server` script when `backend === "self"` +- Doesn't try to update `apps/server/package.json` when it doesn't exist + +### 7. Updated Workspace Setup +**File:** `apps/cli/src/helpers/core/workspace-setup.ts` +- When `backend === "self"`, adds api/auth/db package dependencies to `apps/web` instead of `apps/server` +- Automatically handles missing `apps/server` directory + +## Project Structure + +### With `--backend self` (Fullstack) +``` +my-app/ +├── apps/ +│ └── web/ # Fullstack app (Next/Nuxt/SvelteKit/TanStack Start) +│ └── package.json # Depends on @my-app/api, @my-app/auth, @my-app/db +├── packages/ +│ ├── api/ # API layer / business logic +│ ├── auth/ # Auth configuration & logic +│ └── db/ # Database schema & queries +└── package.json +``` + +### With traditional backend (hono, express, etc.) +``` +my-app/ +├── apps/ +│ ├── web/ # Frontend +│ └── server/ # Backend server +├── packages/ +│ ├── api/ # API layer +│ ├── auth/ # Auth logic +│ └── db/ # Database layer +└── package.json +``` + +## Usage Examples + +### Full Stack Next.js with tRPC +```bash +create-better-t-stack my-app --frontend next --backend self --api trpc --database postgres --orm drizzle --auth better-auth +``` + +### Full Stack Nuxt with oRPC +```bash +create-better-t-stack my-app --frontend nuxt --backend self --api orpc --database sqlite --orm drizzle +``` + +### Full Stack SvelteKit with oRPC +```bash +create-better-t-stack my-app --frontend svelte --backend self --api orpc --database postgres --orm prisma +``` + +### Full Stack TanStack Start with tRPC +```bash +create-better-t-stack my-app --frontend tanstack-start --backend self --api trpc --database mysql --orm drizzle +``` + +### Full Stack Next.js without API layer (using Server Actions only) +```bash +create-better-t-stack my-app --frontend next --backend self --api none --database postgres --orm drizzle +``` + +### Error Cases +```bash +# ❌ Error: self backend requires fullstack frontend +create-better-t-stack my-app --frontend tanstack-router --backend self + +# ❌ Error: self backend requires single frontend +create-better-t-stack my-app --frontend next --frontend native-nativewind --backend self + +# ❌ Error: self backend requires fullstack frontend +create-better-t-stack my-app --frontend solid --backend self +``` + +## Benefits + +1. **Clear Separation**: Distinguishes between fullstack frameworks and separate backend servers +2. **No Duplication**: Avoids having both `apps/server` and fullstack framework handling backend +3. **Shared Packages**: Still maintains clean separation of concerns with packages/api, packages/auth, packages/db +4. **Better DX**: Makes intent explicit - you're choosing a fullstack architecture +5. **Maintainable**: Easier to understand and maintain than having "next" as both frontend and backend + +## Behavior + +### When `backend === "self"` +- ✅ Creates `apps/web` with fullstack framework +- ✅ Creates `packages/api`, `packages/auth`, `packages/db` +- ❌ Skips `apps/server` creation +- ❌ No `dev:server` script +- ✅ API prompts for choice (tRPC, oRPC, or none) - can use type-safe APIs! +- ✅ Runtime set to "none" (framework manages runtime) +- ✅ Web app depends on all workspace packages +- ✅ Catalog support works correctly + +### Supported Fullstack Frontends +- **Next.js**: App Router with Server Actions, API Routes, Route Handlers +- **Nuxt**: Nuxt Server Routes and Server API +- **SvelteKit**: SvelteKit Endpoints and Form Actions +- **TanStack Start**: Server Functions and API Routes + +## Testing + +To test the implementation: + +```bash +# Build CLI +cd apps/cli && bun run build + +# Test fullstack setup +cd ../.. +bun dist/cli.js test-next --frontend next --backend self --database postgres --orm drizzle + +# Verify structure +ls -la test-next/apps # Should only have 'web' +ls -la test-next/packages # Should have 'api', 'auth', 'db' +``` + +## Migration Guide + +### For existing projects using "next" as backend: +The old `--backend next` is no longer supported. Instead: + +**Old:** +```bash +create-better-t-stack my-app --backend next +``` + +**New:** +```bash +create-better-t-stack my-app --frontend next --backend self +``` + +This makes the intent clearer - you're creating a fullstack Next.js app, not a separate Next.js backend server. diff --git a/apps/cli/src/helpers/core/create-project.ts b/apps/cli/src/helpers/core/create-project.ts index b5c164338..707f32bb3 100644 --- a/apps/cli/src/helpers/core/create-project.ts +++ b/apps/cli/src/helpers/core/create-project.ts @@ -39,16 +39,21 @@ export async function createProject( ) { const projectDir = options.projectDir; const isConvex = options.backend === "convex"; + const isSelfBackend = options.backend === "self"; + const needsServerSetup = !isConvex && !isSelfBackend; try { await fs.ensureDir(projectDir); await copyBaseTemplate(projectDir, options); await setupFrontendTemplates(projectDir, options); + await setupBackendFramework(projectDir, options); - if (!isConvex) { + + if (needsServerSetup) { await setupDockerComposeTemplates(projectDir, options); } + await setupAuthTemplate(projectDir, options); if (options.payments && options.payments !== "none") { await setupPaymentsTemplate(projectDir, options); @@ -63,9 +68,11 @@ export async function createProject( await setupApi(options); if (!isConvex) { - await setupBackendDependencies(options); + if (needsServerSetup) { + await setupBackendDependencies(options); + await setupRuntime(options); + } await setupDatabase(options, cliInput); - await setupRuntime(options); if (options.examples.length > 0 && options.examples[0] !== "none") { await setupExamples(options); } diff --git a/apps/cli/src/helpers/core/project-config.ts b/apps/cli/src/helpers/core/project-config.ts index c90ddd442..3ca1c40ba 100644 --- a/apps/cli/src/helpers/core/project-config.ts +++ b/apps/cli/src/helpers/core/project-config.ts @@ -10,13 +10,17 @@ export async function updatePackageConfigurations( options: ProjectConfig, ) { await updateRootPackageJson(projectDir, options); - if (options.backend !== "convex") { + if (options.backend === "convex") { + await updateConvexPackageJson(projectDir, options); + } else if (options.backend === "self") { + await updateAuthPackageJson(projectDir, options); + await updateApiPackageJson(projectDir, options); + await setupWorkspaceDependencies(projectDir, options); + } else if (options.backend !== "none") { await updateServerPackageJson(projectDir, options); await updateAuthPackageJson(projectDir, options); await updateApiPackageJson(projectDir, options); await setupWorkspaceDependencies(projectDir, options); - } else { - await updateConvexPackageJson(projectDir, options); } } @@ -70,7 +74,9 @@ async function updateRootPackageJson( scripts["check-types"] = "turbo check-types"; scripts["dev:native"] = "turbo -F native dev"; scripts["dev:web"] = "turbo -F web dev"; - scripts["dev:server"] = serverDevScript; + if (options.backend !== "self" && options.backend !== "none") { + scripts["dev:server"] = serverDevScript; + } if (options.backend === "convex") { scripts["dev:setup"] = `turbo -F ${backendPackageName} dev:setup`; } @@ -101,7 +107,9 @@ async function updateRootPackageJson( scripts["check-types"] = "pnpm -r check-types"; scripts["dev:native"] = "pnpm --filter native dev"; scripts["dev:web"] = "pnpm --filter web dev"; - scripts["dev:server"] = serverDevScript; + if (options.backend !== "self" && options.backend !== "none") { + scripts["dev:server"] = serverDevScript; + } if (options.backend === "convex") { scripts["dev:setup"] = `pnpm --filter ${backendPackageName} dev:setup`; } @@ -132,7 +140,9 @@ async function updateRootPackageJson( scripts["check-types"] = "npm run check-types --workspaces"; scripts["dev:native"] = "npm run dev --workspace native"; scripts["dev:web"] = "npm run dev --workspace web"; - scripts["dev:server"] = serverDevScript; + if (options.backend !== "self" && options.backend !== "none") { + scripts["dev:server"] = serverDevScript; + } if (options.backend === "convex") { scripts["dev:setup"] = `npm run dev:setup --workspace ${backendPackageName}`; @@ -170,7 +180,9 @@ async function updateRootPackageJson( scripts["check-types"] = "bun run --filter '*' check-types"; scripts["dev:native"] = "bun run --filter native dev"; scripts["dev:web"] = "bun run --filter web dev"; - scripts["dev:server"] = serverDevScript; + if (options.backend !== "self" && options.backend !== "none") { + scripts["dev:server"] = serverDevScript; + } if (options.backend === "convex") { scripts["dev:setup"] = `bun run --filter ${backendPackageName} dev:setup`; } diff --git a/apps/cli/src/helpers/core/template-manager.ts b/apps/cli/src/helpers/core/template-manager.ts index ed76ac8ef..c1486a074 100644 --- a/apps/cli/src/helpers/core/template-manager.ts +++ b/apps/cli/src/helpers/core/template-manager.ts @@ -238,38 +238,80 @@ export async function setupFrontendTemplates( } } -export async function setupBackendFramework( - projectDir: string, - context: ProjectConfig, -) { - if (context.backend === "none") { - return; +async function setupApiPackage(projectDir: string, context: ProjectConfig) { + if (context.api === "none") return; + + const apiPackageDir = path.join(projectDir, "packages/api"); + await fs.ensureDir(apiPackageDir); + + const apiServerBaseDir = path.join( + PKG_ROOT, + `templates/api/${context.api}/server/base`, + ); + if (await fs.pathExists(apiServerBaseDir)) { + await processAndCopyFiles("**/*", apiServerBaseDir, apiPackageDir, context); } - const serverAppDir = path.join(projectDir, "apps/server"); + const apiServerFrameworkDir = path.join( + PKG_ROOT, + `templates/api/${context.api}/server/rest`, + ); - if (context.backend === "convex") { - if (await fs.pathExists(serverAppDir)) { - await fs.remove(serverAppDir); - } + if (await fs.pathExists(apiServerFrameworkDir)) { + await processAndCopyFiles( + "**/*", + apiServerFrameworkDir, + apiPackageDir, + context, + true, + ); + } +} - const convexBackendDestDir = path.join(projectDir, "packages/backend"); - const convexSrcDir = path.join( - PKG_ROOT, - "templates/backend/convex/packages/backend", +async function setupDbPackage(projectDir: string, context: ProjectConfig) { + if (context.database === "none" || context.orm === "none") return; + + const dbPackageDir = path.join(projectDir, "packages/db"); + await fs.ensureDir(dbPackageDir); + + const dbBaseDir = path.join(PKG_ROOT, "templates/db/base"); + if (await fs.pathExists(dbBaseDir)) { + await processAndCopyFiles("**/*", dbBaseDir, dbPackageDir, context); + } + + const dbOrmSrcDir = path.join( + PKG_ROOT, + `templates/db/${context.orm}/${context.database}`, + ); + if (await fs.pathExists(dbOrmSrcDir)) { + await processAndCopyFiles("**/*", dbOrmSrcDir, dbPackageDir, context); + } +} + +async function setupConvexBackend(projectDir: string, context: ProjectConfig) { + const serverAppDir = path.join(projectDir, "apps/server"); + if (await fs.pathExists(serverAppDir)) { + await fs.remove(serverAppDir); + } + + const convexBackendDestDir = path.join(projectDir, "packages/backend"); + const convexSrcDir = path.join( + PKG_ROOT, + "templates/backend/convex/packages/backend", + ); + await fs.ensureDir(convexBackendDestDir); + if (await fs.pathExists(convexSrcDir)) { + await processAndCopyFiles( + "**/*", + convexSrcDir, + convexBackendDestDir, + context, ); - await fs.ensureDir(convexBackendDestDir); - if (await fs.pathExists(convexSrcDir)) { - await processAndCopyFiles( - "**/*", - convexSrcDir, - convexBackendDestDir, - context, - ); - } - return; } +} +async function setupServerApp(projectDir: string, context: ProjectConfig) { + const serverAppDir = path.join(projectDir, "apps/server"); await fs.ensureDir(serverAppDir); const serverBaseDir = path.join(PKG_ROOT, "templates/backend/server/base"); @@ -290,65 +332,30 @@ export async function setupBackendFramework( true, ); } +} - if (context.api !== "none") { - const apiPackageDir = path.join(projectDir, "packages/api"); - await fs.ensureDir(apiPackageDir); - - const apiServerBaseDir = path.join( - PKG_ROOT, - `templates/api/${context.api}/server/base`, - ); - if (await fs.pathExists(apiServerBaseDir)) { - await processAndCopyFiles( - "**/*", - apiServerBaseDir, - apiPackageDir, - context, - ); - } - - let apiServerFrameworkDir = ""; - if (context.backend === "next") { - apiServerFrameworkDir = path.join( - PKG_ROOT, - `templates/api/${context.api}/server/${context.backend}`, - ); - } else { - apiServerFrameworkDir = path.join( - PKG_ROOT, - `templates/api/${context.api}/server/rest`, - ); - } - - if (await fs.pathExists(apiServerFrameworkDir)) { - await processAndCopyFiles( - "**/*", - apiServerFrameworkDir, - apiPackageDir, - context, - true, - ); - } +export async function setupBackendFramework( + projectDir: string, + context: ProjectConfig, +) { + if (context.backend === "none") { + return; } - if (context.database !== "none" && context.orm !== "none") { - const dbPackageDir = path.join(projectDir, "packages/db"); - await fs.ensureDir(dbPackageDir); - - const dbBaseDir = path.join(PKG_ROOT, "templates/db/base"); - if (await fs.pathExists(dbBaseDir)) { - await processAndCopyFiles("**/*", dbBaseDir, dbPackageDir, context); - } + if (context.backend === "convex") { + await setupConvexBackend(projectDir, context); + return; + } - const dbOrmSrcDir = path.join( - PKG_ROOT, - `templates/db/${context.orm}/${context.database}`, - ); - if (await fs.pathExists(dbOrmSrcDir)) { - await processAndCopyFiles("**/*", dbOrmSrcDir, dbPackageDir, context); - } + if (context.backend === "self") { + await setupApiPackage(projectDir, context); + await setupDbPackage(projectDir, context); + return; } + + await setupServerApp(projectDir, context); + await setupApiPackage(projectDir, context); + await setupDbPackage(projectDir, context); } export async function setupAuthTemplate( @@ -505,7 +512,10 @@ export async function setupAuthTemplate( return; } - if (serverAppDirExists && context.backend !== "convex") { + if ( + (serverAppDirExists || context.backend === "self") && + context.backend !== "convex" + ) { const authPackageDir = path.join(projectDir, "packages/auth"); await fs.ensureDir(authPackageDir); @@ -522,21 +532,6 @@ export async function setupAuthTemplate( ); } - if (context.backend === "next") { - const authServerNextSrc = path.join( - PKG_ROOT, - `templates/auth/${authProvider}/server/next`, - ); - if (await fs.pathExists(authServerNextSrc)) { - await processAndCopyFiles( - "**/*", - authServerNextSrc, - authPackageDir, - context, - ); - } - } - if (context.orm !== "none" && context.database !== "none") { const dbPackageDir = path.join(projectDir, "packages/db"); await fs.ensureDir(dbPackageDir); @@ -675,7 +670,10 @@ export async function setupPaymentsTemplate( const serverAppDirExists = await fs.pathExists(serverAppDir); const webAppDirExists = await fs.pathExists(webAppDir); - if (serverAppDirExists && context.backend !== "convex") { + if ( + (serverAppDirExists || context.backend === "self") && + context.backend !== "convex" + ) { const authPackageDir = path.join(projectDir, "packages/auth"); await fs.ensureDir(authPackageDir); @@ -833,7 +831,7 @@ export async function setupExamplesTemplate( const exampleBaseDir = path.join(PKG_ROOT, `templates/examples/${example}`); if ( - serverAppDirExists && + (serverAppDirExists || context.backend === "self") && context.backend !== "convex" && context.backend !== "none" ) { @@ -878,19 +876,6 @@ export async function setupExamplesTemplate( ); } } - - if (example === "ai" && context.backend === "next") { - const aiNextServerSrc = path.join(exampleServerSrc, "next"); - if (await fs.pathExists(aiNextServerSrc)) { - await processAndCopyFiles( - "**/*", - aiNextServerSrc, - serverAppDir, - context, - false, - ); - } - } } if (webAppDirExists) { diff --git a/apps/cli/src/helpers/core/workspace-setup.ts b/apps/cli/src/helpers/core/workspace-setup.ts index 8e296508c..e9001e8b5 100644 --- a/apps/cli/src/helpers/core/workspace-setup.ts +++ b/apps/cli/src/helpers/core/workspace-setup.ts @@ -64,13 +64,22 @@ export async function setupWorkspaceDependencies( } const needsApiDependency = options.api && options.api !== "none"; - if (needsApiDependency) { - const webPackageDir = path.join(projectDir, "apps/web"); - if (await fs.pathExists(webPackageDir)) { + const webPackageDir = path.join(projectDir, "apps/web"); + + if (await fs.pathExists(webPackageDir)) { + const webDeps: Record = {}; + + if (options.backend === "self") { + webDeps[`@${projectName}/api`] = workspaceVersion; + webDeps[`@${projectName}/auth`] = workspaceVersion; + webDeps[`@${projectName}/db`] = workspaceVersion; + } else if (needsApiDependency) { + webDeps[`@${projectName}/api`] = workspaceVersion; + } + + if (Object.keys(webDeps).length > 0) { await addPackageDependency({ - customDependencies: { - [`@${projectName}/api`]: workspaceVersion, - }, + customDependencies: webDeps, projectDir: webPackageDir, }); } diff --git a/apps/cli/src/prompts/backend.ts b/apps/cli/src/prompts/backend.ts index 323cac002..df3e1c53c 100644 --- a/apps/cli/src/prompts/backend.ts +++ b/apps/cli/src/prompts/backend.ts @@ -3,6 +3,13 @@ import { DEFAULT_CONFIG } from "../constants"; import type { Backend, Frontend } from "../types"; import { exitCancelled } from "../utils/errors"; +const FULLSTACK_FRONTENDS: readonly Frontend[] = [ + "next", + "nuxt", + "svelte", + "tanstack-start", +] as const; + export async function getBackendFrameworkChoice( backendFramework?: Backend, frontends?: Frontend[], @@ -10,22 +17,30 @@ export async function getBackendFrameworkChoice( if (backendFramework !== undefined) return backendFramework; const hasIncompatibleFrontend = frontends?.some((f) => f === "solid"); + const hasFullstackFrontend = frontends?.some((f) => + FULLSTACK_FRONTENDS.includes(f), + ); const backendOptions: Array<{ value: Backend; label: string; hint: string; - }> = [ + }> = []; + + if (hasFullstackFrontend) { + backendOptions.push({ + value: "self" as const, + label: "Self (Fullstack)", + hint: "Use frontend's built-in backend capabilities", + }); + } + + backendOptions.push( { value: "hono" as const, label: "Hono", hint: "Lightweight, ultrafast web framework", }, - { - value: "next" as const, - label: "Next.js", - hint: "separate api routes only backend", - }, { value: "express" as const, label: "Express", @@ -41,7 +56,7 @@ export async function getBackendFrameworkChoice( label: "Elysia", hint: "Ergonomic web framework for building backend servers", }, - ]; + ); if (!hasIncompatibleFrontend) { backendOptions.push({ @@ -60,7 +75,7 @@ export async function getBackendFrameworkChoice( const response = await select({ message: "Select backend", options: backendOptions, - initialValue: DEFAULT_CONFIG.backend, + initialValue: hasFullstackFrontend ? "self" : DEFAULT_CONFIG.backend, }); if (isCancel(response)) return exitCancelled("Operation cancelled"); diff --git a/apps/cli/src/prompts/runtime.ts b/apps/cli/src/prompts/runtime.ts index f58eb5837..295aeba4d 100644 --- a/apps/cli/src/prompts/runtime.ts +++ b/apps/cli/src/prompts/runtime.ts @@ -4,16 +4,12 @@ import type { Backend, Runtime } from "../types"; import { exitCancelled } from "../utils/errors"; export async function getRuntimeChoice(runtime?: Runtime, backend?: Backend) { - if (backend === "convex" || backend === "none") { + if (backend === "convex" || backend === "none" || backend === "self") { return "none"; } if (runtime !== undefined) return runtime; - if (backend === "next") { - return "node"; - } - const runtimeOptions: Array<{ value: Runtime; label: string; diff --git a/apps/cli/src/types.ts b/apps/cli/src/types.ts index a6f7fcfb8..7fb4d6c7a 100644 --- a/apps/cli/src/types.ts +++ b/apps/cli/src/types.ts @@ -11,7 +11,7 @@ export const ORMSchema = z export type ORM = z.infer; export const BackendSchema = z - .enum(["hono", "express", "fastify", "next", "elysia", "convex", "none"]) + .enum(["hono", "express", "fastify", "elysia", "convex", "self", "none"]) .describe("Backend framework"); export type Backend = z.infer; diff --git a/apps/cli/src/utils/compatibility-rules.ts b/apps/cli/src/utils/compatibility-rules.ts index 473f02c2a..b29a5c435 100644 --- a/apps/cli/src/utils/compatibility-rules.ts +++ b/apps/cli/src/utils/compatibility-rules.ts @@ -43,6 +43,53 @@ export function ensureSingleWebAndNative(frontends: Frontend[]) { } } +const FULLSTACK_FRONTENDS: readonly Frontend[] = [ + "next", + "nuxt", + "svelte", + "tanstack-start", +] as const; + +export function validateSelfBackendCompatibility( + providedFlags: Set, + options: CLIInput, + config: Partial, +) { + const backend = config.backend || options.backend; + const frontends = config.frontend || options.frontend || []; + + if (backend === "self") { + const hasFullstackFrontend = frontends.some((f) => + FULLSTACK_FRONTENDS.includes(f), + ); + + if (!hasFullstackFrontend) { + exitWithError( + "Backend 'self' (fullstack) requires a fullstack-capable frontend. Please use --frontend with one of: next, nuxt, svelte, tanstack-start", + ); + } + + if (frontends.length > 1) { + exitWithError( + "Backend 'self' (fullstack) can only be used with a single frontend framework.", + ); + } + } + + const hasFullstackFrontend = frontends.some((f) => + FULLSTACK_FRONTENDS.includes(f), + ); + if ( + providedFlags.has("backend") && + !hasFullstackFrontend && + backend === "self" + ) { + exitWithError( + "Backend 'self' (fullstack) is only compatible with fullstack-capable frontends: next, nuxt, svelte, tanstack-start. Please choose a different backend or use a fullstack frontend.", + ); + } +} + export function validateWorkersCompatibility( providedFlags: Set, options: CLIInput, diff --git a/apps/cli/src/utils/config-validation.ts b/apps/cli/src/utils/config-validation.ts index 1459e00b1..a525c4ec7 100644 --- a/apps/cli/src/utils/config-validation.ts +++ b/apps/cli/src/utils/config-validation.ts @@ -12,6 +12,7 @@ import { validateApiFrontendCompatibility, validateExamplesCompatibility, validatePaymentsCompatibility, + validateSelfBackendCompatibility, validateServerDeployRequiresBackend, validateWebDeployRequiresWebFrontend, validateWorkersCompatibility, @@ -415,6 +416,7 @@ export function validateFullConfig( validateServerDeployRequiresBackend(config.serverDeploy, config.backend); + validateSelfBackendCompatibility(providedFlags, options, config); validateWorkersCompatibility(providedFlags, options, config); if (config.runtime === "workers" && config.serverDeploy === "none") { diff --git a/apps/cli/src/utils/setup-catalogs.ts b/apps/cli/src/utils/setup-catalogs.ts index 526cfd497..e6cde4ccd 100644 --- a/apps/cli/src/utils/setup-catalogs.ts +++ b/apps/cli/src/utils/setup-catalogs.ts @@ -4,192 +4,192 @@ import yaml from "yaml"; import type { ProjectConfig } from "../types"; type PackageInfo = { - path: string; - dependencies: Record; - devDependencies: Record; + path: string; + dependencies: Record; + devDependencies: Record; }; type CatalogEntry = { - version: string; - packages: string[]; + version: string; + packages: string[]; }; export async function setupCatalogs( - projectDir: string, - options: ProjectConfig, + projectDir: string, + options: ProjectConfig, ) { - if (options.packageManager === "npm") { - return; - } - - const packagePaths = [ - "apps/server", - "apps/web", - "packages/api", - "packages/db", - "packages/auth", - "packages/backend", - ]; - - const packagesInfo: PackageInfo[] = []; - - for (const pkgPath of packagePaths) { - const fullPath = path.join(projectDir, pkgPath); - const pkgJsonPath = path.join(fullPath, "package.json"); - - if (await fs.pathExists(pkgJsonPath)) { - const pkgJson = await fs.readJson(pkgJsonPath); - packagesInfo.push({ - path: fullPath, - dependencies: pkgJson.dependencies || {}, - devDependencies: pkgJson.devDependencies || {}, - }); - } - } - - const catalog = findDuplicateDependencies(packagesInfo, options.projectName); - - if (Object.keys(catalog).length === 0) { - return; - } - - if (options.packageManager === "bun") { - await setupBunCatalogs(projectDir, catalog); - } else if (options.packageManager === "pnpm") { - await setupPnpmCatalogs(projectDir, catalog); - } - - await updatePackageJsonsWithCatalogs(packagesInfo, catalog); + if (options.packageManager === "npm") { + return; + } + + const packagePaths = [ + "apps/server", + "apps/web", + "packages/api", + "packages/db", + "packages/auth", + "packages/backend", + ]; + + const packagesInfo: PackageInfo[] = []; + + for (const pkgPath of packagePaths) { + const fullPath = path.join(projectDir, pkgPath); + const pkgJsonPath = path.join(fullPath, "package.json"); + + if (await fs.pathExists(pkgJsonPath)) { + const pkgJson = await fs.readJson(pkgJsonPath); + packagesInfo.push({ + path: fullPath, + dependencies: pkgJson.dependencies || {}, + devDependencies: pkgJson.devDependencies || {}, + }); + } + } + + const catalog = findDuplicateDependencies(packagesInfo, options.projectName); + + if (Object.keys(catalog).length === 0) { + return; + } + + if (options.packageManager === "bun") { + await setupBunCatalogs(projectDir, catalog); + } else if (options.packageManager === "pnpm") { + await setupPnpmCatalogs(projectDir, catalog); + } + + await updatePackageJsonsWithCatalogs(packagesInfo, catalog); } function findDuplicateDependencies( - packagesInfo: PackageInfo[], - projectName: string, + packagesInfo: PackageInfo[], + projectName: string, ): Record { - const depCount = new Map(); - const projectScope = `@${projectName}/`; - - for (const pkg of packagesInfo) { - const allDeps = { - ...pkg.dependencies, - ...pkg.devDependencies, - }; - - for (const [depName, version] of Object.entries(allDeps)) { - if (depName.startsWith(projectScope)) { - continue; - } - - if (version.startsWith("workspace:")) { - continue; - } - - const existing = depCount.get(depName); - if (existing) { - existing.packages.push(pkg.path); - } else { - depCount.set(depName, { - version, - packages: [pkg.path], - }); - } - } - } - - const catalog: Record = {}; - for (const [depName, info] of depCount.entries()) { - if (info.packages.length > 1) { - catalog[depName] = info.version; - } - } - - return catalog; + const depCount = new Map(); + const projectScope = `@${projectName}/`; + + for (const pkg of packagesInfo) { + const allDeps = { + ...pkg.dependencies, + ...pkg.devDependencies, + }; + + for (const [depName, version] of Object.entries(allDeps)) { + if (depName.startsWith(projectScope)) { + continue; + } + + if (version.startsWith("workspace:")) { + continue; + } + + const existing = depCount.get(depName); + if (existing) { + existing.packages.push(pkg.path); + } else { + depCount.set(depName, { + version, + packages: [pkg.path], + }); + } + } + } + + const catalog: Record = {}; + for (const [depName, info] of depCount.entries()) { + if (info.packages.length > 1) { + catalog[depName] = info.version; + } + } + + return catalog; } async function setupBunCatalogs( - projectDir: string, - catalog: Record, + projectDir: string, + catalog: Record, ) { - const rootPkgJsonPath = path.join(projectDir, "package.json"); - const rootPkgJson = await fs.readJson(rootPkgJsonPath); - - if (!rootPkgJson.workspaces) { - rootPkgJson.workspaces = {}; - } - - if (Array.isArray(rootPkgJson.workspaces)) { - rootPkgJson.workspaces = { - packages: rootPkgJson.workspaces, - catalog, - }; - } else if (typeof rootPkgJson.workspaces === "object") { - if (!rootPkgJson.workspaces.catalog) { - rootPkgJson.workspaces.catalog = {}; - } - rootPkgJson.workspaces.catalog = { - ...rootPkgJson.workspaces.catalog, - ...catalog, - }; - } - - await fs.writeJson(rootPkgJsonPath, rootPkgJson, { spaces: 2 }); + const rootPkgJsonPath = path.join(projectDir, "package.json"); + const rootPkgJson = await fs.readJson(rootPkgJsonPath); + + if (!rootPkgJson.workspaces) { + rootPkgJson.workspaces = {}; + } + + if (Array.isArray(rootPkgJson.workspaces)) { + rootPkgJson.workspaces = { + packages: rootPkgJson.workspaces, + catalog, + }; + } else if (typeof rootPkgJson.workspaces === "object") { + if (!rootPkgJson.workspaces.catalog) { + rootPkgJson.workspaces.catalog = {}; + } + rootPkgJson.workspaces.catalog = { + ...rootPkgJson.workspaces.catalog, + ...catalog, + }; + } + + await fs.writeJson(rootPkgJsonPath, rootPkgJson, { spaces: 2 }); } async function setupPnpmCatalogs( - projectDir: string, - catalog: Record, + projectDir: string, + catalog: Record, ) { - const workspaceYamlPath = path.join(projectDir, "pnpm-workspace.yaml"); + const workspaceYamlPath = path.join(projectDir, "pnpm-workspace.yaml"); - if (!(await fs.pathExists(workspaceYamlPath))) { - return; - } + if (!(await fs.pathExists(workspaceYamlPath))) { + return; + } - const workspaceContent = await fs.readFile(workspaceYamlPath, "utf-8"); - const workspaceYaml = yaml.parse(workspaceContent); + const workspaceContent = await fs.readFile(workspaceYamlPath, "utf-8"); + const workspaceYaml = yaml.parse(workspaceContent); - if (!workspaceYaml.catalog) { - workspaceYaml.catalog = {}; - } + if (!workspaceYaml.catalog) { + workspaceYaml.catalog = {}; + } - workspaceYaml.catalog = { - ...workspaceYaml.catalog, - ...catalog, - }; + workspaceYaml.catalog = { + ...workspaceYaml.catalog, + ...catalog, + }; - await fs.writeFile(workspaceYamlPath, yaml.stringify(workspaceYaml)); + await fs.writeFile(workspaceYamlPath, yaml.stringify(workspaceYaml)); } async function updatePackageJsonsWithCatalogs( - packagesInfo: PackageInfo[], - catalog: Record, + packagesInfo: PackageInfo[], + catalog: Record, ) { - for (const pkg of packagesInfo) { - const pkgJsonPath = path.join(pkg.path, "package.json"); - const pkgJson = await fs.readJson(pkgJsonPath); - - let updated = false; - - if (pkgJson.dependencies) { - for (const depName of Object.keys(pkgJson.dependencies)) { - if (catalog[depName]) { - pkgJson.dependencies[depName] = "catalog:"; - updated = true; - } - } - } - - if (pkgJson.devDependencies) { - for (const depName of Object.keys(pkgJson.devDependencies)) { - if (catalog[depName]) { - pkgJson.devDependencies[depName] = "catalog:"; - updated = true; - } - } - } - - if (updated) { - await fs.writeJson(pkgJsonPath, pkgJson, { spaces: 2 }); - } - } + for (const pkg of packagesInfo) { + const pkgJsonPath = path.join(pkg.path, "package.json"); + const pkgJson = await fs.readJson(pkgJsonPath); + + let updated = false; + + if (pkgJson.dependencies) { + for (const depName of Object.keys(pkgJson.dependencies)) { + if (catalog[depName]) { + pkgJson.dependencies[depName] = "catalog:"; + updated = true; + } + } + } + + if (pkgJson.devDependencies) { + for (const depName of Object.keys(pkgJson.devDependencies)) { + if (catalog[depName]) { + pkgJson.devDependencies[depName] = "catalog:"; + updated = true; + } + } + } + + if (updated) { + await fs.writeJson(pkgJsonPath, pkgJson, { spaces: 2 }); + } + } } diff --git a/apps/cli/templates/api/orpc/server/next/src/app/rpc/[...all]/route.ts.hbs b/apps/cli/templates/api/orpc/server/next/src/app/rpc/[...all]/route.ts.hbs deleted file mode 100644 index fd0559b36..000000000 --- a/apps/cli/templates/api/orpc/server/next/src/app/rpc/[...all]/route.ts.hbs +++ /dev/null @@ -1,52 +0,0 @@ -{{#if (eq auth "better-auth")}} -import { createContext } from '@/lib/context' -{{/if}} -import { appRouter } from '@/routers' -import { OpenAPIHandler } from '@orpc/openapi/fetch' -import { OpenAPIReferencePlugin } from '@orpc/openapi/plugins' -import { ZodToJsonSchemaConverter } from '@orpc/zod/zod4' -import { RPCHandler } from '@orpc/server/fetch' -import { onError } from '@orpc/server' -import { NextRequest } from 'next/server' - -const rpcHandler = new RPCHandler(appRouter, { - interceptors: [ - onError((error) => { - console.error(error) - }), - ], -}) -const apiHandler = new OpenAPIHandler(appRouter, { - plugins: [ - new OpenAPIReferencePlugin({ - schemaConverters: [new ZodToJsonSchemaConverter()], - }), - ], - interceptors: [ - onError((error) => { - console.error(error) - }), - ], -}) - -async function handleRequest(req: NextRequest) { - const rpcResult = await rpcHandler.handle(req, { - prefix: '/rpc', - context: {{#if (eq auth "better-auth")}}await createContext(req){{else}}{}{{/if}}, - }) - if (rpcResult.response) return rpcResult.response - - const apiResult = await apiHandler.handle(req, { - prefix: '/rpc/api', - context: {{#if (eq auth "better-auth")}}await createContext(req){{else}}{}{{/if}}, - }) - if (apiResult.response) return apiResult.response - - return new Response('Not found', { status: 404 }) -} - -export const GET = handleRequest -export const POST = handleRequest -export const PUT = handleRequest -export const PATCH = handleRequest -export const DELETE = handleRequest diff --git a/apps/cli/templates/api/trpc/server/next/src/app/trpc/[trpc]/route.ts b/apps/cli/templates/api/trpc/server/next/src/app/trpc/[trpc]/route.ts deleted file mode 100644 index 9efa2919c..000000000 --- a/apps/cli/templates/api/trpc/server/next/src/app/trpc/[trpc]/route.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { fetchRequestHandler } from '@trpc/server/adapters/fetch'; -import { appRouter } from '@/routers'; -import { createContext } from '@/lib/context'; -import { NextRequest } from 'next/server'; - -function handler(req: NextRequest) { - return fetchRequestHandler({ - endpoint: '/trpc', - req, - router: appRouter, - createContext: () => createContext(req) - }); -} -export { handler as GET, handler as POST }; diff --git a/apps/cli/templates/auth/better-auth/server/next/src/app/api/auth/[...all]/route.ts b/apps/cli/templates/auth/better-auth/server/next/src/app/api/auth/[...all]/route.ts deleted file mode 100644 index e11351a10..000000000 --- a/apps/cli/templates/auth/better-auth/server/next/src/app/api/auth/[...all]/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { auth } from "@/lib/auth"; -import { toNextJsHandler } from "better-auth/next-js"; - -export const { GET, POST } = toNextJsHandler(auth.handler); diff --git a/apps/cli/templates/backend/server/next/next-env.d.ts b/apps/cli/templates/backend/server/next/next-env.d.ts deleted file mode 100644 index 1b3be0840..000000000 --- a/apps/cli/templates/backend/server/next/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/cli/templates/backend/server/next/next.config.ts b/apps/cli/templates/backend/server/next/next.config.ts deleted file mode 100644 index b99d58729..000000000 --- a/apps/cli/templates/backend/server/next/next.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { NextConfig } from "next"; - -const nextConfig: NextConfig = { - typedRoutes: true, -}; - -export default nextConfig; diff --git a/apps/cli/templates/backend/server/next/package.json.hbs b/apps/cli/templates/backend/server/next/package.json.hbs deleted file mode 100644 index 7c9860590..000000000 --- a/apps/cli/templates/backend/server/next/package.json.hbs +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "server", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "next dev --turbopack", - "build": "next build", - "start": "next start" - }, - "dependencies": { - "next": "15.5.0", - "react": "19.1.0", - "react-dom": "19.1.0", - "dotenv": "^17.2.1" - }, -{{#if (eq dbSetup 'supabase')}} - "trustedDependencies": [ - "supabase" - ], -{{/if}} - "devDependencies": { - "@types/node": "^20", - "@types/react": "~19.1.10", - "zod": "^4.0.13", - "typescript": "^5" - } -} diff --git a/apps/cli/templates/backend/server/next/src/app/route.ts b/apps/cli/templates/backend/server/next/src/app/route.ts deleted file mode 100644 index bed4f46b8..000000000 --- a/apps/cli/templates/backend/server/next/src/app/route.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { NextResponse } from "next/server"; - -export async function GET() { - return NextResponse.json({ message: "OK" }); -} diff --git a/apps/cli/templates/backend/server/next/src/middleware.ts b/apps/cli/templates/backend/server/next/src/middleware.ts deleted file mode 100644 index dcf96fd24..000000000 --- a/apps/cli/templates/backend/server/next/src/middleware.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { NextResponse } from "next/server"; - -export function middleware() { - const res = NextResponse.next() - - res.headers.append('Access-Control-Allow-Credentials', "true") - res.headers.append('Access-Control-Allow-Origin', process.env.CORS_ORIGIN || "") - res.headers.append('Access-Control-Allow-Methods', 'GET,POST,OPTIONS') - res.headers.append( - 'Access-Control-Allow-Headers', - 'Content-Type, Authorization' - ) - - return res -} - -export const config = { - matcher: '/:path*', -} diff --git a/apps/cli/templates/backend/server/next/tsconfig.json.hbs b/apps/cli/templates/backend/server/next/tsconfig.json.hbs deleted file mode 100644 index 062591411..000000000 --- a/apps/cli/templates/backend/server/next/tsconfig.json.hbs +++ /dev/null @@ -1,33 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2017", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - {{#unless (or (eq backend "convex") (eq backend "none"))}} - "composite": true, - {{/unless}} - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./src/*"] - {{#if (eq orm 'prisma')}}, - "prisma": ["node_modules/prisma"] - {{/if}} - }, - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] -} diff --git a/apps/cli/test/catalogs.test.ts b/apps/cli/test/catalogs.test.ts index f31fdc957..5934ceca5 100644 --- a/apps/cli/test/catalogs.test.ts +++ b/apps/cli/test/catalogs.test.ts @@ -8,285 +8,285 @@ import { cleanupSmokeDirectory } from "./test-utils"; const SMOKE_DIR = path.join(process.cwd(), ".smoke"); describe("Catalogs", () => { - beforeEach(async () => { - await fs.ensureDir(SMOKE_DIR); - }); - - afterEach(async () => { - await cleanupSmokeDirectory(); - }); - - it("should setup Bun catalogs for duplicated dependencies", async () => { - const projectName = "test-bun-catalog"; - const projectDir = path.join(SMOKE_DIR, projectName); - - await init(projectName, { - packageManager: "bun", - backend: "hono", - runtime: "bun", - database: "postgres", - orm: "drizzle", - auth: "better-auth", - frontend: ["tanstack-router"], - api: "trpc", - install: false, - git: false, - directoryConflict: "overwrite", - disableAnalytics: true, - dbSetup: "none", - }); - - const rootPkgJson = await fs.readJson( - path.join(projectDir, "package.json"), - ); - expect(rootPkgJson.workspaces.catalog).toBeDefined(); - expect(Object.keys(rootPkgJson.workspaces.catalog).length).toBeGreaterThan( - 0, - ); - - const serverPkgJson = await fs.readJson( - path.join(projectDir, "apps/server/package.json"), - ); - const dbPkgJson = await fs.readJson( - path.join(projectDir, "packages/db/package.json"), - ); - - const hasCatalogDep = - Object.values(serverPkgJson.dependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ) || - Object.values(dbPkgJson.dependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ); - - expect(hasCatalogDep).toBe(true); - }); - - it("should setup pnpm catalogs for duplicated dependencies", async () => { - const projectName = "test-pnpm-catalog"; - const projectDir = path.join(SMOKE_DIR, projectName); - - await init(projectName, { - packageManager: "pnpm", - backend: "hono", - runtime: "bun", - database: "postgres", - orm: "drizzle", - auth: "better-auth", - frontend: ["tanstack-router"], - api: "trpc", - install: false, - git: false, - directoryConflict: "overwrite", - disableAnalytics: true, - dbSetup: "none", - }); - - const workspaceYamlPath = path.join(projectDir, "pnpm-workspace.yaml"); - const workspaceContent = await fs.readFile(workspaceYamlPath, "utf-8"); - const workspaceYaml = yaml.parse(workspaceContent); - - expect(workspaceYaml.catalog).toBeDefined(); - expect(Object.keys(workspaceYaml.catalog).length).toBeGreaterThan(0); - - const serverPkgJson = await fs.readJson( - path.join(projectDir, "apps/server/package.json"), - ); - const dbPkgJson = await fs.readJson( - path.join(projectDir, "packages/db/package.json"), - ); - - const hasCatalogDep = - Object.values(serverPkgJson.dependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ) || - Object.values(dbPkgJson.dependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ); - - expect(hasCatalogDep).toBe(true); - }); - - it("should NOT setup catalogs for npm", async () => { - const projectName = "test-npm-no-catalog"; - const projectDir = path.join(SMOKE_DIR, projectName); - - await init(projectName, { - packageManager: "npm", - backend: "hono", - runtime: "bun", - database: "postgres", - orm: "drizzle", - auth: "better-auth", - frontend: ["tanstack-router"], - api: "trpc", - install: false, - git: false, - directoryConflict: "overwrite", - disableAnalytics: true, - dbSetup: "none", - }); - - const rootPkgJson = await fs.readJson( - path.join(projectDir, "package.json"), - ); - expect(rootPkgJson.workspaces.catalog).toBeUndefined(); - - const serverPkgJson = await fs.readJson( - path.join(projectDir, "apps/server/package.json"), - ); - - const hasCatalogDep = Object.values(serverPkgJson.dependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ); - - expect(hasCatalogDep).toBe(false); - }); - - it("should setup catalogs for Convex backend", async () => { - const projectName = "test-convex-catalog"; - const projectDir = path.join(SMOKE_DIR, projectName); - - await init(projectName, { - packageManager: "bun", - backend: "convex", - frontend: ["tanstack-router"], - auth: "none", - install: false, - git: false, - directoryConflict: "overwrite", - disableAnalytics: true, - }); - - const rootPkgJson = await fs.readJson( - path.join(projectDir, "package.json"), - ); - - if (rootPkgJson.workspaces?.catalog) { - expect( - Object.keys(rootPkgJson.workspaces.catalog).length, - ).toBeGreaterThanOrEqual(0); - } - - const backendPkgJsonPath = path.join( - projectDir, - "packages/backend/package.json", - ); - if (await fs.pathExists(backendPkgJsonPath)) { - const backendPkgJson = await fs.readJson(backendPkgJsonPath); - const hasCatalogDep = - Object.values(backendPkgJson.dependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ) || - Object.values(backendPkgJson.devDependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ); - - if ( - rootPkgJson.workspaces?.catalog && - Object.keys(rootPkgJson.workspaces.catalog).length > 0 - ) { - expect(hasCatalogDep).toBe(true); - } - } - }); - - it("should convert workspaces array to object format for Bun", async () => { - const projectName = "test-bun-workspaces-conversion"; - const projectDir = path.join(SMOKE_DIR, projectName); - - await init(projectName, { - packageManager: "bun", - backend: "hono", - runtime: "bun", - database: "postgres", - orm: "drizzle", - auth: "better-auth", - frontend: ["tanstack-router"], - api: "trpc", - install: false, - git: false, - directoryConflict: "overwrite", - disableAnalytics: true, - dbSetup: "none", - }); - - const rootPkgJson = await fs.readJson( - path.join(projectDir, "package.json"), - ); - - expect(rootPkgJson.workspaces).toBeDefined(); - expect(typeof rootPkgJson.workspaces).toBe("object"); - expect(Array.isArray(rootPkgJson.workspaces)).toBe(false); - - if ( - typeof rootPkgJson.workspaces === "object" && - !Array.isArray(rootPkgJson.workspaces) - ) { - expect(rootPkgJson.workspaces.packages).toBeDefined(); - expect(Array.isArray(rootPkgJson.workspaces.packages)).toBe(true); - expect(rootPkgJson.workspaces.packages).toContain("apps/*"); - expect(rootPkgJson.workspaces.packages).toContain("packages/*"); - expect(rootPkgJson.workspaces.catalog).toBeDefined(); - } - }); - - it("should only catalog dependencies that appear in multiple packages", async () => { - const projectName = "test-bun-selective-catalog"; - const projectDir = path.join(SMOKE_DIR, projectName); - - await init(projectName, { - packageManager: "bun", - backend: "hono", - runtime: "bun", - database: "postgres", - orm: "drizzle", - auth: "better-auth", - frontend: ["tanstack-router"], - api: "trpc", - install: false, - git: false, - directoryConflict: "overwrite", - disableAnalytics: true, - dbSetup: "none", - }); - - const rootPkgJson = await fs.readJson( - path.join(projectDir, "package.json"), - ); - const catalog = rootPkgJson.workspaces.catalog; - - if (catalog) { - for (const depName of Object.keys(catalog)) { - let count = 0; - const packagePaths = [ - "apps/server", - "apps/web", - "packages/api", - "packages/db", - "packages/auth", - "packages/backend", - ]; - - for (const pkgPath of packagePaths) { - const fullPath = path.join(projectDir, pkgPath); - const pkgJsonPath = path.join(fullPath, "package.json"); - - if (await fs.pathExists(pkgJsonPath)) { - const pkgJson = await fs.readJson(pkgJsonPath); - const allDeps = { - ...pkgJson.dependencies, - ...pkgJson.devDependencies, - }; - - if (allDeps[depName]) { - count++; - } - } - } - - expect(count).toBeGreaterThan(1); - } - } - }); + beforeEach(async () => { + await fs.ensureDir(SMOKE_DIR); + }); + + afterEach(async () => { + await cleanupSmokeDirectory(); + }); + + it("should setup Bun catalogs for duplicated dependencies", async () => { + const projectName = "test-bun-catalog"; + const projectDir = path.join(SMOKE_DIR, projectName); + + await init(projectName, { + packageManager: "bun", + backend: "hono", + runtime: "bun", + database: "postgres", + orm: "drizzle", + auth: "better-auth", + frontend: ["tanstack-router"], + api: "trpc", + install: false, + git: false, + directoryConflict: "overwrite", + disableAnalytics: true, + dbSetup: "none", + }); + + const rootPkgJson = await fs.readJson( + path.join(projectDir, "package.json"), + ); + expect(rootPkgJson.workspaces.catalog).toBeDefined(); + expect(Object.keys(rootPkgJson.workspaces.catalog).length).toBeGreaterThan( + 0, + ); + + const serverPkgJson = await fs.readJson( + path.join(projectDir, "apps/server/package.json"), + ); + const dbPkgJson = await fs.readJson( + path.join(projectDir, "packages/db/package.json"), + ); + + const hasCatalogDep = + Object.values(serverPkgJson.dependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ) || + Object.values(dbPkgJson.dependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ); + + expect(hasCatalogDep).toBe(true); + }); + + it("should setup pnpm catalogs for duplicated dependencies", async () => { + const projectName = "test-pnpm-catalog"; + const projectDir = path.join(SMOKE_DIR, projectName); + + await init(projectName, { + packageManager: "pnpm", + backend: "hono", + runtime: "bun", + database: "postgres", + orm: "drizzle", + auth: "better-auth", + frontend: ["tanstack-router"], + api: "trpc", + install: false, + git: false, + directoryConflict: "overwrite", + disableAnalytics: true, + dbSetup: "none", + }); + + const workspaceYamlPath = path.join(projectDir, "pnpm-workspace.yaml"); + const workspaceContent = await fs.readFile(workspaceYamlPath, "utf-8"); + const workspaceYaml = yaml.parse(workspaceContent); + + expect(workspaceYaml.catalog).toBeDefined(); + expect(Object.keys(workspaceYaml.catalog).length).toBeGreaterThan(0); + + const serverPkgJson = await fs.readJson( + path.join(projectDir, "apps/server/package.json"), + ); + const dbPkgJson = await fs.readJson( + path.join(projectDir, "packages/db/package.json"), + ); + + const hasCatalogDep = + Object.values(serverPkgJson.dependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ) || + Object.values(dbPkgJson.dependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ); + + expect(hasCatalogDep).toBe(true); + }); + + it("should NOT setup catalogs for npm", async () => { + const projectName = "test-npm-no-catalog"; + const projectDir = path.join(SMOKE_DIR, projectName); + + await init(projectName, { + packageManager: "npm", + backend: "hono", + runtime: "bun", + database: "postgres", + orm: "drizzle", + auth: "better-auth", + frontend: ["tanstack-router"], + api: "trpc", + install: false, + git: false, + directoryConflict: "overwrite", + disableAnalytics: true, + dbSetup: "none", + }); + + const rootPkgJson = await fs.readJson( + path.join(projectDir, "package.json"), + ); + expect(rootPkgJson.workspaces.catalog).toBeUndefined(); + + const serverPkgJson = await fs.readJson( + path.join(projectDir, "apps/server/package.json"), + ); + + const hasCatalogDep = Object.values(serverPkgJson.dependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ); + + expect(hasCatalogDep).toBe(false); + }); + + it("should setup catalogs for Convex backend", async () => { + const projectName = "test-convex-catalog"; + const projectDir = path.join(SMOKE_DIR, projectName); + + await init(projectName, { + packageManager: "bun", + backend: "convex", + frontend: ["tanstack-router"], + auth: "none", + install: false, + git: false, + directoryConflict: "overwrite", + disableAnalytics: true, + }); + + const rootPkgJson = await fs.readJson( + path.join(projectDir, "package.json"), + ); + + if (rootPkgJson.workspaces?.catalog) { + expect( + Object.keys(rootPkgJson.workspaces.catalog).length, + ).toBeGreaterThanOrEqual(0); + } + + const backendPkgJsonPath = path.join( + projectDir, + "packages/backend/package.json", + ); + if (await fs.pathExists(backendPkgJsonPath)) { + const backendPkgJson = await fs.readJson(backendPkgJsonPath); + const hasCatalogDep = + Object.values(backendPkgJson.dependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ) || + Object.values(backendPkgJson.devDependencies || {}).some( + (v) => typeof v === "string" && v.startsWith("catalog:"), + ); + + if ( + rootPkgJson.workspaces?.catalog && + Object.keys(rootPkgJson.workspaces.catalog).length > 0 + ) { + expect(hasCatalogDep).toBe(true); + } + } + }); + + it("should convert workspaces array to object format for Bun", async () => { + const projectName = "test-bun-workspaces-conversion"; + const projectDir = path.join(SMOKE_DIR, projectName); + + await init(projectName, { + packageManager: "bun", + backend: "hono", + runtime: "bun", + database: "postgres", + orm: "drizzle", + auth: "better-auth", + frontend: ["tanstack-router"], + api: "trpc", + install: false, + git: false, + directoryConflict: "overwrite", + disableAnalytics: true, + dbSetup: "none", + }); + + const rootPkgJson = await fs.readJson( + path.join(projectDir, "package.json"), + ); + + expect(rootPkgJson.workspaces).toBeDefined(); + expect(typeof rootPkgJson.workspaces).toBe("object"); + expect(Array.isArray(rootPkgJson.workspaces)).toBe(false); + + if ( + typeof rootPkgJson.workspaces === "object" && + !Array.isArray(rootPkgJson.workspaces) + ) { + expect(rootPkgJson.workspaces.packages).toBeDefined(); + expect(Array.isArray(rootPkgJson.workspaces.packages)).toBe(true); + expect(rootPkgJson.workspaces.packages).toContain("apps/*"); + expect(rootPkgJson.workspaces.packages).toContain("packages/*"); + expect(rootPkgJson.workspaces.catalog).toBeDefined(); + } + }); + + it("should only catalog dependencies that appear in multiple packages", async () => { + const projectName = "test-bun-selective-catalog"; + const projectDir = path.join(SMOKE_DIR, projectName); + + await init(projectName, { + packageManager: "bun", + backend: "hono", + runtime: "bun", + database: "postgres", + orm: "drizzle", + auth: "better-auth", + frontend: ["tanstack-router"], + api: "trpc", + install: false, + git: false, + directoryConflict: "overwrite", + disableAnalytics: true, + dbSetup: "none", + }); + + const rootPkgJson = await fs.readJson( + path.join(projectDir, "package.json"), + ); + const catalog = rootPkgJson.workspaces.catalog; + + if (catalog) { + for (const depName of Object.keys(catalog)) { + let count = 0; + const packagePaths = [ + "apps/server", + "apps/web", + "packages/api", + "packages/db", + "packages/auth", + "packages/backend", + ]; + + for (const pkgPath of packagePaths) { + const fullPath = path.join(projectDir, pkgPath); + const pkgJsonPath = path.join(fullPath, "package.json"); + + if (await fs.pathExists(pkgJsonPath)) { + const pkgJson = await fs.readJson(pkgJsonPath); + const allDeps = { + ...pkgJson.dependencies, + ...pkgJson.devDependencies, + }; + + if (allDeps[depName]) { + count++; + } + } + } + + expect(count).toBeGreaterThan(1); + } + } + }); }); From 5c7b5743df4c9a757debfffeb921150a9cd01ee7 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Wed, 1 Oct 2025 11:43:14 +0530 Subject: [PATCH 15/33] ok --- apps/cli/src/helpers/core/post-installation.ts | 2 +- apps/cli/src/helpers/core/runtime-setup.ts | 2 +- apps/cli/src/validation.ts | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/cli/src/helpers/core/post-installation.ts b/apps/cli/src/helpers/core/post-installation.ts index 5c6742e26..038b89b0d 100644 --- a/apps/cli/src/helpers/core/post-installation.ts +++ b/apps/cli/src/helpers/core/post-installation.ts @@ -165,7 +165,7 @@ export async function displayPostInstallInstructions( output += `${pc.cyan("•")} Backend API: http://localhost:3000\n`; if (api === "orpc") { - if (backend === "next") { + if (backend === "self") { output += `${pc.cyan("•")} OpenAPI (Scalar UI): http://localhost:3000/rpc/api\n`; } else { output += `${pc.cyan("•")} OpenAPI (Scalar UI): http://localhost:3000/api\n`; diff --git a/apps/cli/src/helpers/core/runtime-setup.ts b/apps/cli/src/helpers/core/runtime-setup.ts index 8490ab8c5..50cf3259b 100644 --- a/apps/cli/src/helpers/core/runtime-setup.ts +++ b/apps/cli/src/helpers/core/runtime-setup.ts @@ -6,7 +6,7 @@ import { addPackageDependency } from "../../utils/add-package-deps"; export async function setupRuntime(config: ProjectConfig) { const { runtime, backend, projectDir } = config; - if (backend === "convex" || backend === "next" || runtime === "none") { + if (backend === "convex" || backend === "self" || runtime === "none") { return; } diff --git a/apps/cli/src/validation.ts b/apps/cli/src/validation.ts index db1f781ba..f18afaf99 100644 --- a/apps/cli/src/validation.ts +++ b/apps/cli/src/validation.ts @@ -21,6 +21,7 @@ const CORE_STACK_FLAGS = new Set([ "examples", "auth", "dbSetup", + "payments", "api", "webDeploy", "serverDeploy", @@ -39,7 +40,7 @@ function validateYesFlagCombination( if (coreStackFlagsProvided.length > 0) { exitWithError( `Cannot combine --yes with core stack configuration flags: ${coreStackFlagsProvided.map((f) => `--${f}`).join(", ")}. ` + - "The --yes flag uses default configuration. Remove these flags or use --yes without them.", + "The --yes flag uses default configuration. Remove these flags or use --yes without them.", ); } } From 52afb2edabb849015fc773960b9e692a7c3c509f Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Wed, 1 Oct 2025 12:32:16 +0530 Subject: [PATCH 16/33] ok --- .../mysql/src/schema/{auth.ts => auth.ts.hbs} | 0 .../postgres/src/schema/{auth.ts => auth.ts.hbs} | 0 .../sqlite/src/schema/{auth.ts => auth.ts.hbs} | 0 .../models/{auth.model.ts => auth.model.ts.hbs} | 0 .../schema/{auth.prisma => auth.prisma.hbs} | 0 .../schema/{auth.prisma => auth.prisma.hbs} | 0 .../schema/{auth.prisma => auth.prisma.hbs} | 0 .../schema/{auth.prisma => auth.prisma.hbs} | 0 .../nuxt/app/middleware/{auth.ts => auth.ts.hbs} | 0 .../backend/server/elysia/src/index.ts.hbs | 2 +- .../ai/server/next/src/app/ai/route.ts.hbs | 15 --------------- 11 files changed, 1 insertion(+), 16 deletions(-) rename apps/cli/templates/auth/better-auth/server/db/drizzle/mysql/src/schema/{auth.ts => auth.ts.hbs} (100%) rename apps/cli/templates/auth/better-auth/server/db/drizzle/postgres/src/schema/{auth.ts => auth.ts.hbs} (100%) rename apps/cli/templates/auth/better-auth/server/db/drizzle/sqlite/src/schema/{auth.ts => auth.ts.hbs} (100%) rename apps/cli/templates/auth/better-auth/server/db/mongoose/mongodb/src/models/{auth.model.ts => auth.model.ts.hbs} (100%) rename apps/cli/templates/auth/better-auth/server/db/prisma/mongodb/prisma/schema/{auth.prisma => auth.prisma.hbs} (100%) rename apps/cli/templates/auth/better-auth/server/db/prisma/mysql/prisma/schema/{auth.prisma => auth.prisma.hbs} (100%) rename apps/cli/templates/auth/better-auth/server/db/prisma/postgres/prisma/schema/{auth.prisma => auth.prisma.hbs} (100%) rename apps/cli/templates/auth/better-auth/server/db/prisma/sqlite/prisma/schema/{auth.prisma => auth.prisma.hbs} (100%) rename apps/cli/templates/auth/better-auth/web/nuxt/app/middleware/{auth.ts => auth.ts.hbs} (100%) delete mode 100644 apps/cli/templates/examples/ai/server/next/src/app/ai/route.ts.hbs diff --git a/apps/cli/templates/auth/better-auth/server/db/drizzle/mysql/src/schema/auth.ts b/apps/cli/templates/auth/better-auth/server/db/drizzle/mysql/src/schema/auth.ts.hbs similarity index 100% rename from apps/cli/templates/auth/better-auth/server/db/drizzle/mysql/src/schema/auth.ts rename to apps/cli/templates/auth/better-auth/server/db/drizzle/mysql/src/schema/auth.ts.hbs diff --git a/apps/cli/templates/auth/better-auth/server/db/drizzle/postgres/src/schema/auth.ts b/apps/cli/templates/auth/better-auth/server/db/drizzle/postgres/src/schema/auth.ts.hbs similarity index 100% rename from apps/cli/templates/auth/better-auth/server/db/drizzle/postgres/src/schema/auth.ts rename to apps/cli/templates/auth/better-auth/server/db/drizzle/postgres/src/schema/auth.ts.hbs diff --git a/apps/cli/templates/auth/better-auth/server/db/drizzle/sqlite/src/schema/auth.ts b/apps/cli/templates/auth/better-auth/server/db/drizzle/sqlite/src/schema/auth.ts.hbs similarity index 100% rename from apps/cli/templates/auth/better-auth/server/db/drizzle/sqlite/src/schema/auth.ts rename to apps/cli/templates/auth/better-auth/server/db/drizzle/sqlite/src/schema/auth.ts.hbs diff --git a/apps/cli/templates/auth/better-auth/server/db/mongoose/mongodb/src/models/auth.model.ts b/apps/cli/templates/auth/better-auth/server/db/mongoose/mongodb/src/models/auth.model.ts.hbs similarity index 100% rename from apps/cli/templates/auth/better-auth/server/db/mongoose/mongodb/src/models/auth.model.ts rename to apps/cli/templates/auth/better-auth/server/db/mongoose/mongodb/src/models/auth.model.ts.hbs diff --git a/apps/cli/templates/auth/better-auth/server/db/prisma/mongodb/prisma/schema/auth.prisma b/apps/cli/templates/auth/better-auth/server/db/prisma/mongodb/prisma/schema/auth.prisma.hbs similarity index 100% rename from apps/cli/templates/auth/better-auth/server/db/prisma/mongodb/prisma/schema/auth.prisma rename to apps/cli/templates/auth/better-auth/server/db/prisma/mongodb/prisma/schema/auth.prisma.hbs diff --git a/apps/cli/templates/auth/better-auth/server/db/prisma/mysql/prisma/schema/auth.prisma b/apps/cli/templates/auth/better-auth/server/db/prisma/mysql/prisma/schema/auth.prisma.hbs similarity index 100% rename from apps/cli/templates/auth/better-auth/server/db/prisma/mysql/prisma/schema/auth.prisma rename to apps/cli/templates/auth/better-auth/server/db/prisma/mysql/prisma/schema/auth.prisma.hbs diff --git a/apps/cli/templates/auth/better-auth/server/db/prisma/postgres/prisma/schema/auth.prisma b/apps/cli/templates/auth/better-auth/server/db/prisma/postgres/prisma/schema/auth.prisma.hbs similarity index 100% rename from apps/cli/templates/auth/better-auth/server/db/prisma/postgres/prisma/schema/auth.prisma rename to apps/cli/templates/auth/better-auth/server/db/prisma/postgres/prisma/schema/auth.prisma.hbs diff --git a/apps/cli/templates/auth/better-auth/server/db/prisma/sqlite/prisma/schema/auth.prisma b/apps/cli/templates/auth/better-auth/server/db/prisma/sqlite/prisma/schema/auth.prisma.hbs similarity index 100% rename from apps/cli/templates/auth/better-auth/server/db/prisma/sqlite/prisma/schema/auth.prisma rename to apps/cli/templates/auth/better-auth/server/db/prisma/sqlite/prisma/schema/auth.prisma.hbs diff --git a/apps/cli/templates/auth/better-auth/web/nuxt/app/middleware/auth.ts b/apps/cli/templates/auth/better-auth/web/nuxt/app/middleware/auth.ts.hbs similarity index 100% rename from apps/cli/templates/auth/better-auth/web/nuxt/app/middleware/auth.ts rename to apps/cli/templates/auth/better-auth/web/nuxt/app/middleware/auth.ts.hbs diff --git a/apps/cli/templates/backend/server/elysia/src/index.ts.hbs b/apps/cli/templates/backend/server/elysia/src/index.ts.hbs index e00b90441..6445b0dd3 100644 --- a/apps/cli/templates/backend/server/elysia/src/index.ts.hbs +++ b/apps/cli/templates/backend/server/elysia/src/index.ts.hbs @@ -104,7 +104,7 @@ const app = new Elysia() const body = await context.request.json(); const uiMessages = body.messages || []; const result = streamText({ - model: google("gemini-2.0-flash"), + model: google("gemini-2.5-flash"), messages: convertToModelMessages(uiMessages) }); diff --git a/apps/cli/templates/examples/ai/server/next/src/app/ai/route.ts.hbs b/apps/cli/templates/examples/ai/server/next/src/app/ai/route.ts.hbs deleted file mode 100644 index 4705c9b17..000000000 --- a/apps/cli/templates/examples/ai/server/next/src/app/ai/route.ts.hbs +++ /dev/null @@ -1,15 +0,0 @@ -import { google } from '@ai-sdk/google'; -import { streamText, type UIMessage, convertToModelMessages } from 'ai'; - -export const maxDuration = 30; - -export async function POST(req: Request) { - const { messages }: { messages: UIMessage[] } = await req.json(); - - const result = streamText({ - model: google('gemini-2.0-flash'), - messages: convertToModelMessages(messages), - }); - - return result.toUIMessageStreamResponse(); -} \ No newline at end of file From e4d5cc6d2581e857ab97064bbdea724ea49aeb2a Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Fri, 3 Oct 2025 09:49:12 +0530 Subject: [PATCH 17/33] ok --- apps/cli/src/constants.ts | 2 ++ apps/cli/src/helpers/core/api-setup.ts | 6 ++++- apps/cli/src/helpers/core/template-manager.ts | 23 ++++--------------- apps/cli/src/utils/config-validation.ts | 5 ++-- apps/cli/src/utils/template-processor.ts | 10 ++++++-- .../api/orpc/server/{base => }/_gitignore | 0 .../orpc/server/{base => }/package.json.hbs | 0 .../orpc/server/{rest => }/src/context.ts.hbs | 2 +- .../orpc/server/{rest => }/src/index.ts.hbs | 0 .../{base => }/src/routers/index.ts.hbs | 0 .../orpc/server/{base => }/tsconfig.json.hbs | 0 .../server/{base => }/tsdown.config.ts.hbs | 0 .../api/trpc/server/{base => }/_gitignore | 0 .../trpc/server/{base => }/package.json.hbs | 0 .../trpc/server/{rest => }/src/context.ts.hbs | 2 +- .../trpc/server/{rest => }/src/index.ts.hbs | 0 .../{base => }/src/routers/index.ts.hbs | 0 .../trpc/server/{base => }/tsconfig.json.hbs | 0 .../server/{base => }/tsdown.config.ts.hbs | 0 .../better-auth/server/base/src/index.ts.hbs | 2 +- .../db/drizzle/mysql/src/index.ts.hbs | 2 +- .../db/drizzle/postgres/src/index.ts.hbs | 2 +- .../db/drizzle/sqlite/src/index.ts.hbs | 2 +- 23 files changed, 28 insertions(+), 30 deletions(-) rename apps/cli/templates/api/orpc/server/{base => }/_gitignore (100%) rename apps/cli/templates/api/orpc/server/{base => }/package.json.hbs (100%) rename apps/cli/templates/api/orpc/server/{rest => }/src/context.ts.hbs (97%) rename apps/cli/templates/api/orpc/server/{rest => }/src/index.ts.hbs (100%) rename apps/cli/templates/api/orpc/server/{base => }/src/routers/index.ts.hbs (100%) rename apps/cli/templates/api/orpc/server/{base => }/tsconfig.json.hbs (100%) rename apps/cli/templates/api/orpc/server/{base => }/tsdown.config.ts.hbs (100%) rename apps/cli/templates/api/trpc/server/{base => }/_gitignore (100%) rename apps/cli/templates/api/trpc/server/{base => }/package.json.hbs (100%) rename apps/cli/templates/api/trpc/server/{rest => }/src/context.ts.hbs (97%) rename apps/cli/templates/api/trpc/server/{rest => }/src/index.ts.hbs (100%) rename apps/cli/templates/api/trpc/server/{base => }/src/routers/index.ts.hbs (100%) rename apps/cli/templates/api/trpc/server/{base => }/tsconfig.json.hbs (100%) rename apps/cli/templates/api/trpc/server/{base => }/tsdown.config.ts.hbs (100%) diff --git a/apps/cli/src/constants.ts b/apps/cli/src/constants.ts index 3e5908823..95e9c1bb8 100644 --- a/apps/cli/src/constants.ts +++ b/apps/cli/src/constants.ts @@ -127,6 +127,8 @@ export const dependencyVersionMap = { "@trpc/server": "^11.5.0", "@trpc/client": "^11.5.0", + next: "^15.1.0", + convex: "^1.27.0", "@convex-dev/react-query": "^0.0.0-alpha.8", "convex-svelte": "^0.0.11", diff --git a/apps/cli/src/helpers/core/api-setup.ts b/apps/cli/src/helpers/core/api-setup.ts index 7009ff602..3de56e990 100644 --- a/apps/cli/src/helpers/core/api-setup.ts +++ b/apps/cli/src/helpers/core/api-setup.ts @@ -17,7 +17,7 @@ async function addBackendWorkspaceDependency( } pkgJson.dependencies[backendPackageName] = workspaceVersion; await fs.writeJson(pkgJsonPath, pkgJson, { spaces: 2 }); - } catch (_error) {} + } catch (_error) { } } function getFrontendType(frontend: Frontend[]): { @@ -237,6 +237,10 @@ export async function setupApi(config: ProjectConfig) { frameworkDeps.push("express", "@types/express"); } else if (backend === "fastify") { frameworkDeps.push("fastify"); + } else if (backend === "self") { + if (frontend.includes("next")) { + frameworkDeps.push("next"); + } } if (frameworkDeps.length > 0) { diff --git a/apps/cli/src/helpers/core/template-manager.ts b/apps/cli/src/helpers/core/template-manager.ts index c1486a074..f0c54ad1d 100644 --- a/apps/cli/src/helpers/core/template-manager.ts +++ b/apps/cli/src/helpers/core/template-manager.ts @@ -244,27 +244,12 @@ async function setupApiPackage(projectDir: string, context: ProjectConfig) { const apiPackageDir = path.join(projectDir, "packages/api"); await fs.ensureDir(apiPackageDir); - const apiServerBaseDir = path.join( + const apiServerDir = path.join( PKG_ROOT, - `templates/api/${context.api}/server/base`, + `templates/api/${context.api}/server`, ); - if (await fs.pathExists(apiServerBaseDir)) { - await processAndCopyFiles("**/*", apiServerBaseDir, apiPackageDir, context); - } - - const apiServerFrameworkDir = path.join( - PKG_ROOT, - `templates/api/${context.api}/server/rest`, - ); - - if (await fs.pathExists(apiServerFrameworkDir)) { - await processAndCopyFiles( - "**/*", - apiServerFrameworkDir, - apiPackageDir, - context, - true, - ); + if (await fs.pathExists(apiServerDir)) { + await processAndCopyFiles("**/*", apiServerDir, apiPackageDir, context); } } diff --git a/apps/cli/src/utils/config-validation.ts b/apps/cli/src/utils/config-validation.ts index a525c4ec7..0a4a10382 100644 --- a/apps/cli/src/utils/config-validation.ts +++ b/apps/cli/src/utils/config-validation.ts @@ -333,11 +333,12 @@ export function validateBackendConstraints( providedFlags.has("backend") && backend && backend !== "convex" && - backend !== "none" + backend !== "none" && + backend !== "self" ) { if (providedFlags.has("runtime") && options.runtime === "none") { exitWithError( - "'--runtime none' is only supported with '--backend convex' or '--backend none'. Please choose 'bun', 'node', or remove the --runtime flag.", + "'--runtime none' is only supported with '--backend convex', '--backend none', or '--backend self'. Please choose 'bun', 'node', or remove the --runtime flag.", ); } } diff --git a/apps/cli/src/utils/template-processor.ts b/apps/cli/src/utils/template-processor.ts index 35abd6a20..c61063de5 100644 --- a/apps/cli/src/utils/template-processor.ts +++ b/apps/cli/src/utils/template-processor.ts @@ -53,8 +53,14 @@ export async function processTemplate( handlebars.registerHelper("eq", (a, b) => a === b); handlebars.registerHelper("ne", (a, b) => a !== b); -handlebars.registerHelper("and", (a, b) => a && b); -handlebars.registerHelper("or", (a, b) => a || b); +handlebars.registerHelper("and", (...args) => { + const values = args.slice(0, -1); + return values.every(value => value); +}); +handlebars.registerHelper("or", (...args) => { + const values = args.slice(0, -1); + return values.some(value => value); +}); handlebars.registerHelper( "includes", diff --git a/apps/cli/templates/api/orpc/server/base/_gitignore b/apps/cli/templates/api/orpc/server/_gitignore similarity index 100% rename from apps/cli/templates/api/orpc/server/base/_gitignore rename to apps/cli/templates/api/orpc/server/_gitignore diff --git a/apps/cli/templates/api/orpc/server/base/package.json.hbs b/apps/cli/templates/api/orpc/server/package.json.hbs similarity index 100% rename from apps/cli/templates/api/orpc/server/base/package.json.hbs rename to apps/cli/templates/api/orpc/server/package.json.hbs diff --git a/apps/cli/templates/api/orpc/server/rest/src/context.ts.hbs b/apps/cli/templates/api/orpc/server/src/context.ts.hbs similarity index 97% rename from apps/cli/templates/api/orpc/server/rest/src/context.ts.hbs rename to apps/cli/templates/api/orpc/server/src/context.ts.hbs index 645052a9f..8b068201e 100644 --- a/apps/cli/templates/api/orpc/server/rest/src/context.ts.hbs +++ b/apps/cli/templates/api/orpc/server/src/context.ts.hbs @@ -1,4 +1,4 @@ -{{#if (eq backend 'next')}} +{{#if (and (eq backend 'self') (includes frontend "next"))}} import type { NextRequest } from "next/server"; {{#if (eq auth "better-auth")}} import { auth } from "@{{projectName}}/auth"; diff --git a/apps/cli/templates/api/orpc/server/rest/src/index.ts.hbs b/apps/cli/templates/api/orpc/server/src/index.ts.hbs similarity index 100% rename from apps/cli/templates/api/orpc/server/rest/src/index.ts.hbs rename to apps/cli/templates/api/orpc/server/src/index.ts.hbs diff --git a/apps/cli/templates/api/orpc/server/base/src/routers/index.ts.hbs b/apps/cli/templates/api/orpc/server/src/routers/index.ts.hbs similarity index 100% rename from apps/cli/templates/api/orpc/server/base/src/routers/index.ts.hbs rename to apps/cli/templates/api/orpc/server/src/routers/index.ts.hbs diff --git a/apps/cli/templates/api/orpc/server/base/tsconfig.json.hbs b/apps/cli/templates/api/orpc/server/tsconfig.json.hbs similarity index 100% rename from apps/cli/templates/api/orpc/server/base/tsconfig.json.hbs rename to apps/cli/templates/api/orpc/server/tsconfig.json.hbs diff --git a/apps/cli/templates/api/orpc/server/base/tsdown.config.ts.hbs b/apps/cli/templates/api/orpc/server/tsdown.config.ts.hbs similarity index 100% rename from apps/cli/templates/api/orpc/server/base/tsdown.config.ts.hbs rename to apps/cli/templates/api/orpc/server/tsdown.config.ts.hbs diff --git a/apps/cli/templates/api/trpc/server/base/_gitignore b/apps/cli/templates/api/trpc/server/_gitignore similarity index 100% rename from apps/cli/templates/api/trpc/server/base/_gitignore rename to apps/cli/templates/api/trpc/server/_gitignore diff --git a/apps/cli/templates/api/trpc/server/base/package.json.hbs b/apps/cli/templates/api/trpc/server/package.json.hbs similarity index 100% rename from apps/cli/templates/api/trpc/server/base/package.json.hbs rename to apps/cli/templates/api/trpc/server/package.json.hbs diff --git a/apps/cli/templates/api/trpc/server/rest/src/context.ts.hbs b/apps/cli/templates/api/trpc/server/src/context.ts.hbs similarity index 97% rename from apps/cli/templates/api/trpc/server/rest/src/context.ts.hbs rename to apps/cli/templates/api/trpc/server/src/context.ts.hbs index 8cf2c4d9d..50baaf177 100644 --- a/apps/cli/templates/api/trpc/server/rest/src/context.ts.hbs +++ b/apps/cli/templates/api/trpc/server/src/context.ts.hbs @@ -1,4 +1,4 @@ -{{#if (eq backend 'next')}} +{{#if (and (eq backend 'self') (includes frontend "next"))}} import type { NextRequest } from "next/server"; {{#if (eq auth "better-auth")}} import { auth } from "@{{projectName}}/auth"; diff --git a/apps/cli/templates/api/trpc/server/rest/src/index.ts.hbs b/apps/cli/templates/api/trpc/server/src/index.ts.hbs similarity index 100% rename from apps/cli/templates/api/trpc/server/rest/src/index.ts.hbs rename to apps/cli/templates/api/trpc/server/src/index.ts.hbs diff --git a/apps/cli/templates/api/trpc/server/base/src/routers/index.ts.hbs b/apps/cli/templates/api/trpc/server/src/routers/index.ts.hbs similarity index 100% rename from apps/cli/templates/api/trpc/server/base/src/routers/index.ts.hbs rename to apps/cli/templates/api/trpc/server/src/routers/index.ts.hbs diff --git a/apps/cli/templates/api/trpc/server/base/tsconfig.json.hbs b/apps/cli/templates/api/trpc/server/tsconfig.json.hbs similarity index 100% rename from apps/cli/templates/api/trpc/server/base/tsconfig.json.hbs rename to apps/cli/templates/api/trpc/server/tsconfig.json.hbs diff --git a/apps/cli/templates/api/trpc/server/base/tsdown.config.ts.hbs b/apps/cli/templates/api/trpc/server/tsdown.config.ts.hbs similarity index 100% rename from apps/cli/templates/api/trpc/server/base/tsdown.config.ts.hbs rename to apps/cli/templates/api/trpc/server/tsdown.config.ts.hbs diff --git a/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs b/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs index beba81ff0..911b9130d 100644 --- a/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs +++ b/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs @@ -66,7 +66,7 @@ export const auth = betterAuth({ {{/if}} {{#if (eq orm "drizzle")}} -{{#if (or (eq runtime "bun") (eq runtime "node"))}} +{{#if (or (eq runtime "bun") (eq runtime "node") (eq runtime "none"))}} import { betterAuth, type BetterAuthOptions } from "better-auth"; import { drizzleAdapter } from "better-auth/adapters/drizzle"; {{#if (or (includes frontend "native-nativewind") (includes frontend "native-unistyles"))}} diff --git a/apps/cli/templates/db/drizzle/mysql/src/index.ts.hbs b/apps/cli/templates/db/drizzle/mysql/src/index.ts.hbs index e6915df15..fed8f4dae 100644 --- a/apps/cli/templates/db/drizzle/mysql/src/index.ts.hbs +++ b/apps/cli/templates/db/drizzle/mysql/src/index.ts.hbs @@ -1,4 +1,4 @@ -{{#if (or (eq runtime "bun") (eq runtime "node"))}} +{{#if (or (eq runtime "bun") (eq runtime "node") (eq runtime "none"))}} {{#if (eq dbSetup "planetscale")}} import { drizzle } from "drizzle-orm/planetscale-serverless"; diff --git a/apps/cli/templates/db/drizzle/postgres/src/index.ts.hbs b/apps/cli/templates/db/drizzle/postgres/src/index.ts.hbs index 3f381d1cf..417f9dffd 100644 --- a/apps/cli/templates/db/drizzle/postgres/src/index.ts.hbs +++ b/apps/cli/templates/db/drizzle/postgres/src/index.ts.hbs @@ -1,4 +1,4 @@ -{{#if (or (eq runtime "bun") (eq runtime "node"))}} +{{#if (or (eq runtime "bun") (eq runtime "node") (eq runtime "none"))}} {{#if (eq dbSetup "neon")}} import { neon, neonConfig } from '@neondatabase/serverless'; import { drizzle } from 'drizzle-orm/neon-http'; diff --git a/apps/cli/templates/db/drizzle/sqlite/src/index.ts.hbs b/apps/cli/templates/db/drizzle/sqlite/src/index.ts.hbs index 62325d1d6..6a94ee148 100644 --- a/apps/cli/templates/db/drizzle/sqlite/src/index.ts.hbs +++ b/apps/cli/templates/db/drizzle/sqlite/src/index.ts.hbs @@ -1,4 +1,4 @@ -{{#if (or (eq runtime "bun") (eq runtime "node"))}} +{{#if (or (eq runtime "bun") (eq runtime "node") (eq runtime "none"))}} import { drizzle } from "drizzle-orm/libsql"; import { createClient } from "@libsql/client"; From cdefd19fe28a7fb62a310af57dac986c38feb852 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Fri, 3 Oct 2025 13:08:13 +0530 Subject: [PATCH 18/33] ok --- apps/cli/src/constants.ts | 2 +- apps/cli/src/helpers/addons/examples-setup.ts | 24 ++++- apps/cli/src/helpers/core/env-setup.ts | 100 ++++++++++-------- apps/cli/src/helpers/core/project-config.ts | 1 + apps/cli/src/helpers/core/template-manager.ts | 46 ++++++++ .../src/app/api/rpc/[[...rest]]/route.ts.hbs | 21 ++++ .../orpc/web/react/base/src/utils/orpc.ts.hbs | 4 +- .../next/src/app/api/trpc/[trpc]/route.ts.hbs | 14 +++ .../trpc/web/react/base/src/utils/trpc.ts.hbs | 6 +- .../src/app/api/auth/[...all]/route.ts.hbs | 4 + .../next/src/app/api/ai/route.ts.hbs | 15 +++ .../drizzle/base/src/routers/todo.ts.hbs | 2 +- .../frontend/react/next/package.json.hbs | 2 +- 13 files changed, 189 insertions(+), 52 deletions(-) create mode 100644 apps/cli/templates/api/orpc/fullstack/next/src/app/api/rpc/[[...rest]]/route.ts.hbs create mode 100644 apps/cli/templates/api/trpc/fullstack/next/src/app/api/trpc/[trpc]/route.ts.hbs create mode 100644 apps/cli/templates/auth/better-auth/fullstack/next/src/app/api/auth/[...all]/route.ts.hbs create mode 100644 apps/cli/templates/examples/ai/fullstack/next/src/app/api/ai/route.ts.hbs diff --git a/apps/cli/src/constants.ts b/apps/cli/src/constants.ts index 95e9c1bb8..8a8dddb7f 100644 --- a/apps/cli/src/constants.ts +++ b/apps/cli/src/constants.ts @@ -127,7 +127,7 @@ export const dependencyVersionMap = { "@trpc/server": "^11.5.0", "@trpc/client": "^11.5.0", - next: "^15.1.0", + "next": "15.5.4", convex: "^1.27.0", "@convex-dev/react-query": "^0.0.0-alpha.8", diff --git a/apps/cli/src/helpers/addons/examples-setup.ts b/apps/cli/src/helpers/addons/examples-setup.ts index 51b08443b..6ca05a45e 100644 --- a/apps/cli/src/helpers/addons/examples-setup.ts +++ b/apps/cli/src/helpers/addons/examples-setup.ts @@ -5,7 +5,7 @@ import type { ProjectConfig } from "../../types"; import { addPackageDependency } from "../../utils/add-package-deps"; export async function setupExamples(config: ProjectConfig) { - const { examples, frontend, backend, projectDir } = config; + const { examples, frontend, backend, projectDir, orm } = config; if ( backend === "convex" || @@ -16,6 +16,28 @@ export async function setupExamples(config: ProjectConfig) { return; } + const apiDir = path.join(projectDir, "packages/api"); + const apiDirExists = await fs.pathExists(apiDir); + + if (apiDirExists && backend !== "none") { + if (orm === "drizzle") { + await addPackageDependency({ + dependencies: ["drizzle-orm"], + projectDir: apiDir, + }); + } else if (orm === "prisma") { + await addPackageDependency({ + dependencies: ["@prisma/client"], + projectDir: apiDir, + }); + } else if (orm === "mongoose") { + await addPackageDependency({ + dependencies: ["mongoose"], + projectDir: apiDir, + }); + } + } + if (examples.includes("ai")) { const webClientDir = path.join(projectDir, "apps/web"); const nativeClientDir = path.join(projectDir, "apps/native"); diff --git a/apps/cli/src/helpers/core/env-setup.ts b/apps/cli/src/helpers/core/env-setup.ts index 2fee447a8..72d2e22fb 100644 --- a/apps/cli/src/helpers/core/env-setup.ts +++ b/apps/cli/src/helpers/core/env-setup.ts @@ -144,7 +144,7 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { { key: envVarName, value: serverUrl, - condition: true, + condition: backend !== "self", }, ]; @@ -307,46 +307,51 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { } } - if (await fs.pathExists(serverDir)) { - const serverEnvPath = path.join(serverDir, ".env"); - const serverVars: EnvVariable[] = [ - { - key: "BETTER_AUTH_SECRET", - value: generateAuthSecret(), - condition: !!auth, - }, - { - key: "BETTER_AUTH_URL", - value: "http://localhost:3000", - condition: !!auth, - }, - { - key: "POLAR_ACCESS_TOKEN", - value: "", - condition: config.payments === "polar", - }, - { - key: "POLAR_SUCCESS_URL", - value: `${corsOrigin}/success?checkout_id={CHECKOUT_ID}`, - condition: config.payments === "polar", - }, - { - key: "CORS_ORIGIN", - value: corsOrigin, - condition: true, - }, - { - key: "GOOGLE_GENERATIVE_AI_API_KEY", - value: "", - condition: examples?.includes("ai") || false, - }, - { - key: "DATABASE_URL", - value: databaseUrl, - condition: database !== "none" && dbSetup === "none", - }, - ]; - await addEnvVariablesToFile(serverEnvPath, serverVars); + const serverVars: EnvVariable[] = [ + { + key: "BETTER_AUTH_SECRET", + value: generateAuthSecret(), + condition: !!auth, + }, + { + key: "BETTER_AUTH_URL", + value: "http://localhost:3000", + condition: !!auth, + }, + { + key: "POLAR_ACCESS_TOKEN", + value: "", + condition: config.payments === "polar", + }, + { + key: "POLAR_SUCCESS_URL", + value: `${corsOrigin}/success?checkout_id={CHECKOUT_ID}`, + condition: config.payments === "polar", + }, + { + key: "CORS_ORIGIN", + value: corsOrigin, + condition: true, + }, + { + key: "GOOGLE_GENERATIVE_AI_API_KEY", + value: "", + condition: examples?.includes("ai") || false, + }, + { + key: "DATABASE_URL", + value: databaseUrl, + condition: database !== "none" && dbSetup === "none", + }, + ]; + + if (backend === "self") { + const webDir = path.join(projectDir, "apps/web"); + if (await fs.pathExists(webDir)) { + await addEnvVariablesToFile(path.join(webDir, ".env"), serverVars); + } + } else if (await fs.pathExists(serverDir)) { + await addEnvVariablesToFile(path.join(serverDir, ".env"), serverVars); } const isUnifiedAlchemy = @@ -387,10 +392,15 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { condition: true, }, ]; - await addEnvVariablesToFile( - path.join(serverDir, ".env"), - serverAlchemyVars, - ); + + if (backend === "self") { + const webDir = path.join(projectDir, "apps/web"); + if (await fs.pathExists(webDir)) { + await addEnvVariablesToFile(path.join(webDir, ".env"), serverAlchemyVars); + } + } else { + await addEnvVariablesToFile(path.join(serverDir, ".env"), serverAlchemyVars); + } } } } diff --git a/apps/cli/src/helpers/core/project-config.ts b/apps/cli/src/helpers/core/project-config.ts index 3ca1c40ba..d5ba99524 100644 --- a/apps/cli/src/helpers/core/project-config.ts +++ b/apps/cli/src/helpers/core/project-config.ts @@ -13,6 +13,7 @@ export async function updatePackageConfigurations( if (options.backend === "convex") { await updateConvexPackageJson(projectDir, options); } else if (options.backend === "self") { + await updateDbPackageJson(projectDir, options); await updateAuthPackageJson(projectDir, options); await updateApiPackageJson(projectDir, options); await setupWorkspaceDependencies(projectDir, options); diff --git a/apps/cli/src/helpers/core/template-manager.ts b/apps/cli/src/helpers/core/template-manager.ts index f0c54ad1d..fb935f14c 100644 --- a/apps/cli/src/helpers/core/template-manager.ts +++ b/apps/cli/src/helpers/core/template-manager.ts @@ -122,6 +122,21 @@ export async function setupFrontendTemplates( } else { } } + + if (context.backend === "self" && reactFramework === "next" && context.api !== "none") { + const apiFullstackDir = path.join( + PKG_ROOT, + `templates/api/${context.api}/fullstack/next`, + ); + if (await fs.pathExists(apiFullstackDir)) { + await processAndCopyFiles( + "**/*", + apiFullstackDir, + webAppDir, + context, + ); + } + } } } else if (hasNuxtWeb) { const nuxtBaseDir = path.join(PKG_ROOT, "templates/frontend/nuxt"); @@ -577,6 +592,21 @@ export async function setupAuthTemplate( context, ); } + + if (context.backend === "self" && reactFramework === "next") { + const authFullstackSrc = path.join( + PKG_ROOT, + `templates/auth/${authProvider}/fullstack/next`, + ); + if (await fs.pathExists(authFullstackSrc)) { + await processAndCopyFiles( + "**/*", + authFullstackSrc, + webAppDir, + context, + ); + } + } } } else if (hasNuxtWeb) { const authWebNuxtSrc = path.join( @@ -903,6 +933,22 @@ export async function setupExamplesTemplate( ); } else { } + + if (context.backend === "self" && reactFramework === "next") { + const exampleFullstackSrc = path.join( + exampleBaseDir, + "fullstack/next", + ); + if (await fs.pathExists(exampleFullstackSrc)) { + await processAndCopyFiles( + "**/*", + exampleFullstackSrc, + webAppDir, + context, + false, + ); + } + } } } } else if (hasNuxtWeb) { diff --git a/apps/cli/templates/api/orpc/fullstack/next/src/app/api/rpc/[[...rest]]/route.ts.hbs b/apps/cli/templates/api/orpc/fullstack/next/src/app/api/rpc/[[...rest]]/route.ts.hbs new file mode 100644 index 000000000..2f9b51c9f --- /dev/null +++ b/apps/cli/templates/api/orpc/fullstack/next/src/app/api/rpc/[[...rest]]/route.ts.hbs @@ -0,0 +1,21 @@ +import { RPCHandler } from '@orpc/server/fetch' +import { createContext } from '@{{projectName}}/api/context' +import { appRouter } from '@{{projectName}}/api/routers/index' + +const handler = new RPCHandler(appRouter) + +async function handleRequest(request: Request) { + const { response } = await handler.handle(request, { + prefix: '/api/rpc', + context: createContext(request) + }) + + return response ?? new Response('Not found', { status: 404 }) +} + +export const HEAD = handleRequest +export const GET = handleRequest +export const POST = handleRequest +export const PUT = handleRequest +export const PATCH = handleRequest +export const DELETE = handleRequest \ No newline at end of file diff --git a/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs b/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs index ff80fb2c6..d65e37c95 100644 --- a/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs +++ b/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs @@ -21,7 +21,9 @@ export const queryClient = new QueryClient({ }); export const link = new RPCLink({ - {{#if (includes frontend "next")}} + {{#if (and (eq backend "self") (includes frontend "next"))}} + url: "/api/rpc", + {{else if (includes frontend "next")}} url: `${process.env.NEXT_PUBLIC_SERVER_URL}/rpc`, {{else}} url: `${import.meta.env.VITE_SERVER_URL}/rpc`, diff --git a/apps/cli/templates/api/trpc/fullstack/next/src/app/api/trpc/[trpc]/route.ts.hbs b/apps/cli/templates/api/trpc/fullstack/next/src/app/api/trpc/[trpc]/route.ts.hbs new file mode 100644 index 000000000..3bcc9e314 --- /dev/null +++ b/apps/cli/templates/api/trpc/fullstack/next/src/app/api/trpc/[trpc]/route.ts.hbs @@ -0,0 +1,14 @@ +import { fetchRequestHandler } from "@trpc/server/adapters/fetch"; +import { appRouter } from "@{{projectName}}/api/routers/index"; +import { createContext } from "@{{projectName}}/api/context"; +import { NextRequest } from "next/server"; + +function handler(req: NextRequest) { + return fetchRequestHandler({ + endpoint: "/api/trpc", + req, + router: appRouter, + createContext: () => createContext(req), + }); +} +export { handler as GET, handler as POST }; diff --git a/apps/cli/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs b/apps/cli/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs index 946e16b00..e383ce3a2 100644 --- a/apps/cli/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs +++ b/apps/cli/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs @@ -2,7 +2,7 @@ import { QueryCache, QueryClient } from '@tanstack/react-query'; import { createTRPCClient, httpBatchLink } from '@trpc/client'; import { createTRPCOptionsProxy } from '@trpc/tanstack-react-query'; -import type { AppRouter } from '../../../server/src/routers'; +import type { AppRouter } from "@{{projectName}}/api/routers/index"; import { toast } from 'sonner'; export const queryClient = new QueryClient({ @@ -23,7 +23,9 @@ export const queryClient = new QueryClient({ const trpcClient = createTRPCClient({ links: [ httpBatchLink({ - {{#if (includes frontend 'next')}} + {{#if (and (eq backend "self") (includes frontend 'next'))}} + url: "/api/trpc", + {{else if (includes frontend 'next')}} url: `${process.env.NEXT_PUBLIC_SERVER_URL}/trpc`, {{else}} url: `${import.meta.env.VITE_SERVER_URL}/trpc`, diff --git a/apps/cli/templates/auth/better-auth/fullstack/next/src/app/api/auth/[...all]/route.ts.hbs b/apps/cli/templates/auth/better-auth/fullstack/next/src/app/api/auth/[...all]/route.ts.hbs new file mode 100644 index 000000000..18cadf13d --- /dev/null +++ b/apps/cli/templates/auth/better-auth/fullstack/next/src/app/api/auth/[...all]/route.ts.hbs @@ -0,0 +1,4 @@ +import { auth } from "@{{projectName}}/auth"; +import { toNextJsHandler } from "better-auth/next-js"; + +export const { GET, POST } = toNextJsHandler(auth.handler); diff --git a/apps/cli/templates/examples/ai/fullstack/next/src/app/api/ai/route.ts.hbs b/apps/cli/templates/examples/ai/fullstack/next/src/app/api/ai/route.ts.hbs new file mode 100644 index 000000000..98f40ee48 --- /dev/null +++ b/apps/cli/templates/examples/ai/fullstack/next/src/app/api/ai/route.ts.hbs @@ -0,0 +1,15 @@ +import { google } from "@ai-sdk/google"; +import { streamText, type UIMessage, convertToModelMessages } from "ai"; + +export const maxDuration = 30; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: google("gemini-2.5-flash"), + messages: convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse(); +} diff --git a/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs b/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs index 4d054a6a7..1b84dde9d 100644 --- a/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs +++ b/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs @@ -40,7 +40,7 @@ export const todoRouter = { {{#if (eq api "trpc")}} import z from "zod"; import { router, publicProcedure } from "../index"; -import { todo } from "../db/schema/todo"; +import { todo } from "@{{projectName}}/db/schema/todo"; import { eq } from "drizzle-orm"; import { db } from "@{{projectName}}/db"; diff --git a/apps/cli/templates/frontend/react/next/package.json.hbs b/apps/cli/templates/frontend/react/next/package.json.hbs index 352916244..b3978e61d 100644 --- a/apps/cli/templates/frontend/react/next/package.json.hbs +++ b/apps/cli/templates/frontend/react/next/package.json.hbs @@ -13,7 +13,7 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.487.0", - "next": "15.5.0", + "next": "15.5.4", "next-themes": "^0.4.6", "react": "19.1.0", "react-dom": "19.1.0", From 708579d70ca952251c513cf51341c85431de652f Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Fri, 3 Oct 2025 13:34:34 +0530 Subject: [PATCH 19/33] ok --- apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs | 6 +++++- .../cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs | 6 +++++- apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs | 6 +++++- apps/cli/templates/db/prisma/mongodb/prisma.config.ts.hbs | 6 +++++- apps/cli/templates/db/prisma/mysql/prisma.config.ts.hbs | 6 +++++- apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs | 6 +++++- apps/cli/templates/db/prisma/sqlite/prisma.config.ts.hbs | 6 +++++- 7 files changed, 35 insertions(+), 7 deletions(-) diff --git a/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs b/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs index 4bcf08bb3..bc3e0a082 100644 --- a/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs +++ b/apps/cli/templates/db/drizzle/mysql/drizzle.config.ts.hbs @@ -2,7 +2,11 @@ import { defineConfig } from "drizzle-kit"; import dotenv from "dotenv"; dotenv.config({ - path: "../../apps/server/.env", + {{#if (eq backend "self")}} + path: "../../apps/web/.env", + {{else}} + path: "../../apps/server/.env", + {{/if}} }); export default defineConfig({ diff --git a/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs b/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs index 3a0fc0223..d65cb5467 100644 --- a/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs +++ b/apps/cli/templates/db/drizzle/postgres/drizzle.config.ts.hbs @@ -2,7 +2,11 @@ import { defineConfig } from "drizzle-kit"; import dotenv from "dotenv"; dotenv.config({ - path: "../../apps/server/.env", + {{#if (eq backend "self")}} + path: "../../apps/web/.env", + {{else}} + path: "../../apps/server/.env", + {{/if}} }); export default defineConfig({ diff --git a/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs b/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs index ea67fffd4..9d6e0e2c8 100644 --- a/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs +++ b/apps/cli/templates/db/drizzle/sqlite/drizzle.config.ts.hbs @@ -2,7 +2,11 @@ import { defineConfig } from "drizzle-kit"; import dotenv from "dotenv"; dotenv.config({ - path: "../../apps/server/.env", + {{#if (eq backend "self")}} + path: "../../apps/web/.env", + {{else}} + path: "../../apps/server/.env", + {{/if}} }); export default defineConfig({ diff --git a/apps/cli/templates/db/prisma/mongodb/prisma.config.ts.hbs b/apps/cli/templates/db/prisma/mongodb/prisma.config.ts.hbs index 4aa544e7b..d61150c09 100644 --- a/apps/cli/templates/db/prisma/mongodb/prisma.config.ts.hbs +++ b/apps/cli/templates/db/prisma/mongodb/prisma.config.ts.hbs @@ -3,7 +3,11 @@ import type { PrismaConfig } from "prisma"; import dotenv from "dotenv"; dotenv.config({ - path: "../../apps/server/.env", + {{#if (eq backend "self")}} + path: "../../apps/web/.env", + {{else}} + path: "../../apps/server/.env", + {{/if}} }); export default { diff --git a/apps/cli/templates/db/prisma/mysql/prisma.config.ts.hbs b/apps/cli/templates/db/prisma/mysql/prisma.config.ts.hbs index 4aa544e7b..d61150c09 100644 --- a/apps/cli/templates/db/prisma/mysql/prisma.config.ts.hbs +++ b/apps/cli/templates/db/prisma/mysql/prisma.config.ts.hbs @@ -3,7 +3,11 @@ import type { PrismaConfig } from "prisma"; import dotenv from "dotenv"; dotenv.config({ - path: "../../apps/server/.env", + {{#if (eq backend "self")}} + path: "../../apps/web/.env", + {{else}} + path: "../../apps/server/.env", + {{/if}} }); export default { diff --git a/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs b/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs index 65887edfb..4b20b5f47 100644 --- a/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs +++ b/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs @@ -4,7 +4,11 @@ import type { PrismaConfig } from "prisma"; import dotenv from "dotenv"; dotenv.config({ - path: "../../apps/server/.env", + {{#if (eq backend "self")}} + path: "../../apps/web/.env", + {{else}} + path: "../../apps/server/.env", + {{/if}} }); {{/unless}} diff --git a/apps/cli/templates/db/prisma/sqlite/prisma.config.ts.hbs b/apps/cli/templates/db/prisma/sqlite/prisma.config.ts.hbs index 4aa544e7b..d61150c09 100644 --- a/apps/cli/templates/db/prisma/sqlite/prisma.config.ts.hbs +++ b/apps/cli/templates/db/prisma/sqlite/prisma.config.ts.hbs @@ -3,7 +3,11 @@ import type { PrismaConfig } from "prisma"; import dotenv from "dotenv"; dotenv.config({ - path: "../../apps/server/.env", + {{#if (eq backend "self")}} + path: "../../apps/web/.env", + {{else}} + path: "../../apps/server/.env", + {{/if}} }); export default { From 6ee922f57824812c7f56c83be81097171877e3f4 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Fri, 3 Oct 2025 17:16:57 +0530 Subject: [PATCH 20/33] ok --- apps/cli/src/constants.ts | 2 +- apps/cli/src/helpers/addons/examples-setup.ts | 8 +++ apps/cli/src/helpers/core/api-setup.ts | 9 ++- apps/cli/src/helpers/core/env-setup.ts | 10 ++- apps/cli/src/helpers/core/template-manager.ts | 6 +- .../helpers/database-providers/d1-setup.ts | 13 ++-- .../database-providers/mongodb-atlas-setup.ts | 23 ++++--- .../helpers/database-providers/neon-setup.ts | 43 ++++++++----- .../database-providers/planetscale-setup.ts | 13 ++-- .../prisma-postgres-setup.ts | 64 ++++++++++++------- .../database-providers/supabase-setup.ts | 17 +++-- .../helpers/database-providers/turso-setup.ts | 23 ++++--- apps/cli/src/utils/template-processor.ts | 4 +- apps/cli/src/validation.ts | 2 +- .../src/app/api/rpc/[[...rest]]/route.ts.hbs | 61 +++++++++++++----- .../api/orpc/web/nuxt/app/plugins/orpc.ts.hbs | 2 +- .../orpc/web/react/base/src/utils/orpc.ts.hbs | 2 +- .../api/orpc/web/solid/src/utils/orpc.ts.hbs | 2 +- .../api/orpc/web/svelte/src/lib/orpc.ts.hbs | 2 +- .../trpc/web/react/base/src/utils/trpc.ts.hbs | 4 +- .../native/nativewind/tsconfig.json.hbs | 7 +- .../native/unistyles/tsconfig.json.hbs | 7 +- .../templates/frontend/nuxt/tsconfig.json.hbs | 4 -- .../frontend/react/next/tsconfig.json.hbs | 7 -- .../react/react-router/tsconfig.json.hbs | 7 +- .../tanstack-router/src/routes/__root.tsx.hbs | 2 +- .../react/tanstack-router/tsconfig.json.hbs | 7 +- .../tanstack-start/src/routes/__root.tsx.hbs | 2 +- .../react/tanstack-start/tsconfig.json.hbs | 7 +- .../frontend/solid/tsconfig.json.hbs | 7 +- .../frontend/svelte/tsconfig.json.hbs | 7 +- 31 files changed, 216 insertions(+), 158 deletions(-) diff --git a/apps/cli/src/constants.ts b/apps/cli/src/constants.ts index 8a8dddb7f..eca06ced7 100644 --- a/apps/cli/src/constants.ts +++ b/apps/cli/src/constants.ts @@ -127,7 +127,7 @@ export const dependencyVersionMap = { "@trpc/server": "^11.5.0", "@trpc/client": "^11.5.0", - "next": "15.5.4", + next: "15.5.4", convex: "^1.27.0", "@convex-dev/react-query": "^0.0.0-alpha.8", diff --git a/apps/cli/src/helpers/addons/examples-setup.ts b/apps/cli/src/helpers/addons/examples-setup.ts index 6ca05a45e..5fa2f6e5f 100644 --- a/apps/cli/src/helpers/addons/examples-setup.ts +++ b/apps/cli/src/helpers/addons/examples-setup.ts @@ -92,5 +92,13 @@ export async function setupExamples(config: ProjectConfig) { projectDir: apiDir, }); } + + // In fullstack mode, also add AI server deps to the web app + if (backend === "self" && webClientDirExists) { + await addPackageDependency({ + dependencies: ["ai", "@ai-sdk/google"], + projectDir: webClientDir, + }); + } } } diff --git a/apps/cli/src/helpers/core/api-setup.ts b/apps/cli/src/helpers/core/api-setup.ts index 3de56e990..a5b930d1d 100644 --- a/apps/cli/src/helpers/core/api-setup.ts +++ b/apps/cli/src/helpers/core/api-setup.ts @@ -17,7 +17,7 @@ async function addBackendWorkspaceDependency( } pkgJson.dependencies[backendPackageName] = workspaceVersion; await fs.writeJson(pkgJsonPath, pkgJson, { spaces: 2 }); - } catch (_error) { } + } catch (_error) {} } function getFrontendType(frontend: Frontend[]): { @@ -227,6 +227,13 @@ export async function setupApi(config: ProjectConfig) { projectDir: apiPackageDir, }); + if (backend === "self" && webDirExists) { + await addPackageDependency({ + dependencies: apiDeps.server.dependencies as AvailableDependencies[], + projectDir: webDir, + }); + } + // Add framework-specific dependencies for context types const frameworkDeps: AvailableDependencies[] = []; if (backend === "hono") { diff --git a/apps/cli/src/helpers/core/env-setup.ts b/apps/cli/src/helpers/core/env-setup.ts index 72d2e22fb..90d3779c1 100644 --- a/apps/cli/src/helpers/core/env-setup.ts +++ b/apps/cli/src/helpers/core/env-setup.ts @@ -396,10 +396,16 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { if (backend === "self") { const webDir = path.join(projectDir, "apps/web"); if (await fs.pathExists(webDir)) { - await addEnvVariablesToFile(path.join(webDir, ".env"), serverAlchemyVars); + await addEnvVariablesToFile( + path.join(webDir, ".env"), + serverAlchemyVars, + ); } } else { - await addEnvVariablesToFile(path.join(serverDir, ".env"), serverAlchemyVars); + await addEnvVariablesToFile( + path.join(serverDir, ".env"), + serverAlchemyVars, + ); } } } diff --git a/apps/cli/src/helpers/core/template-manager.ts b/apps/cli/src/helpers/core/template-manager.ts index fb935f14c..08074caa1 100644 --- a/apps/cli/src/helpers/core/template-manager.ts +++ b/apps/cli/src/helpers/core/template-manager.ts @@ -123,7 +123,11 @@ export async function setupFrontendTemplates( } } - if (context.backend === "self" && reactFramework === "next" && context.api !== "none") { + if ( + context.backend === "self" && + reactFramework === "next" && + context.api !== "none" + ) { const apiFullstackDir = path.join( PKG_ROOT, `templates/api/${context.api}/fullstack/next`, diff --git a/apps/cli/src/helpers/database-providers/d1-setup.ts b/apps/cli/src/helpers/database-providers/d1-setup.ts index 260a33ac7..aa83c3eab 100644 --- a/apps/cli/src/helpers/database-providers/d1-setup.ts +++ b/apps/cli/src/helpers/database-providers/d1-setup.ts @@ -4,10 +4,11 @@ import { addPackageDependency } from "../../utils/add-package-deps"; import { addEnvVariablesToFile, type EnvVariable } from "../core/env-setup"; export async function setupCloudflareD1(config: ProjectConfig) { - const { projectDir, serverDeploy, orm } = config; + const { projectDir, serverDeploy, orm, backend } = config; if (serverDeploy === "wrangler") { - const envPath = path.join(projectDir, "apps/server", ".env"); + const targetApp = backend === "self" ? "apps/web" : "apps/server"; + const envPath = path.join(projectDir, targetApp, ".env"); const variables: EnvVariable[] = [ { @@ -36,7 +37,8 @@ export async function setupCloudflareD1(config: ProjectConfig) { (serverDeploy === "wrangler" || serverDeploy === "alchemy") && orm === "prisma" ) { - const envPath = path.join(projectDir, "apps/server", ".env"); + const targetApp2 = backend === "self" ? "apps/web" : "apps/server"; + const envPath = path.join(projectDir, targetApp2, ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -49,7 +51,10 @@ export async function setupCloudflareD1(config: ProjectConfig) { await addEnvVariablesToFile(envPath, variables); } catch (_err) {} - const serverDir = path.join(projectDir, "apps/server"); + const serverDir = path.join( + projectDir, + backend === "self" ? "apps/web" : "apps/server", + ); await addPackageDependency({ dependencies: ["@prisma/adapter-d1"], projectDir: serverDir, diff --git a/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts b/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts index 6ee969de3..1bc79f678 100644 --- a/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts +++ b/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts @@ -80,9 +80,14 @@ async function initMongoDBAtlas(serverDir: string) { } } -async function writeEnvFile(projectDir: string, config?: MongoDBConfig) { +async function writeEnvFile( + projectDir: string, + backend: ProjectConfig["backend"], + config?: MongoDBConfig, +) { try { - const envPath = path.join(projectDir, "apps/server", ".env"); + const targetApp = backend === "self" ? "apps/web" : "apps/server"; + const envPath = path.join(projectDir, targetApp, ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -122,10 +127,10 @@ export async function setupMongoDBAtlas( config: ProjectConfig, cliInput?: { manualDb?: boolean }, ) { - const { projectDir } = config; + const { projectDir, backend } = config; const manualDb = cliInput?.manualDb ?? false; - const serverDir = path.join(projectDir, "apps/server"); + const serverDir = path.join(projectDir, "packages/db"); try { await fs.ensureDir(serverDir); @@ -164,8 +169,10 @@ export async function setupMongoDBAtlas( const atlasConfig = await initMongoDBAtlas(serverDir); - if (atlasConfig) { - await writeEnvFile(projectDir, atlasConfig); + const config = await initMongoDBAtlas(serverDir); + + if (config) { + await writeEnvFile(projectDir, config); log.success( pc.green( "MongoDB Atlas setup complete! Connection saved to .env file.", @@ -173,7 +180,7 @@ export async function setupMongoDBAtlas( ); } else { log.warn(pc.yellow("Falling back to local MongoDB configuration")); - await writeEnvFile(projectDir); + await writeEnvFile(projectDir, backend); displayManualSetupInstructions(); } } catch (error) { @@ -186,7 +193,7 @@ export async function setupMongoDBAtlas( ); try { - await writeEnvFile(projectDir); + await writeEnvFile(projectDir, backend); displayManualSetupInstructions(); } catch {} } diff --git a/apps/cli/src/helpers/database-providers/neon-setup.ts b/apps/cli/src/helpers/database-providers/neon-setup.ts index f01c8421a..bf3f323df 100644 --- a/apps/cli/src/helpers/database-providers/neon-setup.ts +++ b/apps/cli/src/helpers/database-providers/neon-setup.ts @@ -97,8 +97,13 @@ async function createNeonProject( } } -async function writeEnvFile(projectDir: string, config?: NeonConfig) { - const envPath = path.join(projectDir, "apps/server", ".env"); +async function writeEnvFile( + projectDir: string, + backend: ProjectConfig["backend"], + config?: NeonConfig, +) { + const targetApp = backend === "self" ? "apps/web" : "apps/server"; + const envPath = path.join(projectDir, targetApp, ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -121,8 +126,8 @@ async function setupWithNeonDb( const s = spinner(); s.start("Creating Neon database using neondb..."); - const serverDir = path.join(projectDir, "apps/server"); - await fs.ensureDir(serverDir); + const dbDir = path.join(projectDir, "packages/db"); + await fs.ensureDir(dbDir); const packageCmd = getPackageExecutionCommand( packageManager, @@ -131,7 +136,7 @@ async function setupWithNeonDb( await execa(packageCmd, { shell: true, - cwd: serverDir, + cwd: dbDir, }); s.stop(pc.green("Neon database created successfully!")); @@ -143,13 +148,13 @@ async function setupWithNeonDb( } } -function displayManualSetupInstructions() { +function displayManualSetupInstructions(target: "apps/web" | "apps/server") { log.info(`Manual Neon PostgreSQL Setup Instructions: 1. Visit https://neon.tech and create an account 2. Create a new project from the dashboard 3. Get your connection string -4. Add the database URL to the .env file in apps/server/.env +4. Add the database URL to the .env file in ${target}/.env DATABASE_URL="your_connection_string"`); } @@ -158,13 +163,15 @@ export async function setupNeonPostgres( config: ProjectConfig, cliInput?: { manualDb?: boolean }, ) { - const { packageManager, projectDir } = config; + const { packageManager, projectDir, backend } = config; const manualDb = cliInput?.manualDb ?? false; try { if (manualDb) { - await writeEnvFile(projectDir); - displayManualSetupInstructions(); + await writeEnvFile(projectDir, backend); + displayManualSetupInstructions( + backend === "self" ? "apps/web" : "apps/server", + ); return; } @@ -188,8 +195,10 @@ export async function setupNeonPostgres( if (isCancel(mode)) return exitCancelled("Operation cancelled"); if (mode === "manual") { - await writeEnvFile(projectDir); - displayManualSetupInstructions(); + await writeEnvFile(projectDir, backend); + displayManualSetupInstructions( + backend === "self" ? "apps/web" : "apps/server", + ); return; } @@ -246,8 +255,8 @@ export async function setupNeonPostgres( const finalSpinner = spinner(); finalSpinner.start("Configuring database connection"); - await fs.ensureDir(path.join(projectDir, "apps/server")); - await writeEnvFile(projectDir, neonConfig); + await fs.ensureDir(path.join(projectDir, "packages/db")); + await writeEnvFile(projectDir, backend, neonConfig); finalSpinner.stop("Neon database configured!"); } @@ -256,7 +265,9 @@ export async function setupNeonPostgres( consola.error(pc.red(error.message)); } - await writeEnvFile(projectDir); - displayManualSetupInstructions(); + await writeEnvFile(projectDir, backend); + displayManualSetupInstructions( + backend === "self" ? "apps/web" : "apps/server", + ); } } diff --git a/apps/cli/src/helpers/database-providers/planetscale-setup.ts b/apps/cli/src/helpers/database-providers/planetscale-setup.ts index f2c94116a..7df983a42 100644 --- a/apps/cli/src/helpers/database-providers/planetscale-setup.ts +++ b/apps/cli/src/helpers/database-providers/planetscale-setup.ts @@ -4,9 +4,10 @@ import type { ProjectConfig } from "../../types"; import { addEnvVariablesToFile, type EnvVariable } from "../core/env-setup"; export async function setupPlanetScale(config: ProjectConfig) { - const { projectDir, database, orm } = config; + const { projectDir, database, orm, backend } = config; - const envPath = path.join(projectDir, "apps/server", ".env"); + const targetApp = backend === "self" ? "apps/web" : "apps/server"; + const envPath = path.join(projectDir, targetApp, ".env"); if (database === "mysql" && orm === "drizzle") { const variables: EnvVariable[] = [ @@ -33,7 +34,7 @@ export async function setupPlanetScale(config: ProjectConfig) { }, ]; - await fs.ensureDir(path.join(projectDir, "apps/server")); + await fs.ensureDir(path.join(projectDir, targetApp)); await addEnvVariablesToFile(envPath, variables); } @@ -46,7 +47,7 @@ export async function setupPlanetScale(config: ProjectConfig) { }, ]; - await fs.ensureDir(path.join(projectDir, "apps/server")); + await fs.ensureDir(path.join(projectDir, targetApp)); await addEnvVariablesToFile(envPath, variables); } @@ -60,7 +61,7 @@ export async function setupPlanetScale(config: ProjectConfig) { }, ]; - await fs.ensureDir(path.join(projectDir, "apps/server")); + await fs.ensureDir(path.join(projectDir, targetApp)); await addEnvVariablesToFile(envPath, variables); } @@ -73,7 +74,7 @@ export async function setupPlanetScale(config: ProjectConfig) { }, ]; - await fs.ensureDir(path.join(projectDir, "apps/server")); + await fs.ensureDir(path.join(projectDir, targetApp)); await addEnvVariablesToFile(envPath, variables); } } diff --git a/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts b/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts index ebad6210d..291291b81 100644 --- a/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts +++ b/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts @@ -100,9 +100,7 @@ async function initPrismaDatabase( const prismaDir = path.join(serverDir, "prisma"); await fs.ensureDir(prismaDir); - log.info( - "Starting Prisma PostgreSQL setup. Please follow the instructions below:", - ); + log.info("Starting Prisma PostgreSQL setup."); const prismaInitCommand = getPackageExecutionCommand( packageManager, @@ -144,9 +142,14 @@ async function initPrismaDatabase( } } -async function writeEnvFile(projectDir: string, config?: PrismaConfig) { +async function writeEnvFile( + projectDir: string, + backend: ProjectConfig["backend"], + config?: PrismaConfig, +) { try { - const envPath = path.join(projectDir, "apps/server", ".env"); + const targetApp = backend === "self" ? "apps/web" : "apps/server"; + const envPath = path.join(projectDir, targetApp, ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -171,27 +174,32 @@ async function writeEnvFile(projectDir: string, config?: PrismaConfig) { } } -async function addDotenvImportToPrismaConfig(projectDir: string) { +async function addDotenvImportToPrismaConfig( + projectDir: string, + backend: ProjectConfig["backend"], +) { try { const prismaConfigPath = path.join( projectDir, "packages/db/prisma.config.ts", ); let content = await fs.readFile(prismaConfigPath, "utf8"); - content = `import dotenv from "dotenv";\ndotenv.config({ path: "../../apps/server/.env" });\n${content}`; + const envPath = + backend === "self" ? "../../apps/web/.env" : "../../apps/server/.env"; + content = `import dotenv from "dotenv";\ndotenv.config({ path: "${envPath}" });\n${content}`; await fs.writeFile(prismaConfigPath, content); } catch (_error) { consola.error("Failed to update prisma.config.ts"); } } -function displayManualSetupInstructions() { +function displayManualSetupInstructions(target: "apps/web" | "apps/server") { log.info(`Manual Prisma PostgreSQL Setup Instructions: 1. Visit https://console.prisma.io and create an account 2. Create a new PostgreSQL database from the dashboard 3. Get your database URL -4. Add the database URL to the .env file in apps/server/.env +4. Add the database URL to the .env file in ${target}/.env DATABASE_URL="your_database_url"`); } @@ -217,16 +225,18 @@ export async function setupPrismaPostgres( config: ProjectConfig, cliInput?: { manualDb?: boolean }, ) { - const { packageManager, projectDir, orm } = config; + const { packageManager, projectDir, orm, backend } = config; const manualDb = cliInput?.manualDb ?? false; - const serverDir = path.join(projectDir, "apps/server"); + const dbDir = path.join(projectDir, "packages/db"); try { - await fs.ensureDir(serverDir); + await fs.ensureDir(dbDir); if (manualDb) { - await writeEnvFile(projectDir); - displayManualSetupInstructions(); + await writeEnvFile(projectDir, backend); + displayManualSetupInstructions( + backend === "self" ? "apps/web" : "apps/server", + ); return; } @@ -250,8 +260,10 @@ export async function setupPrismaPostgres( if (isCancel(mode)) return exitCancelled("Operation cancelled"); if (mode === "manual") { - await writeEnvFile(projectDir); - displayManualSetupInstructions(); + await writeEnvFile(projectDir, backend); + displayManualSetupInstructions( + backend === "self" ? "apps/web" : "apps/server", + ); return; } @@ -282,16 +294,16 @@ export async function setupPrismaPostgres( let prismaConfig: PrismaConfig | null = null; if (setupMethod === "create-db") { - prismaConfig = await setupWithCreateDb(serverDir, packageManager, orm); + prismaConfig = await setupWithCreateDb(dbDir, packageManager, orm); } else { - prismaConfig = await initPrismaDatabase(serverDir, packageManager); + prismaConfig = await initPrismaDatabase(dbDir, packageManager); } if (prismaConfig) { - await writeEnvFile(projectDir, prismaConfig); + await writeEnvFile(projectDir, backend, prismaConfig); if (orm === "prisma") { - await addDotenvImportToPrismaConfig(projectDir); + await addDotenvImportToPrismaConfig(projectDir, backend); await addPrismaAccelerateExtension(projectDir); } @@ -307,8 +319,10 @@ export async function setupPrismaPostgres( log.info(pc.blue(`Claim URL saved to .env: ${prismaConfig.claimUrl}`)); } } else { - await writeEnvFile(projectDir); - displayManualSetupInstructions(); + await writeEnvFile(projectDir, backend); + displayManualSetupInstructions( + backend === "self" ? "apps/web" : "apps/server", + ); } } catch (error) { consola.error( @@ -320,8 +334,10 @@ export async function setupPrismaPostgres( ); try { - await writeEnvFile(projectDir); - displayManualSetupInstructions(); + await writeEnvFile(projectDir, backend); + displayManualSetupInstructions( + backend === "self" ? "apps/web" : "apps/server", + ); } catch {} log.info("Setup completed with manual configuration required."); diff --git a/apps/cli/src/helpers/database-providers/supabase-setup.ts b/apps/cli/src/helpers/database-providers/supabase-setup.ts index 4f9173f8e..ea6863fb6 100644 --- a/apps/cli/src/helpers/database-providers/supabase-setup.ts +++ b/apps/cli/src/helpers/database-providers/supabase-setup.ts @@ -9,9 +9,14 @@ import { exitCancelled } from "../../utils/errors"; import { getPackageExecutionCommand } from "../../utils/package-runner"; import { addEnvVariablesToFile, type EnvVariable } from "../core/env-setup"; -async function writeSupabaseEnvFile(projectDir: string, databaseUrl: string) { +async function writeSupabaseEnvFile( + projectDir: string, + backend: ProjectConfig["backend"], + databaseUrl: string, +) { try { - const envPath = path.join(projectDir, "apps/server", ".env"); + const targetApp = backend === "self" ? "apps/web" : "apps/server"; + const envPath = path.join(projectDir, targetApp, ".env"); const dbUrlToUse = databaseUrl || "postgresql://postgres:postgres@127.0.0.1:54322/postgres"; const variables: EnvVariable[] = [ @@ -156,7 +161,7 @@ export async function setupSupabase( config: ProjectConfig, cliInput?: { manualDb?: boolean }, ) { - const { projectDir, packageManager } = config; + const { projectDir, packageManager, backend } = config; const manualDb = cliInput?.manualDb ?? false; const serverDir = path.join(projectDir, "packages", "db"); @@ -166,7 +171,7 @@ export async function setupSupabase( if (manualDb) { displayManualSupabaseInstructions(); - await writeSupabaseEnvFile(projectDir, ""); + await writeSupabaseEnvFile(projectDir, backend, ""); return; } @@ -191,7 +196,7 @@ export async function setupSupabase( if (mode === "manual") { displayManualSupabaseInstructions(); - await writeSupabaseEnvFile(projectDir, ""); + await writeSupabaseEnvFile(projectDir, backend, ""); return; } @@ -210,7 +215,7 @@ export async function setupSupabase( const dbUrl = extractDbUrl(supabaseOutput); if (dbUrl) { - const envUpdated = await writeSupabaseEnvFile(projectDir, dbUrl); + const envUpdated = await writeSupabaseEnvFile(projectDir, backend, dbUrl); if (envUpdated) { log.success(pc.green("Supabase local development setup ready!")); diff --git a/apps/cli/src/helpers/database-providers/turso-setup.ts b/apps/cli/src/helpers/database-providers/turso-setup.ts index 99afb85af..75df6e620 100644 --- a/apps/cli/src/helpers/database-providers/turso-setup.ts +++ b/apps/cli/src/helpers/database-providers/turso-setup.ts @@ -157,8 +157,13 @@ async function createTursoDatabase(dbName: string, groupName: string | null) { } } -async function writeEnvFile(projectDir: string, config?: TursoConfig) { - const envPath = path.join(projectDir, "apps/server", ".env"); +async function writeEnvFile( + projectDir: string, + backend: ProjectConfig["backend"], + config?: TursoConfig, +) { + const targetApp = backend === "self" ? "apps/web" : "apps/server"; + const envPath = path.join(projectDir, targetApp, ".env"); const variables: EnvVariable[] = [ { key: "DATABASE_URL", @@ -190,14 +195,14 @@ export async function setupTurso( config: ProjectConfig, cliInput?: { manualDb?: boolean }, ) { - const { orm, projectDir } = config; + const { orm, projectDir, backend } = config; const manualDb = cliInput?.manualDb ?? false; const _isDrizzle = orm === "drizzle"; const setupSpinner = spinner(); try { if (manualDb) { - await writeEnvFile(projectDir); + await writeEnvFile(projectDir, backend); displayManualSetupInstructions(); return; } @@ -222,7 +227,7 @@ export async function setupTurso( if (isCancel(mode)) return exitCancelled("Operation cancelled"); if (mode === "manual") { - await writeEnvFile(projectDir); + await writeEnvFile(projectDir, backend); displayManualSetupInstructions(); return; } @@ -237,7 +242,7 @@ export async function setupTurso( if (setupSpinner) setupSpinner.stop(pc.yellow("Turso setup not supported on Windows")); log.warn(pc.yellow("Automatic Turso setup is not supported on Windows.")); - await writeEnvFile(projectDir); + await writeEnvFile(projectDir, backend); displayManualSetupInstructions(); return; } @@ -255,7 +260,7 @@ export async function setupTurso( if (isCancel(shouldInstall)) return exitCancelled("Operation cancelled"); if (!shouldInstall) { - await writeEnvFile(projectDir); + await writeEnvFile(projectDir, backend); displayManualSetupInstructions(); return; } @@ -288,7 +293,7 @@ export async function setupTurso( try { const config = await createTursoDatabase(dbName, selectedGroup); - await writeEnvFile(projectDir, config); + await writeEnvFile(projectDir, backend, config); success = true; } catch (error) { if (error instanceof Error && error.message === "DATABASE_EXISTS") { @@ -311,7 +316,7 @@ export async function setupTurso( }`, ), ); - await writeEnvFile(projectDir); + await writeEnvFile(projectDir, backend); displayManualSetupInstructions(); log.success("Setup completed with manual configuration required."); } diff --git a/apps/cli/src/utils/template-processor.ts b/apps/cli/src/utils/template-processor.ts index c61063de5..be121ade4 100644 --- a/apps/cli/src/utils/template-processor.ts +++ b/apps/cli/src/utils/template-processor.ts @@ -55,11 +55,11 @@ handlebars.registerHelper("eq", (a, b) => a === b); handlebars.registerHelper("ne", (a, b) => a !== b); handlebars.registerHelper("and", (...args) => { const values = args.slice(0, -1); - return values.every(value => value); + return values.every((value) => value); }); handlebars.registerHelper("or", (...args) => { const values = args.slice(0, -1); - return values.some(value => value); + return values.some((value) => value); }); handlebars.registerHelper( diff --git a/apps/cli/src/validation.ts b/apps/cli/src/validation.ts index f18afaf99..1a4c6e09c 100644 --- a/apps/cli/src/validation.ts +++ b/apps/cli/src/validation.ts @@ -40,7 +40,7 @@ function validateYesFlagCombination( if (coreStackFlagsProvided.length > 0) { exitWithError( `Cannot combine --yes with core stack configuration flags: ${coreStackFlagsProvided.map((f) => `--${f}`).join(", ")}. ` + - "The --yes flag uses default configuration. Remove these flags or use --yes without them.", + "The --yes flag uses default configuration. Remove these flags or use --yes without them.", ); } } diff --git a/apps/cli/templates/api/orpc/fullstack/next/src/app/api/rpc/[[...rest]]/route.ts.hbs b/apps/cli/templates/api/orpc/fullstack/next/src/app/api/rpc/[[...rest]]/route.ts.hbs index 2f9b51c9f..9e41d2182 100644 --- a/apps/cli/templates/api/orpc/fullstack/next/src/app/api/rpc/[[...rest]]/route.ts.hbs +++ b/apps/cli/templates/api/orpc/fullstack/next/src/app/api/rpc/[[...rest]]/route.ts.hbs @@ -1,21 +1,50 @@ -import { RPCHandler } from '@orpc/server/fetch' -import { createContext } from '@{{projectName}}/api/context' -import { appRouter } from '@{{projectName}}/api/routers/index' +import { createContext } from "@{{projectName}}/api/context"; +import { appRouter } from "@{{projectName}}/api/routers/index"; +import { OpenAPIHandler } from "@orpc/openapi/fetch"; +import { OpenAPIReferencePlugin } from "@orpc/openapi/plugins"; +import { ZodToJsonSchemaConverter } from "@orpc/zod/zod4"; +import { RPCHandler } from "@orpc/server/fetch"; +import { onError } from "@orpc/server"; +import { NextRequest } from "next/server"; -const handler = new RPCHandler(appRouter) +const rpcHandler = new RPCHandler(appRouter, { + interceptors: [ + onError((error) => { + console.error(error); + }), + ], +}); +const apiHandler = new OpenAPIHandler(appRouter, { + plugins: [ + new OpenAPIReferencePlugin({ + schemaConverters: [new ZodToJsonSchemaConverter()], + }), + ], + interceptors: [ + onError((error) => { + console.error(error); + }), + ], +}); -async function handleRequest(request: Request) { - const { response } = await handler.handle(request, { - prefix: '/api/rpc', - context: createContext(request) - }) +async function handleRequest(req: NextRequest) { + const rpcResult = await rpcHandler.handle(req, { + prefix: "/api/rpc", + context: await createContext(req), + }); + if (rpcResult.response) return rpcResult.response; - return response ?? new Response('Not found', { status: 404 }) + const apiResult = await apiHandler.handle(req, { + prefix: "/api/rpc/api", + context: await createContext(req), + }); + if (apiResult.response) return apiResult.response; + + return new Response("Not found", { status: 404 }); } -export const HEAD = handleRequest -export const GET = handleRequest -export const POST = handleRequest -export const PUT = handleRequest -export const PATCH = handleRequest -export const DELETE = handleRequest \ No newline at end of file +export const GET = handleRequest; +export const POST = handleRequest; +export const PUT = handleRequest; +export const PATCH = handleRequest; +export const DELETE = handleRequest; \ No newline at end of file diff --git a/apps/cli/templates/api/orpc/web/nuxt/app/plugins/orpc.ts.hbs b/apps/cli/templates/api/orpc/web/nuxt/app/plugins/orpc.ts.hbs index 2b22dc961..76177f0af 100644 --- a/apps/cli/templates/api/orpc/web/nuxt/app/plugins/orpc.ts.hbs +++ b/apps/cli/templates/api/orpc/web/nuxt/app/plugins/orpc.ts.hbs @@ -1,5 +1,5 @@ import { defineNuxtPlugin, useRuntimeConfig } from '#app' -import type { AppRouterClient } from "@{{projectName}}/api/src/routers/index"; +import type { AppRouterClient } from "@{{projectName}}/api/routers/index"; import { createORPCClient } from '@orpc/client' import { RPCLink } from '@orpc/client/fetch' import { createTanstackQueryUtils } from "@orpc/tanstack-query"; diff --git a/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs b/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs index d65e37c95..33c1af25e 100644 --- a/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs +++ b/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs @@ -3,7 +3,7 @@ import { RPCLink } from "@orpc/client/fetch"; import { createTanstackQueryUtils } from "@orpc/tanstack-query"; import { QueryCache, QueryClient } from "@tanstack/react-query"; import { toast } from "sonner"; -import type { AppRouterClient } from "@{{projectName}}/api/src/routers/index"; +import type { AppRouterClient } from "@{{projectName}}/api/routers/index"; export const queryClient = new QueryClient({ queryCache: new QueryCache({ diff --git a/apps/cli/templates/api/orpc/web/solid/src/utils/orpc.ts.hbs b/apps/cli/templates/api/orpc/web/solid/src/utils/orpc.ts.hbs index 75a9c4e3a..9f484d649 100644 --- a/apps/cli/templates/api/orpc/web/solid/src/utils/orpc.ts.hbs +++ b/apps/cli/templates/api/orpc/web/solid/src/utils/orpc.ts.hbs @@ -2,7 +2,7 @@ import { createORPCClient } from "@orpc/client"; import { RPCLink } from "@orpc/client/fetch"; import { createTanstackQueryUtils } from "@orpc/tanstack-query"; import { QueryCache, QueryClient } from "@tanstack/solid-query"; -import type { AppRouterClient } from "@{{projectName}}/api/src/routers/index"; +import type { AppRouterClient } from "@{{projectName}}/api/routers/index"; export const queryClient = new QueryClient({ queryCache: new QueryCache({ diff --git a/apps/cli/templates/api/orpc/web/svelte/src/lib/orpc.ts.hbs b/apps/cli/templates/api/orpc/web/svelte/src/lib/orpc.ts.hbs index c4edbaed0..a7ddae822 100644 --- a/apps/cli/templates/api/orpc/web/svelte/src/lib/orpc.ts.hbs +++ b/apps/cli/templates/api/orpc/web/svelte/src/lib/orpc.ts.hbs @@ -3,7 +3,7 @@ import { createORPCClient } from "@orpc/client"; import { RPCLink } from "@orpc/client/fetch"; import { createTanstackQueryUtils } from "@orpc/tanstack-query"; import { QueryCache, QueryClient } from "@tanstack/svelte-query"; -import type { AppRouterClient } from "@{{projectName}}/api/src/routers/index"; +import type { AppRouterClient } from "@{{projectName}}/api/routers/index"; export const queryClient = new QueryClient({ queryCache: new QueryCache({ diff --git a/apps/cli/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs b/apps/cli/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs index e383ce3a2..4e49cd8c1 100644 --- a/apps/cli/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs +++ b/apps/cli/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs @@ -49,13 +49,13 @@ export const trpc = createTRPCOptionsProxy({ {{else if (includes frontend 'tanstack-start')}} import { createTRPCContext } from "@trpc/tanstack-react-query"; -import type { AppRouter } from "@{{projectName}}/api/src/routers/index"; +import type { AppRouter } from "@{{projectName}}/api/routers/index"; export const { TRPCProvider, useTRPC, useTRPCClient } = createTRPCContext(); {{else}} -import type { AppRouter } from "@{{projectName}}/api/src/routers/index"; +import type { AppRouter } from "@{{projectName}}/api/routers/index"; import { QueryCache, QueryClient } from "@tanstack/react-query"; import { createTRPCClient, httpBatchLink } from "@trpc/client"; import { createTRPCOptionsProxy } from "@trpc/tanstack-react-query"; diff --git a/apps/cli/templates/frontend/native/nativewind/tsconfig.json.hbs b/apps/cli/templates/frontend/native/nativewind/tsconfig.json.hbs index 69aeec239..bf74d1d7b 100644 --- a/apps/cli/templates/frontend/native/nativewind/tsconfig.json.hbs +++ b/apps/cli/templates/frontend/native/nativewind/tsconfig.json.hbs @@ -14,10 +14,5 @@ ".expo/types/**/*.ts", "expo-env.d.ts", "nativewind-env.d.ts" - ], - {{#unless (or (eq backend "convex") (eq backend "none"))}} - "references": [{ - "path": "../server" - }] - {{/unless}} + ] } diff --git a/apps/cli/templates/frontend/native/unistyles/tsconfig.json.hbs b/apps/cli/templates/frontend/native/unistyles/tsconfig.json.hbs index ede463c5f..9b197f694 100644 --- a/apps/cli/templates/frontend/native/unistyles/tsconfig.json.hbs +++ b/apps/cli/templates/frontend/native/unistyles/tsconfig.json.hbs @@ -8,10 +8,5 @@ "@/*": ["*"] } }, - "include": ["**/*.ts", "**/*.tsx", ".expo/types/**/*.ts", "expo-env.d.ts"], - {{#unless (or (eq backend "convex") (eq backend "none"))}} - "references": [{ - "path": "../server" - }] - {{/unless}} + "include": ["**/*.ts", "**/*.tsx", ".expo/types/**/*.ts", "expo-env.d.ts"] } diff --git a/apps/cli/templates/frontend/nuxt/tsconfig.json.hbs b/apps/cli/templates/frontend/nuxt/tsconfig.json.hbs index 81390ffe5..307b2134b 100644 --- a/apps/cli/templates/frontend/nuxt/tsconfig.json.hbs +++ b/apps/cli/templates/frontend/nuxt/tsconfig.json.hbs @@ -13,10 +13,6 @@ }, { "path": "./.nuxt/tsconfig.node.json" - }{{#unless (or (eq backend "convex") (eq backend "none"))}}, - { - "path": "../server" } - {{/unless}} ] } diff --git a/apps/cli/templates/frontend/react/next/tsconfig.json.hbs b/apps/cli/templates/frontend/react/next/tsconfig.json.hbs index a837ef015..ea1bda8bb 100644 --- a/apps/cli/templates/frontend/react/next/tsconfig.json.hbs +++ b/apps/cli/templates/frontend/react/next/tsconfig.json.hbs @@ -40,12 +40,5 @@ ], "exclude": [ "./node_modules" - ], - {{#unless (or (eq backend "convex") (eq backend "none"))}} - "references": [ - { - "path": "../server" - } ] - {{/unless}} } diff --git a/apps/cli/templates/frontend/react/react-router/tsconfig.json.hbs b/apps/cli/templates/frontend/react/react-router/tsconfig.json.hbs index b2d4c226d..61235c38f 100644 --- a/apps/cli/templates/frontend/react/react-router/tsconfig.json.hbs +++ b/apps/cli/templates/frontend/react/react-router/tsconfig.json.hbs @@ -23,10 +23,5 @@ "resolveJsonModule": true, "skipLibCheck": true, "strict": true - }, - {{#unless (or (eq backend "convex") (eq backend "none"))}} - "references": [{ - "path": "../server" - }] - {{/unless}} + } } diff --git a/apps/cli/templates/frontend/react/tanstack-router/src/routes/__root.tsx.hbs b/apps/cli/templates/frontend/react/tanstack-router/src/routes/__root.tsx.hbs index e747434a9..06fed7bf5 100644 --- a/apps/cli/templates/frontend/react/tanstack-router/src/routes/__root.tsx.hbs +++ b/apps/cli/templates/frontend/react/tanstack-router/src/routes/__root.tsx.hbs @@ -8,7 +8,7 @@ import type { QueryClient } from "@tanstack/react-query"; import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import { useState } from "react"; import { createTanstackQueryUtils } from "@orpc/tanstack-query"; -import type { AppRouterClient } from "@{{projectName}}/api/src/routers/index"; +import type { AppRouterClient } from "@{{projectName}}/api/routers/index"; import { createORPCClient } from "@orpc/client"; {{/if}} {{#if (eq api "trpc")}} diff --git a/apps/cli/templates/frontend/react/tanstack-router/tsconfig.json.hbs b/apps/cli/templates/frontend/react/tanstack-router/tsconfig.json.hbs index cb036479b..5d36acb75 100644 --- a/apps/cli/templates/frontend/react/tanstack-router/tsconfig.json.hbs +++ b/apps/cli/templates/frontend/react/tanstack-router/tsconfig.json.hbs @@ -14,10 +14,5 @@ "paths": { "@/*": ["./src/*"] } - }, - {{#unless (or (eq backend "convex") (eq backend "none"))}} - "references": [{ - "path": "../server" - }] - {{/unless}} + } } diff --git a/apps/cli/templates/frontend/react/tanstack-start/src/routes/__root.tsx.hbs b/apps/cli/templates/frontend/react/tanstack-start/src/routes/__root.tsx.hbs index ca7f90172..aa4d35208 100644 --- a/apps/cli/templates/frontend/react/tanstack-start/src/routes/__root.tsx.hbs +++ b/apps/cli/templates/frontend/react/tanstack-start/src/routes/__root.tsx.hbs @@ -66,7 +66,7 @@ export interface RouterAppContext { {{else}} {{#if (eq api "trpc")}} import type { TRPCOptionsProxy } from "@trpc/tanstack-react-query"; -import type { AppRouter } from "@{{projectName}}/api/src/routers/index"; +import type { AppRouter } from "@{{projectName}}/api/routers/index"; export interface RouterAppContext { trpc: TRPCOptionsProxy; queryClient: QueryClient; diff --git a/apps/cli/templates/frontend/react/tanstack-start/tsconfig.json.hbs b/apps/cli/templates/frontend/react/tanstack-start/tsconfig.json.hbs index 1ff0ad7e4..fbb99a246 100644 --- a/apps/cli/templates/frontend/react/tanstack-start/tsconfig.json.hbs +++ b/apps/cli/templates/frontend/react/tanstack-start/tsconfig.json.hbs @@ -24,10 +24,5 @@ "paths": { "@/*": ["./src/*"] } - }, - {{#unless (or (eq backend "convex") (eq backend "none"))}} - "references": [{ - "path": "../server" - }] - {{/unless}} + } } diff --git a/apps/cli/templates/frontend/solid/tsconfig.json.hbs b/apps/cli/templates/frontend/solid/tsconfig.json.hbs index cdfc2d44c..a805e1053 100644 --- a/apps/cli/templates/frontend/solid/tsconfig.json.hbs +++ b/apps/cli/templates/frontend/solid/tsconfig.json.hbs @@ -25,10 +25,5 @@ "paths": { "@/*": ["./src/*"] } - }, - {{#unless (or (eq backend "convex") (eq backend "none"))}} - "references": [{ - "path": "../server" - }] - {{/unless}} + } } diff --git a/apps/cli/templates/frontend/svelte/tsconfig.json.hbs b/apps/cli/templates/frontend/svelte/tsconfig.json.hbs index eaad01f25..0b2d8865f 100644 --- a/apps/cli/templates/frontend/svelte/tsconfig.json.hbs +++ b/apps/cli/templates/frontend/svelte/tsconfig.json.hbs @@ -10,12 +10,7 @@ "sourceMap": true, "strict": true, "moduleResolution": "bundler" - }, - {{#unless (or (eq backend "convex") (eq backend "none"))}} - "references": [{ - "path": "../server" - }] - {{/unless}} + } // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files // From 42d9bd9fafb5b6c699f9ed15cad23ed73fe0a467 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Sat, 4 Oct 2025 00:31:24 +0530 Subject: [PATCH 21/33] ok --- apps/cli/src/helpers/core/db-setup.ts | 11 ++++ apps/cli/src/helpers/core/env-setup.ts | 61 ++++++++++++------- apps/cli/src/helpers/core/payments-setup.ts | 18 +++--- .../helpers/database-providers/neon-setup.ts | 15 ++--- apps/cli/src/prompts/backend.ts | 2 +- .../orpc/web/react/base/src/utils/orpc.ts.hbs | 2 +- .../better-auth/server/base/src/index.ts.hbs | 10 +-- .../web/react/base/src/lib/auth-client.ts.hbs | 2 + .../react/next/src/app/dashboard/page.tsx.hbs | 31 ++++++++++ 9 files changed, 105 insertions(+), 47 deletions(-) diff --git a/apps/cli/src/helpers/core/db-setup.ts b/apps/cli/src/helpers/core/db-setup.ts index 92f75d6e3..28abc0bc7 100644 --- a/apps/cli/src/helpers/core/db-setup.ts +++ b/apps/cli/src/helpers/core/db-setup.ts @@ -63,6 +63,17 @@ export async function setupDatabase( projectDir: dbPackageDir, }); } + + // workaround + if (backend === "self") { + const webDir = path.join(projectDir, "apps/web"); + if (await fs.pathExists(webDir)) { + await addPackageDependency({ + dependencies: ["@prisma/client"], + projectDir: webDir, + }); + } + } } else if (orm === "drizzle") { if (database === "sqlite") { await addPackageDependency({ diff --git a/apps/cli/src/helpers/core/env-setup.ts b/apps/cli/src/helpers/core/env-setup.ts index 90d3779c1..289ddc13b 100644 --- a/apps/cli/src/helpers/core/env-setup.ts +++ b/apps/cli/src/helpers/core/env-setup.ts @@ -3,6 +3,34 @@ import fs from "fs-extra"; import type { ProjectConfig } from "../../types"; import { generateAuthSecret } from "./auth-setup"; +function getClientServerVar(frontend: string[], backend: ProjectConfig["backend"]) { + const hasNextJs = frontend.includes("next"); + const hasNuxt = frontend.includes("nuxt"); + const hasSvelte = frontend.includes("svelte"); + + // For fullstack self, no base URL is needed (same-origin) + if (backend === "self") { + return { key: "", value: "", write: false } as const; + } + + let key = "VITE_SERVER_URL"; + if (hasNextJs) key = "NEXT_PUBLIC_SERVER_URL"; + else if (hasNuxt) key = "NUXT_PUBLIC_SERVER_URL"; + else if (hasSvelte) key = "PUBLIC_SERVER_URL"; + + return { key, value: "http://localhost:3000", write: true } as const; +} + +function getConvexVar(frontend: string[]) { + const hasNextJs = frontend.includes("next"); + const hasNuxt = frontend.includes("nuxt"); + const hasSvelte = frontend.includes("svelte"); + if (hasNextJs) return "NEXT_PUBLIC_CONVEX_URL"; + if (hasNuxt) return "NUXT_PUBLIC_CONVEX_URL"; + if (hasSvelte) return "PUBLIC_CONVEX_URL"; + return "VITE_CONVEX_URL"; +} + export interface EnvVariable { key: string; value: string | null | undefined; @@ -120,31 +148,15 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { if (hasWebFrontend) { const clientDir = path.join(projectDir, "apps/web"); if (await fs.pathExists(clientDir)) { - let envVarName = "VITE_SERVER_URL"; - let serverUrl = "http://localhost:3000"; - - if (hasNextJs) { - envVarName = "NEXT_PUBLIC_SERVER_URL"; - } else if (hasNuxt) { - envVarName = "NUXT_PUBLIC_SERVER_URL"; - } else if (hasSvelte) { - envVarName = "PUBLIC_SERVER_URL"; - } - - if (backend === "convex") { - if (hasNextJs) envVarName = "NEXT_PUBLIC_CONVEX_URL"; - else if (hasNuxt) envVarName = "NUXT_PUBLIC_CONVEX_URL"; - else if (hasSvelte) envVarName = "PUBLIC_CONVEX_URL"; - else envVarName = "VITE_CONVEX_URL"; - - serverUrl = "https://"; - } + const baseVar = getClientServerVar(frontend, backend); + const envVarName = backend === "convex" ? getConvexVar(frontend) : baseVar.key; + const serverUrl = backend === "convex" ? "https://" : baseVar.value; const clientVars: EnvVariable[] = [ { key: envVarName, value: serverUrl, - condition: backend !== "self", + condition: backend === "convex" ? true : baseVar.write, }, ]; @@ -280,7 +292,9 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { const serverDir = path.join(projectDir, "apps/server"); let corsOrigin = "http://localhost:3001"; - if (hasReactRouter || hasSvelte) { + if (backend === "self") { + corsOrigin = "http://localhost:3001"; + } else if (hasReactRouter || hasSvelte) { corsOrigin = "http://localhost:5173"; } @@ -301,7 +315,8 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { if (config.runtime === "workers") { databaseUrl = "http://127.0.0.1:8080"; } else { - databaseUrl = `file:${path.join(config.projectDir, "apps/server", "local.db")}`; + const dbAppDir = backend === "self" ? "apps/web" : "apps/server"; + databaseUrl = `file:${path.join(config.projectDir, dbAppDir, "local.db")}`; } break; } @@ -315,7 +330,7 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { }, { key: "BETTER_AUTH_URL", - value: "http://localhost:3000", + value: backend === "self" ? "http://localhost:3001" : "http://localhost:3000", condition: !!auth, }, { diff --git a/apps/cli/src/helpers/core/payments-setup.ts b/apps/cli/src/helpers/core/payments-setup.ts index 5557b826d..8dba3eb64 100644 --- a/apps/cli/src/helpers/core/payments-setup.ts +++ b/apps/cli/src/helpers/core/payments-setup.ts @@ -10,21 +10,19 @@ export async function setupPayments(config: ProjectConfig) { return; } - const serverDir = path.join(projectDir, "apps/server"); const clientDir = path.join(projectDir, "apps/web"); + const authDir = path.join(projectDir, "packages/auth"); - const serverDirExists = await fs.pathExists(serverDir); const clientDirExists = await fs.pathExists(clientDir); - - if (!serverDirExists) { - return; - } + const authDirExists = await fs.pathExists(authDir); if (payments === "polar") { - await addPackageDependency({ - dependencies: ["@polar-sh/better-auth", "@polar-sh/sdk"], - projectDir: serverDir, - }); + if (authDirExists) { + await addPackageDependency({ + dependencies: ["@polar-sh/better-auth", "@polar-sh/sdk"], + projectDir: authDir, + }); + } if (clientDirExists) { const hasWebFrontend = frontend.some((f) => diff --git a/apps/cli/src/helpers/database-providers/neon-setup.ts b/apps/cli/src/helpers/database-providers/neon-setup.ts index bf3f323df..e04c983e7 100644 --- a/apps/cli/src/helpers/database-providers/neon-setup.ts +++ b/apps/cli/src/helpers/database-providers/neon-setup.ts @@ -63,7 +63,7 @@ async function createNeonProject( packageManager: PackageManager, ) { try { - const commandArgsString = `neonctl projects create --name ${projectName} --region-id ${regionId} --output json`; + const commandArgsString = `neonctl@latest projects create --name ${projectName} --region-id ${regionId} --output json`; const { stdout } = await executeNeonCommand( packageManager, commandArgsString, @@ -121,22 +121,24 @@ async function writeEnvFile( async function setupWithNeonDb( projectDir: string, packageManager: PackageManager, + backend: ProjectConfig["backend"], ) { try { const s = spinner(); s.start("Creating Neon database using neondb..."); - const dbDir = path.join(projectDir, "packages/db"); - await fs.ensureDir(dbDir); + const targetApp = backend === "self" ? "apps/web" : "apps/server"; + const targetDir = path.join(projectDir, targetApp); + await fs.ensureDir(targetDir); const packageCmd = getPackageExecutionCommand( packageManager, - "neondb --yes", + "neondb@latest --yes", ); await execa(packageCmd, { shell: true, - cwd: dbDir, + cwd: targetDir, }); s.stop(pc.green("Neon database created successfully!")); @@ -222,7 +224,7 @@ export async function setupNeonPostgres( if (isCancel(setupMethod)) return exitCancelled("Operation cancelled"); if (setupMethod === "neondb") { - await setupWithNeonDb(projectDir, packageManager); + await setupWithNeonDb(projectDir, packageManager, backend); } else { const suggestedProjectName = path.basename(projectDir); const projectName = await text({ @@ -255,7 +257,6 @@ export async function setupNeonPostgres( const finalSpinner = spinner(); finalSpinner.start("Configuring database connection"); - await fs.ensureDir(path.join(projectDir, "packages/db")); await writeEnvFile(projectDir, backend, neonConfig); finalSpinner.stop("Neon database configured!"); diff --git a/apps/cli/src/prompts/backend.ts b/apps/cli/src/prompts/backend.ts index df3e1c53c..af42e9547 100644 --- a/apps/cli/src/prompts/backend.ts +++ b/apps/cli/src/prompts/backend.ts @@ -31,7 +31,7 @@ export async function getBackendFrameworkChoice( backendOptions.push({ value: "self" as const, label: "Self (Fullstack)", - hint: "Use frontend's built-in backend capabilities", + hint: "Use frontend's built-in api routes", }); } diff --git a/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs b/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs index 33c1af25e..ef9babf7b 100644 --- a/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs +++ b/apps/cli/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs @@ -22,7 +22,7 @@ export const queryClient = new QueryClient({ export const link = new RPCLink({ {{#if (and (eq backend "self") (includes frontend "next"))}} - url: "/api/rpc", + url: `${typeof window !== "undefined" ? window.location.origin : "http://localhost:3001"}/api/rpc`, {{else if (includes frontend "next")}} url: `${process.env.NEXT_PUBLIC_SERVER_URL}/rpc`, {{else}} diff --git a/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs b/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs index 911b9130d..b96258c32 100644 --- a/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs +++ b/apps/cli/templates/auth/better-auth/server/base/src/index.ts.hbs @@ -6,7 +6,7 @@ import { expo } from "@better-auth/expo"; {{/if}} {{#if (eq payments "polar")}} import { polar, checkout, portal } from "@polar-sh/better-auth"; -import { polarClient } from "./payments"; +import { polarClient } from "./lib/payments"; {{/if}} import prisma from "@{{projectName}}/db"; @@ -74,7 +74,7 @@ import { expo } from "@better-auth/expo"; {{/if}} {{#if (eq payments "polar")}} import { polar, checkout, portal } from "@polar-sh/better-auth"; -import { polarClient } from "./payments"; +import { polarClient } from "./lib/payments"; {{/if}} import { db } from "@{{projectName}}/db"; import * as schema from "@{{projectName}}/db/schema/auth"; @@ -142,7 +142,7 @@ import { expo } from "@better-auth/expo"; {{/if}} {{#if (eq payments "polar")}} import { polar, checkout, portal } from "@polar-sh/better-auth"; -import { polarClient } from "./payments"; +import { polarClient } from "./lib/payments"; {{/if}} import { db } from "@{{projectName}}/db"; import * as schema from "@{{projectName}}/db/schema/auth"; @@ -224,7 +224,7 @@ import { expo } from "@better-auth/expo"; {{/if}} {{#if (eq payments "polar")}} import { polar, checkout, portal } from "@polar-sh/better-auth"; -import { polarClient } from "./payments"; +import { polarClient } from "./lib/payments"; {{/if}} import { client } from "@{{projectName}}/db"; @@ -285,7 +285,7 @@ import { expo } from "@better-auth/expo"; {{/if}} {{#if (eq payments "polar")}} import { polar, checkout, portal } from "@polar-sh/better-auth"; -import { polarClient } from "./payments"; +import { polarClient } from "./lib/payments"; {{/if}} export const auth = betterAuth({ diff --git a/apps/cli/templates/auth/better-auth/web/react/base/src/lib/auth-client.ts.hbs b/apps/cli/templates/auth/better-auth/web/react/base/src/lib/auth-client.ts.hbs index 8c10482ad..9a8a0d8a3 100644 --- a/apps/cli/templates/auth/better-auth/web/react/base/src/lib/auth-client.ts.hbs +++ b/apps/cli/templates/auth/better-auth/web/react/base/src/lib/auth-client.ts.hbs @@ -4,12 +4,14 @@ import { polarClient } from "@polar-sh/better-auth"; {{/if}} export const authClient = createAuthClient({ + {{#unless (eq backend "self")}} baseURL: {{#if (includes frontend "next")}} process.env.NEXT_PUBLIC_SERVER_URL, {{else}} import.meta.env.VITE_SERVER_URL, {{/if}} + {{/unless}} {{#if (eq payments "polar")}} plugins: [polarClient()] {{/if}} diff --git a/apps/cli/templates/auth/better-auth/web/react/next/src/app/dashboard/page.tsx.hbs b/apps/cli/templates/auth/better-auth/web/react/next/src/app/dashboard/page.tsx.hbs index 1e66f8e59..971dd89c9 100644 --- a/apps/cli/templates/auth/better-auth/web/react/next/src/app/dashboard/page.tsx.hbs +++ b/apps/cli/templates/auth/better-auth/web/react/next/src/app/dashboard/page.tsx.hbs @@ -1,3 +1,33 @@ +{{#if (eq backend "self")}} +import { redirect } from "next/navigation"; +import Dashboard from "./dashboard"; +import { headers } from "next/headers"; +import { auth } from "@{{projectName}}/auth"; + +export default async function DashboardPage() { + const session = await auth.api.getSession({ + headers: await headers(), + }); + + if (!session?.user) { + redirect("/login"); + } + + {{#if (eq payments "polar")}} + const { data: customerState } = await auth.api.customer.state({ + headers: await headers(), + }); + {{/if}} + + return ( +
+

Dashboard

+

Welcome {session.user.name}

+ +
+ ); +} +{{else}} import { authClient } from "@/lib/auth-client"; import { redirect } from "next/navigation"; import Dashboard from "./dashboard"; @@ -35,3 +65,4 @@ export default async function DashboardPage() { ); } +{{/if}} From 0a1184da29a7ca38052825cd8481790865ba9dfd Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Sat, 4 Oct 2025 00:31:40 +0530 Subject: [PATCH 22/33] ok --- apps/cli/src/helpers/core/db-setup.ts | 2 +- apps/cli/src/helpers/core/env-setup.ts | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/apps/cli/src/helpers/core/db-setup.ts b/apps/cli/src/helpers/core/db-setup.ts index 28abc0bc7..9027f4c7c 100644 --- a/apps/cli/src/helpers/core/db-setup.ts +++ b/apps/cli/src/helpers/core/db-setup.ts @@ -64,7 +64,7 @@ export async function setupDatabase( }); } - // workaround + // workaround if (backend === "self") { const webDir = path.join(projectDir, "apps/web"); if (await fs.pathExists(webDir)) { diff --git a/apps/cli/src/helpers/core/env-setup.ts b/apps/cli/src/helpers/core/env-setup.ts index 289ddc13b..2c33fdceb 100644 --- a/apps/cli/src/helpers/core/env-setup.ts +++ b/apps/cli/src/helpers/core/env-setup.ts @@ -3,7 +3,10 @@ import fs from "fs-extra"; import type { ProjectConfig } from "../../types"; import { generateAuthSecret } from "./auth-setup"; -function getClientServerVar(frontend: string[], backend: ProjectConfig["backend"]) { +function getClientServerVar( + frontend: string[], + backend: ProjectConfig["backend"], +) { const hasNextJs = frontend.includes("next"); const hasNuxt = frontend.includes("nuxt"); const hasSvelte = frontend.includes("svelte"); @@ -149,8 +152,10 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { const clientDir = path.join(projectDir, "apps/web"); if (await fs.pathExists(clientDir)) { const baseVar = getClientServerVar(frontend, backend); - const envVarName = backend === "convex" ? getConvexVar(frontend) : baseVar.key; - const serverUrl = backend === "convex" ? "https://" : baseVar.value; + const envVarName = + backend === "convex" ? getConvexVar(frontend) : baseVar.key; + const serverUrl = + backend === "convex" ? "https://" : baseVar.value; const clientVars: EnvVariable[] = [ { @@ -330,7 +335,8 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { }, { key: "BETTER_AUTH_URL", - value: backend === "self" ? "http://localhost:3001" : "http://localhost:3000", + value: + backend === "self" ? "http://localhost:3001" : "http://localhost:3000", condition: !!auth, }, { From a3c3b90c6811e24b72783a8f5cde5e34d503d75c Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Sat, 4 Oct 2025 12:12:05 +0530 Subject: [PATCH 23/33] ok --- apps/cli/src/constants.ts | 3 +- apps/cli/src/helpers/core/db-setup.ts | 2 +- bun.lock | 1398 +++++++++++++------------ bunfig.toml | 2 + package.json | 12 +- 5 files changed, 710 insertions(+), 707 deletions(-) create mode 100644 bunfig.toml diff --git a/apps/cli/src/constants.ts b/apps/cli/src/constants.ts index eca06ced7..5908035ed 100644 --- a/apps/cli/src/constants.ts +++ b/apps/cli/src/constants.ts @@ -52,8 +52,7 @@ export const dependencyVersionMap = { "drizzle-kit": "^0.31.2", "@planetscale/database": "^1.19.0", - "@libsql/client": "^0.15.9", - libsql: "^0.5.22", + "@libsql/client": "^0.14.0", "@neondatabase/serverless": "^1.0.1", pg: "^8.14.1", diff --git a/apps/cli/src/helpers/core/db-setup.ts b/apps/cli/src/helpers/core/db-setup.ts index 9027f4c7c..50476cc13 100644 --- a/apps/cli/src/helpers/core/db-setup.ts +++ b/apps/cli/src/helpers/core/db-setup.ts @@ -77,7 +77,7 @@ export async function setupDatabase( } else if (orm === "drizzle") { if (database === "sqlite") { await addPackageDependency({ - dependencies: ["drizzle-orm", "@libsql/client", "libsql"], + dependencies: ["drizzle-orm", "@libsql/client"], devDependencies: ["drizzle-kit"], projectDir: dbPackageDir, }); diff --git a/bun.lock b/bun.lock index bb03cb79c..65560b8f6 100644 --- a/bun.lock +++ b/bun.lock @@ -4,13 +4,13 @@ "": { "name": "better-t-stack", "devDependencies": { - "@biomejs/biome": "2.2.4", - "@types/bun": "^1.2.22", - "changelogithub": "^13.16.0", - "husky": "^9.1.7", - "lint-staged": "^16.2.1", - "turbo": "^2.5.8", - "typescript": "5.9.2", + "@biomejs/biome": "latest", + "@types/bun": "latest", + "changelogithub": "latest", + "husky": "latest", + "lint-staged": "latest", + "turbo": "latest", + "typescript": "latest", }, }, "apps/cli": { @@ -162,23 +162,23 @@ "@aws-sdk/client-cloudfront": ["@aws-sdk/client-cloudfront@3.398.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", "@aws-sdk/client-sts": "3.398.0", "@aws-sdk/credential-provider-node": "3.398.0", "@aws-sdk/middleware-host-header": "3.398.0", "@aws-sdk/middleware-logger": "3.398.0", "@aws-sdk/middleware-recursion-detection": "3.398.0", "@aws-sdk/middleware-signing": "3.398.0", "@aws-sdk/middleware-user-agent": "3.398.0", "@aws-sdk/types": "3.398.0", "@aws-sdk/util-endpoints": "3.398.0", "@aws-sdk/util-user-agent-browser": "3.398.0", "@aws-sdk/util-user-agent-node": "3.398.0", "@aws-sdk/xml-builder": "3.310.0", "@smithy/config-resolver": "^2.0.5", "@smithy/fetch-http-handler": "^2.0.5", "@smithy/hash-node": "^2.0.5", "@smithy/invalid-dependency": "^2.0.5", "@smithy/middleware-content-length": "^2.0.5", "@smithy/middleware-endpoint": "^2.0.5", "@smithy/middleware-retry": "^2.0.5", "@smithy/middleware-serde": "^2.0.5", "@smithy/middleware-stack": "^2.0.0", "@smithy/node-config-provider": "^2.0.5", "@smithy/node-http-handler": "^2.0.5", "@smithy/protocol-http": "^2.0.5", "@smithy/smithy-client": "^2.0.5", "@smithy/types": "^2.2.2", "@smithy/url-parser": "^2.0.5", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.5", "@smithy/util-defaults-mode-node": "^2.0.5", "@smithy/util-retry": "^2.0.0", "@smithy/util-stream": "^2.0.5", "@smithy/util-utf8": "^2.0.0", "@smithy/util-waiter": "^2.0.5", "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" } }, "sha512-kISKhqN1k48TaMPbLgq9jj7mO2jvbJdhirvfu4JW3jhFhENnkY0oCwTPvR4Q6Ne2as6GFAMo2XZDZq4rxC7YDw=="], - "@aws-sdk/client-dynamodb": ["@aws-sdk/client-dynamodb@3.896.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/credential-provider-node": "3.896.0", "@aws-sdk/middleware-endpoint-discovery": "3.893.0", "@aws-sdk/middleware-host-header": "3.893.0", "@aws-sdk/middleware-logger": "3.893.0", "@aws-sdk/middleware-recursion-detection": "3.893.0", "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/region-config-resolver": "3.893.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@aws-sdk/util-user-agent-browser": "3.893.0", "@aws-sdk/util-user-agent-node": "3.896.0", "@smithy/config-resolver": "^4.2.2", "@smithy/core": "^3.12.0", "@smithy/fetch-http-handler": "^5.2.1", "@smithy/hash-node": "^4.1.1", "@smithy/invalid-dependency": "^4.1.1", "@smithy/middleware-content-length": "^4.1.1", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-retry": "^4.3.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/middleware-stack": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/node-http-handler": "^4.2.1", "@smithy/protocol-http": "^5.2.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-base64": "^4.1.0", "@smithy/util-body-length-browser": "^4.1.0", "@smithy/util-body-length-node": "^4.1.0", "@smithy/util-defaults-mode-browser": "^4.1.4", "@smithy/util-defaults-mode-node": "^4.1.4", "@smithy/util-endpoints": "^3.1.2", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/util-utf8": "^4.1.0", "@smithy/util-waiter": "^4.1.1", "@smithy/uuid": "^1.0.0", "tslib": "^2.6.2" } }, "sha512-f52lWRtrcG7IMS3wAGOOkq5Ra4rhqu9VlAnMn8wwsvKz2WmCYDvxQTuTpaIXuvTeMGVVhBT4lUR1aRtzBHxSHw=="], + "@aws-sdk/client-dynamodb": ["@aws-sdk/client-dynamodb@3.902.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/credential-provider-node": "3.901.0", "@aws-sdk/middleware-endpoint-discovery": "3.901.0", "@aws-sdk/middleware-host-header": "3.901.0", "@aws-sdk/middleware-logger": "3.901.0", "@aws-sdk/middleware-recursion-detection": "3.901.0", "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/region-config-resolver": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@aws-sdk/util-user-agent-browser": "3.901.0", "@aws-sdk/util-user-agent-node": "3.901.0", "@smithy/config-resolver": "^4.3.0", "@smithy/core": "^3.14.0", "@smithy/fetch-http-handler": "^5.3.0", "@smithy/hash-node": "^4.2.0", "@smithy/invalid-dependency": "^4.2.0", "@smithy/middleware-content-length": "^4.2.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-retry": "^4.4.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.0", "@smithy/util-defaults-mode-browser": "^4.2.0", "@smithy/util-defaults-mode-node": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "@smithy/util-waiter": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" } }, "sha512-WoBzn00MEvnhKFkrFPpqDjHxaqOriwJ2N00/GsoppHiMMPqinN53wB/phur7BsvhQCZZMbnIWrslcZcQxOzFLg=="], - "@aws-sdk/client-lambda": ["@aws-sdk/client-lambda@3.896.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/credential-provider-node": "3.896.0", "@aws-sdk/middleware-host-header": "3.893.0", "@aws-sdk/middleware-logger": "3.893.0", "@aws-sdk/middleware-recursion-detection": "3.893.0", "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/region-config-resolver": "3.893.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@aws-sdk/util-user-agent-browser": "3.893.0", "@aws-sdk/util-user-agent-node": "3.896.0", "@smithy/config-resolver": "^4.2.2", "@smithy/core": "^3.12.0", "@smithy/eventstream-serde-browser": "^4.1.1", "@smithy/eventstream-serde-config-resolver": "^4.2.1", "@smithy/eventstream-serde-node": "^4.1.1", "@smithy/fetch-http-handler": "^5.2.1", "@smithy/hash-node": "^4.1.1", "@smithy/invalid-dependency": "^4.1.1", "@smithy/middleware-content-length": "^4.1.1", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-retry": "^4.3.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/middleware-stack": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/node-http-handler": "^4.2.1", "@smithy/protocol-http": "^5.2.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-base64": "^4.1.0", "@smithy/util-body-length-browser": "^4.1.0", "@smithy/util-body-length-node": "^4.1.0", "@smithy/util-defaults-mode-browser": "^4.1.4", "@smithy/util-defaults-mode-node": "^4.1.4", "@smithy/util-endpoints": "^3.1.2", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/util-stream": "^4.3.2", "@smithy/util-utf8": "^4.1.0", "@smithy/util-waiter": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-zZX06gmp1GHE+HF1xbNidDF5lzNcm+hkXepJtYkpLEdvJk7Zv8+p6hRZ3kPpmswHmGpb4en1hqSIGgUimQBCXw=="], + "@aws-sdk/client-lambda": ["@aws-sdk/client-lambda@3.901.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/credential-provider-node": "3.901.0", "@aws-sdk/middleware-host-header": "3.901.0", "@aws-sdk/middleware-logger": "3.901.0", "@aws-sdk/middleware-recursion-detection": "3.901.0", "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/region-config-resolver": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@aws-sdk/util-user-agent-browser": "3.901.0", "@aws-sdk/util-user-agent-node": "3.901.0", "@smithy/config-resolver": "^4.3.0", "@smithy/core": "^3.14.0", "@smithy/eventstream-serde-browser": "^4.2.0", "@smithy/eventstream-serde-config-resolver": "^4.3.0", "@smithy/eventstream-serde-node": "^4.2.0", "@smithy/fetch-http-handler": "^5.3.0", "@smithy/hash-node": "^4.2.0", "@smithy/invalid-dependency": "^4.2.0", "@smithy/middleware-content-length": "^4.2.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-retry": "^4.4.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.0", "@smithy/util-defaults-mode-browser": "^4.2.0", "@smithy/util-defaults-mode-node": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/util-stream": "^4.4.0", "@smithy/util-utf8": "^4.2.0", "@smithy/util-waiter": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-4h6dgXKMGuK/hplMpdKbxQDtjy2laVoOO7Mml4/DPO6TVu8TIP6JQXo3SLCE6BUkqchZdXVKGtD7YCWsEBilcw=="], - "@aws-sdk/client-s3": ["@aws-sdk/client-s3@3.896.0", "", { "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/credential-provider-node": "3.896.0", "@aws-sdk/middleware-bucket-endpoint": "3.893.0", "@aws-sdk/middleware-expect-continue": "3.893.0", "@aws-sdk/middleware-flexible-checksums": "3.896.0", "@aws-sdk/middleware-host-header": "3.893.0", "@aws-sdk/middleware-location-constraint": "3.893.0", "@aws-sdk/middleware-logger": "3.893.0", "@aws-sdk/middleware-recursion-detection": "3.893.0", "@aws-sdk/middleware-sdk-s3": "3.896.0", "@aws-sdk/middleware-ssec": "3.893.0", "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/region-config-resolver": "3.893.0", "@aws-sdk/signature-v4-multi-region": "3.896.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@aws-sdk/util-user-agent-browser": "3.893.0", "@aws-sdk/util-user-agent-node": "3.896.0", "@aws-sdk/xml-builder": "3.894.0", "@smithy/config-resolver": "^4.2.2", "@smithy/core": "^3.12.0", "@smithy/eventstream-serde-browser": "^4.1.1", "@smithy/eventstream-serde-config-resolver": "^4.2.1", "@smithy/eventstream-serde-node": "^4.1.1", "@smithy/fetch-http-handler": "^5.2.1", "@smithy/hash-blob-browser": "^4.1.1", "@smithy/hash-node": "^4.1.1", "@smithy/hash-stream-node": "^4.1.1", "@smithy/invalid-dependency": "^4.1.1", "@smithy/md5-js": "^4.1.1", "@smithy/middleware-content-length": "^4.1.1", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-retry": "^4.3.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/middleware-stack": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/node-http-handler": "^4.2.1", "@smithy/protocol-http": "^5.2.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-base64": "^4.1.0", "@smithy/util-body-length-browser": "^4.1.0", "@smithy/util-body-length-node": "^4.1.0", "@smithy/util-defaults-mode-browser": "^4.1.4", "@smithy/util-defaults-mode-node": "^4.1.4", "@smithy/util-endpoints": "^3.1.2", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/util-stream": "^4.3.2", "@smithy/util-utf8": "^4.1.0", "@smithy/util-waiter": "^4.1.1", "@smithy/uuid": "^1.0.0", "tslib": "^2.6.2" } }, "sha512-UETVuMLQRqgrWxTnavotY0TlB/jaR9sL3hkIFPx4KtjmigNBdwRaiVfOuTnIXKd+w9RPINYG//nnrK+5gIyZkA=="], + "@aws-sdk/client-s3": ["@aws-sdk/client-s3@3.901.0", "", { "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/credential-provider-node": "3.901.0", "@aws-sdk/middleware-bucket-endpoint": "3.901.0", "@aws-sdk/middleware-expect-continue": "3.901.0", "@aws-sdk/middleware-flexible-checksums": "3.901.0", "@aws-sdk/middleware-host-header": "3.901.0", "@aws-sdk/middleware-location-constraint": "3.901.0", "@aws-sdk/middleware-logger": "3.901.0", "@aws-sdk/middleware-recursion-detection": "3.901.0", "@aws-sdk/middleware-sdk-s3": "3.901.0", "@aws-sdk/middleware-ssec": "3.901.0", "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/region-config-resolver": "3.901.0", "@aws-sdk/signature-v4-multi-region": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@aws-sdk/util-user-agent-browser": "3.901.0", "@aws-sdk/util-user-agent-node": "3.901.0", "@aws-sdk/xml-builder": "3.901.0", "@smithy/config-resolver": "^4.3.0", "@smithy/core": "^3.14.0", "@smithy/eventstream-serde-browser": "^4.2.0", "@smithy/eventstream-serde-config-resolver": "^4.3.0", "@smithy/eventstream-serde-node": "^4.2.0", "@smithy/fetch-http-handler": "^5.3.0", "@smithy/hash-blob-browser": "^4.2.0", "@smithy/hash-node": "^4.2.0", "@smithy/hash-stream-node": "^4.2.0", "@smithy/invalid-dependency": "^4.2.0", "@smithy/md5-js": "^4.2.0", "@smithy/middleware-content-length": "^4.2.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-retry": "^4.4.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.0", "@smithy/util-defaults-mode-browser": "^4.2.0", "@smithy/util-defaults-mode-node": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/util-stream": "^4.4.0", "@smithy/util-utf8": "^4.2.0", "@smithy/util-waiter": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" } }, "sha512-wyKhZ51ur1tFuguZ6PgrUsot9KopqD0Tmxw8O8P/N3suQDxFPr0Yo7Y77ezDRDZQ95Ml3C0jlvx79HCo8VxdWA=="], - "@aws-sdk/client-sqs": ["@aws-sdk/client-sqs@3.896.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/credential-provider-node": "3.896.0", "@aws-sdk/middleware-host-header": "3.893.0", "@aws-sdk/middleware-logger": "3.893.0", "@aws-sdk/middleware-recursion-detection": "3.893.0", "@aws-sdk/middleware-sdk-sqs": "3.896.0", "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/region-config-resolver": "3.893.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@aws-sdk/util-user-agent-browser": "3.893.0", "@aws-sdk/util-user-agent-node": "3.896.0", "@smithy/config-resolver": "^4.2.2", "@smithy/core": "^3.12.0", "@smithy/fetch-http-handler": "^5.2.1", "@smithy/hash-node": "^4.1.1", "@smithy/invalid-dependency": "^4.1.1", "@smithy/md5-js": "^4.1.1", "@smithy/middleware-content-length": "^4.1.1", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-retry": "^4.3.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/middleware-stack": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/node-http-handler": "^4.2.1", "@smithy/protocol-http": "^5.2.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-base64": "^4.1.0", "@smithy/util-body-length-browser": "^4.1.0", "@smithy/util-body-length-node": "^4.1.0", "@smithy/util-defaults-mode-browser": "^4.1.4", "@smithy/util-defaults-mode-node": "^4.1.4", "@smithy/util-endpoints": "^3.1.2", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-8nDSfBkXcqK3uxZ5NxiYGeRtTHFbMM1thLHm/myDDQrgnRMyhMXSbe6lPmCosMRZdqjmT0+cB9fc/XZAxA71fg=="], + "@aws-sdk/client-sqs": ["@aws-sdk/client-sqs@3.901.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/credential-provider-node": "3.901.0", "@aws-sdk/middleware-host-header": "3.901.0", "@aws-sdk/middleware-logger": "3.901.0", "@aws-sdk/middleware-recursion-detection": "3.901.0", "@aws-sdk/middleware-sdk-sqs": "3.901.0", "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/region-config-resolver": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@aws-sdk/util-user-agent-browser": "3.901.0", "@aws-sdk/util-user-agent-node": "3.901.0", "@smithy/config-resolver": "^4.3.0", "@smithy/core": "^3.14.0", "@smithy/fetch-http-handler": "^5.3.0", "@smithy/hash-node": "^4.2.0", "@smithy/invalid-dependency": "^4.2.0", "@smithy/md5-js": "^4.2.0", "@smithy/middleware-content-length": "^4.2.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-retry": "^4.4.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.0", "@smithy/util-defaults-mode-browser": "^4.2.0", "@smithy/util-defaults-mode-node": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-rbBmLQrwjJ9o9qMJe/jMYnGZFgkKMYM9+EAIljxS/J2EkNMUlfbRrNjTI0r8NjtMNo8wRnY3Gf7CcYIA+gDFNw=="], "@aws-sdk/client-sso": ["@aws-sdk/client-sso@3.398.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", "@aws-sdk/middleware-host-header": "3.398.0", "@aws-sdk/middleware-logger": "3.398.0", "@aws-sdk/middleware-recursion-detection": "3.398.0", "@aws-sdk/middleware-user-agent": "3.398.0", "@aws-sdk/types": "3.398.0", "@aws-sdk/util-endpoints": "3.398.0", "@aws-sdk/util-user-agent-browser": "3.398.0", "@aws-sdk/util-user-agent-node": "3.398.0", "@smithy/config-resolver": "^2.0.5", "@smithy/fetch-http-handler": "^2.0.5", "@smithy/hash-node": "^2.0.5", "@smithy/invalid-dependency": "^2.0.5", "@smithy/middleware-content-length": "^2.0.5", "@smithy/middleware-endpoint": "^2.0.5", "@smithy/middleware-retry": "^2.0.5", "@smithy/middleware-serde": "^2.0.5", "@smithy/middleware-stack": "^2.0.0", "@smithy/node-config-provider": "^2.0.5", "@smithy/node-http-handler": "^2.0.5", "@smithy/protocol-http": "^2.0.5", "@smithy/smithy-client": "^2.0.5", "@smithy/types": "^2.2.2", "@smithy/url-parser": "^2.0.5", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.5", "@smithy/util-defaults-mode-node": "^2.0.5", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" } }, "sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ=="], "@aws-sdk/client-sts": ["@aws-sdk/client-sts@3.398.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", "@aws-sdk/credential-provider-node": "3.398.0", "@aws-sdk/middleware-host-header": "3.398.0", "@aws-sdk/middleware-logger": "3.398.0", "@aws-sdk/middleware-recursion-detection": "3.398.0", "@aws-sdk/middleware-sdk-sts": "3.398.0", "@aws-sdk/middleware-signing": "3.398.0", "@aws-sdk/middleware-user-agent": "3.398.0", "@aws-sdk/types": "3.398.0", "@aws-sdk/util-endpoints": "3.398.0", "@aws-sdk/util-user-agent-browser": "3.398.0", "@aws-sdk/util-user-agent-node": "3.398.0", "@smithy/config-resolver": "^2.0.5", "@smithy/fetch-http-handler": "^2.0.5", "@smithy/hash-node": "^2.0.5", "@smithy/invalid-dependency": "^2.0.5", "@smithy/middleware-content-length": "^2.0.5", "@smithy/middleware-endpoint": "^2.0.5", "@smithy/middleware-retry": "^2.0.5", "@smithy/middleware-serde": "^2.0.5", "@smithy/middleware-stack": "^2.0.0", "@smithy/node-config-provider": "^2.0.5", "@smithy/node-http-handler": "^2.0.5", "@smithy/protocol-http": "^2.0.5", "@smithy/smithy-client": "^2.0.5", "@smithy/types": "^2.2.2", "@smithy/url-parser": "^2.0.5", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.5", "@smithy/util-defaults-mode-node": "^2.0.5", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" } }, "sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg=="], - "@aws-sdk/core": ["@aws-sdk/core@3.896.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@aws-sdk/xml-builder": "3.894.0", "@smithy/core": "^3.12.0", "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/signature-v4": "^5.2.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-uJaoyWKeGNyCyeI+cIJrD7LEB4iF/W8/x2ij7zg32OFpAAJx96N34/e+XSKp/xkJpO5FKiBOskKLnHeUsJsAPA=="], + "@aws-sdk/core": ["@aws-sdk/core@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@aws-sdk/xml-builder": "3.901.0", "@smithy/core": "^3.14.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/signature-v4": "^5.3.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-brKAc3y64tdhyuEf+OPIUln86bRTqkLgb9xkd6kUdIeA5+qmp/N6amItQz+RN4k4O3kqkCPYnAd3LonTKluobw=="], "@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.398.0", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/property-provider": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ=="], - "@aws-sdk/credential-provider-http": ["@aws-sdk/credential-provider-http@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/fetch-http-handler": "^5.2.1", "@smithy/node-http-handler": "^4.2.1", "@smithy/property-provider": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/util-stream": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-CN0fTCKCUA1OTSx1c76o8XyJCy2WoI/av3J8r8mL6GmxTerhLRyzDy/MwxzPjTYPoL+GLEg6V4a9fRkWj1hBUA=="], + "@aws-sdk/credential-provider-http": ["@aws-sdk/credential-provider-http@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/fetch-http-handler": "^5.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/util-stream": "^4.4.0", "tslib": "^2.6.2" } }, "sha512-Ggr7+0M6QZEsrqRkK7iyJLf4LkIAacAxHz9c4dm9hnDdU7vqrlJm6g73IxMJXWN1bIV7IxfpzB11DsRrB/oNjQ=="], "@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.398.0", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.398.0", "@aws-sdk/credential-provider-process": "3.398.0", "@aws-sdk/credential-provider-sso": "3.398.0", "@aws-sdk/credential-provider-web-identity": "3.398.0", "@aws-sdk/types": "3.398.0", "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw=="], @@ -192,39 +192,39 @@ "@aws-sdk/endpoint-cache": ["@aws-sdk/endpoint-cache@3.893.0", "", { "dependencies": { "mnemonist": "0.38.3", "tslib": "^2.6.2" } }, "sha512-KSwTfyLZyNLszz5f/yoLC+LC+CRKpeJii/+zVAy7JUOQsKhSykiRUPYUx7o2Sdc4oJfqqUl26A/jSttKYnYtAA=="], - "@aws-sdk/middleware-bucket-endpoint": ["@aws-sdk/middleware-bucket-endpoint@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@aws-sdk/util-arn-parser": "3.893.0", "@smithy/node-config-provider": "^4.2.2", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-config-provider": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-H+wMAoFC73T7M54OFIezdHXR9/lH8TZ3Cx1C3MEBb2ctlzQrVCd8LX8zmOtcGYC8plrRwV+8rNPe0FMqecLRew=="], + "@aws-sdk/middleware-bucket-endpoint": ["@aws-sdk/middleware-bucket-endpoint@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@aws-sdk/util-arn-parser": "3.893.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-config-provider": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-mPF3N6eZlVs9G8aBSzvtoxR1RZqMo1aIwR+X8BAZSkhfj55fVF2no4IfPXfdFO3I66N+zEQ8nKoB0uTATWrogQ=="], - "@aws-sdk/middleware-endpoint-discovery": ["@aws-sdk/middleware-endpoint-discovery@3.893.0", "", { "dependencies": { "@aws-sdk/endpoint-cache": "3.893.0", "@aws-sdk/types": "3.893.0", "@smithy/node-config-provider": "^4.2.2", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-WnKSbB397NuMm14/ydw+GbY5+KlnoHf033zIo92n/6AkNoSD1crPRG361ttDoWmk111dfBr/ki5yRfgjujtk9w=="], + "@aws-sdk/middleware-endpoint-discovery": ["@aws-sdk/middleware-endpoint-discovery@3.901.0", "", { "dependencies": { "@aws-sdk/endpoint-cache": "3.893.0", "@aws-sdk/types": "3.901.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-nbqELNamIhsWcDmqa3rB5unNuOEGiNh2pEz663ZEzsa9DTasKvBHqdhVQo6DuWDvnkhAjOMrkM2sB4P45uy1Qw=="], - "@aws-sdk/middleware-expect-continue": ["@aws-sdk/middleware-expect-continue@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-PEZkvD6k0X9sacHkvkVF4t2QyQEAzd35OJ2bIrjWCfc862TwukMMJ1KErRmQ1WqKXHKF4L0ed5vtWaO/8jVLNA=="], + "@aws-sdk/middleware-expect-continue": ["@aws-sdk/middleware-expect-continue@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-bwq9nj6MH38hlJwOY9QXIDwa6lI48UsaZpaXbdD71BljEIRlxDzfB4JaYb+ZNNK7RIAdzsP/K05mJty6KJAQHw=="], - "@aws-sdk/middleware-flexible-checksums": ["@aws-sdk/middleware-flexible-checksums@3.896.0", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/is-array-buffer": "^4.1.0", "@smithy/node-config-provider": "^4.2.2", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-stream": "^4.3.2", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-bB3W/IFG7HNNziACOp1aZVGGnrIahXc0PxZoU055JirEGQtDFIU1ZD7S9zLKmy9FFUvQsAeRL9nDFHbx8cwx/w=="], + "@aws-sdk/middleware-flexible-checksums": ["@aws-sdk/middleware-flexible-checksums@3.901.0", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/is-array-buffer": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-stream": "^4.4.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-63lcKfggVUFyXhE4SsFXShCTCyh7ZHEqXLyYEL4DwX+VWtxutf9t9m3fF0TNUYDE8eEGWiRXhegj8l4FjuW+wA=="], "@aws-sdk/middleware-host-header": ["@aws-sdk/middleware-host-header@3.398.0", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/protocol-http": "^2.0.5", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA=="], - "@aws-sdk/middleware-location-constraint": ["@aws-sdk/middleware-location-constraint@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-MlbBc7Ttb1ekbeeeFBU4DeEZOLb5s0Vl4IokvO17g6yJdLk4dnvZro9zdXl3e7NXK+kFxHRBFZe55p/42mVgDA=="], + "@aws-sdk/middleware-location-constraint": ["@aws-sdk/middleware-location-constraint@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-MuCS5R2ngNoYifkVt05CTULvYVWX0dvRT0/Md4jE3a0u0yMygYy31C1zorwfE/SUgAQXyLmUx8ATmPp9PppImQ=="], "@aws-sdk/middleware-logger": ["@aws-sdk/middleware-logger@3.398.0", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg=="], "@aws-sdk/middleware-recursion-detection": ["@aws-sdk/middleware-recursion-detection@3.398.0", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/protocol-http": "^2.0.5", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ=="], - "@aws-sdk/middleware-sdk-s3": ["@aws-sdk/middleware-sdk-s3@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-arn-parser": "3.893.0", "@smithy/core": "^3.12.0", "@smithy/node-config-provider": "^4.2.2", "@smithy/protocol-http": "^5.2.1", "@smithy/signature-v4": "^5.2.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/util-config-provider": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-stream": "^4.3.2", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-hlPu/AZ5Afa4ZafP+aXIjRtKm7BX57lurA+TJ+7nXm1Az8Du3Sg2tZXP2/GfqTztLIFQYj/Jy5smkJ0+1HNAPQ=="], + "@aws-sdk/middleware-sdk-s3": ["@aws-sdk/middleware-sdk-s3@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-arn-parser": "3.893.0", "@smithy/core": "^3.14.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/signature-v4": "^5.3.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/util-config-provider": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-stream": "^4.4.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-prgjVC3fDT2VIlmQPiw/cLee8r4frTam9GILRUVQyDdNtshNwV3MiaSCLzzQJjKJlLgnBLNUHJCSmvUVtg+3iA=="], - "@aws-sdk/middleware-sdk-sqs": ["@aws-sdk/middleware-sdk-sqs@3.896.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-Bb0UkqUK7EH6li4gxh3ANpcHZ0DMW8oIRbxColwoW+Hvxn7iVjNatZZTfcQu7shFhzzFcBmHljsXTSi4sS0BEA=="], + "@aws-sdk/middleware-sdk-sqs": ["@aws-sdk/middleware-sdk-sqs@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-0mdVLxT8RpxFUC8W5ygkyZkG2HoeqHQKGdvJlxXFVCDtAsGjY1qapS4OnDjrPDWUHWjNZa+chqFczzRmLe9UKw=="], "@aws-sdk/middleware-sdk-sts": ["@aws-sdk/middleware-sdk-sts@3.398.0", "", { "dependencies": { "@aws-sdk/middleware-signing": "3.398.0", "@aws-sdk/types": "3.398.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ=="], "@aws-sdk/middleware-signing": ["@aws-sdk/middleware-signing@3.398.0", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/property-provider": "^2.0.0", "@smithy/protocol-http": "^2.0.5", "@smithy/signature-v4": "^2.0.0", "@smithy/types": "^2.2.2", "@smithy/util-middleware": "^2.0.0", "tslib": "^2.5.0" } }, "sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w=="], - "@aws-sdk/middleware-ssec": ["@aws-sdk/middleware-ssec@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-e4ccCiAnczv9mMPheKjgKxZQN473mcup+3DPLVNnIw5GRbQoDqPSB70nUzfORKZvM7ar7xLMPxNR8qQgo1C8Rg=="], + "@aws-sdk/middleware-ssec": ["@aws-sdk/middleware-ssec@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-YiLLJmA3RvjL38mFLuu8fhTTGWtp2qT24VqpucgfoyziYcTgIQkJJmKi90Xp6R6/3VcArqilyRgM1+x8i/em+Q=="], "@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.398.0", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@aws-sdk/util-endpoints": "3.398.0", "@smithy/protocol-http": "^2.0.5", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ=="], - "@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.896.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/middleware-host-header": "3.893.0", "@aws-sdk/middleware-logger": "3.893.0", "@aws-sdk/middleware-recursion-detection": "3.893.0", "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/region-config-resolver": "3.893.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@aws-sdk/util-user-agent-browser": "3.893.0", "@aws-sdk/util-user-agent-node": "3.896.0", "@smithy/config-resolver": "^4.2.2", "@smithy/core": "^3.12.0", "@smithy/fetch-http-handler": "^5.2.1", "@smithy/hash-node": "^4.1.1", "@smithy/invalid-dependency": "^4.1.1", "@smithy/middleware-content-length": "^4.1.1", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-retry": "^4.3.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/middleware-stack": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/node-http-handler": "^4.2.1", "@smithy/protocol-http": "^5.2.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-base64": "^4.1.0", "@smithy/util-body-length-browser": "^4.1.0", "@smithy/util-body-length-node": "^4.1.0", "@smithy/util-defaults-mode-browser": "^4.1.4", "@smithy/util-defaults-mode-node": "^4.1.4", "@smithy/util-endpoints": "^3.1.2", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-KaHALB6DIXScJL/ExmonADr3jtTV6dpOHoEeTRSskJ/aW+rhZo7kH8SLmrwOT/qX8d5tza17YyR/oRkIKY6Eaw=="], + "@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.901.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/middleware-host-header": "3.901.0", "@aws-sdk/middleware-logger": "3.901.0", "@aws-sdk/middleware-recursion-detection": "3.901.0", "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/region-config-resolver": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@aws-sdk/util-user-agent-browser": "3.901.0", "@aws-sdk/util-user-agent-node": "3.901.0", "@smithy/config-resolver": "^4.3.0", "@smithy/core": "^3.14.0", "@smithy/fetch-http-handler": "^5.3.0", "@smithy/hash-node": "^4.2.0", "@smithy/invalid-dependency": "^4.2.0", "@smithy/middleware-content-length": "^4.2.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-retry": "^4.4.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.0", "@smithy/util-defaults-mode-browser": "^4.2.0", "@smithy/util-defaults-mode-node": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-feAAAMsVwctk2Tms40ONybvpfJPLCmSdI+G+OTrNpizkGLNl6ik2Ng2RzxY6UqOfN8abqKP/DOUj1qYDRDG8ag=="], - "@aws-sdk/region-config-resolver": ["@aws-sdk/region-config-resolver@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/node-config-provider": "^4.2.2", "@smithy/types": "^4.5.0", "@smithy/util-config-provider": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-/cJvh3Zsa+Of0Zbg7vl9wp/kZtdb40yk/2+XcroAMVPO9hPvmS9r/UOm6tO7FeX4TtkRFwWaQJiTZTgSdsPY+Q=="], + "@aws-sdk/region-config-resolver": ["@aws-sdk/region-config-resolver@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-config-provider": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-7F0N888qVLHo4CSQOsnkZ4QAp8uHLKJ4v3u09Ly5k4AEStrSlFpckTPyUx6elwGL+fxGjNE2aakK8vEgzzCV0A=="], - "@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.896.0", "", { "dependencies": { "@aws-sdk/middleware-sdk-s3": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/protocol-http": "^5.2.1", "@smithy/signature-v4": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-txiQDEZXL9tlNP8mbnNaDtuHBYc/FCqaZ8Y76qnfM3o6CTIn0t0tTAlnx1CyFe4EaikVBgQuZvj5KfNA8PmlzA=="], + "@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.901.0", "", { "dependencies": { "@aws-sdk/middleware-sdk-s3": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/protocol-http": "^5.3.0", "@smithy/signature-v4": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-2IWxbll/pRucp1WQkHi2W5E2SVPGBvk4Is923H7gpNksbVFws18ItjMM8ZpGm44cJEoy1zR5gjhLFklatpuoOw=="], "@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.398.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", "@aws-sdk/middleware-host-header": "3.398.0", "@aws-sdk/middleware-logger": "3.398.0", "@aws-sdk/middleware-recursion-detection": "3.398.0", "@aws-sdk/middleware-user-agent": "3.398.0", "@aws-sdk/types": "3.398.0", "@aws-sdk/util-endpoints": "3.398.0", "@aws-sdk/util-user-agent-browser": "3.398.0", "@aws-sdk/util-user-agent-node": "3.398.0", "@smithy/config-resolver": "^2.0.5", "@smithy/fetch-http-handler": "^2.0.5", "@smithy/hash-node": "^2.0.5", "@smithy/invalid-dependency": "^2.0.5", "@smithy/middleware-content-length": "^2.0.5", "@smithy/middleware-endpoint": "^2.0.5", "@smithy/middleware-retry": "^2.0.5", "@smithy/middleware-serde": "^2.0.5", "@smithy/middleware-stack": "^2.0.0", "@smithy/node-config-provider": "^2.0.5", "@smithy/node-http-handler": "^2.0.5", "@smithy/property-provider": "^2.0.0", "@smithy/protocol-http": "^2.0.5", "@smithy/shared-ini-file-loader": "^2.0.0", "@smithy/smithy-client": "^2.0.5", "@smithy/types": "^2.2.2", "@smithy/url-parser": "^2.0.5", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.5", "@smithy/util-defaults-mode-node": "^2.0.5", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" } }, "sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ=="], @@ -260,45 +260,45 @@ "@better-t-stack/backend": ["@better-t-stack/backend@workspace:packages/backend"], - "@biomejs/biome": ["@biomejs/biome@2.2.4", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.2.4", "@biomejs/cli-darwin-x64": "2.2.4", "@biomejs/cli-linux-arm64": "2.2.4", "@biomejs/cli-linux-arm64-musl": "2.2.4", "@biomejs/cli-linux-x64": "2.2.4", "@biomejs/cli-linux-x64-musl": "2.2.4", "@biomejs/cli-win32-arm64": "2.2.4", "@biomejs/cli-win32-x64": "2.2.4" }, "bin": { "biome": "bin/biome" } }, "sha512-TBHU5bUy/Ok6m8c0y3pZiuO/BZoY/OcGxoLlrfQof5s8ISVwbVBdFINPQZyFfKwil8XibYWb7JMwnT8wT4WVPg=="], + "@biomejs/biome": ["@biomejs/biome@2.2.5", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.2.5", "@biomejs/cli-darwin-x64": "2.2.5", "@biomejs/cli-linux-arm64": "2.2.5", "@biomejs/cli-linux-arm64-musl": "2.2.5", "@biomejs/cli-linux-x64": "2.2.5", "@biomejs/cli-linux-x64-musl": "2.2.5", "@biomejs/cli-win32-arm64": "2.2.5", "@biomejs/cli-win32-x64": "2.2.5" }, "bin": { "biome": "bin/biome" } }, "sha512-zcIi+163Rc3HtyHbEO7CjeHq8DjQRs40HsGbW6vx2WI0tg8mYQOPouhvHSyEnCBAorfYNnKdR64/IxO7xQ5faw=="], - "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RJe2uiyaloN4hne4d2+qVj3d3gFJFbmrr5PYtkkjei1O9c+BjGXgpUPVbi8Pl8syumhzJjFsSIYkcLt2VlVLMA=="], + "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.2.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-MYT+nZ38wEIWVcL5xLyOhYQQ7nlWD0b/4mgATW2c8dvq7R4OQjt/XGXFkXrmtWmQofaIM14L7V8qIz/M+bx5QQ=="], - "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-cFsdB4ePanVWfTnPVaUX+yr8qV8ifxjBKMkZwN7gKb20qXPxd/PmwqUH8mY5wnM9+U0QwM76CxFyBRJhC9tQwg=="], + "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.2.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-FLIEl73fv0R7dI10EnEiZLw+IMz3mWLnF95ASDI0kbx6DDLJjWxE5JxxBfmG+udz1hIDd3fr5wsuP7nwuTRdAg=="], - "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-M/Iz48p4NAzMXOuH+tsn5BvG/Jb07KOMTdSVwJpicmhN309BeEyRyQX+n1XDF0JVSlu28+hiTQ2L4rZPvu7nMw=="], + "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.2.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-5DjiiDfHqGgR2MS9D+AZ8kOfrzTGqLKywn8hoXpXXlJXIECGQ32t+gt/uiS2XyGBM2XQhR6ztUvbjZWeccFMoQ=="], - "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-7TNPkMQEWfjvJDaZRSkDCPT/2r5ESFPKx+TEev+I2BXDGIjfCZk2+b88FOhnJNHtksbOZv8ZWnxrA5gyTYhSsQ=="], + "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.2.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-5Ov2wgAFwqDvQiESnu7b9ufD1faRa+40uwrohgBopeY84El2TnBDoMNXx6iuQdreoFGjwW8vH6k68G21EpNERw=="], - "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-orr3nnf2Dpb2ssl6aihQtvcKtLySLta4E2UcXdp7+RTa7mfJjBgIsbS0B9GC8gVu0hjOu021aU8b3/I1tn+pVQ=="], + "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.2.5", "", { "os": "linux", "cpu": "x64" }, "sha512-fq9meKm1AEXeAWan3uCg6XSP5ObA6F/Ovm89TwaMiy1DNIwdgxPkNwxlXJX8iM6oRbFysYeGnT0OG8diCWb9ew=="], - "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-m41nFDS0ksXK2gwXL6W6yZTYPMH0LughqbsxInSKetoH6morVj43szqKx79Iudkp8WRT5SxSh7qVb8KCUiewGg=="], + "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.2.5", "", { "os": "linux", "cpu": "x64" }, "sha512-AVqLCDb/6K7aPNIcxHaTQj01sl1m989CJIQFQEaiQkGr2EQwyOpaATJ473h+nXDUuAcREhccfRpe/tu+0wu0eQ=="], - "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.2.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-NXnfTeKHDFUWfxAefa57DiGmu9VyKi0cDqFpdI+1hJWQjGJhJutHPX0b5m+eXvTKOaf+brU+P0JrQAZMb5yYaQ=="], + "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.2.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-xaOIad4wBambwJa6mdp1FigYSIF9i7PCqRbvBqtIi9y29QtPVQ13sDGtUnsRoe6SjL10auMzQ6YAe+B3RpZXVg=="], - "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.2.4", "", { "os": "win32", "cpu": "x64" }, "sha512-3Y4V4zVRarVh/B/eSHczR4LYoSVyv3Dfuvm3cWs5w/HScccS0+Wt/lHOcDTRYeHjQmMYVC3rIRWqyN2EI52+zg=="], + "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.2.5", "", { "os": "win32", "cpu": "x64" }, "sha512-F/jhuXCssPFAuciMhHKk00xnCAxJRS/pUzVfXYmOMUp//XW7mO6QeCjsjvnm8L4AO/dG2VOB0O+fJPiJ2uXtIw=="], "@biomejs/js-api": ["@biomejs/js-api@3.0.0", "", { "peerDependencies": { "@biomejs/wasm-bundler": "^2.2.0", "@biomejs/wasm-nodejs": "^2.2.0", "@biomejs/wasm-web": "^2.2.0" }, "optionalPeers": ["@biomejs/wasm-bundler", "@biomejs/wasm-nodejs", "@biomejs/wasm-web"] }, "sha512-5QcGJFj9IO+yXl76ICjvkdE38uxRcTDsBzcCZHEZ+ma+Te/nbvJg4A3KtAds9HCrEF0JKLWiyjMhAbqazuJvYA=="], - "@biomejs/wasm-nodejs": ["@biomejs/wasm-nodejs@2.2.4", "", {}, "sha512-ExHAa8W9uyinDhvxhe9CXA6V9bHka3RIs9jKQWlzOz7/LEt3IcFA+fo0O+9RdU30q7lmoo83VqUJwWPTLXeWiA=="], + "@biomejs/wasm-nodejs": ["@biomejs/wasm-nodejs@2.2.5", "", {}, "sha512-p9BhDKyjyemt9aBOaqINrsTJSWiCYZu1asM5AxfMFxF9Fi3L3ZcIbzxe5OYa294oNllmmqJ+68GlZG/2fqF0dQ=="], - "@clack/core": ["@clack/core@1.0.0-alpha.5", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-z02wRlW7F7L5N5r2otDMsrLNKAgjDIDD+m4do5/cBqiYCKKb7SNBJgpUISjuCmRI0/P5XyoInmMrr1rBoH8MKw=="], + "@clack/core": ["@clack/core@1.0.0-alpha.6", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-eG5P45+oShFG17u9I1DJzLkXYB1hpUgTLi32EfsMjSHLEqJUR8BOBCVFkdbUX2g08eh/HCi6UxNGpPhaac1LAA=="], - "@clack/prompts": ["@clack/prompts@1.0.0-alpha.5", "", { "dependencies": { "@clack/core": "1.0.0-alpha.5", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-hY67bxfwwti2WkLOLOiuXtAdD43KNMV4yiJPPSEdZG8N5TfZ9lLxibmqwKe5UZ5364PIp4kzTEvge/4Crcd5bg=="], + "@clack/prompts": ["@clack/prompts@1.0.0-alpha.6", "", { "dependencies": { "@clack/core": "1.0.0-alpha.6", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-75NCtYOgDHVBE2nLdKPTDYOaESxO0GLAKC7INREp5VbS988Xua1u+588VaGlcvXiLc/kSwc25Cd+4PeTSpY6QQ=="], "@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.4.0", "", { "dependencies": { "mime": "^3.0.0" } }, "sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA=="], - "@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.7.4", "", { "peerDependencies": { "unenv": "2.0.0-rc.21", "workerd": "^1.20250912.0" }, "optionalPeers": ["workerd"] }, "sha512-KIjbu/Dt50zseJIoOOK5y4eYpSojD9+xxkePYVK1Rg9k/p/st4YyMtz1Clju/zrenJHrOH+AAcjNArOPMwH4Bw=="], + "@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.7.6", "", { "peerDependencies": { "unenv": "2.0.0-rc.21", "workerd": "^1.20250927.0" }, "optionalPeers": ["workerd"] }, "sha512-ykG2nd3trk6jbknRCH69xL3RpGLLbKCrbTbWSOvKEq7s4jH06yLrQlRr/q9IU+dK9p1JY1EXqhFK7VG5KqhzmQ=="], - "@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20250924.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-/+nWoNDIzdQaQib7MrWYEfeDt1vA40Ah68nXlZGXHonkIqJvkjaTP8dzdKZLuwnQokiV/SpnAXNMH0WGH31XMw=="], + "@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20251001.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-y1ST/cCscaRewWRnsHZdWbgiLJbki5UMGd0hMo/FLqjlztwPeDgQ5CGm5jMiCDdw/IBCpWxEukftPYR34rWNog=="], - "@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20250924.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-UAjC5mra+WNWy6jMbIDe9orsFmYvvMlfvZdUyn5p3NlQhhU6cc4FkFuXJ/bV+6oVw5hIhlLlFCTnsGatki/uHg=="], + "@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20251001.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-+z4QHHZ/Yix82zLFYS+ZS2UV09IENFPwDCEKUWfnrM9Km2jOOW3Ua4hJNob1EgQUYs8fFZo7k5O/tpwxMsSbbQ=="], - "@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20250924.0", "", { "os": "linux", "cpu": "x64" }, "sha512-IcwaoZFXGHq+yOBEj91QZH4qU61ws5upE7T43wVcrUAk8VXgxL12IGUVkMCEqfFXTO40PjKZBmK16B2q1HoFow=="], + "@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20251001.0", "", { "os": "linux", "cpu": "x64" }, "sha512-hGS+O2V9Mm2XjJUaB9ZHMA5asDUaDjKko42e+accbew0PQR7zrAl1afdII6hMqCLV4tk4GAjvhv281pN4g48rg=="], - "@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20250924.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-NgKG/cJiRNoJFa8QqweG0/bpkrUYKpR9mA9/qLJcGiwfvJrfK9b+ucw0lCru1BVMlyuS3kWDjagjMWqfujdBkA=="], + "@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20251001.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-QYaMK+pRgt28N7CX1JlJ+ToegJF9LxzqdT7MjWqPgVj9D2WTyIhBVYl3wYjJRcgOlnn+DRt42+li4T64CPEeuA=="], - "@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20250924.0", "", { "os": "win32", "cpu": "x64" }, "sha512-PntewemtjgLO2+8Gjw3G/NowDjpWZNKpKk/n4KmOQaWS9jIRq3IG1LkTqxj/BbMXqa4Oyrywk2kdqspj6QllOw=="], + "@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20251001.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ospnDR/FlyRvrv9DSHuxDAXmzEBLDUiAHQrQHda1iUH9HqxnNQ8giz9VlPfq7NIRc7bQ1ZdIYPGLJOY4Q366Ng=="], "@convex-dev/crons": ["@convex-dev/crons@0.1.9", "", { "dependencies": { "cron-parser": "^4.9.0" }, "peerDependencies": { "convex": "~1.16.5 || >=1.17.0 <1.35.0" } }, "sha512-TV7hFli9iDekLQt95HgL1YfwdjG7TnVR2E+6meWo0VztdXqYN14aqwvEOcaadtDhFfedGx32xHZBFzvfgQZkYQ=="], @@ -374,17 +374,17 @@ "@eslint/config-array": ["@eslint/config-array@0.21.0", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ=="], - "@eslint/config-helpers": ["@eslint/config-helpers@0.3.1", "", {}, "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA=="], + "@eslint/config-helpers": ["@eslint/config-helpers@0.4.0", "", { "dependencies": { "@eslint/core": "^0.16.0" } }, "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog=="], - "@eslint/core": ["@eslint/core@0.15.2", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg=="], + "@eslint/core": ["@eslint/core@0.16.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q=="], "@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="], - "@eslint/js": ["@eslint/js@9.36.0", "", {}, "sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw=="], + "@eslint/js": ["@eslint/js@9.37.0", "", {}, "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg=="], "@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="], - "@eslint/plugin-kit": ["@eslint/plugin-kit@0.3.5", "", { "dependencies": { "@eslint/core": "^0.15.2", "levn": "^0.4.1" } }, "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w=="], + "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.0", "", { "dependencies": { "@eslint/core": "^0.16.0", "levn": "^0.4.1" } }, "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A=="], "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], @@ -394,7 +394,7 @@ "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], - "@formatjs/intl-localematcher": ["@formatjs/intl-localematcher@0.6.1", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg=="], + "@formatjs/intl-localematcher": ["@formatjs/intl-localematcher@0.6.2", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA=="], "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], @@ -472,7 +472,7 @@ "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], - "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.0.5", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@tybys/wasm-util": "^0.10.1" } }, "sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg=="], + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.0.6", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@tybys/wasm-util": "^0.10.1" } }, "sha512-DXj75ewm11LIWUk198QSKUTxjyRjsBwk09MuMk5DGK+GDUtyPhhEHOGP/Xwwj3DjQXXkivoBirmOnKrLfc0+9g=="], "@next/env": ["@next/env@15.3.5", "", {}, "sha512-7g06v8BUVtN2njAX/r8gheoVffhiKFVt4nx74Tt6G4Hqw9HCLYQVx/GkH2qHvPtAHZaUNZ0VXAa0pQP6v1wk7g=="], @@ -568,33 +568,33 @@ "@octokit/webhooks-methods": ["@octokit/webhooks-methods@5.1.1", "", {}, "sha512-NGlEHZDseJTCj8TMMFehzwa9g7On4KJMPVHDSrHxCQumL6uSQR8wIkP/qesv52fXqV1BPf4pTxwtS31ldAt9Xg=="], - "@opennextjs/aws": ["@opennextjs/aws@3.7.7", "", { "dependencies": { "@ast-grep/napi": "^0.35.0", "@aws-sdk/client-cloudfront": "3.398.0", "@aws-sdk/client-dynamodb": "^3.398.0", "@aws-sdk/client-lambda": "^3.398.0", "@aws-sdk/client-s3": "^3.398.0", "@aws-sdk/client-sqs": "^3.398.0", "@node-minify/core": "^8.0.6", "@node-minify/terser": "^8.0.6", "@tsconfig/node18": "^1.0.1", "aws4fetch": "^1.0.18", "chalk": "^5.3.0", "cookie": "^1.0.2", "esbuild": "0.25.4", "express": "5.0.1", "path-to-regexp": "^6.3.0", "urlpattern-polyfill": "^10.0.0", "yaml": "^2.7.0" }, "bin": { "open-next": "dist/index.js" } }, "sha512-rkBpNfBsq3XvbBh+VcNI9dvs0UkuuJH5I7SvVdPx12LudiErShL/9RoA7iF9tpkfRizcwGRIhsedrHKmcs9kqw=="], + "@opennextjs/aws": ["@opennextjs/aws@3.8.0", "", { "dependencies": { "@ast-grep/napi": "^0.35.0", "@aws-sdk/client-cloudfront": "3.398.0", "@aws-sdk/client-dynamodb": "^3.398.0", "@aws-sdk/client-lambda": "^3.398.0", "@aws-sdk/client-s3": "^3.398.0", "@aws-sdk/client-sqs": "^3.398.0", "@node-minify/core": "^8.0.6", "@node-minify/terser": "^8.0.6", "@tsconfig/node18": "^1.0.1", "aws4fetch": "^1.0.18", "chalk": "^5.3.0", "cookie": "^1.0.2", "esbuild": "0.25.4", "express": "5.0.1", "path-to-regexp": "^6.3.0", "urlpattern-polyfill": "^10.0.0", "yaml": "^2.7.0" }, "bin": { "open-next": "dist/index.js" } }, "sha512-MIIAPuWNedAB59qMboGgIj1o1iCpIO4q1MkqfJG8LOdLeFfni6X+HSHKoEUnt9p3alsnI5r6VwpZBDlxvqWoCg=="], - "@opennextjs/cloudflare": ["@opennextjs/cloudflare@1.8.5", "", { "dependencies": { "@dotenvx/dotenvx": "1.31.0", "@opennextjs/aws": "3.7.7", "cloudflare": "^4.4.1", "enquirer": "^2.4.1", "glob": "^11.0.0", "ts-tqdm": "^0.8.6", "yargs": "^18.0.0" }, "peerDependencies": { "wrangler": "^4.38.0" }, "bin": { "opennextjs-cloudflare": "dist/cli/index.js" } }, "sha512-+U2kq5fno7R1v8CUXEjvz/2LZim+JxtGMXG5+i0sSAAD3l1lxh05/DoFrcb+5QAa/f5Lir2Y8wz2H4qsOjzRwA=="], + "@opennextjs/cloudflare": ["@opennextjs/cloudflare@1.9.1", "", { "dependencies": { "@dotenvx/dotenvx": "1.31.0", "@opennextjs/aws": "3.8.0", "cloudflare": "^4.4.1", "enquirer": "^2.4.1", "glob": "^11.0.0", "ts-tqdm": "^0.8.6", "yargs": "^18.0.0" }, "peerDependencies": { "wrangler": "^4.38.0" }, "bin": { "opennextjs-cloudflare": "dist/cli/index.js" } }, "sha512-MB5kL3g37fwrluTAfsCDDgRCknU8XD+4RJliXxHcZ144pwcWO+ngjcvzgTWQt4yc7d+Qi7ztC7H8UbQQD3rScg=="], "@orama/orama": ["@orama/orama@3.1.14", "", {}, "sha512-Iq4RxYC7y0pA/hLgcUGpYYs5Vze4qNmJk0Qi1uIrg2bHGpm6A06nbjWcH9h4HQsddkDFFlanLj/zYBH3Sxdb4w=="], - "@orpc/client": ["@orpc/client@1.9.0", "", { "dependencies": { "@orpc/shared": "1.9.0", "@orpc/standard-server": "1.9.0", "@orpc/standard-server-fetch": "1.9.0", "@orpc/standard-server-peer": "1.9.0" } }, "sha512-EkSzVSmXAUZWDCsT/n+lmD1ghf+/rnb3sPR8+Lr42d1YPt7OL7JciSMGt0pTOaVYjX1VLUMZ6i/FtnPDG1A2og=="], + "@orpc/client": ["@orpc/client@1.9.2", "", { "dependencies": { "@orpc/shared": "1.9.2", "@orpc/standard-server": "1.9.2", "@orpc/standard-server-fetch": "1.9.2", "@orpc/standard-server-peer": "1.9.2" } }, "sha512-SWmRU8nXcuEFJojq3m2t6ygDqf7s8cbJpqcx/7nS/D3sZOa04aEHwweieCuvzow3a5am7NUZ73y6nmbhn0i0yQ=="], - "@orpc/contract": ["@orpc/contract@1.9.0", "", { "dependencies": { "@orpc/client": "1.9.0", "@orpc/shared": "1.9.0", "@standard-schema/spec": "^1.0.0", "openapi-types": "^12.1.3" } }, "sha512-MfhQMWEZtHUI/Xz0AdOjAUHz2uH8qxS+XhOvCaPScLw7oyezhxDwQrXE30PTMKrb5IQQvMrzKPWvIvxgs7bQWQ=="], + "@orpc/contract": ["@orpc/contract@1.9.2", "", { "dependencies": { "@orpc/client": "1.9.2", "@orpc/shared": "1.9.2", "@standard-schema/spec": "^1.0.0", "openapi-types": "^12.1.3" } }, "sha512-VwInrQMYlsPAwxK2nvI4khLAqVJFSvknQH5mptFpFFsXJxelzaKmgrkIkgi1G9jbWzwaaEK4e6xfY6ElMjWXGg=="], - "@orpc/interop": ["@orpc/interop@1.9.0", "", {}, "sha512-BDOJggDMWOIqHi0r4YUH4TFUfad6zreP0cFgsjkLcMwYaIzgHINaA2Tzf21lLims/gksL8qsnkX8NCYZeGknuA=="], + "@orpc/interop": ["@orpc/interop@1.9.2", "", {}, "sha512-wqVm2OaOuGbO9Tg1NXLb+YRbaWh+gQO2j2RmjofIjMhDmY7DAL0BI6J68YZqCjBbPnckClNIdTdG07JUUHFOxw=="], - "@orpc/server": ["@orpc/server@1.9.0", "", { "dependencies": { "@orpc/client": "1.9.0", "@orpc/contract": "1.9.0", "@orpc/interop": "1.9.0", "@orpc/shared": "1.9.0", "@orpc/standard-server": "1.9.0", "@orpc/standard-server-aws-lambda": "1.9.0", "@orpc/standard-server-fetch": "1.9.0", "@orpc/standard-server-node": "1.9.0", "@orpc/standard-server-peer": "1.9.0", "cookie": "^1.0.2" }, "peerDependencies": { "crossws": ">=0.3.4", "ws": ">=8.18.1" }, "optionalPeers": ["crossws", "ws"] }, "sha512-Y00wK3RuMq5d4AC+Qj6yZBRgnpw0y/sq3kML3MGyxCbNOzh9DYAuAC3aFUUDVj20PhASAOckgXnquNmqBaeKxA=="], + "@orpc/server": ["@orpc/server@1.9.2", "", { "dependencies": { "@orpc/client": "1.9.2", "@orpc/contract": "1.9.2", "@orpc/interop": "1.9.2", "@orpc/shared": "1.9.2", "@orpc/standard-server": "1.9.2", "@orpc/standard-server-aws-lambda": "1.9.2", "@orpc/standard-server-fetch": "1.9.2", "@orpc/standard-server-node": "1.9.2", "@orpc/standard-server-peer": "1.9.2", "cookie": "^1.0.2" }, "peerDependencies": { "crossws": ">=0.3.4", "ws": ">=8.18.1" }, "optionalPeers": ["crossws", "ws"] }, "sha512-P+XrR2W5NT9t7RZ8mGhpZ4W4UYPGQonWduyE+++cXV9c+CocYzXZdHrDAtycb+XFOUz5TbPC8ZuVw9zy0Bl1kA=="], - "@orpc/shared": ["@orpc/shared@1.9.0", "", { "dependencies": { "radash": "^12.1.1", "type-fest": "^5.0.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-Aa67z0TzppHksEnzZuaIlXdx202OMfLZsFBmnjzej8ObwZ7RLVF1B5L11IcQJSiO4IU7RGa5fW2J0BSAbMZOkQ=="], + "@orpc/shared": ["@orpc/shared@1.9.2", "", { "dependencies": { "radash": "^12.1.1", "type-fest": "^5.0.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-AdxNCmEOMQ+nwX7M6WhuEqPX+ddRGff92H7RSGzA6xMfMppope+QKL325BQV3zkVjPCub4yw5M17vVqnVkcL5Q=="], - "@orpc/standard-server": ["@orpc/standard-server@1.9.0", "", { "dependencies": { "@orpc/shared": "1.9.0" } }, "sha512-qgeznH8eiiVld5mHEHkdliXgoXAdaDdJXCNMItNqk2Y/8uknsyONPvbgh5KVVPLWNtosO4EqNHWPozDi+BdzPw=="], + "@orpc/standard-server": ["@orpc/standard-server@1.9.2", "", { "dependencies": { "@orpc/shared": "1.9.2" } }, "sha512-UdiBpRhZqkwjEey9KxVfQLyYs5aw8W0A1Dyx7wTxFYkExzNrObadYJRLMZsgdZnXMIOEUsEMVeaAsnTjkN25yQ=="], - "@orpc/standard-server-aws-lambda": ["@orpc/standard-server-aws-lambda@1.9.0", "", { "dependencies": { "@orpc/shared": "1.9.0", "@orpc/standard-server": "1.9.0", "@orpc/standard-server-fetch": "1.9.0", "@orpc/standard-server-node": "1.9.0" } }, "sha512-LMq9Yd8143FNwbnLNarm8Ze/ECR40HaMLTFhs5OH5f1zZuVtLUBQFpXFpFnYekPtzbzxKgpQ16VRXsHJ02Z2KA=="], + "@orpc/standard-server-aws-lambda": ["@orpc/standard-server-aws-lambda@1.9.2", "", { "dependencies": { "@orpc/shared": "1.9.2", "@orpc/standard-server": "1.9.2", "@orpc/standard-server-fetch": "1.9.2", "@orpc/standard-server-node": "1.9.2" } }, "sha512-SJkIfW/LpwJMjptH/FpivoGJEKNho4VciC8TIQ+I6FTKDJSOHXWSHelFOXphz1ziWMcSm6GH4uY00fDWyxNzGA=="], - "@orpc/standard-server-fetch": ["@orpc/standard-server-fetch@1.9.0", "", { "dependencies": { "@orpc/shared": "1.9.0", "@orpc/standard-server": "1.9.0" } }, "sha512-ZT7GhCnRD4T3FCpT7zihte1Nkl4JxO68snEe1Ld2UF5pp5ktqZr2yq9BTDU0jHDBcseB/4YIfSEMWIJPr6TAkw=="], + "@orpc/standard-server-fetch": ["@orpc/standard-server-fetch@1.9.2", "", { "dependencies": { "@orpc/shared": "1.9.2", "@orpc/standard-server": "1.9.2" } }, "sha512-ORVOEWao6KoecbcZ4tvuwcDHsBlPYDGTxHfWMM8L5xsmUQwP81ptmfvVpduPEIb7fWkAKaEZl9eFZSsOoZmmLA=="], - "@orpc/standard-server-node": ["@orpc/standard-server-node@1.9.0", "", { "dependencies": { "@orpc/shared": "1.9.0", "@orpc/standard-server": "1.9.0", "@orpc/standard-server-fetch": "1.9.0" } }, "sha512-WwFVGZ8kDxLuR/1Zp9V4qp+umOGyRnqeN4PUkyDJlY7sU4p+W9aVusIrf4lfMCKzCaOoQ9uO9eW6yY1FwyorhQ=="], + "@orpc/standard-server-node": ["@orpc/standard-server-node@1.9.2", "", { "dependencies": { "@orpc/shared": "1.9.2", "@orpc/standard-server": "1.9.2", "@orpc/standard-server-fetch": "1.9.2" } }, "sha512-DH8GmqwnQnNIZZ8+lCha9/AJDjVCbjA2Xmn4ec7cQyQqIdl4Iqc37xGDJOCh2YLdXQtl/aZKD9MXm6CRqszISg=="], - "@orpc/standard-server-peer": ["@orpc/standard-server-peer@1.9.0", "", { "dependencies": { "@orpc/shared": "1.9.0", "@orpc/standard-server": "1.9.0" } }, "sha512-Y4cxNN3JDFywuUHPqEAqHAh5HQj2bY5Gc4LmFTH0MViIiKgTKBg0grAagPDexzHHREZMz2XYlReJMDVCOLiqOg=="], + "@orpc/standard-server-peer": ["@orpc/standard-server-peer@1.9.2", "", { "dependencies": { "@orpc/shared": "1.9.2", "@orpc/standard-server": "1.9.2" } }, "sha512-fWBJKXfHWT3PpkXzFQ15+C0rdG0XKBb+hkAuxtxpLs6LhyA7Ea74/GIiMjPLfn0KihRsdSgyLBo6Pnzr7jGXtA=="], - "@oxc-project/types": ["@oxc-project/types@0.92.0", "", {}, "sha512-PDLfCbwgXjGdTBxzcuDOUxJYNBl6P8dOp3eDKWw54dYvqONan9rwGDRQU0zrkdEMiItfXQQUOI17uOcMX5Zm7A=="], + "@oxc-project/types": ["@oxc-project/types@0.93.0", "", {}, "sha512-yNtwmWZIBtJsMr5TEfoZFDxIWV6OdScOpza/f5YxbqUMJk+j6QX3Cf3jgZShGEFYWQJ5j9mJ6jM0tZHu2J9Yrg=="], "@polka/url": ["@polka/url@1.0.0-next.29", "", {}, "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww=="], @@ -604,7 +604,7 @@ "@poppinss/exception": ["@poppinss/exception@1.2.2", "", {}, "sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg=="], - "@posthog/core": ["@posthog/core@1.2.1", "", {}, "sha512-zNw96BipqM5/Tf161Q8/K5zpwGY3ezfb2wz+Yc3fIT5OQHW8eEzkQldPgtFKMUkqImc73ukEa2IdUpS6vEGH7w=="], + "@posthog/core": ["@posthog/core@1.2.2", "", {}, "sha512-f16Ozx6LIigRG+HsJdt+7kgSxZTHeX5f1JlCGKI1lXcvlZgfsCR338FuMI2QRYXGl+jg/vYFzGOTQBxl90lnBg=="], "@publint/pack": ["@publint/pack@0.1.2", "", {}, "sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw=="], @@ -730,83 +730,83 @@ "@radix-ui/rect": ["@radix-ui/rect@1.1.1", "", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="], - "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-beta.40", "", { "os": "android", "cpu": "arm64" }, "sha512-9Ii9phC7QU6Lb+ncMfG1Xlosq0NBB1N/4sw+EGZ3y0BBWGy02TOb5ghWZalphAKv9rn1goqo5WkBjyd2YvsLmA=="], + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-beta.41", "", { "os": "android", "cpu": "arm64" }, "sha512-Edflndd9lU7JVhVIvJlZhdCj5DkhYDJPIRn4Dx0RUdfc8asP9xHOI5gMd8MesDDx+BJpdIT/uAmVTearteU/mQ=="], - "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-beta.40", "", { "os": "darwin", "cpu": "arm64" }, "sha512-5O6d0y2tBQTL+ecQY3qXIwSnF1/Zik8q7LZMKeyF+VJ9l194d0IdMhl2zUF0cqWbYHuF4Pnxplk4OhurPQ/Z9Q=="], + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-beta.41", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XGCzqfjdk7550PlyZRTBKbypXrB7ATtXhw/+bjtxnklLQs0mKP/XkQVOKyn9qGKSlvH8I56JLYryVxl0PCvSNw=="], - "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-beta.40", "", { "os": "darwin", "cpu": "x64" }, "sha512-izB9jygt3miPQbOTZfSu5K51isUplqa8ysByOKQqcJHgrBWmbTU8TM9eouv6tRmBR0kjcEcID9xhmA1CeZ1VIg=="], + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-beta.41", "", { "os": "darwin", "cpu": "x64" }, "sha512-Ho6lIwGJed98zub7n0xcRKuEtnZgbxevAmO4x3zn3C3N4GVXZD5xvCvTVxSMoeBJwTcIYzkVDRTIhylQNsTgLQ=="], - "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-beta.40", "", { "os": "freebsd", "cpu": "x64" }, "sha512-2fdpEpKT+wwP0vig9dqxu+toTeWmVSjo3psJQVDeLJ51rO+GXcCJ1IkCXjhMKVEevNtZS7B8T8Z2vvmRV9MAdA=="], + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-beta.41", "", { "os": "freebsd", "cpu": "x64" }, "sha512-ijAZETywvL+gACjbT4zBnCp5ez1JhTRs6OxRN4J+D6AzDRbU2zb01Esl51RP5/8ZOlvB37xxsRQ3X4YRVyYb3g=="], - "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.40", "", { "os": "linux", "cpu": "arm" }, "sha512-HP2lo78OWULN+8TewpLbS9PS00jh0CaF04tA2u8z2I+6QgVgrYOYKvX+T0hlO5smgso4+qb3YchzumWJl3yCPQ=="], + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.41", "", { "os": "linux", "cpu": "arm" }, "sha512-EgIOZt7UildXKFEFvaiLNBXm+4ggQyGe3E5Z1QP9uRcJJs9omihOnm897FwOBQdCuMvI49iBgjFrkhH+wMJ2MA=="], - "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-beta.40", "", { "os": "linux", "cpu": "arm64" }, "sha512-ng00gfr9BhA2NPAOU5RWAlTiL+JcwAD+L+4yUD1sbBy6tgHdLiNBOvKtHISIF9RM9/eQeS0tAiWOYZGIH9JMew=="], + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-beta.41", "", { "os": "linux", "cpu": "arm64" }, "sha512-F8bUwJq8v/JAU8HSwgF4dztoqJ+FjdyjuvX4//3+Fbe2we9UktFeZ27U4lRMXF1vxWtdV4ey6oCSqI7yUrSEeg=="], - "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-beta.40", "", { "os": "linux", "cpu": "arm64" }, "sha512-mF0R1l9kLcaag/9cLEiYYdNZ4v1uuX4jklSDZ1s6vJE4RB3LirUney0FavdVRwCJ5sDvfvsPgXgtBXWYr2M2tQ=="], + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-beta.41", "", { "os": "linux", "cpu": "arm64" }, "sha512-MioXcCIX/wB1pBnBoJx8q4OGucUAfC1+/X1ilKFsjDK05VwbLZGRgOVD5OJJpUQPK86DhQciNBrfOKDiatxNmg=="], - "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-beta.40", "", { "os": "linux", "cpu": "x64" }, "sha512-+wi08S7wT5iLPHRZb0USrS6n+T6m+yY++dePYedE5uvKIpWCJJioFTaRtWjpm0V6dVNLcq2OukrvfdlGtH9Wgg=="], + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-beta.41", "", { "os": "linux", "cpu": "x64" }, "sha512-m66M61fizvRCwt5pOEiZQMiwBL9/y0bwU/+Kc4Ce/Pef6YfoEkR28y+DzN9rMdjo8Z28NXjsDPq9nH4mXnAP0g=="], - "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-beta.40", "", { "os": "linux", "cpu": "x64" }, "sha512-W5qBGAemUocIBKCcOsDjlV9GUt28qhl/+M6etWBeLS5gQK0J6XDg0YVzfOQdvq57ZGjYNP0NvhYzqhOOnEx+4g=="], + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-beta.41", "", { "os": "linux", "cpu": "x64" }, "sha512-yRxlSfBvWnnfrdtJfvi9lg8xfG5mPuyoSHm0X01oiE8ArmLRvoJGHUTJydCYz+wbK2esbq5J4B4Tq9WAsOlP1Q=="], - "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-beta.40", "", { "os": "none", "cpu": "arm64" }, "sha512-vJwoDehtt+yqj2zacq1AqNc2uE/oh7mnRGqAUbuldV6pgvU01OSQUJ7Zu+35hTopnjFoDNN6mIezkYlGAv5RFA=="], + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-beta.41", "", { "os": "none", "cpu": "arm64" }, "sha512-PHVxYhBpi8UViS3/hcvQQb9RFqCtvFmFU1PvUoTRiUdBtgHA6fONNHU4x796lgzNlVSD3DO/MZNk1s5/ozSMQg=="], - "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-beta.40", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.5" }, "cpu": "none" }, "sha512-Oj3YyqVUPurr1FlMpEE/bJmMC+VWAWPM/SGUfklO5KUX97bk5Q/733nPg4RykK8q8/TluJoQYvRc05vL/B74dw=="], + "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-beta.41", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.5" }, "cpu": "none" }, "sha512-OAfcO37ME6GGWmj9qTaDT7jY4rM0T2z0/8ujdQIJQ2x2nl+ztO32EIwURfmXOK0U1tzkyuaKYvE34Pug/ucXlQ=="], - "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-beta.40", "", { "os": "win32", "cpu": "arm64" }, "sha512-0ZtO6yN8XjVoFfN4HDWQj4nDu3ndMybr7jIM00DJqOmc+yFhly7rdOy7fNR9Sky3leCpBtsXfepVqRmVpYKPVA=="], + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-beta.41", "", { "os": "win32", "cpu": "arm64" }, "sha512-NIYGuCcuXaq5BC4Q3upbiMBvmZsTsEPG9k/8QKQdmrch+ocSy5Jv9tdpdmXJyighKqm182nh/zBt+tSJkYoNlg=="], - "@rolldown/binding-win32-ia32-msvc": ["@rolldown/binding-win32-ia32-msvc@1.0.0-beta.40", "", { "os": "win32", "cpu": "ia32" }, "sha512-BPl1inoJXPpIe38Ja46E4y11vXlJyuleo+9Rmu//pYL5fIDYJkXUj/oAXqjSuwLcssrcwnuPgzvzvlz9++cr3w=="], + "@rolldown/binding-win32-ia32-msvc": ["@rolldown/binding-win32-ia32-msvc@1.0.0-beta.41", "", { "os": "win32", "cpu": "ia32" }, "sha512-kANdsDbE5FkEOb5NrCGBJBCaZ2Sabp3D7d4PRqMYJqyLljwh9mDyYyYSv5+QNvdAmifj+f3lviNEUUuUZPEFPw=="], - "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-beta.40", "", { "os": "win32", "cpu": "x64" }, "sha512-UguA4ltbAk+nbwHRxqaUP/etpTbR0HjyNlsu4Zjbh/ytNbFsbw8CA4tEBkwDyjgI5NIPea6xY11zpl7R2/ddVA=="], + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-beta.41", "", { "os": "win32", "cpu": "x64" }, "sha512-UlpxKmFdik0Y2VjZrgUCgoYArZJiZllXgIipdBRV1hw6uK45UbQabSTW6Kp6enuOu7vouYWftwhuxfpE8J2JAg=="], - "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.40", "", {}, "sha512-s3GeJKSQOwBlzdUrj4ISjJj5SfSh+aqn0wjOar4Bx95iV1ETI7F6S/5hLcfAxZ9kXDcyrAkxPlqmd1ZITttf+w=="], + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.41", "", {}, "sha512-ycMEPrS3StOIeb87BT3/+bu+blEtyvwQ4zmo2IcJQy0Rd1DAAhKksA0iUZ3MYSpJtjlPhg0Eo6mvVS6ggPhRbw=="], - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.52.2", "", { "os": "android", "cpu": "arm" }, "sha512-o3pcKzJgSGt4d74lSZ+OCnHwkKBeAbFDmbEm5gg70eA8VkyCuC/zV9TwBnmw6VjDlRdF4Pshfb+WE9E6XY1PoQ=="], + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.52.4", "", { "os": "android", "cpu": "arm" }, "sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA=="], - "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.52.2", "", { "os": "android", "cpu": "arm64" }, "sha512-cqFSWO5tX2vhC9hJTK8WAiPIm4Q8q/cU8j2HQA0L3E1uXvBYbOZMhE2oFL8n2pKB5sOCHY6bBuHaRwG7TkfJyw=="], + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.52.4", "", { "os": "android", "cpu": "arm64" }, "sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w=="], - "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.52.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-vngduywkkv8Fkh3wIZf5nFPXzWsNsVu1kvtLETWxTFf/5opZmflgVSeLgdHR56RQh71xhPhWoOkEBvbehwTlVA=="], + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.52.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg=="], - "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.52.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-h11KikYrUCYTrDj6h939hhMNlqU2fo/X4NB0OZcys3fya49o1hmFaczAiJWVAFgrM1NCP6RrO7lQKeVYSKBPSQ=="], + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.52.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw=="], - "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.52.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-/eg4CI61ZUkLXxMHyVlmlGrSQZ34xqWlZNW43IAU4RmdzWEx0mQJ2mN/Cx4IHLVZFL6UBGAh+/GXhgvGb+nVxw=="], + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.52.4", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ=="], - "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.52.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-QOWgFH5X9+p+S1NAfOqc0z8qEpJIoUHf7OWjNUGOeW18Mx22lAUOiA9b6r2/vpzLdfxi/f+VWsYjUOMCcYh0Ng=="], + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.52.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw=="], - "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.52.2", "", { "os": "linux", "cpu": "arm" }, "sha512-kDWSPafToDd8LcBYd1t5jw7bD5Ojcu12S3uT372e5HKPzQt532vW+rGFFOaiR0opxePyUkHrwz8iWYEyH1IIQA=="], + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.52.4", "", { "os": "linux", "cpu": "arm" }, "sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ=="], - "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.52.2", "", { "os": "linux", "cpu": "arm" }, "sha512-gKm7Mk9wCv6/rkzwCiUC4KnevYhlf8ztBrDRT9g/u//1fZLapSRc+eDZj2Eu2wpJ+0RzUKgtNijnVIB4ZxyL+w=="], + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.52.4", "", { "os": "linux", "cpu": "arm" }, "sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q=="], - "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.52.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-66lA8vnj5mB/rtDNwPgrrKUOtCLVQypkyDa2gMfOefXK6rcZAxKLO9Fy3GkW8VkPnENv9hBkNOFfGLf6rNKGUg=="], + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.52.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg=="], - "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.52.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-s+OPucLNdJHvuZHuIz2WwncJ+SfWHFEmlC5nKMUgAelUeBUnlB4wt7rXWiyG4Zn07uY2Dd+SGyVa9oyLkVGOjA=="], + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.52.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g=="], - "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.52.2", "", { "os": "linux", "cpu": "none" }, "sha512-8wTRM3+gVMDLLDdaT6tKmOE3lJyRy9NpJUS/ZRWmLCmOPIJhVyXwjBo+XbrrwtV33Em1/eCTd5TuGJm4+DmYjw=="], + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.52.4", "", { "os": "linux", "cpu": "none" }, "sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ=="], - "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.52.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-6yqEfgJ1anIeuP2P/zhtfBlDpXUb80t8DpbYwXQ3bQd95JMvUaqiX+fKqYqUwZXqdJDd8xdilNtsHM2N0cFm6A=="], + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.52.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g=="], - "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.52.2", "", { "os": "linux", "cpu": "none" }, "sha512-sshYUiYVSEI2B6dp4jMncwxbrUqRdNApF2c3bhtLAU0qA8Lrri0p0NauOsTWh3yCCCDyBOjESHMExonp7Nzc0w=="], + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.52.4", "", { "os": "linux", "cpu": "none" }, "sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg=="], - "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.52.2", "", { "os": "linux", "cpu": "none" }, "sha512-duBLgd+3pqC4MMwBrKkFxaZerUxZcYApQVC5SdbF5/e/589GwVvlRUnyqMFbM8iUSb1BaoX/3fRL7hB9m2Pj8Q=="], + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.52.4", "", { "os": "linux", "cpu": "none" }, "sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA=="], - "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.52.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-tzhYJJidDUVGMgVyE+PmxENPHlvvqm1KILjjZhB8/xHYqAGeizh3GBGf9u6WdJpZrz1aCpIIHG0LgJgH9rVjHQ=="], + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.52.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA=="], - "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.52.2", "", { "os": "linux", "cpu": "x64" }, "sha512-opH8GSUuVcCSSyHHcl5hELrmnk4waZoVpgn/4FDao9iyE4WpQhyWJ5ryl5M3ocp4qkRuHfyXnGqg8M9oKCEKRA=="], + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.52.4", "", { "os": "linux", "cpu": "x64" }, "sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg=="], - "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.52.2", "", { "os": "linux", "cpu": "x64" }, "sha512-LSeBHnGli1pPKVJ79ZVJgeZWWZXkEe/5o8kcn23M8eMKCUANejchJbF/JqzM4RRjOJfNRhKJk8FuqL1GKjF5oQ=="], + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.52.4", "", { "os": "linux", "cpu": "x64" }, "sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw=="], - "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.52.2", "", { "os": "none", "cpu": "arm64" }, "sha512-uPj7MQ6/s+/GOpolavm6BPo+6CbhbKYyZHUDvZ/SmJM7pfDBgdGisFX3bY/CBDMg2ZO4utfhlApkSfZ92yXw7Q=="], + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.52.4", "", { "os": "none", "cpu": "arm64" }, "sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA=="], - "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.52.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-Z9MUCrSgIaUeeHAiNkm3cQyst2UhzjPraR3gYYfOjAuZI7tcFRTOD+4cHLPoS/3qinchth+V56vtqz1Tv+6KPA=="], + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.52.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ=="], - "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.52.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-+GnYBmpjldD3XQd+HMejo+0gJGwYIOfFeoBQv32xF/RUIvccUz20/V6Otdv+57NE70D5pa8W/jVGDoGq0oON4A=="], + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.52.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw=="], - "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.52.2", "", { "os": "win32", "cpu": "x64" }, "sha512-ApXFKluSB6kDQkAqZOKXBjiaqdF1BlKi+/eqnYe9Ee7U2K3pUDKsIyr8EYm/QDHTJIM+4X+lI0gJc3TTRhd+dA=="], + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.52.4", "", { "os": "win32", "cpu": "x64" }, "sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ=="], - "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.52.2", "", { "os": "win32", "cpu": "x64" }, "sha512-ARz+Bs8kY6FtitYM96PqPEVvPXqEZmPZsSkXvyX19YzDqkCaIlhCieLLMI5hxO9SRZ2XtCtm8wxhy0iJ2jxNfw=="], + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.52.4", "", { "os": "win32", "cpu": "x64" }, "sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w=="], "@rtsao/scc": ["@rtsao/scc@1.1.0", "", {}, "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="], - "@rushstack/eslint-patch": ["@rushstack/eslint-patch@1.12.0", "", {}, "sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw=="], + "@rushstack/eslint-patch": ["@rushstack/eslint-patch@1.13.0", "", {}, "sha512-2ih5qGw5SZJ+2fLZxP6Lr6Na2NTIgPRL/7Kmyuw0uIyBQnuhQ8fi8fzUTd38eIQmqp+GYLC00cI6WgtqHxBwmw=="], "@sec-ant/readable-stream": ["@sec-ant/readable-stream@0.4.1", "", {}, "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg=="], @@ -834,39 +834,39 @@ "@smithy/abort-controller": ["@smithy/abort-controller@2.2.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw=="], - "@smithy/chunked-blob-reader": ["@smithy/chunked-blob-reader@5.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-a36AtR7Q7XOhRPt6F/7HENmTWcB8kN7mDJcOFM/+FuKO6x88w8MQJfYCufMWh4fGyVkPjUh3Rrz/dnqFQdo6OQ=="], + "@smithy/chunked-blob-reader": ["@smithy/chunked-blob-reader@5.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA=="], - "@smithy/chunked-blob-reader-native": ["@smithy/chunked-blob-reader-native@4.1.0", "", { "dependencies": { "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-Bnv0B3nSlfB2mPO0WgM49I/prl7+kamF042rrf3ezJ3Z4C7csPYvyYgZfXTGXwXfj1mAwDWjE/ybIf49PzFzvA=="], + "@smithy/chunked-blob-reader-native": ["@smithy/chunked-blob-reader-native@4.2.0", "", { "dependencies": { "@smithy/util-base64": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-HNbGWdyTfSM1nfrZKQjYTvD8k086+M8s1EYkBUdGC++lhxegUp2HgNf5RIt6oOGVvsC26hBCW/11tv8KbwLn/Q=="], "@smithy/config-resolver": ["@smithy/config-resolver@2.2.0", "", { "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", "@smithy/util-config-provider": "^2.3.0", "@smithy/util-middleware": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA=="], - "@smithy/core": ["@smithy/core@3.12.0", "", { "dependencies": { "@smithy/middleware-serde": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-body-length-browser": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-stream": "^4.3.2", "@smithy/util-utf8": "^4.1.0", "@smithy/uuid": "^1.0.0", "tslib": "^2.6.2" } }, "sha512-zJeAgogZfbwlPGL93y4Z/XNeIN37YCreRUd6YMIRvaq+6RnBK8PPYYIQ85Is/GglPh3kNImD5riDCXbVSDpCiQ=="], + "@smithy/core": ["@smithy/core@3.14.0", "", { "dependencies": { "@smithy/middleware-serde": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-stream": "^4.4.0", "@smithy/util-utf8": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" } }, "sha512-XJ4z5FxvY/t0Dibms/+gLJrI5niRoY0BCmE02fwmPcRYFPI4KI876xaE79YGWIKnEslMbuQPsIEsoU/DXa0DoA=="], "@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@2.3.0", "", { "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/property-provider": "^2.2.0", "@smithy/types": "^2.12.0", "@smithy/url-parser": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w=="], - "@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.1.1", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.5.0", "@smithy/util-hex-encoding": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-PwkQw1hZwHTQB6X5hSUWz2OSeuj5Z6enWuAqke7DgWoP3t6vg3ktPpqPz3Erkn6w+tmsl8Oss6nrgyezoea2Iw=="], + "@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.0", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.6.0", "@smithy/util-hex-encoding": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-XE7CtKfyxYiNZ5vz7OvyTf1osrdbJfmUy+rbh+NLQmZumMGvY0mT0Cq1qKSfhrvLtRYzMsOBuRpi10dyI0EBPg=="], - "@smithy/eventstream-serde-browser": ["@smithy/eventstream-serde-browser@4.1.1", "", { "dependencies": { "@smithy/eventstream-serde-universal": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Q9QWdAzRaIuVkefupRPRFAasaG/droBqn1feiMnmLa+LLEUG45pqX1+FurHFmlqiCfobB3nUlgoJfeXZsr7MPA=="], + "@smithy/eventstream-serde-browser": ["@smithy/eventstream-serde-browser@4.2.0", "", { "dependencies": { "@smithy/eventstream-serde-universal": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-U53p7fcrk27k8irLhOwUu+UYnBqsXNLKl1XevOpsxK3y1Lndk8R7CSiZV6FN3fYFuTPuJy5pP6qa/bjDzEkRvA=="], - "@smithy/eventstream-serde-config-resolver": ["@smithy/eventstream-serde-config-resolver@4.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-oSUkF9zDN9zcOUBMtxp8RewJlh71E9NoHWU8jE3hU9JMYCsmW4assVTpgic/iS3/dM317j6hO5x18cc3XrfvEw=="], + "@smithy/eventstream-serde-config-resolver": ["@smithy/eventstream-serde-config-resolver@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-uwx54t8W2Yo9Jr3nVF5cNnkAAnMCJ8Wrm+wDlQY6rY/IrEgZS3OqagtCu/9ceIcZFQ1zVW/zbN9dxb5esuojfA=="], - "@smithy/eventstream-serde-node": ["@smithy/eventstream-serde-node@4.1.1", "", { "dependencies": { "@smithy/eventstream-serde-universal": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-tn6vulwf/ScY0vjhzptSJuDJJqlhNtUjkxJ4wiv9E3SPoEqTEKbaq6bfqRO7nvhTG29ALICRcvfFheOUPl8KNA=="], + "@smithy/eventstream-serde-node": ["@smithy/eventstream-serde-node@4.2.0", "", { "dependencies": { "@smithy/eventstream-serde-universal": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-yjM2L6QGmWgJjVu/IgYd6hMzwm/tf4VFX0lm8/SvGbGBwc+aFl3hOzvO/e9IJ2XI+22Tx1Zg3vRpFRs04SWFcg=="], - "@smithy/eventstream-serde-universal": ["@smithy/eventstream-serde-universal@4.1.1", "", { "dependencies": { "@smithy/eventstream-codec": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-uLOAiM/Dmgh2CbEXQx+6/ssK7fbzFhd+LjdyFxXid5ZBCbLHTFHLdD/QbXw5aEDsLxQhgzDxLLsZhsftAYwHJA=="], + "@smithy/eventstream-serde-universal": ["@smithy/eventstream-serde-universal@4.2.0", "", { "dependencies": { "@smithy/eventstream-codec": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-C3jxz6GeRzNyGKhU7oV656ZbuHY93mrfkT12rmjDdZch142ykjn8do+VOkeRNjSGKw01p4g+hdalPYPhmMwk1g=="], "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@2.5.0", "", { "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/querystring-builder": "^2.2.0", "@smithy/types": "^2.12.0", "@smithy/util-base64": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw=="], - "@smithy/hash-blob-browser": ["@smithy/hash-blob-browser@4.1.1", "", { "dependencies": { "@smithy/chunked-blob-reader": "^5.1.0", "@smithy/chunked-blob-reader-native": "^4.1.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-avAtk++s1e/1VODf+rg7c9R2pB5G9y8yaJaGY4lPZI2+UIqVyuSDMikWjeWfBVmFZ3O7NpDxBbUCyGhThVUKWQ=="], + "@smithy/hash-blob-browser": ["@smithy/hash-blob-browser@4.2.0", "", { "dependencies": { "@smithy/chunked-blob-reader": "^5.2.0", "@smithy/chunked-blob-reader-native": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-MWmrRTPqVKpN8NmxmJPTeQuhewTt8Chf+waB38LXHZoA02+BeWYVQ9ViAwHjug8m7lQb1UWuGqp3JoGDOWvvuA=="], "@smithy/hash-node": ["@smithy/hash-node@2.2.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-utf8": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g=="], - "@smithy/hash-stream-node": ["@smithy/hash-stream-node@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-3ztT4pV0Moazs3JAYFdfKk11kYFDo4b/3R3+xVjIm6wY9YpJf+xfz+ocEnNKcWAdcmSMqi168i2EMaKmJHbJMA=="], + "@smithy/hash-stream-node": ["@smithy/hash-stream-node@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-8dELAuGv+UEjtzrpMeNBZc1sJhO8GxFVV/Yh21wE35oX4lOE697+lsMHBoUIFAUuYkTMIeu0EuJSEsH7/8Y+UQ=="], "@smithy/invalid-dependency": ["@smithy/invalid-dependency@2.2.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q=="], - "@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ=="], + "@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ=="], - "@smithy/md5-js": ["@smithy/md5-js@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-MvWXKK743BuHjr/hnWuT6uStdKEaoqxHAQUvbKJPPZM5ZojTNFI5D+47BoQfBE5RgGlRRty05EbWA+NXDv+hIA=="], + "@smithy/md5-js": ["@smithy/md5-js@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-LFEPniXGKRQArFmDQ3MgArXlClFJMsXDteuQQY8WG1/zzv6gVSo96+qpkuu1oJp4MZsKrwchY0cuAoPKzEbaNA=="], "@smithy/middleware-content-length": ["@smithy/middleware-content-length@2.2.0", "", { "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ=="], @@ -916,11 +916,11 @@ "@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@2.3.1", "", { "dependencies": { "@smithy/config-resolver": "^2.2.0", "@smithy/credential-provider-imds": "^2.3.0", "@smithy/node-config-provider": "^2.3.0", "@smithy/property-provider": "^2.2.0", "@smithy/smithy-client": "^2.5.1", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA=="], - "@smithy/util-endpoints": ["@smithy/util-endpoints@3.1.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-+AJsaaEGb5ySvf1SKMRrPZdYHRYSzMkCoK16jWnIMpREAnflVspMIDeCVSZJuj+5muZfgGpNpijE3mUNtjv01Q=="], + "@smithy/util-endpoints": ["@smithy/util-endpoints@3.2.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-TXeCn22D56vvWr/5xPqALc9oO+LN+QpFjrSM7peG/ckqEPoI3zaKZFp+bFwfmiHhn5MGWPaLCqDOJPPIixk9Wg=="], "@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ=="], - "@smithy/util-middleware": ["@smithy/util-middleware@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-CGmZ72mL29VMfESz7S6dekqzCh8ZISj3B+w0g1hZFXaOjGTVaSqfAEFAq8EGp8fUL+Q2l8aqNmt8U1tglTikeg=="], + "@smithy/util-middleware": ["@smithy/util-middleware@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-u9OOfDa43MjagtJZ8AapJcmimP+K2Z7szXn8xbty4aza+7P1wjFmy2ewjSbhEiYQoW1unTlOAIV165weYAaowA=="], "@smithy/util-retry": ["@smithy/util-retry@2.2.0", "", { "dependencies": { "@smithy/service-error-classification": "^2.1.5", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g=="], @@ -932,7 +932,7 @@ "@smithy/util-waiter": ["@smithy/util-waiter@2.2.0", "", { "dependencies": { "@smithy/abort-controller": "^2.2.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA=="], - "@smithy/uuid": ["@smithy/uuid@1.0.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-OlA/yZHh0ekYFnbUkmYBDQPE6fGfdrvgz39ktp8Xf+FA6BfxLejPTMDOG0Nfk5/rDySAz1dRbFf24zaAFYVXlQ=="], + "@smithy/uuid": ["@smithy/uuid@1.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw=="], "@speed-highlight/core": ["@speed-highlight/core@1.2.7", "", {}, "sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g=="], @@ -942,35 +942,35 @@ "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], - "@tailwindcss/node": ["@tailwindcss/node@4.1.13", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.5.1", "lightningcss": "1.30.1", "magic-string": "^0.30.18", "source-map-js": "^1.2.1", "tailwindcss": "4.1.13" } }, "sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw=="], + "@tailwindcss/node": ["@tailwindcss/node@4.1.14", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.6.0", "lightningcss": "1.30.1", "magic-string": "^0.30.19", "source-map-js": "^1.2.1", "tailwindcss": "4.1.14" } }, "sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw=="], - "@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.13", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.4.3" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.13", "@tailwindcss/oxide-darwin-arm64": "4.1.13", "@tailwindcss/oxide-darwin-x64": "4.1.13", "@tailwindcss/oxide-freebsd-x64": "4.1.13", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.13", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.13", "@tailwindcss/oxide-linux-arm64-musl": "4.1.13", "@tailwindcss/oxide-linux-x64-gnu": "4.1.13", "@tailwindcss/oxide-linux-x64-musl": "4.1.13", "@tailwindcss/oxide-wasm32-wasi": "4.1.13", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.13", "@tailwindcss/oxide-win32-x64-msvc": "4.1.13" } }, "sha512-CPgsM1IpGRa880sMbYmG1s4xhAy3xEt1QULgTJGQmZUeNgXFR7s1YxYygmJyBGtou4SyEosGAGEeYqY7R53bIA=="], + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.14", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.5.1" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.14", "@tailwindcss/oxide-darwin-arm64": "4.1.14", "@tailwindcss/oxide-darwin-x64": "4.1.14", "@tailwindcss/oxide-freebsd-x64": "4.1.14", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.14", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.14", "@tailwindcss/oxide-linux-arm64-musl": "4.1.14", "@tailwindcss/oxide-linux-x64-gnu": "4.1.14", "@tailwindcss/oxide-linux-x64-musl": "4.1.14", "@tailwindcss/oxide-wasm32-wasi": "4.1.14", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.14", "@tailwindcss/oxide-win32-x64-msvc": "4.1.14" } }, "sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw=="], - "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.13", "", { "os": "android", "cpu": "arm64" }, "sha512-BrpTrVYyejbgGo57yc8ieE+D6VT9GOgnNdmh5Sac6+t0m+v+sKQevpFVpwX3pBrM2qKrQwJ0c5eDbtjouY/+ew=="], + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.14", "", { "os": "android", "cpu": "arm64" }, "sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ=="], - "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.13", "", { "os": "darwin", "cpu": "arm64" }, "sha512-YP+Jksc4U0KHcu76UhRDHq9bx4qtBftp9ShK/7UGfq0wpaP96YVnnjFnj3ZFrUAjc5iECzODl/Ts0AN7ZPOANQ=="], + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.14", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA=="], - "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.13", "", { "os": "darwin", "cpu": "x64" }, "sha512-aAJ3bbwrn/PQHDxCto9sxwQfT30PzyYJFG0u/BWZGeVXi5Hx6uuUOQEI2Fa43qvmUjTRQNZnGqe9t0Zntexeuw=="], + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.14", "", { "os": "darwin", "cpu": "x64" }, "sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw=="], - "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.13", "", { "os": "freebsd", "cpu": "x64" }, "sha512-Wt8KvASHwSXhKE/dJLCCWcTSVmBj3xhVhp/aF3RpAhGeZ3sVo7+NTfgiN8Vey/Fi8prRClDs6/f0KXPDTZE6nQ=="], + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.14", "", { "os": "freebsd", "cpu": "x64" }, "sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw=="], - "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13", "", { "os": "linux", "cpu": "arm" }, "sha512-mbVbcAsW3Gkm2MGwA93eLtWrwajz91aXZCNSkGTx/R5eb6KpKD5q8Ueckkh9YNboU8RH7jiv+ol/I7ZyQ9H7Bw=="], + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.14", "", { "os": "linux", "cpu": "arm" }, "sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw=="], - "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ=="], + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.14", "", { "os": "linux", "cpu": "arm64" }, "sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w=="], - "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg=="], + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.14", "", { "os": "linux", "cpu": "arm64" }, "sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ=="], - "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.13", "", { "os": "linux", "cpu": "x64" }, "sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ=="], + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.14", "", { "os": "linux", "cpu": "x64" }, "sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg=="], - "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.13", "", { "os": "linux", "cpu": "x64" }, "sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ=="], + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.14", "", { "os": "linux", "cpu": "x64" }, "sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q=="], - "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.13", "", { "dependencies": { "@emnapi/core": "^1.4.5", "@emnapi/runtime": "^1.4.5", "@emnapi/wasi-threads": "^1.0.4", "@napi-rs/wasm-runtime": "^0.2.12", "@tybys/wasm-util": "^0.10.0", "tslib": "^2.8.0" }, "cpu": "none" }, "sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA=="], + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.14", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.0.5", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.4.0" }, "cpu": "none" }, "sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ=="], - "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.13", "", { "os": "win32", "cpu": "arm64" }, "sha512-dziTNeQXtoQ2KBXmrjCxsuPk3F3CQ/yb7ZNZNA+UkNTeiTGgfeh+gH5Pi7mRncVgcPD2xgHvkFCh/MhZWSgyQg=="], + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.14", "", { "os": "win32", "cpu": "arm64" }, "sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA=="], - "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.13", "", { "os": "win32", "cpu": "x64" }, "sha512-3+LKesjXydTkHk5zXX01b5KMzLV1xl2mcktBJkje7rhFUpUlYJy7IMOLqjIRQncLTa1WZZiFY/foAeB5nmaiTw=="], + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.14", "", { "os": "win32", "cpu": "x64" }, "sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA=="], - "@tailwindcss/postcss": ["@tailwindcss/postcss@4.1.13", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.1.13", "@tailwindcss/oxide": "4.1.13", "postcss": "^8.4.41", "tailwindcss": "4.1.13" } }, "sha512-HLgx6YSFKJT7rJqh9oJs/TkBFhxuMOfUKSBEPYwV+t78POOBsdQ7crhZLzwcH3T0UyUuOzU/GK5pk5eKr3wCiQ=="], + "@tailwindcss/postcss": ["@tailwindcss/postcss@4.1.14", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.1.14", "@tailwindcss/oxide": "4.1.14", "postcss": "^8.4.41", "tailwindcss": "4.1.14" } }, "sha512-BdMjIxy7HUNThK87C7BC8I1rE8BVUsfNQSI5siQ4JK3iIa3w0XyVvVL9SXLWO//CtYTcp1v7zci0fYwJOjB+Zg=="], "@ts-morph/common": ["@ts-morph/common@0.28.0", "", { "dependencies": { "minimatch": "^10.0.1", "path-browserify": "^1.0.1", "tinyglobby": "^0.2.14" } }, "sha512-4w6X/oFmvXcwux6y6ExfM/xSqMHw20cYwFJH+BlYrtGa6nwY9qGq8GXnUs1sVYeF2o/KT3S8hAH6sKBI3VOkBg=="], @@ -978,9 +978,9 @@ "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], - "@types/aws-lambda": ["@types/aws-lambda@8.10.152", "", {}, "sha512-soT/c2gYBnT5ygwiHPmd9a1bftj462NWVk2tKCc1PYHSIacB2UwbTS2zYG4jzag1mRDuzg/OjtxQjQ2NKRB6Rw=="], + "@types/aws-lambda": ["@types/aws-lambda@8.10.155", "", {}, "sha512-wd1XgoL0gy/ybo7WozUKQBd+IOgUkdfG6uUGI0fQOTEq06FBFdO7tmPDSxgjkFkl8GlfApvk5TvqZlAl0g+Lbg=="], - "@types/bun": ["@types/bun@1.2.22", "", { "dependencies": { "bun-types": "1.2.22" } }, "sha512-5A/KrKos2ZcN0c6ljRSOa1fYIyCKhZfIVYeuyb4snnvomnpFqC0tTsEkdqNxbAgExV384OETQ//WAjl3XbYqQA=="], + "@types/bun": ["@types/bun@1.2.23", "", { "dependencies": { "bun-types": "1.2.23" } }, "sha512-le8ueOY5b6VKYf19xT3McVbXqLqmxzPXHsQT/q9JHgikJ2X22wyTW3g3ohz2ZMnp7dod6aduIiq8A14Xyimm0A=="], "@types/chai": ["@types/chai@5.2.2", "", { "dependencies": { "@types/deep-eql": "*" } }, "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg=="], @@ -1028,7 +1028,7 @@ "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], - "@types/node": ["@types/node@24.5.2", "", { "dependencies": { "undici-types": "~7.12.0" } }, "sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ=="], + "@types/node": ["@types/node@24.6.2", "", { "dependencies": { "undici-types": "~7.13.0" } }, "sha512-d2L25Y4j+W3ZlNAeMKcy7yDsK425ibcAOO2t7aPTz6gNMH0z2GThtwENCDc0d/Pw9wgyRqE5Px1wkV7naz8ang=="], "@types/node-fetch": ["@types/node-fetch@2.6.13", "", { "dependencies": { "@types/node": "*", "form-data": "^4.0.4" } }, "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw=="], @@ -1036,33 +1036,33 @@ "@types/qrcode": ["@types/qrcode@1.5.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg=="], - "@types/react": ["@types/react@19.1.13", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ=="], + "@types/react": ["@types/react@19.2.0", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-1LOH8xovvsKsCBq1wnT4ntDUdCJKmnEakhsuoUSy6ExlHCkGP2hqnatagYTgFk6oeL0VU31u7SNjunPN+GchtA=="], - "@types/react-dom": ["@types/react-dom@19.1.9", "", { "peerDependencies": { "@types/react": "^19.0.0" } }, "sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ=="], + "@types/react-dom": ["@types/react-dom@19.2.0", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-brtBs0MnE9SMx7px208g39lRmC5uHZs96caOJfTjFcYSLHNamvaSMfJNagChVNkup2SdtOxKX1FDBkRSJe1ZAg=="], "@types/tinycolor2": ["@types/tinycolor2@1.4.6", "", {}, "sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw=="], "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.44.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.44.1", "@typescript-eslint/type-utils": "8.44.1", "@typescript-eslint/utils": "8.44.1", "@typescript-eslint/visitor-keys": "8.44.1", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.44.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-molgphGqOBT7t4YKCSkbasmu1tb1MgrZ2szGzHbclF7PNmOkSTQVHy+2jXOSnxvR3+Xe1yySHFZoqMpz3TfQsw=="], + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.45.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.45.0", "@typescript-eslint/type-utils": "8.45.0", "@typescript-eslint/utils": "8.45.0", "@typescript-eslint/visitor-keys": "8.45.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.45.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg=="], - "@typescript-eslint/parser": ["@typescript-eslint/parser@8.44.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.44.1", "@typescript-eslint/types": "8.44.1", "@typescript-eslint/typescript-estree": "8.44.1", "@typescript-eslint/visitor-keys": "8.44.1", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-EHrrEsyhOhxYt8MTg4zTF+DJMuNBzWwgvvOYNj/zm1vnaD/IC5zCXFehZv94Piqa2cRFfXrTFxIvO95L7Qc/cw=="], + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.45.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.45.0", "@typescript-eslint/types": "8.45.0", "@typescript-eslint/typescript-estree": "8.45.0", "@typescript-eslint/visitor-keys": "8.45.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ=="], - "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.44.1", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.44.1", "@typescript-eslint/types": "^8.44.1", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-ycSa60eGg8GWAkVsKV4E6Nz33h+HjTXbsDT4FILyL8Obk5/mx4tbvCNsLf9zret3ipSumAOG89UcCs/KRaKYrA=="], + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.45.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.45.0", "@typescript-eslint/types": "^8.45.0", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg=="], - "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.44.1", "", { "dependencies": { "@typescript-eslint/types": "8.44.1", "@typescript-eslint/visitor-keys": "8.44.1" } }, "sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg=="], + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.45.0", "", { "dependencies": { "@typescript-eslint/types": "8.45.0", "@typescript-eslint/visitor-keys": "8.45.0" } }, "sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA=="], - "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.44.1", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-B5OyACouEjuIvof3o86lRMvyDsFwZm+4fBOqFHccIctYgBjqR3qT39FBYGN87khcgf0ExpdCBeGKpKRhSFTjKQ=="], + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.45.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w=="], - "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.44.1", "", { "dependencies": { "@typescript-eslint/types": "8.44.1", "@typescript-eslint/typescript-estree": "8.44.1", "@typescript-eslint/utils": "8.44.1", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-KdEerZqHWXsRNKjF9NYswNISnFzXfXNDfPxoTh7tqohU/PRIbwTmsjGK6V9/RTYWau7NZvfo52lgVk+sJh0K3g=="], + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.45.0", "", { "dependencies": { "@typescript-eslint/types": "8.45.0", "@typescript-eslint/typescript-estree": "8.45.0", "@typescript-eslint/utils": "8.45.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A=="], - "@typescript-eslint/types": ["@typescript-eslint/types@8.44.1", "", {}, "sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ=="], + "@typescript-eslint/types": ["@typescript-eslint/types@8.45.0", "", {}, "sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA=="], - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.44.1", "", { "dependencies": { "@typescript-eslint/project-service": "8.44.1", "@typescript-eslint/tsconfig-utils": "8.44.1", "@typescript-eslint/types": "8.44.1", "@typescript-eslint/visitor-keys": "8.44.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-qnQJ+mVa7szevdEyvfItbO5Vo+GfZ4/GZWWDRRLjrxYPkhM+6zYB2vRYwCsoJLzqFCdZT4mEqyJoyzkunsZ96A=="], + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.45.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.45.0", "@typescript-eslint/tsconfig-utils": "8.45.0", "@typescript-eslint/types": "8.45.0", "@typescript-eslint/visitor-keys": "8.45.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA=="], - "@typescript-eslint/utils": ["@typescript-eslint/utils@8.44.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.44.1", "@typescript-eslint/types": "8.44.1", "@typescript-eslint/typescript-estree": "8.44.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-DpX5Fp6edTlocMCwA+mHY8Mra+pPjRZ0TfHkXI8QFelIKcbADQz1LUPNtzOFUriBB2UYqw4Pi9+xV4w9ZczHFg=="], + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.45.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.45.0", "@typescript-eslint/types": "8.45.0", "@typescript-eslint/typescript-estree": "8.45.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg=="], - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.44.1", "", { "dependencies": { "@typescript-eslint/types": "8.44.1", "eslint-visitor-keys": "^4.2.1" } }, "sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw=="], + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.45.0", "", { "dependencies": { "@typescript-eslint/types": "8.45.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag=="], "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], @@ -1144,7 +1144,7 @@ "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "ansis": ["ansis@4.1.0", "", {}, "sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w=="], + "ansis": ["ansis@4.2.0", "", {}, "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig=="], "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], @@ -1220,7 +1220,7 @@ "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], - "bun-types": ["bun-types@1.2.22", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-hwaAu8tct/Zn6Zft4U9BsZcXkYomzpHJX28ofvx7k0Zz2HNz54n1n+tDgxoWFGB4PcFvJXJQloPhaV2eP3Q6EA=="], + "bun-types": ["bun-types@1.2.23", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-R9f0hKAZXgFU3mlrA0YpE/fiDvwV0FT9rORApt2aQVWSuJDzZOyB5QLc0N/4HF57CS8IXJ6+L5E4W1bW6NS2Aw=="], "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], @@ -1242,7 +1242,7 @@ "camelcase": ["camelcase@5.3.1", "", {}, "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="], - "caniuse-lite": ["caniuse-lite@1.0.30001745", "", {}, "sha512-ywt6i8FzvdgrrrGbr1jZVObnVv6adj+0if2/omv9cmR2oiZs30zL4DIyaptKcbOrBdOIc74QTMoJvSE2QHh5UQ=="], + "caniuse-lite": ["caniuse-lite@1.0.30001747", "", {}, "sha512-mzFa2DGIhuc5490Nd/G31xN1pnBnYMadtkyTjefPI7wzypqgCEpeWu9bJr0OnDsyKrW75zA9ZAt7pbQFmwLsQg=="], "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], @@ -1436,7 +1436,7 @@ "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], - "dotenv": ["dotenv@17.2.2", "", {}, "sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q=="], + "dotenv": ["dotenv@17.2.3", "", {}, "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w=="], "download-stats": ["download-stats@0.3.4", "", { "dependencies": { "JSONStream": "^1.2.1", "lazy-cache": "^2.0.1", "moment": "^2.15.1" } }, "sha512-ic2BigbyUWx7/CBbsfGjf71zUNZB4edBGC3oRliSzsoNmvyVx3Ycfp1w3vp2Y78Ee0eIIkjIEO5KzW0zThDGaA=="], @@ -1500,7 +1500,7 @@ "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - "eslint": ["eslint@9.36.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.36.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ=="], + "eslint": ["eslint@9.37.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", "@eslint/config-helpers": "^0.4.0", "@eslint/core": "^0.16.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.37.0", "@eslint/plugin-kit": "^0.4.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig=="], "eslint-config-next": ["eslint-config-next@15.4.5", "", { "dependencies": { "@next/eslint-plugin-next": "15.4.5", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^5.0.0" }, "peerDependencies": { "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-IMijiXaZ43qFB+Gcpnb374ipTKD8JIyVNR+6VsifFQ/LHyx+A9wgcgSIhCX5PYSjwOoSYD5LtNHKlM5uc23eww=="], @@ -1572,7 +1572,7 @@ "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - "fast-equals": ["fast-equals@5.3.0", "", {}, "sha512-xwP+dG/in/nJelMOUEQBiIYeOoHKihWPB2sNZ8ZeDbZFoGb1OwTGMggGRgg6CRitNx7kmHgtIz2dOHDQ8Ap7Bw=="], + "fast-equals": ["fast-equals@5.3.2", "", {}, "sha512-6rxyATwPCkaFIL3JLqw8qXqMpIZ942pTX/tbQFkRsDGblS8tNGtlUauA/+mt6RUfqn/4MoEr+WDkYoIQbibWuQ=="], "fast-glob": ["fast-glob@3.3.1", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" } }, "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg=="], @@ -1640,6 +1640,8 @@ "functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="], + "generator-function": ["generator-function@2.0.1", "", {}, "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g=="], + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], "get-east-asian-width": ["get-east-asian-width@1.4.0", "", {}, "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="], @@ -1782,7 +1784,7 @@ "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - "is-generator-function": ["is-generator-function@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "get-proto": "^1.0.0", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ=="], + "is-generator-function": ["is-generator-function@1.1.2", "", { "dependencies": { "call-bound": "^1.0.4", "generator-function": "^2.0.0", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA=="], "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], @@ -1838,7 +1840,7 @@ "jackspeak": ["jackspeak@4.1.1", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" } }, "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ=="], - "jiti": ["jiti@2.6.0", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ=="], + "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], "js-tokens": ["js-tokens@9.0.1", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="], @@ -1900,7 +1902,7 @@ "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="], - "lint-staged": ["lint-staged@16.2.1", "", { "dependencies": { "commander": "^14.0.1", "listr2": "^9.0.4", "micromatch": "^4.0.8", "nano-spawn": "^1.0.3", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.8.1" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-KMeYmH9wKvHsXdUp+z6w7HN3fHKHXwT1pSTQTYxB9kI6ekK1rlL3kLZEoXZCppRPXFK9PFW/wfQctV7XUqMrPQ=="], + "lint-staged": ["lint-staged@16.2.3", "", { "dependencies": { "commander": "^14.0.1", "listr2": "^9.0.4", "micromatch": "^4.0.8", "nano-spawn": "^1.0.3", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.8.1" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-1OnJEESB9zZqsp61XHH2fvpS1es3hRCxMplF/AJUDa8Ho8VrscYDIuxGrj3m8KPXbcWZ8fT9XTMUhEQmOVKpKw=="], "listr2": ["listr2@9.0.4", "", { "dependencies": { "cli-truncate": "^5.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-1wd/kpAdKRLwv7/3OKC8zZ5U8e/fajCfWMxacUvB79S5nLrYGPtUI/8chMQhn3LQjsRVErTb9i1ECAwW0ZIHnQ=="], @@ -2056,7 +2058,7 @@ "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="], - "miniflare": ["miniflare@4.20250924.0", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "8.14.0", "acorn-walk": "8.3.2", "exit-hook": "2.2.1", "glob-to-regexp": "0.4.1", "sharp": "^0.33.5", "stoppable": "1.1.0", "undici": "7.14.0", "workerd": "1.20250924.0", "ws": "8.18.0", "youch": "4.1.0-beta.10", "zod": "3.22.3" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-eQuWHklTeYYOil7sPPWo7Wrw86I4oac1kGAYfYcjg5dqMgMAiPUHvUWXMlTvW8ON6q33Ew23AsGDirm+Bea9ig=="], + "miniflare": ["miniflare@4.20251001.0", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "8.14.0", "acorn-walk": "8.3.2", "exit-hook": "2.2.1", "glob-to-regexp": "0.4.1", "sharp": "^0.33.5", "stoppable": "1.1.0", "undici": "7.14.0", "workerd": "1.20251001.0", "ws": "8.18.0", "youch": "4.1.0-beta.10", "zod": "3.22.3" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-OHd31D2LT8JH+85nVXClV0Z18jxirCohzKNAcZs/fgt4mIkUDtidX3VqR3ovAM0jWooNxrFhB9NSs3iDbiJF7Q=="], "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], @@ -2124,7 +2126,7 @@ "number-flow": ["number-flow@0.5.8", "", { "dependencies": { "esm-env": "^1.1.4" } }, "sha512-FPr1DumWyGi5Nucoug14bC6xEz70A1TnhgSHhKyfqjgji2SOTz+iLJxKtv37N5JyJbteGYCm6NQ9p1O4KZ7iiA=="], - "nuqs": ["nuqs@2.6.0", "", { "dependencies": { "@standard-schema/spec": "1.0.0" }, "peerDependencies": { "@remix-run/react": ">=2", "@tanstack/react-router": "^1", "next": ">=14.2.0", "react": ">=18.2.0 || ^19.0.0-0", "react-router": "^6 || ^7", "react-router-dom": "^6 || ^7" }, "optionalPeers": ["@remix-run/react", "@tanstack/react-router", "next", "react-router", "react-router-dom"] }, "sha512-EvIKBvfJeyL8n6lxfebxoAbkHJutNsxmy1oo4noFUYNUESbnecxWxgnxXoa0/4fYiFwdEuyMQx1Z9rV0h4bnkg=="], + "nuqs": ["nuqs@2.7.0", "", { "dependencies": { "@standard-schema/spec": "1.0.0" }, "peerDependencies": { "@remix-run/react": ">=2", "@tanstack/react-router": "^1", "next": ">=14.2.0", "react": ">=18.2.0 || ^19.0.0-0", "react-router": "^6 || ^7", "react-router-dom": "^6 || ^7" }, "optionalPeers": ["@remix-run/react", "@tanstack/react-router", "next", "react-router", "react-router-dom"] }, "sha512-p6j6AuOVbnIlMSOlymKVDQtDkSCgjKxikwrqE9zThEOrP0UMfB/dwHuc6nKCuBPveoNghbh15zwoyTTv0XLp+A=="], "nypm": ["nypm@0.6.2", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.2", "pathe": "^2.0.3", "pkg-types": "^2.3.0", "tinyexec": "^1.0.1" }, "bin": { "nypm": "dist/cli.mjs" } }, "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g=="], @@ -2234,7 +2236,7 @@ "postcss-selector-parser": ["postcss-selector-parser@7.1.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA=="], - "posthog-js": ["posthog-js@1.268.5", "", { "dependencies": { "@posthog/core": "1.2.1", "core-js": "^3.38.1", "fflate": "^0.4.8", "preact": "^10.19.3", "web-vitals": "^4.2.4" }, "peerDependencies": { "@rrweb/types": "2.0.0-alpha.17", "rrweb-snapshot": "2.0.0-alpha.17" }, "optionalPeers": ["@rrweb/types", "rrweb-snapshot"] }, "sha512-IRhFBeCKkl4bapbxmLvWedKUOG7Fh9jJab718qm7ce8j66LWaPiX7mEi/iuoYLYRU3wD6mWFFiWmeXh6prczRg=="], + "posthog-js": ["posthog-js@1.270.1", "", { "dependencies": { "@posthog/core": "1.2.2", "core-js": "^3.38.1", "fflate": "^0.4.8", "preact": "^10.19.3", "web-vitals": "^4.2.4" }, "peerDependencies": { "@rrweb/types": "2.0.0-alpha.17", "rrweb-snapshot": "2.0.0-alpha.17" }, "optionalPeers": ["@rrweb/types", "rrweb-snapshot"] }, "sha512-HP7+vr19gE8Qx7n88ElJxkI/BwL8S5lH8D1OKp91YnAlcJuc0Vze0M9TMmFAgC2oUVGrvSgH5++sNg8qGlm9tg=="], "preact": ["preact@10.27.2", "", {}, "sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg=="], @@ -2274,9 +2276,9 @@ "rc9": ["rc9@2.1.2", "", { "dependencies": { "defu": "^6.1.4", "destr": "^2.0.3" } }, "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg=="], - "react": ["react@19.1.1", "", {}, "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ=="], + "react": ["react@19.2.0", "", {}, "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ=="], - "react-dom": ["react-dom@19.1.1", "", { "dependencies": { "scheduler": "^0.26.0" }, "peerDependencies": { "react": "^19.1.1" } }, "sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw=="], + "react-dom": ["react-dom@19.2.0", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.0" } }, "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ=="], "react-is": ["react-is@18.3.1", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="], @@ -2350,11 +2352,11 @@ "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], - "rolldown": ["rolldown@1.0.0-beta.40", "", { "dependencies": { "@oxc-project/types": "=0.92.0", "@rolldown/pluginutils": "1.0.0-beta.40", "ansis": "^4.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-beta.40", "@rolldown/binding-darwin-arm64": "1.0.0-beta.40", "@rolldown/binding-darwin-x64": "1.0.0-beta.40", "@rolldown/binding-freebsd-x64": "1.0.0-beta.40", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.40", "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.40", "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.40", "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.40", "@rolldown/binding-linux-x64-musl": "1.0.0-beta.40", "@rolldown/binding-openharmony-arm64": "1.0.0-beta.40", "@rolldown/binding-wasm32-wasi": "1.0.0-beta.40", "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.40", "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.40", "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.40" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-VqEHbKpOgTPmQrZ4fVn4eshDQS/6g/fRpNE7cFSJY+eQLDZn4B9X61J6L+hnlt1u2uRI+pF7r1USs6S5fuWCvw=="], + "rolldown": ["rolldown@1.0.0-beta.41", "", { "dependencies": { "@oxc-project/types": "=0.93.0", "@rolldown/pluginutils": "1.0.0-beta.41", "ansis": "=4.2.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-beta.41", "@rolldown/binding-darwin-arm64": "1.0.0-beta.41", "@rolldown/binding-darwin-x64": "1.0.0-beta.41", "@rolldown/binding-freebsd-x64": "1.0.0-beta.41", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.41", "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.41", "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.41", "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.41", "@rolldown/binding-linux-x64-musl": "1.0.0-beta.41", "@rolldown/binding-openharmony-arm64": "1.0.0-beta.41", "@rolldown/binding-wasm32-wasi": "1.0.0-beta.41", "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.41", "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.41", "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.41" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-U+NPR0Bkg3wm61dteD2L4nAM1U9dtaqVrpDXwC36IKRHpEO/Ubpid4Nijpa2imPchcVNHfxVFwSSMJdwdGFUbg=="], - "rolldown-plugin-dts": ["rolldown-plugin-dts@0.16.8", "", { "dependencies": { "@babel/generator": "^7.28.3", "@babel/parser": "^7.28.4", "@babel/types": "^7.28.4", "ast-kit": "^2.1.2", "birpc": "^2.5.0", "debug": "^4.4.3", "dts-resolver": "^2.1.2", "get-tsconfig": "^4.10.1", "magic-string": "^0.30.19" }, "peerDependencies": { "@ts-macro/tsc": "^0.3.6", "@typescript/native-preview": ">=7.0.0-dev.20250601.1", "rolldown": "^1.0.0-beta.9", "typescript": "^5.0.0", "vue-tsc": "~3.0.3" }, "optionalPeers": ["@ts-macro/tsc", "@typescript/native-preview", "typescript", "vue-tsc"] }, "sha512-lsx7yrYA0ZXfARLEcPKgHIw8DX4fLQOhmMChgZbn5eFhqibY2Bav1+/Yn5WNm+ATtw+cefXYgEYO/7njeHsgAA=="], + "rolldown-plugin-dts": ["rolldown-plugin-dts@0.16.11", "", { "dependencies": { "@babel/generator": "^7.28.3", "@babel/parser": "^7.28.4", "@babel/types": "^7.28.4", "ast-kit": "^2.1.2", "birpc": "^2.6.1", "debug": "^4.4.3", "dts-resolver": "^2.1.2", "get-tsconfig": "^4.10.1", "magic-string": "^0.30.19" }, "peerDependencies": { "@ts-macro/tsc": "^0.3.6", "@typescript/native-preview": ">=7.0.0-dev.20250601.1", "rolldown": "^1.0.0-beta.9", "typescript": "^5.0.0", "vue-tsc": "~3.1.0" }, "optionalPeers": ["@ts-macro/tsc", "@typescript/native-preview", "typescript", "vue-tsc"] }, "sha512-9IQDaPvPqTx3RjG2eQCK5GYZITo203BxKunGI80AGYicu1ySFTUyugicAaTZWRzFWh9DSnzkgNeMNbDWBbSs0w=="], - "rollup": ["rollup@4.52.2", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.52.2", "@rollup/rollup-android-arm64": "4.52.2", "@rollup/rollup-darwin-arm64": "4.52.2", "@rollup/rollup-darwin-x64": "4.52.2", "@rollup/rollup-freebsd-arm64": "4.52.2", "@rollup/rollup-freebsd-x64": "4.52.2", "@rollup/rollup-linux-arm-gnueabihf": "4.52.2", "@rollup/rollup-linux-arm-musleabihf": "4.52.2", "@rollup/rollup-linux-arm64-gnu": "4.52.2", "@rollup/rollup-linux-arm64-musl": "4.52.2", "@rollup/rollup-linux-loong64-gnu": "4.52.2", "@rollup/rollup-linux-ppc64-gnu": "4.52.2", "@rollup/rollup-linux-riscv64-gnu": "4.52.2", "@rollup/rollup-linux-riscv64-musl": "4.52.2", "@rollup/rollup-linux-s390x-gnu": "4.52.2", "@rollup/rollup-linux-x64-gnu": "4.52.2", "@rollup/rollup-linux-x64-musl": "4.52.2", "@rollup/rollup-openharmony-arm64": "4.52.2", "@rollup/rollup-win32-arm64-msvc": "4.52.2", "@rollup/rollup-win32-ia32-msvc": "4.52.2", "@rollup/rollup-win32-x64-gnu": "4.52.2", "@rollup/rollup-win32-x64-msvc": "4.52.2", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-I25/2QgoROE1vYV+NQ1En9T9UFB9Cmfm2CJ83zZOlaDpvz29wGQSZXWKw7MiNXau7wYgB/T9fVIdIuEQ+KbiiA=="], + "rollup": ["rollup@4.52.4", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.52.4", "@rollup/rollup-android-arm64": "4.52.4", "@rollup/rollup-darwin-arm64": "4.52.4", "@rollup/rollup-darwin-x64": "4.52.4", "@rollup/rollup-freebsd-arm64": "4.52.4", "@rollup/rollup-freebsd-x64": "4.52.4", "@rollup/rollup-linux-arm-gnueabihf": "4.52.4", "@rollup/rollup-linux-arm-musleabihf": "4.52.4", "@rollup/rollup-linux-arm64-gnu": "4.52.4", "@rollup/rollup-linux-arm64-musl": "4.52.4", "@rollup/rollup-linux-loong64-gnu": "4.52.4", "@rollup/rollup-linux-ppc64-gnu": "4.52.4", "@rollup/rollup-linux-riscv64-gnu": "4.52.4", "@rollup/rollup-linux-riscv64-musl": "4.52.4", "@rollup/rollup-linux-s390x-gnu": "4.52.4", "@rollup/rollup-linux-x64-gnu": "4.52.4", "@rollup/rollup-linux-x64-musl": "4.52.4", "@rollup/rollup-openharmony-arm64": "4.52.4", "@rollup/rollup-win32-arm64-msvc": "4.52.4", "@rollup/rollup-win32-ia32-msvc": "4.52.4", "@rollup/rollup-win32-x64-gnu": "4.52.4", "@rollup/rollup-win32-x64-msvc": "4.52.4", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ=="], "router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="], @@ -2374,7 +2376,7 @@ "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], - "scheduler": ["scheduler@0.26.0", "", {}, "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA=="], + "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], "scroll-into-view-if-needed": ["scroll-into-view-if-needed@3.1.0", "", { "dependencies": { "compute-scroll-into-view": "^3.0.2" } }, "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ=="], @@ -2482,7 +2484,7 @@ "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], - "strip-literal": ["strip-literal@3.0.0", "", { "dependencies": { "js-tokens": "^9.0.1" } }, "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA=="], + "strip-literal": ["strip-literal@3.1.0", "", { "dependencies": { "js-tokens": "^9.0.1" } }, "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg=="], "strnum": ["strnum@1.1.2", "", {}, "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA=="], @@ -2502,9 +2504,9 @@ "tailwind-merge": ["tailwind-merge@3.3.1", "", {}, "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g=="], - "tailwindcss": ["tailwindcss@4.1.13", "", {}, "sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w=="], + "tailwindcss": ["tailwindcss@4.1.14", "", {}, "sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA=="], - "tapable": ["tapable@2.2.3", "", {}, "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg=="], + "tapable": ["tapable@2.3.0", "", {}, "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="], "tar": ["tar@7.5.1", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g=="], @@ -2558,7 +2560,7 @@ "tsconfig-paths": ["tsconfig-paths@3.15.0", "", { "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg=="], - "tsdown": ["tsdown@0.15.4", "", { "dependencies": { "ansis": "^4.1.0", "cac": "^6.7.14", "chokidar": "^4.0.3", "debug": "^4.4.3", "diff": "^8.0.2", "empathic": "^2.0.0", "hookable": "^5.5.3", "rolldown": "latest", "rolldown-plugin-dts": "^0.16.7", "semver": "^7.7.2", "tinyexec": "^1.0.1", "tinyglobby": "^0.2.15", "tree-kill": "^1.2.2", "unconfig": "^7.3.3" }, "peerDependencies": { "@arethetypeswrong/core": "^0.18.1", "publint": "^0.3.0", "typescript": "^5.0.0", "unplugin-lightningcss": "^0.4.0", "unplugin-unused": "^0.5.0" }, "optionalPeers": ["@arethetypeswrong/core", "publint", "typescript", "unplugin-lightningcss", "unplugin-unused"], "bin": { "tsdown": "dist/run.mjs" } }, "sha512-aoFE8disBg8BgYcOgradr/5Yd+QDBRQ+6z8mXo/Ib7+GIaJwJsI5l/ppve05CZGcSDqwdhF4gdrA0HPHBtbBqA=="], + "tsdown": ["tsdown@0.15.6", "", { "dependencies": { "ansis": "^4.1.0", "cac": "^6.7.14", "chokidar": "^4.0.3", "debug": "^4.4.3", "diff": "^8.0.2", "empathic": "^2.0.0", "hookable": "^5.5.3", "rolldown": "latest", "rolldown-plugin-dts": "^0.16.8", "semver": "^7.7.2", "tinyexec": "^1.0.1", "tinyglobby": "^0.2.15", "tree-kill": "^1.2.2", "unconfig": "^7.3.3" }, "peerDependencies": { "@arethetypeswrong/core": "^0.18.1", "publint": "^0.3.0", "typescript": "^5.0.0", "unplugin-lightningcss": "^0.4.0", "unplugin-unused": "^0.5.0" }, "optionalPeers": ["@arethetypeswrong/core", "publint", "typescript", "unplugin-lightningcss", "unplugin-unused"], "bin": { "tsdown": "dist/run.mjs" } }, "sha512-W6++O3JeV9gm3JY6P/vLiC7zzTcJbZhQxXb+p3AvRMpDOPBIg82yXULyZCcwjsihY/bFG+Qw37HkezZbP7fzUg=="], "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -2592,7 +2594,7 @@ "typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="], - "typescript": ["typescript@5.9.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A=="], + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], "ufo": ["ufo@1.6.1", "", {}, "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA=="], @@ -2604,7 +2606,7 @@ "undici": ["undici@7.16.0", "", {}, "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g=="], - "undici-types": ["undici-types@7.12.0", "", {}, "sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ=="], + "undici-types": ["undici-types@7.13.0", "", {}, "sha512-Ov2Rr9Sx+fRgagJ5AX0qvItZG/JKKoBRAVITs1zk7IqZGTJUwgUr7qoYBpWwakpWilTZFM98rG/AFRocu10iIQ=="], "unenv": ["unenv@2.0.0-rc.21", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A=="], @@ -2642,7 +2644,7 @@ "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=="], - "use-sync-external-store": ["use-sync-external-store@1.5.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A=="], + "use-sync-external-store": ["use-sync-external-store@1.6.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="], "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], @@ -2658,7 +2660,7 @@ "victory-vendor": ["victory-vendor@36.9.2", "", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ=="], - "vite": ["vite@7.1.7", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA=="], + "vite": ["vite@7.1.9", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4nVGliEpxmhCL8DslSAUdxlB6+SMrhB0a1v5ijlh1xB1nEPuy1mxaHxysVucLHuWryAxLWg6a5ei+U4TLn/rFg=="], "vite-node": ["vite-node@3.2.4", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.1", "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg=="], @@ -2696,9 +2698,9 @@ "wordwrap": ["wordwrap@1.0.0", "", {}, "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="], - "workerd": ["workerd@1.20250924.0", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20250924.0", "@cloudflare/workerd-darwin-arm64": "1.20250924.0", "@cloudflare/workerd-linux-64": "1.20250924.0", "@cloudflare/workerd-linux-arm64": "1.20250924.0", "@cloudflare/workerd-windows-64": "1.20250924.0" }, "bin": { "workerd": "bin/workerd" } }, "sha512-ovO2vwRCcMOlOm3bNwQQrVb8KDcewE/3rjfbZAYSF535BQQDUZ9dE1kyGBYlGx4W5udH3kqmOr+0YqTBLlycyA=="], + "workerd": ["workerd@1.20251001.0", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20251001.0", "@cloudflare/workerd-darwin-arm64": "1.20251001.0", "@cloudflare/workerd-linux-64": "1.20251001.0", "@cloudflare/workerd-linux-arm64": "1.20251001.0", "@cloudflare/workerd-windows-64": "1.20251001.0" }, "bin": { "workerd": "bin/workerd" } }, "sha512-oT/K4YWNhmwpVmGeaHNmF7mLRfgjszlVr7lJtpS4jx5khmxmMzWZEEQRrJEpgzeHP6DOq9qWLPNT0bjMK7TchQ=="], - "wrangler": ["wrangler@4.40.1", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.4.0", "@cloudflare/unenv-preset": "2.7.4", "blake3-wasm": "2.1.5", "esbuild": "0.25.4", "miniflare": "4.20250924.0", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.21", "workerd": "1.20250924.0" }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20250924.0" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-XQEHOW6g1zW2xnBq1dmhDbEiVBbPGh7mX1tQAUMqKETa61XXvxHCJSzVI3is5xuo9HzZ8ITzg4VnhB/91cg9DQ=="], + "wrangler": ["wrangler@4.42.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.4.0", "@cloudflare/unenv-preset": "2.7.6", "blake3-wasm": "2.1.5", "esbuild": "0.25.4", "miniflare": "4.20251001.0", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.21", "workerd": "1.20251001.0" }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20251001.0" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-OZXiUSfGD66OVkncDbjZtqrsH6bWPRQMYc6RmMbkzYm/lEvJ8lvARKcqDgEyq8zDAgJAivlMQLyPtKQoVjQ/4g=="], "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], @@ -2734,11 +2736,11 @@ "@aws-crypto/crc32/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], - "@aws-crypto/crc32/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-crypto/crc32/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], "@aws-crypto/crc32c/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], - "@aws-crypto/crc32c/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-crypto/crc32c/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], "@aws-crypto/ie11-detection/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], @@ -2746,19 +2748,19 @@ "@aws-crypto/sha1-browser/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], - "@aws-crypto/sha1-browser/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-crypto/sha1-browser/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-crypto/sha256-browser/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-crypto/sha256-browser/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], "@aws-crypto/sha256-browser/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], - "@aws-crypto/sha256-js/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-crypto/sha256-js/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], "@aws-crypto/sha256-js/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], "@aws-crypto/supports-web-crypto/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], - "@aws-crypto/util/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-crypto/util/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], "@aws-crypto/util/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], @@ -2766,469 +2768,469 @@ "@aws-sdk/client-dynamodb/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], - "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.896.0", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.896.0", "@aws-sdk/credential-provider-http": "3.896.0", "@aws-sdk/credential-provider-ini": "3.896.0", "@aws-sdk/credential-provider-process": "3.896.0", "@aws-sdk/credential-provider-sso": "3.896.0", "@aws-sdk/credential-provider-web-identity": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/credential-provider-imds": "^4.1.2", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-J0Jm+56MNngk1PIyqoJFf5FC2fjA4CYXlqODqNRDtid7yk7HB9W3UTtvxofmii5KJOLcHGNPdGnHWKkUc+xYgw=="], + "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.901.0", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.901.0", "@aws-sdk/credential-provider-http": "3.901.0", "@aws-sdk/credential-provider-ini": "3.901.0", "@aws-sdk/credential-provider-process": "3.901.0", "@aws-sdk/credential-provider-sso": "3.901.0", "@aws-sdk/credential-provider-web-identity": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/credential-provider-imds": "^4.2.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-dPuFzMF7L1s/lQyT3wDxqLe82PyTH+5o1jdfseTEln64LJMl0ZMWaKX/C1UFNDxaTd35Cgt1bDbjjAWHMiKSFQ=="], - "@aws-sdk/client-dynamodb/@aws-sdk/middleware-host-header": ["@aws-sdk/middleware-host-header@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-qL5xYRt80ahDfj9nDYLhpCNkDinEXvjLe/Qen/Y/u12+djrR2MB4DRa6mzBCkLkdXDtf0WAoW2EZsNCfGrmOEQ=="], + "@aws-sdk/client-dynamodb/@aws-sdk/middleware-host-header": ["@aws-sdk/middleware-host-header@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-yWX7GvRmqBtbNnUW7qbre3GvZmyYwU0WHefpZzDTYDoNgatuYq6LgUIQ+z5C04/kCRoFkAFrHag8a3BXqFzq5A=="], - "@aws-sdk/client-dynamodb/@aws-sdk/middleware-logger": ["@aws-sdk/middleware-logger@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ZqzMecjju5zkBquSIfVfCORI/3Mge21nUY4nWaGQy+NUXehqCGG4W7AiVpiHGOcY2cGJa7xeEkYcr2E2U9U0AA=="], + "@aws-sdk/client-dynamodb/@aws-sdk/middleware-logger": ["@aws-sdk/middleware-logger@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-UoHebjE7el/tfRo8/CQTj91oNUm+5Heus5/a4ECdmWaSCHCS/hXTsU3PTTHAY67oAQR8wBLFPfp3mMvXjB+L2A=="], - "@aws-sdk/client-dynamodb/@aws-sdk/middleware-recursion-detection": ["@aws-sdk/middleware-recursion-detection@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@aws/lambda-invoke-store": "^0.0.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-H7Zotd9zUHQAr/wr3bcWHULYhEeoQrF54artgsoUGIf/9emv6LzY89QUccKIxYd6oHKNTrTyXm9F0ZZrzXNxlg=="], + "@aws-sdk/client-dynamodb/@aws-sdk/middleware-recursion-detection": ["@aws-sdk/middleware-recursion-detection@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@aws/lambda-invoke-store": "^0.0.1", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-Wd2t8qa/4OL0v/oDpCHHYkgsXJr8/ttCxrvCKAt0H1zZe2LlRhY9gpDVKqdertfHrHDj786fOvEQA28G1L75Dg=="], - "@aws-sdk/client-dynamodb/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@smithy/core": "^3.12.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-so/3tZH34YIeqG/QJgn5ZinnmHRdXV1ehsj4wVUrezL/dVW86jfwIkQIwpw8roOC657UoUf91c9FDhCxs3J5aQ=="], + "@aws-sdk/client-dynamodb/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@smithy/core": "^3.14.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-Zby4F03fvD9xAgXGPywyk4bC1jCbnyubMEYChLYohD+x20ULQCf+AimF/Btn7YL+hBpzh1+RmqmvZcx+RgwgNQ=="], - "@aws-sdk/client-dynamodb/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/client-dynamodb/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/client-dynamodb/@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.895.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-endpoints": "^3.1.2", "tslib": "^2.6.2" } }, "sha512-MhxBvWbwxmKknuggO2NeMwOVkHOYL98pZ+1ZRI5YwckoCL3AvISMnPJgfN60ww6AIXHGpkp+HhpFdKOe8RHSEg=="], + "@aws-sdk/client-dynamodb/@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "tslib": "^2.6.2" } }, "sha512-5nZP3hGA8FHEtKvEQf4Aww5QZOkjLW1Z+NixSd+0XKfHvA39Ah5sZboScjLx0C9kti/K3OGW1RCx5K9Zc3bZqg=="], - "@aws-sdk/client-dynamodb/@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-PE9NtbDBW6Kgl1bG6A5fF3EPo168tnkj8TgMcT0sg4xYBWsBpq0bpJZRh+Jm5Bkwiw9IgTCLjEU7mR6xWaMB9w=="], + "@aws-sdk/client-dynamodb/@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-Ntb6V/WFI21Ed4PDgL/8NSfoZQQf9xzrwNgiwvnxgAl/KvAvRBgQtqj5gHsDX8Nj2YmJuVoHfH9BGjL9VQ4WNg=="], - "@aws-sdk/client-dynamodb/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.896.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/node-config-provider": "^4.2.2", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-jegizucAwoxyBddKl0kRGNEgRHcfGuMeyhP1Nf+wIUmHz/9CxobIajqcVk/KRNLdZY5mSn7YG2VtP3z0BcBb0w=="], + "@aws-sdk/client-dynamodb/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.901.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-l59KQP5TY7vPVUfEURc7P5BJKuNg1RSsAKBQW7LHLECXjLqDUbo2SMLrexLBEoArSt6E8QOrIN0C8z/0Xk0jYw=="], - "@aws-sdk/client-dynamodb/@smithy/config-resolver": ["@smithy/config-resolver@4.2.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/types": "^4.5.0", "@smithy/util-config-provider": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-IT6MatgBWagLybZl1xQcURXRICvqz1z3APSCAI9IqdvfCkrA7RaQIEfgC6G/KvfxnDfQUDqFV+ZlixcuFznGBQ=="], + "@aws-sdk/client-dynamodb/@smithy/config-resolver": ["@smithy/config-resolver@4.3.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-config-provider": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-9oH+n8AVNiLPK/iK/agOsoWfrKZ3FGP3502tkksd6SRsKMYiu7AFX0YXo6YBADdsAj7C+G/aLKdsafIJHxuCkQ=="], - "@aws-sdk/client-dynamodb/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.2.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng=="], + "@aws-sdk/client-dynamodb/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw=="], - "@aws-sdk/client-dynamodb/@smithy/hash-node": ["@smithy/hash-node@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-H9DIU9WBLhYrvPs9v4sYvnZ1PiAI0oc8CgNQUJ1rpN3pP7QADbTOUjchI2FB764Ub0DstH5xbTqcMJu1pnVqxA=="], + "@aws-sdk/client-dynamodb/@smithy/hash-node": ["@smithy/hash-node@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-ugv93gOhZGysTctZh9qdgng8B+xO0cj+zN0qAZ+Sgh7qTQGPOJbMdIuyP89KNfUyfAqFSNh5tMvC+h2uCpmTtA=="], - "@aws-sdk/client-dynamodb/@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-1AqLyFlfrrDkyES8uhINRlJXmHA2FkG+3DY8X+rmLSqmFwk3DJnvhyGzyByPyewh2jbmV+TYQBEfngQax8IFGg=="], + "@aws-sdk/client-dynamodb/@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-ZmK5X5fUPAbtvRcUPtk28aqIClVhbfcmfoS4M7UQBTnDdrNxhsrxYVv0ZEl5NaPSyExsPWqL4GsPlRvtlwg+2A=="], - "@aws-sdk/client-dynamodb/@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-9wlfBBgTsRvC2JxLJxv4xDGNBrZuio3AgSl0lSFX7fneW2cGskXTYpFxCdRYD2+5yzmsiTuaAJD1Wp7gWt9y9w=="], + "@aws-sdk/client-dynamodb/@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6ZAnwrXFecrA4kIDOcz6aLBhU5ih2is2NdcZtobBDSdSHtE9a+MThB5uqyK4XXesdOCvOcbCm2IGB95birTSOQ=="], - "@aws-sdk/client-dynamodb/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.2.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg=="], + "@aws-sdk/client-dynamodb/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.3.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-jFVjuQeV8TkxaRlcCNg0GFVgg98tscsmIrIwRFeC74TIUyLE3jmY9xgc1WXrPQYRjQNK3aRoaIk6fhFRGOIoGw=="], - "@aws-sdk/client-dynamodb/@smithy/middleware-retry": ["@smithy/middleware-retry@4.3.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/protocol-http": "^5.2.1", "@smithy/service-error-classification": "^4.1.2", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/uuid": "^1.0.0", "tslib": "^2.6.2" } }, "sha512-qhEX9745fAxZvtLM4bQJAVC98elWjiMO2OiHl1s6p7hUzS4QfZO1gXUYNwEK8m0J6NoCD5W52ggWxbIDHI0XSg=="], + "@aws-sdk/client-dynamodb/@smithy/middleware-retry": ["@smithy/middleware-retry@4.4.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/service-error-classification": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" } }, "sha512-yaVBR0vQnOnzex45zZ8ZrPzUnX73eUC8kVFaAAbn04+6V7lPtxn56vZEBBAhgS/eqD6Zm86o6sJs6FuQVoX5qg=="], - "@aws-sdk/client-dynamodb/@smithy/middleware-serde": ["@smithy/middleware-serde@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg=="], + "@aws-sdk/client-dynamodb/@smithy/middleware-serde": ["@smithy/middleware-serde@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rpTQ7D65/EAbC6VydXlxjvbifTf4IH+sADKg6JmAvhkflJO2NvDeyU9qsWUNBelJiQFcXKejUHWRSdmpJmEmiw=="], - "@aws-sdk/client-dynamodb/@smithy/middleware-stack": ["@smithy/middleware-stack@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A=="], + "@aws-sdk/client-dynamodb/@smithy/middleware-stack": ["@smithy/middleware-stack@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-G5CJ//eqRd9OARrQu9MK1H8fNm2sMtqFh6j8/rPozhEL+Dokpvi1Og+aCixTuwDAGZUkJPk6hJT5jchbk/WCyg=="], - "@aws-sdk/client-dynamodb/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@aws-sdk/client-dynamodb/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@aws-sdk/client-dynamodb/@smithy/node-http-handler": ["@smithy/node-http-handler@4.2.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw=="], + "@aws-sdk/client-dynamodb/@smithy/node-http-handler": ["@smithy/node-http-handler@4.3.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q=="], - "@aws-sdk/client-dynamodb/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/client-dynamodb/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/client-dynamodb/@smithy/smithy-client": ["@smithy/smithy-client@4.6.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-stack": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-stream": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg=="], + "@aws-sdk/client-dynamodb/@smithy/smithy-client": ["@smithy/smithy-client@4.7.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-stream": "^4.4.0", "tslib": "^2.6.2" } }, "sha512-3BDx/aCCPf+kkinYf5QQhdQ9UAGihgOVqI3QO5xQfSaIWvUE4KYLtiGRWsNe1SR7ijXC0QEPqofVp5Sb0zC8xQ=="], - "@aws-sdk/client-dynamodb/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/client-dynamodb/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/client-dynamodb/@smithy/url-parser": ["@smithy/url-parser@4.1.1", "", { "dependencies": { "@smithy/querystring-parser": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg=="], + "@aws-sdk/client-dynamodb/@smithy/url-parser": ["@smithy/url-parser@4.2.0", "", { "dependencies": { "@smithy/querystring-parser": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-AlBmD6Idav2ugmoAL6UtR6ItS7jU5h5RNqLMZC7QrLCoITA9NzIN3nx9GWi8g4z1pfWh2r9r96SX/jHiNwPJ9A=="], - "@aws-sdk/client-dynamodb/@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="], + "@aws-sdk/client-dynamodb/@smithy/util-base64": ["@smithy/util-base64@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA=="], - "@aws-sdk/client-dynamodb/@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ=="], + "@aws-sdk/client-dynamodb/@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg=="], - "@aws-sdk/client-dynamodb/@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-BOI5dYjheZdgR9XiEM3HJcEMCXSoqbzu7CzIgYrx0UtmvtC3tC2iDGpJLsSRFffUpy8ymsg2ARMP5fR8mtuUQQ=="], + "@aws-sdk/client-dynamodb/@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-U8q1WsSZFjXijlD7a4wsDQOvOwV+72iHSfq1q7VD+V75xP/pdtm0WIGuaFJ3gcADDOKj2MIBn4+zisi140HEnQ=="], - "@aws-sdk/client-dynamodb/@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.1.4", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-mLDJ1s4eA3vwOGaQOEPlg5LB4LdZUUMpB5UMOMofeGhWqiS7WR7dTpLiNi9zVn+YziKUd3Af5NLfxDs7NJqmIw=="], + "@aws-sdk/client-dynamodb/@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.2.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-qzHp7ZDk1Ba4LDwQVCNp90xPGqSu7kmL7y5toBpccuhi3AH7dcVBIT/pUxYcInK4jOy6FikrcTGq5wxcka8UaQ=="], - "@aws-sdk/client-dynamodb/@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.1.4", "", { "dependencies": { "@smithy/config-resolver": "^4.2.2", "@smithy/credential-provider-imds": "^4.1.2", "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-pjX2iMTcOASaSanAd7bu6i3fcMMezr3NTr8Rh64etB0uHRZi+Aw86DoCxPESjY4UTIuA06hhqtTtw95o//imYA=="], + "@aws-sdk/client-dynamodb/@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.2.0", "", { "dependencies": { "@smithy/config-resolver": "^4.3.0", "@smithy/credential-provider-imds": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FxUHS3WXgx3bTWR6yQHNHHkQHZm/XKIi/CchTnKvBulN6obWpcbzJ6lDToXn+Wp0QlVKd7uYAz2/CTw1j7m+Kg=="], - "@aws-sdk/client-dynamodb/@smithy/util-retry": ["@smithy/util-retry@4.1.2", "", { "dependencies": { "@smithy/service-error-classification": "^4.1.2", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-NCgr1d0/EdeP6U5PSZ9Uv5SMR5XRRYoVr1kRVtKZxWL3tixEL3UatrPIMFZSKwHlCcp2zPLDvMubVDULRqeunA=="], + "@aws-sdk/client-dynamodb/@smithy/util-retry": ["@smithy/util-retry@4.2.0", "", { "dependencies": { "@smithy/service-error-classification": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BWSiuGbwRnEE2SFfaAZEX0TqaxtvtSYPM/J73PFVm+A29Fg1HTPiYFb8TmX1DXp4hgcdyJcNQmprfd5foeORsg=="], - "@aws-sdk/client-dynamodb/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@aws-sdk/client-dynamodb/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - "@aws-sdk/client-dynamodb/@smithy/util-waiter": ["@smithy/util-waiter@4.1.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-PJBmyayrlfxM7nbqjomF4YcT1sApQwZio0NHSsT0EzhJqljRmvhzqZua43TyEs80nJk2Cn2FGPg/N8phH6KeCQ=="], + "@aws-sdk/client-dynamodb/@smithy/util-waiter": ["@smithy/util-waiter@4.2.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-0Z+nxUU4/4T+SL8BCNN4ztKdQjToNvUYmkF1kXO5T7Yz3Gafzh0HeIG6mrkN8Fz3gn9hSyxuAT+6h4vM+iQSBQ=="], "@aws-sdk/client-lambda/@aws-crypto/sha256-browser": ["@aws-crypto/sha256-browser@5.2.0", "", { "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@aws-crypto/supports-web-crypto": "^5.2.0", "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw=="], "@aws-sdk/client-lambda/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], - "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.896.0", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.896.0", "@aws-sdk/credential-provider-http": "3.896.0", "@aws-sdk/credential-provider-ini": "3.896.0", "@aws-sdk/credential-provider-process": "3.896.0", "@aws-sdk/credential-provider-sso": "3.896.0", "@aws-sdk/credential-provider-web-identity": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/credential-provider-imds": "^4.1.2", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-J0Jm+56MNngk1PIyqoJFf5FC2fjA4CYXlqODqNRDtid7yk7HB9W3UTtvxofmii5KJOLcHGNPdGnHWKkUc+xYgw=="], + "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.901.0", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.901.0", "@aws-sdk/credential-provider-http": "3.901.0", "@aws-sdk/credential-provider-ini": "3.901.0", "@aws-sdk/credential-provider-process": "3.901.0", "@aws-sdk/credential-provider-sso": "3.901.0", "@aws-sdk/credential-provider-web-identity": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/credential-provider-imds": "^4.2.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-dPuFzMF7L1s/lQyT3wDxqLe82PyTH+5o1jdfseTEln64LJMl0ZMWaKX/C1UFNDxaTd35Cgt1bDbjjAWHMiKSFQ=="], - "@aws-sdk/client-lambda/@aws-sdk/middleware-host-header": ["@aws-sdk/middleware-host-header@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-qL5xYRt80ahDfj9nDYLhpCNkDinEXvjLe/Qen/Y/u12+djrR2MB4DRa6mzBCkLkdXDtf0WAoW2EZsNCfGrmOEQ=="], + "@aws-sdk/client-lambda/@aws-sdk/middleware-host-header": ["@aws-sdk/middleware-host-header@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-yWX7GvRmqBtbNnUW7qbre3GvZmyYwU0WHefpZzDTYDoNgatuYq6LgUIQ+z5C04/kCRoFkAFrHag8a3BXqFzq5A=="], - "@aws-sdk/client-lambda/@aws-sdk/middleware-logger": ["@aws-sdk/middleware-logger@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ZqzMecjju5zkBquSIfVfCORI/3Mge21nUY4nWaGQy+NUXehqCGG4W7AiVpiHGOcY2cGJa7xeEkYcr2E2U9U0AA=="], + "@aws-sdk/client-lambda/@aws-sdk/middleware-logger": ["@aws-sdk/middleware-logger@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-UoHebjE7el/tfRo8/CQTj91oNUm+5Heus5/a4ECdmWaSCHCS/hXTsU3PTTHAY67oAQR8wBLFPfp3mMvXjB+L2A=="], - "@aws-sdk/client-lambda/@aws-sdk/middleware-recursion-detection": ["@aws-sdk/middleware-recursion-detection@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@aws/lambda-invoke-store": "^0.0.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-H7Zotd9zUHQAr/wr3bcWHULYhEeoQrF54artgsoUGIf/9emv6LzY89QUccKIxYd6oHKNTrTyXm9F0ZZrzXNxlg=="], + "@aws-sdk/client-lambda/@aws-sdk/middleware-recursion-detection": ["@aws-sdk/middleware-recursion-detection@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@aws/lambda-invoke-store": "^0.0.1", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-Wd2t8qa/4OL0v/oDpCHHYkgsXJr8/ttCxrvCKAt0H1zZe2LlRhY9gpDVKqdertfHrHDj786fOvEQA28G1L75Dg=="], - "@aws-sdk/client-lambda/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@smithy/core": "^3.12.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-so/3tZH34YIeqG/QJgn5ZinnmHRdXV1ehsj4wVUrezL/dVW86jfwIkQIwpw8roOC657UoUf91c9FDhCxs3J5aQ=="], + "@aws-sdk/client-lambda/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@smithy/core": "^3.14.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-Zby4F03fvD9xAgXGPywyk4bC1jCbnyubMEYChLYohD+x20ULQCf+AimF/Btn7YL+hBpzh1+RmqmvZcx+RgwgNQ=="], - "@aws-sdk/client-lambda/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/client-lambda/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/client-lambda/@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.895.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-endpoints": "^3.1.2", "tslib": "^2.6.2" } }, "sha512-MhxBvWbwxmKknuggO2NeMwOVkHOYL98pZ+1ZRI5YwckoCL3AvISMnPJgfN60ww6AIXHGpkp+HhpFdKOe8RHSEg=="], + "@aws-sdk/client-lambda/@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "tslib": "^2.6.2" } }, "sha512-5nZP3hGA8FHEtKvEQf4Aww5QZOkjLW1Z+NixSd+0XKfHvA39Ah5sZboScjLx0C9kti/K3OGW1RCx5K9Zc3bZqg=="], - "@aws-sdk/client-lambda/@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-PE9NtbDBW6Kgl1bG6A5fF3EPo168tnkj8TgMcT0sg4xYBWsBpq0bpJZRh+Jm5Bkwiw9IgTCLjEU7mR6xWaMB9w=="], + "@aws-sdk/client-lambda/@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-Ntb6V/WFI21Ed4PDgL/8NSfoZQQf9xzrwNgiwvnxgAl/KvAvRBgQtqj5gHsDX8Nj2YmJuVoHfH9BGjL9VQ4WNg=="], - "@aws-sdk/client-lambda/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.896.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/node-config-provider": "^4.2.2", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-jegizucAwoxyBddKl0kRGNEgRHcfGuMeyhP1Nf+wIUmHz/9CxobIajqcVk/KRNLdZY5mSn7YG2VtP3z0BcBb0w=="], + "@aws-sdk/client-lambda/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.901.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-l59KQP5TY7vPVUfEURc7P5BJKuNg1RSsAKBQW7LHLECXjLqDUbo2SMLrexLBEoArSt6E8QOrIN0C8z/0Xk0jYw=="], - "@aws-sdk/client-lambda/@smithy/config-resolver": ["@smithy/config-resolver@4.2.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/types": "^4.5.0", "@smithy/util-config-provider": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-IT6MatgBWagLybZl1xQcURXRICvqz1z3APSCAI9IqdvfCkrA7RaQIEfgC6G/KvfxnDfQUDqFV+ZlixcuFznGBQ=="], + "@aws-sdk/client-lambda/@smithy/config-resolver": ["@smithy/config-resolver@4.3.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-config-provider": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-9oH+n8AVNiLPK/iK/agOsoWfrKZ3FGP3502tkksd6SRsKMYiu7AFX0YXo6YBADdsAj7C+G/aLKdsafIJHxuCkQ=="], - "@aws-sdk/client-lambda/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.2.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng=="], + "@aws-sdk/client-lambda/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw=="], - "@aws-sdk/client-lambda/@smithy/hash-node": ["@smithy/hash-node@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-H9DIU9WBLhYrvPs9v4sYvnZ1PiAI0oc8CgNQUJ1rpN3pP7QADbTOUjchI2FB764Ub0DstH5xbTqcMJu1pnVqxA=="], + "@aws-sdk/client-lambda/@smithy/hash-node": ["@smithy/hash-node@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-ugv93gOhZGysTctZh9qdgng8B+xO0cj+zN0qAZ+Sgh7qTQGPOJbMdIuyP89KNfUyfAqFSNh5tMvC+h2uCpmTtA=="], - "@aws-sdk/client-lambda/@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-1AqLyFlfrrDkyES8uhINRlJXmHA2FkG+3DY8X+rmLSqmFwk3DJnvhyGzyByPyewh2jbmV+TYQBEfngQax8IFGg=="], + "@aws-sdk/client-lambda/@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-ZmK5X5fUPAbtvRcUPtk28aqIClVhbfcmfoS4M7UQBTnDdrNxhsrxYVv0ZEl5NaPSyExsPWqL4GsPlRvtlwg+2A=="], - "@aws-sdk/client-lambda/@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-9wlfBBgTsRvC2JxLJxv4xDGNBrZuio3AgSl0lSFX7fneW2cGskXTYpFxCdRYD2+5yzmsiTuaAJD1Wp7gWt9y9w=="], + "@aws-sdk/client-lambda/@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6ZAnwrXFecrA4kIDOcz6aLBhU5ih2is2NdcZtobBDSdSHtE9a+MThB5uqyK4XXesdOCvOcbCm2IGB95birTSOQ=="], - "@aws-sdk/client-lambda/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.2.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg=="], + "@aws-sdk/client-lambda/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.3.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-jFVjuQeV8TkxaRlcCNg0GFVgg98tscsmIrIwRFeC74TIUyLE3jmY9xgc1WXrPQYRjQNK3aRoaIk6fhFRGOIoGw=="], - "@aws-sdk/client-lambda/@smithy/middleware-retry": ["@smithy/middleware-retry@4.3.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/protocol-http": "^5.2.1", "@smithy/service-error-classification": "^4.1.2", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/uuid": "^1.0.0", "tslib": "^2.6.2" } }, "sha512-qhEX9745fAxZvtLM4bQJAVC98elWjiMO2OiHl1s6p7hUzS4QfZO1gXUYNwEK8m0J6NoCD5W52ggWxbIDHI0XSg=="], + "@aws-sdk/client-lambda/@smithy/middleware-retry": ["@smithy/middleware-retry@4.4.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/service-error-classification": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" } }, "sha512-yaVBR0vQnOnzex45zZ8ZrPzUnX73eUC8kVFaAAbn04+6V7lPtxn56vZEBBAhgS/eqD6Zm86o6sJs6FuQVoX5qg=="], - "@aws-sdk/client-lambda/@smithy/middleware-serde": ["@smithy/middleware-serde@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg=="], + "@aws-sdk/client-lambda/@smithy/middleware-serde": ["@smithy/middleware-serde@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rpTQ7D65/EAbC6VydXlxjvbifTf4IH+sADKg6JmAvhkflJO2NvDeyU9qsWUNBelJiQFcXKejUHWRSdmpJmEmiw=="], - "@aws-sdk/client-lambda/@smithy/middleware-stack": ["@smithy/middleware-stack@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A=="], + "@aws-sdk/client-lambda/@smithy/middleware-stack": ["@smithy/middleware-stack@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-G5CJ//eqRd9OARrQu9MK1H8fNm2sMtqFh6j8/rPozhEL+Dokpvi1Og+aCixTuwDAGZUkJPk6hJT5jchbk/WCyg=="], - "@aws-sdk/client-lambda/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@aws-sdk/client-lambda/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@aws-sdk/client-lambda/@smithy/node-http-handler": ["@smithy/node-http-handler@4.2.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw=="], + "@aws-sdk/client-lambda/@smithy/node-http-handler": ["@smithy/node-http-handler@4.3.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q=="], - "@aws-sdk/client-lambda/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/client-lambda/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/client-lambda/@smithy/smithy-client": ["@smithy/smithy-client@4.6.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-stack": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-stream": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg=="], + "@aws-sdk/client-lambda/@smithy/smithy-client": ["@smithy/smithy-client@4.7.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-stream": "^4.4.0", "tslib": "^2.6.2" } }, "sha512-3BDx/aCCPf+kkinYf5QQhdQ9UAGihgOVqI3QO5xQfSaIWvUE4KYLtiGRWsNe1SR7ijXC0QEPqofVp5Sb0zC8xQ=="], - "@aws-sdk/client-lambda/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/client-lambda/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/client-lambda/@smithy/url-parser": ["@smithy/url-parser@4.1.1", "", { "dependencies": { "@smithy/querystring-parser": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg=="], + "@aws-sdk/client-lambda/@smithy/url-parser": ["@smithy/url-parser@4.2.0", "", { "dependencies": { "@smithy/querystring-parser": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-AlBmD6Idav2ugmoAL6UtR6ItS7jU5h5RNqLMZC7QrLCoITA9NzIN3nx9GWi8g4z1pfWh2r9r96SX/jHiNwPJ9A=="], - "@aws-sdk/client-lambda/@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="], + "@aws-sdk/client-lambda/@smithy/util-base64": ["@smithy/util-base64@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA=="], - "@aws-sdk/client-lambda/@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ=="], + "@aws-sdk/client-lambda/@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg=="], - "@aws-sdk/client-lambda/@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-BOI5dYjheZdgR9XiEM3HJcEMCXSoqbzu7CzIgYrx0UtmvtC3tC2iDGpJLsSRFffUpy8ymsg2ARMP5fR8mtuUQQ=="], + "@aws-sdk/client-lambda/@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-U8q1WsSZFjXijlD7a4wsDQOvOwV+72iHSfq1q7VD+V75xP/pdtm0WIGuaFJ3gcADDOKj2MIBn4+zisi140HEnQ=="], - "@aws-sdk/client-lambda/@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.1.4", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-mLDJ1s4eA3vwOGaQOEPlg5LB4LdZUUMpB5UMOMofeGhWqiS7WR7dTpLiNi9zVn+YziKUd3Af5NLfxDs7NJqmIw=="], + "@aws-sdk/client-lambda/@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.2.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-qzHp7ZDk1Ba4LDwQVCNp90xPGqSu7kmL7y5toBpccuhi3AH7dcVBIT/pUxYcInK4jOy6FikrcTGq5wxcka8UaQ=="], - "@aws-sdk/client-lambda/@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.1.4", "", { "dependencies": { "@smithy/config-resolver": "^4.2.2", "@smithy/credential-provider-imds": "^4.1.2", "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-pjX2iMTcOASaSanAd7bu6i3fcMMezr3NTr8Rh64etB0uHRZi+Aw86DoCxPESjY4UTIuA06hhqtTtw95o//imYA=="], + "@aws-sdk/client-lambda/@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.2.0", "", { "dependencies": { "@smithy/config-resolver": "^4.3.0", "@smithy/credential-provider-imds": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FxUHS3WXgx3bTWR6yQHNHHkQHZm/XKIi/CchTnKvBulN6obWpcbzJ6lDToXn+Wp0QlVKd7uYAz2/CTw1j7m+Kg=="], - "@aws-sdk/client-lambda/@smithy/util-retry": ["@smithy/util-retry@4.1.2", "", { "dependencies": { "@smithy/service-error-classification": "^4.1.2", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-NCgr1d0/EdeP6U5PSZ9Uv5SMR5XRRYoVr1kRVtKZxWL3tixEL3UatrPIMFZSKwHlCcp2zPLDvMubVDULRqeunA=="], + "@aws-sdk/client-lambda/@smithy/util-retry": ["@smithy/util-retry@4.2.0", "", { "dependencies": { "@smithy/service-error-classification": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BWSiuGbwRnEE2SFfaAZEX0TqaxtvtSYPM/J73PFVm+A29Fg1HTPiYFb8TmX1DXp4hgcdyJcNQmprfd5foeORsg=="], - "@aws-sdk/client-lambda/@smithy/util-stream": ["@smithy/util-stream@4.3.2", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.2.1", "@smithy/node-http-handler": "^4.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g=="], + "@aws-sdk/client-lambda/@smithy/util-stream": ["@smithy/util-stream@4.4.0", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg=="], - "@aws-sdk/client-lambda/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@aws-sdk/client-lambda/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - "@aws-sdk/client-lambda/@smithy/util-waiter": ["@smithy/util-waiter@4.1.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-PJBmyayrlfxM7nbqjomF4YcT1sApQwZio0NHSsT0EzhJqljRmvhzqZua43TyEs80nJk2Cn2FGPg/N8phH6KeCQ=="], + "@aws-sdk/client-lambda/@smithy/util-waiter": ["@smithy/util-waiter@4.2.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-0Z+nxUU4/4T+SL8BCNN4ztKdQjToNvUYmkF1kXO5T7Yz3Gafzh0HeIG6mrkN8Fz3gn9hSyxuAT+6h4vM+iQSBQ=="], "@aws-sdk/client-s3/@aws-crypto/sha256-browser": ["@aws-crypto/sha256-browser@5.2.0", "", { "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@aws-crypto/supports-web-crypto": "^5.2.0", "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw=="], "@aws-sdk/client-s3/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], - "@aws-sdk/client-s3/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.896.0", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.896.0", "@aws-sdk/credential-provider-http": "3.896.0", "@aws-sdk/credential-provider-ini": "3.896.0", "@aws-sdk/credential-provider-process": "3.896.0", "@aws-sdk/credential-provider-sso": "3.896.0", "@aws-sdk/credential-provider-web-identity": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/credential-provider-imds": "^4.1.2", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-J0Jm+56MNngk1PIyqoJFf5FC2fjA4CYXlqODqNRDtid7yk7HB9W3UTtvxofmii5KJOLcHGNPdGnHWKkUc+xYgw=="], + "@aws-sdk/client-s3/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.901.0", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.901.0", "@aws-sdk/credential-provider-http": "3.901.0", "@aws-sdk/credential-provider-ini": "3.901.0", "@aws-sdk/credential-provider-process": "3.901.0", "@aws-sdk/credential-provider-sso": "3.901.0", "@aws-sdk/credential-provider-web-identity": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/credential-provider-imds": "^4.2.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-dPuFzMF7L1s/lQyT3wDxqLe82PyTH+5o1jdfseTEln64LJMl0ZMWaKX/C1UFNDxaTd35Cgt1bDbjjAWHMiKSFQ=="], - "@aws-sdk/client-s3/@aws-sdk/middleware-host-header": ["@aws-sdk/middleware-host-header@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-qL5xYRt80ahDfj9nDYLhpCNkDinEXvjLe/Qen/Y/u12+djrR2MB4DRa6mzBCkLkdXDtf0WAoW2EZsNCfGrmOEQ=="], + "@aws-sdk/client-s3/@aws-sdk/middleware-host-header": ["@aws-sdk/middleware-host-header@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-yWX7GvRmqBtbNnUW7qbre3GvZmyYwU0WHefpZzDTYDoNgatuYq6LgUIQ+z5C04/kCRoFkAFrHag8a3BXqFzq5A=="], - "@aws-sdk/client-s3/@aws-sdk/middleware-logger": ["@aws-sdk/middleware-logger@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ZqzMecjju5zkBquSIfVfCORI/3Mge21nUY4nWaGQy+NUXehqCGG4W7AiVpiHGOcY2cGJa7xeEkYcr2E2U9U0AA=="], + "@aws-sdk/client-s3/@aws-sdk/middleware-logger": ["@aws-sdk/middleware-logger@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-UoHebjE7el/tfRo8/CQTj91oNUm+5Heus5/a4ECdmWaSCHCS/hXTsU3PTTHAY67oAQR8wBLFPfp3mMvXjB+L2A=="], - "@aws-sdk/client-s3/@aws-sdk/middleware-recursion-detection": ["@aws-sdk/middleware-recursion-detection@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@aws/lambda-invoke-store": "^0.0.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-H7Zotd9zUHQAr/wr3bcWHULYhEeoQrF54artgsoUGIf/9emv6LzY89QUccKIxYd6oHKNTrTyXm9F0ZZrzXNxlg=="], + "@aws-sdk/client-s3/@aws-sdk/middleware-recursion-detection": ["@aws-sdk/middleware-recursion-detection@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@aws/lambda-invoke-store": "^0.0.1", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-Wd2t8qa/4OL0v/oDpCHHYkgsXJr8/ttCxrvCKAt0H1zZe2LlRhY9gpDVKqdertfHrHDj786fOvEQA28G1L75Dg=="], - "@aws-sdk/client-s3/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@smithy/core": "^3.12.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-so/3tZH34YIeqG/QJgn5ZinnmHRdXV1ehsj4wVUrezL/dVW86jfwIkQIwpw8roOC657UoUf91c9FDhCxs3J5aQ=="], + "@aws-sdk/client-s3/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@smithy/core": "^3.14.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-Zby4F03fvD9xAgXGPywyk4bC1jCbnyubMEYChLYohD+x20ULQCf+AimF/Btn7YL+hBpzh1+RmqmvZcx+RgwgNQ=="], - "@aws-sdk/client-s3/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/client-s3/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/client-s3/@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.895.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-endpoints": "^3.1.2", "tslib": "^2.6.2" } }, "sha512-MhxBvWbwxmKknuggO2NeMwOVkHOYL98pZ+1ZRI5YwckoCL3AvISMnPJgfN60ww6AIXHGpkp+HhpFdKOe8RHSEg=="], + "@aws-sdk/client-s3/@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "tslib": "^2.6.2" } }, "sha512-5nZP3hGA8FHEtKvEQf4Aww5QZOkjLW1Z+NixSd+0XKfHvA39Ah5sZboScjLx0C9kti/K3OGW1RCx5K9Zc3bZqg=="], - "@aws-sdk/client-s3/@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-PE9NtbDBW6Kgl1bG6A5fF3EPo168tnkj8TgMcT0sg4xYBWsBpq0bpJZRh+Jm5Bkwiw9IgTCLjEU7mR6xWaMB9w=="], + "@aws-sdk/client-s3/@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-Ntb6V/WFI21Ed4PDgL/8NSfoZQQf9xzrwNgiwvnxgAl/KvAvRBgQtqj5gHsDX8Nj2YmJuVoHfH9BGjL9VQ4WNg=="], - "@aws-sdk/client-s3/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.896.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/node-config-provider": "^4.2.2", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-jegizucAwoxyBddKl0kRGNEgRHcfGuMeyhP1Nf+wIUmHz/9CxobIajqcVk/KRNLdZY5mSn7YG2VtP3z0BcBb0w=="], + "@aws-sdk/client-s3/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.901.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-l59KQP5TY7vPVUfEURc7P5BJKuNg1RSsAKBQW7LHLECXjLqDUbo2SMLrexLBEoArSt6E8QOrIN0C8z/0Xk0jYw=="], - "@aws-sdk/client-s3/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.894.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" } }, "sha512-E6EAMc9dT1a2DOdo4zyOf3fp5+NJ2wI+mcm7RaW1baFIWDwcb99PpvWoV7YEiK7oaBDshuOEGWKUSYXdW+JYgA=="], + "@aws-sdk/client-s3/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" } }, "sha512-pxFCkuAP7Q94wMTNPAwi6hEtNrp/BdFf+HOrIEeFQsk4EoOmpKY3I6S+u6A9Wg295J80Kh74LqDWM22ux3z6Aw=="], - "@aws-sdk/client-s3/@smithy/config-resolver": ["@smithy/config-resolver@4.2.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/types": "^4.5.0", "@smithy/util-config-provider": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-IT6MatgBWagLybZl1xQcURXRICvqz1z3APSCAI9IqdvfCkrA7RaQIEfgC6G/KvfxnDfQUDqFV+ZlixcuFznGBQ=="], + "@aws-sdk/client-s3/@smithy/config-resolver": ["@smithy/config-resolver@4.3.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-config-provider": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-9oH+n8AVNiLPK/iK/agOsoWfrKZ3FGP3502tkksd6SRsKMYiu7AFX0YXo6YBADdsAj7C+G/aLKdsafIJHxuCkQ=="], - "@aws-sdk/client-s3/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.2.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng=="], + "@aws-sdk/client-s3/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw=="], - "@aws-sdk/client-s3/@smithy/hash-node": ["@smithy/hash-node@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-H9DIU9WBLhYrvPs9v4sYvnZ1PiAI0oc8CgNQUJ1rpN3pP7QADbTOUjchI2FB764Ub0DstH5xbTqcMJu1pnVqxA=="], + "@aws-sdk/client-s3/@smithy/hash-node": ["@smithy/hash-node@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-ugv93gOhZGysTctZh9qdgng8B+xO0cj+zN0qAZ+Sgh7qTQGPOJbMdIuyP89KNfUyfAqFSNh5tMvC+h2uCpmTtA=="], - "@aws-sdk/client-s3/@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-1AqLyFlfrrDkyES8uhINRlJXmHA2FkG+3DY8X+rmLSqmFwk3DJnvhyGzyByPyewh2jbmV+TYQBEfngQax8IFGg=="], + "@aws-sdk/client-s3/@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-ZmK5X5fUPAbtvRcUPtk28aqIClVhbfcmfoS4M7UQBTnDdrNxhsrxYVv0ZEl5NaPSyExsPWqL4GsPlRvtlwg+2A=="], - "@aws-sdk/client-s3/@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-9wlfBBgTsRvC2JxLJxv4xDGNBrZuio3AgSl0lSFX7fneW2cGskXTYpFxCdRYD2+5yzmsiTuaAJD1Wp7gWt9y9w=="], + "@aws-sdk/client-s3/@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6ZAnwrXFecrA4kIDOcz6aLBhU5ih2is2NdcZtobBDSdSHtE9a+MThB5uqyK4XXesdOCvOcbCm2IGB95birTSOQ=="], - "@aws-sdk/client-s3/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.2.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg=="], + "@aws-sdk/client-s3/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.3.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-jFVjuQeV8TkxaRlcCNg0GFVgg98tscsmIrIwRFeC74TIUyLE3jmY9xgc1WXrPQYRjQNK3aRoaIk6fhFRGOIoGw=="], - "@aws-sdk/client-s3/@smithy/middleware-retry": ["@smithy/middleware-retry@4.3.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/protocol-http": "^5.2.1", "@smithy/service-error-classification": "^4.1.2", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/uuid": "^1.0.0", "tslib": "^2.6.2" } }, "sha512-qhEX9745fAxZvtLM4bQJAVC98elWjiMO2OiHl1s6p7hUzS4QfZO1gXUYNwEK8m0J6NoCD5W52ggWxbIDHI0XSg=="], + "@aws-sdk/client-s3/@smithy/middleware-retry": ["@smithy/middleware-retry@4.4.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/service-error-classification": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" } }, "sha512-yaVBR0vQnOnzex45zZ8ZrPzUnX73eUC8kVFaAAbn04+6V7lPtxn56vZEBBAhgS/eqD6Zm86o6sJs6FuQVoX5qg=="], - "@aws-sdk/client-s3/@smithy/middleware-serde": ["@smithy/middleware-serde@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg=="], + "@aws-sdk/client-s3/@smithy/middleware-serde": ["@smithy/middleware-serde@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rpTQ7D65/EAbC6VydXlxjvbifTf4IH+sADKg6JmAvhkflJO2NvDeyU9qsWUNBelJiQFcXKejUHWRSdmpJmEmiw=="], - "@aws-sdk/client-s3/@smithy/middleware-stack": ["@smithy/middleware-stack@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A=="], + "@aws-sdk/client-s3/@smithy/middleware-stack": ["@smithy/middleware-stack@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-G5CJ//eqRd9OARrQu9MK1H8fNm2sMtqFh6j8/rPozhEL+Dokpvi1Og+aCixTuwDAGZUkJPk6hJT5jchbk/WCyg=="], - "@aws-sdk/client-s3/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@aws-sdk/client-s3/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@aws-sdk/client-s3/@smithy/node-http-handler": ["@smithy/node-http-handler@4.2.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw=="], + "@aws-sdk/client-s3/@smithy/node-http-handler": ["@smithy/node-http-handler@4.3.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q=="], - "@aws-sdk/client-s3/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/client-s3/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/client-s3/@smithy/smithy-client": ["@smithy/smithy-client@4.6.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-stack": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-stream": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg=="], + "@aws-sdk/client-s3/@smithy/smithy-client": ["@smithy/smithy-client@4.7.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-stream": "^4.4.0", "tslib": "^2.6.2" } }, "sha512-3BDx/aCCPf+kkinYf5QQhdQ9UAGihgOVqI3QO5xQfSaIWvUE4KYLtiGRWsNe1SR7ijXC0QEPqofVp5Sb0zC8xQ=="], - "@aws-sdk/client-s3/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/client-s3/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/client-s3/@smithy/url-parser": ["@smithy/url-parser@4.1.1", "", { "dependencies": { "@smithy/querystring-parser": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg=="], + "@aws-sdk/client-s3/@smithy/url-parser": ["@smithy/url-parser@4.2.0", "", { "dependencies": { "@smithy/querystring-parser": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-AlBmD6Idav2ugmoAL6UtR6ItS7jU5h5RNqLMZC7QrLCoITA9NzIN3nx9GWi8g4z1pfWh2r9r96SX/jHiNwPJ9A=="], - "@aws-sdk/client-s3/@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="], + "@aws-sdk/client-s3/@smithy/util-base64": ["@smithy/util-base64@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA=="], - "@aws-sdk/client-s3/@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ=="], + "@aws-sdk/client-s3/@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg=="], - "@aws-sdk/client-s3/@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-BOI5dYjheZdgR9XiEM3HJcEMCXSoqbzu7CzIgYrx0UtmvtC3tC2iDGpJLsSRFffUpy8ymsg2ARMP5fR8mtuUQQ=="], + "@aws-sdk/client-s3/@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-U8q1WsSZFjXijlD7a4wsDQOvOwV+72iHSfq1q7VD+V75xP/pdtm0WIGuaFJ3gcADDOKj2MIBn4+zisi140HEnQ=="], - "@aws-sdk/client-s3/@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.1.4", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-mLDJ1s4eA3vwOGaQOEPlg5LB4LdZUUMpB5UMOMofeGhWqiS7WR7dTpLiNi9zVn+YziKUd3Af5NLfxDs7NJqmIw=="], + "@aws-sdk/client-s3/@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.2.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-qzHp7ZDk1Ba4LDwQVCNp90xPGqSu7kmL7y5toBpccuhi3AH7dcVBIT/pUxYcInK4jOy6FikrcTGq5wxcka8UaQ=="], - "@aws-sdk/client-s3/@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.1.4", "", { "dependencies": { "@smithy/config-resolver": "^4.2.2", "@smithy/credential-provider-imds": "^4.1.2", "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-pjX2iMTcOASaSanAd7bu6i3fcMMezr3NTr8Rh64etB0uHRZi+Aw86DoCxPESjY4UTIuA06hhqtTtw95o//imYA=="], + "@aws-sdk/client-s3/@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.2.0", "", { "dependencies": { "@smithy/config-resolver": "^4.3.0", "@smithy/credential-provider-imds": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FxUHS3WXgx3bTWR6yQHNHHkQHZm/XKIi/CchTnKvBulN6obWpcbzJ6lDToXn+Wp0QlVKd7uYAz2/CTw1j7m+Kg=="], - "@aws-sdk/client-s3/@smithy/util-retry": ["@smithy/util-retry@4.1.2", "", { "dependencies": { "@smithy/service-error-classification": "^4.1.2", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-NCgr1d0/EdeP6U5PSZ9Uv5SMR5XRRYoVr1kRVtKZxWL3tixEL3UatrPIMFZSKwHlCcp2zPLDvMubVDULRqeunA=="], + "@aws-sdk/client-s3/@smithy/util-retry": ["@smithy/util-retry@4.2.0", "", { "dependencies": { "@smithy/service-error-classification": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BWSiuGbwRnEE2SFfaAZEX0TqaxtvtSYPM/J73PFVm+A29Fg1HTPiYFb8TmX1DXp4hgcdyJcNQmprfd5foeORsg=="], - "@aws-sdk/client-s3/@smithy/util-stream": ["@smithy/util-stream@4.3.2", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.2.1", "@smithy/node-http-handler": "^4.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g=="], + "@aws-sdk/client-s3/@smithy/util-stream": ["@smithy/util-stream@4.4.0", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg=="], - "@aws-sdk/client-s3/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@aws-sdk/client-s3/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - "@aws-sdk/client-s3/@smithy/util-waiter": ["@smithy/util-waiter@4.1.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-PJBmyayrlfxM7nbqjomF4YcT1sApQwZio0NHSsT0EzhJqljRmvhzqZua43TyEs80nJk2Cn2FGPg/N8phH6KeCQ=="], + "@aws-sdk/client-s3/@smithy/util-waiter": ["@smithy/util-waiter@4.2.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-0Z+nxUU4/4T+SL8BCNN4ztKdQjToNvUYmkF1kXO5T7Yz3Gafzh0HeIG6mrkN8Fz3gn9hSyxuAT+6h4vM+iQSBQ=="], "@aws-sdk/client-sqs/@aws-crypto/sha256-browser": ["@aws-crypto/sha256-browser@5.2.0", "", { "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@aws-crypto/supports-web-crypto": "^5.2.0", "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw=="], "@aws-sdk/client-sqs/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], - "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.896.0", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.896.0", "@aws-sdk/credential-provider-http": "3.896.0", "@aws-sdk/credential-provider-ini": "3.896.0", "@aws-sdk/credential-provider-process": "3.896.0", "@aws-sdk/credential-provider-sso": "3.896.0", "@aws-sdk/credential-provider-web-identity": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/credential-provider-imds": "^4.1.2", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-J0Jm+56MNngk1PIyqoJFf5FC2fjA4CYXlqODqNRDtid7yk7HB9W3UTtvxofmii5KJOLcHGNPdGnHWKkUc+xYgw=="], + "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.901.0", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.901.0", "@aws-sdk/credential-provider-http": "3.901.0", "@aws-sdk/credential-provider-ini": "3.901.0", "@aws-sdk/credential-provider-process": "3.901.0", "@aws-sdk/credential-provider-sso": "3.901.0", "@aws-sdk/credential-provider-web-identity": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/credential-provider-imds": "^4.2.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-dPuFzMF7L1s/lQyT3wDxqLe82PyTH+5o1jdfseTEln64LJMl0ZMWaKX/C1UFNDxaTd35Cgt1bDbjjAWHMiKSFQ=="], - "@aws-sdk/client-sqs/@aws-sdk/middleware-host-header": ["@aws-sdk/middleware-host-header@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-qL5xYRt80ahDfj9nDYLhpCNkDinEXvjLe/Qen/Y/u12+djrR2MB4DRa6mzBCkLkdXDtf0WAoW2EZsNCfGrmOEQ=="], + "@aws-sdk/client-sqs/@aws-sdk/middleware-host-header": ["@aws-sdk/middleware-host-header@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-yWX7GvRmqBtbNnUW7qbre3GvZmyYwU0WHefpZzDTYDoNgatuYq6LgUIQ+z5C04/kCRoFkAFrHag8a3BXqFzq5A=="], - "@aws-sdk/client-sqs/@aws-sdk/middleware-logger": ["@aws-sdk/middleware-logger@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ZqzMecjju5zkBquSIfVfCORI/3Mge21nUY4nWaGQy+NUXehqCGG4W7AiVpiHGOcY2cGJa7xeEkYcr2E2U9U0AA=="], + "@aws-sdk/client-sqs/@aws-sdk/middleware-logger": ["@aws-sdk/middleware-logger@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-UoHebjE7el/tfRo8/CQTj91oNUm+5Heus5/a4ECdmWaSCHCS/hXTsU3PTTHAY67oAQR8wBLFPfp3mMvXjB+L2A=="], - "@aws-sdk/client-sqs/@aws-sdk/middleware-recursion-detection": ["@aws-sdk/middleware-recursion-detection@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@aws/lambda-invoke-store": "^0.0.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-H7Zotd9zUHQAr/wr3bcWHULYhEeoQrF54artgsoUGIf/9emv6LzY89QUccKIxYd6oHKNTrTyXm9F0ZZrzXNxlg=="], + "@aws-sdk/client-sqs/@aws-sdk/middleware-recursion-detection": ["@aws-sdk/middleware-recursion-detection@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@aws/lambda-invoke-store": "^0.0.1", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-Wd2t8qa/4OL0v/oDpCHHYkgsXJr8/ttCxrvCKAt0H1zZe2LlRhY9gpDVKqdertfHrHDj786fOvEQA28G1L75Dg=="], - "@aws-sdk/client-sqs/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@smithy/core": "^3.12.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-so/3tZH34YIeqG/QJgn5ZinnmHRdXV1ehsj4wVUrezL/dVW86jfwIkQIwpw8roOC657UoUf91c9FDhCxs3J5aQ=="], + "@aws-sdk/client-sqs/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@smithy/core": "^3.14.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-Zby4F03fvD9xAgXGPywyk4bC1jCbnyubMEYChLYohD+x20ULQCf+AimF/Btn7YL+hBpzh1+RmqmvZcx+RgwgNQ=="], - "@aws-sdk/client-sqs/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/client-sqs/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/client-sqs/@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.895.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-endpoints": "^3.1.2", "tslib": "^2.6.2" } }, "sha512-MhxBvWbwxmKknuggO2NeMwOVkHOYL98pZ+1ZRI5YwckoCL3AvISMnPJgfN60ww6AIXHGpkp+HhpFdKOe8RHSEg=="], + "@aws-sdk/client-sqs/@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "tslib": "^2.6.2" } }, "sha512-5nZP3hGA8FHEtKvEQf4Aww5QZOkjLW1Z+NixSd+0XKfHvA39Ah5sZboScjLx0C9kti/K3OGW1RCx5K9Zc3bZqg=="], - "@aws-sdk/client-sqs/@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-PE9NtbDBW6Kgl1bG6A5fF3EPo168tnkj8TgMcT0sg4xYBWsBpq0bpJZRh+Jm5Bkwiw9IgTCLjEU7mR6xWaMB9w=="], + "@aws-sdk/client-sqs/@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-Ntb6V/WFI21Ed4PDgL/8NSfoZQQf9xzrwNgiwvnxgAl/KvAvRBgQtqj5gHsDX8Nj2YmJuVoHfH9BGjL9VQ4WNg=="], - "@aws-sdk/client-sqs/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.896.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/node-config-provider": "^4.2.2", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-jegizucAwoxyBddKl0kRGNEgRHcfGuMeyhP1Nf+wIUmHz/9CxobIajqcVk/KRNLdZY5mSn7YG2VtP3z0BcBb0w=="], + "@aws-sdk/client-sqs/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.901.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-l59KQP5TY7vPVUfEURc7P5BJKuNg1RSsAKBQW7LHLECXjLqDUbo2SMLrexLBEoArSt6E8QOrIN0C8z/0Xk0jYw=="], - "@aws-sdk/client-sqs/@smithy/config-resolver": ["@smithy/config-resolver@4.2.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/types": "^4.5.0", "@smithy/util-config-provider": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-IT6MatgBWagLybZl1xQcURXRICvqz1z3APSCAI9IqdvfCkrA7RaQIEfgC6G/KvfxnDfQUDqFV+ZlixcuFznGBQ=="], + "@aws-sdk/client-sqs/@smithy/config-resolver": ["@smithy/config-resolver@4.3.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-config-provider": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-9oH+n8AVNiLPK/iK/agOsoWfrKZ3FGP3502tkksd6SRsKMYiu7AFX0YXo6YBADdsAj7C+G/aLKdsafIJHxuCkQ=="], - "@aws-sdk/client-sqs/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.2.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng=="], + "@aws-sdk/client-sqs/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw=="], - "@aws-sdk/client-sqs/@smithy/hash-node": ["@smithy/hash-node@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-H9DIU9WBLhYrvPs9v4sYvnZ1PiAI0oc8CgNQUJ1rpN3pP7QADbTOUjchI2FB764Ub0DstH5xbTqcMJu1pnVqxA=="], + "@aws-sdk/client-sqs/@smithy/hash-node": ["@smithy/hash-node@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-ugv93gOhZGysTctZh9qdgng8B+xO0cj+zN0qAZ+Sgh7qTQGPOJbMdIuyP89KNfUyfAqFSNh5tMvC+h2uCpmTtA=="], - "@aws-sdk/client-sqs/@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-1AqLyFlfrrDkyES8uhINRlJXmHA2FkG+3DY8X+rmLSqmFwk3DJnvhyGzyByPyewh2jbmV+TYQBEfngQax8IFGg=="], + "@aws-sdk/client-sqs/@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-ZmK5X5fUPAbtvRcUPtk28aqIClVhbfcmfoS4M7UQBTnDdrNxhsrxYVv0ZEl5NaPSyExsPWqL4GsPlRvtlwg+2A=="], - "@aws-sdk/client-sqs/@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-9wlfBBgTsRvC2JxLJxv4xDGNBrZuio3AgSl0lSFX7fneW2cGskXTYpFxCdRYD2+5yzmsiTuaAJD1Wp7gWt9y9w=="], + "@aws-sdk/client-sqs/@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6ZAnwrXFecrA4kIDOcz6aLBhU5ih2is2NdcZtobBDSdSHtE9a+MThB5uqyK4XXesdOCvOcbCm2IGB95birTSOQ=="], - "@aws-sdk/client-sqs/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.2.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg=="], + "@aws-sdk/client-sqs/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.3.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-jFVjuQeV8TkxaRlcCNg0GFVgg98tscsmIrIwRFeC74TIUyLE3jmY9xgc1WXrPQYRjQNK3aRoaIk6fhFRGOIoGw=="], - "@aws-sdk/client-sqs/@smithy/middleware-retry": ["@smithy/middleware-retry@4.3.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/protocol-http": "^5.2.1", "@smithy/service-error-classification": "^4.1.2", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/uuid": "^1.0.0", "tslib": "^2.6.2" } }, "sha512-qhEX9745fAxZvtLM4bQJAVC98elWjiMO2OiHl1s6p7hUzS4QfZO1gXUYNwEK8m0J6NoCD5W52ggWxbIDHI0XSg=="], + "@aws-sdk/client-sqs/@smithy/middleware-retry": ["@smithy/middleware-retry@4.4.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/service-error-classification": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" } }, "sha512-yaVBR0vQnOnzex45zZ8ZrPzUnX73eUC8kVFaAAbn04+6V7lPtxn56vZEBBAhgS/eqD6Zm86o6sJs6FuQVoX5qg=="], - "@aws-sdk/client-sqs/@smithy/middleware-serde": ["@smithy/middleware-serde@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg=="], + "@aws-sdk/client-sqs/@smithy/middleware-serde": ["@smithy/middleware-serde@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rpTQ7D65/EAbC6VydXlxjvbifTf4IH+sADKg6JmAvhkflJO2NvDeyU9qsWUNBelJiQFcXKejUHWRSdmpJmEmiw=="], - "@aws-sdk/client-sqs/@smithy/middleware-stack": ["@smithy/middleware-stack@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A=="], + "@aws-sdk/client-sqs/@smithy/middleware-stack": ["@smithy/middleware-stack@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-G5CJ//eqRd9OARrQu9MK1H8fNm2sMtqFh6j8/rPozhEL+Dokpvi1Og+aCixTuwDAGZUkJPk6hJT5jchbk/WCyg=="], - "@aws-sdk/client-sqs/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@aws-sdk/client-sqs/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@aws-sdk/client-sqs/@smithy/node-http-handler": ["@smithy/node-http-handler@4.2.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw=="], + "@aws-sdk/client-sqs/@smithy/node-http-handler": ["@smithy/node-http-handler@4.3.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q=="], - "@aws-sdk/client-sqs/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/client-sqs/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/client-sqs/@smithy/smithy-client": ["@smithy/smithy-client@4.6.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-stack": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-stream": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg=="], + "@aws-sdk/client-sqs/@smithy/smithy-client": ["@smithy/smithy-client@4.7.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-stream": "^4.4.0", "tslib": "^2.6.2" } }, "sha512-3BDx/aCCPf+kkinYf5QQhdQ9UAGihgOVqI3QO5xQfSaIWvUE4KYLtiGRWsNe1SR7ijXC0QEPqofVp5Sb0zC8xQ=="], - "@aws-sdk/client-sqs/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/client-sqs/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/client-sqs/@smithy/url-parser": ["@smithy/url-parser@4.1.1", "", { "dependencies": { "@smithy/querystring-parser": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg=="], + "@aws-sdk/client-sqs/@smithy/url-parser": ["@smithy/url-parser@4.2.0", "", { "dependencies": { "@smithy/querystring-parser": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-AlBmD6Idav2ugmoAL6UtR6ItS7jU5h5RNqLMZC7QrLCoITA9NzIN3nx9GWi8g4z1pfWh2r9r96SX/jHiNwPJ9A=="], - "@aws-sdk/client-sqs/@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="], + "@aws-sdk/client-sqs/@smithy/util-base64": ["@smithy/util-base64@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA=="], - "@aws-sdk/client-sqs/@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ=="], + "@aws-sdk/client-sqs/@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg=="], - "@aws-sdk/client-sqs/@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-BOI5dYjheZdgR9XiEM3HJcEMCXSoqbzu7CzIgYrx0UtmvtC3tC2iDGpJLsSRFffUpy8ymsg2ARMP5fR8mtuUQQ=="], + "@aws-sdk/client-sqs/@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-U8q1WsSZFjXijlD7a4wsDQOvOwV+72iHSfq1q7VD+V75xP/pdtm0WIGuaFJ3gcADDOKj2MIBn4+zisi140HEnQ=="], - "@aws-sdk/client-sqs/@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.1.4", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-mLDJ1s4eA3vwOGaQOEPlg5LB4LdZUUMpB5UMOMofeGhWqiS7WR7dTpLiNi9zVn+YziKUd3Af5NLfxDs7NJqmIw=="], + "@aws-sdk/client-sqs/@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.2.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-qzHp7ZDk1Ba4LDwQVCNp90xPGqSu7kmL7y5toBpccuhi3AH7dcVBIT/pUxYcInK4jOy6FikrcTGq5wxcka8UaQ=="], - "@aws-sdk/client-sqs/@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.1.4", "", { "dependencies": { "@smithy/config-resolver": "^4.2.2", "@smithy/credential-provider-imds": "^4.1.2", "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-pjX2iMTcOASaSanAd7bu6i3fcMMezr3NTr8Rh64etB0uHRZi+Aw86DoCxPESjY4UTIuA06hhqtTtw95o//imYA=="], + "@aws-sdk/client-sqs/@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.2.0", "", { "dependencies": { "@smithy/config-resolver": "^4.3.0", "@smithy/credential-provider-imds": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FxUHS3WXgx3bTWR6yQHNHHkQHZm/XKIi/CchTnKvBulN6obWpcbzJ6lDToXn+Wp0QlVKd7uYAz2/CTw1j7m+Kg=="], - "@aws-sdk/client-sqs/@smithy/util-retry": ["@smithy/util-retry@4.1.2", "", { "dependencies": { "@smithy/service-error-classification": "^4.1.2", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-NCgr1d0/EdeP6U5PSZ9Uv5SMR5XRRYoVr1kRVtKZxWL3tixEL3UatrPIMFZSKwHlCcp2zPLDvMubVDULRqeunA=="], + "@aws-sdk/client-sqs/@smithy/util-retry": ["@smithy/util-retry@4.2.0", "", { "dependencies": { "@smithy/service-error-classification": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BWSiuGbwRnEE2SFfaAZEX0TqaxtvtSYPM/J73PFVm+A29Fg1HTPiYFb8TmX1DXp4hgcdyJcNQmprfd5foeORsg=="], - "@aws-sdk/client-sqs/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@aws-sdk/client-sqs/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - "@aws-sdk/core/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/core/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.894.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" } }, "sha512-E6EAMc9dT1a2DOdo4zyOf3fp5+NJ2wI+mcm7RaW1baFIWDwcb99PpvWoV7YEiK7oaBDshuOEGWKUSYXdW+JYgA=="], + "@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" } }, "sha512-pxFCkuAP7Q94wMTNPAwi6hEtNrp/BdFf+HOrIEeFQsk4EoOmpKY3I6S+u6A9Wg295J80Kh74LqDWM22ux3z6Aw=="], - "@aws-sdk/core/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@aws-sdk/core/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@aws-sdk/core/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/core/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/core/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/core/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.2.1", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-uri-escape": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA=="], + "@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.3.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-uri-escape": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-MKNyhXEs99xAZaFhm88h+3/V+tCRDQ+PrDzRqL0xdDpq4gjxcMmf5rBA3YXgqZqMZ/XwemZEurCBQMfxZOWq/g=="], - "@aws-sdk/core/@smithy/smithy-client": ["@smithy/smithy-client@4.6.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-stack": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-stream": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg=="], + "@aws-sdk/core/@smithy/smithy-client": ["@smithy/smithy-client@4.7.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-stream": "^4.4.0", "tslib": "^2.6.2" } }, "sha512-3BDx/aCCPf+kkinYf5QQhdQ9UAGihgOVqI3QO5xQfSaIWvUE4KYLtiGRWsNe1SR7ijXC0QEPqofVp5Sb0zC8xQ=="], - "@aws-sdk/core/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/core/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/core/@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="], + "@aws-sdk/core/@smithy/util-base64": ["@smithy/util-base64@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA=="], - "@aws-sdk/core/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@aws-sdk/core/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - "@aws-sdk/credential-provider-http/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/credential-provider-http/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/credential-provider-http/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.2.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng=="], + "@aws-sdk/credential-provider-http/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw=="], - "@aws-sdk/credential-provider-http/@smithy/node-http-handler": ["@smithy/node-http-handler@4.2.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw=="], + "@aws-sdk/credential-provider-http/@smithy/node-http-handler": ["@smithy/node-http-handler@4.3.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q=="], - "@aws-sdk/credential-provider-http/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/credential-provider-http/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/credential-provider-http/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/credential-provider-http/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/credential-provider-http/@smithy/smithy-client": ["@smithy/smithy-client@4.6.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-stack": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-stream": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg=="], + "@aws-sdk/credential-provider-http/@smithy/smithy-client": ["@smithy/smithy-client@4.7.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-stream": "^4.4.0", "tslib": "^2.6.2" } }, "sha512-3BDx/aCCPf+kkinYf5QQhdQ9UAGihgOVqI3QO5xQfSaIWvUE4KYLtiGRWsNe1SR7ijXC0QEPqofVp5Sb0zC8xQ=="], - "@aws-sdk/credential-provider-http/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/credential-provider-http/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/credential-provider-http/@smithy/util-stream": ["@smithy/util-stream@4.3.2", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.2.1", "@smithy/node-http-handler": "^4.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g=="], + "@aws-sdk/credential-provider-http/@smithy/util-stream": ["@smithy/util-stream@4.4.0", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg=="], - "@aws-sdk/middleware-bucket-endpoint/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/middleware-bucket-endpoint/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/middleware-bucket-endpoint/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@aws-sdk/middleware-bucket-endpoint/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@aws-sdk/middleware-bucket-endpoint/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/middleware-bucket-endpoint/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/middleware-bucket-endpoint/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/middleware-bucket-endpoint/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/middleware-bucket-endpoint/@smithy/util-config-provider": ["@smithy/util-config-provider@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ=="], + "@aws-sdk/middleware-bucket-endpoint/@smithy/util-config-provider": ["@smithy/util-config-provider@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q=="], - "@aws-sdk/middleware-endpoint-discovery/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/middleware-endpoint-discovery/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/middleware-endpoint-discovery/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@aws-sdk/middleware-endpoint-discovery/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@aws-sdk/middleware-endpoint-discovery/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/middleware-endpoint-discovery/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/middleware-endpoint-discovery/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/middleware-endpoint-discovery/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/middleware-expect-continue/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/middleware-expect-continue/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/middleware-expect-continue/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/middleware-expect-continue/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/middleware-expect-continue/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/middleware-expect-continue/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], "@aws-sdk/middleware-flexible-checksums/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], - "@aws-sdk/middleware-flexible-checksums/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/middleware-flexible-checksums/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream": ["@smithy/util-stream@4.3.2", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.2.1", "@smithy/node-http-handler": "^4.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream": ["@smithy/util-stream@4.4.0", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - "@aws-sdk/middleware-location-constraint/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/middleware-location-constraint/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/middleware-location-constraint/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/middleware-location-constraint/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/middleware-sdk-s3/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/middleware-sdk-s3/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/middleware-sdk-s3/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@aws-sdk/middleware-sdk-s3/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@aws-sdk/middleware-sdk-s3/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/middleware-sdk-s3/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/middleware-sdk-s3/@smithy/signature-v4": ["@smithy/signature-v4@5.2.1", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-uri-escape": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA=="], + "@aws-sdk/middleware-sdk-s3/@smithy/signature-v4": ["@smithy/signature-v4@5.3.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-uri-escape": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-MKNyhXEs99xAZaFhm88h+3/V+tCRDQ+PrDzRqL0xdDpq4gjxcMmf5rBA3YXgqZqMZ/XwemZEurCBQMfxZOWq/g=="], - "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client": ["@smithy/smithy-client@4.6.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-stack": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-stream": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg=="], + "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client": ["@smithy/smithy-client@4.7.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-stream": "^4.4.0", "tslib": "^2.6.2" } }, "sha512-3BDx/aCCPf+kkinYf5QQhdQ9UAGihgOVqI3QO5xQfSaIWvUE4KYLtiGRWsNe1SR7ijXC0QEPqofVp5Sb0zC8xQ=="], - "@aws-sdk/middleware-sdk-s3/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/middleware-sdk-s3/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-config-provider": ["@smithy/util-config-provider@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-config-provider": ["@smithy/util-config-provider@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-stream": ["@smithy/util-stream@4.3.2", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.2.1", "@smithy/node-http-handler": "^4.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-stream": ["@smithy/util-stream@4.4.0", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - "@aws-sdk/middleware-sdk-sqs/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/middleware-sdk-sqs/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client": ["@smithy/smithy-client@4.6.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-stack": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-stream": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client": ["@smithy/smithy-client@4.7.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-stream": "^4.4.0", "tslib": "^2.6.2" } }, "sha512-3BDx/aCCPf+kkinYf5QQhdQ9UAGihgOVqI3QO5xQfSaIWvUE4KYLtiGRWsNe1SR7ijXC0QEPqofVp5Sb0zC8xQ=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], "@aws-sdk/middleware-signing/@smithy/util-middleware": ["@smithy/util-middleware@2.2.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw=="], - "@aws-sdk/middleware-ssec/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/middleware-ssec/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/middleware-ssec/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/middleware-ssec/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], "@aws-sdk/nested-clients/@aws-crypto/sha256-browser": ["@aws-crypto/sha256-browser@5.2.0", "", { "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@aws-crypto/supports-web-crypto": "^5.2.0", "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw=="], "@aws-sdk/nested-clients/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], - "@aws-sdk/nested-clients/@aws-sdk/middleware-host-header": ["@aws-sdk/middleware-host-header@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-qL5xYRt80ahDfj9nDYLhpCNkDinEXvjLe/Qen/Y/u12+djrR2MB4DRa6mzBCkLkdXDtf0WAoW2EZsNCfGrmOEQ=="], + "@aws-sdk/nested-clients/@aws-sdk/middleware-host-header": ["@aws-sdk/middleware-host-header@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-yWX7GvRmqBtbNnUW7qbre3GvZmyYwU0WHefpZzDTYDoNgatuYq6LgUIQ+z5C04/kCRoFkAFrHag8a3BXqFzq5A=="], - "@aws-sdk/nested-clients/@aws-sdk/middleware-logger": ["@aws-sdk/middleware-logger@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ZqzMecjju5zkBquSIfVfCORI/3Mge21nUY4nWaGQy+NUXehqCGG4W7AiVpiHGOcY2cGJa7xeEkYcr2E2U9U0AA=="], + "@aws-sdk/nested-clients/@aws-sdk/middleware-logger": ["@aws-sdk/middleware-logger@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-UoHebjE7el/tfRo8/CQTj91oNUm+5Heus5/a4ECdmWaSCHCS/hXTsU3PTTHAY67oAQR8wBLFPfp3mMvXjB+L2A=="], - "@aws-sdk/nested-clients/@aws-sdk/middleware-recursion-detection": ["@aws-sdk/middleware-recursion-detection@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@aws/lambda-invoke-store": "^0.0.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-H7Zotd9zUHQAr/wr3bcWHULYhEeoQrF54artgsoUGIf/9emv6LzY89QUccKIxYd6oHKNTrTyXm9F0ZZrzXNxlg=="], + "@aws-sdk/nested-clients/@aws-sdk/middleware-recursion-detection": ["@aws-sdk/middleware-recursion-detection@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@aws/lambda-invoke-store": "^0.0.1", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-Wd2t8qa/4OL0v/oDpCHHYkgsXJr8/ttCxrvCKAt0H1zZe2LlRhY9gpDVKqdertfHrHDj786fOvEQA28G1L75Dg=="], - "@aws-sdk/nested-clients/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@smithy/core": "^3.12.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-so/3tZH34YIeqG/QJgn5ZinnmHRdXV1ehsj4wVUrezL/dVW86jfwIkQIwpw8roOC657UoUf91c9FDhCxs3J5aQ=="], + "@aws-sdk/nested-clients/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@smithy/core": "^3.14.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-Zby4F03fvD9xAgXGPywyk4bC1jCbnyubMEYChLYohD+x20ULQCf+AimF/Btn7YL+hBpzh1+RmqmvZcx+RgwgNQ=="], - "@aws-sdk/nested-clients/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/nested-clients/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/nested-clients/@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.895.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-endpoints": "^3.1.2", "tslib": "^2.6.2" } }, "sha512-MhxBvWbwxmKknuggO2NeMwOVkHOYL98pZ+1ZRI5YwckoCL3AvISMnPJgfN60ww6AIXHGpkp+HhpFdKOe8RHSEg=="], + "@aws-sdk/nested-clients/@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "tslib": "^2.6.2" } }, "sha512-5nZP3hGA8FHEtKvEQf4Aww5QZOkjLW1Z+NixSd+0XKfHvA39Ah5sZboScjLx0C9kti/K3OGW1RCx5K9Zc3bZqg=="], - "@aws-sdk/nested-clients/@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.893.0", "", { "dependencies": { "@aws-sdk/types": "3.893.0", "@smithy/types": "^4.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-PE9NtbDBW6Kgl1bG6A5fF3EPo168tnkj8TgMcT0sg4xYBWsBpq0bpJZRh+Jm5Bkwiw9IgTCLjEU7mR6xWaMB9w=="], + "@aws-sdk/nested-clients/@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.901.0", "", { "dependencies": { "@aws-sdk/types": "3.901.0", "@smithy/types": "^4.6.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-Ntb6V/WFI21Ed4PDgL/8NSfoZQQf9xzrwNgiwvnxgAl/KvAvRBgQtqj5gHsDX8Nj2YmJuVoHfH9BGjL9VQ4WNg=="], - "@aws-sdk/nested-clients/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.896.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/node-config-provider": "^4.2.2", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-jegizucAwoxyBddKl0kRGNEgRHcfGuMeyhP1Nf+wIUmHz/9CxobIajqcVk/KRNLdZY5mSn7YG2VtP3z0BcBb0w=="], + "@aws-sdk/nested-clients/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.901.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-l59KQP5TY7vPVUfEURc7P5BJKuNg1RSsAKBQW7LHLECXjLqDUbo2SMLrexLBEoArSt6E8QOrIN0C8z/0Xk0jYw=="], - "@aws-sdk/nested-clients/@smithy/config-resolver": ["@smithy/config-resolver@4.2.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/types": "^4.5.0", "@smithy/util-config-provider": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-IT6MatgBWagLybZl1xQcURXRICvqz1z3APSCAI9IqdvfCkrA7RaQIEfgC6G/KvfxnDfQUDqFV+ZlixcuFznGBQ=="], + "@aws-sdk/nested-clients/@smithy/config-resolver": ["@smithy/config-resolver@4.3.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-config-provider": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-9oH+n8AVNiLPK/iK/agOsoWfrKZ3FGP3502tkksd6SRsKMYiu7AFX0YXo6YBADdsAj7C+G/aLKdsafIJHxuCkQ=="], - "@aws-sdk/nested-clients/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.2.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng=="], + "@aws-sdk/nested-clients/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw=="], - "@aws-sdk/nested-clients/@smithy/hash-node": ["@smithy/hash-node@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-H9DIU9WBLhYrvPs9v4sYvnZ1PiAI0oc8CgNQUJ1rpN3pP7QADbTOUjchI2FB764Ub0DstH5xbTqcMJu1pnVqxA=="], + "@aws-sdk/nested-clients/@smithy/hash-node": ["@smithy/hash-node@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-ugv93gOhZGysTctZh9qdgng8B+xO0cj+zN0qAZ+Sgh7qTQGPOJbMdIuyP89KNfUyfAqFSNh5tMvC+h2uCpmTtA=="], - "@aws-sdk/nested-clients/@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-1AqLyFlfrrDkyES8uhINRlJXmHA2FkG+3DY8X+rmLSqmFwk3DJnvhyGzyByPyewh2jbmV+TYQBEfngQax8IFGg=="], + "@aws-sdk/nested-clients/@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-ZmK5X5fUPAbtvRcUPtk28aqIClVhbfcmfoS4M7UQBTnDdrNxhsrxYVv0ZEl5NaPSyExsPWqL4GsPlRvtlwg+2A=="], - "@aws-sdk/nested-clients/@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-9wlfBBgTsRvC2JxLJxv4xDGNBrZuio3AgSl0lSFX7fneW2cGskXTYpFxCdRYD2+5yzmsiTuaAJD1Wp7gWt9y9w=="], + "@aws-sdk/nested-clients/@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6ZAnwrXFecrA4kIDOcz6aLBhU5ih2is2NdcZtobBDSdSHtE9a+MThB5uqyK4XXesdOCvOcbCm2IGB95birTSOQ=="], - "@aws-sdk/nested-clients/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.2.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg=="], + "@aws-sdk/nested-clients/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.3.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-jFVjuQeV8TkxaRlcCNg0GFVgg98tscsmIrIwRFeC74TIUyLE3jmY9xgc1WXrPQYRjQNK3aRoaIk6fhFRGOIoGw=="], - "@aws-sdk/nested-clients/@smithy/middleware-retry": ["@smithy/middleware-retry@4.3.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/protocol-http": "^5.2.1", "@smithy/service-error-classification": "^4.1.2", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/uuid": "^1.0.0", "tslib": "^2.6.2" } }, "sha512-qhEX9745fAxZvtLM4bQJAVC98elWjiMO2OiHl1s6p7hUzS4QfZO1gXUYNwEK8m0J6NoCD5W52ggWxbIDHI0XSg=="], + "@aws-sdk/nested-clients/@smithy/middleware-retry": ["@smithy/middleware-retry@4.4.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/service-error-classification": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" } }, "sha512-yaVBR0vQnOnzex45zZ8ZrPzUnX73eUC8kVFaAAbn04+6V7lPtxn56vZEBBAhgS/eqD6Zm86o6sJs6FuQVoX5qg=="], - "@aws-sdk/nested-clients/@smithy/middleware-serde": ["@smithy/middleware-serde@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg=="], + "@aws-sdk/nested-clients/@smithy/middleware-serde": ["@smithy/middleware-serde@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rpTQ7D65/EAbC6VydXlxjvbifTf4IH+sADKg6JmAvhkflJO2NvDeyU9qsWUNBelJiQFcXKejUHWRSdmpJmEmiw=="], - "@aws-sdk/nested-clients/@smithy/middleware-stack": ["@smithy/middleware-stack@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A=="], + "@aws-sdk/nested-clients/@smithy/middleware-stack": ["@smithy/middleware-stack@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-G5CJ//eqRd9OARrQu9MK1H8fNm2sMtqFh6j8/rPozhEL+Dokpvi1Og+aCixTuwDAGZUkJPk6hJT5jchbk/WCyg=="], - "@aws-sdk/nested-clients/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@aws-sdk/nested-clients/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@aws-sdk/nested-clients/@smithy/node-http-handler": ["@smithy/node-http-handler@4.2.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw=="], + "@aws-sdk/nested-clients/@smithy/node-http-handler": ["@smithy/node-http-handler@4.3.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q=="], - "@aws-sdk/nested-clients/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/nested-clients/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/nested-clients/@smithy/smithy-client": ["@smithy/smithy-client@4.6.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-stack": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-stream": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg=="], + "@aws-sdk/nested-clients/@smithy/smithy-client": ["@smithy/smithy-client@4.7.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-stream": "^4.4.0", "tslib": "^2.6.2" } }, "sha512-3BDx/aCCPf+kkinYf5QQhdQ9UAGihgOVqI3QO5xQfSaIWvUE4KYLtiGRWsNe1SR7ijXC0QEPqofVp5Sb0zC8xQ=="], - "@aws-sdk/nested-clients/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/nested-clients/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/nested-clients/@smithy/url-parser": ["@smithy/url-parser@4.1.1", "", { "dependencies": { "@smithy/querystring-parser": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg=="], + "@aws-sdk/nested-clients/@smithy/url-parser": ["@smithy/url-parser@4.2.0", "", { "dependencies": { "@smithy/querystring-parser": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-AlBmD6Idav2ugmoAL6UtR6ItS7jU5h5RNqLMZC7QrLCoITA9NzIN3nx9GWi8g4z1pfWh2r9r96SX/jHiNwPJ9A=="], - "@aws-sdk/nested-clients/@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="], + "@aws-sdk/nested-clients/@smithy/util-base64": ["@smithy/util-base64@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA=="], - "@aws-sdk/nested-clients/@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ=="], + "@aws-sdk/nested-clients/@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg=="], - "@aws-sdk/nested-clients/@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-BOI5dYjheZdgR9XiEM3HJcEMCXSoqbzu7CzIgYrx0UtmvtC3tC2iDGpJLsSRFffUpy8ymsg2ARMP5fR8mtuUQQ=="], + "@aws-sdk/nested-clients/@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-U8q1WsSZFjXijlD7a4wsDQOvOwV+72iHSfq1q7VD+V75xP/pdtm0WIGuaFJ3gcADDOKj2MIBn4+zisi140HEnQ=="], - "@aws-sdk/nested-clients/@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.1.4", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-mLDJ1s4eA3vwOGaQOEPlg5LB4LdZUUMpB5UMOMofeGhWqiS7WR7dTpLiNi9zVn+YziKUd3Af5NLfxDs7NJqmIw=="], + "@aws-sdk/nested-clients/@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.2.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-qzHp7ZDk1Ba4LDwQVCNp90xPGqSu7kmL7y5toBpccuhi3AH7dcVBIT/pUxYcInK4jOy6FikrcTGq5wxcka8UaQ=="], - "@aws-sdk/nested-clients/@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.1.4", "", { "dependencies": { "@smithy/config-resolver": "^4.2.2", "@smithy/credential-provider-imds": "^4.1.2", "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-pjX2iMTcOASaSanAd7bu6i3fcMMezr3NTr8Rh64etB0uHRZi+Aw86DoCxPESjY4UTIuA06hhqtTtw95o//imYA=="], + "@aws-sdk/nested-clients/@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.2.0", "", { "dependencies": { "@smithy/config-resolver": "^4.3.0", "@smithy/credential-provider-imds": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FxUHS3WXgx3bTWR6yQHNHHkQHZm/XKIi/CchTnKvBulN6obWpcbzJ6lDToXn+Wp0QlVKd7uYAz2/CTw1j7m+Kg=="], - "@aws-sdk/nested-clients/@smithy/util-retry": ["@smithy/util-retry@4.1.2", "", { "dependencies": { "@smithy/service-error-classification": "^4.1.2", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-NCgr1d0/EdeP6U5PSZ9Uv5SMR5XRRYoVr1kRVtKZxWL3tixEL3UatrPIMFZSKwHlCcp2zPLDvMubVDULRqeunA=="], + "@aws-sdk/nested-clients/@smithy/util-retry": ["@smithy/util-retry@4.2.0", "", { "dependencies": { "@smithy/service-error-classification": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BWSiuGbwRnEE2SFfaAZEX0TqaxtvtSYPM/J73PFVm+A29Fg1HTPiYFb8TmX1DXp4hgcdyJcNQmprfd5foeORsg=="], - "@aws-sdk/nested-clients/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@aws-sdk/nested-clients/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - "@aws-sdk/region-config-resolver/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/region-config-resolver/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/region-config-resolver/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@aws-sdk/region-config-resolver/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@aws-sdk/region-config-resolver/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/region-config-resolver/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-sdk/region-config-resolver/@smithy/util-config-provider": ["@smithy/util-config-provider@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ=="], + "@aws-sdk/region-config-resolver/@smithy/util-config-provider": ["@smithy/util-config-provider@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q=="], - "@aws-sdk/signature-v4-multi-region/@aws-sdk/types": ["@aws-sdk/types@3.893.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg=="], + "@aws-sdk/signature-v4-multi-region/@aws-sdk/types": ["@aws-sdk/types@3.901.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg=="], - "@aws-sdk/signature-v4-multi-region/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/signature-v4-multi-region/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/signature-v4-multi-region/@smithy/signature-v4": ["@smithy/signature-v4@5.2.1", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-middleware": "^4.1.1", "@smithy/util-uri-escape": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA=="], + "@aws-sdk/signature-v4-multi-region/@smithy/signature-v4": ["@smithy/signature-v4@5.3.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-uri-escape": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-MKNyhXEs99xAZaFhm88h+3/V+tCRDQ+PrDzRqL0xdDpq4gjxcMmf5rBA3YXgqZqMZ/XwemZEurCBQMfxZOWq/g=="], - "@aws-sdk/signature-v4-multi-region/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-sdk/signature-v4-multi-region/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], "@cspotcode/source-map-support/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="], @@ -3256,47 +3258,47 @@ "@poppinss/dumper/supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="], - "@smithy/chunked-blob-reader-native/@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="], + "@smithy/chunked-blob-reader-native/@smithy/util-base64": ["@smithy/util-base64@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA=="], "@smithy/config-resolver/@smithy/util-middleware": ["@smithy/util-middleware@2.2.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw=="], - "@smithy/core/@smithy/middleware-serde": ["@smithy/middleware-serde@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg=="], + "@smithy/core/@smithy/middleware-serde": ["@smithy/middleware-serde@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rpTQ7D65/EAbC6VydXlxjvbifTf4IH+sADKg6JmAvhkflJO2NvDeyU9qsWUNBelJiQFcXKejUHWRSdmpJmEmiw=="], - "@smithy/core/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@smithy/core/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@smithy/core/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@smithy/core/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@smithy/core/@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="], + "@smithy/core/@smithy/util-base64": ["@smithy/util-base64@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA=="], - "@smithy/core/@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ=="], + "@smithy/core/@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg=="], - "@smithy/core/@smithy/util-stream": ["@smithy/util-stream@4.3.2", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.2.1", "@smithy/node-http-handler": "^4.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g=="], + "@smithy/core/@smithy/util-stream": ["@smithy/util-stream@4.4.0", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg=="], - "@smithy/core/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@smithy/core/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - "@smithy/eventstream-codec/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@smithy/eventstream-codec/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@smithy/eventstream-codec/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@smithy/eventstream-codec/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - "@smithy/eventstream-serde-browser/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@smithy/eventstream-serde-browser/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@smithy/eventstream-serde-config-resolver/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@smithy/eventstream-serde-config-resolver/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@smithy/eventstream-serde-node/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@smithy/eventstream-serde-node/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@smithy/eventstream-serde-universal/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@smithy/eventstream-serde-universal/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], "@smithy/fetch-http-handler/@smithy/protocol-http": ["@smithy/protocol-http@3.3.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ=="], - "@smithy/hash-blob-browser/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@smithy/hash-blob-browser/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@smithy/hash-stream-node/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@smithy/hash-stream-node/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@smithy/hash-stream-node/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@smithy/hash-stream-node/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - "@smithy/md5-js/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@smithy/md5-js/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@smithy/md5-js/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@smithy/md5-js/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], "@smithy/middleware-content-length/@smithy/protocol-http": ["@smithy/protocol-http@3.3.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ=="], @@ -3316,11 +3318,11 @@ "@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], - "@smithy/util-endpoints/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@smithy/util-endpoints/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@smithy/util-endpoints/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@smithy/util-endpoints/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@smithy/util-middleware/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@smithy/util-middleware/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.5.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg=="], @@ -3328,7 +3330,7 @@ "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" }, "bundled": true }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="], + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.0.6", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@tybys/wasm-util": "^0.10.1" }, "bundled": true }, "sha512-DXj75ewm11LIWUk198QSKUTxjyRjsBwk09MuMk5DGK+GDUtyPhhEHOGP/Xwwj3DjQXXkivoBirmOnKrLfc0+9g=="], "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], @@ -3356,7 +3358,7 @@ "cliui/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], - "cloudflare/@types/node": ["@types/node@18.19.127", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-gSjxjrnKXML/yo0BO099uPixMqfpJU0TKYjpfLU7TrtA2WWDki412Np/RSTPRil1saKBhvVVKzVx/p/6p94nVA=="], + "cloudflare/@types/node": ["@types/node@18.19.129", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-hrmi5jWt2w60ayox3iIXwpMEnfUvOLJCRtrOPbHtH15nTjvO7uhnelvrdAs0dO0/zl5DZ3ZbahiaXEVb54ca/A=="], "eslint/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], @@ -3464,21 +3466,21 @@ "wrap-ansi-cjs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "@aws-crypto/crc32/@aws-sdk/types/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-crypto/crc32/@aws-sdk/types/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-crypto/crc32c/@aws-sdk/types/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-crypto/crc32c/@aws-sdk/types/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-crypto/sha1-browser/@aws-sdk/types/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-crypto/sha1-browser/@aws-sdk/types/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], - "@aws-crypto/sha256-browser/@aws-sdk/types/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-crypto/sha256-browser/@aws-sdk/types/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], "@aws-crypto/sha256-browser/@aws-sdk/types/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "@aws-crypto/sha256-js/@aws-sdk/types/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-crypto/sha256-js/@aws-sdk/types/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], "@aws-crypto/sha256-js/@aws-sdk/types/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "@aws-crypto/util/@aws-sdk/types/@smithy/types": ["@smithy/types@4.5.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg=="], + "@aws-crypto/util/@aws-sdk/types/@smithy/types": ["@smithy/types@4.6.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA=="], "@aws-crypto/util/@aws-sdk/types/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -3490,57 +3492,57 @@ "@aws-sdk/client-dynamodb/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], - "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Cnqhupdkp825ICySrz4QTI64Nq3AmUAscPW8dueanni0avYBDp7RBppX4H0+6icqN569B983XNfQ0YSImQhfhg=="], + "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5hAdVl3tBuARh3zX5MLJ1P/d+Kr5kXtDU3xm1pxUEF4xt2XkEEpwiX5fbkNkz2rbh3BCt2gOHsAbh6b3M7n+DA=="], - "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/credential-provider-env": "3.896.0", "@aws-sdk/credential-provider-http": "3.896.0", "@aws-sdk/credential-provider-process": "3.896.0", "@aws-sdk/credential-provider-sso": "3.896.0", "@aws-sdk/credential-provider-web-identity": "3.896.0", "@aws-sdk/nested-clients": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/credential-provider-imds": "^4.1.2", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-+rbYG98czzwZLTYHJasK+VBjnIeXk73mRpZXHvaa4kDNxBezdN2YsoGNpLlPSxPdbpq18LY3LRtkdFTaT6DIQA=="], + "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/credential-provider-env": "3.901.0", "@aws-sdk/credential-provider-http": "3.901.0", "@aws-sdk/credential-provider-process": "3.901.0", "@aws-sdk/credential-provider-sso": "3.901.0", "@aws-sdk/credential-provider-web-identity": "3.901.0", "@aws-sdk/nested-clients": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/credential-provider-imds": "^4.2.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-zxadcDS0hNJgv8n4hFYJNOXyfjaNE1vvqIiF/JzZSQpSSYXzCd+WxXef5bQh+W3giDtRUmkvP5JLbamEFjZKyw=="], - "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-UfWVMQPZy7dus40c4LWxh5vQ+I51z0q4vf09Eqas5848e9DrGRG46GYIuc/gy+4CqEypjbg/XNMjnZfGLHxVnQ=="], + "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-/IWgmgM3Cl1wTdJA5HqKMAojxLkYchh5kDuphApxKhupLu6Pu0JBOHU8A5GGeFvOycyaVwosod6zDduINZxe+A=="], - "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.896.0", "", { "dependencies": { "@aws-sdk/client-sso": "3.896.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/token-providers": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-77Te8WrVdLABKlv7QyetXP6aYEX1UORiahLA1PXQb/p66aFBw18Xc6JiN/6zJ4RqdyV1Xr9rwYBwGYua93ANIA=="], + "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.901.0", "", { "dependencies": { "@aws-sdk/client-sso": "3.901.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/token-providers": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-SjmqZQHmqFSET7+6xcZgtH7yEyh5q53LN87GqwYlJZ6KJ5oNw11acUNEhUOL1xTSJEvaWqwTIkS2zqrzLcM9bw=="], - "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/nested-clients": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gwMwZWumo+V0xJplO8j2HIb1TfPsF9fbcRGXS0CanEvjg4fF2Xs1pOQl2oCw3biPZpxHB0plNZjqSF2eneGg9g=="], + "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/nested-clients": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-NYjy/6NLxH9m01+pfpB4ql8QgAorJcu8tw69kzHwUd/ql6wUDTbC7HcXqtKlIwWjzjgj2BKL7j6SyFapgCuafA=="], - "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.1.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg=="], + "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-SOhFVvFH4D5HJZytb0bLKxCrSnwcqPiNlrw+S4ZXjMnsC+o9JcUQzbZOEQcA8yv9wJFNhfsUiIUKiEnYL68Big=="], - "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/client-dynamodb/@smithy/config-resolver/@smithy/util-config-provider": ["@smithy/util-config-provider@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ=="], + "@aws-sdk/client-dynamodb/@smithy/config-resolver/@smithy/util-config-provider": ["@smithy/util-config-provider@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q=="], - "@aws-sdk/client-dynamodb/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/client-dynamodb/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/client-dynamodb/@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-dynamodb/@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-dynamodb/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/client-dynamodb/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/client-dynamodb/@smithy/middleware-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.1.2", "", { "dependencies": { "@smithy/types": "^4.5.0" } }, "sha512-Kqd8wyfmBWHZNppZSMfrQFpc3M9Y/kjyN8n8P4DqJJtuwgK1H914R471HTw7+RL+T7+kI1f1gOnL7Vb5z9+NgQ=="], + "@aws-sdk/client-dynamodb/@smithy/middleware-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0" } }, "sha512-Ylv1ttUeKatpR0wEOMnHf1hXMktPUMObDClSWl2TpCVT4DwtJhCeighLzSLbgH3jr5pBNM0LDXT5yYxUvZ9WpA=="], - "@aws-sdk/client-dynamodb/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-dynamodb/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-dynamodb/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/client-dynamodb/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/client-dynamodb/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@aws-sdk/client-dynamodb/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], - "@aws-sdk/client-dynamodb/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/client-dynamodb/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/client-dynamodb/@smithy/smithy-client/@smithy/util-stream": ["@smithy/util-stream@4.3.2", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.2.1", "@smithy/node-http-handler": "^4.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g=="], + "@aws-sdk/client-dynamodb/@smithy/smithy-client/@smithy/util-stream": ["@smithy/util-stream@4.4.0", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg=="], - "@aws-sdk/client-dynamodb/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng=="], + "@aws-sdk/client-dynamodb/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BjATSNNyvVbQxOOlKse0b0pSezTWGMvA87SvoFoFlkRsKXVsN3bEtjCxvsNXJXfnAzlWFPaT9DmhWy1vn0sNEA=="], - "@aws-sdk/client-dynamodb/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-dynamodb/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-dynamodb/@smithy/util-defaults-mode-browser/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-dynamodb/@smithy/util-defaults-mode-browser/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-dynamodb/@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.1.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg=="], + "@aws-sdk/client-dynamodb/@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-SOhFVvFH4D5HJZytb0bLKxCrSnwcqPiNlrw+S4ZXjMnsC+o9JcUQzbZOEQcA8yv9wJFNhfsUiIUKiEnYL68Big=="], - "@aws-sdk/client-dynamodb/@smithy/util-defaults-mode-node/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-dynamodb/@smithy/util-defaults-mode-node/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-dynamodb/@smithy/util-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.1.2", "", { "dependencies": { "@smithy/types": "^4.5.0" } }, "sha512-Kqd8wyfmBWHZNppZSMfrQFpc3M9Y/kjyN8n8P4DqJJtuwgK1H914R471HTw7+RL+T7+kI1f1gOnL7Vb5z9+NgQ=="], + "@aws-sdk/client-dynamodb/@smithy/util-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0" } }, "sha512-Ylv1ttUeKatpR0wEOMnHf1hXMktPUMObDClSWl2TpCVT4DwtJhCeighLzSLbgH3jr5pBNM0LDXT5yYxUvZ9WpA=="], - "@aws-sdk/client-dynamodb/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-dynamodb/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-dynamodb/@smithy/util-waiter/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@aws-sdk/client-dynamodb/@smithy/util-waiter/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], "@aws-sdk/client-lambda/@aws-crypto/sha256-browser/@aws-crypto/supports-web-crypto": ["@aws-crypto/supports-web-crypto@5.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg=="], @@ -3550,59 +3552,59 @@ "@aws-sdk/client-lambda/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], - "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Cnqhupdkp825ICySrz4QTI64Nq3AmUAscPW8dueanni0avYBDp7RBppX4H0+6icqN569B983XNfQ0YSImQhfhg=="], + "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5hAdVl3tBuARh3zX5MLJ1P/d+Kr5kXtDU3xm1pxUEF4xt2XkEEpwiX5fbkNkz2rbh3BCt2gOHsAbh6b3M7n+DA=="], - "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/credential-provider-env": "3.896.0", "@aws-sdk/credential-provider-http": "3.896.0", "@aws-sdk/credential-provider-process": "3.896.0", "@aws-sdk/credential-provider-sso": "3.896.0", "@aws-sdk/credential-provider-web-identity": "3.896.0", "@aws-sdk/nested-clients": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/credential-provider-imds": "^4.1.2", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-+rbYG98czzwZLTYHJasK+VBjnIeXk73mRpZXHvaa4kDNxBezdN2YsoGNpLlPSxPdbpq18LY3LRtkdFTaT6DIQA=="], + "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/credential-provider-env": "3.901.0", "@aws-sdk/credential-provider-http": "3.901.0", "@aws-sdk/credential-provider-process": "3.901.0", "@aws-sdk/credential-provider-sso": "3.901.0", "@aws-sdk/credential-provider-web-identity": "3.901.0", "@aws-sdk/nested-clients": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/credential-provider-imds": "^4.2.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-zxadcDS0hNJgv8n4hFYJNOXyfjaNE1vvqIiF/JzZSQpSSYXzCd+WxXef5bQh+W3giDtRUmkvP5JLbamEFjZKyw=="], - "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-UfWVMQPZy7dus40c4LWxh5vQ+I51z0q4vf09Eqas5848e9DrGRG46GYIuc/gy+4CqEypjbg/XNMjnZfGLHxVnQ=="], + "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-/IWgmgM3Cl1wTdJA5HqKMAojxLkYchh5kDuphApxKhupLu6Pu0JBOHU8A5GGeFvOycyaVwosod6zDduINZxe+A=="], - "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.896.0", "", { "dependencies": { "@aws-sdk/client-sso": "3.896.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/token-providers": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-77Te8WrVdLABKlv7QyetXP6aYEX1UORiahLA1PXQb/p66aFBw18Xc6JiN/6zJ4RqdyV1Xr9rwYBwGYua93ANIA=="], + "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.901.0", "", { "dependencies": { "@aws-sdk/client-sso": "3.901.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/token-providers": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-SjmqZQHmqFSET7+6xcZgtH7yEyh5q53LN87GqwYlJZ6KJ5oNw11acUNEhUOL1xTSJEvaWqwTIkS2zqrzLcM9bw=="], - "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/nested-clients": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gwMwZWumo+V0xJplO8j2HIb1TfPsF9fbcRGXS0CanEvjg4fF2Xs1pOQl2oCw3biPZpxHB0plNZjqSF2eneGg9g=="], + "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/nested-clients": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-NYjy/6NLxH9m01+pfpB4ql8QgAorJcu8tw69kzHwUd/ql6wUDTbC7HcXqtKlIwWjzjgj2BKL7j6SyFapgCuafA=="], - "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.1.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg=="], + "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-SOhFVvFH4D5HJZytb0bLKxCrSnwcqPiNlrw+S4ZXjMnsC+o9JcUQzbZOEQcA8yv9wJFNhfsUiIUKiEnYL68Big=="], - "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/client-lambda/@smithy/config-resolver/@smithy/util-config-provider": ["@smithy/util-config-provider@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ=="], + "@aws-sdk/client-lambda/@smithy/config-resolver/@smithy/util-config-provider": ["@smithy/util-config-provider@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q=="], - "@aws-sdk/client-lambda/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/client-lambda/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/client-lambda/@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-lambda/@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-lambda/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/client-lambda/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/client-lambda/@smithy/middleware-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.1.2", "", { "dependencies": { "@smithy/types": "^4.5.0" } }, "sha512-Kqd8wyfmBWHZNppZSMfrQFpc3M9Y/kjyN8n8P4DqJJtuwgK1H914R471HTw7+RL+T7+kI1f1gOnL7Vb5z9+NgQ=="], + "@aws-sdk/client-lambda/@smithy/middleware-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0" } }, "sha512-Ylv1ttUeKatpR0wEOMnHf1hXMktPUMObDClSWl2TpCVT4DwtJhCeighLzSLbgH3jr5pBNM0LDXT5yYxUvZ9WpA=="], - "@aws-sdk/client-lambda/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-lambda/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-lambda/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/client-lambda/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/client-lambda/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@aws-sdk/client-lambda/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], - "@aws-sdk/client-lambda/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/client-lambda/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/client-lambda/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng=="], + "@aws-sdk/client-lambda/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BjATSNNyvVbQxOOlKse0b0pSezTWGMvA87SvoFoFlkRsKXVsN3bEtjCxvsNXJXfnAzlWFPaT9DmhWy1vn0sNEA=="], - "@aws-sdk/client-lambda/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-lambda/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-lambda/@smithy/util-defaults-mode-browser/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-lambda/@smithy/util-defaults-mode-browser/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-lambda/@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.1.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg=="], + "@aws-sdk/client-lambda/@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-SOhFVvFH4D5HJZytb0bLKxCrSnwcqPiNlrw+S4ZXjMnsC+o9JcUQzbZOEQcA8yv9wJFNhfsUiIUKiEnYL68Big=="], - "@aws-sdk/client-lambda/@smithy/util-defaults-mode-node/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-lambda/@smithy/util-defaults-mode-node/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-lambda/@smithy/util-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.1.2", "", { "dependencies": { "@smithy/types": "^4.5.0" } }, "sha512-Kqd8wyfmBWHZNppZSMfrQFpc3M9Y/kjyN8n8P4DqJJtuwgK1H914R471HTw7+RL+T7+kI1f1gOnL7Vb5z9+NgQ=="], + "@aws-sdk/client-lambda/@smithy/util-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0" } }, "sha512-Ylv1ttUeKatpR0wEOMnHf1hXMktPUMObDClSWl2TpCVT4DwtJhCeighLzSLbgH3jr5pBNM0LDXT5yYxUvZ9WpA=="], - "@aws-sdk/client-lambda/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-lambda/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-lambda/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@aws-sdk/client-lambda/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - "@aws-sdk/client-lambda/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-lambda/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-lambda/@smithy/util-waiter/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@aws-sdk/client-lambda/@smithy/util-waiter/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], "@aws-sdk/client-s3/@aws-crypto/sha256-browser/@aws-crypto/supports-web-crypto": ["@aws-crypto/supports-web-crypto@5.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg=="], @@ -3612,61 +3614,61 @@ "@aws-sdk/client-s3/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], - "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Cnqhupdkp825ICySrz4QTI64Nq3AmUAscPW8dueanni0avYBDp7RBppX4H0+6icqN569B983XNfQ0YSImQhfhg=="], + "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5hAdVl3tBuARh3zX5MLJ1P/d+Kr5kXtDU3xm1pxUEF4xt2XkEEpwiX5fbkNkz2rbh3BCt2gOHsAbh6b3M7n+DA=="], - "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/credential-provider-env": "3.896.0", "@aws-sdk/credential-provider-http": "3.896.0", "@aws-sdk/credential-provider-process": "3.896.0", "@aws-sdk/credential-provider-sso": "3.896.0", "@aws-sdk/credential-provider-web-identity": "3.896.0", "@aws-sdk/nested-clients": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/credential-provider-imds": "^4.1.2", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-+rbYG98czzwZLTYHJasK+VBjnIeXk73mRpZXHvaa4kDNxBezdN2YsoGNpLlPSxPdbpq18LY3LRtkdFTaT6DIQA=="], + "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/credential-provider-env": "3.901.0", "@aws-sdk/credential-provider-http": "3.901.0", "@aws-sdk/credential-provider-process": "3.901.0", "@aws-sdk/credential-provider-sso": "3.901.0", "@aws-sdk/credential-provider-web-identity": "3.901.0", "@aws-sdk/nested-clients": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/credential-provider-imds": "^4.2.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-zxadcDS0hNJgv8n4hFYJNOXyfjaNE1vvqIiF/JzZSQpSSYXzCd+WxXef5bQh+W3giDtRUmkvP5JLbamEFjZKyw=="], - "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-UfWVMQPZy7dus40c4LWxh5vQ+I51z0q4vf09Eqas5848e9DrGRG46GYIuc/gy+4CqEypjbg/XNMjnZfGLHxVnQ=="], + "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-/IWgmgM3Cl1wTdJA5HqKMAojxLkYchh5kDuphApxKhupLu6Pu0JBOHU8A5GGeFvOycyaVwosod6zDduINZxe+A=="], - "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.896.0", "", { "dependencies": { "@aws-sdk/client-sso": "3.896.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/token-providers": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-77Te8WrVdLABKlv7QyetXP6aYEX1UORiahLA1PXQb/p66aFBw18Xc6JiN/6zJ4RqdyV1Xr9rwYBwGYua93ANIA=="], + "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.901.0", "", { "dependencies": { "@aws-sdk/client-sso": "3.901.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/token-providers": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-SjmqZQHmqFSET7+6xcZgtH7yEyh5q53LN87GqwYlJZ6KJ5oNw11acUNEhUOL1xTSJEvaWqwTIkS2zqrzLcM9bw=="], - "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/nested-clients": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gwMwZWumo+V0xJplO8j2HIb1TfPsF9fbcRGXS0CanEvjg4fF2Xs1pOQl2oCw3biPZpxHB0plNZjqSF2eneGg9g=="], + "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/nested-clients": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-NYjy/6NLxH9m01+pfpB4ql8QgAorJcu8tw69kzHwUd/ql6wUDTbC7HcXqtKlIwWjzjgj2BKL7j6SyFapgCuafA=="], - "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.1.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg=="], + "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-SOhFVvFH4D5HJZytb0bLKxCrSnwcqPiNlrw+S4ZXjMnsC+o9JcUQzbZOEQcA8yv9wJFNhfsUiIUKiEnYL68Big=="], - "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], "@aws-sdk/client-s3/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.2.5", "", { "dependencies": { "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ=="], - "@aws-sdk/client-s3/@smithy/config-resolver/@smithy/util-config-provider": ["@smithy/util-config-provider@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ=="], + "@aws-sdk/client-s3/@smithy/config-resolver/@smithy/util-config-provider": ["@smithy/util-config-provider@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q=="], - "@aws-sdk/client-s3/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/client-s3/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/client-s3/@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-s3/@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-s3/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/client-s3/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/client-s3/@smithy/middleware-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.1.2", "", { "dependencies": { "@smithy/types": "^4.5.0" } }, "sha512-Kqd8wyfmBWHZNppZSMfrQFpc3M9Y/kjyN8n8P4DqJJtuwgK1H914R471HTw7+RL+T7+kI1f1gOnL7Vb5z9+NgQ=="], + "@aws-sdk/client-s3/@smithy/middleware-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0" } }, "sha512-Ylv1ttUeKatpR0wEOMnHf1hXMktPUMObDClSWl2TpCVT4DwtJhCeighLzSLbgH3jr5pBNM0LDXT5yYxUvZ9WpA=="], - "@aws-sdk/client-s3/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-s3/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-s3/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/client-s3/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/client-s3/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@aws-sdk/client-s3/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], - "@aws-sdk/client-s3/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/client-s3/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/client-s3/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng=="], + "@aws-sdk/client-s3/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BjATSNNyvVbQxOOlKse0b0pSezTWGMvA87SvoFoFlkRsKXVsN3bEtjCxvsNXJXfnAzlWFPaT9DmhWy1vn0sNEA=="], - "@aws-sdk/client-s3/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-s3/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-s3/@smithy/util-defaults-mode-browser/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-s3/@smithy/util-defaults-mode-browser/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-s3/@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.1.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg=="], + "@aws-sdk/client-s3/@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-SOhFVvFH4D5HJZytb0bLKxCrSnwcqPiNlrw+S4ZXjMnsC+o9JcUQzbZOEQcA8yv9wJFNhfsUiIUKiEnYL68Big=="], - "@aws-sdk/client-s3/@smithy/util-defaults-mode-node/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-s3/@smithy/util-defaults-mode-node/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-s3/@smithy/util-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.1.2", "", { "dependencies": { "@smithy/types": "^4.5.0" } }, "sha512-Kqd8wyfmBWHZNppZSMfrQFpc3M9Y/kjyN8n8P4DqJJtuwgK1H914R471HTw7+RL+T7+kI1f1gOnL7Vb5z9+NgQ=="], + "@aws-sdk/client-s3/@smithy/util-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0" } }, "sha512-Ylv1ttUeKatpR0wEOMnHf1hXMktPUMObDClSWl2TpCVT4DwtJhCeighLzSLbgH3jr5pBNM0LDXT5yYxUvZ9WpA=="], - "@aws-sdk/client-s3/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-s3/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-s3/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@aws-sdk/client-s3/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - "@aws-sdk/client-s3/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-s3/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-s3/@smithy/util-waiter/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@aws-sdk/client-s3/@smithy/util-waiter/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], "@aws-sdk/client-sqs/@aws-crypto/sha256-browser/@aws-crypto/supports-web-crypto": ["@aws-crypto/supports-web-crypto@5.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg=="], @@ -3676,153 +3678,153 @@ "@aws-sdk/client-sqs/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], - "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-Cnqhupdkp825ICySrz4QTI64Nq3AmUAscPW8dueanni0avYBDp7RBppX4H0+6icqN569B983XNfQ0YSImQhfhg=="], + "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5hAdVl3tBuARh3zX5MLJ1P/d+Kr5kXtDU3xm1pxUEF4xt2XkEEpwiX5fbkNkz2rbh3BCt2gOHsAbh6b3M7n+DA=="], - "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/credential-provider-env": "3.896.0", "@aws-sdk/credential-provider-http": "3.896.0", "@aws-sdk/credential-provider-process": "3.896.0", "@aws-sdk/credential-provider-sso": "3.896.0", "@aws-sdk/credential-provider-web-identity": "3.896.0", "@aws-sdk/nested-clients": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/credential-provider-imds": "^4.1.2", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-+rbYG98czzwZLTYHJasK+VBjnIeXk73mRpZXHvaa4kDNxBezdN2YsoGNpLlPSxPdbpq18LY3LRtkdFTaT6DIQA=="], + "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/credential-provider-env": "3.901.0", "@aws-sdk/credential-provider-http": "3.901.0", "@aws-sdk/credential-provider-process": "3.901.0", "@aws-sdk/credential-provider-sso": "3.901.0", "@aws-sdk/credential-provider-web-identity": "3.901.0", "@aws-sdk/nested-clients": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/credential-provider-imds": "^4.2.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-zxadcDS0hNJgv8n4hFYJNOXyfjaNE1vvqIiF/JzZSQpSSYXzCd+WxXef5bQh+W3giDtRUmkvP5JLbamEFjZKyw=="], - "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-UfWVMQPZy7dus40c4LWxh5vQ+I51z0q4vf09Eqas5848e9DrGRG46GYIuc/gy+4CqEypjbg/XNMjnZfGLHxVnQ=="], + "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-/IWgmgM3Cl1wTdJA5HqKMAojxLkYchh5kDuphApxKhupLu6Pu0JBOHU8A5GGeFvOycyaVwosod6zDduINZxe+A=="], - "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.896.0", "", { "dependencies": { "@aws-sdk/client-sso": "3.896.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/token-providers": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-77Te8WrVdLABKlv7QyetXP6aYEX1UORiahLA1PXQb/p66aFBw18Xc6JiN/6zJ4RqdyV1Xr9rwYBwGYua93ANIA=="], + "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.901.0", "", { "dependencies": { "@aws-sdk/client-sso": "3.901.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/token-providers": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-SjmqZQHmqFSET7+6xcZgtH7yEyh5q53LN87GqwYlJZ6KJ5oNw11acUNEhUOL1xTSJEvaWqwTIkS2zqrzLcM9bw=="], - "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/nested-clients": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gwMwZWumo+V0xJplO8j2HIb1TfPsF9fbcRGXS0CanEvjg4fF2Xs1pOQl2oCw3biPZpxHB0plNZjqSF2eneGg9g=="], + "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/nested-clients": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-NYjy/6NLxH9m01+pfpB4ql8QgAorJcu8tw69kzHwUd/ql6wUDTbC7HcXqtKlIwWjzjgj2BKL7j6SyFapgCuafA=="], - "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.1.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg=="], + "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-SOhFVvFH4D5HJZytb0bLKxCrSnwcqPiNlrw+S4ZXjMnsC+o9JcUQzbZOEQcA8yv9wJFNhfsUiIUKiEnYL68Big=="], - "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/client-sqs/@smithy/config-resolver/@smithy/util-config-provider": ["@smithy/util-config-provider@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ=="], + "@aws-sdk/client-sqs/@smithy/config-resolver/@smithy/util-config-provider": ["@smithy/util-config-provider@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q=="], - "@aws-sdk/client-sqs/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/client-sqs/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/client-sqs/@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-sqs/@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-sqs/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/client-sqs/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/client-sqs/@smithy/middleware-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.1.2", "", { "dependencies": { "@smithy/types": "^4.5.0" } }, "sha512-Kqd8wyfmBWHZNppZSMfrQFpc3M9Y/kjyN8n8P4DqJJtuwgK1H914R471HTw7+RL+T7+kI1f1gOnL7Vb5z9+NgQ=="], + "@aws-sdk/client-sqs/@smithy/middleware-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0" } }, "sha512-Ylv1ttUeKatpR0wEOMnHf1hXMktPUMObDClSWl2TpCVT4DwtJhCeighLzSLbgH3jr5pBNM0LDXT5yYxUvZ9WpA=="], - "@aws-sdk/client-sqs/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-sqs/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-sqs/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/client-sqs/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/client-sqs/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@aws-sdk/client-sqs/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], - "@aws-sdk/client-sqs/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/client-sqs/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/client-sqs/@smithy/smithy-client/@smithy/util-stream": ["@smithy/util-stream@4.3.2", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.2.1", "@smithy/node-http-handler": "^4.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g=="], + "@aws-sdk/client-sqs/@smithy/smithy-client/@smithy/util-stream": ["@smithy/util-stream@4.4.0", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg=="], - "@aws-sdk/client-sqs/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng=="], + "@aws-sdk/client-sqs/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BjATSNNyvVbQxOOlKse0b0pSezTWGMvA87SvoFoFlkRsKXVsN3bEtjCxvsNXJXfnAzlWFPaT9DmhWy1vn0sNEA=="], - "@aws-sdk/client-sqs/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-sqs/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-sqs/@smithy/util-defaults-mode-browser/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-sqs/@smithy/util-defaults-mode-browser/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-sqs/@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.1.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg=="], + "@aws-sdk/client-sqs/@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-SOhFVvFH4D5HJZytb0bLKxCrSnwcqPiNlrw+S4ZXjMnsC+o9JcUQzbZOEQcA8yv9wJFNhfsUiIUKiEnYL68Big=="], - "@aws-sdk/client-sqs/@smithy/util-defaults-mode-node/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/client-sqs/@smithy/util-defaults-mode-node/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/client-sqs/@smithy/util-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.1.2", "", { "dependencies": { "@smithy/types": "^4.5.0" } }, "sha512-Kqd8wyfmBWHZNppZSMfrQFpc3M9Y/kjyN8n8P4DqJJtuwgK1H914R471HTw7+RL+T7+kI1f1gOnL7Vb5z9+NgQ=="], + "@aws-sdk/client-sqs/@smithy/util-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0" } }, "sha512-Ylv1ttUeKatpR0wEOMnHf1hXMktPUMObDClSWl2TpCVT4DwtJhCeighLzSLbgH3jr5pBNM0LDXT5yYxUvZ9WpA=="], - "@aws-sdk/client-sqs/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-sqs/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], "@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.2.5", "", { "dependencies": { "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ=="], - "@aws-sdk/core/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/core/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/core/@smithy/signature-v4/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@aws-sdk/core/@smithy/signature-v4/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - "@aws-sdk/core/@smithy/signature-v4/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/core/@smithy/signature-v4/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.2.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.3.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-jFVjuQeV8TkxaRlcCNg0GFVgg98tscsmIrIwRFeC74TIUyLE3jmY9xgc1WXrPQYRjQNK3aRoaIk6fhFRGOIoGw=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/middleware-stack": ["@smithy/middleware-stack@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/middleware-stack": ["@smithy/middleware-stack@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-G5CJ//eqRd9OARrQu9MK1H8fNm2sMtqFh6j8/rPozhEL+Dokpvi1Og+aCixTuwDAGZUkJPk6hJT5jchbk/WCyg=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream": ["@smithy/util-stream@4.3.2", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.2.1", "@smithy/node-http-handler": "^4.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream": ["@smithy/util-stream@4.4.0", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg=="], - "@aws-sdk/core/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/core/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/core/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/core/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/credential-provider-http/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/credential-provider-http/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/credential-provider-http/@smithy/fetch-http-handler/@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="], + "@aws-sdk/credential-provider-http/@smithy/fetch-http-handler/@smithy/util-base64": ["@smithy/util-base64@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA=="], - "@aws-sdk/credential-provider-http/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@aws-sdk/credential-provider-http/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], - "@aws-sdk/credential-provider-http/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/credential-provider-http/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.2.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg=="], + "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.3.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-jFVjuQeV8TkxaRlcCNg0GFVgg98tscsmIrIwRFeC74TIUyLE3jmY9xgc1WXrPQYRjQNK3aRoaIk6fhFRGOIoGw=="], - "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-stack": ["@smithy/middleware-stack@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A=="], + "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-stack": ["@smithy/middleware-stack@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-G5CJ//eqRd9OARrQu9MK1H8fNm2sMtqFh6j8/rPozhEL+Dokpvi1Og+aCixTuwDAGZUkJPk6hJT5jchbk/WCyg=="], - "@aws-sdk/credential-provider-http/@smithy/util-stream/@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="], + "@aws-sdk/credential-provider-http/@smithy/util-stream/@smithy/util-base64": ["@smithy/util-base64@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA=="], - "@aws-sdk/credential-provider-http/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/credential-provider-http/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/credential-provider-http/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@aws-sdk/credential-provider-http/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - "@aws-sdk/credential-provider-http/@smithy/util-stream/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@aws-sdk/credential-provider-http/@smithy/util-stream/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - "@aws-sdk/middleware-bucket-endpoint/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/middleware-bucket-endpoint/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/middleware-bucket-endpoint/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/middleware-bucket-endpoint/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/middleware-endpoint-discovery/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/middleware-endpoint-discovery/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/middleware-endpoint-discovery/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/middleware-endpoint-discovery/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], "@aws-sdk/middleware-flexible-checksums/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.2.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/node-http-handler": ["@smithy/node-http-handler@4.2.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/node-http-handler": ["@smithy/node-http-handler@4.3.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/util-base64": ["@smithy/util-base64@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/middleware-sdk-s3/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/middleware-sdk-s3/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/middleware-sdk-s3/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/middleware-sdk-s3/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/middleware-sdk-s3/@smithy/signature-v4/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@aws-sdk/middleware-sdk-s3/@smithy/signature-v4/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - "@aws-sdk/middleware-sdk-s3/@smithy/signature-v4/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/middleware-sdk-s3/@smithy/signature-v4/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.2.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg=="], + "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.3.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-jFVjuQeV8TkxaRlcCNg0GFVgg98tscsmIrIwRFeC74TIUyLE3jmY9xgc1WXrPQYRjQNK3aRoaIk6fhFRGOIoGw=="], - "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client/@smithy/middleware-stack": ["@smithy/middleware-stack@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A=="], + "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client/@smithy/middleware-stack": ["@smithy/middleware-stack@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-G5CJ//eqRd9OARrQu9MK1H8fNm2sMtqFh6j8/rPozhEL+Dokpvi1Og+aCixTuwDAGZUkJPk6hJT5jchbk/WCyg=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.2.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/node-http-handler": ["@smithy/node-http-handler@4.2.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/node-http-handler": ["@smithy/node-http-handler@4.3.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/util-base64": ["@smithy/util-base64@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.2.4", "", { "dependencies": { "@smithy/core": "^3.12.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-middleware": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.3.0", "", { "dependencies": { "@smithy/core": "^3.14.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-middleware": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-jFVjuQeV8TkxaRlcCNg0GFVgg98tscsmIrIwRFeC74TIUyLE3jmY9xgc1WXrPQYRjQNK3aRoaIk6fhFRGOIoGw=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-stack": ["@smithy/middleware-stack@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-stack": ["@smithy/middleware-stack@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-G5CJ//eqRd9OARrQu9MK1H8fNm2sMtqFh6j8/rPozhEL+Dokpvi1Og+aCixTuwDAGZUkJPk6hJT5jchbk/WCyg=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/protocol-http": ["@smithy/protocol-http@5.2.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/protocol-http": ["@smithy/protocol-http@5.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream": ["@smithy/util-stream@4.3.2", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.2.1", "@smithy/node-http-handler": "^4.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream": ["@smithy/util-stream@4.4.0", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], "@aws-sdk/nested-clients/@aws-crypto/sha256-browser/@aws-crypto/supports-web-crypto": ["@aws-crypto/supports-web-crypto@5.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg=="], @@ -3832,49 +3834,49 @@ "@aws-sdk/nested-clients/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], - "@aws-sdk/nested-clients/@smithy/config-resolver/@smithy/util-config-provider": ["@smithy/util-config-provider@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ=="], + "@aws-sdk/nested-clients/@smithy/config-resolver/@smithy/util-config-provider": ["@smithy/util-config-provider@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q=="], - "@aws-sdk/nested-clients/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/nested-clients/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/nested-clients/@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/nested-clients/@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/nested-clients/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/nested-clients/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/nested-clients/@smithy/middleware-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.1.2", "", { "dependencies": { "@smithy/types": "^4.5.0" } }, "sha512-Kqd8wyfmBWHZNppZSMfrQFpc3M9Y/kjyN8n8P4DqJJtuwgK1H914R471HTw7+RL+T7+kI1f1gOnL7Vb5z9+NgQ=="], + "@aws-sdk/nested-clients/@smithy/middleware-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0" } }, "sha512-Ylv1ttUeKatpR0wEOMnHf1hXMktPUMObDClSWl2TpCVT4DwtJhCeighLzSLbgH3jr5pBNM0LDXT5yYxUvZ9WpA=="], - "@aws-sdk/nested-clients/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/nested-clients/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/nested-clients/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/nested-clients/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/nested-clients/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@aws-sdk/nested-clients/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], - "@aws-sdk/nested-clients/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/nested-clients/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/nested-clients/@smithy/smithy-client/@smithy/util-stream": ["@smithy/util-stream@4.3.2", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.2.1", "@smithy/node-http-handler": "^4.2.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-hex-encoding": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g=="], + "@aws-sdk/nested-clients/@smithy/smithy-client/@smithy/util-stream": ["@smithy/util-stream@4.4.0", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg=="], - "@aws-sdk/nested-clients/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng=="], + "@aws-sdk/nested-clients/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BjATSNNyvVbQxOOlKse0b0pSezTWGMvA87SvoFoFlkRsKXVsN3bEtjCxvsNXJXfnAzlWFPaT9DmhWy1vn0sNEA=="], - "@aws-sdk/nested-clients/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/nested-clients/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/nested-clients/@smithy/util-defaults-mode-browser/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/nested-clients/@smithy/util-defaults-mode-browser/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/nested-clients/@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.1.2", "", { "dependencies": { "@smithy/node-config-provider": "^4.2.2", "@smithy/property-provider": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "tslib": "^2.6.2" } }, "sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg=="], + "@aws-sdk/nested-clients/@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.0", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.0", "@smithy/property-provider": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-SOhFVvFH4D5HJZytb0bLKxCrSnwcqPiNlrw+S4ZXjMnsC+o9JcUQzbZOEQcA8yv9wJFNhfsUiIUKiEnYL68Big=="], - "@aws-sdk/nested-clients/@smithy/util-defaults-mode-node/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/nested-clients/@smithy/util-defaults-mode-node/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/nested-clients/@smithy/util-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.1.2", "", { "dependencies": { "@smithy/types": "^4.5.0" } }, "sha512-Kqd8wyfmBWHZNppZSMfrQFpc3M9Y/kjyN8n8P4DqJJtuwgK1H914R471HTw7+RL+T7+kI1f1gOnL7Vb5z9+NgQ=="], + "@aws-sdk/nested-clients/@smithy/util-retry/@smithy/service-error-classification": ["@smithy/service-error-classification@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0" } }, "sha512-Ylv1ttUeKatpR0wEOMnHf1hXMktPUMObDClSWl2TpCVT4DwtJhCeighLzSLbgH3jr5pBNM0LDXT5yYxUvZ9WpA=="], - "@aws-sdk/nested-clients/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/nested-clients/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/region-config-resolver/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/region-config-resolver/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/region-config-resolver/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/region-config-resolver/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - "@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], "@dotenvx/dotenvx/execa/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], @@ -3900,29 +3902,29 @@ "@node-minify/core/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], - "@smithy/chunked-blob-reader-native/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@smithy/chunked-blob-reader-native/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@smithy/chunked-blob-reader-native/@smithy/util-base64/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@smithy/chunked-blob-reader-native/@smithy/util-base64/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - "@smithy/core/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@smithy/core/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@smithy/core/@smithy/util-stream/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.2.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng=="], + "@smithy/core/@smithy/util-stream/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw=="], - "@smithy/core/@smithy/util-stream/@smithy/node-http-handler": ["@smithy/node-http-handler@4.2.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw=="], + "@smithy/core/@smithy/util-stream/@smithy/node-http-handler": ["@smithy/node-http-handler@4.3.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q=="], - "@smithy/core/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@smithy/core/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@smithy/core/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@smithy/core/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - "@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@smithy/core/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@smithy/hash-stream-node/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@smithy/hash-stream-node/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@smithy/md5-js/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@smithy/md5-js/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@smithy/util-endpoints/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@smithy/util-endpoints/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@smithy/util-endpoints/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@smithy/util-endpoints/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], "@typescript-eslint/typescript-estree/fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], @@ -4126,131 +4128,131 @@ "@aws-sdk/client-dynamodb/@aws-crypto/sha256-js/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], - "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/client-sso": ["@aws-sdk/client-sso@3.896.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/middleware-host-header": "3.893.0", "@aws-sdk/middleware-logger": "3.893.0", "@aws-sdk/middleware-recursion-detection": "3.893.0", "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/region-config-resolver": "3.893.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@aws-sdk/util-user-agent-browser": "3.893.0", "@aws-sdk/util-user-agent-node": "3.896.0", "@smithy/config-resolver": "^4.2.2", "@smithy/core": "^3.12.0", "@smithy/fetch-http-handler": "^5.2.1", "@smithy/hash-node": "^4.1.1", "@smithy/invalid-dependency": "^4.1.1", "@smithy/middleware-content-length": "^4.1.1", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-retry": "^4.3.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/middleware-stack": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/node-http-handler": "^4.2.1", "@smithy/protocol-http": "^5.2.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-base64": "^4.1.0", "@smithy/util-body-length-browser": "^4.1.0", "@smithy/util-body-length-node": "^4.1.0", "@smithy/util-defaults-mode-browser": "^4.1.4", "@smithy/util-defaults-mode-node": "^4.1.4", "@smithy/util-endpoints": "^3.1.2", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mpE3mrNili1dcvEvxaYjyoib8HlRXkb2bY5a3WeK++KObFY+HUujKtgQmiNSRX5YwQszm//fTrmGMmv9zpMcKg=="], + "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/client-sso": ["@aws-sdk/client-sso@3.901.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/middleware-host-header": "3.901.0", "@aws-sdk/middleware-logger": "3.901.0", "@aws-sdk/middleware-recursion-detection": "3.901.0", "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/region-config-resolver": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@aws-sdk/util-user-agent-browser": "3.901.0", "@aws-sdk/util-user-agent-node": "3.901.0", "@smithy/config-resolver": "^4.3.0", "@smithy/core": "^3.14.0", "@smithy/fetch-http-handler": "^5.3.0", "@smithy/hash-node": "^4.2.0", "@smithy/invalid-dependency": "^4.2.0", "@smithy/middleware-content-length": "^4.2.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-retry": "^4.4.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.0", "@smithy/util-defaults-mode-browser": "^4.2.0", "@smithy/util-defaults-mode-node": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-sGyDjjkJ7ppaE+bAKL/Q5IvVCxtoyBIzN+7+hWTS/mUxWJ9EOq9238IqmVIIK6sYNIzEf9yhobfMARasPYVTNg=="], - "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/nested-clients": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-WBoD+RY7tUfW9M+wGrZ2vdveR+ziZOjGHWFY3lcGnDvI8KE+fcSccEOTxgJBNBS5Z8B+WHKU2sZjb+Z7QqGwjw=="], + "@aws-sdk/client-dynamodb/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/nested-clients": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-pJEr1Ggbc/uVTDqp9IbNu9hdr0eQf3yZix3s4Nnyvmg4xmJSGAlbPC9LrNr5u3CDZoc8Z9CuLrvbP4MwYquNpQ=="], - "@aws-sdk/client-dynamodb/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/client-dynamodb/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/client-dynamodb/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/client-dynamodb/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/client-dynamodb/@smithy/smithy-client/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-dynamodb/@smithy/smithy-client/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-dynamodb/@smithy/smithy-client/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@aws-sdk/client-dynamodb/@smithy/smithy-client/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], "@aws-sdk/client-lambda/@aws-crypto/sha256-js/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], - "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/client-sso": ["@aws-sdk/client-sso@3.896.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/middleware-host-header": "3.893.0", "@aws-sdk/middleware-logger": "3.893.0", "@aws-sdk/middleware-recursion-detection": "3.893.0", "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/region-config-resolver": "3.893.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@aws-sdk/util-user-agent-browser": "3.893.0", "@aws-sdk/util-user-agent-node": "3.896.0", "@smithy/config-resolver": "^4.2.2", "@smithy/core": "^3.12.0", "@smithy/fetch-http-handler": "^5.2.1", "@smithy/hash-node": "^4.1.1", "@smithy/invalid-dependency": "^4.1.1", "@smithy/middleware-content-length": "^4.1.1", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-retry": "^4.3.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/middleware-stack": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/node-http-handler": "^4.2.1", "@smithy/protocol-http": "^5.2.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-base64": "^4.1.0", "@smithy/util-body-length-browser": "^4.1.0", "@smithy/util-body-length-node": "^4.1.0", "@smithy/util-defaults-mode-browser": "^4.1.4", "@smithy/util-defaults-mode-node": "^4.1.4", "@smithy/util-endpoints": "^3.1.2", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mpE3mrNili1dcvEvxaYjyoib8HlRXkb2bY5a3WeK++KObFY+HUujKtgQmiNSRX5YwQszm//fTrmGMmv9zpMcKg=="], + "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/client-sso": ["@aws-sdk/client-sso@3.901.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/middleware-host-header": "3.901.0", "@aws-sdk/middleware-logger": "3.901.0", "@aws-sdk/middleware-recursion-detection": "3.901.0", "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/region-config-resolver": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@aws-sdk/util-user-agent-browser": "3.901.0", "@aws-sdk/util-user-agent-node": "3.901.0", "@smithy/config-resolver": "^4.3.0", "@smithy/core": "^3.14.0", "@smithy/fetch-http-handler": "^5.3.0", "@smithy/hash-node": "^4.2.0", "@smithy/invalid-dependency": "^4.2.0", "@smithy/middleware-content-length": "^4.2.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-retry": "^4.4.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.0", "@smithy/util-defaults-mode-browser": "^4.2.0", "@smithy/util-defaults-mode-node": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-sGyDjjkJ7ppaE+bAKL/Q5IvVCxtoyBIzN+7+hWTS/mUxWJ9EOq9238IqmVIIK6sYNIzEf9yhobfMARasPYVTNg=="], - "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/nested-clients": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-WBoD+RY7tUfW9M+wGrZ2vdveR+ziZOjGHWFY3lcGnDvI8KE+fcSccEOTxgJBNBS5Z8B+WHKU2sZjb+Z7QqGwjw=="], + "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/nested-clients": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-pJEr1Ggbc/uVTDqp9IbNu9hdr0eQf3yZix3s4Nnyvmg4xmJSGAlbPC9LrNr5u3CDZoc8Z9CuLrvbP4MwYquNpQ=="], - "@aws-sdk/client-lambda/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/client-lambda/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/client-lambda/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/client-lambda/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], "@aws-sdk/client-s3/@aws-crypto/sha256-js/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], - "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/client-sso": ["@aws-sdk/client-sso@3.896.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/middleware-host-header": "3.893.0", "@aws-sdk/middleware-logger": "3.893.0", "@aws-sdk/middleware-recursion-detection": "3.893.0", "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/region-config-resolver": "3.893.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@aws-sdk/util-user-agent-browser": "3.893.0", "@aws-sdk/util-user-agent-node": "3.896.0", "@smithy/config-resolver": "^4.2.2", "@smithy/core": "^3.12.0", "@smithy/fetch-http-handler": "^5.2.1", "@smithy/hash-node": "^4.1.1", "@smithy/invalid-dependency": "^4.1.1", "@smithy/middleware-content-length": "^4.1.1", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-retry": "^4.3.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/middleware-stack": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/node-http-handler": "^4.2.1", "@smithy/protocol-http": "^5.2.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-base64": "^4.1.0", "@smithy/util-body-length-browser": "^4.1.0", "@smithy/util-body-length-node": "^4.1.0", "@smithy/util-defaults-mode-browser": "^4.1.4", "@smithy/util-defaults-mode-node": "^4.1.4", "@smithy/util-endpoints": "^3.1.2", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mpE3mrNili1dcvEvxaYjyoib8HlRXkb2bY5a3WeK++KObFY+HUujKtgQmiNSRX5YwQszm//fTrmGMmv9zpMcKg=="], + "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/client-sso": ["@aws-sdk/client-sso@3.901.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/middleware-host-header": "3.901.0", "@aws-sdk/middleware-logger": "3.901.0", "@aws-sdk/middleware-recursion-detection": "3.901.0", "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/region-config-resolver": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@aws-sdk/util-user-agent-browser": "3.901.0", "@aws-sdk/util-user-agent-node": "3.901.0", "@smithy/config-resolver": "^4.3.0", "@smithy/core": "^3.14.0", "@smithy/fetch-http-handler": "^5.3.0", "@smithy/hash-node": "^4.2.0", "@smithy/invalid-dependency": "^4.2.0", "@smithy/middleware-content-length": "^4.2.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-retry": "^4.4.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.0", "@smithy/util-defaults-mode-browser": "^4.2.0", "@smithy/util-defaults-mode-node": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-sGyDjjkJ7ppaE+bAKL/Q5IvVCxtoyBIzN+7+hWTS/mUxWJ9EOq9238IqmVIIK6sYNIzEf9yhobfMARasPYVTNg=="], - "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/nested-clients": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-WBoD+RY7tUfW9M+wGrZ2vdveR+ziZOjGHWFY3lcGnDvI8KE+fcSccEOTxgJBNBS5Z8B+WHKU2sZjb+Z7QqGwjw=="], + "@aws-sdk/client-s3/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/nested-clients": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-pJEr1Ggbc/uVTDqp9IbNu9hdr0eQf3yZix3s4Nnyvmg4xmJSGAlbPC9LrNr5u3CDZoc8Z9CuLrvbP4MwYquNpQ=="], "@aws-sdk/client-s3/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.1.1", "", {}, "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw=="], - "@aws-sdk/client-s3/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/client-s3/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/client-s3/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/client-s3/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], "@aws-sdk/client-sqs/@aws-crypto/sha256-js/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], - "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/client-sso": ["@aws-sdk/client-sso@3.896.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.896.0", "@aws-sdk/middleware-host-header": "3.893.0", "@aws-sdk/middleware-logger": "3.893.0", "@aws-sdk/middleware-recursion-detection": "3.893.0", "@aws-sdk/middleware-user-agent": "3.896.0", "@aws-sdk/region-config-resolver": "3.893.0", "@aws-sdk/types": "3.893.0", "@aws-sdk/util-endpoints": "3.895.0", "@aws-sdk/util-user-agent-browser": "3.893.0", "@aws-sdk/util-user-agent-node": "3.896.0", "@smithy/config-resolver": "^4.2.2", "@smithy/core": "^3.12.0", "@smithy/fetch-http-handler": "^5.2.1", "@smithy/hash-node": "^4.1.1", "@smithy/invalid-dependency": "^4.1.1", "@smithy/middleware-content-length": "^4.1.1", "@smithy/middleware-endpoint": "^4.2.4", "@smithy/middleware-retry": "^4.3.0", "@smithy/middleware-serde": "^4.1.1", "@smithy/middleware-stack": "^4.1.1", "@smithy/node-config-provider": "^4.2.2", "@smithy/node-http-handler": "^4.2.1", "@smithy/protocol-http": "^5.2.1", "@smithy/smithy-client": "^4.6.4", "@smithy/types": "^4.5.0", "@smithy/url-parser": "^4.1.1", "@smithy/util-base64": "^4.1.0", "@smithy/util-body-length-browser": "^4.1.0", "@smithy/util-body-length-node": "^4.1.0", "@smithy/util-defaults-mode-browser": "^4.1.4", "@smithy/util-defaults-mode-node": "^4.1.4", "@smithy/util-endpoints": "^3.1.2", "@smithy/util-middleware": "^4.1.1", "@smithy/util-retry": "^4.1.2", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mpE3mrNili1dcvEvxaYjyoib8HlRXkb2bY5a3WeK++KObFY+HUujKtgQmiNSRX5YwQszm//fTrmGMmv9zpMcKg=="], + "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/client-sso": ["@aws-sdk/client-sso@3.901.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.901.0", "@aws-sdk/middleware-host-header": "3.901.0", "@aws-sdk/middleware-logger": "3.901.0", "@aws-sdk/middleware-recursion-detection": "3.901.0", "@aws-sdk/middleware-user-agent": "3.901.0", "@aws-sdk/region-config-resolver": "3.901.0", "@aws-sdk/types": "3.901.0", "@aws-sdk/util-endpoints": "3.901.0", "@aws-sdk/util-user-agent-browser": "3.901.0", "@aws-sdk/util-user-agent-node": "3.901.0", "@smithy/config-resolver": "^4.3.0", "@smithy/core": "^3.14.0", "@smithy/fetch-http-handler": "^5.3.0", "@smithy/hash-node": "^4.2.0", "@smithy/invalid-dependency": "^4.2.0", "@smithy/middleware-content-length": "^4.2.0", "@smithy/middleware-endpoint": "^4.3.0", "@smithy/middleware-retry": "^4.4.0", "@smithy/middleware-serde": "^4.2.0", "@smithy/middleware-stack": "^4.2.0", "@smithy/node-config-provider": "^4.3.0", "@smithy/node-http-handler": "^4.3.0", "@smithy/protocol-http": "^5.3.0", "@smithy/smithy-client": "^4.7.0", "@smithy/types": "^4.6.0", "@smithy/url-parser": "^4.2.0", "@smithy/util-base64": "^4.2.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.0", "@smithy/util-defaults-mode-browser": "^4.2.0", "@smithy/util-defaults-mode-node": "^4.2.0", "@smithy/util-endpoints": "^3.2.0", "@smithy/util-middleware": "^4.2.0", "@smithy/util-retry": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-sGyDjjkJ7ppaE+bAKL/Q5IvVCxtoyBIzN+7+hWTS/mUxWJ9EOq9238IqmVIIK6sYNIzEf9yhobfMARasPYVTNg=="], - "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.896.0", "", { "dependencies": { "@aws-sdk/core": "3.896.0", "@aws-sdk/nested-clients": "3.896.0", "@aws-sdk/types": "3.893.0", "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-WBoD+RY7tUfW9M+wGrZ2vdveR+ziZOjGHWFY3lcGnDvI8KE+fcSccEOTxgJBNBS5Z8B+WHKU2sZjb+Z7QqGwjw=="], + "@aws-sdk/client-sqs/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.901.0", "", { "dependencies": { "@aws-sdk/core": "3.901.0", "@aws-sdk/nested-clients": "3.901.0", "@aws-sdk/types": "3.901.0", "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-pJEr1Ggbc/uVTDqp9IbNu9hdr0eQf3yZix3s4Nnyvmg4xmJSGAlbPC9LrNr5u3CDZoc8Z9CuLrvbP4MwYquNpQ=="], - "@aws-sdk/client-sqs/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/client-sqs/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/client-sqs/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/client-sqs/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/client-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/client-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/client-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@aws-sdk/client-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], "@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.1.1", "", {}, "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/middleware-serde": ["@smithy/middleware-serde@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/middleware-serde": ["@smithy/middleware-serde@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rpTQ7D65/EAbC6VydXlxjvbifTf4IH+sADKg6JmAvhkflJO2NvDeyU9qsWUNBelJiQFcXKejUHWRSdmpJmEmiw=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser": ["@smithy/url-parser@4.1.1", "", { "dependencies": { "@smithy/querystring-parser": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser": ["@smithy/url-parser@4.2.0", "", { "dependencies": { "@smithy/querystring-parser": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-AlBmD6Idav2ugmoAL6UtR6ItS7jU5h5RNqLMZC7QrLCoITA9NzIN3nx9GWi8g4z1pfWh2r9r96SX/jHiNwPJ9A=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.2.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler": ["@smithy/node-http-handler@4.2.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler": ["@smithy/node-http-handler@4.3.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - "@aws-sdk/credential-provider-http/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/credential-provider-http/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/credential-provider-http/@smithy/fetch-http-handler/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/credential-provider-http/@smithy/fetch-http-handler/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/credential-provider-http/@smithy/fetch-http-handler/@smithy/util-base64/@smithy/util-utf8": ["@smithy/util-utf8@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ=="], + "@aws-sdk/credential-provider-http/@smithy/fetch-http-handler/@smithy/util-base64/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], - "@aws-sdk/credential-provider-http/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/credential-provider-http/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/middleware-serde": ["@smithy/middleware-serde@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg=="], + "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/middleware-serde": ["@smithy/middleware-serde@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rpTQ7D65/EAbC6VydXlxjvbifTf4IH+sADKg6JmAvhkflJO2NvDeyU9qsWUNBelJiQFcXKejUHWRSdmpJmEmiw=="], - "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser": ["@smithy/url-parser@4.1.1", "", { "dependencies": { "@smithy/querystring-parser": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg=="], + "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser": ["@smithy/url-parser@4.2.0", "", { "dependencies": { "@smithy/querystring-parser": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-AlBmD6Idav2ugmoAL6UtR6ItS7jU5h5RNqLMZC7QrLCoITA9NzIN3nx9GWi8g4z1pfWh2r9r96SX/jHiNwPJ9A=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/middleware-serde": ["@smithy/middleware-serde@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg=="], + "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/middleware-serde": ["@smithy/middleware-serde@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rpTQ7D65/EAbC6VydXlxjvbifTf4IH+sADKg6JmAvhkflJO2NvDeyU9qsWUNBelJiQFcXKejUHWRSdmpJmEmiw=="], - "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser": ["@smithy/url-parser@4.1.1", "", { "dependencies": { "@smithy/querystring-parser": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg=="], + "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser": ["@smithy/url-parser@4.2.0", "", { "dependencies": { "@smithy/querystring-parser": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-AlBmD6Idav2ugmoAL6UtR6ItS7jU5h5RNqLMZC7QrLCoITA9NzIN3nx9GWi8g4z1pfWh2r9r96SX/jHiNwPJ9A=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/middleware-serde": ["@smithy/middleware-serde@4.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/middleware-serde": ["@smithy/middleware-serde@4.2.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rpTQ7D65/EAbC6VydXlxjvbifTf4IH+sADKg6JmAvhkflJO2NvDeyU9qsWUNBelJiQFcXKejUHWRSdmpJmEmiw=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/node-config-provider": ["@smithy/node-config-provider@4.2.2", "", { "dependencies": { "@smithy/property-provider": "^4.1.1", "@smithy/shared-ini-file-loader": "^4.2.0", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/node-config-provider": ["@smithy/node-config-provider@4.3.0", "", { "dependencies": { "@smithy/property-provider": "^4.2.0", "@smithy/shared-ini-file-loader": "^4.3.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.2.0", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.3.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser": ["@smithy/url-parser@4.1.1", "", { "dependencies": { "@smithy/querystring-parser": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser": ["@smithy/url-parser@4.2.0", "", { "dependencies": { "@smithy/querystring-parser": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-AlBmD6Idav2ugmoAL6UtR6ItS7jU5h5RNqLMZC7QrLCoITA9NzIN3nx9GWi8g4z1pfWh2r9r96SX/jHiNwPJ9A=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.2.1", "", { "dependencies": { "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "@smithy/util-base64": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.0", "", { "dependencies": { "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "@smithy/util-base64": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler": ["@smithy/node-http-handler@4.2.1", "", { "dependencies": { "@smithy/abort-controller": "^4.1.1", "@smithy/protocol-http": "^5.2.1", "@smithy/querystring-builder": "^4.1.1", "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler": ["@smithy/node-http-handler@4.3.0", "", { "dependencies": { "@smithy/abort-controller": "^4.2.0", "@smithy/protocol-http": "^5.3.0", "@smithy/querystring-builder": "^4.2.0", "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/util-base64": ["@smithy/util-base64@4.1.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.1.0", "@smithy/util-utf8": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/util-base64": ["@smithy/util-base64@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], "@aws-sdk/nested-clients/@aws-crypto/sha256-js/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], - "@aws-sdk/nested-clients/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/nested-clients/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/nested-clients/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/nested-clients/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/nested-clients/@smithy/smithy-client/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/nested-clients/@smithy/smithy-client/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], - "@aws-sdk/nested-clients/@smithy/smithy-client/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w=="], + "@aws-sdk/nested-clients/@smithy/smithy-client/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="], - "@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.1.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw=="], + "@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="], "@node-minify/core/glob/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], @@ -4258,11 +4260,11 @@ "@node-minify/core/glob/path-scurry/minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], - "@smithy/core/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@smithy/core/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@smithy/core/@smithy/util-stream/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@smithy/core/@smithy/util-stream/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], - "@smithy/core/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@smithy/core/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], "changelogen/c12/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], @@ -4282,39 +4284,39 @@ "qrcode/yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BjATSNNyvVbQxOOlKse0b0pSezTWGMvA87SvoFoFlkRsKXVsN3bEtjCxvsNXJXfnAzlWFPaT9DmhWy1vn0sNEA=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng=="], + "@aws-sdk/credential-provider-http/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BjATSNNyvVbQxOOlKse0b0pSezTWGMvA87SvoFoFlkRsKXVsN3bEtjCxvsNXJXfnAzlWFPaT9DmhWy1vn0sNEA=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/middleware-flexible-checksums/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng=="], + "@aws-sdk/middleware-sdk-s3/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BjATSNNyvVbQxOOlKse0b0pSezTWGMvA87SvoFoFlkRsKXVsN3bEtjCxvsNXJXfnAzlWFPaT9DmhWy1vn0sNEA=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/middleware-sdk-s3/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-BjATSNNyvVbQxOOlKse0b0pSezTWGMvA87SvoFoFlkRsKXVsN3bEtjCxvsNXJXfnAzlWFPaT9DmhWy1vn0sNEA=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "tslib": "^2.6.2" } }, "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/abort-controller@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "tslib": "^2.6.2" } }, "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.1.1", "", { "dependencies": { "@smithy/types": "^4.5.0", "@smithy/util-uri-escape": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.0", "", { "dependencies": { "@smithy/types": "^4.6.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A=="], - "@smithy/core/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@smithy/core/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@smithy/core/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@smithy/core/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], "changelogen/c12/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], @@ -4330,13 +4332,13 @@ "qrcode/yargs/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/core/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], - "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.1.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="], "changelogen/c12/giget/tar/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], diff --git a/bunfig.toml b/bunfig.toml new file mode 100644 index 000000000..641e878fd --- /dev/null +++ b/bunfig.toml @@ -0,0 +1,2 @@ +[install] +linker = "isolated" diff --git a/package.json b/package.json index ce0390f7d..509b34932 100644 --- a/package.json +++ b/package.json @@ -22,13 +22,13 @@ "deploy": "bun run deploy:web" }, "devDependencies": { - "@biomejs/biome": "2.2.4", - "@types/bun": "^1.2.22", + "@biomejs/biome": "2.2.5", + "@types/bun": "^1.2.23", "changelogithub": "^13.16.0", "husky": "^9.1.7", - "lint-staged": "^16.2.1", + "lint-staged": "^16.2.3", "turbo": "^2.5.8", - "typescript": "5.9.2" + "typescript": "5.9.3" }, "lint-staged": { "*": [ @@ -38,10 +38,10 @@ "engines": { "node": ">=20" }, - "packageManager": "bun@1.2.20", + "packageManager": "bun@1.2.23", "workspaces": [ "apps/*", "packages/*" ], "dependencies": {} -} +} \ No newline at end of file From bf888dee1ecbbf70fb6dc5e3952cf840f0dfac7f Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Sat, 4 Oct 2025 19:20:42 +0530 Subject: [PATCH 24/33] ok --- .../cli/templates/backend/server/base/tsdown.config.ts.hbs | 7 +------ .../todo/server/drizzle/base/src/routers/todo.ts.hbs | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/apps/cli/templates/backend/server/base/tsdown.config.ts.hbs b/apps/cli/templates/backend/server/base/tsdown.config.ts.hbs index f3aef1956..7a10188c8 100644 --- a/apps/cli/templates/backend/server/base/tsdown.config.ts.hbs +++ b/apps/cli/templates/backend/server/base/tsdown.config.ts.hbs @@ -5,10 +5,5 @@ export default defineConfig({ format: 'esm', outDir: './dist', clean: true, - noExternal: [/@{{projectName}}\/.*/], - {{#if (and (eq orm "drizzle") (eq database "sqlite") (or (eq dbSetup "turso") (eq dbSetup "none")))}} - external: [ - /^@libsql\/(linux|darwin|win32).*/ - ] - {{/if}} + noExternal: [/@{{projectName}}\/.*/] }); diff --git a/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs b/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs index 1b84dde9d..87cb5faee 100644 --- a/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs +++ b/apps/cli/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs @@ -1,5 +1,5 @@ {{#if (eq api "orpc")}} -import { eq } from "@{{projectName}}/db"; +import { eq } from "drizzle-orm"; import z from "zod"; import { db } from "@{{projectName}}/db"; import { todo } from "@{{projectName}}/db/schema/todo"; From 460ab7dd5007cb56a386d088013377818348c8c6 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Sun, 5 Oct 2025 09:35:48 +0530 Subject: [PATCH 25/33] ok --- .../database-providers/mongodb-atlas-setup.ts | 8 +++----- bun.lock | 14 +++++++------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts b/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts index 1bc79f678..180ba3dda 100644 --- a/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts +++ b/apps/cli/src/helpers/database-providers/mongodb-atlas-setup.ts @@ -136,7 +136,7 @@ export async function setupMongoDBAtlas( if (manualDb) { log.info("MongoDB Atlas manual setup selected"); - await writeEnvFile(projectDir); + await writeEnvFile(projectDir, backend); displayManualSetupInstructions(); return; } @@ -162,17 +162,15 @@ export async function setupMongoDBAtlas( if (mode === "manual") { log.info("MongoDB Atlas manual setup selected"); - await writeEnvFile(projectDir); + await writeEnvFile(projectDir, backend); displayManualSetupInstructions(); return; } - const atlasConfig = await initMongoDBAtlas(serverDir); - const config = await initMongoDBAtlas(serverDir); if (config) { - await writeEnvFile(projectDir, config); + await writeEnvFile(projectDir, backend, config); log.success( pc.green( "MongoDB Atlas setup complete! Connection saved to .env file.", diff --git a/bun.lock b/bun.lock index 65560b8f6..daa4b446b 100644 --- a/bun.lock +++ b/bun.lock @@ -4,13 +4,13 @@ "": { "name": "better-t-stack", "devDependencies": { - "@biomejs/biome": "latest", - "@types/bun": "latest", - "changelogithub": "latest", - "husky": "latest", - "lint-staged": "latest", - "turbo": "latest", - "typescript": "latest", + "@biomejs/biome": "2.2.5", + "@types/bun": "^1.2.23", + "changelogithub": "^13.16.0", + "husky": "^9.1.7", + "lint-staged": "^16.2.3", + "turbo": "^2.5.8", + "typescript": "5.9.3", }, }, "apps/cli": { From 7ebd503f7f4fa46fc01a24a5349e1925981307e5 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Sun, 5 Oct 2025 12:50:02 +0530 Subject: [PATCH 26/33] ok --- apps/cli/src/helpers/addons/fumadocs-setup.ts | 7 ++- .../cli/src/helpers/addons/ultracite-setup.ts | 6 +++ apps/cli/src/helpers/core/project-config.ts | 47 +++++++++---------- apps/cli/src/helpers/core/workspace-setup.ts | 17 +++---- .../alchemy/alchemy-combined-setup.ts | 2 +- .../deployment/alchemy/alchemy-next-setup.ts | 1 - .../deployment/alchemy/alchemy-nuxt-setup.ts | 2 +- .../alchemy/alchemy-react-router-setup.ts | 2 +- .../deployment/alchemy/alchemy-solid-setup.ts | 2 +- .../alchemy/alchemy-svelte-setup.ts | 2 +- .../alchemy/alchemy-tanstack-router-setup.ts | 2 +- .../alchemy/alchemy-tanstack-start-setup.ts | 2 +- .../helpers/deployment/server-deploy-setup.ts | 1 - .../backend/server/base/package.json.hbs | 5 +- ...onfig.base.json => tsconfig.base.json.hbs} | 0 apps/cli/templates/base/tsconfig.json.hbs | 3 ++ .../deploy/alchemy/alchemy.run.ts.hbs | 6 +-- 17 files changed, 58 insertions(+), 49 deletions(-) rename apps/cli/templates/base/{tsconfig.base.json => tsconfig.base.json.hbs} (100%) create mode 100644 apps/cli/templates/base/tsconfig.json.hbs diff --git a/apps/cli/src/helpers/addons/fumadocs-setup.ts b/apps/cli/src/helpers/addons/fumadocs-setup.ts index de7d586f7..afe7a568f 100644 --- a/apps/cli/src/helpers/addons/fumadocs-setup.ts +++ b/apps/cli/src/helpers/addons/fumadocs-setup.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import { isCancel, log, select } from "@clack/prompts"; +import { isCancel, log, select, spinner } from "@clack/prompts"; import consola from "consola"; import { execa } from "execa"; import fs from "fs-extra"; @@ -64,12 +64,17 @@ export async function setupFumadocs(config: ProjectConfig) { commandWithArgs, ); + const s = spinner(); + s.start("Setting up Fumadocs..."); + await execa(fumadocsInitCommand, { cwd: path.join(projectDir, "apps"), env: { CI: "true" }, shell: true, }); + s.stop("Fumadocs setup complete!"); + const fumadocsDir = path.join(projectDir, "apps", "fumadocs"); const packageJsonPath = path.join(fumadocsDir, "package.json"); diff --git a/apps/cli/src/helpers/addons/ultracite-setup.ts b/apps/cli/src/helpers/addons/ultracite-setup.ts index 182de584d..fdc6f58da 100644 --- a/apps/cli/src/helpers/addons/ultracite-setup.ts +++ b/apps/cli/src/helpers/addons/ultracite-setup.ts @@ -3,6 +3,7 @@ import { group, log, multiselect, + spinner, } from "@clack/prompts"; import { execa } from "execa"; import pc from "picocolors"; @@ -156,12 +157,17 @@ export async function setupUltracite(config: ProjectConfig, hasHusky: boolean) { commandWithArgs, ); + const s = spinner(); + s.start("Setting up Ultracite..."); + await execa(ultraciteInitCommand, { cwd: projectDir, env: { CI: "true" }, shell: true, }); + s.stop("Ultracite setup complete!"); + if (hasHusky) { await addPackageDependency({ devDependencies: ["husky", "lint-staged"], diff --git a/apps/cli/src/helpers/core/project-config.ts b/apps/cli/src/helpers/core/project-config.ts index d5ba99524..0772653d5 100644 --- a/apps/cli/src/helpers/core/project-config.ts +++ b/apps/cli/src/helpers/core/project-config.ts @@ -97,10 +97,10 @@ async function updateRootPackageJson( } } if (options.dbSetup === "docker") { - scripts["db:start"] = `turbo -F ${backendPackageName} db:start`; - scripts["db:watch"] = `turbo -F ${backendPackageName} db:watch`; - scripts["db:stop"] = `turbo -F ${backendPackageName} db:stop`; - scripts["db:down"] = `turbo -F ${backendPackageName} db:down`; + scripts["db:start"] = `turbo -F ${dbPackageName} db:start`; + scripts["db:watch"] = `turbo -F ${dbPackageName} db:watch`; + scripts["db:stop"] = `turbo -F ${dbPackageName} db:stop`; + scripts["db:down"] = `turbo -F ${dbPackageName} db:down`; } } else if (options.packageManager === "pnpm") { scripts.dev = devScript; @@ -130,10 +130,10 @@ async function updateRootPackageJson( } } if (options.dbSetup === "docker") { - scripts["db:start"] = `pnpm --filter ${backendPackageName} db:start`; - scripts["db:watch"] = `pnpm --filter ${backendPackageName} db:watch`; - scripts["db:stop"] = `pnpm --filter ${backendPackageName} db:stop`; - scripts["db:down"] = `pnpm --filter ${backendPackageName} db:down`; + scripts["db:start"] = `pnpm --filter ${dbPackageName} db:start`; + scripts["db:watch"] = `pnpm --filter ${dbPackageName} db:watch`; + scripts["db:stop"] = `pnpm --filter ${dbPackageName} db:stop`; + scripts["db:down"] = `pnpm --filter ${dbPackageName} db:down`; } } else if (options.packageManager === "npm") { scripts.dev = devScript; @@ -169,11 +169,11 @@ async function updateRootPackageJson( } if (options.dbSetup === "docker") { scripts["db:start"] = - `npm run db:start --workspace ${backendPackageName}`; + `npm run db:start --workspace ${dbPackageName}`; scripts["db:watch"] = - `npm run db:watch --workspace ${backendPackageName}`; - scripts["db:stop"] = `npm run db:stop --workspace ${backendPackageName}`; - scripts["db:down"] = `npm run db:down --workspace ${backendPackageName}`; + `npm run db:watch --workspace ${dbPackageName}`; + scripts["db:stop"] = `npm run db:stop --workspace ${dbPackageName}`; + scripts["db:down"] = `npm run db:down --workspace ${dbPackageName}`; } } else if (options.packageManager === "bun") { scripts.dev = devScript; @@ -206,10 +206,10 @@ async function updateRootPackageJson( } } if (options.dbSetup === "docker") { - scripts["db:start"] = `bun run --filter ${backendPackageName} db:start`; - scripts["db:watch"] = `bun run --filter ${backendPackageName} db:watch`; - scripts["db:stop"] = `bun run --filter ${backendPackageName} db:stop`; - scripts["db:down"] = `bun run --filter ${backendPackageName} db:down`; + scripts["db:start"] = `bun run --filter ${dbPackageName} db:start`; + scripts["db:watch"] = `bun run --filter ${dbPackageName} db:watch`; + scripts["db:stop"] = `bun run --filter ${dbPackageName} db:stop`; + scripts["db:down"] = `bun run --filter ${dbPackageName} db:down`; } } @@ -264,14 +264,6 @@ async function updateServerPackageJson( if (!serverPackageJson.scripts) { serverPackageJson.scripts = {}; } - const scripts = serverPackageJson.scripts; - - if (options.dbSetup === "docker") { - scripts["db:start"] = "docker compose up -d"; - scripts["db:watch"] = "docker compose up"; - scripts["db:stop"] = "docker compose stop"; - scripts["db:down"] = "docker compose down"; - } await fs.writeJson(serverPackageJsonPath, serverPackageJson, { spaces: 2, @@ -321,6 +313,13 @@ async function updateDbPackageJson(projectDir: string, options: ProjectConfig) { } } + if (options.dbSetup === "docker") { + scripts["db:start"] = "docker compose up -d"; + scripts["db:watch"] = "docker compose up"; + scripts["db:stop"] = "docker compose stop"; + scripts["db:down"] = "docker compose down"; + } + await fs.writeJson(dbPackageJsonPath, dbPackageJson, { spaces: 2, }); diff --git a/apps/cli/src/helpers/core/workspace-setup.ts b/apps/cli/src/helpers/core/workspace-setup.ts index e9001e8b5..5189d995d 100644 --- a/apps/cli/src/helpers/core/workspace-setup.ts +++ b/apps/cli/src/helpers/core/workspace-setup.ts @@ -63,19 +63,14 @@ export async function setupWorkspaceDependencies( }); } - const needsApiDependency = options.api && options.api !== "none"; const webPackageDir = path.join(projectDir, "apps/web"); if (await fs.pathExists(webPackageDir)) { const webDeps: Record = {}; - if (options.backend === "self") { - webDeps[`@${projectName}/api`] = workspaceVersion; - webDeps[`@${projectName}/auth`] = workspaceVersion; - webDeps[`@${projectName}/db`] = workspaceVersion; - } else if (needsApiDependency) { - webDeps[`@${projectName}/api`] = workspaceVersion; - } + webDeps[`@${projectName}/api`] = workspaceVersion; + webDeps[`@${projectName}/auth`] = workspaceVersion; + webDeps[`@${projectName}/db`] = workspaceVersion; if (Object.keys(webDeps).length > 0) { await addPackageDependency({ @@ -84,4 +79,10 @@ export async function setupWorkspaceDependencies( }); } } + + await addPackageDependency({ + dependencies: commonDeps, + devDependencies: commonDevDeps, + projectDir, + }); } diff --git a/apps/cli/src/helpers/deployment/alchemy/alchemy-combined-setup.ts b/apps/cli/src/helpers/deployment/alchemy/alchemy-combined-setup.ts index 8ac379bd1..e8c9d14bf 100644 --- a/apps/cli/src/helpers/deployment/alchemy/alchemy-combined-setup.ts +++ b/apps/cli/src/helpers/deployment/alchemy/alchemy-combined-setup.ts @@ -17,7 +17,7 @@ export async function setupCombinedAlchemyDeploy( config: ProjectConfig, ) { await addPackageDependency({ - devDependencies: ["alchemy", "dotenv"], + devDependencies: ["alchemy"], projectDir, }); diff --git a/apps/cli/src/helpers/deployment/alchemy/alchemy-next-setup.ts b/apps/cli/src/helpers/deployment/alchemy/alchemy-next-setup.ts index c9bd4bebb..fcdce5513 100644 --- a/apps/cli/src/helpers/deployment/alchemy/alchemy-next-setup.ts +++ b/apps/cli/src/helpers/deployment/alchemy/alchemy-next-setup.ts @@ -15,7 +15,6 @@ export async function setupNextAlchemyDeploy( dependencies: ["@opennextjs/cloudflare"], devDependencies: [ "alchemy", - "dotenv", "wrangler", "@cloudflare/workers-types", ], diff --git a/apps/cli/src/helpers/deployment/alchemy/alchemy-nuxt-setup.ts b/apps/cli/src/helpers/deployment/alchemy/alchemy-nuxt-setup.ts index 1a9274c9d..61904f90f 100644 --- a/apps/cli/src/helpers/deployment/alchemy/alchemy-nuxt-setup.ts +++ b/apps/cli/src/helpers/deployment/alchemy/alchemy-nuxt-setup.ts @@ -13,7 +13,7 @@ export async function setupNuxtAlchemyDeploy( if (!(await fs.pathExists(webAppDir))) return; await addPackageDependency({ - devDependencies: ["alchemy", "nitro-cloudflare-dev", "dotenv", "wrangler"], + devDependencies: ["alchemy", "nitro-cloudflare-dev", "wrangler"], projectDir: webAppDir, }); diff --git a/apps/cli/src/helpers/deployment/alchemy/alchemy-react-router-setup.ts b/apps/cli/src/helpers/deployment/alchemy/alchemy-react-router-setup.ts index f422ce134..6fa838e2f 100644 --- a/apps/cli/src/helpers/deployment/alchemy/alchemy-react-router-setup.ts +++ b/apps/cli/src/helpers/deployment/alchemy/alchemy-react-router-setup.ts @@ -12,7 +12,7 @@ export async function setupReactRouterAlchemyDeploy( if (!(await fs.pathExists(webAppDir))) return; await addPackageDependency({ - devDependencies: ["alchemy", "dotenv"], + devDependencies: ["alchemy"], projectDir: webAppDir, }); diff --git a/apps/cli/src/helpers/deployment/alchemy/alchemy-solid-setup.ts b/apps/cli/src/helpers/deployment/alchemy/alchemy-solid-setup.ts index a99fba889..782943a66 100644 --- a/apps/cli/src/helpers/deployment/alchemy/alchemy-solid-setup.ts +++ b/apps/cli/src/helpers/deployment/alchemy/alchemy-solid-setup.ts @@ -12,7 +12,7 @@ export async function setupSolidAlchemyDeploy( if (!(await fs.pathExists(webAppDir))) return; await addPackageDependency({ - devDependencies: ["alchemy", "dotenv"], + devDependencies: ["alchemy"], projectDir: webAppDir, }); diff --git a/apps/cli/src/helpers/deployment/alchemy/alchemy-svelte-setup.ts b/apps/cli/src/helpers/deployment/alchemy/alchemy-svelte-setup.ts index a176b24ea..99ed34498 100644 --- a/apps/cli/src/helpers/deployment/alchemy/alchemy-svelte-setup.ts +++ b/apps/cli/src/helpers/deployment/alchemy/alchemy-svelte-setup.ts @@ -13,7 +13,7 @@ export async function setupSvelteAlchemyDeploy( if (!(await fs.pathExists(webAppDir))) return; await addPackageDependency({ - devDependencies: ["alchemy", "@sveltejs/adapter-cloudflare", "dotenv"], + devDependencies: ["alchemy", "@sveltejs/adapter-cloudflare"], projectDir: webAppDir, }); diff --git a/apps/cli/src/helpers/deployment/alchemy/alchemy-tanstack-router-setup.ts b/apps/cli/src/helpers/deployment/alchemy/alchemy-tanstack-router-setup.ts index 529f9f1eb..cacd8538c 100644 --- a/apps/cli/src/helpers/deployment/alchemy/alchemy-tanstack-router-setup.ts +++ b/apps/cli/src/helpers/deployment/alchemy/alchemy-tanstack-router-setup.ts @@ -12,7 +12,7 @@ export async function setupTanStackRouterAlchemyDeploy( if (!(await fs.pathExists(webAppDir))) return; await addPackageDependency({ - devDependencies: ["alchemy", "dotenv"], + devDependencies: ["alchemy"], projectDir: webAppDir, }); diff --git a/apps/cli/src/helpers/deployment/alchemy/alchemy-tanstack-start-setup.ts b/apps/cli/src/helpers/deployment/alchemy/alchemy-tanstack-start-setup.ts index 7b5452305..bf6c45dcd 100644 --- a/apps/cli/src/helpers/deployment/alchemy/alchemy-tanstack-start-setup.ts +++ b/apps/cli/src/helpers/deployment/alchemy/alchemy-tanstack-start-setup.ts @@ -13,7 +13,7 @@ export async function setupTanStackStartAlchemyDeploy( if (!(await fs.pathExists(webAppDir))) return; await addPackageDependency({ - devDependencies: ["alchemy", "dotenv", "@cloudflare/vite-plugin"], + devDependencies: ["alchemy", "@cloudflare/vite-plugin"], projectDir: webAppDir, }); diff --git a/apps/cli/src/helpers/deployment/server-deploy-setup.ts b/apps/cli/src/helpers/deployment/server-deploy-setup.ts index 175f1210e..eb08ee542 100644 --- a/apps/cli/src/helpers/deployment/server-deploy-setup.ts +++ b/apps/cli/src/helpers/deployment/server-deploy-setup.ts @@ -91,7 +91,6 @@ export async function setupAlchemyServerDeploy( "alchemy", "wrangler", "@types/node", - "dotenv", "@cloudflare/workers-types", ], projectDir: serverDir, diff --git a/apps/cli/templates/backend/server/base/package.json.hbs b/apps/cli/templates/backend/server/base/package.json.hbs index e65dbf749..e3957602c 100644 --- a/apps/cli/templates/backend/server/base/package.json.hbs +++ b/apps/cli/templates/backend/server/base/package.json.hbs @@ -7,10 +7,7 @@ "check-types": "tsc -b", "compile": "bun build --compile --minify --sourcemap --bytecode ./src/index.ts --outfile server" }, - "dependencies": { - "dotenv": "^17.2.1", - "zod": "^4.0.2" - }, + "dependencies": {}, {{#if (eq dbSetup 'supabase')}} "trustedDependencies": [ "supabase" diff --git a/apps/cli/templates/base/tsconfig.base.json b/apps/cli/templates/base/tsconfig.base.json.hbs similarity index 100% rename from apps/cli/templates/base/tsconfig.base.json rename to apps/cli/templates/base/tsconfig.base.json.hbs diff --git a/apps/cli/templates/base/tsconfig.json.hbs b/apps/cli/templates/base/tsconfig.json.hbs new file mode 100644 index 000000000..ffcbb9477 --- /dev/null +++ b/apps/cli/templates/base/tsconfig.json.hbs @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig.base.json" +} diff --git a/apps/cli/templates/deploy/alchemy/alchemy.run.ts.hbs b/apps/cli/templates/deploy/alchemy/alchemy.run.ts.hbs index 8eb137939..dc21177d0 100644 --- a/apps/cli/templates/deploy/alchemy/alchemy.run.ts.hbs +++ b/apps/cli/templates/deploy/alchemy/alchemy.run.ts.hbs @@ -39,15 +39,15 @@ const app = await alchemy("{{projectName}}"); {{#if (and (eq serverDeploy "alchemy") (eq dbSetup "d1"))}} await Exec("db-generate", { - {{#if (and (eq webDeploy "alchemy") (eq serverDeploy "alchemy"))}}cwd: "apps/server",{{/if}} + {{#if (and (eq webDeploy "alchemy") (eq serverDeploy "alchemy"))}}cwd: "packages/db",{{/if}} command: "{{packageManager}} run db:generate", }); const db = await D1Database("database", { {{#if (eq orm "prisma")}} - migrationsDir: "apps/server/prisma/migrations", + migrationsDir: "packages/db/prisma/migrations", {{else if (eq orm "drizzle")}} - migrationsDir: "apps/server/src/db/migrations", + migrationsDir: "packages/db/src/migrations", {{/if}} }); {{/if}} From e9dc8c07a33a261de2ca8b50735cebdd41e0130f Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Mon, 6 Oct 2025 01:27:20 +0530 Subject: [PATCH 27/33] ok --- apps/cli/src/helpers/addons/examples-setup.ts | 1 - apps/cli/src/helpers/core/backend-setup.ts | 5 - apps/cli/src/helpers/core/create-readme.ts | 119 +++++++++++++----- .../cli/src/helpers/core/post-installation.ts | 53 +++++--- apps/cli/src/helpers/core/project-config.ts | 6 +- apps/cli/src/helpers/core/template-manager.ts | 74 +++++++---- apps/cli/src/helpers/core/workspace-setup.ts | 30 ++++- .../alchemy/alchemy-combined-setup.ts | 2 +- .../deployment/alchemy/alchemy-next-setup.ts | 6 +- .../helpers/deployment/server-deploy-setup.ts | 21 +++- .../helpers/deployment/web-deploy-setup.ts | 18 +++ .../templates/addons/ruler/.ruler/bts.md.hbs | 38 +++--- .../api/orpc/server/package.json.hbs | 4 +- .../api/orpc/server/tsconfig.json.hbs | 27 ++-- .../api/trpc/server/package.json.hbs | 4 +- .../api/trpc/server/tsconfig.json.hbs | 32 +++-- .../better-auth/server/base/package.json.hbs | 5 +- .../better-auth/server/base/tsconfig.json.hbs | 32 +++-- .../backend/server/base/tsconfig.json.hbs | 3 +- apps/cli/templates/db/base/package.json.hbs | 4 +- apps/cli/templates/db/base/tsconfig.json.hbs | 32 +++-- 21 files changed, 352 insertions(+), 164 deletions(-) diff --git a/apps/cli/src/helpers/addons/examples-setup.ts b/apps/cli/src/helpers/addons/examples-setup.ts index 5fa2f6e5f..9f1ec54ef 100644 --- a/apps/cli/src/helpers/addons/examples-setup.ts +++ b/apps/cli/src/helpers/addons/examples-setup.ts @@ -93,7 +93,6 @@ export async function setupExamples(config: ProjectConfig) { }); } - // In fullstack mode, also add AI server deps to the web app if (backend === "self" && webClientDirExists) { await addPackageDependency({ dependencies: ["ai", "@ai-sdk/google"], diff --git a/apps/cli/src/helpers/core/backend-setup.ts b/apps/cli/src/helpers/core/backend-setup.ts index 0f26c7182..2df8aea38 100644 --- a/apps/cli/src/helpers/core/backend-setup.ts +++ b/apps/cli/src/helpers/core/backend-setup.ts @@ -16,7 +16,6 @@ export async function setupBackendDependencies(config: ProjectConfig) { const dependencies: AvailableDependencies[] = []; const devDependencies: AvailableDependencies[] = []; - // Framework-specific dependencies if (framework === "hono") { dependencies.push("hono"); if (api === "trpc") { @@ -51,7 +50,6 @@ export async function setupBackendDependencies(config: ProjectConfig) { } } - // API-specific dependencies if (api === "trpc") { if (framework === "express") { dependencies.push("@trpc/server"); @@ -64,17 +62,14 @@ export async function setupBackendDependencies(config: ProjectConfig) { dependencies.push("@orpc/server", "@orpc/openapi", "@orpc/zod"); } - // Auth-specific dependencies if (auth === "better-auth") { dependencies.push("better-auth"); } - // AI example dependencies if (examples.includes("ai")) { dependencies.push("ai", "@ai-sdk/google"); } - // Runtime-specific dependencies if (runtime === "bun") { devDependencies.push("@types/bun"); } diff --git a/apps/cli/src/helpers/core/create-readme.ts b/apps/cli/src/helpers/core/create-readme.ts index fa31d4585..10510358d 100644 --- a/apps/cli/src/helpers/core/create-readme.ts +++ b/apps/cli/src/helpers/core/create-readme.ts @@ -111,6 +111,7 @@ Follow the prompts to create a new Convex project and connect it to your applica orm, options.dbSetup, options.serverDeploy, + options.backend, ) } @@ -217,6 +218,7 @@ function generateRunningInstructions( const hasFrontendNone = frontend.length === 0 || frontend.includes("none"); const isBackendNone = backend === "none"; + const isBackendSelf = backend === "self"; if (!hasFrontendNone) { const hasTanstackRouter = frontend.includes("tanstack-router"); @@ -236,9 +238,15 @@ function generateRunningInstructions( hasNuxt || hasSolid ) { - instructions.push( - `Open [http://localhost:${webPort}](http://localhost:${webPort}) in your browser to see the web application.`, - ); + if (isBackendSelf) { + instructions.push( + `Open [http://localhost:${webPort}](http://localhost:${webPort}) in your browser to see your fullstack application.`, + ); + } else { + instructions.push( + `Open [http://localhost:${webPort}](http://localhost:${webPort}) in your browser to see the web application.`, + ); + } } } @@ -250,7 +258,7 @@ function generateRunningInstructions( instructions.push( "Your app will connect to the Convex cloud backend automatically.", ); - } else if (!isBackendNone) { + } else if (!isBackendNone && !isBackendSelf) { instructions.push( "The API is running at [http://localhost:3000](http://localhost:3000).", ); @@ -272,6 +280,7 @@ function generateProjectStructure( const hasFrontendNone = frontend.length === 0 || frontend.includes("none"); const isBackendNone = backend === "none"; + const isBackendSelf = backend === "self"; if (!hasFrontendNone) { const hasTanstackRouter = frontend.includes("tanstack-router"); @@ -300,9 +309,15 @@ function generateProjectStructure( else if (hasNuxt) frontendType = "Nuxt"; else if (hasSolid) frontendType = "SolidJS"; - structure.push( - `│ ├── web/ # Frontend application (${frontendType})`, - ); + if (isBackendSelf) { + structure.push( + `│ └── web/ # Fullstack application (${frontendType})`, + ); + } else { + structure.push( + `│ ├── web/ # Frontend application (${frontendType})`, + ); + } } } @@ -310,35 +325,66 @@ function generateProjectStructure( frontend.includes("native-nativewind") || frontend.includes("native-unistyles"); if (hasNative) { - structure.push( - "│ ├── native/ # Mobile application (React Native, Expo)", - ); + if (isBackendSelf) { + structure.push( + "│ ├── native/ # Mobile application (React Native, Expo)", + ); + } else { + structure.push( + "│ ├── native/ # Mobile application (React Native, Expo)", + ); + } } if (addons.includes("starlight")) { - structure.push( - "│ ├── docs/ # Documentation site (Astro Starlight)", - ); - } - - if (isConvex) { - structure.push("├── packages/"); - structure.push( - "│ └── backend/ # Convex backend functions and schema", - ); - if (auth === "clerk") { + if (isBackendSelf) { + structure.push( + "│ ├── docs/ # Documentation site (Astro Starlight)", + ); + } else { structure.push( - "│ ├── convex/ # Convex functions and schema", - "│ └── .env.local # Convex environment variables", + "│ ├── docs/ # Documentation site (Astro Starlight)", ); } - } else if (!isBackendNone) { + } + + if (!isBackendSelf && !isBackendNone && !isConvex) { const backendName = backend[0].toUpperCase() + backend.slice(1); const apiName = api !== "none" ? api.toUpperCase() : ""; const backendDesc = apiName ? `${backendName}, ${apiName}` : backendName; structure.push(`│ └── server/ # Backend API (${backendDesc})`); } + if (isConvex || !isBackendNone) { + structure.push("├── packages/"); + + if (isConvex) { + structure.push( + "│ ├── backend/ # Convex backend functions and schema", + ); + if (auth === "clerk") { + structure.push( + "│ │ ├── convex/ # Convex functions and schema", + "│ │ └── .env.local # Convex environment variables", + ); + } + } + + if (!isConvex) { + structure.push("│ ├── api/ # API layer / business logic"); + + if (auth !== "none") { + structure.push( + "│ ├── auth/ # Authentication configuration & logic", + ); + } + + if (api !== "none" || auth !== "none") { + structure.push("│ └── db/ # Database schema & queries"); + } + } + } + return structure.join("\n"); } @@ -495,11 +541,16 @@ function generateDatabaseSetup( orm: ORM, dbSetup: DatabaseSetup, serverDeploy?: string, + backend?: string, ) { if (database === "none") { return ""; } + const isBackendSelf = backend === "self"; + const envPath = isBackendSelf ? "apps/web/.env" : "apps/server/.env"; + const dbLocalPath = isBackendSelf ? "apps/web" : "apps/server"; + let setup = "## Database Setup\n\n"; if (database === "sqlite") { @@ -518,12 +569,12 @@ ${ ? "D1 local development and migrations are handled automatically by Alchemy during dev and deploy." : "Local development for a Cloudflare D1 database will already be running as part of the `wrangler dev` command." : `\`\`\`bash -cd apps/server && ${packageManagerRunCmd} db:local +cd ${dbLocalPath} && ${packageManagerRunCmd} db:local \`\`\` ` } -2. Update your \`.env\` file in the \`apps/server\` directory with the appropriate connection details if needed. +2. Update your \`.env\` file in the \`${isBackendSelf ? "apps/web" : "apps/server"}\` directory with the appropriate connection details if needed. `; } else if (database === "postgres") { setup += `This project uses PostgreSQL${ @@ -535,7 +586,7 @@ cd apps/server && ${packageManagerRunCmd} db:local }. 1. Make sure you have a PostgreSQL database set up. -2. Update your \`apps/server/.env\` file with your PostgreSQL connection details. +2. Update your \`${envPath}\` file with your PostgreSQL connection details. `; } else if (database === "mysql") { setup += `This project uses MySQL${ @@ -547,7 +598,7 @@ cd apps/server && ${packageManagerRunCmd} db:local }. 1. Make sure you have a MySQL database set up. -2. Update your \`apps/server/.env\` file with your MySQL connection details. +2. Update your \`${envPath}\` file with your MySQL connection details. `; } else if (database === "mongodb") { setup += `This project uses MongoDB ${ @@ -559,7 +610,7 @@ cd apps/server && ${packageManagerRunCmd} db:local }. 1. Make sure you have MongoDB set up. -2. Update your \`apps/server/.env\` file with your MongoDB connection URI. +2. Update your \`${envPath}\` file with your MongoDB connection URI. `; } @@ -596,17 +647,20 @@ function generateScriptsList( ) { const isConvex = backend === "convex"; const isBackendNone = backend === "none"; + const isBackendSelf = backend === "self"; let scripts = `- \`${packageManagerRunCmd} dev\`: Start all applications in development mode - \`${packageManagerRunCmd} build\`: Build all applications`; - scripts += ` + if (!isBackendSelf) { + scripts += ` - \`${packageManagerRunCmd} dev:web\`: Start only the web application`; + } if (isConvex) { scripts += ` - \`${packageManagerRunCmd} dev:setup\`: Setup and configure your Convex project`; - } else if (!isBackendNone) { + } else if (!isBackendNone && !isBackendSelf) { scripts += ` - \`${packageManagerRunCmd} dev:server\`: Start only the server`; } @@ -625,8 +679,9 @@ function generateScriptsList( - \`${packageManagerRunCmd} db:studio\`: Open database studio UI`; if (database === "sqlite" && orm === "drizzle") { + const dbLocalPath = isBackendSelf ? "apps/web" : "apps/server"; scripts += ` -- \`cd apps/server && ${packageManagerRunCmd} db:local\`: Start the local SQLite database`; +- \`cd ${dbLocalPath} && ${packageManagerRunCmd} db:local\`: Start the local SQLite database`; } } diff --git a/apps/cli/src/helpers/core/post-installation.ts b/apps/cli/src/helpers/core/post-installation.ts index 038b89b0d..86628e9de 100644 --- a/apps/cli/src/helpers/core/post-installation.ts +++ b/apps/cli/src/helpers/core/post-installation.ts @@ -30,6 +30,7 @@ export async function displayPostInstallInstructions( } = config; const isConvex = backend === "convex"; + const isBackendSelf = backend === "self"; const runCmd = packageManager === "npm" ? "npm run" @@ -49,6 +50,7 @@ export async function displayPostInstallInstructions( runtime, dbSetup, serverDeploy, + backend, ) : ""; @@ -74,17 +76,19 @@ export async function displayPostInstallInstructions( isConvex && config.auth === "clerk" ? getClerkInstructions() : ""; const polarInstructions = config.payments === "polar" && config.auth === "better-auth" - ? getPolarInstructions() + ? getPolarInstructions(backend) : ""; const wranglerDeployInstructions = getWranglerDeployInstructions( runCmd, webDeploy, serverDeploy, + backend, ); const alchemyDeployInstructions = getAlchemyDeployInstructions( runCmd, webDeploy, serverDeploy, + backend, ); const hasWeb = frontend?.some((f) => @@ -133,6 +137,8 @@ export async function displayPostInstallInstructions( " packages/backend/.env.local", )} to ${pc.white("apps/*/.env")}\n`; output += `${pc.cyan(`${stepCounter++}.`)} ${runCmd} dev\n\n`; + } else if (isBackendSelf) { + output += `${pc.cyan(`${stepCounter++}.`)} ${runCmd} dev\n`; } else { if (runtime !== "workers") { output += `${pc.cyan(`${stepCounter++}.`)} ${runCmd} dev\n`; @@ -161,18 +167,18 @@ export async function displayPostInstallInstructions( )} You are creating a backend-only app\n (no frontend selected)\n`; } - if (!isConvex) { + if (!isConvex && !isBackendSelf) { output += `${pc.cyan("•")} Backend API: http://localhost:3000\n`; if (api === "orpc") { - if (backend === "self") { - output += `${pc.cyan("•")} OpenAPI (Scalar UI): http://localhost:3000/rpc/api\n`; - } else { - output += `${pc.cyan("•")} OpenAPI (Scalar UI): http://localhost:3000/api\n`; - } + output += `${pc.cyan("•")} OpenAPI (Scalar UI): http://localhost:3000/api\n`; } } + if (isBackendSelf && api === "orpc") { + output += `${pc.cyan("•")} OpenAPI (Scalar UI): http://localhost:${webPort}/rpc/api\n`; + } + if (addons?.includes("starlight")) { output += `${pc.cyan("•")} Docs: http://localhost:4321\n`; } @@ -244,6 +250,7 @@ async function getDatabaseInstructions( runtime?: Runtime, dbSetup?: DatabaseSetup, serverDeploy?: string, + backend?: string, ) { const instructions: string[] = []; @@ -276,14 +283,15 @@ async function getDatabaseInstructions( `${packageManager} wrangler d1 create your-database-name`, )}`, ); + const wranglerPath = backend === "self" ? "apps/web" : "apps/server"; instructions.push( `${pc.cyan( "3.", - )} Update apps/server/wrangler.jsonc with database_id and database_name`, + )} Update ${wranglerPath}/wrangler.jsonc with database_id and database_name`, ); instructions.push( `${pc.cyan("4.")} Generate migrations: ${pc.white( - `cd apps/server && ${runCmd} db:generate`, + `cd ${wranglerPath} && ${runCmd} db:generate`, )}`, ); instructions.push( @@ -368,10 +376,11 @@ async function getDatabaseInstructions( ); } if (database === "sqlite" && dbSetup !== "d1") { + const dbLocalPath = backend === "self" ? "apps/web" : "apps/server"; instructions.push( `${pc.cyan( "•", - )} Start local DB (if needed): ${`cd apps/server && ${runCmd} db:local`}`, + )} Start local DB (if needed): ${`cd ${dbLocalPath} && ${runCmd} db:local`}`, ); } } else if (orm === "mongoose") { @@ -431,15 +440,17 @@ function getWranglerDeployInstructions( runCmd?: string, webDeploy?: string, serverDeploy?: string, + backend?: string, ) { const instructions: string[] = []; if (webDeploy === "wrangler") { + const deployPath = backend === "self" ? "apps/web" : "apps/web"; instructions.push( - `${pc.bold("Deploy web to Cloudflare Workers:")}\n${pc.cyan("•")} Deploy: ${`cd apps/web && ${runCmd} run deploy`}`, + `${pc.bold("Deploy web to Cloudflare Workers:")}\n${pc.cyan("•")} Deploy: ${`cd ${deployPath} && ${runCmd} run deploy`}`, ); } - if (serverDeploy === "wrangler") { + if (serverDeploy === "wrangler" && backend !== "self") { instructions.push( `${pc.bold("Deploy server to Cloudflare Workers:")}\n${pc.cyan("•")} Deploy: ${`cd apps/server && ${runCmd} run deploy`}`, ); @@ -452,26 +463,36 @@ function getClerkInstructions() { return `${pc.bold("Clerk Authentication Setup:")}\n${pc.cyan("•")} Follow the guide: ${pc.underline("https://docs.convex.dev/auth/clerk")}\n${pc.cyan("•")} Set CLERK_JWT_ISSUER_DOMAIN in Convex Dashboard\n${pc.cyan("•")} Set CLERK_PUBLISHABLE_KEY in apps/*/.env`; } -function getPolarInstructions() { - return `${pc.bold("Polar Payments Setup:")}\n${pc.cyan("•")} Get access token & product ID from ${pc.underline("https://sandbox.polar.sh/")}\n${pc.cyan("•")} Set POLAR_ACCESS_TOKEN in apps/server/.env`; +function getPolarInstructions(backend?: string) { + const envPath = backend === "self" ? "apps/web/.env" : "apps/server/.env"; + return `${pc.bold("Polar Payments Setup:")}\n${pc.cyan("•")} Get access token & product ID from ${pc.underline("https://sandbox.polar.sh/")}\n${pc.cyan("•")} Set POLAR_ACCESS_TOKEN in ${envPath}`; } function getAlchemyDeployInstructions( runCmd?: string, webDeploy?: string, serverDeploy?: string, + backend?: string, ) { const instructions: string[] = []; + const isBackendSelf = backend === "self"; if (webDeploy === "alchemy" && serverDeploy !== "alchemy") { instructions.push( `${pc.bold("Deploy web with Alchemy:")}\n${pc.cyan("•")} Dev: ${`cd apps/web && ${runCmd} dev`}\n${pc.cyan("•")} Deploy: ${`cd apps/web && ${runCmd} deploy`}\n${pc.cyan("•")} Destroy: ${`cd apps/web && ${runCmd} destroy`}`, ); - } else if (serverDeploy === "alchemy" && webDeploy !== "alchemy") { + } else if ( + serverDeploy === "alchemy" && + webDeploy !== "alchemy" && + !isBackendSelf + ) { instructions.push( `${pc.bold("Deploy server with Alchemy:")}\n${pc.cyan("•")} Dev: ${`cd apps/server && ${runCmd} dev`}\n${pc.cyan("•")} Deploy: ${`cd apps/server && ${runCmd} deploy`}\n${pc.cyan("•")} Destroy: ${`cd apps/server && ${runCmd} destroy`}`, ); - } else if (webDeploy === "alchemy" && serverDeploy === "alchemy") { + } else if ( + webDeploy === "alchemy" && + (serverDeploy === "alchemy" || isBackendSelf) + ) { instructions.push( `${pc.bold("Deploy with Alchemy:")}\n${pc.cyan("•")} Dev: ${`${runCmd} dev`}\n${pc.cyan("•")} Deploy: ${`${runCmd} deploy`}\n${pc.cyan("•")} Destroy: ${`${runCmd} destroy`}`, ); diff --git a/apps/cli/src/helpers/core/project-config.ts b/apps/cli/src/helpers/core/project-config.ts index 0772653d5..11a2f5c05 100644 --- a/apps/cli/src/helpers/core/project-config.ts +++ b/apps/cli/src/helpers/core/project-config.ts @@ -168,10 +168,8 @@ async function updateRootPackageJson( } } if (options.dbSetup === "docker") { - scripts["db:start"] = - `npm run db:start --workspace ${dbPackageName}`; - scripts["db:watch"] = - `npm run db:watch --workspace ${dbPackageName}`; + scripts["db:start"] = `npm run db:start --workspace ${dbPackageName}`; + scripts["db:watch"] = `npm run db:watch --workspace ${dbPackageName}`; scripts["db:stop"] = `npm run db:stop --workspace ${dbPackageName}`; scripts["db:down"] = `npm run db:down --workspace ${dbPackageName}`; } diff --git a/apps/cli/src/helpers/core/template-manager.ts b/apps/cli/src/helpers/core/template-manager.ts index 08074caa1..d2aa1e30b 100644 --- a/apps/cli/src/helpers/core/template-manager.ts +++ b/apps/cli/src/helpers/core/template-manager.ts @@ -1084,12 +1084,15 @@ export async function setupDeploymentTemplates( projectDir: string, context: ProjectConfig, ) { + const isBackendSelf = context.backend === "self"; + if (context.webDeploy === "alchemy" || context.serverDeploy === "alchemy") { - if (context.webDeploy === "alchemy" && context.serverDeploy === "alchemy") { - const alchemyTemplateSrc = path.join( - PKG_ROOT, - "templates/deploy/alchemy", - ); + const alchemyTemplateSrc = path.join(PKG_ROOT, "templates/deploy/alchemy"); + + if ( + context.webDeploy === "alchemy" && + (context.serverDeploy === "alchemy" || isBackendSelf) + ) { if (await fs.pathExists(alchemyTemplateSrc)) { await processAndCopyFiles( "alchemy.run.ts.hbs", @@ -1097,22 +1100,11 @@ export async function setupDeploymentTemplates( projectDir, context, ); - const serverAppDir = path.join(projectDir, "apps/server"); - if (await fs.pathExists(serverAppDir)) { - await processAndCopyFiles( - "env.d.ts.hbs", - alchemyTemplateSrc, - serverAppDir, - context, - ); - } + + await addEnvDtsToPackages(projectDir, context, alchemyTemplateSrc); } } else { if (context.webDeploy === "alchemy") { - const alchemyTemplateSrc = path.join( - PKG_ROOT, - "templates/deploy/alchemy", - ); const webAppDir = path.join(projectDir, "apps/web"); if ( (await fs.pathExists(alchemyTemplateSrc)) && @@ -1124,14 +1116,12 @@ export async function setupDeploymentTemplates( webAppDir, context, ); + + await addEnvDtsToPackages(projectDir, context, alchemyTemplateSrc); } } - if (context.serverDeploy === "alchemy") { - const alchemyTemplateSrc = path.join( - PKG_ROOT, - "templates/deploy/alchemy", - ); + if (context.serverDeploy === "alchemy" && !isBackendSelf) { const serverAppDir = path.join(projectDir, "apps/server"); if ( (await fs.pathExists(alchemyTemplateSrc)) && @@ -1149,6 +1139,8 @@ export async function setupDeploymentTemplates( serverAppDir, context, ); + + await addEnvDtsToPackages(projectDir, context, alchemyTemplateSrc); } } } @@ -1188,7 +1180,11 @@ export async function setupDeploymentTemplates( } } - if (context.serverDeploy !== "none" && context.serverDeploy !== "alchemy") { + if ( + context.serverDeploy !== "none" && + context.serverDeploy !== "alchemy" && + !isBackendSelf + ) { const serverAppDir = path.join(projectDir, "apps/server"); if (await fs.pathExists(serverAppDir)) { const deployTemplateSrc = path.join( @@ -1206,3 +1202,33 @@ export async function setupDeploymentTemplates( } } } + +async function addEnvDtsToPackages( + projectDir: string, + context: ProjectConfig, + alchemyTemplateSrc: string, +) { + const packages = ["packages/api", "packages/auth", "packages/db"]; + + for (const packageName of packages) { + const packageDir = path.join(projectDir, packageName); + if (await fs.pathExists(packageDir)) { + await processAndCopyFiles( + "env.d.ts.hbs", + alchemyTemplateSrc, + packageDir, + context, + ); + } + } + + const serverAppDir = path.join(projectDir, "apps/server"); + if (await fs.pathExists(serverAppDir)) { + await processAndCopyFiles( + "env.d.ts.hbs", + alchemyTemplateSrc, + serverAppDir, + context, + ); + } +} diff --git a/apps/cli/src/helpers/core/workspace-setup.ts b/apps/cli/src/helpers/core/workspace-setup.ts index 5189d995d..871ebdc06 100644 --- a/apps/cli/src/helpers/core/workspace-setup.ts +++ b/apps/cli/src/helpers/core/workspace-setup.ts @@ -15,11 +15,13 @@ export async function setupWorkspaceDependencies( const commonDeps: AvailableDependencies[] = ["dotenv", "zod"]; const commonDevDeps: AvailableDependencies[] = ["tsdown"]; + const runtimeDevDeps = getRuntimeDevDeps(options); + const dbPackageDir = path.join(projectDir, "packages/db"); if (await fs.pathExists(dbPackageDir)) { await addPackageDependency({ dependencies: commonDeps, - devDependencies: commonDevDeps, + devDependencies: [...commonDevDeps, ...runtimeDevDeps], projectDir: dbPackageDir, }); } @@ -28,7 +30,7 @@ export async function setupWorkspaceDependencies( if (await fs.pathExists(authPackageDir)) { await addPackageDependency({ dependencies: commonDeps, - devDependencies: commonDevDeps, + devDependencies: [...commonDevDeps, ...runtimeDevDeps], customDependencies: { [`@${projectName}/db`]: workspaceVersion, }, @@ -40,7 +42,7 @@ export async function setupWorkspaceDependencies( if (await fs.pathExists(apiPackageDir)) { await addPackageDependency({ dependencies: commonDeps, - devDependencies: commonDevDeps, + devDependencies: [...commonDevDeps, ...runtimeDevDeps], customDependencies: { [`@${projectName}/auth`]: workspaceVersion, [`@${projectName}/db`]: workspaceVersion, @@ -53,7 +55,7 @@ export async function setupWorkspaceDependencies( if (await fs.pathExists(serverPackageDir)) { await addPackageDependency({ dependencies: commonDeps, - devDependencies: commonDevDeps, + devDependencies: [...commonDevDeps, ...runtimeDevDeps], customDependencies: { [`@${projectName}/api`]: workspaceVersion, [`@${projectName}/auth`]: workspaceVersion, @@ -82,7 +84,25 @@ export async function setupWorkspaceDependencies( await addPackageDependency({ dependencies: commonDeps, - devDependencies: commonDevDeps, + devDependencies: [...commonDevDeps, ...runtimeDevDeps], projectDir, }); } + +function getRuntimeDevDeps(options: ProjectConfig): AvailableDependencies[] { + const { runtime, backend } = options; + + if (runtime === "none" && backend === "self") { + return ["@types/node"]; + } + + if (runtime === "node") { + return ["@types/node"]; + } + + if (runtime === "bun") { + return ["@types/bun"]; + } + + return []; +} diff --git a/apps/cli/src/helpers/deployment/alchemy/alchemy-combined-setup.ts b/apps/cli/src/helpers/deployment/alchemy/alchemy-combined-setup.ts index e8c9d14bf..63b908b7b 100644 --- a/apps/cli/src/helpers/deployment/alchemy/alchemy-combined-setup.ts +++ b/apps/cli/src/helpers/deployment/alchemy/alchemy-combined-setup.ts @@ -36,7 +36,7 @@ export async function setupCombinedAlchemyDeploy( const serverDir = path.join(projectDir, "apps/server"); if (await fs.pathExists(serverDir)) { - await setupAlchemyServerDeploy(serverDir, packageManager); + await setupAlchemyServerDeploy(serverDir, packageManager, projectDir); } const frontend = config.frontend; diff --git a/apps/cli/src/helpers/deployment/alchemy/alchemy-next-setup.ts b/apps/cli/src/helpers/deployment/alchemy/alchemy-next-setup.ts index fcdce5513..0e3d96136 100644 --- a/apps/cli/src/helpers/deployment/alchemy/alchemy-next-setup.ts +++ b/apps/cli/src/helpers/deployment/alchemy/alchemy-next-setup.ts @@ -13,11 +13,7 @@ export async function setupNextAlchemyDeploy( await addPackageDependency({ dependencies: ["@opennextjs/cloudflare"], - devDependencies: [ - "alchemy", - "wrangler", - "@cloudflare/workers-types", - ], + devDependencies: ["alchemy", "wrangler", "@cloudflare/workers-types"], projectDir: webAppDir, }); diff --git a/apps/cli/src/helpers/deployment/server-deploy-setup.ts b/apps/cli/src/helpers/deployment/server-deploy-setup.ts index eb08ee542..ba0c7a2d0 100644 --- a/apps/cli/src/helpers/deployment/server-deploy-setup.ts +++ b/apps/cli/src/helpers/deployment/server-deploy-setup.ts @@ -24,7 +24,7 @@ export async function setupServerDeploy(config: ProjectConfig) { await setupWorkersServerDeploy(serverDir, packageManager); await generateCloudflareWorkerTypes({ serverDir, packageManager }); } else if (serverDeploy === "alchemy") { - await setupAlchemyServerDeploy(serverDir, packageManager); + await setupAlchemyServerDeploy(serverDir, packageManager, projectDir); } } @@ -83,6 +83,7 @@ async function generateCloudflareWorkerTypes({ export async function setupAlchemyServerDeploy( serverDir: string, _packageManager: PackageManager, + projectDir?: string, ) { if (!(await fs.pathExists(serverDir))) return; @@ -96,6 +97,10 @@ export async function setupAlchemyServerDeploy( projectDir: serverDir, }); + if (projectDir) { + await addAlchemyPackagesDependencies(projectDir); + } + const packageJsonPath = path.join(serverDir, "package.json"); if (await fs.pathExists(packageJsonPath)) { const packageJson = await fs.readJson(packageJsonPath); @@ -110,3 +115,17 @@ export async function setupAlchemyServerDeploy( await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 }); } } + +async function addAlchemyPackagesDependencies(projectDir: string) { + const packages = ["packages/api", "packages/auth", "packages/db"]; + + for (const packageName of packages) { + const packageDir = path.join(projectDir, packageName); + if (await fs.pathExists(packageDir)) { + await addPackageDependency({ + devDependencies: ["@cloudflare/workers-types"], + projectDir: packageDir, + }); + } + } +} diff --git a/apps/cli/src/helpers/deployment/web-deploy-setup.ts b/apps/cli/src/helpers/deployment/web-deploy-setup.ts index f7265e325..ae3f998cb 100644 --- a/apps/cli/src/helpers/deployment/web-deploy-setup.ts +++ b/apps/cli/src/helpers/deployment/web-deploy-setup.ts @@ -1,6 +1,7 @@ import path from "node:path"; import fs from "fs-extra"; import type { PackageManager, ProjectConfig } from "../../types"; +import { addPackageDependency } from "../../utils/add-package-deps"; import { setupCombinedAlchemyDeploy } from "./alchemy/alchemy-combined-setup"; import { setupNextAlchemyDeploy } from "./alchemy/alchemy-next-setup"; import { setupNuxtAlchemyDeploy } from "./alchemy/alchemy-nuxt-setup"; @@ -25,6 +26,7 @@ export async function setupWebDeploy(config: ProjectConfig) { if (webDeploy === "alchemy" && serverDeploy === "alchemy") { await setupCombinedAlchemyDeploy(projectDir, packageManager, config); + await addAlchemyPackagesDependencies(projectDir); return; } @@ -64,6 +66,8 @@ export async function setupWebDeploy(config: ProjectConfig) { } else if (isSolid) { await setupSolidAlchemyDeploy(projectDir, packageManager); } + + await addAlchemyPackagesDependencies(projectDir); } } @@ -92,3 +96,17 @@ async function setupWorkersWebDeploy( await setupWorkersVitePlugin(projectDir); } + +async function addAlchemyPackagesDependencies(projectDir: string) { + const packages = ["packages/api", "packages/auth", "packages/db"]; + + for (const packageName of packages) { + const packageDir = path.join(projectDir, packageName); + if (await fs.pathExists(packageDir)) { + await addPackageDependency({ + devDependencies: ["@cloudflare/workers-types"], + projectDir: packageDir, + }); + } + } +} diff --git a/apps/cli/templates/addons/ruler/.ruler/bts.md.hbs b/apps/cli/templates/addons/ruler/.ruler/bts.md.hbs index 2e7a05974..5764e3fe8 100644 --- a/apps/cli/templates/addons/ruler/.ruler/bts.md.hbs +++ b/apps/cli/templates/addons/ruler/.ruler/bts.md.hbs @@ -8,14 +8,14 @@ This is a monorepo with the following structure: {{#if (or (includes frontend "tanstack-router") (includes frontend "react-router") (includes frontend "tanstack-start") (includes frontend "next") (includes frontend "nuxt") (includes frontend "svelte") (includes frontend "solid"))}} -- **`apps/web/`** - Frontend application{{#if (includes frontend "tanstack-router")}} (React with TanStack Router){{else +- **`apps/web/`** - {{#if (eq backend "self")}}Fullstack application{{else}}Frontend application{{/if}}{{#if (includes frontend "tanstack-router")}} (React with TanStack Router){{else if (includes frontend "react-router")}} (React with React Router){{else if (includes frontend "next")}} (Next.js){{else if (includes frontend "nuxt")}} (Nuxt.js){{else if (includes frontend "svelte")}} (SvelteKit){{else if (includes frontend "solid")}} (SolidStart){{/if}} {{/if}} {{#if (ne backend "convex")}} -{{#if (ne backend "none")}} +{{#if (and (ne backend "none") (ne backend "self"))}} - **`apps/server/`** - Backend server{{#if (eq backend "hono")}} (Hono){{else if (eq backend "express")}} (Express){{else if (eq backend "fastify")}} (Fastify){{else if (eq backend "elysia")}} (Elysia){{else if (eq backend "next")}} (Next.js API){{/if}} @@ -24,6 +24,18 @@ frontend "solid")}} (SolidStart){{/if}} - **`packages/backend/`** - Convex backend functions {{/if}} +{{#if (or (ne backend "none") (ne backend "convex"))}} +{{#if (ne api "none")}} +- **`packages/api/`** - Shared API logic and types +{{/if}} +{{#if (and (ne auth "none") (ne backend "convex"))}} +- **`packages/auth/`** - Authentication logic and utilities +{{/if}} +{{#if (and (ne database "none") (ne orm "none") (ne backend "convex"))}} +- **`packages/db/`** - Database schema and utilities +{{/if}} +{{/if}} + {{#if (or (includes frontend "native-nativewind") (includes frontend "native-unistyles"))}} - **`apps/native/`** - React Native mobile app{{#if (includes frontend "native-nativewind")}} (with NativeWind){{else if (includes frontend "native-unistyles")}} (with Unistyles){{/if}} @@ -32,15 +44,13 @@ frontend "solid")}} (SolidStart){{/if}} ## Available Scripts - `{{packageManager}} run dev` - Start all apps in development mode -{{#if (or (includes frontend "tanstack-router") (includes frontend "react-router") (includes frontend "tanstack-start") -(includes frontend "next") (includes frontend "nuxt") (includes frontend "svelte") (includes frontend "solid"))}} +{{#if (and (or (includes frontend "tanstack-router") (includes frontend "react-router") (includes frontend "tanstack-start") +(includes frontend "next") (includes frontend "nuxt") (includes frontend "svelte") (includes frontend "solid")) (ne backend "self"))}} - `{{packageManager}} run dev:web` - Start only the web app {{/if}} -{{#if (ne backend "none")}} -{{#if (ne backend "convex")}} +{{#if (and (ne backend "none") (ne backend "convex") (ne backend "self"))}} - `{{packageManager}} run dev:server` - Start only the server {{/if}} -{{/if}} {{#if (or (includes frontend "native-nativewind") (includes frontend "native-unistyles"))}} - `{{packageManager}} run dev:native` - Start only the native app {{/if}} @@ -48,7 +58,7 @@ frontend "solid")}} (SolidStart){{/if}} {{#if (and (ne database "none") (ne orm "none") (ne backend "convex"))}} ## Database Commands -All database operations should be run from the server workspace: +All database operations should be run from the {{#if (eq backend "self")}}web{{else}}server{{/if}} workspace: - `{{packageManager}} run db:push` - Push schema changes to database - `{{packageManager}} run db:studio` - Open database studio @@ -57,11 +67,11 @@ All database operations should be run from the server workspace: - `{{packageManager}} run db:migrate` - Run database migrations {{#if (eq orm "drizzle")}} -Database schema files are located in `apps/server/src/db/schema/` +Database schema files are located in {{#if (eq backend "self")}}`apps/web/src/db/schema/`{{else}}`apps/server/src/db/schema/`{{/if}} {{else if (eq orm "prisma")}} -Database schema is located in `apps/server/prisma/schema.prisma` +Database schema is located in {{#if (eq backend "self")}}`apps/web/prisma/schema.prisma`{{else}}`apps/server/prisma/schema.prisma`{{/if}} {{else if (eq orm "mongoose")}} -Database models are located in `apps/server/src/db/models/` +Database models are located in {{#if (eq backend "self")}}`apps/web/src/db/models/`{{else}}`apps/server/src/db/models/`{{/if}} {{/if}} {{/if}} @@ -69,10 +79,10 @@ Database models are located in `apps/server/src/db/models/` ## API Structure {{#if (eq api "trpc")}} -- tRPC routers are in `apps/server/src/routers/` +- tRPC routers are in {{#if (eq backend "self")}}`packages/api/src/routers/`{{else}}`apps/server/src/routers/`{{/if}} - Client-side tRPC utils are in `apps/web/src/utils/trpc.ts` {{else if (eq api "orpc")}} -- oRPC endpoints are in `apps/server/src/api/` +- oRPC endpoints are in {{#if (eq backend "self")}}`packages/api/src/api/`{{else}}`apps/server/src/api/`{{/if}} - Client-side API utils are in `apps/web/src/utils/api.ts` {{/if}} {{/if}} @@ -82,7 +92,7 @@ Database models are located in `apps/server/src/db/models/` Authentication is enabled in this project: {{#if (ne backend "convex")}} -- Server auth logic is in `apps/server/src/lib/auth.ts` +- Server auth logic is in {{#if (eq backend "self")}}`packages/auth/src/lib/auth.ts`{{else}}`apps/server/src/lib/auth.ts`{{/if}} {{#if (or (includes frontend "tanstack-router") (includes frontend "react-router") (includes frontend "tanstack-start") (includes frontend "next") (includes frontend "nuxt") (includes frontend "svelte") (includes frontend "solid"))}} - Web app auth client is in `apps/web/src/lib/auth-client.ts` diff --git a/apps/cli/templates/api/orpc/server/package.json.hbs b/apps/cli/templates/api/orpc/server/package.json.hbs index 32ea3c630..f85df04d7 100644 --- a/apps/cli/templates/api/orpc/server/package.json.hbs +++ b/apps/cli/templates/api/orpc/server/package.json.hbs @@ -14,9 +14,7 @@ "scripts": { "build": "tsdown" }, - "devDependencies": { - "@types/bun": "latest" - }, + "devDependencies": {}, "peerDependencies": { "typescript": "^5" }, diff --git a/apps/cli/templates/api/orpc/server/tsconfig.json.hbs b/apps/cli/templates/api/orpc/server/tsconfig.json.hbs index 2e7085d0c..306cdebac 100644 --- a/apps/cli/templates/api/orpc/server/tsconfig.json.hbs +++ b/apps/cli/templates/api/orpc/server/tsconfig.json.hbs @@ -1,10 +1,21 @@ { - "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "bundler", - "types": [ - "bun" - ], - } + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "types": [ + {{#if (eq runtime "node")}} + "node" + {{else if (eq runtime "bun")}} + "bun" + {{else if (eq runtime "workers")}} + "node" + {{else}} + "node", + "bun" + {{/if}}{{#if (eq serverDeploy "alchemy")}}, + "@cloudflare/workers-types" + {{/if}} + ] + } } \ No newline at end of file diff --git a/apps/cli/templates/api/trpc/server/package.json.hbs b/apps/cli/templates/api/trpc/server/package.json.hbs index 8d8e10361..003865bec 100644 --- a/apps/cli/templates/api/trpc/server/package.json.hbs +++ b/apps/cli/templates/api/trpc/server/package.json.hbs @@ -14,9 +14,7 @@ "scripts": { "build": "tsdown" }, - "devDependencies": { - "@types/bun": "latest" - }, + "devDependencies": {}, "peerDependencies": { "typescript": "^5" } diff --git a/apps/cli/templates/api/trpc/server/tsconfig.json.hbs b/apps/cli/templates/api/trpc/server/tsconfig.json.hbs index f290e2e59..29137d923 100644 --- a/apps/cli/templates/api/trpc/server/tsconfig.json.hbs +++ b/apps/cli/templates/api/trpc/server/tsconfig.json.hbs @@ -1,13 +1,23 @@ { - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "outDir": "dist", - "composite": true, - "types": [ - "bun" - ] - } + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "dist", + "composite": true, + "types": [ + {{#if (eq runtime "node")}} + "node" + {{else if (eq runtime "bun")}} + "bun" + {{else if (eq runtime "workers")}} + "node" + {{else}} + "node", + "bun" + {{/if}}{{#if (eq serverDeploy "alchemy")}}, + "@cloudflare/workers-types"{{/if}} + ] + } } \ No newline at end of file diff --git a/apps/cli/templates/auth/better-auth/server/base/package.json.hbs b/apps/cli/templates/auth/better-auth/server/base/package.json.hbs index 82c4087eb..f194f64ef 100644 --- a/apps/cli/templates/auth/better-auth/server/base/package.json.hbs +++ b/apps/cli/templates/auth/better-auth/server/base/package.json.hbs @@ -14,10 +14,7 @@ "scripts": { "build": "tsdown" }, - "devDependencies": { - "@types/bun": "latest", - "@types/node": "^24.5.2" - }, + "devDependencies": {}, "peerDependencies": { "typescript": "^5" } diff --git a/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs b/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs index f290e2e59..29137d923 100644 --- a/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs +++ b/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs @@ -1,13 +1,23 @@ { - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "outDir": "dist", - "composite": true, - "types": [ - "bun" - ] - } + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "dist", + "composite": true, + "types": [ + {{#if (eq runtime "node")}} + "node" + {{else if (eq runtime "bun")}} + "bun" + {{else if (eq runtime "workers")}} + "node" + {{else}} + "node", + "bun" + {{/if}}{{#if (eq serverDeploy "alchemy")}}, + "@cloudflare/workers-types"{{/if}} + ] + } } \ No newline at end of file diff --git a/apps/cli/templates/backend/server/base/tsconfig.json.hbs b/apps/cli/templates/backend/server/base/tsconfig.json.hbs index 58bcfd051..e2e74479f 100644 --- a/apps/cli/templates/backend/server/base/tsconfig.json.hbs +++ b/apps/cli/templates/backend/server/base/tsconfig.json.hbs @@ -5,8 +5,7 @@ "outDir": "dist", "baseUrl": ".", "paths": { - "@/*": ["./src/*"]{{#if (eq orm "prisma")}}, - "prisma": ["node_modules/prisma"]{{/if}} + "@/*": ["./src/*"] }, "types": [ {{#if (eq runtime "node")}} diff --git a/apps/cli/templates/db/base/package.json.hbs b/apps/cli/templates/db/base/package.json.hbs index f99e75138..342cae894 100644 --- a/apps/cli/templates/db/base/package.json.hbs +++ b/apps/cli/templates/db/base/package.json.hbs @@ -14,9 +14,7 @@ "scripts": { "build": "tsdown" }, - "devDependencies": { - "@types/node": "^24.5.2" - }, + "devDependencies": {}, "peerDependencies": { "typescript": "^5" } diff --git a/apps/cli/templates/db/base/tsconfig.json.hbs b/apps/cli/templates/db/base/tsconfig.json.hbs index f290e2e59..29137d923 100644 --- a/apps/cli/templates/db/base/tsconfig.json.hbs +++ b/apps/cli/templates/db/base/tsconfig.json.hbs @@ -1,13 +1,23 @@ { - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "outDir": "dist", - "composite": true, - "types": [ - "bun" - ] - } + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "dist", + "composite": true, + "types": [ + {{#if (eq runtime "node")}} + "node" + {{else if (eq runtime "bun")}} + "bun" + {{else if (eq runtime "workers")}} + "node" + {{else}} + "node", + "bun" + {{/if}}{{#if (eq serverDeploy "alchemy")}}, + "@cloudflare/workers-types"{{/if}} + ] + } } \ No newline at end of file From 58bbe5f64e683340d9dfa1c5fd73c641f24205f6 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Mon, 6 Oct 2025 01:43:04 +0530 Subject: [PATCH 28/33] ok --- apps/cli/src/helpers/core/api-setup.ts | 50 +++------------------- apps/cli/src/helpers/core/backend-setup.ts | 32 ++++---------- 2 files changed, 13 insertions(+), 69 deletions(-) diff --git a/apps/cli/src/helpers/core/api-setup.ts b/apps/cli/src/helpers/core/api-setup.ts index a5b930d1d..2d032daa8 100644 --- a/apps/cli/src/helpers/core/api-setup.ts +++ b/apps/cli/src/helpers/core/api-setup.ts @@ -234,59 +234,19 @@ export async function setupApi(config: ProjectConfig) { }); } - // Add framework-specific dependencies for context types - const frameworkDeps: AvailableDependencies[] = []; - if (backend === "hono") { - frameworkDeps.push("hono"); - } else if (backend === "elysia") { - frameworkDeps.push("elysia"); - } else if (backend === "express") { - frameworkDeps.push("express", "@types/express"); - } else if (backend === "fastify") { - frameworkDeps.push("fastify"); - } else if (backend === "self") { + if (backend === "self") { + const frameworkDeps: AvailableDependencies[] = []; if (frontend.includes("next")) { frameworkDeps.push("next"); } - } - - if (frameworkDeps.length > 0) { - await addPackageDependency({ - dependencies: frameworkDeps, - projectDir: apiPackageDir, - }); - } - - if (api === "trpc") { - if (backend === "hono") { + + if (frameworkDeps.length > 0) { await addPackageDependency({ - dependencies: ["@hono/trpc-server"], - projectDir: apiPackageDir, - }); - } else if (backend === "elysia") { - await addPackageDependency({ - dependencies: ["@elysiajs/trpc"], - projectDir: apiPackageDir, - }); - } else if (backend === "express") { - await addPackageDependency({ - dependencies: ["@trpc/server"], - projectDir: apiPackageDir, - }); - } else if (backend === "fastify") { - await addPackageDependency({ - dependencies: ["@trpc/server"], + dependencies: frameworkDeps, projectDir: apiPackageDir, }); } } - - if (auth === "better-auth") { - await addPackageDependency({ - dependencies: ["better-auth"], - projectDir: apiPackageDir, - }); - } } if (webDirExists && apiDeps.web) { diff --git a/apps/cli/src/helpers/core/backend-setup.ts b/apps/cli/src/helpers/core/backend-setup.ts index 2df8aea38..9bc0193bb 100644 --- a/apps/cli/src/helpers/core/backend-setup.ts +++ b/apps/cli/src/helpers/core/backend-setup.ts @@ -18,45 +18,27 @@ export async function setupBackendDependencies(config: ProjectConfig) { if (framework === "hono") { dependencies.push("hono"); - if (api === "trpc") { - dependencies.push("@hono/trpc-server"); - } - if (runtime === "node") { dependencies.push("@hono/node-server"); - devDependencies.push("tsx", "@types/node"); } } else if (framework === "elysia") { dependencies.push("elysia", "@elysiajs/cors"); - if (api === "trpc") { - dependencies.push("@elysiajs/trpc"); - } if (runtime === "node") { dependencies.push("@elysiajs/node"); - devDependencies.push("tsx", "@types/node"); } } else if (framework === "express") { dependencies.push("express", "cors"); devDependencies.push("@types/express", "@types/cors"); - - if (runtime === "node") { - devDependencies.push("tsx", "@types/node"); - } } else if (framework === "fastify") { dependencies.push("fastify", "@fastify/cors"); - - if (runtime === "node") { - devDependencies.push("tsx", "@types/node"); - } } if (api === "trpc") { - if (framework === "express") { - dependencies.push("@trpc/server"); - } else if (framework === "fastify") { - dependencies.push("@trpc/server"); - } else if (runtime === "workers") { - dependencies.push("@trpc/server"); + dependencies.push("@trpc/server"); + if (framework === "hono") { + dependencies.push("@hono/trpc-server"); + } else if (framework === "elysia") { + dependencies.push("@elysiajs/trpc"); } } else if (api === "orpc") { dependencies.push("@orpc/server", "@orpc/openapi", "@orpc/zod"); @@ -70,7 +52,9 @@ export async function setupBackendDependencies(config: ProjectConfig) { dependencies.push("ai", "@ai-sdk/google"); } - if (runtime === "bun") { + if (runtime === "node") { + devDependencies.push("tsx", "@types/node"); + } else if (runtime === "bun") { devDependencies.push("@types/bun"); } From da5167fce4fc03e40c07d955ddd625148644e4cf Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Mon, 6 Oct 2025 02:41:38 +0530 Subject: [PATCH 29/33] ok --- apps/cli/src/helpers/core/api-setup.ts | 13 +-- apps/cli/src/helpers/core/create-readme.ts | 2 - apps/cli/src/helpers/core/workspace-setup.ts | 24 +++-- apps/cli/src/prompts/backend.ts | 7 +- apps/cli/src/utils/compatibility-rules.ts | 11 ++- .../api/orpc/server/tsconfig.json.hbs | 23 ++--- .../api/trpc/server/tsconfig.json.hbs | 15 +-- .../better-auth/server/base/tsconfig.json.hbs | 15 +-- .../backend/server/base/tsconfig.json.hbs | 13 --- .../cli/templates/base/tsconfig.base.json.hbs | 53 ++++++---- apps/cli/templates/db/base/tsconfig.json.hbs | 15 +-- .../src/app/(home)/new/_components/utils.ts | 99 +++++++++++++++++-- apps/web/src/lib/constant.ts | 41 ++++++-- bun.lock | 11 ++- package.json | 4 +- 15 files changed, 205 insertions(+), 141 deletions(-) diff --git a/apps/cli/src/helpers/core/api-setup.ts b/apps/cli/src/helpers/core/api-setup.ts index 2d032daa8..1a7f11d9c 100644 --- a/apps/cli/src/helpers/core/api-setup.ts +++ b/apps/cli/src/helpers/core/api-setup.ts @@ -196,15 +196,8 @@ function getConvexDependencies(frontend: Frontend[]) { } export async function setupApi(config: ProjectConfig) { - const { - api, - projectName, - frontend, - backend, - packageManager, - projectDir, - auth, - } = config; + const { api, projectName, frontend, backend, packageManager, projectDir } = + config; const isConvex = backend === "convex"; const webDir = path.join(projectDir, "apps/web"); @@ -239,7 +232,7 @@ export async function setupApi(config: ProjectConfig) { if (frontend.includes("next")) { frameworkDeps.push("next"); } - + if (frameworkDeps.length > 0) { await addPackageDependency({ dependencies: frameworkDeps, diff --git a/apps/cli/src/helpers/core/create-readme.ts b/apps/cli/src/helpers/core/create-readme.ts index 10510358d..7978eb6aa 100644 --- a/apps/cli/src/helpers/core/create-readme.ts +++ b/apps/cli/src/helpers/core/create-readme.ts @@ -463,8 +463,6 @@ function generateFeaturesList( addonsList.push("- **Fastify** - Fast, low-overhead web framework"); } else if (backend === "elysia") { addonsList.push("- **Elysia** - Type-safe, high-performance framework"); - } else if (backend === "next") { - addonsList.push("- **Next.js** - Full-stack React framework"); } if (api === "trpc") { diff --git a/apps/cli/src/helpers/core/workspace-setup.ts b/apps/cli/src/helpers/core/workspace-setup.ts index 871ebdc06..221125e84 100644 --- a/apps/cli/src/helpers/core/workspace-setup.ts +++ b/apps/cli/src/helpers/core/workspace-setup.ts @@ -15,13 +15,11 @@ export async function setupWorkspaceDependencies( const commonDeps: AvailableDependencies[] = ["dotenv", "zod"]; const commonDevDeps: AvailableDependencies[] = ["tsdown"]; - const runtimeDevDeps = getRuntimeDevDeps(options); - const dbPackageDir = path.join(projectDir, "packages/db"); if (await fs.pathExists(dbPackageDir)) { await addPackageDependency({ dependencies: commonDeps, - devDependencies: [...commonDevDeps, ...runtimeDevDeps], + devDependencies: commonDevDeps, projectDir: dbPackageDir, }); } @@ -30,7 +28,7 @@ export async function setupWorkspaceDependencies( if (await fs.pathExists(authPackageDir)) { await addPackageDependency({ dependencies: commonDeps, - devDependencies: [...commonDevDeps, ...runtimeDevDeps], + devDependencies: commonDevDeps, customDependencies: { [`@${projectName}/db`]: workspaceVersion, }, @@ -42,7 +40,7 @@ export async function setupWorkspaceDependencies( if (await fs.pathExists(apiPackageDir)) { await addPackageDependency({ dependencies: commonDeps, - devDependencies: [...commonDevDeps, ...runtimeDevDeps], + devDependencies: commonDevDeps, customDependencies: { [`@${projectName}/auth`]: workspaceVersion, [`@${projectName}/db`]: workspaceVersion, @@ -55,7 +53,7 @@ export async function setupWorkspaceDependencies( if (await fs.pathExists(serverPackageDir)) { await addPackageDependency({ dependencies: commonDeps, - devDependencies: [...commonDevDeps, ...runtimeDevDeps], + devDependencies: commonDevDeps, customDependencies: { [`@${projectName}/api`]: workspaceVersion, [`@${projectName}/auth`]: workspaceVersion, @@ -82,6 +80,8 @@ export async function setupWorkspaceDependencies( } } + const runtimeDevDeps = getRuntimeDevDeps(options); + await addPackageDependency({ dependencies: commonDeps, devDependencies: [...commonDevDeps, ...runtimeDevDeps], @@ -91,18 +91,22 @@ export async function setupWorkspaceDependencies( function getRuntimeDevDeps(options: ProjectConfig): AvailableDependencies[] { const { runtime, backend } = options; - + if (runtime === "none" && backend === "self") { return ["@types/node"]; } - + if (runtime === "node") { return ["@types/node"]; } - + if (runtime === "bun") { return ["@types/bun"]; } - + + if (runtime === "workers") { + return ["@types/node"]; + } + return []; } diff --git a/apps/cli/src/prompts/backend.ts b/apps/cli/src/prompts/backend.ts index af42e9547..639ecc386 100644 --- a/apps/cli/src/prompts/backend.ts +++ b/apps/cli/src/prompts/backend.ts @@ -3,11 +3,12 @@ import { DEFAULT_CONFIG } from "../constants"; import type { Backend, Frontend } from "../types"; import { exitCancelled } from "../utils/errors"; +// Temporarily restrict to Next.js only for backend="self" const FULLSTACK_FRONTENDS: readonly Frontend[] = [ "next", - "nuxt", - "svelte", - "tanstack-start", + // "nuxt", // TODO: Add support in future update + // "svelte", // TODO: Add support in future update + // "tanstack-start", // TODO: Add support in future update ] as const; export async function getBackendFrameworkChoice( diff --git a/apps/cli/src/utils/compatibility-rules.ts b/apps/cli/src/utils/compatibility-rules.ts index b29a5c435..73dee97f9 100644 --- a/apps/cli/src/utils/compatibility-rules.ts +++ b/apps/cli/src/utils/compatibility-rules.ts @@ -43,11 +43,12 @@ export function ensureSingleWebAndNative(frontends: Frontend[]) { } } +// Temporarily restrict to Next.js only for backend="self" const FULLSTACK_FRONTENDS: readonly Frontend[] = [ "next", - "nuxt", - "svelte", - "tanstack-start", + // "nuxt", // TODO: Add support in future update + // "svelte", // TODO: Add support in future update + // "tanstack-start", // TODO: Add support in future update ] as const; export function validateSelfBackendCompatibility( @@ -65,7 +66,7 @@ export function validateSelfBackendCompatibility( if (!hasFullstackFrontend) { exitWithError( - "Backend 'self' (fullstack) requires a fullstack-capable frontend. Please use --frontend with one of: next, nuxt, svelte, tanstack-start", + "Backend 'self' (fullstack) currently only supports Next.js frontend. Please use --frontend next. Support for Nuxt, SvelteKit, and TanStack Start will be added in a future update.", ); } @@ -85,7 +86,7 @@ export function validateSelfBackendCompatibility( backend === "self" ) { exitWithError( - "Backend 'self' (fullstack) is only compatible with fullstack-capable frontends: next, nuxt, svelte, tanstack-start. Please choose a different backend or use a fullstack frontend.", + "Backend 'self' (fullstack) currently only supports Next.js frontend. Please use --frontend next or choose a different backend. Support for Nuxt, SvelteKit, and TanStack Start will be added in a future update.", ); } } diff --git a/apps/cli/templates/api/orpc/server/tsconfig.json.hbs b/apps/cli/templates/api/orpc/server/tsconfig.json.hbs index 306cdebac..e49ff4717 100644 --- a/apps/cli/templates/api/orpc/server/tsconfig.json.hbs +++ b/apps/cli/templates/api/orpc/server/tsconfig.json.hbs @@ -1,21 +1,10 @@ { + "extends": "../../tsconfig.base.json", "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "bundler", - "types": [ - {{#if (eq runtime "node")}} - "node" - {{else if (eq runtime "bun")}} - "bun" - {{else if (eq runtime "workers")}} - "node" - {{else}} - "node", - "bun" - {{/if}}{{#if (eq serverDeploy "alchemy")}}, - "@cloudflare/workers-types" - {{/if}} - ] + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "dist", + "composite": true } } \ No newline at end of file diff --git a/apps/cli/templates/api/trpc/server/tsconfig.json.hbs b/apps/cli/templates/api/trpc/server/tsconfig.json.hbs index 29137d923..e49ff4717 100644 --- a/apps/cli/templates/api/trpc/server/tsconfig.json.hbs +++ b/apps/cli/templates/api/trpc/server/tsconfig.json.hbs @@ -5,19 +5,6 @@ "declarationMap": true, "sourceMap": true, "outDir": "dist", - "composite": true, - "types": [ - {{#if (eq runtime "node")}} - "node" - {{else if (eq runtime "bun")}} - "bun" - {{else if (eq runtime "workers")}} - "node" - {{else}} - "node", - "bun" - {{/if}}{{#if (eq serverDeploy "alchemy")}}, - "@cloudflare/workers-types"{{/if}} - ] + "composite": true } } \ No newline at end of file diff --git a/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs b/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs index 29137d923..e49ff4717 100644 --- a/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs +++ b/apps/cli/templates/auth/better-auth/server/base/tsconfig.json.hbs @@ -5,19 +5,6 @@ "declarationMap": true, "sourceMap": true, "outDir": "dist", - "composite": true, - "types": [ - {{#if (eq runtime "node")}} - "node" - {{else if (eq runtime "bun")}} - "bun" - {{else if (eq runtime "workers")}} - "node" - {{else}} - "node", - "bun" - {{/if}}{{#if (eq serverDeploy "alchemy")}}, - "@cloudflare/workers-types"{{/if}} - ] + "composite": true } } \ No newline at end of file diff --git a/apps/cli/templates/backend/server/base/tsconfig.json.hbs b/apps/cli/templates/backend/server/base/tsconfig.json.hbs index e2e74479f..7a4b9daff 100644 --- a/apps/cli/templates/backend/server/base/tsconfig.json.hbs +++ b/apps/cli/templates/backend/server/base/tsconfig.json.hbs @@ -7,19 +7,6 @@ "paths": { "@/*": ["./src/*"] }, - "types": [ - {{#if (eq runtime "node")}} - "node" - {{else if (eq runtime "bun")}} - "bun" - {{else if (eq runtime "workers")}} - "node" - {{else}} - "node", - "bun" - {{/if}}{{#if (eq serverDeploy "alchemy")}}, - "@cloudflare/workers-types"{{/if}} - ], "jsx": "react-jsx"{{#if (eq backend "hono")}}, "jsxImportSource": "hono/jsx"{{/if}} } diff --git a/apps/cli/templates/base/tsconfig.base.json.hbs b/apps/cli/templates/base/tsconfig.base.json.hbs index 940c8369e..cbc8fbe32 100644 --- a/apps/cli/templates/base/tsconfig.base.json.hbs +++ b/apps/cli/templates/base/tsconfig.base.json.hbs @@ -1,23 +1,34 @@ { - "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "bundler", - "lib": [ - "ESNext" - ], - "verbatimModuleSyntax": true, - "strict": true, - "skipLibCheck": true, - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "isolatedModules": true, - "noUncheckedIndexedAccess": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - } + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "lib": ["ESNext"], + "verbatimModuleSyntax": true, + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "noUncheckedIndexedAccess": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "types": [ + {{#if (eq runtime "node")}} + "node" + {{else if (eq runtime "bun")}} + "bun" + {{else if (eq runtime "workers")}} + "node" + {{else}} + "node", + "bun" + {{/if}}{{#if (eq serverDeploy "alchemy")}}, + "@cloudflare/workers-types"{{/if}} + ] + } } \ No newline at end of file diff --git a/apps/cli/templates/db/base/tsconfig.json.hbs b/apps/cli/templates/db/base/tsconfig.json.hbs index 29137d923..e49ff4717 100644 --- a/apps/cli/templates/db/base/tsconfig.json.hbs +++ b/apps/cli/templates/db/base/tsconfig.json.hbs @@ -5,19 +5,6 @@ "declarationMap": true, "sourceMap": true, "outDir": "dist", - "composite": true, - "types": [ - {{#if (eq runtime "node")}} - "node" - {{else if (eq runtime "bun")}} - "bun" - {{else if (eq runtime "workers")}} - "node" - {{else}} - "node", - "bun" - {{/if}}{{#if (eq serverDeploy "alchemy")}}, - "@cloudflare/workers-types"{{/if}} - ] + "composite": true } } \ No newline at end of file diff --git a/apps/web/src/app/(home)/new/_components/utils.ts b/apps/web/src/app/(home)/new/_components/utils.ts index da086494c..1f57d5d83 100644 --- a/apps/web/src/app/(home)/new/_components/utils.ts +++ b/apps/web/src/app/(home)/new/_components/utils.ts @@ -81,6 +81,7 @@ export const analyzeStackCompatibility = ( const isConvex = nextStack.backend === "convex"; const isBackendNone = nextStack.backend === "none"; + const isBackendSelf = nextStack.backend === "self"; if (isConvex) { const convexOverrides: Partial = { @@ -193,6 +194,51 @@ export const analyzeStackCompatibility = ( }); } } + } else if (isBackendSelf) { + const hasNextFrontend = nextStack.webFrontend.includes("next"); + + if (!hasNextFrontend) { + const originalWebFrontendLength = nextStack.webFrontend.length; + nextStack.webFrontend = ["next"]; + + if ( + originalWebFrontendLength !== 1 || + !nextStack.webFrontend.includes("next") + ) { + changed = true; + notes.webFrontend.notes.push( + "Self backend (fullstack) currently only supports Next.js frontend. Other frontends have been removed.", + ); + notes.backend.notes.push( + "Self backend (fullstack) requires Next.js frontend.", + ); + notes.webFrontend.hasIssue = true; + notes.backend.hasIssue = true; + changes.push({ + category: "backend", + message: + "Frontend set to 'Next.js' (Self backend currently only supports Next.js)", + }); + } + } + + if (nextStack.runtime !== "none") { + notes.runtime.notes.push( + "Self backend (fullstack) uses frontend's built-in API routes. Runtime will be set to 'None'.", + ); + notes.backend.notes.push( + "Self backend (fullstack) doesn't need a separate runtime.", + ); + notes.runtime.hasIssue = true; + notes.backend.hasIssue = true; + nextStack.runtime = "none"; + changed = true; + changes.push({ + category: "backend", + message: + "Runtime set to 'None' (Self backend uses frontend's built-in API routes)", + }); + } } else { if (nextStack.runtime === "none") { notes.runtime.notes.push( @@ -1068,13 +1114,22 @@ export const analyzeStackCompatibility = ( if ( nextStack.serverDeploy !== "none" && - (nextStack.backend === "none" || nextStack.backend === "convex") + (nextStack.backend === "none" || + nextStack.backend === "convex" || + nextStack.backend === "self") ) { + const backendType = + nextStack.backend === "self" + ? "Self backend (fullstack)" + : nextStack.backend === "convex" + ? "Convex backend" + : "No backend"; + notes.serverDeploy.notes.push( - "Server deployment requires a supported backend. It will be disabled.", + `Server deployment is not needed with ${backendType.toLowerCase()}. It will be disabled.`, ); notes.backend.notes.push( - "No compatible backend selected: Server deployment has been disabled.", + `${backendType} doesn't need server deployment. Server deployment has been disabled.`, ); notes.serverDeploy.hasIssue = true; notes.backend.hasIssue = true; @@ -1082,8 +1137,7 @@ export const analyzeStackCompatibility = ( changed = true; changes.push({ category: "serverDeploy", - message: - "Server deployment set to 'None' (requires a backend but 'None' or 'Convex' was selected)", + message: `Server deployment set to 'None' (${backendType.toLowerCase()} doesn't need server deployment)`, }); } @@ -1301,6 +1355,21 @@ export const getDisabledReason = ( return "Cloudflare Workers runtime only supports Hono backend. Switch to Hono to use Workers runtime."; } + if (category === "backend" && optionId === "self") { + const hasNextFrontend = finalStack.webFrontend.includes("next"); + if (!hasNextFrontend) { + return "Self backend (fullstack) currently only supports Next.js frontend. Select Next.js frontend first."; + } + } + + if ( + category === "webFrontend" && + optionId !== "next" && + finalStack.backend === "self" + ) { + return "Self backend (fullstack) currently only supports Next.js frontend. Support for other frameworks will be added in a future update."; + } + if ( category === "runtime" && optionId === "workers" && @@ -1312,9 +1381,18 @@ export const getDisabledReason = ( if ( category === "runtime" && optionId === "none" && - finalStack.backend !== "convex" + finalStack.backend !== "convex" && + finalStack.backend !== "self" ) { - return "Runtime 'None' is only available with Convex backend. Switch to Convex to use this option."; + return "Runtime 'None' is only available with Convex backend or Self backend (fullstack). Switch to Convex or Self to use this option."; + } + + if ( + category === "runtime" && + optionId !== "none" && + finalStack.backend === "self" + ) { + return "Self backend (fullstack) uses frontend's built-in API routes and requires runtime to be 'None'. Self backend doesn't need a separate runtime."; } if ( @@ -1567,8 +1645,13 @@ export const getDisabledReason = ( if ( category === "serverDeploy" && optionId !== "none" && - (finalStack.backend === "none" || finalStack.backend === "convex") + (finalStack.backend === "none" || + finalStack.backend === "convex" || + finalStack.backend === "self") ) { + if (finalStack.backend === "self") { + return "Self backend (fullstack) uses frontend's built-in API routes and doesn't need server deployment."; + } return "Server deployment requires a supported backend (Hono, Express, Fastify, or Elysia). Convex has its own deployment."; } diff --git a/apps/web/src/lib/constant.ts b/apps/web/src/lib/constant.ts index 7fcbcc094..267bd6986 100644 --- a/apps/web/src/lib/constant.ts +++ b/apps/web/src/lib/constant.ts @@ -173,13 +173,6 @@ export const TECH_OPTIONS: Record< color: "from-blue-500 to-blue-700", default: true, }, - { - id: "next", - name: "Next.js", - description: "App Router & API (separate from frontend)", - icon: `${ICON_BASE_URL}/nextjs.svg`, - color: "from-gray-700 to-black", - }, { id: "elysia", name: "Elysia", @@ -208,6 +201,13 @@ export const TECH_OPTIONS: Record< icon: `${ICON_BASE_URL}/convex.svg`, color: "from-pink-500 to-pink-700", }, + { + id: "self", + name: "Fullstack Next.js", + description: "Use frontend's built-in API routes", + icon: `${ICON_BASE_URL}/nextjs.svg`, + color: "from-gray-700 to-black", + }, { id: "none", name: "No Backend", @@ -660,6 +660,33 @@ export const PRESET_TEMPLATES = [ yolo: "false", }, }, + { + id: "nextjs-fullstack", + name: "Next.js Fullstack", + description: + "Full-stack Next.js app with built-in API routes and internal packages", + stack: { + projectName: "my-better-t-app", + webFrontend: ["next"], + nativeFrontend: ["none"], + backend: "self", + runtime: "none", + database: "sqlite", + orm: "drizzle", + dbSetup: "none", + auth: "better-auth", + payments: "none", + packageManager: "bun", + addons: ["turborepo"], + examples: ["todo"], + git: "true", + install: "true", + api: "trpc", + webDeploy: "none", + serverDeploy: "none", + yolo: "false", + }, + }, { id: "native-app", name: "Mobile App", diff --git a/bun.lock b/bun.lock index daa4b446b..452195efe 100644 --- a/bun.lock +++ b/bun.lock @@ -3,6 +3,9 @@ "workspaces": { "": { "name": "better-t-stack", + "dependencies": { + "@clack/prompts": "^0.11.0", + }, "devDependencies": { "@biomejs/biome": "2.2.5", "@types/bun": "^1.2.23", @@ -282,9 +285,9 @@ "@biomejs/wasm-nodejs": ["@biomejs/wasm-nodejs@2.2.5", "", {}, "sha512-p9BhDKyjyemt9aBOaqINrsTJSWiCYZu1asM5AxfMFxF9Fi3L3ZcIbzxe5OYa294oNllmmqJ+68GlZG/2fqF0dQ=="], - "@clack/core": ["@clack/core@1.0.0-alpha.6", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-eG5P45+oShFG17u9I1DJzLkXYB1hpUgTLi32EfsMjSHLEqJUR8BOBCVFkdbUX2g08eh/HCi6UxNGpPhaac1LAA=="], + "@clack/core": ["@clack/core@0.5.0", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow=="], - "@clack/prompts": ["@clack/prompts@1.0.0-alpha.6", "", { "dependencies": { "@clack/core": "1.0.0-alpha.6", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-75NCtYOgDHVBE2nLdKPTDYOaESxO0GLAKC7INREp5VbS988Xua1u+588VaGlcvXiLc/kSwc25Cd+4PeTSpY6QQ=="], + "@clack/prompts": ["@clack/prompts@0.11.0", "", { "dependencies": { "@clack/core": "0.5.0", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw=="], "@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.4.0", "", { "dependencies": { "mime": "^3.0.0" } }, "sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA=="], @@ -3360,6 +3363,8 @@ "cloudflare/@types/node": ["@types/node@18.19.129", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-hrmi5jWt2w60ayox3iIXwpMEnfUvOLJCRtrOPbHtH15nTjvO7uhnelvrdAs0dO0/zl5DZ3ZbahiaXEVb54ca/A=="], + "create-better-t-stack/@clack/prompts": ["@clack/prompts@1.0.0-alpha.6", "", { "dependencies": { "@clack/core": "1.0.0-alpha.6", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-75NCtYOgDHVBE2nLdKPTDYOaESxO0GLAKC7INREp5VbS988Xua1u+588VaGlcvXiLc/kSwc25Cd+4PeTSpY6QQ=="], + "eslint/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "eslint-import-resolver-node/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], @@ -3954,6 +3959,8 @@ "cloudflare/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], + "create-better-t-stack/@clack/prompts/@clack/core": ["@clack/core@1.0.0-alpha.6", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-eG5P45+oShFG17u9I1DJzLkXYB1hpUgTLi32EfsMjSHLEqJUR8BOBCVFkdbUX2g08eh/HCi6UxNGpPhaac1LAA=="], + "express/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], "form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], diff --git a/package.json b/package.json index 509b34932..bd4871ccd 100644 --- a/package.json +++ b/package.json @@ -43,5 +43,7 @@ "apps/*", "packages/*" ], - "dependencies": {} + "dependencies": { + "@clack/prompts": "^0.11.0" + } } \ No newline at end of file From 2a50dff96b99f9555cd95e8513e2f2f52bbd9f9d Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Mon, 6 Oct 2025 12:46:46 +0530 Subject: [PATCH 30/33] ok --- apps/cli/src/utils/config-validation.ts | 20 ++ apps/cli/test/api.test.ts | 10 +- apps/cli/test/auth.test.ts | 6 +- apps/cli/test/backend-runtime.test.ts | 136 ++++++++-- apps/cli/test/basic-configurations.test.ts | 27 ++ apps/cli/test/benchmark.test.ts | 6 +- apps/cli/test/catalogs.test.ts | 292 --------------------- apps/cli/test/deployment.test.ts | 13 +- apps/cli/test/examples.test.ts | 6 +- apps/cli/test/frontend.test.ts | 57 ++++ apps/cli/test/integration.test.ts | 25 +- 11 files changed, 269 insertions(+), 329 deletions(-) delete mode 100644 apps/cli/test/catalogs.test.ts diff --git a/apps/cli/src/utils/config-validation.ts b/apps/cli/src/utils/config-validation.ts index 0a4a10382..b9ea11b56 100644 --- a/apps/cli/src/utils/config-validation.ts +++ b/apps/cli/src/utils/config-validation.ts @@ -303,6 +303,25 @@ export function validateBackendNoneConstraints( } } +export function validateSelfBackendConstraints( + config: Partial, + providedFlags: Set, +) { + const { backend } = config; + + if (backend !== "self") { + return; + } + + const has = (k: string) => providedFlags.has(k); + + if (has("runtime") && config.runtime !== "none") { + exitWithError( + "Backend 'self' (fullstack) requires '--runtime none'. Please remove the --runtime flag or set it to 'none'.", + ); + } +} + export function validateBackendConstraints( config: Partial, providedFlags: Set, @@ -409,6 +428,7 @@ export function validateFullConfig( validateConvexConstraints(config, providedFlags); validateBackendNoneConstraints(config, providedFlags); + validateSelfBackendConstraints(config, providedFlags); validateBackendConstraints(config, providedFlags, options); validateFrontendConstraints(config, providedFlags); diff --git a/apps/cli/test/api.test.ts b/apps/cli/test/api.test.ts index d6a4313c0..360da679f 100644 --- a/apps/cli/test/api.test.ts +++ b/apps/cli/test/api.test.ts @@ -137,17 +137,17 @@ describe("API Configurations", () => { }); it("should work with tRPC + all compatible backends", async () => { - const backends = ["hono", "express", "fastify", "next", "elysia"]; + const backends = ["hono", "express", "fastify", "elysia", "self"]; for (const backend of backends) { const config: TestConfig = { projectName: `trpc-${backend}`, api: "trpc", backend: backend as Backend, - frontend: ["tanstack-router"], + frontend: backend === "self" ? ["next"] : ["tanstack-router"], database: "sqlite", orm: "drizzle", - auth: "none", + auth: backend === "self" ? "better-auth" : "none", addons: ["none"], examples: ["none"], dbSetup: "none", @@ -159,6 +159,8 @@ describe("API Configurations", () => { // Set appropriate runtime if (backend === "elysia") { config.runtime = "bun"; + } else if (backend === "self") { + config.runtime = "none"; } else { config.runtime = "bun"; } @@ -206,7 +208,7 @@ describe("API Configurations", () => { }); it("should work with oRPC + all compatible backends", async () => { - const backends = ["hono", "express", "fastify", "next", "elysia"]; + const backends = ["hono", "express", "fastify", "elysia"]; for (const backend of backends) { const config: TestConfig = { diff --git a/apps/cli/test/auth.test.ts b/apps/cli/test/auth.test.ts index 07e666311..95d5f2d11 100644 --- a/apps/cli/test/auth.test.ts +++ b/apps/cli/test/auth.test.ts @@ -331,7 +331,7 @@ describe("Authentication Configurations", () => { }); describe("Authentication with Different Backends", () => { - const backends = ["hono", "express", "fastify", "next", "elysia"]; + const backends = ["hono", "express", "fastify", "elysia", "self"]; for (const backend of backends) { it(`should work with better-auth + ${backend}`, async () => { @@ -342,7 +342,7 @@ describe("Authentication Configurations", () => { database: "sqlite", orm: "drizzle", api: "trpc", - frontend: ["tanstack-router"], + frontend: backend === "self" ? ["next"] : ["tanstack-router"], addons: ["turborepo"], examples: ["todo"], dbSetup: "none", @@ -354,6 +354,8 @@ describe("Authentication Configurations", () => { // Set appropriate runtime if (backend === "elysia") { config.runtime = "bun"; + } else if (backend === "self") { + config.runtime = "none"; } else { config.runtime = "bun"; } diff --git a/apps/cli/test/backend-runtime.test.ts b/apps/cli/test/backend-runtime.test.ts index 2b1cc4a57..548ff6d87 100644 --- a/apps/cli/test/backend-runtime.test.ts +++ b/apps/cli/test/backend-runtime.test.ts @@ -1,5 +1,5 @@ import { describe, it } from "vitest"; -import type { Backend, Runtime } from "../src/types"; +import type { Backend, Frontend, Runtime } from "../src/types"; import { expectError, expectSuccess, @@ -23,12 +23,10 @@ describe("Backend and Runtime Combinations", () => { { backend: "elysia" as const, runtime: "bun" as const }, - { backend: "next" as const, runtime: "bun" as const }, - { backend: "next" as const, runtime: "node" as const }, - // Special cases { backend: "convex" as const, runtime: "none" as const }, { backend: "none" as const, runtime: "none" as const }, + { backend: "self" as const, runtime: "none" as const }, ]; for (const { backend, runtime } of validCombinations) { @@ -57,6 +55,12 @@ describe("Backend and Runtime Combinations", () => { config.orm = "none"; config.auth = "none"; config.api = "none"; + } else if (backend === "self") { + config.frontend = ["next"]; + config.database = "sqlite"; + config.orm = "drizzle"; + config.auth = "better-auth"; + config.api = "trpc"; } else { config.database = "sqlite"; config.orm = "drizzle"; @@ -90,12 +94,6 @@ describe("Backend and Runtime Combinations", () => { error: "Cloudflare Workers runtime (--runtime workers) is only supported with Hono backend", }, - { - backend: "next", - runtime: "workers", - error: - "Cloudflare Workers runtime (--runtime workers) is only supported with Hono backend", - }, { backend: "elysia", runtime: "workers", @@ -137,28 +135,48 @@ describe("Backend and Runtime Combinations", () => { error: "Backend 'none' requires '--runtime none'", }, - // Runtime none only works with convex or none backend + // Self backend requires runtime none + { + backend: "self", + runtime: "bun", + error: "Backend 'self' (fullstack) requires '--runtime none'", + frontend: ["next"], // Need to specify Next.js frontend for self backend + }, + { + backend: "self", + runtime: "node", + error: "Backend 'self' (fullstack) requires '--runtime none'", + frontend: ["next"], // Need to specify Next.js frontend for self backend + }, + { + backend: "self", + runtime: "workers", + error: "Backend 'self' (fullstack) requires '--runtime none'", + frontend: ["next"], // Need to specify Next.js frontend for self backend + }, + + // Runtime none only works with convex, none, or self backend { backend: "hono", runtime: "none", error: - "'--runtime none' is only supported with '--backend convex' or '--backend none'", + "'--runtime none' is only supported with '--backend convex', '--backend none', or '--backend self'", }, { backend: "express", runtime: "none", error: - "'--runtime none' is only supported with '--backend convex' or '--backend none'", + "'--runtime none' is only supported with '--backend convex', '--backend none', or '--backend self'", }, ]; - for (const { backend, runtime, error } of invalidCombinations) { + for (const { backend, runtime, error, frontend } of invalidCombinations) { it(`should fail with ${backend} + ${runtime}`, async () => { const config: TestConfig = { projectName: `invalid-${backend}-${runtime}`, backend: backend as Backend, runtime: runtime as Runtime, - frontend: ["tanstack-router"], + frontend: (frontend || ["tanstack-router"]) as Frontend[], auth: "none", api: "trpc", addons: ["none"], @@ -180,6 +198,11 @@ describe("Backend and Runtime Combinations", () => { config.orm = "none"; config.auth = "none"; config.api = "none"; + } else if (backend === "self") { + config.database = "sqlite"; + config.orm = "drizzle"; + config.auth = "better-auth"; + config.api = "trpc"; } else { config.database = "sqlite"; config.orm = "drizzle"; @@ -333,10 +356,10 @@ describe("Backend and Runtime Combinations", () => { "hono", "express", "fastify", - "next", "elysia", "convex", "none", + "self", ] as const; for (const backend of backends) { @@ -369,6 +392,14 @@ describe("Backend and Runtime Combinations", () => { config.auth = "none"; config.api = "none"; break; + case "self": + config.frontend = ["next"]; // Self backend only works with Next.js + config.runtime = "none"; + config.database = "sqlite"; + config.orm = "drizzle"; + config.auth = "better-auth"; + config.api = "trpc"; + break; case "elysia": config.runtime = "bun"; config.database = "sqlite"; @@ -389,4 +420,77 @@ describe("Backend and Runtime Combinations", () => { }); } }); + + describe("Self Backend Constraints", () => { + it("should work with self backend and Next.js frontend", async () => { + const result = await runTRPCTest({ + projectName: "self-backend-success", + backend: "self", + runtime: "none", + frontend: ["next"], + database: "sqlite", + orm: "drizzle", + auth: "better-auth", + api: "trpc", + addons: ["none"], + examples: ["none"], + dbSetup: "none", + webDeploy: "none", + serverDeploy: "none", + install: false, + }); + + expectSuccess(result); + }); + + it("should fail self backend with non-Next.js frontend", async () => { + const result = await runTRPCTest({ + projectName: "self-backend-invalid-frontend", + backend: "self", + runtime: "none", + frontend: ["tanstack-router"], // Invalid frontend for self backend + database: "sqlite", + orm: "drizzle", + auth: "better-auth", + api: "trpc", + addons: ["none"], + examples: ["none"], + dbSetup: "none", + webDeploy: "none", + serverDeploy: "none", + expectError: true, + install: false, + }); + + expectError( + result, + "Backend 'self' (fullstack) currently only supports Next.js frontend. Please use --frontend next. Support for Nuxt, SvelteKit, and TanStack Start will be added in a future update.", + ); + }); + + it("should fail self backend with non-none runtime", async () => { + const result = await runTRPCTest({ + projectName: "self-backend-invalid-runtime", + backend: "self", + runtime: "bun", // Invalid runtime for self backend + frontend: ["next"], + database: "sqlite", + orm: "drizzle", + auth: "better-auth", + api: "trpc", + addons: ["none"], + examples: ["none"], + dbSetup: "none", + webDeploy: "none", + serverDeploy: "none", + expectError: true, + install: false, + }); + + expectError( + result, + "Backend 'self' (fullstack) requires '--runtime none'", + ); + }); + }); }); diff --git a/apps/cli/test/basic-configurations.test.ts b/apps/cli/test/basic-configurations.test.ts index 03f640d17..a363d4901 100644 --- a/apps/cli/test/basic-configurations.test.ts +++ b/apps/cli/test/basic-configurations.test.ts @@ -42,6 +42,33 @@ describe("Basic Configurations", () => { "explicit-defaults", ); }); + + it("should create Next.js fullstack project with self backend", async () => { + const result = await runTRPCTest({ + projectName: "nextjs-fullstack-defaults", + database: "sqlite", + orm: "drizzle", + backend: "self", + runtime: "none", + frontend: ["next"], + auth: "better-auth", + api: "trpc", + addons: ["turborepo"], + examples: ["none"], + dbSetup: "none", + webDeploy: "none", + serverDeploy: "none", + install: false, // Skip installation for faster tests + }); + + expectSuccess(result); + expect(result.result?.projectConfig.projectName).toBe( + "nextjs-fullstack-defaults", + ); + expect(result.result?.projectConfig.backend).toBe("self"); + expect(result.result?.projectConfig.runtime).toBe("none"); + expect(result.result?.projectConfig.frontend).toEqual(["next"]); + }); }); describe("Package Managers", () => { diff --git a/apps/cli/test/benchmark.test.ts b/apps/cli/test/benchmark.test.ts index c10166ce5..6102d0554 100644 --- a/apps/cli/test/benchmark.test.ts +++ b/apps/cli/test/benchmark.test.ts @@ -219,11 +219,11 @@ describe("CLI Performance Benchmarks", () => { const result = await runTRPCTest({ projectName: "benchmark-nextjs", frontend: ["next"], - backend: "next", - runtime: "node", + backend: "self", + runtime: "none", database: "sqlite", orm: "drizzle", - auth: "none", + auth: "better-auth", api: "trpc", addons: ["none"], examples: ["none"], diff --git a/apps/cli/test/catalogs.test.ts b/apps/cli/test/catalogs.test.ts deleted file mode 100644 index 5934ceca5..000000000 --- a/apps/cli/test/catalogs.test.ts +++ /dev/null @@ -1,292 +0,0 @@ -import path from "node:path"; -import fs from "fs-extra"; -import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import yaml from "yaml"; -import { init } from "../src"; -import { cleanupSmokeDirectory } from "./test-utils"; - -const SMOKE_DIR = path.join(process.cwd(), ".smoke"); - -describe("Catalogs", () => { - beforeEach(async () => { - await fs.ensureDir(SMOKE_DIR); - }); - - afterEach(async () => { - await cleanupSmokeDirectory(); - }); - - it("should setup Bun catalogs for duplicated dependencies", async () => { - const projectName = "test-bun-catalog"; - const projectDir = path.join(SMOKE_DIR, projectName); - - await init(projectName, { - packageManager: "bun", - backend: "hono", - runtime: "bun", - database: "postgres", - orm: "drizzle", - auth: "better-auth", - frontend: ["tanstack-router"], - api: "trpc", - install: false, - git: false, - directoryConflict: "overwrite", - disableAnalytics: true, - dbSetup: "none", - }); - - const rootPkgJson = await fs.readJson( - path.join(projectDir, "package.json"), - ); - expect(rootPkgJson.workspaces.catalog).toBeDefined(); - expect(Object.keys(rootPkgJson.workspaces.catalog).length).toBeGreaterThan( - 0, - ); - - const serverPkgJson = await fs.readJson( - path.join(projectDir, "apps/server/package.json"), - ); - const dbPkgJson = await fs.readJson( - path.join(projectDir, "packages/db/package.json"), - ); - - const hasCatalogDep = - Object.values(serverPkgJson.dependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ) || - Object.values(dbPkgJson.dependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ); - - expect(hasCatalogDep).toBe(true); - }); - - it("should setup pnpm catalogs for duplicated dependencies", async () => { - const projectName = "test-pnpm-catalog"; - const projectDir = path.join(SMOKE_DIR, projectName); - - await init(projectName, { - packageManager: "pnpm", - backend: "hono", - runtime: "bun", - database: "postgres", - orm: "drizzle", - auth: "better-auth", - frontend: ["tanstack-router"], - api: "trpc", - install: false, - git: false, - directoryConflict: "overwrite", - disableAnalytics: true, - dbSetup: "none", - }); - - const workspaceYamlPath = path.join(projectDir, "pnpm-workspace.yaml"); - const workspaceContent = await fs.readFile(workspaceYamlPath, "utf-8"); - const workspaceYaml = yaml.parse(workspaceContent); - - expect(workspaceYaml.catalog).toBeDefined(); - expect(Object.keys(workspaceYaml.catalog).length).toBeGreaterThan(0); - - const serverPkgJson = await fs.readJson( - path.join(projectDir, "apps/server/package.json"), - ); - const dbPkgJson = await fs.readJson( - path.join(projectDir, "packages/db/package.json"), - ); - - const hasCatalogDep = - Object.values(serverPkgJson.dependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ) || - Object.values(dbPkgJson.dependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ); - - expect(hasCatalogDep).toBe(true); - }); - - it("should NOT setup catalogs for npm", async () => { - const projectName = "test-npm-no-catalog"; - const projectDir = path.join(SMOKE_DIR, projectName); - - await init(projectName, { - packageManager: "npm", - backend: "hono", - runtime: "bun", - database: "postgres", - orm: "drizzle", - auth: "better-auth", - frontend: ["tanstack-router"], - api: "trpc", - install: false, - git: false, - directoryConflict: "overwrite", - disableAnalytics: true, - dbSetup: "none", - }); - - const rootPkgJson = await fs.readJson( - path.join(projectDir, "package.json"), - ); - expect(rootPkgJson.workspaces.catalog).toBeUndefined(); - - const serverPkgJson = await fs.readJson( - path.join(projectDir, "apps/server/package.json"), - ); - - const hasCatalogDep = Object.values(serverPkgJson.dependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ); - - expect(hasCatalogDep).toBe(false); - }); - - it("should setup catalogs for Convex backend", async () => { - const projectName = "test-convex-catalog"; - const projectDir = path.join(SMOKE_DIR, projectName); - - await init(projectName, { - packageManager: "bun", - backend: "convex", - frontend: ["tanstack-router"], - auth: "none", - install: false, - git: false, - directoryConflict: "overwrite", - disableAnalytics: true, - }); - - const rootPkgJson = await fs.readJson( - path.join(projectDir, "package.json"), - ); - - if (rootPkgJson.workspaces?.catalog) { - expect( - Object.keys(rootPkgJson.workspaces.catalog).length, - ).toBeGreaterThanOrEqual(0); - } - - const backendPkgJsonPath = path.join( - projectDir, - "packages/backend/package.json", - ); - if (await fs.pathExists(backendPkgJsonPath)) { - const backendPkgJson = await fs.readJson(backendPkgJsonPath); - const hasCatalogDep = - Object.values(backendPkgJson.dependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ) || - Object.values(backendPkgJson.devDependencies || {}).some( - (v) => typeof v === "string" && v.startsWith("catalog:"), - ); - - if ( - rootPkgJson.workspaces?.catalog && - Object.keys(rootPkgJson.workspaces.catalog).length > 0 - ) { - expect(hasCatalogDep).toBe(true); - } - } - }); - - it("should convert workspaces array to object format for Bun", async () => { - const projectName = "test-bun-workspaces-conversion"; - const projectDir = path.join(SMOKE_DIR, projectName); - - await init(projectName, { - packageManager: "bun", - backend: "hono", - runtime: "bun", - database: "postgres", - orm: "drizzle", - auth: "better-auth", - frontend: ["tanstack-router"], - api: "trpc", - install: false, - git: false, - directoryConflict: "overwrite", - disableAnalytics: true, - dbSetup: "none", - }); - - const rootPkgJson = await fs.readJson( - path.join(projectDir, "package.json"), - ); - - expect(rootPkgJson.workspaces).toBeDefined(); - expect(typeof rootPkgJson.workspaces).toBe("object"); - expect(Array.isArray(rootPkgJson.workspaces)).toBe(false); - - if ( - typeof rootPkgJson.workspaces === "object" && - !Array.isArray(rootPkgJson.workspaces) - ) { - expect(rootPkgJson.workspaces.packages).toBeDefined(); - expect(Array.isArray(rootPkgJson.workspaces.packages)).toBe(true); - expect(rootPkgJson.workspaces.packages).toContain("apps/*"); - expect(rootPkgJson.workspaces.packages).toContain("packages/*"); - expect(rootPkgJson.workspaces.catalog).toBeDefined(); - } - }); - - it("should only catalog dependencies that appear in multiple packages", async () => { - const projectName = "test-bun-selective-catalog"; - const projectDir = path.join(SMOKE_DIR, projectName); - - await init(projectName, { - packageManager: "bun", - backend: "hono", - runtime: "bun", - database: "postgres", - orm: "drizzle", - auth: "better-auth", - frontend: ["tanstack-router"], - api: "trpc", - install: false, - git: false, - directoryConflict: "overwrite", - disableAnalytics: true, - dbSetup: "none", - }); - - const rootPkgJson = await fs.readJson( - path.join(projectDir, "package.json"), - ); - const catalog = rootPkgJson.workspaces.catalog; - - if (catalog) { - for (const depName of Object.keys(catalog)) { - let count = 0; - const packagePaths = [ - "apps/server", - "apps/web", - "packages/api", - "packages/db", - "packages/auth", - "packages/backend", - ]; - - for (const pkgPath of packagePaths) { - const fullPath = path.join(projectDir, pkgPath); - const pkgJsonPath = path.join(fullPath, "package.json"); - - if (await fs.pathExists(pkgJsonPath)) { - const pkgJson = await fs.readJson(pkgJsonPath); - const allDeps = { - ...pkgJson.dependencies, - ...pkgJson.devDependencies, - }; - - if (allDeps[depName]) { - count++; - } - } - } - - expect(count).toBeGreaterThan(1); - } - } - }); -}); diff --git a/apps/cli/test/deployment.test.ts b/apps/cli/test/deployment.test.ts index bad7d46ba..49cf2d69a 100644 --- a/apps/cli/test/deployment.test.ts +++ b/apps/cli/test/deployment.test.ts @@ -219,7 +219,6 @@ describe("Deployment Configurations", () => { "hono", "express", "fastify", - "next", "elysia", ] as const; @@ -408,16 +407,16 @@ describe("Deployment Configurations", () => { }); describe("Deployment with Special Backend Constraints", () => { - it("should work with deployment + next backend", async () => { + it("should work with deployment + self backend", async () => { const result = await runTRPCTest({ - projectName: "deploy-next-backend", + projectName: "deploy-self-backend", webDeploy: "wrangler", - serverDeploy: "wrangler", - backend: "next", - runtime: "bun", + serverDeploy: "none", // Self backend doesn't use server deployment + backend: "self", + runtime: "none", database: "sqlite", orm: "drizzle", - auth: "none", + auth: "better-auth", api: "trpc", frontend: ["next"], addons: ["none"], diff --git a/apps/cli/test/examples.test.ts b/apps/cli/test/examples.test.ts index 962d23bc6..f3f966e29 100644 --- a/apps/cli/test/examples.test.ts +++ b/apps/cli/test/examples.test.ts @@ -123,11 +123,11 @@ describe("Example Configurations", () => { const result = await runTRPCTest({ projectName: "ai-next", examples: ["ai"], - backend: "next", - runtime: "bun", + backend: "self", + runtime: "none", database: "sqlite", orm: "drizzle", - auth: "none", + auth: "better-auth", api: "trpc", frontend: ["next"], addons: ["none"], diff --git a/apps/cli/test/frontend.test.ts b/apps/cli/test/frontend.test.ts index d3a352859..7879ba006 100644 --- a/apps/cli/test/frontend.test.ts +++ b/apps/cli/test/frontend.test.ts @@ -52,6 +52,19 @@ describe("Frontend Configurations", () => { config.dbSetup = "none"; config.webDeploy = "none"; config.serverDeploy = "none"; + } else if (frontend === "next") { + // Next.js can use self backend (fullstack) + config.backend = "self"; + config.runtime = "none"; + config.database = "sqlite"; + config.orm = "drizzle"; + config.auth = "better-auth"; + config.api = "trpc"; + config.addons = ["none"]; + config.examples = ["none"]; + config.dbSetup = "none"; + config.webDeploy = "none"; + config.serverDeploy = "none"; } else if (["nuxt", "svelte"].includes(frontend)) { config.backend = "hono"; config.runtime = "bun"; @@ -408,6 +421,50 @@ describe("Frontend Configurations", () => { }); }); + describe("Next.js with Self Backend", () => { + it("should work with Next.js and self backend", async () => { + const result = await runTRPCTest({ + projectName: "nextjs-self-backend", + frontend: ["next"], + backend: "self", + runtime: "none", + database: "sqlite", + orm: "drizzle", + auth: "better-auth", + api: "trpc", + addons: ["none"], + examples: ["none"], + dbSetup: "none", + webDeploy: "none", + serverDeploy: "none", + install: false, + }); + + expectSuccess(result); + }); + + it("should work with Next.js and traditional backend", async () => { + const result = await runTRPCTest({ + projectName: "nextjs-traditional-backend", + frontend: ["next"], + backend: "hono", + runtime: "bun", + database: "sqlite", + orm: "drizzle", + auth: "none", + api: "trpc", + addons: ["none"], + examples: ["none"], + dbSetup: "none", + webDeploy: "none", + serverDeploy: "none", + install: false, + }); + + expectSuccess(result); + }); + }); + describe("Web Deploy Constraints", () => { it("should work with web frontend + web deploy", async () => { const result = await runTRPCTest({ diff --git a/apps/cli/test/integration.test.ts b/apps/cli/test/integration.test.ts index cb7aa9aef..7b01d25a5 100644 --- a/apps/cli/test/integration.test.ts +++ b/apps/cli/test/integration.test.ts @@ -51,6 +51,27 @@ describe("Integration Tests - Real World Scenarios", () => { expectSuccess(result); }); + it("should create Next.js fullstack app with self backend", async () => { + const result = await runTRPCTest({ + projectName: "nextjs-fullstack-app", + backend: "self", + runtime: "none", + database: "postgres", + orm: "drizzle", + auth: "better-auth", + api: "trpc", + frontend: ["next"], + addons: ["biome", "turborepo"], + examples: ["todo", "ai"], + dbSetup: "none", + webDeploy: "alchemy", + serverDeploy: "none", // No server deployment for self backend + install: false, + }); + + expectSuccess(result); + }); + it("should create Svelte app with oRPC", async () => { const result = await runTRPCTest({ projectName: "svelte-orpc-app", @@ -180,8 +201,8 @@ describe("Integration Tests - Real World Scenarios", () => { it("should create Next.js fullstack app", async () => { const result = await runTRPCTest({ projectName: "nextjs-fullstack", - backend: "next", - runtime: "node", + backend: "self", + runtime: "none", database: "postgres", orm: "prisma", auth: "better-auth", From 9643d88ef97f5482b22de6d1a1ab2569fb900520 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Mon, 6 Oct 2025 19:39:28 +0530 Subject: [PATCH 31/33] ok --- apps/cli/src/helpers/core/env-setup.ts | 3 ++- apps/cli/src/helpers/core/post-installation.ts | 8 +++++--- apps/cli/src/helpers/core/workspace-setup.ts | 15 +++++++++++++++ apps/cli/src/utils/compatibility-rules.ts | 12 ++++++------ apps/cli/src/utils/setup-catalogs.ts | 1 + .../templates/api/orpc/native/utils/orpc.ts.hbs | 6 +++++- .../templates/api/trpc/native/utils/trpc.ts.hbs | 6 +++++- apps/cli/templates/base/tsconfig.base.json.hbs | 3 +-- apps/cli/templates/extras/bunfig.toml.hbs | 2 +- apps/cli/test/deployment.test.ts | 7 +------ 10 files changed, 42 insertions(+), 21 deletions(-) diff --git a/apps/cli/src/helpers/core/env-setup.ts b/apps/cli/src/helpers/core/env-setup.ts index 2c33fdceb..59a2872f7 100644 --- a/apps/cli/src/helpers/core/env-setup.ts +++ b/apps/cli/src/helpers/core/env-setup.ts @@ -227,7 +227,8 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { const nativeDir = path.join(projectDir, "apps/native"); if (await fs.pathExists(nativeDir)) { let envVarName = "EXPO_PUBLIC_SERVER_URL"; - let serverUrl = "http://localhost:3000"; + let serverUrl = + backend === "self" ? "http://localhost:3001" : "http://localhost:3000"; if (backend === "convex") { envVarName = "EXPO_PUBLIC_CONVEX_URL"; diff --git a/apps/cli/src/helpers/core/post-installation.ts b/apps/cli/src/helpers/core/post-installation.ts index 86628e9de..6b1e055d7 100644 --- a/apps/cli/src/helpers/core/post-installation.ts +++ b/apps/cli/src/helpers/core/post-installation.ts @@ -63,7 +63,7 @@ export async function displayPostInstallInstructions( const nativeInstructions = frontend?.includes("native-nativewind") || frontend?.includes("native-unistyles") - ? getNativeInstructions(isConvex) + ? getNativeInstructions(isConvex, isBackendSelf) : ""; const pwaInstructions = addons?.includes("pwa") && frontend?.includes("react-router") @@ -214,11 +214,13 @@ export async function displayPostInstallInstructions( consola.box(output); } -function getNativeInstructions(isConvex: boolean) { +function getNativeInstructions(isConvex: boolean, isBackendSelf: boolean) { const envVar = isConvex ? "EXPO_PUBLIC_CONVEX_URL" : "EXPO_PUBLIC_SERVER_URL"; const exampleUrl = isConvex ? "https://" - : "http://:3000"; + : isBackendSelf + ? "http://:3001" + : "http://:3000"; const envFileName = ".env"; const ipNote = isConvex ? "your Convex deployment URL (find after running 'dev:setup')" diff --git a/apps/cli/src/helpers/core/workspace-setup.ts b/apps/cli/src/helpers/core/workspace-setup.ts index 221125e84..dd102b7de 100644 --- a/apps/cli/src/helpers/core/workspace-setup.ts +++ b/apps/cli/src/helpers/core/workspace-setup.ts @@ -80,6 +80,21 @@ export async function setupWorkspaceDependencies( } } + const nativePackageDir = path.join(projectDir, "apps/native"); + + if (await fs.pathExists(nativePackageDir)) { + const nativeDeps: Record = {}; + + nativeDeps[`@${projectName}/api`] = workspaceVersion; + + if (Object.keys(nativeDeps).length > 0) { + await addPackageDependency({ + customDependencies: nativeDeps, + projectDir: nativePackageDir, + }); + } + } + const runtimeDevDeps = getRuntimeDevDeps(options); await addPackageDependency({ diff --git a/apps/cli/src/utils/compatibility-rules.ts b/apps/cli/src/utils/compatibility-rules.ts index 73dee97f9..1417aed79 100644 --- a/apps/cli/src/utils/compatibility-rules.ts +++ b/apps/cli/src/utils/compatibility-rules.ts @@ -60,19 +60,19 @@ export function validateSelfBackendCompatibility( const frontends = config.frontend || options.frontend || []; if (backend === "self") { - const hasFullstackFrontend = frontends.some((f) => - FULLSTACK_FRONTENDS.includes(f), - ); + const { web, native } = splitFrontends(frontends); + const hasSupportedWeb = + web.length === 1 && FULLSTACK_FRONTENDS.includes(web[0]); - if (!hasFullstackFrontend) { + if (!hasSupportedWeb) { exitWithError( "Backend 'self' (fullstack) currently only supports Next.js frontend. Please use --frontend next. Support for Nuxt, SvelteKit, and TanStack Start will be added in a future update.", ); } - if (frontends.length > 1) { + if (native.length > 1) { exitWithError( - "Backend 'self' (fullstack) can only be used with a single frontend framework.", + "Cannot select multiple native frameworks. Choose only one of: native-nativewind, native-unistyles", ); } } diff --git a/apps/cli/src/utils/setup-catalogs.ts b/apps/cli/src/utils/setup-catalogs.ts index e6cde4ccd..4f908810f 100644 --- a/apps/cli/src/utils/setup-catalogs.ts +++ b/apps/cli/src/utils/setup-catalogs.ts @@ -25,6 +25,7 @@ export async function setupCatalogs( const packagePaths = [ "apps/server", "apps/web", + "apps/native", "packages/api", "packages/db", "packages/auth", diff --git a/apps/cli/templates/api/orpc/native/utils/orpc.ts.hbs b/apps/cli/templates/api/orpc/native/utils/orpc.ts.hbs index e1e6f4ed3..17eed81c3 100644 --- a/apps/cli/templates/api/orpc/native/utils/orpc.ts.hbs +++ b/apps/cli/templates/api/orpc/native/utils/orpc.ts.hbs @@ -2,7 +2,7 @@ import { createORPCClient } from "@orpc/client"; import { RPCLink } from "@orpc/client/fetch"; import { createTanstackQueryUtils } from "@orpc/tanstack-query"; import { QueryCache, QueryClient } from "@tanstack/react-query"; -import type { AppRouterClient } from "../../server/src/routers"; +import type { AppRouterClient } from "@{{projectName}}/api/routers/index"; {{#if (eq auth "better-auth")}} import { authClient } from "@/lib/auth-client"; {{/if}} @@ -16,7 +16,11 @@ export const queryClient = new QueryClient({ }); export const link = new RPCLink({ + {{#if (eq backend "self")}} + url: `${process.env.EXPO_PUBLIC_SERVER_URL}/api/rpc`, + {{else}} url: `${process.env.EXPO_PUBLIC_SERVER_URL}/rpc`, + {{/if}} {{#if (eq auth "better-auth")}} headers() { const headers = new Map(); diff --git a/apps/cli/templates/api/trpc/native/utils/trpc.ts.hbs b/apps/cli/templates/api/trpc/native/utils/trpc.ts.hbs index 7f8e41393..205285686 100644 --- a/apps/cli/templates/api/trpc/native/utils/trpc.ts.hbs +++ b/apps/cli/templates/api/trpc/native/utils/trpc.ts.hbs @@ -4,14 +4,18 @@ import { authClient } from "@/lib/auth-client"; import { QueryClient } from "@tanstack/react-query"; import { createTRPCClient, httpBatchLink } from "@trpc/client"; import { createTRPCOptionsProxy } from "@trpc/tanstack-react-query"; -import type { AppRouter } from "../../server/src/routers"; +import type { AppRouter } from "@{{projectName}}/api/routers/index"; export const queryClient = new QueryClient(); const trpcClient = createTRPCClient({ links: [ httpBatchLink({ + {{#if (eq backend "self")}} + url: `${process.env.EXPO_PUBLIC_SERVER_URL}/api/trpc`, + {{else}} url: `${process.env.EXPO_PUBLIC_SERVER_URL}/trpc`, + {{/if}} {{#if (eq auth "better-auth")}} headers() { const headers = new Map(); diff --git a/apps/cli/templates/base/tsconfig.base.json.hbs b/apps/cli/templates/base/tsconfig.base.json.hbs index cbc8fbe32..caebbeca1 100644 --- a/apps/cli/templates/base/tsconfig.base.json.hbs +++ b/apps/cli/templates/base/tsconfig.base.json.hbs @@ -25,8 +25,7 @@ {{else if (eq runtime "workers")}} "node" {{else}} - "node", - "bun" + "node" {{/if}}{{#if (eq serverDeploy "alchemy")}}, "@cloudflare/workers-types"{{/if}} ] diff --git a/apps/cli/templates/extras/bunfig.toml.hbs b/apps/cli/templates/extras/bunfig.toml.hbs index aebcf6a97..69c251d04 100644 --- a/apps/cli/templates/extras/bunfig.toml.hbs +++ b/apps/cli/templates/extras/bunfig.toml.hbs @@ -1,5 +1,5 @@ [install] -{{#if (includes frontend "nuxt")}} +{{#if (or (includes frontend "nuxt") (includes frontend "native-nativewind") (includes frontend "native-unistyles"))}} # linker = "isolated" # Commented out for Nuxt compatibility {{else}} linker = "isolated" diff --git a/apps/cli/test/deployment.test.ts b/apps/cli/test/deployment.test.ts index 49cf2d69a..8e435f4d5 100644 --- a/apps/cli/test/deployment.test.ts +++ b/apps/cli/test/deployment.test.ts @@ -215,12 +215,7 @@ describe("Deployment Configurations", () => { }); it("should work with server deploy + all compatible backends", async () => { - const backends = [ - "hono", - "express", - "fastify", - "elysia", - ] as const; + const backends = ["hono", "express", "fastify", "elysia"] as const; for (const backend of backends) { const config: TestConfig = { From db9dadcc54c645823cc27f7ed6bae3e74d868c1d Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Mon, 6 Oct 2025 19:41:20 +0530 Subject: [PATCH 32/33] ok --- apps/cli/templates/extras/bunfig.toml.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/cli/templates/extras/bunfig.toml.hbs b/apps/cli/templates/extras/bunfig.toml.hbs index 69c251d04..cb18302b5 100644 --- a/apps/cli/templates/extras/bunfig.toml.hbs +++ b/apps/cli/templates/extras/bunfig.toml.hbs @@ -1,6 +1,6 @@ [install] {{#if (or (includes frontend "nuxt") (includes frontend "native-nativewind") (includes frontend "native-unistyles"))}} -# linker = "isolated" # Commented out for Nuxt compatibility +# linker = "isolated" # having issues with Nuxt and NativeWind/Unistyles {{else}} linker = "isolated" {{/if}} From 3462d13de126ebb3aadb746884100251acdac14a Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Mon, 6 Oct 2025 21:25:48 +0530 Subject: [PATCH 33/33] ok --- apps/cli/src/utils/setup-catalogs.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/cli/src/utils/setup-catalogs.ts b/apps/cli/src/utils/setup-catalogs.ts index 4f908810f..0d9c88a18 100644 --- a/apps/cli/src/utils/setup-catalogs.ts +++ b/apps/cli/src/utils/setup-catalogs.ts @@ -25,7 +25,7 @@ export async function setupCatalogs( const packagePaths = [ "apps/server", "apps/web", - "apps/native", + // "apps/native", // todo "packages/api", "packages/db", "packages/auth",