@wbce/projen-d9 0.0.28 → 0.1.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.
Files changed (421) hide show
  1. package/.jsii +184 -45
  2. package/API.md +153 -37
  3. package/CHANGELOG.md +13 -0
  4. package/README.md +10 -3
  5. package/docs/D9-plumbing.md +189 -0
  6. package/lib/cli/atlas.d.ts +10 -0
  7. package/lib/cli/atlas.js +65 -0
  8. package/lib/cli/commands/cedar/cedar-format.d.ts +7 -0
  9. package/lib/cli/commands/cedar/cedar-format.js +75 -0
  10. package/lib/cli/commands/cedar/cedar-to-d9-translations.d.ts +12 -0
  11. package/lib/cli/commands/cedar/cedar-to-d9-translations.js +130 -0
  12. package/lib/cli/commands/cedar/cedar-to-d9.d.ts +57 -0
  13. package/lib/cli/commands/cedar/cedar-to-d9.js +221 -0
  14. package/lib/cli/commands/cedar/cedar-translations.d.ts +9 -0
  15. package/lib/cli/commands/cedar/cedar-translations.js +213 -0
  16. package/lib/cli/commands/cedar/d9-permission.d.ts +27 -0
  17. package/lib/cli/commands/cedar/d9-permission.js +45 -0
  18. package/lib/cli/commands/cedar/d9-to-cedar.d.ts +33 -0
  19. package/lib/cli/commands/cedar/d9-to-cedar.js +157 -0
  20. package/lib/cli/commands/cedar/roles-table.d.ts +14 -0
  21. package/lib/cli/commands/cedar/roles-table.js +29 -0
  22. package/lib/cli/commands/save/apply-snapshot.js +39 -30
  23. package/lib/cli/commands/save/check-unsaved.d.ts +9 -0
  24. package/lib/cli/commands/save/check-unsaved.js +81 -0
  25. package/lib/cli/commands/save/env.d.ts +33 -0
  26. package/lib/cli/commands/save/env.js +109 -0
  27. package/lib/cli/commands/save/save-snapshot.d.ts +9 -0
  28. package/lib/cli/commands/save/save-snapshot.js +232 -0
  29. package/lib/cli/commands/save/sync-files.d.ts +5 -0
  30. package/lib/cli/commands/save/sync-files.js +46 -0
  31. package/lib/cli/commands/save/transfer.d.ts +18 -0
  32. package/lib/cli/commands/save/transfer.js +96 -0
  33. package/lib/cli/commands/save/utils.d.ts +5 -0
  34. package/lib/cli/commands/save/utils.js +33 -3
  35. package/lib/cli/commands/sync.js +4 -3
  36. package/lib/cli/index.js +65 -25
  37. package/lib/cli/logger.d.ts +2 -0
  38. package/lib/cli/logger.js +10 -0
  39. package/lib/cli/plumbing-config.d.ts +11 -0
  40. package/lib/cli/plumbing-config.js +13 -0
  41. package/lib/index.d.ts +44 -5
  42. package/lib/index.js +54 -41
  43. package/node_modules/@cedar-policy/cedar-wasm/README.md +181 -0
  44. package/node_modules/@cedar-policy/cedar-wasm/esm/README.md +181 -0
  45. package/node_modules/@cedar-policy/cedar-wasm/esm/cedar_wasm.d.ts +427 -0
  46. package/node_modules/@cedar-policy/cedar-wasm/esm/cedar_wasm.js +9 -0
  47. package/node_modules/@cedar-policy/cedar-wasm/esm/cedar_wasm_bg.js +434 -0
  48. package/node_modules/@cedar-policy/cedar-wasm/esm/cedar_wasm_bg.wasm +0 -0
  49. package/node_modules/@cedar-policy/cedar-wasm/esm/cedar_wasm_bg.wasm.d.ts +34 -0
  50. package/node_modules/@cedar-policy/cedar-wasm/esm/package.json +23 -0
  51. package/node_modules/@cedar-policy/cedar-wasm/nodejs/README.md +181 -0
  52. package/node_modules/@cedar-policy/cedar-wasm/nodejs/cedar_wasm.d.ts +427 -0
  53. package/node_modules/@cedar-policy/cedar-wasm/nodejs/cedar_wasm.js +463 -0
  54. package/node_modules/@cedar-policy/cedar-wasm/nodejs/cedar_wasm_bg.wasm +0 -0
  55. package/node_modules/@cedar-policy/cedar-wasm/nodejs/cedar_wasm_bg.wasm.d.ts +34 -0
  56. package/node_modules/@cedar-policy/cedar-wasm/nodejs/package.json +18 -0
  57. package/node_modules/@cedar-policy/cedar-wasm/package.json +53 -0
  58. package/node_modules/@cedar-policy/cedar-wasm/web/README.md +181 -0
  59. package/node_modules/@cedar-policy/cedar-wasm/web/cedar_wasm.d.ts +486 -0
  60. package/node_modules/@cedar-policy/cedar-wasm/web/cedar_wasm.js +534 -0
  61. package/node_modules/@cedar-policy/cedar-wasm/web/cedar_wasm_bg.wasm +0 -0
  62. package/node_modules/@cedar-policy/cedar-wasm/web/cedar_wasm_bg.wasm.d.ts +34 -0
  63. package/node_modules/@cedar-policy/cedar-wasm/web/package.json +21 -0
  64. package/node_modules/@types/node/README.md +5 -6
  65. package/node_modules/@types/node/assert/strict.d.ts +111 -0
  66. package/node_modules/@types/node/assert.d.ts +1040 -79
  67. package/node_modules/@types/node/async_hooks.d.ts +476 -119
  68. package/node_modules/@types/node/buffer.buffer.d.ts +472 -0
  69. package/node_modules/@types/node/buffer.d.ts +1925 -13
  70. package/node_modules/@types/node/child_process.d.ts +1204 -235
  71. package/node_modules/@types/node/cluster.d.ts +455 -137
  72. package/node_modules/@types/node/compatibility/disposable.d.ts +14 -0
  73. package/node_modules/@types/node/compatibility/index.d.ts +9 -0
  74. package/node_modules/@types/node/compatibility/indexable.d.ts +20 -0
  75. package/node_modules/@types/node/compatibility/iterators.d.ts +20 -0
  76. package/node_modules/@types/node/console.d.ts +450 -1
  77. package/node_modules/@types/node/constants.d.ts +20 -447
  78. package/node_modules/@types/node/crypto.d.ts +3962 -600
  79. package/node_modules/@types/node/dgram.d.ts +515 -33
  80. package/node_modules/@types/node/diagnostics_channel.d.ts +578 -0
  81. package/node_modules/@types/node/dns/promises.d.ts +503 -0
  82. package/node_modules/@types/node/dns.d.ts +798 -247
  83. package/node_modules/@types/node/domain.d.ts +164 -10
  84. package/node_modules/@types/node/events.d.ts +954 -25
  85. package/node_modules/@types/node/fs/promises.d.ts +1295 -0
  86. package/node_modules/@types/node/fs.d.ts +3463 -1569
  87. package/node_modules/@types/node/globals.d.ts +98 -1277
  88. package/node_modules/@types/node/globals.typedarray.d.ts +38 -0
  89. package/node_modules/@types/node/http.d.ts +1933 -300
  90. package/node_modules/@types/node/http2.d.ts +1946 -254
  91. package/node_modules/@types/node/https.d.ts +557 -134
  92. package/node_modules/@types/node/index.d.ts +54 -48
  93. package/node_modules/@types/node/inspector.d.ts +227 -3014
  94. package/node_modules/@types/node/inspector.generated.d.ts +4052 -0
  95. package/node_modules/@types/node/module.d.ts +890 -2
  96. package/node_modules/@types/node/net.d.ts +872 -105
  97. package/node_modules/@types/node/os.d.ts +452 -209
  98. package/node_modules/@types/node/package.json +78 -128
  99. package/node_modules/@types/node/path.d.ts +196 -155
  100. package/node_modules/@types/node/perf_hooks.d.ts +829 -120
  101. package/node_modules/@types/node/process.d.ts +2072 -3
  102. package/node_modules/@types/node/punycode.d.ts +69 -27
  103. package/node_modules/@types/node/querystring.d.ts +132 -9
  104. package/node_modules/@types/node/readline/promises.d.ts +161 -0
  105. package/node_modules/@types/node/readline.d.ts +485 -49
  106. package/node_modules/@types/node/repl.d.ts +121 -83
  107. package/node_modules/@types/node/sea.d.ts +153 -0
  108. package/node_modules/@types/node/sqlite.d.ts +721 -0
  109. package/node_modules/@types/node/stream/consumers.d.ts +38 -0
  110. package/node_modules/@types/node/stream/promises.d.ts +90 -0
  111. package/node_modules/@types/node/stream/web.d.ts +622 -0
  112. package/node_modules/@types/node/stream.d.ts +1470 -140
  113. package/node_modules/@types/node/string_decoder.d.ts +64 -4
  114. package/node_modules/@types/node/test.d.ts +2163 -0
  115. package/node_modules/@types/node/timers/promises.d.ts +108 -0
  116. package/node_modules/@types/node/timers.d.ts +284 -13
  117. package/node_modules/@types/node/tls.d.ts +850 -244
  118. package/node_modules/@types/node/trace_events.d.ts +147 -11
  119. package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +468 -0
  120. package/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +34 -0
  121. package/node_modules/@types/node/ts5.6/index.d.ts +97 -0
  122. package/node_modules/@types/node/tty.d.ts +160 -18
  123. package/node_modules/@types/node/url.d.ts +890 -53
  124. package/node_modules/@types/node/util.d.ts +2566 -160
  125. package/node_modules/@types/node/v8.d.ts +806 -83
  126. package/node_modules/@types/node/vm.d.ts +932 -44
  127. package/node_modules/@types/node/wasi.d.ts +148 -22
  128. package/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
  129. package/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  130. package/node_modules/@types/node/web-globals/events.d.ts +97 -0
  131. package/node_modules/@types/node/web-globals/fetch.d.ts +55 -0
  132. package/node_modules/@types/node/web-globals/navigator.d.ts +22 -0
  133. package/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  134. package/node_modules/@types/node/worker_threads.d.ts +657 -80
  135. package/node_modules/@types/node/zlib.d.ts +510 -119
  136. package/node_modules/pino/.nojekyll +0 -0
  137. package/node_modules/pino/.prettierignore +1 -0
  138. package/node_modules/pino/CNAME +1 -0
  139. package/node_modules/pino/CONTRIBUTING.md +34 -0
  140. package/node_modules/pino/LICENSE +21 -0
  141. package/node_modules/pino/README.md +177 -0
  142. package/node_modules/pino/SECURITY.md +103 -0
  143. package/node_modules/pino/benchmarks/basic.bench.js +95 -0
  144. package/node_modules/pino/benchmarks/child-child.bench.js +52 -0
  145. package/node_modules/pino/benchmarks/child-creation.bench.js +73 -0
  146. package/node_modules/pino/benchmarks/child.bench.js +62 -0
  147. package/node_modules/pino/benchmarks/deep-object.bench.js +88 -0
  148. package/node_modules/pino/benchmarks/formatters.bench.js +50 -0
  149. package/node_modules/pino/benchmarks/internal/custom-levels.js +67 -0
  150. package/node_modules/pino/benchmarks/internal/just-pino-heavy.bench.js +76 -0
  151. package/node_modules/pino/benchmarks/internal/just-pino.bench.js +182 -0
  152. package/node_modules/pino/benchmarks/internal/parent-vs-child.bench.js +75 -0
  153. package/node_modules/pino/benchmarks/internal/redact.bench.js +86 -0
  154. package/node_modules/pino/benchmarks/long-string.bench.js +81 -0
  155. package/node_modules/pino/benchmarks/multi-arg.bench.js +193 -0
  156. package/node_modules/pino/benchmarks/multistream.js +98 -0
  157. package/node_modules/pino/benchmarks/object.bench.js +82 -0
  158. package/node_modules/pino/benchmarks/utils/generate-benchmark-doc.js +36 -0
  159. package/node_modules/pino/benchmarks/utils/runbench.js +138 -0
  160. package/node_modules/pino/benchmarks/utils/wrap-log-level.js +55 -0
  161. package/node_modules/pino/bin.js +6 -0
  162. package/node_modules/pino/browser.js +607 -0
  163. package/node_modules/pino/build/sync-version.js +25 -0
  164. package/node_modules/pino/docs/api.md +1664 -0
  165. package/node_modules/pino/docs/asynchronous.md +55 -0
  166. package/node_modules/pino/docs/benchmarks.md +55 -0
  167. package/node_modules/pino/docs/browser.md +341 -0
  168. package/node_modules/pino/docs/bundling.md +40 -0
  169. package/node_modules/pino/docs/child-loggers.md +116 -0
  170. package/node_modules/pino/docs/diagnostics.md +16 -0
  171. package/node_modules/pino/docs/ecosystem.md +87 -0
  172. package/node_modules/pino/docs/help.md +353 -0
  173. package/node_modules/pino/docs/lts.md +93 -0
  174. package/node_modules/pino/docs/pretty.md +38 -0
  175. package/node_modules/pino/docs/redaction.md +130 -0
  176. package/node_modules/pino/docs/transports.md +1447 -0
  177. package/node_modules/pino/docs/web.md +306 -0
  178. package/node_modules/pino/eslint.config.js +36 -0
  179. package/node_modules/pino/examples/basic.js +43 -0
  180. package/node_modules/pino/examples/transport.js +68 -0
  181. package/node_modules/pino/favicon.ico +0 -0
  182. package/node_modules/pino/file.js +12 -0
  183. package/node_modules/pino/inc-version.sh +42 -0
  184. package/node_modules/pino/index.html +55 -0
  185. package/node_modules/pino/lib/caller.js +40 -0
  186. package/node_modules/pino/lib/constants.js +28 -0
  187. package/node_modules/pino/lib/deprecations.js +8 -0
  188. package/node_modules/pino/lib/levels.js +241 -0
  189. package/node_modules/pino/lib/meta.js +3 -0
  190. package/node_modules/pino/lib/multistream.js +211 -0
  191. package/node_modules/pino/lib/proto.js +256 -0
  192. package/node_modules/pino/lib/redaction.js +119 -0
  193. package/node_modules/pino/lib/symbols.js +76 -0
  194. package/node_modules/pino/lib/time.js +39 -0
  195. package/node_modules/pino/lib/tools.js +427 -0
  196. package/node_modules/pino/lib/transport-stream.js +56 -0
  197. package/node_modules/pino/lib/transport.js +302 -0
  198. package/node_modules/pino/lib/worker.js +197 -0
  199. package/node_modules/pino/package.json +112 -0
  200. package/node_modules/pino/pino.d.ts +881 -0
  201. package/node_modules/pino/pino.js +259 -0
  202. package/node_modules/pino/test/basic.test.js +952 -0
  203. package/node_modules/pino/test/broken-pipe.test.js +59 -0
  204. package/node_modules/pino/test/browser-bindings.test.js +114 -0
  205. package/node_modules/pino/test/browser-child.test.js +132 -0
  206. package/node_modules/pino/test/browser-disabled.test.js +87 -0
  207. package/node_modules/pino/test/browser-early-console-freeze.test.js +12 -0
  208. package/node_modules/pino/test/browser-is-level-enabled.test.js +101 -0
  209. package/node_modules/pino/test/browser-levels.test.js +241 -0
  210. package/node_modules/pino/test/browser-redaction.test.js +264 -0
  211. package/node_modules/pino/test/browser-serializers.test.js +352 -0
  212. package/node_modules/pino/test/browser-set-bindings.test.js +99 -0
  213. package/node_modules/pino/test/browser-timestamp.test.js +88 -0
  214. package/node_modules/pino/test/browser-transmit.test.js +417 -0
  215. package/node_modules/pino/test/browser.test.js +698 -0
  216. package/node_modules/pino/test/caller.test.js +20 -0
  217. package/node_modules/pino/test/complex-objects.test.js +36 -0
  218. package/node_modules/pino/test/crlf.test.js +34 -0
  219. package/node_modules/pino/test/custom-levels.test.js +267 -0
  220. package/node_modules/pino/test/diagnostics.test.js +107 -0
  221. package/node_modules/pino/test/error-key.test.js +37 -0
  222. package/node_modules/pino/test/error.test.js +403 -0
  223. package/node_modules/pino/test/escaping.test.js +110 -0
  224. package/node_modules/pino/test/esm/esm.mjs +14 -0
  225. package/node_modules/pino/test/esm/index.test.js +21 -0
  226. package/node_modules/pino/test/esm/named-exports.mjs +29 -0
  227. package/node_modules/pino/test/exit.test.js +79 -0
  228. package/node_modules/pino/test/fixtures/broken-pipe/basic.js +9 -0
  229. package/node_modules/pino/test/fixtures/broken-pipe/destination.js +10 -0
  230. package/node_modules/pino/test/fixtures/broken-pipe/syncfalse.js +12 -0
  231. package/node_modules/pino/test/fixtures/caller-loop.js +6 -0
  232. package/node_modules/pino/test/fixtures/console-transport.js +13 -0
  233. package/node_modules/pino/test/fixtures/crashing-transport.js +13 -0
  234. package/node_modules/pino/test/fixtures/default-exit.js +8 -0
  235. package/node_modules/pino/test/fixtures/destination-exit.js +8 -0
  236. package/node_modules/pino/test/fixtures/eval/index.js +13 -0
  237. package/node_modules/pino/test/fixtures/eval/node_modules/14-files.js +3 -0
  238. package/node_modules/pino/test/fixtures/eval/node_modules/2-files.js +3 -0
  239. package/node_modules/pino/test/fixtures/eval/node_modules/file1.js +5 -0
  240. package/node_modules/pino/test/fixtures/eval/node_modules/file10.js +5 -0
  241. package/node_modules/pino/test/fixtures/eval/node_modules/file11.js +5 -0
  242. package/node_modules/pino/test/fixtures/eval/node_modules/file12.js +5 -0
  243. package/node_modules/pino/test/fixtures/eval/node_modules/file13.js +5 -0
  244. package/node_modules/pino/test/fixtures/eval/node_modules/file14.js +11 -0
  245. package/node_modules/pino/test/fixtures/eval/node_modules/file2.js +5 -0
  246. package/node_modules/pino/test/fixtures/eval/node_modules/file3.js +5 -0
  247. package/node_modules/pino/test/fixtures/eval/node_modules/file4.js +5 -0
  248. package/node_modules/pino/test/fixtures/eval/node_modules/file5.js +5 -0
  249. package/node_modules/pino/test/fixtures/eval/node_modules/file6.js +5 -0
  250. package/node_modules/pino/test/fixtures/eval/node_modules/file7.js +5 -0
  251. package/node_modules/pino/test/fixtures/eval/node_modules/file8.js +5 -0
  252. package/node_modules/pino/test/fixtures/eval/node_modules/file9.js +5 -0
  253. package/node_modules/pino/test/fixtures/noop-transport.js +10 -0
  254. package/node_modules/pino/test/fixtures/pretty/null-prototype.js +8 -0
  255. package/node_modules/pino/test/fixtures/stdout-hack-protection.js +11 -0
  256. package/node_modules/pino/test/fixtures/syncfalse-child.js +6 -0
  257. package/node_modules/pino/test/fixtures/syncfalse-exit.js +9 -0
  258. package/node_modules/pino/test/fixtures/syncfalse-flush-exit.js +10 -0
  259. package/node_modules/pino/test/fixtures/syncfalse.js +6 -0
  260. package/node_modules/pino/test/fixtures/syntax-error-esm.mjs +2 -0
  261. package/node_modules/pino/test/fixtures/to-file-transport-with-transform.js +20 -0
  262. package/node_modules/pino/test/fixtures/to-file-transport.js +13 -0
  263. package/node_modules/pino/test/fixtures/to-file-transport.mjs +8 -0
  264. package/node_modules/pino/test/fixtures/transport/index.js +12 -0
  265. package/node_modules/pino/test/fixtures/transport/package.json +5 -0
  266. package/node_modules/pino/test/fixtures/transport-exit-immediately-with-async-dest.js +16 -0
  267. package/node_modules/pino/test/fixtures/transport-exit-immediately.js +11 -0
  268. package/node_modules/pino/test/fixtures/transport-exit-on-ready.js +12 -0
  269. package/node_modules/pino/test/fixtures/transport-invalid-node-options.js +26 -0
  270. package/node_modules/pino/test/fixtures/transport-main.js +9 -0
  271. package/node_modules/pino/test/fixtures/transport-many-lines.js +29 -0
  272. package/node_modules/pino/test/fixtures/transport-preload-main.mjs +13 -0
  273. package/node_modules/pino/test/fixtures/transport-preload.mjs +13 -0
  274. package/node_modules/pino/test/fixtures/transport-string-stdout.js +9 -0
  275. package/node_modules/pino/test/fixtures/transport-transform.js +21 -0
  276. package/node_modules/pino/test/fixtures/transport-uses-pino-config.js +33 -0
  277. package/node_modules/pino/test/fixtures/transport-with-on-exit.js +12 -0
  278. package/node_modules/pino/test/fixtures/transport-worker-data.js +19 -0
  279. package/node_modules/pino/test/fixtures/transport-worker-name.js +24 -0
  280. package/node_modules/pino/test/fixtures/transport-worker.js +15 -0
  281. package/node_modules/pino/test/fixtures/transport-wrong-export-type.js +3 -0
  282. package/node_modules/pino/test/fixtures/ts/to-file-transport-native.mts +15 -0
  283. package/node_modules/pino/test/fixtures/ts/to-file-transport-with-transform.ts +18 -0
  284. package/node_modules/pino/test/fixtures/ts/to-file-transport.ts +11 -0
  285. package/node_modules/pino/test/fixtures/ts/transpile.cjs +36 -0
  286. package/node_modules/pino/test/fixtures/ts/transport-exit-immediately-with-async-dest.ts +15 -0
  287. package/node_modules/pino/test/fixtures/ts/transport-exit-immediately.ts +10 -0
  288. package/node_modules/pino/test/fixtures/ts/transport-exit-on-ready.ts +11 -0
  289. package/node_modules/pino/test/fixtures/ts/transport-main.ts +8 -0
  290. package/node_modules/pino/test/fixtures/ts/transport-string-stdout.ts +8 -0
  291. package/node_modules/pino/test/fixtures/ts/transport-worker.ts +14 -0
  292. package/node_modules/pino/test/formatters.test.js +364 -0
  293. package/node_modules/pino/test/helper.d.ts +4 -0
  294. package/node_modules/pino/test/helper.js +159 -0
  295. package/node_modules/pino/test/hooks.test.js +114 -0
  296. package/node_modules/pino/test/http.test.js +214 -0
  297. package/node_modules/pino/test/internals/version.test.js +17 -0
  298. package/node_modules/pino/test/is-level-enabled.test.js +179 -0
  299. package/node_modules/pino/test/jest/basic.spec.js +10 -0
  300. package/node_modules/pino/test/levels.test.js +810 -0
  301. package/node_modules/pino/test/metadata.test.js +120 -0
  302. package/node_modules/pino/test/mixin-merge-strategy.test.js +57 -0
  303. package/node_modules/pino/test/mixin.test.js +241 -0
  304. package/node_modules/pino/test/multistream.test.js +793 -0
  305. package/node_modules/pino/test/redact.test.js +923 -0
  306. package/node_modules/pino/test/serializers.test.js +257 -0
  307. package/node_modules/pino/test/smoke.js +59 -0
  308. package/node_modules/pino/test/stdout-protection.test.js +41 -0
  309. package/node_modules/pino/test/syncfalse.test.js +186 -0
  310. package/node_modules/pino/test/timestamp-nano.test.js +37 -0
  311. package/node_modules/pino/test/timestamp.test.js +124 -0
  312. package/node_modules/pino/test/transport/big.test.js +42 -0
  313. package/node_modules/pino/test/transport/bundlers-support.test.js +99 -0
  314. package/node_modules/pino/test/transport/caller.test.js +24 -0
  315. package/node_modules/pino/test/transport/core.test.js +818 -0
  316. package/node_modules/pino/test/transport/core.transpiled.test.ts +114 -0
  317. package/node_modules/pino/test/transport/crash.test.js +36 -0
  318. package/node_modules/pino/test/transport/module-link.test.js +241 -0
  319. package/node_modules/pino/test/transport/native-type-stripping.test.mjs +151 -0
  320. package/node_modules/pino/test/transport/node-options.test.js +116 -0
  321. package/node_modules/pino/test/transport/pipeline.test.js +137 -0
  322. package/node_modules/pino/test/transport/preload.test.js +54 -0
  323. package/node_modules/pino/test/transport/repl.test.js +15 -0
  324. package/node_modules/pino/test/transport/sync-false.test.js +79 -0
  325. package/node_modules/pino/test/transport/sync-true.test.js +57 -0
  326. package/node_modules/pino/test/transport/targets.test.js +48 -0
  327. package/node_modules/pino/test/transport/uses-pino-config.test.js +166 -0
  328. package/node_modules/pino/test/transport-stream.test.js +40 -0
  329. package/node_modules/pino/test/types/pino-import.tst.cts +30 -0
  330. package/node_modules/pino/test/types/pino-import.tst.js +73 -0
  331. package/node_modules/pino/test/types/pino-multistream.tst.ts +49 -0
  332. package/node_modules/pino/test/types/pino-top-export.tst.ts +32 -0
  333. package/node_modules/pino/test/types/pino-transport.tst.ts +171 -0
  334. package/node_modules/pino/test/types/pino-type-only.tst.ts +77 -0
  335. package/node_modules/pino/test/types/pino.ts +98 -0
  336. package/node_modules/pino/test/types/pino.tst.ts +681 -0
  337. package/node_modules/pino/test/types/tsconfig.json +10 -0
  338. package/node_modules/pino/tsconfig.json +14 -0
  339. package/node_modules/pino-pretty/.borp.yaml +6 -0
  340. package/node_modules/pino-pretty/.editorconfig +13 -0
  341. package/node_modules/pino-pretty/.github/dependabot.yml +13 -0
  342. package/node_modules/pino-pretty/.github/workflows/ci.yml +83 -0
  343. package/node_modules/pino-pretty/LICENSE +21 -0
  344. package/node_modules/pino-pretty/Readme.md +425 -0
  345. package/node_modules/pino-pretty/SECURITY.md +146 -0
  346. package/node_modules/pino-pretty/benchmark.js +105 -0
  347. package/node_modules/pino-pretty/bin.js +113 -0
  348. package/node_modules/pino-pretty/demo.png +0 -0
  349. package/node_modules/pino-pretty/docs/help.md +24 -0
  350. package/node_modules/pino-pretty/eslint.config.js +5 -0
  351. package/node_modules/pino-pretty/help/help.txt +68 -0
  352. package/node_modules/pino-pretty/index.d.ts +227 -0
  353. package/node_modules/pino-pretty/index.js +234 -0
  354. package/node_modules/pino-pretty/lib/colors.js +134 -0
  355. package/node_modules/pino-pretty/lib/colors.test.js +132 -0
  356. package/node_modules/pino-pretty/lib/constants.js +55 -0
  357. package/node_modules/pino-pretty/lib/pretty.js +171 -0
  358. package/node_modules/pino-pretty/lib/utils/build-safe-sonic-boom.js +69 -0
  359. package/node_modules/pino-pretty/lib/utils/build-safe-sonic-boom.test.js +84 -0
  360. package/node_modules/pino-pretty/lib/utils/create-date.js +26 -0
  361. package/node_modules/pino-pretty/lib/utils/create-date.test.js +20 -0
  362. package/node_modules/pino-pretty/lib/utils/delete-log-property.js +28 -0
  363. package/node_modules/pino-pretty/lib/utils/delete-log-property.test.js +31 -0
  364. package/node_modules/pino-pretty/lib/utils/filter-log.js +99 -0
  365. package/node_modules/pino-pretty/lib/utils/filter-log.test.js +265 -0
  366. package/node_modules/pino-pretty/lib/utils/format-time.js +66 -0
  367. package/node_modules/pino-pretty/lib/utils/format-time.test.js +71 -0
  368. package/node_modules/pino-pretty/lib/utils/get-level-label-data.js +29 -0
  369. package/node_modules/pino-pretty/lib/utils/get-property-value.js +30 -0
  370. package/node_modules/pino-pretty/lib/utils/get-property-value.test.js +31 -0
  371. package/node_modules/pino-pretty/lib/utils/handle-custom-levels-names-opts.js +38 -0
  372. package/node_modules/pino-pretty/lib/utils/handle-custom-levels-names-opts.test.js +45 -0
  373. package/node_modules/pino-pretty/lib/utils/handle-custom-levels-opts.js +39 -0
  374. package/node_modules/pino-pretty/lib/utils/handle-custom-levels-opts.test.js +47 -0
  375. package/node_modules/pino-pretty/lib/utils/index.js +108 -0
  376. package/node_modules/pino-pretty/lib/utils/index.test.js +37 -0
  377. package/node_modules/pino-pretty/lib/utils/interpret-conditionals.js +41 -0
  378. package/node_modules/pino-pretty/lib/utils/interpret-conditionals.test.js +84 -0
  379. package/node_modules/pino-pretty/lib/utils/is-object.js +7 -0
  380. package/node_modules/pino-pretty/lib/utils/is-object.test.js +10 -0
  381. package/node_modules/pino-pretty/lib/utils/is-valid-date.js +14 -0
  382. package/node_modules/pino-pretty/lib/utils/is-valid-date.test.js +16 -0
  383. package/node_modules/pino-pretty/lib/utils/join-lines-with-indentation.js +29 -0
  384. package/node_modules/pino-pretty/lib/utils/join-lines-with-indentation.test.js +16 -0
  385. package/node_modules/pino-pretty/lib/utils/noop.js +3 -0
  386. package/node_modules/pino-pretty/lib/utils/noop.test.js +12 -0
  387. package/node_modules/pino-pretty/lib/utils/parse-factory-options.js +171 -0
  388. package/node_modules/pino-pretty/lib/utils/prettify-error-log.js +76 -0
  389. package/node_modules/pino-pretty/lib/utils/prettify-error-log.test.js +143 -0
  390. package/node_modules/pino-pretty/lib/utils/prettify-error.js +54 -0
  391. package/node_modules/pino-pretty/lib/utils/prettify-error.test.js +25 -0
  392. package/node_modules/pino-pretty/lib/utils/prettify-level.js +41 -0
  393. package/node_modules/pino-pretty/lib/utils/prettify-level.test.js +70 -0
  394. package/node_modules/pino-pretty/lib/utils/prettify-message.js +65 -0
  395. package/node_modules/pino-pretty/lib/utils/prettify-message.test.js +287 -0
  396. package/node_modules/pino-pretty/lib/utils/prettify-metadata.js +75 -0
  397. package/node_modules/pino-pretty/lib/utils/prettify-metadata.test.js +170 -0
  398. package/node_modules/pino-pretty/lib/utils/prettify-object.js +115 -0
  399. package/node_modules/pino-pretty/lib/utils/prettify-object.test.js +217 -0
  400. package/node_modules/pino-pretty/lib/utils/prettify-time.js +43 -0
  401. package/node_modules/pino-pretty/lib/utils/prettify-time.test.js +264 -0
  402. package/node_modules/pino-pretty/lib/utils/split-property-key.js +49 -0
  403. package/node_modules/pino-pretty/lib/utils/split-property-key.test.js +29 -0
  404. package/node_modules/pino-pretty/lib/utils/strip-unsafe-control-chars.js +18 -0
  405. package/node_modules/pino-pretty/lib/utils/strip-unsafe-control-chars.test.js +9 -0
  406. package/node_modules/pino-pretty/package.json +64 -0
  407. package/node_modules/pino-pretty/test/basic.test.js +1305 -0
  408. package/node_modules/pino-pretty/test/boolean-options.test.js +228 -0
  409. package/node_modules/pino-pretty/test/cli-rc.test.js +275 -0
  410. package/node_modules/pino-pretty/test/cli.test.js +360 -0
  411. package/node_modules/pino-pretty/test/crlf.test.js +33 -0
  412. package/node_modules/pino-pretty/test/error-objects.test.js +494 -0
  413. package/node_modules/pino-pretty/test/example/example.js +33 -0
  414. package/node_modules/pino-pretty/test/helper.js +19 -0
  415. package/node_modules/pino-pretty/test/types/exports.tst.ts +15 -0
  416. package/node_modules/pino-pretty/test/types/pino-pretty.tst.ts +140 -0
  417. package/node_modules/pino-pretty/test/types/tsconfig.json +9 -0
  418. package/package.json +12 -5
  419. package/lib/cli/commands/init.d.ts +0 -1
  420. package/lib/cli/commands/init.js +0 -8
  421. package/node_modules/@types/node/globals.global.d.ts +0 -1
