@adviser/cement 0.5.3 → 0.5.4

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 (383) hide show
  1. package/cjs/base-basic-sys-abstraction.test.cjs +12 -13
  2. package/cjs/base-basic-sys-abstraction.test.cjs.map +1 -1
  3. package/cjs/bin2text.test.cjs +15 -14
  4. package/cjs/bin2text.test.cjs.map +1 -1
  5. package/cjs/coerce-binary.test.cjs +16 -15
  6. package/cjs/coerce-binary.test.cjs.map +1 -1
  7. package/cjs/crypto.test.cjs +9 -8
  8. package/cjs/crypto.test.cjs.map +1 -1
  9. package/cjs/future.test.cjs +12 -11
  10. package/cjs/future.test.cjs.map +1 -1
  11. package/cjs/http_header.test.cjs +13 -13
  12. package/cjs/http_header.test.cjs.map +1 -1
  13. package/cjs/index.cjs +3 -0
  14. package/cjs/index.cjs.map +1 -1
  15. package/cjs/index.d.ts +3 -0
  16. package/cjs/index.d.ts.map +1 -1
  17. package/cjs/is-json.test.cjs +59 -58
  18. package/cjs/is-json.test.cjs.map +1 -1
  19. package/cjs/is-promise.test.cjs +19 -19
  20. package/cjs/is-promise.test.cjs.map +1 -1
  21. package/cjs/json-en-decoder.test.cjs +13 -12
  22. package/cjs/json-en-decoder.test.cjs.map +1 -1
  23. package/cjs/keyed-ng.test.cjs +21 -21
  24. package/cjs/keyed-ng.test.cjs.map +1 -1
  25. package/cjs/logger.test.cjs +178 -179
  26. package/cjs/logger.test.cjs.map +1 -1
  27. package/cjs/lru-map-set.test.cjs +67 -66
  28. package/cjs/lru-map-set.test.cjs.map +1 -1
  29. package/cjs/mutable-url.test.cjs +44 -44
  30. package/cjs/mutable-url.test.cjs.map +1 -1
  31. package/cjs/node-fs/mock-file-service.test.cjs +7 -6
  32. package/cjs/node-fs/mock-file-service.test.cjs.map +1 -1
  33. package/cjs/node-fs/node-sys-abstraction.test.cjs +13 -12
  34. package/cjs/node-fs/node-sys-abstraction.test.cjs.map +1 -1
  35. package/cjs/on-func.test.cjs +42 -43
  36. package/cjs/on-func.test.cjs.map +1 -1
  37. package/cjs/on-func.test.d.ts.map +1 -1
  38. package/cjs/option.cjs +2 -2
  39. package/cjs/option.cjs.map +1 -1
  40. package/cjs/option.d.ts +1 -1
  41. package/cjs/option.d.ts.map +1 -1
  42. package/cjs/path-ops.test.cjs +40 -39
  43. package/cjs/path-ops.test.cjs.map +1 -1
  44. package/cjs/poller.test.cjs +51 -51
  45. package/cjs/poller.test.cjs.map +1 -1
  46. package/cjs/promise-sleep.test.cjs +35 -34
  47. package/cjs/promise-sleep.test.cjs.map +1 -1
  48. package/cjs/resolve-once.cjs.map +1 -1
  49. package/cjs/resolve-once.d.ts +3 -6
  50. package/cjs/resolve-once.d.ts.map +1 -1
  51. package/cjs/resolve-once.test.cjs +301 -296
  52. package/cjs/resolve-once.test.cjs.map +1 -1
  53. package/cjs/result.test.cjs +68 -44
  54. package/cjs/result.test.cjs.map +1 -1
  55. package/cjs/sys-env.test.cjs +67 -66
  56. package/cjs/sys-env.test.cjs.map +1 -1
  57. package/cjs/test/mock-logger.test.cjs +14 -13
  58. package/cjs/test/mock-logger.test.cjs.map +1 -1
  59. package/cjs/timeouted.test.cjs +313 -313
  60. package/cjs/timeouted.test.cjs.map +1 -1
  61. package/cjs/tracer.test.cjs +32 -31
  62. package/cjs/tracer.test.cjs.map +1 -1
  63. package/cjs/txt-en-decoder.test.cjs +31 -31
  64. package/cjs/txt-en-decoder.test.cjs.map +1 -1
  65. package/cjs/uri.test.cjs +239 -239
  66. package/cjs/uri.test.cjs.map +1 -1
  67. package/cjs/utils/consume.test.cjs +22 -22
  68. package/cjs/utils/consume.test.cjs.map +1 -1
  69. package/cjs/utils/rebuffer.test.cjs +40 -39
  70. package/cjs/utils/rebuffer.test.cjs.map +1 -1
  71. package/cjs/utils/relative-path.test.cjs +125 -124
  72. package/cjs/utils/relative-path.test.cjs.map +1 -1
  73. package/cjs/utils/sorted-object.test.cjs +8 -7
  74. package/cjs/utils/sorted-object.test.cjs.map +1 -1
  75. package/cjs/utils/stream-map.test.cjs +32 -31
  76. package/cjs/utils/stream-map.test.cjs.map +1 -1
  77. package/cjs/utils/stream2string.test.cjs +5 -5
  78. package/cjs/utils/stream2string.test.cjs.map +1 -1
  79. package/cjs/utils/string2stream.test.cjs +5 -5
  80. package/cjs/utils/string2stream.test.cjs.map +1 -1
  81. package/cjs/utils/stripper.test.cjs +21 -20
  82. package/cjs/utils/stripper.test.cjs.map +1 -1
  83. package/cjs/utils/to-sorted.test.cjs +27 -27
  84. package/cjs/utils/to-sorted.test.cjs.map +1 -1
  85. package/cjs/version.cjs +1 -1
  86. package/cjs/wait-for-value.cjs +49 -0
  87. package/cjs/wait-for-value.cjs.map +1 -0
  88. package/cjs/wait-for-value.d.ts +13 -0
  89. package/cjs/wait-for-value.d.ts.map +1 -0
  90. package/cjs/wait-for-value.test.cjs +86 -0
  91. package/cjs/wait-for-value.test.cjs.map +1 -0
  92. package/cjs/wait-for-value.test.d.ts +2 -0
  93. package/cjs/wait-for-value.test.d.ts.map +1 -0
  94. package/deno.json +1 -1
  95. package/esm/base-basic-sys-abstraction.test.js +1 -2
  96. package/esm/base-basic-sys-abstraction.test.js.map +1 -1
  97. package/esm/bin2text.test.js +2 -1
  98. package/esm/bin2text.test.js.map +1 -1
  99. package/esm/coerce-binary.test.js +1 -0
  100. package/esm/coerce-binary.test.js.map +1 -1
  101. package/esm/crypto.test.js +2 -1
  102. package/esm/crypto.test.js.map +1 -1
  103. package/esm/future.test.js +1 -0
  104. package/esm/future.test.js.map +1 -1
  105. package/esm/http_header.test.js +1 -1
  106. package/esm/http_header.test.js.map +1 -1
  107. package/esm/index.d.ts +3 -0
  108. package/esm/index.d.ts.map +1 -1
  109. package/esm/index.js +3 -0
  110. package/esm/index.js.map +1 -1
  111. package/esm/is-json.test.js +2 -1
  112. package/esm/is-json.test.js.map +1 -1
  113. package/esm/is-promise.test.js +2 -2
  114. package/esm/is-promise.test.js.map +1 -1
  115. package/esm/json-en-decoder.test.js +2 -1
  116. package/esm/json-en-decoder.test.js.map +1 -1
  117. package/esm/keyed-ng.test.js +2 -2
  118. package/esm/keyed-ng.test.js.map +1 -1
  119. package/esm/load-asset.test.js +2 -3
  120. package/esm/load-asset.test.js.map +1 -1
  121. package/esm/logger.test.js +2 -3
  122. package/esm/logger.test.js.map +1 -1
  123. package/esm/lru-map-set.test.js +1 -0
  124. package/esm/lru-map-set.test.js.map +1 -1
  125. package/esm/mutable-url.test.js +1 -1
  126. package/esm/mutable-url.test.js.map +1 -1
  127. package/esm/node-fs/mock-file-service.test.js +1 -0
  128. package/esm/node-fs/mock-file-service.test.js.map +1 -1
  129. package/esm/node-fs/node-sys-abstraction.test.js +1 -0
  130. package/esm/node-fs/node-sys-abstraction.test.js.map +1 -1
  131. package/esm/on-func.test.d.ts.map +1 -1
  132. package/esm/on-func.test.js +2 -3
  133. package/esm/on-func.test.js.map +1 -1
  134. package/esm/option.d.ts +1 -1
  135. package/esm/option.d.ts.map +1 -1
  136. package/esm/option.js +2 -2
  137. package/esm/option.js.map +1 -1
  138. package/esm/path-ops.test.js +2 -1
  139. package/esm/path-ops.test.js.map +1 -1
  140. package/esm/poller.test.js +2 -2
  141. package/esm/poller.test.js.map +1 -1
  142. package/esm/promise-sleep.test.js +2 -1
  143. package/esm/promise-sleep.test.js.map +1 -1
  144. package/esm/resolve-once.d.ts +3 -6
  145. package/esm/resolve-once.d.ts.map +1 -1
  146. package/esm/resolve-once.js.map +1 -1
  147. package/esm/resolve-once.test.js +9 -4
  148. package/esm/resolve-once.test.js.map +1 -1
  149. package/esm/result.test.js +25 -1
  150. package/esm/result.test.js.map +1 -1
  151. package/esm/sys-env.test.js +1 -0
  152. package/esm/sys-env.test.js.map +1 -1
  153. package/esm/test/mock-logger.test.js +1 -0
  154. package/esm/test/mock-logger.test.js.map +1 -1
  155. package/esm/timeouted.test.js +2 -2
  156. package/esm/timeouted.test.js.map +1 -1
  157. package/esm/tracer.test.js +1 -0
  158. package/esm/tracer.test.js.map +1 -1
  159. package/esm/txt-en-decoder.test.js +2 -2
  160. package/esm/txt-en-decoder.test.js.map +1 -1
  161. package/esm/uri.test.js +2 -2
  162. package/esm/uri.test.js.map +1 -1
  163. package/esm/utils/consume.test.js +2 -2
  164. package/esm/utils/consume.test.js.map +1 -1
  165. package/esm/utils/rebuffer.test.js +2 -1
  166. package/esm/utils/rebuffer.test.js.map +1 -1
  167. package/esm/utils/relative-path.test.js +2 -1
  168. package/esm/utils/relative-path.test.js.map +1 -1
  169. package/esm/utils/sorted-object.test.js +2 -1
  170. package/esm/utils/sorted-object.test.js.map +1 -1
  171. package/esm/utils/stream-map.test.js +2 -1
  172. package/esm/utils/stream-map.test.js.map +1 -1
  173. package/esm/utils/stream2string.test.js +2 -2
  174. package/esm/utils/stream2string.test.js.map +1 -1
  175. package/esm/utils/string2stream.test.js +2 -2
  176. package/esm/utils/string2stream.test.js.map +1 -1
  177. package/esm/utils/stripper.test.js +2 -1
  178. package/esm/utils/stripper.test.js.map +1 -1
  179. package/esm/utils/to-sorted.test.js +2 -2
  180. package/esm/utils/to-sorted.test.js.map +1 -1
  181. package/esm/version.js +1 -1
  182. package/esm/wait-for-value.d.ts +13 -0
  183. package/esm/wait-for-value.d.ts.map +1 -0
  184. package/esm/wait-for-value.js +45 -0
  185. package/esm/wait-for-value.js.map +1 -0
  186. package/esm/wait-for-value.test.d.ts +2 -0
  187. package/esm/wait-for-value.test.d.ts.map +1 -0
  188. package/esm/wait-for-value.test.js +84 -0
  189. package/esm/wait-for-value.test.js.map +1 -0
  190. package/package.json +1 -1
  191. package/src/index.ts +3 -0
  192. package/src/option.ts +2 -2
  193. package/src/resolve-once.ts +11 -60
  194. package/src/wait-for-value.ts +111 -0
  195. package/ts/cjs/base-basic-sys-abstraction.test.js +12 -13
  196. package/ts/cjs/base-basic-sys-abstraction.test.js.map +1 -1
  197. package/ts/cjs/bin2text.test.js +15 -14
  198. package/ts/cjs/bin2text.test.js.map +1 -1
  199. package/ts/cjs/coerce-binary.test.js +16 -15
  200. package/ts/cjs/coerce-binary.test.js.map +1 -1
  201. package/ts/cjs/crypto.test.js +9 -8
  202. package/ts/cjs/crypto.test.js.map +1 -1
  203. package/ts/cjs/future.test.js +12 -11
  204. package/ts/cjs/future.test.js.map +1 -1
  205. package/ts/cjs/http_header.test.js +13 -13
  206. package/ts/cjs/http_header.test.js.map +1 -1
  207. package/ts/cjs/index.d.ts +3 -0
  208. package/ts/cjs/index.d.ts.map +1 -1
  209. package/ts/cjs/index.js +3 -0
  210. package/ts/cjs/index.js.map +1 -1
  211. package/ts/cjs/is-json.test.js +59 -58
  212. package/ts/cjs/is-json.test.js.map +1 -1
  213. package/ts/cjs/is-promise.test.js +19 -19
  214. package/ts/cjs/is-promise.test.js.map +1 -1
  215. package/ts/cjs/json-en-decoder.test.js +13 -12
  216. package/ts/cjs/json-en-decoder.test.js.map +1 -1
  217. package/ts/cjs/keyed-ng.test.js +21 -21
  218. package/ts/cjs/keyed-ng.test.js.map +1 -1
  219. package/ts/cjs/logger.test.js +178 -179
  220. package/ts/cjs/logger.test.js.map +1 -1
  221. package/ts/cjs/lru-map-set.test.js +67 -66
  222. package/ts/cjs/lru-map-set.test.js.map +1 -1
  223. package/ts/cjs/mutable-url.test.js +44 -44
  224. package/ts/cjs/mutable-url.test.js.map +1 -1
  225. package/ts/cjs/node-fs/mock-file-service.test.js +7 -6
  226. package/ts/cjs/node-fs/mock-file-service.test.js.map +1 -1
  227. package/ts/cjs/node-fs/node-sys-abstraction.test.js +13 -12
  228. package/ts/cjs/node-fs/node-sys-abstraction.test.js.map +1 -1
  229. package/ts/cjs/on-func.test.d.ts.map +1 -1
  230. package/ts/cjs/on-func.test.js +42 -43
  231. package/ts/cjs/on-func.test.js.map +1 -1
  232. package/ts/cjs/option.d.ts +1 -1
  233. package/ts/cjs/option.d.ts.map +1 -1
  234. package/ts/cjs/option.js +2 -2
  235. package/ts/cjs/option.js.map +1 -1
  236. package/ts/cjs/path-ops.test.js +40 -39
  237. package/ts/cjs/path-ops.test.js.map +1 -1
  238. package/ts/cjs/poller.test.js +51 -51
  239. package/ts/cjs/poller.test.js.map +1 -1
  240. package/ts/cjs/promise-sleep.test.js +35 -34
  241. package/ts/cjs/promise-sleep.test.js.map +1 -1
  242. package/ts/cjs/resolve-once.d.ts +3 -6
  243. package/ts/cjs/resolve-once.d.ts.map +1 -1
  244. package/ts/cjs/resolve-once.js.map +1 -1
  245. package/ts/cjs/resolve-once.test.js +301 -296
  246. package/ts/cjs/resolve-once.test.js.map +1 -1
  247. package/ts/cjs/result.test.js +68 -44
  248. package/ts/cjs/result.test.js.map +1 -1
  249. package/ts/cjs/sys-env.test.js +67 -66
  250. package/ts/cjs/sys-env.test.js.map +1 -1
  251. package/ts/cjs/test/mock-logger.test.js +14 -13
  252. package/ts/cjs/test/mock-logger.test.js.map +1 -1
  253. package/ts/cjs/timeouted.test.js +313 -313
  254. package/ts/cjs/timeouted.test.js.map +1 -1
  255. package/ts/cjs/tracer.test.js +32 -31
  256. package/ts/cjs/tracer.test.js.map +1 -1
  257. package/ts/cjs/txt-en-decoder.test.js +31 -31
  258. package/ts/cjs/txt-en-decoder.test.js.map +1 -1
  259. package/ts/cjs/uri.test.js +239 -239
  260. package/ts/cjs/uri.test.js.map +1 -1
  261. package/ts/cjs/utils/consume.test.js +22 -22
  262. package/ts/cjs/utils/consume.test.js.map +1 -1
  263. package/ts/cjs/utils/rebuffer.test.js +40 -39
  264. package/ts/cjs/utils/rebuffer.test.js.map +1 -1
  265. package/ts/cjs/utils/relative-path.test.js +125 -124
  266. package/ts/cjs/utils/relative-path.test.js.map +1 -1
  267. package/ts/cjs/utils/sorted-object.test.js +8 -7
  268. package/ts/cjs/utils/sorted-object.test.js.map +1 -1
  269. package/ts/cjs/utils/stream-map.test.js +32 -31
  270. package/ts/cjs/utils/stream-map.test.js.map +1 -1
  271. package/ts/cjs/utils/stream2string.test.js +5 -5
  272. package/ts/cjs/utils/stream2string.test.js.map +1 -1
  273. package/ts/cjs/utils/string2stream.test.js +5 -5
  274. package/ts/cjs/utils/string2stream.test.js.map +1 -1
  275. package/ts/cjs/utils/stripper.test.js +21 -20
  276. package/ts/cjs/utils/stripper.test.js.map +1 -1
  277. package/ts/cjs/utils/to-sorted.test.js +27 -27
  278. package/ts/cjs/utils/to-sorted.test.js.map +1 -1
  279. package/ts/cjs/version.js +1 -1
  280. package/ts/cjs/wait-for-value.d.ts +13 -0
  281. package/ts/cjs/wait-for-value.d.ts.map +1 -0
  282. package/ts/cjs/wait-for-value.js +49 -0
  283. package/ts/cjs/wait-for-value.js.map +1 -0
  284. package/ts/cjs/wait-for-value.test.d.ts +2 -0
  285. package/ts/cjs/wait-for-value.test.d.ts.map +1 -0
  286. package/ts/cjs/wait-for-value.test.js +86 -0
  287. package/ts/cjs/wait-for-value.test.js.map +1 -0
  288. package/ts/esm/base-basic-sys-abstraction.test.js +1 -2
  289. package/ts/esm/base-basic-sys-abstraction.test.js.map +1 -1
  290. package/ts/esm/bin2text.test.js +2 -1
  291. package/ts/esm/bin2text.test.js.map +1 -1
  292. package/ts/esm/coerce-binary.test.js +1 -0
  293. package/ts/esm/coerce-binary.test.js.map +1 -1
  294. package/ts/esm/crypto.test.js +2 -1
  295. package/ts/esm/crypto.test.js.map +1 -1
  296. package/ts/esm/future.test.js +1 -0
  297. package/ts/esm/future.test.js.map +1 -1
  298. package/ts/esm/http_header.test.js +1 -1
  299. package/ts/esm/http_header.test.js.map +1 -1
  300. package/ts/esm/index.d.ts +3 -0
  301. package/ts/esm/index.d.ts.map +1 -1
  302. package/ts/esm/index.js +3 -0
  303. package/ts/esm/index.js.map +1 -1
  304. package/ts/esm/is-json.test.js +2 -1
  305. package/ts/esm/is-json.test.js.map +1 -1
  306. package/ts/esm/is-promise.test.js +2 -2
  307. package/ts/esm/is-promise.test.js.map +1 -1
  308. package/ts/esm/json-en-decoder.test.js +2 -1
  309. package/ts/esm/json-en-decoder.test.js.map +1 -1
  310. package/ts/esm/keyed-ng.test.js +2 -2
  311. package/ts/esm/keyed-ng.test.js.map +1 -1
  312. package/ts/esm/load-asset.test.js +2 -3
  313. package/ts/esm/load-asset.test.js.map +1 -1
  314. package/ts/esm/logger.test.js +2 -3
  315. package/ts/esm/logger.test.js.map +1 -1
  316. package/ts/esm/lru-map-set.test.js +1 -0
  317. package/ts/esm/lru-map-set.test.js.map +1 -1
  318. package/ts/esm/mutable-url.test.js +1 -1
  319. package/ts/esm/mutable-url.test.js.map +1 -1
  320. package/ts/esm/node-fs/mock-file-service.test.js +1 -0
  321. package/ts/esm/node-fs/mock-file-service.test.js.map +1 -1
  322. package/ts/esm/node-fs/node-sys-abstraction.test.js +1 -0
  323. package/ts/esm/node-fs/node-sys-abstraction.test.js.map +1 -1
  324. package/ts/esm/on-func.test.d.ts.map +1 -1
  325. package/ts/esm/on-func.test.js +2 -3
  326. package/ts/esm/on-func.test.js.map +1 -1
  327. package/ts/esm/option.d.ts +1 -1
  328. package/ts/esm/option.d.ts.map +1 -1
  329. package/ts/esm/option.js +2 -2
  330. package/ts/esm/option.js.map +1 -1
  331. package/ts/esm/path-ops.test.js +2 -1
  332. package/ts/esm/path-ops.test.js.map +1 -1
  333. package/ts/esm/poller.test.js +2 -2
  334. package/ts/esm/poller.test.js.map +1 -1
  335. package/ts/esm/promise-sleep.test.js +2 -1
  336. package/ts/esm/promise-sleep.test.js.map +1 -1
  337. package/ts/esm/resolve-once.d.ts +3 -6
  338. package/ts/esm/resolve-once.d.ts.map +1 -1
  339. package/ts/esm/resolve-once.js.map +1 -1
  340. package/ts/esm/resolve-once.test.js +9 -4
  341. package/ts/esm/resolve-once.test.js.map +1 -1
  342. package/ts/esm/result.test.js +25 -1
  343. package/ts/esm/result.test.js.map +1 -1
  344. package/ts/esm/sys-env.test.js +1 -0
  345. package/ts/esm/sys-env.test.js.map +1 -1
  346. package/ts/esm/test/mock-logger.test.js +1 -0
  347. package/ts/esm/test/mock-logger.test.js.map +1 -1
  348. package/ts/esm/timeouted.test.js +2 -2
  349. package/ts/esm/timeouted.test.js.map +1 -1
  350. package/ts/esm/tracer.test.js +1 -0
  351. package/ts/esm/tracer.test.js.map +1 -1
  352. package/ts/esm/txt-en-decoder.test.js +2 -2
  353. package/ts/esm/txt-en-decoder.test.js.map +1 -1
  354. package/ts/esm/uri.test.js +2 -2
  355. package/ts/esm/uri.test.js.map +1 -1
  356. package/ts/esm/utils/consume.test.js +2 -2
  357. package/ts/esm/utils/consume.test.js.map +1 -1
  358. package/ts/esm/utils/rebuffer.test.js +2 -1
  359. package/ts/esm/utils/rebuffer.test.js.map +1 -1
  360. package/ts/esm/utils/relative-path.test.js +2 -1
  361. package/ts/esm/utils/relative-path.test.js.map +1 -1
  362. package/ts/esm/utils/sorted-object.test.js +2 -1
  363. package/ts/esm/utils/sorted-object.test.js.map +1 -1
  364. package/ts/esm/utils/stream-map.test.js +2 -1
  365. package/ts/esm/utils/stream-map.test.js.map +1 -1
  366. package/ts/esm/utils/stream2string.test.js +2 -2
  367. package/ts/esm/utils/stream2string.test.js.map +1 -1
  368. package/ts/esm/utils/string2stream.test.js +2 -2
  369. package/ts/esm/utils/string2stream.test.js.map +1 -1
  370. package/ts/esm/utils/stripper.test.js +2 -1
  371. package/ts/esm/utils/stripper.test.js.map +1 -1
  372. package/ts/esm/utils/to-sorted.test.js +2 -2
  373. package/ts/esm/utils/to-sorted.test.js.map +1 -1
  374. package/ts/esm/version.js +1 -1
  375. package/ts/esm/wait-for-value.d.ts +13 -0
  376. package/ts/esm/wait-for-value.d.ts.map +1 -0
  377. package/ts/esm/wait-for-value.js +45 -0
  378. package/ts/esm/wait-for-value.js.map +1 -0
  379. package/ts/esm/wait-for-value.test.d.ts +2 -0
  380. package/ts/esm/wait-for-value.test.d.ts.map +1 -0
  381. package/ts/esm/wait-for-value.test.js +84 -0
  382. package/ts/esm/wait-for-value.test.js.map +1 -0
  383. package/tsconfig.json +1 -1
