@wener/utils 1.1.50 → 1.1.53

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 (506) 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 +2 -202
  37. package/lib/errors/Errors.mod.js +206 -0
  38. package/lib/errors/Errors.test.js +24 -0
  39. package/lib/fetch/HttpStatus.js +1 -3
  40. package/lib/fetch/createFetchWith.js +188 -19
  41. package/lib/fetch/createFetchWithLogging.js +17 -16
  42. package/lib/fetch/createFetchWithRetry.js +40 -24
  43. package/lib/fetch/dumpRequest.js +467 -41
  44. package/lib/fetch/dumpRequest.test.js +384 -0
  45. package/lib/fetch/dumpResponse.js +271 -16
  46. package/lib/fetch/dumpResponse.test.js +393 -0
  47. package/lib/fetch/http.types.js +0 -2
  48. package/lib/fetch/index.js +5 -7
  49. package/lib/fetch/isTextContentType.js +5 -0
  50. package/lib/fetch/resolveRequest.js +7 -0
  51. package/lib/fetch/types.js +0 -2
  52. package/lib/i18n/createTranslate.js +40 -20
  53. package/lib/i18n/createTranslate.test.js +177 -0
  54. package/lib/index.js +75 -75
  55. package/lib/io/AbstractEncoding.js +0 -2
  56. package/lib/io/ArrayBuffer.test-d.js +4 -6
  57. package/lib/io/ArrayBuffers.base64.test.js +60 -0
  58. package/lib/io/ArrayBuffers.js +2 -334
  59. package/lib/io/ArrayBuffers.mod.js +531 -0
  60. package/lib/io/ArrayBuffers.test.js +77 -0
  61. package/lib/io/Buffer.js +190 -20
  62. package/lib/io/Buffer.test.js +22 -0
  63. package/lib/io/ByteBuffer.js +752 -441
  64. package/lib/io/ByteBuffer.test.js +184 -0
  65. package/lib/io/base64.js +17 -19
  66. package/lib/io/dump.js +16 -16
  67. package/lib/io/isBuffer.js +2 -3
  68. package/lib/io/isBuffer.test.js +8 -0
  69. package/lib/io/isTransferable.js +16 -8
  70. package/lib/io/isTransferable.test.js +17 -0
  71. package/lib/io/parseDataUri.js +288 -40
  72. package/lib/io/parseDataUri.test.js +286 -0
  73. package/lib/io/types.js +1 -0
  74. package/lib/langs/AsyncCloser.js +276 -0
  75. package/lib/langs/Closer.js +100 -0
  76. package/lib/langs/MaybeFunction.js +38 -5
  77. package/lib/langs/classOf.js +0 -2
  78. package/lib/langs/deepEqual.js +82 -22
  79. package/lib/langs/deepEqual.test.js +11 -0
  80. package/lib/langs/deepFreeze.js +28 -9
  81. package/lib/langs/getGlobalStates.js +19 -7
  82. package/lib/langs/getObjectId.js +4 -6
  83. package/lib/langs/ifPresent.js +3 -0
  84. package/lib/langs/isClass.js +0 -2
  85. package/lib/langs/isDefined.js +0 -2
  86. package/lib/langs/isEmptyObject.js +1 -3
  87. package/lib/langs/isFunction.js +0 -2
  88. package/lib/langs/isNil.js +3 -0
  89. package/lib/langs/isPlainObject.js +2 -4
  90. package/lib/langs/langs.test.js +126 -0
  91. package/lib/langs/memoize.js +11 -7
  92. package/lib/langs/mixin.js +7 -4
  93. package/lib/langs/mixin.test.js +135 -0
  94. package/lib/langs/parseBoolean.js +11 -8
  95. package/lib/langs/shallowClone.js +5 -3
  96. package/lib/langs/shallowEqual.js +8 -6
  97. package/lib/libs/ms.js +28 -26
  98. package/lib/libs/ms.test.js +301 -0
  99. package/lib/logger/const.js +15 -0
  100. package/lib/logger/index.js +1 -0
  101. package/lib/logger/types.js +1 -0
  102. package/lib/maths/clamp.js +81 -12
  103. package/lib/maths/clamp.test.js +186 -0
  104. package/lib/maths/createRandom.test.js +36 -0
  105. package/lib/maths/random.js +162 -13
  106. package/lib/modules/isModule.js +0 -2
  107. package/lib/modules/parseModuleId.js +14 -15
  108. package/lib/modules/parseModuleId.test.js +153 -0
  109. package/lib/objects/computeIfAbsent.js +8 -3
  110. package/lib/objects/get.js +26 -8
  111. package/lib/objects/get.test-d.js +23 -25
  112. package/lib/objects/merge/index.js +1 -3
  113. package/lib/objects/merge/isMergeableObject.js +5 -3
  114. package/lib/objects/merge/merge.js +82 -26
  115. package/lib/objects/merge/merge.test.js +1397 -0
  116. package/lib/objects/parseObjectPath.js +47 -15
  117. package/lib/objects/parseObjectPath.test.js +138 -0
  118. package/lib/objects/set.js +25 -19
  119. package/lib/objects/set.test.js +522 -0
  120. package/lib/schema/typebox/index.js +2 -3
  121. package/lib/schema/typebox/typebox.js +6 -6
  122. package/lib/scripts/getGenerateContext.js +386 -76
  123. package/lib/server/crypto/md5.js +0 -2
  124. package/lib/server/fetch/createFetchWithProxy.js +2 -4
  125. package/lib/server/fetch/createFetchWithProxyByNodeFetch.js +258 -31
  126. package/lib/server/fetch/createFetchWithProxyByUndici.js +307 -49
  127. package/lib/server/getPackageDir.js +2 -3
  128. package/lib/server/index.js +5 -7
  129. package/lib/server/jsdom.js +1 -3
  130. package/lib/server/node-fetch.js +2 -4
  131. package/lib/server/polyfill/polyfillBrowser.js +163 -9
  132. package/lib/server/polyfill/polyfillBrowser.test.js +164 -0
  133. package/lib/server/polyfill/polyfillCrypto.js +157 -9
  134. package/lib/server/polyfill/polyfillFetch.js +13 -13
  135. package/lib/server/polyfill/polyfillJsDom.js +264 -58
  136. package/lib/server/polyfill/polyfillWebSocket.js +11 -11
  137. package/lib/server/ws.js +1 -3
  138. package/lib/strings/bytes.test.js +327 -0
  139. package/lib/strings/camelCase.js +23 -14
  140. package/lib/strings/formatBytes.js +29 -20
  141. package/lib/strings/parseBytes.js +54 -0
  142. package/lib/strings/renderTemplate.js +17 -12
  143. package/lib/strings/renderTemplate.test.js +104 -0
  144. package/lib/typedoc.js +2 -4
  145. package/lib/types.d.js +0 -2
  146. package/lib/validations/asserts.js +0 -2
  147. package/lib/validations/isUUID.js +0 -2
  148. package/lib/validations/isUUID.test.js +87 -0
  149. package/lib/validations/parseTimestamp.js +12 -7
  150. package/lib/validations/parseTimestamp.test.js +6 -0
  151. package/lib/{runtime → web}/getGlobalThis.js +3 -4
  152. package/lib/web/getRandomValues.js +44 -0
  153. package/lib/web/randomUUID.js +15 -0
  154. package/lib/web/requestIdleCallback.js +17 -0
  155. package/lib/{runtime → web}/structuredClone.js +35 -28
  156. package/lib/web/structuredClone.test.js +81 -0
  157. package/package.json +10 -18
  158. package/src/arrays/MaybeArray.ts +22 -22
  159. package/src/arrays/arrayFromAsync.ts +3 -3
  160. package/src/asyncs/AsyncInterval.ts +8 -8
  161. package/src/asyncs/Promises.ts +51 -51
  162. package/src/asyncs/createAsyncIterator.ts +34 -34
  163. package/src/asyncs/createLazyPromise.test.ts +73 -73
  164. package/src/asyncs/createLazyPromise.ts +68 -73
  165. package/src/asyncs/firstOfAsyncIterator.ts +5 -5
  166. package/src/asyncs/generatorOfStream.ts +12 -12
  167. package/src/asyncs/isIterator.ts +1 -1
  168. package/src/asyncs/isThenable.ts +2 -2
  169. package/src/asyncs/nextOfAsyncIterator.ts +20 -20
  170. package/src/asyncs/promiseOfCallback.ts +13 -13
  171. package/src/asyncs/timeout.ts +23 -23
  172. package/src/browsers/copy.ts +48 -48
  173. package/src/browsers/download.ts +38 -36
  174. package/src/browsers/getFileFromDataTransfer.ts +35 -35
  175. package/src/browsers/loaders.ts +49 -49
  176. package/src/crypto/base.ts +3 -3
  177. package/src/crypto/getNodeCrypto.ts +3 -3
  178. package/src/crypto/hashing.test.ts +34 -48
  179. package/src/crypto/hashing.ts +67 -67
  180. package/src/crypto/md5.bench.ts +20 -24
  181. package/src/crypto/md5.test.ts +3 -3
  182. package/src/crypto/pem/pem.test.ts +26 -42
  183. package/src/crypto/pem/pem.ts +65 -65
  184. package/src/crypto/ulid.test.ts +32 -32
  185. package/src/crypto/ulid.ts +117 -117
  186. package/src/emitter/types.ts +6 -6
  187. package/src/errors/DetailError.ts +151 -0
  188. package/src/errors/Errors.mod.ts +104 -0
  189. package/src/errors/Errors.test.ts +15 -15
  190. package/src/errors/Errors.ts +1 -247
  191. package/src/fetch/HttpStatus.ts +77 -77
  192. package/src/fetch/createFetchWith.ts +27 -27
  193. package/src/fetch/createFetchWithLogging.ts +13 -16
  194. package/src/fetch/createFetchWithRetry.ts +80 -80
  195. package/src/fetch/dumpRequest.test.ts +176 -0
  196. package/src/fetch/dumpRequest.ts +149 -52
  197. package/src/fetch/dumpResponse.test.ts +160 -0
  198. package/src/fetch/dumpResponse.ts +48 -20
  199. package/src/fetch/http.types.ts +35 -35
  200. package/src/fetch/isTextContentType.ts +12 -0
  201. package/src/fetch/resolveRequest.ts +1 -0
  202. package/src/fetch/types.ts +2 -2
  203. package/src/i18n/createTranslate.test.ts +90 -113
  204. package/src/i18n/createTranslate.ts +55 -55
  205. package/src/index.ts +26 -27
  206. package/src/io/AbstractEncoding.ts +12 -12
  207. package/src/io/ArrayBuffer.test-d.ts +1 -1
  208. package/src/io/ArrayBuffers.base64.test.ts +52 -52
  209. package/src/io/ArrayBuffers.mod.ts +670 -0
  210. package/src/io/ArrayBuffers.test.ts +14 -14
  211. package/src/io/ArrayBuffers.ts +1 -446
  212. package/src/io/Buffer.test.ts +17 -17
  213. package/src/io/Buffer.ts +17 -17
  214. package/src/io/ByteBuffer.test.ts +37 -37
  215. package/src/io/ByteBuffer.ts +574 -566
  216. package/src/io/base64.ts +46 -44
  217. package/src/io/dump.ts +22 -22
  218. package/src/io/isBuffer.test.ts +2 -2
  219. package/src/io/isBuffer.ts +1 -1
  220. package/src/io/isTransferable.test.ts +4 -4
  221. package/src/io/isTransferable.ts +30 -30
  222. package/src/io/parseDataUri.test.ts +22 -27
  223. package/src/io/parseDataUri.ts +57 -57
  224. package/src/io/types.ts +13 -0
  225. package/src/langs/AsyncCloser.ts +45 -0
  226. package/src/langs/Closer.ts +39 -0
  227. package/src/langs/MaybeFunction.ts +5 -5
  228. package/src/langs/classOf.ts +1 -1
  229. package/src/langs/deepEqual.test.ts +1 -12
  230. package/src/langs/deepEqual.ts +82 -82
  231. package/src/langs/deepFreeze.ts +11 -11
  232. package/src/langs/getGlobalStates.ts +21 -11
  233. package/src/langs/getObjectId.ts +10 -13
  234. package/src/langs/ifPresent.ts +3 -0
  235. package/src/langs/isClass.ts +1 -1
  236. package/src/langs/isDefined.ts +1 -1
  237. package/src/langs/isEmptyObject.ts +1 -1
  238. package/src/langs/isFunction.ts +1 -1
  239. package/src/langs/isNil.ts +3 -0
  240. package/src/langs/isPlainObject.ts +4 -4
  241. package/src/langs/langs.test.ts +18 -18
  242. package/src/langs/memoize.ts +21 -21
  243. package/src/langs/mixin.test.ts +22 -26
  244. package/src/langs/mixin.ts +6 -9
  245. package/src/langs/parseBoolean.ts +30 -26
  246. package/src/langs/shallowClone.ts +11 -11
  247. package/src/langs/shallowEqual.ts +19 -19
  248. package/src/libs/ms.test.ts +274 -274
  249. package/src/libs/ms.ts +137 -137
  250. package/src/logger/const.ts +18 -0
  251. package/src/logger/index.ts +2 -0
  252. package/src/logger/types.ts +10 -0
  253. package/src/maths/clamp.test.ts +18 -18
  254. package/src/maths/clamp.ts +17 -17
  255. package/src/maths/createRandom.test.ts +12 -0
  256. package/src/maths/random.ts +50 -14
  257. package/src/modules/isModule.ts +4 -4
  258. package/src/modules/parseModuleId.test.ts +61 -68
  259. package/src/modules/parseModuleId.ts +29 -43
  260. package/src/objects/computeIfAbsent.ts +10 -10
  261. package/src/objects/get.test-d.ts +33 -51
  262. package/src/objects/get.ts +31 -31
  263. package/src/objects/merge/isMergeableObject.ts +5 -5
  264. package/src/objects/merge/merge.test.ts +658 -880
  265. package/src/objects/merge/merge.ts +84 -84
  266. package/src/objects/parseObjectPath.test.ts +13 -13
  267. package/src/objects/parseObjectPath.ts +25 -25
  268. package/src/objects/set.test.ts +271 -366
  269. package/src/objects/set.ts +36 -36
  270. package/src/schema/typebox/typebox.ts +20 -26
  271. package/src/scripts/getGenerateContext.ts +82 -80
  272. package/src/server/crypto/md5.ts +1 -1
  273. package/src/server/fetch/createFetchWithProxyByNodeFetch.ts +30 -33
  274. package/src/server/fetch/createFetchWithProxyByUndici.ts +64 -70
  275. package/src/server/getPackageDir.ts +7 -7
  276. package/src/server/polyfill/polyfillBrowser.test.ts +10 -10
  277. package/src/server/polyfill/polyfillBrowser.ts +3 -3
  278. package/src/server/polyfill/polyfillCrypto.ts +7 -7
  279. package/src/server/polyfill/polyfillFetch.ts +11 -21
  280. package/src/server/polyfill/polyfillJsDom.ts +60 -72
  281. package/src/server/polyfill/polyfillWebSocket.ts +15 -15
  282. package/src/strings/bytes.test.ts +69 -0
  283. package/src/strings/camelCase.ts +58 -63
  284. package/src/strings/formatBytes.ts +50 -29
  285. package/src/strings/parseBytes.ts +66 -0
  286. package/src/strings/renderTemplate.test.ts +10 -17
  287. package/src/strings/renderTemplate.ts +19 -22
  288. package/src/types.d.ts +9 -9
  289. package/src/validations/asserts.ts +8 -8
  290. package/src/validations/isUUID.test.ts +9 -9
  291. package/src/validations/isUUID.ts +1 -1
  292. package/src/validations/parseTimestamp.test.ts +2 -2
  293. package/src/validations/parseTimestamp.ts +21 -21
  294. package/src/{runtime → web}/getGlobalThis.ts +6 -6
  295. package/src/web/getRandomValues.ts +41 -0
  296. package/src/web/randomUUID.ts +19 -0
  297. package/src/web/requestIdleCallback.ts +11 -0
  298. package/src/{runtime → web}/structuredClone.test.ts +8 -8
  299. package/src/web/structuredClone.ts +88 -0
  300. package/tsconfig.json +35 -34
  301. package/lib/arrays/MaybeArray.js.map +0 -1
  302. package/lib/arrays/arrayFromAsync.js.map +0 -1
  303. package/lib/asyncs/AsyncInterval.js.map +0 -1
  304. package/lib/asyncs/MaybePromise.js.map +0 -1
  305. package/lib/asyncs/Promises.js.map +0 -1
  306. package/lib/asyncs/createAsyncIterator.js.map +0 -1
  307. package/lib/asyncs/createLazyPromise.js.map +0 -1
  308. package/lib/asyncs/firstOfAsyncIterator.js.map +0 -1
  309. package/lib/asyncs/generatorOfStream.js.map +0 -1
  310. package/lib/asyncs/isIterator.js.map +0 -1
  311. package/lib/asyncs/isPromise.js.map +0 -1
  312. package/lib/asyncs/isThenable.js.map +0 -1
  313. package/lib/asyncs/nextOfAsyncIterator.js.map +0 -1
  314. package/lib/asyncs/promiseOfCallback.js.map +0 -1
  315. package/lib/asyncs/timeout.js.map +0 -1
  316. package/lib/browsers/copy.js.map +0 -1
  317. package/lib/browsers/download.js.map +0 -1
  318. package/lib/browsers/getFileFromDataTransfer.js.map +0 -1
  319. package/lib/browsers/loaders.js.map +0 -1
  320. package/lib/cn/division/DivisionCode.js +0 -209
  321. package/lib/cn/division/DivisionCode.js.map +0 -1
  322. package/lib/cn/division/binarySearch.js +0 -27
  323. package/lib/cn/division/binarySearch.js.map +0 -1
  324. package/lib/cn/formatChineseAmount.js +0 -77
  325. package/lib/cn/formatChineseAmount.js.map +0 -1
  326. package/lib/cn/id/Mod11.js +0 -43
  327. package/lib/cn/id/Mod11.js.map +0 -1
  328. package/lib/cn/id/ResidentIdNumber.js +0 -98
  329. package/lib/cn/id/ResidentIdNumber.js.map +0 -1
  330. package/lib/cn/id/types.js +0 -8
  331. package/lib/cn/id/types.js.map +0 -1
  332. package/lib/cn/index.js +0 -14
  333. package/lib/cn/index.js.map +0 -1
  334. package/lib/cn/parseChineseNumber.js +0 -94
  335. package/lib/cn/parseChineseNumber.js.map +0 -1
  336. package/lib/cn/pinyin/cartesianProduct.js +0 -22
  337. package/lib/cn/pinyin/cartesianProduct.js.map +0 -1
  338. package/lib/cn/pinyin/data.json +0 -413
  339. package/lib/cn/pinyin/loader.js +0 -15
  340. package/lib/cn/pinyin/loader.js.map +0 -1
  341. package/lib/cn/pinyin/preload.js +0 -4
  342. package/lib/cn/pinyin/preload.js.map +0 -1
  343. package/lib/cn/pinyin/toPinyinPure.js +0 -32
  344. package/lib/cn/pinyin/toPinyinPure.js.map +0 -1
  345. package/lib/cn/pinyin/transform.js +0 -14
  346. package/lib/cn/pinyin/transform.js.map +0 -1
  347. package/lib/cn/types.js +0 -3
  348. package/lib/cn/types.js.map +0 -1
  349. package/lib/cn/uscc/Mod31.js +0 -49
  350. package/lib/cn/uscc/Mod31.js.map +0 -1
  351. package/lib/cn/uscc/USCC.js +0 -94
  352. package/lib/cn/uscc/USCC.js.map +0 -1
  353. package/lib/cn/uscc/isUSCC.js +0 -8
  354. package/lib/cn/uscc/isUSCC.js.map +0 -1
  355. package/lib/crypto/base.js.map +0 -1
  356. package/lib/crypto/getNodeCrypto.js.map +0 -1
  357. package/lib/crypto/getRandomValues.js +0 -36
  358. package/lib/crypto/getRandomValues.js.map +0 -1
  359. package/lib/crypto/hashing.js.map +0 -1
  360. package/lib/crypto/md5.bench.js.map +0 -1
  361. package/lib/crypto/md5.d.js.map +0 -1
  362. package/lib/crypto/md5.js.map +0 -1
  363. package/lib/crypto/pem/pem.js.map +0 -1
  364. package/lib/crypto/randomUUID.js +0 -16
  365. package/lib/crypto/randomUUID.js.map +0 -1
  366. package/lib/crypto/randomUUIDv7.js.map +0 -1
  367. package/lib/crypto/ulid.js.map +0 -1
  368. package/lib/emitter/types.js.map +0 -1
  369. package/lib/errors/Errors.js.map +0 -1
  370. package/lib/fetch/HttpStatus.js.map +0 -1
  371. package/lib/fetch/createFetchWith.js.map +0 -1
  372. package/lib/fetch/createFetchWithLogging.js.map +0 -1
  373. package/lib/fetch/createFetchWithRetry.js.map +0 -1
  374. package/lib/fetch/dumpRequest.js.map +0 -1
  375. package/lib/fetch/dumpResponse.js.map +0 -1
  376. package/lib/fetch/http.types.js.map +0 -1
  377. package/lib/fetch/index.js.map +0 -1
  378. package/lib/fetch/types.js.map +0 -1
  379. package/lib/i18n/createTranslate.js.map +0 -1
  380. package/lib/index.js.map +0 -1
  381. package/lib/io/AbstractEncoding.js.map +0 -1
  382. package/lib/io/ArrayBuffer.test-d.js.map +0 -1
  383. package/lib/io/ArrayBuffers.js.map +0 -1
  384. package/lib/io/Buffer.js.map +0 -1
  385. package/lib/io/ByteBuffer.js.map +0 -1
  386. package/lib/io/base64.js.map +0 -1
  387. package/lib/io/dump.js.map +0 -1
  388. package/lib/io/isBuffer.js.map +0 -1
  389. package/lib/io/isTransferable.js.map +0 -1
  390. package/lib/io/parseDataUri.js.map +0 -1
  391. package/lib/langs/MaybeFunction.js.map +0 -1
  392. package/lib/langs/classOf.js.map +0 -1
  393. package/lib/langs/deepEqual.js.map +0 -1
  394. package/lib/langs/deepFreeze.js.map +0 -1
  395. package/lib/langs/getGlobalStates.js.map +0 -1
  396. package/lib/langs/getObjectId.js.map +0 -1
  397. package/lib/langs/isClass.js.map +0 -1
  398. package/lib/langs/isDefined.js.map +0 -1
  399. package/lib/langs/isEmptyObject.js.map +0 -1
  400. package/lib/langs/isFunction.js.map +0 -1
  401. package/lib/langs/isNullish.js +0 -5
  402. package/lib/langs/isNullish.js.map +0 -1
  403. package/lib/langs/isPlainObject.js.map +0 -1
  404. package/lib/langs/memoize.js.map +0 -1
  405. package/lib/langs/mixin.js.map +0 -1
  406. package/lib/langs/parseBoolean.js.map +0 -1
  407. package/lib/langs/shallowClone.js.map +0 -1
  408. package/lib/langs/shallowEqual.js.map +0 -1
  409. package/lib/libs/ms.js.map +0 -1
  410. package/lib/logging/Logger.js +0 -5
  411. package/lib/logging/Logger.js.map +0 -1
  412. package/lib/logging/createChildLogger.js +0 -16
  413. package/lib/logging/createChildLogger.js.map +0 -1
  414. package/lib/logging/createLogger.js +0 -63
  415. package/lib/logging/createLogger.js.map +0 -1
  416. package/lib/logging/createNoopLogger.js +0 -13
  417. package/lib/logging/createNoopLogger.js.map +0 -1
  418. package/lib/logging/slog.js +0 -143
  419. package/lib/logging/slog.js.map +0 -1
  420. package/lib/maths/clamp.js.map +0 -1
  421. package/lib/maths/random.js.map +0 -1
  422. package/lib/mitt/index.js +0 -77
  423. package/lib/mitt/index.js.map +0 -1
  424. package/lib/modules/isModule.js.map +0 -1
  425. package/lib/modules/parseModuleId.js.map +0 -1
  426. package/lib/objects/computeIfAbsent.js.map +0 -1
  427. package/lib/objects/get.js.map +0 -1
  428. package/lib/objects/get.test-d.js.map +0 -1
  429. package/lib/objects/merge/index.js.map +0 -1
  430. package/lib/objects/merge/isMergeableObject.js.map +0 -1
  431. package/lib/objects/merge/merge.js.map +0 -1
  432. package/lib/objects/parseObjectPath.js.map +0 -1
  433. package/lib/objects/set.js.map +0 -1
  434. package/lib/runtime/AsyncCloser.js +0 -40
  435. package/lib/runtime/AsyncCloser.js.map +0 -1
  436. package/lib/runtime/Closer.js +0 -34
  437. package/lib/runtime/Closer.js.map +0 -1
  438. package/lib/runtime/getGlobalThis.js.map +0 -1
  439. package/lib/runtime/structuredClone.js.map +0 -1
  440. package/lib/schema/typebox/index.js.map +0 -1
  441. package/lib/schema/typebox/typebox.js.map +0 -1
  442. package/lib/scripts/getGenerateContext.js.map +0 -1
  443. package/lib/server/crypto/md5.js.map +0 -1
  444. package/lib/server/fetch/createFetchWithProxy.js.map +0 -1
  445. package/lib/server/fetch/createFetchWithProxyByNodeFetch.js.map +0 -1
  446. package/lib/server/fetch/createFetchWithProxyByUndici.js.map +0 -1
  447. package/lib/server/getPackageDir.js.map +0 -1
  448. package/lib/server/index.js.map +0 -1
  449. package/lib/server/jsdom.js.map +0 -1
  450. package/lib/server/node-fetch.js.map +0 -1
  451. package/lib/server/polyfill/polyfillBrowser.js.map +0 -1
  452. package/lib/server/polyfill/polyfillCrypto.js.map +0 -1
  453. package/lib/server/polyfill/polyfillFetch.js.map +0 -1
  454. package/lib/server/polyfill/polyfillJsDom.js.map +0 -1
  455. package/lib/server/polyfill/polyfillWebSocket.js.map +0 -1
  456. package/lib/server/ws.js.map +0 -1
  457. package/lib/strings/camelCase.js.map +0 -1
  458. package/lib/strings/formatBytes.js.map +0 -1
  459. package/lib/strings/renderTemplate.js.map +0 -1
  460. package/lib/typedoc.js.map +0 -1
  461. package/lib/types.d.js.map +0 -1
  462. package/lib/validations/asserts.js.map +0 -1
  463. package/lib/validations/isUUID.js.map +0 -1
  464. package/lib/validations/parseTimestamp.js.map +0 -1
  465. package/src/cn/README.md +0 -3
  466. package/src/cn/division/DivisionCode.ts +0 -155
  467. package/src/cn/division/binarySearch.test.ts +0 -64
  468. package/src/cn/division/binarySearch.ts +0 -25
  469. package/src/cn/division/division.test.ts +0 -6
  470. package/src/cn/formatChineseAmount.ts +0 -61
  471. package/src/cn/id/Mod11.ts +0 -26
  472. package/src/cn/id/ResidentIdNumber.ts +0 -126
  473. package/src/cn/id/id.test.ts +0 -20
  474. package/src/cn/id/types.ts +0 -26
  475. package/src/cn/index.ts +0 -17
  476. package/src/cn/parseChineseNumber.test.ts +0 -159
  477. package/src/cn/parseChineseNumber.ts +0 -97
  478. package/src/cn/pinyin/cartesianProduct.test.ts +0 -64
  479. package/src/cn/pinyin/cartesianProduct.ts +0 -24
  480. package/src/cn/pinyin/data.json +0 -413
  481. package/src/cn/pinyin/loader.ts +0 -12
  482. package/src/cn/pinyin/preload.ts +0 -3
  483. package/src/cn/pinyin/toPinyin.test.ts +0 -12
  484. package/src/cn/pinyin/toPinyinPure.ts +0 -43
  485. package/src/cn/pinyin/transform.ts +0 -12
  486. package/src/cn/scripts/gen.test.ts +0 -131
  487. package/src/cn/types.ts +0 -11
  488. package/src/cn/uscc/Mod31.ts +0 -38
  489. package/src/cn/uscc/USCC.ts +0 -94
  490. package/src/cn/uscc/isUSCC.ts +0 -8
  491. package/src/cn/uscc/uscc.test.ts +0 -16
  492. package/src/crypto/getRandomValues.ts +0 -41
  493. package/src/crypto/randomUUID.ts +0 -19
  494. package/src/langs/isNullish.ts +0 -3
  495. package/src/logging/Logger.ts +0 -25
  496. package/src/logging/createChildLogger.ts +0 -16
  497. package/src/logging/createLogger.ts +0 -50
  498. package/src/logging/createNoopLogger.ts +0 -13
  499. package/src/logging/logger.test.ts +0 -36
  500. package/src/logging/slog.test.ts +0 -8
  501. package/src/logging/slog.ts +0 -221
  502. package/src/mitt/README.md +0 -1
  503. package/src/mitt/index.ts +0 -114
  504. package/src/runtime/AsyncCloser.ts +0 -45
  505. package/src/runtime/Closer.ts +0 -39
  506. package/src/runtime/structuredClone.ts +0 -88
