@contrast/agent-bundle 5.46.0 → 5.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/node_modules/@contrast/agent/README.md +1 -1
- package/node_modules/@contrast/agent/package.json +12 -12
- package/node_modules/@contrast/agentify/package.json +15 -15
- package/node_modules/@contrast/architecture-components/package.json +5 -5
- package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/common.js +1 -1
- package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/handlers.js +23 -10
- package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/index.js +6 -4
- package/node_modules/@contrast/assess/lib/configuration-analysis/install/apollo-server.js +92 -0
- package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/install/express-session.js +2 -2
- package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/install/fastify-cookie.js +2 -2
- package/node_modules/@contrast/assess/lib/configuration-analysis/install/graphql-yoga.js +90 -0
- package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/install/hapi.js +2 -2
- package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/install/koa.js +3 -3
- package/node_modules/@contrast/assess/lib/dataflow/propagation/install/string/substring.js +1 -1
- package/node_modules/@contrast/assess/lib/dataflow/sinks/install/fs.js +8 -15
- package/node_modules/@contrast/assess/lib/dataflow/sources/handler.js +9 -2
- package/node_modules/@contrast/assess/lib/dataflow/sources/index.js +2 -0
- package/node_modules/@contrast/assess/lib/dataflow/sources/install/fastify-websocket.js +63 -0
- package/node_modules/@contrast/assess/lib/dataflow/sources/install/http.js +42 -38
- package/node_modules/@contrast/assess/lib/dataflow/sources/install/koa/index.js +1 -1
- package/node_modules/@contrast/assess/lib/dataflow/sources/install/koa/koa-bodyparsers.js +76 -48
- package/node_modules/@contrast/assess/lib/dataflow/sources/install/koa/koa-multer.js +1 -1
- package/node_modules/@contrast/assess/lib/dataflow/sources/install/koa/koa-routers.js +2 -2
- package/node_modules/@contrast/assess/lib/dataflow/sources/install/koa/{koa2.js → koa.js} +3 -3
- package/node_modules/@contrast/assess/lib/dataflow/sources/install/socket.io.js +80 -0
- package/node_modules/@contrast/assess/lib/index.d.ts +4 -3
- package/node_modules/@contrast/assess/lib/index.js +1 -1
- package/node_modules/@contrast/assess/lib/policy.js +2 -2
- package/node_modules/@contrast/assess/package.json +12 -12
- package/node_modules/@contrast/common/lib/constants.d.ts +12 -4
- package/node_modules/@contrast/common/lib/constants.js +16 -7
- package/node_modules/@contrast/common/lib/types.d.ts +5 -1
- package/node_modules/@contrast/common/package.json +1 -1
- package/node_modules/@contrast/config/lib/common.js +1 -0
- package/node_modules/@contrast/config/lib/options.js +7 -1
- package/node_modules/@contrast/config/package.json +3 -3
- package/node_modules/@contrast/core/package.json +5 -5
- package/node_modules/@contrast/deadzones/package.json +5 -5
- package/node_modules/@contrast/dep-hooks/lib/export-handler-registry.js +1 -10
- package/node_modules/@contrast/dep-hooks/lib/export-hook-descriptor.js +1 -1
- package/node_modules/@contrast/dep-hooks/lib/index.d.ts +1 -1
- package/node_modules/@contrast/dep-hooks/lib/index.js +1 -1
- package/node_modules/@contrast/dep-hooks/lib/package-finder.d.ts +3 -2
- package/node_modules/@contrast/dep-hooks/lib/package-finder.js +14 -4
- package/node_modules/@contrast/dep-hooks/package.json +4 -4
- package/node_modules/@contrast/esm-hooks/README.md +2 -2
- package/node_modules/@contrast/esm-hooks/package.json +6 -6
- package/node_modules/@contrast/instrumentation/package.json +5 -5
- package/node_modules/@contrast/library-analysis/lib/install/library-reporting/dep.json +166 -224
- package/node_modules/@contrast/library-analysis/lib/install/library-reporting/index.js +2 -11
- package/node_modules/@contrast/library-analysis/lib/install/library-reporting/utils.js +2 -0
- package/node_modules/@contrast/library-analysis/lib/install/library-usage/index.js +3 -1
- package/node_modules/@contrast/library-analysis/lib/util.js +0 -2
- package/node_modules/@contrast/library-analysis/package.json +4 -4
- package/node_modules/@contrast/logger/package.json +4 -4
- package/node_modules/@contrast/metrics/package.json +6 -6
- package/node_modules/@contrast/patcher/package.json +2 -2
- package/node_modules/@contrast/protect/lib/error-handlers/index.js +1 -1
- package/node_modules/@contrast/protect/lib/error-handlers/install/{koa2.js → koa.js} +4 -4
- package/node_modules/@contrast/protect/lib/index.d.ts +1 -1
- package/node_modules/@contrast/protect/lib/input-analysis/index.js +2 -3
- package/node_modules/@contrast/protect/lib/input-analysis/install/koa-bodyparsers.js +92 -0
- package/node_modules/@contrast/protect/lib/input-analysis/install/{koa2.js → koa.js} +5 -5
- package/node_modules/@contrast/protect/lib/input-tracing/install/fs.js +0 -8
- package/node_modules/@contrast/protect/package.json +11 -11
- package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/translations.js +6 -10
- package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/routes-observed.js +4 -0
- package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/index.d.ts +1 -1
- package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/index.js +1 -1
- package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/translations.d.ts +1 -1
- package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/translations.js +22 -9
- package/node_modules/@contrast/reporter/lib/reporters/file.js +1 -1
- package/node_modules/@contrast/reporter/package.json +6 -6
- package/node_modules/@contrast/rewriter/package.json +5 -5
- package/node_modules/@contrast/route-coverage/lib/index.d.ts +2 -2
- package/node_modules/@contrast/route-coverage/lib/index.js +12 -2
- package/node_modules/@contrast/route-coverage/lib/install/express.js +535 -0
- package/node_modules/@contrast/route-coverage/lib/install/fastify/fastify-express.js +71 -0
- package/node_modules/@contrast/route-coverage/lib/install/fastify/fastify-middie.js +67 -0
- package/node_modules/@contrast/route-coverage/lib/install/{fastify.js → fastify/fastify.js} +32 -22
- package/node_modules/@contrast/route-coverage/lib/install/{express → fastify}/index.js +6 -5
- package/node_modules/@contrast/route-coverage/lib/install/graphql.js +6 -1
- package/node_modules/@contrast/route-coverage/lib/install/koa.js +39 -45
- package/node_modules/@contrast/route-coverage/lib/install/socket.io.js +127 -0
- package/node_modules/@contrast/route-coverage/lib/utils/route-info.js +26 -1
- package/node_modules/@contrast/route-coverage/package.json +8 -8
- package/node_modules/@contrast/scopes/package.json +5 -5
- package/node_modules/@contrast/sec-obs/package.json +9 -9
- package/node_modules/@contrast/sources/lib/index.js +65 -22
- package/node_modules/@contrast/sources/lib/index.test.js +78 -33
- package/node_modules/@contrast/sources/lib/source-info.js +1 -10
- package/node_modules/@contrast/sources/package.json +3 -3
- package/node_modules/@contrast/telemetry/package.json +5 -5
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.d.ts +697 -30
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js +697 -30
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.d.ts +6 -0
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.js +6 -0
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.d.ts +877 -49
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js +877 -49
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.d.ts +13 -4
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js +13 -4
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.d.ts +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.d.ts +697 -30
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js +697 -30
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.d.ts +6 -0
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.js +6 -0
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.d.ts +877 -49
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js +877 -49
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.d.ts +13 -4
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js +13 -4
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.d.ts +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.d.ts +697 -30
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js +729 -61
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.d.ts +6 -0
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.js +7 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.d.ts +877 -49
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js +886 -56
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.d.ts +13 -4
- package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js +13 -4
- package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/version.d.ts +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/version.js +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/version.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/package.json +3 -5
- package/node_modules/{pino → @pinojs/redact}/.github/dependabot.yml +1 -1
- package/node_modules/@pinojs/redact/.github/workflows/ci.yml +48 -0
- package/node_modules/@pinojs/redact/.github/workflows/publish-release.yml +43 -0
- package/node_modules/{pino/node_modules/sonic-boom → @pinojs/redact}/LICENSE +1 -1
- package/node_modules/@pinojs/redact/README.md +350 -0
- package/node_modules/@pinojs/redact/benchmarks/basic.js +184 -0
- package/node_modules/@pinojs/redact/eslint.config.js +1 -0
- package/node_modules/@pinojs/redact/index.d.ts +52 -0
- package/node_modules/@pinojs/redact/index.js +529 -0
- package/node_modules/@pinojs/redact/index.test-d.ts +22 -0
- package/node_modules/@pinojs/redact/package.json +37 -0
- package/node_modules/@pinojs/redact/scripts/sync-version.mjs +20 -0
- package/node_modules/@pinojs/redact/test/actual-redact-comparison.test.js +211 -0
- package/node_modules/@pinojs/redact/test/index.test.js +824 -0
- package/node_modules/@pinojs/redact/test/integration.test.js +390 -0
- package/node_modules/@pinojs/redact/test/multiple-wildcards.test.js +227 -0
- package/node_modules/@pinojs/redact/test/prototype-pollution.test.js +223 -0
- package/node_modules/@pinojs/redact/test/selective-clone.test.js +115 -0
- package/node_modules/@pinojs/redact/tsconfig.json +19 -0
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/assert.d.ts +37 -2
- package/node_modules/@types/node/buffer.buffer.d.ts +9 -0
- package/node_modules/@types/node/buffer.d.ts +8 -4
- package/node_modules/@types/node/child_process.d.ts +65 -42
- package/node_modules/@types/node/cluster.d.ts +4 -5
- package/node_modules/@types/node/console.d.ts +3 -2
- package/node_modules/@types/node/crypto.d.ts +1079 -338
- package/node_modules/@types/node/dgram.d.ts +9 -8
- package/node_modules/@types/node/diagnostics_channel.d.ts +0 -2
- package/node_modules/@types/node/dns.d.ts +1 -1
- package/node_modules/@types/node/events.d.ts +1 -1
- package/node_modules/@types/node/fs/promises.d.ts +39 -21
- package/node_modules/@types/node/fs.d.ts +104 -87
- package/node_modules/@types/node/globals.d.ts +2 -0
- package/node_modules/@types/node/globals.typedarray.d.ts +19 -0
- package/node_modules/@types/node/http.d.ts +66 -27
- package/node_modules/@types/node/http2.d.ts +178 -52
- package/node_modules/@types/node/https.d.ts +91 -62
- package/node_modules/@types/node/index.d.ts +2 -0
- package/node_modules/@types/node/inspector.d.ts +24 -0
- package/node_modules/@types/node/inspector.generated.d.ts +181 -0
- package/node_modules/@types/node/net.d.ts +12 -11
- package/node_modules/@types/node/os.d.ts +14 -3
- package/node_modules/@types/node/package.json +3 -3
- package/node_modules/@types/node/perf_hooks.d.ts +6 -8
- package/node_modules/@types/node/process.d.ts +19 -23
- package/node_modules/@types/node/readline/promises.d.ts +1 -1
- package/node_modules/@types/node/sea.d.ts +9 -0
- package/node_modules/@types/node/sqlite.d.ts +226 -10
- package/node_modules/@types/node/stream/consumers.d.ts +2 -2
- package/node_modules/@types/node/stream/web.d.ts +6 -55
- package/node_modules/@types/node/stream.d.ts +38 -23
- package/node_modules/@types/node/string_decoder.d.ts +2 -2
- package/node_modules/@types/node/test.d.ts +29 -3
- package/node_modules/@types/node/tls.d.ts +90 -66
- package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +10 -2
- package/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +16 -0
- package/node_modules/@types/node/ts5.6/index.d.ts +2 -0
- package/node_modules/@types/node/ts5.7/index.d.ts +2 -0
- package/node_modules/@types/node/url.d.ts +34 -10
- package/node_modules/@types/node/util.d.ts +12 -3
- package/node_modules/@types/node/v8.d.ts +38 -5
- package/node_modules/@types/node/vm.d.ts +169 -88
- package/node_modules/@types/node/wasi.d.ts +1 -1
- package/node_modules/@types/node/web-globals/crypto.d.ts +32 -0
- package/node_modules/@types/node/web-globals/streams.d.ts +22 -0
- package/node_modules/@types/node/worker_threads.d.ts +76 -1
- package/node_modules/@types/node/zlib.d.ts +25 -24
- package/node_modules/axios/CHANGELOG.md +410 -346
- package/node_modules/axios/README.md +79 -51
- package/node_modules/axios/dist/axios.js +121 -46
- package/node_modules/axios/dist/axios.js.map +1 -1
- package/node_modules/axios/dist/axios.min.js +2 -2
- package/node_modules/axios/dist/axios.min.js.map +1 -1
- package/node_modules/axios/dist/browser/axios.cjs +126 -57
- package/node_modules/axios/dist/browser/axios.cjs.map +1 -1
- package/node_modules/axios/dist/esm/axios.js +126 -57
- package/node_modules/axios/dist/esm/axios.js.map +1 -1
- package/node_modules/axios/dist/esm/axios.min.js +2 -2
- package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
- package/node_modules/axios/dist/node/axios.cjs +351 -97
- package/node_modules/axios/dist/node/axios.cjs.map +1 -1
- package/node_modules/axios/index.d.cts +4 -0
- package/node_modules/axios/index.d.ts +4 -0
- package/node_modules/axios/lib/adapters/adapters.js +85 -40
- package/node_modules/axios/lib/adapters/fetch.js +1 -1
- package/node_modules/axios/lib/adapters/http.js +224 -42
- package/node_modules/axios/lib/core/InterceptorManager.js +1 -1
- package/node_modules/axios/lib/core/mergeConfig.js +4 -4
- package/node_modules/axios/lib/env/data.js +1 -1
- package/node_modules/axios/lib/helpers/HttpStatusCode.js +6 -0
- package/node_modules/axios/lib/helpers/bind.js +7 -0
- package/node_modules/axios/lib/helpers/cookies.js +24 -13
- package/node_modules/axios/package.json +9 -4
- package/node_modules/detect-libc/lib/filesystem.js +1 -1
- package/node_modules/detect-libc/package.json +3 -1
- package/node_modules/form-data/CHANGELOG.md +60 -2
- package/node_modules/form-data/README.md +4 -4
- package/node_modules/form-data/lib/form_data.js +2 -2
- package/node_modules/form-data/package.json +4 -4
- package/node_modules/ipaddr.js/README.md +1 -0
- package/node_modules/ipaddr.js/ipaddr.min.js +1 -1
- package/node_modules/ipaddr.js/lib/ipaddr.js +11 -0
- package/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +1 -0
- package/node_modules/ipaddr.js/package.json +2 -3
- package/node_modules/nan/.github/workflows/ci.yml +3 -1
- package/node_modules/nan/CHANGELOG.md +4 -1
- package/node_modules/nan/README.md +2 -2
- package/node_modules/nan/nan.h +25 -15
- package/node_modules/nan/nan_maybe_43_inl.h +5 -1
- package/node_modules/nan/package.json +2 -2
- package/node_modules/node-abi/abi_registry.json +19 -2
- package/node_modules/node-abi/package.json +3 -6
- package/node_modules/pino/CONTRIBUTING.md +4 -0
- package/node_modules/pino/LICENSE +1 -1
- package/node_modules/pino/README.md +20 -3
- package/node_modules/pino/benchmarks/basic.bench.js +1 -1
- package/node_modules/pino/benchmarks/child-child.bench.js +1 -1
- package/node_modules/pino/benchmarks/child-creation.bench.js +1 -1
- package/node_modules/pino/benchmarks/child.bench.js +1 -1
- package/node_modules/pino/benchmarks/deep-object.bench.js +1 -1
- package/node_modules/pino/benchmarks/internal/just-pino-heavy.bench.js +1 -1
- package/node_modules/pino/benchmarks/internal/just-pino.bench.js +1 -1
- package/node_modules/pino/benchmarks/internal/redact.bench.js +1 -1
- package/node_modules/pino/benchmarks/long-string.bench.js +1 -1
- package/node_modules/pino/benchmarks/multi-arg.bench.js +1 -1
- package/node_modules/pino/benchmarks/multistream.js +1 -1
- package/node_modules/pino/benchmarks/object.bench.js +1 -1
- package/node_modules/pino/benchmarks/utils/generate-benchmark-doc.js +2 -2
- package/node_modules/pino/benchmarks/utils/runbench.js +3 -3
- package/node_modules/pino/benchmarks/utils/wrap-log-level.js +2 -2
- package/node_modules/pino/browser.js +76 -36
- package/node_modules/pino/build/sync-version.js +18 -3
- package/node_modules/pino/docs/api.md +155 -13
- package/node_modules/pino/docs/browser.md +16 -1
- package/node_modules/pino/docs/bundling.md +5 -3
- package/node_modules/pino/docs/diagnostics.md +16 -0
- package/node_modules/pino/docs/ecosystem.md +15 -12
- package/node_modules/pino/docs/help.md +29 -3
- package/node_modules/pino/docs/lts.md +5 -4
- package/node_modules/pino/docs/transports.md +442 -271
- package/node_modules/pino/docs/web.md +59 -9
- package/node_modules/pino/eslint.config.js +19 -0
- package/node_modules/pino/examples/transport.js +2 -2
- package/node_modules/pino/file.js +1 -1
- package/node_modules/pino/lib/meta.js +1 -1
- package/node_modules/pino/lib/multistream.js +17 -2
- package/node_modules/pino/lib/proto.js +35 -11
- package/node_modules/pino/lib/redaction.js +9 -13
- package/node_modules/pino/lib/time.js +29 -1
- package/node_modules/pino/lib/tools.js +37 -8
- package/node_modules/pino/lib/transport-stream.js +10 -4
- package/node_modules/pino/lib/transport.js +23 -9
- package/node_modules/pino/lib/worker.js +164 -24
- package/node_modules/pino/package.json +28 -27
- package/node_modules/pino/pino.d.ts +244 -203
- package/node_modules/pino/pino.js +7 -3
- package/node_modules/pino/test/basic.test.js +181 -169
- package/node_modules/pino/test/broken-pipe.test.js +18 -16
- package/node_modules/pino/test/browser-child.test.js +26 -0
- package/node_modules/pino/test/browser-is-level-enabled.test.js +101 -0
- package/node_modules/pino/test/browser-serializers.test.js +0 -2
- package/node_modules/pino/test/browser-transmit.test.js +68 -0
- package/node_modules/pino/test/browser.test.js +98 -13
- package/node_modules/pino/test/complex-objects.test.js +8 -6
- package/node_modules/pino/test/crlf.test.js +7 -5
- package/node_modules/pino/test/custom-levels.test.js +80 -66
- package/node_modules/pino/test/diagnostics.test.js +107 -0
- package/node_modules/pino/test/error-key.test.js +37 -0
- package/node_modules/pino/test/error.test.js +48 -43
- package/node_modules/pino/test/escaping.test.js +8 -6
- package/node_modules/pino/test/esm/esm.mjs +5 -3
- package/node_modules/pino/test/esm/index.test.js +14 -27
- package/node_modules/pino/test/esm/named-exports.mjs +9 -8
- package/node_modules/pino/test/exit.test.js +18 -16
- package/node_modules/pino/test/fixtures/broken-pipe/basic.js +1 -1
- package/node_modules/pino/test/fixtures/broken-pipe/destination.js +1 -1
- package/node_modules/pino/test/fixtures/broken-pipe/syncfalse.js +1 -1
- package/node_modules/pino/test/fixtures/console-transport.js +1 -1
- package/node_modules/pino/test/fixtures/crashing-transport.js +13 -0
- package/node_modules/pino/test/fixtures/default-exit.js +1 -1
- package/node_modules/pino/test/fixtures/destination-exit.js +1 -1
- package/node_modules/pino/test/fixtures/noop-transport.js +1 -1
- package/node_modules/pino/test/fixtures/pretty/null-prototype.js +1 -1
- package/node_modules/pino/test/fixtures/stdout-hack-protection.js +1 -1
- package/node_modules/pino/test/fixtures/syncfalse-child.js +1 -1
- package/node_modules/pino/test/fixtures/syncfalse-exit.js +1 -1
- package/node_modules/pino/test/fixtures/syncfalse-flush-exit.js +1 -1
- package/node_modules/pino/test/fixtures/syncfalse.js +1 -1
- package/node_modules/pino/test/fixtures/syntax-error-esm.mjs +2 -0
- package/node_modules/pino/test/fixtures/to-file-transport-with-transform.js +3 -3
- package/node_modules/pino/test/fixtures/to-file-transport.js +2 -2
- package/node_modules/pino/test/fixtures/to-file-transport.mjs +2 -2
- package/node_modules/pino/test/fixtures/transport/index.js +2 -2
- package/node_modules/pino/test/fixtures/transport-main.js +1 -1
- package/node_modules/pino/test/fixtures/transport-transform.js +1 -1
- package/node_modules/pino/test/fixtures/transport-uses-pino-config.js +1 -1
- package/node_modules/pino/test/fixtures/transport-worker-data.js +1 -1
- package/node_modules/pino/test/fixtures/transport-worker.js +2 -2
- package/node_modules/pino/test/fixtures/ts/to-file-transport-with-transform.ts +3 -3
- package/node_modules/pino/test/fixtures/ts/to-file-transport.ts +2 -2
- package/node_modules/pino/test/fixtures/ts/transpile.cjs +1 -1
- package/node_modules/pino/test/fixtures/ts/transport-exit-immediately-with-async-dest.ts +1 -1
- package/node_modules/pino/test/fixtures/ts/transport-main.ts +1 -1
- package/node_modules/pino/test/fixtures/ts/transport-worker.ts +1 -1
- package/node_modules/pino/test/formatters.test.js +46 -37
- package/node_modules/pino/test/helper.d.ts +1 -1
- package/node_modules/pino/test/helper.js +37 -10
- package/node_modules/pino/test/hooks.test.js +45 -28
- package/node_modules/pino/test/http.test.js +39 -67
- package/node_modules/pino/test/internals/version.test.js +11 -9
- package/node_modules/pino/test/is-level-enabled.test.js +66 -72
- package/node_modules/pino/test/levels.test.js +245 -141
- package/node_modules/pino/test/metadata.test.js +45 -31
- package/node_modules/pino/test/mixin-merge-strategy.test.js +9 -7
- package/node_modules/pino/test/mixin.test.js +63 -40
- package/node_modules/pino/test/multistream.test.js +174 -118
- package/node_modules/pino/test/redact.test.js +172 -126
- package/node_modules/pino/test/serializers.test.js +61 -57
- package/node_modules/pino/test/stdout-protection.test.js +14 -12
- package/node_modules/pino/test/syncfalse.test.js +29 -34
- package/node_modules/pino/test/timestamp-nano.test.js +37 -0
- package/node_modules/pino/test/timestamp.test.js +37 -34
- package/node_modules/pino/test/transport/big.test.js +11 -12
- package/node_modules/pino/test/transport/bundlers-support.test.js +15 -43
- package/node_modules/pino/test/transport/caller.test.js +9 -8
- package/node_modules/pino/test/transport/core.test.js +175 -145
- package/node_modules/pino/test/transport/core.transpiled.test.ts +17 -19
- package/node_modules/pino/test/transport/crash.test.js +36 -0
- package/node_modules/pino/test/transport/module-link.test.js +21 -19
- package/node_modules/pino/test/transport/pipeline.test.js +109 -8
- package/node_modules/pino/test/transport/repl.test.js +4 -3
- package/node_modules/pino/test/transport/{syncfalse.test.js → sync-false.test.js} +14 -12
- package/node_modules/pino/test/transport/sync-true.test.js +57 -0
- package/node_modules/pino/test/transport/targets.test.js +25 -5
- package/node_modules/pino/test/transport/uses-pino-config.test.js +16 -17
- package/node_modules/pino/test/transport-stream.test.js +40 -0
- package/node_modules/pino/test/types/{pino-import.test-d.ts → pino-import.test-d.cts} +4 -3
- package/node_modules/pino/test/types/pino-multistream.test-d.ts +1 -1
- package/node_modules/pino/test/types/pino-top-export.test-d.ts +1 -0
- package/node_modules/pino/test/types/pino-transport.test-d.ts +1 -1
- package/node_modules/pino/test/types/pino-type-only.test-d.ts +24 -6
- package/node_modules/pino/test/types/pino.test-d.ts +161 -6
- package/node_modules/pino/test/types/pino.ts +31 -19
- package/node_modules/pino/tsconfig.json +1 -1
- package/node_modules/pino-abstract-transport/.github/workflows/ci.yml +2 -4
- package/node_modules/pino-abstract-transport/index.js +1 -1
- package/node_modules/pino-abstract-transport/package.json +2 -3
- package/node_modules/pino-abstract-transport/test/base.test.js +1 -1
- package/node_modules/pino-abstract-transport/test/worker.test.js +7 -14
- package/node_modules/pino-std-serializers/.github/workflows/ci.yml +5 -5
- package/node_modules/pino-std-serializers/Readme.md +1 -0
- package/node_modules/pino-std-serializers/package.json +9 -8
- package/node_modules/pino-std-serializers/test/err-with-cause.test.js +72 -88
- package/node_modules/pino-std-serializers/test/err.test.js +76 -91
- package/node_modules/pino-std-serializers/test/req.test.js +142 -98
- package/node_modules/pino-std-serializers/test/res.test.js +42 -31
- package/node_modules/process-warning/.github/dependabot.yml +1 -1
- package/node_modules/process-warning/.github/workflows/ci.yml +1 -2
- package/node_modules/process-warning/README.md +4 -4
- package/node_modules/process-warning/eslint.config.js +6 -0
- package/node_modules/process-warning/package.json +39 -8
- package/node_modules/process-warning/test/emit-interpolated-string.test.js +11 -6
- package/node_modules/process-warning/test/emit-once-only.test.js +11 -6
- package/node_modules/process-warning/test/emit-reset.test.js +10 -6
- package/node_modules/process-warning/test/emit-set.test.js +10 -5
- package/node_modules/process-warning/test/emit-unlimited.test.js +12 -7
- package/node_modules/process-warning/test/index.test.js +20 -20
- package/node_modules/process-warning/test/issue-88.test.js +8 -3
- package/node_modules/process-warning/test/jest.test.js +17 -15
- package/node_modules/process-warning/test/no-warnings.test.js +9 -9
- package/node_modules/process-warning/test/promise.js +10 -0
- package/node_modules/process-warning/types/index.d.ts +5 -5
- package/node_modules/semver/classes/range.js +1 -0
- package/node_modules/semver/classes/semver.js +19 -5
- package/node_modules/semver/internal/identifiers.js +4 -0
- package/node_modules/semver/package.json +3 -3
- package/node_modules/thread-stream/.github/workflows/ci.yml +4 -8
- package/node_modules/thread-stream/index.d.ts +4 -5
- package/node_modules/thread-stream/lib/worker.js +5 -2
- package/node_modules/thread-stream/package.json +6 -4
- package/node_modules/thread-stream/test/base.test.js +12 -0
- package/node_modules/thread-stream/test/never-drain.test.js +3 -1
- package/node_modules/thread-stream/test/pkg/pkg.test.js +2 -0
- package/node_modules/thread-stream/test/syntax-error.mjs +2 -0
- package/node_modules/thread-stream/tsconfig.json +8 -0
- package/node_modules/undici-types/agent.d.ts +1 -0
- package/node_modules/undici-types/diagnostics-channel.d.ts +0 -1
- package/node_modules/undici-types/errors.d.ts +5 -15
- package/node_modules/undici-types/eventsource.d.ts +6 -1
- package/node_modules/undici-types/index.d.ts +4 -1
- package/node_modules/undici-types/interceptors.d.ts +5 -0
- package/node_modules/undici-types/package.json +1 -1
- package/node_modules/undici-types/snapshot-agent.d.ts +5 -3
- package/node_modules/undici-types/webidl.d.ts +82 -21
- package/node_modules/yaml/browser/dist/compose/compose-collection.js +1 -1
- package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +1 -1
- package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +2 -2
- package/node_modules/yaml/browser/dist/errors.js +1 -1
- package/node_modules/yaml/browser/dist/nodes/Alias.js +1 -1
- package/node_modules/yaml/browser/dist/parse/parser.js +2 -2
- package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +1 -1
- package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +1 -1
- package/node_modules/yaml/dist/compose/compose-collection.js +1 -1
- package/node_modules/yaml/dist/compose/resolve-block-seq.js +1 -1
- package/node_modules/yaml/dist/compose/resolve-flow-collection.js +2 -2
- package/node_modules/yaml/dist/errors.js +1 -1
- package/node_modules/yaml/dist/nodes/Alias.js +1 -1
- package/node_modules/yaml/dist/parse/parser.js +2 -2
- package/node_modules/yaml/dist/stringify/stringifyNumber.js +1 -1
- package/node_modules/yaml/dist/stringify/stringifyPair.js +1 -1
- package/node_modules/yaml/package.json +4 -4
- package/package.json +3 -3
- package/node_modules/@contrast/protect/lib/input-analysis/install/koa-body5.js +0 -63
- package/node_modules/@contrast/protect/lib/input-analysis/install/koa-bodyparser4.js +0 -64
- package/node_modules/@contrast/route-coverage/lib/install/express/express4.js +0 -157
- package/node_modules/@contrast/route-coverage/lib/install/express/express5.js +0 -538
- package/node_modules/abort-controller/LICENSE +0 -21
- package/node_modules/abort-controller/README.md +0 -98
- package/node_modules/abort-controller/browser.js +0 -13
- package/node_modules/abort-controller/browser.mjs +0 -11
- package/node_modules/abort-controller/dist/abort-controller.d.ts +0 -43
- package/node_modules/abort-controller/dist/abort-controller.js +0 -127
- package/node_modules/abort-controller/dist/abort-controller.js.map +0 -1
- package/node_modules/abort-controller/dist/abort-controller.mjs +0 -118
- package/node_modules/abort-controller/dist/abort-controller.mjs.map +0 -1
- package/node_modules/abort-controller/dist/abort-controller.umd.js +0 -5
- package/node_modules/abort-controller/dist/abort-controller.umd.js.map +0 -1
- package/node_modules/abort-controller/package.json +0 -97
- package/node_modules/abort-controller/polyfill.js +0 -21
- package/node_modules/abort-controller/polyfill.mjs +0 -19
- package/node_modules/base64-js/LICENSE +0 -21
- package/node_modules/base64-js/README.md +0 -34
- package/node_modules/base64-js/base64js.min.js +0 -1
- package/node_modules/base64-js/index.d.ts +0 -3
- package/node_modules/base64-js/index.js +0 -150
- package/node_modules/base64-js/package.json +0 -47
- package/node_modules/buffer/AUTHORS.md +0 -73
- package/node_modules/buffer/LICENSE +0 -21
- package/node_modules/buffer/README.md +0 -410
- package/node_modules/buffer/index.d.ts +0 -194
- package/node_modules/buffer/index.js +0 -2106
- package/node_modules/buffer/package.json +0 -93
- package/node_modules/event-target-shim/LICENSE +0 -22
- package/node_modules/event-target-shim/README.md +0 -293
- package/node_modules/event-target-shim/dist/event-target-shim.js +0 -871
- package/node_modules/event-target-shim/dist/event-target-shim.js.map +0 -1
- package/node_modules/event-target-shim/dist/event-target-shim.mjs +0 -862
- package/node_modules/event-target-shim/dist/event-target-shim.mjs.map +0 -1
- package/node_modules/event-target-shim/dist/event-target-shim.umd.js +0 -6
- package/node_modules/event-target-shim/dist/event-target-shim.umd.js.map +0 -1
- package/node_modules/event-target-shim/index.d.ts +0 -399
- package/node_modules/event-target-shim/package.json +0 -82
- package/node_modules/events/.airtap.yml +0 -15
- package/node_modules/events/.github/FUNDING.yml +0 -12
- package/node_modules/events/.travis.yml +0 -18
- package/node_modules/events/History.md +0 -118
- package/node_modules/events/LICENSE +0 -22
- package/node_modules/events/Readme.md +0 -50
- package/node_modules/events/events.js +0 -497
- package/node_modules/events/package.json +0 -37
- package/node_modules/events/security.md +0 -10
- package/node_modules/events/tests/add-listeners.js +0 -111
- package/node_modules/events/tests/check-listener-leaks.js +0 -101
- package/node_modules/events/tests/common.js +0 -104
- package/node_modules/events/tests/errors.js +0 -13
- package/node_modules/events/tests/events-list.js +0 -28
- package/node_modules/events/tests/events-once.js +0 -234
- package/node_modules/events/tests/index.js +0 -64
- package/node_modules/events/tests/legacy-compat.js +0 -16
- package/node_modules/events/tests/listener-count.js +0 -37
- package/node_modules/events/tests/listeners-side-effects.js +0 -56
- package/node_modules/events/tests/listeners.js +0 -168
- package/node_modules/events/tests/max-listeners.js +0 -47
- package/node_modules/events/tests/method-names.js +0 -35
- package/node_modules/events/tests/modify-in-emit.js +0 -90
- package/node_modules/events/tests/num-args.js +0 -60
- package/node_modules/events/tests/once.js +0 -83
- package/node_modules/events/tests/prepend.js +0 -31
- package/node_modules/events/tests/remove-all-listeners.js +0 -133
- package/node_modules/events/tests/remove-listeners.js +0 -212
- package/node_modules/events/tests/set-max-listeners-side-effects.js +0 -31
- package/node_modules/events/tests/special-event-names.js +0 -45
- package/node_modules/events/tests/subclass.js +0 -66
- package/node_modules/events/tests/symbols.js +0 -25
- package/node_modules/fast-redact/.github/workflows/ci.yml +0 -37
- package/node_modules/fast-redact/LICENSE +0 -21
- package/node_modules/fast-redact/benchmark/index.js +0 -223
- package/node_modules/fast-redact/example/default-usage.js +0 -14
- package/node_modules/fast-redact/example/intermediate-wildcard-array.js +0 -11
- package/node_modules/fast-redact/example/multi-wildcard-array-depth.js +0 -11
- package/node_modules/fast-redact/example/multi-wildcard-array-end.js +0 -11
- package/node_modules/fast-redact/example/multi-wildcard-array.js +0 -11
- package/node_modules/fast-redact/example/serialize-false.js +0 -11
- package/node_modules/fast-redact/example/serialize-function.js +0 -4
- package/node_modules/fast-redact/example/top-wildcard-object.js +0 -9
- package/node_modules/fast-redact/index.js +0 -56
- package/node_modules/fast-redact/lib/modifiers.js +0 -291
- package/node_modules/fast-redact/lib/parse.js +0 -44
- package/node_modules/fast-redact/lib/redactor.js +0 -108
- package/node_modules/fast-redact/lib/restorer.js +0 -92
- package/node_modules/fast-redact/lib/rx.js +0 -16
- package/node_modules/fast-redact/lib/state.js +0 -20
- package/node_modules/fast-redact/lib/validator.js +0 -33
- package/node_modules/fast-redact/package.json +0 -50
- package/node_modules/fast-redact/readme.md +0 -282
- package/node_modules/fast-redact/test/index.js +0 -1502
- package/node_modules/ieee754/LICENSE +0 -11
- package/node_modules/ieee754/README.md +0 -51
- package/node_modules/ieee754/index.d.ts +0 -10
- package/node_modules/ieee754/index.js +0 -85
- package/node_modules/ieee754/package.json +0 -52
- package/node_modules/pino/.eslintignore +0 -2
- package/node_modules/pino/.eslintrc +0 -8
- package/node_modules/pino/.github/workflows/bench.yml +0 -61
- package/node_modules/pino/.github/workflows/ci.yml +0 -86
- package/node_modules/pino/.github/workflows/lock-threads.yml +0 -30
- package/node_modules/pino/.github/workflows/package-manager-ci.yml +0 -99
- package/node_modules/pino/.github/workflows/target-main.yml +0 -23
- package/node_modules/pino/.taprc.yaml +0 -8
- package/node_modules/pino/docsify/sidebar.md +0 -26
- package/node_modules/pino/favicon-16x16.png +0 -0
- package/node_modules/pino/favicon-32x32.png +0 -0
- package/node_modules/pino/lib/worker-pipeline.js +0 -38
- package/node_modules/pino/node_modules/sonic-boom/.eslintignore +0 -2
- package/node_modules/pino/node_modules/sonic-boom/.husky/pre-commit +0 -4
- package/node_modules/pino/node_modules/sonic-boom/.taprc.yaml +0 -11
- package/node_modules/pino/node_modules/sonic-boom/README.md +0 -151
- package/node_modules/pino/node_modules/sonic-boom/bench.js +0 -98
- package/node_modules/pino/node_modules/sonic-boom/check.js +0 -18
- package/node_modules/pino/node_modules/sonic-boom/example.js +0 -8
- package/node_modules/pino/node_modules/sonic-boom/fixtures/firehose.js +0 -22
- package/node_modules/pino/node_modules/sonic-boom/index.js +0 -690
- package/node_modules/pino/node_modules/sonic-boom/package.json +0 -50
- package/node_modules/pino/node_modules/sonic-boom/test/destroy.test.js +0 -49
- package/node_modules/pino/node_modules/sonic-boom/test/end.test.js +0 -98
- package/node_modules/pino/node_modules/sonic-boom/test/flush-sync.test.js +0 -140
- package/node_modules/pino/node_modules/sonic-boom/test/flush.test.js +0 -419
- package/node_modules/pino/node_modules/sonic-boom/test/fsync.test.js +0 -63
- package/node_modules/pino/node_modules/sonic-boom/test/helper.js +0 -42
- package/node_modules/pino/node_modules/sonic-boom/test/minlength.test.js +0 -35
- package/node_modules/pino/node_modules/sonic-boom/test/mode.test.js +0 -116
- package/node_modules/pino/node_modules/sonic-boom/test/reopen.test.js +0 -239
- package/node_modules/pino/node_modules/sonic-boom/test/retry.test.js +0 -414
- package/node_modules/pino/node_modules/sonic-boom/test/sync.test.js +0 -261
- package/node_modules/pino/node_modules/sonic-boom/test/write.test.js +0 -465
- package/node_modules/pino/node_modules/sonic-boom/types/index.d.ts +0 -62
- package/node_modules/pino/node_modules/sonic-boom/types/tests/test.ts +0 -4
- package/node_modules/pino/pino-banner.png +0 -0
- package/node_modules/pino/pino-logo-hire.png +0 -0
- package/node_modules/pino/pino-tree.png +0 -0
- package/node_modules/pino/pretty-demo.png +0 -0
- package/node_modules/pino/test/errorKey.test.js +0 -34
- package/node_modules/pino/test/transport/core.test.ts +0 -236
- package/node_modules/pino-std-serializers/.taprc +0 -2
- package/node_modules/process/.eslintrc +0 -21
- package/node_modules/process/LICENSE +0 -22
- package/node_modules/process/README.md +0 -26
- package/node_modules/process/browser.js +0 -184
- package/node_modules/process/index.js +0 -2
- package/node_modules/process/package.json +0 -27
- package/node_modules/process/test.js +0 -199
- package/node_modules/process-warning/.taprc +0 -2
- package/node_modules/readable-stream/LICENSE +0 -47
- package/node_modules/readable-stream/README.md +0 -116
- package/node_modules/readable-stream/lib/_stream_duplex.js +0 -4
- package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -4
- package/node_modules/readable-stream/lib/_stream_readable.js +0 -4
- package/node_modules/readable-stream/lib/_stream_transform.js +0 -4
- package/node_modules/readable-stream/lib/_stream_writable.js +0 -4
- package/node_modules/readable-stream/lib/internal/streams/add-abort-signal.js +0 -52
- package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -157
- package/node_modules/readable-stream/lib/internal/streams/compose.js +0 -194
- package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -290
- package/node_modules/readable-stream/lib/internal/streams/duplex.js +0 -143
- package/node_modules/readable-stream/lib/internal/streams/duplexify.js +0 -378
- package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -286
- package/node_modules/readable-stream/lib/internal/streams/from.js +0 -98
- package/node_modules/readable-stream/lib/internal/streams/lazy_transform.js +0 -51
- package/node_modules/readable-stream/lib/internal/streams/legacy.js +0 -89
- package/node_modules/readable-stream/lib/internal/streams/operators.js +0 -457
- package/node_modules/readable-stream/lib/internal/streams/passthrough.js +0 -39
- package/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -471
- package/node_modules/readable-stream/lib/internal/streams/readable.js +0 -1290
- package/node_modules/readable-stream/lib/internal/streams/state.js +0 -39
- package/node_modules/readable-stream/lib/internal/streams/transform.js +0 -180
- package/node_modules/readable-stream/lib/internal/streams/utils.js +0 -327
- package/node_modules/readable-stream/lib/internal/streams/writable.js +0 -819
- package/node_modules/readable-stream/lib/internal/validators.js +0 -530
- package/node_modules/readable-stream/lib/ours/browser.js +0 -35
- package/node_modules/readable-stream/lib/ours/errors.js +0 -343
- package/node_modules/readable-stream/lib/ours/index.js +0 -65
- package/node_modules/readable-stream/lib/ours/primordials.js +0 -124
- package/node_modules/readable-stream/lib/ours/util/inspect.js +0 -55
- package/node_modules/readable-stream/lib/ours/util.js +0 -148
- package/node_modules/readable-stream/lib/stream/promises.js +0 -43
- package/node_modules/readable-stream/lib/stream.js +0 -143
- package/node_modules/readable-stream/package.json +0 -88
- package/node_modules/safe-buffer/LICENSE +0 -21
- package/node_modules/safe-buffer/README.md +0 -584
- package/node_modules/safe-buffer/index.d.ts +0 -187
- package/node_modules/safe-buffer/index.js +0 -65
- package/node_modules/safe-buffer/package.json +0 -51
- package/node_modules/string_decoder/LICENSE +0 -48
- package/node_modules/string_decoder/README.md +0 -47
- package/node_modules/string_decoder/lib/string_decoder.js +0 -296
- package/node_modules/string_decoder/package.json +0 -34
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
# @pinojs/redact
|
|
2
|
+
|
|
3
|
+
> Smart object redaction for JavaScript applications - safe AND fast!
|
|
4
|
+
|
|
5
|
+
Redact JS objects with the same API as [fast-redact](https://github.com/davidmarkclements/fast-redact), but uses innovative **selective cloning** instead of mutating the original. This provides immutability guarantees with **performance competitive** to fast-redact for real-world usage patterns.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @pinojs/redact
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```js
|
|
16
|
+
const slowRedact = require('@pinojs/redact')
|
|
17
|
+
|
|
18
|
+
const redact = slowRedact({
|
|
19
|
+
paths: ['headers.cookie', 'headers.authorization', 'user.password']
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
const obj = {
|
|
23
|
+
headers: {
|
|
24
|
+
cookie: 'secret-session-token',
|
|
25
|
+
authorization: 'Bearer abc123',
|
|
26
|
+
'x-forwarded-for': '192.168.1.1'
|
|
27
|
+
},
|
|
28
|
+
user: {
|
|
29
|
+
name: 'john',
|
|
30
|
+
password: 'secret123'
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
console.log(redact(obj))
|
|
35
|
+
// Output: {"headers":{"cookie":"[REDACTED]","authorization":"[REDACTED]","x-forwarded-for":"192.168.1.1"},"user":{"name":"john","password":"[REDACTED]"}}
|
|
36
|
+
|
|
37
|
+
// Original object is completely unchanged:
|
|
38
|
+
console.log(obj.headers.cookie) // 'secret-session-token'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## API
|
|
42
|
+
|
|
43
|
+
### slowRedact(options) → Function
|
|
44
|
+
|
|
45
|
+
Creates a redaction function with the specified options.
|
|
46
|
+
|
|
47
|
+
#### Options
|
|
48
|
+
|
|
49
|
+
- **paths** `string[]` (required): An array of strings describing the nested location of a key in an object
|
|
50
|
+
- **censor** `any` (optional, default: `'[REDACTED]'`): The value to replace sensitive data with. Can be a static value or function.
|
|
51
|
+
- **serialize** `Function|boolean` (optional, default: `JSON.stringify`): Serialization function. Set to `false` to return the redacted object.
|
|
52
|
+
- **remove** `boolean` (optional, default: `false`): Remove redacted keys from serialized output
|
|
53
|
+
- **strict** `boolean` (optional, default: `true`): Throw on non-object values or pass through primitives
|
|
54
|
+
|
|
55
|
+
#### Path Syntax
|
|
56
|
+
|
|
57
|
+
Supports the same path syntax as fast-redact:
|
|
58
|
+
|
|
59
|
+
- **Dot notation**: `'user.name'`, `'headers.cookie'`
|
|
60
|
+
- **Bracket notation**: `'user["password"]'`, `'headers["X-Forwarded-For"]'`
|
|
61
|
+
- **Array indices**: `'users[0].password'`, `'items[1].secret'`
|
|
62
|
+
- **Wildcards**:
|
|
63
|
+
- Terminal: `'users.*.password'` (redacts password for all users)
|
|
64
|
+
- Intermediate: `'*.password'` (redacts password at any level)
|
|
65
|
+
- Array wildcard: `'items.*'` (redacts all array elements)
|
|
66
|
+
|
|
67
|
+
#### Examples
|
|
68
|
+
|
|
69
|
+
**Custom censor value:**
|
|
70
|
+
```js
|
|
71
|
+
const redact = slowRedact({
|
|
72
|
+
paths: ['password'],
|
|
73
|
+
censor: '***HIDDEN***'
|
|
74
|
+
})
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Dynamic censor function:**
|
|
78
|
+
```js
|
|
79
|
+
const redact = slowRedact({
|
|
80
|
+
paths: ['password'],
|
|
81
|
+
censor: (value, path) => `REDACTED:${path}`
|
|
82
|
+
})
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Return object instead of JSON string:**
|
|
86
|
+
```js
|
|
87
|
+
const redact = slowRedact({
|
|
88
|
+
paths: ['secret'],
|
|
89
|
+
serialize: false
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
const result = redact({ secret: 'hidden', public: 'data' })
|
|
93
|
+
console.log(result.secret) // '[REDACTED]'
|
|
94
|
+
console.log(result.public) // 'data'
|
|
95
|
+
|
|
96
|
+
// Restore original values
|
|
97
|
+
const restored = result.restore()
|
|
98
|
+
console.log(restored.secret) // 'hidden'
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Custom serialization:**
|
|
102
|
+
```js
|
|
103
|
+
const redact = slowRedact({
|
|
104
|
+
paths: ['password'],
|
|
105
|
+
serialize: obj => JSON.stringify(obj, null, 2)
|
|
106
|
+
})
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Remove keys instead of redacting:**
|
|
110
|
+
```js
|
|
111
|
+
const redact = slowRedact({
|
|
112
|
+
paths: ['password', 'user.secret'],
|
|
113
|
+
remove: true
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
const obj = { username: 'john', password: 'secret123', user: { name: 'Jane', secret: 'hidden' } }
|
|
117
|
+
console.log(redact(obj))
|
|
118
|
+
// Output: {"username":"john","user":{"name":"Jane"}}
|
|
119
|
+
// Note: 'password' and 'user.secret' are completely absent, not redacted
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Wildcard patterns:**
|
|
123
|
+
```js
|
|
124
|
+
// Redact all properties in secrets object
|
|
125
|
+
const redact1 = slowRedact({ paths: ['secrets.*'] })
|
|
126
|
+
|
|
127
|
+
// Redact password for any user
|
|
128
|
+
const redact2 = slowRedact({ paths: ['users.*.password'] })
|
|
129
|
+
|
|
130
|
+
// Redact all items in an array
|
|
131
|
+
const redact3 = slowRedact({ paths: ['items.*'] })
|
|
132
|
+
|
|
133
|
+
// Remove all secrets instead of redacting them
|
|
134
|
+
const redact4 = slowRedact({ paths: ['secrets.*'], remove: true })
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Key Differences from fast-redact
|
|
138
|
+
|
|
139
|
+
### Safety First
|
|
140
|
+
- **No mutation**: Original objects are never modified
|
|
141
|
+
- **Selective cloning**: Only clones paths that need redaction, shares references for everything else
|
|
142
|
+
- **Restore capability**: Can restore original values when `serialize: false`
|
|
143
|
+
|
|
144
|
+
### Feature Compatibility
|
|
145
|
+
- **Remove option**: Full compatibility with fast-redact's `remove: true` option to completely omit keys from output
|
|
146
|
+
- **All path patterns**: Supports same syntax including wildcards, bracket notation, and array indices
|
|
147
|
+
- **Censor functions**: Dynamic censoring with path information passed as arrays
|
|
148
|
+
- **Serialization**: Custom serializers and `serialize: false` mode
|
|
149
|
+
|
|
150
|
+
### Smart Performance Approach
|
|
151
|
+
- **Selective cloning**: Analyzes redaction paths and only clones necessary object branches
|
|
152
|
+
- **Reference sharing**: Non-redacted properties maintain original object references
|
|
153
|
+
- **Memory efficiency**: Dramatically reduced memory usage for large objects with minimal redaction
|
|
154
|
+
- **Setup-time optimization**: Path analysis happens once during setup, not per redaction
|
|
155
|
+
|
|
156
|
+
### When to Use @pinojs/redact
|
|
157
|
+
- When immutability is critical
|
|
158
|
+
- When you need to preserve original objects
|
|
159
|
+
- When objects are shared across multiple contexts
|
|
160
|
+
- In functional programming environments
|
|
161
|
+
- When debugging and you need to compare before/after
|
|
162
|
+
- **Large objects with selective redaction** (now performance-competitive!)
|
|
163
|
+
- When memory efficiency with reference sharing is important
|
|
164
|
+
|
|
165
|
+
### When to Use fast-redact
|
|
166
|
+
- When absolute maximum performance is critical
|
|
167
|
+
- In extremely high-throughput scenarios (>100,000 ops/sec)
|
|
168
|
+
- When you control the object lifecycle and mutation is acceptable
|
|
169
|
+
- Very small objects where setup overhead matters
|
|
170
|
+
|
|
171
|
+
## Performance Benchmarks
|
|
172
|
+
|
|
173
|
+
@pinojs/redact uses **selective cloning** that provides good performance while maintaining immutability guarantees:
|
|
174
|
+
|
|
175
|
+
### Performance Results
|
|
176
|
+
|
|
177
|
+
| Operation Type | @pinojs/redact | fast-redact | Performance Ratio |
|
|
178
|
+
|---------------|-------------|-------------|-------------------|
|
|
179
|
+
| **Small objects** | ~690ns | ~200ns | ~3.5x slower |
|
|
180
|
+
| **Large objects (minimal redaction)** | **~18μs** | ~17μs | **~same performance** |
|
|
181
|
+
| **Large objects (wildcards)** | **~48μs** | ~37μs | **~1.3x slower** |
|
|
182
|
+
| **No redaction (large objects)** | **~18μs** | ~17μs | **~same performance** |
|
|
183
|
+
|
|
184
|
+
### Performance Improvements
|
|
185
|
+
|
|
186
|
+
@pinojs/redact is performance-competitive with fast-redact for large objects.
|
|
187
|
+
|
|
188
|
+
1. **Selective cloning approach**: Only clones object paths that need redaction
|
|
189
|
+
2. **Reference sharing**: Non-redacted properties share original object references
|
|
190
|
+
3. **Setup-time optimization**: Path analysis happens once, not per redaction
|
|
191
|
+
4. **Memory efficiency**: Dramatically reduced memory usage for typical use cases
|
|
192
|
+
|
|
193
|
+
### Benchmark Details
|
|
194
|
+
|
|
195
|
+
**Small Objects (~180 bytes)**:
|
|
196
|
+
- @pinojs/redact: **690ns** per operation
|
|
197
|
+
- fast-redact: **200ns** per operation
|
|
198
|
+
- **Slight setup overhead for small objects**
|
|
199
|
+
|
|
200
|
+
**Large Objects (~18KB, minimal redaction)**:
|
|
201
|
+
- @pinojs/redact: **18μs** per operation
|
|
202
|
+
- fast-redact: **17μs** per operation
|
|
203
|
+
- Near-identical performance
|
|
204
|
+
|
|
205
|
+
**Large Objects (~18KB, wildcard patterns)**:
|
|
206
|
+
- @pinojs/redact: **48μs** per operation
|
|
207
|
+
- fast-redact: **37μs** per operation
|
|
208
|
+
- Competitive performance for complex patterns
|
|
209
|
+
|
|
210
|
+
**Memory Considerations**:
|
|
211
|
+
- @pinojs/redact: **Selective reference sharing** (much lower memory usage than before)
|
|
212
|
+
- fast-redact: Mutates in-place (lowest memory usage)
|
|
213
|
+
- Large objects with few redacted paths now share most references
|
|
214
|
+
|
|
215
|
+
### When Performance Matters
|
|
216
|
+
|
|
217
|
+
Choose **fast-redact** when:
|
|
218
|
+
- Absolute maximum performance is critical (>100,000 ops/sec)
|
|
219
|
+
- Working with very small objects frequently
|
|
220
|
+
- Mutation is acceptable and controlled
|
|
221
|
+
- Every microsecond counts
|
|
222
|
+
|
|
223
|
+
Choose **@pinojs/redact** when:
|
|
224
|
+
- Immutability is required (with competitive performance)
|
|
225
|
+
- Objects are shared across contexts
|
|
226
|
+
- Large objects with selective redaction
|
|
227
|
+
- Memory efficiency through reference sharing is important
|
|
228
|
+
- Safety and functionality are priorities
|
|
229
|
+
- Most production applications (performance gap is minimal)
|
|
230
|
+
|
|
231
|
+
Run benchmarks yourself:
|
|
232
|
+
```bash
|
|
233
|
+
npm run bench
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## How Selective Cloning Works
|
|
237
|
+
|
|
238
|
+
@pinojs/redact uses an innovative **selective cloning** approach that provides immutability guarantees while dramatically improving performance:
|
|
239
|
+
|
|
240
|
+
### Traditional Approach (before optimization)
|
|
241
|
+
```js
|
|
242
|
+
// Old approach: Deep clone entire object, then redact
|
|
243
|
+
const fullClone = deepClone(originalObject) // Clone everything
|
|
244
|
+
redact(fullClone, paths) // Then redact specific paths
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Selective Cloning Approach (current)
|
|
248
|
+
```js
|
|
249
|
+
// New approach: Analyze paths, clone only what's needed
|
|
250
|
+
const pathStructure = buildPathStructure(paths) // One-time setup
|
|
251
|
+
const selectiveClone = cloneOnlyNeededPaths(obj, pathStructure) // Smart cloning
|
|
252
|
+
redact(selectiveClone, paths) // Redact pre-identified paths
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Key Innovations
|
|
256
|
+
|
|
257
|
+
1. **Path Analysis**: Pre-processes redaction paths into an efficient tree structure
|
|
258
|
+
2. **Selective Cloning**: Only creates new objects for branches that contain redaction targets
|
|
259
|
+
3. **Reference Sharing**: Non-redacted properties maintain exact same object references
|
|
260
|
+
4. **Setup Optimization**: Path parsing happens once during redactor creation, not per redaction
|
|
261
|
+
|
|
262
|
+
### Example: Reference Sharing in Action
|
|
263
|
+
|
|
264
|
+
```js
|
|
265
|
+
const largeConfig = {
|
|
266
|
+
database: { /* large config object */ },
|
|
267
|
+
api: { /* another large config */ },
|
|
268
|
+
secrets: { password: 'hidden', apiKey: 'secret' }
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
const redact = slowRedact({ paths: ['secrets.password'] })
|
|
272
|
+
const result = redact(largeConfig)
|
|
273
|
+
|
|
274
|
+
// Only secrets object is cloned, database and api share original references
|
|
275
|
+
console.log(result.database === largeConfig.database) // true - shared reference!
|
|
276
|
+
console.log(result.api === largeConfig.api) // true - shared reference!
|
|
277
|
+
console.log(result.secrets === largeConfig.secrets) // false - cloned for redaction
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
This approach provides **immutability where it matters** while **sharing references where it's safe**.
|
|
281
|
+
|
|
282
|
+
## Remove Option
|
|
283
|
+
|
|
284
|
+
The `remove: true` option provides full compatibility with fast-redact's key removal functionality:
|
|
285
|
+
|
|
286
|
+
```js
|
|
287
|
+
const redact = slowRedact({
|
|
288
|
+
paths: ['password', 'secrets.*', 'users.*.credentials'],
|
|
289
|
+
remove: true
|
|
290
|
+
})
|
|
291
|
+
|
|
292
|
+
const data = {
|
|
293
|
+
username: 'john',
|
|
294
|
+
password: 'secret123',
|
|
295
|
+
secrets: { apiKey: 'abc', token: 'xyz' },
|
|
296
|
+
users: [
|
|
297
|
+
{ name: 'Alice', credentials: { password: 'pass1' } },
|
|
298
|
+
{ name: 'Bob', credentials: { password: 'pass2' } }
|
|
299
|
+
]
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
console.log(redact(data))
|
|
303
|
+
// Output: {"username":"john","secrets":{},"users":[{"name":"Alice"},{"name":"Bob"}]}
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Remove vs Redact Behavior
|
|
307
|
+
|
|
308
|
+
| Option | Behavior | Output Example |
|
|
309
|
+
|--------|----------|----------------|
|
|
310
|
+
| Default (redact) | Replaces values with censor | `{"password":"[REDACTED]"}` |
|
|
311
|
+
| `remove: true` | Completely omits keys | `{}` |
|
|
312
|
+
|
|
313
|
+
### Compatibility Notes
|
|
314
|
+
|
|
315
|
+
- **Same output as fast-redact**: Identical JSON output when using `remove: true`
|
|
316
|
+
- **Wildcard support**: Works with all wildcard patterns (`*`, `users.*`, `items.*.secret`)
|
|
317
|
+
- **Array handling**: Array items are set to `undefined` (omitted in JSON output)
|
|
318
|
+
- **Nested paths**: Supports deep removal (`users.*.credentials.password`)
|
|
319
|
+
- **Serialize compatibility**: Only works with `JSON.stringify` serializer (like fast-redact)
|
|
320
|
+
|
|
321
|
+
## Testing
|
|
322
|
+
|
|
323
|
+
```bash
|
|
324
|
+
# Run unit tests
|
|
325
|
+
npm test
|
|
326
|
+
|
|
327
|
+
# Run integration tests comparing with fast-redact
|
|
328
|
+
npm run test:integration
|
|
329
|
+
|
|
330
|
+
# Run all tests (unit + integration)
|
|
331
|
+
npm run test:all
|
|
332
|
+
|
|
333
|
+
# Run benchmarks
|
|
334
|
+
npm run bench
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
### Test Coverage
|
|
338
|
+
|
|
339
|
+
- **16 unit tests**: Core functionality and edge cases
|
|
340
|
+
- **16 integration tests**: Output compatibility with fast-redact
|
|
341
|
+
- **All major features**: Paths, wildcards, serialization, custom censors
|
|
342
|
+
- **Performance benchmarks**: Direct comparison with fast-redact
|
|
343
|
+
|
|
344
|
+
## License
|
|
345
|
+
|
|
346
|
+
MIT
|
|
347
|
+
|
|
348
|
+
## Contributing
|
|
349
|
+
|
|
350
|
+
Pull requests welcome! Please ensure all tests pass and add tests for new features.
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
const { bench, group, run } = require('mitata')
|
|
2
|
+
const slowRedact = require('../index.js')
|
|
3
|
+
const fastRedact = require('fast-redact')
|
|
4
|
+
|
|
5
|
+
// Test objects
|
|
6
|
+
const smallObj = {
|
|
7
|
+
user: { name: 'john', password: 'secret123' },
|
|
8
|
+
headers: { cookie: 'session-token', authorization: 'Bearer abc123' }
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const largeObj = {
|
|
12
|
+
users: [],
|
|
13
|
+
metadata: {
|
|
14
|
+
version: '1.0.0',
|
|
15
|
+
secret: 'app-secret-key',
|
|
16
|
+
database: {
|
|
17
|
+
host: 'localhost',
|
|
18
|
+
password: 'db-password'
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Populate users array with for loop instead of Array.from
|
|
24
|
+
for (let i = 0; i < 100; i++) {
|
|
25
|
+
largeObj.users.push({
|
|
26
|
+
id: i,
|
|
27
|
+
name: `user${i}`,
|
|
28
|
+
email: `user${i}@example.com`,
|
|
29
|
+
password: `secret${i}`,
|
|
30
|
+
profile: {
|
|
31
|
+
age: 20 + (i % 50),
|
|
32
|
+
preferences: {
|
|
33
|
+
theme: 'dark',
|
|
34
|
+
notifications: true,
|
|
35
|
+
apiKey: `key-${i}-secret`
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Redaction configurations
|
|
42
|
+
const basicSlowRedact = slowRedact({
|
|
43
|
+
paths: ['user.password', 'headers.cookie']
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
const basicFastRedact = fastRedact({
|
|
47
|
+
paths: ['user.password', 'headers.cookie']
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
const wildcardSlowRedact = slowRedact({
|
|
51
|
+
paths: ['users.*.password', 'users.*.profile.preferences.apiKey']
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
const wildcardFastRedact = fastRedact({
|
|
55
|
+
paths: ['users.*.password', 'users.*.profile.preferences.apiKey']
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
const deepSlowRedact = slowRedact({
|
|
59
|
+
paths: ['metadata.secret', 'metadata.database.password']
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
const deepFastRedact = fastRedact({
|
|
63
|
+
paths: ['metadata.secret', 'metadata.database.password']
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
group('Small Object Redaction - @pinojs/redact', () => {
|
|
67
|
+
bench('basic paths', () => {
|
|
68
|
+
basicSlowRedact(smallObj)
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
bench('serialize: false', () => {
|
|
72
|
+
const redact = slowRedact({
|
|
73
|
+
paths: ['user.password'],
|
|
74
|
+
serialize: false
|
|
75
|
+
})
|
|
76
|
+
redact(smallObj)
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
bench('custom censor function', () => {
|
|
80
|
+
const redact = slowRedact({
|
|
81
|
+
paths: ['user.password'],
|
|
82
|
+
censor: (value, path) => `HIDDEN:${path}`
|
|
83
|
+
})
|
|
84
|
+
redact(smallObj)
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
group('Small Object Redaction - fast-redact', () => {
|
|
89
|
+
bench('basic paths', () => {
|
|
90
|
+
basicFastRedact(smallObj)
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
bench('serialize: false', () => {
|
|
94
|
+
const redact = fastRedact({
|
|
95
|
+
paths: ['user.password'],
|
|
96
|
+
serialize: false
|
|
97
|
+
})
|
|
98
|
+
redact(smallObj)
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
bench('custom censor function', () => {
|
|
102
|
+
const redact = fastRedact({
|
|
103
|
+
paths: ['user.password'],
|
|
104
|
+
censor: (value, path) => `HIDDEN:${path}`
|
|
105
|
+
})
|
|
106
|
+
redact(smallObj)
|
|
107
|
+
})
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
group('Large Object Redaction - @pinojs/redact', () => {
|
|
111
|
+
bench('wildcard patterns', () => {
|
|
112
|
+
wildcardSlowRedact(largeObj)
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
bench('deep nested paths', () => {
|
|
116
|
+
deepSlowRedact(largeObj)
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
bench('multiple wildcards', () => {
|
|
120
|
+
const redact = slowRedact({
|
|
121
|
+
paths: ['users.*.password', 'users.*.profile.preferences.*']
|
|
122
|
+
})
|
|
123
|
+
redact(largeObj)
|
|
124
|
+
})
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
group('Large Object Redaction - fast-redact', () => {
|
|
128
|
+
bench('wildcard patterns', () => {
|
|
129
|
+
wildcardFastRedact(largeObj)
|
|
130
|
+
})
|
|
131
|
+
|
|
132
|
+
bench('deep nested paths', () => {
|
|
133
|
+
deepFastRedact(largeObj)
|
|
134
|
+
})
|
|
135
|
+
|
|
136
|
+
bench('multiple wildcards', () => {
|
|
137
|
+
const redact = fastRedact({
|
|
138
|
+
paths: ['users.*.password', 'users.*.profile.preferences.*']
|
|
139
|
+
})
|
|
140
|
+
redact(largeObj)
|
|
141
|
+
})
|
|
142
|
+
})
|
|
143
|
+
|
|
144
|
+
group('Direct Performance Comparison', () => {
|
|
145
|
+
bench('@pinojs/redact - basic paths', () => {
|
|
146
|
+
basicSlowRedact(smallObj)
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
bench('fast-redact - basic paths', () => {
|
|
150
|
+
basicFastRedact(smallObj)
|
|
151
|
+
})
|
|
152
|
+
|
|
153
|
+
bench('@pinojs/redact - wildcards', () => {
|
|
154
|
+
wildcardSlowRedact(largeObj)
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
bench('fast-redact - wildcards', () => {
|
|
158
|
+
wildcardFastRedact(largeObj)
|
|
159
|
+
})
|
|
160
|
+
})
|
|
161
|
+
|
|
162
|
+
group('Object Cloning Overhead', () => {
|
|
163
|
+
bench('@pinojs/redact - no redaction (clone only)', () => {
|
|
164
|
+
const redact = slowRedact({ paths: [] })
|
|
165
|
+
redact(smallObj)
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
bench('fast-redact - no redaction', () => {
|
|
169
|
+
const redact = fastRedact({ paths: [] })
|
|
170
|
+
redact(smallObj)
|
|
171
|
+
})
|
|
172
|
+
|
|
173
|
+
bench('@pinojs/redact - large object clone', () => {
|
|
174
|
+
const redact = slowRedact({ paths: [] })
|
|
175
|
+
redact(largeObj)
|
|
176
|
+
})
|
|
177
|
+
|
|
178
|
+
bench('fast-redact - large object', () => {
|
|
179
|
+
const redact = fastRedact({ paths: [] })
|
|
180
|
+
redact(largeObj)
|
|
181
|
+
})
|
|
182
|
+
})
|
|
183
|
+
|
|
184
|
+
run()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('neostandard')()
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export = F;
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* When called without any options, or with a zero length paths array, @pinojs/redact will return JSON.stringify or the serialize option, if set.
|
|
5
|
+
* @param redactOptions
|
|
6
|
+
* @param redactOptions.paths An array of strings describing the nested location of a key in an object.
|
|
7
|
+
* @param redactOptions.censor This is the value which overwrites redacted properties.
|
|
8
|
+
* @param redactOptions.remove The remove option, when set to true will cause keys to be removed from the serialized output.
|
|
9
|
+
* @param redactOptions.serialize The serialize option may either be a function or a boolean. If a function is supplied, this will be used to serialize the redacted object.
|
|
10
|
+
* @param redactOptions.strict The strict option, when set to true, will cause the redactor function to throw if instead of an object it finds a primitive.
|
|
11
|
+
* @returns Redacted value from input
|
|
12
|
+
*/
|
|
13
|
+
declare function F(
|
|
14
|
+
redactOptions: F.RedactOptionsNoSerialize
|
|
15
|
+
): F.redactFnNoSerialize;
|
|
16
|
+
declare function F(redactOptions?: F.RedactOptions): F.redactFn;
|
|
17
|
+
|
|
18
|
+
declare namespace F {
|
|
19
|
+
/** Redacts input */
|
|
20
|
+
type redactFn = <T>(input: T) => string | T;
|
|
21
|
+
|
|
22
|
+
/** Redacts input without serialization */
|
|
23
|
+
type redactFnNoSerialize = redactFn & {
|
|
24
|
+
/** Method that allowing the redacted keys to be restored with the original data. Supplied only when serialize option set to false. */
|
|
25
|
+
restore<T>(input: T): T;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
interface RedactOptions {
|
|
29
|
+
/** An array of strings describing the nested location of a key in an object. */
|
|
30
|
+
paths?: string[] | undefined;
|
|
31
|
+
|
|
32
|
+
/** This is the value which overwrites redacted properties. */
|
|
33
|
+
censor?: string | ((v: any) => any) | undefined;
|
|
34
|
+
|
|
35
|
+
/** The remove option, when set to true will cause keys to be removed from the serialized output. */
|
|
36
|
+
remove?: boolean | undefined;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* The serialize option may either be a function or a boolean. If a function is supplied, this will be used to serialize the redacted object.
|
|
40
|
+
* The default serialize is the function JSON.stringify
|
|
41
|
+
*/
|
|
42
|
+
serialize?: boolean | ((v: any) => any) | undefined;
|
|
43
|
+
|
|
44
|
+
/** The strict option, when set to true, will cause the redactor function to throw if instead of an object it finds a primitive. */
|
|
45
|
+
strict?: boolean | undefined;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** RedactOptions without serialization. Instead of the serialized object, the output of the redactor function will be the mutated object itself. */
|
|
49
|
+
interface RedactOptionsNoSerialize extends RedactOptions {
|
|
50
|
+
serialize: false;
|
|
51
|
+
}
|
|
52
|
+
}
|