@adviser/cement 0.4.7 → 0.4.8

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 (505) hide show
  1. package/base-basic-sys-abstraction.test.d.ts +2 -0
  2. package/base-basic-sys-abstraction.test.d.ts.map +1 -0
  3. package/base-basic-sys-abstraction.test.js +88 -0
  4. package/base-basic-sys-abstraction.test.js.map +1 -0
  5. package/{base-sys-abstraction-h0dB3nZ5.d.ts → base-sys-abstraction.d.ts} +23 -22
  6. package/base-sys-abstraction.d.ts.map +1 -0
  7. package/base-sys-abstraction.js +193 -0
  8. package/base-sys-abstraction.js.map +1 -0
  9. package/bin2text.d.ts +3 -0
  10. package/bin2text.d.ts.map +1 -0
  11. package/bin2text.js +43 -0
  12. package/bin2text.js.map +1 -0
  13. package/bin2text.test.d.ts +2 -0
  14. package/bin2text.test.d.ts.map +1 -0
  15. package/bin2text.test.js +51 -0
  16. package/bin2text.test.js.map +1 -0
  17. package/cf/cf-basic-sys-abstraction.d.ts +14 -0
  18. package/cf/cf-basic-sys-abstraction.d.ts.map +1 -0
  19. package/cf/cf-basic-sys-abstraction.js +67 -0
  20. package/cf/cf-basic-sys-abstraction.js.map +1 -0
  21. package/cf/cf-env-actions.d.ts +16 -0
  22. package/cf/cf-env-actions.d.ts.map +1 -0
  23. package/cf/cf-env-actions.js +53 -0
  24. package/cf/cf-env-actions.js.map +1 -0
  25. package/cf/index.d.ts +3 -30
  26. package/cf/index.d.ts.map +1 -0
  27. package/cf/index.js +2 -11
  28. package/cf/index.js.map +1 -1
  29. package/cf-test-main.d.ts +5 -0
  30. package/cf-test-main.d.ts.map +1 -0
  31. package/cf-test-main.js +12 -0
  32. package/cf-test-main.js.map +1 -0
  33. package/coerce-binary.d.ts +6 -0
  34. package/coerce-binary.d.ts.map +1 -0
  35. package/coerce-binary.js +32 -0
  36. package/coerce-binary.js.map +1 -0
  37. package/coerce-binary.test.d.ts +2 -0
  38. package/coerce-binary.test.d.ts.map +1 -0
  39. package/coerce-binary.test.js +39 -0
  40. package/coerce-binary.test.js.map +1 -0
  41. package/crypto.d.ts +76 -0
  42. package/crypto.d.ts.map +1 -0
  43. package/crypto.js +22 -0
  44. package/crypto.js.map +1 -0
  45. package/crypto.test.d.ts +2 -0
  46. package/crypto.test.d.ts.map +1 -0
  47. package/crypto.test.js +21 -0
  48. package/crypto.test.js.map +1 -0
  49. package/deno/deno-basic-sys-abstraction.d.ts +14 -0
  50. package/deno/deno-basic-sys-abstraction.d.ts.map +1 -0
  51. package/deno/deno-basic-sys-abstraction.js +35 -0
  52. package/deno/deno-basic-sys-abstraction.js.map +1 -0
  53. package/deno/deno-env-actions.d.ts +23 -0
  54. package/deno/deno-env-actions.d.ts.map +1 -0
  55. package/deno/deno-env-actions.js +40 -0
  56. package/deno/deno-env-actions.js.map +1 -0
  57. package/deno/deno-file-service.d.ts +17 -0
  58. package/deno/deno-file-service.d.ts.map +1 -0
  59. package/deno/deno-file-service.js +67 -0
  60. package/deno/deno-file-service.js.map +1 -0
  61. package/deno/deno-sys-abstraction.d.ts +19 -0
  62. package/deno/deno-sys-abstraction.d.ts.map +1 -0
  63. package/deno/deno-sys-abstraction.js +96 -0
  64. package/deno/deno-sys-abstraction.js.map +1 -0
  65. package/deno/index.d.ts +3 -37
  66. package/deno/index.d.ts.map +1 -0
  67. package/deno/index.js +2 -179
  68. package/deno/index.js.map +1 -1
  69. package/file-service.d.ts +17 -0
  70. package/file-service.d.ts.map +1 -0
  71. package/file-service.js +2 -0
  72. package/file-service.js.map +1 -0
  73. package/future.d.ts +8 -0
  74. package/future.d.ts.map +1 -0
  75. package/future.js +25 -0
  76. package/future.js.map +1 -0
  77. package/future.test.d.ts +2 -0
  78. package/future.test.d.ts.map +1 -0
  79. package/future.test.js +32 -0
  80. package/future.test.js.map +1 -0
  81. package/http_header.d.ts +29 -0
  82. package/http_header.d.ts.map +1 -0
  83. package/http_header.js +157 -0
  84. package/http_header.js.map +1 -0
  85. package/http_header.test.d.ts +2 -0
  86. package/http_header.test.d.ts.map +1 -0
  87. package/http_header.test.js +96 -0
  88. package/http_header.test.js.map +1 -0
  89. package/index.d.ts +29 -396
  90. package/index.d.ts.map +1 -0
  91. package/index.js +28 -609
  92. package/index.js.map +1 -1
  93. package/is-promise.d.ts +4 -0
  94. package/is-promise.d.ts.map +1 -0
  95. package/is-promise.js +10 -0
  96. package/is-promise.js.map +1 -0
  97. package/is-promise.test.d.ts +2 -0
  98. package/is-promise.test.d.ts.map +1 -0
  99. package/is-promise.test.js +48 -0
  100. package/is-promise.test.js.map +1 -0
  101. package/json-en-decoder.d.ts +12 -0
  102. package/json-en-decoder.d.ts.map +1 -0
  103. package/json-en-decoder.js +42 -0
  104. package/json-en-decoder.js.map +1 -0
  105. package/json-en-decoder.test.d.ts +2 -0
  106. package/json-en-decoder.test.d.ts.map +1 -0
  107. package/json-en-decoder.test.js +18 -0
  108. package/json-en-decoder.test.js.map +1 -0
  109. package/log-level-impl.d.ts +17 -0
  110. package/log-level-impl.d.ts.map +1 -0
  111. package/log-level-impl.js +75 -0
  112. package/log-level-impl.js.map +1 -0
  113. package/log-writer-impl.d.ts +11 -0
  114. package/log-writer-impl.d.ts.map +1 -0
  115. package/log-writer-impl.js +52 -0
  116. package/log-writer-impl.js.map +1 -0
  117. package/logger-impl.d.ts +75 -0
  118. package/logger-impl.d.ts.map +1 -0
  119. package/logger-impl.js +505 -0
  120. package/logger-impl.js.map +1 -0
  121. package/logger.d.ts +97 -0
  122. package/logger.d.ts.map +1 -0
  123. package/logger.js +150 -0
  124. package/logger.js.map +1 -0
  125. package/logger.test.d.ts +2 -0
  126. package/logger.test.d.ts.map +1 -0
  127. package/logger.test.js +1577 -0
  128. package/logger.test.js.map +1 -0
  129. package/lru-map-set.d.ts +33 -0
  130. package/lru-map-set.d.ts.map +1 -0
  131. package/lru-map-set.js +116 -0
  132. package/lru-map-set.js.map +1 -0
  133. package/lru-map-set.test.d.ts +2 -0
  134. package/lru-map-set.test.d.ts.map +1 -0
  135. package/lru-map-set.test.js +81 -0
  136. package/lru-map-set.test.js.map +1 -0
  137. package/node/index.d.ts +4 -45
  138. package/node/index.d.ts.map +1 -0
  139. package/node/index.js +3 -222
  140. package/node/index.js.map +1 -1
  141. package/node/mock-file-service.d.ts +11 -0
  142. package/node/mock-file-service.d.ts.map +1 -0
  143. package/node/mock-file-service.js +31 -0
  144. package/node/mock-file-service.js.map +1 -0
  145. package/node/mock-file-service.test.d.ts +2 -0
  146. package/node/mock-file-service.test.d.ts.map +1 -0
  147. package/node/mock-file-service.test.js +31 -0
  148. package/node/mock-file-service.test.js.map +1 -0
  149. package/node/node-basic-sys-abstraction.d.ts +25 -0
  150. package/node/node-basic-sys-abstraction.d.ts.map +1 -0
  151. package/node/node-basic-sys-abstraction.js +45 -0
  152. package/node/node-basic-sys-abstraction.js.map +1 -0
  153. package/node/node-env-actions.d.ts +15 -0
  154. package/node/node-env-actions.d.ts.map +1 -0
  155. package/node/node-env-actions.js +38 -0
  156. package/node/node-env-actions.js.map +1 -0
  157. package/node/node-file-service.d.ts +16 -0
  158. package/node/node-file-service.d.ts.map +1 -0
  159. package/node/node-file-service.js +72 -0
  160. package/node/node-file-service.js.map +1 -0
  161. package/node/node-sys-abstraction.d.ts +19 -0
  162. package/node/node-sys-abstraction.d.ts.map +1 -0
  163. package/node/node-sys-abstraction.js +95 -0
  164. package/node/node-sys-abstraction.js.map +1 -0
  165. package/node/node-sys-abstraction.test.d.ts +2 -0
  166. package/node/node-sys-abstraction.test.d.ts.map +1 -0
  167. package/node/node-sys-abstraction.test.js +83 -0
  168. package/node/node-sys-abstraction.test.js.map +1 -0
  169. package/option.d.ts +26 -0
  170. package/option.d.ts.map +1 -0
  171. package/option.js +54 -0
  172. package/option.js.map +1 -0
  173. package/package.json +4 -10
  174. package/path-ops.d.ts +7 -0
  175. package/path-ops.d.ts.map +1 -0
  176. package/path-ops.js +35 -0
  177. package/path-ops.js.map +1 -0
  178. package/path-ops.test.d.ts +2 -0
  179. package/path-ops.test.d.ts.map +1 -0
  180. package/path-ops.test.js +39 -0
  181. package/path-ops.test.js.map +1 -0
  182. package/resolve-once.d.ts +59 -0
  183. package/resolve-once.d.ts.map +1 -0
  184. package/resolve-once.js +212 -0
  185. package/resolve-once.js.map +1 -0
  186. package/resolve-once.test.d.ts +2 -0
  187. package/resolve-once.test.d.ts.map +1 -0
  188. package/resolve-once.test.js +392 -0
  189. package/resolve-once.test.js.map +1 -0
  190. package/result.d.ts +34 -0
  191. package/result.d.ts.map +1 -0
  192. package/result.js +94 -0
  193. package/result.js.map +1 -0
  194. package/result.test.d.ts +2 -0
  195. package/result.test.d.ts.map +1 -0
  196. package/result.test.js +83 -0
  197. package/result.test.js.map +1 -0
  198. package/runtime.d.ts +9 -0
  199. package/runtime.d.ts.map +1 -0
  200. package/runtime.js +33 -0
  201. package/runtime.js.map +1 -0
  202. package/src/jsr.json +1 -1
  203. package/src/uri.ts +62 -37
  204. package/sys-abstraction.d.ts +43 -0
  205. package/sys-abstraction.d.ts.map +1 -0
  206. package/sys-abstraction.js +28 -0
  207. package/sys-abstraction.js.map +1 -0
  208. package/sys-env.d.ts +46 -0
  209. package/sys-env.d.ts.map +1 -0
  210. package/sys-env.js +161 -0
  211. package/sys-env.js.map +1 -0
  212. package/sys-env.test.d.ts +2 -0
  213. package/sys-env.test.d.ts.map +1 -0
  214. package/sys-env.test.js +170 -0
  215. package/sys-env.test.js.map +1 -0
  216. package/test/index.d.ts +3 -4
  217. package/test/index.d.ts.map +1 -0
  218. package/test/index.js +2 -13
  219. package/test/index.js.map +1 -1
  220. package/test/log-write-stream.d.ts +27 -0
  221. package/test/log-write-stream.d.ts.map +1 -0
  222. package/test/log-write-stream.js +78 -0
  223. package/test/log-write-stream.js.map +1 -0
  224. package/test/mock-logger.d.ts +14 -0
  225. package/test/mock-logger.d.ts.map +1 -0
  226. package/test/mock-logger.js +29 -0
  227. package/test/mock-logger.js.map +1 -0
  228. package/test/mock-logger.test.d.ts +2 -0
  229. package/test/mock-logger.test.d.ts.map +1 -0
  230. package/test/mock-logger.test.js +63 -0
  231. package/test/mock-logger.test.js.map +1 -0
  232. package/test/test-exit-handler.d.ts +2 -0
  233. package/test/test-exit-handler.d.ts.map +1 -0
  234. package/test/test-exit-handler.js +61 -0
  235. package/test/test-exit-handler.js.map +1 -0
  236. package/time.d.ts +14 -0
  237. package/time.d.ts.map +1 -0
  238. package/time.js +13 -0
  239. package/time.js.map +1 -0
  240. package/tracer.d.ts +59 -0
  241. package/tracer.d.ts.map +1 -0
  242. package/tracer.js +174 -0
  243. package/tracer.js.map +1 -0
  244. package/tracer.test.d.ts +2 -0
  245. package/tracer.test.d.ts.map +1 -0
  246. package/tracer.test.js +304 -0
  247. package/tracer.test.js.map +1 -0
  248. package/ts/smoke/smoke.js +1 -1
  249. package/ts/smoke/smoke.js.map +1 -1
  250. package/ts/src/base-sys-abstraction.js +20 -8
  251. package/ts/src/base-sys-abstraction.js.map +1 -1
  252. package/ts/src/cf/cf-basic-sys-abstraction.js +3 -3
  253. package/ts/src/cf/cf-basic-sys-abstraction.js.map +1 -1
  254. package/ts/src/cf/cf-env-actions.js +3 -1
  255. package/ts/src/cf/cf-env-actions.js.map +1 -1
  256. package/ts/src/coerce-binary.js +1 -1
  257. package/ts/src/coerce-binary.js.map +1 -1
  258. package/ts/src/deno/deno-basic-sys-abstraction.js +3 -3
  259. package/ts/src/deno/deno-basic-sys-abstraction.js.map +1 -1
  260. package/ts/src/deno/deno-env-actions.js +3 -9
  261. package/ts/src/deno/deno-env-actions.js.map +1 -1
  262. package/ts/src/deno/deno-file-service.js +2 -0
  263. package/ts/src/deno/deno-file-service.js.map +1 -1
  264. package/ts/src/deno/deno-sys-abstraction.js +21 -21
  265. package/ts/src/deno/deno-sys-abstraction.js.map +1 -1
  266. package/ts/src/future.js +13 -26
  267. package/ts/src/future.js.map +1 -1
  268. package/ts/src/http_header.js +2 -3
  269. package/ts/src/http_header.js.map +1 -1
  270. package/ts/src/json-en-decoder.js +3 -2
  271. package/ts/src/json-en-decoder.js.map +1 -1
  272. package/ts/src/log-level-impl.js +4 -6
  273. package/ts/src/log-level-impl.js.map +1 -1
  274. package/ts/src/log-writer-impl.js +9 -5
  275. package/ts/src/log-writer-impl.js.map +1 -1
  276. package/ts/src/logger-impl.js +15 -5
  277. package/ts/src/logger-impl.js.map +1 -1
  278. package/ts/src/logger.js +3 -3
  279. package/ts/src/logger.js.map +1 -1
  280. package/ts/src/logger.test.js +7 -19
  281. package/ts/src/logger.test.js.map +1 -1
  282. package/ts/src/lru-map-set.js +3 -1
  283. package/ts/src/lru-map-set.js.map +1 -1
  284. package/ts/src/node/mock-file-service.js +1 -4
  285. package/ts/src/node/mock-file-service.js.map +1 -1
  286. package/ts/src/node/node-basic-sys-abstraction.js +4 -3
  287. package/ts/src/node/node-basic-sys-abstraction.js.map +1 -1
  288. package/ts/src/node/node-env-actions.js +3 -9
  289. package/ts/src/node/node-env-actions.js.map +1 -1
  290. package/ts/src/node/node-file-service.js +1 -0
  291. package/ts/src/node/node-file-service.js.map +1 -1
  292. package/ts/src/node/node-sys-abstraction.js +21 -21
  293. package/ts/src/node/node-sys-abstraction.js.map +1 -1
  294. package/ts/src/option.js +1 -0
  295. package/ts/src/option.js.map +1 -1
  296. package/ts/src/path-ops.js +21 -30
  297. package/ts/src/path-ops.js.map +1 -1
  298. package/ts/src/resolve-once.js +17 -13
  299. package/ts/src/resolve-once.js.map +1 -1
  300. package/ts/src/result.js +2 -0
  301. package/ts/src/result.js.map +1 -1
  302. package/ts/src/sys-abstraction.js +1 -1
  303. package/ts/src/sys-abstraction.js.map +1 -1
  304. package/ts/src/sys-env.js +2 -1
  305. package/ts/src/sys-env.js.map +1 -1
  306. package/ts/src/sys-env.test.js +6 -19
  307. package/ts/src/sys-env.test.js.map +1 -1
  308. package/ts/src/test/log-write-stream.js +10 -6
  309. package/ts/src/test/log-write-stream.js.map +1 -1
  310. package/ts/src/test/mock-logger.js +6 -6
  311. package/ts/src/test/mock-logger.js.map +1 -1
  312. package/ts/src/test/test-exit-handler.js +1 -2
  313. package/ts/src/test/test-exit-handler.js.map +1 -1
  314. package/ts/src/tracer.js +10 -3
  315. package/ts/src/tracer.js.map +1 -1
  316. package/ts/src/tracer.test.js +5 -9
  317. package/ts/src/tracer.test.js.map +1 -1
  318. package/ts/src/txt-en-decoder.js +2 -4
  319. package/ts/src/txt-en-decoder.js.map +1 -1
  320. package/ts/src/types.js +2 -6
  321. package/ts/src/types.js.map +1 -1
  322. package/ts/src/uri.d.ts +4 -0
  323. package/ts/src/uri.d.ts.map +1 -1
  324. package/ts/src/uri.js +54 -34
  325. package/ts/src/uri.js.map +1 -1
  326. package/ts/src/uri.test.js +27 -0
  327. package/ts/src/uri.test.js.map +1 -1
  328. package/ts/src/utils/console-write-stream.js +8 -5
  329. package/ts/src/utils/console-write-stream.js.map +1 -1
  330. package/ts/src/utils/fanout-write-stream.js +4 -1
  331. package/ts/src/utils/fanout-write-stream.js.map +1 -1
  332. package/ts/src/utils/rebuffer.test.js +1 -1
  333. package/ts/src/utils/rebuffer.test.js.map +1 -1
  334. package/ts/src/utils/relative-path.js +1 -0
  335. package/ts/src/utils/relative-path.js.map +1 -1
  336. package/ts/src/utils/stream-map.test.js +1 -1
  337. package/ts/src/utils/stream-map.test.js.map +1 -1
  338. package/ts/src/web/web-basic-sys-abstraction.js +3 -3
  339. package/ts/src/web/web-basic-sys-abstraction.js.map +1 -1
  340. package/ts/src/web/web-env-actions.js +2 -1
  341. package/ts/src/web/web-env-actions.js.map +1 -1
  342. package/txt-en-decoder.d.ts +11 -0
  343. package/txt-en-decoder.d.ts.map +1 -0
  344. package/txt-en-decoder.js +37 -0
  345. package/txt-en-decoder.js.map +1 -0
  346. package/txt-en-decoder.test.d.ts +2 -0
  347. package/txt-en-decoder.test.d.ts.map +1 -0
  348. package/txt-en-decoder.test.js +48 -0
  349. package/txt-en-decoder.test.js.map +1 -0
  350. package/types.d.ts +16 -0
  351. package/types.d.ts.map +1 -0
  352. package/types.js +11 -0
  353. package/types.js.map +1 -0
  354. package/uri.d.ts +137 -0
  355. package/uri.d.ts.map +1 -0
  356. package/uri.js +567 -0
  357. package/uri.js.map +1 -0
  358. package/uri.test.d.ts +2 -0
  359. package/uri.test.d.ts.map +1 -0
  360. package/uri.test.js +633 -0
  361. package/uri.test.js.map +1 -0
  362. package/utils/coerce-uint8.d.ts +8 -0
  363. package/utils/coerce-uint8.d.ts.map +1 -0
  364. package/utils/coerce-uint8.js +34 -0
  365. package/utils/coerce-uint8.js.map +1 -0
  366. package/utils/console-write-stream.d.ts +21 -0
  367. package/utils/console-write-stream.d.ts.map +1 -0
  368. package/utils/console-write-stream.js +66 -0
  369. package/utils/console-write-stream.js.map +1 -0
  370. package/utils/fanout-write-stream.d.ts +12 -0
  371. package/utils/fanout-write-stream.d.ts.map +1 -0
  372. package/utils/fanout-write-stream.js +27 -0
  373. package/utils/fanout-write-stream.js.map +1 -0
  374. package/utils/get-params-result.d.ts +8 -0
  375. package/utils/get-params-result.d.ts.map +1 -0
  376. package/utils/get-params-result.js +45 -0
  377. package/utils/get-params-result.js.map +1 -0
  378. package/utils/index.d.ts +12 -3
  379. package/utils/index.d.ts.map +1 -0
  380. package/utils/index.js +11 -50
  381. package/utils/index.js.map +1 -1
  382. package/utils/rebuffer.d.ts +3 -0
  383. package/utils/rebuffer.d.ts.map +1 -0
  384. package/utils/rebuffer.js +66 -0
  385. package/utils/rebuffer.js.map +1 -0
  386. package/utils/rebuffer.test.d.ts +2 -0
  387. package/utils/rebuffer.test.d.ts.map +1 -0
  388. package/utils/rebuffer.test.js +77 -0
  389. package/utils/rebuffer.test.js.map +1 -0
  390. package/utils/relative-path.d.ts +18 -0
  391. package/utils/relative-path.d.ts.map +1 -0
  392. package/utils/relative-path.js +148 -0
  393. package/utils/relative-path.js.map +1 -0
  394. package/utils/relative-path.test.d.ts +2 -0
  395. package/utils/relative-path.test.d.ts.map +1 -0
  396. package/utils/relative-path.test.js +187 -0
  397. package/utils/relative-path.test.js.map +1 -0
  398. package/utils/sorted-objec.test.d.ts +2 -0
  399. package/utils/sorted-objec.test.d.ts.map +1 -0
  400. package/utils/sorted-objec.test.js +20 -0
  401. package/utils/sorted-objec.test.js.map +1 -0
  402. package/utils/sorted-object.d.ts +4 -0
  403. package/utils/sorted-object.d.ts.map +1 -0
  404. package/utils/sorted-object.js +16 -0
  405. package/utils/sorted-object.js.map +1 -0
  406. package/utils/stream-map.d.ts +9 -0
  407. package/utils/stream-map.d.ts.map +1 -0
  408. package/utils/stream-map.js +63 -0
  409. package/utils/stream-map.js.map +1 -0
  410. package/utils/stream-map.test.d.ts +2 -0
  411. package/utils/stream-map.test.d.ts.map +1 -0
  412. package/utils/stream-map.test.js +87 -0
  413. package/utils/stream-map.test.js.map +1 -0
  414. package/utils/stream-test-helper.d.ts +17 -0
  415. package/utils/stream-test-helper.d.ts.map +1 -0
  416. package/utils/stream-test-helper.js +45 -0
  417. package/utils/stream-test-helper.js.map +1 -0
  418. package/utils/stream2string.d.ts +3 -0
  419. package/utils/stream2string.d.ts.map +1 -0
  420. package/utils/stream2string.js +48 -0
  421. package/utils/stream2string.js.map +1 -0
  422. package/utils/stream2string.test.d.ts +2 -0
  423. package/utils/stream2string.test.d.ts.map +1 -0
  424. package/utils/stream2string.test.js +29 -0
  425. package/utils/stream2string.test.js.map +1 -0
  426. package/utils/string2stream.d.ts +4 -0
  427. package/utils/string2stream.d.ts.map +1 -0
  428. package/utils/string2stream.js +13 -0
  429. package/utils/string2stream.js.map +1 -0
  430. package/utils/string2stream.test.d.ts +2 -0
  431. package/utils/string2stream.test.d.ts.map +1 -0
  432. package/utils/string2stream.test.js +6 -0
  433. package/utils/string2stream.test.js.map +1 -0
  434. package/utils/stripper.d.ts +3 -0
  435. package/utils/stripper.d.ts.map +1 -0
  436. package/utils/stripper.js +59 -0
  437. package/utils/stripper.js.map +1 -0
  438. package/utils/stripper.test.d.ts +2 -0
  439. package/utils/stripper.test.d.ts.map +1 -0
  440. package/utils/stripper.test.js +128 -0
  441. package/utils/stripper.test.js.map +1 -0
  442. package/utils/uint8array-equal.d.ts +2 -0
  443. package/utils/uint8array-equal.d.ts.map +1 -0
  444. package/utils/uint8array-equal.js +12 -0
  445. package/utils/uint8array-equal.js.map +1 -0
  446. package/version.d.ts +2 -0
  447. package/version.d.ts.map +1 -0
  448. package/version.js +4 -0
  449. package/version.js.map +1 -0
  450. package/web/index.d.ts +2 -7
  451. package/web/index.d.ts.map +1 -0
  452. package/web/index.js +1 -7
  453. package/web/index.js.map +1 -1
  454. package/web/web-basic-sys-abstraction.d.ts +4 -0
  455. package/web/web-basic-sys-abstraction.d.ts.map +1 -0
  456. package/web/web-basic-sys-abstraction.js +45 -0
  457. package/web/web-basic-sys-abstraction.js.map +1 -0
  458. package/web/web-env-actions.d.ts +14 -0
  459. package/web/web-env-actions.d.ts.map +1 -0
  460. package/web/web-env-actions.js +36 -0
  461. package/web/web-env-actions.js.map +1 -0
  462. package/base-sys-abstraction-DgTynXGV.d.cts +0 -95
  463. package/cf/index.cjs +0 -1110
  464. package/cf/index.cjs.map +0 -1
  465. package/cf/index.d.cts +0 -30
  466. package/chunk-2DWEYXJH.js +0 -1681
  467. package/chunk-2DWEYXJH.js.map +0 -1
  468. package/chunk-FOALXQST.js +0 -89
  469. package/chunk-FOALXQST.js.map +0 -1
  470. package/chunk-FURW5CDL.js +0 -792
  471. package/chunk-FURW5CDL.js.map +0 -1
  472. package/chunk-NJMNJYN2.js +0 -270
  473. package/chunk-NJMNJYN2.js.map +0 -1
  474. package/chunk-NTOGMD33.js +0 -684
  475. package/chunk-NTOGMD33.js.map +0 -1
  476. package/deno/index.cjs +0 -1280
  477. package/deno/index.cjs.map +0 -1
  478. package/deno/index.d.cts +0 -37
  479. package/get-params-result-4xHM5s4_.d.cts +0 -71
  480. package/get-params-result-4xHM5s4_.d.ts +0 -71
  481. package/index-CMLb7JSe.d.ts +0 -97
  482. package/index-DH243CLH.d.cts +0 -297
  483. package/index-LQOsS7gM.d.cts +0 -97
  484. package/index-RMC1sv15.d.ts +0 -297
  485. package/index.cjs +0 -4009
  486. package/index.cjs.map +0 -1
  487. package/index.d.cts +0 -396
  488. package/metafile-cjs.json +0 -1
  489. package/metafile-esm.json +0 -1
  490. package/node/index.cjs +0 -1335
  491. package/node/index.cjs.map +0 -1
  492. package/node/index.d.cts +0 -45
  493. package/stripper-BpBUUZ9p.d.cts +0 -4
  494. package/stripper-BpBUUZ9p.d.ts +0 -4
  495. package/sys-abstraction-CeAxxg9H.d.ts +0 -117
  496. package/sys-abstraction-DDAwGTnk.d.cts +0 -117
  497. package/test/index.cjs +0 -2994
  498. package/test/index.cjs.map +0 -1
  499. package/test/index.d.cts +0 -4
  500. package/utils/index.cjs +0 -778
  501. package/utils/index.cjs.map +0 -1
  502. package/utils/index.d.cts +0 -3
  503. package/web/index.cjs +0 -1153
  504. package/web/index.cjs.map +0 -1
  505. package/web/index.d.cts +0 -7
