{"_id":"@1gr14/error0","_rev":"13-48516312994aa24c26c0e7e833dcd324","name":"@1gr14/error0","dist-tags":{"latest":"0.4.8"},"versions":{"0.0.0":{"name":"@1gr14/error0","version":"0.0.0","license":"MIT","_id":"@1gr14/error0@0.0.0","maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"dist":{"shasum":"8e06f4efb939e0af642af7096acd72cf7bfe3d65","tarball":"https://registry.npmjs.org/@1gr14/error0/-/error0-0.0.0.tgz","fileCount":1,"integrity":"sha512-c81wE4Anry+6x7vQuWGqNWwISq5u4caSmvH664cz+U6LZPMPH25tHtf29XRpoMpKjUzoMCnLPMuCuT6uBwfO6g==","signatures":[{"sig":"MEQCIAsK657QNc7XyK5EAZ1lyzGY44ga6UI/I/z28xwQLAUjAiBfs31p9wsQvmhEKUzu8/TSf97j3ekZJLbFSAJWyrFccw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137},"_npmUser":{"name":"iserdmi","email":"iserdmi@gmail.com"},"_npmVersion":"10.9.4","description":"Placeholder — real release follows via CI.","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/error0_0.0.0_1780906434898_0.11363647323373804","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@1gr14/error0","version":"0.1.0","keywords":["error","errors","error-handling","exception","typescript","plugin","serializable","cause","stack","http-error","status-code"],"author":{"url":"https://1gr14.dev","name":"Sergei Dmitriev"},"license":"MIT","_id":"@1gr14/error0@0.1.0","maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"homepage":"https://github.com/1gr14/error0#readme","bugs":{"url":"https://github.com/1gr14/error0/issues"},"dist":{"shasum":"5ef10cd0f70c297261284b10a174ff9545069f3d","tarball":"https://registry.npmjs.org/@1gr14/error0/-/error0-0.1.0.tgz","fileCount":29,"integrity":"sha512-sDErcOmQD9zGaD731gGB8sX0XfknQICstsFr4zwM5x576OF8q1sx5XWkWmTzYS25r+m+btOmSe1AbjKBiBvJPQ==","signatures":[{"sig":"MEUCIFg1UE3ERS/g8e/Sluh6CQjCm1b8Zw+x2owcmzauYmOHAiEA0o/U7WMbmLgTgh0WQUV+RKwqZFd2hNCZQyUJJ+GBXUg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1gr14%2ferror0@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93747},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugins/*":{"types":"./dist/plugins/*.d.ts","import":"./dist/plugins/*.js"}},"funding":"https://1gr14.dev/support","gitHead":"52e6da4a318807af34006fe6ffe96439ed7a7a42","scripts":{"dev":"tsc-watch --preserveWatchOutput --project tsconfig.build.json","lint":"bun run lint:fix .","test":"bun test ./src","build":"tsdown","clean":"rimraf dist && rimraf dist-npm && rimraf node_modules/.cache","smoke":"node scripts/smoke.mjs","types":"bun run types:dev","format":"bun run format:fix .","dev:npm":"tsc-watch --preserveWatchOutput --project tsconfig.build.json --onSuccess 'bun run pack:dist'","prepare":"husky || true","test:us":"bun test ./src --update-snapshots","typesgo":"tsgo --noEmit","lint:fix":"bun run lint:base --fix","pack:dry":"npm pack --dry-run","lint:base":"eslint --cache --cache-location node_modules/.cache/eslint/.eslintcache","pack:dist":"mkdir -p dist-npm && npm pack --pack-destination dist-npm --silent && cd dist-npm && tar -xzf *.tgz && cp -r package/* . && rm -rf package && rm *.tgz","types:dev":"tsc --noEmit","format:fix":"bun run format:base --write","test:watch":"bun test --watch","format:base":"prettier --cache --cache-location node_modules/.cache/prettier/.prettiercache --ignore-path .gitignore --ignore-path .prettierignore","types:build":"tsc --noEmit --project tsconfig.build.json","check:package":"publint && attw --pack . --profile esm-only","test:coverage":"bun test ./src --coverage","pack:dist:hard":"rimraf dist-npm && bun run pack:dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6af16fdf-d3d8-45c5-a4ec-57c9e815d415"}},"repository":{"url":"git+https://github.com/1gr14/error0.git","type":"git"},"_npmVersion":"11.10.1","description":"A composable, plugin-based Error class for TypeScript — typed metadata, cause chains, HTTP/status helpers, and full serialize/deserialize round-trips.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"":["./dist/index.d.ts"],"plugins/*":["./dist/plugins/*"]}},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.3","axios":"^1.16.1","husky":"^9.1.7","eslint":"^10.4.1","lodash":"^4.18.1","rimraf":"^6.1.3","tsdown":"^0.22.1","publint":"^0.3.21","prettier":"^3.8.3","cross-env":"^10.1.0","tsc-watch":"^7.2.0","@types/bun":"^1.3.14","typescript":"^5.9.3","@types/node":"^20.0.0","lint-staged":"^17.0.7","@types/lodash":"^4.17.24","@commitlint/cli":"^21.0.2","semantic-release":"^25.0.3","typescript-eslint":"^8.60.1","@arethetypeswrong/cli":"^0.18.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","prettier-plugin-jsdoc":"^1.8.1","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^12.0.8","@typescript/native-preview":"^7.0.0-dev.20260602.1","@semantic-release/changelog":"^6.0.3","eslint-plugin-no-only-tests":"^3.4.0","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/error0_0.1.0_1780906662459_0.7248980333419921","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@1gr14/error0","version":"0.2.0","keywords":["error","errors","error-handling","exception","typescript","plugin","serializable","cause","stack","http-error","status-code"],"author":{"url":"https://1gr14.dev","name":"Sergei Dmitriev"},"license":"MIT","_id":"@1gr14/error0@0.2.0","maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"homepage":"https://github.com/1gr14/error0#readme","bugs":{"url":"https://github.com/1gr14/error0/issues"},"dist":{"shasum":"85c68e0beeacd9c729604de5d303ed0fb5a39b44","tarball":"https://registry.npmjs.org/@1gr14/error0/-/error0-0.2.0.tgz","fileCount":31,"integrity":"sha512-cB3vHM4n9lNisKfh/CcerZFi2x/Wjw2MmTXBpz0PKlz3tO3cFqHmkPgjhlc0bqmhndnBK8oajNUbTjVJGYTLIQ==","signatures":[{"sig":"MEQCIFmgQB7+xTkd35xidm1ebxn2L3gWy8XpzpcxtyACGxD2AiACMUM4KTDlTtR075TnuXS50DY9WSCnbVR36OivvVVqUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1gr14%2ferror0@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":97854},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugins/*":{"types":"./dist/plugins/*.d.ts","import":"./dist/plugins/*.js"}},"funding":"https://1gr14.dev/support","gitHead":"9b8227d6b229f9b34784dd4812e9f62fa43e64f2","scripts":{"dev":"tsc-watch --preserveWatchOutput --project tsconfig.build.json","lint":"bun run lint:fix .","test":"bun test ./src","build":"tsdown","clean":"rimraf dist && rimraf dist-npm && rimraf node_modules/.cache","smoke":"node scripts/smoke.mjs","types":"bun run types:dev","format":"bun run format:fix .","dev:npm":"tsc-watch --preserveWatchOutput --project tsconfig.build.json --onSuccess 'bun run pack:dist'","prepare":"husky || true","test:us":"bun test ./src --update-snapshots","typesgo":"tsgo --noEmit","lint:fix":"bun run lint:base --fix","pack:dry":"npm pack --dry-run","lint:base":"eslint --cache --cache-location node_modules/.cache/eslint/.eslintcache","pack:dist":"mkdir -p dist-npm && npm pack --pack-destination dist-npm --silent && cd dist-npm && tar -xzf *.tgz && cp -r package/* . && rm -rf package && rm *.tgz","types:dev":"tsc --noEmit","format:fix":"bun run format:base --write","test:watch":"bun test --watch","format:base":"prettier --cache --cache-location node_modules/.cache/prettier/.prettiercache --ignore-path .gitignore --ignore-path .prettierignore","types:build":"tsc --noEmit --project tsconfig.build.json","check:package":"publint && attw --pack . --profile esm-only","test:coverage":"bun test ./src --coverage","pack:dist:hard":"rimraf dist-npm && bun run pack:dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6af16fdf-d3d8-45c5-a4ec-57c9e815d415"}},"repository":{"url":"git+https://github.com/1gr14/error0.git","type":"git"},"_npmVersion":"11.10.1","description":"A composable, plugin-based Error class for TypeScript — typed metadata, cause chains, HTTP/status helpers, and full serialize/deserialize round-trips.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"":["./dist/index.d.ts"],"plugins/*":["./dist/plugins/*"]}},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.3","axios":"^1.16.1","husky":"^9.1.7","eslint":"^10.4.1","lodash":"^4.18.1","rimraf":"^6.1.3","tsdown":"^0.22.1","publint":"^0.3.21","prettier":"^3.8.3","cross-env":"^10.1.0","tsc-watch":"^7.2.0","@types/bun":"^1.3.14","typescript":"^5.9.3","@types/node":"^20.0.0","lint-staged":"^17.0.7","@types/lodash":"^4.17.24","@commitlint/cli":"^21.0.2","semantic-release":"^25.0.3","typescript-eslint":"^8.60.1","@arethetypeswrong/cli":"^0.18.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","prettier-plugin-jsdoc":"^1.8.1","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^12.0.8","@typescript/native-preview":"^7.0.0-dev.20260602.1","@semantic-release/changelog":"^6.0.3","eslint-plugin-no-only-tests":"^3.4.0","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/error0_0.2.0_1781071529611_0.20908914500502274","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@1gr14/error0","version":"0.3.0","keywords":["error","errors","error-handling","exception","typescript","plugin","serializable","cause","stack","http-error","status-code"],"author":{"url":"https://1gr14.dev","name":"Sergei Dmitriev"},"license":"MIT","_id":"@1gr14/error0@0.3.0","maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"homepage":"https://github.com/1gr14/error0#readme","bugs":{"url":"https://github.com/1gr14/error0/issues"},"dist":{"shasum":"933c0cfea7b70df260b527640871959293cb7cea","tarball":"https://registry.npmjs.org/@1gr14/error0/-/error0-0.3.0.tgz","fileCount":31,"integrity":"sha512-ICH3sshH+WLWT+FoarMtG3SGcQWjS867pVaVSFfuoZhjL8Rq9bDz5rIkJV83OIxW01T1NbZk3XjvJ/Om6UTgdQ==","signatures":[{"sig":"MEQCIGPmzBQTs2H50hH+4Ue6DYb3HJ14MIl6p2Ed1EPqwrdkAiA6LxP5RQxdel6idqK6c1JhYPVr4slTabZlti+UJAP54Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1gr14%2ferror0@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":100961},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugins/*":{"types":"./dist/plugins/*.d.ts","import":"./dist/plugins/*.js"}},"funding":"https://1gr14.dev/support","gitHead":"c6cc11945fa1e75d4d70e1acd269f1c352d1effa","scripts":{"dev":"tsc-watch --preserveWatchOutput --project tsconfig.build.json","lint":"bun run lint:fix .","test":"bun test ./src","build":"tsdown","clean":"rimraf dist && rimraf dist-npm && rimraf node_modules/.cache","smoke":"node scripts/smoke.mjs","types":"bun run types:dev","format":"bun run format:fix .","dev:npm":"tsc-watch --preserveWatchOutput --project tsconfig.build.json --onSuccess 'bun run pack:dist'","prepare":"husky || true","test:us":"bun test ./src --update-snapshots","typesgo":"tsgo --noEmit","lint:fix":"bun run lint:base --fix","pack:dry":"npm pack --dry-run","lint:base":"eslint --cache --cache-location node_modules/.cache/eslint/.eslintcache","pack:dist":"mkdir -p dist-npm && npm pack --pack-destination dist-npm --silent && cd dist-npm && tar -xzf *.tgz && cp -r package/* . && rm -rf package && rm *.tgz","types:dev":"tsc --noEmit","format:fix":"bun run format:base --write","test:watch":"bun test --watch","format:base":"prettier --cache --cache-location node_modules/.cache/prettier/.prettiercache --ignore-path .gitignore --ignore-path .prettierignore","types:build":"tsc --noEmit --project tsconfig.build.json","check:package":"publint && attw --pack . --profile esm-only","test:coverage":"bun test ./src --coverage","pack:dist:hard":"rimraf dist-npm && bun run pack:dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6af16fdf-d3d8-45c5-a4ec-57c9e815d415"}},"repository":{"url":"git+https://github.com/1gr14/error0.git","type":"git"},"_npmVersion":"11.10.1","description":"A composable, plugin-based Error class for TypeScript — typed metadata, cause chains, HTTP/status helpers, and full serialize/deserialize round-trips.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"":["./dist/index.d.ts"],"plugins/*":["./dist/plugins/*"]}},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.3","axios":"^1.16.1","husky":"^9.1.7","eslint":"^10.4.1","lodash":"^4.18.1","rimraf":"^6.1.3","tsdown":"^0.22.1","publint":"^0.3.21","prettier":"^3.8.3","cross-env":"^10.1.0","tsc-watch":"^7.2.0","@types/bun":"^1.3.14","typescript":"^5.9.3","@types/node":"^20.0.0","lint-staged":"^17.0.7","@types/lodash":"^4.17.24","@commitlint/cli":"^21.0.2","semantic-release":"^25.0.3","typescript-eslint":"^8.60.1","@arethetypeswrong/cli":"^0.18.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","prettier-plugin-jsdoc":"^1.8.1","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^12.0.8","@typescript/native-preview":"^7.0.0-dev.20260602.1","@semantic-release/changelog":"^6.0.3","eslint-plugin-no-only-tests":"^3.4.0","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/error0_0.3.0_1781198275732_0.8134734632903671","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@1gr14/error0","version":"0.4.0","keywords":["error","errors","error-handling","exception","typescript","plugin","serializable","cause","stack","http-error","status-code"],"author":{"url":"https://1gr14.dev","name":"Sergei Dmitriev"},"license":"MIT","_id":"@1gr14/error0@0.4.0","maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"homepage":"https://github.com/1gr14/error0#readme","bugs":{"url":"https://github.com/1gr14/error0/issues"},"dist":{"shasum":"8758d895cbc584422c6661bda219b3d44aa5ae8d","tarball":"https://registry.npmjs.org/@1gr14/error0/-/error0-0.4.0.tgz","fileCount":33,"integrity":"sha512-HM8+CJ6+nmlcl1fjozRmVmeABGdl1DRDEpgkHuSkEXl4u3xLVc886hJYmMxfaEiRc3f1KNna4BbEIk/xTE0Lmg==","signatures":[{"sig":"MEQCIDstTI1V9PSRMT6x58Yfqs/+yITfE2TeG2HFkAooaxc4AiAxzs239ndT/YQ4K/mSJVHrL4iRLTnZmX587GjoCjGhRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1gr14%2ferror0@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":101969},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugins/*":{"types":"./dist/plugins/*.d.ts","import":"./dist/plugins/*.js"}},"funding":"https://1gr14.dev/support","gitHead":"be15e60a6d9aa8b2cabc69b34670663eb076da6d","scripts":{"dev":"tsc-watch --preserveWatchOutput --project tsconfig.build.json","lint":"bun run lint:fix .","test":"bun test ./src","build":"tsdown","clean":"rimraf dist && rimraf dist-npm && rimraf node_modules/.cache","smoke":"node scripts/smoke.mjs","types":"bun run types:dev","format":"bun run format:fix .","dev:npm":"tsc-watch --preserveWatchOutput --project tsconfig.build.json --onSuccess 'bun run pack:dist'","prepare":"husky || true","test:us":"bun test ./src --update-snapshots","typesgo":"tsgo --noEmit","lint:fix":"bun run lint:base --fix","pack:dry":"npm pack --dry-run","lint:base":"eslint --cache --cache-location node_modules/.cache/eslint/.eslintcache","pack:dist":"mkdir -p dist-npm && npm pack --pack-destination dist-npm --silent && cd dist-npm && tar -xzf *.tgz && cp -r package/* . && rm -rf package && rm *.tgz","types:dev":"tsc --noEmit","format:fix":"bun run format:base --write","test:watch":"bun test --watch","format:base":"prettier --cache --cache-location node_modules/.cache/prettier/.prettiercache --ignore-path .gitignore --ignore-path .prettierignore","types:build":"tsc --noEmit --project tsconfig.build.json","check:package":"publint && attw --pack . --profile esm-only","test:coverage":"bun test ./src --coverage","pack:dist:hard":"rimraf dist-npm && bun run pack:dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6af16fdf-d3d8-45c5-a4ec-57c9e815d415"}},"repository":{"url":"git+https://github.com/1gr14/error0.git","type":"git"},"_npmVersion":"11.10.1","description":"A composable, plugin-based Error class for TypeScript — typed metadata, cause chains, HTTP/status helpers, and full serialize/deserialize round-trips.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"":["./dist/index.d.ts"],"plugins/*":["./dist/plugins/*"]}},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.3","axios":"^1.16.1","husky":"^9.1.7","eslint":"^10.4.1","lodash":"^4.18.1","rimraf":"^6.1.3","tsdown":"^0.22.1","publint":"^0.3.21","prettier":"^3.8.3","cross-env":"^10.1.0","tsc-watch":"^7.2.0","@types/bun":"^1.3.14","typescript":"^5.9.3","@types/node":"^20.0.0","lint-staged":"^17.0.7","@types/lodash":"^4.17.24","@commitlint/cli":"^21.0.2","semantic-release":"^25.0.3","typescript-eslint":"^8.60.1","@arethetypeswrong/cli":"^0.18.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","prettier-plugin-jsdoc":"^1.8.1","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^12.0.8","@typescript/native-preview":"^7.0.0-dev.20260602.1","@semantic-release/changelog":"^6.0.3","eslint-plugin-no-only-tests":"^3.4.0","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/error0_0.4.0_1781200771994_0.8990008694772864","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@1gr14/error0","version":"0.4.1","keywords":["error","errors","error-handling","exception","typescript","plugin","serializable","cause","stack","http-error","status-code"],"author":{"url":"https://1gr14.dev","name":"Sergei Dmitriev"},"license":"MIT","_id":"@1gr14/error0@0.4.1","maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"homepage":"https://github.com/1gr14/error0#readme","bugs":{"url":"https://github.com/1gr14/error0/issues"},"dist":{"shasum":"77aa9a8d873eee5f0ad7aad203717d7af2e1e845","tarball":"https://registry.npmjs.org/@1gr14/error0/-/error0-0.4.1.tgz","fileCount":35,"integrity":"sha512-S8ZLIQjbEtQyiivLPQXQ1d3m0yiTB76l98UgfYE56vR23YvXs8kf7Ed5mohU+GMt+jkfZ8vaHorwzDMb74o9aA==","signatures":[{"sig":"MEYCIQCKkqDVz/rQB9cjLHqji2yHP6ZJkaMwaG6NvO6afUaN5AIhALyvn/6u8WTLPqMcdVC6z7g77avsPkMMXQUlndV/Bu14","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1gr14%2ferror0@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":103813},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugins/*":{"types":"./dist/plugins/*.d.ts","import":"./dist/plugins/*.js"}},"funding":"https://1gr14.dev/support","gitHead":"3df3648d61cfa128f5d03cca2a5cb74aab277991","scripts":{"dev":"tsc-watch --preserveWatchOutput --project tsconfig.build.json","lint":"bun run lint:fix .","test":"bun test ./src","build":"tsdown","clean":"rimraf dist && rimraf dist-npm && rimraf node_modules/.cache","smoke":"node scripts/smoke.mjs","types":"bun run types:dev","format":"bun run format:fix .","dev:npm":"tsc-watch --preserveWatchOutput --project tsconfig.build.json --onSuccess 'bun run pack:dist'","prepare":"husky || true","test:us":"bun test ./src --update-snapshots","typesgo":"tsgo --noEmit","lint:fix":"bun run lint:base --fix","pack:dry":"npm pack --dry-run","lint:base":"eslint --cache --cache-location node_modules/.cache/eslint/.eslintcache","pack:dist":"mkdir -p dist-npm && npm pack --pack-destination dist-npm --silent && cd dist-npm && tar -xzf *.tgz && cp -r package/* . && rm -rf package && rm *.tgz","types:dev":"tsc --noEmit","format:fix":"bun run format:base --write","test:watch":"bun test --watch","format:base":"prettier --cache --cache-location node_modules/.cache/prettier/.prettiercache --ignore-path .gitignore --ignore-path .prettierignore","types:build":"tsc --noEmit --project tsconfig.build.json","check:package":"publint && attw --pack . --profile esm-only","test:coverage":"bun test ./src --coverage","pack:dist:hard":"rimraf dist-npm && bun run pack:dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6af16fdf-d3d8-45c5-a4ec-57c9e815d415"}},"repository":{"url":"git+https://github.com/1gr14/error0.git","type":"git"},"_npmVersion":"11.10.1","description":"A composable, plugin-based Error class for TypeScript — typed metadata, cause chains, HTTP/status helpers, and full serialize/deserialize round-trips.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"":["./dist/index.d.ts"],"plugins/*":["./dist/plugins/*"]}},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.3","axios":"^1.16.1","husky":"^9.1.7","eslint":"^10.4.1","lodash":"^4.18.1","rimraf":"^6.1.3","tsdown":"^0.22.1","publint":"^0.3.21","prettier":"^3.8.3","cross-env":"^10.1.0","tsc-watch":"^7.2.0","@types/bun":"^1.3.14","typescript":"^5.9.3","@types/node":"^20.0.0","lint-staged":"^17.0.7","@types/lodash":"^4.17.24","@commitlint/cli":"^21.0.2","semantic-release":"^25.0.3","typescript-eslint":"^8.60.1","@arethetypeswrong/cli":"^0.18.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","prettier-plugin-jsdoc":"^1.8.1","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^12.0.8","@typescript/native-preview":"^7.0.0-dev.20260602.1","@semantic-release/changelog":"^6.0.3","eslint-plugin-no-only-tests":"^3.4.0","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/error0_0.4.1_1781514995802_0.18254560125256325","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@1gr14/error0","version":"0.4.2","keywords":["error","errors","error-handling","exception","typescript","plugin","serializable","cause","stack","http-error","status-code"],"author":{"url":"https://1gr14.dev","name":"Sergei Dmitriev"},"license":"MIT","_id":"@1gr14/error0@0.4.2","maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"homepage":"https://github.com/1gr14/error0#readme","bugs":{"url":"https://github.com/1gr14/error0/issues"},"dist":{"shasum":"45c4bebbece5d20cd7fd6049d079d925924c1d6a","tarball":"https://registry.npmjs.org/@1gr14/error0/-/error0-0.4.2.tgz","fileCount":35,"integrity":"sha512-z/ovNy97XeXDaTPUHyVxIslFq+PuRm93kZDC7vC8iPfcqtDBGJ1pnrwaVqU8WU5fs+ZjqSdq/GtB56VstL7sjw==","signatures":[{"sig":"MEQCIHXgKvR/Z7E/VUV+HOpR80iHEj7Je5ebaxeGxvm1U8X1AiBVKJ1CK2BcDrhzOjQQd2pntsR8jPnXkn/1pG265hjI1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1gr14%2ferror0@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":103766},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugins/*":{"types":"./dist/plugins/*.d.ts","import":"./dist/plugins/*.js"}},"funding":"https://1gr14.dev/support","gitHead":"bf1f56440f2a7f2c185d58276e2f61740b83c54c","scripts":{"dev":"tsc-watch --preserveWatchOutput --project tsconfig.build.json","lint":"bun run lint:fix .","test":"bun test ./src","build":"tsdown","clean":"rimraf dist && rimraf dist-npm && rimraf node_modules/.cache","smoke":"node scripts/smoke.mjs","types":"bun run types:dev","format":"bun run format:fix .","dev:npm":"tsc-watch --preserveWatchOutput --project tsconfig.build.json --onSuccess 'bun run pack:dist'","prepare":"husky || true","release":"bun run scripts/release.ts","test:us":"bun test ./src --update-snapshots","typesgo":"tsgo --noEmit","lint:fix":"bun run lint:base --fix","pack:dry":"npm pack --dry-run","lint:base":"eslint --cache --cache-location node_modules/.cache/eslint/.eslintcache","pack:dist":"mkdir -p dist-npm && npm pack --pack-destination dist-npm --silent && cd dist-npm && tar -xzf *.tgz && cp -r package/* . && rm -rf package && rm *.tgz","types:dev":"tsc --noEmit","format:fix":"bun run format:base --write","test:watch":"bun test --watch","format:base":"prettier --cache --cache-location node_modules/.cache/prettier/.prettiercache --ignore-path .gitignore --ignore-path .prettierignore","types:build":"tsc --noEmit --project tsconfig.build.json","check:channel":"bun run scripts/check-channel.ts","check:package":"publint && attw --pack . --profile esm-only","test:coverage":"bun test ./src --coverage","pack:dist:hard":"rimraf dist-npm && bun run pack:dist","publish:packages":"bun run scripts/publish.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6af16fdf-d3d8-45c5-a4ec-57c9e815d415"}},"repository":{"url":"git+https://github.com/1gr14/error0.git","type":"git"},"_npmVersion":"11.17.0","description":"A composable, plugin-based Error class for TypeScript — typed metadata, cause chains, HTTP/status helpers, and full serialize/deserialize round-trips.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"":["./dist/index.d.ts"],"plugins/*":["./dist/plugins/*"]}},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.3","axios":"^1.16.1","husky":"^9.1.7","eslint":"^10.4.1","lodash":"^4.18.1","rimraf":"^6.1.3","tsdown":"^0.22.1","publint":"^0.3.21","prettier":"^3.8.3","cross-env":"^10.1.0","tsc-watch":"^7.2.0","@types/bun":"^1.3.14","typescript":"^5.9.3","@types/node":"^20.0.0","lint-staged":"^17.0.7","@types/lodash":"^4.17.24","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.60.1","@arethetypeswrong/cli":"^0.18.3","prettier-plugin-jsdoc":"^1.8.1","eslint-config-prettier":"^10.1.8","@typescript/native-preview":"^7.0.0-dev.20260602.1","eslint-plugin-no-only-tests":"^3.4.0","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/error0_0.4.2_1781520066008_0.23623620159773884","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@1gr14/error0","version":"0.4.3","keywords":["error","errors","error-handling","exception","typescript","plugin","serializable","cause","stack","http-error","status-code"],"author":{"url":"https://1gr14.dev","name":"Sergei Dmitriev"},"license":"MIT","_id":"@1gr14/error0@0.4.3","maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"homepage":"https://github.com/1gr14/error0#readme","bugs":{"url":"https://github.com/1gr14/error0/issues"},"dist":{"shasum":"425a7994b71b7619e77b9aac2c68bbeaa8fc9baa","tarball":"https://registry.npmjs.org/@1gr14/error0/-/error0-0.4.3.tgz","fileCount":35,"integrity":"sha512-3a1CeDcNrH/s5aDeqTib+SJZoboHsGPpXoZOrIRdctHdNkoTQtuk2XqdvlK3oDaj1y8M3V6NX6SBOxSV/ggZyw==","signatures":[{"sig":"MEQCIA8XQ899UuIMPTNg7bjR3/m5wWTFaz1vj7MMSRyTKiceAiBAeoReA8BhkheH+iEOpt6+OzyX48RYAr2pnXnq8PbtZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1gr14%2ferror0@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":102726},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugins/*":{"types":"./dist/plugins/*.d.ts","import":"./dist/plugins/*.js"}},"funding":"https://1gr14.dev/support","gitHead":"df3c898ee15159fd0f15e034d17e1ab3b0dc5282","scripts":{"dev":"tsc-watch --preserveWatchOutput --project tsconfig.build.json","lint":"bun run lint:fix .","test":"bun test ./src","build":"tsdown","clean":"rimraf dist && rimraf dist-npm && rimraf node_modules/.cache","smoke":"node scripts/smoke.mjs","types":"node node_modules/typescript-7/bin/tsc --noEmit","format":"bun run format:fix .","dev:npm":"tsc-watch --preserveWatchOutput --project tsconfig.build.json --onSuccess 'bun run pack:dist'","prepare":"husky || true","release":"bun run scripts/release.ts","test:us":"bun test ./src --update-snapshots","types:6":"node node_modules/typescript/bin/tsc --noEmit","lint:fix":"bun run lint:base --fix","pack:dry":"npm pack --dry-run","lint:base":"eslint --cache --cache-location node_modules/.cache/eslint/.eslintcache","pack:dist":"mkdir -p dist-npm && npm pack --pack-destination dist-npm --silent && cd dist-npm && tar -xzf *.tgz && cp -r package/* . && rm -rf package && rm *.tgz","format:fix":"bun run format:base --write","test:watch":"bun test --watch","format:base":"prettier --cache --cache-location node_modules/.cache/prettier/.prettiercache --ignore-path .gitignore --ignore-path .prettierignore","types:build":"node node_modules/typescript/bin/tsc --noEmit --project tsconfig.build.json","check:channel":"bun run scripts/check-channel.ts","check:package":"publint && attw --pack . --profile esm-only","test:coverage":"bun test ./src --coverage","pack:dist:hard":"rimraf dist-npm && bun run pack:dist","publish:packages":"bun run scripts/publish.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6af16fdf-d3d8-45c5-a4ec-57c9e815d415"}},"repository":{"url":"git+https://github.com/1gr14/error0.git","type":"git"},"_npmVersion":"11.17.0","description":"A composable, plugin-based Error class for TypeScript — typed metadata, cause chains, HTTP/status helpers, and full serialize/deserialize round-trips.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"":["./dist/index.d.ts"],"plugins/*":["./dist/plugins/*"]}},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.3","husky":"^9.1.7","eslint":"^10.4.1","rimraf":"^6.1.3","tsdown":"^0.22.1","publint":"^0.3.21","prettier":"^3.8.3","tsc-watch":"^7.2.0","@types/bun":"^1.3.14","typescript":"^6.0.0","@types/node":"^20.0.0","lint-staged":"^17.0.7","typescript-7":"npm:typescript@7.0.1-rc","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.60.1","@arethetypeswrong/cli":"^0.18.3","prettier-plugin-jsdoc":"^1.8.1","eslint-config-prettier":"^10.1.8","eslint-plugin-no-only-tests":"^3.4.0","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/error0_0.4.3_1782131332912_0.3926957921818375","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@1gr14/error0","version":"0.4.4","keywords":["error","errors","error-handling","exception","typescript","plugin","serializable","cause","stack","http-error","status-code"],"author":{"url":"https://1gr14.dev","name":"Sergei Dmitriev"},"license":"MIT","_id":"@1gr14/error0@0.4.4","maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"homepage":"https://github.com/1gr14/error0#readme","bugs":{"url":"https://github.com/1gr14/error0/issues"},"dist":{"shasum":"632a5fdf9d3ea7213a873ab15af9c5ba98d8be2a","tarball":"https://registry.npmjs.org/@1gr14/error0/-/error0-0.4.4.tgz","fileCount":35,"integrity":"sha512-zC0Tdcx3XpoCufkusvCiQuLlfYAyftw71lr8u9CxehImvIZ19Cpue3XKlJRZn/lsQTiK7fENCVAiACp47QvGyg==","signatures":[{"sig":"MEUCICiR0fkQQ5jRYlF/qyAkLesEGy/PGthly4KI5GtkUZTIAiEAtnl4CUHjWdHKCl2fVnsvNUKFzFuKVYSEj+JjLaTGIdE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1gr14%2ferror0@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":107742},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugins/*":{"types":"./dist/plugins/*.d.ts","import":"./dist/plugins/*.js"}},"funding":"https://1gr14.dev/support","gitHead":"17a8fe7aeeda5d6c3202fc247efd2ea3dd7cee35","scripts":{"dev":"tsc-watch --preserveWatchOutput --project tsconfig.build.json","lint":"bun run lint:fix .","test":"bun test ./src","build":"tsdown","clean":"rimraf dist && rimraf dist-npm && rimraf node_modules/.cache","smoke":"node scripts/smoke.mjs","types":"node node_modules/typescript-7/bin/tsc --noEmit","format":"bun run format:fix .","dev:npm":"tsc-watch --preserveWatchOutput --project tsconfig.build.json --onSuccess 'bun run pack:dist'","prepare":"husky || true","release":"bun run scripts/release.ts","test:us":"bun test ./src --update-snapshots","types:6":"node node_modules/typescript/bin/tsc --noEmit","lint:fix":"bun run lint:base --fix","pack:dry":"npm pack --dry-run","lint:base":"eslint --cache --cache-location node_modules/.cache/eslint/.eslintcache","pack:dist":"mkdir -p dist-npm && npm pack --pack-destination dist-npm --silent && cd dist-npm && tar -xzf *.tgz && cp -r package/* . && rm -rf package && rm *.tgz","format:fix":"bun run format:base --write","test:watch":"bun test --watch","format:base":"prettier --cache --cache-location node_modules/.cache/prettier/.prettiercache --ignore-path .gitignore --ignore-path .prettierignore","types:build":"node node_modules/typescript/bin/tsc --noEmit --project tsconfig.build.json","check:channel":"bun run scripts/check-channel.ts","check:package":"publint && attw --pack . --profile esm-only","test:coverage":"bun test ./src --coverage","pack:dist:hard":"rimraf dist-npm && bun run pack:dist","publish:packages":"bun run scripts/publish.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6af16fdf-d3d8-45c5-a4ec-57c9e815d415"}},"repository":{"url":"git+https://github.com/1gr14/error0.git","type":"git"},"_npmVersion":"11.17.0","description":"A composable, plugin-based Error class for TypeScript — typed metadata, cause chains, HTTP/status helpers, and full serialize/deserialize round-trips.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"":["./dist/index.d.ts"],"plugins/*":["./dist/plugins/*"]}},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.3","husky":"^9.1.7","eslint":"^10.4.1","rimraf":"^6.1.3","tsdown":"^0.22.1","publint":"^0.3.21","prettier":"^3.8.3","tsc-watch":"^7.2.0","@types/bun":"^1.3.14","typescript":"^6.0.0","@types/node":"^20.0.0","lint-staged":"^17.0.7","typescript-7":"npm:typescript@7.0.1-rc","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.60.1","@arethetypeswrong/cli":"^0.18.3","prettier-plugin-jsdoc":"^1.8.1","eslint-config-prettier":"^10.1.8","eslint-plugin-no-only-tests":"^3.4.0","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/error0_0.4.4_1782143700808_0.9562086433263095","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@1gr14/error0","version":"0.4.5","keywords":["error","errors","error-handling","exception","typescript","plugin","serializable","cause","stack","http-error","status-code"],"author":{"url":"https://1gr14.dev","name":"Sergei Dmitriev"},"license":"MIT","_id":"@1gr14/error0@0.4.5","maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"homepage":"https://github.com/1gr14/error0#readme","bugs":{"url":"https://github.com/1gr14/error0/issues"},"dist":{"shasum":"b86831a5eeb7d64e565044d8af96701bfc8fe1de","tarball":"https://registry.npmjs.org/@1gr14/error0/-/error0-0.4.5.tgz","fileCount":35,"integrity":"sha512-lfUG3x0KxNTOKW6FvA8q5JaOMerTSj6+nTIYB8SdPVu0N9qu579IiTys+IPNkp/eLIFIIkaxmhsfLAYBq4zwlA==","signatures":[{"sig":"MEQCIBVCYWNEosKDiHcPw9zNruu/Xlqj6rQ4JVXvZEpzj7FMAiAd3pS3ObSAwAo+NiKGYJehDPtZuGUfdRsqpBpgQAs2Yg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1gr14%2ferror0@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":107742},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugins/*":{"types":"./dist/plugins/*.d.ts","import":"./dist/plugins/*.js"}},"funding":"https://1gr14.dev/support","gitHead":"c89be8e3c6e7befa77d6fdbc6fccd2ac0105c37a","scripts":{"dev":"tsc-watch --preserveWatchOutput --project tsconfig.build.json","lint":"bun run lint:fix .","test":"bun test ./src","build":"tsdown","clean":"rimraf dist && rimraf dist-npm && rimraf node_modules/.cache","smoke":"node scripts/smoke.mjs","types":"node node_modules/typescript-7/bin/tsc --noEmit","format":"bun run format:fix .","dev:npm":"tsc-watch --preserveWatchOutput --project tsconfig.build.json --onSuccess 'bun run pack:dist'","prepare":"husky || true","release":"bun run scripts/release.ts","test:us":"bun test ./src --update-snapshots","types:6":"node node_modules/typescript/bin/tsc --noEmit","lint:fix":"bun run lint:base --fix","pack:dry":"npm pack --dry-run","lint:base":"eslint --cache --cache-location node_modules/.cache/eslint/.eslintcache","pack:dist":"mkdir -p dist-npm && npm pack --pack-destination dist-npm --silent && cd dist-npm && tar -xzf *.tgz && cp -r package/* . && rm -rf package && rm *.tgz","format:fix":"bun run format:base --write","test:watch":"bun test --watch","format:base":"prettier --cache --cache-location node_modules/.cache/prettier/.prettiercache --ignore-path .gitignore --ignore-path .prettierignore","types:build":"node node_modules/typescript/bin/tsc --noEmit --project tsconfig.build.json","check:channel":"bun run scripts/check-channel.ts","check:package":"publint && attw --pack . --profile esm-only","test:coverage":"bun test ./src --coverage","pack:dist:hard":"rimraf dist-npm && bun run pack:dist","publish:packages":"bun run scripts/publish.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6af16fdf-d3d8-45c5-a4ec-57c9e815d415"}},"repository":{"url":"git+https://github.com/1gr14/error0.git","type":"git"},"_npmVersion":"11.17.0","description":"A composable, plugin-based Error class for TypeScript — typed metadata, cause chains, HTTP/status helpers, and full serialize/deserialize round-trips.","directories":{},"sideEffects":false,"_nodeVersion":"24.17.0","dependencies":{},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"":["./dist/index.d.ts"],"plugins/*":["./dist/plugins/*"]}},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.3","husky":"^9.1.7","eslint":"^10.4.1","rimraf":"^6.1.3","tsdown":"^0.22.1","publint":"^0.3.21","prettier":"^3.8.3","tsc-watch":"^7.2.0","@types/bun":"^1.3.14","typescript":"^6.0.0","@types/node":"^20.0.0","lint-staged":"^17.0.7","typescript-7":"npm:typescript@7.0.1-rc","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.60.1","@arethetypeswrong/cli":"^0.18.3","prettier-plugin-jsdoc":"^1.8.1","eslint-config-prettier":"^10.1.8","eslint-plugin-no-only-tests":"^3.4.0","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/error0_0.4.5_1782728423662_0.2755773263589143","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@1gr14/error0","version":"0.4.6","keywords":["error","errors","error-handling","exception","typescript","plugin","serializable","cause","stack","http-error","status-code"],"author":{"url":"https://1gr14.dev","name":"Sergei Dmitriev"},"license":"MIT","_id":"@1gr14/error0@0.4.6","maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"homepage":"https://github.com/1gr14/error0#readme","bugs":{"url":"https://github.com/1gr14/error0/issues"},"dist":{"shasum":"8127d7e8d066209e57d88fae534077f70aad762a","tarball":"https://registry.npmjs.org/@1gr14/error0/-/error0-0.4.6.tgz","fileCount":35,"integrity":"sha512-O+zX1mpc2SNheL/wSPRkUbtifHgGwMXpCdajlG85MfKZq1b8Jg9u5rqyOSLQaHTFinAo+/VtgKTAw8zrpS6uDw==","signatures":[{"sig":"MEQCIAEl2b1rUmclQJaOyga965STSyW602xWJoEVw/szMrl/AiAzj+pG6kE4qNG0Nq9iosirbQL52Clu3u5MfZdSQ9Pkdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1gr14%2ferror0@0.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":105141},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugins/*":{"types":"./dist/plugins/*.d.ts","import":"./dist/plugins/*.js"}},"funding":"https://1gr14.dev/support","gitHead":"ea20e43b2b8dd0c347d0934bd3ad27a1ce361f9b","scripts":{"dev":"tsc-watch --preserveWatchOutput --project tsconfig.build.json","lint":"bun run lint:fix .","test":"bun test ./src","build":"tsdown","clean":"rimraf dist && rimraf dist-npm && rimraf node_modules/.cache","smoke":"node scripts/smoke.mjs","types":"node node_modules/typescript-7/bin/tsc --noEmit","format":"bun run format:fix .","dev:npm":"tsc-watch --preserveWatchOutput --project tsconfig.build.json --onSuccess 'bun run pack:dist'","prepare":"husky || true","release":"bun run scripts/release.ts","test:us":"bun test ./src --update-snapshots","types:6":"node node_modules/typescript/bin/tsc --noEmit","lint:fix":"bun run lint:base --fix","pack:dry":"npm pack --dry-run","lint:base":"eslint --cache --cache-location node_modules/.cache/eslint/.eslintcache","pack:dist":"mkdir -p dist-npm && npm pack --pack-destination dist-npm --silent && cd dist-npm && tar -xzf *.tgz && cp -r package/* . && rm -rf package && rm *.tgz","format:fix":"bun run format:base --write","test:watch":"bun test --watch","format:base":"prettier --cache --cache-location node_modules/.cache/prettier/.prettiercache --ignore-path .gitignore --ignore-path .prettierignore","types:build":"node node_modules/typescript/bin/tsc --noEmit --project tsconfig.build.json","check:channel":"bun run scripts/check-channel.ts","check:package":"publint && attw --pack . --profile esm-only","test:coverage":"bun test ./src --coverage","pack:dist:hard":"rimraf dist-npm && bun run pack:dist","publish:packages":"bun run scripts/publish.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6af16fdf-d3d8-45c5-a4ec-57c9e815d415"}},"repository":{"url":"git+https://github.com/1gr14/error0.git","type":"git"},"_npmVersion":"11.18.0","description":"A composable, plugin-based Error class for TypeScript — typed metadata, cause chains, HTTP/status helpers, and full serialize/deserialize round-trips.","directories":{},"sideEffects":false,"_nodeVersion":"24.17.0","dependencies":{},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"":["./dist/index.d.ts"],"plugins/*":["./dist/plugins/*"]}},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.3","husky":"^9.1.7","eslint":"^10.4.1","rimraf":"^6.1.3","tsdown":"^0.22.1","publint":"^0.3.21","prettier":"^3.8.3","tsc-watch":"^7.2.0","@types/bun":"^1.3.14","typescript":"^6.0.0","@types/node":"^20.0.0","lint-staged":"^17.0.7","@point0/core":"^0.1.2","typescript-7":"npm:typescript@7.0.1-rc","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.60.1","@arethetypeswrong/cli":"^0.18.3","prettier-plugin-jsdoc":"^1.8.1","eslint-config-prettier":"^10.1.8","eslint-plugin-no-only-tests":"^3.4.0","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/error0_0.4.6_1782755351846_0.5593811548085383","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@1gr14/error0","version":"0.4.7","keywords":["error","errors","error-handling","exception","typescript","plugin","serializable","cause","stack","http-error","status-code"],"author":{"url":"https://1gr14.dev","name":"Sergei Dmitriev"},"license":"MIT","_id":"@1gr14/error0@0.4.7","maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"homepage":"https://github.com/1gr14/error0#readme","bugs":{"url":"https://github.com/1gr14/error0/issues"},"dist":{"shasum":"69c69936cc2a607fa060f827da21da57806fcf15","tarball":"https://registry.npmjs.org/@1gr14/error0/-/error0-0.4.7.tgz","fileCount":37,"integrity":"sha512-woqhB4vLAotyBHlMwQAceD80JRJV/lRliebHe9bCqaOLGBzlTmNPOW4eT0AqtLyvh5smtw5+X3jca8Nvoq6ZkQ==","signatures":[{"sig":"MEQCIC5mO+Lql2WQW60WFcs+4urqsKHa6Q/UJ6HHgar9YUOoAiA/MMcSNUJeOTgf+FZl2OmYIsI+VS5zN5U8gzpcBqXj8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1gr14%2ferror0@0.4.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":109217},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"bun":">=1.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugins/*":{"types":"./dist/plugins/*.d.ts","import":"./dist/plugins/*.js"}},"funding":"https://1gr14.dev/support","gitHead":"bf3bd0c8c6133400ced3fa09fd4861d5d17d7fc4","scripts":{"dev":"tsc-watch --preserveWatchOutput --project tsconfig.build.json","lint":"bun run lint:fix .","test":"bun test ./src","build":"tsdown","clean":"rimraf dist && rimraf dist-npm && rimraf node_modules/.cache","smoke":"node scripts/smoke.mjs","types":"node node_modules/typescript-7/bin/tsc --noEmit","format":"bun run format:fix .","dev:npm":"tsc-watch --preserveWatchOutput --project tsconfig.build.json --onSuccess 'bun run pack:dist'","prepare":"husky || true","release":"bun run scripts/release.ts","test:us":"bun test ./src --update-snapshots","types:6":"node node_modules/typescript/bin/tsc --noEmit","lint:fix":"bun run lint:base --fix","pack:dry":"npm pack --dry-run","lint:base":"eslint --cache --cache-location node_modules/.cache/eslint/.eslintcache","pack:dist":"mkdir -p dist-npm && npm pack --pack-destination dist-npm --silent && cd dist-npm && tar -xzf *.tgz && cp -r package/* . && rm -rf package && rm *.tgz","format:fix":"bun run format:base --write","test:watch":"bun test --watch","format:base":"prettier --cache --cache-location node_modules/.cache/prettier/.prettiercache --ignore-path .gitignore --ignore-path .prettierignore","types:build":"node node_modules/typescript/bin/tsc --noEmit --project tsconfig.build.json","check:channel":"bun run scripts/check-channel.ts","check:package":"publint && attw --pack . --profile esm-only","test:coverage":"bun test ./src --coverage","pack:dist:hard":"rimraf dist-npm && bun run pack:dist","publish:packages":"bun run scripts/publish.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6af16fdf-d3d8-45c5-a4ec-57c9e815d415"}},"repository":{"url":"git+https://github.com/1gr14/error0.git","type":"git"},"_npmVersion":"11.18.0","description":"A composable, plugin-based Error class for TypeScript — typed metadata, cause chains, HTTP/status helpers, and full serialize/deserialize round-trips.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"":["./dist/index.d.ts"],"plugins/*":["./dist/plugins/*"]}},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.3","husky":"^9.1.7","eslint":"^10.4.1","rimraf":"^6.1.3","tsdown":"^0.22.1","publint":"^0.3.21","prettier":"^3.8.3","tsc-watch":"^7.2.0","@types/bun":"^1.3.14","typescript":"^6.0.0","@types/node":"^20.0.0","lint-staged":"^17.0.7","@point0/core":"^0.1.2","typescript-7":"npm:typescript@7.0.1-rc","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.60.1","@arethetypeswrong/cli":"^0.18.3","prettier-plugin-jsdoc":"^1.8.1","eslint-config-prettier":"^10.1.8","eslint-plugin-no-only-tests":"^3.4.0","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/error0_0.4.7_1783280205252_0.9048539144985988","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"@1gr14/error0","version":"0.4.8","description":"A composable, plugin-based Error class for TypeScript — typed metadata, cause chains, HTTP/status helpers, and full serialize/deserialize round-trips.","keywords":["error","errors","error-handling","exception","typescript","plugin","serializable","cause","stack","http-error","status-code"],"license":"MIT","author":{"name":"Sergei Dmitriev","url":"https://1gr14.dev"},"homepage":"https://github.com/1gr14/error0#readme","repository":{"type":"git","url":"git+https://github.com/1gr14/error0.git"},"bugs":{"url":"https://github.com/1gr14/error0/issues"},"funding":"https://1gr14.dev/support","type":"module","sideEffects":false,"types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugins/*":{"types":"./dist/plugins/*.d.ts","import":"./dist/plugins/*.js"}},"typesVersions":{"*":{"":["./dist/index.d.ts"],"plugins/*":["./dist/plugins/*"]}},"scripts":{"dev":"tsc-watch --preserveWatchOutput --project tsconfig.build.json","dev:npm":"tsc-watch --preserveWatchOutput --project tsconfig.build.json --onSuccess 'bun run pack:dist'","build":"tsdown","test":"bun test ./src","test:us":"bun test ./src --update-snapshots","test:watch":"bun test --watch","test:coverage":"bun test ./src --coverage","smoke":"node scripts/smoke.mjs","check:package":"publint && attw --pack . --profile esm-only","lint":"bun run lint:fix .","lint:base":"eslint --cache --cache-location node_modules/.cache/eslint/.eslintcache","lint:fix":"bun run lint:base --fix","format":"bun run format:fix .","format:base":"prettier --cache --cache-location node_modules/.cache/prettier/.prettiercache --ignore-path .gitignore --ignore-path .prettierignore","format:fix":"bun run format:base --write","types:build":"node node_modules/typescript/bin/tsc --noEmit --project tsconfig.build.json","types":"node node_modules/typescript-7/bin/tsc --noEmit","types:6":"node node_modules/typescript/bin/tsc --noEmit","release":"bun run scripts/release.ts","publish:packages":"bun run scripts/publish.ts","check:channel":"bun run scripts/check-channel.ts","pack:dry":"npm pack --dry-run","pack:dist":"mkdir -p dist-npm && npm pack --pack-destination dist-npm --silent && cd dist-npm && tar -xzf *.tgz && cp -r package/* . && rm -rf package && rm *.tgz","pack:dist:hard":"rimraf dist-npm && bun run pack:dist","prepare":"husky || true","clean":"rimraf dist && rimraf dist-npm && rimraf node_modules/.cache"},"dependencies":{},"peerDependencies":{},"devDependencies":{"@arethetypeswrong/cli":"^0.18.3","@commitlint/cli":"^21.0.2","@commitlint/config-conventional":"^21.0.2","@point0/core":"^0.1.2","@types/bun":"^1.3.14","@types/node":"^20.0.0","eslint":"^10.4.1","eslint-config-prettier":"^10.1.8","eslint-plugin-no-only-tests":"^3.4.0","husky":"^9.1.7","lint-staged":"^17.0.7","prettier":"^3.8.3","prettier-plugin-jsdoc":"^1.8.1","publint":"^0.3.21","rimraf":"^6.1.3","tsc-watch":"^7.2.0","tsdown":"^0.22.1","typescript":"^6.0.0","typescript-7":"npm:typescript@^7.0.2","typescript-eslint":"^8.60.1","zod":"^4.4.3"},"engines":{"node":">=20.0.0","bun":">=1.0.0"},"publishConfig":{"access":"public","provenance":true},"gitHead":"da66909c618de65c2e4668e7463d0ce267cba8b7","_id":"@1gr14/error0@0.4.8","_nodeVersion":"24.18.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-7iGmmpI9tXGDdd7Kc+6MtUYT0QKisKPmjwROXXUd2IABamtAyVTxvX9RSDI8LNsBQql4UY6ENBPKJHhOna7FQA==","shasum":"203f7ceea573056d661beb7391429c8d4753a493","tarball":"https://registry.npmjs.org/@1gr14/error0/-/error0-0.4.8.tgz","fileCount":39,"unpackedSize":113441,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1gr14%2ferror0@0.4.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDK7NYzw0CMyJ++VLekzwkNFLGcCAMnPfDI6AUkvb2pgQIgb8z8VCyYsN5VJOASUFIR5+8OBI6IaDgrATvx55dX+kg="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6af16fdf-d3d8-45c5-a4ec-57c9e815d415"}},"directories":{},"maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/error0_0.4.8_1784998708785_0.7728566885939638"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-08T08:13:54.720Z","modified":"2026-07-25T16:58:29.299Z","0.0.0":"2026-06-08T08:13:55.028Z","0.1.0":"2026-06-08T08:17:42.602Z","0.2.0":"2026-06-10T06:05:29.772Z","0.3.0":"2026-06-11T17:17:55.907Z","0.4.0":"2026-06-11T17:59:32.205Z","0.4.1":"2026-06-15T09:16:35.963Z","0.4.2":"2026-06-15T10:41:06.166Z","0.4.3":"2026-06-22T12:28:53.045Z","0.4.4":"2026-06-22T15:55:00.937Z","0.4.5":"2026-06-29T10:20:23.793Z","0.4.6":"2026-06-29T17:49:11.991Z","0.4.7":"2026-07-05T19:36:45.390Z","0.4.8":"2026-07-25T16:58:28.944Z"},"bugs":{"url":"https://github.com/1gr14/error0/issues"},"author":{"name":"Sergei Dmitriev","url":"https://1gr14.dev"},"license":"MIT","homepage":"https://github.com/1gr14/error0#readme","keywords":["error","errors","error-handling","exception","typescript","plugin","serializable","cause","stack","http-error","status-code"],"repository":{"type":"git","url":"git+https://github.com/1gr14/error0.git"},"description":"A composable, plugin-based Error class for TypeScript — typed metadata, cause chains, HTTP/status helpers, and full serialize/deserialize round-trips.","maintainers":[{"name":"iserdmi","email":"iserdmi@gmail.com"}],"readme":"# @1gr14/error0\n\n> One typed `Error` class for your whole app — coerce any thrown value into it,\n> let typed fields flow through cause chains, and serialize it safely across the\n> wire.\n\n[![CI](https://github.com/1gr14/error0/actions/workflows/ci.yml/badge.svg)](https://github.com/1gr14/error0/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/@1gr14/error0.svg)](https://www.npmjs.com/package/@1gr14/error0)\n[![coverage](https://codecov.io/gh/1gr14/error0/branch/main/graph/badge.svg)](https://codecov.io/gh/1gr14/error0)\n[![gzip](https://deno.bundlejs.com/badge?q=@1gr14/error0)](https://bundlejs.com/?q=@1gr14/error0)\n[![license](https://img.shields.io/npm/l/@1gr14/error0.svg)](./LICENSE)\n\n<!-- docs:start -->\n\nA project deserves **one** error class — a single type that any thrown value can\nbe coerced into, that carries errors from your server to your client, and that\nknows how to serialize itself two ways: **privately** for your logs and\n**publicly** for untrusted clients. `error0` is that class, built as a small\n**builder**: you start from `Error0` and extend it with typed fields — inline,\nor with ready-made plugins.\n\nErrors travel. You throw in one layer and catch in another — sometimes it's your\nerror, sometimes a native `Error`, sometimes an Axios or Zod error, sometimes\njust a string. `error0` turns any of them into one typed class you control. Its\nfields **flow** up through cause chains, and the whole error **serializes** to\nJSON and back — so it survives a trip across a process, a queue, or the network.\n\n```ts\nimport { Error0 } from '@1gr14/error0'\nimport { statusPlugin } from '@1gr14/error0/plugins/status'\nimport { codePlugin } from '@1gr14/error0/plugins/code'\n\n// One error class for the whole app — compose the fields you need.\nexport const AppError = Error0.mark('AppError')\n  .use(statusPlugin({ transport: 'public' })) // a ready-made plugin: typed `status`\n  .use(codePlugin({ codes: ['UNAUTHORIZED', 'FORBIDDEN'] as const })) // and a typed `code`\n  .use('prop', 'requestId', { init: (id: string) => id }) // or any field you want, inline\n\n// Type the instance, the way you would with `class AppError extends Error`.\nexport type AppError = InstanceType<typeof AppError>\n\n// Build with typed fields — from a plugin or your own.\nconst inner = new AppError('Token expired', {\n  status: 401,\n  code: 'UNAUTHORIZED',\n  requestId: 'req_42',\n})\ninner.requestId // 'req_42'  ← your own inline field, typed string | undefined\n\n// Wrap a cause — fields flow up the chain.\nconst outer = new AppError('Request failed', { cause: inner })\nouter.status // 401  ← flowed up from the inner cause\nouter.flow('status') // [undefined, 401]  — the value at each level of the chain\n\n// Coerce anything at a boundary, then serialize a client-safe payload.\nconst json = AppError.serializePublic(outer) // { message, status } — no code, no stack\n\n// ...and rebuild a real AppError on the other side.\nconst restored = AppError.from(json)\nrestored.status // 401  ← survived the round-trip\n```\n\n## Install\n\n```sh\nbun add @1gr14/error0\n# or: npm install / pnpm add / yarn add\n```\n\nBun 1+ or Node.js 20+. ESM only.\n\n## Give your errors typed fields\n\nA bare message isn't enough. You want an HTTP status, a machine-readable code,\nwhatever your app needs. Add a field with `.use('prop', name, options)` — the\nsame call the hero used inline. A field is up to four small functions, and only\nthe first is required:\n\n```ts\nconst AppError = Error0.use('prop', 'status', {\n  init: (input: number) => input,\n  resolve: ({ flow }) => flow.find(Boolean),\n  serialize: ({ resolved }) => resolved,\n  deserialize: ({ value }) => (typeof value === 'number' ? value : undefined),\n})\n\nconst err = new AppError('User not found', { status: 404 })\nerr.status // 404  ← typed as number | undefined\n```\n\nEach function does one job. Here's what each one is for.\n\n### `init` — declare and accept the input\n\n`init` types the value you pass in. Writing `(input: number)` is what makes\n`new AppError('...', { status })` expect a number — the input type comes\nstraight from `init`'s first argument. Its return type is what gets stored, so\nyou can transform on the way in, not just pass the value through:\n\n```ts\ninit: (input: number) => input // status is a number\ninit: (name: 'on' | 'off') => name === 'on' // accept a name, store a boolean\n```\n\nA field is never required on input — `init` types the value _when_ you pass one,\nit never forces you to. That's the rule that lets\n[`from()` turn any error into yours](#any-error-becomes-your-error).\n\nSkip `init` and the field drops out of the constructor — you can't pass it at\nall. It becomes a computed field, filled only from a cause or an\n[`adapt` hook](#adapt-foreign-errors-at-construction), and its type then comes\nfrom what `resolve` returns:\n\n```ts\n// no init → not accepted in `new AppError(...)`, derived instead\nconst AppError = Error0.use('prop', 'fingerprint', {\n  resolve: ({ error }) => `${error.name}:${error.message}`, // err.fingerprint is a string\n})\n```\n\n### `resolve` — compute the value you read\n\n`resolve` decides what `err.status` returns. It sees this field's value at every\nlevel of the cause chain and returns the one to expose:\n\n- **`flow`** — this field's value on each link `is()` recognizes as yours,\n  nearest first. Foreign links (a native `Error`, a `ZodError`) are skipped —\n  they carry none of your fields. `flow.find(Boolean)` means \"the first status\n  anyone set\".\n- **`own`** — just this error's own value, before any chain logic.\n- **`error`** — the error instance itself (call `error.causes()` to walk the\n  whole chain, foreign links included).\n\nOmit `resolve` (or pass `resolve: false`) and the field just returns its own\nvalue, ignoring causes. Return a constant and every error reports it. It's the\nsame lever the chain-merging plugins (`tags`, `meta`, `headers`) pull — more on\nthe flow in [the next section](#fields-flow-through-cause-chains).\n\n### `serialize` — write the value to JSON\n\n`serialize` is the field's half of the JSON boundary, going out. Return the\nvalue to put in the JSON, or `undefined` to drop the field. It receives\n`{ own, flow, resolved, error, isPublic }` — most often you just return\n`resolved`. The `isPublic` flag is how a field shows in the public output or\nonly the private one (see\n[Public and private serialization](#public-and-private-serialization)). Pass\n`serialize: false` to keep the field server-only — it never crosses the wire.\n\n### `deserialize` — read the value back from JSON\n\n`deserialize` is the other half, coming back in: it turns the raw JSON value\ninto your field when `from()` rebuilds the error. It receives\n`{ value, record }` — `value` is the raw field, `record` is the whole serialized\nobject if you need a sibling. Validate as you read:\n`typeof value === 'number' ? value : undefined` drops anything that isn't a\nnumber, so a malformed payload can't smuggle in a wrong type. Pass\n`deserialize: false` and the field is never read back.\n\n## Fields flow through cause chains\n\nHere's why `resolve` takes a `flow`. When you wrap an error, the inner error's\nstatus shouldn't vanish. `flow` is this field's value on each error in the chain\nthat `is()` recognizes as yours, nearest first — so `flow.find(Boolean)` means\n\"the first status anyone set\":\n\n```ts\nconst inner = new AppError('DB unreachable', { status: 503 })\nconst outer = new AppError('Could not load user', { cause: inner })\n\nouter.status // 503  ← flowed up from `inner`\nouter.flow('status') // [undefined, 503]  — outer set nothing, inner set 503\nouter.resolve() // { status: 503 } — every field resolved into one object\ninner.own // { status: 503 } — the raw fields set on an error, before resolve runs\n```\n\nOnly links that are your error feed the flow — a native `Error`, a `ZodError`,\nor any other foreign cause is skipped, because it carries no fields of yours.\nThe two `causes()` helpers make the line explicit:\n\n```ts\nconst outer = new AppError('Failed', { cause: new TypeError('boom') })\n\nouter.causes() // [outer, TypeError]  — every link, foreign ones included\nouter.causes(true) // [outer]         — only links that are your error\nError0.causes(outer) // the same walk, also available as a static\n```\n\nSo `flow` walks `causes(true)`; reach for `causes()` when you want the raw\nchain, foreign errors and all. Either walk is capped at\n`Error0.MAX_CAUSES_DEPTH` (default `99`) to guard against cycles.\n\n## Any error becomes your error\n\nSo far every error here is one you built. But most errors you catch came from\nsomewhere else — a native `Error`, an Axios failure, a string someone threw.\nThose become your error too. `Error0.from()` gives you a typed error you can\ntrust, every time:\n\n```ts\nimport { Error0 } from '@1gr14/error0'\n\nError0.from(new Error('boom')) // wraps the native error, keeps it as `cause`\nError0.from('boom') // wraps the string\nError0.from({ message: 'boom' }) // rebuilds from a serialized object\nError0.from(error0Instance) // already an Error0 → returned as-is\n\ntry {\n  await doStuff()\n} catch (e) {\n  throw Error0.from(e) // always an Error0, original preserved as `cause`\n}\n```\n\nThis works because of one design rule: **every field is optional on input**. No\nfield is ever required, so _any_ error can become an `Error0` — there's nothing\nthat could be \"missing\".\n\n`Error0` is a real subclass of `Error`, so everything you expect still works:\n\n```ts\nconst err = new Error0('nope')\nerr instanceof Error0 // true\nerr instanceof Error // true\nerr.message // 'nope'\nerr.stack // present\n```\n\n## One class, fields not subclasses\n\nYou usually want a single `AppError` for the whole app — not a `DbError`,\n`ApiError`, `ValidationError` zoo. Model the differences as **fields**, not\nclasses. A field can hold anything — a whole object, not just a primitive — and\nyou choose whether it crosses the wire.\n\n```ts\n// Don't reach for a separate DbError — add a field holding the raw driver error.\nconst AppError = Error0.use('prop', 'dbError', {\n  init: (error: PostgresError) => error, // the input can be a whole object\n  resolve: ({ flow }) => flow.find(Boolean),\n  serialize: false, // keep it server-side; never send it to a client\n  deserialize: false,\n})\n\nconst err = new AppError('Query failed', { dbError: pgError })\nerr.dbError // the full driver error, typed — for your logs\nAppError.serialize(err) // { message } — `dbError` never crosses the wire\n```\n\nBut you usually won't set `dbError` by hand — you catch an `unknown` and don't\neven know it _is_ a database error. So pair the field with an **`adapt`** hook:\nit runs on every new error (including the ones `from()` builds), looks at the\n`cause`, and routes a driver error into the field for you.\n\n```ts\nconst AppError = Error0.use('prop', 'dbError', {\n  init: (error: PostgresError) => error,\n  resolve: ({ flow }) => flow.find(Boolean),\n  serialize: false,\n  deserialize: false,\n}).use('adapt', (error) => {\n  // caught something unknown — if a driver error is underneath, capture it\n  if (error.cause instanceof PostgresError) {\n    return { dbError: error.cause } // returned fields get assigned to the error\n  }\n})\n\n// now just wrap whatever you caught — the field fills itself in\nconst err = AppError.from(pgError) // a PostgresError that bubbled up\nerr.dbError // the driver error, captured automatically — still server-only\n```\n\nThat's the payoff of one class: you catch once, at the boundary, without knowing\nthe origin, and the error sorts itself into the right fields. (More on `adapt`\nin\n[Adapt foreign errors at construction](#adapt-foreign-errors-at-construction).)\n\nOne class to catch, one `is()`, one serialize contract — every concern lives as\na typed field on it.\n\n## Add behavior with methods\n\nFields are data. You'll also want behavior — a question you ask an error often.\nAdd a method:\n\n```ts\nconst AppError = Error0.use('prop', 'status', {\n  init: (input: number) => input,\n  resolve: ({ flow }) => flow.find(Boolean),\n}).use(\n  'method',\n  'isStatus',\n  (error, expected: number) => error.status === expected,\n)\n\nconst err = new AppError('Forbidden', { status: 403 })\nerr.isStatus(403) // true\n\n// Every method is also a static that runs `from()` on its first argument —\n// so it works on anything: an AppError, a serialized object, or a native error.\nAppError.isStatus(err, 403) // true\n```\n\n## Adapt foreign errors at construction\n\nAn `adapt` hook runs on every new error — including the ones `from()` builds out\nof foreign errors. It gets the live error, so it can read the `cause`,\n**return** fields to set them, and **mutate** native parts like `message`\ndirectly. This is where you teach `Error0` to understand the rest of the world.\n\nTurn a `ZodError` into a clean 422 — status from the return value, message from\nthe error's first issue:\n\n```ts\nimport { z } from 'zod'\n\nconst ApiError = AppError.use('adapt', (error) => {\n  if (error.cause instanceof z.ZodError) {\n    error.message = error.cause.issues[0]?.message ?? error.message // mutate native parts\n    return { status: 422 } // returned fields are assigned to the error\n  }\n})\n\nconst err = ApiError.from(zodError) // a ZodError you caught upstream\nerr.message // 'Invalid email address'  ← first Zod issue\nerr.status // 422\n```\n\nTwo levers: **return** an object to set typed fields, and **mutate** the error\nfor its native parts (`message`, `stack`). To set fields on an error you already\nhave, use `err.assign({ status: 500 })` (returns the same error) or the static\n`AppError.assign(error, props)`.\n\n## Public and private serialization\n\nThis is the payoff, and the reason `error0` exists: serialize to plain JSON,\nship it anywhere, rebuild a real typed error on the other side. But the two\naudiences are different. Some fields are for your logs, not your users — so\nthere are two named outputs:\n\n- **`serializePublic()`** — what an untrusted client may see.\n- **`serializePrivate()`** — the full view, for trusted consumers (logs, dev\n  tooling).\n\nBoth are thin sugar over `serialize(isPublic)`. Each bundled plugin takes a\n`transport` option to pick its audience:\n\n```ts\nconst AppError = Error0.use(statusPlugin({ transport: 'public' })) // visible to clients\n  .use(codePlugin()) // transport: 'private' by default\n\nconst err = new AppError('Nope', { status: 403, code: 'FORBIDDEN' })\n\nerr.serializePublic() // { message, status }          ← no code, no stack\nerr.serializePrivate() // { message, status, code, stack }\n\n// Send the public payload to the browser; log the private one on the server.\nconst back = AppError.from(err.serializePrivate()) // a real AppError again\nback.code // 'FORBIDDEN'  ← survived the round-trip\n```\n\n`transport` is just a default for the field's own `serialize` gate: `'public'`\nputs the field in both outputs, `'private'` only in `serializePrivate()`,\n`'none'` never serializes it. There's no magic — it's the field's `serialize`\nfunction, which gets a call-time `isPublic` flag and returns the value to keep,\nor `undefined` to drop it entirely:\n\n```ts\n// the exact gate every bundled plugin uses, given `transport`\nserialize: ({ resolved, isPublic }) => {\n  if (transport === 'none' || (transport === 'private' && isPublic))\n    return undefined\n  return resolved // otherwise, put the value in the JSON\n}\n```\n\nWrite your own `serialize` and you decide exactly what crosses the wire — mask a\nvalue, round it, or drop it. (`err.round()` / `Error0.round(error)` is\n`from(serialize(error))` in one call — handy in tests to assert a value survives\nthe trip.)\n\n## Reserved fields: message and stack\n\n`message` and `stack` are built into `Error`, so adding them as props throws. To\nchange how they serialize, use their own hooks instead —\n`.use('message', { serialize })` and `.use('stack', { serialize })`:\n\n```ts\n// keep the stack out of every serialized output\nconst AppError = Error0.use('stack', { serialize: () => undefined })\n```\n\nThe bundled `stackPlugin`, `messageMergePlugin`, and `stackMergePlugin` are\nbuilt on exactly these hooks.\n\n## Bundle fields into reusable plugins\n\nDefining `status` inline once is fine. Defining it in every service is not. Wrap\nit in a plugin with `Error0.plugin()` and reuse it everywhere:\n\n```ts\nexport const statusPlugin = () =>\n  Error0.plugin().prop('status', {\n    init: (input: number) => input,\n    resolve: ({ flow }) => flow.find(Boolean),\n    serialize: ({ resolved }) => resolved,\n    deserialize: ({ value }) => (typeof value === 'number' ? value : undefined),\n  })\n\nconst AppError = Error0.use(statusPlugin())\n```\n\nA plugin builder mirrors the inline API, one method per kind:\n\n- **`.prop(name, options)`** — a typed field (same options as\n  `.use('prop', …)`).\n- **`.method(name, fn)`** — an instance method.\n- **`.adapt(fn)`** — a hook that runs on every new error.\n- **`.cause(value)`** / **`.stack(value)`** / **`.message(value)`** — customize\n  how those reserved parts serialize and rebuild.\n- **`.use(plugin)`** — merge another plugin in, so plugins can compose plugins.\n\nEach `.use(...)` on `Error0` returns a new class with the previous fields plus\nthe new ones, all typed. Stack as many as you like:\n\n```ts\nconst AppError = Error0.use(statusPlugin()).use(codePlugin())\nconst ApiError = AppError.use(tagsPlugin()) // keeps status + code, adds tags\n```\n\n## Tell error classes apart: `is` and `mark`\n\nOne `AppError` is usually enough — model the rest as fields (see\n[One class, fields not subclasses](#one-class-fields-not-subclasses)). But if\nyou do split into several classes, `is()` tells them apart and narrows the type\ninside the branch:\n\n```ts\nconst ApiError = Error0.use(statusPlugin())\nconst DbError = Error0.use(codePlugin())\n\ntry {\n  await handler()\n} catch (e) {\n  if (ApiError.is(e)) {\n    e.status // typed — `e` is an ApiError here\n  } else if (DbError.is(e)) {\n    e.code // typed — `e` is a DbError here\n  }\n}\n```\n\n`is()` checks `instanceof` under the hood, so distinct classes stay distinct —\nno setup needed. But `instanceof` breaks when the same class ships in two\nbundles (a server build and a client build) — the two copies are different\nclasses. `mark` brands a class with a stable id that `is()` checks instead of\nthe prototype chain, so recognition survives that boundary:\n\n```ts\nconst ApiError = Error0.mark('myapp/api').use(statusPlugin())\n\nApiError.is(err) // matched by brand, even where `instanceof` would fail\n```\n\nUse a **string** or a **`Symbol.for('...')`** as the mark — both are stable\nacross bundles. Never a plain `Symbol('...')`: it's unique per bundle. A string\nmark also becomes `err.name`. Give several classes the same mark and `is()`\ntreats them as one family.\n\n## Better stack traces in dev\n\nBundlers (Vite, tsx, esbuild) rewrite your code, so stack traces point at\ncompiled output instead of your source. `error0` calls an optional global hook\non every error and each of its causes at construction, so a tool can remap the\nstack. It's a no-op when `NODE_ENV === 'production'`.\n\nWire it once — for example, with Vite's SSR fixer:\n\n```ts\n// dev setup only\nglobalThis.__ERROR0_FIX_STACKTRACE__ = (error) =>\n  viteDevServer.ssrFixStacktrace(error)\n```\n\nNow every `Error0`, and each error in its `cause` chain, gets readable,\nsource-mapped stack traces in development.\n\n## Ready-made plugins\n\nThe common fields are already written. Import only what you use, each from its\nown path under `@1gr14/error0/plugins/*` (tree-shakeable). Every plugin is a\nfunction you call and pass to `.use()`.\n\nEach one is a small, readable function built on the same hooks you just saw —\nthe **source** link under each is worth opening, and it's the best template for\nwriting your own.\n\nEach field plugin below accepts a `transport` option — `'public'`, `'private'`\n(default), or `'none'` — that decides whether its field shows up in\n`serializePublic()`, only in `serializePrivate()`, or never.\n\n### Typed-field plugins\n\n#### `statusPlugin` — an HTTP-style `status`\n\n[`src/plugins/status.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/status.ts)\n\n```ts\nimport { statusPlugin } from '@1gr14/error0/plugins/status'\n\nconst AppError = Error0.use(statusPlugin({ transport: 'public' }))\nconst err = new AppError('Not found', { status: 404 })\nerr.status // 404\n```\n\nPass a `statuses` map to accept a status by name, and `strict` to reject any\nnumber that isn't in it:\n\n```ts\nconst AppError = Error0.use(\n  statusPlugin({ statuses: { NOT_FOUND: 404, FORBIDDEN: 403 }, strict: true }),\n)\nconst err = new AppError('x', { status: 'NOT_FOUND' })\nerr.status // 404\n```\n\n#### `codePlugin` — a machine-readable `code`\n\n[`src/plugins/code.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/code.ts)\n\nPass `codes` to lock the field to a typed union; only those codes type-check.\n\n```ts\nimport { codePlugin } from '@1gr14/error0/plugins/code'\n\nconst AppError = Error0.use(\n  codePlugin({ codes: ['NOT_FOUND', 'BAD_REQUEST'] as const }),\n)\nnew AppError('x', { code: 'NOT_FOUND' }) // 'NOPE' would be a type error\n```\n\n#### `codeStatusPlugin` — `code` and `status` together\n\n[`src/plugins/code-status.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/code-status.ts)\n\nA `{ CODE: status }` map adds both fields and auto-fills the `status` from the\n`code` (unless you pass a `status` yourself). Use `true` for a code that has no\nfixed status.\n\n```ts\nimport { codeStatusPlugin } from '@1gr14/error0/plugins/code-status'\n\nconst AppError = Error0.use(\n  codeStatusPlugin({\n    codes: { NOT_FOUND: 404, FORBIDDEN: 403, RATE_LIMITED: true },\n  }),\n)\nconst err = new AppError('x', { code: 'NOT_FOUND' })\nerr.status // 404 — filled from the map\n```\n\n#### `tagsPlugin` — a `tags` set + `hasTag()`\n\n[`src/plugins/tags.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/tags.ts)\n\nTags merge and dedupe across the whole cause chain.\n\n```ts\nimport { tagsPlugin } from '@1gr14/error0/plugins/tags'\n\nconst AppError = Error0.use(\n  tagsPlugin({ tags: ['retryable', 'user-error'] as const }),\n)\nconst err = new AppError('x', { tags: ['user-error'] })\n\nerr.hasTag('user-error') // true\nerr.hasTag(['retryable', 'user-error'], 'some') // true — policy 'every' (default) or 'some'\n```\n\nOptions: `tags` (whitelist), `strict` (default `true` — drops unknown tags when\ndeserializing), `transport`.\n\n#### `metaPlugin` — free-form `meta`\n\n[`src/plugins/meta.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/meta.ts)\n\nJSON-safe metadata. Wrap one error in another and the `meta` of the whole chain\nmerges into one object — nearer errors win on a key conflict.\n\n```ts\nimport { metaPlugin } from '@1gr14/error0/plugins/meta'\n\nconst AppError = Error0.use(metaPlugin())\n\nconst inner = new AppError('DB down', { meta: { userId: 7, attempt: 1 } })\nconst outer = new AppError('Load failed', {\n  cause: inner,\n  meta: { attempt: 2 },\n})\n\nouter.meta // { userId: 7, attempt: 2 } — merged up the chain; outer wins on `attempt`\n```\n\n#### `expectedPlugin` — an `expected` flag + `isExpected()`\n\n[`src/plugins/expected.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/expected.ts)\n\nMark errors that are part of normal flow (a 404, a validation miss) so you don't\nlog them as crashes. A single `expected: false` anywhere in the chain wins.\n\n```ts\nimport { expectedPlugin } from '@1gr14/error0/plugins/expected'\n\nconst AppError = Error0.use(expectedPlugin())\nconst err = new AppError('Not found', { expected: true })\nerr.isExpected() // true\n```\n\nOptions: `transport`, and `override` to force the verdict from the error itself.\n\n#### `preventRetryPlugin` — a `preventRetry` flag\n\n[`src/plugins/prevent-retry.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/prevent-retry.ts)\n\n\"And don't try this again\" — a retrying consumer (point0's queries and its\nsocket connect/join retries honor it) sits out its automatic retries when the\nerror says so. The first explicit boolean in the chain wins, the error's own\nvalue before its causes — wrapping an inner `preventRetry: true` with an outer\n`preventRetry: false` lifts the block.\n\n```ts\nimport { preventRetryPlugin } from '@1gr14/error0/plugins/prevent-retry'\n\nconst AppError = Error0.use(preventRetryPlugin())\nconst err = new AppError('Unauthorized', { preventRetry: true })\nerr.preventRetry // true — the client stops knocking\n```\n\nOptions: `transport` — defaulting to `'public'`, unlike the other field plugins:\nthe flag exists for the client to act on, so it travels in `serializePublic()`\n(only a resolved `true` is sent; `false` is the default behavior).\n\n#### `headersPlugin` — HTTP `headers`\n\n[`src/plugins/headers.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/headers.ts)\n\nHeaders to attach to a response, merged across the chain. Never serialized.\n\n```ts\nimport { headersPlugin } from '@1gr14/error0/plugins/headers'\n\nconst AppError = Error0.use(headersPlugin())\nconst err = new AppError('Rate limited', { headers: { 'Retry-After': '30' } })\nerr.headers\n```\n\n#### `responsePlugin` — a `Response` object\n\n[`src/plugins/response.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/response.ts)\n\nCarry a `fetch` `Response` with the error (to read its body later, say). Never\nserialized.\n\n```ts\nimport { responsePlugin } from '@1gr14/error0/plugins/response'\n\nconst AppError = Error0.use(responsePlugin())\nconst err = new AppError('Upstream failed', { response })\nerr.response // the Response\n```\n\n#### `redirectPlugin` — a navigation `redirect` (for point0)\n\n[`src/plugins/point0-redirect.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/point0-redirect.ts)\n\nAttach a redirect to an error. Built for [point0](https://1gr14.dev/point0); a\n`RedirectTask` thrown as a `cause` is adopted automatically.\n\n```ts\nimport { redirectPlugin } from '@1gr14/error0/plugins/point0-redirect'\n\nconst AppError = Error0.use(redirectPlugin())\nconst err = new AppError('Go to login', {\n  redirect: { to: '/login', status: 302 },\n})\nerr.redirect\n```\n\n### Serialization & adapt plugins\n\nThese don't add a field of their own — they shape how the error serializes or\nadapts.\n\n#### `causePlugin` — carry the cause chain across the wire\n\n[`src/plugins/cause.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/cause.ts)\n\nBy default a `.cause` isn't serialized — it can't always survive JSON.\n`causePlugin` makes it travel: nested `Error0` causes are rebuilt by `from()`,\nand foreign errors (Zod, Axios, …) are kept as `{ name, message, stack }` with\ntheir own chain walked (cycle- and depth-guarded).\n\n```ts\nimport { causePlugin } from '@1gr14/error0/plugins/cause'\n\nconst AppError = Error0.use(causePlugin())\n// serializePrivate() now includes `cause`, and from() rebuilds it\n```\n\nOption: `transport` (default `'private'` — kept out of `serializePublic()`).\n\n#### `stackPlugin` — the stack policy, as a plugin\n\n[`src/plugins/stack.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/stack.ts)\n\nThe core already keeps the stack in `serializePrivate()` only; this plugin\nspells that policy out and makes it switchable. `transport: 'private'` (default)\nkeeps the stack out of public output, `'public'` sends it to clients too,\n`'none'` strips it everywhere.\n\n```ts\nimport { stackPlugin } from '@1gr14/error0/plugins/stack'\n\nconst AppError = Error0.use(stackPlugin({ transport: 'none' })) // never serialize the stack\n```\n\n#### `messageMergePlugin` — one message from the whole chain\n\n[`src/plugins/message-merge.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/message-merge.ts)\n\nOn serialize, joins every error's message down the cause chain into one string.\n\n```ts\nimport { messageMergePlugin } from '@1gr14/error0/plugins/message-merge'\n\nconst AppError = Error0.use(messageMergePlugin())\n// serialized message: 'Outer: inner: root cause'  — joined with ': '\n```\n\nOptions: `delimiter` (default `': '`), `fallback` (default `'Unknown error'`).\n\n#### `stackMergePlugin` — one stack from the whole chain\n\n[`src/plugins/stack-merge.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/stack-merge.ts)\n\nLike `messageMergePlugin`, but joins the stacks of every cause.\n\n```ts\nimport { stackMergePlugin } from '@1gr14/error0/plugins/stack-merge'\n\nconst AppError = Error0.use(stackMergePlugin())\n```\n\nOptions: `transport` (default `'private'`), `delimiter` (default `'\\n'`).\n\n#### `flatOriginalPlugin` — adopt a native cause's message and stack\n\n[`src/plugins/flat-original.ts`](https://github.com/1gr14/error0/blob/main/src/plugins/flat-original.ts)\n\nWhen you wrap a plain native `Error`, this hoists its message and stack onto\nyour `Error0` (and unwraps the cause), so the top error reads like the original\ninstead of a generic wrapper.\n\n```ts\nimport { flatOriginalPlugin } from '@1gr14/error0/plugins/flat-original'\n\nconst AppError = Error0.use(flatOriginalPlugin())\nconst err = AppError.from(new Error('socket hang up'))\nerr.message // 'socket hang up'\n```\n\nOption: `prefix`, prepended to the adopted message.\n\n<!-- docs:end -->\n\n## Community\n\nQuestions, bugs, or want to hang with other builders? Join the 1gr14 community —\none hub for all our open-source projects, this one included. Get help, share\nwhat you built, or just say hi:\n[1gr14.dev/#community](https://1gr14.dev/#community)\n\n## Contributing\n\nIssues and PRs welcome. See [CONTRIBUTING.md](./CONTRIBUTING.md) and the\n[Code of Conduct](./CODE_OF_CONDUCT.md). Commits follow\n[Conventional Commits](https://www.conventionalcommits.org/). Security reports:\n[SECURITY.md](./SECURITY.md).\n\n## License\n\n[MIT](./LICENSE)\n\n---\n\nMade by [1gr14](https://1gr14.dev), driven by\n[community](https://1gr14.dev/#community)\n","readmeFilename":"README.md"}