@wener/utils 1.1.51 → 1.1.54

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 (497) hide show
  1. package/lib/arrays/MaybeArray.js +58 -8
  2. package/lib/arrays/arrayFromAsync.js +254 -6
  3. package/lib/asyncs/AsyncInterval.js +145 -9
  4. package/lib/asyncs/MaybePromise.js +0 -2
  5. package/lib/asyncs/Promises.js +95 -48
  6. package/lib/asyncs/createAsyncIterator.js +313 -23
  7. package/lib/asyncs/createLazyPromise.js +72 -31
  8. package/lib/asyncs/createLazyPromise.test.js +367 -0
  9. package/lib/asyncs/firstOfAsyncIterator.js +6 -6
  10. package/lib/asyncs/generatorOfStream.js +125 -14
  11. package/lib/asyncs/isIterator.js +1 -3
  12. package/lib/asyncs/isPromise.js +2 -4
  13. package/lib/asyncs/isThenable.js +0 -2
  14. package/lib/asyncs/nextOfAsyncIterator.js +15 -9
  15. package/lib/asyncs/promiseOfCallback.js +2 -4
  16. package/lib/asyncs/timeout.js +122 -13
  17. package/lib/browsers/copy.js +7 -8
  18. package/lib/browsers/download.js +215 -40
  19. package/lib/browsers/getFileFromDataTransfer.js +17 -14
  20. package/lib/browsers/loaders.js +251 -18
  21. package/lib/crypto/base.js +3 -3
  22. package/lib/crypto/getNodeCrypto.js +3 -5
  23. package/lib/crypto/hashing.js +236 -30
  24. package/lib/crypto/hashing.test.js +323 -0
  25. package/lib/crypto/md5.bench.js +11 -11
  26. package/lib/crypto/md5.d.js +0 -2
  27. package/lib/crypto/md5.js +0 -2
  28. package/lib/crypto/md5.test.js +7 -0
  29. package/lib/crypto/pem/pem.js +197 -35
  30. package/lib/crypto/pem/pem.test.js +104 -0
  31. package/lib/crypto/randomUUIDv7.js +0 -2
  32. package/lib/crypto/ulid.js +84 -48
  33. package/lib/crypto/ulid.test.js +115 -0
  34. package/lib/emitter/types.js +0 -2
  35. package/lib/errors/DetailError.js +297 -0
  36. package/lib/errors/Errors.js +136 -137
  37. package/lib/errors/Errors.test.js +24 -0
  38. package/lib/fetch/HttpStatus.js +1 -3
  39. package/lib/fetch/createFetchWith.js +188 -19
  40. package/lib/fetch/createFetchWithLogging.js +17 -16
  41. package/lib/fetch/createFetchWithRetry.js +40 -24
  42. package/lib/fetch/dumpRequest.js +467 -41
  43. package/lib/fetch/dumpRequest.test.js +384 -0
  44. package/lib/fetch/dumpResponse.js +271 -16
  45. package/lib/fetch/dumpResponse.test.js +393 -0
  46. package/lib/fetch/http.types.js +0 -2
  47. package/lib/fetch/index.js +5 -7
  48. package/lib/fetch/isTextContentType.js +5 -0
  49. package/lib/fetch/resolveRequest.js +7 -0
  50. package/lib/fetch/types.js +0 -2
  51. package/lib/i18n/createTranslate.js +40 -20
  52. package/lib/i18n/createTranslate.test.js +177 -0
  53. package/lib/index.js +75 -76
  54. package/lib/io/AbstractEncoding.js +0 -2
  55. package/lib/io/ArrayBuffer.test-d.js +4 -6
  56. package/lib/io/ArrayBuffers.base64.test.js +60 -0
  57. package/lib/io/ArrayBuffers.js +396 -171
  58. package/lib/io/ArrayBuffers.test.js +77 -0
  59. package/lib/io/Buffer.js +190 -20
  60. package/lib/io/Buffer.test.js +22 -0
  61. package/lib/io/ByteBuffer.js +752 -441
  62. package/lib/io/ByteBuffer.test.js +184 -0
  63. package/lib/io/base64.js +17 -19
  64. package/lib/io/dump.js +16 -16
  65. package/lib/io/isBuffer.js +2 -3
  66. package/lib/io/isBuffer.test.js +8 -0
  67. package/lib/io/isTransferable.js +16 -8
  68. package/lib/io/isTransferable.test.js +17 -0
  69. package/lib/io/parseDataUri.js +288 -40
  70. package/lib/io/parseDataUri.test.js +286 -0
  71. package/lib/io/types.js +1 -0
  72. package/lib/langs/AsyncCloser.js +270 -34
  73. package/lib/langs/Closer.js +95 -29
  74. package/lib/langs/MaybeFunction.js +38 -5
  75. package/lib/langs/classOf.js +0 -2
  76. package/lib/langs/deepEqual.js +82 -22
  77. package/lib/langs/deepEqual.test.js +11 -0
  78. package/lib/langs/deepFreeze.js +28 -9
  79. package/lib/langs/getGlobalStates.js +14 -10
  80. package/lib/langs/getObjectId.js +4 -6
  81. package/lib/langs/ifPresent.js +0 -2
  82. package/lib/langs/isClass.js +0 -2
  83. package/lib/langs/isDefined.js +0 -2
  84. package/lib/langs/isEmptyObject.js +1 -3
  85. package/lib/langs/isFunction.js +0 -2
  86. package/lib/langs/isNil.js +3 -0
  87. package/lib/langs/isPlainObject.js +2 -4
  88. package/lib/langs/langs.test.js +126 -0
  89. package/lib/langs/memoize.js +11 -7
  90. package/lib/langs/mixin.js +7 -4
  91. package/lib/langs/mixin.test.js +135 -0
  92. package/lib/langs/parseBoolean.js +11 -8
  93. package/lib/langs/parseDate.js +20 -0
  94. package/lib/langs/shallowClone.js +5 -3
  95. package/lib/langs/shallowEqual.js +8 -6
  96. package/lib/libs/ms.js +28 -26
  97. package/lib/libs/ms.test.js +301 -0
  98. package/lib/logger/const.js +15 -0
  99. package/lib/logger/index.js +1 -0
  100. package/lib/logger/types.js +1 -0
  101. package/lib/maths/clamp.js +81 -12
  102. package/lib/maths/clamp.test.js +186 -0
  103. package/lib/maths/createRandom.test.js +36 -0
  104. package/lib/maths/random.js +162 -13
  105. package/lib/modules/isModule.js +0 -2
  106. package/lib/modules/parseModuleId.js +14 -15
  107. package/lib/modules/parseModuleId.test.js +153 -0
  108. package/lib/objects/computeIfAbsent.js +8 -3
  109. package/lib/objects/get.js +26 -8
  110. package/lib/objects/get.test-d.js +23 -25
  111. package/lib/objects/merge/index.js +1 -3
  112. package/lib/objects/merge/isMergeableObject.js +5 -3
  113. package/lib/objects/merge/merge.js +82 -26
  114. package/lib/objects/merge/merge.test.js +1397 -0
  115. package/lib/objects/parseObjectPath.js +47 -15
  116. package/lib/objects/parseObjectPath.test.js +138 -0
  117. package/lib/objects/set.js +25 -19
  118. package/lib/objects/set.test.js +522 -0
  119. package/lib/schema/typebox/index.js +2 -3
  120. package/lib/schema/typebox/typebox.js +6 -6
  121. package/lib/scripts/getGenerateContext.js +386 -77
  122. package/lib/server/crypto/md5.js +0 -2
  123. package/lib/server/fetch/createFetchWithProxy.js +2 -4
  124. package/lib/server/fetch/createFetchWithProxyByNodeFetch.js +258 -31
  125. package/lib/server/fetch/createFetchWithProxyByUndici.js +307 -49
  126. package/lib/server/getPackageDir.js +2 -3
  127. package/lib/server/index.js +5 -7
  128. package/lib/server/jsdom.js +1 -3
  129. package/lib/server/node-fetch.js +2 -4
  130. package/lib/server/polyfill/polyfillBrowser.js +163 -9
  131. package/lib/server/polyfill/polyfillBrowser.test.js +164 -0
  132. package/lib/server/polyfill/polyfillCrypto.js +157 -9
  133. package/lib/server/polyfill/polyfillFetch.js +13 -13
  134. package/lib/server/polyfill/polyfillJsDom.js +264 -58
  135. package/lib/server/polyfill/polyfillWebSocket.js +11 -11
  136. package/lib/server/ws.js +1 -3
  137. package/lib/strings/bytes.test.js +327 -0
  138. package/lib/strings/camelCase.js +23 -14
  139. package/lib/strings/formatBytes.js +29 -20
  140. package/lib/strings/parseBytes.js +54 -0
  141. package/lib/strings/renderTemplate.js +17 -12
  142. package/lib/strings/renderTemplate.test.js +104 -0
  143. package/lib/typedoc.js +2 -4
  144. package/lib/types.d.js +0 -2
  145. package/lib/validations/asserts.js +0 -2
  146. package/lib/validations/isUUID.js +0 -2
  147. package/lib/validations/isUUID.test.js +87 -0
  148. package/lib/validations/parseTimestamp.js +12 -7
  149. package/lib/validations/parseTimestamp.test.js +6 -0
  150. package/lib/web/getGlobalThis.js +3 -4
  151. package/lib/web/getRandomValues.js +28 -20
  152. package/lib/web/randomUUID.js +7 -8
  153. package/lib/web/requestIdleCallback.js +13 -9
  154. package/lib/web/structuredClone.js +35 -28
  155. package/lib/web/structuredClone.test.js +81 -0
  156. package/package.json +9 -14
  157. package/src/arrays/MaybeArray.ts +22 -22
  158. package/src/arrays/arrayFromAsync.ts +3 -3
  159. package/src/asyncs/AsyncInterval.ts +8 -8
  160. package/src/asyncs/Promises.ts +51 -51
  161. package/src/asyncs/createAsyncIterator.ts +33 -33
  162. package/src/asyncs/createLazyPromise.test.ts +73 -73
  163. package/src/asyncs/createLazyPromise.ts +68 -73
  164. package/src/asyncs/firstOfAsyncIterator.ts +5 -5
  165. package/src/asyncs/generatorOfStream.ts +12 -12
  166. package/src/asyncs/isIterator.ts +1 -1
  167. package/src/asyncs/isThenable.ts +2 -2
  168. package/src/asyncs/nextOfAsyncIterator.ts +20 -20
  169. package/src/asyncs/promiseOfCallback.ts +13 -13
  170. package/src/asyncs/timeout.ts +23 -23
  171. package/src/browsers/copy.ts +48 -48
  172. package/src/browsers/download.ts +38 -36
  173. package/src/browsers/getFileFromDataTransfer.ts +35 -35
  174. package/src/browsers/loaders.ts +49 -49
  175. package/src/crypto/base.ts +3 -3
  176. package/src/crypto/getNodeCrypto.ts +2 -2
  177. package/src/crypto/hashing.test.ts +33 -47
  178. package/src/crypto/hashing.ts +67 -67
  179. package/src/crypto/md5.bench.ts +20 -24
  180. package/src/crypto/md5.test.ts +3 -3
  181. package/src/crypto/pem/pem.test.ts +26 -42
  182. package/src/crypto/pem/pem.ts +65 -65
  183. package/src/crypto/ulid.test.ts +31 -31
  184. package/src/crypto/ulid.ts +116 -116
  185. package/src/emitter/types.ts +6 -6
  186. package/src/errors/DetailError.ts +151 -0
  187. package/src/errors/Errors.test.ts +15 -15
  188. package/src/errors/Errors.ts +97 -238
  189. package/src/fetch/HttpStatus.ts +77 -77
  190. package/src/fetch/createFetchWith.ts +25 -25
  191. package/src/fetch/createFetchWithLogging.ts +12 -15
  192. package/src/fetch/createFetchWithRetry.ts +79 -79
  193. package/src/fetch/dumpRequest.test.ts +176 -0
  194. package/src/fetch/dumpRequest.ts +149 -52
  195. package/src/fetch/dumpResponse.test.ts +160 -0
  196. package/src/fetch/dumpResponse.ts +48 -20
  197. package/src/fetch/http.types.ts +35 -35
  198. package/src/fetch/isTextContentType.ts +12 -0
  199. package/src/fetch/resolveRequest.ts +1 -0
  200. package/src/fetch/types.ts +2 -2
  201. package/src/i18n/createTranslate.test.ts +90 -113
  202. package/src/i18n/createTranslate.ts +55 -55
  203. package/src/index.ts +26 -26
  204. package/src/io/AbstractEncoding.ts +12 -12
  205. package/src/io/ArrayBuffer.test-d.ts +1 -1
  206. package/src/io/ArrayBuffers.base64.test.ts +52 -52
  207. package/src/io/ArrayBuffers.test.ts +14 -14
  208. package/src/io/ArrayBuffers.ts +645 -415
  209. package/src/io/Buffer.test.ts +17 -17
  210. package/src/io/Buffer.ts +17 -17
  211. package/src/io/ByteBuffer.test.ts +37 -37
  212. package/src/io/ByteBuffer.ts +574 -566
  213. package/src/io/base64.ts +46 -44
  214. package/src/io/dump.ts +22 -22
  215. package/src/io/isBuffer.test.ts +2 -2
  216. package/src/io/isBuffer.ts +1 -1
  217. package/src/io/isTransferable.test.ts +4 -4
  218. package/src/io/isTransferable.ts +29 -29
  219. package/src/io/parseDataUri.test.ts +22 -27
  220. package/src/io/parseDataUri.ts +57 -57
  221. package/src/io/types.ts +13 -0
  222. package/src/langs/AsyncCloser.ts +34 -34
  223. package/src/langs/Closer.ts +28 -28
  224. package/src/langs/MaybeFunction.ts +5 -5
  225. package/src/langs/classOf.ts +1 -1
  226. package/src/langs/deepEqual.test.ts +1 -12
  227. package/src/langs/deepEqual.ts +82 -82
  228. package/src/langs/deepFreeze.ts +11 -11
  229. package/src/langs/getGlobalStates.ts +16 -16
  230. package/src/langs/getObjectId.ts +10 -13
  231. package/src/langs/ifPresent.ts +2 -2
  232. package/src/langs/isClass.ts +1 -1
  233. package/src/langs/isDefined.ts +1 -1
  234. package/src/langs/isEmptyObject.ts +1 -1
  235. package/src/langs/isFunction.ts +1 -1
  236. package/src/langs/isNil.ts +3 -0
  237. package/src/langs/isPlainObject.ts +4 -4
  238. package/src/langs/langs.test.ts +18 -18
  239. package/src/langs/memoize.ts +21 -21
  240. package/src/langs/mixin.test.ts +22 -26
  241. package/src/langs/mixin.ts +6 -9
  242. package/src/langs/parseBoolean.ts +30 -26
  243. package/src/langs/parseDate.ts +13 -0
  244. package/src/langs/shallowClone.ts +11 -11
  245. package/src/langs/shallowEqual.ts +19 -19
  246. package/src/libs/ms.test.ts +274 -274
  247. package/src/libs/ms.ts +137 -137
  248. package/src/logger/const.ts +18 -0
  249. package/src/logger/index.ts +2 -0
  250. package/src/logger/types.ts +10 -0
  251. package/src/maths/clamp.test.ts +18 -18
  252. package/src/maths/clamp.ts +17 -17
  253. package/src/maths/createRandom.test.ts +12 -0
  254. package/src/maths/random.ts +50 -14
  255. package/src/modules/isModule.ts +4 -4
  256. package/src/modules/parseModuleId.test.ts +61 -68
  257. package/src/modules/parseModuleId.ts +29 -43
  258. package/src/objects/computeIfAbsent.ts +10 -10
  259. package/src/objects/get.test-d.ts +33 -51
  260. package/src/objects/get.ts +31 -31
  261. package/src/objects/merge/isMergeableObject.ts +5 -5
  262. package/src/objects/merge/merge.test.ts +658 -880
  263. package/src/objects/merge/merge.ts +84 -84
  264. package/src/objects/parseObjectPath.test.ts +13 -13
  265. package/src/objects/parseObjectPath.ts +25 -25
  266. package/src/objects/set.test.ts +271 -366
  267. package/src/objects/set.ts +36 -36
  268. package/src/schema/typebox/typebox.ts +20 -26
  269. package/src/scripts/getGenerateContext.ts +79 -79
  270. package/src/server/crypto/md5.ts +1 -1
  271. package/src/server/fetch/createFetchWithProxyByNodeFetch.ts +28 -31
  272. package/src/server/fetch/createFetchWithProxyByUndici.ts +63 -69
  273. package/src/server/getPackageDir.ts +7 -7
  274. package/src/server/polyfill/polyfillBrowser.test.ts +10 -10
  275. package/src/server/polyfill/polyfillBrowser.ts +3 -3
  276. package/src/server/polyfill/polyfillCrypto.ts +6 -6
  277. package/src/server/polyfill/polyfillFetch.ts +11 -21
  278. package/src/server/polyfill/polyfillJsDom.ts +59 -71
  279. package/src/server/polyfill/polyfillWebSocket.ts +14 -14
  280. package/src/strings/bytes.test.ts +69 -0
  281. package/src/strings/camelCase.ts +58 -63
  282. package/src/strings/formatBytes.ts +50 -29
  283. package/src/strings/parseBytes.ts +66 -0
  284. package/src/strings/renderTemplate.test.ts +10 -17
  285. package/src/strings/renderTemplate.ts +19 -22
  286. package/src/types.d.ts +9 -9
  287. package/src/validations/asserts.ts +8 -8
  288. package/src/validations/isUUID.test.ts +8 -8
  289. package/src/validations/isUUID.ts +1 -1
  290. package/src/validations/parseTimestamp.test.ts +2 -2
  291. package/src/validations/parseTimestamp.ts +21 -21
  292. package/src/web/getGlobalThis.ts +6 -6
  293. package/src/web/getRandomValues.ts +29 -29
  294. package/src/web/randomUUID.ts +5 -5
  295. package/src/web/requestIdleCallback.ts +7 -10
  296. package/src/web/structuredClone.test.ts +8 -8
  297. package/src/web/structuredClone.ts +62 -62
  298. package/tsconfig.json +26 -34
  299. package/lib/arrays/MaybeArray.js.map +0 -1
  300. package/lib/arrays/arrayFromAsync.js.map +0 -1
  301. package/lib/asyncs/AsyncInterval.js.map +0 -1
  302. package/lib/asyncs/MaybePromise.js.map +0 -1
  303. package/lib/asyncs/Promises.js.map +0 -1
  304. package/lib/asyncs/createAsyncIterator.js.map +0 -1
  305. package/lib/asyncs/createLazyPromise.js.map +0 -1
  306. package/lib/asyncs/firstOfAsyncIterator.js.map +0 -1
  307. package/lib/asyncs/generatorOfStream.js.map +0 -1
  308. package/lib/asyncs/isIterator.js.map +0 -1
  309. package/lib/asyncs/isPromise.js.map +0 -1
  310. package/lib/asyncs/isThenable.js.map +0 -1
  311. package/lib/asyncs/nextOfAsyncIterator.js.map +0 -1
  312. package/lib/asyncs/promiseOfCallback.js.map +0 -1
  313. package/lib/asyncs/timeout.js.map +0 -1
  314. package/lib/browsers/copy.js.map +0 -1
  315. package/lib/browsers/download.js.map +0 -1
  316. package/lib/browsers/getFileFromDataTransfer.js.map +0 -1
  317. package/lib/browsers/loaders.js.map +0 -1
  318. package/lib/cn/division/DivisionCode.js +0 -215
  319. package/lib/cn/division/DivisionCode.js.map +0 -1
  320. package/lib/cn/division/binarySearch.js +0 -27
  321. package/lib/cn/division/binarySearch.js.map +0 -1
  322. package/lib/cn/formatChineseAmount.js +0 -77
  323. package/lib/cn/formatChineseAmount.js.map +0 -1
  324. package/lib/cn/id/Mod11.js +0 -43
  325. package/lib/cn/id/Mod11.js.map +0 -1
  326. package/lib/cn/id/ResidentIdNumber.js +0 -98
  327. package/lib/cn/id/ResidentIdNumber.js.map +0 -1
  328. package/lib/cn/id/types.js +0 -8
  329. package/lib/cn/id/types.js.map +0 -1
  330. package/lib/cn/index.js +0 -14
  331. package/lib/cn/index.js.map +0 -1
  332. package/lib/cn/parseChineseNumber.js +0 -94
  333. package/lib/cn/parseChineseNumber.js.map +0 -1
  334. package/lib/cn/pinyin/cartesianProduct.js +0 -22
  335. package/lib/cn/pinyin/cartesianProduct.js.map +0 -1
  336. package/lib/cn/pinyin/data.json +0 -413
  337. package/lib/cn/pinyin/loader.js +0 -15
  338. package/lib/cn/pinyin/loader.js.map +0 -1
  339. package/lib/cn/pinyin/preload.js +0 -4
  340. package/lib/cn/pinyin/preload.js.map +0 -1
  341. package/lib/cn/pinyin/toPinyinPure.js +0 -32
  342. package/lib/cn/pinyin/toPinyinPure.js.map +0 -1
  343. package/lib/cn/pinyin/transform.js +0 -14
  344. package/lib/cn/pinyin/transform.js.map +0 -1
  345. package/lib/cn/types.js +0 -3
  346. package/lib/cn/types.js.map +0 -1
  347. package/lib/cn/uscc/Mod31.js +0 -49
  348. package/lib/cn/uscc/Mod31.js.map +0 -1
  349. package/lib/cn/uscc/USCC.js +0 -94
  350. package/lib/cn/uscc/USCC.js.map +0 -1
  351. package/lib/cn/uscc/isUSCC.js +0 -8
  352. package/lib/cn/uscc/isUSCC.js.map +0 -1
  353. package/lib/crypto/base.js.map +0 -1
  354. package/lib/crypto/getNodeCrypto.js.map +0 -1
  355. package/lib/crypto/hashing.js.map +0 -1
  356. package/lib/crypto/md5.bench.js.map +0 -1
  357. package/lib/crypto/md5.d.js.map +0 -1
  358. package/lib/crypto/md5.js.map +0 -1
  359. package/lib/crypto/pem/pem.js.map +0 -1
  360. package/lib/crypto/randomUUIDv7.js.map +0 -1
  361. package/lib/crypto/ulid.js.map +0 -1
  362. package/lib/emitter/types.js.map +0 -1
  363. package/lib/errors/Errors.js.map +0 -1
  364. package/lib/fetch/HttpStatus.js.map +0 -1
  365. package/lib/fetch/createFetchWith.js.map +0 -1
  366. package/lib/fetch/createFetchWithLogging.js.map +0 -1
  367. package/lib/fetch/createFetchWithRetry.js.map +0 -1
  368. package/lib/fetch/dumpRequest.js.map +0 -1
  369. package/lib/fetch/dumpResponse.js.map +0 -1
  370. package/lib/fetch/http.types.js.map +0 -1
  371. package/lib/fetch/index.js.map +0 -1
  372. package/lib/fetch/types.js.map +0 -1
  373. package/lib/i18n/createTranslate.js.map +0 -1
  374. package/lib/index.js.map +0 -1
  375. package/lib/io/AbstractEncoding.js.map +0 -1
  376. package/lib/io/ArrayBuffer.test-d.js.map +0 -1
  377. package/lib/io/ArrayBuffers.js.map +0 -1
  378. package/lib/io/Buffer.js.map +0 -1
  379. package/lib/io/ByteBuffer.js.map +0 -1
  380. package/lib/io/base64.js.map +0 -1
  381. package/lib/io/dump.js.map +0 -1
  382. package/lib/io/isBuffer.js.map +0 -1
  383. package/lib/io/isTransferable.js.map +0 -1
  384. package/lib/io/parseDataUri.js.map +0 -1
  385. package/lib/langs/AsyncCloser.js.map +0 -1
  386. package/lib/langs/Closer.js.map +0 -1
  387. package/lib/langs/MaybeFunction.js.map +0 -1
  388. package/lib/langs/classOf.js.map +0 -1
  389. package/lib/langs/deepEqual.js.map +0 -1
  390. package/lib/langs/deepFreeze.js.map +0 -1
  391. package/lib/langs/getGlobalStates.js.map +0 -1
  392. package/lib/langs/getObjectId.js.map +0 -1
  393. package/lib/langs/ifPresent.js.map +0 -1
  394. package/lib/langs/isClass.js.map +0 -1
  395. package/lib/langs/isDefined.js.map +0 -1
  396. package/lib/langs/isEmptyObject.js.map +0 -1
  397. package/lib/langs/isFunction.js.map +0 -1
  398. package/lib/langs/isNullish.js +0 -5
  399. package/lib/langs/isNullish.js.map +0 -1
  400. package/lib/langs/isPlainObject.js.map +0 -1
  401. package/lib/langs/memoize.js.map +0 -1
  402. package/lib/langs/mixin.js.map +0 -1
  403. package/lib/langs/parseBoolean.js.map +0 -1
  404. package/lib/langs/shallowClone.js.map +0 -1
  405. package/lib/langs/shallowEqual.js.map +0 -1
  406. package/lib/libs/ms.js.map +0 -1
  407. package/lib/logging/Logger.js +0 -5
  408. package/lib/logging/Logger.js.map +0 -1
  409. package/lib/logging/createChildLogger.js +0 -16
  410. package/lib/logging/createChildLogger.js.map +0 -1
  411. package/lib/logging/createLogger.js +0 -63
  412. package/lib/logging/createLogger.js.map +0 -1
  413. package/lib/logging/createNoopLogger.js +0 -13
  414. package/lib/logging/createNoopLogger.js.map +0 -1
  415. package/lib/logging/slog.js +0 -143
  416. package/lib/logging/slog.js.map +0 -1
  417. package/lib/maths/clamp.js.map +0 -1
  418. package/lib/maths/random.js.map +0 -1
  419. package/lib/mitt/index.js +0 -77
  420. package/lib/mitt/index.js.map +0 -1
  421. package/lib/modules/isModule.js.map +0 -1
  422. package/lib/modules/parseModuleId.js.map +0 -1
  423. package/lib/objects/computeIfAbsent.js.map +0 -1
  424. package/lib/objects/get.js.map +0 -1
  425. package/lib/objects/get.test-d.js.map +0 -1
  426. package/lib/objects/merge/index.js.map +0 -1
  427. package/lib/objects/merge/isMergeableObject.js.map +0 -1
  428. package/lib/objects/merge/merge.js.map +0 -1
  429. package/lib/objects/parseObjectPath.js.map +0 -1
  430. package/lib/objects/set.js.map +0 -1
  431. package/lib/schema/typebox/index.js.map +0 -1
  432. package/lib/schema/typebox/typebox.js.map +0 -1
  433. package/lib/scripts/getGenerateContext.js.map +0 -1
  434. package/lib/server/crypto/md5.js.map +0 -1
  435. package/lib/server/fetch/createFetchWithProxy.js.map +0 -1
  436. package/lib/server/fetch/createFetchWithProxyByNodeFetch.js.map +0 -1
  437. package/lib/server/fetch/createFetchWithProxyByUndici.js.map +0 -1
  438. package/lib/server/getPackageDir.js.map +0 -1
  439. package/lib/server/index.js.map +0 -1
  440. package/lib/server/jsdom.js.map +0 -1
  441. package/lib/server/node-fetch.js.map +0 -1
  442. package/lib/server/polyfill/polyfillBrowser.js.map +0 -1
  443. package/lib/server/polyfill/polyfillCrypto.js.map +0 -1
  444. package/lib/server/polyfill/polyfillFetch.js.map +0 -1
  445. package/lib/server/polyfill/polyfillJsDom.js.map +0 -1
  446. package/lib/server/polyfill/polyfillWebSocket.js.map +0 -1
  447. package/lib/server/ws.js.map +0 -1
  448. package/lib/strings/camelCase.js.map +0 -1
  449. package/lib/strings/formatBytes.js.map +0 -1
  450. package/lib/strings/renderTemplate.js.map +0 -1
  451. package/lib/typedoc.js.map +0 -1
  452. package/lib/types.d.js.map +0 -1
  453. package/lib/validations/asserts.js.map +0 -1
  454. package/lib/validations/isUUID.js.map +0 -1
  455. package/lib/validations/parseTimestamp.js.map +0 -1
  456. package/lib/web/getGlobalThis.js.map +0 -1
  457. package/lib/web/getRandomValues.js.map +0 -1
  458. package/lib/web/randomUUID.js.map +0 -1
  459. package/lib/web/requestIdleCallback.js.map +0 -1
  460. package/lib/web/structuredClone.js.map +0 -1
  461. package/src/cn/README.md +0 -3
  462. package/src/cn/division/DivisionCode.ts +0 -173
  463. package/src/cn/division/binarySearch.test.ts +0 -64
  464. package/src/cn/division/binarySearch.ts +0 -25
  465. package/src/cn/division/division.test.ts +0 -22
  466. package/src/cn/formatChineseAmount.ts +0 -61
  467. package/src/cn/id/Mod11.ts +0 -26
  468. package/src/cn/id/ResidentIdNumber.ts +0 -126
  469. package/src/cn/id/id.test.ts +0 -20
  470. package/src/cn/id/types.ts +0 -26
  471. package/src/cn/index.ts +0 -17
  472. package/src/cn/parseChineseNumber.test.ts +0 -159
  473. package/src/cn/parseChineseNumber.ts +0 -97
  474. package/src/cn/pinyin/cartesianProduct.test.ts +0 -64
  475. package/src/cn/pinyin/cartesianProduct.ts +0 -24
  476. package/src/cn/pinyin/data.json +0 -413
  477. package/src/cn/pinyin/loader.ts +0 -12
  478. package/src/cn/pinyin/preload.ts +0 -3
  479. package/src/cn/pinyin/toPinyin.test.ts +0 -12
  480. package/src/cn/pinyin/toPinyinPure.ts +0 -43
  481. package/src/cn/pinyin/transform.ts +0 -12
  482. package/src/cn/scripts/gen.test.ts +0 -131
  483. package/src/cn/types.ts +0 -11
  484. package/src/cn/uscc/Mod31.ts +0 -38
  485. package/src/cn/uscc/USCC.ts +0 -94
  486. package/src/cn/uscc/isUSCC.ts +0 -8
  487. package/src/cn/uscc/uscc.test.ts +0 -16
  488. package/src/langs/isNullish.ts +0 -3
  489. package/src/logging/Logger.ts +0 -25
  490. package/src/logging/createChildLogger.ts +0 -16
  491. package/src/logging/createLogger.ts +0 -50
  492. package/src/logging/createNoopLogger.ts +0 -13
  493. package/src/logging/logger.test.ts +0 -36
  494. package/src/logging/slog.test.ts +0 -8
  495. package/src/logging/slog.ts +0 -221
  496. package/src/mitt/README.md +0 -1
  497. package/src/mitt/index.ts +0 -114