@@ -2,93 +2,93 @@ import { describe, expect, test } from 'vitest';
2
2
  import { createLazyPromise } from './createLazyPromise';
3
3
 
4
4
  describe('basic', async () => {
5
- test('no executor', async () => {
6
- const promise = createLazyPromise();
7
- let r = 0;
8
- void promise.then((v) => (r = v));
9
- expect(r).toBe(0);
10
- const { resolve, reject } = promise;
11
- expect(resolve).toBeTruthy();
12
- expect(reject).toBeTruthy();
5
+ test('no executor', async () => {
6
+ const promise = createLazyPromise();
7
+ let r = 0;
8
+ void promise.then((v) => (r = v));
9
+ expect(r).toBe(0);
10
+ const { resolve, reject } = promise;
11
+ expect(resolve).toBeTruthy();
12
+ expect(reject).toBeTruthy();
13
13
 
14
- // peek
15
- expect(promise.value).toBeUndefined();
16
- expect(promise.status).toBe('pending');
17
- resolve(1);
18
- expect(promise.value).toBe(1);
19
- expect(promise.status).toBe('resolved');
14
+ // peek
15
+ expect(promise.value).toBeUndefined();
16
+ expect(promise.status).toBe('pending');
17
+ resolve(1);
18
+ expect(promise.value).toBe(1);
19
+ expect(promise.status).toBe('resolved');
20
20
 
21
- expect(r).toBe(0);
21
+ expect(r).toBe(0);
22
22
 
23
- await promise;
23
+ await promise;
24
24
 
25
- expect(r).toBe(1);
26
- });
25
+ expect(r).toBe(1);
26
+ });
27
27
 
28
- test('can resolve to lazy', async () => {
29
- const a = createLazyPromise(() => {
30
- return createLazyPromise(() => {
31
- return 10;
32
- });
33
- });
28
+ test('can resolve to lazy', async () => {
29
+ const a = createLazyPromise(() => {
30
+ return createLazyPromise(() => {
31
+ return 10;
32
+ });
33
+ });
34
34
 
35
- expect(a.value).toBeUndefined();
36
- expect(a.status).toBe('pending');
37
- expect(await a).toBe(10);
38
- expect(a.status).toBe('resolved');
39
- expect(a.value).toBe(10);
40
- });
35
+ expect(a.value).toBeUndefined();
36
+ expect(a.status).toBe('pending');
37
+ expect(await a).toBe(10);
38
+ expect(a.status).toBe('resolved');
39
+ expect(a.value).toBe(10);
40
+ });
41
41
 
42
- test('can resolve to async lazy', async () => {
43
- const a = createLazyPromise(async () => {
44
- return createLazyPromise(async () => {
45
- return 10;
46
- });
47
- });
48
- expect(a.value).toBeUndefined();
49
- expect(a.status).toBe('pending');
50
- expect(await a).toBe(10);
51
- expect(a.status).toBe('resolved');
52
- expect(a.value).toBe(10);
53
- });
42
+ test('can resolve to async lazy', async () => {
43
+ const a = createLazyPromise(async () => {
44
+ return createLazyPromise(async () => {
45
+ return 10;
46
+ });
47
+ });
48
+ expect(a.value).toBeUndefined();
49
+ expect(a.status).toBe('pending');
50
+ expect(await a).toBe(10);
51
+ expect(a.status).toBe('resolved');
52
+ expect(a.value).toBe(10);
53
+ });
54
54
  });
