@adviser/cement 0.4.19 → 0.4.21

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 (243) hide show
  1. package/cjs/base-basic-sys-abstraction.test.cjs +26 -25
  2. package/cjs/base-basic-sys-abstraction.test.cjs.map +1 -1
  3. package/cjs/crypto.cjs.map +1 -1
  4. package/cjs/deno/deno-basic-sys-abstraction.cjs +3 -3
  5. package/cjs/deno/deno-basic-sys-abstraction.cjs.map +1 -1
  6. package/cjs/http_header.cjs +59 -21
  7. package/cjs/http_header.cjs.map +1 -1
  8. package/cjs/http_header.test.cjs +34 -33
  9. package/cjs/http_header.test.cjs.map +1 -1
  10. package/cjs/log-level-impl.cjs +16 -0
  11. package/cjs/log-level-impl.cjs.map +1 -1
  12. package/cjs/logger-impl.cjs +28 -2
  13. package/cjs/logger-impl.cjs.map +1 -1
  14. package/cjs/logger.cjs +5 -1
  15. package/cjs/logger.cjs.map +1 -1
  16. package/cjs/logger.test.cjs +43 -0
  17. package/cjs/logger.test.cjs.map +1 -1
  18. package/cjs/lru-map-set.cjs +4 -1
  19. package/cjs/lru-map-set.cjs.map +1 -1
  20. package/cjs/node/get-iface-adr.cjs +5 -3
  21. package/cjs/node/get-iface-adr.cjs.map +1 -1
  22. package/cjs/path-ops.cjs +3 -0
  23. package/cjs/path-ops.cjs.map +1 -1
  24. package/cjs/path-ops.test.cjs +5 -0
  25. package/cjs/path-ops.test.cjs.map +1 -1
  26. package/cjs/resolve-once.cjs +6 -0
  27. package/cjs/resolve-once.cjs.map +1 -1
  28. package/cjs/resolve-once.test.cjs +6 -0
  29. package/cjs/resolve-once.test.cjs.map +1 -1
  30. package/cjs/sys-env.cjs.map +1 -1
  31. package/cjs/sys-env.test.cjs.map +1 -1
  32. package/cjs/test/log-write-stream.cjs +4 -4
  33. package/cjs/test/log-write-stream.cjs.map +1 -1
  34. package/cjs/tracer.cjs.map +1 -1
  35. package/cjs/uri.cjs +18 -6
  36. package/cjs/uri.cjs.map +1 -1
  37. package/cjs/utils/console-write-stream.cjs +4 -4
  38. package/cjs/utils/console-write-stream.cjs.map +1 -1
  39. package/cjs/utils/fanout-write-stream.cjs +2 -2
  40. package/cjs/utils/fanout-write-stream.cjs.map +1 -1
  41. package/cjs/utils/sorted-object.cjs.map +1 -1
  42. package/cjs/utils/stripper.cjs.map +1 -1
  43. package/deno.json +37 -0
  44. package/esm/base-basic-sys-abstraction.test.js +1 -0
  45. package/esm/base-basic-sys-abstraction.test.js.map +1 -1
  46. package/esm/crypto.d.ts +6 -1
  47. package/esm/crypto.d.ts.map +1 -1
  48. package/esm/crypto.js.map +1 -1
  49. package/esm/deno/deno-basic-sys-abstraction.d.ts.map +1 -1
  50. package/esm/deno/deno-basic-sys-abstraction.js +3 -3
  51. package/esm/deno/deno-basic-sys-abstraction.js.map +1 -1
  52. package/esm/http_header.d.ts +11 -5
  53. package/esm/http_header.d.ts.map +1 -1
  54. package/esm/http_header.js +59 -22
  55. package/esm/http_header.js.map +1 -1
  56. package/esm/http_header.test.js +1 -0
  57. package/esm/http_header.test.js.map +1 -1
  58. package/esm/log-level-impl.d.ts +6 -0
  59. package/esm/log-level-impl.d.ts.map +1 -1
  60. package/esm/log-level-impl.js +16 -0
  61. package/esm/log-level-impl.js.map +1 -1
  62. package/esm/logger-impl.d.ts +2 -0
  63. package/esm/logger-impl.d.ts.map +1 -1
  64. package/esm/logger-impl.js +28 -2
  65. package/esm/logger-impl.js.map +1 -1
  66. package/esm/logger.d.ts +7 -0
  67. package/esm/logger.d.ts.map +1 -1
  68. package/esm/logger.js +5 -1
  69. package/esm/logger.js.map +1 -1
  70. package/esm/logger.test.js +43 -0
  71. package/esm/logger.test.js.map +1 -1
  72. package/esm/lru-map-set.d.ts.map +1 -1
  73. package/esm/lru-map-set.js +4 -1
  74. package/esm/lru-map-set.js.map +1 -1
  75. package/esm/node/get-iface-adr.d.ts +1 -1
  76. package/esm/node/get-iface-adr.d.ts.map +1 -1
  77. package/esm/node/get-iface-adr.js +4 -2
  78. package/esm/node/get-iface-adr.js.map +1 -1
  79. package/esm/path-ops.d.ts.map +1 -1
  80. package/esm/path-ops.js +3 -0
  81. package/esm/path-ops.js.map +1 -1
  82. package/esm/path-ops.test.js +5 -0
  83. package/esm/path-ops.test.js.map +1 -1
  84. package/esm/resolve-once.d.ts +6 -5
  85. package/esm/resolve-once.d.ts.map +1 -1
  86. package/esm/resolve-once.js +6 -0
  87. package/esm/resolve-once.js.map +1 -1
  88. package/esm/resolve-once.test.js +6 -0
  89. package/esm/resolve-once.test.js.map +1 -1
  90. package/esm/sys-env.js.map +1 -1
  91. package/esm/sys-env.test.js.map +1 -1
  92. package/esm/test/log-write-stream.d.ts +1 -1
  93. package/esm/test/log-write-stream.d.ts.map +1 -1
  94. package/esm/test/log-write-stream.js +4 -4
  95. package/esm/test/log-write-stream.js.map +1 -1
  96. package/esm/tracer.js.map +1 -1
  97. package/esm/uri.d.ts +1 -0
  98. package/esm/uri.d.ts.map +1 -1
  99. package/esm/uri.js +18 -6
  100. package/esm/uri.js.map +1 -1
  101. package/esm/utils/console-write-stream.d.ts +3 -3
  102. package/esm/utils/console-write-stream.d.ts.map +1 -1
  103. package/esm/utils/console-write-stream.js +4 -4
  104. package/esm/utils/console-write-stream.js.map +1 -1
  105. package/esm/utils/fanout-write-stream.d.ts +3 -3
  106. package/esm/utils/fanout-write-stream.d.ts.map +1 -1
  107. package/esm/utils/fanout-write-stream.js +2 -2
  108. package/esm/utils/fanout-write-stream.js.map +1 -1
  109. package/esm/utils/sorted-object.d.ts +1 -1
  110. package/esm/utils/sorted-object.d.ts.map +1 -1
  111. package/esm/utils/sorted-object.js.map +1 -1
  112. package/esm/utils/stripper.js.map +1 -1
  113. package/package.json +12 -10
  114. package/src/crypto.ts +12 -1
  115. package/src/deno/deno-basic-sys-abstraction.ts +5 -3
  116. package/src/http_header.ts +71 -25
  117. package/src/log-level-impl.ts +19 -0
  118. package/src/logger-impl.ts +28 -2
  119. package/src/logger.ts +12 -1
  120. package/src/lru-map-set.ts +8 -6
  121. package/src/node/get-iface-adr.ts +5 -3
  122. package/src/path-ops.ts +4 -1
  123. package/src/resolve-once.ts +19 -12
  124. package/src/sys-env.ts +1 -1
  125. package/src/test/log-write-stream.ts +4 -4
  126. package/src/tracer.ts +2 -2
  127. package/src/uri.ts +23 -11
  128. package/src/utils/console-write-stream.ts +7 -7
  129. package/src/utils/fanout-write-stream.ts +5 -5
  130. package/src/utils/sorted-object.ts +2 -2
  131. package/src/utils/stripper.ts +1 -0
  132. package/ts/cjs/base-basic-sys-abstraction.test.js +26 -25
  133. package/ts/cjs/base-basic-sys-abstraction.test.js.map +1 -1
  134. package/ts/cjs/crypto.js.map +1 -1
  135. package/ts/cjs/deno/deno-basic-sys-abstraction.js +3 -3
  136. package/ts/cjs/deno/deno-basic-sys-abstraction.js.map +1 -1
  137. package/ts/cjs/http_header.js +59 -21
  138. package/ts/cjs/http_header.js.map +1 -1
  139. package/ts/cjs/http_header.test.js +34 -33
  140. package/ts/cjs/http_header.test.js.map +1 -1
  141. package/ts/cjs/log-level-impl.js +16 -0
  142. package/ts/cjs/log-level-impl.js.map +1 -1
  143. package/ts/cjs/logger-impl.js +28 -2
  144. package/ts/cjs/logger-impl.js.map +1 -1
  145. package/ts/cjs/logger.js +5 -1
  146. package/ts/cjs/logger.js.map +1 -1
  147. package/ts/cjs/logger.test.js +43 -0
  148. package/ts/cjs/logger.test.js.map +1 -1
  149. package/ts/cjs/lru-map-set.js +4 -1
  150. package/ts/cjs/lru-map-set.js.map +1 -1
  151. package/ts/cjs/node/get-iface-adr.js +5 -3
  152. package/ts/cjs/node/get-iface-adr.js.map +1 -1
  153. package/ts/cjs/path-ops.js +3 -0
  154. package/ts/cjs/path-ops.js.map +1 -1
  155. package/ts/cjs/path-ops.test.js +5 -0
  156. package/ts/cjs/path-ops.test.js.map +1 -1
  157. package/ts/cjs/resolve-once.js +6 -0
  158. package/ts/cjs/resolve-once.js.map +1 -1
  159. package/ts/cjs/resolve-once.test.js +6 -0
  160. package/ts/cjs/resolve-once.test.js.map +1 -1
  161. package/ts/cjs/sys-env.js.map +1 -1
  162. package/ts/cjs/sys-env.test.js.map +1 -1
  163. package/ts/cjs/test/log-write-stream.js +4 -4
  164. package/ts/cjs/test/log-write-stream.js.map +1 -1
  165. package/ts/cjs/tracer.js.map +1 -1
  166. package/ts/cjs/uri.js +18 -6
  167. package/ts/cjs/uri.js.map +1 -1
  168. package/ts/cjs/utils/console-write-stream.js +4 -4
  169. package/ts/cjs/utils/console-write-stream.js.map +1 -1
  170. package/ts/cjs/utils/fanout-write-stream.js +2 -2
  171. package/ts/cjs/utils/fanout-write-stream.js.map +1 -1
  172. package/ts/cjs/utils/sorted-object.js.map +1 -1
  173. package/ts/cjs/utils/stripper.js.map +1 -1
  174. package/ts/esm/base-basic-sys-abstraction.test.js +1 -0
  175. package/ts/esm/base-basic-sys-abstraction.test.js.map +1 -1
  176. package/ts/esm/crypto.d.ts +6 -1
  177. package/ts/esm/crypto.d.ts.map +1 -1
  178. package/ts/esm/crypto.js.map +1 -1
  179. package/ts/esm/deno/deno-basic-sys-abstraction.d.ts.map +1 -1
  180. package/ts/esm/deno/deno-basic-sys-abstraction.js +3 -3
  181. package/ts/esm/deno/deno-basic-sys-abstraction.js.map +1 -1
  182. package/ts/esm/http_header.d.ts +11 -5
  183. package/ts/esm/http_header.d.ts.map +1 -1
  184. package/ts/esm/http_header.js +59 -22
  185. package/ts/esm/http_header.js.map +1 -1
  186. package/ts/esm/http_header.test.js +1 -0
  187. package/ts/esm/http_header.test.js.map +1 -1
  188. package/ts/esm/log-level-impl.d.ts +6 -0
  189. package/ts/esm/log-level-impl.d.ts.map +1 -1
  190. package/ts/esm/log-level-impl.js +16 -0
  191. package/ts/esm/log-level-impl.js.map +1 -1
  192. package/ts/esm/logger-impl.d.ts +2 -0
  193. package/ts/esm/logger-impl.d.ts.map +1 -1
  194. package/ts/esm/logger-impl.js +28 -2
  195. package/ts/esm/logger-impl.js.map +1 -1
  196. package/ts/esm/logger.d.ts +7 -0
  197. package/ts/esm/logger.d.ts.map +1 -1
  198. package/ts/esm/logger.js +5 -1
  199. package/ts/esm/logger.js.map +1 -1
  200. package/ts/esm/logger.test.js +43 -0
  201. package/ts/esm/logger.test.js.map +1 -1
  202. package/ts/esm/lru-map-set.d.ts.map +1 -1
  203. package/ts/esm/lru-map-set.js +4 -1
  204. package/ts/esm/lru-map-set.js.map +1 -1
  205. package/ts/esm/node/get-iface-adr.d.ts +1 -1
  206. package/ts/esm/node/get-iface-adr.d.ts.map +1 -1
  207. package/ts/esm/node/get-iface-adr.js +4 -2
  208. package/ts/esm/node/get-iface-adr.js.map +1 -1
  209. package/ts/esm/path-ops.d.ts.map +1 -1
  210. package/ts/esm/path-ops.js +3 -0
  211. package/ts/esm/path-ops.js.map +1 -1
  212. package/ts/esm/path-ops.test.js +5 -0
  213. package/ts/esm/path-ops.test.js.map +1 -1
  214. package/ts/esm/resolve-once.d.ts +6 -5
  215. package/ts/esm/resolve-once.d.ts.map +1 -1
  216. package/ts/esm/resolve-once.js +6 -0
  217. package/ts/esm/resolve-once.js.map +1 -1
  218. package/ts/esm/resolve-once.test.js +6 -0
  219. package/ts/esm/resolve-once.test.js.map +1 -1
  220. package/ts/esm/sys-env.js.map +1 -1
  221. package/ts/esm/sys-env.test.js.map +1 -1
  222. package/ts/esm/test/log-write-stream.d.ts +1 -1
  223. package/ts/esm/test/log-write-stream.d.ts.map +1 -1
  224. package/ts/esm/test/log-write-stream.js +4 -4
  225. package/ts/esm/test/log-write-stream.js.map +1 -1
  226. package/ts/esm/tracer.js.map +1 -1
  227. package/ts/esm/uri.d.ts +1 -0
  228. package/ts/esm/uri.d.ts.map +1 -1
  229. package/ts/esm/uri.js +18 -6
  230. package/ts/esm/uri.js.map +1 -1
  231. package/ts/esm/utils/console-write-stream.d.ts +3 -3
  232. package/ts/esm/utils/console-write-stream.d.ts.map +1 -1
  233. package/ts/esm/utils/console-write-stream.js +4 -4
  234. package/ts/esm/utils/console-write-stream.js.map +1 -1
  235. package/ts/esm/utils/fanout-write-stream.d.ts +3 -3
  236. package/ts/esm/utils/fanout-write-stream.d.ts.map +1 -1
  237. package/ts/esm/utils/fanout-write-stream.js +2 -2
  238. package/ts/esm/utils/fanout-write-stream.js.map +1 -1
  239. package/ts/esm/utils/sorted-object.d.ts +1 -1
  240. package/ts/esm/utils/sorted-object.d.ts.map +1 -1
  241. package/ts/esm/utils/sorted-object.js.map +1 -1
  242. package/ts/esm/utils/stripper.js.map +1 -1
  243. package/src/jsr.json +0 -22
