{"_id":"@hackylabs/deep-redact","_rev":"28-fb96891fb993f5fbf5350107e9b3f242","name":"@hackylabs/deep-redact","dist-tags":{"legacy-v3":"3.0.5","legacy-v2":"2.2.2","latest":"4.1.0"},"versions":{"1.0.0":{"name":"@hackylabs/deep-redact","version":"1.0.0","keywords":["redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@1.0.0","maintainers":[{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["fast-redact installed only as a benchmark comparison and is not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"4897c42da13f8da5cd9f665e4fa7e3439206de6a","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-1.0.0.tgz","fileCount":7,"integrity":"sha512-e3xxgysEpVZtSas8IvFQYQ5WhFCXuEePvVe0DoiFQj2WETIQohm7lxb9XhT4KCODfPr3ef+4Qgg4prLE6OpGtg==","signatures":[{"sig":"MEQCIGOP5DW8cZcElObw0NyQMPRfj4jhkcmN++tqIS+fpUbFAiB1xxyfH5aCswgNfYcZb39czkOjx0YcMRDxW/LY2RQX3Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24296},"exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"f04d8b5022141e142eb6b72127601309c56bb811","private":false,"scripts":{"lint":"eslint","test":"npx vitest run","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-readme && npm run update-license","test:dev":"npx vitest","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","update-readme":"npx ts-node ./scripts/update-readme.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"},"deprecated":"No longer maintained. Upgrade to 2.2.2 (2.x line), or to 3.0.5 or 4.0.0.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.5.2","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"20.13.1","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","typescript":"5.5.4","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","image-charts":"6.1.19","eslint-plugin-n":"17.9.0","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"_npmOperationalInternal":{"tmp":"tmp/deep-redact_1.0.0_1722084793314_0.2777129973558685","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@hackylabs/deep-redact","version":"1.0.1","keywords":["redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@1.0.1","maintainers":[{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["fast-redact installed only as a benchmark comparison and is not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"182b16549b3fcb431933440a3e8b063124d6bedc","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-1.0.1.tgz","fileCount":7,"integrity":"sha512-leqpBYNaqFecVFWiKhql2PXtKnT5TQVkSrg+AojlWriN6b8sPZQ0g1MD9oW8QPlQx1MCc2aosxuFRFmBia+LZQ==","signatures":[{"sig":"MEQCICsMRFe9W9x4dJlPOWXureScC5fzrT0ElN3AJbbiPg1NAiApe4N3BIUYKELEYUzTBNQlVeF8MWwqh0Z4vk8NVcCLOg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24309},"exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"d2f422164a047f57688f50f0847c3d5e89a6dd38","private":false,"scripts":{"lint":"eslint","test":"npx vitest run","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-readme && npm run update-license","test:dev":"npx vitest","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","update-readme":"npx ts-node ./scripts/update-readme.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"},"deprecated":"No longer maintained. Upgrade to 2.2.2 (2.x line), or to 3.0.5 or 4.0.0.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.7.0","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"20.15.1","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","typescript":"5.5.4","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","image-charts":"6.1.19","eslint-plugin-n":"17.9.0","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"_npmOperationalInternal":{"tmp":"tmp/deep-redact_1.0.1_1722372532609_0.45217714573254697","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@hackylabs/deep-redact","version":"2.0.0","keywords":["redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@2.0.0","maintainers":[{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["fast-redact installed only as a benchmark comparison and is not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"28456c9f4554ac77d4d993b55386163688bd74fb","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-2.0.0.tgz","fileCount":12,"integrity":"sha512-VPSNZjwGTrH76GNo758rjjlVWQcmMSNTBLYlrjH5/RGTAVGFWu6P/lsZYZH9uIn6X1mjxXt90YMYlPjaEj6Png==","signatures":[{"sig":"MEYCIQC7H0BTOhQnmCfeYcoxtaPqpvY4UrAmmnZYu9zgmd0KMAIhAPu8u1YfSMUIJOtvcPlAPoR14TFk559XCQrN0JRDBWmp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":58385},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"a454470c4e1210195a39f84c8af9bbd8f0cd5fd6","private":false,"scripts":{"lint":"eslint","test":"npx vitest run","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-readme && npm run update-license","test:dev":"npx vitest","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json && ./scripts/js-to-mjs.sh","update-readme":"npx ts-node ./scripts/update-readme.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"},"deprecated":"No longer maintained. Upgrade to 2.2.2 (2.x line), or to 3.0.5 or 4.0.0.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.8.1","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","typescript":"5.5.4","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","image-charts":"6.1.19","eslint-plugin-n":"17.9.0","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"_npmOperationalInternal":{"tmp":"tmp/deep-redact_2.0.0_1724429811167_0.8018911762131891","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@hackylabs/deep-redact","version":"2.0.1","keywords":["redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@2.0.1","maintainers":[{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["fast-redact installed only as a benchmark comparison and is not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"dd677f766d8e2a0591cc5ef8012209e39ca04e66","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-2.0.1.tgz","fileCount":12,"integrity":"sha512-Y+0Z5Rdl6nCZNM26PUcQT3UA1Z6cfVLQ2F3St3VAaNfto7x4caj7OmAqeXQp9YxQku+tsD35EUN0xH8KtgvlKA==","signatures":[{"sig":"MEUCIQDYh9PKcCoNdgZ6XZz78vDNmEm/8i7roUY2Zjy/yaCLLAIgc7QPNT/hQwOuwaWO3EwOJpJUrYyfn0boAYkEJzzeg8Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":58429},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"funding":"https://ko-fi.com/hackylabs","gitHead":"3bf8584dd1e02ebe224a9a2a01b5f23ea480ede0","private":false,"scripts":{"lint":"eslint","test":"npx vitest run","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-readme && npm run update-license","test:dev":"npx vitest","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json && ./scripts/js-to-mjs.sh","update-readme":"npx ts-node ./scripts/update-readme.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"},"deprecated":"No longer maintained. Upgrade to 2.2.2 (2.x line), or to 3.0.5 or 4.0.0.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","typescript":"5.5.4","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","image-charts":"6.1.19","eslint-plugin-n":"17.9.0","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"_npmOperationalInternal":{"tmp":"tmp/deep-redact_2.0.1_1725792613163_0.841673784125113","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"@hackylabs/deep-redact","version":"2.0.2","keywords":["redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@2.0.2","maintainers":[{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["fast-redact and obglob are installed only as benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"a04363ab105a74cb0b61222a4797c6315b24ef62","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-2.0.2.tgz","fileCount":12,"integrity":"sha512-7GsVmzyMmPH8YIkgNpVrc2DIqVcMW/QWi+FjtVQRZTdTxtU0W0Hfb2sFanpeiY2Yu9V9239Zd1qvsCoFlD1rfw==","signatures":[{"sig":"MEQCIF/5iRz6LR4LEDTE+6qGE7hcLVJPx/KsXzaaztNKYdUdAiAspcU2bN0GNSOWJAUnCKjx1fMf4MeMWeDIF0LF0i4bRg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@2.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":60021},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.js"},"./utils/redactorUtils":{"types":"./dist/types/utils/redactorUtils.d.ts","import":"./dist/esm/utils/redactorUtils.mjs","require":"./dist/cjs/utils/redactorUtils.js"}},"funding":"https://ko-fi.com/hackylabs","gitHead":"9daad3ad95fbb6290999fd1d296a3657c91f2934","private":false,"scripts":{"lint":"eslint","test":"npx vitest run","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-readme && npm run update-license","test:dev":"npx vitest","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json && ./scripts/js-to-mjs.sh","update-readme":"npx ts-node ./scripts/update-readme.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"},"deprecated":"No longer maintained. Upgrade to 2.2.2 (2.x line), or to 3.0.5 or 4.0.0.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","superjson":"2.2.1","typescript":"5.6.2","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","image-charts":"6.1.19","eslint-plugin-n":"17.9.0","@hackylabs/obglob":"1.1.2","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"_npmOperationalInternal":{"tmp":"tmp/deep-redact_2.0.2_1727538017089_0.6756370473316942","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@hackylabs/deep-redact","version":"2.1.0","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@2.1.0","maintainers":[{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["fast-redact and obglob are installed only as benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"64d20dc88de02e0ac46d0060c296c215d6f54e48","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-2.1.0.tgz","fileCount":12,"integrity":"sha512-0g2W6xwiIygrR6Z9T5BsPWHTY/k+LTwXzYLQinDR3FNW8gAQAGWaTee0O+VmoxdRMv9eqLoTsLax6IBsm6US3g==","signatures":[{"sig":"MEQCIHOZFvnmCTaY6mIigDVxBU84aT3fx7AuoTVBdSNtripKAiBrxQEj069/iMXPArUd2zZ05xaNvOL1KdeY7YpiTuunyg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":64131},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.js"},"./utils/redactorUtils":{"types":"./dist/types/utils/redactorUtils.d.ts","import":"./dist/esm/utils/redactorUtils.mjs","require":"./dist/cjs/utils/redactorUtils.js"}},"funding":"https://ko-fi.com/hackylabs","gitHead":"6c88ae793e709641085cddacd2d20a7853d2b2e9","private":false,"scripts":{"lint":"eslint","test":"npx vitest run","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-readme && npm run update-license","test:dev":"npx vitest","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json && ./scripts/js-to-mjs.sh","update-readme":"npx ts-node ./scripts/update-readme.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"},"deprecated":"No longer maintained. Upgrade to 2.2.2 (2.x line), or to 3.0.5 or 4.0.0.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","superjson":"2.2.1","typescript":"5.6.2","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","image-charts":"6.1.19","eslint-plugin-n":"17.9.0","@hackylabs/obglob":"1.1.2","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"_npmOperationalInternal":{"tmp":"tmp/deep-redact_2.1.0_1728146620250_0.6904598388307179","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"@hackylabs/deep-redact","version":"2.2.0","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@2.2.0","maintainers":[{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["fast-redact and obglob are installed only as benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"33f23ff1cb025efded2b9f3689246a03c569e609","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-2.2.0.tgz","fileCount":12,"integrity":"sha512-EGBplgI8WU3aOOdWI7s6yZ7+BFC6GA4nXLTOd0ZPcr/zFqvzUoQlr/sluHSdFwX0gXXPiJ+MLNZaKWgBOQuT1A==","signatures":[{"sig":"MEUCIFXaQR5OT2JJjgD5/ROPbBbrKVMdIX+qafnhb8aMxzt2AiEAvXK/Qka1esJxLAIQhOBd5bO/sVcxcAkHOX6eToonE6E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":68200},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.js"},"./utils/redactorUtils":{"types":"./dist/types/utils/redactorUtils.d.ts","import":"./dist/esm/utils/redactorUtils.mjs","require":"./dist/cjs/utils/redactorUtils.js"}},"funding":"https://ko-fi.com/hackylabs","gitHead":"edf5fcb6d7ba59d1ef44cbbc0cf714a6accf4e0d","private":false,"scripts":{"lint":"eslint","test":"npx vitest run","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-readme && npm run update-license","test:dev":"npx vitest","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json && ./scripts/js-to-mjs.sh","update-readme":"npx ts-node ./scripts/update-readme.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"},"deprecated":"No longer maintained. Upgrade to 2.2.2 (2.x line), or to 3.0.5 or 4.0.0.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"20.18.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","superjson":"2.2.1","typescript":"5.6.2","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","image-charts":"6.1.19","eslint-plugin-n":"17.9.0","@hackylabs/obglob":"1.1.2","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"_npmOperationalInternal":{"tmp":"tmp/deep-redact_2.2.0_1732383487776_0.06663310215467244","host":"s3://npm-registry-packages"}},"2.2.1":{"name":"@hackylabs/deep-redact","version":"2.2.1","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@2.2.1","maintainers":[{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["fast-redact and obglob are installed only as benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"7f5b9ed553494134b5674cdd2a82c1525938bc22","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-2.2.1.tgz","fileCount":12,"integrity":"sha512-QQA3mBQVOkU0G2nl4luiajvVMQ5hntTid7PfpZfuzVKq0YYIxbwK3iZxIZ7TyHZoeun/N6Xxm9/3osXwtwL53g==","signatures":[{"sig":"MEUCIQDDCeS2FIcp3fzN38axkV1upNLuFVMA0AOoJIQ31FPKeAIgA5yDNYnpWlC9G+13dasuTtxZw9M4Ipwhsb5X15oO5YY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@2.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":68933},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.js"},"./utils/redactorUtils":{"types":"./dist/types/utils/redactorUtils.d.ts","import":"./dist/esm/utils/redactorUtils.mjs","require":"./dist/cjs/utils/redactorUtils.js"}},"funding":"https://ko-fi.com/hackylabs","gitHead":"809a4dab07a257ea35b76fabc1e5db0114a95b52","private":false,"scripts":{"lint":"eslint","test":"npx vitest run","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-readme && npm run update-license","test:dev":"npx vitest","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json && ./scripts/js-to-mjs.sh","update-readme":"npx ts-node ./scripts/update-readme.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"ben.green@greencodemedia.co.uk"},"deprecated":"No longer maintained. Upgrade to 2.2.2 (2.x line), or to 3.0.5 or 4.0.0.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"20.18.2","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","superjson":"2.2.1","typescript":"5.6.2","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","image-charts":"6.1.19","eslint-plugin-n":"17.9.0","@hackylabs/obglob":"1.1.2","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"_npmOperationalInternal":{"tmp":"tmp/deep-redact_2.2.1_1738258698854_0.20904938129655082","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@hackylabs/deep-redact","version":"3.0.0","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@3.0.0","maintainers":[{"name":"gcmbeng","email":"hello@bengreen.dev"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["autocannon, fast-redact and obglob are installed only as internal benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"c3cb09e864e9488190a179c00ad63e7c87ad66ac","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-3.0.0.tgz","fileCount":36,"integrity":"sha512-fWEVhA6vrCdHSGCpMKSGbbx5paIom56Y7pjbEGVOEyBzE/8ddCVrF1b6vPT1sliVm8lSj782VTqZPwETWbkbvA==","signatures":[{"sig":"MEYCIQDT36vVxgLnM1x23+P27ltYZRgWJm50p02eGyvrk+KjyQIhAOGQuGfVUpa7udQ0ZxlXF/w+EL6xRk1EQGJpLaR02qGz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":75074},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index","require":"./dist/index"},"./types":{"types":"./dist/types/types.d.ts","import":"./dist/types","require":"./dist/types"},"./utils":{"types":"./dist/types/utils.d.ts","import":"./dist/utils","require":"./dist/utils"},"./utils/standardTransformers":{"types":"./dist/types/utils/standardTransformers.d.ts","import":"./dist/utils/standardTransformers","require":"./dist/utils/standardTransformers"},"./utils/standardTransformers/map":{"types":"./dist/types/utils/standardTransformers/map.d.ts","import":"./dist/utils/standardTransformers/map","require":"./dist/utils/standardTransformers/map"},"./utils/standardTransformers/set":{"types":"./dist/types/utils/standardTransformers/set.d.ts","import":"./dist/utils/standardTransformers/set","require":"./dist/utils/standardTransformers/set"},"./utils/standardTransformers/url":{"types":"./dist/types/utils/standardTransformers/url.d.ts","import":"./dist/utils/standardTransformers/url","require":"./dist/utils/standardTransformers/url"},"./utils/standardTransformers/date":{"types":"./dist/types/utils/standardTransformers/date.d.ts","import":"./dist/utils/standardTransformers/date","require":"./dist/utils/standardTransformers/date"},"./utils/standardTransformers/error":{"types":"./dist/types/utils/standardTransformers/error.d.ts","import":"./dist/utils/standardTransformers/error","require":"./dist/utils/standardTransformers/error"},"./utils/standardTransformers/regex":{"types":"./dist/types/utils/standardTransformers/regex.d.ts","import":"./dist/utils/standardTransformers/regex","require":"./dist/utils/standardTransformers/regex"},"./utils/standardTransformers/bigint":{"types":"./dist/types/utils/standardTransformers/bigint.d.ts","import":"./dist/utils/standardTransformers/bigint","require":"./dist/utils/standardTransformers/bigint"}},"funding":"https://ko-fi.com/hackylabs","gitHead":"39c780e67f967a36275682a949a756a2ce0ab9ad","private":false,"scripts":{"lint":"eslint","load":"npx vitest run test/load/redact.test.ts --reporter=basic --coverage=false","test":"npx vitest run","unit":"npx vitest run test/unit --reporter=verbose","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-exports && npm run update-readme && npm run update-license","load:dev":"npx vitest test/load/redact.test.ts --coverage=false --reporter=basic","test:dev":"npx vitest","unit:dev":"npx vitest test/unit --coverage=false --reporter=verbose","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json && ./scripts/js-to-mjs.sh","update-readme":"npx ts-node ./scripts/update-readme.ts","update-exports":"npx ts-node ./scripts/update-exports.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"hello@bengreen.dev"},"deprecated":"No longer maintained. Upgrade to 2.2.2 (2.x line), or to 3.0.5 or 4.0.0.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"20.19.3","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","autocannon":"8.0.0","typescript":"5.6.2","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","eslint-plugin-n":"17.9.0","@hackylabs/obglob":"1.1.2","@types/autocannon":"7.12.6","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"editor.formatOnSave":true,"editor.formatOnPaste":true,"_npmOperationalInternal":{"tmp":"tmp/deep-redact_3.0.0_1752249541673_0.8021541608310265","host":"s3://npm-registry-packages-npm-production"},"editor.defaultFormatter":"EditorConfig.editorconfig"},"3.0.1":{"name":"@hackylabs/deep-redact","version":"3.0.1","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@3.0.1","maintainers":[{"name":"gcmbeng","email":"hello@bengreen.dev"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["autocannon, fast-redact and obglob are installed only as internal benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"5f21da94429ab9d849430b49f32d97342d0c42fa","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-3.0.1.tgz","fileCount":36,"integrity":"sha512-TSw5jOcbhZ4tXmThskUb4oPdpjP1+BTxdF96f3u8aViXm/trRFTcV3V6Gw0HT+oLZFuu2aeIEiX5Ylw7eIW8Fw==","signatures":[{"sig":"MEUCIQDQFrLgfajAnuVqtXZH2iBR3OtEgfsXKjRrrGbBw1UTcwIgEqwp2R/DghebBed7ayYbd8h5RtMMIUBViovNg+t+PzQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74953},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index","require":"./dist/index"},"./types":{"types":"./dist/types/types.d.ts","import":"./dist/types","require":"./dist/types"},"./utils":{"types":"./dist/types/utils.d.ts","import":"./dist/utils","require":"./dist/utils"},"./utils/standardTransformers":{"types":"./dist/types/utils/standardTransformers.d.ts","import":"./dist/utils/standardTransformers","require":"./dist/utils/standardTransformers"},"./utils/standardTransformers/map":{"types":"./dist/types/utils/standardTransformers/map.d.ts","import":"./dist/utils/standardTransformers/map","require":"./dist/utils/standardTransformers/map"},"./utils/standardTransformers/set":{"types":"./dist/types/utils/standardTransformers/set.d.ts","import":"./dist/utils/standardTransformers/set","require":"./dist/utils/standardTransformers/set"},"./utils/standardTransformers/url":{"types":"./dist/types/utils/standardTransformers/url.d.ts","import":"./dist/utils/standardTransformers/url","require":"./dist/utils/standardTransformers/url"},"./utils/standardTransformers/date":{"types":"./dist/types/utils/standardTransformers/date.d.ts","import":"./dist/utils/standardTransformers/date","require":"./dist/utils/standardTransformers/date"},"./utils/standardTransformers/error":{"types":"./dist/types/utils/standardTransformers/error.d.ts","import":"./dist/utils/standardTransformers/error","require":"./dist/utils/standardTransformers/error"},"./utils/standardTransformers/regex":{"types":"./dist/types/utils/standardTransformers/regex.d.ts","import":"./dist/utils/standardTransformers/regex","require":"./dist/utils/standardTransformers/regex"},"./utils/standardTransformers/bigint":{"types":"./dist/types/utils/standardTransformers/bigint.d.ts","import":"./dist/utils/standardTransformers/bigint","require":"./dist/utils/standardTransformers/bigint"}},"funding":"https://ko-fi.com/hackylabs","gitHead":"245f8432e867e9bc46c74ac179fb51fe0661ab1d","private":false,"scripts":{"lint":"eslint","load":"npx vitest run test/load/redact.test.ts --reporter=basic --coverage=false","test":"npx vitest run","unit":"npx vitest run test/unit --reporter=verbose","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-exports && npm run update-readme && npm run update-license","load:dev":"npx vitest test/load/redact.test.ts --coverage=false --reporter=basic","test:dev":"npx vitest","unit:dev":"npx vitest test/unit --coverage=false --reporter=verbose","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json && ./scripts/js-to-mjs.sh","update-readme":"npx ts-node ./scripts/update-readme.ts","update-exports":"npx ts-node ./scripts/update-exports.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"hello@bengreen.dev"},"deprecated":"No longer maintained. Upgrade to 2.2.2 (2.x line), or to 3.0.5 or 4.0.0.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"20.19.3","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","autocannon":"8.0.0","typescript":"5.6.2","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","eslint-plugin-n":"17.9.0","@hackylabs/obglob":"1.1.2","@types/autocannon":"7.12.6","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"editor.formatOnSave":true,"editor.formatOnPaste":true,"_npmOperationalInternal":{"tmp":"tmp/deep-redact_3.0.1_1752251073100_0.019308222468033875","host":"s3://npm-registry-packages-npm-production"},"editor.defaultFormatter":"EditorConfig.editorconfig"},"3.0.2":{"name":"@hackylabs/deep-redact","version":"3.0.2","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@3.0.2","maintainers":[{"name":"gcmbeng","email":"hello@bengreen.dev"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["autocannon, fast-redact and obglob are installed only as internal benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"2acfc1b3fc08ff548266113ffda3538dbb31fcc9","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-3.0.2.tgz","fileCount":36,"integrity":"sha512-iaAdS2zDrWTXveKPQqYZG9mGOfkiM6H9Ltj9YWCMaPjJWbCwWZRytWJrKMWHLRkCxOUrp+LHiKPfey8viunQrw==","signatures":[{"sig":"MEUCIQCNSVkjKeJHYsp+nhbayIowFrQ+W+qDvrQZP2cayAeb2AIgMetzNu5MLjKg617qtQETojn5aQQy8odLevnDFAilVvo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@3.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76651},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index","require":"./dist/index"},"./types":{"types":"./dist/types/types.d.ts","import":"./dist/types","require":"./dist/types"},"./utils":{"types":"./dist/types/utils.d.ts","import":"./dist/utils","require":"./dist/utils"},"./utils/standardTransformers":{"types":"./dist/types/utils/standardTransformers.d.ts","import":"./dist/utils/standardTransformers","require":"./dist/utils/standardTransformers"},"./utils/standardTransformers/map":{"types":"./dist/types/utils/standardTransformers/map.d.ts","import":"./dist/utils/standardTransformers/map","require":"./dist/utils/standardTransformers/map"},"./utils/standardTransformers/set":{"types":"./dist/types/utils/standardTransformers/set.d.ts","import":"./dist/utils/standardTransformers/set","require":"./dist/utils/standardTransformers/set"},"./utils/standardTransformers/url":{"types":"./dist/types/utils/standardTransformers/url.d.ts","import":"./dist/utils/standardTransformers/url","require":"./dist/utils/standardTransformers/url"},"./utils/standardTransformers/date":{"types":"./dist/types/utils/standardTransformers/date.d.ts","import":"./dist/utils/standardTransformers/date","require":"./dist/utils/standardTransformers/date"},"./utils/standardTransformers/error":{"types":"./dist/types/utils/standardTransformers/error.d.ts","import":"./dist/utils/standardTransformers/error","require":"./dist/utils/standardTransformers/error"},"./utils/standardTransformers/regex":{"types":"./dist/types/utils/standardTransformers/regex.d.ts","import":"./dist/utils/standardTransformers/regex","require":"./dist/utils/standardTransformers/regex"},"./utils/standardTransformers/bigint":{"types":"./dist/types/utils/standardTransformers/bigint.d.ts","import":"./dist/utils/standardTransformers/bigint","require":"./dist/utils/standardTransformers/bigint"}},"funding":"https://ko-fi.com/hackylabs","gitHead":"9db9c0dfe5d554d2288aa4b40b2c2249c689cde5","private":false,"scripts":{"lint":"eslint","load":"npx vitest run test/load/redact.test.ts --reporter=basic --coverage=false","test":"npx vitest run","unit":"npx vitest run test/unit --reporter=verbose","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-exports && npm run update-readme && npm run update-license","load:dev":"npx vitest test/load/redact.test.ts --coverage=false --reporter=basic","test:dev":"npx vitest","unit:dev":"npx vitest test/unit --coverage=false --reporter=verbose","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json && ./scripts/js-to-mjs.sh","update-readme":"npx ts-node ./scripts/update-readme.ts","update-exports":"npx ts-node ./scripts/update-exports.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"hello@bengreen.dev"},"deprecated":"No longer maintained. Upgrade to 2.2.2 (2.x line), or to 3.0.5 or 4.0.0.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"20.19.3","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","autocannon":"8.0.0","typescript":"5.6.2","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","eslint-plugin-n":"17.9.0","@hackylabs/obglob":"1.1.2","@types/autocannon":"7.12.6","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"editor.formatOnSave":true,"editor.formatOnPaste":true,"_npmOperationalInternal":{"tmp":"tmp/deep-redact_3.0.2_1752479728889_0.5210987772601656","host":"s3://npm-registry-packages-npm-production"},"editor.defaultFormatter":"EditorConfig.editorconfig"},"3.0.3":{"name":"@hackylabs/deep-redact","version":"3.0.3","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@3.0.3","maintainers":[{"name":"gcmbeng","email":"hello@bengreen.dev"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["autocannon, fast-redact and obglob are installed only as internal benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"148e26e2769d15018a85ca78fa86571046bc011d","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-3.0.3.tgz","fileCount":39,"integrity":"sha512-8/QFxp0zjiY50Ex/gvGCJnp/u91LNsEa4LnSAuVwHURyx9ZPLIohs7DHZFqqh+aeQFFN5xdBG0FLSgnkfKxs1w==","signatures":[{"sig":"MEQCIAjIOTZwOu928x3Oy1xzHO/DjOXRKAc02fB8hTuW9+L9AiARcukafGtKipOHsN/e4FAFHQ+5mODkRt6DQ0/vjEp3xg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@3.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93256},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/types.d.ts","import":"./dist/esm/types.mjs","require":"./dist/cjs/types.js"},"./utils":{"types":"./dist/types/utils.d.ts","import":"./dist/esm/utils.mjs","require":"./dist/cjs/utils.js"},"./utils/TransformerRegistry":{"types":"./dist/types/utils/TransformerRegistry.d.ts","import":"./dist/esm/utils/TransformerRegistry.mjs","require":"./dist/cjs/utils/TransformerRegistry.js"},"./utils/standardTransformers":{"types":"./dist/types/utils/standardTransformers.d.ts","import":"./dist/esm/utils/standardTransformers.mjs","require":"./dist/cjs/utils/standardTransformers.js"},"./utils/standardTransformers/map":{"types":"./dist/types/utils/standardTransformers/map.d.ts","import":"./dist/esm/utils/standardTransformers/map.mjs","require":"./dist/cjs/utils/standardTransformers/map.js"},"./utils/standardTransformers/set":{"types":"./dist/types/utils/standardTransformers/set.d.ts","import":"./dist/esm/utils/standardTransformers/set.mjs","require":"./dist/cjs/utils/standardTransformers/set.js"},"./utils/standardTransformers/url":{"types":"./dist/types/utils/standardTransformers/url.d.ts","import":"./dist/esm/utils/standardTransformers/url.mjs","require":"./dist/cjs/utils/standardTransformers/url.js"},"./utils/standardTransformers/date":{"types":"./dist/types/utils/standardTransformers/date.d.ts","import":"./dist/esm/utils/standardTransformers/date.mjs","require":"./dist/cjs/utils/standardTransformers/date.js"},"./utils/standardTransformers/error":{"types":"./dist/types/utils/standardTransformers/error.d.ts","import":"./dist/esm/utils/standardTransformers/error.mjs","require":"./dist/cjs/utils/standardTransformers/error.js"},"./utils/standardTransformers/regex":{"types":"./dist/types/utils/standardTransformers/regex.d.ts","import":"./dist/esm/utils/standardTransformers/regex.mjs","require":"./dist/cjs/utils/standardTransformers/regex.js"},"./utils/standardTransformers/bigint":{"types":"./dist/types/utils/standardTransformers/bigint.d.ts","import":"./dist/esm/utils/standardTransformers/bigint.mjs","require":"./dist/cjs/utils/standardTransformers/bigint.js"}},"funding":"https://ko-fi.com/hackylabs","gitHead":"dc3a0134b8e101961f81e72170fa2a0485f5cac8","private":false,"scripts":{"lint":"eslint","test":"npx vitest run","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-exports && npm run test:build && npm run update-readme && npm run update-license","test:dev":"npx vitest","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json && ./scripts/js-to-mjs.sh","test:load":"npx vitest run test/load/redact.test.ts --reporter=basic --coverage=false","test:unit":"npx vitest run test/unit --reporter=verbose","test:build":"npx vitest run test/build.test.ts --reporter=basic --coverage=false","test:load:dev":"npx vitest test/load/redact.test.ts --coverage=false --reporter=basic","test:unit:dev":"npx vitest test/unit --coverage=false --reporter=verbose","update-readme":"npx ts-node ./scripts/update-readme.ts","test:build:dev":"npm run build:cjs && npm run build:esm && npm run update-exports && npx vitest test/build.test.ts --coverage=false --reporter=basic","update-exports":"npx ts-node ./scripts/update-exports.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"hello@bengreen.dev"},"deprecated":"No longer maintained. Upgrade to 2.2.2 (2.x line), or to 3.0.5 or 4.0.0.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.8.2","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"20.19.3","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","autocannon":"8.0.0","typescript":"5.6.2","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","eslint-plugin-n":"17.9.0","@hackylabs/obglob":"1.1.2","@types/autocannon":"7.12.6","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"editor.formatOnSave":true,"editor.formatOnPaste":true,"_npmOperationalInternal":{"tmp":"tmp/deep-redact_3.0.3_1752854739810_0.4387220935338836","host":"s3://npm-registry-packages-npm-production"},"editor.defaultFormatter":"EditorConfig.editorconfig"},"3.0.4":{"name":"@hackylabs/deep-redact","version":"3.0.4","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@3.0.4","maintainers":[{"name":"gcmbeng","email":"hello@bengreen.dev"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["autocannon, fast-redact and obglob are installed only as internal benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"c02e77764252bff82ee86590808a90193a06a647","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-3.0.4.tgz","fileCount":39,"integrity":"sha512-N0YS4KgBfoqwt90BwjPTDGriZUEFG0xKcU5DI/qKR6d8X731Ump/7sSefUMkccbS6MZ3P9T65ED99KHnn06FEA==","signatures":[{"sig":"MEUCIA0X7btKdlBdHB4Rcquo2jaqM7QQZP6gZA55dvCshJahAiEA44PF7trO8DOGaPsJ0iPa9NUeq49gORJg/yKj/sOlPcs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@3.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92174},"main":"./dist/index.js","types":"./dist/types/index.d.ts","module":"./dist/index.mjs","exports":{"./index.ts":{"types":"./dist/types/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types.ts":{"types":"./dist/types/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./utils/index.ts":{"types":"./dist/types/utils/index.d.ts","import":"./dist/utils/index.mjs","require":"./dist/utils/index.js"},"./utils/TransformerRegistry.ts":{"types":"./dist/types/utils/TransformerRegistry.d.ts","import":"./dist/utils/TransformerRegistry.mjs","require":"./dist/utils/TransformerRegistry.js"},"./utils/standardTransformers/map.ts":{"types":"./dist/types/utils/standardTransformers/map.d.ts","import":"./dist/utils/standardTransformers/map.mjs","require":"./dist/utils/standardTransformers/map.js"},"./utils/standardTransformers/set.ts":{"types":"./dist/types/utils/standardTransformers/set.d.ts","import":"./dist/utils/standardTransformers/set.mjs","require":"./dist/utils/standardTransformers/set.js"},"./utils/standardTransformers/url.ts":{"types":"./dist/types/utils/standardTransformers/url.d.ts","import":"./dist/utils/standardTransformers/url.mjs","require":"./dist/utils/standardTransformers/url.js"},"./utils/standardTransformers/date.ts":{"types":"./dist/types/utils/standardTransformers/date.d.ts","import":"./dist/utils/standardTransformers/date.mjs","require":"./dist/utils/standardTransformers/date.js"},"./utils/standardTransformers/error.ts":{"types":"./dist/types/utils/standardTransformers/error.d.ts","import":"./dist/utils/standardTransformers/error.mjs","require":"./dist/utils/standardTransformers/error.js"},"./utils/standardTransformers/index.ts":{"types":"./dist/types/utils/standardTransformers/index.d.ts","import":"./dist/utils/standardTransformers/index.mjs","require":"./dist/utils/standardTransformers/index.js"},"./utils/standardTransformers/regex.ts":{"types":"./dist/types/utils/standardTransformers/regex.d.ts","import":"./dist/utils/standardTransformers/regex.mjs","require":"./dist/utils/standardTransformers/regex.js"},"./utils/standardTransformers/bigint.ts":{"types":"./dist/types/utils/standardTransformers/bigint.d.ts","import":"./dist/utils/standardTransformers/bigint.mjs","require":"./dist/utils/standardTransformers/bigint.js"}},"funding":"https://ko-fi.com/hackylabs","gitHead":"8effa23511958cbdbcbcb834de34e63be33d4d5d","private":false,"scripts":{"lint":"eslint","test":"npx vitest run","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-exports && npm run test:build && npm run update-readme && npm run update-license","test:dev":"npx vitest","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:dev":"rm -rf dist && npm run build:esm && npm run build:cjs && npm run update-exports","build:esm":"tsc --project tsconfig.esm.json && ./scripts/js-to-mjs.sh","test:load":"npx vitest run test/load/redact.test.ts --reporter=basic --coverage=false","test:unit":"npx vitest run test/unit --reporter=verbose","test:build":"npx vitest run test/build.test.ts --reporter=basic --coverage=false","test:load:dev":"npx vitest test/load/redact.test.ts --coverage=false --reporter=basic","test:unit:dev":"npx vitest test/unit --coverage=false --reporter=verbose","update-readme":"npx ts-node ./scripts/update-readme.ts","test:build:dev":"npm run build:cjs && npm run build:esm && npm run update-exports && npx vitest test/build.test.ts --coverage=false --reporter=basic","update-exports":"npx ts-node ./scripts/update-exports.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"hello@bengreen.dev"},"deprecated":"No longer maintained. Upgrade to 2.2.2 (2.x line), or to 3.0.5 or 4.0.0.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.9.3","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","autocannon":"8.0.0","typescript":"5.6.2","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","eslint-plugin-n":"17.9.0","@hackylabs/obglob":"1.1.2","@types/autocannon":"7.12.6","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"editor.formatOnSave":true,"editor.formatOnPaste":true,"_npmOperationalInternal":{"tmp":"tmp/deep-redact_3.0.4_1757859179243_0.6004652514129483","host":"s3://npm-registry-packages-npm-production"},"editor.defaultFormatter":"EditorConfig.editorconfig"},"3.0.5":{"name":"@hackylabs/deep-redact","version":"3.0.5","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@3.0.5","maintainers":[{"name":"gcmbeng","email":"hello@bengreen.dev"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["autocannon, fast-redact and obglob are installed only as internal benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"cddcd4ad3e41719dc3146f4af1ecf3b6082575c6","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-3.0.5.tgz","fileCount":39,"integrity":"sha512-CI6TJytOngHiD9RCjBBwsBrg5kCkyK74RBxawLCQ8b6yOzDgIPN4/zRI/YvL6IV18Xcb6HI93Fo2bzJ19efNqQ==","signatures":[{"sig":"MEYCIQDkv+wE86jCCOY8oXPBlMp/wyYhHa3bIUl7WVerkO8iIgIhALr8kzOnnkvW4LgOfWKWkBOtf8T5sLSO3ggEuW9B98zd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@3.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92305},"main":"./dist/index.js","types":"./dist/types/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./index.ts":{"types":"./dist/types/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types.ts":{"types":"./dist/types/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./utils/index.ts":{"types":"./dist/types/utils/index.d.ts","import":"./dist/utils/index.mjs","require":"./dist/utils/index.js"},"./utils/TransformerRegistry.ts":{"types":"./dist/types/utils/TransformerRegistry.d.ts","import":"./dist/utils/TransformerRegistry.mjs","require":"./dist/utils/TransformerRegistry.js"},"./utils/standardTransformers/map.ts":{"types":"./dist/types/utils/standardTransformers/map.d.ts","import":"./dist/utils/standardTransformers/map.mjs","require":"./dist/utils/standardTransformers/map.js"},"./utils/standardTransformers/set.ts":{"types":"./dist/types/utils/standardTransformers/set.d.ts","import":"./dist/utils/standardTransformers/set.mjs","require":"./dist/utils/standardTransformers/set.js"},"./utils/standardTransformers/url.ts":{"types":"./dist/types/utils/standardTransformers/url.d.ts","import":"./dist/utils/standardTransformers/url.mjs","require":"./dist/utils/standardTransformers/url.js"},"./utils/standardTransformers/date.ts":{"types":"./dist/types/utils/standardTransformers/date.d.ts","import":"./dist/utils/standardTransformers/date.mjs","require":"./dist/utils/standardTransformers/date.js"},"./utils/standardTransformers/error.ts":{"types":"./dist/types/utils/standardTransformers/error.d.ts","import":"./dist/utils/standardTransformers/error.mjs","require":"./dist/utils/standardTransformers/error.js"},"./utils/standardTransformers/index.ts":{"types":"./dist/types/utils/standardTransformers/index.d.ts","import":"./dist/utils/standardTransformers/index.mjs","require":"./dist/utils/standardTransformers/index.js"},"./utils/standardTransformers/regex.ts":{"types":"./dist/types/utils/standardTransformers/regex.d.ts","import":"./dist/utils/standardTransformers/regex.mjs","require":"./dist/utils/standardTransformers/regex.js"},"./utils/standardTransformers/bigint.ts":{"types":"./dist/types/utils/standardTransformers/bigint.d.ts","import":"./dist/utils/standardTransformers/bigint.mjs","require":"./dist/utils/standardTransformers/bigint.js"}},"funding":"https://ko-fi.com/hackylabs","gitHead":"cbef08d061fa43f16cf5b7debd6c0bae1da0e672","private":false,"scripts":{"lint":"eslint","test":"npx vitest run","bench":"npx vitest bench --watch=false","build":"npm run lint && npm run test && npm run bench && npm run build:esm && npm run build:cjs && npm run update-exports && npm run test:build && npm run update-readme && npm run update-license","test:dev":"npx vitest","bench:dev":"npx vitest bench","build:cjs":"tsc --project tsconfig.cjs.json","build:dev":"rm -rf dist && npm run build:esm && npm run build:cjs && npm run update-exports","build:esm":"tsc --project tsconfig.esm.json && ./scripts/js-to-mjs.sh","test:load":"npx vitest run test/load/redact.test.ts --reporter=basic --coverage=false","test:unit":"npx vitest run test/unit --reporter=verbose","test:build":"npx vitest run test/build.test.ts --reporter=basic --coverage=false","test:load:dev":"npx vitest test/load/redact.test.ts --coverage=false --reporter=basic","test:unit:dev":"npx vitest test/unit --coverage=false --reporter=verbose","update-readme":"npx ts-node ./scripts/update-readme.ts","test:build:dev":"npm run build:cjs && npm run build:esm && npm run update-exports && npx vitest test/build.test.ts --coverage=false --reporter=basic","update-exports":"npx ts-node ./scripts/update-exports.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"hello@bengreen.dev"},"repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"10.9.4","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","autocannon":"8.0.0","typescript":"5.6.2","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","eslint-plugin-n":"17.9.0","@hackylabs/obglob":"1.1.2","@types/autocannon":"7.12.6","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"editor.formatOnSave":true,"editor.formatOnPaste":true,"_npmOperationalInternal":{"tmp":"tmp/deep-redact_3.0.5_1772964902004_0.20254017658093648","host":"s3://npm-registry-packages-npm-production"},"editor.defaultFormatter":"EditorConfig.editorconfig"},"4.0.0":{"name":"@hackylabs/deep-redact","version":"4.0.0","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@4.0.0","maintainers":[{"name":"gcmbeng","email":"hello@bengreen.dev"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["deep-redact-v3 and fast-redact are installed only as internal benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"9192cc9703ba2c4819b82cae23ff4cd752ca9125","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-4.0.0.tgz","fileCount":15,"integrity":"sha512-gyCcJNhX9T4G8YHjCKbTdcAbe3UIh2yqsRChPZV0MIb3VCGiZdG7MVReZYQ3+q6lW8dfvWwKKgaPEOIA9a9Xtw==","signatures":[{"sig":"MEUCIQDmEyHHVbXYBnl1YV8AhXlKOL1A5sn90KMneC4oG0+wNQIgMm+TAjgCDJwmr/75SY6NFnPYstrL7/H7ZoE2TOHHCyw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":261938},"main":"./dist/index.cjs","type":"module","_from":"file:hackylabs-deep-redact-4.0.0.tgz","types":"./dist/index.d.ts","volta":{"node":"24.14.1","pnpm":"10.33.0"},"module":"./dist/index.js","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json","./adapters/console":{"types":"./dist/adapters/console/index.d.ts","import":"./dist/adapters/console/index.js","require":"./dist/adapters/console/index.cjs"}},"funding":"https://ko-fi.com/hackylabs","private":false,"scripts":{"lint":"pnpm exec eslint . && pnpm exec tsc --noEmit","test":"pnpm run build && pnpm run test:contract","bench":"pnpm run bench:speed","build":"pnpm run verify-generated-files && pnpm exec tsdown","generate":"pnpm run generate-exports && pnpm run generate-readme && pnpm run generate-precedence-doc && pnpm run generate-one-way-redaction-doc && pnpm run generate-fast-redact-migration-doc && pnpm run generate-v3-migration-doc && pnpm run generate-example-docs && pnpm run generate:standardisation-guide","bench:speed":"pnpm run build && node --experimental-strip-types ./scripts/run-benchmarks.ts","test:contract":"pnpm exec vitest run test/build.test.ts test/contract/**/*.test.ts test/security/*.test.ts --reporter=verbose","bench:resource":"pnpm run build && node --expose-gc --experimental-strip-types ./scripts/run-resource-benchmarks.ts","generate-readme":"node --experimental-strip-types ./scripts/generate-readme.ts","verify:examples":"pnpm run build && node --experimental-strip-types ./scripts/verify-examples.ts","generate-exports":"node --experimental-strip-types ./scripts/generate-exports.ts","verify:migration:v3":"pnpm run build && node --experimental-strip-types ./scripts/verify-v3-migration.ts","bench:generate-charts":"node --experimental-strip-types ./scripts/generate-benchmark-charts.ts","generate-example-docs":"node --experimental-strip-types ./scripts/generate-example-docs.ts","verify:install-matrix":"pnpm run build && node --experimental-strip-types ./scripts/verify-install-matrix.ts","verify-generated-files":"node --experimental-strip-types ./scripts/verify-generated-files.ts","generate-precedence-doc":"node --experimental-strip-types ./scripts/generate-precedence-doc.ts","verify:speed-benchmarks":"pnpm run build && node --experimental-strip-types ./scripts/verify-speed-benchmarks.ts","bench:speed:generate-doc":"node --experimental-strip-types ./scripts/generate-benchmark-doc.ts","generate-v3-migration-doc":"node --experimental-strip-types ./scripts/generate-v3-migration-doc.ts","verify:resource-benchmarks":"pnpm run build && node --experimental-strip-types ./scripts/verify-resource-benchmarks.ts","bench:resource:generate-doc":"node --experimental-strip-types ./scripts/generate-resource-benchmark-doc.ts","verify:migration:fast-redact":"pnpm run build && node --experimental-strip-types ./scripts/verify-fast-redact-migration.ts","generate-one-way-redaction-doc":"node --experimental-strip-types ./scripts/generate-one-way-redaction-doc.ts","generate:standardisation-guide":"node --experimental-strip-types ./scripts/generate-standardisation-guide.ts","generate-fast-redact-migration-doc":"node --experimental-strip-types ./scripts/generate-fast-redact-migration-doc.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6c2cc83f-5c39-40bf-a755-e62aefaf3882"}},"_resolved":"/tmp/2705de7dfe3dc859b9a9fefcf12c0e5d/hackylabs-deep-redact-4.0.0.tgz","_integrity":"sha512-gyCcJNhX9T4G8YHjCKbTdcAbe3UIh2yqsRChPZV0MIb3VCGiZdG7MVReZYQ3+q6lW8dfvWwKKgaPEOIA9a9Xtw==","deprecated":"Buggy serialised output: under serialise:true, Map/Set circular-marker paths leaked the internal 'value' wrapper, plus a depth performance cliff. Both fixed in 4.0.1 — please upgrade.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"11.11.0","description":"Deeply redact sensitive data from objects, arrays and arbitrary strings (e.g. XML or raw cookies data) with a composable, function-first API.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"vega":"6.2.0","eslint":"9.39.4","tsdown":"0.21.7","vitest":"4.1.4","globals":"16.5.0","vega-lite":"6.4.3","@eslint/js":"9.39.4","typescript":"6.0.2","@types/node":"24.1.0","fast-redact":"3.5.0","deep-redact-v3":"npm:@hackylabs/deep-redact@^3.0.0","typescript-eslint":"8.59.0","@types/fast-redact":"3.0.4","eslint-plugin-unicorn":"59.0.1","@stylistic/eslint-plugin":"4.4.1"},"editor.formatOnSave":true,"editor.formatOnPaste":true,"_npmOperationalInternal":{"tmp":"tmp/deep-redact_4.0.0_1780847320598_0.5328864514967246","host":"s3://npm-registry-packages-npm-production"},"editor.defaultFormatter":"EditorConfig.editorconfig"},"2.2.2":{"name":"@hackylabs/deep-redact","version":"2.2.2","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@2.2.2","maintainers":[{"name":"gcmbeng","email":"hello@bengreen.dev"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["fast-redact and obglob are installed only as benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"aba840002f4083177b462652fc8fdcb7965bb621","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-2.2.2.tgz","fileCount":12,"integrity":"sha512-wOuX1KXYE7TuHL7y2X5d+eRy0ORaq81LtU5IprtcvgoBmsv4bkFbRhIkV2rVpwg1x2+okBTmwAB56DyFRQartg==","signatures":[{"sig":"MEUCIAIORxzDdmz7n59HinrM+vibWXEc9pezh9FZOYhEjoYeAiEA1s/E0IBOwQdlBOYvQeDQWeZ8POJCHH+Sl+3Zezf7sN4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66547},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.js"},"./utils/redactorUtils":{"types":"./dist/types/utils/redactorUtils.d.ts","import":"./dist/esm/utils/redactorUtils.mjs","require":"./dist/cjs/utils/redactorUtils.js"}},"funding":"https://ko-fi.com/hackylabs","private":false,"scripts":{"lint":"eslint","test":"npx vitest run","build":"npm run lint && npm run test && npm run build:esm && npm run build:cjs && npm run update-readme && npm run update-license","test:dev":"npx vitest","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json && ./scripts/js-to-mjs.sh","update-readme":"npx ts-node ./scripts/update-readme.ts","update-license":"npx ts-node ./scripts/update-license.ts"},"_npmUser":{"name":"gcmbeng","email":"hello@bengreen.dev"},"repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"11.11.0","description":"A fast, safe and configurable zero-dependency library for redacting strings or deeply redacting arrays and objects.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"8.57.0","vitest":"2.0.4","superjson":"2.2.1","typescript":"5.6.2","@types/node":"20.14.12","fast-redact":"3.5.0","@memlab/core":"1.1.34","image-charts":"6.1.19","eslint-plugin-n":"17.9.0","@hackylabs/obglob":"1.1.2","@types/fast-redact":"3.0.4","@vitest/coverage-v8":"2.0.4","eslint-plugin-import":"2.29.1","eslint-plugin-promise":"7.0.0","@typescript-eslint/parser":"7.14.1","eslint-config-airbnb-base":"15.0.0","eslint-config-airbnb-typescript":"18.0.0","@typescript-eslint/eslint-plugin":"7.14.1"},"_npmOperationalInternal":{"tmp":"tmp/deep-redact_2.2.2_1781345388661_0.2828739745266966","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@hackylabs/deep-redact","version":"4.0.1","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@4.0.1","maintainers":[{"name":"gcmbeng","email":"hello@bengreen.dev"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["deep-redact-v2, deep-redact-v3, deep-redact-v4-baseline (released 4.0.0) and fast-redact are installed only as internal benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"faf6879f23234e0130813f0c331e7861cc214270","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-4.0.1.tgz","fileCount":15,"integrity":"sha512-1qn6tQwHqsQ41M/x+hoqiqYfeS6ws7sSlFEqihrMPbJpOCGFfNS4BXpsfmtDXy7xB4RhDm7isDasGKL/dwMTeg==","signatures":[{"sig":"MEQCIHCs9Hpexajp1H8aTKvtqmqqdsfPrZsHrzbDO1uxBO/WAiAIKTIJBt++WE2/uQ3/gcjzqKZPKqp722wesUFv4USHkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@4.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":267377},"main":"./dist/index.cjs","type":"module","_from":"file:hackylabs-deep-redact-4.0.1.tgz","types":"./dist/index.d.ts","volta":{"node":"24.14.1","pnpm":"10.33.0"},"module":"./dist/index.js","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json","./adapters/console":{"types":"./dist/adapters/console/index.d.ts","import":"./dist/adapters/console/index.js","require":"./dist/adapters/console/index.cjs"}},"funding":"https://ko-fi.com/hackylabs","private":false,"scripts":{"lint":"pnpm exec eslint . && pnpm exec tsc --noEmit","test":"pnpm run build && pnpm run test:contract","bench":"pnpm run bench:speed","build":"pnpm run verify-generated-files && pnpm exec tsdown","generate":"pnpm run generate-exports && pnpm run generate-readme && pnpm run generate-precedence-doc && pnpm run generate-one-way-redaction-doc && pnpm run generate-fast-redact-migration-doc && pnpm run generate-v3-migration-doc && pnpm run generate-example-docs && pnpm run generate:standardisation-guide","bench:speed":"pnpm run build && node --experimental-strip-types ./scripts/run-benchmarks.ts","test:contract":"pnpm exec vitest run test/build.test.ts test/contract/**/*.test.ts test/security/*.test.ts --reporter=verbose","bench:resource":"pnpm run build && node --expose-gc --experimental-strip-types ./scripts/run-resource-benchmarks.ts","generate-readme":"node --experimental-strip-types ./scripts/generate-readme.ts","verify:examples":"pnpm run build && node --experimental-strip-types ./scripts/verify-examples.ts","generate-exports":"node --experimental-strip-types ./scripts/generate-exports.ts","verify:migration:v3":"pnpm run build && node --experimental-strip-types ./scripts/verify-v3-migration.ts","bench:generate-charts":"node --experimental-strip-types ./scripts/generate-benchmark-charts.ts","generate-example-docs":"node --experimental-strip-types ./scripts/generate-example-docs.ts","verify:install-matrix":"pnpm run build && node --experimental-strip-types ./scripts/verify-install-matrix.ts","verify-generated-files":"node --experimental-strip-types ./scripts/verify-generated-files.ts","generate-precedence-doc":"node --experimental-strip-types ./scripts/generate-precedence-doc.ts","verify:speed-benchmarks":"pnpm run build && node --experimental-strip-types ./scripts/verify-speed-benchmarks.ts","bench:speed:generate-doc":"node --experimental-strip-types ./scripts/generate-benchmark-doc.ts","generate-v3-migration-doc":"node --experimental-strip-types ./scripts/generate-v3-migration-doc.ts","verify:resource-benchmarks":"pnpm run build && node --experimental-strip-types ./scripts/verify-resource-benchmarks.ts","bench:resource:generate-doc":"node --experimental-strip-types ./scripts/generate-resource-benchmark-doc.ts","verify:migration:fast-redact":"pnpm run build && node --experimental-strip-types ./scripts/verify-fast-redact-migration.ts","generate-one-way-redaction-doc":"node --experimental-strip-types ./scripts/generate-one-way-redaction-doc.ts","generate:standardisation-guide":"node --experimental-strip-types ./scripts/generate-standardisation-guide.ts","generate-fast-redact-migration-doc":"node --experimental-strip-types ./scripts/generate-fast-redact-migration-doc.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6c2cc83f-5c39-40bf-a755-e62aefaf3882"}},"_resolved":"/tmp/995938ac7d217bd0aa47d1ec376b9a3f/hackylabs-deep-redact-4.0.1.tgz","_integrity":"sha512-1qn6tQwHqsQ41M/x+hoqiqYfeS6ws7sSlFEqihrMPbJpOCGFfNS4BXpsfmtDXy7xB4RhDm7isDasGKL/dwMTeg==","deprecated":"4.0.1 skips redaction of class instances and Map/Set value types (only plain objects are traversed). Upgrade to 4.0.2, which restores full v3-compatible redaction.","repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"11.11.0","description":"Deeply redact sensitive data from objects, arrays and arbitrary strings (e.g. XML or raw cookies data) with a composable, function-first API.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"vega":"6.2.0","eslint":"9.39.4","tsdown":"0.21.7","vitest":"4.1.4","globals":"16.5.0","vega-lite":"6.4.3","@eslint/js":"9.39.4","typescript":"6.0.2","@types/node":"24.1.0","fast-redact":"3.5.0","deep-redact-v2":"npm:@hackylabs/deep-redact@2.2.1","deep-redact-v3":"npm:@hackylabs/deep-redact@^3.0.0","typescript-eslint":"8.59.0","@types/fast-redact":"3.0.4","eslint-plugin-unicorn":"59.0.1","deep-redact-v4-baseline":"npm:@hackylabs/deep-redact@4.0.0","@stylistic/eslint-plugin":"4.4.1"},"editor.formatOnSave":true,"editor.formatOnPaste":true,"_npmOperationalInternal":{"tmp":"tmp/deep-redact_4.0.1_1781959314685_0.5388627483769506","host":"s3://npm-registry-packages-npm-production"},"editor.defaultFormatter":"EditorConfig.editorconfig"},"4.0.2":{"name":"@hackylabs/deep-redact","version":"4.0.2","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"author":{"url":"https://bengreen.dev","name":"Benjamin Green"},"license":"MIT","_id":"@hackylabs/deep-redact@4.0.2","maintainers":[{"name":"gcmbeng","email":"hello@bengreen.dev"}],"homepage":"https://github.com/hackylabs/deep-redact#readme","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"//":["deep-redact-v2, deep-redact-v3, deep-redact-v4-baseline (released 4.0.0) and fast-redact are installed only as internal benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"dist":{"shasum":"28892fe355a9ad41a199b4d4c7b667c4d55ad1c2","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-4.0.2.tgz","fileCount":15,"integrity":"sha512-/XeucjLUl5f9ea/VHqbXf8ytJbS2yM/6RenUWJMRhfh5vH+UE5EBl4/KscR2CfuZOpS48lruVEmRXG1c0QbUFQ==","signatures":[{"sig":"MEQCICJ26s500nCfrGd74Jy2WmuEvfFNlsFMmhjYETYc9pYKAiB3zZhNTje2Ey5Tqoj3eyVQLP6sSsukjfktmYcwkZiZsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280659},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","volta":{"node":"24.14.1","pnpm":"10.33.0"},"module":"./dist/index.js","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json","./adapters/console":{"types":"./dist/adapters/console/index.d.ts","import":"./dist/adapters/console/index.js","require":"./dist/adapters/console/index.cjs"}},"funding":"https://ko-fi.com/hackylabs","gitHead":"ec4744de2df03ce602760ecf1de91ae7b6f5efd4","private":false,"scripts":{"lint":"pnpm exec eslint . && pnpm exec tsc --noEmit","test":"pnpm run build && pnpm run test:contract","bench":"pnpm run bench:speed","build":"pnpm run verify-generated-files && pnpm exec tsdown","generate":"pnpm run generate-exports && pnpm run generate-readme && pnpm run generate-precedence-doc && pnpm run generate-one-way-redaction-doc && pnpm run generate-fast-redact-migration-doc && pnpm run generate-v3-migration-doc && pnpm run generate-example-docs && pnpm run generate:standardisation-guide","bench:speed":"pnpm run build && node --experimental-strip-types ./scripts/run-benchmarks.ts","test:contract":"pnpm exec vitest run test/build.test.ts test/contract/**/*.test.ts test/security/*.test.ts --reporter=verbose","bench:resource":"pnpm run build && node --expose-gc --experimental-strip-types ./scripts/run-resource-benchmarks.ts","generate-readme":"node --experimental-strip-types ./scripts/generate-readme.ts","verify:examples":"pnpm run build && node --experimental-strip-types ./scripts/verify-examples.ts","generate-exports":"node --experimental-strip-types ./scripts/generate-exports.ts","verify:migration:v3":"pnpm run build && node --experimental-strip-types ./scripts/verify-v3-migration.ts","bench:generate-charts":"node --experimental-strip-types ./scripts/generate-benchmark-charts.ts","generate-example-docs":"node --experimental-strip-types ./scripts/generate-example-docs.ts","verify:install-matrix":"pnpm run build && node --experimental-strip-types ./scripts/verify-install-matrix.ts","verify-generated-files":"node --experimental-strip-types ./scripts/verify-generated-files.ts","generate-precedence-doc":"node --experimental-strip-types ./scripts/generate-precedence-doc.ts","verify:speed-benchmarks":"pnpm run build && node --experimental-strip-types ./scripts/verify-speed-benchmarks.ts","bench:runtime-containers":"pnpm run build && node --expose-gc --experimental-strip-types ./scripts/run-runtime-container-benchmarks.ts","bench:speed:generate-doc":"node --experimental-strip-types ./scripts/generate-benchmark-doc.ts","generate-v3-migration-doc":"node --experimental-strip-types ./scripts/generate-v3-migration-doc.ts","verify:resource-benchmarks":"pnpm run build && node --experimental-strip-types ./scripts/verify-resource-benchmarks.ts","bench:resource:generate-doc":"node --experimental-strip-types ./scripts/generate-resource-benchmark-doc.ts","verify:migration:fast-redact":"pnpm run build && node --experimental-strip-types ./scripts/verify-fast-redact-migration.ts","generate-one-way-redaction-doc":"node --experimental-strip-types ./scripts/generate-one-way-redaction-doc.ts","generate:standardisation-guide":"node --experimental-strip-types ./scripts/generate-standardisation-guide.ts","generate-fast-redact-migration-doc":"node --experimental-strip-types ./scripts/generate-fast-redact-migration-doc.ts"},"_npmUser":{"name":"gcmbeng","email":"hello@bengreen.dev"},"repository":{"url":"git+https://github.com/hackylabs/deep-redact.git","type":"git"},"_npmVersion":"11.11.0","description":"Deeply redact sensitive data from objects, arrays and arbitrary strings (e.g. XML or raw cookies data) with a composable, function-first API.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"vega":"6.2.0","eslint":"9.39.4","tsdown":"0.21.7","vitest":"4.1.4","globals":"16.5.0","vega-lite":"6.4.3","@eslint/js":"9.39.4","typescript":"6.0.2","@types/node":"24.1.0","fast-redact":"3.5.0","deep-redact-v2":"npm:@hackylabs/deep-redact@2.2.1","deep-redact-v3":"npm:@hackylabs/deep-redact@^3.0.0","typescript-eslint":"8.59.0","@types/fast-redact":"3.0.4","eslint-plugin-unicorn":"59.0.1","deep-redact-v4-baseline":"npm:@hackylabs/deep-redact@4.0.0","@stylistic/eslint-plugin":"4.4.1"},"editor.formatOnSave":true,"editor.formatOnPaste":true,"_npmOperationalInternal":{"tmp":"tmp/deep-redact_4.0.2_1782844305440_0.8990748615325328","host":"s3://npm-registry-packages-npm-production"},"editor.defaultFormatter":"EditorConfig.editorconfig"},"4.1.0":{"name":"@hackylabs/deep-redact","version":"4.1.0","description":"Deeply redact sensitive data from objects, arrays and arbitrary strings (e.g. XML or raw cookies data) with a composable, function-first API.","private":false,"license":"MIT","author":{"name":"Benjamin Green","url":"https://bengreen.dev"},"funding":"https://ko-fi.com/hackylabs","type":"module","packageManager":"pnpm@10.33.0","volta":{"node":"24.14.1","pnpm":"10.33.0"},"engines":{"node":">=22.18.0"},"sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types":"./dist/index.d.ts"},"./adapters/console":{"import":"./dist/adapters/console/index.js","require":"./dist/adapters/console/index.cjs","types":"./dist/adapters/console/index.d.ts"},"./package.json":"./package.json"},"keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"repository":{"type":"git","url":"git+https://github.com/hackylabs/deep-redact.git"},"scripts":{"bench":"pnpm run bench:speed","build":"pnpm run verify-generated-files && pnpm exec tsdown","generate":"pnpm run generate-exports && pnpm run generate-readme && pnpm run generate-precedence-doc && pnpm run generate-one-way-redaction-doc && pnpm run generate-fast-redact-migration-doc && pnpm run generate-v3-migration-doc && pnpm run generate-example-docs && pnpm run generate:standardisation-guide","generate-exports":"node --experimental-strip-types ./scripts/generate-exports.ts","generate-fast-redact-migration-doc":"node --experimental-strip-types ./scripts/generate-fast-redact-migration-doc.ts","generate-v3-migration-doc":"node --experimental-strip-types ./scripts/generate-v3-migration-doc.ts","generate-one-way-redaction-doc":"node --experimental-strip-types ./scripts/generate-one-way-redaction-doc.ts","generate-precedence-doc":"node --experimental-strip-types ./scripts/generate-precedence-doc.ts","generate-readme":"node --experimental-strip-types ./scripts/generate-readme.ts","generate:standardisation-guide":"node --experimental-strip-types ./scripts/generate-standardisation-guide.ts","lint":"pnpm exec eslint . && pnpm exec tsc --noEmit","test":"pnpm run build && pnpm run test:contract","test:contract":"pnpm exec vitest run test/build.test.ts test/contract/**/*.test.ts test/security/*.test.ts --reporter=verbose","verify:install-matrix":"pnpm run build && node --experimental-strip-types ./scripts/verify-install-matrix.ts","verify:migration:fast-redact":"pnpm run build && node --experimental-strip-types ./scripts/verify-fast-redact-migration.ts","verify:migration:v3":"pnpm run build && node --experimental-strip-types ./scripts/verify-v3-migration.ts","verify:examples":"pnpm run build && node --experimental-strip-types ./scripts/verify-examples.ts","verify-generated-files":"node --experimental-strip-types ./scripts/verify-generated-files.ts","generate-example-docs":"node --experimental-strip-types ./scripts/generate-example-docs.ts","bench:resource":"pnpm run build && node --expose-gc --experimental-strip-types ./scripts/run-resource-benchmarks.ts","bench:runtime-containers":"pnpm run build && node --expose-gc --experimental-strip-types ./scripts/run-runtime-container-benchmarks.ts","bench:resource:generate-doc":"node --experimental-strip-types ./scripts/generate-resource-benchmark-doc.ts","bench:speed":"pnpm run build && node --experimental-strip-types ./scripts/run-benchmarks.ts","bench:speed:generate-doc":"node --experimental-strip-types ./scripts/generate-benchmark-doc.ts","bench:generate-charts":"node --experimental-strip-types ./scripts/generate-benchmark-charts.ts","verify:resource-benchmarks":"pnpm run build && node --experimental-strip-types ./scripts/verify-resource-benchmarks.ts","verify:speed-benchmarks":"pnpm run build && node --experimental-strip-types ./scripts/verify-speed-benchmarks.ts"},"//":["deep-redact-v2, deep-redact-v3, deep-redact-v4-baseline (released 4.0.0) and fast-redact are installed only as internal benchmark comparisons and are not used in the library","all dependencies are for development purposes only"],"devDependencies":{"@eslint/js":"9.39.4","@stylistic/eslint-plugin":"4.4.1","@types/fast-redact":"3.0.4","@types/node":"24.1.0","deep-redact-v2":"npm:@hackylabs/deep-redact@2.2.1","deep-redact-v3":"npm:@hackylabs/deep-redact@^3.0.0","deep-redact-v4-baseline":"npm:@hackylabs/deep-redact@4.0.0","eslint":"10.6.0","eslint-plugin-unicorn":"59.0.1","fast-redact":"3.5.0","globals":"17.7.0","tsdown":"0.21.7","typescript":"6.0.3","typescript-eslint":"8.62.1","vega":"6.2.0","vega-lite":"6.4.3","vitest":"4.1.9"},"pnpm":{"overrides":{"vite":"8.0.16"}},"editor.formatOnSave":true,"editor.formatOnPaste":true,"editor.defaultFormatter":"EditorConfig.editorconfig","gitHead":"d68e5ce5a1db9badfa38f72528650754294f700d","_id":"@hackylabs/deep-redact@4.1.0","bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"homepage":"https://github.com/hackylabs/deep-redact#readme","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-vCrM/H7qydAf6kCjVRIHlX0g9x3EFjFPw1rdkou/3kvH80ti28qBJkZjo1Cdx64IVyIP/bQ58JAoeaFR8kl1Bw==","shasum":"e478448a939f47879956624ee9f857a3a7738e25","tarball":"https://registry.npmjs.org/@hackylabs/deep-redact/-/deep-redact-4.1.0.tgz","fileCount":13,"unpackedSize":292423,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hackylabs%2fdeep-redact@4.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFU4ztiGTKOhNN044ZdDeEUKn1ejnAZi48UTqyGYkDFHAiEA3b0xmm+R5wQz1c4RieRxaGbhg4QY0SCzko3JhkWKsts="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6c2cc83f-5c39-40bf-a755-e62aefaf3882"}},"directories":{},"maintainers":[{"name":"gcmbeng","email":"hello@bengreen.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/deep-redact_4.1.0_1787906935529_0.4886051372400795"},"_hasShrinkwrap":false}},"time":{"created":"2024-07-27T12:53:13.208Z","modified":"2026-08-28T08:48:55.992Z","1.0.0":"2024-07-27T12:53:13.479Z","1.0.1":"2024-07-30T20:48:53.000Z","2.0.0":"2024-08-23T16:16:51.350Z","2.0.1":"2024-09-08T10:50:13.324Z","2.0.2":"2024-09-28T15:40:17.383Z","2.1.0":"2024-10-05T16:43:40.453Z","2.2.0":"2024-11-23T17:38:07.993Z","2.2.1":"2025-01-30T17:38:19.127Z","3.0.0":"2025-07-11T15:59:01.900Z","3.0.1":"2025-07-11T16:24:33.278Z","3.0.2":"2025-07-14T07:55:29.118Z","3.0.3":"2025-07-18T16:05:40.003Z","3.0.4":"2025-09-14T14:12:59.449Z","3.0.5":"2026-03-08T10:15:02.166Z","4.0.0":"2026-06-07T15:48:40.750Z","2.2.2":"2026-06-13T10:09:48.806Z","4.0.1":"2026-06-20T12:41:54.808Z","4.0.2":"2026-06-30T18:31:45.576Z","4.1.0":"2026-08-28T08:48:55.652Z"},"bugs":{"url":"https://github.com/hackylabs/deep-redact/issues"},"author":{"name":"Benjamin Green","url":"https://bengreen.dev"},"license":"MIT","homepage":"https://github.com/hackylabs/deep-redact#readme","keywords":["json","xml","document","fast","redact","redaction","redactor","redacting","redacted","secrets","sensitive data","sensitive information","personal data","personally identifiable information","general data protection regulation","data protection","data security","GDPR","PII"],"repository":{"type":"git","url":"git+https://github.com/hackylabs/deep-redact.git"},"description":"Deeply redact sensitive data from objects, arrays and arbitrary strings (e.g. XML or raw cookies data) with a composable, function-first API.","maintainers":[{"name":"gcmbeng","email":"hello@bengreen.dev"}],"readme":"# Deep Redact\n\n[![npm version](https://badge.fury.io/js/@hackylabs%2Fdeep-redact.svg)](https://badge.fury.io/js/@hackylabs%2Fdeep-redact)\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/hackylabs/deep-redact/blob/main/LICENSE)\n\n@hackylabs/deep-redact is a rule-driven redaction library for Node.js and Deno. It lets you express what to redact — a key name, a path, a regex, or a substring — and the runtime locates and replaces it everywhere in the payload without requiring exhaustive path enumeration. Policies are compiled once at initialisation and reused across every request, making it suitable for high-throughput production use.\n\nLibraries like `fast-redact` require an explicit path for every location where a sensitive field might appear (`a.b.password`, `a.c.password`, …). Deep Redact inverts this: a single `keys: ['password']` rule targets every `password` field at any depth. It also adds capabilities that path-enumeration libraries cannot offer, such as partial string redaction (targeting a sensitive pattern inside a larger value) and wildcard path selectors for repeated structures.\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/hackylabs)\n\n## Features\n\n- **Depth-agnostic key rules** — redact any field by name at any nesting depth; no path enumeration required\n- **Exact and structured path targeting** — pin redaction to a specific location when precision is needed\n- **Regex property matching** — match field names by regular expression\n- **Substring targeting** — redact a sensitive string that appears inside a larger value, not just whole-value replacement\n- **Wildcard and exclusion path selectors** — handle repeated structures at virtually any depth (`['addresses.*', { ignore: 'country' }]`) without listing every index\n- **Structured and serialised output** — return a live object graph or a guaranteed-JSON-safe string (`serialise: true`)\n- **Built-in and custom transformers** — override how specific runtime types are represented in serialised output\n- **Built-in security** — prevent prototype pollution and DoS by memory exhaustion\n- **Console adapter** — optional `console.*` redaction via an explicit adapter\n\n## Contributor Baseline\n\n- Node `24.14.1`\n- `pnpm@10.33.0`\n- `tsdown`\n- `Vitest`\n- `ESLint`\n\n## Installation\n\n```sh\nnpm install @hackylabs/deep-redact\npnpm add @hackylabs/deep-redact\nyarn add @hackylabs/deep-redact\nbun add @hackylabs/deep-redact\n```\n\n**Deno** — add the package to your import map (`deno.json`):\n\n```json\n{\n  \"imports\": {\n    \"@hackylabs/deep-redact\": \"npm:@hackylabs/deep-redact@4.1.0\"\n  }\n}\n```\n\n## Quick Start\n\n```ts\nimport { deepRedact } from '@hackylabs/deep-redact'\n\nconst redact = deepRedact({ keys: ['password', 'token'] })\n\nredact({ user: { password: 'secret', safe: 'keep this' }, token: 'abc123', id: 1 })\n// { user: { password: '[REDACTED]', safe: 'keep this' }, token: '[REDACTED]', id: 1 }\n```\n\n## Benchmarks\n\nGenerated from committed artefacts in `test/artefacts/benchmarks/speed/`. Node.js 24 LTS, Apple M-series. Steady-state after 10,000 warmup iterations.\n\n### TLDR Headline\n\n> **If raw throughput is your primary constraint and you can accept exhaustive path enumeration, use [`fast-redact`](https://www.npmjs.com/package/fast-redact) instead.** It is purpose-built for maximum JSON-string output speed and will outperform any rule-driven library in that narrow scenario. Use Deep Redact when you need depth-agnostic targeting, wildcard paths, substring redaction, or built-in security guarantees.\n\nIf you choose fast-redact instead, be aware of the trade-offs:\n\n- **No depth-agnostic key rules** — every sensitive path must be enumerated explicitly\n- **No double-wildcard (`**`) path selectors** — you cannot target `records.**.email` without listing every depth\n- **No substring targeting** — whole-value replacement only; partial string redaction is not supported\n- **No serialisation-safe transformer pipeline** — no built-in handling for `BigInt`, `Date`, `Map`, `Set`, `Error`, `RegExp`, or `URL` values\n- **No prototype pollution protection** — no guard against `__proto__` and `constructor.prototype` injection\n- **No configurable depth or node limits** — no protection against DoS via deeply nested or excessively large payloads\n\n### Structured output (`serialise: false`)\n\nv4, v3, and fast-redact all return a plain JavaScript object.\n\n![Speed comparison — structured output](docs/benchmarks/charts/speed-comparison-non-serialised.svg)\n\n_† fast-redact is a third-party library, not a deep-redact version. It is shown as a throughput reference; its feature set and guarantees differ from deep-redact's, so it is not a like-for-like comparison._\n\nv4 is **~17× faster** than v3 on path-based workloads and **~10× faster** on wildcard workloads.\n\n### Serialised output (`serialise: true`)\n\nAll four solutions return a JSON string.\n\n![Speed comparison — serialised output](docs/benchmarks/charts/speed-comparison-serialised.svg)\n\n_† fast-redact is a third-party library; json-stringify-regex is a naive native approach (`JSON.stringify(value).replace(pattern, replacement)`), not a library. Neither performs deep-redact's structured redaction or offers its guarantees, so both are shown as throughput references rather than like-for-like comparisons._\n\nv4 remains faster than v3 in serialised mode. fast-redact and json-stringify-regex have a throughput advantage because their output path is oriented entirely toward string production.\n\nAgainst deep-redact v2 the serialised picture is mixed: v4 is roughly at parity on path-based workloads but slower on breadth-heavy (wildcard) ones. That gap is the cost of safety v2 does not provide — under `serialise: true`, v4 runs the type transformers that make `BigInt`, `Date`, `Map`, `Set`, `Error`, `RegExp`, and `URL` values JSON-safe, and it detects and neutralises circular references instead of throwing on them. (Node and depth budgeting via `maxNodes`/`maxDepth` runs by default — 500 / 50,000 — and throws on breach; the checks are counter increments and add negligible cost. Set `onBudgetExceeded: 'truncate'` to fail closed with a `[TRUNCATED]` marker instead of throwing.)\n\nThese safety passes are intrinsic to `serialise: true` and cannot be switched off individually. If you do not need those guarantees and want to match v2's throughput (or better), set `serialise: false` and run your own `JSON.stringify`: the structured-output path skips the transformer and circular-reference passes entirely. This restores v2's trade-offs too — your `JSON.stringify` will throw on `BigInt` and circular references, `Map`/`Set` serialise as `{}`, and `undefined` is dropped.\n\nFull speed and resource benchmark results: [`docs/benchmarks/speed-results.md`](docs/benchmarks/speed-results.md) and [`docs/benchmarks/resource-results.md`](docs/benchmarks/resource-results.md).\n\n## Configuration\n\n`deepRedact(options)` accepts a single options object. All options are optional.\n\n### Top-level options\n\n| Option | Type | Default | Required | Description |\n|--------|------|---------|----------|-------------|\n| `keys` | `KeySelector[]` | `[]` | No | Redact any field matching a listed key, at any depth |\n| `paths` | `PathEntry[]` | `[]` | No | Redact fields at specific paths; supports exact strings, structured paths, wildcards, and exclusion selectors |\n| `stringTests` | `StringTest[]` | `[]` | No | Redact matching patterns inside string values |\n| `censor` | `string \\| function` | `'[REDACTED]'` | No | Replacement value, or a function `(value, context) => replacement` |\n| `serialise` | `boolean \\| function` | `false` | No | `true` returns a JSON-safe string; a function receives the safe graph and may return any string |\n| `remove` | `boolean` | `false` | No | Remove matched keys from the output instead of replacing their values |\n| `retainStructure` | `boolean` | `false` | No | Keep descendant nodes traversable for lower-precedence rules when a parent is matched |\n| `replaceStringByLength` | `boolean` | `false` | No | Repeat the `censor` string to match the character length of the redacted value |\n| `types` | `ValueTypeName[]` | `['string']` | No | `typeof` categories eligible for redaction; a matched key whose value's type is not listed is left untouched |\n| `fuzzyKeyMatch` | `boolean` | `false` | No | Match when the configured key is a substring of the field name (e.g. `'pass'` matches `'password'`) |\n| `caseSensitiveKeyMatch` | `boolean` | `true` | No | When `false`, normalises key names (strips non-word characters, lowercases) before comparing |\n| `maxDepth` | `number` | `500` | No | Stop traversal beyond this nesting depth; guards against deeply nested payload DoS |\n| `maxNodes` | `number` | `50000` | No | Stop traversal after this many nodes; guards against excessively large payload DoS |\n| `onBudgetExceeded` | `'throw' \\| 'truncate'` | `'throw'` | No | On a `maxDepth`/`maxNodes` breach, `'throw'` raises an internal budget error; `'truncate'` replaces the offending node with `[TRUNCATED]` and stops, failing closed |\n| `transformers` | `TransformersOption` | built-in defaults | No | Override how runtime types are represented in serialised output |\n| `diagnostics` | `DiagnosticsOptions` | — | No | Opt-in sink for structured degrade/budget events; silent by default (no console output). Pass `getNodeConsoleDiagnosticSink()` as the `sink` to log to the console |\n\n`ValueTypeName` is one of: `'string'`, `'number'`, `'bigint'`, `'boolean'`, `'object'`, `'function'`, `'symbol'`, `'undefined'`.\n\n### `KeySelector`\n\nEach entry in `keys` may be a plain `string`, a `RegExp`, or a `KeyRule` object for per-key overrides.\n\n`keys` traverses plain objects, arrays, class instances' own enumerable fields, and `Map`/`Set` contents. `Map` entry keys are matched by their rendered string form while preserving the original key object in structured output; `Set` members are traversed in insertion order, but their numeric positions are path segments rather than synthetic keys.\n\n| Field | Type | Default | Required | Description |\n|-------|------|---------|----------|-------------|\n| `key` | `string \\| RegExp` | — | Yes | The key to match |\n| `censor` | `string \\| function` | top-level `censor` | No | Override the censor for this key only |\n| `remove` | `boolean` | top-level `remove` | No | Override remove for this key only |\n| `retainStructure` | `boolean` | top-level `retainStructure` | No | Override retainStructure for this key only |\n| `replaceStringByLength` | `boolean` | top-level `replaceStringByLength` | No | Override replaceStringByLength for this key only |\n| `fuzzyKeyMatch` | `boolean` | top-level `fuzzyKeyMatch` | No | Override fuzzyKeyMatch for this key only |\n| `caseSensitiveKeyMatch` | `boolean` | top-level `caseSensitiveKeyMatch` | No | Override caseSensitiveKeyMatch for this key only |\n\n### `PathEntry`\n\nEach entry in `paths` may be a plain dot-notation string (e.g. `'user.profile.ssn'`), a structured path array, or a `PathRule` object for per-path overrides.\n\nStructured path arrays may contain:\n\n| Segment type | Example | Matches |\n|---|---|---|\n| `string` or `number` | `'password'` | Exact key or index |\n| `RegExp` | `/^pass/i` | Keys matching the regex |\n| `{ any: true }` | — | Any single key (`*`) |\n| `{ anyDepth: true }` | — | Zero or more keys at any depth (`**`) |\n| `{ ignore: string \\| number \\| RegExp }` | `{ ignore: 'country' }` | Excludes a key from a surrounding wildcard |\n\n| Field | Type | Default | Required | Description |\n|-------|------|---------|----------|-------------|\n| `path` | `string \\| PathSegments[]` | — | Yes | The path to match |\n| `censor` | `string \\| function` | top-level `censor` | No | Override the censor for this path only |\n| `remove` | `boolean` | top-level `remove` | No | Override remove for this path only |\n| `retainStructure` | `boolean` | top-level `retainStructure` | No | Override retainStructure for this path only |\n| `replaceStringByLength` | `boolean` | top-level `replaceStringByLength` | No | Override replaceStringByLength for this path only |\n\n### `StringTest`\n\nEach entry in `stringTests` may be a bare `RegExp` (whole-value replacement with `censor`) or a `SubstringRule` for partial replacement.\n\n| Field | Type | Required | Description |\n|-------|------|----------|-------------|\n| `pattern` | `RegExp` | Yes | Regular expression tested against string values |\n| `replacer` | `(value: string, pattern: RegExp) => string` | Yes | Returns the redacted string; called only when `pattern` matches |\n\n### `TransformersOption`\n\nTransformers control how non-JSON-safe runtime types are represented when `serialise: true`. Each transformer is a function `(value: unknown) => unknown` that either returns a transformed value or returns the value unchanged to pass to the next transformer in the chain.\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `byType.bigint` | `Transformer[]` | Applied to `BigInt` values (does not consult `byType.object`) |\n| `byType.object` | `Transformer[]` | Applied first for built-in constructor types and unknown object types |\n| `byConstructor.Date` | `Transformer[]` | Applied to `Date` instances |\n| `byConstructor.Error` | `Transformer[]` | Applied to `Error` instances |\n| `byConstructor.Map` | `Transformer[]` | Applied to `Map` instances |\n| `byConstructor.RegExp` | `Transformer[]` | Applied to `RegExp` instances |\n| `byConstructor.Set` | `Transformer[]` | Applied to `Set` instances |\n| `byConstructor.URL` | `Transformer[]` | Applied to `URL` instances |\n| `byConstructor.custom` | `CustomConstructorTransformerRegistration[]` | Custom types matched by `instanceof` in declaration order |\n| `fallback` | `Transformer[]` | Applied when no earlier transformer returns a changed value |\n\nThe built-in transformers produce deterministic marker objects (e.g. `{ _transformer: 'date', datetime: '<ISO string>' }`). See [`docs/architecture/serialise-output.md`](docs/architecture/serialise-output.md) for the full dispatch order and marker shapes.\n\n**Execution phases.** User `byConstructor.custom` and `byConstructor.Error` transformers run **before regular traversal**, in both serialise modes: the matched class instance is converted to the plain object you return, which is then scrubbed by your `keys`/`paths` rules. This is how PII nested inside a class instance — for example an `Error`/`AxiosError` carrying a `config.data` payload — gets redacted without a pre-normalise step (see [Redacting PII inside Error instances](docs/examples/custom-error-transformer.md)). Every other bucket (`byType`, `fallback`, and user `byConstructor.{Date,Map,RegExp,Set,URL}`) runs only during the `serialise: true` pass; relying on that serialise-only behaviour — where the transformer output escapes redaction — is **deprecated** in favour of the per-class buckets above.\n\n### `DiagnosticsOptions`\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `sink` | `(event: DiagnosticEvent) => void` | Called with a structured event when a value is degraded to `'[UNSUPPORTED]'` during serialisation |\n\n## Public API\n\n```ts\nimport { createRedactor, deepRedact } from '@hackylabs/deep-redact'\n\n// deepRedact and createRedactor are the same factory under different names\nconst redact = deepRedact({ keys: ['secret'] })\nconst same = createRedactor({ keys: ['secret'] })\n```\n\n## Documentation\n\n### Worked examples\n\n- [Key targeting](docs/examples/key-targeting.md)\n- [Fuzzy and case-insensitive key matching](docs/examples/fuzzy-key-matching.md)\n- [Path targeting](docs/examples/path-targeting.md)\n- [Wildcard path segments and ignore selectors](docs/examples/path-segment-ignore.md)\n- [Regex property matching](docs/examples/regex-property-matching.md)\n- [Per-key rule overrides](docs/examples/per-key-rule-overrides-string.md)\n- [Substring targeting](docs/examples/substring-targeting.md)\n- [Replacement and removal](docs/examples/replacement-and-removal.md)\n- [Structured vs serialised output](docs/examples/serialised-output.md)\n- [Custom transformers](docs/examples/custom-transformer.md)\n- [Redacting PII inside Error instances](docs/examples/custom-error-transformer.md)\n- [Value-type allowlist](docs/examples/value-type-allowlist-default.md)\n- [Singleton / service-root setup](docs/examples/singleton-setup.md)\n- [Console redaction adapter](docs/examples/console-redaction.md)\n\n### Migration guides\n\n- [Migrating from Deep Redact v3](docs/migration/from-v3.md)\n- [Migrating from fast-redact](docs/migration/from-fast-redact.md)\n\n### Architecture and design\n\n- [Rule precedence and evaluation order](docs/architecture/precedence.md)\n- [Serialised output: transformer dispatch and marker shapes](docs/architecture/serialise-output.md)\n- [One-way redaction contract](docs/architecture/one-way-redaction.md)\n\n### Platform and security teams\n\n- [Standardisation guide](docs/platform/standardisation-guide.md) — supported capabilities, targeting semantics, verification evidence, and adoption decision scope\n\n## Scripts\n\n- `pnpm run build`\n- `pnpm run lint`\n- `pnpm run test`\n- `pnpm run generate-exports`\n- `pnpm run generate-readme`\n- `pnpm run verify-generated-files`\n- `pnpm run bench`\n- `pnpm run bench:generate-charts`\n","readmeFilename":"README.md"}