55
55
 
56
56
  test('manual resolve skip exec', async () => {
57
- const promise = createLazyPromise<number>(() => {
58
- expect.fail('should not exec');
59
- });
60
- promise.resolve(-1);
61
- expect(await promise).toBe(-1);
62
- expect(String(promise)).toBe('[object LazyPromise]');
57
+ const promise = createLazyPromise<number>(() => {
58
+ expect.fail('should not exec');
59
+ });
60
+ promise.resolve(-1);
61
+ expect(await promise).toBe(-1);
62
+ expect(String(promise)).toBe('[object LazyPromise]');
63
63
  });
64
64
 
65
65
  test('lazy exec resolve by manual', async () => {
66
- let r = 0;
67
- const promise = createLazyPromise((resolve) => {
68
- r++;
69
- resolve(10);
70
- });
71
- await Promise.resolve();
72
- expect(r).toBe(0);
73
- expect(await promise).toBe(10);
74
- expect(r).toBe(1);
75
- promise.resolve(20);
76
- expect(await promise).toBe(10);
77
- expect(r).toBe(1);
66
+ let r = 0;
67
+ const promise = createLazyPromise((resolve) => {
68
+ r++;
69
+ resolve(10);
70
+ });
71
+ await Promise.resolve();
72
+ expect(r).toBe(0);
73
+ expect(await promise).toBe(10);
74
+ expect(r).toBe(1);
75
+ promise.resolve(20);
76
+ expect(await promise).toBe(10);
77
+ expect(r).toBe(1);
78
78
  });
