diff --git a/.changeset/change-env-names-to-short-format.md b/.changeset/change-env-names-to-short-format.md new file mode 100644 index 000000000..9519b5a14 --- /dev/null +++ b/.changeset/change-env-names-to-short-format.md @@ -0,0 +1,6 @@ +--- +'@baseplate-dev/fastify-generators': patch +'@baseplate-dev/react-generators': patch +--- + +Change environment names from long format to short abbreviations (development→dev, staging→stage, production→prod) diff --git a/packages/fastify-generators/src/generators/core/config-service/config-service.generator.ts b/packages/fastify-generators/src/generators/core/config-service/config-service.generator.ts index 893e8addb..527143329 100644 --- a/packages/fastify-generators/src/generators/core/config-service/config-service.generator.ts +++ b/packages/fastify-generators/src/generators/core/config-service/config-service.generator.ts @@ -57,10 +57,10 @@ const [setupTask, configServiceProvider, configServiceConfigValuesProvider] = APP_ENVIRONMENT: { comment: 'Environment the app is running in', validator: tsCodeFragment( - `z.enum(['development', 'test', 'staging', 'production'])`, + `z.enum(['dev', 'test', 'stage', 'prod'])`, tsImportBuilder().named('z').from('zod'), ), - exampleValue: 'development', + exampleValue: 'dev', }, }), }), diff --git a/packages/fastify-generators/src/generators/core/error-handler-service/templates/src/plugins/error-handler.ts b/packages/fastify-generators/src/generators/core/error-handler-service/templates/src/plugins/error-handler.ts index 0c414484b..7df82f84c 100644 --- a/packages/fastify-generators/src/generators/core/error-handler-service/templates/src/plugins/error-handler.ts +++ b/packages/fastify-generators/src/generators/core/error-handler-service/templates/src/plugins/error-handler.ts @@ -6,7 +6,7 @@ import fp from 'fastify-plugin'; import { logError } from '../services/error-logger.js'; import { HttpError, NotFoundError } from '../utils/http-errors.js'; -const IS_DEVELOPMENT = config.APP_ENVIRONMENT === 'development'; +const IS_DEVELOPMENT = config.APP_ENVIRONMENT === 'dev'; /** * Handles errors from Fastify route handlers, sending the correct code diff --git a/packages/fastify-generators/src/generators/yoga/yoga-plugin/templates/src/plugins/graphql/index.ts b/packages/fastify-generators/src/generators/yoga/yoga-plugin/templates/src/plugins/graphql/index.ts index 78cd512e5..3eeae47f9 100644 --- a/packages/fastify-generators/src/generators/yoga/yoga-plugin/templates/src/plugins/graphql/index.ts +++ b/packages/fastify-generators/src/generators/yoga/yoga-plugin/templates/src/plugins/graphql/index.ts @@ -15,7 +15,7 @@ import { createYoga } from 'graphql-yoga'; TPL_SIDE_EFFECT_IMPORTS; -const IS_DEVELOPMENT = config.APP_ENVIRONMENT === 'development'; +const IS_DEVELOPMENT = config.APP_ENVIRONMENT === 'dev'; const schema = TPL_SCHEMA; diff --git a/packages/react-generators/src/generators/core/react-config/react-config.generator.ts b/packages/react-generators/src/generators/core/react-config/react-config.generator.ts index c568bd189..ef25a31a1 100644 --- a/packages/react-generators/src/generators/core/react-config/react-config.generator.ts +++ b/packages/react-generators/src/generators/core/react-config/react-config.generator.ts @@ -75,10 +75,10 @@ export const reactConfigGenerator = createGenerator({ reactConfig.configEntries.set('VITE_ENVIRONMENT', { comment: 'Environment the app is running in', validator: tsCodeFragment( - `z.enum(['development', 'test', 'staging', 'production'])`, + `z.enum(['dev', 'test', 'stage', 'prod'])`, tsImportBuilder(['z']).from('zod'), ), - devDefaultValue: 'development', + devDefaultValue: 'dev', }); }, ), @@ -134,6 +134,9 @@ export const reactConfigGenerator = createGenerator({ id: 'development-env', destination: '.env.development', contents: developmentEnvFile, + options: { + shouldNeverOverwrite: true, + }, }); } }, diff --git a/plugins/plugin-auth/src/auth/core/generators/auth-module/templates/module/services/user-session.service.ts b/plugins/plugin-auth/src/auth/core/generators/auth-module/templates/module/services/user-session.service.ts index 7e9cdaec3..3790d0934 100644 --- a/plugins/plugin-auth/src/auth/core/generators/auth-module/templates/module/services/user-session.service.ts +++ b/plugins/plugin-auth/src/auth/core/generators/auth-module/templates/module/services/user-session.service.ts @@ -33,7 +33,7 @@ interface SessionCookieValue { const COOKIE_OPTIONS: CookieSerializeOptions = { httpOnly: true, sameSite: 'lax', - secure: config.APP_ENVIRONMENT !== 'development', + secure: config.APP_ENVIRONMENT !== 'dev', maxAge: USER_SESSION_DURATION_SEC, path: '/', }; diff --git a/plugins/plugin-auth/src/auth/core/generators/auth-module/templates/module/utils/session-cookie.ts b/plugins/plugin-auth/src/auth/core/generators/auth-module/templates/module/utils/session-cookie.ts index d6513b11c..8a89cce39 100644 --- a/plugins/plugin-auth/src/auth/core/generators/auth-module/templates/module/utils/session-cookie.ts +++ b/plugins/plugin-auth/src/auth/core/generators/auth-module/templates/module/utils/session-cookie.ts @@ -8,7 +8,7 @@ const COOKIE_NAME = 'user-session'; /** * Retrieves the name of the session cookie based on the provided request. - * If the application environment is not 'development', the cookie name will be prefixed with '__Host-'. + * If the application environment is not 'dev', the cookie name will be prefixed with '__Host-'. * In development, the cookie name will be suffixed with the port number. * * @param req - The FastifyRequest object representing the incoming request. @@ -17,7 +17,7 @@ const COOKIE_NAME = 'user-session'; export function getUserSessionCookieName( headers: FastifyRequest['headers'], ): string { - if (config.APP_ENVIRONMENT !== 'development') { + if (config.APP_ENVIRONMENT !== 'dev') { return `__Host-${COOKIE_NAME}`; } // in development, localhost does not support the __Host prefix and should be scoped to port diff --git a/tests/simple/packages/backend/.env.example b/tests/simple/packages/backend/.env.example index d7b65f04e..e2128e0bd 100644 --- a/tests/simple/packages/backend/.env.example +++ b/tests/simple/packages/backend/.env.example @@ -1,3 +1,3 @@ -APP_ENVIRONMENT=development +APP_ENVIRONMENT=dev DATABASE_URL=postgres://postgres:simple-backend-password@localhost:3432/postgres?schema=public SENTRY_DSN= diff --git a/tests/simple/packages/backend/baseplate/generated/.env.example b/tests/simple/packages/backend/baseplate/generated/.env.example index d7b65f04e..e2128e0bd 100644 --- a/tests/simple/packages/backend/baseplate/generated/.env.example +++ b/tests/simple/packages/backend/baseplate/generated/.env.example @@ -1,3 +1,3 @@ -APP_ENVIRONMENT=development +APP_ENVIRONMENT=dev DATABASE_URL=postgres://postgres:simple-backend-password@localhost:3432/postgres?schema=public SENTRY_DSN= diff --git a/tests/simple/packages/backend/baseplate/generated/src/plugins/error-handler.ts b/tests/simple/packages/backend/baseplate/generated/src/plugins/error-handler.ts index db00446b9..4f379cf56 100644 --- a/tests/simple/packages/backend/baseplate/generated/src/plugins/error-handler.ts +++ b/tests/simple/packages/backend/baseplate/generated/src/plugins/error-handler.ts @@ -4,7 +4,7 @@ import { config } from '../services/config.js'; import { logError } from '../services/error-logger.js'; import { HttpError, NotFoundError } from '../utils/http-errors.js'; -const IS_DEVELOPMENT = config.APP_ENVIRONMENT === 'development'; +const IS_DEVELOPMENT = config.APP_ENVIRONMENT === 'dev'; /** * Handles errors from Fastify route handlers, sending the correct code diff --git a/tests/simple/packages/backend/baseplate/generated/src/plugins/graphql/index.ts b/tests/simple/packages/backend/baseplate/generated/src/plugins/graphql/index.ts index 06aed1df2..7bf204666 100644 --- a/tests/simple/packages/backend/baseplate/generated/src/plugins/graphql/index.ts +++ b/tests/simple/packages/backend/baseplate/generated/src/plugins/graphql/index.ts @@ -20,7 +20,7 @@ import { useSentry } from './use-sentry.js'; import '@src/modules/index.js'; -const IS_DEVELOPMENT = config.APP_ENVIRONMENT === 'development'; +const IS_DEVELOPMENT = config.APP_ENVIRONMENT === 'dev'; const schema = builder.toSchema(); diff --git a/tests/simple/packages/backend/baseplate/generated/src/services/config.ts b/tests/simple/packages/backend/baseplate/generated/src/services/config.ts index 036126da1..dacf31708 100644 --- a/tests/simple/packages/backend/baseplate/generated/src/services/config.ts +++ b/tests/simple/packages/backend/baseplate/generated/src/services/config.ts @@ -2,7 +2,7 @@ import { z } from 'zod'; const configSchema = z.object({ // Environment the app is running in - APP_ENVIRONMENT: z.enum(['development', 'test', 'staging', 'production']), + APP_ENVIRONMENT: z.enum(['dev', 'test', 'stage', 'prod']), // Connection URL of the database DATABASE_URL: z.string().min(1), // Sentry DSN diff --git a/tests/simple/packages/backend/baseplate/generated/src/utils/zod.ts b/tests/simple/packages/backend/baseplate/generated/src/utils/zod.ts index 60d00fcb0..222eddcc3 100644 --- a/tests/simple/packages/backend/baseplate/generated/src/utils/zod.ts +++ b/tests/simple/packages/backend/baseplate/generated/src/utils/zod.ts @@ -18,8 +18,14 @@ import { BadRequestError } from './http-errors.js'; */ export const handleZodRequestValidationError = (error: unknown): never => { if (error instanceof ZodError) { - throw new BadRequestError('Validation failed', 'ZOD_VALIDATION_ERROR', { - errors: error.errors, + const formattedErrors = error.errors.map((err) => ({ + path: err.path.join('.'), + message: err.message, + code: err.code, + })); + + throw new BadRequestError('Validation failed', 'VALIDATION_ERROR', { + errors: formattedErrors, }); } diff --git a/tests/simple/packages/backend/src/plugins/error-handler.ts b/tests/simple/packages/backend/src/plugins/error-handler.ts index db00446b9..4f379cf56 100644 --- a/tests/simple/packages/backend/src/plugins/error-handler.ts +++ b/tests/simple/packages/backend/src/plugins/error-handler.ts @@ -4,7 +4,7 @@ import { config } from '../services/config.js'; import { logError } from '../services/error-logger.js'; import { HttpError, NotFoundError } from '../utils/http-errors.js'; -const IS_DEVELOPMENT = config.APP_ENVIRONMENT === 'development'; +const IS_DEVELOPMENT = config.APP_ENVIRONMENT === 'dev'; /** * Handles errors from Fastify route handlers, sending the correct code diff --git a/tests/simple/packages/backend/src/plugins/graphql/index.ts b/tests/simple/packages/backend/src/plugins/graphql/index.ts index 06aed1df2..7bf204666 100644 --- a/tests/simple/packages/backend/src/plugins/graphql/index.ts +++ b/tests/simple/packages/backend/src/plugins/graphql/index.ts @@ -20,7 +20,7 @@ import { useSentry } from './use-sentry.js'; import '@src/modules/index.js'; -const IS_DEVELOPMENT = config.APP_ENVIRONMENT === 'development'; +const IS_DEVELOPMENT = config.APP_ENVIRONMENT === 'dev'; const schema = builder.toSchema(); diff --git a/tests/simple/packages/backend/src/services/config.ts b/tests/simple/packages/backend/src/services/config.ts index 036126da1..dacf31708 100644 --- a/tests/simple/packages/backend/src/services/config.ts +++ b/tests/simple/packages/backend/src/services/config.ts @@ -2,7 +2,7 @@ import { z } from 'zod'; const configSchema = z.object({ // Environment the app is running in - APP_ENVIRONMENT: z.enum(['development', 'test', 'staging', 'production']), + APP_ENVIRONMENT: z.enum(['dev', 'test', 'stage', 'prod']), // Connection URL of the database DATABASE_URL: z.string().min(1), // Sentry DSN diff --git a/tests/simple/packages/backend/src/utils/zod.ts b/tests/simple/packages/backend/src/utils/zod.ts index 60d00fcb0..222eddcc3 100644 --- a/tests/simple/packages/backend/src/utils/zod.ts +++ b/tests/simple/packages/backend/src/utils/zod.ts @@ -18,8 +18,14 @@ import { BadRequestError } from './http-errors.js'; */ export const handleZodRequestValidationError = (error: unknown): never => { if (error instanceof ZodError) { - throw new BadRequestError('Validation failed', 'ZOD_VALIDATION_ERROR', { - errors: error.errors, + const formattedErrors = error.errors.map((err) => ({ + path: err.path.join('.'), + message: err.message, + code: err.code, + })); + + throw new BadRequestError('Validation failed', 'VALIDATION_ERROR', { + errors: formattedErrors, }); } diff --git a/tests/simple/packages/web/.env.development b/tests/simple/packages/web/.env.development index 8dceca42f..d1ae88e8b 100644 --- a/tests/simple/packages/web/.env.development +++ b/tests/simple/packages/web/.env.development @@ -1,4 +1,4 @@ -VITE_ENVIRONMENT=development +VITE_ENVIRONMENT=dev VITE_GRAPH_API_ENDPOINT=/api/graphql VITE_SENTRY_DSN= DEV_BACKEND_HOST=http://localhost:3001 diff --git a/tests/simple/packages/web/baseplate/generated/.env.development b/tests/simple/packages/web/baseplate/generated/.env.development index 8dceca42f..d1ae88e8b 100644 --- a/tests/simple/packages/web/baseplate/generated/.env.development +++ b/tests/simple/packages/web/baseplate/generated/.env.development @@ -1,4 +1,4 @@ -VITE_ENVIRONMENT=development +VITE_ENVIRONMENT=dev VITE_GRAPH_API_ENDPOINT=/api/graphql VITE_SENTRY_DSN= DEV_BACKEND_HOST=http://localhost:3001 diff --git a/tests/simple/packages/web/baseplate/generated/package.json b/tests/simple/packages/web/baseplate/generated/package.json index 174a07d71..63f78f074 100644 --- a/tests/simple/packages/web/baseplate/generated/package.json +++ b/tests/simple/packages/web/baseplate/generated/package.json @@ -46,7 +46,7 @@ "react-day-picker": "9.7.0", "react-dom": "19.1.0", "react-error-boundary": "6.0.0", - "react-hook-form": "7.56.3", + "react-hook-form": "7.60.0", "react-icons": "5.5.0", "sonner": "2.0.3", "zod": "3.24.1", diff --git a/tests/simple/packages/web/baseplate/generated/src/services/config.ts b/tests/simple/packages/web/baseplate/generated/src/services/config.ts index c1912ee63..a02ea558a 100644 --- a/tests/simple/packages/web/baseplate/generated/src/services/config.ts +++ b/tests/simple/packages/web/baseplate/generated/src/services/config.ts @@ -2,7 +2,7 @@ import { z } from 'zod'; const configSchema = z.object({ // Environment the app is running in - VITE_ENVIRONMENT: z.enum(['development', 'test', 'staging', 'production']), + VITE_ENVIRONMENT: z.enum(['dev', 'test', 'stage', 'prod']), // URL for the GraphQL API endpoint VITE_GRAPH_API_ENDPOINT: z.string().min(1), // DSN for Sentry (optional) diff --git a/tests/simple/packages/web/baseplate/generated/src/services/error-formatter.ts b/tests/simple/packages/web/baseplate/generated/src/services/error-formatter.ts index d0ec7c432..33f356751 100644 --- a/tests/simple/packages/web/baseplate/generated/src/services/error-formatter.ts +++ b/tests/simple/packages/web/baseplate/generated/src/services/error-formatter.ts @@ -1,7 +1,7 @@ import { logError } from './error-logger'; // eslint-disable-next-line @typescript-eslint/no-unused-vars -function getFormattedErrorSuffix(error: unknown): string { +function getFormattedErrorSuffix(_error: unknown): string { return 'Please try again later.'; } diff --git a/tests/simple/packages/web/package.json b/tests/simple/packages/web/package.json index 174a07d71..63f78f074 100644 --- a/tests/simple/packages/web/package.json +++ b/tests/simple/packages/web/package.json @@ -46,7 +46,7 @@ "react-day-picker": "9.7.0", "react-dom": "19.1.0", "react-error-boundary": "6.0.0", - "react-hook-form": "7.56.3", + "react-hook-form": "7.60.0", "react-icons": "5.5.0", "sonner": "2.0.3", "zod": "3.24.1", diff --git a/tests/simple/packages/web/src/services/config.ts b/tests/simple/packages/web/src/services/config.ts index c1912ee63..a02ea558a 100644 --- a/tests/simple/packages/web/src/services/config.ts +++ b/tests/simple/packages/web/src/services/config.ts @@ -2,7 +2,7 @@ import { z } from 'zod'; const configSchema = z.object({ // Environment the app is running in - VITE_ENVIRONMENT: z.enum(['development', 'test', 'staging', 'production']), + VITE_ENVIRONMENT: z.enum(['dev', 'test', 'stage', 'prod']), // URL for the GraphQL API endpoint VITE_GRAPH_API_ENDPOINT: z.string().min(1), // DSN for Sentry (optional) diff --git a/tests/simple/packages/web/src/services/error-formatter.ts b/tests/simple/packages/web/src/services/error-formatter.ts index d0ec7c432..33f356751 100644 --- a/tests/simple/packages/web/src/services/error-formatter.ts +++ b/tests/simple/packages/web/src/services/error-formatter.ts @@ -1,7 +1,7 @@ import { logError } from './error-logger'; // eslint-disable-next-line @typescript-eslint/no-unused-vars -function getFormattedErrorSuffix(error: unknown): string { +function getFormattedErrorSuffix(_error: unknown): string { return 'Please try again later.'; } diff --git a/tests/simple/pnpm-lock.yaml b/tests/simple/pnpm-lock.yaml index cb52825ad..f4a544617 100644 --- a/tests/simple/pnpm-lock.yaml +++ b/tests/simple/pnpm-lock.yaml @@ -194,7 +194,7 @@ importers: version: 2.2.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@hookform/resolvers': specifier: 5.0.1 - version: 5.0.1(react-hook-form@7.56.3(react@19.1.0)) + version: 5.0.1(react-hook-form@7.60.0(react@19.1.0)) '@sentry/react': specifier: 9.17.0 version: 9.17.0(react@19.1.0) @@ -235,8 +235,8 @@ importers: specifier: 6.0.0 version: 6.0.0(react@19.1.0) react-hook-form: - specifier: 7.56.3 - version: 7.56.3(react@19.1.0) + specifier: 7.60.0 + version: 7.60.0(react@19.1.0) react-icons: specifier: 5.5.0 version: 5.5.0(react@19.1.0) @@ -5349,8 +5349,8 @@ packages: peerDependencies: react: '>=16.13.1' - react-hook-form@7.56.3: - resolution: {integrity: sha512-IK18V6GVbab4TAo1/cz3kqajxbDPGofdF0w7VHdCo0Nt8PrPlOZcuuDq9YYIV1BtjcX78x0XsldbQRQnQXWXmw==} + react-hook-form@7.60.0: + resolution: {integrity: sha512-SBrYOvMbDB7cV8ZfNpaiLcgjH/a1c7aK0lK+aNigpf4xWLO8q+o4tcvVurv3c4EOyzn/3dCsYt4GKD42VvJ/+A==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 @@ -7567,10 +7567,10 @@ snapshots: react-dom: 19.1.0(react@19.1.0) use-sync-external-store: 1.5.0(react@19.1.0) - '@hookform/resolvers@5.0.1(react-hook-form@7.56.3(react@19.1.0))': + '@hookform/resolvers@5.0.1(react-hook-form@7.60.0(react@19.1.0))': dependencies: '@standard-schema/utils': 0.3.0 - react-hook-form: 7.56.3(react@19.1.0) + react-hook-form: 7.60.0(react@19.1.0) '@humanfs/core@0.19.1': {} @@ -12014,7 +12014,7 @@ snapshots: '@babel/runtime': 7.26.10 react: 19.1.0 - react-hook-form@7.56.3(react@19.1.0): + react-hook-form@7.60.0(react@19.1.0): dependencies: react: 19.1.0