@@ -0,0 +1,151 @@
1
+ import { getHttpStatusText } from '../fetch/HttpStatus';
2
+
3
+ export interface ErrorDetailInit {
4
+ message?: string;
5
+ status: number;
6
+ description?: string;
7
+ code?: number | string;
8
+ metadata?: Record<string, any>;
9
+ cause?: any;
10
+ }
11
+
12
+ export class DetailError extends Error {
13
+ readonly detail: ErrorDetail;
14
+ readonly status: number;
15
+ readonly description?: string;
16
+
17
+ constructor(detail: ErrorDetail) {
18
+ super(detail.message, { cause: detail.cause });
19
+ this.detail = detail;
20
+ this.status = detail.status;
21
+ this.description = detail.description;
22
+ }
23
+
24
+ toJSON() {
25
+ return {
26
+ code: this.detail.code,
27
+ message: this.message,
28
+ status: this.status,
29
+ description: this.description,
30
+ cause: this.cause,
31
+ };
32
+ }
33
+ }
34
+
35
+ export class DetailHolder implements ErrorDetail {
36
+ readonly message: string;
37
+ readonly status: number;
38
+ readonly code: number | string;
39
+ readonly metadata?: Record<string, any>;
40
+ readonly description?: string;
41
+ readonly cause?: any;
42
+
43
+ constructor({
44
+ status,
45
+ message = getHttpStatusText(status),
46
+ code = status,
47
+ metadata,
48
+ description,
49
+ cause,
50
+ }: ErrorDetailInit) {
51
+ this.message = message ?? String(status);
52
+ this.status = status;
53
+ this.code = code;
54
+ this.description = description;
55
+ this.metadata = metadata;
56
+ this.cause = cause;
57
+ }
58
+
59
+ with(o?: Partial<ErrorDetailInit> | string): DetailHolder {
60
+ if (typeof o === 'string') {
61
+ o = { message: o };
62
+ }
63
+
64
+ if (o === undefined) {
65
+ return new DetailHolder(this);
66
+ }
67
+
68
+ return new DetailHolder({
69
+ status: this.status,
70
+ code: this.code,
71
+ message: this.message,
72
+ metadata: this.metadata,
73
+ cause: this.cause,
74
+ ...o,
75
+ });
76
+ }
77
+
78
+ asError(o?: Partial<ErrorDetailInit> | string): Error {
79
+ if (typeof o === 'string') {
80
+ o = { message: o };
81
+ }
82
+
83
+ return new DetailError(this.with(o));
84
+ }
85
+
86
+ require(v: any, o?: Partial<ErrorDetailInit> | string): any {
87
+ if (v === undefined || v === null) {
88
+ throw this.asError(o);
89
+ }
90
+
91
+ return v;
92
+ }
93
+
94
+ check(cond: any, o?: Partial<ErrorDetailInit> | string) {
95
+ switch (cond) {
96
+ case false:
97
+ case undefined:
98
+ case null: {
99
+ throw this.asError(o);
100
+ }
101
+ }
102
+ }
103
+
104
+ throw(o?: string | Partial<ErrorDetailInit>): never {
105
+ throw this.asError(o);
106
+ }
107
+
108
+ toJSON() {
109
+ return {
110
+ code: this.code,
111
+ message: this.message,
112
+ status: this.status,
113
+ description: this.description,
114
+ cause: this.cause,
115
+ metadata: this.metadata,
116
+ };
117
+ }
118
+
119
+ asResponse(): Response {
120
+ return new Response(JSON.stringify(this.toJSON()), {
121
+ status: this.status,
122
+ statusText: this.description,
123
+ headers: { 'Content-Type': 'application/json' },
124
+ });
125
+ }
126
+ }
127
+
128
+ export interface ErrorDetail {
129
+ readonly message: string;
130
+ readonly status: number;
131
+ readonly code?: number | string;
132
+ readonly metadata?: Record<string, any>;
133
+ readonly description?: string;
134
+ readonly cause?: any;
135
+
136
+ with(message: string): ErrorDetail;
137
+
138
+ with(o?: Partial<ErrorDetailInit>): ErrorDetail;
139
+
140
+ asError(o?: string | Partial<ErrorDetailInit>): Error;
141
+
142
+ asResponse(): Response;
143
+
144
+ throw(o?: string | Partial<ErrorDetailInit>): never;
145
+
146
+ require<T>(v: T | undefined, o?: Partial<ErrorDetailInit> | string): NonNullable<T>;
147
+
148
+ check(condition: boolean, o?: Partial<ErrorDetailInit> | string): asserts condition;
149
+
150
+ check<T>(v: T | undefined | null, o?: Partial<ErrorDetailInit> | string): asserts v is NonNullable<T>;
151
+ }
@@ -2,21 +2,21 @@ import { test } from 'vitest';
2
2
  import { Errors } from './Errors';