79
79
 
80
80
  test('lazy exec resolve by return', async () => {
81
- let r = 0;
82
- const promise = createLazyPromise(() => {
83
- r++;
84
- return 10;
85
- });
86
- await Promise.resolve();
87
- expect(r).toBe(0);
88
- void promise.then(() => undefined);
89
- await Promise.resolve();
90
- // already resolved
91
- expect(r).toBe(1);
92
- expect(await promise).toBe(10);
93
- expect(r).toBe(1);
81
+ let r = 0;
82
+ const promise = createLazyPromise(() => {
83
+ r++;
84
+ return 10;
85
+ });
86
+ await Promise.resolve();
87
+ expect(r).toBe(0);
88
+ void promise.then(() => undefined);
89
+ await Promise.resolve();
90
+ // already resolved
91
+ expect(r).toBe(1);
92
+ expect(await promise).toBe(10);
93
+ expect(r).toBe(1);
94
94
  });
@@ -3,11 +3,11 @@ import type { MaybePromise } from './MaybePromise';
3
3
  import { Promises } from './Promises';
4
4
 
5
5
  export type LazyPromise<T> = Promise<T> & {
6
- reject(reason?: any): void;
7
- resolve(v?: MaybePromise<T>): void;
8
- readonly status: 'pending' | 'resolved' | 'rejected';
9
- readonly value: T | undefined;
10
- readonly error: any;
6
+ reject(reason?: any): void;
7
+ resolve(v?: MaybePromise<T>): void;
8
+ readonly status: 'pending' | 'resolved' | 'rejected';
9
+ readonly value: T | undefined;
10
+ readonly error: any;
11
11
  };
