@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,108 @@
1
+ 'use strict'
2
+
3
+ module.exports = {
4
+ buildSafeSonicBoom: require('./build-safe-sonic-boom.js'),
5
+ createDate: require('./create-date.js'),
6
+ deleteLogProperty: require('./delete-log-property.js'),
7
+ filterLog: require('./filter-log.js'),
8
+ formatTime: require('./format-time.js'),
9
+ getPropertyValue: require('./get-property-value.js'),
10
+ handleCustomLevelsNamesOpts: require('./handle-custom-levels-names-opts.js'),
11
+ handleCustomLevelsOpts: require('./handle-custom-levels-opts.js'),
12
+ interpretConditionals: require('./interpret-conditionals.js'),
13
+ isObject: require('./is-object.js'),
14
+ isValidDate: require('./is-valid-date.js'),
15
+ joinLinesWithIndentation: require('./join-lines-with-indentation.js'),
16
+ noop: require('./noop.js'),
17
+ parseFactoryOptions: require('./parse-factory-options.js'),
18
+ prettifyErrorLog: require('./prettify-error-log.js'),
19
+ prettifyError: require('./prettify-error.js'),
20
+ prettifyLevel: require('./prettify-level.js'),
21
+ prettifyMessage: require('./prettify-message.js'),
22
+ prettifyMetadata: require('./prettify-metadata.js'),
23
+ prettifyObject: require('./prettify-object.js'),
24
+ prettifyTime: require('./prettify-time.js'),
25
+ splitPropertyKey: require('./split-property-key.js'),
26
+ stripUnsafeControlChars: require('./strip-unsafe-control-chars.js'),
27
+ getLevelLabelData: require('./get-level-label-data')
28
+ }
29
+
30
+ // The remainder of this file consists of jsdoc blocks that are difficult to
31
+ // determine a more appropriate "home" for. As an example, the blocks associated
32
+ // with custom prettifiers could live in either the `prettify-level`,
33
+ // `prettify-metadata`, or `prettify-time` files since they are the primary
34
+ // files where such code is used. But we want a central place to define common
35
+ // doc blocks, so we are picking this file as the answer.
36
+
37
+ /**
38
+ * A hash of log property names mapped to prettifier functions. When the
39
+ * incoming log data is being processed for prettification, any key on the log
40
+ * that matches a key in a custom prettifiers hash will be prettified using
41
+ * that matching custom prettifier. The value passed to the custom prettifier
42
+ * will the value associated with the corresponding log key.
43
+ *
44
+ * The hash may contain any arbitrary keys for arbitrary log properties, but it
45
+ * may also contain a set of predefined key names that map to well-known log
46
+ * properties. These keys are:
47
+ *
48
+ * + `time` (for the timestamp field)
49
+ * + `level` (for the level label field; value may be a level number instead
50
+ * of a level label)
51
+ * + `hostname`
52
+ * + `pid`
53
+ * + `name`
54
+ * + `caller`
55
+ *
56
+ * @typedef {Object.<string, CustomPrettifierFunc>} CustomPrettifiers
57
+ */
58
+
59
+ /**
60
+ * A synchronous function to be used for prettifying a log property. It must
61
+ * return a string.
62
+ *
63
+ * @typedef {function} CustomPrettifierFunc
64
+ * @param {any} value The value to be prettified for the key associated with
65
+ * the prettifier.
66
+ * @returns {string}
67
+ */
68
+
69
+ /**
70
+ * A tokenized string that indicates how the prettified log line should be
71
+ * formatted. Tokens are either log properties enclosed in curly braces, e.g.
72
+ * `{levelLabel}`, `{pid}`, or `{req.url}`, or conditional directives in curly
73
+ * braces. The only conditional directives supported are `if` and `end`, e.g.
74
+ * `{if pid}{pid}{end}`; every `if` must have a matching `end`. Nested
75
+ * conditions are not supported.
76
+ *
77
+ * @typedef {string} MessageFormatString
78
+ *
79
+ * @example
80
+ * `{levelLabel} - {if pid}{pid} - {end}url:{req.url}`
81
+ */
82
+
83
+ /**
84
+ * @typedef {object} PrettifyMessageExtras
85
+ * @property {object} colors Available color functions based on `useColor` (or `colorize`) context
86
+ * the options.
87
+ */
88
+
89
+ /**
90
+ * A function that accepts a log object, name of the message key, and name of
91
+ * the level label key and returns a formatted log line.
92
+ *
93
+ * Note: this function must be synchronous.
94
+ *
95
+ * @typedef {function} MessageFormatFunction
96
+ * @param {object} log The log object to be processed.
97
+ * @param {string} messageKey The name of the key in the `log` object that
98
+ * contains the log message.
99
+ * @param {string} levelLabel The name of the key in the `log` object that
100
+ * contains the log level name.
101
+ * @param {PrettifyMessageExtras} extras Additional data available for message context
102
+ * @returns {string}
103
+ *
104
+ * @example
105
+ * function (log, messageKey, levelLabel) {
106
+ * return `${log[levelLabel]} - ${log[messageKey]}`
107
+ * }
108
+ */
@@ -0,0 +1,37 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('node:test')
4
+ const index = require('./index.js')
5
+ const { readdirSync } = require('node:fs')
6
+ const { basename } = require('node:path')
7
+
8
+ test(
9
+ 'index exports exactly all non-test files excluding itself',
10
+ t => {
11
+ // Read all files in the `util` directory
12
+ const files = readdirSync(__dirname)
13
+
14
+ for (const file of files) {
15
+ const kebabName = basename(file, '.js')
16
+ const snakeName = kebabName.split('-').map((part, idx) => {
17
+ if (idx === 0) return part
18
+ return part[0].toUpperCase() + part.slice(1)
19
+ }).join('')
20
+
21
+ if (file.endsWith('.test.js') === false && file !== 'index.js') {
22
+ // We expect all files to be exported except…
23
+ t.assert.ok(index[snakeName], `exports ${snakeName}`)
24
+ } else {
25
+ // …test files and the index file itself – those must not be exported
26
+ t.assert.ok(!index[snakeName], `does not export ${snakeName}`)
27
+ }
28
+
29
+ // Remove the exported file from the index object
30
+ delete index[snakeName]
31
+ }
32
+
33
+ // Now the index is expected to be empty, as nothing else should be
34
+ // exported from it
35
+ t.assert.deepStrictEqual(index, {}, 'does not export anything else')
36
+ }
37
+ )
@@ -0,0 +1,41 @@
1
+ 'use strict'
2
+
3
+ module.exports = interpretConditionals
4
+
5
+ const getPropertyValue = require('./get-property-value')
6
+
7
+ /**
8
+ * Translates all conditional blocks from within the messageFormat. Translates
9
+ * any matching {if key}{key}{end} statements and returns everything between
10
+ * if and else blocks if the key provided was found in log.
11
+ *
12
+ * @param {MessageFormatString|MessageFormatFunction} messageFormat A format
13
+ * string or function that defines how the logged message should be
14
+ * conditionally formatted.
15
+ * @param {object} log The log object to be modified.
16
+ *
17
+ * @returns {string} The parsed messageFormat.
18
+ */
19
+ function interpretConditionals (messageFormat, log) {
20
+ messageFormat = messageFormat.replace(/{if (.*?)}([\s\S]*?){end}/g, replacer)
21
+
22
+ // Remove non-terminated if blocks
23
+ messageFormat = messageFormat.replace(/{if (.*?)}/g, '')
24
+ // Remove floating end blocks
25
+ messageFormat = messageFormat.replace(/{end}/g, '')
26
+
27
+ // Collapse horizontal whitespace (spaces/tabs) without removing newlines
28
+ messageFormat = messageFormat.replace(/[^\S\r\n]+/g, ' ')
29
+ // Remove empty lines left over from removed conditional blocks
30
+ messageFormat = messageFormat.replace(/\n[^\S\r\n]*\n/g, '\n')
31
+ return messageFormat.trim()
32
+
33
+ function replacer (_, key, value) {
34
+ const propertyValue = getPropertyValue(log, key)
35
+ if (propertyValue && value.includes(key)) {
36
+ return value.replace(new RegExp('{' + key + '}', 'g'), propertyValue)
37
+ } else {
38
+ return ''
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,84 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('node:test')
4
+ const { createCopier } = require('fast-copy')
5
+ const fastCopy = createCopier({})
6
+ const interpretConditionals = require('./interpret-conditionals')
7
+
8
+ const logData = {
9
+ level: 30,
10
+ data1: {
11
+ data2: 'bar'
12
+ },
13
+ msg: 'foo'
14
+ }
15
+
16
+ test('interpretConditionals translates if / else statement to found property value', t => {
17
+ const log = fastCopy(logData)
18
+ t.assert.strictEqual(interpretConditionals('{level} - {if data1.data2}{data1.data2}{end}', log), '{level} - bar')
19
+ })
20
+
21
+ test('interpretConditionals translates if / else statement to found property value and leave unmatched property key untouched', t => {
22
+ const log = fastCopy(logData)
23
+ t.assert.strictEqual(interpretConditionals('{level} - {if data1.data2}{data1.data2} ({msg}){end}', log), '{level} - bar ({msg})')
24
+ })
25
+
26
+ test('interpretConditionals removes non-terminated if statements', t => {
27
+ const log = fastCopy(logData)
28
+ t.assert.strictEqual(interpretConditionals('{level} - {if data1.data2}{data1.data2}', log), '{level} - {data1.data2}')
29
+ })
30
+
31
+ test('interpretConditionals removes floating end statements', t => {
32
+ const log = fastCopy(logData)
33
+ t.assert.strictEqual(interpretConditionals('{level} - {data1.data2}{end}', log), '{level} - {data1.data2}')
34
+ })
35
+
36
+ test('interpretConditionals removes floating end statements within translated if / end statements', t => {
37
+ const log = fastCopy(logData)
38
+ t.assert.strictEqual(interpretConditionals('{level} - {if msg}({msg}){end}{end}', log), '{level} - (foo)')
39
+ })
40
+
41
+ test('interpretConditionals removes if / end blocks if existent condition key does not match existent property key', t => {
42
+ const log = fastCopy(logData)
43
+ t.assert.strictEqual(interpretConditionals('{level}{if msg}{data1.data2}{end}', log), '{level}')
44
+ })
45
+
46
+ test('interpretConditionals removes if / end blocks if non-existent condition key does not match existent property key', t => {
47
+ const log = fastCopy(logData)
48
+ t.assert.strictEqual(interpretConditionals('{level}{if foo}{msg}{end}', log), '{level}')
49
+ })
50
+
51
+ test('interpretConditionals removes if / end blocks if existent condition key does not match non-existent property key', t => {
52
+ const log = fastCopy(logData)
53
+ t.assert.strictEqual(interpretConditionals('{level}{if msg}{foo}{end}', log), '{level}')
54
+ })
55
+
56
+ test('interpretConditionals removes if / end blocks if non-existent condition key does not match non-existent property key', t => {
57
+ const log = fastCopy(logData)
58
+ t.assert.strictEqual(interpretConditionals('{level}{if foo}{bar}{end}', log), '{level}')
59
+ })
60
+
61
+ test('interpretConditionals removes if / end blocks if nested condition key does not match property key', t => {
62
+ const log = fastCopy(logData)
63
+ t.assert.strictEqual(interpretConditionals('{level}{if data1.msg}{data1.data2}{end}', log), '{level}')
64
+ })
65
+
66
+ test('interpretConditionals removes nested if / end statement blocks', t => {
67
+ const log = fastCopy(logData)
68
+ t.assert.strictEqual(interpretConditionals('{if msg}{if data1.data2}{msg}{data1.data2}{end}{end}', log), 'foo{data1.data2}')
69
+ })
70
+
71
+ test('interpretConditionals preserves newlines in messageFormat', t => {
72
+ const log = fastCopy(logData)
73
+ t.assert.strictEqual(interpretConditionals('{msg}\n{level}', log), '{msg}\n{level}')
74
+ })
75
+
76
+ test('interpretConditionals preserves newlines with conditionals', t => {
77
+ const log = fastCopy(logData)
78
+ t.assert.strictEqual(interpretConditionals('{msg}{if data1.data2}\n{data1.data2}{end}', log), '{msg}\nbar')
79
+ })
80
+
81
+ test('interpretConditionals removes empty lines from removed conditionals', t => {
82
+ const log = fastCopy(logData)
83
+ t.assert.strictEqual(interpretConditionals('{msg}\n{if foo}{foo}{end}\n{level}', log), '{msg}\n{level}')
84
+ })
@@ -0,0 +1,7 @@
1
+ 'use strict'
2
+
3
+ module.exports = isObject
4
+
5
+ function isObject (input) {
6
+ return Object.prototype.toString.apply(input) === '[object Object]'
7
+ }
@@ -0,0 +1,10 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('node:test')
4
+ const isObject = require('./is-object')
5
+
6
+ test('returns correct answer', t => {
7
+ t.assert.strictEqual(isObject({}), true)
8
+ t.assert.strictEqual(isObject([]), false)
9
+ t.assert.strictEqual(isObject(42), false)
10
+ })
@@ -0,0 +1,14 @@
1
+ 'use strict'
2
+
3
+ module.exports = isValidDate
4
+
5
+ /**
6
+ * Checks if the argument is a JS Date and not 'Invalid Date'.
7
+ *
8
+ * @param {Date} date The date to check.
9
+ *
10
+ * @returns {boolean} true if the argument is a JS Date and not 'Invalid Date'.
11
+ */
12
+ function isValidDate (date) {
13
+ return date instanceof Date && !Number.isNaN(date.getTime())
14
+ }
@@ -0,0 +1,16 @@
1
+ 'use strict'
2
+
3
+ process.env.TZ = 'UTC'
4
+
5
+ const { test } = require('node:test')
6
+ const isValidDate = require('./is-valid-date')
7
+
8
+ test('returns true for valid dates', t => {
9
+ t.assert.strictEqual(isValidDate(new Date()), true)
10
+ })
11
+
12
+ test('returns false for non-dates and invalid dates', t => {
13
+ t.plan(2)
14
+ t.assert.strictEqual(isValidDate('20210621'), false)
15
+ t.assert.strictEqual(isValidDate(new Date('2021-41-99')), false)
16
+ })
@@ -0,0 +1,29 @@
1
+ 'use strict'
2
+
3
+ module.exports = joinLinesWithIndentation
4
+
5
+ /**
6
+ * @typedef {object} JoinLinesWithIndentationParams
7
+ * @property {string} input The string to split and reformat.
8
+ * @property {string} [ident] The indentation string. Default: ` ` (4 spaces).
9
+ * @property {string} [eol] The end of line sequence to use when rejoining
10
+ * the lines. Default: `'\n'`.
11
+ */
12
+
13
+ /**
14
+ * Given a string with line separators, either `\r\n` or `\n`, add indentation
15
+ * to all lines subsequent to the first line and rejoin the lines using an
16
+ * end of line sequence.
17
+ *
18
+ * @param {JoinLinesWithIndentationParams} input
19
+ *
20
+ * @returns {string} A string with lines subsequent to the first indented
21
+ * with the given indentation sequence.
22
+ */
23
+ function joinLinesWithIndentation ({ input, ident = ' ', eol = '\n' }) {
24
+ const lines = input.split(/\r?\n/)
25
+ for (let i = 1; i < lines.length; i += 1) {
26
+ lines[i] = ident + lines[i]
27
+ }
28
+ return lines.join(eol)
29
+ }
@@ -0,0 +1,16 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('node:test')
4
+ const joinLinesWithIndentation = require('./join-lines-with-indentation')
5
+
6
+ test('joinLinesWithIndentation adds indentation to beginning of subsequent lines', t => {
7
+ const input = 'foo\nbar\nbaz'
8
+ const result = joinLinesWithIndentation({ input })
9
+ t.assert.strictEqual(result, 'foo\n bar\n baz')
10
+ })
11
+
12
+ test('joinLinesWithIndentation accepts custom indentation, line breaks, and eol', t => {
13
+ const input = 'foo\nbar\r\nbaz'
14
+ const result = joinLinesWithIndentation({ input, ident: ' ', eol: '^' })
15
+ t.assert.strictEqual(result, 'foo^ bar^ baz')
16
+ })
@@ -0,0 +1,3 @@
1
+ 'use strict'
2
+
3
+ module.exports = function noop () {}
@@ -0,0 +1,12 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('node:test')
4
+ const noop = require('./noop')
5
+
6
+ test('is a function', t => {
7
+ t.assert.strictEqual(typeof noop, 'function')
8
+ })
9
+
10
+ test('does nothing', t => {
11
+ t.assert.strictEqual(noop('stuff'), undefined)
12
+ })
@@ -0,0 +1,171 @@
1
+ 'use strict'
2
+
3
+ module.exports = parseFactoryOptions
4
+
5
+ const {
6
+ LEVEL_NAMES
7
+ } = require('../constants')
8
+ const colors = require('../colors')
9
+ const handleCustomLevelsOpts = require('./handle-custom-levels-opts')
10
+ const handleCustomLevelsNamesOpts = require('./handle-custom-levels-names-opts')
11
+ const handleLevelLabelData = require('./get-level-label-data')
12
+
13
+ /**
14
+ * A `PrettyContext` is an object to be used by the various functions that
15
+ * process log data. It is derived from the provided {@link PinoPrettyOptions}.
16
+ * It may be used as a `this` context.
17
+ *
18
+ * @typedef {object} PrettyContext
19
+ * @property {string} EOL The escape sequence chosen as the line terminator.
20
+ * @property {string} IDENT The string to use as the indentation sequence.
21
+ * @property {ColorizerFunc} colorizer A configured colorizer function.
22
+ * @property {Array[Array<number, string>]} customColors A set of custom color
23
+ * names associated with level numbers.
24
+ * @property {object} customLevelNames A hash of level numbers to level names,
25
+ * e.g. `{ 30: "info" }`.
26
+ * @property {object} customLevels A hash of level names to level numbers,
27
+ * e.g. `{ info: 30 }`.
28
+ * @property {CustomPrettifiers} customPrettifiers A hash of custom prettifier
29
+ * functions.
30
+ * @property {object} customProperties Comprised of `customLevels` and
31
+ * `customLevelNames` if such options are provided.
32
+ * @property {string[]} errorLikeObjectKeys The key names in the log data that
33
+ * should be considered as holding error objects.
34
+ * @property {string[]} errorProps A list of error object keys that should be
35
+ * included in the output.
36
+ * @property {function} getLevelLabelData Pass a numeric level to return [levelLabelString,levelNum]
37
+ * @property {boolean} hideObject Indicates the prettifier should omit objects
38
+ * in the output.
39
+ * @property {string[]} ignoreKeys Set of log data keys to omit.
40
+ * @property {string[]} includeKeys Opposite of `ignoreKeys`.
41
+ * @property {boolean} levelFirst Indicates the level should be printed first.
42
+ * @property {string} levelKey Name of the key in the log data that contains
43
+ * the message.
44
+ * @property {string} levelLabel Format token to represent the position of the
45
+ * level name in the output string.
46
+ * @property {MessageFormatString|MessageFormatFunction} messageFormat
47
+ * @property {string} messageKey Name of the key in the log data that contains
48
+ * the message.
49
+ * @property {string|number} minimumLevel The minimum log level to process
50
+ * and output.
51
+ * @property {ColorizerFunc} objectColorizer
52
+ * @property {boolean} singleLine Indicates objects should be printed on a
53
+ * single output line.
54
+ * @property {string} timestampKey The name of the key in the log data that
55
+ * contains the log timestamp.
56
+ * @property {boolean} translateTime Indicates if timestamps should be
57
+ * translated to a human-readable string.
58
+ * @property {boolean} useOnlyCustomProps
59
+ */
60
+
61
+ /**
62
+ * @param {PinoPrettyOptions} options The user supplied object of options.
63
+ *
64
+ * @returns {PrettyContext}
65
+ */
66
+ function parseFactoryOptions (options) {
67
+ const EOL = options.crlf ? '\r\n' : '\n'
68
+ const IDENT = ' '
69
+ const {
70
+ customPrettifiers,
71
+ errorLikeObjectKeys,
72
+ hideObject,
73
+ levelFirst,
74
+ levelKey,
75
+ levelLabel,
76
+ messageFormat,
77
+ messageKey,
78
+ minimumLevel,
79
+ singleLine,
80
+ timestampKey,
81
+ translateTime
82
+ } = options
83
+ const errorProps = options.errorProps.split(',')
84
+ const useOnlyCustomProps = options.useOnlyCustomProps
85
+ const customLevels = handleCustomLevelsOpts(options.customLevels)
86
+ const customLevelNames = handleCustomLevelsNamesOpts(options.customLevels)
87
+ const getLevelLabelData = handleLevelLabelData(useOnlyCustomProps, customLevels, customLevelNames)
88
+
89
+ let customColors
90
+ if (options.customColors) {
91
+ if (typeof options.customColors === 'string') {
92
+ customColors = options.customColors.split(',').reduce((agg, value) => {
93
+ const [level, color] = value.split(':')
94
+ const condition = useOnlyCustomProps
95
+ ? options.customLevels
96
+ : customLevelNames[level] !== undefined
97
+ const levelNum = condition
98
+ ? customLevelNames[level]
99
+ : LEVEL_NAMES[level]
100
+ const colorIdx = levelNum !== undefined
101
+ ? levelNum
102
+ : level
103
+ agg.push([colorIdx, color])
104
+ return agg
105
+ }, [])
106
+ } else if (typeof options.customColors === 'object') {
107
+ customColors = Object.keys(options.customColors).reduce((agg, value) => {
108
+ const [level, color] = [value, options.customColors[value]]
109
+ const condition = useOnlyCustomProps
110
+ ? options.customLevels
111
+ : customLevelNames[level] !== undefined
112
+ const levelNum = condition
113
+ ? customLevelNames[level]
114
+ : LEVEL_NAMES[level]
115
+ const colorIdx = levelNum !== undefined
116
+ ? levelNum
117
+ : level
118
+ agg.push([colorIdx, color])
119
+ return agg
120
+ }, [])
121
+ } else {
122
+ throw new Error('options.customColors must be of type string or object.')
123
+ }
124
+ }
125
+
126
+ const customProperties = { customLevels, customLevelNames }
127
+ if (useOnlyCustomProps === true && !options.customLevels) {
128
+ customProperties.customLevels = undefined
129
+ customProperties.customLevelNames = undefined
130
+ }
131
+
132
+ const includeKeys = options.include !== undefined
133
+ ? new Set(options.include.split(','))
134
+ : undefined
135
+ const ignoreKeys = (!includeKeys && options.ignore)
136
+ ? new Set(options.ignore.split(','))
137
+ : undefined
138
+
139
+ const colorizer = colors(options.colorize, customColors, useOnlyCustomProps)
140
+ const objectColorizer = options.colorizeObjects
141
+ ? colorizer
142
+ : colors(false, [], false)
143
+
144
+ return {
145
+ EOL,
146
+ IDENT,
147
+ colorizer,
148
+ customColors,
149
+ customLevelNames,
150
+ customLevels,
151
+ customPrettifiers,
152
+ customProperties,
153
+ errorLikeObjectKeys,
154
+ errorProps,
155
+ getLevelLabelData,
156
+ hideObject,
157
+ ignoreKeys,
158
+ includeKeys,
159
+ levelFirst,
160
+ levelKey,
161
+ levelLabel,
162
+ messageFormat,
163
+ messageKey,
164
+ minimumLevel,
165
+ objectColorizer,
166
+ singleLine,
167
+ timestampKey,
168
+ translateTime,
169
+ useOnlyCustomProps
170
+ }
171
+ }
@@ -0,0 +1,76 @@
1
+ 'use strict'
2
+
3
+ module.exports = prettifyErrorLog
4
+
5
+ const {
6
+ LOGGER_KEYS
7
+ } = require('../constants')
8
+
9
+ const isObject = require('./is-object')
10
+ const joinLinesWithIndentation = require('./join-lines-with-indentation')
11
+ const prettifyObject = require('./prettify-object')
12
+ const stripUnsafeControlChars = require('./strip-unsafe-control-chars')
13
+
14
+ /**
15
+ * @typedef {object} PrettifyErrorLogParams
16
+ * @property {object} log The error log to prettify.
17
+ * @property {PrettyContext} context The context object built from parsing
18
+ * the options.
19
+ */
20
+
21
+ /**
22
+ * Given a log object that has a `type: 'Error'` key, prettify the object and
23
+ * return the result. In other
24
+ *
25
+ * @param {PrettifyErrorLogParams} input
26
+ *
27
+ * @returns {string} A string that represents the prettified error log.
28
+ */
29
+ function prettifyErrorLog ({ log, context }) {
30
+ const {
31
+ EOL: eol,
32
+ IDENT: ident,
33
+ errorProps: errorProperties,
34
+ messageKey
35
+ } = context
36
+ const stack = stripUnsafeControlChars(log.stack)
37
+ const joinedLines = joinLinesWithIndentation({ input: stack, ident, eol })
38
+ let result = `${ident}${joinedLines}${eol}`
39
+
40
+ if (errorProperties.length > 0) {
41
+ const excludeProperties = LOGGER_KEYS.concat(messageKey, 'type', 'stack')
42
+ let propertiesToPrint
43
+ if (errorProperties[0] === '*') {
44
+ // Print all sibling properties except for the standard exclusions.
45
+ propertiesToPrint = Object.keys(log).filter(k => excludeProperties.includes(k) === false)
46
+ } else {
47
+ // Print only specified properties unless the property is a standard exclusion.
48
+ propertiesToPrint = errorProperties.filter(k => excludeProperties.includes(k) === false)
49
+ }
50
+
51
+ for (let i = 0; i < propertiesToPrint.length; i += 1) {
52
+ const key = propertiesToPrint[i]
53
+ if (key in log === false) continue
54
+ const safeKey = stripUnsafeControlChars(key)
55
+ if (isObject(log[key])) {
56
+ // The nested object may have "logger" type keys but since they are not
57
+ // at the root level of the object being processed, we want to print them.
58
+ // Thus, we invoke with `excludeLoggerKeys: false`.
59
+ const prettifiedObject = prettifyObject({
60
+ log: log[key],
61
+ excludeLoggerKeys: false,
62
+ context: {
63
+ ...context,
64
+ IDENT: ident + ident
65
+ }
66
+ })
67
+ result = `${result}${ident}${safeKey}: {${eol}${prettifiedObject}${ident}}${eol}`
68
+ continue
69
+ }
70
+ const value = stripUnsafeControlChars(log[key])
71
+ result = `${result}${ident}${safeKey}: ${value}${eol}`
72
+ }
73
+ }
74
+
75
+ return result
76
+ }