@wbce/projen-d9 0.0.27 → 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 (422) hide show
  1. package/.jsii +185 -46
  2. package/API.md +153 -37
  3. package/CHANGELOG.md +20 -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/.prettierignore +1 -0
  137. package/node_modules/pino/CNAME +1 -0
  138. package/node_modules/pino/CONTRIBUTING.md +34 -0
  139. package/node_modules/pino/LICENSE +21 -0
  140. package/node_modules/pino/README.md +177 -0
  141. package/node_modules/pino/SECURITY.md +103 -0
  142. package/node_modules/pino/benchmarks/basic.bench.js +95 -0
  143. package/node_modules/pino/benchmarks/child-child.bench.js +52 -0
  144. package/node_modules/pino/benchmarks/child-creation.bench.js +73 -0
  145. package/node_modules/pino/benchmarks/child.bench.js +62 -0
  146. package/node_modules/pino/benchmarks/deep-object.bench.js +88 -0
  147. package/node_modules/pino/benchmarks/formatters.bench.js +50 -0
  148. package/node_modules/pino/benchmarks/internal/custom-levels.js +67 -0
  149. package/node_modules/pino/benchmarks/internal/just-pino-heavy.bench.js +76 -0
  150. package/node_modules/pino/benchmarks/internal/just-pino.bench.js +182 -0
  151. package/node_modules/pino/benchmarks/internal/parent-vs-child.bench.js +75 -0
  152. package/node_modules/pino/benchmarks/internal/redact.bench.js +86 -0
  153. package/node_modules/pino/benchmarks/long-string.bench.js +81 -0
  154. package/node_modules/pino/benchmarks/multi-arg.bench.js +193 -0
  155. package/node_modules/pino/benchmarks/multistream.js +98 -0
  156. package/node_modules/pino/benchmarks/object.bench.js +82 -0
  157. package/node_modules/pino/benchmarks/utils/generate-benchmark-doc.js +36 -0
  158. package/node_modules/pino/benchmarks/utils/runbench.js +138 -0
  159. package/node_modules/pino/benchmarks/utils/wrap-log-level.js +55 -0
  160. package/node_modules/pino/bin.js +6 -0
  161. package/node_modules/pino/browser.js +607 -0
  162. package/node_modules/pino/build/sync-version.js +25 -0
  163. package/node_modules/pino/docs/api.md +1664 -0
  164. package/node_modules/pino/docs/asynchronous.md +55 -0
  165. package/node_modules/pino/docs/benchmarks.md +55 -0
  166. package/node_modules/pino/docs/browser.md +341 -0
  167. package/node_modules/pino/docs/bundling.md +40 -0
  168. package/node_modules/pino/docs/child-loggers.md +116 -0
  169. package/node_modules/pino/docs/diagnostics.md +16 -0
  170. package/node_modules/pino/docs/ecosystem.md +87 -0
  171. package/node_modules/pino/docs/help.md +353 -0
  172. package/node_modules/pino/docs/lts.md +93 -0
  173. package/node_modules/pino/docs/pretty.md +38 -0
  174. package/node_modules/pino/docs/redaction.md +130 -0
  175. package/node_modules/pino/docs/transports.md +1447 -0
  176. package/node_modules/pino/docs/web.md +306 -0
  177. package/node_modules/pino/eslint.config.js +36 -0
  178. package/node_modules/pino/examples/basic.js +43 -0
  179. package/node_modules/pino/examples/transport.js +68 -0
  180. package/node_modules/pino/favicon.ico +0 -0
  181. package/node_modules/pino/file.js +12 -0
  182. package/node_modules/pino/inc-version.sh +42 -0
  183. package/node_modules/pino/index.html +55 -0
  184. package/node_modules/pino/lib/caller.js +40 -0
  185. package/node_modules/pino/lib/constants.js +28 -0
  186. package/node_modules/pino/lib/deprecations.js +8 -0
  187. package/node_modules/pino/lib/levels.js +241 -0
  188. package/node_modules/pino/lib/meta.js +3 -0
  189. package/node_modules/pino/lib/multistream.js +211 -0
  190. package/node_modules/pino/lib/proto.js +256 -0
  191. package/node_modules/pino/lib/redaction.js +119 -0
  192. package/node_modules/pino/lib/symbols.js +76 -0
  193. package/node_modules/pino/lib/time.js +39 -0
  194. package/node_modules/pino/lib/tools.js +427 -0
  195. package/node_modules/pino/lib/transport-stream.js +56 -0
  196. package/node_modules/pino/lib/transport.js +302 -0
  197. package/node_modules/pino/lib/worker.js +197 -0
  198. package/node_modules/pino/package.json +112 -0
  199. package/node_modules/pino/pino.d.ts +881 -0
  200. package/node_modules/pino/pino.js +259 -0
  201. package/node_modules/pino/test/basic.test.js +952 -0
  202. package/node_modules/pino/test/broken-pipe.test.js +59 -0
  203. package/node_modules/pino/test/browser-bindings.test.js +114 -0
  204. package/node_modules/pino/test/browser-child.test.js +132 -0
  205. package/node_modules/pino/test/browser-disabled.test.js +87 -0
  206. package/node_modules/pino/test/browser-early-console-freeze.test.js +12 -0
  207. package/node_modules/pino/test/browser-is-level-enabled.test.js +101 -0
  208. package/node_modules/pino/test/browser-levels.test.js +241 -0
  209. package/node_modules/pino/test/browser-redaction.test.js +264 -0
  210. package/node_modules/pino/test/browser-serializers.test.js +352 -0
  211. package/node_modules/pino/test/browser-set-bindings.test.js +99 -0
  212. package/node_modules/pino/test/browser-timestamp.test.js +88 -0
  213. package/node_modules/pino/test/browser-transmit.test.js +417 -0
  214. package/node_modules/pino/test/browser.test.js +698 -0
  215. package/node_modules/pino/test/caller.test.js +20 -0
  216. package/node_modules/pino/test/complex-objects.test.js +36 -0
  217. package/node_modules/pino/test/crlf.test.js +34 -0
  218. package/node_modules/pino/test/custom-levels.test.js +267 -0
  219. package/node_modules/pino/test/diagnostics.test.js +107 -0
  220. package/node_modules/pino/test/error-key.test.js +37 -0
  221. package/node_modules/pino/test/error.test.js +403 -0
  222. package/node_modules/pino/test/escaping.test.js +110 -0
  223. package/node_modules/pino/test/esm/esm.mjs +14 -0
  224. package/node_modules/pino/test/esm/index.test.js +21 -0
  225. package/node_modules/pino/test/esm/named-exports.mjs +29 -0
  226. package/node_modules/pino/test/exit.test.js +79 -0
  227. package/node_modules/pino/test/fixtures/broken-pipe/basic.js +9 -0
  228. package/node_modules/pino/test/fixtures/broken-pipe/destination.js +10 -0
  229. package/node_modules/pino/test/fixtures/broken-pipe/syncfalse.js +12 -0
  230. package/node_modules/pino/test/fixtures/caller-loop.js +6 -0
  231. package/node_modules/pino/test/fixtures/console-transport.js +13 -0
  232. package/node_modules/pino/test/fixtures/crashing-transport.js +13 -0
  233. package/node_modules/pino/test/fixtures/default-exit.js +8 -0
  234. package/node_modules/pino/test/fixtures/destination-exit.js +8 -0
  235. package/node_modules/pino/test/fixtures/eval/index.js +13 -0
  236. package/node_modules/pino/test/fixtures/eval/node_modules/14-files.js +3 -0
  237. package/node_modules/pino/test/fixtures/eval/node_modules/2-files.js +3 -0
  238. package/node_modules/pino/test/fixtures/eval/node_modules/file1.js +5 -0
  239. package/node_modules/pino/test/fixtures/eval/node_modules/file10.js +5 -0
  240. package/node_modules/pino/test/fixtures/eval/node_modules/file11.js +5 -0
  241. package/node_modules/pino/test/fixtures/eval/node_modules/file12.js +5 -0
  242. package/node_modules/pino/test/fixtures/eval/node_modules/file13.js +5 -0
  243. package/node_modules/pino/test/fixtures/eval/node_modules/file14.js +11 -0
  244. package/node_modules/pino/test/fixtures/eval/node_modules/file2.js +5 -0
  245. package/node_modules/pino/test/fixtures/eval/node_modules/file3.js +5 -0
  246. package/node_modules/pino/test/fixtures/eval/node_modules/file4.js +5 -0
  247. package/node_modules/pino/test/fixtures/eval/node_modules/file5.js +5 -0
  248. package/node_modules/pino/test/fixtures/eval/node_modules/file6.js +5 -0
  249. package/node_modules/pino/test/fixtures/eval/node_modules/file7.js +5 -0
  250. package/node_modules/pino/test/fixtures/eval/node_modules/file8.js +5 -0
  251. package/node_modules/pino/test/fixtures/eval/node_modules/file9.js +5 -0
  252. package/node_modules/pino/test/fixtures/noop-transport.js +10 -0
  253. package/node_modules/pino/test/fixtures/pretty/null-prototype.js +8 -0
  254. package/node_modules/pino/test/fixtures/stdout-hack-protection.js +11 -0
  255. package/node_modules/pino/test/fixtures/syncfalse-child.js +6 -0
  256. package/node_modules/pino/test/fixtures/syncfalse-exit.js +9 -0
  257. package/node_modules/pino/test/fixtures/syncfalse-flush-exit.js +10 -0
  258. package/node_modules/pino/test/fixtures/syncfalse.js +6 -0
  259. package/node_modules/pino/test/fixtures/syntax-error-esm.mjs +2 -0
  260. package/node_modules/pino/test/fixtures/to-file-transport-with-transform.js +20 -0
  261. package/node_modules/pino/test/fixtures/to-file-transport.js +13 -0
  262. package/node_modules/pino/test/fixtures/to-file-transport.mjs +8 -0
  263. package/node_modules/pino/test/fixtures/transport/index.js +12 -0
  264. package/node_modules/pino/test/fixtures/transport/package.json +5 -0
  265. package/node_modules/pino/test/fixtures/transport-exit-immediately-with-async-dest.js +16 -0
  266. package/node_modules/pino/test/fixtures/transport-exit-immediately.js +11 -0
  267. package/node_modules/pino/test/fixtures/transport-exit-on-ready.js +12 -0
  268. package/node_modules/pino/test/fixtures/transport-invalid-node-options.js +26 -0
  269. package/node_modules/pino/test/fixtures/transport-main.js +9 -0
  270. package/node_modules/pino/test/fixtures/transport-many-lines.js +29 -0
  271. package/node_modules/pino/test/fixtures/transport-preload-main.mjs +13 -0
  272. package/node_modules/pino/test/fixtures/transport-preload.mjs +13 -0
  273. package/node_modules/pino/test/fixtures/transport-string-stdout.js +9 -0
  274. package/node_modules/pino/test/fixtures/transport-transform.js +21 -0
  275. package/node_modules/pino/test/fixtures/transport-uses-pino-config.js +33 -0
  276. package/node_modules/pino/test/fixtures/transport-with-on-exit.js +12 -0
  277. package/node_modules/pino/test/fixtures/transport-worker-data.js +19 -0
  278. package/node_modules/pino/test/fixtures/transport-worker-name.js +24 -0
  279. package/node_modules/pino/test/fixtures/transport-worker.js +15 -0
  280. package/node_modules/pino/test/fixtures/transport-wrong-export-type.js +3 -0
  281. package/node_modules/pino/test/fixtures/ts/to-file-transport-native.mts +15 -0
  282. package/node_modules/pino/test/fixtures/ts/to-file-transport-with-transform.ts +18 -0
  283. package/node_modules/pino/test/fixtures/ts/to-file-transport.ts +11 -0
  284. package/node_modules/pino/test/fixtures/ts/transpile.cjs +36 -0
  285. package/node_modules/pino/test/fixtures/ts/transport-exit-immediately-with-async-dest.ts +15 -0
  286. package/node_modules/pino/test/fixtures/ts/transport-exit-immediately.ts +10 -0
  287. package/node_modules/pino/test/fixtures/ts/transport-exit-on-ready.ts +11 -0
  288. package/node_modules/pino/test/fixtures/ts/transport-main.ts +8 -0
  289. package/node_modules/pino/test/fixtures/ts/transport-string-stdout.ts +8 -0
  290. package/node_modules/pino/test/fixtures/ts/transport-worker.ts +14 -0
  291. package/node_modules/pino/test/formatters.test.js +364 -0
  292. package/node_modules/pino/test/helper.d.ts +4 -0
  293. package/node_modules/pino/test/helper.js +159 -0
  294. package/node_modules/pino/test/hooks.test.js +114 -0
  295. package/node_modules/pino/test/http.test.js +214 -0
  296. package/node_modules/pino/test/internals/version.test.js +17 -0
  297. package/node_modules/pino/test/is-level-enabled.test.js +179 -0
  298. package/node_modules/pino/test/jest/basic.spec.js +10 -0
  299. package/node_modules/pino/test/levels.test.js +810 -0
  300. package/node_modules/pino/test/metadata.test.js +120 -0
  301. package/node_modules/pino/test/mixin-merge-strategy.test.js +57 -0
  302. package/node_modules/pino/test/mixin.test.js +241 -0
  303. package/node_modules/pino/test/multistream.test.js +793 -0
  304. package/node_modules/pino/test/redact.test.js +923 -0
  305. package/node_modules/pino/test/serializers.test.js +257 -0
  306. package/node_modules/pino/test/smoke.js +59 -0
  307. package/node_modules/pino/test/stdout-protection.test.js +41 -0
  308. package/node_modules/pino/test/syncfalse.test.js +186 -0
  309. package/node_modules/pino/test/timestamp-nano.test.js +37 -0
  310. package/node_modules/pino/test/timestamp.test.js +124 -0
  311. package/node_modules/pino/test/transport/big.test.js +42 -0
  312. package/node_modules/pino/test/transport/bundlers-support.test.js +99 -0
  313. package/node_modules/pino/test/transport/caller.test.js +24 -0
  314. package/node_modules/pino/test/transport/core.test.js +818 -0
  315. package/node_modules/pino/test/transport/core.transpiled.test.ts +114 -0
  316. package/node_modules/pino/test/transport/crash.test.js +36 -0
  317. package/node_modules/pino/test/transport/module-link.test.js +241 -0
  318. package/node_modules/pino/test/transport/native-type-stripping.test.mjs +151 -0
  319. package/node_modules/pino/test/transport/node-options.test.js +116 -0
  320. package/node_modules/pino/test/transport/pipeline.test.js +137 -0
  321. package/node_modules/pino/test/transport/preload.test.js +54 -0
  322. package/node_modules/pino/test/transport/repl.test.js +15 -0
  323. package/node_modules/pino/test/transport/sync-false.test.js +79 -0
  324. package/node_modules/pino/test/transport/sync-true.test.js +57 -0
  325. package/node_modules/pino/test/transport/targets.test.js +48 -0
  326. package/node_modules/pino/test/transport/uses-pino-config.test.js +166 -0
  327. package/node_modules/pino/test/transport-stream.test.js +40 -0
  328. package/node_modules/pino/test/types/pino-import.tst.cts +30 -0
  329. package/node_modules/pino/test/types/pino-import.tst.js +73 -0
  330. package/node_modules/pino/test/types/pino-multistream.tst.ts +49 -0
  331. package/node_modules/pino/test/types/pino-top-export.tst.ts +32 -0
  332. package/node_modules/pino/test/types/pino-transport.tst.ts +171 -0
  333. package/node_modules/pino/test/types/pino-type-only.tst.ts +77 -0
  334. package/node_modules/pino/test/types/pino.ts +98 -0
  335. package/node_modules/pino/test/types/pino.tst.ts +681 -0
  336. package/node_modules/pino/test/types/tsconfig.json +10 -0
  337. package/node_modules/pino/tsconfig.json +14 -0
  338. package/node_modules/pino-pretty/.borp.yaml +6 -0
  339. package/node_modules/pino-pretty/.editorconfig +13 -0
  340. package/node_modules/pino-pretty/.github/dependabot.yml +13 -0
  341. package/node_modules/pino-pretty/.github/workflows/ci.yml +83 -0
  342. package/node_modules/pino-pretty/LICENSE +21 -0
  343. package/node_modules/pino-pretty/Readme.md +425 -0
  344. package/node_modules/pino-pretty/SECURITY.md +146 -0
  345. package/node_modules/pino-pretty/benchmark.js +105 -0
  346. package/node_modules/pino-pretty/bin.js +113 -0
  347. package/node_modules/pino-pretty/demo.png +0 -0
  348. package/node_modules/pino-pretty/docs/help.md +24 -0
  349. package/node_modules/pino-pretty/eslint.config.js +5 -0
  350. package/node_modules/pino-pretty/help/help.txt +68 -0
  351. package/node_modules/pino-pretty/index.d.ts +227 -0
  352. package/node_modules/pino-pretty/index.js +234 -0
  353. package/node_modules/pino-pretty/lib/colors.js +134 -0
  354. package/node_modules/pino-pretty/lib/colors.test.js +132 -0
  355. package/node_modules/pino-pretty/lib/constants.js +55 -0
  356. package/node_modules/pino-pretty/lib/pretty.js +171 -0
  357. package/node_modules/pino-pretty/lib/utils/build-safe-sonic-boom.js +69 -0
  358. package/node_modules/pino-pretty/lib/utils/build-safe-sonic-boom.test.js +84 -0
  359. package/node_modules/pino-pretty/lib/utils/create-date.js +26 -0
  360. package/node_modules/pino-pretty/lib/utils/create-date.test.js +20 -0
  361. package/node_modules/pino-pretty/lib/utils/delete-log-property.js +28 -0
  362. package/node_modules/pino-pretty/lib/utils/delete-log-property.test.js +31 -0
  363. package/node_modules/pino-pretty/lib/utils/filter-log.js +99 -0
  364. package/node_modules/pino-pretty/lib/utils/filter-log.test.js +265 -0
  365. package/node_modules/pino-pretty/lib/utils/format-time.js +66 -0
  366. package/node_modules/pino-pretty/lib/utils/format-time.test.js +71 -0
  367. package/node_modules/pino-pretty/lib/utils/get-level-label-data.js +29 -0
  368. package/node_modules/pino-pretty/lib/utils/get-property-value.js +30 -0
  369. package/node_modules/pino-pretty/lib/utils/get-property-value.test.js +31 -0
  370. package/node_modules/pino-pretty/lib/utils/handle-custom-levels-names-opts.js +38 -0
  371. package/node_modules/pino-pretty/lib/utils/handle-custom-levels-names-opts.test.js +45 -0
  372. package/node_modules/pino-pretty/lib/utils/handle-custom-levels-opts.js +39 -0
  373. package/node_modules/pino-pretty/lib/utils/handle-custom-levels-opts.test.js +47 -0
  374. package/node_modules/pino-pretty/lib/utils/index.js +108 -0
  375. package/node_modules/pino-pretty/lib/utils/index.test.js +37 -0
  376. package/node_modules/pino-pretty/lib/utils/interpret-conditionals.js +41 -0
  377. package/node_modules/pino-pretty/lib/utils/interpret-conditionals.test.js +84 -0
  378. package/node_modules/pino-pretty/lib/utils/is-object.js +7 -0
  379. package/node_modules/pino-pretty/lib/utils/is-object.test.js +10 -0
  380. package/node_modules/pino-pretty/lib/utils/is-valid-date.js +14 -0
  381. package/node_modules/pino-pretty/lib/utils/is-valid-date.test.js +16 -0
  382. package/node_modules/pino-pretty/lib/utils/join-lines-with-indentation.js +29 -0
  383. package/node_modules/pino-pretty/lib/utils/join-lines-with-indentation.test.js +16 -0
  384. package/node_modules/pino-pretty/lib/utils/noop.js +3 -0
  385. package/node_modules/pino-pretty/lib/utils/noop.test.js +12 -0
  386. package/node_modules/pino-pretty/lib/utils/parse-factory-options.js +171 -0
  387. package/node_modules/pino-pretty/lib/utils/prettify-error-log.js +76 -0
  388. package/node_modules/pino-pretty/lib/utils/prettify-error-log.test.js +143 -0
  389. package/node_modules/pino-pretty/lib/utils/prettify-error.js +54 -0
  390. package/node_modules/pino-pretty/lib/utils/prettify-error.test.js +25 -0
  391. package/node_modules/pino-pretty/lib/utils/prettify-level.js +41 -0
  392. package/node_modules/pino-pretty/lib/utils/prettify-level.test.js +70 -0
  393. package/node_modules/pino-pretty/lib/utils/prettify-message.js +65 -0
  394. package/node_modules/pino-pretty/lib/utils/prettify-message.test.js +287 -0
  395. package/node_modules/pino-pretty/lib/utils/prettify-metadata.js +75 -0
  396. package/node_modules/pino-pretty/lib/utils/prettify-metadata.test.js +170 -0
  397. package/node_modules/pino-pretty/lib/utils/prettify-object.js +115 -0
  398. package/node_modules/pino-pretty/lib/utils/prettify-object.test.js +217 -0
  399. package/node_modules/pino-pretty/lib/utils/prettify-time.js +43 -0
  400. package/node_modules/pino-pretty/lib/utils/prettify-time.test.js +264 -0
  401. package/node_modules/pino-pretty/lib/utils/split-property-key.js +49 -0
  402. package/node_modules/pino-pretty/lib/utils/split-property-key.test.js +29 -0
  403. package/node_modules/pino-pretty/lib/utils/strip-unsafe-control-chars.js +18 -0
  404. package/node_modules/pino-pretty/lib/utils/strip-unsafe-control-chars.test.js +9 -0
  405. package/node_modules/pino-pretty/package.json +64 -0
  406. package/node_modules/pino-pretty/test/basic.test.js +1305 -0
  407. package/node_modules/pino-pretty/test/boolean-options.test.js +228 -0
  408. package/node_modules/pino-pretty/test/cli-rc.test.js +275 -0
  409. package/node_modules/pino-pretty/test/cli.test.js +360 -0
  410. package/node_modules/pino-pretty/test/crlf.test.js +33 -0
  411. package/node_modules/pino-pretty/test/error-objects.test.js +494 -0
  412. package/node_modules/pino-pretty/test/example/example.js +33 -0
  413. package/node_modules/pino-pretty/test/helper.js +19 -0
  414. package/node_modules/pino-pretty/test/types/exports.tst.ts +15 -0
  415. package/node_modules/pino-pretty/test/types/pino-pretty.tst.ts +140 -0
  416. package/node_modules/pino-pretty/test/types/tsconfig.json +9 -0
  417. package/package.json +14 -7
  418. package/lib/cli/commands/init.d.ts +0 -1
  419. package/lib/cli/commands/init.js +0 -8
  420. package/lib/cli/commands/save/draft.js +0 -2
  421. package/node_modules/@types/node/globals.global.d.ts +0 -1
  422. /package/{lib/cli/commands/save/draft.d.ts → node_modules/pino/.nojekyll} +0 -0