12
12
 
13
13
  /**
@@ -15,78 +15,73 @@ export type LazyPromise<T> = Promise<T> & {
15
15
  * if you pass a function to it, it will be executed when the promise try to resolve.
16
16
  */
17
17
  export function createLazyPromise<T = any>(
18
- executor?: (resolve: LazyPromise<T>['resolve'], reject: LazyPromise<T>['reject']) => MaybePromise<T> | void,
18
+ executor?: (resolve: LazyPromise<T>['resolve'], reject: LazyPromise<T>['reject']) => MaybePromise<T> | void,
19
19
  ): LazyPromise<T> {
20
- const { promise, resolve, reject } = Promises.withResolvers();
21
- const lazy = Object.assign(promise, {
22
- resolve,
23
- reject,
24
- }) as LazyPromise<T>;
20
+ const { promise, resolve, reject } = Promises.withResolvers();
21
+ const lazy = Object.assign(promise, { resolve, reject }) as LazyPromise<T>;
25
22
 
26
- let executed = false;
27
- let pending = true;
28
- let status: 'pending' | 'resolved' | 'rejected' = 'pending';
29
- let value: T | undefined;
30
- let error: any;
23
+ let executed = false;
24
+ let pending = true;
25
+ let status: 'pending' | 'resolved' | 'rejected' = 'pending';
26
+ let value: T | undefined;
27
+ let error: any;
31
28
 
32
- const _resolve = (v: T) => {
33
- resolve(v);
34
- if (!pending) return;
35
- pending = false;
36
- // do not delay this for sync status peek
37
- status = 'resolved';
38
- value = v;
39
- };
40
- const _reject = (v: any) => {
41
- reject(v);
42
- if (!pending) return;
43
- pending = false;
44
- status = 'rejected';
45
- error = v;
46
- };
29
+ const _resolve = (v: T) => {
30
+ resolve(v);
31
+ if (!pending) return;
32
+ pending = false;
33
+ // do not delay this for sync status peek
34
+ status = 'resolved';
35
+ value = v;
36
+ };
37
+ const _reject = (v: any) => {
38
+ reject(v);
39
+ if (!pending) return;
40
+ pending = false;
41
+ status = 'rejected';
42
+ error = v;
43
+ };
47
44
 
48
- const like = Object.assign(
49
- {
50
- get status() {
51
- return status;
52
- },
53
- get value() {
54
- return value;
55
- },
56
- get error() {
57
- return error;
58
- },
59
- },
60
- {
61
- cache: lazy.catch.bind(lazy),
62
- finally: lazy.finally?.bind(lazy),
63
- resolve: _resolve,
64
- reject: _reject,
65
- then: (...args: any[]) => {
66
- if (executor && !executed) {
67
- executed = true;
68
- try {
69
- const result = executor(_resolve, _reject);
70
- // ensure resolve/reject is called
71
- if (isPromise(result)) {
72
- result.then(_resolve, _reject);
73
- } else if (result !== undefined) {
74
- _resolve(result);
75
- }
76
- } catch (e) {
77
- _reject(e);
78
- }
79
- }
80
- return lazy.then(...args);
81
- },
82
- },
83
- ) as any as LazyPromise<T>;
45
+ const like = Object.assign(
46
+ {
47
+ get status() {
48
+ return status;
49
+ },
50
+ get value() {
51
+ return value;
52
+ },
53
+ get error() {
54
+ return error;
55
+ },
56
+ },
57
+ {
58
+ cache: lazy.catch.bind(lazy),
59
+ finally: lazy.finally?.bind(lazy),
60
+ resolve: _resolve,
61
+ reject: _reject,
62
+ then: (...args: any[]) => {
63
+ if (executor && !executed) {
64
+ executed = true;
65
+ try {
66
+ const result = executor(_resolve, _reject);
67
+ // ensure resolve/reject is called
68
+ if (isPromise(result)) {
69
+ result.then(_resolve, _reject);
70
+ } else if (result !== undefined) {
71
+ _resolve(result);
72
+ }
73
+ } catch (e) {
74
+ _reject(e);
75
+ }
76
+ }
77
+ return lazy.then(...args);
78
+ },
79
+ },
80
+ ) as any as LazyPromise<T>;
84
81
 
85
- if ('toStringTag' in Symbol) {
86
- Object.defineProperty(like, Symbol.toStringTag, {
87
- value: 'LazyPromise',
88
- });
89
- }
82
+ if ('toStringTag' in Symbol) {
83
+ Object.defineProperty(like, Symbol.toStringTag, { value: 'LazyPromise' });
84
+ }
90
85
 
91
- return like;
86
+ return like;
92
87
  }