3
3
 
4
4
  test('Errors', () => {
5
- {
6
- let a: string | undefined = '';
7
- Errors.NotFound.check(a);
8
- let b: string = a;
9
- hole(b);
10
- }
11
- if (false) {
12
- // 不能同时 asserts 且返回
13
- // https://stackoverflow.com/a/73252858/1870054
14
- // https://github.com/microsoft/TypeScript/issues/34636
15
- let a: string | undefined;
16
- Errors.NotFound.require(a);
17
- // let c: string = a;
18
- // hole(c);
19
- }
5
+ {
6
+ let a: string | undefined = '';
7
+ Errors.NotFound.check(a);
8
+ let b: string = a;
9
+ hole(b);
10
+ }
11
+ if (false) {
12
+ // 不能同时 asserts 且返回
13
+ // https://stackoverflow.com/a/73252858/1870054
14
+ // https://github.com/microsoft/TypeScript/issues/34636
15
+ let a: string | undefined;
16
+ Errors.NotFound.require(a);
17
+ // let c: string = a;
18
+ // hole(c);
19
+ }
20
20
  });
21
21
 
22
22
  function hole(..._: any[]) {}
@@ -1,159 +1,6 @@
1
- import { getHttpStatusText } from '../fetch/HttpStatus';
1
+ import { DetailError, DetailHolder, type ErrorDetail, type ErrorDetailInit } from './DetailError';
2
2
 