@@ -0,0 +1,241 @@
1
+ 'use strict'
2
+ /* eslint no-prototype-builtins: 0 */
3
+ const {
4
+ lsCacheSym,
5
+ levelValSym,
6
+ useOnlyCustomLevelsSym,
7
+ streamSym,
8
+ formattersSym,
9
+ hooksSym,
10
+ levelCompSym
11
+ } = require('./symbols')
12
+ const { noop, genLog } = require('./tools')
13
+ const { DEFAULT_LEVELS, SORTING_ORDER } = require('./constants')
14
+
15
+ const levelMethods = {
16
+ fatal: (hook) => {
17
+ const logFatal = genLog(DEFAULT_LEVELS.fatal, hook)
18
+ return function (...args) {
19
+ const stream = this[streamSym]
20
+ logFatal.call(this, ...args)
21
+ if (typeof stream.flushSync === 'function') {
22
+ try {
23
+ stream.flushSync()
24
+ } catch (e) {
25
+ // https://github.com/pinojs/pino/pull/740#discussion_r346788313
26
+ }
27
+ }
28
+ }
29
+ },
30
+ error: (hook) => genLog(DEFAULT_LEVELS.error, hook),
31
+ warn: (hook) => genLog(DEFAULT_LEVELS.warn, hook),
32
+ info: (hook) => genLog(DEFAULT_LEVELS.info, hook),
33
+ debug: (hook) => genLog(DEFAULT_LEVELS.debug, hook),
34
+ trace: (hook) => genLog(DEFAULT_LEVELS.trace, hook)
35
+ }
36
+
37
+ const nums = Object.keys(DEFAULT_LEVELS).reduce((o, k) => {
38
+ o[DEFAULT_LEVELS[k]] = k
39
+ return o
40
+ }, {})
41
+
42
+ const initialLsCache = Object.keys(nums).reduce((o, k) => {
43
+ o[k] = '{"level":' + Number(k)
44
+ return o
45
+ }, {})
46
+
47
+ function genLsCache (instance) {
48
+ const formatter = instance[formattersSym].level
49
+ const { labels } = instance.levels
50
+ const cache = {}
51
+ for (const label in labels) {
52
+ const level = formatter(labels[label], Number(label))
53
+ cache[label] = JSON.stringify(level).slice(0, -1)
54
+ }
55
+ instance[lsCacheSym] = cache
56
+ return instance
57
+ }
58
+
59
+ function isStandardLevel (level, useOnlyCustomLevels) {
60
+ if (useOnlyCustomLevels) {
61
+ return false
62
+ }
63
+
64
+ switch (level) {
65
+ case 'fatal':
66
+ case 'error':
67
+ case 'warn':
68
+ case 'info':
69
+ case 'debug':
70
+ case 'trace':
71
+ return true
72
+ default:
73
+ return false
74
+ }
75
+ }
76
+
77
+ function setLevel (level) {
78
+ const { labels, values } = this.levels
79
+ if (typeof level === 'number') {
80
+ if (labels[level] === undefined) throw Error('unknown level value' + level)
81
+ level = labels[level]
82
+ }
83
+ if (values[level] === undefined) throw Error('unknown level ' + level)
84
+ const preLevelVal = this[levelValSym]
85
+ const levelVal = this[levelValSym] = values[level]
86
+ const useOnlyCustomLevelsVal = this[useOnlyCustomLevelsSym]
87
+ const levelComparison = this[levelCompSym]
88
+ const hook = this[hooksSym].logMethod
89
+
90
+ for (const key in values) {
91
+ if (levelComparison(values[key], levelVal) === false) {
92
+ this[key] = noop
93
+ continue
94
+ }
95
+ this[key] = isStandardLevel(key, useOnlyCustomLevelsVal) ? levelMethods[key](hook) : genLog(values[key], hook)
96
+ }
97
+
98
+ this.emit(
99
+ 'level-change',
100
+ level,
101
+ levelVal,
102
+ labels[preLevelVal],
103
+ preLevelVal,
104
+ this
105
+ )
106
+ }
107
+
108
+ function getLevel (level) {
109
+ const { levels, levelVal } = this
110
+ // protection against potential loss of Pino scope from serializers (edge case with circular refs - https://github.com/pinojs/pino/issues/833)
111
+ return (levels && levels.labels) ? levels.labels[levelVal] : ''
112
+ }
113
+
114
+ function isLevelEnabled (logLevel) {
115
+ const { values } = this.levels
116
+ const logLevelVal = values[logLevel]
117
+ return logLevelVal !== undefined && this[levelCompSym](logLevelVal, this[levelValSym])
118
+ }
119
+
120
+ /**
121
+ * Determine if the given `current` level is enabled by comparing it
122
+ * against the current threshold (`expected`).
123
+ *
124
+ * @param {SORTING_ORDER} direction comparison direction "ASC" or "DESC"
125
+ * @param {number} current current log level number representation
126
+ * @param {number} expected threshold value to compare with
127
+ * @returns {boolean}
128
+ */
129
+ function compareLevel (direction, current, expected) {
130
+ if (direction === SORTING_ORDER.DESC) {
131
+ return current <= expected
132
+ }
133
+
134
+ return current >= expected
135
+ }
136
+
137
+ /**
138
+ * Create a level comparison function based on `levelComparison`
139
+ * it could a default function which compares levels either in "ascending" or "descending" order or custom comparison function
140
+ *
141
+ * @param {SORTING_ORDER | Function} levelComparison sort levels order direction or custom comparison function
142
+ * @returns Function
143
+ */
144
+ function genLevelComparison (levelComparison) {
145
+ if (typeof levelComparison === 'string') {
146
+ return compareLevel.bind(null, levelComparison)
147
+ }
148
+
149
+ return levelComparison
150
+ }
151
+
152
+ function mappings (customLevels = null, useOnlyCustomLevels = false) {
153
+ const customNums = customLevels
154
+ /* eslint-disable */
155
+ ? Object.keys(customLevels).reduce((o, k) => {
156
+ o[customLevels[k]] = k
157
+ return o
158
+ }, {})
159
+ : null
160
+ /* eslint-enable */
161
+
162
+ const labels = Object.assign(
163
+ Object.create(Object.prototype, { Infinity: { value: 'silent' } }),
164
+ useOnlyCustomLevels ? null : nums,
165
+ customNums
166
+ )
167
+ const values = Object.assign(
168
+ Object.create(Object.prototype, { silent: { value: Infinity } }),
169
+ useOnlyCustomLevels ? null : DEFAULT_LEVELS,
170
+ customLevels
171
+ )
172
+ return { labels, values }
173
+ }
174
+
175
+ function assertDefaultLevelFound (defaultLevel, customLevels, useOnlyCustomLevels) {
176
+ if (typeof defaultLevel === 'number') {
177
+ const values = [].concat(
178
+ Object.keys(customLevels || {}).map(key => customLevels[key]),
179
+ useOnlyCustomLevels ? [] : Object.keys(nums).map(level => +level),
180
+ Infinity
181
+ )
182
+ if (!values.includes(defaultLevel)) {
183
+ throw Error(`default level:${defaultLevel} must be included in custom levels`)
184
+ }
185
+ return
186
+ }
187
+
188
+ const labels = Object.assign(
189
+ Object.create(Object.prototype, { silent: { value: Infinity } }),
190
+ useOnlyCustomLevels ? null : DEFAULT_LEVELS,
191
+ customLevels
192
+ )
193
+ if (!(defaultLevel in labels)) {
194
+ throw Error(`default level:${defaultLevel} must be included in custom levels`)
195
+ }
196
+ }
197
+
198
+ function assertNoLevelCollisions (levels, customLevels) {
199
+ const { labels, values } = levels
200
+ for (const k in customLevels) {
201
+ if (k in values) {
202
+ throw Error('levels cannot be overridden')
203
+ }
204
+ if (customLevels[k] in labels) {
205
+ throw Error('pre-existing level values cannot be used for new levels')
206
+ }
207
+ }
208
+ }
209
+
210
+ /**
211
+ * Validates whether `levelComparison` is correct
212
+ *
213
+ * @throws Error
214
+ * @param {SORTING_ORDER | Function} levelComparison - value to validate
215
+ * @returns
216
+ */
217
+ function assertLevelComparison (levelComparison) {
218
+ if (typeof levelComparison === 'function') {
219
+ return
220
+ }
221
+
222
+ if (typeof levelComparison === 'string' && Object.values(SORTING_ORDER).includes(levelComparison)) {
223
+ return
224
+ }
225
+
226
+ throw new Error('Levels comparison should be one of "ASC", "DESC" or "function" type')
227
+ }
228
+
229
+ module.exports = {
230
+ initialLsCache,
231
+ genLsCache,
232
+ levelMethods,
233
+ getLevel,
234
+ setLevel,
235
+ isLevelEnabled,
236
+ mappings,
237
+ assertNoLevelCollisions,
238
+ assertDefaultLevelFound,
239
+ genLevelComparison,
240
+ assertLevelComparison
241
+ }
@@ -0,0 +1,3 @@
1
+ 'use strict'
2
+
3
+ module.exports = { version: '10.4.0' }
@@ -0,0 +1,211 @@
1
+ 'use strict'
2
+
3
+ const metadata = Symbol.for('pino.metadata')
4
+ const { DEFAULT_LEVELS } = require('./constants')
5
+
6
+ const DEFAULT_INFO_LEVEL = DEFAULT_LEVELS.info
7
+
8
+ function multistream (streamsArray, opts) {
9
+ streamsArray = streamsArray || []
10
+ opts = opts || { dedupe: false }
11
+
12
+ const streamLevels = Object.create(DEFAULT_LEVELS)
13
+ streamLevels.silent = Infinity
14
+ if (opts.levels && typeof opts.levels === 'object') {
15
+ Object.keys(opts.levels).forEach(i => {
16
+ streamLevels[i] = opts.levels[i]
17
+ })
18
+ }
19
+
20
+ const res = {
21
+ write,
22
+ add,
23
+ remove,
24
+ emit,
25
+ flushSync,
26
+ end,
27
+ minLevel: 0,
28
+ lastId: 0,
29
+ streams: [],
30
+ clone,
31
+ [metadata]: true,
32
+ streamLevels
33
+ }
34
+
35
+ if (Array.isArray(streamsArray)) {
36
+ streamsArray.forEach(add, res)
37
+ } else {
38
+ add.call(res, streamsArray)
39
+ }
40
+
41
+ // clean this object up
42
+ // or it will stay allocated forever
43
+ // as it is closed on the following closures
44
+ streamsArray = null
45
+
46
+ return res
47
+
48
+ // we can exit early because the streams are ordered by level
49
+ function write (data) {
50
+ let dest
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
58
+ const { streams } = this
59
+ // for handling situation when several streams has the same level
60
+ let recordedLevel = 0
61
+ let stream
62
+
63
+ // if dedupe set to true we send logs to the stream with the highest level
64
+ // therefore, we have to change sorting order
65
+ for (let i = initLoopVar(streams.length, opts.dedupe); checkLoopVar(i, streams.length, opts.dedupe); i = adjustLoopVar(i, opts.dedupe)) {
66
+ dest = streams[i]
67
+ if (dest.level <= level) {
68
+ if (recordedLevel !== 0 && recordedLevel !== dest.level) {
69
+ break
70
+ }
71
+ stream = dest.stream
72
+ if (stream[metadata]) {
73
+ const { lastTime, lastMsg, lastObj, lastLogger } = this
74
+ stream.lastLevel = level
75
+ stream.lastTime = lastTime
76
+ stream.lastMsg = lastMsg
77
+ stream.lastObj = lastObj
78
+ stream.lastLogger = lastLogger
79
+ }
80
+ stream.write(data)
81
+ if (opts.dedupe) {
82
+ recordedLevel = dest.level
83
+ }
84
+ } else if (!opts.dedupe) {
85
+ break
86
+ }
87
+ }
88
+ }
89
+
90
+ function emit (...args) {
91
+ for (const { stream } of this.streams) {
92
+ if (typeof stream.emit === 'function') {
93
+ stream.emit(...args)
94
+ }
95
+ }
96
+ }
97
+
98
+ function flushSync () {
99
+ for (const { stream } of this.streams) {
100
+ if (typeof stream.flushSync === 'function') {
101
+ stream.flushSync()
102
+ }
103
+ }
104
+ }
105
+
106
+ function add (dest) {
107
+ if (!dest) {
108
+ return this
109
+ }
110
+
111
+ // Check that dest implements either StreamEntry or DestinationStream
112
+ const isStream = typeof dest.write === 'function' || dest.stream
113
+ const stream_ = dest.write ? dest : dest.stream
114
+ // This is necessary to provide a meaningful error message, otherwise it throws somewhere inside write()
115
+ if (!isStream) {
116
+ throw Error('stream object needs to implement either StreamEntry or DestinationStream interface')
117
+ }
118
+
119
+ const { streams, streamLevels } = this
120
+
121
+ let level
122
+ if (typeof dest.levelVal === 'number') {
123
+ level = dest.levelVal
124
+ } else if (typeof dest.level === 'string') {
125
+ level = streamLevels[dest.level]
126
+ } else if (typeof dest.level === 'number') {
127
+ level = dest.level
128
+ } else {
129
+ level = DEFAULT_INFO_LEVEL
130
+ }
131
+
132
+ const dest_ = {
133
+ stream: stream_,
134
+ level,
135
+ levelVal: undefined,
136
+ id: ++res.lastId
137
+ }
138
+
139
+ streams.unshift(dest_)
140
+ streams.sort(compareByLevel)
141
+
142
+ this.minLevel = streams[0].level
143
+
144
+ return this
145
+ }
146
+
147
+ function remove (id) {
148
+ const { streams } = this
149
+ const index = streams.findIndex(s => s.id === id)
150
+
151
+ if (index >= 0) {
152
+ streams.splice(index, 1)
153
+ streams.sort(compareByLevel)
154
+ this.minLevel = streams.length > 0 ? streams[0].level : -1
155
+ }
156
+
157
+ return this
158
+ }
159
+
160
+ function end () {
161
+ for (const { stream } of this.streams) {
162
+ if (typeof stream.flushSync === 'function') {
163
+ stream.flushSync()
164
+ }
165
+ stream.end()
166
+ }
167
+ }
168
+
169
+ function clone (level) {
170
+ const streams = new Array(this.streams.length)
171
+
172
+ for (let i = 0; i < streams.length; i++) {
173
+ streams[i] = {
174
+ level,
175
+ stream: this.streams[i].stream
176
+ }
177
+ }
178
+
179
+ return {
180
+ write,
181
+ add,
182
+ remove,
183
+ emit,
184
+ flushSync,
185
+ end,
186
+ minLevel: level,
187
+ streams,
188
+ clone,
189
+ [metadata]: true,
190
+ streamLevels
191
+ }
192
+ }
193
+ }
194
+
195
+ function compareByLevel (a, b) {
196
+ return a.level - b.level
197
+ }
198
+
199
+ function initLoopVar (length, dedupe) {
200
+ return dedupe ? length - 1 : 0
201
+ }
202
+
203
+ function adjustLoopVar (i, dedupe) {
204
+ return dedupe ? i - 1 : i + 1
205
+ }
206
+
207
+ function checkLoopVar (i, length, dedupe) {
208
+ return dedupe ? i >= 0 : i < length
209
+ }
210
+
211
+ module.exports = multistream
@@ -0,0 +1,256 @@
1
+ 'use strict'
2
+
3
+ /* eslint no-prototype-builtins: 0 */
4
+
5
+ const { EventEmitter } = require('node:events')
6
+ const {
7
+ lsCacheSym,
8
+ levelValSym,
9
+ setLevelSym,
10
+ getLevelSym,
11
+ chindingsSym,
12
+ mixinSym,
13
+ asJsonSym,
14
+ writeSym,
15
+ mixinMergeStrategySym,
16
+ timeSym,
17
+ timeSliceIndexSym,
18
+ streamSym,
19
+ serializersSym,
20
+ formattersSym,
21
+ errorKeySym,
22
+ messageKeySym,
23
+ useOnlyCustomLevelsSym,
24
+ needsMetadataGsym,
25
+ redactFmtSym,
26
+ stringifySym,
27
+ formatOptsSym,
28
+ stringifiersSym,
29
+ msgPrefixSym,
30
+ hooksSym
31
+ } = require('./symbols')
32
+ const {
33
+ getLevel,
34
+ setLevel,
35
+ isLevelEnabled,
36
+ mappings,
37
+ initialLsCache,
38
+ genLsCache,
39
+ assertNoLevelCollisions
40
+ } = require('./levels')
41
+ const {
42
+ asChindings,
43
+ asJson,
44
+ buildFormatters,
45
+ stringify,
46
+ noop
47
+ } = require('./tools')
48
+ const {
49
+ version
50
+ } = require('./meta')
51
+ const redaction = require('./redaction')
52
+
53
+ // note: use of class is satirical
54
+ // https://github.com/pinojs/pino/pull/433#pullrequestreview-127703127
55
+ const constructor = class Pino {}
56
+ const prototype = {
57
+ constructor,
58
+ child,
59
+ bindings,
60
+ setBindings,
61
+ flush,
62
+ isLevelEnabled,
63
+ version,
64
+ get level () { return this[getLevelSym]() },
65
+ set level (lvl) { this[setLevelSym](lvl) },
66
+ get levelVal () { return this[levelValSym] },
67
+ set levelVal (n) { throw Error('levelVal is read-only') },
68
+ get msgPrefix () { return this[msgPrefixSym] },
69
+ get [Symbol.toStringTag] () { return 'Pino' },
70
+ [lsCacheSym]: initialLsCache,
71
+ [writeSym]: write,
72
+ [asJsonSym]: asJson,
73
+ [getLevelSym]: getLevel,
74
+ [setLevelSym]: setLevel
75
+ }
76
+
77
+ Object.setPrototypeOf(prototype, EventEmitter.prototype)
78
+
79
+ // exporting and consuming the prototype object using factory pattern fixes scoping issues with getters when serializing
80
+ module.exports = function () {
81
+ return Object.create(prototype)
82
+ }
83
+
84
+ const resetChildingsFormatter = bindings => bindings
85
+ function child (bindings, options) {
86
+ if (!bindings) {
87
+ throw Error('missing bindings for child Pino')
88
+ }
89
+ const serializers = this[serializersSym]
90
+ const formatters = this[formattersSym]
91
+ const instance = Object.create(this)
92
+
93
+ // If an `options` object was not supplied, we can improve
94
+ // the performance of child creation by skipping
95
+ // the checks for set options and simply return
96
+ // a baseline instance.
97
+ if (options == null) {
98
+ if (instance[formattersSym].bindings !== resetChildingsFormatter) {
99
+ instance[formattersSym] = buildFormatters(
100
+ formatters.level,
101
+ resetChildingsFormatter,
102
+ formatters.log
103
+ )
104
+ }
105
+
106
+ instance[chindingsSym] = asChindings(instance, bindings)
107
+
108
+ if (this.onChild !== noop) {
109
+ this.onChild(instance)
110
+ }
111
+
112
+ return instance
113
+ }
114
+
115
+ if (options.hasOwnProperty('serializers') === true) {
116
+ instance[serializersSym] = Object.create(null)
117
+
118
+ for (const k in serializers) {
119
+ instance[serializersSym][k] = serializers[k]
120
+ }
121
+ const parentSymbols = Object.getOwnPropertySymbols(serializers)
122
+ /* eslint no-var: off */
123
+ for (var i = 0; i < parentSymbols.length; i++) {
124
+ const ks = parentSymbols[i]
125
+ instance[serializersSym][ks] = serializers[ks]
126
+ }
127
+
128
+ for (const bk in options.serializers) {
129
+ instance[serializersSym][bk] = options.serializers[bk]
130
+ }
131
+ const bindingsSymbols = Object.getOwnPropertySymbols(options.serializers)
132
+ for (var bi = 0; bi < bindingsSymbols.length; bi++) {
133
+ const bks = bindingsSymbols[bi]
134
+ instance[serializersSym][bks] = options.serializers[bks]
135
+ }
136
+ } else instance[serializersSym] = serializers
137
+ if (options.hasOwnProperty('formatters')) {
138
+ const { level, bindings: chindings, log } = options.formatters
139
+ instance[formattersSym] = buildFormatters(
140
+ level || formatters.level,
141
+ chindings || resetChildingsFormatter,
142
+ log || formatters.log
143
+ )
144
+ } else {
145
+ instance[formattersSym] = buildFormatters(
146
+ formatters.level,
147
+ resetChildingsFormatter,
148
+ formatters.log
149
+ )
150
+ }
151
+ if (options.hasOwnProperty('customLevels') === true) {
152
+ assertNoLevelCollisions(this.levels, options.customLevels)
153
+ instance.levels = mappings(options.customLevels, instance[useOnlyCustomLevelsSym])
154
+ genLsCache(instance)
155
+ }
156
+
157
+ // redact must place before asChindings and only replace if exist
158
+ if ((typeof options.redact === 'object' && options.redact !== null) || Array.isArray(options.redact)) {
159
+ instance.redact = options.redact // replace redact directly
160
+ const stringifiers = redaction(instance.redact, stringify)
161
+ const formatOpts = { stringify: stringifiers[redactFmtSym] }
162
+ instance[stringifySym] = stringify
163
+ instance[stringifiersSym] = stringifiers
164
+ instance[formatOptsSym] = formatOpts
165
+ }
166
+
167
+ if (typeof options.msgPrefix === 'string') {
168
+ instance[msgPrefixSym] = (this[msgPrefixSym] || '') + options.msgPrefix
169
+ }
170
+
171
+ instance[chindingsSym] = asChindings(instance, bindings)
172
+ if ((options.level !== undefined && options.level !== this.level) || options.hasOwnProperty('customLevels')) {
173
+ const childLevel = options.level || this.level
174
+ instance[setLevelSym](childLevel)
175
+ }
176
+ this.onChild(instance)
177
+ return instance
178
+ }
179
+
180
+ function bindings () {
181
+ const chindings = this[chindingsSym]
182
+ const chindingsJson = `{${chindings.substr(1)}}` // at least contains ,"pid":7068,"hostname":"myMac"
183
+ const bindingsFromJson = JSON.parse(chindingsJson)
184
+ delete bindingsFromJson.pid
185
+ delete bindingsFromJson.hostname
186
+ return bindingsFromJson
187
+ }
188
+
189
+ function setBindings (newBindings) {
190
+ const chindings = asChindings(this, newBindings)
191
+ this[chindingsSym] = chindings
192
+ }
193
+
194
+ /**
195
+ * Default strategy for creating `mergeObject` from arguments and the result from `mixin()`.
196
+ * Fields from `mergeObject` have higher priority in this strategy.
197
+ *
198
+ * @param {Object} mergeObject The object a user has supplied to the logging function.
199
+ * @param {Object} mixinObject The result of the `mixin` method.
200
+ * @return {Object}
201
+ */
202
+ function defaultMixinMergeStrategy (mergeObject, mixinObject) {
203
+ return Object.assign(mixinObject, mergeObject)
204
+ }
205
+
206
+ function write (_obj, msg, num) {
207
+ const t = this[timeSym]()
208
+ const mixin = this[mixinSym]
209
+ const errorKey = this[errorKeySym]
210
+ const messageKey = this[messageKeySym]
211
+ const mixinMergeStrategy = this[mixinMergeStrategySym] || defaultMixinMergeStrategy
212
+ let obj
213
+ const streamWriteHook = this[hooksSym].streamWrite
214
+
215
+ if (_obj === undefined || _obj === null) {
216
+ obj = {}
217
+ } else if (_obj instanceof Error) {
218
+ obj = { [errorKey]: _obj }
219
+ if (msg === undefined) {
220
+ msg = _obj.message
221
+ }
222
+ } else {
223
+ obj = _obj
224
+ if (msg === undefined && _obj[messageKey] === undefined && _obj[errorKey]) {
225
+ msg = _obj[errorKey].message
226
+ }
227
+ }
228
+
229
+ if (mixin) {
230
+ obj = mixinMergeStrategy(obj, mixin(obj, num, this))
231
+ }
232
+
233
+ const s = this[asJsonSym](obj, msg, num, t)
234
+
235
+ const stream = this[streamSym]
236
+ if (stream[needsMetadataGsym] === true) {
237
+ stream.lastLevel = num
238
+ stream.lastObj = obj
239
+ stream.lastMsg = msg
240
+ stream.lastTime = t.slice(this[timeSliceIndexSym])
241
+ stream.lastLogger = this // for child loggers
242
+ }
243
+ stream.write(streamWriteHook ? streamWriteHook(s) : s)
244
+ }
245
+
246
+ function flush (cb) {
247
+ if (cb != null && typeof cb !== 'function') {
248
+ throw Error('callback must be a function')
249
+ }
250
+
251
+ const stream = this[streamSym]
252
+
253
+ if (typeof stream.flush === 'function') {
254
+ stream.flush(cb || noop)
255
+ } else if (cb) cb()
256
+ }