@@ -3,9 +3,9 @@ import type { MaybePromise } from './MaybePromise';
3
3
  import { nextOfAsyncIterator } from './nextOfAsyncIterator';
4
4
 
5
5
  export function firstOfAsyncIterator<T>(it: MaybePromise<AsyncIterator<T> | Iterator<T> | T>): MaybePromise<T> {
6
- const next = nextOfAsyncIterator(it);
7
- if (isPromise(next)) {
8
- return next.then((v) => v[0]);
9
- }
10
- return next[0];
6
+ const next = nextOfAsyncIterator(it);
7
+ if (isPromise(next)) {
8
+ return next.then((v) => v[0]);
9
+ }
10
+ return next[0];
11
11
  }
@@ -1,14 +1,14 @@
1
1
  export function* generatorOfStream<T = any>(stream: any): IterableIterator<Promise<T>> {
2
- let done = false;
3
- stream.on('end', () => {
4
- done = true;
5
- });
6
- // eslint-disable-next-line no-unmodified-loop-condition
7
- while (!done) {
8
- yield new Promise((resolve, reject) => {
9
- stream.once('data', resolve);
10
- stream.once('end', resolve);
11
- stream.once('error', reject);
12
- });
13
- }
2
+ let done = false;
3
+ stream.on('end', () => {
4
+ done = true;
5
+ });
6
+ // eslint-disable-next-line no-unmodified-loop-condition
7
+ while (!done) {
8
+ yield new Promise((resolve, reject) => {
9
+ stream.once('data', resolve);
10
+ stream.once('end', resolve);
11
+ stream.once('error', reject);
12
+ });
13
+ }
14
14
  }