@@ -0,0 +1,45 @@
1
+ import { Future } from "./future.js";
2
+ import { Option } from "./option.js";
3
+ import { ResolveOnce } from "./resolve-once.js";
4
+ export class WaitingForValue {
5
+ #value;
6
+ #waitFuture;
7
+ #waitValue;
8
+ constructor(opts = {}) {
9
+ this.init(opts.presetValue);
10
+ }
11
+ init(presetValue = Option.None()) {
12
+ this.#value = presetValue;
13
+ if (this.#value.IsSome()) {
14
+ return this.setValue(this.#value);
15
+ }
16
+ const myFuture = (this.#waitFuture = new Future());
17
+ const resolveOnce = new ResolveOnce();
18
+ this.#waitValue = () => resolveOnce.once(async () => myFuture.asPromise());
19
+ }
20
+ setValue(value) {
21
+ if (value.IsNone()) {
22
+ return;
23
+ }
24
+ switch (true) {
25
+ case this.#value.IsNone():
26
+ this.#value = value;
27
+ this.#waitFuture?.resolve(value.unwrap());
28
+ break;
29
+ case this.#value.IsSome(): {
30
+ this.#value = value;
31
+ this.#waitFuture = undefined;
32
+ const resolveOnce = new ResolveOnce();
33
+ this.#waitValue = () => resolveOnce.once(() => Promise.resolve(value.unwrap()));
34
+ break;
35
+ }
36
+ }
37
+ }
38
+ waitValue() {
39
+ return this.#waitValue();
40
+ }
41
+ value() {
42
+ return this.#value;
43
+ }
44
+ }
45
+ //# sourceMappingURL=wait-for-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-for-value.js","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkChD,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAa;IACnB,WAAW,CAAa;IACxB,UAAU,CAAoB;IAO9B,YAAY,IAAI,GAA4B,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAAA,CAC7B;IASD,IAAI,CAAC,WAAW,GAAc,MAAM,CAAC,IAAI,EAAE,EAAQ;QACjD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,MAAM,EAAK,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAK,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAAA,CACxF;IAUD,QAAQ,CAAC,KAAgB,EAAQ;QAC/B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAEvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC7B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAK,CAAC;gBACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC5F,MAAM;YACR,CAAC;QACH,CAAC;IAAA,CACF;IAUD,SAAS,GAAe;QACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAAA,CAC1B;IAED,KAAK,GAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACpB;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wait-for-value.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-for-value.test.d.ts","sourceRoot":"","sources":["../../../src/wait-for-value.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,84 @@
1
+ import { WaitingForValue, sleep, Option } from "@adviser/cement";
2
+ import { it, vi, expect } from "vitest";
3
+ it("waitFor void", async () => {
4
+ const wfv = new WaitingForValue();
5
+ const size = 10;
6
+ for (let i = 0; i < size; i++) {
7
+ const promiseWaits = Promise.all(Array(size)
8
+ .fill(0)
9
+ .map(() => wfv.waitValue()));
10
+ const results = vi.fn();
11
+ void promiseWaits.then(results);
12
+ await sleep(10);
13
+ expect(results).not.toHaveBeenCalled();
14
+ wfv.setValue(Option.None());
15
+ await sleep(10);
16
+ expect(results).not.toHaveBeenCalled();
17
+ wfv.setValue(Option.Some(undefined));
18
+ await sleep(10);
19
+ await promiseWaits;
20
+ expect(results).toHaveBeenCalledTimes(1);
21
+ expect(results).toHaveBeenCalledWith(Array(size).fill(undefined));
22
+ wfv.setValue(Option.Some(42));
23
+ const promiseWaits2 = Promise.all(Array(size)
24
+ .fill(0)
25
+ .map(() => wfv.waitValue())).then(results);
26
+ await sleep(10);
27
+ await promiseWaits2;
28
+ expect(results).toHaveBeenCalledTimes(2);
29
+ expect(results.mock.calls).toEqual([[Array(size).fill(undefined)], [Array(size).fill(42)]]);
30
+ wfv.init();
31
+ }
32
+ });
33
+ it("waitFor object", async () => {
34
+ const wfv = new WaitingForValue();
35
+ const size = 10;
36
+ for (let i = 0; i < size; i++) {
37
+ const promiseWaits = Promise.all(Array(size)
38
+ .fill(0)
39
+ .map(() => wfv.waitValue()));
40
+ const results = vi.fn();
41
+ void promiseWaits.then(results);
42
+ await sleep(10);
43
+ expect(results).not.toHaveBeenCalled();
44
+ wfv.setValue(Option.None());
45
+ await sleep(10);
46
+ expect(results).not.toHaveBeenCalled();
47
+ wfv.setValue(Option.Some({ value: 0 }));
48
+ await sleep(10);
49
+ await promiseWaits;
50
+ expect(results).toHaveBeenCalledTimes(1);
51
+ expect(results).toHaveBeenCalledWith(Array(size).fill({ value: 0 }));
52
+ wfv.setValue(Option.Some({ value: 42 }));
53
+ const promiseWaits2 = Promise.all(Array(size)
54
+ .fill(0)
55
+ .map(() => wfv.waitValue())).then(results);
56
+ await sleep(10);
57
+ await promiseWaits2;
58
+ expect(results).toHaveBeenCalledTimes(2);
59
+ expect(results.mock.calls).toEqual([[Array(size).fill({ value: 0 })], [Array(size).fill({ value: 42 })]]);
60
+ wfv.init();
61
+ }
62
+ });
63
+ it("waitFor preset value", async () => {
64
+ const wfv = new WaitingForValue({ presetValue: Option.Some(7) });
65
+ const size = 10;
66
+ const promiseWaits = Promise.all(Array(size)
67
+ .fill(0)
68
+ .map(() => wfv.waitValue()));
69
+ const results = vi.fn();
70
+ void promiseWaits.then(results);
71
+ await sleep(10);
72
+ await promiseWaits;
73
+ expect(results).toHaveBeenCalledTimes(1);
74
+ expect(results).toHaveBeenCalledWith(Array(size).fill(7));
75
+ wfv.setValue(Option.Some(42));
76
+ const promiseWaits2 = Promise.all(Array(size)
77
+ .fill(0)
78
+ .map(() => wfv.waitValue())).then(results);
79
+ await sleep(10);
80
+ await promiseWaits2;
81
+ expect(results).toHaveBeenCalledTimes(2);
82
+ expect(results.mock.calls).toEqual([[Array(size).fill(7)], [Array(size).fill(42)]]);
83
+ });
84
+ //# sourceMappingURL=wait-for-value.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-for-value.test.js","sourceRoot":"","sources":["../../../src/wait-for-value.test.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.5.3",
3
+ "version": "0.5.4",
4
4
  "description": "better try/catch/finally handling",
5
5
  "main": "./cjs/index.js",
6
6
  "type": "module",
package/src/index.ts CHANGED
@@ -50,5 +50,8 @@ export * from "./utils/uint8array-equal.js";
50
50
  export * from "./utils/coerce-uint8.js";
51
51
  export * from "./utils/consume.js";
52
52
  export * from "./utils/to-sorted.js";
53
+ export * from "./utils/relative-path.js";
53
54
 
54
55
  export * from "./node-env/index.js";
56
+ export * from "./wait-for-value.js";
57
+ export * from "./is-json.js";
package/src/option.ts CHANGED
@@ -26,8 +26,8 @@
26
26
  * ```
27
27
  */
28
28
  export abstract class Option<T> {
29
- static Some<T>(t: T): Option<T> {
30
- return new Some(t);
29
+ static Some<T = void>(...args: T[]): Option<T> {
30
+ return args.length >= 1 ? new Some<T>(args[0]) : new Some<T>(undefined as unknown as T);
31
31
  }
32
32
 
33
33
  static None<T>(): Option<T> {
@@ -269,22 +269,6 @@ export class SyncResolveOnce<T, CTX> implements SyncOrAsyncIf<T> {
269
269
  }
270
270
  return this.#value as ResultOnce<RET>;
271
271
  }
272
-
273
- // /**
274
- // * Resets the cached state, allowing the function to be executed again.
275
- // *
276
- // * @param fn - Optional function to execute immediately after reset
277
- // * @returns The result if fn provided, undefined otherwise
278
- // */
279
- // reset(fn?: () => RET): T | undefined {
280
- // this.#value = undefined;
281
- // this.#error = undefined;
282
- // if (fn) {
283
- // this.#state.setProcessing();
284
- // return this.resolve(fn);
285
- // }
286
- // return undefined as T;
287
- // }
288
272
  }
289
273
 
290
274
  /**
@@ -488,20 +472,6 @@ export class AsyncResolveOnce<T, CTX> implements SyncOrAsyncIf<T> {
488
472
 
489
473
  return this.#active().resolve(fn);
490
474
  }
491
-
492
- // /**
493
- // * Resets the cached state, allowing the function to be executed again.
494
- // *
495
- // * @param fn - Optional function to execute immediately after reset
496
- // * @returns The result if fn provided, undefined otherwise
497
- // */
498
- // reset(fn?: () => ResultOnce<T>): T {
499
- // this.#state.setProcessing();
500
- // if (fn) {
501
- // return this.resolve(fn);
502
- // }
503
- // return undefined as T;
504
- // }
505
475
  }
506
476
 
507
477
  /**
@@ -687,36 +657,12 @@ export class ResolveOnce<T, CTX = void> implements ResolveOnceIf<T, CTX> {
687
657
  return this.#syncOrAsync.Unwrap().error;
688
658
  }
689
659
 
690
- // get state(): ResolveState {
691
- // return this.#state;
692
- // }
693
- // set state(value: ResolveState) {
694
- // console.log(`ResolveOnce.state ${this.#state} -> ${value}`);
695
- // if (value === "processed") {
696
- // if (this.resetAfterTimer) {
697
- // clearTimeout(this.resetAfterTimer);
698
- // }
699
- // if (typeof this.#opts.resetAfter === "number" && this.#opts.resetAfter > 0) {
700
- // console.log("setting reset timer for", this.#opts.resetAfter);
701
- // this.resetAfterTimer = setTimeout(() => {
702
- // console.log("resetting after", this.#opts.resetAfter);
703
- // this.reset();
704
- // }, this.#opts.resetAfter);
705
- // }
706
- // }
707
- // this.#state = value;
708
- // }
709
-
710
660
  once<RET extends T | Promise<T>>(fn: (arg: OnceActionArg<T, CTX>) => RET): ResultOnce<RET> {
711
661
  let resultFn: () => RET;
712
662
  if (this.#state.isInitial()) {
713
663
  const state = this.#state;
714
664
  try {
715
665
  state.setProcessing();
716
- // let prev: T | undefined = undefined;
717
- // if (this.#syncOrAsync.IsSome()) {
718
- // prev = this.#syncOrAsync.Unwrap().value as T;
719
- // }
720
666
  const isSyncOrAsync = fn(this._onceArg);
721
667
  if (isPromise(isSyncOrAsync)) {
722
668
  this.#syncOrAsync = Option.Some(new AsyncResolveOnce<T, CTX>(this, state, this.#syncOrAsync));
@@ -806,11 +752,14 @@ export type AddKeyedParam<K, V, CTX extends NonNullable<object>> = Omit<KeyedNgO
806
752
  */
807
753
  export type WithKey<X extends NonNullable<object>, K> = X & { readonly key: K };
808
754
 
755
+ // interface ResetFunc {
756
+ // reset(): void;
757
+ // }
809
758
  /**
810
759
  * Type helper that adds an optional reset method to a value type.
811
760
  * @template V - The value type
812
761
  */
813
- export type WithOptionalReset<V> = V & { readonly reset?: () => void };
762
+ // export type WithOptionalReset<V> = V extends ResetFunc ? V & ResetFunc : V;
814
763
 
815
764
  /**
816
765
  * Represents an item in a KeyedResolvOnce collection with its resolved result.
@@ -824,7 +773,7 @@ export interface KeyedResolveOnceItem<K, T, CTX extends NonNullable<object>> {
824
773
  /** The resolved value wrapped in a Result (Ok or Err) */
825
774
  readonly value: Result<T>;
826
775
  /** The complete KeyedNgItem containing metadata */
827
- readonly item: KeyedNgItem<K, ResolveOnce<WithOptionalReset<T>, KeyedNgItemWithoutValue<K, CTX>>, CTX>;
776
+ readonly item: KeyedNgItem<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX>;
828
777
  }
829
778
 
830
779
  /**
@@ -873,10 +822,12 @@ export interface KeyedResolveOnceItem<K, T, CTX extends NonNullable<object>> {
873
822
  * ```
874
823
  */
875
824
  export class KeyedResolvOnce<
876
- T extends WithOptionalReset<PT>,
825
+ T,
826
+ //export type WithOptionalReset<V> = V extends ResetFunc ? V & ResetFunc : V;
827
+ // WithOptionalReset<PT>,
877
828
  K = string,
878
829
  CTX extends NonNullable<object> = object,
879
- PT = T,
830
+ // PT = unknown,
880
831
  > implements Omit<
881
832
  // KeyedIf<ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, WithOptionalReset<T>, K>
882
833
  KeyedIf<
@@ -888,7 +839,7 @@ export class KeyedResolvOnce<
888
839
  "entries" | "forEach" | "onSet" | "onDelete" | "values" | "setParam"
889
840
  > {
890
841
  /** @internal */
891
- readonly _keyed: KeyedNg<K, ResolveOnce<WithOptionalReset<T>, KeyedNgItemWithoutValue<K, CTX>>, CTX>;
842
+ readonly _keyed: KeyedNg<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX>;
892
843
 
893
844
  /**
894
845
  * Creates a new KeyedResolvOnce instance.
@@ -896,7 +847,7 @@ export class KeyedResolvOnce<
896
847
  * @param kp - Configuration options (key2string, ctx, lru)
897
848
  */
898
849
  constructor(kp: Partial<AddKeyedParam<K, T, CTX>> = {}) {
899
- this._keyed = new KeyedNg({
850
+ this._keyed = new KeyedNg<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX>({
900
851
  createValue: (
901
852
  item: KeyedNgItem<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX>,
902
853
  ): ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>> => {
@@ -0,0 +1,111 @@
1
+ import { Future } from "./future.js";
2
+ import { Option } from "./option.js";
3
+ import { ResolveOnce } from "./resolve-once.js";
4
+
5
+ /**
6
+ * Configuration options for WaitingForValue.
7
+ */
8
+ export interface WaitingForValueProps<T> {
9
+ /**
10
+ * Optional preset value to initialize the WaitingForValue with.
11
+ * If provided and Some, the value is immediately available.
12
+ */
13
+ readonly presetValue?: Option<T>;
14
+ }
15
+
16
+ /**
17
+ * A utility for managing a value that may not be immediately available.
18
+ * Allows multiple callers to await the same value efficiently, with all
19
+ * waiters resolved when the value becomes available.
20
+ *
21
+ * @template T - The type of value being waited for
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const waiting = new WaitingForValue<string>();
26
+ *
27
+ * // Multiple callers can await the value
28
+ * const promise1 = waiting.waitValue();
29
+ * const promise2 = waiting.waitValue();
30
+ *
31
+ * // Set the value - all waiters are resolved
32
+ * waiting.setValue(Option.Some("hello"));
33
+ *
34
+ * // Both promises resolve to "hello"
35
+ * ```
36
+ */
37
+ export class WaitingForValue<T = void> {
38
+ #value!: Option<T>;
39
+ #waitFuture?: Future<T>;
40
+ #waitValue!: () => Promise<T>;
41
+
42
+ /**
43
+ * Creates a new WaitingForValue instance.
44
+ *
45
+ * @param opts - Configuration options
46
+ */
47
+ constructor(opts: WaitingForValueProps<T> = {}) {
48
+ this.init(opts.presetValue);
49
+ }
50
+
51
+ /**
52
+ * Initializes or reinitializes the WaitingForValue with an optional preset value.
53
+ * If a preset value is provided and is Some, the value is immediately available.
54
+ * Otherwise, sets up the waiting mechanism for future value resolution.
55
+ *
56
+ * @param presetValue - Optional initial value
57
+ */
58
+ init(presetValue: Option<T> = Option.None()): void {
59
+ this.#value = presetValue;
60
+ if (this.#value.IsSome()) {
61
+ return this.setValue(this.#value);
62
+ }
63
+ const myFuture = (this.#waitFuture = new Future<T>());
64
+ const resolveOnce = new ResolveOnce<T>();
65
+ this.#waitValue = (): Promise<T> => resolveOnce.once(async () => myFuture.asPromise());
66
+ }
67
+
68
+ /**
69
+ * Sets the value and resolves all pending waiters.
70
+ * If called when no value exists, resolves the waiting Future.
71
+ * If called when a value already exists, updates the value and resets the waiting mechanism.
72
+ * Does nothing if the provided value is None.
73
+ *
74
+ * @param value - The value to set (wrapped in Option)
75
+ */
76
+ setValue(value: Option<T>): void {
77
+ if (value.IsNone()) {
78
+ return;
79
+ }
80
+ switch (true) {
81
+ case this.#value.IsNone():
82
+ // need to resolve waiters
83
+ this.#value = value;
84
+ this.#waitFuture?.resolve(value.unwrap());
85
+ break;
86
+ case this.#value.IsSome(): {
87
+ this.#value = value;
88
+ this.#waitFuture = undefined;
89
+ const resolveOnce = new ResolveOnce<T>();
90
+ this.#waitValue = (): Promise<T> => resolveOnce.once(() => Promise.resolve(value.unwrap()));
91
+ break;
92
+ }
93
+ }
94
+ }
95
+
96
+ /**
97
+ * Returns a promise that resolves when the value becomes available.
98
+ * If the value is already set, returns a promise that resolves immediately.
99
+ * Multiple calls to this method are safe and efficient - all callers share
100
+ * the same resolution logic thanks to ResolveOnce.
101
+ *
102
+ * @returns A promise that resolves to the value
103
+ */
104
+ waitValue(): Promise<T> {
105
+ return this.#waitValue();
106
+ }
107
+
108
+ value(): Option<T> {
109
+ return this.#value;
110
+ }
111
+ }
@@ -2,32 +2,31 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const index_js_1 = require("./web-env/index.js");
4
4
  const index_js_2 = require("./cf-env/index.js");
5
- const runtime_js_1 = require("./runtime.js");
6
- const sys_abstraction_js_1 = require("./sys-abstraction.js");
7
5
  const index_js_3 = require("./node-env/index.js");
8
6
  const index_js_4 = require("./deno-env/index.js");
9
7
  const vitest_1 = require("vitest");
8
+ const cement_1 = require("@adviser/cement");
10
9
  const add_cement_do_not_export_js_1 = require("./add-cement-do-not-export.js");
11
10
  const abstractions = [];
12
- if ((0, runtime_js_1.runtimeFn)().isCFWorker) {
11
+ if ((0, cement_1.runtimeFn)().isCFWorker) {
13
12
  abstractions.push({
14
13
  name: "CFSysAbstraction",
15
14
  fn: (a) => (0, index_js_2.CFBasicSysAbstraction)((0, add_cement_do_not_export_js_1.addCement)(a)),
16
15
  });
17
16
  }
18
- if ((0, runtime_js_1.runtimeFn)().isNodeIsh) {
17
+ if ((0, cement_1.runtimeFn)().isNodeIsh) {
19
18
  abstractions.push({
20
19
  name: "NodeSysAbstraction",
21
20
  fn: (a) => (0, index_js_3.NodeBasicSysAbstraction)((0, add_cement_do_not_export_js_1.addCement)(a)),
22
21
  });
23
22
  }
24
- if ((0, runtime_js_1.runtimeFn)().isDeno) {
23
+ if ((0, cement_1.runtimeFn)().isDeno) {
25
24
  abstractions.push({
26
25
  name: "DenoSysAbstraction",
27
26
  fn: (a) => (0, index_js_4.DenoBasicSysAbstraction)((0, add_cement_do_not_export_js_1.addCement)(a)),
28
27
  });
29
28
  }
30
- if ((0, runtime_js_1.runtimeFn)().isBrowser) {
29
+ if ((0, cement_1.runtimeFn)().isBrowser) {
31
30
  abstractions.push({
32
31
  name: "WebSysAbstraction",
33
32
  fn: (a) => (0, index_js_1.WebBasicSysAbstraction)((0, add_cement_do_not_export_js_1.addCement)(a)),
@@ -42,20 +41,20 @@ for (const abstraction of abstractions) {
42
41
  (0, vitest_1.expect)(id1).not.toEqual(id2);
43
42
  });
44
43
  (0, vitest_1.it)("IdService explict UUID", () => {
45
- const sys = abstraction.fn({ IdMode: sys_abstraction_js_1.IDMode.UUID });
44
+ const sys = abstraction.fn({ IdMode: cement_1.IDMode.UUID });
46
45
  const id1 = sys.NextId();
47
46
  const id2 = sys.NextId();
48
47
  (0, vitest_1.expect)(id1).not.toEqual(id2);
49
48
  });
50
49
  (0, vitest_1.it)("IdService const", () => {
51
- const sys = abstraction.fn({ IdMode: sys_abstraction_js_1.IDMode.CONST });
50
+ const sys = abstraction.fn({ IdMode: cement_1.IDMode.CONST });
52
51
  const id1 = sys.NextId();
53
52
  const id2 = sys.NextId();
54
53
  (0, vitest_1.expect)(id1).toEqual(id2);
55
54
  });
56
55
  (0, vitest_1.it)("IdService set", () => {
57
56
  for (let i = 0; i < 10; i++) {
58
- const sys = abstraction.fn({ IdMode: sys_abstraction_js_1.IDMode.STEP });
57
+ const sys = abstraction.fn({ IdMode: cement_1.IDMode.STEP });
59
58
  const id1 = sys.NextId();
60
59
  const id2 = sys.NextId();
61
60
  (0, vitest_1.expect)(id1).toEqual("STEPId-0");
@@ -69,25 +68,25 @@ for (const abstraction of abstractions) {
69
68
  (0, vitest_1.expect)(sys.Time().TimeSince(start)).toBeGreaterThan(90);
70
69
  });
71
70
  (0, vitest_1.it)("time sleep const", async () => {
72
- const sys = abstraction.fn({ TimeMode: sys_abstraction_js_1.TimeMode.REAL });
71
+ const sys = abstraction.fn({ TimeMode: cement_1.TimeMode.REAL });
73
72
  const start = new Date();
74
73
  await sys.Time().Sleep(100);
75
74
  const end = new Date();
76
75
  (0, vitest_1.expect)(end.getTime() - start.getTime()).toBeGreaterThan(90);
77
76
  });
78
77
  (0, vitest_1.it)("time sleep step", async () => {
79
- const sys = abstraction.fn({ TimeMode: sys_abstraction_js_1.TimeMode.STEP });
78
+ const sys = abstraction.fn({ TimeMode: cement_1.TimeMode.STEP });
80
79
  const start = sys.Time().Now();
81
80
  await sys.Time().Sleep(86400500);
82
81
  (0, vitest_1.expect)(sys.Time().Now().getTime() - start.getTime()).toEqual(86401500);
83
82
  });
84
83
  (0, vitest_1.it)("const random", () => {
85
- const sys = abstraction.fn({ RandomMode: sys_abstraction_js_1.RandomMode.CONST });
84
+ const sys = abstraction.fn({ RandomMode: cement_1.RandomMode.CONST });
86
85
  (0, vitest_1.expect)(sys.Random0ToValue(10)).toEqual(5);
87
86
  (0, vitest_1.expect)(sys.Random0ToValue(10)).toEqual(5);
88
87
  });
89
88
  (0, vitest_1.it)("step random", () => {
90
- const sys = abstraction.fn({ RandomMode: sys_abstraction_js_1.RandomMode.STEP });
89
+ const sys = abstraction.fn({ RandomMode: cement_1.RandomMode.STEP });
91
90
  (0, vitest_1.expect)(sys.Random0ToValue(10000)).toEqual(1);
92
91
  (0, vitest_1.expect)(sys.Random0ToValue(10000)).toEqual(2);
93
92
  });
@@ -1 +1 @@
1
- {"version":3,"file":"base-basic-sys-abstraction.test.js","sourceRoot":"","sources":["../../../src/base-basic-sys-abstraction.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-basic-sys-abstraction.test.js","sourceRoot":"","sources":["../../../src/base-basic-sys-abstraction.test.ts"],"names":[],"mappings":";;AAAA,iDAA4D;AAC5D,gDAA0D;AAC1D,kDAA8D;AAC9D,kDAA8D;AAC9D,mCAA8C;AAC9C,4CAOyB;AACzB,+EAA0D;AAE1D,MAAM,YAAY,GAAwG,EAAE,CAAC;AAE7H,IAAI,IAAA,kBAAS,GAAE,CAAC,UAAU,EAAE,CAAC;IAC3B,YAAY,CAAC,IAAI,CAAC;QAChB,IAAI,EAAE,kBAAkB;QACxB,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,gCAAqB,EAAC,IAAA,uCAAS,EAAC,CAAC,CAAC,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC;AAED,IAAI,IAAA,kBAAS,GAAE,CAAC,SAAS,EAAE,CAAC;IAC1B,YAAY,CAAC,IAAI,CAAC;QAChB,IAAI,EAAE,oBAAoB;QAC1B,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,kCAAuB,EAAC,IAAA,uCAAS,EAAC,CAAC,CAAC,CAAC;KACjD,CAAC,CAAC;AACL,CAAC;AAED,IAAI,IAAA,kBAAS,GAAE,CAAC,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,IAAI,CAAC;QAChB,IAAI,EAAE,oBAAoB;QAC1B,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,kCAAuB,EAAC,IAAA,uCAAS,EAAC,CAAC,CAAC,CAAC;KACjD,CAAC,CAAC;AACL,CAAC;AAED,IAAI,IAAA,kBAAS,GAAE,CAAC,SAAS,EAAE,CAAC;IAC1B,YAAY,CAAC,IAAI,CAAC;QAChB,IAAI,EAAE,mBAAmB;QACzB,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,iCAAsB,EAAC,IAAA,uCAAS,EAAC,CAAC,CAAC,CAAC;KAChD,CAAC,CAAC;AACL,CAAC;AAED,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;IACvC,IAAA,iBAAQ,EAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;QAC/B,IAAA,WAAE,EAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACzB,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAAA,CAC9B,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,eAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACzB,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAAA,CAC9B,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,eAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACzB,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAAA,CAC1B,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,eAAe,EAAE,GAAG,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,eAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBACzB,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAChC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC;QAAA,CACF,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;YAC/B,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAA,eAAM,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAAA,CACzD,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAA,eAAM,EAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAAA,CAC7D,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;YAC/B,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAA,eAAM,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAAA,CACxE,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,cAAc,EAAE,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,mBAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7D,IAAA,eAAM,EAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAA,eAAM,EAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAAA,CAC3C,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,aAAa,EAAE,GAAG,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,mBAAU,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5D,IAAA,eAAM,EAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAA,eAAM,EAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAAA,CAC9C,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;gBACnC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC;QAAA,CACF,CAAC,CAAC;IAAA,CACJ,CAAC,CAAC;AACL,CAAC"}
@@ -1,37 +1,38 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const bin2text_js_1 = require("./bin2text.js");
4
- it("bin2hex empty", () => {
5
- expect((0, bin2text_js_1.bin2string)(new Uint8Array())).toEqual("");
3
+ const vitest_1 = require("vitest");
4
+ const cement_1 = require("@adviser/cement");
5
+ (0, vitest_1.it)("bin2hex empty", () => {
6
+ (0, vitest_1.expect)((0, cement_1.bin2string)(new Uint8Array())).toEqual("");
6
7
  });
7
- it("bin2hex one", () => {
8
- expect((0, bin2text_js_1.bin2string)(new Uint8Array([64]))).toBe("0000 40 @");
8
+ (0, vitest_1.it)("bin2hex one", () => {
9
+ (0, vitest_1.expect)((0, cement_1.bin2string)(new Uint8Array([64]))).toBe("0000 40 @");
9
10
  });
10
- it("bin2hex 12", () => {
11
+ (0, vitest_1.it)("bin2hex 12", () => {
11
12
  const collector = [];
12
- (0, bin2text_js_1.bin2text)(new Uint8Array([1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 0xa, 0xb, 0xc]), (line) => {
13
+ (0, cement_1.bin2text)(new Uint8Array([1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 0xa, 0xb, 0xc]), (line) => {
13
14
  collector.push(line);
14
15
  });
15
- expect(collector).toEqual(["0000 01 02 03 04 04 05 06 07 08 09 0a 0b 0c ............."]);
16
+ (0, vitest_1.expect)(collector).toEqual(["0000 01 02 03 04 04 05 06 07 08 09 0a 0b 0c ............."]);
16
17
  });
17
- it("bin2hex cut", () => {
18
+ (0, vitest_1.it)("bin2hex cut", () => {
18
19
  const collector = [];
19
- (0, bin2text_js_1.bin2text)(new Uint8Array(new Array(255).fill(1).map((_, i) => i)), (line) => {
20
+ (0, cement_1.bin2text)(new Uint8Array(new Array(255).fill(1).map((_, i) => i)), (line) => {
20
21
  collector.push(line);
21
22
  }, 52);
22
- expect(collector).toEqual([
23
+ (0, vitest_1.expect)(collector).toEqual([
23
24
  "0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................",
24
25
  "0010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................",
25
26
  "0020 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f !\"#$%&'()*+,-./",
26
27
  "00f0>>f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ...............",
27
28
  ]);
28
29
  });
29
- it("bin2hex long", () => {
30
+ (0, vitest_1.it)("bin2hex long", () => {
30
31
  const collector = [];
31
- (0, bin2text_js_1.bin2text)(new Uint8Array(new Array(256).fill(1).map((_, i) => i % 0xff)), (line) => {
32
+ (0, cement_1.bin2text)(new Uint8Array(new Array(256).fill(1).map((_, i) => i % 0xff)), (line) => {
32
33
  collector.push(line);
33
34
  });
34
- expect(collector).toEqual([
35
+ (0, vitest_1.expect)(collector).toEqual([
35
36
  "0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................",
36
37
  "0010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................",
37
38
  "0020 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f !\"#$%&'()*+,-./",
@@ -1 +1 @@
1
- {"version":3,"file":"bin2text.test.js","sourceRoot":"","sources":["../../../src/bin2text.test.ts"],"names":[],"mappings":";;AAAA,+CAAqD;AAErD,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC;IACxB,MAAM,CAAC,IAAA,wBAAU,EAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAAA,CAClD,CAAC,CAAC;AAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC;IACtB,MAAM,CAAC,IAAA,wBAAU,EAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;AAAA,CAC1G,CAAC,CAAC;AAEH,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC;IACrB,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAA,sBAAQ,EAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QAChF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAAA,CACtB,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,qEAAqE,CAAC,CAAC,CAAC;AAAA,CACpG,CAAC,CAAC;AAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAA,sBAAQ,EACN,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACvD,CAAC,IAAI,EAAE,EAAE,CAAC;QACR,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAAA,CACtB,EACD,EAAE,CACH,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QACxB,wEAAwE;QACxE,wEAAwE;QACxE,yEAAyE;QACzE,uEAAuE;KACxE,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC;AAEH,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC;IACvB,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAA,sBAAQ,EAAC,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QACjF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAAA,CACtB,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QACxB,wEAAwE;QACxE,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;KACzE,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"bin2text.test.js","sourceRoot":"","sources":["../../../src/bin2text.test.ts"],"names":[],"mappings":";;AAAA,mCAAoC;AACpC,4CAAuD;AAEvD,IAAA,WAAE,EAAC,eAAe,EAAE,GAAG,EAAE,CAAC;IACxB,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAAA,CAClD,CAAC,CAAC;AAEH,IAAA,WAAE,EAAC,aAAa,EAAE,GAAG,EAAE,CAAC;IACtB,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;AAAA,CAC1G,CAAC,CAAC;AAEH,IAAA,WAAE,EAAC,YAAY,EAAE,GAAG,EAAE,CAAC;IACrB,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAA,iBAAQ,EAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QAChF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAAA,CACtB,CAAC,CAAC;IACH,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,qEAAqE,CAAC,CAAC,CAAC;AAAA,CACpG,CAAC,CAAC;AAEH,IAAA,WAAE,EAAC,aAAa,EAAE,GAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAA,iBAAQ,EACN,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACvD,CAAC,IAAI,EAAE,EAAE,CAAC;QACR,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAAA,CACtB,EACD,EAAE,CACH,CAAC;IACF,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QACxB,wEAAwE;QACxE,wEAAwE;QACxE,yEAAyE;QACzE,uEAAuE;KACxE,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC;AAEH,IAAA,WAAE,EAAC,cAAc,EAAE,GAAG,EAAE,CAAC;IACvB,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAA,iBAAQ,EAAC,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QACjF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAAA,CACtB,CAAC,CAAC;IACH,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QACxB,wEAAwE;QACxE,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;KACzE,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC"}