package/logger.test.js ADDED
@@ -0,0 +1,1577 @@
1
+ import { TimeFactory, IsLogger, Level, LevelHandlerImpl, LogCollector, LoggerImpl, logValue, Result, runtimeFn, TimeMode, BuildURI, URI, MutableURL, JSONFormatter, YAMLFormatter, BasicSysAbstractionFactory, } from "@adviser/cement";
2
+ import { stripper } from "./utils/stripper.js";
3
+ describe("TestLogger", () => {
4
+ let logCollector;
5
+ let logger;
6
+ beforeEach(() => {
7
+ logCollector = new LogCollector();
8
+ logger = new LoggerImpl({
9
+ out: logCollector,
10
+ sys: BasicSysAbstractionFactory({ TimeMode: TimeMode.STEP }),
11
+ levelHandler: new LevelHandlerImpl(),
12
+ });
13
+ });
14
+ describe("Error()", () => {
15
+ it("should set the level attribute to error", async () => {
16
+ logger.Error().Msg("");
17
+ await logger.Flush();
18
+ expect(logCollector.Logs()).toEqual([{ level: "error" }]);
19
+ });
20
+ it("should set the error message", async () => {
21
+ logger.Err(new Error("test")).Msg("");
22
+ await logger.Flush();
23
+ expect(logCollector.Logs()).toEqual([{ error: "test" }]);
24
+ });
25
+ it("should set the error from string", async () => {
26
+ logger.Err("test").Msg("");
27
+ await logger.Flush();
28
+ expect(logCollector.Logs()).toEqual([{ error: "test" }]);
29
+ });
30
+ it("should set the error from bool", async () => {
31
+ logger.Err(false).Msg("");
32
+ await logger.Flush();
33
+ expect(logCollector.Logs()).toEqual([{ error: false }]);
34
+ });
35
+ });
36
+ describe("Info()", () => {
37
+ it("should set the level attribute to info", async () => {
38
+ logger.Info().Msg("");
39
+ await logger.Flush();
40
+ expect(logCollector.Logs()).toEqual([{ level: "info" }]);
41
+ });
42
+ });
43
+ describe("Any()", () => {
44
+ it("should set the Any attribute", async () => {
45
+ logger.Any("key", "value").Msg("");
46
+ await logger.Flush();
47
+ expect(logCollector.Logs()).toEqual([{ key: "value" }]);
48
+ });
49
+ });
50
+ describe("Dur()", () => {
51
+ it("should set the Dur attribute", async () => {
52
+ logger.Dur("key", 123).Msg("");
53
+ await logger.Flush();
54
+ expect(logCollector.Logs()).toEqual([{ key: "123ms" }]);
55
+ });
56
+ });
57
+ describe("Uint64()", () => {
58
+ it("should set the Uint64 / number attribute", async () => {
59
+ logger.Uint64("Hey", 123).Msg("");
60
+ await logger.Flush();
61
+ expect(logCollector.Logs()).toEqual([{ Hey: 123 }]);
62
+ });
63
+ });
64
+ describe("Str()", () => {
65
+ it("should set the String attribute", async () => {
66
+ logger.Str("key", "value").Msg("");
67
+ await logger.Flush();
68
+ expect(logCollector.Logs()).toEqual([{ key: "value" }]);
69
+ });
70
+ });
71
+ describe("With()", () => {
72
+ it("should return a new logger with the same attributes", async () => {
73
+ const log = logger.With().Str("key", "value").Logger();
74
+ const newLogger = log.With().Str("str", "str").Logger();
75
+ logger.Msg("logger1");
76
+ logger.Msg("logger2");
77
+ newLogger.Msg("newLogger1");
78
+ newLogger.Msg("newLogger2");
79
+ log.Info().Msg("log1");
80
+ log.Info().Msg("log2");
81
+ await log.Flush();
82
+ expect(logCollector.Logs()).toEqual([
83
+ { msg: "logger1" },
84
+ { msg: "logger2" },
85
+ { key: "value", msg: "newLogger1", str: "str" },
86
+ { key: "value", msg: "newLogger2", str: "str" },
87
+ { level: "info", key: "value", msg: "log1" },
88
+ { level: "info", key: "value", msg: "log2" },
89
+ ]);
90
+ });
91
+ });
92
+ describe("Timestamp()", () => {
93
+ it("should set the Timestamp attribute", async () => {
94
+ const WithConstant = logger.With().Str("key", "withconstant").Str("key1", "anotherone").Logger();
95
+ const timelog = WithConstant.With().Timestamp().Str("key", "withconstant2").Logger();
96
+ timelog.Msg("1");
97
+ timelog.Msg("2");
98
+ timelog.Timestamp().Msg("3");
99
+ await timelog.Flush();
100
+ const timer = TimeFactory(TimeMode.STEP);
101
+ expect(logCollector.Logs()).toEqual([
102
+ {
103
+ key: "withconstant2",
104
+ key1: "anotherone",
105
+ ts: timer.Now().toISOString(),
106
+ msg: "1",
107
+ },
108
+ {
109
+ key: "withconstant2",
110
+ key1: "anotherone",
111
+ ts: timer.Now().toISOString(),
112
+ msg: "2",
113
+ },
114
+ {
115
+ key: "withconstant2",
116
+ key1: "anotherone",
117
+ ts: timer.Now().toISOString(),
118
+ msg: "3",
119
+ },
120
+ ]);
121
+ });
122
+ it("should NOT set the Timestamp attribute", async () => {
123
+ const timelog = logger.With().Logger();
124
+ timelog.Msg("1");
125
+ timelog.Msg("2");
126
+ timelog.Timestamp().Msg("3");
127
+ await timelog.Flush();
128
+ const timer = TimeFactory(TimeMode.STEP);
129
+ expect(logCollector.Logs()).toEqual([
130
+ { msg: "1" },
131
+ { msg: "2" },
132
+ {
133
+ ts: timer.Now().toISOString(),
134
+ msg: "3",
135
+ },
136
+ ]);
137
+ });
138
+ });
139
+ it("remove empty msg", async () => {
140
+ const log = logger;
141
+ log.Warn().Msg();
142
+ await log.Flush();
143
+ expect(logCollector.Logs()).toEqual([{ level: "warn" }]);
144
+ });
145
+ it("check log level", async () => {
146
+ const log = logger.With().Module("test").Logger().With().Logger();
147
+ log.Warn().Msg("Warn");
148
+ log.Info().Msg("Info");
149
+ log.Error().Msg("Error");
150
+ log.Log().Msg("Log");
151
+ log.WithLevel(Level.ERROR).Msg("WithLevel");
152
+ log.Debug().Str("should", "reset").Msg("Debug");
153
+ log.Info().Str("what", "the").Msg("Simple");
154
+ await log.Flush();
155
+ const expected = [
156
+ { msg: "Warn", level: "warn", module: "test" },
157
+ { msg: "Info", level: "info", module: "test" },
158
+ { msg: "Error", level: "error", module: "test" },
159
+ { msg: "Log", module: "test" },
160
+ { msg: "WithLevel", level: "error", module: "test" },
161
+ { level: "info", module: "test", msg: "Simple", what: "the" },
162
+ ];
163
+ expect(logCollector.Logs()).toEqual(expected);
164
+ logCollector.Logs().splice(0, logCollector.Logs().length);
165
+ logger.With().Logger().SetDebug("test");
166
+ log.Debug().Msg("Debug1");
167
+ await log.Flush();
168
+ expect(logCollector.Logs()).toEqual([...expected, { msg: "Debug1", level: "debug", module: "test" }]);
169
+ });
170
+ it("should flush all logs", async () => {
171
+ const log = new LoggerImpl();
172
+ log.Info().Msg("1");
173
+ log.Info().Msg("2");
174
+ await log.Flush();
175
+ log.Info().Msg("DONE");
176
+ return log.Flush();
177
+ });
178
+ it("carry debug", async () => {
179
+ const log = logger;
180
+ log.Module("xxx").SetDebug("yyy", ["i , xxx"]);
181
+ log.Debug().Msg("Debug1");
182
+ const next1 = log.With().Str("next1", "meno").Logger();
183
+ next1.Debug().Msg("Next1");
184
+ const next2 = next1.With().Str("next2", "meno").Logger();
185
+ next2.Debug().Msg("Next2");
186
+ next2.Module("zzz");
187
+ next2.Debug().Msg("Next3");
188
+ log.Debug().Msg("Top");
189
+ next1.Debug().Msg("Next1");
190
+ await log.Flush();
191
+ expect(logCollector.Logs()).toEqual([
192
+ {
193
+ level: "debug",
194
+ module: "xxx",
195
+ msg: "Debug1",
196
+ },
197
+ {
198
+ level: "debug",
199
+ module: "xxx",
200
+ msg: "Next1",
201
+ next1: "meno",
202
+ },
203
+ {
204
+ level: "debug",
205
+ module: "xxx",
206
+ msg: "Next2",
207
+ next1: "meno",
208
+ next2: "meno",
209
+ },
210
+ {
211
+ level: "debug",
212
+ module: "xxx",
213
+ msg: "Top",
214
+ },
215
+ {
216
+ level: "debug",
217
+ module: "xxx",
218
+ msg: "Next1",
219
+ next1: "meno",
220
+ },
221
+ ]);
222
+ });
223
+ it("should return an Error on Msg", async () => {
224
+ const log = logger;
225
+ log.Module("xxx").SetDebug("xxx");
226
+ log.Debug().Msg("Debug1");
227
+ expect(JSON.parse(log.Debug().Msg("Debug2").AsError().message)).toEqual({
228
+ level: "debug",
229
+ module: "xxx",
230
+ msg: "Debug2",
231
+ });
232
+ expect(JSON.parse(log.Info().Msg("Info2").AsError().message)).toEqual({
233
+ level: "info",
234
+ module: "xxx",
235
+ msg: "Info2",
236
+ });
237
+ await log.Flush();
238
+ expect(logCollector.Logs()).toEqual([
239
+ {
240
+ level: "debug",
241
+ module: "xxx",
242
+ msg: "Debug1",
243
+ },
244
+ {
245
+ level: "debug",
246
+ module: "xxx",
247
+ msg: "Debug2",
248
+ },
249
+ {
250
+ level: "info",
251
+ module: "xxx",
252
+ msg: "Info2",
253
+ },
254
+ ]);
255
+ });
256
+ it("top should enable modules wildcard", async () => {
257
+ const log = logger;
258
+ const xxxModule = log.With().Module("xxx").Logger();
259
+ log.Debug().Msg("log-Msg0");
260
+ xxxModule.Debug().Msg("xxx-log-Msg0");
261
+ log.EnableLevel(Level.DEBUG);
262
+ log.Debug().Msg("log-Msg");
263
+ xxxModule.Debug().Msg("xxx-log-Msg");
264
+ const yyyModule = log.With().Module("yyy").Logger();
265
+ yyyModule.Debug().Msg("yyy-log-Msg");
266
+ log.DisableLevel(Level.DEBUG);
267
+ yyyModule.Debug().Msg("yyy-log-Msg1");
268
+ log.Debug().Msg("log-Msg1");
269
+ xxxModule.Debug().Msg("xxx-log-Msg1");
270
+ await log.Flush();
271
+ expect(logCollector.Logs()).toEqual([
272
+ {
273
+ level: "debug",
274
+ msg: "log-Msg",
275
+ },
276
+ {
277
+ level: "debug",
278
+ module: "xxx",
279
+ msg: "xxx-log-Msg",
280
+ },
281
+ {
282
+ level: "debug",
283
+ module: "yyy",
284
+ msg: "yyy-log-Msg",
285
+ },
286
+ ]);
287
+ });
288
+ it("down should enable modules wildcard", async () => {
289
+ const log = logger;
290
+ const xxxModule = log.With().Module("xxx").Logger();
291
+ log.Debug().Msg("log-Msg");
292
+ xxxModule.Debug().Msg("xxx-log-Msg");
293
+ xxxModule.EnableLevel(Level.DEBUG);
294
+ log.Debug().Msg("log-Msg1");
295
+ xxxModule.Debug().Msg("xxx-log-Msg1");
296
+ const yyyModule = log.With().Module("yyy").Logger();
297
+ yyyModule.Debug().Msg("yyy-log-Msg");
298
+ yyyModule.DisableLevel(Level.DEBUG);
299
+ log.Debug().Msg("log-Msg2");
300
+ xxxModule.Debug().Msg("xxx-log-Msg2");
301
+ yyyModule.Debug().Msg("yyy-log-Msg2");
302
+ await log.Flush();
303
+ expect(logCollector.Logs()).toEqual([
304
+ {
305
+ level: "debug",
306
+ msg: "log-Msg1",
307
+ },
308
+ {
309
+ level: "debug",
310
+ module: "xxx",
311
+ msg: "xxx-log-Msg1",
312
+ },
313
+ {
314
+ level: "debug",
315
+ module: "yyy",
316
+ msg: "yyy-log-Msg",
317
+ },
318
+ ]);
319
+ });
320
+ it("global set debug on modules", async () => {
321
+ const log = logger;
322
+ const xxxModule = log.With().Module("xxx").Logger();
323
+ log.Debug().Msg("log-Msg");
324
+ xxxModule.Debug().Msg("xxx-log-Msg");
325
+ await log.Flush();
326
+ expect(logCollector.Logs()).toEqual([]);
327
+ xxxModule.EnableLevel(Level.DEBUG, "yyy", "xxx");
328
+ const yyyModule = log.With().Module("yyy").Logger();
329
+ yyyModule.Debug().Msg("yyy-log-Msg");
330
+ xxxModule.Debug().Msg("xxx-log-Msg1");
331
+ log.Debug().Msg("log-Msg1");
332
+ yyyModule.DisableLevel(Level.DEBUG, "yyy");
333
+ yyyModule.Debug().Msg("yyy-log-Msg1");
334
+ xxxModule.Debug().Msg("xxx-log-Msg2");
335
+ log.Debug().Msg("log-Msg3");
336
+ await log.Flush();
337
+ expect(logCollector.Logs()).toEqual([
338
+ {
339
+ level: "debug",
340
+ module: "yyy",
341
+ msg: "yyy-log-Msg",
342
+ },
343
+ {
344
+ level: "debug",
345
+ module: "xxx",
346
+ msg: "xxx-log-Msg1",
347
+ },
348
+ {
349
+ level: "debug",
350
+ module: "xxx",
351
+ msg: "xxx-log-Msg2",
352
+ },
353
+ ]);
354
+ });
355
+ it("global Check", () => {
356
+ const g1 = new LoggerImpl().EnableLevel(Level.DEBUG);
357
+ const g2 = new LoggerImpl();
358
+ const g3 = g2.With().Module("X").Logger();
359
+ expect(g1.levelHandler).toBe(g2.levelHandler);
360
+ expect(g1.levelHandler).toBe(g3.levelHandler);
361
+ expect(g1.levelHandler._globalLevels.has(Level.DEBUG)).toBeTruthy();
362
+ expect(g2.levelHandler._globalLevels.has(Level.DEBUG)).toBeTruthy();
363
+ expect(g3.levelHandler._globalLevels.has(Level.DEBUG)).toBeTruthy();
364
+ });
365
+ it("isLogger", () => {
366
+ const log = new LoggerImpl();
367
+ expect(IsLogger(log)).toBeTruthy();
368
+ expect(IsLogger({
369
+ Info: () => log.Info(),
370
+ Flush: () => log.Flush(),
371
+ With: () => log.With(),
372
+ })).toBeFalsy();
373
+ });
374
+ it("bool", async () => {
375
+ const log = logger;
376
+ log.Info().Bool("true", true).Msg("1");
377
+ log.Info().Bool("false", false).Msg("2");
378
+ log.Info().Bool("true", "wurst").Msg("3");
379
+ log.Info().Bool("false", null).Msg("4");
380
+ await log.Flush();
381
+ expect(logCollector.Logs()).toEqual([
382
+ {
383
+ level: "info",
384
+ msg: "1",
385
+ true: true,
386
+ },
387
+ {
388
+ false: false,
389
+ level: "info",
390
+ msg: "2",
391
+ },
392
+ {
393
+ level: "info",
394
+ msg: "3",
395
+ true: true,
396
+ },
397
+ {
398
+ false: false,
399
+ level: "info",
400
+ msg: "4",
401
+ },
402
+ ]);
403
+ });
404
+ it("int", async () => {
405
+ const log = logger;
406
+ log.Info().Int("1", 1).Msg("1");
407
+ log.Info().Int("2", 2).Msg("2");
408
+ log.Info().Int("3", 3).Msg("3");
409
+ log.Info().Int("4", 4).Msg("4");
410
+ await log.Flush();
411
+ expect(logCollector.Logs()).toEqual([
412
+ {
413
+ "1": 1,
414
+ level: "info",
415
+ msg: "1",
416
+ },
417
+ {
418
+ "2": 2,
419
+ level: "info",
420
+ msg: "2",
421
+ },
422
+ {
423
+ "3": 3,
424
+ level: "info",
425
+ msg: "3",
426
+ },
427
+ {
428
+ "4": 4,
429
+ level: "info",
430
+ msg: "4",
431
+ },
432
+ ]);
433
+ });
434
+ it("int", async () => {
435
+ const log = logger;
436
+ log.Info().Int("1", 1).Msg("1");
437
+ log.Info().Int("2", 2).Msg("2");
438
+ log.Info().Int("3", 3).Msg("3");
439
+ log.Info().Int("4", 4).Msg("4");
440
+ await log.Flush();
441
+ expect(logCollector.Logs()).toEqual([
442
+ {
443
+ "1": 1,
444
+ level: "info",
445
+ msg: "1",
446
+ },
447
+ {
448
+ "2": 2,
449
+ level: "info",
450
+ msg: "2",
451
+ },
452
+ {
453
+ "3": 3,
454
+ level: "info",
455
+ msg: "3",
456
+ },
457
+ {
458
+ "4": 4,
459
+ level: "info",
460
+ msg: "4",
461
+ },
462
+ ]);
463
+ });
464
+ it("ref", async () => {
465
+ const log = logger;
466
+ let value = 4711;
467
+ const fn = () => "" + value++;
468
+ log.Info().Ref("1", { toString: fn }).Msg("1");
469
+ log.Info().Ref("2", { toString: fn }).Msg("2");
470
+ log.Info().Ref("3", fn).Msg("3");
471
+ log.Info().Ref("4", fn).Msg("4");
472
+ await log.Flush();
473
+ expect(logCollector.Logs()).toEqual([
474
+ {
475
+ "1": "4711",
476
+ level: "info",
477
+ msg: "1",
478
+ },
479
+ {
480
+ "2": "4712",
481
+ level: "info",
482
+ msg: "2",
483
+ },
484
+ {
485
+ "3": "4713",
486
+ level: "info",
487
+ msg: "3",
488
+ },
489
+ {
490
+ "4": "4714",
491
+ level: "info",
492
+ msg: "4",
493
+ },
494
+ ]);
495
+ });
496
+ it("result", async () => {
497
+ const log = logger;
498
+ log.Info().Result("res.ok", Result.Ok(4711)).Msg("1");
499
+ log.Info().Result("res.err", Result.Err("Error")).Msg("2");
500
+ await log.Flush();
501
+ expect(logCollector.Logs()).toEqual([
502
+ {
503
+ level: "info",
504
+ msg: "1",
505
+ "res.ok": 4711,
506
+ },
507
+ {
508
+ error: "Error",
509
+ level: "info",
510
+ msg: "2",
511
+ },
512
+ ]);
513
+ });
514
+ it("url", async () => {
515
+ const log = logger;
516
+ const url = new MutableURL("http://localhost:8080");
517
+ log.Info().Url(url).Msg("1");
518
+ url.searchParams.set("test", "1");
519
+ log.Info().Url(url).Msg("2");
520
+ await log.Flush();
521
+ expect(logCollector.Logs()).toEqual([
522
+ {
523
+ level: "info",
524
+ msg: "1",
525
+ url: "http://localhost:8080/",
526
+ },
527
+ {
528
+ level: "info",
529
+ msg: "2",
530
+ url: "http://localhost:8080/?test=1",
531
+ },
532
+ ]);
533
+ });
534
+ it("str", async () => {
535
+ const log = logger;
536
+ log.Error().Str("1", undefined).Msg("1");
537
+ await log.Flush();
538
+ expect(logCollector.Logs()).toEqual([
539
+ {
540
+ "1": "--Falsy--",
541
+ level: "error",
542
+ msg: "1",
543
+ },
544
+ ]);
545
+ });
546
+ it("len", async () => {
547
+ const log = logger;
548
+ for (const key of [undefined, "key"]) {
549
+ log.Info().Len(undefined, key).Msg("undefined");
550
+ log.Info().Len(null, key).Msg("null");
551
+ log
552
+ .Info()
553
+ .Len(true, key)
554
+ .Msg("bool");
555
+ log
556
+ .Info()
557
+ .Len(1, key)
558
+ .Msg("number");
559
+ log.Info().Len("string", key).Msg("string");
560
+ log
561
+ .Info()
562
+ .Len(new Uint8Array([1, 2]), key)
563
+ .Msg("uint8array");
564
+ log
565
+ .Info()
566
+ .Len(Array.from([1, 2]), key)
567
+ .Msg("Array");
568
+ log.Info().Len({ a: 1 }, key).Msg("object");
569
+ }
570
+ await log.Flush();
571
+ expect(logCollector.Logs()).toEqual(Array.from(["len", "key"])
572
+ .map((key) => [
573
+ {
574
+ [key]: -1,
575
+ level: "info",
576
+ msg: "undefined",
577
+ },
578
+ {
579
+ [key]: -1,
580
+ level: "info",
581
+ msg: "null",
582
+ },
583
+ {
584
+ [key]: -1,
585
+ level: "info",
586
+ msg: "bool",
587
+ },
588
+ {
589
+ [key]: -1,
590
+ level: "info",
591
+ msg: "number",
592
+ },
593
+ {
594
+ [key]: 6,
595
+ level: "info",
596
+ msg: "string",
597
+ },
598
+ {
599
+ [key]: 2,
600
+ level: "info",
601
+ msg: "uint8array",
602
+ },
603
+ {
604
+ [key]: 2,
605
+ level: "info",
606
+ msg: "Array",
607
+ },
608
+ {
609
+ [key]: 1,
610
+ level: "info",
611
+ msg: "object",
612
+ },
613
+ ])
614
+ .flat());
615
+ });
616
+ it("wildcard debug", async () => {
617
+ const m1 = logger.With().Module("m1").Logger();
618
+ const m2 = logger.With().Module("m2").Logger();
619
+ m1.Debug().Msg("m1");
620
+ m2.Debug().Msg("m2");
621
+ logger.SetDebug("*");
622
+ m1.Debug().Msg("m3");
623
+ m2.Debug().Msg("m4");
624
+ await logger.Flush();
625
+ expect(logCollector.Logs()).toEqual([
626
+ {
627
+ level: "debug",
628
+ module: "m1",
629
+ msg: "m3",
630
+ },
631
+ {
632
+ level: "debug",
633
+ module: "m2",
634
+ msg: "m4",
635
+ },
636
+ ]);
637
+ });
638
+ it("array setDebug could receive anything", () => {
639
+ function c(u) {
640
+ return u;
641
+ }
642
+ logger.SetDebug(c(1), c(true), c(null), c(undefined), "", "test ", "test1, ,test2,,test3,,,more", [
643
+ c(2),
644
+ c(true),
645
+ c(null),
646
+ c(undefined),
647
+ "",
648
+ " testx",
649
+ "test1x , , test2x,, test3x ,,,morex",
650
+ ]);
651
+ expect(Array.from(logger.levelHandler._modules.keys())).toEqual([
652
+ "test",
653
+ "test1",
654
+ "test2",
655
+ "test3",
656
+ "more",
657
+ "testx",
658
+ "test1x",
659
+ "test2x",
660
+ "test3x",
661
+ "morex",
662
+ ]);
663
+ });
664
+ it("object setDebug could receive anything", async () => {
665
+ logger
666
+ .Error()
667
+ .Any("sock", {
668
+ m: 1,
669
+ nested: {
670
+ m: 2,
671
+ mfn: logValue(() => 23, logger.levelHandler),
672
+ },
673
+ mfn: logValue(() => 19, logger.levelHandler),
674
+ })
675
+ .Msg("1");
676
+ await logger.Flush();
677
+ expect(logCollector.Logs()).toEqual([
678
+ {
679
+ level: "error",
680
+ msg: "1",
681
+ sock: {
682
+ m: 1,
683
+ mfn: 19,
684
+ nested: {
685
+ m: 2,
686
+ mfn: 23,
687
+ },
688
+ },
689
+ },
690
+ ]);
691
+ });
692
+ it("don't serialize json on string", async () => {
693
+ logger
694
+ .Error()
695
+ .Err(new Error(JSON.stringify({ o: { h: 1 } })))
696
+ .Str("sock", JSON.stringify({ a: { h: 1 } }))
697
+ .Str("bla", '{a":1}')
698
+ .Msg("1");
699
+ await logger.Flush();
700
+ expect(logCollector.Logs()).toEqual([
701
+ {
702
+ level: "error",
703
+ error: { o: { h: 1 } },
704
+ msg: "1",
705
+ sock: { a: { h: 1 } },
706
+ bla: '{a":1}',
707
+ },
708
+ ]);
709
+ });
710
+ it("see exposed Stack", async () => {
711
+ const e = new Error("test");
712
+ logger.Error().Err(e).Msg("1");
713
+ logger.SetExposeStack(true);
714
+ logger.Error().Err(e).Msg("2");
715
+ logger.SetExposeStack(false);
716
+ logger.Error().Err(e).Msg("3");
717
+ await logger.Flush();
718
+ const logs = logCollector.Logs();
719
+ logs[1].stack = logs[1].stack?.map((s) => s.toLowerCase());
720
+ expect(logs).toEqual([
721
+ {
722
+ error: "test",
723
+ level: "error",
724
+ msg: "1",
725
+ },
726
+ {
727
+ error: "test",
728
+ level: "error",
729
+ msg: "2",
730
+ stack: e.stack?.split("\n").map((s) => s.trim().toLowerCase()),
731
+ },
732
+ {
733
+ error: "test",
734
+ level: "error",
735
+ msg: "3",
736
+ },
737
+ ]);
738
+ });
739
+ it("which writer for which runtime", () => {
740
+ const logger = new LoggerImpl();
741
+ if (runtimeFn().isNodeIsh) {
742
+ expect(logger._logWriter._out instanceof WritableStream).toBeTruthy();
743
+ logger.Info().Msg("Running in Node");
744
+ }
745
+ if (runtimeFn().isBrowser) {
746
+ expect(logger._logWriter._out.constructor.name).toBe("ConsoleWriterStream");
747
+ logger.Info().Msg("Running in Browser");
748
+ }
749
+ });
750
+ it("self-ref", async () => {
751
+ const nested = {
752
+ m: 2,
753
+ mfn: logValue(() => 23, logger.levelHandler),
754
+ };
755
+ nested.flat = nested;
756
+ nested.layer = {
757
+ jo: 4,
758
+ boom: nested,
759
+ };
760
+ logger
761
+ .Error()
762
+ .Any("sock", {
763
+ m: 1,
764
+ nested: nested,
765
+ mfn: logValue(() => 19, logger.levelHandler),
766
+ })
767
+ .Msg("1");
768
+ await logger.Flush();
769
+ expect(logCollector.Logs()).toEqual([
770
+ {
771
+ level: "error",
772
+ msg: "1",
773
+ sock: {
774
+ m: 1,
775
+ mfn: 19,
776
+ nested: {
777
+ m: 2,
778
+ mfn: 23,
779
+ flat: "...",
780
+ layer: {
781
+ jo: 4,
782
+ boom: "...",
783
+ },
784
+ },
785
+ },
786
+ },
787
+ ]);
788
+ });
789
+ it("serialize json as string", () => {
790
+ const suri = "file://./doof?test=1";
791
+ const auri = JSON.stringify({ uri: suri });
792
+ const buri = BuildURI.from(suri);
793
+ const uri = URI.from(suri);
794
+ expect(JSON.stringify({ uri: buri })).toEqual(auri);
795
+ expect(JSON.stringify({ uri })).toEqual(auri);
796
+ });
797
+ it("emits attributes", () => {
798
+ const log = logger
799
+ .With()
800
+ .Str("str", "a str")
801
+ .Ref("bla", () => "blub")
802
+ .Any("what", { a: 1 })
803
+ .Logger();
804
+ expect(log.Attributes()).toEqual({ str: "a str", what: { a: 1 }, bla: "blub" });
805
+ const tlog = log.With().Timestamp().Logger();
806
+ const refTime = BasicSysAbstractionFactory({ TimeMode: TimeMode.STEP }).Time();
807
+ expect(tlog.Attributes()).toEqual({
808
+ str: "a str",
809
+ what: { a: 1 },
810
+ bla: "blub",
811
+ ts: refTime.Now().toISOString(),
812
+ });
813
+ });
814
+ it("Url could receive URL", async () => {
815
+ logger.Info().Url(new URL("http://localhost:8080")).Msg("1");
816
+ await logger.Flush();
817
+ expect(logCollector.Logs()).toEqual([
818
+ {
819
+ level: "info",
820
+ msg: "1",
821
+ url: "http://localhost:8080/",
822
+ },
823
+ ]);
824
+ });
825
+ it("Url could receive String", async () => {
826
+ logger.Info().Url("http://localhost:8080").Msg("1");
827
+ await logger.Flush();
828
+ expect(logCollector.Logs()).toEqual([
829
+ {
830
+ level: "info",
831
+ msg: "1",
832
+ url: "http://localhost:8080/",
833
+ },
834
+ ]);
835
+ });
836
+ it("error could receive Result", async () => {
837
+ logger.Info().Error().Err(Result.Err("xxxxx")).Msg("1");
838
+ logger.Info().Error().Err(Result.Ok("yyyyy")).Msg("2");
839
+ await logger.Flush();
840
+ expect(logCollector.Logs()).toEqual([
841
+ {
842
+ error: "xxxxx",
843
+ level: "error",
844
+ msg: "1",
845
+ },
846
+ {
847
+ noerror: "yyyyy",
848
+ level: "error",
849
+ msg: "2",
850
+ },
851
+ ]);
852
+ });
853
+ it("introspect json", async () => {
854
+ logger
855
+ .Info()
856
+ .Str("bla", JSON.stringify({ a: 4711 }))
857
+ .Any("y", {
858
+ a: JSON.stringify({ b: 4711, c: '{"d":4711}', e: ['{"f":4712}'] }),
859
+ })
860
+ .Msg(JSON.stringify(["x", 4712, { a: 4711 }, '{"d":4711}', '{"a":4711}']));
861
+ await logger.Flush();
862
+ expect(logCollector.Logs()).toEqual([
863
+ {
864
+ bla: { a: 4711 },
865
+ level: "info",
866
+ msg: [
867
+ "x",
868
+ 4712,
869
+ {
870
+ a: 4711,
871
+ },
872
+ {
873
+ d: 4711,
874
+ },
875
+ {
876
+ a: 4711,
877
+ },
878
+ ],
879
+ y: {
880
+ a: {
881
+ b: 4711,
882
+ c: {
883
+ d: 4711,
884
+ },
885
+ e: [
886
+ {
887
+ f: 4712,
888
+ },
889
+ ],
890
+ },
891
+ },
892
+ },
893
+ ]);
894
+ });
895
+ it("introspect uint8array", async () => {
896
+ logger
897
+ .Info()
898
+ .Any("fhex", new Uint8Array(new Array(36).fill(1).map((_, i) => i)))
899
+ .Any("hex", { a: new Uint8Array(new Array(36).fill(1).map((_, i) => i)) })
900
+ .Msg("1");
901
+ await logger.Flush();
902
+ expect(logCollector.Logs()).toEqual([
903
+ {
904
+ fhex: [
905
+ "0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................",
906
+ "0010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................",
907
+ '0020 20 21 22 23 !"#',
908
+ ],
909
+ hex: {
910
+ a: [
911
+ "0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................",
912
+ "0010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................",
913
+ '0020 20 21 22 23 !"#',
914
+ ],
915
+ },
916
+ level: "info",
917
+ msg: "1",
918
+ },
919
+ ]);
920
+ });
921
+ it("my own json formatter", async () => {
922
+ logger.SetExposeStack(true).SetFormatter(new JSONFormatter(logger.TxtEnDe(), 2));
923
+ logger
924
+ .Error()
925
+ .Str("bla", "blub")
926
+ .Str("xxx", '{"b": 4711}')
927
+ .Str("lines", "a\nb\nc")
928
+ .Any("flat", new Uint8Array(new Array(36).fill(1).map((_, i) => i)))
929
+ .Any("hi", {
930
+ ho: 1,
931
+ su: "bla",
932
+ js: '{"a":1}',
933
+ bi: new Uint8Array(new Array(36).fill(1).map((_, i) => i)),
934
+ ls: "a\nb\nc",
935
+ })
936
+ .Msg("hello");
937
+ await logger.Flush();
938
+ expect(logCollector.Logs(true)).toEqual([
939
+ "{",
940
+ ' "level": "error",',
941
+ ' "bla": "blub",',
942
+ ' "xxx": {',
943
+ ' "b": 4711',
944
+ " },",
945
+ ' "lines": [',
946
+ ' "a",',
947
+ ' "b",',
948
+ ' "c"',
949
+ " ],",
950
+ ' "flat": [',
951
+ ' "0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................",',
952
+ ' "0010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................",',
953
+ ' "0020 20 21 22 23 !\\"#"',
954
+ " ],",
955
+ ' "hi": {',
956
+ ' "ho": 1,',
957
+ ' "su": "bla",',
958
+ ' "js": {',
959
+ ' "a": 1',
960
+ " },",
961
+ ' "bi": [',
962
+ ' "0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................",',
963
+ ' "0010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................",',
964
+ ' "0020 20 21 22 23 !\\"#"',
965
+ " ],",
966
+ ' "ls": [',
967
+ ' "a",',
968
+ ' "b",',
969
+ ' "c"',
970
+ " ]",
971
+ " },",
972
+ ' "msg": "hello"',
973
+ "}",
974
+ ]);
975
+ });
976
+ it("AsError", () => {
977
+ const error = logger.Error().Msg("AsError").AsError();
978
+ expect(error).toBeInstanceOf(Error);
979
+ expect(error.message).toBe('{"level":"error","msg":"AsError"}\n');
980
+ });
981
+ it("ResultError", () => {
982
+ const fn = () => {
983
+ return logger.Error().Msg("AsError").ResultError();
984
+ };
985
+ const res = fn();
986
+ expect(Result.Is(res)).toBeTruthy();
987
+ expect(res.isErr()).toBeTruthy();
988
+ expect(res.Err().message).toBe('{"level":"error","msg":"AsError"}\n');
989
+ });
990
+ it("receive object", async () => {
991
+ logger
992
+ .Error()
993
+ .Str({ blaStr: "blub", blaStr2: "blub2" })
994
+ .Uint64({ blaUint64: 65, blaUint642: 66 })
995
+ .Int({ blaInt: 65 })
996
+ .Bool({ blaBool: true, blaBool2: false })
997
+ .Any({ blaAny: { a: 1 }, blaAny2: { b: 2 } })
998
+ .Msg("hello");
999
+ await logger.Flush();
1000
+ expect(logCollector.Logs()).toEqual([
1001
+ {
1002
+ blaAny: {
1003
+ a: 1,
1004
+ },
1005
+ blaAny2: {
1006
+ b: 2,
1007
+ },
1008
+ blaBool: true,
1009
+ blaBool2: false,
1010
+ blaInt: 65,
1011
+ blaStr: "blub",
1012
+ blaStr2: "blub2",
1013
+ blaUint64: 65,
1014
+ blaUint642: 66,
1015
+ level: "error",
1016
+ msg: "hello",
1017
+ },
1018
+ ]);
1019
+ });
1020
+ it("my own yaml formatter", async () => {
1021
+ const log = logger.SetExposeStack(true).SetFormatter(new YAMLFormatter(logger.TxtEnDe(), 2)).With().Logger();
1022
+ log
1023
+ .Error()
1024
+ .Str("bla", "blub")
1025
+ .Str("xxx", '{"b": 4711}')
1026
+ .Str("lines", "a\nb\nc")
1027
+ .Any("flat", new Uint8Array(new Array(36).fill(1).map((_, i) => i)))
1028
+ .Any("hi", {
1029
+ ho: 1,
1030
+ su: "bla",
1031
+ js: '{"a":1}',
1032
+ bi: new Uint8Array(new Array(36).fill(1).map((_, i) => i)),
1033
+ ls: "a\nb\nc",
1034
+ })
1035
+ .Msg("hello");
1036
+ await log.Flush();
1037
+ expect(logCollector.Logs(true)).toEqual([
1038
+ "---",
1039
+ "level: error",
1040
+ "bla: blub",
1041
+ "xxx:",
1042
+ " b: 4711",
1043
+ "lines:",
1044
+ " - a",
1045
+ " - b",
1046
+ " - c",
1047
+ "flat:",
1048
+ " - 0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................",
1049
+ " - 0010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................",
1050
+ ' - 0020 20 21 22 23 !"#',
1051
+ "hi:",
1052
+ " ho: 1",
1053
+ " su: bla",
1054
+ " js:",
1055
+ " a: 1",
1056
+ " bi:",
1057
+ " - 0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................",
1058
+ " - 0010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................",
1059
+ ' - 0020 20 21 22 23 !"#',
1060
+ " ls:",
1061
+ " - a",
1062
+ " - b",
1063
+ " - c",
1064
+ "msg: hello",
1065
+ ]);
1066
+ });
1067
+ it("Pairing", async () => {
1068
+ logger
1069
+ .Error()
1070
+ .Pair({
1071
+ str: "blub",
1072
+ int: 4711,
1073
+ bool: true,
1074
+ resultOk: Result.Ok({ a: 1 }),
1075
+ resultErr: Result.Err("Error"),
1076
+ uint8: new Uint8Array([1, 2, 3]),
1077
+ obj: { a: 1 },
1078
+ arr: [1, 2, 3],
1079
+ })
1080
+ .Msg("1");
1081
+ await logger.Flush();
1082
+ expect(logCollector.Logs(true)).toEqual([
1083
+ JSON.stringify({
1084
+ level: "error",
1085
+ str: "blub",
1086
+ int: 4711,
1087
+ bool: true,
1088
+ resultOk: { a: 1 },
1089
+ error: "Error",
1090
+ uint8: "0000 01 02 03 ...",
1091
+ obj: { a: 1 },
1092
+ arr: [1, 2, 3],
1093
+ msg: "1",
1094
+ }),
1095
+ ]);
1096
+ });
1097
+ class TestResponse extends Response {
1098
+ #url;
1099
+ constructor(body, init) {
1100
+ super(body, init);
1101
+ this.#url = init?.url || "";
1102
+ }
1103
+ get url() {
1104
+ return this.#url;
1105
+ }
1106
+ }
1107
+ describe("fetch-formatter", () => {
1108
+ const resp = new TestResponse("body", {
1109
+ status: 200,
1110
+ statusText: "OK",
1111
+ headers: new Headers({
1112
+ "Content-Type": "text/html",
1113
+ "X-Test": "test",
1114
+ }),
1115
+ url: "https://www.google.com",
1116
+ });
1117
+ const req = new Request("https://www.google.com", {
1118
+ method: "PUT",
1119
+ headers: new Headers({
1120
+ "Content-Type": "text/html",
1121
+ "X-Test": "xtest",
1122
+ }),
1123
+ body: "String",
1124
+ });
1125
+ async function fixupLogs() {
1126
+ await logger.Flush();
1127
+ return stripper([
1128
+ "isReloadNavigation",
1129
+ "reason",
1130
+ "targetAddressSpace",
1131
+ "attribute",
1132
+ "duplex",
1133
+ "cache",
1134
+ "type",
1135
+ "fetcher",
1136
+ "cf",
1137
+ "webSocket",
1138
+ "credentials",
1139
+ "destination",
1140
+ "integrity",
1141
+ "isHistoryNavigation",
1142
+ "keepalive",
1143
+ "mode",
1144
+ "redirect",
1145
+ "referrer",
1146
+ "referrerPolicy",
1147
+ ], logCollector.Logs());
1148
+ }
1149
+ it("ok-the-res", async () => {
1150
+ logger.Error().Any("res", { the: resp }).Msg("ok-the-res");
1151
+ expect(await fixupLogs()).toEqual([
1152
+ {
1153
+ level: "error",
1154
+ res: {
1155
+ the: {
1156
+ redirected: false,
1157
+ status: 200,
1158
+ ok: true,
1159
+ statusText: "OK",
1160
+ headers: {
1161
+ "content-type": "text/html",
1162
+ "x-test": "test",
1163
+ },
1164
+ body: ">Stream<",
1165
+ bodyUsed: false,
1166
+ },
1167
+ },
1168
+ msg: "ok-the-res",
1169
+ },
1170
+ ]);
1171
+ });
1172
+ it("ok-the-req", async () => {
1173
+ logger.Error().Any("req", { the: req }).Msg("ok-the-req");
1174
+ expect(await fixupLogs()).toEqual([
1175
+ {
1176
+ level: "error",
1177
+ msg: "ok-the-req",
1178
+ req: {
1179
+ the: {
1180
+ body: ">Stream<",
1181
+ bodyUsed: false,
1182
+ headers: {
1183
+ "content-type": "text/html",
1184
+ "x-test": "xtest",
1185
+ },
1186
+ method: "PUT",
1187
+ signal: {
1188
+ aborted: false,
1189
+ onabort: "null",
1190
+ },
1191
+ url: "https://www.google.com/",
1192
+ },
1193
+ },
1194
+ },
1195
+ ]);
1196
+ });
1197
+ it("the-req-res", async () => {
1198
+ logger
1199
+ .Error()
1200
+ .Any("req-res", { the: { req, res: resp } })
1201
+ .Msg("ok-the-req-res");
1202
+ expect(await fixupLogs()).toEqual([
1203
+ {
1204
+ level: "error",
1205
+ msg: "ok-the-req-res",
1206
+ "req-res": {
1207
+ the: {
1208
+ req: {
1209
+ body: ">Stream<",
1210
+ bodyUsed: false,
1211
+ headers: {
1212
+ "content-type": "text/html",
1213
+ "x-test": "xtest",
1214
+ },
1215
+ method: "PUT",
1216
+ signal: {
1217
+ aborted: false,
1218
+ onabort: "null",
1219
+ },
1220
+ url: "https://www.google.com/",
1221
+ },
1222
+ res: {
1223
+ body: ">Stream<",
1224
+ bodyUsed: false,
1225
+ headers: {
1226
+ "content-type": "text/html",
1227
+ "x-test": "test",
1228
+ },
1229
+ ok: true,
1230
+ redirected: false,
1231
+ status: 200,
1232
+ statusText: "OK",
1233
+ },
1234
+ },
1235
+ },
1236
+ },
1237
+ ]);
1238
+ });
1239
+ it("result-req-res", async () => {
1240
+ logger.Error().Http(Result.Ok(resp)).Msg("-1");
1241
+ expect(await fixupLogs()).toEqual([
1242
+ {
1243
+ Http: {
1244
+ body: ">Stream<",
1245
+ bodyUsed: false,
1246
+ headers: {
1247
+ "content-type": "text/html",
1248
+ "x-test": "test",
1249
+ },
1250
+ ok: true,
1251
+ redirected: false,
1252
+ status: 200,
1253
+ statusText: "OK",
1254
+ },
1255
+ level: "error",
1256
+ msg: "-1",
1257
+ },
1258
+ ]);
1259
+ });
1260
+ it("0", async () => {
1261
+ logger.Error().Http().Msg("0");
1262
+ expect(await fixupLogs()).toEqual([
1263
+ {
1264
+ level: "error",
1265
+ msg: "0",
1266
+ },
1267
+ ]);
1268
+ });
1269
+ it("1", async () => {
1270
+ logger.Error().Http(resp, req, "Https").Msg("1");
1271
+ expect(await fixupLogs()).toEqual([
1272
+ {
1273
+ Https: {
1274
+ req: {
1275
+ body: ">Stream<",
1276
+ bodyUsed: false,
1277
+ headers: {
1278
+ "content-type": "text/html",
1279
+ "x-test": "xtest",
1280
+ },
1281
+ method: "PUT",
1282
+ signal: {
1283
+ aborted: false,
1284
+ onabort: "null",
1285
+ },
1286
+ url: "https://www.google.com/",
1287
+ },
1288
+ res: {
1289
+ body: ">Stream<",
1290
+ bodyUsed: false,
1291
+ headers: {
1292
+ "content-type": "text/html",
1293
+ "x-test": "test",
1294
+ },
1295
+ ok: true,
1296
+ redirected: false,
1297
+ status: 200,
1298
+ statusText: "OK",
1299
+ },
1300
+ },
1301
+ level: "error",
1302
+ msg: "1",
1303
+ },
1304
+ ]);
1305
+ });
1306
+ it("1.1", async () => {
1307
+ logger.Error().Http("Yolo", Result.Ok(req), Result.Ok(resp)).Msg("1.1");
1308
+ expect(await fixupLogs()).toEqual([
1309
+ {
1310
+ Yolo: {
1311
+ req: {
1312
+ body: ">Stream<",
1313
+ bodyUsed: false,
1314
+ headers: {
1315
+ "content-type": "text/html",
1316
+ "x-test": "xtest",
1317
+ },
1318
+ method: "PUT",
1319
+ signal: {
1320
+ aborted: false,
1321
+ onabort: "null",
1322
+ },
1323
+ url: "https://www.google.com/",
1324
+ },
1325
+ res: {
1326
+ body: ">Stream<",
1327
+ bodyUsed: false,
1328
+ headers: {
1329
+ "content-type": "text/html",
1330
+ "x-test": "test",
1331
+ },
1332
+ ok: true,
1333
+ redirected: false,
1334
+ status: 200,
1335
+ statusText: "OK",
1336
+ },
1337
+ },
1338
+ level: "error",
1339
+ msg: "1.1",
1340
+ },
1341
+ ]);
1342
+ });
1343
+ it("1.2", async () => {
1344
+ logger.Error().Http("Yerr", Result.Err("e1"), Result.Err("e2")).Msg("1.2");
1345
+ expect(await fixupLogs()).toEqual([
1346
+ {
1347
+ error: ["e1", "e2"],
1348
+ level: "error",
1349
+ msg: "1.2",
1350
+ },
1351
+ ]);
1352
+ });
1353
+ it("2", async () => {
1354
+ logger.Error().Http(req, "Https").Msg("2");
1355
+ expect(await fixupLogs()).toEqual([
1356
+ {
1357
+ Https: {
1358
+ body: ">Stream<",
1359
+ bodyUsed: false,
1360
+ headers: {
1361
+ "content-type": "text/html",
1362
+ "x-test": "xtest",
1363
+ },
1364
+ method: "PUT",
1365
+ signal: {
1366
+ aborted: false,
1367
+ onabort: "null",
1368
+ },
1369
+ url: "https://www.google.com/",
1370
+ },
1371
+ level: "error",
1372
+ msg: "2",
1373
+ },
1374
+ ]);
1375
+ });
1376
+ it("3", async () => {
1377
+ logger.Error().Any("HttpReq", req).Msg("3");
1378
+ expect(await fixupLogs()).toEqual([
1379
+ {
1380
+ HttpReq: {
1381
+ body: ">Stream<",
1382
+ bodyUsed: false,
1383
+ headers: {
1384
+ "content-type": "text/html",
1385
+ "x-test": "xtest",
1386
+ },
1387
+ method: "PUT",
1388
+ signal: {
1389
+ aborted: false,
1390
+ onabort: "null",
1391
+ },
1392
+ url: "https://www.google.com/",
1393
+ },
1394
+ level: "error",
1395
+ msg: "3",
1396
+ },
1397
+ ]);
1398
+ });
1399
+ it("4", async () => {
1400
+ logger.Error().Any("HttpRes", resp).Msg("4");
1401
+ expect(await fixupLogs()).toEqual([
1402
+ {
1403
+ HttpRes: {
1404
+ body: ">Stream<",
1405
+ bodyUsed: false,
1406
+ headers: {
1407
+ "content-type": "text/html",
1408
+ "x-test": "test",
1409
+ },
1410
+ ok: true,
1411
+ redirected: false,
1412
+ status: 200,
1413
+ statusText: "OK",
1414
+ },
1415
+ level: "error",
1416
+ msg: "4",
1417
+ },
1418
+ ]);
1419
+ });
1420
+ });
1421
+ it("use toJSON", async () => {
1422
+ logger
1423
+ .Error()
1424
+ .Any("res", { uri: URI.from("https://doof.de?x=4&a=b") })
1425
+ .Msg("ok");
1426
+ await logger.Flush();
1427
+ expect(logCollector.Logs(true)).toEqual([
1428
+ {
1429
+ level: "error",
1430
+ res: {
1431
+ uri: "https://doof.de/?a=b&x=4",
1432
+ },
1433
+ msg: "ok",
1434
+ },
1435
+ ].map((i) => JSON.stringify(i)));
1436
+ });
1437
+ class Test {
1438
+ a;
1439
+ b;
1440
+ constructor(a, b) {
1441
+ this.a = a;
1442
+ this.b = b;
1443
+ }
1444
+ toJSON() {
1445
+ throw new Error("test");
1446
+ }
1447
+ }
1448
+ it("throw in toString", async () => {
1449
+ logger
1450
+ .Error()
1451
+ .Any("res", new Test(1, URI.from("https://doof.de")))
1452
+ .Msg("ok");
1453
+ await logger.Flush();
1454
+ expect(logCollector.Logs(true)).toEqual([
1455
+ {
1456
+ level: "error",
1457
+ res: "LogValue:test",
1458
+ msg: "ok",
1459
+ },
1460
+ ].map((i) => JSON.stringify(i)));
1461
+ });
1462
+ it("if uint8array is json do not hexdump", async () => {
1463
+ logger
1464
+ .Error()
1465
+ .Any("res", new TextEncoder().encode(JSON.stringify({ a: 1, b: { c: "x" } })))
1466
+ .Msg("ok");
1467
+ await logger.Flush();
1468
+ expect(logCollector.Logs()).toEqual([
1469
+ {
1470
+ level: "error",
1471
+ msg: "ok",
1472
+ res: {
1473
+ a: 1,
1474
+ b: {
1475
+ c: "x",
1476
+ },
1477
+ },
1478
+ },
1479
+ ]);
1480
+ });
1481
+ it("Result received ResolveError with Error is Object", async () => {
1482
+ const x = Result.Err({
1483
+ type: "error",
1484
+ tid: "z3AHk4H2a8",
1485
+ message: "Method not implemented.",
1486
+ version: "FP-MSG-1.0",
1487
+ });
1488
+ logger.Error().Result("res", x).Msg("1");
1489
+ await logger.Flush();
1490
+ expect(logCollector.Logs()).toEqual([
1491
+ {
1492
+ error: {
1493
+ message: "Method not implemented.",
1494
+ tid: "z3AHk4H2a8",
1495
+ type: "error",
1496
+ version: "FP-MSG-1.0",
1497
+ },
1498
+ level: "error",
1499
+ msg: "1",
1500
+ },
1501
+ ]);
1502
+ });
1503
+ it("default ignore _attributes in any", async () => {
1504
+ logger
1505
+ .Error()
1506
+ .Any("res", {
1507
+ empty: {
1508
+ _bla: 5,
1509
+ },
1510
+ realEmpty: {},
1511
+ test: {
1512
+ empty: {
1513
+ _bla: 5,
1514
+ },
1515
+ realEmpty: {},
1516
+ _attributes: 1,
1517
+ jo: 42,
1518
+ },
1519
+ _bla: 5,
1520
+ })
1521
+ .Msg("1");
1522
+ await logger.Flush();
1523
+ expect(logCollector.Logs()).toEqual([
1524
+ {
1525
+ level: "error",
1526
+ msg: "1",
1527
+ res: {
1528
+ empty: {},
1529
+ realEmpty: {},
1530
+ test: {
1531
+ empty: {},
1532
+ realEmpty: {},
1533
+ jo: 42,
1534
+ },
1535
+ },
1536
+ },
1537
+ ]);
1538
+ });
1539
+ it("switch of ignore _attributes in any", async () => {
1540
+ logger.SetIgnoreAttribute();
1541
+ logger
1542
+ .Error()
1543
+ .Any("res", { test: { _attributes: 1, jo: 42 }, _bla: 5 })
1544
+ .Msg("1");
1545
+ await logger.Flush();
1546
+ expect(logCollector.Logs()).toEqual([
1547
+ {
1548
+ level: "error",
1549
+ msg: "1",
1550
+ res: {
1551
+ _bla: 5,
1552
+ test: {
1553
+ jo: 42,
1554
+ _attributes: 1,
1555
+ },
1556
+ },
1557
+ },
1558
+ ]);
1559
+ });
1560
+ it("error with cause", async () => {
1561
+ const e = new Error("test");
1562
+ e.cause = "yes -- cause";
1563
+ logger.Error().Err(e).Msg("1");
1564
+ await logger.Flush();
1565
+ expect(logCollector.Logs()).toEqual([
1566
+ {
1567
+ error: {
1568
+ cause: "yes -- cause",
1569
+ message: "test",
1570
+ },
1571
+ level: "error",
1572
+ msg: "1",
1573
+ },
1574
+ ]);
1575
+ });
1576
+ });
1577
+ //# sourceMappingURL=logger.test.js.map