@@ -1,3 +1,3 @@
1
1
  export function isIterator<T>(it: any): it is Iterator<T> | AsyncIterator<T> {
2
- return typeof it?.next === 'function';
2
+ return typeof it?.next === 'function';
3
3
  }
@@ -1,4 +1,4 @@
1
1
  export function isThenable(v: any): v is PromiseLike<any> {
2
- // we are at Promise era now, so we can use Promise instead of PromiseLike
3
- return v && typeof v.then === 'function';
2
+ // we are at Promise era now, so we can use Promise instead of PromiseLike
3
+ return v && typeof v.then === 'function';
4
4
  }
@@ -6,26 +6,26 @@ type IteratorLike<T> = Iterable<T> | Iterator<T>;
6
6
  type AsyncIteratorLike<T> = AsyncIterable<T> | AsyncIterator<T> | AsyncIterableIterator<T> | IteratorLike<T>;
7
7
 
8
8
  export function nextOfAsyncIterator<T>(
9
- it: MaybePromise<AsyncIterable<T> | Iterable<T> | AsyncIterator<T> | Iterator<T> | T>,
9
+ it: MaybePromise<AsyncIterable<T> | Iterable<T> | AsyncIterator<T> | Iterator<T> | T>,
10
10
  ): MaybePromise<[value: T, done?: boolean]> {
11
- if (isPromise(it)) {
12
- return it.then((v) => nextOfAsyncIterator(v));
13
- }
11
+ if (isPromise(it)) {
12
+ return it.then((v) => nextOfAsyncIterator(v));
13
+ }
14
14
 
15
- if (isIterator(it)) {
16
- let next = it.next();
17
- if (isPromise(next)) {
18
- return next.then((v) => [v.value, v.done]);
19
- }
20
- return [next.value, next.done];
21
- }
22
- if (it && typeof it === 'object') {
23
- if (Symbol.iterator in it) {
24
- return nextOfAsyncIterator(it[Symbol.iterator]());
25
- }
26
- if (Symbol.asyncIterator in it) {
27
- return nextOfAsyncIterator(it[Symbol.asyncIterator]());
28
- }
29
- }
30
- return [it];
15
+ if (isIterator(it)) {
16
+ let next = it.next();
17
+ if (isPromise(next)) {
18
+ return next.then((v) => [v.value, v.done]);
19
+ }
20
+ return [next.value, next.done];
21
+ }
22
+ if (it && typeof it === 'object') {
23
+ if (Symbol.iterator in it) {
24
+ return nextOfAsyncIterator(it[Symbol.iterator]());
25
+ }
26
+ if (Symbol.asyncIterator in it) {
27
+ return nextOfAsyncIterator(it[Symbol.asyncIterator]());
28
+ }
29
+ }
30
+ return [it];
31
31
  }
