@withbuddi/buddi 0.1.0-pre.36 → 0.1.0-pre.37
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/examples/agents/concierge/agent.md +5 -0
- package/examples/skills/letterhead/SKILL.md +21 -0
- package/examples/skills/letterhead/assets/letterhead.md +16 -0
- package/examples/skills/letterhead/assets/logo.svg +6 -0
- package/extension/manifest.json +2 -2
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/cli/dist/doctor-probes.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/doctor-probes.js +38 -3
- package/node_modules/@buddi/cli/dist/doctor-probes.js.map +1 -1
- package/node_modules/@buddi/cli/dist/doctor.d.ts +25 -0
- package/node_modules/@buddi/cli/dist/doctor.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/doctor.js +28 -0
- package/node_modules/@buddi/cli/dist/doctor.js.map +1 -1
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/actions/approvals.d.ts +7 -0
- package/node_modules/@buddi/core/dist/actions/approvals.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/actions/approvals.js +11 -1
- package/node_modules/@buddi/core/dist/actions/approvals.js.map +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.js +2 -2
- package/node_modules/@buddi/core/dist/agents/catalog.js.map +1 -1
- package/node_modules/@buddi/core/dist/agents/skills.d.ts +60 -1
- package/node_modules/@buddi/core/dist/agents/skills.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/agents/skills.js +157 -17
- package/node_modules/@buddi/core/dist/agents/skills.js.map +1 -1
- package/node_modules/@buddi/core/dist/day-month.d.ts +52 -0
- package/node_modules/@buddi/core/dist/day-month.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/day-month.js +101 -0
- package/node_modules/@buddi/core/dist/day-month.js.map +1 -0
- package/node_modules/@buddi/core/dist/host/build.d.ts +11 -2
- package/node_modules/@buddi/core/dist/host/build.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/host/build.js +115 -4
- package/node_modules/@buddi/core/dist/host/build.js.map +1 -1
- package/node_modules/@buddi/core/dist/host/http.d.ts +35 -0
- package/node_modules/@buddi/core/dist/host/http.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/host/http.js +133 -29
- package/node_modules/@buddi/core/dist/host/http.js.map +1 -1
- package/node_modules/@buddi/core/dist/host/types.d.ts +72 -1
- package/node_modules/@buddi/core/dist/host/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/index.d.ts +2 -0
- package/node_modules/@buddi/core/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/index.js +2 -0
- package/node_modules/@buddi/core/dist/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/onboarding/store.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/onboarding/store.js +28 -5
- package/node_modules/@buddi/core/dist/onboarding/store.js.map +1 -1
- package/node_modules/@buddi/core/dist/onboarding/types.d.ts +10 -0
- package/node_modules/@buddi/core/dist/onboarding/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/onboarding/types.js.map +1 -1
- package/node_modules/@buddi/core/dist/pages.d.ts +145 -11
- package/node_modules/@buddi/core/dist/pages.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/pages.js +113 -5
- package/node_modules/@buddi/core/dist/pages.js.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.d.ts +4 -0
- package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.js +2 -0
- package/node_modules/@buddi/core/dist/plugin/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/sign-in.d.ts +78 -0
- package/node_modules/@buddi/core/dist/plugin/sign-in.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/plugin/sign-in.js +54 -0
- package/node_modules/@buddi/core/dist/plugin/sign-in.js.map +1 -0
- package/node_modules/@buddi/core/dist/plugin/version.d.ts +1 -1
- package/node_modules/@buddi/core/dist/plugin/version.js +1 -1
- package/node_modules/@buddi/core/dist/provider-accounts.d.ts +7 -0
- package/node_modules/@buddi/core/dist/provider-accounts.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/provider-accounts.js +15 -0
- package/node_modules/@buddi/core/dist/provider-accounts.js.map +1 -1
- package/node_modules/@buddi/core/dist/questions/types.d.ts +1 -1
- package/node_modules/@buddi/core/dist/questions/types.js +1 -1
- package/node_modules/@buddi/core/dist/queue/jobs.d.ts +57 -2
- package/node_modules/@buddi/core/dist/queue/jobs.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/queue/jobs.js +114 -0
- package/node_modules/@buddi/core/dist/queue/jobs.js.map +1 -1
- package/node_modules/@buddi/core/dist/queue/worker.d.ts +24 -2
- package/node_modules/@buddi/core/dist/queue/worker.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/queue/worker.js +66 -11
- package/node_modules/@buddi/core/dist/queue/worker.js.map +1 -1
- package/node_modules/@buddi/core/dist/registry.d.ts +8 -0
- package/node_modules/@buddi/core/dist/registry.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/registry.js +15 -2
- package/node_modules/@buddi/core/dist/registry.js.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/scrub.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/scrub.js +15 -0
- package/node_modules/@buddi/core/dist/secrets/scrub.js.map +1 -1
- package/node_modules/@buddi/core/dist/tools.d.ts +29 -0
- package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/tools.js.map +1 -1
- package/node_modules/@buddi/core/dist/views.d.ts +12 -12
- package/node_modules/@buddi/core/dist/widgets.d.ts +14 -1
- package/node_modules/@buddi/core/dist/widgets.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/widgets.js +30 -0
- package/node_modules/@buddi/core/dist/widgets.js.map +1 -1
- package/node_modules/@buddi/core/migrations/074_owner_identity.sql +14 -0
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalog.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalog.js +3 -3
- package/node_modules/@buddi/gateway/dist/agents/catalog.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts +8 -0
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js +11 -4
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/owner-tools.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/owner-tools.js +36 -2
- package/node_modules/@buddi/gateway/dist/agents/owner-tools.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts +19 -0
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js +108 -0
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform.d.ts +4 -4
- package/node_modules/@buddi/gateway/dist/agents/platform.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform.js +11 -0
- package/node_modules/@buddi/gateway/dist/agents/platform.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/bootstrap.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/bootstrap.js +4 -1
- package/node_modules/@buddi/gateway/dist/bootstrap.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/evals/golden.d.ts +33 -1
- package/node_modules/@buddi/gateway/dist/evals/golden.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/evals/golden.js +168 -3
- package/node_modules/@buddi/gateway/dist/evals/golden.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/index.d.ts +1 -0
- package/node_modules/@buddi/gateway/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/index.js +1 -0
- package/node_modules/@buddi/gateway/dist/index.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/dates.d.ts +98 -0
- package/node_modules/@buddi/gateway/dist/missions/dates.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/missions/dates.js +252 -0
- package/node_modules/@buddi/gateway/dist/missions/dates.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts +8 -0
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.js +16 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/report.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/report.js +1 -0
- package/node_modules/@buddi/gateway/dist/missions/report.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/ollama-local.d.ts +90 -0
- package/node_modules/@buddi/gateway/dist/ollama-local.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/ollama-local.js +201 -0
- package/node_modules/@buddi/gateway/dist/ollama-local.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts +8 -0
- package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins-cli.js +22 -1
- package/node_modules/@buddi/gateway/dist/plugins-cli.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js +50 -5
- package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/pending-question.js +2 -2
- package/node_modules/@buddi/gateway/dist/system-context.d.ts +21 -1
- package/node_modules/@buddi/gateway/dist/system-context.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/system-context.js +76 -2
- package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/approvals.js +4 -2
- package/node_modules/@buddi/gateway/dist/telegram/approvals.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/channel.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/channel.js +6 -1
- package/node_modules/@buddi/gateway/dist/telegram/channel.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/html.d.ts +34 -0
- package/node_modules/@buddi/gateway/dist/telegram/html.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/html.js +263 -0
- package/node_modules/@buddi/gateway/dist/telegram/html.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/notify.d.ts +6 -0
- package/node_modules/@buddi/gateway/dist/telegram/notify.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/notify.js +25 -3
- package/node_modules/@buddi/gateway/dist/telegram/notify.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/tips/facts.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/tips/facts.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/tips/facts.js +4 -1
- package/node_modules/@buddi/gateway/dist/tips/facts.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/tips/rules.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/tips/rules.js +10 -0
- package/node_modules/@buddi/gateway/dist/tips/rules.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.js +72 -9
- package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-scan.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-scan.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-scan.js +1 -0
- package/node_modules/@buddi/gateway/dist/web/api-scan.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/chat.js +9 -0
- package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/composer.d.ts +45 -0
- package/node_modules/@buddi/gateway/dist/web/composer.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/composer.js +85 -0
- package/node_modules/@buddi/gateway/dist/web/composer.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/market.d.ts +20 -1
- package/node_modules/@buddi/gateway/dist/web/market.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/market.js +41 -1
- package/node_modules/@buddi/gateway/dist/web/market.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/people.d.ts +44 -0
- package/node_modules/@buddi/gateway/dist/web/people.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/people.js +114 -0
- package/node_modules/@buddi/gateway/dist/web/people.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/server.d.ts +4 -0
- package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.js +137 -11
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/skill-bundles.d.ts +101 -0
- package/node_modules/@buddi/gateway/dist/web/skill-bundles.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/skill-bundles.js +439 -0
- package/node_modules/@buddi/gateway/dist/web/skill-bundles.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/skills.d.ts +57 -1
- package/node_modules/@buddi/gateway/dist/web/skills.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/skills.js +171 -9
- package/node_modules/@buddi/gateway/dist/web/skills.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/zip-read.d.ts +31 -0
- package/node_modules/@buddi/gateway/dist/web/zip-read.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/zip-read.js +125 -0
- package/node_modules/@buddi/gateway/dist/web/zip-read.js.map +1 -0
- package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/index.d.ts +1 -0
- package/node_modules/@buddi/runtime/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/index.js +1 -0
- package/node_modules/@buddi/runtime/dist/index.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/loop.js +11 -1
- package/node_modules/@buddi/runtime/dist/loop.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/plugin-sign-in.d.ts +12 -0
- package/node_modules/@buddi/runtime/dist/plugin-sign-in.d.ts.map +1 -0
- package/node_modules/@buddi/runtime/dist/plugin-sign-in.js +397 -0
- package/node_modules/@buddi/runtime/dist/plugin-sign-in.js.map +1 -0
- package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-artifacts/dist/tools/write.d.ts.map +1 -1
- package/node_modules/@buddi/tool-artifacts/dist/tools/write.js +1 -0
- package/node_modules/@buddi/tool-artifacts/dist/tools/write.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-email/dist/widgets.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/widgets.js +2 -1
- package/node_modules/@buddi/tool-email/dist/widgets.js.map +1 -1
- package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-host/dist/index.d.ts +2 -1
- package/node_modules/@buddi/tool-host/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-host/dist/index.js +3 -2
- package/node_modules/@buddi/tool-host/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-host/dist/process.d.ts +4 -0
- package/node_modules/@buddi/tool-host/dist/process.d.ts.map +1 -1
- package/node_modules/@buddi/tool-host/dist/process.js +4 -2
- package/node_modules/@buddi/tool-host/dist/process.js.map +1 -1
- package/node_modules/@buddi/tool-host/dist/service.d.ts +66 -17
- package/node_modules/@buddi/tool-host/dist/service.d.ts.map +1 -1
- package/node_modules/@buddi/tool-host/dist/service.js +172 -9
- package/node_modules/@buddi/tool-host/dist/service.js.map +1 -1
- package/node_modules/@buddi/tool-host/dist/skill-run.d.ts +55 -0
- package/node_modules/@buddi/tool-host/dist/skill-run.d.ts.map +1 -0
- package/node_modules/@buddi/tool-host/dist/skill-run.js +132 -0
- package/node_modules/@buddi/tool-host/dist/skill-run.js.map +1 -0
- package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-memory/dist/index.d.ts +1 -0
- package/node_modules/@buddi/tool-memory/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-memory/dist/index.js +7 -2
- package/node_modules/@buddi/tool-memory/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-memory/dist/people.d.ts +218 -0
- package/node_modules/@buddi/tool-memory/dist/people.d.ts.map +1 -0
- package/node_modules/@buddi/tool-memory/dist/people.js +582 -0
- package/node_modules/@buddi/tool-memory/dist/people.js.map +1 -0
- package/node_modules/@buddi/tool-memory/dist/preamble.d.ts +4 -1
- package/node_modules/@buddi/tool-memory/dist/preamble.d.ts.map +1 -1
- package/node_modules/@buddi/tool-memory/dist/preamble.js +25 -7
- package/node_modules/@buddi/tool-memory/dist/preamble.js.map +1 -1
- package/node_modules/@buddi/tool-memory/migrations/002_people.sql +40 -0
- package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
- package/node_modules/imapflow/CHANGELOG.md +8 -0
- package/node_modules/imapflow/dist/cjs/commands/append.js +27 -3
- package/node_modules/imapflow/dist/cjs/commands/store.js +31 -6
- package/node_modules/imapflow/dist/cjs/imap-flow.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/imap-flow.js +1 -1
- package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
- package/node_modules/imapflow/dist/esm/commands/append.js +27 -3
- package/node_modules/imapflow/dist/esm/commands/store.js +31 -6
- package/node_modules/imapflow/dist/esm/imap-flow.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/imap-flow.js +1 -1
- package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/package-info.js +1 -1
- package/node_modules/imapflow/package.json +4 -4
- package/node_modules/pino/CONTRIBUTING.md +5 -1
- package/node_modules/pino/LICENSE +1 -1
- package/node_modules/pino/README.md +1 -1
- package/node_modules/pino/SECURITY.md +18 -2
- package/node_modules/pino/browser.js +68 -8
- package/node_modules/pino/docs/api.md +75 -4
- package/node_modules/pino/docs/asynchronous.md +18 -3
- package/node_modules/pino/docs/browser.md +63 -0
- package/node_modules/pino/docs/child-loggers.md +22 -1
- package/node_modules/pino/docs/ecosystem.md +1 -0
- package/node_modules/pino/docs/help.md +11 -3
- package/node_modules/pino/docs/lts.md +29 -0
- package/node_modules/pino/docs/pretty.md +3 -0
- package/node_modules/pino/docs/redaction.md +3 -8
- package/node_modules/pino/docs/transports.md +71 -0
- package/node_modules/pino/docs/web.md +11 -14
- package/node_modules/pino/eslint.config.js +15 -7
- package/node_modules/pino/lib/caller.js +10 -0
- package/node_modules/pino/lib/meta.js +1 -1
- package/node_modules/pino/lib/multistream.js +15 -7
- package/node_modules/pino/lib/redaction.js +8 -3
- package/node_modules/pino/lib/symbols.js +3 -1
- package/node_modules/pino/lib/tools.js +2 -2
- package/node_modules/pino/lib/transport.js +14 -1
- package/node_modules/pino/lib/worker.js +4 -1
- package/node_modules/pino/package.json +14 -22
- package/node_modules/pino/pino.d.ts +709 -736
- package/node_modules/pino/pino.js +27 -2
- package/node_modules/pino/test/basic.test.js +66 -0
- package/node_modules/pino/test/browser-bindings.test.js +114 -0
- package/node_modules/pino/test/browser-redaction.test.js +264 -0
- package/node_modules/pino/test/browser-set-bindings.test.js +99 -0
- package/node_modules/pino/test/caller.test.js +20 -0
- package/node_modules/pino/test/escaping.test.js +17 -0
- package/node_modules/pino/test/fixtures/caller-loop.js +6 -0
- package/node_modules/pino/test/fixtures/ts/transpile.cjs +3 -3
- package/node_modules/pino/test/helper.js +6 -2
- package/node_modules/pino/test/multistream.test.js +64 -0
- package/node_modules/pino/test/redact.test.js +30 -0
- package/node_modules/pino/test/smoke.js +59 -0
- package/node_modules/pino/test/transport/core.test.js +85 -0
- package/node_modules/pino/test/transport/sync-false.test.js +12 -0
- package/node_modules/pino/test/transport/uses-pino-config.test.js +4 -4
- package/node_modules/pino/test/types/pino-import.tst.cts +30 -0
- package/node_modules/pino/test/types/pino-import.tst.js +73 -0
- package/node_modules/pino/test/types/pino-multistream.tst.ts +49 -0
- package/node_modules/pino/test/types/pino-top-export.tst.ts +32 -0
- package/node_modules/pino/test/types/{pino-transport.test-d.ts → pino-transport.tst.ts} +85 -70
- package/node_modules/pino/test/types/pino-type-only.tst.ts +77 -0
- package/node_modules/pino/test/types/pino.ts +14 -7
- package/node_modules/pino/test/types/{pino.test-d.ts → pino.tst.ts} +135 -137
- package/node_modules/pino/test/types/tsconfig.json +10 -0
- package/node_modules/pino/tsconfig.json +6 -6
- package/node_modules/real-require/README.md +6 -6
- package/node_modules/real-require/package.json +10 -21
- package/node_modules/real-require/src/index.js +2 -2
- package/package.json +2 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/cli/dist/doctor-probes.d.ts.map +1 -1
- package/packages/cli/dist/doctor-probes.js +38 -3
- package/packages/cli/dist/doctor-probes.js.map +1 -1
- package/packages/cli/dist/doctor.d.ts +25 -0
- package/packages/cli/dist/doctor.d.ts.map +1 -1
- package/packages/cli/dist/doctor.js +28 -0
- package/packages/cli/dist/doctor.js.map +1 -1
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/actions/approvals.d.ts +7 -0
- package/packages/core/dist/actions/approvals.d.ts.map +1 -1
- package/packages/core/dist/actions/approvals.js +11 -1
- package/packages/core/dist/actions/approvals.js.map +1 -1
- package/packages/core/dist/agents/catalog.d.ts.map +1 -1
- package/packages/core/dist/agents/catalog.js +2 -2
- package/packages/core/dist/agents/catalog.js.map +1 -1
- package/packages/core/dist/agents/skills.d.ts +60 -1
- package/packages/core/dist/agents/skills.d.ts.map +1 -1
- package/packages/core/dist/agents/skills.js +157 -17
- package/packages/core/dist/agents/skills.js.map +1 -1
- package/packages/core/dist/day-month.d.ts +52 -0
- package/packages/core/dist/day-month.d.ts.map +1 -0
- package/packages/core/dist/day-month.js +101 -0
- package/packages/core/dist/day-month.js.map +1 -0
- package/packages/core/dist/host/build.d.ts +11 -2
- package/packages/core/dist/host/build.d.ts.map +1 -1
- package/packages/core/dist/host/build.js +115 -4
- package/packages/core/dist/host/build.js.map +1 -1
- package/packages/core/dist/host/http.d.ts +35 -0
- package/packages/core/dist/host/http.d.ts.map +1 -1
- package/packages/core/dist/host/http.js +133 -29
- package/packages/core/dist/host/http.js.map +1 -1
- package/packages/core/dist/host/types.d.ts +72 -1
- package/packages/core/dist/host/types.d.ts.map +1 -1
- package/packages/core/dist/index.d.ts +2 -0
- package/packages/core/dist/index.d.ts.map +1 -1
- package/packages/core/dist/index.js +2 -0
- package/packages/core/dist/index.js.map +1 -1
- package/packages/core/dist/onboarding/store.d.ts.map +1 -1
- package/packages/core/dist/onboarding/store.js +28 -5
- package/packages/core/dist/onboarding/store.js.map +1 -1
- package/packages/core/dist/onboarding/types.d.ts +10 -0
- package/packages/core/dist/onboarding/types.d.ts.map +1 -1
- package/packages/core/dist/onboarding/types.js.map +1 -1
- package/packages/core/dist/pages.d.ts +145 -11
- package/packages/core/dist/pages.d.ts.map +1 -1
- package/packages/core/dist/pages.js +113 -5
- package/packages/core/dist/pages.js.map +1 -1
- package/packages/core/dist/plugin/index.d.ts +4 -0
- package/packages/core/dist/plugin/index.d.ts.map +1 -1
- package/packages/core/dist/plugin/index.js +2 -0
- package/packages/core/dist/plugin/index.js.map +1 -1
- package/packages/core/dist/plugin/sign-in.d.ts +78 -0
- package/packages/core/dist/plugin/sign-in.d.ts.map +1 -0
- package/packages/core/dist/plugin/sign-in.js +54 -0
- package/packages/core/dist/plugin/sign-in.js.map +1 -0
- package/packages/core/dist/plugin/version.d.ts +1 -1
- package/packages/core/dist/plugin/version.js +1 -1
- package/packages/core/dist/provider-accounts.d.ts +7 -0
- package/packages/core/dist/provider-accounts.d.ts.map +1 -1
- package/packages/core/dist/provider-accounts.js +15 -0
- package/packages/core/dist/provider-accounts.js.map +1 -1
- package/packages/core/dist/questions/types.d.ts +1 -1
- package/packages/core/dist/questions/types.js +1 -1
- package/packages/core/dist/queue/jobs.d.ts +57 -2
- package/packages/core/dist/queue/jobs.d.ts.map +1 -1
- package/packages/core/dist/queue/jobs.js +114 -0
- package/packages/core/dist/queue/jobs.js.map +1 -1
- package/packages/core/dist/queue/worker.d.ts +24 -2
- package/packages/core/dist/queue/worker.d.ts.map +1 -1
- package/packages/core/dist/queue/worker.js +66 -11
- package/packages/core/dist/queue/worker.js.map +1 -1
- package/packages/core/dist/registry.d.ts +8 -0
- package/packages/core/dist/registry.d.ts.map +1 -1
- package/packages/core/dist/registry.js +15 -2
- package/packages/core/dist/registry.js.map +1 -1
- package/packages/core/dist/secrets/scrub.d.ts.map +1 -1
- package/packages/core/dist/secrets/scrub.js +15 -0
- package/packages/core/dist/secrets/scrub.js.map +1 -1
- package/packages/core/dist/tools.d.ts +29 -0
- package/packages/core/dist/tools.d.ts.map +1 -1
- package/packages/core/dist/tools.js.map +1 -1
- package/packages/core/dist/views.d.ts +12 -12
- package/packages/core/dist/widgets.d.ts +14 -1
- package/packages/core/dist/widgets.d.ts.map +1 -1
- package/packages/core/dist/widgets.js +30 -0
- package/packages/core/dist/widgets.js.map +1 -1
- package/packages/core/migrations/074_owner_identity.sql +14 -0
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/agents/catalog.d.ts.map +1 -1
- package/packages/gateway/dist/agents/catalog.js +3 -3
- package/packages/gateway/dist/agents/catalog.js.map +1 -1
- package/packages/gateway/dist/agents/catalogue-package.d.ts +8 -0
- package/packages/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
- package/packages/gateway/dist/agents/catalogue-package.js +11 -4
- package/packages/gateway/dist/agents/catalogue-package.js.map +1 -1
- package/packages/gateway/dist/agents/owner-tools.d.ts.map +1 -1
- package/packages/gateway/dist/agents/owner-tools.js +36 -2
- package/packages/gateway/dist/agents/owner-tools.js.map +1 -1
- package/packages/gateway/dist/agents/platform-catalogue.d.ts +19 -0
- package/packages/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
- package/packages/gateway/dist/agents/platform-catalogue.js +108 -0
- package/packages/gateway/dist/agents/platform-catalogue.js.map +1 -1
- package/packages/gateway/dist/agents/platform.d.ts +4 -4
- package/packages/gateway/dist/agents/platform.d.ts.map +1 -1
- package/packages/gateway/dist/agents/platform.js +11 -0
- package/packages/gateway/dist/agents/platform.js.map +1 -1
- package/packages/gateway/dist/bootstrap.d.ts.map +1 -1
- package/packages/gateway/dist/bootstrap.js +4 -1
- package/packages/gateway/dist/bootstrap.js.map +1 -1
- package/packages/gateway/dist/evals/golden.d.ts +33 -1
- package/packages/gateway/dist/evals/golden.d.ts.map +1 -1
- package/packages/gateway/dist/evals/golden.js +168 -3
- package/packages/gateway/dist/evals/golden.js.map +1 -1
- package/packages/gateway/dist/index.d.ts +1 -0
- package/packages/gateway/dist/index.d.ts.map +1 -1
- package/packages/gateway/dist/index.js +1 -0
- package/packages/gateway/dist/index.js.map +1 -1
- package/packages/gateway/dist/missions/dates.d.ts +98 -0
- package/packages/gateway/dist/missions/dates.d.ts.map +1 -0
- package/packages/gateway/dist/missions/dates.js +252 -0
- package/packages/gateway/dist/missions/dates.js.map +1 -0
- package/packages/gateway/dist/missions/execute.d.ts +8 -0
- package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
- package/packages/gateway/dist/missions/execute.js +16 -1
- package/packages/gateway/dist/missions/execute.js.map +1 -1
- package/packages/gateway/dist/missions/report.d.ts.map +1 -1
- package/packages/gateway/dist/missions/report.js +1 -0
- package/packages/gateway/dist/missions/report.js.map +1 -1
- package/packages/gateway/dist/ollama-local.d.ts +90 -0
- package/packages/gateway/dist/ollama-local.d.ts.map +1 -0
- package/packages/gateway/dist/ollama-local.js +201 -0
- package/packages/gateway/dist/ollama-local.js.map +1 -0
- package/packages/gateway/dist/plugins-cli.d.ts +8 -0
- package/packages/gateway/dist/plugins-cli.d.ts.map +1 -1
- package/packages/gateway/dist/plugins-cli.js +22 -1
- package/packages/gateway/dist/plugins-cli.js.map +1 -1
- package/packages/gateway/dist/serve.d.ts.map +1 -1
- package/packages/gateway/dist/serve.js +50 -5
- package/packages/gateway/dist/serve.js.map +1 -1
- package/packages/gateway/dist/surfaces/pending-question.js +2 -2
- package/packages/gateway/dist/system-context.d.ts +21 -1
- package/packages/gateway/dist/system-context.d.ts.map +1 -1
- package/packages/gateway/dist/system-context.js +76 -2
- package/packages/gateway/dist/system-context.js.map +1 -1
- package/packages/gateway/dist/telegram/approvals.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/approvals.js +4 -2
- package/packages/gateway/dist/telegram/approvals.js.map +1 -1
- package/packages/gateway/dist/telegram/channel.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/channel.js +6 -1
- package/packages/gateway/dist/telegram/channel.js.map +1 -1
- package/packages/gateway/dist/telegram/html.d.ts +34 -0
- package/packages/gateway/dist/telegram/html.d.ts.map +1 -0
- package/packages/gateway/dist/telegram/html.js +263 -0
- package/packages/gateway/dist/telegram/html.js.map +1 -0
- package/packages/gateway/dist/telegram/notify.d.ts +6 -0
- package/packages/gateway/dist/telegram/notify.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/notify.js +25 -3
- package/packages/gateway/dist/telegram/notify.js.map +1 -1
- package/packages/gateway/dist/tips/facts.d.ts +2 -0
- package/packages/gateway/dist/tips/facts.d.ts.map +1 -1
- package/packages/gateway/dist/tips/facts.js +4 -1
- package/packages/gateway/dist/tips/facts.js.map +1 -1
- package/packages/gateway/dist/tips/rules.d.ts.map +1 -1
- package/packages/gateway/dist/tips/rules.js +10 -0
- package/packages/gateway/dist/tips/rules.js.map +1 -1
- package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
- package/packages/gateway/dist/web/api-routes.js +72 -9
- package/packages/gateway/dist/web/api-routes.js.map +1 -1
- package/packages/gateway/dist/web/api-scan.d.ts +1 -1
- package/packages/gateway/dist/web/api-scan.d.ts.map +1 -1
- package/packages/gateway/dist/web/api-scan.js +1 -0
- package/packages/gateway/dist/web/api-scan.js.map +1 -1
- package/packages/gateway/dist/web/chat.d.ts.map +1 -1
- package/packages/gateway/dist/web/chat.js +9 -0
- package/packages/gateway/dist/web/chat.js.map +1 -1
- package/packages/gateway/dist/web/composer.d.ts +45 -0
- package/packages/gateway/dist/web/composer.d.ts.map +1 -0
- package/packages/gateway/dist/web/composer.js +85 -0
- package/packages/gateway/dist/web/composer.js.map +1 -0
- package/packages/gateway/dist/web/market.d.ts +20 -1
- package/packages/gateway/dist/web/market.d.ts.map +1 -1
- package/packages/gateway/dist/web/market.js +41 -1
- package/packages/gateway/dist/web/market.js.map +1 -1
- package/packages/gateway/dist/web/people.d.ts +44 -0
- package/packages/gateway/dist/web/people.d.ts.map +1 -0
- package/packages/gateway/dist/web/people.js +114 -0
- package/packages/gateway/dist/web/people.js.map +1 -0
- package/packages/gateway/dist/web/server.d.ts +4 -0
- package/packages/gateway/dist/web/server.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +137 -11
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/gateway/dist/web/skill-bundles.d.ts +101 -0
- package/packages/gateway/dist/web/skill-bundles.d.ts.map +1 -0
- package/packages/gateway/dist/web/skill-bundles.js +439 -0
- package/packages/gateway/dist/web/skill-bundles.js.map +1 -0
- package/packages/gateway/dist/web/skills.d.ts +57 -1
- package/packages/gateway/dist/web/skills.d.ts.map +1 -1
- package/packages/gateway/dist/web/skills.js +171 -9
- package/packages/gateway/dist/web/skills.js.map +1 -1
- package/packages/gateway/dist/web/zip-read.d.ts +31 -0
- package/packages/gateway/dist/web/zip-read.d.ts.map +1 -0
- package/packages/gateway/dist/web/zip-read.js +125 -0
- package/packages/gateway/dist/web/zip-read.js.map +1 -0
- package/packages/install/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/index.d.ts +1 -0
- package/packages/runtime/dist/index.d.ts.map +1 -1
- package/packages/runtime/dist/index.js +1 -0
- package/packages/runtime/dist/index.js.map +1 -1
- package/packages/runtime/dist/loop.js +11 -1
- package/packages/runtime/dist/loop.js.map +1 -1
- package/packages/runtime/dist/plugin-sign-in.d.ts +12 -0
- package/packages/runtime/dist/plugin-sign-in.d.ts.map +1 -0
- package/packages/runtime/dist/plugin-sign-in.js +397 -0
- package/packages/runtime/dist/plugin-sign-in.js.map +1 -0
- package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
- package/packages/tools/artifacts/dist/tools/write.d.ts.map +1 -1
- package/packages/tools/artifacts/dist/tools/write.js +1 -0
- package/packages/tools/artifacts/dist/tools/write.js.map +1 -1
- package/packages/tools/browser/dist/.tsbuildinfo +1 -1
- package/packages/tools/email/dist/.tsbuildinfo +1 -1
- package/packages/tools/email/dist/widgets.d.ts.map +1 -1
- package/packages/tools/email/dist/widgets.js +2 -1
- package/packages/tools/email/dist/widgets.js.map +1 -1
- package/packages/tools/host/dist/.tsbuildinfo +1 -1
- package/packages/tools/host/dist/index.d.ts +2 -1
- package/packages/tools/host/dist/index.d.ts.map +1 -1
- package/packages/tools/host/dist/index.js +3 -2
- package/packages/tools/host/dist/index.js.map +1 -1
- package/packages/tools/host/dist/process.d.ts +4 -0
- package/packages/tools/host/dist/process.d.ts.map +1 -1
- package/packages/tools/host/dist/process.js +4 -2
- package/packages/tools/host/dist/process.js.map +1 -1
- package/packages/tools/host/dist/service.d.ts +66 -17
- package/packages/tools/host/dist/service.d.ts.map +1 -1
- package/packages/tools/host/dist/service.js +172 -9
- package/packages/tools/host/dist/service.js.map +1 -1
- package/packages/tools/host/dist/skill-run.d.ts +55 -0
- package/packages/tools/host/dist/skill-run.d.ts.map +1 -0
- package/packages/tools/host/dist/skill-run.js +132 -0
- package/packages/tools/host/dist/skill-run.js.map +1 -0
- package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
- package/packages/tools/memory/dist/.tsbuildinfo +1 -1
- package/packages/tools/memory/dist/index.d.ts +1 -0
- package/packages/tools/memory/dist/index.d.ts.map +1 -1
- package/packages/tools/memory/dist/index.js +7 -2
- package/packages/tools/memory/dist/index.js.map +1 -1
- package/packages/tools/memory/dist/people.d.ts +218 -0
- package/packages/tools/memory/dist/people.d.ts.map +1 -0
- package/packages/tools/memory/dist/people.js +582 -0
- package/packages/tools/memory/dist/people.js.map +1 -0
- package/packages/tools/memory/dist/preamble.d.ts +4 -1
- package/packages/tools/memory/dist/preamble.d.ts.map +1 -1
- package/packages/tools/memory/dist/preamble.js +25 -7
- package/packages/tools/memory/dist/preamble.js.map +1 -1
- package/packages/tools/memory/migrations/002_people.sql +40 -0
- package/packages/tools/web/dist/.tsbuildinfo +1 -1
- package/packages/web/dist/assets/{index-B_P_ux2I.css → index-CN1AXMI1.css} +1 -1
- package/packages/web/dist/assets/index-CQRE9LJX.js +145 -0
- package/packages/web/dist/assets/{lottie_light-Dj5SSwxs.js → lottie_light-CKJ88Yuk.js} +1 -1
- package/packages/web/dist/build.json +1 -1
- package/packages/web/dist/index.html +2 -2
- package/packages/web/dist/precache.json +4 -4
- package/node_modules/pino/test/types/pino-import.test-d.cts +0 -30
- package/node_modules/pino/test/types/pino-multistream.test-d.ts +0 -28
- package/node_modules/pino/test/types/pino-top-export.test-d.ts +0 -34
- package/node_modules/pino/test/types/pino-type-only.test-d.ts +0 -75
- package/node_modules/thread-stream/node_modules/real-require/LICENSE.md +0 -21
- package/node_modules/thread-stream/node_modules/real-require/README.md +0 -51
- package/node_modules/thread-stream/node_modules/real-require/package.json +0 -38
- package/node_modules/thread-stream/node_modules/real-require/src/index.js +0 -14
- package/packages/web/dist/assets/index-CjOzIGL7.js +0 -134
|
@@ -7,6 +7,69 @@ This can be useful with isomorphic/universal JavaScript code.
|
|
|
7
7
|
By default, in the browser,
|
|
8
8
|
`pino` uses corresponding [Log4j](https://en.wikipedia.org/wiki/Log4j) `console` methods (`console.error`, `console.warn`, `console.info`, `console.debug`, `console.trace`) and uses `console.error` for any `fatal` level logs.
|
|
9
9
|
|
|
10
|
+
<a id="nodejs-only-apis"></a>
|
|
11
|
+
## Node.js-only APIs
|
|
12
|
+
|
|
13
|
+
The browser build (`browser.js`, selected through the `browser` field in
|
|
14
|
+
`package.json`) does not implement the parts of the API that depend on the file
|
|
15
|
+
system or on worker threads. Accessing them in the browser throws a
|
|
16
|
+
`TypeError`, because the export is simply absent:
|
|
17
|
+
|
|
18
|
+
```js
|
|
19
|
+
const pino = require('pino')
|
|
20
|
+
pino.destination('./my-file') // TypeError: pino.destination is not a function
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The following statics are available in Node.js only:
|
|
24
|
+
|
|
25
|
+
| Static | Why it is Node.js only |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| [`pino.destination()`](/docs/api.md#pino-destination) | Returns a [`SonicBoom`](https://github.com/pinojs/sonic-boom) instance writing to a file descriptor. |
|
|
28
|
+
| [`pino.transport()`](/docs/api.md#pino-transport) | Runs a [transport](/docs/transports.md) on a worker thread. |
|
|
29
|
+
| [`pino.multistream()`](/docs/api.md#pino-multistream) | Fans out to multiple destination streams. |
|
|
30
|
+
|
|
31
|
+
`pino.levels`, `pino.stdSerializers` and `pino.stdTimeFunctions` are available in
|
|
32
|
+
both environments.
|
|
33
|
+
|
|
34
|
+
### Methods that are no-ops in the browser
|
|
35
|
+
|
|
36
|
+
These exist on a browser logger, so calling them is safe, but they do nothing:
|
|
37
|
+
|
|
38
|
+
* [`logger.flush([cb])`](/docs/api.md#flush) — there is no write buffer
|
|
39
|
+
to flush. Note that a callback passed to it is **not** invoked.
|
|
40
|
+
* Every `EventEmitter` method (`on`, `once`, `emit`, `removeListener`,
|
|
41
|
+
`listeners`, ...). As a consequence the
|
|
42
|
+
[`level-change`](/docs/api.md#level-change) event never fires in the
|
|
43
|
+
browser.
|
|
44
|
+
|
|
45
|
+
### Writing isomorphic code
|
|
46
|
+
|
|
47
|
+
Code shared between a server and a browser bundle should not call the Node.js
|
|
48
|
+
only statics unconditionally. Guard the call rather than the environment, so the
|
|
49
|
+
same branch works under any bundler:
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
const pino = require('pino')
|
|
53
|
+
|
|
54
|
+
const logger = pino.destination
|
|
55
|
+
? pino(pino.destination('./my-file')) // Node.js
|
|
56
|
+
: pino({ browser: { asObject: true } }) // browser
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Note that the browser build's `pino()` accepts the options object only. A second
|
|
60
|
+
`destination` argument is accepted but ignored, so a logger constructed with one
|
|
61
|
+
still writes to the console rather than failing:
|
|
62
|
+
|
|
63
|
+
```js
|
|
64
|
+
// in the browser the second argument is ignored, not honoured
|
|
65
|
+
const logger = pino({ level: 'info' }, someDestination)
|
|
66
|
+
logger.info('still goes to the console')
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Assigning a no-op shim onto the `pino` export (`pino.destination = () => {}`)
|
|
70
|
+
works too, but it mutates a module object shared with every other importer in the
|
|
71
|
+
bundle; guarding the call site keeps the change local.
|
|
72
|
+
|
|
10
73
|
## Options
|
|
11
74
|
|
|
12
75
|
Pino can be passed a `browser` object in the options object,
|
|
@@ -20,6 +20,26 @@ module.exports = {
|
|
|
20
20
|
}
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
Child logger bindings are top-level fields on every log line emitted by the
|
|
24
|
+
child logger. Do not create child loggers from externally supplied objects or
|
|
25
|
+
user-controlled binding names, because those keys can conflict with Pino fields
|
|
26
|
+
such as `level`, `time`, or `msg`, as well as application or security fields.
|
|
27
|
+
If untrusted data must be associated with logs, place it under an
|
|
28
|
+
application-controlled key:
|
|
29
|
+
|
|
30
|
+
```js
|
|
31
|
+
// Avoid: user-controlled keys become top-level fields on every child log line
|
|
32
|
+
const child = logger.child(untrustedObject)
|
|
33
|
+
|
|
34
|
+
// Prefer: user-controlled keys are contained under a trusted namespace
|
|
35
|
+
const child = logger.child({ untrusted: untrustedObject })
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
As a matter of good security hygiene, prefer not to log untrusted data at all
|
|
39
|
+
unless it is necessary. When it is necessary, sanitize and redact it first.
|
|
40
|
+
See also [`logger.child()` in the API documentation](/docs/api.md#child) and
|
|
41
|
+
[`mergingObject`](/docs/api.md#mergingobject).
|
|
42
|
+
|
|
23
43
|
## Cost of child logging
|
|
24
44
|
|
|
25
45
|
Child logger creation is fast:
|
|
@@ -88,7 +108,8 @@ behavior.
|
|
|
88
108
|
|
|
89
109
|
There may be cases where this edge case becomes problematic if a JSON parser with alternative behavior
|
|
90
110
|
is used to process the logs. It's recommended to be conscious of namespace conflicts with child loggers,
|
|
91
|
-
in light of an expected log processing approach.
|
|
111
|
+
in light of an expected log processing approach. This is especially important for untrusted data: do not
|
|
112
|
+
allow externally supplied objects or user-controlled key names to become child logger bindings.
|
|
92
113
|
|
|
93
114
|
One of Pino's performance tricks is to avoid building objects and stringifying
|
|
94
115
|
them, so we're building strings instead. This is why duplicate keys between
|
|
@@ -71,6 +71,7 @@ according to a given format string.
|
|
|
71
71
|
|
|
72
72
|
+ [`@google-cloud/pino-logging-gcp-config`](https://www.npmjs.com/package/@google-cloud/pino-logging-gcp-config): Config helper and formatter to output [Google Cloud Platform Structured Logging](https://cloud.google.com/logging/docs/structured-logging)
|
|
73
73
|
+ [`@newrelic/pino-enricher`](https://github.com/newrelic/newrelic-node-log-extensions/blob/main/packages/pino-log-enricher): a log customization to add New Relic context to use [Logs In Context](https://docs.newrelic.com/docs/logs/logs-context/logs-in-context/)
|
|
74
|
+
+ [`@sentry/node`](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/pino/): Sentry SDK with native pinoIntegration for direct Pino instrumentation and error tracking.
|
|
74
75
|
+ [`cloud-pine`](https://github.com/metcoder95/cloud-pine): transport that provides abstraction and compatibility with [`@google-cloud/logging`](https://www.npmjs.com/package/@google-cloud/logging).
|
|
75
76
|
+ [`cls-proxify`](https://github.com/keenondrums/cls-proxify): integration of pino and [CLS](https://github.com/jeff-lewis/cls-hooked). Useful for creating dynamically configured child loggers (e.g. with added trace ID) for each request.
|
|
76
77
|
+ [`crawlee-pino`](https://github.com/imyelo/crawlee-pino): use Pino to log within Crawlee
|
|
@@ -147,11 +147,19 @@ const logger = pino({
|
|
|
147
147
|
<a id="dupe-keys"></a>
|
|
148
148
|
## How Pino handles duplicate keys
|
|
149
149
|
|
|
150
|
-
Duplicate keys are
|
|
151
|
-
collides with a key in the child
|
|
150
|
+
Duplicate keys are possible when a logged object contains a top-level key that
|
|
151
|
+
collides with a Pino field or a key in the child logger's bindings, or when child
|
|
152
|
+
logger bindings collide with parent bindings.
|
|
153
|
+
|
|
154
|
+
For untrusted data, avoid passing externally supplied objects directly to logging
|
|
155
|
+
methods or child logger bindings. User-controlled top-level keys can conflict
|
|
156
|
+
with Pino fields such as `level`, `time`, or `msg`, as well as application or
|
|
157
|
+
security fields. If untrusted data must be logged, place it under an
|
|
158
|
+
application-controlled key, such as `logger.info({ untrusted })`, and prefer not
|
|
159
|
+
to log untrusted data at all unless necessary.
|
|
152
160
|
|
|
153
161
|
See the [child logger duplicate keys caveat](/docs/child-loggers.md#duplicate-keys-caveat)
|
|
154
|
-
|
|
162
|
+
and [`logger.child()` bindings](/docs/api.md#logger-child-bindings) for more information.
|
|
155
163
|
|
|
156
164
|
<a id="level-string"></a>
|
|
157
165
|
## Log levels as labels instead of numbers
|
|
@@ -37,6 +37,35 @@ A "month" is defined as 30 consecutive days.
|
|
|
37
37
|
|
|
38
38
|
[semver]: https://semver.org/
|
|
39
39
|
|
|
40
|
+
<a name="supported-nodejs"></a>
|
|
41
|
+
|
|
42
|
+
### Supported Node.js versions
|
|
43
|
+
|
|
44
|
+
Pino follows the [Node.js release schedule][node-release]. A Pino release line
|
|
45
|
+
is tested against, and supports, every Node.js release line that is in its
|
|
46
|
+
_current_, _active LTS_, or _maintenance LTS_ phase when the Pino line is
|
|
47
|
+
released, as described above.
|
|
48
|
+
|
|
49
|
+
Support for a Node.js version is **only dropped in a new Pino major release**. A
|
|
50
|
+
published Pino major will never drop a Node.js release line that it originally
|
|
51
|
+
shipped with, so upgrading within a major line (for example, from `9.1.0` to
|
|
52
|
+
`9.4.0`) will never remove support for a Node.js version you already run on.
|
|
53
|
+
|
|
54
|
+
Once a Node.js release line reaches its end-of-life, Pino supports it on a
|
|
55
|
+
best-effort basis, with the following caveats:
|
|
56
|
+
|
|
57
|
+
- End-of-life Node.js versions are not exercised in continuous integration.
|
|
58
|
+
- Some fixes and features cannot be backported to the Pino lines that still
|
|
59
|
+
support them.
|
|
60
|
+
- Dependencies cannot be kept up to date.
|
|
61
|
+
|
|
62
|
+
To keep running on an end-of-life Node.js version, pin your dependency to the
|
|
63
|
+
last Pino major line that supported it. The [Schedule](#lts-schedule) below maps
|
|
64
|
+
each Pino release line to the Node.js versions it supports; for example, to stay
|
|
65
|
+
on Node.js 14, install the latest `8.x` release with `"pino": "8.x"`.
|
|
66
|
+
|
|
67
|
+
[node-release]: https://github.com/nodejs/release#release-schedule
|
|
68
|
+
|
|
40
69
|
<a name="lts-schedule"></a>
|
|
41
70
|
|
|
42
71
|
### Schedule
|
|
@@ -32,4 +32,7 @@ module like [`pino-pretty`][pp]:
|
|
|
32
32
|
logger.info('hi')
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
+
**Note:** `logger.flush()` does not flush the output of `pino-pretty`. See
|
|
36
|
+
[Flush Limitations with `pino-pretty`](/docs/asynchronous.md) for more details.
|
|
37
|
+
|
|
35
38
|
[pp]: https://github.com/pinojs/pino-pretty
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
# Redaction
|
|
2
2
|
|
|
3
|
-
> Redaction is not supported in the browser [#670](https://github.com/pinojs/pino/issues/670)
|
|
4
|
-
|
|
5
3
|
To redact sensitive information, supply paths to keys that hold sensitive data
|
|
6
4
|
using the `redact` option. Note that paths that contain hyphens need to use
|
|
7
5
|
brackets to access the hyphenated property:
|
|
8
6
|
|
|
9
7
|
```js
|
|
10
|
-
const logger = require('.')({
|
|
11
|
-
redact: ['key', 'path.to.key', 'stuff.thats[*].secret', 'path["with-hyphen"]']
|
|
8
|
+
const logger = require('.')({\n redact: ['key', 'path.to.key', 'stuff.thats[*].secret', 'path["with-hyphen"]']
|
|
12
9
|
})
|
|
13
10
|
|
|
14
11
|
logger.info({
|
|
@@ -37,8 +34,7 @@ an object. This allows control over *how* information is redacted.
|
|
|
37
34
|
For instance, setting the censor:
|
|
38
35
|
|
|
39
36
|
```js
|
|
40
|
-
const logger = require('.')({
|
|
41
|
-
redact: {
|
|
37
|
+
const logger = require('.')({\n redact: {
|
|
42
38
|
paths: ['key', 'path.to.key', 'stuff.thats[*].secret'],
|
|
43
39
|
censor: '**GDPR COMPLIANT**'
|
|
44
40
|
}
|
|
@@ -67,8 +63,7 @@ This will output:
|
|
|
67
63
|
The `redact.remove` option also allows for the key and value to be removed from output:
|
|
68
64
|
|
|
69
65
|
```js
|
|
70
|
-
const logger = require('.')({
|
|
71
|
-
redact: {
|
|
66
|
+
const logger = require('.')({\n redact: {
|
|
72
67
|
paths: ['key', 'path.to.key', 'stuff.thats[*].secret'],
|
|
73
68
|
remove: true
|
|
74
69
|
}
|
|
@@ -159,6 +159,36 @@ const transport = pino.transport({
|
|
|
159
159
|
pino(transport)
|
|
160
160
|
```
|
|
161
161
|
|
|
162
|
+
#### `formatters.level` with multiple targets
|
|
163
|
+
|
|
164
|
+
When using `targets`, Pino routes records in the worker thread based on the numeric `level` field in each log line. Because of that, a custom `formatters.level` must not remove, rename, or convert `level` to a string when multiple targets are configured.
|
|
165
|
+
|
|
166
|
+
Unsupported example:
|
|
167
|
+
|
|
168
|
+
```js
|
|
169
|
+
const logger = pino({
|
|
170
|
+
formatters: {
|
|
171
|
+
level (label) {
|
|
172
|
+
return { severity: label }
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
transport: {
|
|
176
|
+
targets: [
|
|
177
|
+
{ target: 'pino/file', options: { destination: 1 } },
|
|
178
|
+
{ target: 'pino/file', options: { destination: 2 } }
|
|
179
|
+
]
|
|
180
|
+
}
|
|
181
|
+
})
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
In this case, Pino cannot apply per-target level filtering correctly. Depending on how the transport is constructed, Pino will either throw or emit a warning.
|
|
185
|
+
|
|
186
|
+
Supported alternatives:
|
|
187
|
+
|
|
188
|
+
- Keep the numeric `level` field unchanged when using multiple targets.
|
|
189
|
+
- If you need string labels such as `"info"`, transform the output in a transport pipeline or in a custom transport after routing has already happened.
|
|
190
|
+
- `timestamp` customization still works with multiple targets.
|
|
191
|
+
|
|
162
192
|
It is also possible to use the `dedupe` option to send logs only to the stream with the higher level.
|
|
163
193
|
```js
|
|
164
194
|
const pino = require('pino')
|
|
@@ -554,6 +584,7 @@ PRs to this document are welcome for any new transports!
|
|
|
554
584
|
+ [pino-roll](#pino-roll)
|
|
555
585
|
+ [pino-seq-transport](#pino-seq-transport)
|
|
556
586
|
+ [pino-sentry-transport](#pino-sentry-transport)
|
|
587
|
+
+ [Sentry Native SDK Integration](#sentry-native-integration)
|
|
557
588
|
+ [pino-slack-webhook](#pino-slack-webhook)
|
|
558
589
|
+ [pino-telegram-webhook](#pino-telegram-webhook)
|
|
559
590
|
+ [pino-yc-transport](#pino-yc-transport)
|
|
@@ -1168,6 +1199,46 @@ pino(transport)
|
|
|
1168
1199
|
[pino-sentry-transport]: https://github.com/tomer-yechiel/pino-sentry-transport
|
|
1169
1200
|
[Sentry]: https://sentry.io/
|
|
1170
1201
|
|
|
1202
|
+
<a id="sentry-native-integration"></a>
|
|
1203
|
+
### Sentry Native SDK Integration
|
|
1204
|
+
|
|
1205
|
+
As an alternative to using a Pino transport, Sentry's Node.js SDK (v10.18.0+) provides a native `pinoIntegration` that instruments Pino directly. This approach captures logs within the Sentry SDK rather than forwarding them through a separate worker process.
|
|
1206
|
+
|
|
1207
|
+
```js
|
|
1208
|
+
const Sentry = require('@sentry/node')
|
|
1209
|
+
const pino = require('pino')
|
|
1210
|
+
|
|
1211
|
+
Sentry.init({
|
|
1212
|
+
dsn: 'https://******@sentry.io/12345',
|
|
1213
|
+
enableLogs: true,
|
|
1214
|
+
integrations: [Sentry.pinoIntegration()],
|
|
1215
|
+
})
|
|
1216
|
+
|
|
1217
|
+
const logger = pino()
|
|
1218
|
+
logger.info('This log will be captured by Sentry')
|
|
1219
|
+
```
|
|
1220
|
+
|
|
1221
|
+
The integration supports configuring which log levels are captured as Sentry logs or errors:
|
|
1222
|
+
|
|
1223
|
+
```js
|
|
1224
|
+
Sentry.init({
|
|
1225
|
+
dsn: 'https://******@sentry.io/12345',
|
|
1226
|
+
enableLogs: true,
|
|
1227
|
+
integrations: [
|
|
1228
|
+
Sentry.pinoIntegration({
|
|
1229
|
+
// Capture these levels as Sentry logs
|
|
1230
|
+
log: { levels: ['info', 'warn', 'error'] },
|
|
1231
|
+
// Capture these levels as Sentry errors
|
|
1232
|
+
error: { levels: ['error', 'fatal'], handled: true }
|
|
1233
|
+
})
|
|
1234
|
+
],
|
|
1235
|
+
})
|
|
1236
|
+
```
|
|
1237
|
+
|
|
1238
|
+
**Note:** This integration only works in the Node.js runtime. Requires Sentry SDK version 10.18.0 or higher and pino version 8.0.0 or higher. For full documentation, see the [Sentry Pino integration docs][sentry-pino-docs].
|
|
1239
|
+
|
|
1240
|
+
[sentry-pino-docs]: https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/pino/
|
|
1241
|
+
|
|
1171
1242
|
<a id="pino-seq"></a>
|
|
1172
1243
|
### pino-seq
|
|
1173
1244
|
|
|
@@ -274,28 +274,25 @@ See the [pino-http README](https://npm.im/pino-http) for more info.
|
|
|
274
274
|
## Pino with Hono
|
|
275
275
|
|
|
276
276
|
```sh
|
|
277
|
-
npm install pino
|
|
277
|
+
npm install pino @hono/structured-logger hono
|
|
278
278
|
```
|
|
279
279
|
|
|
280
280
|
```js
|
|
281
281
|
import { serve } from '@hono/node-server';
|
|
282
282
|
import { Hono } from 'hono';
|
|
283
283
|
import { requestId } from 'hono/request-id';
|
|
284
|
-
import {
|
|
284
|
+
import { structuredLogger } from '@hono/structured-logger';
|
|
285
|
+
import pino from 'pino';
|
|
286
|
+
|
|
287
|
+
const rootLogger = pino();
|
|
285
288
|
|
|
286
289
|
const app = new Hono();
|
|
287
290
|
app.use(requestId());
|
|
288
|
-
app.use(
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
await new Promise((resolve) => pinoHttp()(c.env.incoming, c.env.outgoing, () => resolve()));
|
|
294
|
-
|
|
295
|
-
c.set('logger', c.env.incoming.log);
|
|
296
|
-
|
|
297
|
-
await next();
|
|
298
|
-
});
|
|
291
|
+
app.use(
|
|
292
|
+
structuredLogger({
|
|
293
|
+
createLogger: (c) => rootLogger.child({ requestId: c.var.requestId }),
|
|
294
|
+
})
|
|
295
|
+
);
|
|
299
296
|
|
|
300
297
|
app.get('/', (c) => {
|
|
301
298
|
c.var.logger.info('something');
|
|
@@ -306,4 +303,4 @@ app.get('/', (c) => {
|
|
|
306
303
|
serve(app);
|
|
307
304
|
```
|
|
308
305
|
|
|
309
|
-
See the [
|
|
306
|
+
See the [@hono/structured-logger README](https://github.com/honojs/middleware/blob/main/packages/structured-logger/README.md) for more info.
|
|
@@ -8,21 +8,29 @@ module.exports = defineConfig([
|
|
|
8
8
|
ts: true
|
|
9
9
|
}),
|
|
10
10
|
globalIgnores([
|
|
11
|
-
'pino.d.ts',
|
|
12
11
|
'test/fixtures/syntax-error-esm.mjs',
|
|
13
|
-
'test/fixtures/ts/*cjs'
|
|
12
|
+
'test/fixtures/ts/*cjs'
|
|
14
13
|
]),
|
|
15
14
|
{
|
|
16
15
|
rules: {
|
|
17
|
-
'
|
|
18
|
-
|
|
16
|
+
'comma-dangle': ['error', 'never'],
|
|
17
|
+
'no-var': 'off'
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
files: ['pino.d.ts'],
|
|
22
|
+
rules: {
|
|
23
|
+
'@typescript-eslint/no-use-before-define': 'off',
|
|
24
|
+
'@typescript-eslint/no-unused-vars': 'off'
|
|
25
|
+
}
|
|
19
26
|
},
|
|
20
27
|
{
|
|
21
28
|
files: ['test/types/**/*'],
|
|
22
29
|
rules: {
|
|
30
|
+
'no-unused-expressions': 'off',
|
|
23
31
|
'@typescript-eslint/no-unused-expressions': 'off',
|
|
24
32
|
'@typescript-eslint/no-unused-vars': 'off',
|
|
25
|
-
'n/handle-callback-err': 'off'
|
|
26
|
-
}
|
|
27
|
-
}
|
|
33
|
+
'n/handle-callback-err': 'off'
|
|
34
|
+
}
|
|
35
|
+
}
|
|
28
36
|
])
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const util = require('node:util')
|
|
4
|
+
|
|
5
|
+
// getCallSite requires Node >=22.9.0
|
|
6
|
+
// getCallSite was renamed in Node 23.3.0 / 22.12.0
|
|
7
|
+
const getCallSites = util.getCallSites ?? util.getCallSite
|
|
8
|
+
|
|
3
9
|
function noOpPrepareStackTrace (_, stack) {
|
|
4
10
|
return stack
|
|
5
11
|
}
|
|
6
12
|
|
|
7
13
|
module.exports = function getCallers () {
|
|
14
|
+
if (getCallSites) {
|
|
15
|
+
return getCallSites().slice(2).map(callSite => callSite.scriptName)
|
|
16
|
+
}
|
|
17
|
+
|
|
8
18
|
const originalPrepare = Error.prepareStackTrace
|
|
9
19
|
Error.prepareStackTrace = noOpPrepareStackTrace
|
|
10
20
|
const stack = new Error().stack
|
|
@@ -48,7 +48,13 @@ function multistream (streamsArray, opts) {
|
|
|
48
48
|
// we can exit early because the streams are ordered by level
|
|
49
49
|
function write (data) {
|
|
50
50
|
let dest
|
|
51
|
-
|
|
51
|
+
// `lastLevel` is normally the numeric level, but a source may relay a
|
|
52
|
+
// level label string (e.g. pino-abstract-transport forwarding lines
|
|
53
|
+
// produced with a `formatters.level` option). Resolve it to a number so
|
|
54
|
+
// the level comparisons below don't silently drop the record.
|
|
55
|
+
const level = typeof this.lastLevel === 'string'
|
|
56
|
+
? (this.streamLevels || streamLevels)[this.lastLevel]
|
|
57
|
+
: this.lastLevel
|
|
52
58
|
const { streams } = this
|
|
53
59
|
// for handling situation when several streams has the same level
|
|
54
60
|
let recordedLevel = 0
|
|
@@ -99,7 +105,7 @@ function multistream (streamsArray, opts) {
|
|
|
99
105
|
|
|
100
106
|
function add (dest) {
|
|
101
107
|
if (!dest) {
|
|
102
|
-
return
|
|
108
|
+
return this
|
|
103
109
|
}
|
|
104
110
|
|
|
105
111
|
// Check that dest implements either StreamEntry or DestinationStream
|
|
@@ -135,7 +141,7 @@ function multistream (streamsArray, opts) {
|
|
|
135
141
|
|
|
136
142
|
this.minLevel = streams[0].level
|
|
137
143
|
|
|
138
|
-
return
|
|
144
|
+
return this
|
|
139
145
|
}
|
|
140
146
|
|
|
141
147
|
function remove (id) {
|
|
@@ -148,7 +154,7 @@ function multistream (streamsArray, opts) {
|
|
|
148
154
|
this.minLevel = streams.length > 0 ? streams[0].level : -1
|
|
149
155
|
}
|
|
150
156
|
|
|
151
|
-
return
|
|
157
|
+
return this
|
|
152
158
|
}
|
|
153
159
|
|
|
154
160
|
function end () {
|
|
@@ -174,12 +180,14 @@ function multistream (streamsArray, opts) {
|
|
|
174
180
|
write,
|
|
175
181
|
add,
|
|
176
182
|
remove,
|
|
183
|
+
emit,
|
|
184
|
+
flushSync,
|
|
185
|
+
end,
|
|
177
186
|
minLevel: level,
|
|
178
187
|
streams,
|
|
179
188
|
clone,
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
[metadata]: true
|
|
189
|
+
[metadata]: true,
|
|
190
|
+
streamLevels
|
|
183
191
|
}
|
|
184
192
|
}
|
|
185
193
|
}
|
|
@@ -64,14 +64,19 @@ function redaction (opts, serialize) {
|
|
|
64
64
|
|
|
65
65
|
o[ns].push(nextPath)
|
|
66
66
|
return o
|
|
67
|
-
|
|
67
|
+
// The keys here are the first segment of each redact path, so they are the
|
|
68
|
+
// user's strings. On a plain object a path like 'constructor.secret' reads
|
|
69
|
+
// the inherited function, and `o[ns] = o[ns] || []` keeps it.
|
|
70
|
+
}, Object.create(null))
|
|
68
71
|
|
|
69
72
|
// the redactor assigned to the format symbol key
|
|
70
73
|
// provides top level redaction for instances where
|
|
71
74
|
// an object is interpolated into the msg string
|
|
72
|
-
|
|
75
|
+
// Same reason as the shape above: the keys come from the redact paths, and
|
|
76
|
+
// this object is later indexed with them by `asJson`.
|
|
77
|
+
const result = Object.assign(Object.create(null), {
|
|
73
78
|
[redactFmtSym]: Redact({ paths, censor, serialize, strict, remove })
|
|
74
|
-
}
|
|
79
|
+
})
|
|
75
80
|
|
|
76
81
|
const topCensor = (...args) => {
|
|
77
82
|
return typeof censor === 'function' ? serialize(censor(...args)) : serialize(censor)
|
|
@@ -38,6 +38,7 @@ const serializersSym = Symbol.for('pino.serializers')
|
|
|
38
38
|
const formattersSym = Symbol.for('pino.formatters')
|
|
39
39
|
const hooksSym = Symbol.for('pino.hooks')
|
|
40
40
|
const needsMetadataGsym = Symbol.for('pino.metadata')
|
|
41
|
+
const transportUsesMultistreamSym = Symbol.for('pino.transport.usesMultistream')
|
|
41
42
|
|
|
42
43
|
module.exports = {
|
|
43
44
|
setLevelSym,
|
|
@@ -70,5 +71,6 @@ module.exports = {
|
|
|
70
71
|
hooksSym,
|
|
71
72
|
nestedKeyStrSym,
|
|
72
73
|
mixinMergeStrategySym,
|
|
73
|
-
msgPrefixSym
|
|
74
|
+
msgPrefixSym,
|
|
75
|
+
transportUsesMultistreamSym
|
|
74
76
|
}
|
|
@@ -258,7 +258,7 @@ function asChindings (instance, bindings) {
|
|
|
258
258
|
value = serializers[key] ? serializers[key](value) : value
|
|
259
259
|
value = (stringifiers[key] || wildcardStringifier || stringify)(value, stringifySafe)
|
|
260
260
|
if (value === undefined) continue
|
|
261
|
-
data += ',
|
|
261
|
+
data += ',' + asString(key) + ':' + value
|
|
262
262
|
}
|
|
263
263
|
}
|
|
264
264
|
return data
|
|
@@ -349,7 +349,7 @@ function createArgsNormalizer (defaultOptions) {
|
|
|
349
349
|
stream = transport({ caller, ...opts.transport, levels: customLevels })
|
|
350
350
|
}
|
|
351
351
|
opts = Object.assign({}, defaultOptions, opts)
|
|
352
|
-
opts.serializers = Object.assign(
|
|
352
|
+
opts.serializers = Object.assign(Object.create(null), defaultOptions.serializers, opts.serializers)
|
|
353
353
|
opts.formatters = Object.assign({}, defaultOptions.formatters, opts.formatters)
|
|
354
354
|
|
|
355
355
|
if (opts.prettyPrint) {
|
|
@@ -9,6 +9,8 @@ const sleep = require('atomic-sleep')
|
|
|
9
9
|
const onExit = require('on-exit-leak-free')
|
|
10
10
|
const ThreadStream = require('thread-stream')
|
|
11
11
|
|
|
12
|
+
const { transportUsesMultistreamSym } = require('./symbols')
|
|
13
|
+
|
|
12
14
|
function setupOnExit (stream) {
|
|
13
15
|
// This is leak free, it does not leave event handlers
|
|
14
16
|
onExit.register(stream, autoEnd)
|
|
@@ -194,6 +196,8 @@ function transport (fullOptions) {
|
|
|
194
196
|
...fullOptions.options
|
|
195
197
|
}
|
|
196
198
|
|
|
199
|
+
let usesMultistream = false
|
|
200
|
+
|
|
197
201
|
// Backwards compatibility
|
|
198
202
|
const callers = typeof caller === 'string' ? [caller] : caller
|
|
199
203
|
|
|
@@ -228,6 +232,11 @@ function transport (fullOptions) {
|
|
|
228
232
|
}
|
|
229
233
|
})
|
|
230
234
|
})
|
|
235
|
+
|
|
236
|
+
const targetsHaveLevel = options.targets.some(t => t.level != null)
|
|
237
|
+
const pipelinesHaveLevel = options.pipelines.some(p => p.some(t => t.level != null))
|
|
238
|
+
usesMultistream = options.targets.length + options.pipelines.length > 1 ||
|
|
239
|
+
targetsHaveLevel || pipelinesHaveLevel
|
|
231
240
|
} else if (pipeline) {
|
|
232
241
|
target = bundlerOverrides['pino-worker'] || join(__dirname, 'worker.js')
|
|
233
242
|
options.pipelines = [pipeline.map((dest) => {
|
|
@@ -249,7 +258,11 @@ function transport (fullOptions) {
|
|
|
249
258
|
options.pinoWillSendConfig = true
|
|
250
259
|
|
|
251
260
|
const name = (targets || pipeline) ? 'pino.transport' : target
|
|
252
|
-
|
|
261
|
+
const stream = buildStream(fixTarget(target), options, worker, sync, name)
|
|
262
|
+
if (usesMultistream) {
|
|
263
|
+
stream[transportUsesMultistreamSym] = true
|
|
264
|
+
}
|
|
265
|
+
return stream
|
|
253
266
|
|
|
254
267
|
function fixTarget (origin) {
|
|
255
268
|
origin = bundlerOverrides[origin] || origin
|
|
@@ -123,7 +123,10 @@ module.exports = async function ({ targets, pipelines, levels, dedupe }) {
|
|
|
123
123
|
// OR
|
|
124
124
|
//
|
|
125
125
|
// pino.transport({ pipeline: ... })
|
|
126
|
-
|
|
126
|
+
//
|
|
127
|
+
// When a `level` is set on the single target/pipeline, fall through to the
|
|
128
|
+
// multistream path so the per-target level filter is honored (#1996).
|
|
129
|
+
if (targetStreams.length === 1 && targetStreams[0].level == null) {
|
|
127
130
|
return targetStreams[0].stream
|
|
128
131
|
} else {
|
|
129
132
|
return build(process, {
|