{"_id":"helpful-errors","_rev":"13-580332d02344557210e25139786273dc","name":"helpful-errors","dist-tags":{"latest":"1.7.5"},"versions":{"1.3.8":{"name":"helpful-errors","version":"1.3.8","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"author":{"name":"ehmpathy"},"license":"MIT","_id":"helpful-errors@1.3.8","maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"homepage":"https://github.com/ehmpathy/helpful-errors","bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"dist":{"shasum":"debd893d468d111e5a1be16748c4297ca1dad88a","tarball":"https://registry.npmjs.org/helpful-errors/-/helpful-errors-1.3.8.tgz","fileCount":33,"integrity":"sha512-iGdxmyiOcGPWmAPZf6bNmHLlh2eNOoTTNO90SbUfh0Kz80/AO3JugQxMI9PZwLCYlF5ivS6SS/5pxm8p3xZnqQ==","signatures":[{"sig":"MEQCIAYH62u48uhElN6l5nEdaw6ogQc8hjU6G8T+hojL6Fm0AiAZtOB6UmhkFLE21wrYMq7WHtFvAnZlz1oGOaScFYtDxQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38185},"main":"dist/index.js","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"engines":{"node":">=8.0.0"},"gitHead":"6d77f407f3ecc6e8d186e1ad3601c2c6c3687d09","scripts":{"test":"npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally","build":"npm run build:clean && npm run build:compile","prepush":"npm run test && npm run build","fix:lint":"eslint -c ./.eslintrc.js src/**/*.ts --fix","test:lint":"npm run test:lint:eslint && npm run test:lint:deps","test:unit":"jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","fix:format":"npm run fix:format:prettier","prepublish":"npm run build","preversion":"npm run prepush","test:types":"tsc -p ./tsconfig.build.json --noEmit","build:clean":"rm dist/ -rf","postinstall":"[ -d .git ] && npm run prepare:husky || exit 0","postversion":"git push origin HEAD --tags --no-verify","test:format":"npm run test:format:prettier","test:commits":"LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose","build:compile":"tsc -p ./tsconfig.build.json","prepare:husky":"npx husky install && chmod ug+x .husky/*","build:artifact":"echo 'no artifact'","test:lint:deps":"npx depcheck -c ./depcheckrc.yml","commit:with-cli":"npx cz","test:acceptance":"npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests","test:integration":"jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","test:lint:eslint":"eslint -c ./.eslintrc.js src/**/*.ts","fix:format:prettier":"prettier --write '**/*.ts' --config ./prettier.config.js","test:format:prettier":"prettier --parser typescript --check 'src/**/*.ts' --config ./prettier.config.js","test:acceptance:locally":"npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests"},"_npmUser":{"name":"uladkasach","email":"UladKasach@gmail.com"},"repository":{"url":"git+https://github.com/ehmpathy/helpful-errors.git","type":"git"},"_npmVersion":"10.5.0","description":"A standard set of errors and methods for simpler, safer, and easier to read code.","directories":{},"_nodeVersion":"20.12.2","dependencies":{"type-fns":"1.17.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.3.1","husky":"8.0.3","eslint":"8.56.0","core-js":"3.26.1","ts-jest":"29.1.3","ts-node":"10.9.2","depcheck":"1.4.3","prettier":"2.8.1","declapract":"0.12.0","typescript":"5.4.5","@types/jest":"29.2.4","@commitlint/cli":"19.3.0","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","@typescript-eslint/parser":"7.8.0","cz-conventional-changelog":"3.3.0","@tsconfig/node-lts-strictest":"18.12.1","declapract-typescript-ehmpathy":"0.36.5","@commitlint/config-conventional":"13.1.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.8.0","@trivago/prettier-plugin-sort-imports":"4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/helpful-errors_1.3.8_1735201492407_0.4486565658746289","host":"s3://npm-registry-packages-npm-production"}},"1.3.9":{"name":"helpful-errors","version":"1.3.9","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"author":{"name":"ehmpathy"},"license":"MIT","_id":"helpful-errors@1.3.9","maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"homepage":"https://github.com/ehmpathy/helpful-errors","bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"dist":{"shasum":"171ae6e8c0aad2e17889fb8fd8c5fe0a9ea8044b","tarball":"https://registry.npmjs.org/helpful-errors/-/helpful-errors-1.3.9.tgz","fileCount":34,"integrity":"sha512-aP2aF/r7N1W90rRr1OP6IviqxnxAs5WQl4XTnvgwUK3rcnxMgfZk9VppCFWBaFaDISu/CZq6AiEE2m2rLtQ9OQ==","signatures":[{"sig":"MEYCIQDToudMla93YSCVYP2GO7mUXjpqXPAQ+cZZFlHyRyY8mQIhAOu8rEGPYjej3xAdvimgL3IBQooeLuQqRpvbx/f57MKA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37782},"main":"dist/index.js","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"engines":{"node":">=8.0.0"},"gitHead":"7a1f34943aeebe6f2fc2351625c858f58211ba16","scripts":{"test":"npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally","build":"npm run build:clean && npm run build:compile","prepush":"npm run test && npm run build","fix:lint":"eslint -c ./.eslintrc.js src/**/*.ts --fix","test:lint":"npm run test:lint:eslint && npm run test:lint:deps","test:unit":"jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","fix:format":"npm run fix:format:prettier","prepublish":"npm run build","preversion":"npm run prepush","test:types":"tsc -p ./tsconfig.build.json --noEmit","build:clean":"rm dist/ -rf","postinstall":"[ -d .git ] && npm run prepare:husky || exit 0","postversion":"git push origin HEAD --tags --no-verify","test:format":"npm run test:format:prettier","test:commits":"LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose","build:compile":"tsc -p ./tsconfig.build.json","prepare:husky":"npx husky install && chmod ug+x .husky/*","build:artifact":"echo 'no artifact'","test:lint:deps":"npx depcheck -c ./depcheckrc.yml","commit:with-cli":"npx cz","test:acceptance":"npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests","test:integration":"jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","test:lint:eslint":"eslint -c ./.eslintrc.js src/**/*.ts","fix:format:prettier":"prettier --write '**/*.ts' --config ./prettier.config.js","test:format:prettier":"prettier --parser typescript --check 'src/**/*.ts' --config ./prettier.config.js","test:acceptance:locally":"npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests"},"_npmUser":{"name":"uladkasach","email":"UladKasach@gmail.com"},"repository":{"url":"git+https://github.com/ehmpathy/helpful-errors.git","type":"git"},"_npmVersion":"10.5.0","description":"A standard set of errors and methods for simpler, safer, and easier to read code.","directories":{},"_nodeVersion":"20.12.2","dependencies":{"type-fns":"^1.20.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.3.1","husky":"8.0.3","eslint":"8.56.0","core-js":"3.26.1","ts-jest":"29.1.3","ts-node":"10.9.2","depcheck":"1.4.3","prettier":"2.8.1","declapract":"0.12.3","typescript":"5.4.5","@types/jest":"29.2.4","@commitlint/cli":"19.3.0","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","@typescript-eslint/parser":"7.8.0","cz-conventional-changelog":"3.0.1","@tsconfig/node-lts-strictest":"18.12.1","declapract-typescript-ehmpathy":"0.39.11","@commitlint/config-conventional":"13.1.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.8.0","@trivago/prettier-plugin-sort-imports":"4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/helpful-errors_1.3.9_1756749848003_0.6514138652254124","host":"s3://npm-registry-packages-npm-production"}},"1.3.10":{"name":"helpful-errors","version":"1.3.10","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"author":{"name":"ehmpathy"},"license":"MIT","_id":"helpful-errors@1.3.10","maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"homepage":"https://github.com/ehmpathy/helpful-errors","bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"dist":{"shasum":"1fb5109a179079733ea2017d2da68ece3fa211a9","tarball":"https://registry.npmjs.org/helpful-errors/-/helpful-errors-1.3.10.tgz","fileCount":34,"integrity":"sha512-OEuVXjPjquyLB2dVFpqum1KK4bHVqbQ/ZJBO7wQnWaJwNUPFqQ8+yFQzmj9E+ZdXHshkqiCgRv475dBGrqNOrg==","signatures":[{"sig":"MEUCIEQa7/nDx9BFkgIQvWextl+9Hhu2jPaDxF/P6TsM/9/BAiEAkFWO5ofZVUaKYUK3sjAv5dOE0NyeiYxI+2/mM/ojcqw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38017},"main":"dist/index.js","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"engines":{"node":">=8.0.0"},"gitHead":"bd5f615ffd3aed60e661646e90f0e5a63b352e7a","scripts":{"test":"npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally","build":"npm run build:clean && npm run build:compile","prepush":"npm run test && npm run build","fix:lint":"eslint -c ./.eslintrc.js src/**/*.ts --fix","test:lint":"npm run test:lint:eslint && npm run test:lint:deps","test:unit":"jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","fix:format":"npm run fix:format:prettier","prepublish":"npm run build","preversion":"npm run prepush","test:types":"tsc -p ./tsconfig.build.json --noEmit","build:clean":"rm dist/ -rf","postinstall":"[ -d .git ] && npm run prepare:husky || exit 0","postversion":"git push origin HEAD --tags --no-verify","test:format":"npm run test:format:prettier","test:commits":"LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose","build:compile":"tsc -p ./tsconfig.build.json","prepare:husky":"npx husky install && chmod ug+x .husky/*","build:artifact":"echo 'no artifact'","test:lint:deps":"npx depcheck -c ./depcheckrc.yml","commit:with-cli":"npx cz","test:acceptance":"npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests","test:integration":"jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","test:lint:eslint":"eslint -c ./.eslintrc.js src/**/*.ts","fix:format:prettier":"prettier --write '**/*.ts' --config ./prettier.config.js","test:format:prettier":"prettier --parser typescript --check 'src/**/*.ts' --config ./prettier.config.js","test:acceptance:locally":"npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests"},"_npmUser":{"name":"uladkasach","email":"UladKasach@gmail.com"},"repository":{"url":"git+https://github.com/ehmpathy/helpful-errors.git","type":"git"},"_npmVersion":"10.5.0","description":"A standard set of errors and methods for simpler, safer, and easier to read code.","directories":{},"_nodeVersion":"20.12.2","dependencies":{"type-fns":"1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.3.1","husky":"8.0.3","eslint":"8.56.0","core-js":"3.26.1","ts-jest":"29.1.3","ts-node":"10.9.2","depcheck":"1.4.3","prettier":"2.8.1","declapract":"0.12.3","typescript":"5.4.5","@types/jest":"29.2.4","@commitlint/cli":"19.3.0","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","@typescript-eslint/parser":"7.8.0","cz-conventional-changelog":"3.0.1","@tsconfig/node-lts-strictest":"18.12.1","declapract-typescript-ehmpathy":"0.39.11","@commitlint/config-conventional":"13.1.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.8.0","@trivago/prettier-plugin-sort-imports":"4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/helpful-errors_1.3.10_1756770376634_0.9721472207866269","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"helpful-errors","version":"1.4.0","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"author":{"name":"ehmpathy"},"license":"MIT","_id":"helpful-errors@1.4.0","maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"homepage":"https://github.com/ehmpathy/helpful-errors","bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"dist":{"shasum":"f9966a46774290fa828186cdb10f085d8f96b6f5","tarball":"https://registry.npmjs.org/helpful-errors/-/helpful-errors-1.4.0.tgz","fileCount":34,"integrity":"sha512-hYfCgCUD4BNHr4KAUujlk3kClkwSu+yfZiTvRumaSeMfUSnCuq1Snf+qJRZKBGXYY3/1Ghv+r5Jb17n6S5o+/g==","signatures":[{"sig":"MEYCIQCCbO/0d4vja7bVcWdmauWrNzfGy0J3bjAysvHTgbrKvAIhAPy2o+xksUbksTS6npYV369BPEhuNAPzLNFI+U7+8dx+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51584},"main":"dist/index.js","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"engines":{"node":">=8.0.0"},"gitHead":"7d1d8055fe0b3bac1c3294d3bc6777873c097894","scripts":{"test":"npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally","build":"npm run build:clean && npm run build:compile","prepush":"npm run test && npm run build","fix:lint":"eslint -c ./.eslintrc.js src/**/*.ts --fix","test:lint":"npm run test:lint:eslint && npm run test:lint:deps","test:unit":"jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","fix:format":"npm run fix:format:prettier","prepublish":"npm run build","preversion":"npm run prepush","test:types":"tsc -p ./tsconfig.build.json --noEmit","build:clean":"rm dist/ -rf","postinstall":"[ -d .git ] && npm run prepare:husky || exit 0","postversion":"git push origin HEAD --tags --no-verify","test:format":"npm run test:format:prettier","test:commits":"LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose","build:compile":"tsc -p ./tsconfig.build.json","prepare:husky":"npx husky install && chmod ug+x .husky/*","build:artifact":"echo 'no artifact'","test:lint:deps":"npx depcheck -c ./depcheckrc.yml","commit:with-cli":"npx cz","test:acceptance":"npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests","test:integration":"jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","test:lint:eslint":"eslint -c ./.eslintrc.js src/**/*.ts","fix:format:prettier":"prettier --write '**/*.ts' --config ./prettier.config.js","test:format:prettier":"prettier --parser typescript --check 'src/**/*.ts' --config ./prettier.config.js","test:acceptance:locally":"npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests"},"_npmUser":{"name":"uladkasach","email":"UladKasach@gmail.com"},"repository":{"url":"git+https://github.com/ehmpathy/helpful-errors.git","type":"git"},"_npmVersion":"10.5.0","description":"A standard set of errors and methods for simpler, safer, and easier to read code.","directories":{},"_nodeVersion":"20.12.2","dependencies":{"type-fns":"1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.3.1","husky":"8.0.3","eslint":"8.56.0","core-js":"3.26.1","ts-jest":"29.1.3","ts-node":"10.9.2","depcheck":"1.4.3","prettier":"2.8.1","declapract":"0.12.3","typescript":"5.4.5","@types/jest":"29.2.4","@commitlint/cli":"19.3.0","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","@typescript-eslint/parser":"7.8.0","cz-conventional-changelog":"3.0.1","@tsconfig/node-lts-strictest":"18.12.1","declapract-typescript-ehmpathy":"0.39.11","@commitlint/config-conventional":"13.1.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.8.0","@trivago/prettier-plugin-sort-imports":"4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/helpful-errors_1.4.0_1763346883429_0.4314436893877467","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"helpful-errors","version":"1.5.0","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"author":{"name":"ehmpathy"},"license":"MIT","_id":"helpful-errors@1.5.0","maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"homepage":"https://github.com/ehmpathy/helpful-errors","bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"dist":{"shasum":"b9132be24ae57fa6925a3c9d13600404487c7313","tarball":"https://registry.npmjs.org/helpful-errors/-/helpful-errors-1.5.0.tgz","fileCount":40,"integrity":"sha512-cwnaQ/3Prgi3npY9BaVxvVYESOFVwPMF9ND615t4b0QsMpuIjGFYRZLxMgcmL/yQIxkWBMkLgP39U+/eWNN3ug==","signatures":[{"sig":"MEUCIH8RMDI4P131UIcaxKLFak0n2S4lrgpuOUVkFgQh/a6JAiEArR3CvI5a61nQra7tKxml2kx66T1NhocdUegLB23pFDQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60879},"main":"dist/index.js","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"engines":{"node":">=8.0.0"},"gitHead":"aa866341f5e296f5f1c90ba382a6b5ade6cccb05","scripts":{"test":"npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally","build":"npm run build:clean && npm run build:compile","prepush":"npm run test && npm run build","fix:lint":"eslint -c ./.eslintrc.js src/**/*.ts --fix","test:lint":"npm run test:lint:eslint && npm run test:lint:deps","test:unit":"jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","fix:format":"npm run fix:format:prettier","prepublish":"npm run build","preversion":"npm run prepush","test:types":"tsc -p ./tsconfig.build.json --noEmit","build:clean":"rm dist/ -rf","postinstall":"[ -d .git ] && npm run prepare:husky || exit 0","postversion":"git push origin HEAD --tags --no-verify","test:format":"npm run test:format:prettier","test:commits":"LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose","build:compile":"tsc -p ./tsconfig.build.json","prepare:husky":"npx husky install && chmod ug+x .husky/*","build:artifact":"echo 'no artifact'","test:lint:deps":"npx depcheck -c ./depcheckrc.yml","commit:with-cli":"npx cz","test:acceptance":"npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests","test:integration":"jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","test:lint:eslint":"eslint -c ./.eslintrc.js src/**/*.ts","fix:format:prettier":"prettier --write '**/*.ts' --config ./prettier.config.js","test:format:prettier":"prettier --parser typescript --check 'src/**/*.ts' --config ./prettier.config.js","test:acceptance:locally":"npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests"},"_npmUser":{"name":"uladkasach","email":"UladKasach@gmail.com"},"repository":{"url":"git+https://github.com/ehmpathy/helpful-errors.git","type":"git"},"_npmVersion":"10.5.0","description":"A standard set of errors and methods for simpler, safer, and easier to read code.","directories":{},"_nodeVersion":"20.12.2","dependencies":{"type-fns":"1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.3.1","husky":"8.0.3","eslint":"8.56.0","core-js":"3.26.1","ts-jest":"29.1.3","ts-node":"10.9.2","depcheck":"1.4.3","prettier":"2.8.1","declapract":"0.12.3","typescript":"5.4.5","@types/jest":"29.2.4","@commitlint/cli":"19.3.0","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","@typescript-eslint/parser":"7.8.0","cz-conventional-changelog":"3.0.1","@tsconfig/node-lts-strictest":"18.12.1","declapract-typescript-ehmpathy":"0.39.11","@commitlint/config-conventional":"13.1.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.8.0","@trivago/prettier-plugin-sort-imports":"4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/helpful-errors_1.5.0_1763961763482_0.4734590857046348","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"helpful-errors","version":"1.5.1","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"author":{"name":"ehmpathy"},"license":"MIT","_id":"helpful-errors@1.5.1","maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"homepage":"https://github.com/ehmpathy/helpful-errors","bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"dist":{"shasum":"2e85c4b41d98c397401117a3daad46113d3d18a8","tarball":"https://registry.npmjs.org/helpful-errors/-/helpful-errors-1.5.1.tgz","fileCount":40,"integrity":"sha512-sK34V9TsR1bFNdlq97Mut4F3YXM92lF5qJpGOcYCRRvmFQmo22OvGsm9njvA3d2N/Pogl2Jf7dXcXjcyzbKVfQ==","signatures":[{"sig":"MEUCIGFoLXGHnOXYwTVF9OkwLiC5/JyhoS7J0k594kjcJ4J8AiEAyFSCdXOKz321NMBEjrzR1VsLF1kq7FmaKy3pMc9I1OA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68458},"main":"dist/index.js","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"engines":{"node":">=8.0.0"},"gitHead":"fc6c68d0c6532766f6ff1249719308dc43afc689","scripts":{"test":"npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally","build":"npm run build:clean && npm run build:compile","prepush":"npm run test && npm run build","fix:lint":"eslint -c ./.eslintrc.js src/**/*.ts --fix","test:lint":"npm run test:lint:eslint && npm run test:lint:deps","test:unit":"jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","fix:format":"npm run fix:format:prettier","prepublish":"npm run build","preversion":"npm run prepush","test:types":"tsc -p ./tsconfig.build.json --noEmit","build:clean":"rm dist/ -rf","postinstall":"[ -d .git ] && npm run prepare:husky || exit 0","postversion":"git push origin HEAD --tags --no-verify","test:format":"npm run test:format:prettier","test:commits":"LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose","build:compile":"tsc -p ./tsconfig.build.json","prepare:husky":"npx husky install && chmod ug+x .husky/*","build:artifact":"echo 'no artifact'","test:lint:deps":"npx depcheck -c ./depcheckrc.yml","commit:with-cli":"npx cz","test:acceptance":"npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests","test:integration":"jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","test:lint:eslint":"eslint -c ./.eslintrc.js src/**/*.ts","fix:format:prettier":"prettier --write '**/*.ts' --config ./prettier.config.js","test:format:prettier":"prettier --parser typescript --check 'src/**/*.ts' --config ./prettier.config.js","test:acceptance:locally":"npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests"},"_npmUser":{"name":"uladkasach","email":"UladKasach@gmail.com"},"repository":{"url":"git+https://github.com/ehmpathy/helpful-errors.git","type":"git"},"_npmVersion":"10.5.0","description":"A standard set of errors and methods for simpler, safer, and easier to read code.","directories":{},"_nodeVersion":"20.12.2","dependencies":{"type-fns":"1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.3.1","husky":"8.0.3","eslint":"8.56.0","core-js":"3.26.1","ts-jest":"29.1.3","ts-node":"10.9.2","depcheck":"1.4.3","prettier":"2.8.1","declapract":"0.12.3","typescript":"5.4.5","@types/jest":"29.2.4","@commitlint/cli":"19.3.0","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","@typescript-eslint/parser":"7.8.0","cz-conventional-changelog":"3.0.1","@tsconfig/node-lts-strictest":"18.12.1","declapract-typescript-ehmpathy":"0.39.11","@commitlint/config-conventional":"13.1.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.8.0","@trivago/prettier-plugin-sort-imports":"4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/helpful-errors_1.5.1_1763962445431_0.46445377408376043","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"helpful-errors","version":"1.5.2","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"author":{"name":"ehmpathy"},"license":"MIT","_id":"helpful-errors@1.5.2","maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"homepage":"https://github.com/ehmpathy/helpful-errors","bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"dist":{"shasum":"9c29d28f5b9cd964bfdd76bb509ff863bf83de78","tarball":"https://registry.npmjs.org/helpful-errors/-/helpful-errors-1.5.2.tgz","fileCount":40,"integrity":"sha512-BgAw8lZx8BZnLEkL6QLZJry45Fn+zyEnqpUrtqk1bKtR2Ko0mOYfwaXxplT2BfgC0XoPhQ284wOlIGec3kJpqA==","signatures":[{"sig":"MEQCIBjL+trOW2CIi9qfmiuNO9R2vEdSAQWdat3wkiTLXqkXAiAColJc2Ex4hNkJYBiiC+Q9QIyVR9Bd6A9+i0X/ooLLbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71211},"main":"dist/index.js","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"engines":{"node":">=8.0.0"},"gitHead":"4ef5b381466eabc5f31fe455d70dbc15fa3f02f7","scripts":{"test":"npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally","build":"npm run build:clean && npm run build:compile","prepush":"npm run test && npm run build","fix:lint":"eslint -c ./.eslintrc.js src/**/*.ts --fix","test:lint":"npm run test:lint:eslint && npm run test:lint:deps","test:unit":"jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","fix:format":"npm run fix:format:prettier","prepublish":"npm run build","preversion":"npm run prepush","test:types":"tsc -p ./tsconfig.build.json --noEmit","build:clean":"rm dist/ -rf","postinstall":"[ -d .git ] && npm run prepare:husky || exit 0","postversion":"git push origin HEAD --tags --no-verify","test:format":"npm run test:format:prettier","test:commits":"LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose","build:compile":"tsc -p ./tsconfig.build.json","prepare:husky":"npx husky install && chmod ug+x .husky/*","build:artifact":"echo 'no artifact'","test:lint:deps":"npx depcheck -c ./depcheckrc.yml","commit:with-cli":"npx cz","test:acceptance":"npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests","test:integration":"jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","test:lint:eslint":"eslint -c ./.eslintrc.js src/**/*.ts","fix:format:prettier":"prettier --write '**/*.ts' --config ./prettier.config.js","test:format:prettier":"prettier --parser typescript --check 'src/**/*.ts' --config ./prettier.config.js","test:acceptance:locally":"npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests"},"_npmUser":{"name":"uladkasach","email":"UladKasach@gmail.com"},"repository":{"url":"git+https://github.com/ehmpathy/helpful-errors.git","type":"git"},"_npmVersion":"10.5.0","description":"A standard set of errors and methods for simpler, safer, and easier to read code.","directories":{},"_nodeVersion":"20.12.2","dependencies":{"type-fns":"1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.3.1","husky":"8.0.3","eslint":"8.56.0","core-js":"3.26.1","ts-jest":"29.1.3","ts-node":"10.9.2","depcheck":"1.4.3","prettier":"2.8.1","declapract":"0.12.3","typescript":"5.4.5","@types/jest":"29.2.4","@commitlint/cli":"19.3.0","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","@typescript-eslint/parser":"7.8.0","cz-conventional-changelog":"3.0.1","@tsconfig/node-lts-strictest":"18.12.1","declapract-typescript-ehmpathy":"0.39.11","@commitlint/config-conventional":"13.1.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.8.0","@trivago/prettier-plugin-sort-imports":"4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/helpful-errors_1.5.2_1763962722883_0.7779366153521317","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"helpful-errors","version":"1.5.3","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"author":{"name":"ehmpathy"},"license":"MIT","_id":"helpful-errors@1.5.3","maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"homepage":"https://github.com/ehmpathy/helpful-errors","bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"dist":{"shasum":"e1baf0f5356e3784ded82091b205f588d7fd5f2b","tarball":"https://registry.npmjs.org/helpful-errors/-/helpful-errors-1.5.3.tgz","fileCount":40,"integrity":"sha512-d1mwEIfBVUfMJqORl6/lzGMPHL72wgk8FF71ULOY3SQ8yYeqPPStFmY85IOAowtkfm1pdpdAY4hsPRCz1cGcQw==","signatures":[{"sig":"MEUCIQCfbnTcSee277mc7gVYanKq4P5k8l5zKtbSgu6vt16VzQIgQAF6k+opfraPPd3HUZzSc0jID4qAsKKNxX7WP6szPDg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73588},"main":"dist/index.js","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"engines":{"node":">=8.0.0"},"gitHead":"b6de97b6d2e1ae04a7c176343186ed6a83eec9cc","scripts":{"test":"npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally","build":"npm run build:clean && npm run build:compile","prepush":"npm run test && npm run build","fix:lint":"eslint -c ./.eslintrc.js src/**/*.ts --fix","test:lint":"npm run test:lint:eslint && npm run test:lint:deps","test:unit":"jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","fix:format":"npm run fix:format:prettier","prepublish":"npm run build","preversion":"npm run prepush","test:types":"tsc -p ./tsconfig.build.json --noEmit","build:clean":"rm dist/ -rf","postinstall":"[ -d .git ] && npm run prepare:husky || exit 0","postversion":"git push origin HEAD --tags --no-verify","test:format":"npm run test:format:prettier","test:commits":"LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose","build:compile":"tsc -p ./tsconfig.build.json","prepare:husky":"npx husky install && chmod ug+x .husky/*","build:artifact":"echo 'no artifact'","test:lint:deps":"npx depcheck -c ./depcheckrc.yml","commit:with-cli":"npx cz","test:acceptance":"npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests","test:integration":"jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')","test:lint:eslint":"eslint -c ./.eslintrc.js src/**/*.ts","fix:format:prettier":"prettier --write '**/*.ts' --config ./prettier.config.js","test:format:prettier":"prettier --parser typescript --check 'src/**/*.ts' --config ./prettier.config.js","test:acceptance:locally":"npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests"},"_npmUser":{"name":"uladkasach","email":"UladKasach@gmail.com"},"repository":{"url":"git+https://github.com/ehmpathy/helpful-errors.git","type":"git"},"_npmVersion":"10.5.0","description":"A standard set of errors and methods for simpler, safer, and easier to read code.","directories":{},"_nodeVersion":"20.12.2","dependencies":{"type-fns":"1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.3.1","husky":"8.0.3","eslint":"8.56.0","core-js":"3.26.1","ts-jest":"29.1.3","ts-node":"10.9.2","depcheck":"1.4.3","prettier":"2.8.1","declapract":"0.12.3","typescript":"5.4.5","@types/jest":"29.2.4","@commitlint/cli":"19.3.0","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","@typescript-eslint/parser":"7.8.0","cz-conventional-changelog":"3.0.1","@tsconfig/node-lts-strictest":"18.12.1","declapract-typescript-ehmpathy":"0.39.11","@commitlint/config-conventional":"13.1.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.8.0","@trivago/prettier-plugin-sort-imports":"4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/helpful-errors_1.5.3_1763963162633_0.6134758555284143","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"helpful-errors","version":"1.7.0","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"author":{"name":"ehmpathy"},"license":"MIT","_id":"helpful-errors@1.7.0","maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"homepage":"https://github.com/ehmpathy/helpful-errors","bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"dist":{"shasum":"a86be3c0377dca25fe2f1449487202904444b252","tarball":"https://registry.npmjs.org/helpful-errors/-/helpful-errors-1.7.0.tgz","fileCount":25,"integrity":"sha512-Z70d0mNla9o5O7zBIt3b3cuyi4lC74truiM7dJVwAV4LmqZ3YBXyKFPGmzp3hjOHNj7st9Yo8orvNg3bmRyrEw==","signatures":[{"sig":"MEUCIQDyQWZBoPSa+pecZOGbztgsWyt6KeHDcXKL/LMKwIBzVAIgDpYXyG9/eEeq+TRAV0GhJkJo3VUgaOb+FkKNkNJQkdk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/helpful-errors@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48186},"main":"dist/index.js","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"engines":{"node":">=8.0.0"},"gitHead":"f99c8eeca944fee88a791ab4f1d345b1349a6d93","scripts":{"fix":"npm run fix:format && npm run fix:lint","test":"eval $(ECHO=true npm run --silent test:auth) && npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally","build":"npm run build:clean && npm run build:compile && npm run build:complete --if-present","prepare":"if [ -e .git ] && [ -z $CI ]; then npm run prepare:husky && npm run prepare:rhachet; fi","prepush":"npm run test && npm run build","fix:lint":"biome check --write","test:auth":"[ \"$ECHO\" = 'true' ] && echo '. .agent/repo=.this/role=any/skills/use.apikeys.sh' || . .agent/repo=.this/role=any/skills/use.apikeys.sh","test:lint":"npm run test:lint:biome && npm run test:lint:deps","test:unit":"jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main') $([ -n $RESNAP ] && echo '--updateSnapshot')","fix:format":"npm run fix:format:biome","prepublish":"npm run build","preversion":"npm run prepush","test:types":"tsc -p ./tsconfig.json --noEmit","build:clean":"npm run build:clean:tsc && npm run build:clean:bun","postversion":"git push origin HEAD --tags --no-verify","test:format":"npm run test:format:biome","test:commits":"LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose","build:compile":"npm run build:compile:tsc && npm run build:compile:bun --if-present","prepare:husky":"husky install && chmod ug+x .husky/*","build:artifact":"echo 'no artifact'","test:lint:deps":"npx depcheck -c ./.depcheckrc.yml","build:clean:bun":"rm -f ./bin/*.bc","build:clean:tsc":"(chmod -R u+w dist 2>/dev/null || true) && rm -rf dist/","commit:with-cli":"npx cz","prepare:rhachet":"rhachet init --roles behaver mechanic reviewer","test:acceptance":"npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests $([ -n $RESNAP ] && echo '--updateSnapshot')","test:lint:biome":"biome check --diagnostic-level=error","fix:format:biome":"biome check --write","test:integration":"jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main') $([ -n $RESNAP ] && echo '--updateSnapshot')","build:compile:tsc":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json","test:format:biome":"biome format","test:lint:biome:all":"biome check","test:acceptance:locally":"npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests $([ -n $RESNAP ] && echo '--updateSnapshot')"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:af7068ed-4593-414c-9e4c-a5aab4580174"}},"repository":{"url":"git+https://github.com/ehmpathy/helpful-errors.git","type":"git"},"_npmVersion":"11.8.0","description":"A standard set of errors and methods for simpler, safer, and easier to read code.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"type-fns":"1.21.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.24.0","devDependencies":{"tsx":"4.20.6","jest":"30.2.0","yalc":"1.0.0-pre.53","husky":"8.0.3","core-js":"3.26.1","rhachet":"1.28.1","ts-jest":"29.1.3","ts-node":"10.9.2","depcheck":"1.4.3","test-fns":"1.7.2","@swc/core":"1.15.3","@swc/jest":"0.2.39","tsc-alias":"1.8.10","declapract":"0.13.14","typescript":"5.4.5","@types/jest":"30.0.0","@types/node":"22.15.21","declastruct":"1.7.3","@biomejs/biome":"2.3.8","@commitlint/cli":"19.5.0","@tsconfig/node20":"20.1.5","esbuild-register":"3.6.0","declastruct-github":"1.3.0","@tsconfig/strictest":"2.0.5","rhachet-roles-bhrain":"0.7.1","rhachet-roles-bhuild":"0.6.14","rhachet-roles-ehmpathy":"1.17.34","cz-conventional-changelog":"3.3.0","@tsconfig/node-lts-strictest":"18.12.1","declapract-typescript-ehmpathy":"0.47.34","@commitlint/config-conventional":"19.5.0"},"_npmOperationalInternal":{"tmp":"tmp/helpful-errors_1.7.0_1769865451730_0.22046985265141528","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"helpful-errors","version":"1.7.1","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"author":{"name":"ehmpathy"},"license":"MIT","_id":"helpful-errors@1.7.1","maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"homepage":"https://github.com/ehmpathy/helpful-errors","bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"dist":{"shasum":"6fd167f801700c9dd579a08c326f5ecb22391585","tarball":"https://registry.npmjs.org/helpful-errors/-/helpful-errors-1.7.1.tgz","fileCount":31,"integrity":"sha512-6ldWZt6Ag7pXVRBvqqbV2BUBXRiPtrX+1Ziyb8OkDRwO7Qg2u6lfbxSQZ06VkXPfmL4WOpR+RwjfdCWc8TZdlg==","signatures":[{"sig":"MEUCICe+EeKBx45SIEo7i2HBC3fJLXEm3NIoTy55N+0A9nyaAiEAvxDc4Lv66pBTtjlbuEwzRUozsNZD6elxuRjuKsVK9Yw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/helpful-errors@1.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":57233},"main":"dist/index.js","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"engines":{"node":">=8.0.0"},"gitHead":"9e073a806dd57de09755a18325dbea53fada23f1","scripts":{"fix":"npm run fix:format && npm run fix:lint","test":"set -eu && eval $(ECHO=true npm run --silent test:auth) && npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally","build":"npm run build:clean && npm run build:compile && npm run build:complete --if-present","prepare":"if [ -e .git ] && [ -z $CI ]; then npm run prepare:husky && npm run prepare:rhachet; fi","prepush":"npm run test && npm run build","fix:lint":"biome check --write","test:auth":"[ \"${ECHO:-}\" = 'true' ] && echo '. .agent/repo=.this/role=any/skills/use.apikeys.sh' || . .agent/repo=.this/role=any/skills/use.apikeys.sh","test:lint":"npm run test:lint:biome && npm run test:lint:deps","test:unit":"set -eu && jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -n \"${CI:-}\" ] && echo '--ci') $([ -z \"${THOROUGH:-}\" ] && echo '--changedSince=main') $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')","fix:format":"npm run fix:format:biome","prepublish":"npm run build","preversion":"npm run prepush","test:types":"tsc -p ./tsconfig.json --noEmit","build:clean":"npm run build:clean:tsc && npm run build:clean:bun","postversion":"git push origin HEAD --tags --no-verify","test:format":"npm run test:format:biome","test:commits":"LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose","build:compile":"npm run build:compile:tsc && npm run build:compile:bun --if-present","prepare:husky":"husky install && chmod ug+x .husky/*","build:artifact":"echo 'no artifact'","test:lint:deps":"npx depcheck -c ./.depcheckrc.yml","build:clean:bun":"rm -f ./bin/*.bc","build:clean:tsc":"(chmod -R u+w dist 2>/dev/null || true) && rm -rf dist/","commit:with-cli":"npx cz","prepare:rhachet":"rhachet init --hooks --roles mechanic behaver driver reviewer librarian ergonomist architect","test:acceptance":"set -eu && npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests $([ -n \"${CI:-}\" ] && echo '--ci') $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')","test:lint:biome":"biome check --diagnostic-level=error","upgrade:rhachet":"rhachet upgrade","fix:format:biome":"biome check --write","test:integration":"set -eu && jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -n \"${CI:-}\" ] && echo '--ci') $([ -z \"${THOROUGH:-}\" ] && echo '--changedSince=main') $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')","build:compile:tsc":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json","test:format:biome":"biome format","test:lint:biome:all":"biome check","test:acceptance:locally":"set -eu && npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:af7068ed-4593-414c-9e4c-a5aab4580174"}},"repository":{"url":"git+https://github.com/ehmpathy/helpful-errors.git","type":"git"},"_npmVersion":"11.11.1","description":"A standard set of errors and methods for simpler, safer, and easier to read code.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"type-fns":"1.21.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.24.0","devDependencies":{"tsx":"4.20.6","jest":"30.2.0","yalc":"1.0.0-pre.53","husky":"8.0.3","core-js":"3.26.1","rhachet":"1.37.16","ts-jest":"29.1.3","ts-node":"10.9.2","depcheck":"1.4.3","test-fns":"1.7.2","@swc/core":"1.15.3","@swc/jest":"0.2.39","tsc-alias":"1.8.10","declapract":"0.13.16","typescript":"5.4.5","@types/jest":"30.0.0","@types/node":"22.15.21","declastruct":"1.7.3","@biomejs/biome":"2.3.8","domain-objects":"0.31.7","@commitlint/cli":"19.5.0","@tsconfig/node20":"20.1.5","esbuild-register":"3.6.0","declastruct-github":"1.3.0","rhachet-brains-xai":"0.2.1","@tsconfig/strictest":"2.0.5","rhachet-roles-bhrain":"0.20.0","rhachet-roles-bhuild":"0.14.2","rhachet-roles-ehmpathy":"1.28.0","rhachet-brains-anthropic":"0.3.3","cz-conventional-changelog":"3.3.0","@tsconfig/node-lts-strictest":"18.12.1","declapract-typescript-ehmpathy":"0.47.49","@commitlint/config-conventional":"19.5.0"},"_npmOperationalInternal":{"tmp":"tmp/helpful-errors_1.7.1_1773751705657_0.8312471239945693","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"helpful-errors","version":"1.7.2","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"author":{"name":"ehmpathy"},"license":"MIT","_id":"helpful-errors@1.7.2","maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"homepage":"https://github.com/ehmpathy/helpful-errors","bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"dist":{"shasum":"27a7fbc3f5e5682d252edd8fe101bcec63d2ddf0","tarball":"https://registry.npmjs.org/helpful-errors/-/helpful-errors-1.7.2.tgz","fileCount":31,"integrity":"sha512-zdTjedWRSUEj7b0wFn2M+NnmYZ65XwKQ4PXdrlrGvioOh/QSw+9pdlEUL4yEPI3LX57ULkfDEGbd7xkn70TcCw==","signatures":[{"sig":"MEYCIQCM41d1ZGYlCKZGFlhuZqV3BuhbyWCVa7qr+sZ2LLivvgIhAM6sBJ+6yrZydumnt5TpCXG7ypGuKSCbfF3FpEHYFXd7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/helpful-errors@1.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":57860},"main":"dist/index.js","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"engines":{"node":">=8.0.0"},"gitHead":"634380c8999cd17433bc17119fe070d4ca877e3f","scripts":{"fix":"npm run fix:format && npm run fix:lint","test":"set -eu && eval $(ECHO=true npm run --silent test:auth) && npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally","build":"npm run build:clean && npm run build:compile && npm run build:complete --if-present","prepare":"if [ -e .git ] && [ -z $CI ]; then npm run prepare:husky && npm run prepare:rhachet; fi","prepush":"npm run test && npm run build","fix:lint":"biome check --write","test:auth":"[ \"${ECHO:-}\" = 'true' ] && echo '. .agent/repo=.this/role=any/skills/use.apikeys.sh' || . .agent/repo=.this/role=any/skills/use.apikeys.sh","test:lint":"npm run test:lint:biome && npm run test:lint:imports && npm run test:lint:deps","test:unit":"set -eu && jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -n \"${CI:-}\" ] && echo '--ci') $([ -z \"${THOROUGH:-}\" ] && echo '--changedSince=main') $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')","fix:format":"npm run fix:format:biome","prepublish":"npm run build","preversion":"npm run prepush","test:types":"tsc -p ./tsconfig.json --noEmit","build:clean":"npm run build:clean:tsc && npm run build:clean:bun","postversion":"git push origin HEAD --tags --no-verify","test:format":"npm run test:format:biome","test:commits":"LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose","build:compile":"npm run build:compile:tsc && npm run build:compile:bun --if-present","prepare:husky":"husky install && chmod ug+x .husky/*","build:artifact":"echo 'no artifact'","test:lint:deps":"npx depcheck -c ./.depcheckrc.yml","build:clean:bun":"rm -f ./bin/*.bc","build:clean:tsc":"(chmod -R u+w dist 2>/dev/null || true) && rm -rf dist/","commit:with-cli":"npx cz","prepare:rhachet":"rhachet init --hooks --roles mechanic behaver driver reviewer librarian ergonomist architect","test:acceptance":"set -eu && npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests $([ -n \"${CI:-}\" ] && echo '--ci') $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')","test:lint:biome":"biome check --diagnostic-level=error","upgrade:rhachet":"rhachet upgrade","fix:format:biome":"biome check --write","test:integration":"set -eu && jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -n \"${CI:-}\" ] && echo '--ci') $([ -z \"${THOROUGH:-}\" ] && echo '--changedSince=main') $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')","build:compile:tsc":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json","test:format:biome":"biome format","test:lint:imports":"dpdm --no-warning --no-tree --exit-code circular:1 --exclude '^$' 'src/**/*.ts'","test:lint:biome:all":"biome check","test:acceptance:locally":"set -eu && npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:af7068ed-4593-414c-9e4c-a5aab4580174"}},"repository":{"url":"git+https://github.com/ehmpathy/helpful-errors.git","type":"git"},"_npmVersion":"11.11.1","description":"A standard set of errors and methods for simpler, safer, and easier to read code.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"type-fns":"1.21.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.24.0","devDependencies":{"tsx":"4.20.6","dpdm":"4.0.1","jest":"30.2.0","yalc":"1.0.0-pre.53","husky":"8.0.3","core-js":"3.26.1","rhachet":"1.37.16","ts-jest":"29.1.3","ts-node":"10.9.2","depcheck":"1.4.3","test-fns":"1.7.2","@swc/core":"1.15.3","@swc/jest":"0.2.39","tsc-alias":"1.8.10","declapract":"0.13.16","typescript":"5.4.5","@types/jest":"30.0.0","@types/node":"22.15.21","declastruct":"1.7.3","@biomejs/biome":"2.3.8","domain-objects":"0.31.9","@commitlint/cli":"19.5.0","@tsconfig/node20":"20.1.5","esbuild-register":"3.6.0","declastruct-github":"1.3.0","rhachet-brains-xai":"0.2.1","@tsconfig/strictest":"2.0.5","rhachet-roles-bhrain":"0.20.0","rhachet-roles-bhuild":"0.14.2","rhachet-roles-ehmpathy":"1.28.0","rhachet-brains-anthropic":"0.3.3","cz-conventional-changelog":"3.3.0","@tsconfig/node-lts-strictest":"18.12.1","declapract-typescript-ehmpathy":"0.47.49","@commitlint/config-conventional":"19.5.0"},"_npmOperationalInternal":{"tmp":"tmp/helpful-errors_1.7.2_1773825295114_0.3020931486251801","host":"s3://npm-registry-packages-npm-production"}},"1.7.3":{"name":"helpful-errors","version":"1.7.3","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"author":{"name":"ehmpathy"},"license":"MIT","_id":"helpful-errors@1.7.3","maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"homepage":"https://github.com/ehmpathy/helpful-errors","bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"dist":{"shasum":"c0eb9472210a210d3bebe74bb2543cfcb33e60e4","tarball":"https://registry.npmjs.org/helpful-errors/-/helpful-errors-1.7.3.tgz","fileCount":31,"integrity":"sha512-bMjY01YetPP86E4ra36cn7KXN+l/ov0mdww92J/jCxeMjH9KLJRuvJajHoElYo1oweqYZhQo8n3qjYPbANb5sg==","signatures":[{"sig":"MEUCIQDigIqLMJ15Sr8l2n+34Mgd9AYej8sUyHwNAwTqKveRNQIgbtbYafxLsgFJPJ4skXeqNz7dTBS6MmH1LqKn+RayGjU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/helpful-errors@1.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":57888},"main":"dist/index.js","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"engines":{"node":">=8.0.0"},"gitHead":"7d446102b246d96df1ef3949317a6163272b7b87","scripts":{"fix":"npm run fix:format && npm run fix:lint","test":"set -eu && eval $(ECHO=true npm run --silent test:auth) && npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally","build":"npm run build:clean && npm run build:compile && npm run build:complete --if-present","prepare":"if [ -e .git ] && [ -z $CI ]; then npm run prepare:husky && npm run prepare:rhachet; fi","prepush":"npm run test && npm run build","fix:lint":"biome check --write","test:auth":"[ \"${ECHO:-}\" = 'true' ] && echo '. .agent/repo=.this/role=any/skills/use.apikeys.sh' || . .agent/repo=.this/role=any/skills/use.apikeys.sh","test:lint":"npm run test:lint:biome && npm run test:lint:cycles && npm run test:lint:deps","test:unit":"set -eu && jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -n \"${CI:-}\" ] && echo '--ci') $([ -z \"${THOROUGH:-}\" ] && echo '--changedSince=main') $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')","fix:format":"npm run fix:format:biome","prepublish":"npm run build","preversion":"npm run prepush","test:types":"tsc -p ./tsconfig.json --noEmit","build:clean":"npm run build:clean:tsc && npm run build:clean:bun","postversion":"git push origin HEAD --tags --no-verify","test:format":"npm run test:format:biome","test:commits":"LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose","build:compile":"npm run build:compile:tsc && npm run build:compile:bun --if-present","prepare:husky":"husky install && chmod ug+x .husky/*","build:artifact":"echo 'no artifact'","test:lint:deps":"npx depcheck -c ./.depcheckrc.yml","build:clean:bun":"rm -f ./bin/*.bc","build:clean:tsc":"(chmod -R u+w dist 2>/dev/null || true) && rm -rf dist/","commit:with-cli":"npx cz","prepare:rhachet":"rhachet init --hooks --roles mechanic behaver driver reviewer librarian ergonomist architect reflector dreamer dispatcher","test:acceptance":"set -eu && npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests $([ -n \"${CI:-}\" ] && echo '--ci') $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')","test:lint:biome":"biome check --diagnostic-level=error","upgrade:rhachet":"rhachet upgrade","fix:format:biome":"biome check --write","test:integration":"set -eu && jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -n \"${CI:-}\" ] && echo '--ci') $([ -z \"${THOROUGH:-}\" ] && echo '--changedSince=main') $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')","test:lint:cycles":"dpdm --no-warning --no-tree --exit-code circular:1 --exclude '^$' 'src/**/*.ts'","build:compile:tsc":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json","test:format:biome":"biome format","test:lint:biome:all":"biome check","test:acceptance:locally":"set -eu && npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:af7068ed-4593-414c-9e4c-a5aab4580174"}},"repository":{"url":"git+https://github.com/ehmpathy/helpful-errors.git","type":"git"},"_npmVersion":"11.12.1","description":"A standard set of errors and methods for simpler, safer, and easier to read code.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"type-fns":"1.21.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.24.0","devDependencies":{"tsx":"4.20.6","dpdm":"4.0.1","jest":"30.2.0","yalc":"1.0.0-pre.53","husky":"8.0.3","core-js":"3.26.1","rhachet":"1.39.9","ts-jest":"29.1.3","ts-node":"10.9.2","depcheck":"1.4.3","test-fns":"1.7.2","@swc/core":"1.15.3","@swc/jest":"0.2.39","tsc-alias":"1.8.10","declapract":"0.13.16","typescript":"5.4.5","@types/jest":"30.0.0","@types/node":"22.15.21","declastruct":"1.7.3","@biomejs/biome":"2.3.8","domain-objects":"0.31.9","@commitlint/cli":"19.5.0","@tsconfig/node20":"20.1.5","esbuild-register":"3.6.0","declastruct-github":"1.3.0","rhachet-brains-xai":"0.3.3","@tsconfig/strictest":"2.0.5","rhachet-roles-bhrain":"0.23.10","rhachet-roles-bhuild":"0.17.0","rhachet-roles-ehmpathy":"1.34.23","rhachet-brains-anthropic":"0.4.0","cz-conventional-changelog":"3.3.0","@tsconfig/node-lts-strictest":"18.12.1","declapract-typescript-ehmpathy":"0.47.49","@commitlint/config-conventional":"19.5.0"},"_npmOperationalInternal":{"tmp":"tmp/helpful-errors_1.7.3_1775340294045_0.58690819333391","host":"s3://npm-registry-packages-npm-production"}},"1.7.5":{"name":"helpful-errors","author":{"name":"ehmpathy"},"description":"A standard set of errors and methods for simpler, safer, and easier to read code.","version":"1.7.5","repository":{"type":"git","url":"git+https://github.com/ehmpathy/helpful-errors.git"},"homepage":"https://github.com/ehmpathy/helpful-errors","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"license":"MIT","main":"dist/index.js","engines":{"node":">=8.0.0"},"scripts":{"commit:with-cli":"npx cz","fix:format:biome":"biome check --write","fix:format":"npm run fix:format:biome","fix:lint":"biome check --write","fix":"npm run fix:format && npm run fix:lint","build:artifact":"echo 'no artifact'","build:clean:bun":"rm -f ./bin/*.bc","build:clean:tsc":"(chmod -R u+w dist 2>/dev/null || true) && rm -rf dist/","build:clean":"npm run build:clean:tsc && npm run build:clean:bun","build:compile:tsc":"tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json","build:compile":"npm run build:compile:tsc && npm run build:compile:bun --if-present","build":"npm run build:clean && npm run build:compile && npm run build:complete --if-present","test:auth":"[ \"${ECHO:-}\" = 'true' ] && echo '. .agent/repo=.this/role=any/skills/use.apikeys.sh' || . .agent/repo=.this/role=any/skills/use.apikeys.sh","test:commits":"LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose","test:types":"tsc -p ./tsconfig.json --noEmit","test:format:biome":"biome format","test:format":"npm run test:format:biome","test:lint:deps":"npx depcheck -c ./.depcheckrc.yml","test:lint:biome":"biome check --diagnostic-level=error","test:lint:biome:all":"biome check","test:lint:cycles":"dpdm --no-warning --no-tree --exit-code circular:1 --exclude '^$' 'src/**/*.ts'","test:lint":"npm run test:lint:biome && npm run test:lint:cycles && npm run test:lint:deps","test:unit":"set -eu && jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -n \"${CI:-}\" ] && echo '--ci') $([ -z \"${THOROUGH:-}\" ] && echo '--changedSince=main') $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')","test:integration":"set -eu && jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -n \"${CI:-}\" ] && echo '--ci') $([ -z \"${THOROUGH:-}\" ] && echo '--changedSince=main') $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')","test:acceptance:locally":"set -eu && npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')","test":"set -eu && eval $(ECHO=true npm run --silent test:auth) && npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally","test:acceptance":"set -eu && npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests $([ -n \"${CI:-}\" ] && echo '--ci') $([ -n \"${RESNAP:-}\" ] && echo '--updateSnapshot')","prepush":"npm run test && npm run build","prepublish":"npm run build","preversion":"npm run prepush","postversion":"git push origin HEAD --tags --no-verify","prepare:husky":"husky install && chmod ug+x .husky/*","prepare:rhachet":"rhachet init --hooks --roles mechanic behaver driver reviewer librarian ergonomist architect reflector dreamer dispatcher","prepare":"if [ -e .git ] && [ -z $CI ]; then npm run prepare:husky && npm run prepare:rhachet; fi","upgrade:rhachet":"rhachet upgrade"},"dependencies":{"type-fns":"1.21.2"},"devDependencies":{"@biomejs/biome":"2.3.8","@commitlint/cli":"19.5.0","@commitlint/config-conventional":"19.5.0","@swc/core":"1.15.3","@swc/jest":"0.2.39","@tsconfig/node-lts-strictest":"18.12.1","@tsconfig/node20":"20.1.5","@tsconfig/strictest":"2.0.5","@types/jest":"30.0.0","@types/node":"22.15.21","core-js":"3.26.1","cz-conventional-changelog":"3.3.0","declapract":"0.13.16","declapract-typescript-ehmpathy":"0.47.49","declastruct":"1.7.3","declastruct-github":"1.3.0","depcheck":"1.4.3","domain-objects":"0.31.9","dpdm":"4.0.1","esbuild-register":"3.6.0","husky":"8.0.3","jest":"30.2.0","rhachet":"1.43.1","rhachet-brains-anthropic":"0.4.1","rhachet-brains-fireworksai":"0.1.3","rhachet-brains-xai":"0.3.3","rhachet-roles-bhrain":"0.30.2","rhachet-roles-bhuild":"0.21.25","rhachet-roles-ehmpathy":"1.38.1","test-fns":"1.7.2","ts-jest":"29.1.3","ts-node":"10.9.2","tsc-alias":"1.8.10","tsx":"4.20.6","typescript":"5.4.5","yalc":"1.0.0-pre.53"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"packageManager":"pnpm@10.24.0","gitHead":"c09d39e978ee620925940a9101539fb1a6abad7a","types":"./dist/index.d.ts","_id":"helpful-errors@1.7.5","_nodeVersion":"22.21.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-zffDwO3y0+wMcj3pM9Ro3QmFlvHScc1Q0VlZsl0HJiLjuMTiv4XVjOGRw2YQD55/yGI3Bf3RTh0nW1azu/id/A==","shasum":"2507646969b95fd63a9a35e821c0b9745f5e18c6","tarball":"https://registry.npmjs.org/helpful-errors/-/helpful-errors-1.7.5.tgz","fileCount":46,"unpackedSize":79630,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/helpful-errors@1.7.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBkrWjHjulSgc+uHGcdzMelfHt/smhI3WkASriinb8ZNAiAZZIZUVZG/VJtTHIVTSjKXZYxiC6tn+9/jF03SQQQ+lA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:af7068ed-4593-414c-9e4c-a5aab4580174"}},"directories":{},"maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/helpful-errors_1.7.5_1784432719661_0.9246353230401501"},"_hasShrinkwrap":false}},"time":{"created":"2024-12-26T08:24:52.295Z","modified":"2026-07-19T03:45:20.051Z","1.3.8":"2024-12-26T08:24:52.582Z","1.3.9":"2025-09-01T18:04:08.177Z","1.3.10":"2025-09-01T23:46:16.894Z","1.4.0":"2025-11-17T02:34:43.659Z","1.5.0":"2025-11-24T05:22:43.663Z","1.5.1":"2025-11-24T05:34:05.637Z","1.5.2":"2025-11-24T05:38:43.060Z","1.5.3":"2025-11-24T05:46:02.812Z","1.7.0":"2026-01-31T13:17:31.912Z","1.7.1":"2026-03-17T12:48:25.792Z","1.7.2":"2026-03-18T09:14:55.267Z","1.7.3":"2026-04-04T22:04:54.183Z","1.7.5":"2026-07-19T03:45:19.806Z"},"bugs":{"url":"https://github.com/ehmpathy/helpful-errors/issues"},"author":{"name":"ehmpathy"},"license":"MIT","homepage":"https://github.com/ehmpathy/helpful-errors","keywords":["types","type guards","guards","type checks","checks","type","checking","typescript"],"repository":{"type":"git","url":"git+https://github.com/ehmpathy/helpful-errors.git"},"description":"A standard set of errors and methods for simpler, safer, and easier to read code.","maintainers":[{"name":"uladkasach","email":"UladKasach@gmail.com"}],"readme":"# helpful-errors\n\n![test](https://github.com/ehmpathy/helpful-errors/workflows/test/badge.svg)\n![publish](https://github.com/ehmpathy/helpful-errors/workflows/publish/badge.svg)\n\nStandardized helpful errors and methods for simpler, safer, and easier to read code.\n\n# Purpose\n\nStandardize on helpful errors for simpler, safer, easier to read code\n- extend the `HelpfulError` for observable and actionable error messages\n- leverage the `UnexpectedCodePath` to eliminate complexity with narrowed codepaths\n- leverage the `BadRequestError` to make it clear when your logic successfully rejected a request\n- test that logic throws errors ergonomically with `getError`\n\n# install\n\n```sh\nnpm install --save helpful-errors\n```\n\n# use\n\n### UnexpectedCodePathError\n\nThe `UnexpectedCodePath` error is probably the most common type of error you'll throw.\n\nIt's common in business logic that you'll face a scenario that is technically possible but logically shouldn't occur.\n\nFor example, lets say you're writing on-vehicle code to check the tire pressures of a vehicle.\n\n```ts\n// given the tires to check\nconst tires = Tire[];\n\n// first get the tire pressures for each\nconst tirePressures: number[] = tires.map(tire => getTirePressure(tire));\n\n// now get the lowest tire pressure\nconst lowestTirePressure: number | undefined = tires.sort()[0];\n```\n\nIn this case, its technically possible that `lowestTirePressure` could be undefined: there could not be any tires.\n\nHowever, this is definitely an unexpected code path for our application. We can just halt our logic if we reach here, since we dont need to solve for it.\n\n```ts\n// sanity check that we do have a tire pressure\nif (lowestTirePressure === undefined)\n  throw new UnexpectedCodePath('no tire pressures found. can not compute lowest tire pressure', { tires });\n```\n\nWith this, the type of `lowestTirePressure` has been narrowed from `number | undefined` to just `number`, so you wont have any type errors anymore.\n\nFurther, if this case does occur in real life, then it will be really easy to debug what happened and why. Your error message will include the `tires` input that caused the problem making this a breeze to debug. No more `could not read property 'x' of undefined`!\n\n### BadRequestError\n\nThe `BadRequestError` is probably the next most common type of error you'll throw.\n\nIt's common in business logic that callers will try to execute your logic with inputs that are simply logically not valid. The user may not understand that their input is not valid or there may just be a bug upstream that is resulting in invalid requests.\n\nFor example, imagine you have an api that returns the liked songs of a user\n```ts\nconst getLikedSongsByUser = ({ userUuid }: { userUuid: string }) => {\n  // lookup the user\n  const user = await userDao.findByUuid({ uuid: userUuid });\n\n  // if the user does not exist, this is an invalid request. we shouldn't be asked to lookup songs for fake users\n  if (!user)\n    throw new BadRequestError('user does not exist for uuid', { userUuid });\n\n  // use a property of the user to lookup their favorite songs\n  const songs = await spotifyApi.getLikesForUser({ spotifyUserId: user.spotifyUserId });\n}\n```\n\nWhatever the reason for a caller to make a logically invalid request, it's important to distinguish when *your code* is at fault versus when *the request* is at fault.\n\nThis is particularly useful when you monitor error rates. Its important to distinguish whether your software `failed to execute` or whether it `successfully rejected` the request for observability in monitor dashboards. The `BadRequestError` enables us to do this easily\n\nFor example, libraries such as the [simple-lambda-handlers](https://github.com/ehmpathy/simple-lambda-handlers) leverage `BadRequestErrors` to ensure that a bad request both successfully returns an error to the caller but is not marked as an lambda invocation error.\n\n### ConstraintError\n\nThe `ConstraintError` extends `BadRequestError` with a clearer, more intuitive name. Use it when the caller violated a constraint — invalid input, forbidden action, or broken business rule.\n\n```ts\nimport { ConstraintError } from 'helpful-errors';\n\n// guard clause with static throw\nconst phone = customer.phone ?? ConstraintError.throw('customer must have phone');\n\n// validation\nif (amount <= 0) throw new ConstraintError('amount must be positive', { amount });\n\n// business rule\nif (!user.canAccessResource(resource))\n  throw new ConstraintError('user lacks permission', { userId: user.id, resourceId: resource.id });\n```\n\n`ConstraintError` includes:\n- `ConstraintError.code.http` — `400` (same as BadRequestError)\n- `ConstraintError.code.exit` — `2` (unix usage error convention)\n- `ConstraintError.emoji` — `'✋'` (for log utilities)\n- `instanceof BadRequestError` — `true` (backwards compatible)\n\n### MalfunctionError\n\nThe `MalfunctionError` extends `UnexpectedCodePathError` with a clearer, more intuitive name. Use it when the system itself malfunctioned — a bug, unexpected state, or internal failure.\n\n```ts\nimport { MalfunctionError } from 'helpful-errors';\n\n// guard clause with static throw\nconst config = process.env.CONFIG ?? MalfunctionError.throw('config not loaded');\n\n// impossible state detection\nswitch (status) {\n  case 'active': return handleActive();\n  case 'inactive': return handleInactive();\n  default: throw new MalfunctionError('unknown status', { status });\n}\n\n// wrap external calls\nconst fetchUser = MalfunctionError.wrap(\n  async (id: string) => api.getUser(id),\n  { message: 'failed to fetch user', metadata: { service: 'user-api' } }\n);\n```\n\n`MalfunctionError` includes:\n- `MalfunctionError.code.http` — `500` (same as UnexpectedCodePathError)\n- `MalfunctionError.code.exit` — `1` (unix general error convention)\n- `MalfunctionError.emoji` — `'💥'` (for log utilities)\n- `instanceof UnexpectedCodePathError` — `true` (backwards compatible)\n\n### ConstraintError vs MalfunctionError\n\nThe fundamental distinction:\n\n| error type | whose fault? | what it means | emoji |\n|------------|--------------|---------------|-------|\n| `ConstraintError` | caller's fault | \"you can't do that\" | ✋ |\n| `MalfunctionError` | our fault | \"we broke\" | 💥 |\n\nIn logs, this makes debug instant:\n```\n✋ ConstraintError: customer must have a phone number\n💥 MalfunctionError: payment processor returned unexpected shape\n```\n\nBoth error types inherit all capabilities from their parent classes (`BadRequestError` and `UnexpectedCodePathError`). This includes `.throw()`, `.wrap()`, `.redact()`, and typed metadata generics.\n\n### HelpfulError\n\nThe `HelpfulError` is the backbone of this pattern and is what you'll `extend` whenever you want to create a custom error.\n\nThe purpose of this error is to be as helpful as possible to whoever has to read it when its thrown.\n\nTo fulfill this goal, the error makes it very easy to specify what the issue was as well as any other information that may be helpful to understanding why it occurred at the time. It then pretty prints this information to make it easy to read when observing.\n\n```ts\nthrow new HelpfulError(\n  'the message of the error goes here',\n  {\n    context,\n    relevantInfo,\n    potentiallyHelpfulVariables,\n    goHere,\n  }\n)\n```\n\n#### .metadata generic\n\nYou can define typed metadata for your custom error classes via the generic type parameter:\n\n```ts\nclass UserError extends HelpfulError<{ userId: string; action: string }> {}\n\nconst error = new UserError('operation failed', {\n  userId: '123',\n  action: 'delete'\n});\n\n// typed access to metadata\nerror.metadata.userId;  // string\nerror.metadata.action;  // string\nerror.metadata.wrong;   // typescript error\n```\n\n#### .metadata getter\n\nAccess the original metadata object via the `.metadata` getter:\n\n```ts\nconst error = new HelpfulError('failed', {\n  userId: '123',\n  context: { action: 'delete' }\n});\n\n// access original metadata (not the formatted message)\nconsole.log(error.metadata);\n// { userId: '123', context: { action: 'delete' } }\n\n// useful for programmatic access\nif (error.metadata.userId) {\n  trackErrorByUser(error.metadata.userId);\n}\n```\n\nNote: the `.metadata` property is non-enumerable, so it won't appear in `Object.keys()` or `JSON.stringify()` output — the metadata is already serialized in the message.\n\n#### environment variables\n\nControl error message format via `ERROR_EXPAND`:\n\n```sh\n# default: pretty-printed json (multi-line)\nERROR_EXPAND=true\n\n# compact single-line json\nERROR_EXPAND=false\n```\n\n### getError\n\nThe `getError` method is the cherry-on-top of this library.\n\nWhen you write tests for logic that throws an error in certain situations, you may want to verify that the code indeed throws this error in a test.\n\nThe `getError` utility makes it really easy to assert that the expected error is thrown.\n\nUnder the hood, it executes or awaits the logic or promise you give it as input, catches the error that is thrown, or returns a `NoErrorThrownError` if no error occurred. It does the legwork of all three cases you may need to use it in and defines the return type correctly.\n\nusecase 1: synchronous logic\n```ts\nconst doSomething = () => { throw new HelpfulError('found me'); }\n\nconst error = getError(() => doSomething())\nexpect(error).toBeInstanceOf(HelpfulError);\nexpect(error.message).toContain('found me')\n```\n\nusecase 2: asynchronous logic\n```ts\nconst doSomething = async () => { throw new HelpfulError('found me'); }\n\nconst error = await getError(() => doSomething())\nexpect(error).toBeInstanceOf(HelpfulError);\nexpect(error.message).toContain('found me')\n```\n\nusecase 3: a promise\n```ts\nconst doSomething = async () => { throw new HelpfulError('found me'); }\n\nconst error = await getError(doSomething())\nexpect(error).toBeInstanceOf(HelpfulError);\nexpect(error.message).toContain('found me')\n```\n\n### .throw\n\nThe errors extended from the `HelpfulError` include a `.throw` static method for convenient usage with ternaries or condition chains\n\nFor example, instead of\n```ts\nconst phone = customer.phoneNumber ?? (() => {\n  throw new UnexpectedCodePathError(\n    'customer has relationship without phone number. how is that possible?',\n    { customer },\n  );\n})();\n```\n\nYou can simply write\n```ts\nconst phone = customer.phoneNumber ?? UnexpectedCodePathError.throw(\n  'customer does not have a phone. how is that possible?',\n  { customer },\n);\n```\n\n### .wrap\n\nThe errors extended from `HelpfulError` include a `.wrap` static method for wrapping functions with helpful error handling. This provides a cleaner alternative to try-catch blocks while automatically preserving error context.\n\nFor example, instead of:\n```ts\nconst getUser = async (id: string) => {\n  try {\n    return await database.query('SELECT * FROM users WHERE id = ?', [id]);\n  } catch (error) {\n    throw new HelpfulError('could not get user', {\n      userId: id,\n      cause: error,\n    });\n  }\n};\n```\n\nYou can simply write:\n```ts\nconst getUser = HelpfulError.wrap(\n  async (id: string) => {\n    return await database.query('SELECT * FROM users WHERE id = ?', [id]);\n  },\n  {\n    message: 'could not get user',\n    metadata: { table: 'users' },\n  }\n);\n```\n\nThe `.wrap` method works with both synchronous and asynchronous functions, and automatically uses the correct error variant:\n\n```ts\n// Works with custom error variants\nconst validateEmail = BadRequestError.wrap(\n  (email: string) => {\n    if (!email.includes('@')) throw new Error('invalid format');\n    return email;\n  },\n  {\n    message: 'email validation failed',\n    metadata: { field: 'email' },\n  }\n);\n\n// Works with async functions\nconst processPayment = HelpfulError.wrap(\n  async (amount: number) => {\n    return await paymentGateway.charge(amount);\n  },\n  {\n    message: 'could not process payment',\n    metadata: { service: 'stripe' },\n  }\n);\n```\n\n### .redact\n\nThe errors extended from `HelpfulError` include a `.redact` method for creating redacted clones of errors. This is useful when you need to prevent internal implementation details from leaking to frontends or external systems.\n\nThe `.redact` method accepts an array specifying which parts to redact: `['metadata']`, `['cause']`, or both `['metadata', 'cause']`.\n\n```ts\n// imagine you have an error with some internal details you'd like to keep private\nconst error = new HelpfulError('failed to fetch user profile', {\n  query: 'SELECT * FROM users WHERE id = ?',\n  params: {\n    userId: 'usr_123',\n  },\n  cause: new Error('ECONNREFUSED: connection timeout'),\n});\n\n// you can redact both metadata and cause, to make it safe to expose\nconst redactedForFrontend = error.redact(['metadata', 'cause']);\nconsole.log(redactedForFrontend.message); // \"failed to fetch user profile\"\nconsole.log(redactedForFrontend.cause); // undefined\n```\n\n### HelpfulError parameter options.cause\n\nThe .cause parameter is a helpful feature of native errors. It allows you to chain errors together in a way that retains the full stack trace across errors.\n\nFor example, sometimes, the original error that your code experiences can be reworded to make it easier to debug. By using the .cause option, you're able to retain the stack trace and reference of the original error while throwing a new, more helpful, error.\n\n```ts\n// imagine you're using some api which throws an unhelpful error\nconst apiGetS3Object = async (input: { key: string }) => { throw new Error(\"no access\") }\n\n// you can catch and extend the error to add more context\nconst helpfulGetS3Object = async (input: { key: string }) => {\n  try {\n    await getS3Object();\n  } catch (error) {\n    if (error.message === \"no access\") throw HelpfulError(\"getS3Object.error: could not get object\", {\n      cause: error, // !: by adding the \"cause\" here, we'll retain the stack trace of the original error\n      input,\n    })\n  }\n}\n```\n\n### .toJSON\n\nHelpfulError includes a custom `.toJSON()` method for helpful serialization.\n\nBy default, errors omit `message` and `stack` from serialization. Helpful errors, instead, explicitly includes them to save dev's hours via clear errors that surface full context:\n\n```ts\nconst error = new HelpfulError('failed', { userId: '123' });\n\nJSON.stringify(error);\n// {\n//   \"name\": \"HelpfulError\",\n//   \"message\": \"failed, { \\\"userId\\\": \\\"123\\\" }\",\n//   \"stack\": \"...\"\n// }\n\n// useful for api responses\nres.status(500).json({ error: error.toJSON() });\n```\n\n### .code\n\nErrors extended from `HelpfulError` support declarative error codes via the `.code` property. This enables machine-readable error classification for api responses, logs, and metrics.\n\n#### default codes\n\nThe built-in error classes have default http codes:\n- `BadRequestError` has `{ http: 400 }`\n- `UnexpectedCodePathError` has `{ http: 500 }`\n- `HelpfulError` has no default code\n\n```ts\nconst error = new BadRequestError('invalid input');\nconsole.log(error.code?.http); // 400\nconsole.log(error.code?.slug); // undefined\n```\n\n#### custom error classes with baked-in codes\n\nDefine error classes with baked-in codes for consistent classification:\n\n```ts\nclass DeclinedPaymentError extends BadRequestError {\n  public static code = { http: 402, slug: 'DECLINED:PAYMENT' } as const;\n}\n\nconst error = new DeclinedPaymentError('card rejected');\nconsole.log(error.code); // { http: 402, slug: 'DECLINED:PAYMENT' }\n```\n\n#### instance-level code override\n\nSupply a code at throw time for context-specific classification:\n\n```ts\nthrow new BadRequestError('email already registered', {\n  code: { slug: 'DUPLICATE_EMAIL' },\n  email,\n});\n\n// error.code => { http: 400, slug: 'DUPLICATE_EMAIL' }\n```\n\nInstance codes merge with class codes — instance fields override class fields:\n\n```ts\nthrow new BadRequestError('validation failed', {\n  code: { http: 422, slug: 'VALIDATION' },\n});\n\n// error.code => { http: 422, slug: 'VALIDATION' }\n```\n\n#### opt-out with code: null\n\nExplicitly clear any inherited code:\n\n```ts\nconst error = new DeclinedPaymentError('card rejected', { code: null });\nconsole.log(error.code); // undefined\n```\n\n#### serialization\n\nError codes only appear in JSON serialization when a slug is present — this prevents log spam with default http codes and ensures opt-in only behavior:\n\n```ts\n// no slug => code omitted from JSON\nconst error1 = new BadRequestError('test');\nJSON.stringify(error1); // no \"code\" field\n\n// slug present => code included in JSON\nconst error2 = new BadRequestError('test', { code: { slug: 'CUSTOM' } });\nJSON.stringify(error2); // includes { \"code\": { \"http\": 400, \"slug\": \"CUSTOM\" } }\n```\n\n#### api handler example\n\n```ts\napp.use((err, req, res, next) => {\n  const code = err.code ?? { http: 500 };\n  res.status(code.http ?? 500).json({\n    error: err.message,\n    code: code.slug,\n  });\n});\n```\n\n### isHelpfulError\n\nThe `isHelpfulError` guard answers \"is this one of ours?\" — even across duplicate copies of `helpful-errors` in a dependency tree, where `instanceof` silently fails.\n\nWhen two copies of the package are installed (e.g. a nested dependency has its own copy), each copy defines its own distinct classes. An error thrown from one copy is **not** an `instanceof` the `HelpfulError` of the other copy — so `error instanceof ConstraintError` returns `false` across that boundary, and error handlers misclassify.\n\n`isHelpfulError` sidesteps this: every `HelpfulError` is stamped, in its base constructor, with a realm-global brand (`Symbol.for('helpful-errors')`). Because the brand lives in the shared symbol registry — not on any one copy's class — the guard returns `true` regardless of which copy minted the error. The brand is also minification-proof (it keys off a registered symbol, not a class name).\n\n```ts\nimport { isHelpfulError } from 'helpful-errors';\n\n// http error middleware — classify correctly across copy boundaries\napp.use((err, req, res, next) => {\n  if (isHelpfulError(err)) {\n    return res.status(err.code?.http ?? 500).json(err.toJSON());\n  }\n  return res.status(500).json({ message: 'internal error' });\n});\n```\n\nIt accepts `unknown`, so a `catch (e: unknown)` needs no pre-cast, and narrows to `HelpfulError` on success:\n\n```ts\ntry {\n  await runTask();\n} catch (err: unknown) {\n  if (isHelpfulError(err)) {\n    // err is narrowed to HelpfulError — .code, .metadata, .redact() are all safe\n    console.log(err.code);\n  }\n}\n```\n\n#### version gate\n\nEach copy stamps its own package version onto the brand. Pass a minimum version to assert \"the copy that minted this error was at least version X\" — useful to gate on a capability added in a specific release:\n\n```ts\n// true only if branded AND the stamped version is >= '1.8.0'\nif (isHelpfulError(err, { version: { min: '1.8.0' } })) {\n  // safe to rely on behavior introduced at 1.8.0\n}\n```\n\nThe compare is semver-aware (numeric `major.minor.patch`, not lexicographic). A non-branded value, or a stamped version below `min`, returns `false` — the guard never throws.\n\n### getHelpfulErrorVersion\n\nRead the stamped version off any branded error, or `undefined` for a non-branded value:\n\n```ts\nimport { getHelpfulErrorVersion } from 'helpful-errors';\n\ngetHelpfulErrorVersion(new HelpfulError('boom')); // e.g. '1.8.0'\ngetHelpfulErrorVersion(new Error('plain'));       // undefined\ngetHelpfulErrorVersion(null);                     // undefined\n```\n\n#### scope + caveats\n\n- **in-process only**: \"global\" means realm-global within one process. The brand does not survive JSON serialize/revive (a revived error is a plain object with no live brand) or cross-realm transfer (`worker_threads`, `vm`), so `isHelpfulError` returns `false` for those.\n- **version floor for detection**: a copy of `helpful-errors` older than the release that introduced the brand never stamps a brand, so `isHelpfulError` cannot detect errors it mints. Cross-copy detection requires all copies to be on a version at or above the one that introduced the brand.\n","readmeFilename":"readme.md"}