@@ -1,15 +1,15 @@
1
1
  export function promiseOfCallback<T>(fun: (cb: (err: any, val?: T) => void) => void) {
2
- return new Promise<T>((resolve, reject) => {
3
- try {
4
- fun((e: any, v: any) => {
5
- if (e) {
6
- reject(e);
7
- } else {
8
- resolve(v);
9
- }
10
- });
11
- } catch (e) {
12
- reject(e);
13
- }
14
- });
2
+ return new Promise<T>((resolve, reject) => {
3
+ try {
4
+ fun((e: any, v: any) => {
5
+ if (e) {
6
+ reject(e);
7
+ } else {
8
+ resolve(v);
9
+ }
10
+ });
11
+ } catch (e) {
12
+ reject(e);
13
+ }
14
+ });
15
15
  }
@@ -1,30 +1,30 @@
1
1
  export function timeout<T = any>(
2
- pending: Promise<T> | ((args: { signal: AbortSignal }) => Promise<T>),
3
- ms: number,
2
+ pending: Promise<T> | ((args: { signal: AbortSignal }) => Promise<T>),
3
+ ms: number,
4
4
  ): Promise<T> {
5
- const error = new TimeoutError();
6
- let timeout: any;
7
- let ac: AbortController | undefined;
8
- if (typeof pending === 'function') {
9
- ac = new AbortController();
10
- pending = pending({ signal: ac.signal });
11
- }
5
+ const error = new TimeoutError();
6
+ let timeout: any;
7
+ let ac: AbortController | undefined;
8
+ if (typeof pending === 'function') {
9
+ ac = new AbortController();
10
+ pending = pending({ signal: ac.signal });
11
+ }
12
12
 
13
- return Promise.race<T>([
14
- pending,
15
- new Promise((_resolve, reject) => {
16
- timeout = setTimeout(() => {
17
- ac?.abort(error);
18
- reject(error);
19
- }, ms);
20
- }),
21
- ]).finally(() => {
22
- clearTimeout(timeout);
23
- });
13
+ return Promise.race<T>([
14
+ pending,
15
+ new Promise((_resolve, reject) => {
16
+ timeout = setTimeout(() => {
17
+ ac?.abort(error);
18
+ reject(error);
19
+ }, ms);
20
+ }),
21
+ ]).finally(() => {
22
+ clearTimeout(timeout);
23
+ });
24
24
  }
25
25
 
26
26
  export class TimeoutError extends Error {
27
- constructor() {
28
- super('TimeoutError');
29
- }
27
+ constructor() {
28
+ super('TimeoutError');
29
+ }
30
30
  }
@@ -4,47 +4,47 @@ let _copy: (s: any) => MaybePromise<void>;
4
4
 
5
5
  // https://gist.github.com/rproenca/64781c6a1329b48a455b645d361a9aa3
6
6
  function initCopy() {
7
- let textArea: HTMLTextAreaElement;
8
-
9
- function isIOS() {
10
- return navigator.userAgent.match(/ipad|iphone/i);
11
- }
12
-
13
- function createTextArea(text: string) {
14
- textArea = document.createElement('textArea') as HTMLTextAreaElement;
15
- textArea.value = text;
16
- document.body.appendChild(textArea);
17
- }
18
-
19
- function selectText() {
20
- let range, selection;
21
-
22
- if (isIOS()) {
23
- range = document.createRange();
24
- range.selectNodeContents(textArea);
25
- selection = window.getSelection();
26
- if (selection === null) {
27
- console.error(`no selection`);
28
- return;
29
- }
30
- selection.removeAllRanges();
31
- selection.addRange(range);
32
- textArea.setSelectionRange(0, 999999);
33
- } else {
34
- textArea.select();
35
- }
36
- }
37
-
38
- function copyToClipboard() {
39
- document.execCommand('copy');
40
- document.body.removeChild(textArea);
41
- }
42
-
43
- _copy = (text) => {
44
- createTextArea(text);
45
- selectText();
46
- copyToClipboard();
47
- };
7
+ let textArea: HTMLTextAreaElement;
8
+
9
+ function isIOS() {
10
+ return navigator.userAgent.match(/ipad|iphone/i);
11
+ }
12
+
13
+ function createTextArea(text: string) {
14
+ textArea = document.createElement('textArea') as HTMLTextAreaElement;
15
+ textArea.value = text;
16
+ document.body.appendChild(textArea);
17
+ }
18
+
19
+ function selectText() {
20
+ let range, selection;
21
+
22
+ if (isIOS()) {
23
+ range = document.createRange();
24
+ range.selectNodeContents(textArea);
25
+ selection = window.getSelection();
26
+ if (selection === null) {
27
+ console.error(`no selection`);
28
+ return;
29
+ }
30
+ selection.removeAllRanges();
31
+ selection.addRange(range);
32
+ textArea.setSelectionRange(0, 999999);
33
+ } else {
34
+ textArea.select();
35
+ }
36
+ }
37
+
38
+ function copyToClipboard() {
39
+ document.execCommand('copy');
40
+ document.body.removeChild(textArea);
41
+ }
42
+
43
+ _copy = (text) => {
44
+ createTextArea(text);
45
+ selectText();
46
+ copyToClipboard();
47
+ };
48
48
  }
49
49
 
50
50
  /**
@@ -52,11 +52,11 @@ function initCopy() {
52
52
  * @param content content
53
53
  */
54
54
  export function copy(content: string): MaybePromise<void> {
55
- if (window.navigator?.clipboard?.writeText) {
56
- return window.navigator.clipboard.writeText(content);
57
- }
58
- if (!_copy) {
59
- initCopy();
60
- }
61
- return _copy(content);
55
+ if (window.navigator?.clipboard?.writeText) {
56
+ return window.navigator.clipboard.writeText(content);
57
+ }
58
+ if (!_copy) {
59
+ initCopy();
60
+ }
61
+ return _copy(content);
62
62
  }