@@ -1 +1 @@
1
- {"version":3,"file":"sorted-object.d.ts","sourceRoot":"","sources":["../../../../src/utils/sorted-object.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAGzE;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAG7D;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAOtE"}
1
+ {"version":3,"file":"sorted-object.d.ts","sourceRoot":"","sources":["../../../../src/utils/sorted-object.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAGzE;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAG7D;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAOlF"}
@@ -1 +1 @@
1
- {"version":3,"file":"sorted-object.js","sourceRoot":"","sources":["../../../../src/utils/sorted-object.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAI,GAAO;IAC5C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,aAAa,CAAI,GAAO;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,cAAc,CAA8B,GAAO;IACjE,IAAI,CAAC,GAAG;QAAE,OAAO,GAAQ,CAAC;IAC1B,OAAO,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAM,CAAC;AAKrD,CAAC"}
1
+ {"version":3,"file":"sorted-object.js","sourceRoot":"","sources":["../../../../src/utils/sorted-object.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAI,GAAO;IAC5C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,aAAa,CAAI,GAAO;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,cAAc,CAA8B,GAAO;IACjE,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,CAAC;IACrB,OAAO,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAM,CAAC;AAKrD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stripper.js","sourceRoot":"","sources":["../../../../src/utils/stripper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stripper.js","sourceRoot":"","sources":["../../../../src/utils/stripper.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adviser/cement",
3
- "version": "0.4.19",
3
+ "version": "0.4.21",
4
4
  "description": "better try/catch/finally handling",
5
5
  "main": "./cjs/index.js",
6
6
  "type": "module",
@@ -50,27 +50,29 @@
50
50
  "devDependencies": {
51
51
  "@cloudflare/vitest-pool-workers": "^0.8.44",
52
52
  "@eslint/js": "^9.20.0",
53
+ "@types/deno": "^2.3.0",
53
54
  "@types/node": "^24.0.0",
54
55
  "@typescript-eslint/eslint-plugin": "^8.7.0",
55
56
  "@typescript-eslint/parser": "^8.7.0",
56
- "@vitest/browser": "^3.2.3",
57
+ "@vitest/browser": "^3.2.4",
58
+ "deno": "2.4.2",
57
59
  "esbuild-plugin-replace": "^1.4.0",
58
60
  "esbuild-plugin-resolve": "^2.0.0",
59
- "eslint": "9.29.0",
61
+ "eslint": "9.32.0",
60
62
  "jscodeshift": "^17.3.0",
61
- "playwright": "^1.51.1",
62
- "playwright-chromium": "^1.51.1",
63
- "prettier": "^3.3.3",
63
+ "playwright": "^1.54.1",
64
+ "playwright-chromium": "^1.54.1",
65
+ "prettier": "^3.6.2",
64
66
  "tsup": "^8.3.0",
65
67
  "tsx": "^4.19.1",
66
68
  "typescript": "^5.8.0",
67
69
  "typescript-eslint": "^8.24.0",
68
- "vite": "^6.3.5",
70
+ "vite": "^7.0.4",
69
71
  "vite-tsconfig-paths": "^5.0.1",
70
- "vitest": "^3.2.3"
72
+ "vitest": "^3.2.4"
71
73
  },
72
74
  "engines": {
73
- "node": ">=20"
75
+ "node": ">=20.19.0"
74
76
  },
75
77
  "scripts": {
76
78
  "clean": "rm -rf dist node_modules",
@@ -80,7 +82,7 @@
80
82
  "build:tsc:esm": "tsc -p ./tsconfig.esm.json",
81
83
  "build:tsc:cjs": "tsc -p ./tsconfig.cjs.json",
82
84
  "build:js": "rm -rf dist/pkg ; mkdir -p dist/pkg; cp -pr ./dist/ts/* dist/pkg",
83
- "build:deno": "deno publish --dry-run --unstable-sloppy-imports --allow-dirty",
85
+ "build:deno": "deno publish --dry-run --unstable-sloppy-imports --allow-dirty --set-version 0.0.0-dev",
84
86
  "test": "pnpm run test:js; pnpm run test:deno",
85
87
  "test:deno": "deno run --quiet --allow-net --allow-write --allow-run --allow-sys --allow-ffi --allow-read --allow-env ./node_modules/vitest/vitest.mjs --run --project node",
86
88
  "test:js": "vitest --run",
package/src/crypto.ts CHANGED
@@ -1,3 +1,9 @@
1
+ export interface CTRsaOtherPrimesInfo {
2
+ d?: string;
3
+ r?: string;
4
+ t?: string;
5
+ }
6
+
1
7
  export interface CTJsonWebKey {
2
8
  alg?: string;
3
9
  crv?: string;
@@ -10,7 +16,7 @@ export interface CTJsonWebKey {
10
16
  key_ops?: string[];
11
17
  kty?: string;
12
18
  n?: string;
13
- oth?: RsaOtherPrimesInfo[];
19
+ oth?: CTRsaOtherPrimesInfo[];
14
20
  p?: string;
15
21
  q?: string;
16
22
  qi?: string;
@@ -119,6 +125,7 @@ export function toCryptoRuntime(cryptoOpts: Partial<CryptoRuntime> = {}): Crypto
119
125
  let crypto: typeof globalThis.crypto;
120
126
  if (!globalThis.crypto || !globalThis.crypto.subtle) {
121
127
  crypto = {
128
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
122
129
  getRandomValues: globalThis.crypto.getRandomValues.bind(globalThis.crypto),
123
130
  subtle: {
124
131
  importKey: (): Promise<CTCryptoKey> => {
@@ -142,9 +149,13 @@ export function toCryptoRuntime(cryptoOpts: Partial<CryptoRuntime> = {}): Crypto
142
149
  crypto = globalThis.crypto;
143
150
  }
144
151
  const runtime = {
152
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
145
153
  importKey: cryptoOpts.importKey || crypto.subtle.importKey.bind(crypto.subtle),
154
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
146
155
  exportKey: cryptoOpts.exportKey || crypto.subtle.exportKey.bind(crypto.subtle),
156
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
147
157
  encrypt: cryptoOpts.encrypt || crypto.subtle.encrypt.bind(crypto.subtle),
158
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
148
159
  decrypt: cryptoOpts.decrypt || crypto.subtle.decrypt.bind(crypto.subtle),
149
160
  randomBytes: cryptoOpts.randomBytes || randomBytes(crypto),
150
161
  digestSHA256: cryptoOpts.digestSHA256 || digestSHA256(crypto),
@@ -1,3 +1,5 @@
1
+ /// <reference types="deno" />
2
+
1
3
  import { BaseBasicSysAbstraction, WrapperBasicSysAbstraction, WrapperBasicSysAbstractionParams } from "../base-sys-abstraction.js";
2
4
  import { ResolveOnce } from "../resolve-once.js";
3
5
  import { BasicRuntimeService, BasicSysAbstraction } from "../sys-abstraction.js";
@@ -14,14 +16,14 @@ export class DenoRuntimeService implements BasicRuntimeService {
14
16
  }
15
17
 
16
18
  Args(): string[] {
17
- return globalThis.Deno.args;
19
+ return Deno.args;
18
20
  }
19
21
 
20
22
  Stdout(): WritableStream<Uint8Array> {
21
- return globalThis.Deno.stdout.writable;
23
+ return Deno.stdout.writable;
22
24
  }
23
25
  Stderr(): WritableStream<Uint8Array> {
24
- return globalThis.Deno.stderr.writable;
26
+ return Deno.stderr.writable;
25
27
  }
26
28
  }
27
29
 
@@ -1,35 +1,81 @@
1
- export class HeadersImpl extends Headers {
2
- readonly _headers: Map<string, string>;
1
+ export class HeadersImpl implements Headers {
2
+ // readonly _headers: Map<string, string>;
3
+ readonly impl: Headers = new Headers();
3
4
 
4
- constructor(init: Map<string, string>) {
5
- super();
6
- this._headers = init;
5
+ constructor(init: Map<string, string | string[]>) {
6
+ // super();
7
+ for (const [k, v] of init) {
8
+ this.append(k, v);
9
+ }
7
10
  }
11
+ // toKey(key: string): string {
12
+ // return key.toLowerCase();
13
+ // }
8
14
 
9
- override [Symbol.iterator](): IterableIterator<[string, string]> {
10
- return this.entries();
15
+ forEach(callbackfn: (value: string, key: string, parent: this) => void): void {
16
+ this.impl.forEach((v, k) => {
17
+ callbackfn(v, k, this);
18
+ });
11
19
  }
12
20
 
13
- override entries(): IterableIterator<[string, string]> {
14
- return this._headers.entries();
21
+ delete(name: string): void {
22
+ this.impl.delete(name);
23
+ }
24
+ get(name: string): string | null {
25
+ return this.impl.get(name);
15
26
  }
16
- override keys(): IterableIterator<string> {
17
- return this._headers.keys();
27
+ getSetCookie(): string[] {
28
+ return this.impl.getSetCookie();
18
29
  }
19
- override values(): IterableIterator<string> {
20
- return this._headers.values();
30
+ has(name: string): boolean {
31
+ return this.impl.has(name);
32
+ }
33
+ set(name: string, value: string): void {
34
+ this.impl.set(name, value);
21
35
  }
22
36
 
23
- override append(key: string, value: string | string[] | undefined): HeadersImpl {
24
- const values = this._headers.get(key);
25
- if (typeof value === "undefined") {
26
- value = "";
37
+ *[Symbol.iterator](): IterableIterator<[string, string]> {
38
+ const keys: [string, string][] = [];
39
+ this.impl.forEach((v, k) => {
40
+ keys.push([k, v]);
41
+ });
42
+ for (const k of keys) {
43
+ yield k;
27
44
  }
28
- if (Array.isArray(value)) {
29
- this._headers.set(key, [values, ...value].filter((i) => i).join(", "));
30
- } else {
31
- this._headers.set(key, [values, value].filter((i) => i).join(", "));
45
+ }
46
+
47
+ entries(): IterableIterator<[string, string]> {
48
+ return this[Symbol.iterator]();
49
+ }
50
+ *keys(): IterableIterator<string> {
51
+ const keys: string[] = [];
52
+ this.impl.forEach((_, k) => {
53
+ keys.push(k);
54
+ });
55
+ for (const k of keys) {
56
+ yield k;
32
57
  }
58
+ }
59
+ *values(): IterableIterator<string> {
60
+ for (const k of this.keys()) {
61
+ const v = this.impl.get(k);
62
+ if (!v) {
63
+ continue;
64
+ }
65
+ yield v;
66
+ }
67
+ }
68
+
69
+ append(key: string, value?: string | string[]): HeadersImpl {
70
+ if (!(typeof value === "string" || Array.isArray(value))) {
71
+ return this;
72
+ }
73
+ const existingValues = this.impl.get(key) || "";
74
+ const newValues = Array.isArray(value) ? value : [value];
75
+ const allValues = existingValues ? [...existingValues.split(", ").map((v) => v.trim()), ...newValues] : newValues;
76
+ // Remove empty strings and duplicates while preserving order
77
+ const uniqueValues = [...new Set(allValues.filter((v) => v !== ""))];
78
+ this.impl.set(key, uniqueValues.join(", "));
33
79
  return this;
34
80
  }
35
81
  }
@@ -44,20 +90,20 @@ export class HttpHeader {
44
90
  const h = new HttpHeader();
45
91
  if (headers) {
46
92
  if (Array.isArray(headers)) {
47
- for (const [k, v] of headers as [string, string][]) {
93
+ for (const [k, v] of headers) {
48
94
  if (v) {
49
95
  h.Add(k, v);
50
96
  }
51
97
  }
52
98
  } else if (headers instanceof Headers) {
53
- for (const [k, v] of headers.entries()) {
99
+ headers.forEach((v, k) => {
54
100
  if (v) {
55
101
  h.Add(
56
102
  k,
57
103
  v.split(",").map((v) => v.trim()),
58
104
  );
59
105
  }
60
- }
106
+ });
61
107
  } else {
62
108
  for (const k in headers) {
63
109
  const v = (headers as Record<string, string | string[]>)[k];
@@ -149,7 +195,7 @@ export class HttpHeader {
149
195
  }
150
196
  return obj;
151
197
  }
152
- AsHeaders(): Headers {
198
+ AsHeaders(): HeadersImpl {
153
199
  return new HeadersImpl(this._asStringString());
154
200
  }
155
201
  Merge(other?: HttpHeader): HttpHeader {
@@ -5,6 +5,8 @@ export class LevelHandlerImpl implements LevelHandler {
5
5
  readonly _globalLevels: Set<Level> = new Set<Level>([Level.INFO, Level.ERROR, Level.WARN]);
6
6
  readonly _modules: Map<string, Set<Level>> = new Map<string, Set<Level>>();
7
7
 
8
+ readonly _timer: Map<string, Date> = new Map<string, Date>();
9
+
8
10
  ignoreAttr: Option<RegExp> = Option.Some(/^_/);
9
11
  isStackExposed = false;
10
12
  enableLevel(level: Level, ...modules: string[]): void {
@@ -85,6 +87,23 @@ export class LevelHandlerImpl implements LevelHandler {
85
87
  }
86
88
  return this._globalLevels.has(level);
87
89
  }
90
+
91
+ timerStart(key: string): Date {
92
+ const now = new Date();
93
+ this._timer.set(key, now);
94
+ return now;
95
+ }
96
+
97
+ timerEnd(key: string): { now: Date; duration: number } {
98
+ const now = new Date();
99
+ const start = this._timer.get(key);
100
+ if (!start) {
101
+ return { now, duration: 0 };
102
+ }
103
+ const duration = now.getTime() - start.getTime(); // duration in milliseconds
104
+ this._timer.delete(key);
105
+ return { now, duration };
106
+ }
88
107
  }
89
108
 
90
109
  const levelSingleton = new LevelHandlerImpl();
@@ -167,6 +167,16 @@ export class LoggerImpl implements Logger {
167
167
  }
168
168
  // console.log("LoggerImpl", this._id, this._attributes, this._withAttributes)
169
169
  }
170
+ TimerStart(key: string): Logger {
171
+ const now = this.levelHandler.timerStart(key);
172
+ this.coerceKey(key, now.toISOString());
173
+ return this;
174
+ }
175
+ TimerEnd(key: string): Logger {
176
+ const dur = this.levelHandler.timerEnd(key);
177
+ this.coerceKey(key, `${dur.now.toISOString()} - ${dur.duration}ms`);
178
+ return this;
179
+ }
170
180
 
171
181
  TxtEnDe(): TxtEnDecoder {
172
182
  return this._txtEnDe;
@@ -444,8 +454,16 @@ export class LoggerImpl implements Logger {
444
454
  }
445
455
  let fnRet = (): Uint8Array => this._formatter.format({ ...this._attributes });
446
456
  if (doWrite) {
447
- const encoded = fnRet();
448
- this._logWriter.write(encoded);
457
+ let encoded: Uint8Array;
458
+ try {
459
+ encoded = fnRet();
460
+ this._logWriter.write(encoded);
461
+ } catch (e) {
462
+ const where = "Logger-Impl:Msg:Write error:";
463
+ // eslint-disable-next-line no-console
464
+ console.error(where, e, this._attributes);
465
+ encoded = this._txtEnDe.encode(where + (e as Error).message + "\n" + (e as Error).stack + "\n");
466
+ }
449
467
  fnRet = (): Uint8Array => encoded;
450
468
  }
451
469
  return fnRet;
@@ -465,6 +483,14 @@ class WithLoggerBuilder implements WithLogger {
465
483
  this._li = li;
466
484
  this.levelHandler = li.levelHandler;
467
485
  }
486
+ TimerStart(key: string): WithLogger {
487
+ this._li.TimerStart(key);
488
+ return this;
489
+ }
490
+ TimerEnd(key: string): WithLogger {
491
+ this._li.TimerEnd(key);
492
+ return this;
493
+ }
468
494
 
469
495
  TxtEnDe(): TxtEnDecoder {
470
496
  return this._li.TxtEnDe();
package/src/logger.ts CHANGED
@@ -1,3 +1,4 @@
1
+ // / <reference lib="dom" />
1
2
  import { isPromise } from "./is-promise.js";
2
3
  import { bin2string } from "./bin2text.js";
3
4
  import { Option } from "./option.js";
@@ -131,7 +132,11 @@ function logValueInternal(val: LogValueArg, ctx: LogValueStateInternal): LogValu
131
132
  // // delete rval.blob
132
133
  // }
133
134
  if (val instanceof Headers) {
134
- return new LogValue(() => Object.fromEntries(val.entries()) as unknown as Serialized);
135
+ const headers: Record<string, string> = {};
136
+ val.forEach((v, k) => {
137
+ headers[k] = v;
138
+ });
139
+ return new LogValue(() => headers as unknown as Serialized);
135
140
  }
136
141
  if (val instanceof ReadableStream) {
137
142
  return new LogValue(() => ">Stream<");
@@ -194,6 +199,10 @@ export interface LevelHandler {
194
199
  setIgnoreAttr(re?: RegExp): void;
195
200
  ignoreAttr: Option<RegExp>;
196
201
  isStackExposed: boolean;
202
+
203
+ timerStart(key: string): Date; // now
204
+ timerEnd(key: string): { now: Date; duration: number }; // returns duration in nanoseconds
205
+
197
206
  setDebug(...modules: (string | string[])[]): void;
198
207
  isEnabled(ilevel: unknown, module: unknown): boolean;
199
208
  }
@@ -246,6 +255,8 @@ export interface LoggerInterface<R> {
246
255
  Err<T>(err: T | Result<T> | Error): R; // could be Error, or something which coerces to string
247
256
  Info(): R;
248
257
  Timestamp(): R;
258
+ TimerStart(key: string): R;
259
+ TimerEnd(key: string): R;
249
260
  Dur(key: string, nsec: number): R;
250
261
  }
251
262
 
@@ -98,8 +98,8 @@ export class LRUMap<T, K> {
98
98
  if (!this._map.has(key)) {
99
99
  throw new Error(`key not found in cache: ${key as unknown as string}`);
100
100
  }
101
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
102
- const value = this._map.get(key)!;
101
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
102
+ const value = this._map.get(key) as LRUItem<K>;
103
103
  this._map.delete(key);
104
104
  this._map.set(key, value);
105
105
  return value;
@@ -179,8 +179,10 @@ export class LRUMap<T, K> {
179
179
  // delete the least recently accessed
180
180
  // const key = Array.from(this.cache.keys())[0];
181
181
  // this.cache.delete(key) or
182
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
183
- this._map.delete(this._map.keys().next().value!);
182
+ const v = this._map.keys().next();
183
+ if (!v.done) {
184
+ this._map.delete(v.value as T);
185
+ }
184
186
  }
185
187
  this._map.set(key, item);
186
188
  this.stats.puts++;
@@ -198,8 +200,8 @@ export class LRUMap<T, K> {
198
200
 
199
201
  delete(key: T): void {
200
202
  if (this._map.has(key)) {
201
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
202
- const item = this._map.get(key)!;
203
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
204
+ const item = this._map.get(key) as LRUItem<K>;
203
205
  this._onDeleteFns.forEach((fn) => fn(key, item?.value, this.buildItemCtx(item, true)));
204
206
  this._map.delete(key);
205
207
  this.stats.deletes++;
@@ -1,4 +1,4 @@
1
- import { NetworkInterfaceInfo, networkInterfaces } from "os";
1
+ import { NetworkInterfaceInfo, networkInterfaces } from "node:os";
2
2
 
3
3
  export function getInterfaceAddresses(): Record<string, NetworkInterfaceInfo[]> {
4
4
  const nets = networkInterfaces();
@@ -6,8 +6,10 @@ export function getInterfaceAddresses(): Record<string, NetworkInterfaceInfo[]>
6
6
  .filter((i) => i[1])
7
7
  .reduce(
8
8
  (acc, [name, nets]) => {
9
- // console.log(name, nets);
10
- acc[name] = nets as NetworkInterfaceInfo[];
9
+ if (nets) {
10
+ // console.log(name, nets);
11
+ acc[name] = nets; // as NetworkInterfaceInfo[];
12
+ }
11
13
  return acc;
12
14
  },
13
15
  {} as Record<string, NetworkInterfaceInfo[]>,
package/src/path-ops.ts CHANGED
@@ -28,7 +28,10 @@ class pathOpsImpl implements PathOps {
28
28
  basename: splitted[0] === "." ? "" : splitted[0],
29
29
  };
30
30
  }
31
- const basename = splitted.pop() as string;
31
+ const basename = splitted.pop();
32
+ if (!basename) {
33
+ throw new Error("basename is undefined");
34
+ }
32
35
  return {
33
36
  dirname: splitted.join("/").replace(/^\.\//, ""),
34
37
  basename,
@@ -5,14 +5,14 @@ import { Result } from "./result.js";
5
5
 
6
6
  interface ResolveSeqItem<T, C> {
7
7
  readonly future: Future<T>;
8
- readonly fn: (c: C) => Promise<T>;
8
+ readonly fn: (c?: C) => Promise<T>;
9
9
  readonly id?: number;
10
10
  }
11
11
 
12
12
  export class ResolveSeq<T, C = void> {
13
- readonly ctx: C;
13
+ readonly ctx?: C;
14
14
  constructor(ctx?: C) {
15
- this.ctx = ctx as C;
15
+ this.ctx = ctx;
16
16
  }
17
17
  reset(): void {
18
18
  /* noop */
@@ -45,7 +45,7 @@ export class ResolveSeq<T, C = void> {
45
45
  return Promise.resolve();
46
46
  }
47
47
  readonly _seqFutures: ResolveSeqItem<T, C>[] = [];
48
- async add(fn: (c: C) => Promise<T>, id?: number): Promise<T> {
48
+ async add(fn: (c?: C) => Promise<T>, id?: number): Promise<T> {
49
49
  const future = new Future<T>();
50
50
  this._seqFutures.push({ future, fn, id });
51
51
  if (this._seqFutures.length === 1) {
@@ -64,10 +64,10 @@ export class ResolveOnce<T, CTX = void> {
64
64
  _isPromise = false;
65
65
  _inProgress?: Future<T>;
66
66
 
67
- readonly ctx: CTX;
67
+ readonly ctx?: CTX;
68
68
 
69
69
  constructor(ctx?: CTX) {
70
- this.ctx = ctx as CTX;
70
+ this.ctx = ctx;
71
71
  }
72
72
 
73
73
  get ready(): boolean {
@@ -95,7 +95,7 @@ export class ResolveOnce<T, CTX = void> {
95
95
  }
96
96
 
97
97
  // T extends Option<infer U> ? U : T
98
- once<R>(fn: (c: CTX) => R): R {
98
+ once<R>(fn: (c?: CTX) => R): R {
99
99
  if (this._onceDone) {
100
100
  if (this._onceError) {
101
101
  if (this._isPromise) {
@@ -106,8 +106,7 @@ export class ResolveOnce<T, CTX = void> {
106
106
  }
107
107
  if (this._onceOk) {
108
108
  if (this._isPromise) {
109
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
110
- return Promise.resolve(this._onceValue!) as unknown as R;
109
+ return Promise.resolve(this._onceValue) as unknown as R;
111
110
  } else {
112
111
  return this._onceValue as unknown as R;
113
112
  }
@@ -122,7 +121,7 @@ export class ResolveOnce<T, CTX = void> {
122
121
  this._onceOk = true;
123
122
  this._onceDone = true;
124
123
  if (this._isPromise) {
125
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
124
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion, @typescript-eslint/no-non-null-assertion
126
125
  this._onceFutures.forEach((f) => f.resolve(this._onceValue!));
127
126
  }
128
127
  this._onceFutures.length = 0;
@@ -133,7 +132,7 @@ export class ResolveOnce<T, CTX = void> {
133
132
  this._onceValue = undefined;
134
133
  this._onceDone = true;
135
134
  if (this._isPromise) {
136
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
135
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion, @typescript-eslint/no-non-null-assertion
137
136
  this._onceFutures.forEach((f) => f.reject(this._onceError!));
138
137
  }
139
138
  this._onceFutures.length = 0;
@@ -211,6 +210,13 @@ export class Keyed<T extends { reset: () => void }, K = string> {
211
210
  return keyed;
212
211
  }
213
212
 
213
+ has(key: K | (() => K)): boolean {
214
+ if (typeof key === "function") {
215
+ key = (key as () => K)();
216
+ }
217
+ return this._map.has(key);
218
+ }
219
+
214
220
  unget(key: K): void {
215
221
  const keyed = this._map.get(key);
216
222
  keyed?.reset();
@@ -241,7 +247,8 @@ export class KeyedResolvOnce<T, K = string> extends Keyed<ResolveOnce<T, K>, K>
241
247
  if (v._onceError) {
242
248
  yield { key: k, value: Result.Err<T>(v._onceError) };
243
249
  } else {
244
- yield { key: k, value: Result.Ok<T>(v._onceValue as T) };
250
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion, @typescript-eslint/no-non-null-assertion
251
+ yield { key: k, value: Result.Ok<T>(v._onceValue!) };
245
252
  }
246
253
  }
247
254
  }
package/src/sys-env.ts CHANGED
@@ -160,7 +160,7 @@ export class EnvImpl implements Env {
160
160
  return false;
161
161
  })
162
162
  .forEach((k) => {
163
- let v;
163
+ let v: string | undefined;
164
164
  if (!key && !value) {
165
165
  // init
166
166
  v = this._map.get(k);
@@ -12,7 +12,7 @@ export class LogWriteStream implements WritableStreamDefaultWriter<Uint8Array> {
12
12
  readonly _resolveClosed: Future<undefined> = new Future<undefined>();
13
13
  readonly closed: Promise<undefined> = this._resolveClosed.asPromise();
14
14
  readonly desiredSize: number | null = null;
15
- readonly ready: Promise<undefined> = Promise.resolve(undefined);
15
+ readonly ready: Promise<never> = Promise.resolve() as Promise<never>;
16
16
 
17
17
  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
18
18
  abort(reason?: any): Promise<void> {
@@ -20,7 +20,7 @@ export class LogWriteStream implements WritableStreamDefaultWriter<Uint8Array> {
20
20
  }
21
21
  async close(): Promise<void> {
22
22
  await this.closed;
23
- return Promise.resolve(undefined);
23
+ return Promise.resolve();
24
24
  }
25
25
  releaseLock(): void {
26
26
  // do nothing
@@ -29,7 +29,7 @@ export class LogWriteStream implements WritableStreamDefaultWriter<Uint8Array> {
29
29
  if (chunk) {
30
30
  this._bufferArr.push(chunk);
31
31
  }
32
- return Promise.resolve(undefined);
32
+ return Promise.resolve();
33
33
  }
34
34
  }
35
35
 
@@ -56,7 +56,7 @@ export class LogCollector implements WritableStream<Uint8Array> {
56
56
  this._writer = undefined;
57
57
  return ret;
58
58
  }
59
- return Promise.resolve(undefined);
59
+ return Promise.resolve();
60
60
  }
61
61
 
62
62
  getWriter(): WritableStreamDefaultWriter<Uint8Array> {
package/src/tracer.ts CHANGED
@@ -141,7 +141,7 @@ export class TraceNode {
141
141
  delete cleanCtx.time;
142
142
  delete cleanCtx.logger;
143
143
  delete cleanCtx.metrics;
144
- const spanRefs = this.metrics.toJSON.call({ map: this.metrics.spanRefs });
144
+ const spanRefs = this.metrics.toJSON.call({ map: this.metrics.spanRefs }) as Record<string, unknown>;
145
145
  const metricsRefs = Object.keys(spanRefs).length > 0 ? { metricRefs: spanRefs } : {};
146
146
  return {
147
147
  ctx: cleanCtx,
@@ -200,7 +200,7 @@ export class TraceNode {
200
200
  if (isPromise(possiblePromise)) {
201
201
  return possiblePromise
202
202
  .then((v) => {
203
- return v;
203
+ return v as ReturnType<V>;
204
204
  })
205
205
  .catch((e) => {
206
206
  invokation.result = "error";