@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,75 @@
1
+ 'use strict'
2
+
3
+ module.exports = prettifyMetadata
4
+
5
+ const stripUnsafeControlChars = require('./strip-unsafe-control-chars')
6
+
7
+ /**
8
+ * @typedef {object} PrettifyMetadataParams
9
+ * @property {object} log The log that may or may not contain metadata to
10
+ * be prettified.
11
+ * @property {PrettyContext} context The context object built from parsing
12
+ * the options.
13
+ */
14
+
15
+ /**
16
+ * Prettifies metadata that is usually present in a Pino log line. It looks for
17
+ * fields `name`, `pid`, `hostname`, and `caller` and returns a formatted string using
18
+ * the fields it finds.
19
+ *
20
+ * @param {PrettifyMetadataParams} input
21
+ *
22
+ * @returns {undefined|string} If no metadata is found then `undefined` is
23
+ * returned. Otherwise, a string of prettified metadata is returned.
24
+ */
25
+ function prettifyMetadata ({ log, context }) {
26
+ const { customPrettifiers: prettifiers, colorizer } = context
27
+ let line = ''
28
+
29
+ if (log.name || log.pid || log.hostname) {
30
+ line += '('
31
+
32
+ if (log.name) {
33
+ line += prettifiers.name
34
+ ? prettifiers.name(log.name, 'name', log, { colors: colorizer.colors })
35
+ : stripUnsafeControlChars(log.name)
36
+ }
37
+
38
+ if (log.pid) {
39
+ const prettyPid = prettifiers.pid
40
+ ? prettifiers.pid(log.pid, 'pid', log, { colors: colorizer.colors })
41
+ : stripUnsafeControlChars(log.pid)
42
+ if (log.name && log.pid) {
43
+ line += '/' + prettyPid
44
+ } else {
45
+ line += prettyPid
46
+ }
47
+ }
48
+
49
+ if (log.hostname) {
50
+ // If `pid` and `name` were in the ignore keys list then we don't need
51
+ // the leading space.
52
+ const prettyHostname = prettifiers.hostname
53
+ ? prettifiers.hostname(log.hostname, 'hostname', log, { colors: colorizer.colors })
54
+ : stripUnsafeControlChars(log.hostname)
55
+
56
+ line += `${line === '(' ? 'on' : ' on'} ${prettyHostname}`
57
+ }
58
+
59
+ line += ')'
60
+ }
61
+
62
+ if (log.caller) {
63
+ const prettyCaller = prettifiers.caller
64
+ ? prettifiers.caller(log.caller, 'caller', log, { colors: colorizer.colors })
65
+ : stripUnsafeControlChars(log.caller)
66
+
67
+ line += `${line === '' ? '' : ' '}<${prettyCaller}>`
68
+ }
69
+
70
+ if (line === '') {
71
+ return undefined
72
+ } else {
73
+ return line
74
+ }
75
+ }
@@ -0,0 +1,170 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('node:test')
4
+ const prettifyMetadata = require('./prettify-metadata')
5
+ const getColorizer = require('../colors')
6
+ const context = {
7
+ customPrettifiers: {},
8
+ colorizer: {
9
+ colors: {}
10
+ }
11
+ }
12
+
13
+ test('returns `undefined` if no metadata present', t => {
14
+ const str = prettifyMetadata({ log: {}, context })
15
+ t.assert.strictEqual(str, undefined)
16
+ })
17
+
18
+ test('works with only `name` present', t => {
19
+ const str = prettifyMetadata({ log: { name: 'foo' }, context })
20
+ t.assert.strictEqual(str, '(foo)')
21
+ })
22
+
23
+ test('works with only `pid` present', t => {
24
+ const str = prettifyMetadata({ log: { pid: '1234' }, context })
25
+ t.assert.strictEqual(str, '(1234)')
26
+ })
27
+
28
+ test('works with only `hostname` present', t => {
29
+ const str = prettifyMetadata({ log: { hostname: 'bar' }, context })
30
+ t.assert.strictEqual(str, '(on bar)')
31
+ })
32
+
33
+ test('works with only `name` & `pid` present', t => {
34
+ const str = prettifyMetadata({ log: { name: 'foo', pid: '1234' }, context })
35
+ t.assert.strictEqual(str, '(foo/1234)')
36
+ })
37
+
38
+ test('works with only `name` & `hostname` present', t => {
39
+ const str = prettifyMetadata({ log: { name: 'foo', hostname: 'bar' }, context })
40
+ t.assert.strictEqual(str, '(foo on bar)')
41
+ })
42
+
43
+ test('works with only `pid` & `hostname` present', t => {
44
+ const str = prettifyMetadata({ log: { pid: '1234', hostname: 'bar' }, context })
45
+ t.assert.strictEqual(str, '(1234 on bar)')
46
+ })
47
+
48
+ test('works with only `name`, `pid`, & `hostname` present', t => {
49
+ const str = prettifyMetadata({ log: { name: 'foo', pid: '1234', hostname: 'bar' }, context })
50
+ t.assert.strictEqual(str, '(foo/1234 on bar)')
51
+ })
52
+
53
+ test('works with only `name` & `caller` present', t => {
54
+ const str = prettifyMetadata({ log: { name: 'foo', caller: 'baz' }, context })
55
+ t.assert.strictEqual(str, '(foo) <baz>')
56
+ })
57
+
58
+ test('works with only `pid` & `caller` present', t => {
59
+ const str = prettifyMetadata({ log: { pid: '1234', caller: 'baz' }, context })
60
+ t.assert.strictEqual(str, '(1234) <baz>')
61
+ })
62
+
63
+ test('works with only `hostname` & `caller` present', t => {
64
+ const str = prettifyMetadata({ log: { hostname: 'bar', caller: 'baz' }, context })
65
+ t.assert.strictEqual(str, '(on bar) <baz>')
66
+ })
67
+
68
+ test('works with only `name`, `pid`, & `caller` present', t => {
69
+ const str = prettifyMetadata({ log: { name: 'foo', pid: '1234', caller: 'baz' }, context })
70
+ t.assert.strictEqual(str, '(foo/1234) <baz>')
71
+ })
72
+
73
+ test('works with only `name`, `hostname`, & `caller` present', t => {
74
+ const str = prettifyMetadata({ log: { name: 'foo', hostname: 'bar', caller: 'baz' }, context })
75
+ t.assert.strictEqual(str, '(foo on bar) <baz>')
76
+ })
77
+
78
+ test('works with only `caller` present', t => {
79
+ const str = prettifyMetadata({ log: { caller: 'baz' }, context })
80
+ t.assert.strictEqual(str, '<baz>')
81
+ })
82
+
83
+ test('works with only `pid`, `hostname`, & `caller` present', t => {
84
+ const str = prettifyMetadata({ log: { pid: '1234', hostname: 'bar', caller: 'baz' }, context })
85
+ t.assert.strictEqual(str, '(1234 on bar) <baz>')
86
+ })
87
+
88
+ test('works with all four present', t => {
89
+ const str = prettifyMetadata({ log: { name: 'foo', pid: '1234', hostname: 'bar', caller: 'baz' }, context })
90
+ t.assert.strictEqual(str, '(foo/1234 on bar) <baz>')
91
+ })
92
+
93
+ test('strips unsafe control characters from default metadata', t => {
94
+ const str = prettifyMetadata({
95
+ log: {
96
+ name: 'foo\u001B[2J',
97
+ pid: '1234\u0007',
98
+ hostname: 'bar\u009B[3J',
99
+ caller: 'baz\u007F'
100
+ },
101
+ context
102
+ })
103
+ t.assert.strictEqual(str, '(foo[2J/1234 on bar[3J) <baz>')
104
+ })
105
+
106
+ test('strips unsafe control characters after metadata values are coerced', t => {
107
+ const str = prettifyMetadata({
108
+ log: { name: ['foo\u001B[2J'] },
109
+ context
110
+ })
111
+ t.assert.strictEqual(str, '(foo[2J)')
112
+ })
113
+
114
+ test('uses prettifiers from passed prettifiers object', t => {
115
+ const prettifiers = {
116
+ name (input) {
117
+ return input.toUpperCase()
118
+ },
119
+ pid (input) {
120
+ return input + '__'
121
+ },
122
+ hostname (input) {
123
+ return input.toUpperCase()
124
+ },
125
+ caller (input) {
126
+ return input.toUpperCase()
127
+ }
128
+ }
129
+ const str = prettifyMetadata({
130
+ log: { pid: '1234', hostname: 'bar', caller: 'baz', name: 'joe' },
131
+ context: {
132
+ customPrettifiers: prettifiers,
133
+ colorizer: { colors: {} }
134
+ }
135
+ })
136
+ t.assert.strictEqual(str, '(JOE/1234__ on BAR) <BAZ>')
137
+ })
138
+
139
+ test('uses colorizer from passed context to colorize metadata', t => {
140
+ const prettifiers = {
141
+ name (input, _key, _log, { colors }) {
142
+ return colors.blue(input)
143
+ },
144
+ pid (input, _key, _log, { colors }) {
145
+ return colors.red(input)
146
+ },
147
+ hostname (input, _key, _log, { colors }) {
148
+ return colors.green(input)
149
+ },
150
+ caller (input, _key, _log, { colors }) {
151
+ return colors.cyan(input)
152
+ }
153
+ }
154
+ const log = { name: 'foo', pid: '1234', hostname: 'bar', caller: 'baz' }
155
+ const colorizer = getColorizer(true)
156
+ const context = {
157
+ customPrettifiers: prettifiers,
158
+ colorizer
159
+ }
160
+
161
+ const result = prettifyMetadata({ log, context })
162
+
163
+ const colorizedName = colorizer.colors.blue(log.name)
164
+ const colorizedPid = colorizer.colors.red(log.pid)
165
+ const colorizedHostname = colorizer.colors.green(log.hostname)
166
+ const colorizedCaller = colorizer.colors.cyan(log.caller)
167
+ const expected = `(${colorizedName}/${colorizedPid} on ${colorizedHostname}) <${colorizedCaller}>`
168
+
169
+ t.assert.strictEqual(result, expected)
170
+ })
@@ -0,0 +1,115 @@
1
+ 'use strict'
2
+
3
+ module.exports = prettifyObject
4
+
5
+ const {
6
+ LOGGER_KEYS
7
+ } = require('../constants')
8
+
9
+ const stringifySafe = require('fast-safe-stringify')
10
+ const joinLinesWithIndentation = require('./join-lines-with-indentation')
11
+ const prettifyError = require('./prettify-error')
12
+ const stripUnsafeControlChars = require('./strip-unsafe-control-chars')
13
+
14
+ /**
15
+ * @typedef {object} PrettifyObjectParams
16
+ * @property {object} log The object to prettify.
17
+ * @property {boolean} [excludeLoggerKeys] Indicates if known logger specific
18
+ * keys should be excluded from prettification. Default: `true`.
19
+ * @property {string[]} [skipKeys] A set of object keys to exclude from the
20
+ * * prettified result. Default: `[]`.
21
+ * @property {PrettyContext} context The context object built from parsing
22
+ * the options.
23
+ */
24
+
25
+ /**
26
+ * Prettifies a standard object. Special care is taken when processing the object
27
+ * to handle child objects that are attached to keys known to contain error
28
+ * objects.
29
+ *
30
+ * @param {PrettifyObjectParams} input
31
+ *
32
+ * @returns {string} The prettified string. This can be as little as `''` if
33
+ * there was nothing to prettify.
34
+ */
35
+ function prettifyObject ({
36
+ log,
37
+ excludeLoggerKeys = true,
38
+ skipKeys = [],
39
+ context
40
+ }) {
41
+ const {
42
+ EOL: eol,
43
+ IDENT: ident,
44
+ customPrettifiers,
45
+ errorLikeObjectKeys: errorLikeKeys,
46
+ objectColorizer,
47
+ singleLine,
48
+ colorizer
49
+ } = context
50
+ const keysToIgnore = [].concat(skipKeys)
51
+
52
+ /* istanbul ignore else */
53
+ if (excludeLoggerKeys === true) Array.prototype.push.apply(keysToIgnore, LOGGER_KEYS)
54
+
55
+ let result = ''
56
+
57
+ // Split object keys into two categories: error and non-error
58
+ const { plain, errors } = Object.entries(log).reduce(({ plain, errors }, [k, v]) => {
59
+ if (keysToIgnore.includes(k) === false) {
60
+ // Pre-apply custom prettifiers, because all 3 cases below will need this
61
+ const pretty = typeof customPrettifiers[k] === 'function'
62
+ ? customPrettifiers[k](v, k, log, { colors: colorizer.colors })
63
+ : v
64
+ if (errorLikeKeys.includes(k)) {
65
+ errors[k] = pretty
66
+ } else {
67
+ plain[k] = pretty
68
+ }
69
+ }
70
+ return { plain, errors }
71
+ }, { plain: {}, errors: {} })
72
+
73
+ if (singleLine) {
74
+ // Stringify the entire object as a single JSON line
75
+ /* istanbul ignore else */
76
+ if (Object.keys(plain).length > 0) {
77
+ result += objectColorizer.greyMessage(stringifySafe(plain))
78
+ }
79
+ result += eol
80
+ // Avoid printing the escape character on escaped backslashes.
81
+ result = result.replace(/\\\\/gi, '\\')
82
+ } else {
83
+ // Put each object entry on its own line
84
+ Object.entries(plain).forEach(([keyName, keyValue]) => {
85
+ // custom prettifiers are already applied above, so we can skip it now
86
+ let lines = typeof customPrettifiers[keyName] === 'function'
87
+ ? keyValue
88
+ : stringifySafe(keyValue, null, 2)
89
+
90
+ if (lines === undefined) return
91
+
92
+ // Avoid printing the escape character on escaped backslashes.
93
+ lines = lines.replace(/\\\\/gi, '\\')
94
+
95
+ const joinedLines = joinLinesWithIndentation({ input: lines, ident, eol })
96
+ const safeKeyName = stripUnsafeControlChars(keyName)
97
+ result += `${ident}${objectColorizer.property(safeKeyName)}:${joinedLines.startsWith(eol) ? '' : ' '}${joinedLines}${eol}`
98
+ })
99
+ }
100
+
101
+ // Errors
102
+ Object.entries(errors).forEach(([keyName, keyValue]) => {
103
+ // custom prettifiers are already applied above, so we can skip it now
104
+ const hasCustomPrettifier = typeof customPrettifiers[keyName] === 'function'
105
+ const lines = hasCustomPrettifier
106
+ ? keyValue
107
+ : stringifySafe(keyValue, null, 2)
108
+
109
+ if (lines === undefined) return
110
+
111
+ result += prettifyError({ keyName, lines, eol, ident, sanitizeStack: !hasCustomPrettifier })
112
+ })
113
+
114
+ return result
115
+ }
@@ -0,0 +1,217 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('node:test')
4
+ const stringifySafe = require('fast-safe-stringify')
5
+ const colors = require('../colors')
6
+ const prettifyObject = require('./prettify-object')
7
+ const {
8
+ ERROR_LIKE_KEYS
9
+ } = require('../constants')
10
+
11
+ const context = {
12
+ EOL: '\n',
13
+ IDENT: ' ',
14
+ customPrettifiers: {},
15
+ errorLikeObjectKeys: ERROR_LIKE_KEYS,
16
+ objectColorizer: colors(),
17
+ singleLine: false,
18
+ colorizer: colors()
19
+ }
20
+
21
+ test('returns empty string if no properties present', t => {
22
+ const str = prettifyObject({ log: {}, context })
23
+ t.assert.strictEqual(str, '')
24
+ })
25
+
26
+ test('works with single level properties', t => {
27
+ const str = prettifyObject({ log: { foo: 'bar' }, context })
28
+ t.assert.strictEqual(str, ' foo: "bar"\n')
29
+ })
30
+
31
+ test('strips unsafe control characters from property names', t => {
32
+ const str = prettifyObject({ log: { 'foo\u001B[2J\u009B[3J': 'bar' }, context })
33
+ t.assert.strictEqual(str, ' foo[2J[3J: "bar"\n')
34
+ })
35
+
36
+ test('works with multiple level properties', t => {
37
+ const str = prettifyObject({ log: { foo: { bar: 'baz' } }, context })
38
+ t.assert.strictEqual(str, ' foo: {\n "bar": "baz"\n }\n')
39
+ })
40
+
41
+ test('skips specified keys', t => {
42
+ const str = prettifyObject({
43
+ log: { foo: 'bar', hello: 'world' },
44
+ skipKeys: ['foo'],
45
+ context
46
+ })
47
+ t.assert.strictEqual(str, ' hello: "world"\n')
48
+ })
49
+
50
+ test('ignores predefined keys', t => {
51
+ const str = prettifyObject({ log: { foo: 'bar', pid: 12345 }, context })
52
+ t.assert.strictEqual(str, ' foo: "bar"\n')
53
+ })
54
+
55
+ test('ignores escaped backslashes in string values', t => {
56
+ const str = prettifyObject({ log: { foo_regexp: '\\[^\\w\\s]\\' }, context })
57
+ t.assert.strictEqual(str, ' foo_regexp: "\\[^\\w\\s]\\"\n')
58
+ })
59
+
60
+ test('ignores escaped backslashes in string values (singleLine option)', t => {
61
+ const str = prettifyObject({
62
+ log: { foo_regexp: '\\[^\\w\\s]\\' },
63
+ context: {
64
+ ...context,
65
+ singleLine: true
66
+ }
67
+ })
68
+ t.assert.strictEqual(str, '{"foo_regexp":"\\[^\\w\\s]\\"}\n')
69
+ })
70
+
71
+ test('works with error props', t => {
72
+ const err = Error('Something went wrong')
73
+ const serializedError = {
74
+ message: err.message,
75
+ stack: err.stack
76
+ }
77
+ const str = prettifyObject({ log: { error: serializedError }, context })
78
+ t.assert.ok(str.startsWith(' error:'))
79
+ t.assert.ok(str.includes(' "message": "Something went wrong",'))
80
+ t.assert.ok(str.includes(' Error: Something went wrong'))
81
+ })
82
+
83
+ test('customPrettifiers gets applied', t => {
84
+ const customPrettifiers = {
85
+ foo: v => v.toUpperCase()
86
+ }
87
+ const str = prettifyObject({
88
+ log: { foo: 'foo' },
89
+ context: {
90
+ ...context,
91
+ customPrettifiers
92
+ }
93
+ })
94
+ t.assert.strictEqual(str.startsWith(' foo: FOO'), true)
95
+ })
96
+
97
+ test('skips lines omitted by customPrettifiers', t => {
98
+ const customPrettifiers = {
99
+ foo: () => { return undefined }
100
+ }
101
+ const str = prettifyObject({
102
+ log: { foo: 'foo', bar: 'bar' },
103
+ context: {
104
+ ...context,
105
+ customPrettifiers
106
+ }
107
+ })
108
+ t.assert.strictEqual(str.includes('bar: "bar"'), true)
109
+ t.assert.strictEqual(str.includes('foo: "foo"'), false)
110
+ })
111
+
112
+ test('joined lines omits starting eol', t => {
113
+ const str = prettifyObject({
114
+ log: { msg: 'doing work', calls: ['step 1', 'step 2', 'step 3'], level: 30 },
115
+ context: {
116
+ ...context,
117
+ IDENT: '',
118
+ customPrettifiers: {
119
+ calls: val => '\n' + val.map(it => ' ' + it).join('\n')
120
+ }
121
+ }
122
+ })
123
+ t.assert.strictEqual(str, [
124
+ 'msg: "doing work"',
125
+ 'calls:',
126
+ ' step 1',
127
+ ' step 2',
128
+ ' step 3',
129
+ ''
130
+ ].join('\n'))
131
+ })
132
+
133
+ test('errors skips prettifiers', t => {
134
+ const customPrettifiers = {
135
+ err: () => { return 'is_err' }
136
+ }
137
+ const str = prettifyObject({
138
+ log: { err: Error('boom') },
139
+ context: {
140
+ ...context,
141
+ customPrettifiers
142
+ }
143
+ })
144
+ t.assert.strictEqual(str.includes('err: is_err'), true)
145
+ })
146
+
147
+ test('preserves control characters produced by a custom error prettifier', t => {
148
+ const colorizer = colors(true)
149
+ const customPrettifiers = {
150
+ err: (_value, _key, _log, { colors }) => stringifySafe({
151
+ stack: colors.red('Error: boom')
152
+ }, null, 2)
153
+ }
154
+ const str = prettifyObject({
155
+ log: { err: Error('boom') },
156
+ context: {
157
+ ...context,
158
+ colorizer,
159
+ customPrettifiers
160
+ }
161
+ })
162
+ t.assert.strictEqual(str.includes(colorizer.colors.red('Error: boom')), true)
163
+ })
164
+
165
+ test('errors skips prettifying if no lines are present', t => {
166
+ const customPrettifiers = {
167
+ err: () => { return undefined }
168
+ }
169
+ const str = prettifyObject({
170
+ log: { err: Error('boom') },
171
+ context: {
172
+ ...context,
173
+ customPrettifiers
174
+ }
175
+ })
176
+ t.assert.strictEqual(str, '')
177
+ })
178
+
179
+ test('works with single level properties', t => {
180
+ const colorizer = colors(true)
181
+ const str = prettifyObject({
182
+ log: { foo: 'bar' },
183
+ context: {
184
+ ...context,
185
+ objectColorizer: colorizer,
186
+ colorizer
187
+ }
188
+ })
189
+ t.assert.strictEqual(str, ` ${colorizer.colors.magenta('foo')}: "bar"\n`)
190
+ })
191
+
192
+ test('works with customColors', t => {
193
+ const colorizer = colors(true, [])
194
+ t.assert.doesNotThrow(() => {
195
+ prettifyObject({
196
+ log: { foo: 'bar' },
197
+ context: {
198
+ ...context,
199
+ objectColorizer: colorizer,
200
+ colorizer
201
+ }
202
+ })
203
+ })
204
+ })
205
+
206
+ test('customColors gets applied', t => {
207
+ const colorizer = colors(true, [['property', 'green']])
208
+ const str = prettifyObject({
209
+ log: { foo: 'bar' },
210
+ context: {
211
+ ...context,
212
+ objectColorizer: colorizer,
213
+ colorizer
214
+ }
215
+ })
216
+ t.assert.strictEqual(str, ` ${colorizer.colors.green('foo')}: "bar"\n`)
217
+ })
@@ -0,0 +1,43 @@
1
+ 'use strict'
2
+
3
+ module.exports = prettifyTime
4
+
5
+ const formatTime = require('./format-time')
6
+ const stripUnsafeControlChars = require('./strip-unsafe-control-chars')
7
+
8
+ /**
9
+ * @typedef {object} PrettifyTimeParams
10
+ * @property {object} log The log object with the timestamp to be prettified.
11
+ * @property {PrettyContext} context The context object built from parsing
12
+ * the options.
13
+ */
14
+
15
+ /**
16
+ * Prettifies a timestamp if the given `log` has either `time`, `timestamp` or custom specified timestamp
17
+ * property.
18
+ *
19
+ * @param {PrettifyTimeParams} input
20
+ *
21
+ * @returns {undefined|string} If a timestamp property cannot be found then
22
+ * `undefined` is returned. Otherwise, the prettified time is returned as a
23
+ * string.
24
+ */
25
+ function prettifyTime ({ log, context }) {
26
+ const {
27
+ timestampKey,
28
+ translateTime: translateFormat
29
+ } = context
30
+ const prettifier = context.customPrettifiers?.time
31
+ let time = null
32
+
33
+ if (timestampKey in log) {
34
+ time = log[timestampKey]
35
+ } else if ('timestamp' in log) {
36
+ time = log.timestamp
37
+ }
38
+
39
+ if (time === null) return undefined
40
+ const output = translateFormat ? formatTime(time, translateFormat) : time
41
+
42
+ return prettifier ? prettifier(output) : `[${stripUnsafeControlChars(output)}]`
43
+ }