From c4f493fb96b93d43d8f4e62ed1d6ad819d7e8289 Mon Sep 17 00:00:00 2001 From: Aaron Franks Date: Fri, 4 Oct 2024 07:19:41 -0700 Subject: [PATCH 1/6] Switch from prettier to biome --- biome.json | 42 +++++++++++++++++++++++++++++++++++++ package.json | 10 ++------- yarn.lock | 59 +++++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 98 insertions(+), 13 deletions(-) create mode 100644 biome.json diff --git a/biome.json b/biome.json new file mode 100644 index 0000000..942d467 --- /dev/null +++ b/biome.json @@ -0,0 +1,42 @@ +{ + "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", + "formatter": { + "enabled": true, + "formatWithErrors": false, + "indentStyle": "space", + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 100, + "attributePosition": "auto" + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "complexity": { + "noForEach": "off", + "noUselessSwitchCase": "off" + }, + "a11y": { + "noSvgWithoutTitle": "off" + }, + "suspicious": { + "noArrayIndexKey": "warn" + }, + "style": { + "useImportType": "warn" + } + } + }, + "javascript": { + "formatter": { + "quoteProperties": "asNeeded", + "semicolons": "asNeeded", + "arrowParentheses": "always", + "bracketSpacing": true, + "bracketSameLine": false, + "quoteStyle": "single", + "attributePosition": "auto" + } + } +} diff --git a/package.json b/package.json index 273d613..6722152 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "start": "tsc --watch", "prepare": "tsc", "coverage": "jest --coverage", - "lint": "tsc && prettier --list-different --write src tests", + "lint": "tsc && biome lint --diagnostic-level=error src", "test": "jest" }, "repository": { @@ -39,23 +39,17 @@ }, "devDependencies": { "@arethetypeswrong/cli": "0.15.4", + "@biomejs/biome": "1.9.3", "@types/jest": "29.5.12", "@types/node": "20.12.5", "expect-type": "^0.19.0", "husky": "9.0.11", "jest": "29.7.0", - "prettier": "3.2.5", "ts-jest": "29.1.2", "typescript": "5.2.2" }, "author": "Aaron Franks", "license": "MIT", - "prettier": { - "printWidth": 100, - "semi": false, - "singleQuote": true, - "trailingComma": "all" - }, "husky": { "hooks": { "pre-commit": "yarn lint", diff --git a/yarn.lock b/yarn.lock index be8b543..32f965b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -328,6 +328,60 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@biomejs/biome@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.9.3.tgz#5362fc390ac00c82e3698824490e3801d012c1b0" + integrity sha512-POjAPz0APAmX33WOQFGQrwLvlu7WLV4CFJMlB12b6ZSg+2q6fYu9kZwLCOA+x83zXfcPd1RpuWOKJW0GbBwLIQ== + optionalDependencies: + "@biomejs/cli-darwin-arm64" "1.9.3" + "@biomejs/cli-darwin-x64" "1.9.3" + "@biomejs/cli-linux-arm64" "1.9.3" + "@biomejs/cli-linux-arm64-musl" "1.9.3" + "@biomejs/cli-linux-x64" "1.9.3" + "@biomejs/cli-linux-x64-musl" "1.9.3" + "@biomejs/cli-win32-arm64" "1.9.3" + "@biomejs/cli-win32-x64" "1.9.3" + +"@biomejs/cli-darwin-arm64@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.3.tgz#3a981835a7a891589b356bbdb4e50157e494aa7d" + integrity sha512-QZzD2XrjJDUyIZK+aR2i5DDxCJfdwiYbUKu9GzkCUJpL78uSelAHAPy7m0GuPMVtF/Uo+OKv97W3P9nuWZangQ== + +"@biomejs/cli-darwin-x64@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.3.tgz#0e33284e5def9cbc17705b6a9acbc22b161accb1" + integrity sha512-vSCoIBJE0BN3SWDFuAY/tRavpUtNoqiceJ5PrU3xDfsLcm/U6N93JSM0M9OAiC/X7mPPfejtr6Yc9vSgWlEgVw== + +"@biomejs/cli-linux-arm64-musl@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.3.tgz#b68e2fe56381cbf71770b6c785215448c47595fd" + integrity sha512-VBzyhaqqqwP3bAkkBrhVq50i3Uj9+RWuj+pYmXrMDgjS5+SKYGE56BwNw4l8hR3SmYbLSbEo15GcV043CDSk+Q== + +"@biomejs/cli-linux-arm64@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.3.tgz#bb8186f000bd7366c3a1822a4a505e374905c462" + integrity sha512-vJkAimD2+sVviNTbaWOGqEBy31cW0ZB52KtpVIbkuma7PlfII3tsLhFa+cwbRAcRBkobBBhqZ06hXoZAN8NODQ== + +"@biomejs/cli-linux-x64-musl@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.3.tgz#01ccee0db2ca2ec9fb51fa69b2fc9e96434b5b32" + integrity sha512-TJmnOG2+NOGM72mlczEsNki9UT+XAsMFAOo8J0me/N47EJ/vkLXxf481evfHLlxMejTY6IN8SdRSiPVLv6AHlA== + +"@biomejs/cli-linux-x64@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.3.tgz#82d6fb824dd2c76142ab8625e202eb63a34e14f1" + integrity sha512-x220V4c+romd26Mu1ptU+EudMXVS4xmzKxPVb9mgnfYlN4Yx9vD5NZraSx/onJnd3Gh/y8iPUdU5CDZJKg9COA== + +"@biomejs/cli-win32-arm64@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.3.tgz#7fac607ade8e204eecae09e127713f000da0ccf2" + integrity sha512-lg/yZis2HdQGsycUvHWSzo9kOvnGgvtrYRgoCEwPBwwAL8/6crOp3+f47tPwI/LI1dZrhSji7PNsGKGHbwyAhw== + +"@biomejs/cli-win32-x64@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.3.tgz#1cbc269dcd5f29b034cb7f5982353c1cc3629318" + integrity sha512-cQMy2zanBkVLpmmxXdK6YePzmZx0s5Z7KEnwmrW54rcXK3myCNbQa09SwGZ8i/8sLw0H9F3X7K4rxVNGU8/D4Q== + "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" @@ -2038,11 +2092,6 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -prettier@3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== - pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" From 50cb260bc1fec2c9d6962085056a334aa552b9bd Mon Sep 17 00:00:00 2001 From: Aaron Franks Date: Sun, 22 Jun 2025 21:40:50 -0700 Subject: [PATCH 2/6] Update to biome 2.0.4 --- package.json | 2 +- yarn.lock | 90 ++++++++++++++++++++++++++-------------------------- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/package.json b/package.json index 6722152..73c1aea 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ }, "devDependencies": { "@arethetypeswrong/cli": "0.15.4", - "@biomejs/biome": "1.9.3", + "@biomejs/biome": "2.0.4", "@types/jest": "29.5.12", "@types/node": "20.12.5", "expect-type": "^0.19.0", diff --git a/yarn.lock b/yarn.lock index 32f965b..9f747c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -328,59 +328,59 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@biomejs/biome@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.9.3.tgz#5362fc390ac00c82e3698824490e3801d012c1b0" - integrity sha512-POjAPz0APAmX33WOQFGQrwLvlu7WLV4CFJMlB12b6ZSg+2q6fYu9kZwLCOA+x83zXfcPd1RpuWOKJW0GbBwLIQ== +"@biomejs/biome@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-2.0.4.tgz#2abd3815d42ca674857c6be6ab4b7dd7098c9518" + integrity sha512-DNA++xe+E7UugTvI/HhzSFl6OwrVgU8SIV0Mb2fPtWPk2/oTr4eOSA5xy1JECrvgJeYxurmUBOS49qxv/OUkrQ== optionalDependencies: - "@biomejs/cli-darwin-arm64" "1.9.3" - "@biomejs/cli-darwin-x64" "1.9.3" - "@biomejs/cli-linux-arm64" "1.9.3" - "@biomejs/cli-linux-arm64-musl" "1.9.3" - "@biomejs/cli-linux-x64" "1.9.3" - "@biomejs/cli-linux-x64-musl" "1.9.3" - "@biomejs/cli-win32-arm64" "1.9.3" - "@biomejs/cli-win32-x64" "1.9.3" - -"@biomejs/cli-darwin-arm64@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.3.tgz#3a981835a7a891589b356bbdb4e50157e494aa7d" - integrity sha512-QZzD2XrjJDUyIZK+aR2i5DDxCJfdwiYbUKu9GzkCUJpL78uSelAHAPy7m0GuPMVtF/Uo+OKv97W3P9nuWZangQ== + "@biomejs/cli-darwin-arm64" "2.0.4" + "@biomejs/cli-darwin-x64" "2.0.4" + "@biomejs/cli-linux-arm64" "2.0.4" + "@biomejs/cli-linux-arm64-musl" "2.0.4" + "@biomejs/cli-linux-x64" "2.0.4" + "@biomejs/cli-linux-x64-musl" "2.0.4" + "@biomejs/cli-win32-arm64" "2.0.4" + "@biomejs/cli-win32-x64" "2.0.4" + +"@biomejs/cli-darwin-arm64@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.0.4.tgz#2def86a792b1c01490e864b52a03af47ea326502" + integrity sha512-r5McIUMMiedwJ2rltuXhj0+w0W7IJLpkOS+OGCVZQQOOcrGY9gUSUmOo7O6Z7P0vlv5YYZkPbi+qR9MDDWRBSw== -"@biomejs/cli-darwin-x64@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.3.tgz#0e33284e5def9cbc17705b6a9acbc22b161accb1" - integrity sha512-vSCoIBJE0BN3SWDFuAY/tRavpUtNoqiceJ5PrU3xDfsLcm/U6N93JSM0M9OAiC/X7mPPfejtr6Yc9vSgWlEgVw== +"@biomejs/cli-darwin-x64@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.0.4.tgz#eece80ae03e9456c2053613c5965a4421903bcf4" + integrity sha512-aV5Zc/3E3aXFbrjK1IgCMEQc+6PCkBL+NS+vtjoNM2VPFeM5OL5Q82BI4YZyPnebj+k42BPIoYtz0jJ95PGRRg== -"@biomejs/cli-linux-arm64-musl@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.3.tgz#b68e2fe56381cbf71770b6c785215448c47595fd" - integrity sha512-VBzyhaqqqwP3bAkkBrhVq50i3Uj9+RWuj+pYmXrMDgjS5+SKYGE56BwNw4l8hR3SmYbLSbEo15GcV043CDSk+Q== +"@biomejs/cli-linux-arm64-musl@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.0.4.tgz#92bdaada9ef465c9762c6ddd4a8edabb5a31b698" + integrity sha512-cNukq2PthoOa7quqaKoEFz4Zd1pDPJGfTR5jVyk9Z9iFHEm6TI7+7eeIs3aYcEuuJPNFR9xhJ4Uj3E2iUWkV3A== -"@biomejs/cli-linux-arm64@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.3.tgz#bb8186f000bd7366c3a1822a4a505e374905c462" - integrity sha512-vJkAimD2+sVviNTbaWOGqEBy31cW0ZB52KtpVIbkuma7PlfII3tsLhFa+cwbRAcRBkobBBhqZ06hXoZAN8NODQ== +"@biomejs/cli-linux-arm64@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.0.4.tgz#2c3b018104164a4df883a48929033f34f51771eb" + integrity sha512-nlJhf7DyuajMj+S7Ygum59cbrHvI/nSRvedfJcEIx4X7SsiZjpRUiC5XtEn77kg7NIKq/KqG5roQIHkmjuFHCw== -"@biomejs/cli-linux-x64-musl@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.3.tgz#01ccee0db2ca2ec9fb51fa69b2fc9e96434b5b32" - integrity sha512-TJmnOG2+NOGM72mlczEsNki9UT+XAsMFAOo8J0me/N47EJ/vkLXxf481evfHLlxMejTY6IN8SdRSiPVLv6AHlA== +"@biomejs/cli-linux-x64-musl@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.0.4.tgz#6ce9e45ed186ee85ee3f9c9f6ddb7673a917f28f" + integrity sha512-oWQALSbp8xF0t/wiHU2zdkZOpIHyaI9QxQv0Ytty9GAKsCGP6pczp8qyKD/P49iGJdDozHp5KiuQPxs33APhyA== -"@biomejs/cli-linux-x64@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.3.tgz#82d6fb824dd2c76142ab8625e202eb63a34e14f1" - integrity sha512-x220V4c+romd26Mu1ptU+EudMXVS4xmzKxPVb9mgnfYlN4Yx9vD5NZraSx/onJnd3Gh/y8iPUdU5CDZJKg9COA== +"@biomejs/cli-linux-x64@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-2.0.4.tgz#102ffb44892c31fef2eb4e4e273953d6eb22c05f" + integrity sha512-jlzrNZ+OzN9wvp2RL3cl5Y4NiV7xSU+QV5A8bWXke1on3jKy7QbXajybSjVQ6aFw1gdrqkO/W8xV5HODhIMT4g== -"@biomejs/cli-win32-arm64@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.3.tgz#7fac607ade8e204eecae09e127713f000da0ccf2" - integrity sha512-lg/yZis2HdQGsycUvHWSzo9kOvnGgvtrYRgoCEwPBwwAL8/6crOp3+f47tPwI/LI1dZrhSji7PNsGKGHbwyAhw== +"@biomejs/cli-win32-arm64@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.0.4.tgz#d0b109a2b449c774f4236c0d25a3065e390e1d75" + integrity sha512-/PbNhMJo9ONja7hOxLlifM/qgeHpRD9bF2flTz5KIrXnQqpuegaRuwP/HYdJ9TFkTKFjHkPLoE4onOz3HIT5CQ== -"@biomejs/cli-win32-x64@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.3.tgz#1cbc269dcd5f29b034cb7f5982353c1cc3629318" - integrity sha512-cQMy2zanBkVLpmmxXdK6YePzmZx0s5Z7KEnwmrW54rcXK3myCNbQa09SwGZ8i/8sLw0H9F3X7K4rxVNGU8/D4Q== +"@biomejs/cli-win32-x64@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-2.0.4.tgz#ab504167d41c27727a61653ccb0f4e9f467b8bbc" + integrity sha512-dIM4SgO4/Rmsb4X7fwKtciQ682SZDSC1lm42uSM9gt8zNqBIeTaqsMc6eO1DpxYWMlAb/n2SML9+HUHmCib7NA== "@colors/colors@1.5.0": version "1.5.0" From 4c076873c421cecf63c7973872843c4ca189ee68 Mon Sep 17 00:00:00 2001 From: Aaron Franks Date: Sun, 29 Jun 2025 08:52:57 -0700 Subject: [PATCH 3/6] Write files, tweak config --- biome.json | 8 +++++++- src/core.ts | 6 +++--- src/envalid.ts | 2 +- src/makers.ts | 2 +- src/middleware.ts | 4 ++-- src/reporter.ts | 2 +- src/validators.ts | 2 +- tests/basics.test.ts | 2 +- tests/middleware.test.ts | 4 ++-- tests/types.test.ts | 6 +++--- tests/utils.ts | 2 +- tsconfig.json | 8 ++++++-- 12 files changed, 29 insertions(+), 19 deletions(-) diff --git a/biome.json b/biome.json index 942d467..6bf6de3 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,10 @@ { "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", + "files": { + "includes": [ + "src/**/*.ts" + ] + }, "formatter": { "enabled": true, "formatWithErrors": false, @@ -21,7 +26,8 @@ "noSvgWithoutTitle": "off" }, "suspicious": { - "noArrayIndexKey": "warn" + "noArrayIndexKey": "warn", + "noDoubleEquals": "off" }, "style": { "useImportType": "warn" diff --git a/src/core.ts b/src/core.ts index 6bbefbc..214e28c 100644 --- a/src/core.ts +++ b/src/core.ts @@ -1,5 +1,5 @@ import { EnvError, EnvMissingError } from './errors' -import { CleanOptions, SpecsOutput, Spec, ValidatorSpec } from './types' +import type { CleanOptions, SpecsOutput, Spec, ValidatorSpec } from './types' import { defaultReporter } from './reporter' export const testOnlySymbol = Symbol('envalid - test only') @@ -56,7 +56,7 @@ export function getSanitizedEnv( specs: S, options: CleanOptions> = {}, ): SpecsOutput { - let cleanedEnv = {} as SpecsOutput + const cleanedEnv = {} as SpecsOutput const castedSpecs = specs as unknown as Record> const errors = {} as Record const varKeys = Object.keys(castedSpecs) as Array @@ -72,7 +72,7 @@ export function getSanitizedEnv( if (rawValue === undefined) { // Use devDefault values only if NODE_ENV was explicitly set, and isn't 'production' const usingDevDefault = - rawNodeEnv && rawNodeEnv !== 'production' && spec.hasOwnProperty('devDefault') + rawNodeEnv && rawNodeEnv !== 'production' && Object.hasOwn(spec, 'devDefault') if (usingDevDefault) { cleanedEnv[k] = spec.devDefault diff --git a/src/envalid.ts b/src/envalid.ts index c0c453c..2c97072 100644 --- a/src/envalid.ts +++ b/src/envalid.ts @@ -1,4 +1,4 @@ -import { CleanedEnv, CleanOptions } from './types' +import type { CleanedEnv, CleanOptions } from './types' import { getSanitizedEnv, testOnlySymbol } from './core' import { applyDefaultMiddleware } from './middleware' diff --git a/src/makers.ts b/src/makers.ts index 59ea76e..31e941c 100644 --- a/src/makers.ts +++ b/src/makers.ts @@ -1,4 +1,4 @@ -import { Spec, BaseValidator, StructuredValidator, ExactValidator } from './types' +import type { Spec, BaseValidator, StructuredValidator, ExactValidator } from './types' const internalMakeValidator = (parseFn: (input: string) => T) => { return (spec?: Spec) => ({ ...spec, _parse: parseFn }) diff --git a/src/middleware.ts b/src/middleware.ts index 2287e21..6570eea 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -1,4 +1,4 @@ -import { CleanedEnvAccessors, StrictProxyMiddlewareOptions } from './types' +import type { CleanedEnvAccessors, StrictProxyMiddlewareOptions } from './types' export const strictProxyMiddleware = ( envObj: T, @@ -43,7 +43,7 @@ export const strictProxyMiddleware = ( return target[name] } - const varExists = target.hasOwnProperty(name) + const varExists = Object.hasOwn(target, name) if (!varExists) { if (typeof rawEnv === 'object' && rawEnv?.hasOwnProperty?.(name)) { throw new ReferenceError( diff --git a/src/reporter.ts b/src/reporter.ts index 9e611b8..bdd48ae 100644 --- a/src/reporter.ts +++ b/src/reporter.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import { EnvMissingError } from './errors' -import { ReporterOptions } from './types' +import type { ReporterOptions } from './types' type Errors = Partial> type Logger = (data: any, ...args: any[]) => void diff --git a/src/validators.ts b/src/validators.ts index 3272bce..10f0e95 100644 --- a/src/validators.ts +++ b/src/validators.ts @@ -5,7 +5,7 @@ import { makeExactValidator, makeStructuredValidator, makeValidator } from './ma const isFQDN = (input: string) => { if (!input.length) return false const parts = input.split('.') - for (let part, i = 0; i < parts.length; i++) { + for (let part: string, i = 0; i < parts.length; i++) { part = parts[i] if (!/^[a-z\u00a1-\uffff0-9-]+$/i.test(part)) return false if (/[\uff01-\uff5e]/.test(part)) return false // disallow full-width chars diff --git a/tests/basics.test.ts b/tests/basics.test.ts index a06c49b..a5f70d1 100644 --- a/tests/basics.test.ts +++ b/tests/basics.test.ts @@ -1,4 +1,4 @@ -import { cleanEnv, str, num, testOnly, ReporterOptions } from '../src' +import { cleanEnv, str, num, testOnly, type ReporterOptions } from '../src' import { assertPassthrough } from './utils' import { expectTypeOf } from 'expect-type' diff --git a/tests/middleware.test.ts b/tests/middleware.test.ts index 857428c..29768a7 100644 --- a/tests/middleware.test.ts +++ b/tests/middleware.test.ts @@ -106,8 +106,8 @@ describe('proxy middleware', () => { }, ) - expect(env.hasOwnProperty('FOO')).toEqual(true) - expect(env.hasOwnProperty('BAR')).toEqual(false) + expect(Object.hasOwn(env, 'FOO')).toEqual(true) + expect(Object.hasOwn(env, 'BAR')).toEqual(false) }) test('proxy does not error out on .length checks (#70)', () => { diff --git a/tests/types.test.ts b/tests/types.test.ts index abb7f40..5ddd036 100644 --- a/tests/types.test.ts +++ b/tests/types.test.ts @@ -3,10 +3,10 @@ import { str, bool, num, - RequiredValidatorSpec, - OptionalValidatorSpec, + type RequiredValidatorSpec, + type OptionalValidatorSpec, json, - CleanedEnvAccessors, + type CleanedEnvAccessors, } from '../src' import { expectTypeOf } from 'expect-type' import { makeStructuredValidator, makeValidator } from '../src/makers' diff --git a/tests/utils.ts b/tests/utils.ts index 5eba3ec..2309713 100644 --- a/tests/utils.ts +++ b/tests/utils.ts @@ -1,4 +1,4 @@ -import { cleanEnv, ValidatorSpec } from '../src' +import { cleanEnv, type ValidatorSpec } from '../src' // Ensure that a given environment spec passes through all values from the given // env object diff --git a/tsconfig.json b/tsconfig.json index e2e55a4..c81562e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,9 +12,13 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, - "lib": ["es2019"] + "lib": [ + "es2022" + ] }, - "include": ["src"], + "include": [ + "src" + ], "exclude": [ "node_modules", "**/node_modules/*" From 40555434fe157a7ddaf869bf00e5a90cd9ecc075 Mon Sep 17 00:00:00 2001 From: Aaron Franks Date: Sun, 29 Jun 2025 08:54:04 -0700 Subject: [PATCH 4/6] Bump typescript from 5.2.2 to 5.8.3 --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 73c1aea..367bfd7 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "husky": "9.0.11", "jest": "29.7.0", "ts-jest": "29.1.2", - "typescript": "5.2.2" + "typescript": "5.8.3" }, "author": "Aaron Franks", "license": "MIT", diff --git a/yarn.lock b/yarn.lock index 9f747c3..5989f9d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2368,16 +2368,16 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -typescript@5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" - integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== - typescript@5.3.3: version "5.3.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== +typescript@5.8.3: + version "5.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" + integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== + undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" From 456dcab5b4a6a26b5d9197bb0834e8f397f11b7f Mon Sep 17 00:00:00 2001 From: Aaron Franks Date: Sun, 29 Jun 2025 08:57:28 -0700 Subject: [PATCH 5/6] Separate tsc/biome ci checks --- .github/workflows/ci.yml | 5 ++++- package.json | 5 +++-- src/reporter.ts | 1 - 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a366fb9..40b8318 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,10 @@ jobs: - name: Install dependencies run: yarn --frozen-lockfile - - name: ESLint + - name: Typescript check + run: yarn tsc + + - name: Biome lint check run: yarn lint - name: Unit tests diff --git a/package.json b/package.json index 367bfd7..15a5c9e 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "start": "tsc --watch", "prepare": "tsc", "coverage": "jest --coverage", - "lint": "tsc && biome lint --diagnostic-level=error src", + "tsc": "tsc --noEmit", + "lint": "biome lint --diagnostic-level=error src", "test": "jest" }, "repository": { @@ -52,7 +53,7 @@ "license": "MIT", "husky": { "hooks": { - "pre-commit": "yarn lint", + "pre-commit": "yarn lint && yarn tsc", "pre-push": "yarn test" } } diff --git a/src/reporter.ts b/src/reporter.ts index bdd48ae..0b3b53e 100644 --- a/src/reporter.ts +++ b/src/reporter.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-console */ import { EnvMissingError } from './errors' import type { ReporterOptions } from './types' From b7b6ec9f630dcbc67ee6632a4926a554d079f5e8 Mon Sep 17 00:00:00 2001 From: Aaron Franks Date: Sun, 29 Jun 2025 08:59:23 -0700 Subject: [PATCH 6/6] Revert "Bump typescript from 5.2.2 to 5.8.3" This reverts commit 40555434fe157a7ddaf869bf00e5a90cd9ecc075. --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 15a5c9e..97ef87c 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "husky": "9.0.11", "jest": "29.7.0", "ts-jest": "29.1.2", - "typescript": "5.8.3" + "typescript": "5.2.2" }, "author": "Aaron Franks", "license": "MIT", diff --git a/yarn.lock b/yarn.lock index 5989f9d..9f747c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2368,16 +2368,16 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +typescript@5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + typescript@5.3.3: version "5.3.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== -typescript@5.8.3: - version "5.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" - integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== - undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"