@@ -0,0 +1,494 @@
1
+ 'use strict'
2
+
3
+ process.env.TZ = 'UTC'
4
+
5
+ const { Writable } = require('node:stream')
6
+ const { describe, test, afterEach, beforeEach } = require('node:test')
7
+ const pino = require('pino')
8
+ const semver = require('semver')
9
+ const serializers = pino.stdSerializers
10
+ const pinoPretty = require('../')
11
+ const _prettyFactory = pinoPretty.prettyFactory
12
+
13
+ function prettyFactory (opts) {
14
+ if (!opts) {
15
+ opts = { colorize: false }
16
+ } else if (!Object.prototype.hasOwnProperty.call(opts, 'colorize')) {
17
+ opts.colorize = false
18
+ }
19
+ return _prettyFactory(opts)
20
+ }
21
+
22
+ // All dates are computed from 'Fri, 30 Mar 2018 17:35:28 GMT'
23
+ const epoch = 1522431328992
24
+ const formattedEpoch = '17:35:28.992'
25
+ const pid = process.pid
26
+
27
+ describe('error like objects tests', () => {
28
+ beforeEach(() => {
29
+ Date.originalNow = Date.now
30
+ Date.now = () => epoch
31
+ })
32
+ afterEach(() => {
33
+ Date.now = Date.originalNow
34
+ delete Date.originalNow
35
+ })
36
+
37
+ test('pino transform prettifies Error', (t) => {
38
+ t.plan(2)
39
+ const pretty = prettyFactory()
40
+ const err = Error('hello world')
41
+ const expected = err.stack.split('\n')
42
+ expected.unshift(err.message)
43
+
44
+ const log = pino({}, new Writable({
45
+ write (chunk, enc, cb) {
46
+ const formatted = pretty(chunk.toString())
47
+ const lines = formatted.split('\n')
48
+ t.assert.strictEqual(lines.length, expected.length + 6)
49
+ t.assert.strictEqual(lines[0], `[${formattedEpoch}] INFO (${pid}): hello world`)
50
+ cb()
51
+ }
52
+ }))
53
+
54
+ log.info(err)
55
+ })
56
+
57
+ test('errorProps recognizes user specified properties', (t) => {
58
+ t.plan(3)
59
+ const pretty = prettyFactory({ errorProps: 'statusCode,originalStack' })
60
+ const log = pino({}, new Writable({
61
+ write (chunk, enc, cb) {
62
+ const formatted = pretty(chunk.toString())
63
+ t.assert.match(formatted, /\s{4}error stack/)
64
+ t.assert.match(formatted, /"statusCode": 500/)
65
+ t.assert.match(formatted, /"originalStack": "original stack"/)
66
+ cb()
67
+ }
68
+ }))
69
+
70
+ const error = Error('error message')
71
+ error.stack = 'error stack'
72
+ error.statusCode = 500
73
+ error.originalStack = 'original stack'
74
+
75
+ log.error(error)
76
+ })
77
+
78
+ test('prettifies ignores undefined errorLikeObject', (t) => {
79
+ const pretty = prettyFactory()
80
+ pretty({ err: undefined })
81
+ pretty({ error: undefined })
82
+ })
83
+
84
+ test('prettifies Error in property within errorLikeObjectKeys', (t) => {
85
+ t.plan(8)
86
+ const pretty = prettyFactory({
87
+ errorLikeObjectKeys: ['err']
88
+ })
89
+
90
+ const err = Error('hello world')
91
+ const expected = err.stack.split('\n')
92
+ expected.unshift(err.message)
93
+
94
+ const log = pino({ serializers: { err: serializers.err } }, new Writable({
95
+ write (chunk, enc, cb) {
96
+ const formatted = pretty(chunk.toString())
97
+ const lines = formatted.split('\n')
98
+ t.assert.strictEqual(lines.length, expected.length + 6)
99
+ t.assert.strictEqual(lines[0], `[${formattedEpoch}] INFO (${pid}): hello world`)
100
+ t.assert.match(lines[1], /\s{4}err: {/)
101
+ t.assert.match(lines[2], /\s{6}"type": "Error",/)
102
+ t.assert.match(lines[3], /\s{6}"message": "hello world",/)
103
+ t.assert.match(lines[4], /\s{6}"stack":/)
104
+ t.assert.match(lines[5], /\s{6}Error: hello world/)
105
+ // Node 12 labels the test `<anonymous>`
106
+ t.assert.match(lines[6], /\s{10}at TestContext.<anonymous>/)
107
+ cb()
108
+ }
109
+ }))
110
+
111
+ log.info({ err })
112
+ })
113
+
114
+ test('prettifies Error in property with singleLine=true', (t) => {
115
+ // singleLine=true doesn't apply to errors
116
+ t.plan(8)
117
+ const pretty = prettyFactory({
118
+ singleLine: true,
119
+ errorLikeObjectKeys: ['err']
120
+ })
121
+
122
+ const err = Error('hello world')
123
+ const expected = [
124
+ '{"extra":{"a":1,"b":2}}',
125
+ err.message,
126
+ ...err.stack.split('\n')
127
+ ]
128
+
129
+ const log = pino({ serializers: { err: serializers.err } }, new Writable({
130
+ write (chunk, enc, cb) {
131
+ const formatted = pretty(chunk.toString())
132
+ const lines = formatted.split('\n')
133
+ t.assert.strictEqual(lines.length, expected.length + 5)
134
+ t.assert.strictEqual(lines[0], `[${formattedEpoch}] INFO (${pid}): hello world {"extra":{"a":1,"b":2}}`)
135
+ t.assert.match(lines[1], /\s{4}err: {/)
136
+ t.assert.match(lines[2], /\s{6}"type": "Error",/)
137
+ t.assert.match(lines[3], /\s{6}"message": "hello world",/)
138
+ t.assert.match(lines[4], /\s{6}"stack":/)
139
+ t.assert.match(lines[5], /\s{6}Error: hello world/)
140
+ // Node 12 labels the test `<anonymous>`
141
+ t.assert.match(lines[6], /\s{10}at TestContext.<anonymous>/)
142
+ cb()
143
+ }
144
+ }))
145
+
146
+ log.info({ err, extra: { a: 1, b: 2 } })
147
+ })
148
+
149
+ test('prettifies Error in property within errorLikeObjectKeys with custom function', (t) => {
150
+ t.plan(4)
151
+ const pretty = prettyFactory({
152
+ errorLikeObjectKeys: ['err'],
153
+ customPrettifiers: {
154
+ err: val => `error is ${val.message}`
155
+ }
156
+ })
157
+
158
+ const err = Error('hello world')
159
+ err.stack = 'Error: hello world\n at anonymous (C:\\project\\node_modules\\example\\index.js)'
160
+ const expected = err.stack.split('\n')
161
+ expected.unshift(err.message)
162
+
163
+ const log = pino({ serializers: { err: serializers.err } }, new Writable({
164
+ write (chunk, enc, cb) {
165
+ const formatted = pretty(chunk.toString())
166
+ const lines = formatted.split('\n')
167
+ t.assert.strictEqual(lines.length, 3)
168
+ t.assert.strictEqual(lines[0], `[${formattedEpoch}] INFO (${pid}): hello world`)
169
+ t.assert.strictEqual(lines[1], ' err: error is hello world')
170
+ t.assert.strictEqual(lines[2], '')
171
+
172
+ cb()
173
+ }
174
+ }))
175
+
176
+ log.info({ err })
177
+ })
178
+
179
+ test('prettifies Error in property within errorLikeObjectKeys when stack has escaped characters', (t) => {
180
+ t.plan(8)
181
+ const pretty = prettyFactory({
182
+ errorLikeObjectKeys: ['err']
183
+ })
184
+
185
+ const err = Error('hello world')
186
+ err.stack = 'Error: hello world\n at anonymous (C:\\project\\node_modules\\example\\index.js)'
187
+ const expected = err.stack.split('\n')
188
+ expected.unshift(err.message)
189
+
190
+ const log = pino({ serializers: { err: serializers.err } }, new Writable({
191
+ write (chunk, enc, cb) {
192
+ const formatted = pretty(chunk.toString())
193
+ const lines = formatted.split('\n')
194
+ t.assert.strictEqual(lines.length, expected.length + 6)
195
+ t.assert.strictEqual(lines[0], `[${formattedEpoch}] INFO (${pid}): hello world`)
196
+ t.assert.match(lines[1], /\s{4}err: {$/)
197
+ t.assert.match(lines[2], /\s{6}"type": "Error",$/)
198
+ t.assert.match(lines[3], /\s{6}"message": "hello world",$/)
199
+ t.assert.match(lines[4], /\s{6}"stack":$/)
200
+ t.assert.match(lines[5], /\s{10}Error: hello world$/)
201
+ t.assert.match(lines[6], /\s{10}at anonymous \(C:\\project\\node_modules\\example\\index.js\)$/)
202
+ cb()
203
+ }
204
+ }))
205
+
206
+ log.info({ err })
207
+ })
208
+
209
+ test('prettifies Error in property within errorLikeObjectKeys when stack is not the last property', (t) => {
210
+ t.plan(9)
211
+ const pretty = prettyFactory({
212
+ errorLikeObjectKeys: ['err']
213
+ })
214
+
215
+ const err = Error('hello world')
216
+ err.anotherField = 'dummy value'
217
+ const expected = err.stack.split('\n')
218
+ expected.unshift(err.message)
219
+
220
+ const log = pino({ serializers: { err: serializers.err } }, new Writable({
221
+ write (chunk, enc, cb) {
222
+ const formatted = pretty(chunk.toString())
223
+ const lines = formatted.split('\n')
224
+ t.assert.strictEqual(lines.length, expected.length + 7)
225
+ t.assert.strictEqual(lines[0], `[${formattedEpoch}] INFO (${pid}): hello world`)
226
+ t.assert.match(lines[1], /\s{4}err: {/)
227
+ t.assert.match(lines[2], /\s{6}"type": "Error",/)
228
+ t.assert.match(lines[3], /\s{6}"message": "hello world",/)
229
+ t.assert.match(lines[4], /\s{6}"stack":/)
230
+ t.assert.match(lines[5], /\s{6}Error: hello world/)
231
+ // Node 12 labels the test `<anonymous>`
232
+ t.assert.match(lines[6], /\s{10}at TestContext.<anonymous>/)
233
+ t.assert.match(lines[lines.length - 3], /\s{6}"anotherField": "dummy value"/)
234
+ cb()
235
+ }
236
+ }))
237
+
238
+ log.info({ err })
239
+ })
240
+
241
+ test('errorProps flag with "*" (print all nested props)', function (t) {
242
+ const pretty = prettyFactory({ errorProps: '*' })
243
+ const expectedLines = [
244
+ ' err: {',
245
+ ' "type": "Error",',
246
+ ' "message": "error message",',
247
+ ' "stack":',
248
+ ' error stack',
249
+ ' "statusCode": 500,',
250
+ ' "originalStack": "original stack",',
251
+ ' "dataBaseSpecificError": {',
252
+ ' "erroMessage": "some database error message",',
253
+ ' "evenMoreSpecificStuff": {',
254
+ ' "someErrorRelatedObject": "error"',
255
+ ' }',
256
+ ' }',
257
+ ' }'
258
+ ]
259
+ t.plan(expectedLines.length)
260
+ const log = pino({}, new Writable({
261
+ write (chunk, enc, cb) {
262
+ const formatted = pretty(chunk.toString())
263
+ const lines = formatted.split('\n')
264
+ lines.shift(); lines.pop()
265
+ for (let i = 0; i < lines.length; i += 1) {
266
+ t.assert.strictEqual(lines[i], expectedLines[i])
267
+ }
268
+ cb()
269
+ }
270
+ }))
271
+
272
+ const error = Error('error message')
273
+ error.stack = 'error stack'
274
+ error.statusCode = 500
275
+ error.originalStack = 'original stack'
276
+ error.dataBaseSpecificError = {
277
+ erroMessage: 'some database error message',
278
+ evenMoreSpecificStuff: {
279
+ someErrorRelatedObject: 'error'
280
+ }
281
+ }
282
+
283
+ log.error(error)
284
+ })
285
+
286
+ test('prettifies legacy error object at top level when singleLine=true', function (t) {
287
+ t.plan(4)
288
+ const pretty = prettyFactory({ singleLine: true })
289
+ const err = Error('hello world')
290
+ const expected = err.stack.split('\n')
291
+ expected.unshift(err.message)
292
+
293
+ const log = pino({}, new Writable({
294
+ write (chunk, enc, cb) {
295
+ const formatted = pretty(chunk.toString())
296
+ const lines = formatted.split('\n')
297
+ t.assert.strictEqual(lines.length, expected.length + 1)
298
+ t.assert.strictEqual(lines[0], `[${formattedEpoch}] INFO (${pid}): ${expected[0]}`)
299
+ t.assert.strictEqual(lines[1], ` ${expected[1]}`)
300
+ t.assert.strictEqual(lines[2], ` ${expected[2]}`)
301
+ cb()
302
+ }
303
+ }))
304
+
305
+ log.info({ type: 'Error', stack: err.stack, msg: err.message })
306
+ })
307
+
308
+ test('errorProps: legacy error object at top level', function (t) {
309
+ const pretty = prettyFactory({ errorProps: '*' })
310
+ const expectedLines = [
311
+ 'INFO:',
312
+ ' error stack',
313
+ ' message: hello message',
314
+ ' statusCode: 500',
315
+ ' originalStack: original stack',
316
+ ' dataBaseSpecificError: {',
317
+ ' errorMessage: "some database error message"',
318
+ ' evenMoreSpecificStuff: {',
319
+ ' "someErrorRelatedObject": "error"',
320
+ ' }',
321
+ ' }',
322
+ ''
323
+ ]
324
+
325
+ t.plan(expectedLines.length)
326
+
327
+ const error = {}
328
+ error.level = 30
329
+ error.message = 'hello message'
330
+ error.type = 'Error'
331
+ error.stack = 'error stack'
332
+ error.statusCode = 500
333
+ error.originalStack = 'original stack'
334
+ error.dataBaseSpecificError = {
335
+ errorMessage: 'some database error message',
336
+ evenMoreSpecificStuff: {
337
+ someErrorRelatedObject: 'error'
338
+ }
339
+ }
340
+
341
+ const formatted = pretty(JSON.stringify(error))
342
+ const lines = formatted.split('\n')
343
+ for (let i = 0; i < lines.length; i += 1) {
344
+ t.assert.strictEqual(lines[i], expectedLines[i])
345
+ }
346
+ })
347
+
348
+ test('errorProps flag with a single property', function (t) {
349
+ const pretty = prettyFactory({ errorProps: 'originalStack' })
350
+ const expectedLines = [
351
+ 'INFO:',
352
+ ' error stack',
353
+ ' originalStack: original stack',
354
+ ''
355
+ ]
356
+ t.plan(expectedLines.length)
357
+
358
+ const error = {}
359
+ error.level = 30
360
+ error.message = 'hello message'
361
+ error.type = 'Error'
362
+ error.stack = 'error stack'
363
+ error.statusCode = 500
364
+ error.originalStack = 'original stack'
365
+ error.dataBaseSpecificError = {
366
+ erroMessage: 'some database error message',
367
+ evenMoreSpecificStuff: {
368
+ someErrorRelatedObject: 'error'
369
+ }
370
+ }
371
+
372
+ const formatted = pretty(JSON.stringify(error))
373
+ const lines = formatted.split('\n')
374
+ for (let i = 0; i < lines.length; i += 1) {
375
+ t.assert.strictEqual(lines[i], expectedLines[i])
376
+ }
377
+ })
378
+
379
+ test('errorProps flag with a single property non existent', function (t) {
380
+ const pretty = prettyFactory({ errorProps: 'originalStackABC' })
381
+ const expectedLines = [
382
+ 'INFO:',
383
+ ' error stack',
384
+ ''
385
+ ]
386
+ t.plan(expectedLines.length)
387
+
388
+ const error = {}
389
+ error.level = 30
390
+ error.message = 'hello message'
391
+ error.type = 'Error'
392
+ error.stack = 'error stack'
393
+ error.statusCode = 500
394
+ error.originalStack = 'original stack'
395
+ error.dataBaseSpecificError = {
396
+ erroMessage: 'some database error message',
397
+ evenMoreSpecificStuff: {
398
+ someErrorRelatedObject: 'error'
399
+ }
400
+ }
401
+
402
+ const formatted = pretty(JSON.stringify(error))
403
+ const lines = formatted.split('\n')
404
+ for (let i = 0; i < lines.length; i += 1) {
405
+ t.assert.strictEqual(lines[i], expectedLines[i])
406
+ }
407
+ })
408
+
409
+ test('handles errors with a null stack', (t) => {
410
+ t.plan(2)
411
+ const pretty = prettyFactory()
412
+ const log = pino({}, new Writable({
413
+ write (chunk, enc, cb) {
414
+ const formatted = pretty(chunk.toString())
415
+ t.assert.match(formatted, /\s{4}message: "foo"/)
416
+ t.assert.match(formatted, /\s{4}stack: null/)
417
+ cb()
418
+ }
419
+ }))
420
+
421
+ const error = { message: 'foo', stack: null }
422
+ log.error(error)
423
+ })
424
+
425
+ test('handles errors with a null stack for Error object', (t) => {
426
+ const pretty = prettyFactory()
427
+ const expectedLines = [
428
+ ' "type": "Error",',
429
+ ' "message": "error message",',
430
+ ' "stack":',
431
+ ' ',
432
+ ' "some": "property"'
433
+ ]
434
+ t.plan(expectedLines.length)
435
+ const log = pino({}, new Writable({
436
+ write (chunk, enc, cb) {
437
+ const formatted = pretty(chunk.toString())
438
+ const lines = formatted.split('\n')
439
+ lines.shift(); lines.shift(); lines.pop(); lines.pop()
440
+ for (let i = 0; i < lines.length; i += 1) {
441
+ t.assert.ok(lines[i].includes(expectedLines[i]))
442
+ }
443
+ cb()
444
+ }
445
+ }))
446
+
447
+ const error = Error('error message')
448
+ error.stack = null
449
+ error.some = 'property'
450
+
451
+ log.error(error)
452
+ })
453
+ })
454
+
455
+ if (semver.gte(pino.version, '8.21.0')) {
456
+ describe('using pino config', () => {
457
+ beforeEach(() => {
458
+ Date.originalNow = Date.now
459
+ Date.now = () => epoch
460
+ })
461
+ afterEach(() => {
462
+ Date.now = Date.originalNow
463
+ delete Date.originalNow
464
+ })
465
+
466
+ test('prettifies Error in custom errorKey', (t) => {
467
+ t.plan(8)
468
+ const destination = new Writable({
469
+ write (chunk, enc, cb) {
470
+ const formatted = chunk.toString()
471
+ const lines = formatted.split('\n')
472
+ t.assert.strictEqual(lines.length, expected.length + 7)
473
+ t.assert.strictEqual(lines[0], `[${formattedEpoch}] INFO (${pid}): hello world`)
474
+ t.assert.match(lines[1], /\s{4}customErrorKey: {/)
475
+ t.assert.match(lines[2], /\s{6}"type": "Error",/)
476
+ t.assert.match(lines[3], /\s{6}"message": "hello world",/)
477
+ t.assert.match(lines[4], /\s{6}"stack":/)
478
+ t.assert.match(lines[5], /\s{6}Error: hello world/)
479
+ // Node 12 labels the test `<anonymous>`
480
+ t.assert.match(lines[6], /\s{10}(at Test.await t.test|at Test.<anonymous>)/)
481
+ cb()
482
+ }
483
+ })
484
+ const pretty = pinoPretty({
485
+ destination,
486
+ colorize: false
487
+ })
488
+ const log = pino({ errorKey: 'customErrorKey' }, pretty)
489
+ const err = Error('hello world')
490
+ const expected = err.stack.split('\n')
491
+ log.info({ customErrorKey: err })
492
+ })
493
+ })
494
+ }
@@ -0,0 +1,33 @@
1
+ 'use strict'
2
+
3
+ // Run this to see how colouring works
4
+
5
+ const _prettyFactory = require('../../')
6
+ const pino = require('pino')
7
+ const { Writable } = require('node:stream')
8
+
9
+ function prettyFactory () {
10
+ return _prettyFactory({
11
+ colorize: true
12
+ })
13
+ }
14
+
15
+ const pretty = prettyFactory()
16
+ const formatted = pretty('this is not json\nit\'s just regular output\n')
17
+ console.log(formatted)
18
+
19
+ const opts = {
20
+ base: {
21
+ hostname: 'localhost',
22
+ pid: process.pid
23
+ }
24
+ }
25
+ const log = pino(opts, new Writable({
26
+ write (chunk, enc, cb) {
27
+ const formatted = pretty(chunk.toString())
28
+ console.log(formatted)
29
+ cb()
30
+ }
31
+ }))
32
+
33
+ log.info('foobar')
@@ -0,0 +1,19 @@
1
+ 'use strict'
2
+
3
+ /**
4
+ * Listens for an event on an object and resolves a promise when the event is emitted.
5
+ * @param {Object} emitter - The object to listen to.
6
+ * @param {string} event - The name of the event to listen for.
7
+ * @param {Function} fn - The function to call when the event is emitted.
8
+ * @returns {Promise} A promise that resolves when the event is emitted.
9
+ */
10
+ function once (emitter, event, fn) {
11
+ return new Promise(resolve => {
12
+ emitter.on(event, (...args) => {
13
+ fn(...args)
14
+ resolve()
15
+ })
16
+ })
17
+ }
18
+
19
+ module.exports = { once }
@@ -0,0 +1,15 @@
1
+ import { expect, test } from 'tstyche'
2
+
3
+ import type PinoPretty from '../../index.js'
4
+ import PinoPrettyDefault, { PinoPretty as PinoPrettyNamed } from '../../index.js'
5
+ import * as PinoPrettyStar from '../../index.js'
6
+ import PinoPrettyCjsImport = require('../../index.js')
7
+
8
+ declare const options: PinoPretty.PrettyOptions
9
+
10
+ test('exports', () => {
11
+ expect(PinoPrettyDefault(options)).type.toBe<PinoPretty.PrettyStream>()
12
+ expect(PinoPrettyNamed(options)).type.toBe<PinoPretty.PrettyStream>()
13
+ expect(PinoPrettyStar.PinoPretty(options)).type.toBe<PinoPretty.PrettyStream>()
14
+ expect(PinoPrettyCjsImport.PinoPretty(options)).type.toBe<PinoPretty.PrettyStream>()
15
+ })