@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,143 @@
1
+ 'use strict'
2
+
3
+ const { test, describe } = require('node:test')
4
+ const prettifyErrorLog = require('./prettify-error-log')
5
+ const colors = require('../colors')
6
+ const {
7
+ ERROR_LIKE_KEYS,
8
+ MESSAGE_KEY
9
+ } = require('../constants')
10
+
11
+ const context = {
12
+ EOL: '\n',
13
+ IDENT: ' ',
14
+ customPrettifiers: {},
15
+ errorLikeObjectKeys: ERROR_LIKE_KEYS,
16
+ errorProps: [],
17
+ messageKey: MESSAGE_KEY,
18
+ objectColorizer: colors()
19
+ }
20
+
21
+ test('returns string with default settings', t => {
22
+ const err = Error('Something went wrong')
23
+ const str = prettifyErrorLog({ log: err, context })
24
+ t.assert.ok(str.startsWith(' Error: Something went wrong'))
25
+ })
26
+
27
+ test('strips unsafe control characters from the stack', t => {
28
+ const err = Error('Something went wrong')
29
+ err.stack = 'Error: bad\u001B[2J\n at location\u009B[3J'
30
+ const str = prettifyErrorLog({ log: err, context })
31
+ t.assert.strictEqual(str, ' Error: bad[2J\n at location[3J\n')
32
+ })
33
+
34
+ test('returns string with custom ident', t => {
35
+ const err = Error('Something went wrong')
36
+ const str = prettifyErrorLog({
37
+ log: err,
38
+ context: {
39
+ ...context,
40
+ IDENT: ' '
41
+ }
42
+ })
43
+ t.assert.ok(str.startsWith(' Error: Something went wrong'))
44
+ })
45
+
46
+ test('returns string with custom eol', t => {
47
+ const err = Error('Something went wrong')
48
+ const str = prettifyErrorLog({
49
+ log: err,
50
+ context: {
51
+ ...context,
52
+ EOL: '\r\n'
53
+ }
54
+ })
55
+ t.assert.ok(str.startsWith(' Error: Something went wrong\r\n'))
56
+ })
57
+
58
+ describe('errorProperties', () => {
59
+ test('excludes all for wildcard', t => {
60
+ const err = Error('boom')
61
+ err.foo = 'foo'
62
+ const str = prettifyErrorLog({
63
+ log: err,
64
+ context: {
65
+ ...context,
66
+ errorProps: ['*']
67
+ }
68
+ })
69
+ t.assert.ok(str.startsWith(' Error: boom'))
70
+ t.assert.strictEqual(str.includes('foo: "foo"'), false)
71
+ })
72
+
73
+ test('excludes only selected properties', t => {
74
+ const err = Error('boom')
75
+ err.foo = 'foo'
76
+ const str = prettifyErrorLog({
77
+ log: err,
78
+ context: {
79
+ ...context,
80
+ errorProps: ['foo']
81
+ }
82
+ })
83
+ t.assert.ok(str.startsWith(' Error: boom'))
84
+ t.assert.strictEqual(str.includes('foo: foo'), true)
85
+ })
86
+
87
+ test('ignores specified properties if not present', t => {
88
+ const err = Error('boom')
89
+ err.foo = 'foo'
90
+ const str = prettifyErrorLog({
91
+ log: err,
92
+ context: {
93
+ ...context,
94
+ errorProps: ['foo', 'bar']
95
+ }
96
+ })
97
+ t.assert.ok(str.startsWith(' Error: boom'))
98
+ t.assert.strictEqual(str.includes('foo: foo'), true)
99
+ t.assert.strictEqual(str.includes('bar'), false)
100
+ })
101
+
102
+ test('processes nested objects', t => {
103
+ const err = Error('boom')
104
+ err.foo = { bar: 'bar', message: 'included' }
105
+ const str = prettifyErrorLog({
106
+ log: err,
107
+ context: {
108
+ ...context,
109
+ errorProps: ['foo']
110
+ }
111
+ })
112
+ t.assert.ok(str.startsWith(' Error: boom'))
113
+ t.assert.strictEqual(str.includes('foo: {'), true)
114
+ t.assert.strictEqual(str.includes('bar: "bar"'), true)
115
+ t.assert.strictEqual(str.includes('message: "included"'), true)
116
+ })
117
+
118
+ test('strips unsafe control characters from primitive property names and values', t => {
119
+ const err = Error('boom')
120
+ err['detail\u001B[2J'] = 'hidden\u009B[3J'
121
+ const str = prettifyErrorLog({
122
+ log: err,
123
+ context: {
124
+ ...context,
125
+ errorProps: ['*']
126
+ }
127
+ })
128
+ t.assert.strictEqual(str.includes('detail[2J: hidden[3J'), true)
129
+ })
130
+
131
+ test('strips unsafe control characters after primitive properties are coerced', t => {
132
+ const err = Error('boom')
133
+ err.detail = ['hidden\u001B[2J']
134
+ const str = prettifyErrorLog({
135
+ log: err,
136
+ context: {
137
+ ...context,
138
+ errorProps: ['detail']
139
+ }
140
+ })
141
+ t.assert.strictEqual(str.includes('detail: hidden[2J'), true)
142
+ })
143
+ })
@@ -0,0 +1,54 @@
1
+ 'use strict'
2
+
3
+ module.exports = prettifyError
4
+
5
+ const joinLinesWithIndentation = require('./join-lines-with-indentation')
6
+ const stripUnsafeControlChars = require('./strip-unsafe-control-chars')
7
+
8
+ /**
9
+ * @typedef {object} PrettifyErrorParams
10
+ * @property {string} keyName The key assigned to this error in the log object.
11
+ * @property {string} lines The STRINGIFIED error. If the error field has a
12
+ * custom prettifier, that should be pre-applied as well.
13
+ * @property {string} ident The indentation sequence to use.
14
+ * @property {string} eol The EOL sequence to use.
15
+ * @property {boolean} [sanitizeStack=true] Whether to sanitize the decoded stack.
16
+ */
17
+
18
+ /**
19
+ * Prettifies an error string into a multi-line format.
20
+ *
21
+ * @param {PrettifyErrorParams} input
22
+ *
23
+ * @returns {string}
24
+ */
25
+ function prettifyError ({ keyName, lines, eol, ident, sanitizeStack = true }) {
26
+ let result = ''
27
+ const joinedLines = joinLinesWithIndentation({ input: lines, ident, eol })
28
+ const safeKeyName = stripUnsafeControlChars(keyName)
29
+ const splitLines = `${ident}${safeKeyName}: ${joinedLines}${eol}`.split(eol)
30
+
31
+ for (let j = 0; j < splitLines.length; j += 1) {
32
+ if (j !== 0) result += eol
33
+
34
+ const line = splitLines[j]
35
+ if (/^\s*"stack"/.test(line)) {
36
+ const matches = /^(\s*"stack":)\s*(".*"),?$/.exec(line)
37
+ /* istanbul ignore else */
38
+ if (matches && matches.length === 3) {
39
+ const indentSize = /^\s*/.exec(line)[0].length + 4
40
+ const indentation = ' '.repeat(indentSize)
41
+ const stackMessage = matches[2]
42
+ const parsedStack = JSON.parse(stackMessage)
43
+ const stack = sanitizeStack ? stripUnsafeControlChars(parsedStack) : parsedStack
44
+ result += matches[1] + eol + indentation + stack.replace(/\n/g, eol + indentation)
45
+ } else {
46
+ result += line
47
+ }
48
+ } else {
49
+ result += line
50
+ }
51
+ }
52
+
53
+ return result
54
+ }
@@ -0,0 +1,25 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('node:test')
4
+ const stringifySafe = require('fast-safe-stringify')
5
+ const prettifyError = require('./prettify-error')
6
+
7
+ test('prettifies error', t => {
8
+ const error = Error('Bad error!')
9
+ const lines = stringifySafe(error, Object.getOwnPropertyNames(error), 2)
10
+
11
+ const prettyError = prettifyError({ keyName: 'errorKey', lines, ident: ' ', eol: '\n' })
12
+ t.assert.match(prettyError, /\s*errorKey: {\n\s*"stack":[\s\S]*"message": "Bad error!"/)
13
+ })
14
+
15
+ test('strips unsafe control characters from an error stack', t => {
16
+ const lines = stringifySafe({
17
+ stack: 'Error: bad\u001B[2J\n at location\u009B[3J',
18
+ message: 'bad'
19
+ }, null, 2)
20
+
21
+ const prettyError = prettifyError({ keyName: 'errorKey', lines, ident: ' ', eol: '\n' })
22
+ t.assert.strictEqual(prettyError.includes('\u001B'), false)
23
+ t.assert.strictEqual(prettyError.includes('\u009B'), false)
24
+ t.assert.match(prettyError, /Error: bad\[2J\n\s+at location\[3J/)
25
+ })
@@ -0,0 +1,41 @@
1
+ 'use strict'
2
+
3
+ module.exports = prettifyLevel
4
+
5
+ const getPropertyValue = require('./get-property-value')
6
+
7
+ /**
8
+ * @typedef {object} PrettifyLevelParams
9
+ * @property {object} log The log object.
10
+ * @property {PrettyContext} context The context object built from parsing
11
+ * the options.
12
+ */
13
+
14
+ /**
15
+ * Checks if the passed in log has a `level` value and returns a prettified
16
+ * string for that level if so.
17
+ *
18
+ * @param {PrettifyLevelParams} input
19
+ *
20
+ * @returns {undefined|string} If `log` does not have a `level` property then
21
+ * `undefined` will be returned. Otherwise, a string from the specified
22
+ * `colorizer` is returned.
23
+ */
24
+ function prettifyLevel ({ log, context }) {
25
+ const {
26
+ colorizer,
27
+ customLevels,
28
+ customLevelNames,
29
+ levelKey,
30
+ getLevelLabelData
31
+ } = context
32
+ const prettifier = context.customPrettifiers?.level
33
+ const output = getPropertyValue(log, levelKey)
34
+ if (output === undefined) return undefined
35
+ const labelColorized = colorizer(output, { customLevels, customLevelNames })
36
+ if (prettifier) {
37
+ const [label] = getLevelLabelData(output)
38
+ return prettifier(output, levelKey, log, { label, labelColorized, colors: colorizer.colors })
39
+ }
40
+ return labelColorized
41
+ }
@@ -0,0 +1,70 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('node:test')
4
+ const prettifyLevel = require('./prettify-level')
5
+ const getColorizer = require('../colors')
6
+ const getLevelLabelData = require('./get-level-label-data')
7
+ const {
8
+ LEVEL_KEY
9
+ } = require('../constants')
10
+
11
+ const context = {
12
+ colorizer: getColorizer(),
13
+ customLevelNames: undefined,
14
+ customLevels: undefined,
15
+ levelKey: LEVEL_KEY,
16
+ customPrettifiers: undefined,
17
+ getLevelLabelData: getLevelLabelData(false, {}, {})
18
+ }
19
+
20
+ test('returns `undefined` for unknown level', t => {
21
+ const colorized = prettifyLevel({
22
+ log: {},
23
+ context: {
24
+ ...context
25
+ }
26
+ })
27
+ t.assert.strictEqual(colorized, undefined)
28
+ })
29
+
30
+ test('returns non-colorized value for default colorizer', t => {
31
+ const log = {
32
+ level: 30
33
+ }
34
+ const colorized = prettifyLevel({
35
+ log,
36
+ context: {
37
+ ...context
38
+ }
39
+ })
40
+ t.assert.strictEqual(colorized, 'INFO')
41
+ })
42
+
43
+ test('returns colorized value for color colorizer', t => {
44
+ const log = {
45
+ level: 30
46
+ }
47
+ const colorizer = getColorizer(true)
48
+ const colorized = prettifyLevel({
49
+ log,
50
+ context: {
51
+ ...context,
52
+ colorizer
53
+ }
54
+ })
55
+ t.assert.strictEqual(colorized, '\u001B[32mINFO\u001B[39m')
56
+ })
57
+
58
+ test('passes output through provided prettifier', t => {
59
+ const log = {
60
+ level: 30
61
+ }
62
+ const colorized = prettifyLevel({
63
+ log,
64
+ context: {
65
+ ...context,
66
+ customPrettifiers: { level () { return 'modified' } }
67
+ }
68
+ })
69
+ t.assert.strictEqual(colorized, 'modified')
70
+ })
@@ -0,0 +1,65 @@
1
+ 'use strict'
2
+
3
+ module.exports = prettifyMessage
4
+
5
+ const {
6
+ LEVELS
7
+ } = require('../constants')
8
+
9
+ const getPropertyValue = require('./get-property-value')
10
+ const interpretConditionals = require('./interpret-conditionals')
11
+ const stripUnsafeControlChars = require('./strip-unsafe-control-chars')
12
+
13
+ /**
14
+ * @typedef {object} PrettifyMessageParams
15
+ * @property {object} log The log object with the message to colorize.
16
+ * @property {PrettyContext} context The context object built from parsing
17
+ * the options.
18
+ */
19
+
20
+ /**
21
+ * Prettifies a message string if the given `log` has a message property.
22
+ *
23
+ * @param {PrettifyMessageParams} input
24
+ *
25
+ * @returns {undefined|string} If the message key is not found, or the message
26
+ * key is not a string, then `undefined` will be returned. Otherwise, a string
27
+ * that is the prettified message.
28
+ */
29
+ function prettifyMessage ({ log, context }) {
30
+ const {
31
+ colorizer,
32
+ customLevels,
33
+ levelKey,
34
+ levelLabel,
35
+ messageFormat,
36
+ messageKey,
37
+ useOnlyCustomProps
38
+ } = context
39
+ if (messageFormat && typeof messageFormat === 'string') {
40
+ const parsedMessageFormat = interpretConditionals(messageFormat, log)
41
+
42
+ const message = String(parsedMessageFormat).replace(
43
+ /{([^{}]+)}/g,
44
+ function (match, p1) {
45
+ // return log level as string instead of int
46
+ let level
47
+ if (p1 === levelLabel && (level = getPropertyValue(log, levelKey)) !== undefined) {
48
+ const condition = useOnlyCustomProps ? customLevels === undefined : customLevels[level] === undefined
49
+ return condition ? LEVELS[level] : customLevels[level]
50
+ }
51
+
52
+ // Parse nested key access, e.g. `{keyA.subKeyB}`.
53
+ const value = getPropertyValue(log, p1)
54
+ return value !== undefined ? value : ''
55
+ })
56
+ return colorizer.message(stripUnsafeControlChars(message))
57
+ }
58
+ if (messageFormat && typeof messageFormat === 'function') {
59
+ const msg = messageFormat(log, messageKey, levelLabel, { colors: colorizer.colors })
60
+ return colorizer.message(msg)
61
+ }
62
+ if (messageKey in log === false) return undefined
63
+ if (typeof log[messageKey] !== 'string' && typeof log[messageKey] !== 'number' && typeof log[messageKey] !== 'boolean') return undefined
64
+ return colorizer.message(stripUnsafeControlChars(log[messageKey]))
65
+ }
@@ -0,0 +1,287 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('node:test')
4
+ const prettifyMessage = require('./prettify-message')
5
+ const getColorizer = require('../colors')
6
+ const {
7
+ LEVEL_KEY,
8
+ LEVEL_LABEL
9
+ } = require('../constants')
10
+ const context = {
11
+ colorizer: getColorizer(),
12
+ levelKey: LEVEL_KEY,
13
+ levelLabel: LEVEL_LABEL,
14
+ messageKey: 'msg'
15
+ }
16
+
17
+ test('returns `undefined` if `messageKey` not found', t => {
18
+ const str = prettifyMessage({ log: {}, context })
19
+ t.assert.strictEqual(str, undefined)
20
+ })
21
+
22
+ test('returns `undefined` if `messageKey` not string', t => {
23
+ const str = prettifyMessage({ log: { msg: {} }, context })
24
+ t.assert.strictEqual(str, undefined)
25
+ })
26
+
27
+ test('returns non-colorized value for default colorizer', t => {
28
+ const colorizer = getColorizer()
29
+ const str = prettifyMessage({
30
+ log: { msg: 'foo' },
31
+ context: { ...context, colorizer }
32
+ })
33
+ t.assert.strictEqual(str, 'foo')
34
+ })
35
+
36
+ test('returns non-colorized value for alternate `messageKey`', t => {
37
+ const str = prettifyMessage({
38
+ log: { message: 'foo' },
39
+ context: { ...context, messageKey: 'message' }
40
+ })
41
+ t.assert.strictEqual(str, 'foo')
42
+ })
43
+
44
+ test('returns colorized value for color colorizer', t => {
45
+ const colorizer = getColorizer(true)
46
+ const str = prettifyMessage({
47
+ log: { msg: 'foo' },
48
+ context: { ...context, colorizer }
49
+ })
50
+ t.assert.strictEqual(str, '\u001B[36mfoo\u001B[39m')
51
+ })
52
+
53
+ test('strips unsafe control characters before colorizing a message', t => {
54
+ const colorizer = getColorizer(true)
55
+ const str = prettifyMessage({
56
+ log: { msg: 'before\t\u001B[2Jafter\nnext\u009B[3J' },
57
+ context: { ...context, colorizer }
58
+ })
59
+ t.assert.strictEqual(str, '\u001B[36mbefore\t[2Jafter\nnext[3J\u001B[39m')
60
+ })
61
+
62
+ test('returns colorized value for color colorizer for alternate `messageKey`', t => {
63
+ const colorizer = getColorizer(true)
64
+ const str = prettifyMessage({
65
+ log: { message: 'foo' },
66
+ context: { ...context, messageKey: 'message', colorizer }
67
+ })
68
+ t.assert.strictEqual(str, '\u001B[36mfoo\u001B[39m')
69
+ })
70
+
71
+ test('returns message formatted by `messageFormat` option', t => {
72
+ const str = prettifyMessage({
73
+ log: { msg: 'foo', context: 'appModule' },
74
+ context: { ...context, messageFormat: '{context} - {msg}' }
75
+ })
76
+ t.assert.strictEqual(str, 'appModule - foo')
77
+ })
78
+
79
+ test('strips unsafe control characters substituted by a string `messageFormat`', t => {
80
+ const str = prettifyMessage({
81
+ log: { msg: 'foo\u0007', context: 'app\u007FModule' },
82
+ context: { ...context, messageFormat: '{context} - {msg}' }
83
+ })
84
+ t.assert.strictEqual(str, 'appModule - foo')
85
+ })
86
+
87
+ test('returns message formatted by `messageFormat` option - missing prop', t => {
88
+ const str = prettifyMessage({
89
+ log: { context: 'appModule' },
90
+ context: { ...context, messageFormat: '{context} - {msg}' }
91
+ })
92
+ t.assert.strictEqual(str, 'appModule - ')
93
+ })
94
+
95
+ test('returns message formatted by `messageFormat` option - levelLabel & useOnlyCustomProps false', t => {
96
+ const str = prettifyMessage({
97
+ log: { msg: 'foo', context: 'appModule', level: 30 },
98
+ context: {
99
+ ...context,
100
+ messageFormat: '[{level}] {levelLabel} {context} - {msg}',
101
+ customLevels: {}
102
+ }
103
+ })
104
+ t.assert.strictEqual(str, '[30] INFO appModule - foo')
105
+ })
106
+
107
+ test('returns message formatted by `messageFormat` option - levelLabel & useOnlyCustomProps true', t => {
108
+ const str = prettifyMessage({
109
+ log: { msg: 'foo', context: 'appModule', level: 30 },
110
+ context: {
111
+ ...context,
112
+ messageFormat: '[{level}] {levelLabel} {context} - {msg}',
113
+ customLevels: { 30: 'CHECK' },
114
+ useOnlyCustomProps: true
115
+ }
116
+ })
117
+ t.assert.strictEqual(str, '[30] CHECK appModule - foo')
118
+ })
119
+
120
+ test('returns message formatted by `messageFormat` option - levelLabel & customLevels', t => {
121
+ const str = prettifyMessage({
122
+ log: { msg: 'foo', context: 'appModule', level: 123 },
123
+ context: {
124
+ ...context,
125
+ messageFormat: '[{level}] {levelLabel} {context} - {msg}',
126
+ customLevels: { 123: 'CUSTOM' }
127
+ }
128
+ })
129
+ t.assert.strictEqual(str, '[123] CUSTOM appModule - foo')
130
+ })
131
+
132
+ test('returns message formatted by `messageFormat` option - levelLabel, customLevels & useOnlyCustomProps', t => {
133
+ const str = prettifyMessage({
134
+ log: { msg: 'foo', context: 'appModule', level: 123 },
135
+ context: {
136
+ ...context,
137
+ messageFormat: '[{level}] {levelLabel} {context} - {msg}',
138
+ customLevels: { 123: 'CUSTOM' },
139
+ useOnlyCustomProps: true
140
+ }
141
+ })
142
+ t.assert.strictEqual(str, '[123] CUSTOM appModule - foo')
143
+ })
144
+
145
+ test('returns message formatted by `messageFormat` option - levelLabel, customLevels & useOnlyCustomProps false', t => {
146
+ const str = prettifyMessage({
147
+ log: { msg: 'foo', context: 'appModule', level: 40 },
148
+ context: {
149
+ ...context,
150
+ messageFormat: '[{level}] {levelLabel} {context} - {msg}',
151
+ customLevels: { 123: 'CUSTOM' },
152
+ useOnlyCustomProps: false
153
+ }
154
+ })
155
+ t.assert.strictEqual(str, '[40] WARN appModule - foo')
156
+ })
157
+
158
+ test('returns message formatted by `messageFormat` option - value 0', t => {
159
+ const str = prettifyMessage({
160
+ log: { value: 0 },
161
+ context: { ...context, messageFormat: '{value}' },
162
+ })
163
+ t.assert.strictEqual(str, '0')
164
+ })
165
+
166
+ test('returns message formatted by `messageFormat` option - value false', t => {
167
+ const str = prettifyMessage({
168
+ log: { value: false },
169
+ context: { ...context, messageFormat: '{value}' },
170
+ })
171
+ t.assert.strictEqual(str, 'false')
172
+ })
173
+
174
+ test('returns message formatted by `messageFormat` option - value undefined', t => {
175
+ const str = prettifyMessage({
176
+ log: { value: undefined },
177
+ context: { ...context, messageFormat: '{value}' },
178
+ })
179
+ t.assert.strictEqual(str, '')
180
+ })
181
+
182
+ test('returns message formatted by `messageFormat` option - value null', t => {
183
+ const str = prettifyMessage({
184
+ log: { value: null },
185
+ context: { ...context, messageFormat: '{value}' },
186
+ })
187
+ t.assert.strictEqual(str, 'null')
188
+ })
189
+
190
+ test('`messageFormat` supports nested curly brackets', t => {
191
+ const str = prettifyMessage({
192
+ log: { level: 30 },
193
+ context: {
194
+ ...context,
195
+ messageFormat: '{{level}}-{level}-{{level}-{level}}'
196
+ }
197
+ })
198
+ t.assert.strictEqual(str, '{30}-30-{30-30}')
199
+ })
200
+
201
+ test('`messageFormat` supports nested object', t => {
202
+ const str = prettifyMessage({
203
+ log: { level: 30, request: { url: 'localhost/test' }, msg: 'foo' },
204
+ context: {
205
+ ...context,
206
+ messageFormat: '{request.url} - param: {request.params.process} - {msg}'
207
+ }
208
+ })
209
+ t.assert.strictEqual(str, 'localhost/test - param: - foo')
210
+ })
211
+
212
+ test('`messageFormat` supports conditional blocks', t => {
213
+ const str = prettifyMessage({
214
+ log: { level: 30, req: { id: 'foo' } },
215
+ context: {
216
+ ...context,
217
+ messageFormat: '{level} | {if req.id}({req.id}){end}{if msg}{msg}{end}'
218
+ }
219
+ })
220
+ t.assert.strictEqual(str, '30 | (foo)')
221
+ })
222
+
223
+ test('`messageFormat` supports function definition', t => {
224
+ const str = prettifyMessage({
225
+ log: { level: 30, request: { url: 'localhost/test' }, msg: 'incoming request' },
226
+ context: {
227
+ ...context,
228
+ messageFormat: (log, messageKey, levelLabel) => {
229
+ let msg = log[messageKey]
230
+ if (msg === 'incoming request') msg = `--> ${log.request.url}`
231
+ return msg
232
+ }
233
+ }
234
+ })
235
+ t.assert.strictEqual(str, '--> localhost/test')
236
+ })
237
+
238
+ test('`messageFormat` supports function definition with colorizer object', t => {
239
+ const colorizer = getColorizer(true)
240
+ const str = prettifyMessage({
241
+ log: { level: 30, request: { url: 'localhost/test' }, msg: 'incoming request' },
242
+ context: {
243
+ ...context,
244
+ colorizer,
245
+ messageFormat: (log, messageKey, levelLabel, { colors }) => {
246
+ let msg = log[messageKey]
247
+ if (msg === 'incoming request') msg = `--> ${colors.red(log.request.url)}`
248
+ return msg
249
+ }
250
+ }
251
+ })
252
+ t.assert.strictEqual(str, '\u001B[36m--> \u001B[31mlocalhost/test\u001B[36m\u001B[39m')
253
+ })
254
+
255
+ test('`messageFormat` supports function definition with colorizer object when using custom colors', t => {
256
+ const colorizer = getColorizer(true, [[30, 'brightGreen']], false)
257
+ const str = prettifyMessage({
258
+ log: { level: 30, request: { url: 'localhost/test' }, msg: 'incoming request' },
259
+ context: {
260
+ ...context,
261
+ colorizer,
262
+ messageFormat: (log, messageKey, levelLabel, { colors }) => {
263
+ let msg = log[messageKey]
264
+ if (msg === 'incoming request') msg = `--> ${colors.red(log.request.url)}`
265
+ return msg
266
+ }
267
+ }
268
+ })
269
+ t.assert.strictEqual(str, '\u001B[36m--> \u001B[31mlocalhost/test\u001B[36m\u001B[39m')
270
+ })
271
+
272
+ test('`messageFormat` supports function definition with colorizer object when no color is supported', t => {
273
+ const colorizer = getColorizer(false)
274
+ const str = prettifyMessage({
275
+ log: { level: 30, request: { url: 'localhost/test' }, msg: 'incoming request' },
276
+ context: {
277
+ ...context,
278
+ colorizer,
279
+ messageFormat: (log, messageKey, levelLabel, { colors }) => {
280
+ let msg = log[messageKey]
281
+ if (msg === 'incoming request') msg = `--> ${colors.red(log.request.url)}`
282
+ return msg
283
+ }
284
+ }
285
+ })
286
+ t.assert.strictEqual(str, '--> localhost/test')
287
+ })