3
- export interface ErrorDetailInit {
4
- message?: string;
5
- status: number;
6
- description?: string;
7
- code?: number | string;
8
- metadata?: Record<string, any>;
9
- cause?: any;
10
- }
11
-
12
- export class DetailError extends Error {
13
- readonly status: number;
14
- readonly description?: string;
15
-
16
- constructor(readonly detail: ErrorDetail) {
17
- super(detail.message, {
18
- cause: detail.cause,
19
- });
20
- this.status = detail.status;
21
- this.description = detail.description;
22
- }
23
-
24
- toJSON() {
25
- return {
26
- code: this.detail.code,
27
- message: this.message,
28
- status: this.status,
29
- description: this.description,
30
- cause: this.cause,
31
- };
32
- }
33
- }
34
-
35
- class DetailHolder implements ErrorDetail {
36
- readonly message: string;
37
- readonly status: number;
38
- readonly code: number | string;
39
- readonly metadata?: Record<string, any>;
40
- readonly description?: string;
41
- readonly cause?: any;
42
-
43
- constructor({
44
- status,
45
- message = getHttpStatusText(status),
46
- code = status,
47
- metadata,
48
- description,
49
- cause,
50
- }: ErrorDetailInit) {
51
- this.message = message ?? String(status);
52
- this.status = status;
53
- this.code = code;
54
- this.description = description;
55
- this.metadata = metadata;
56
- this.cause = cause;
57
- }
58
-
59
- with(o?: Partial<ErrorDetailInit> | string): DetailHolder {
60
- if (typeof o === 'string') {
61
- o = { message: o };
62
- }
63
-
64
- if (o === undefined) {
65
- return new DetailHolder(this);
66
- }
67
-
68
- return new DetailHolder({
69
- status: this.status,
70
- code: this.code,
71
- message: this.message,
72
- metadata: this.metadata,
73
- cause: this.cause,
74
- ...o,
75
- });
76
- }
77
-
78
- asError(o?: Partial<ErrorDetailInit> | string): Error {
79
- if (typeof o === 'string') {
80
- o = { message: o };
81
- }
82
-
83
- return new DetailError(this.with(o));
84
- }
85
-
86
- require(v: any, o?: Partial<ErrorDetailInit> | string): any {
87
- if (v === undefined || v === null) {
88
- throw this.asError(o);
89
- }
90
-
91
- return v;
92
- }
93
-
94
- check(cond: any, o?: Partial<ErrorDetailInit> | string) {
95
- switch (cond) {
96
- case false:
97
- case undefined:
98
- case null: {
99
- throw this.asError(o);
100
- }
101
- }
102
- }
103
-
104
- throw(o?: string | Partial<ErrorDetailInit>): never {
105
- throw this.asError(o);
106
- }
107
-
108
- toJSON() {
109
- return {
110
- code: this.code,
111
- message: this.message,
112
- status: this.status,
113
- description: this.description,
114
- cause: this.cause,
115
- metadata: this.metadata,
116
- };
117
- }
118
-
119
- asResponse(): Response {
120
- return new Response(JSON.stringify(this.toJSON()), {
121
- status: this.status,
122
- statusText: this.description,
123
- headers: {
124
- 'Content-Type': 'application/json',
125
- },
126
- });
127
- }
128
- }
129
-
130
- export interface ErrorDetail {
131
- readonly message: string;
132
- readonly status: number;
133
- readonly code?: number | string;
134
- readonly metadata?: Record<string, any>;
135
- readonly description?: string;
136
- readonly cause?: any;
137
-
138
- with(message: string): ErrorDetail;
139
-
140
- with(o?: Partial<ErrorDetailInit>): ErrorDetail;
141
-
142
- asError(o?: string | Partial<ErrorDetailInit>): Error;
143
-
144
- asResponse(): Response;
145
-
146
- throw(o?: string | Partial<ErrorDetailInit>): never;
147
-
148
- require<T>(v: T | undefined, o?: Partial<ErrorDetailInit> | string): NonNullable<T>;
149
-
150
- check(condition: boolean, o?: Partial<ErrorDetailInit> | string): asserts condition;
151
-
152
- check<T>(v: T | undefined | null, o?: Partial<ErrorDetailInit> | string): asserts v is NonNullable<T>;
153
- }
154
-
155
- export namespace Errors {
156
- /*
3
+ /*
157
4
  https://github.com/tc39/proposal-error-cause
158
5
  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause
159
6
  Stage 3
@@ -161,87 +8,99 @@ Chrome 93, Safari 15, Node 16.9
161
8
 
162
9
  https://www.npmjs.com/package/pony-cause
163
10
  */
164
-
165
- export const BadRequest: ErrorDetail = create({ status: 400 });
166
- export const Unauthorized: ErrorDetail = create({ status: 403 });
167
- export const Forbidden: ErrorDetail = create({ status: 403 });
168
- export const NotFound: ErrorDetail = create({ status: 404 });
169
- export const InternalServerError: ErrorDetail = create({ status: 500 });
170
- export const NotImplemented: ErrorDetail = create({ status: 501 });
171
- export const ServiceUnavailable: ErrorDetail = create({ status: 503 });
172
-
173
- // known errors
174
- // TypeError when an operation could not be performed, typically (but not exclusively) when a value is not of the expected type.
175
- // RangeError when a number is not within the correct range allowed.
176
- // AggregateError when multiple errors need to be reported by an operation, for example by Promise.all().
177
- // 例如 Promise.any() 会返回一个 AggregateError,其中包含所有 rejected Promise 的错误。
178
- // EvalError when an error occurs during the evaluation of JavaScript code.
179
- // ReferenceError when a non-existent variable is referenced.
180
- // SyntaxError when a syntax error occurs while parsing code in eval().
181
- // URIError when encodeURI() or decodeURI() are passed invalid parameters.
182
- // InternalError when an internal error in the JavaScript engine is thrown. E.g. "too much recursion".
183
- // DOMException when an error occurs in the DOM.
184
-
185
- export const resolvers: ((e: any) => ErrorDetail | void)[] = [];
186
-
187
- export function create(init: ErrorDetailInit): ErrorDetail {
188
- return new DetailHolder(init);
189
- }
190
-
191
- export function ok(res: Response, o?: Partial<ErrorDetailInit>) {
192
- if (res.ok) {
193
- return res;
194
- }
195
- throw create({
196
- description: res.statusText,
197
- status: res.status,
198
- ...o,
199
- metadata: {
200
- ...o?.metadata,
201
- response: res,
202
- },
203
- }).asError();
204
- }
205
-
206
- export function resolve(e: any): ErrorDetail {
207
- if (e instanceof DetailHolder) {
208
- return e;
209
- }
210
-
211
- if (e instanceof DetailError) {
212
- return e.detail;
213
- }
214
-
215
- for (const resolver of resolvers) {
216
- const r = resolver(e);
217
- if (r) {
218
- return r;
219
- }
220
- }
221
-
222
- if (e instanceof Error) {
223
- const { message, code, status } = e as any;
224
- // can get status from NestJS HttpException
225
- return new DetailHolder({
226
- message,
227
- status: parseInt(status) || 500,
228
- code,
229
- cause: e,
230
- });
231
- }
232
-
233
- return new DetailHolder({
234
- message: e.message,
235
- status: 500,
236
- cause: e,
237
- });
238
- }
11
+ export namespace Errors {
12
+ export const BadRequest: ErrorDetail = create({ status: 400 });
13
+ export const Unauthorized: ErrorDetail = create({ status: 403 });
14
+ export const Forbidden: ErrorDetail = create({ status: 403 });
15
+ export const NotFound: ErrorDetail = create({ status: 404 });
16
+ export const InternalServerError: ErrorDetail = create({ status: 500 });
17
+ export const NotImplemented: ErrorDetail = create({ status: 501 });
18
+ export const BadGateway = create({ status: 502, message: 'Bad Gateway' });
19
+ export const ServiceUnavailable: ErrorDetail = create({ status: 503 });
20
+
21
+ export const IllegalState = create({ status: 500, message: 'Illegal State' });
22
+ export const UnsupportedOperation = create({ status: 500, message: 'Unsupported Operation' });
23
+ export const IllegalArgument = create({ status: 400, message: 'Illegal Argument' });
24
+ export const InvalidType = create({ status: 400, message: 'Invalid Type' });
25
+
26
+ // known errors
27
+ // TypeError when an operation could not be performed, typically (but not exclusively) when a value is not of the expected type.
28
+ // RangeError when a number is not within the correct range allowed.
29
+ // AggregateError when multiple errors need to be reported by an operation, for example by Promise.all().
30
+ // 例如 Promise.any() 会返回一个 AggregateError,其中包含所有 rejected Promise 的错误。
31
+ // EvalError when an error occurs during the evaluation of JavaScript code.
32
+ // ReferenceError when a non-existent variable is referenced.
33
+ // SyntaxError when a syntax error occurs while parsing code in eval().
34
+ // URIError when encodeURI() or decodeURI() are passed invalid parameters.
35
+ // InternalError when an internal error in the JavaScript engine is thrown. E.g. "too much recursion".
36
+ // DOMException when an error occurs in the DOM.
37
+
38
+ export const resolvers: ((e: any) => ErrorDetail | void)[] = [];
39
+
40
+ export function create(init: ErrorDetailInit): ErrorDetail {
41
+ return new DetailHolder(init);
42
+ }
43
+
44
+ export function ok(res: Response, o?: Partial<ErrorDetailInit>) {
45
+ if (res.ok) {
46
+ return res;
47
+ }
48
+ throw create({
49
+ description: res.statusText,
50
+ status: res.status,
51
+ ...o,
52
+ metadata: { ...o?.metadata, response: res },
53
+ }).asError();
54
+ }
55
+
56
+ export function resolve(e: any): ErrorDetail {
57
+ if (e instanceof DetailHolder) {
58
+ return e;
59
+ }
60
+
61
+ if (e instanceof DetailError) {
62
+ return e.detail;
63
+ }
64
+
65
+ for (const resolver of resolvers) {
66
+ const r = resolver(e);
67
+ if (r) {
68
+ return r;
69
+ }
70
+ }
71
+
72
+ if (isError(e)) {
73
+ const { message, code, status } = e as any;
74
+ // can get status from NestJS HttpException
75
+ return new DetailHolder({ message, status: parseInt(status) || 500, code, cause: e });
76
+ }
77
+
78
+ return new DetailHolder({ message: e.message, status: 500, cause: e });
79
+ }
80
+
81
+ /**
82
+ * Check if the given value is an Error
83
+ * @see https://github.com/tc39/proposal-is-error
84
+ */
85
+ export function isError(e: any): e is Error {
86
+ if ('isError' in Error) {
87
+ // will handle cross-realm
88
+ return (Error as any).isError(e);
89
+ }
90
+ return e instanceof Error;
91
+ }
92
+
93
+ export function isAbort(e: any): e is Error {
94
+ if (!isError(e)) {
95
+ return false;
96
+ }
97
+ return e.name === 'AbortError';
98
+ }
99
+
100
+ export function isTimeout(e: any): e is Error {
101
+ if (!isError(e)) {
102
+ return false;
103
+ }
104
+ return e.name === 'TimeoutError' || e.name === 'Timeout';
105
+ }
239
106
  }
240
-
241
- // interface ZodError {
242
- // path: Array<string | number>;
243
- // message: string;
244
- // code: string;
245
- // expected?: any;
246
- // received?: any;
247
- // }