From 5140bc5a509ab07d8239aac9c9edfc766736e4e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Jurmanovi=C4=87?= Date: Wed, 12 Aug 2026 21:08:21 +0200 Subject: [PATCH] Widen loadEnv schema type and allow rest-sibling destructuring in lint loadEnv's ZodSchema parameter required schema input === output, which breaks any schema using .transform() (e.g. AppConfigSchema's boolean coercion). Widen to ZodType, matching existing runtime behavior. Also allow ignoreRestSiblings in the no-unused-vars rule so 'const { X, ...rest } = obj' omission tests don't trip the linter. --- .eslintrc.cjs | 5 ++++- src/core/config/env.ts | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 3a840a0..3c78fab 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -7,6 +7,9 @@ module.exports = { parserOptions: { ecmaVersion: 2022, sourceType: 'module' }, ignorePatterns: ['dist', 'node_modules'], rules: { - '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], + '@typescript-eslint/no-unused-vars': [ + 'error', + { argsIgnorePattern: '^_', ignoreRestSiblings: true }, + ], }, }; diff --git a/src/core/config/env.ts b/src/core/config/env.ts index ab970fa..06d4942 100644 --- a/src/core/config/env.ts +++ b/src/core/config/env.ts @@ -1,6 +1,9 @@ -import type { ZodSchema } from 'zod'; +import type { ZodType, ZodTypeDef } from 'zod'; -export function loadEnv(schema: ZodSchema, source: NodeJS.ProcessEnv = process.env): T { +export function loadEnv( + schema: ZodType, + source: NodeJS.ProcessEnv = process.env +): T { const result = schema.safeParse(source); if (!result.success) { throw new Error(`Invalid environment configuration: ${result.error.message}`);