qidian-shared 1.0.68 → 1.0.69

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 (282) hide show
  1. package/dist/_virtual/___vite-browser-external.mjs +7 -0
  2. package/dist/_virtual/___vite-browser-external.mjs.map +1 -0
  3. package/dist/_virtual/__vite-browser-external.mjs +5 -0
  4. package/dist/_virtual/__vite-browser-external.mjs.map +1 -0
  5. package/dist/_virtual/_commonjs-dynamic-modules.mjs +7 -0
  6. package/dist/_virtual/_commonjs-dynamic-modules.mjs.map +1 -0
  7. package/dist/_virtual/_commonjsHelpers.mjs +39 -0
  8. package/dist/_virtual/_commonjsHelpers.mjs.map +1 -0
  9. package/dist/_virtual/aes.mjs +5 -0
  10. package/dist/_virtual/aes.mjs.map +1 -0
  11. package/dist/_virtual/blowfish.mjs +5 -0
  12. package/dist/_virtual/blowfish.mjs.map +1 -0
  13. package/dist/_virtual/cipher-core.mjs +5 -0
  14. package/dist/_virtual/cipher-core.mjs.map +1 -0
  15. package/dist/_virtual/core.mjs +5 -0
  16. package/dist/_virtual/core.mjs.map +1 -0
  17. package/dist/_virtual/enc-base64.mjs +5 -0
  18. package/dist/_virtual/enc-base64.mjs.map +1 -0
  19. package/dist/_virtual/enc-base64url.mjs +5 -0
  20. package/dist/_virtual/enc-base64url.mjs.map +1 -0
  21. package/dist/_virtual/enc-utf16.mjs +5 -0
  22. package/dist/_virtual/enc-utf16.mjs.map +1 -0
  23. package/dist/_virtual/evpkdf.mjs +5 -0
  24. package/dist/_virtual/evpkdf.mjs.map +1 -0
  25. package/dist/_virtual/format-hex.mjs +5 -0
  26. package/dist/_virtual/format-hex.mjs.map +1 -0
  27. package/dist/_virtual/hmac.mjs +5 -0
  28. package/dist/_virtual/hmac.mjs.map +1 -0
  29. package/dist/_virtual/index.mjs +8 -0
  30. package/dist/_virtual/index.mjs.map +1 -0
  31. package/dist/_virtual/index2.mjs +5 -0
  32. package/dist/_virtual/index2.mjs.map +1 -0
  33. package/dist/_virtual/lib-typedarrays.mjs +5 -0
  34. package/dist/_virtual/lib-typedarrays.mjs.map +1 -0
  35. package/dist/_virtual/md5.mjs +5 -0
  36. package/dist/_virtual/md5.mjs.map +1 -0
  37. package/dist/_virtual/mode-cfb.mjs +5 -0
  38. package/dist/_virtual/mode-cfb.mjs.map +1 -0
  39. package/dist/_virtual/mode-ctr-gladman.mjs +5 -0
  40. package/dist/_virtual/mode-ctr-gladman.mjs.map +1 -0
  41. package/dist/_virtual/mode-ctr.mjs +5 -0
  42. package/dist/_virtual/mode-ctr.mjs.map +1 -0
  43. package/dist/_virtual/mode-ecb.mjs +5 -0
  44. package/dist/_virtual/mode-ecb.mjs.map +1 -0
  45. package/dist/_virtual/mode-ofb.mjs +5 -0
  46. package/dist/_virtual/mode-ofb.mjs.map +1 -0
  47. package/dist/_virtual/pad-ansix923.mjs +5 -0
  48. package/dist/_virtual/pad-ansix923.mjs.map +1 -0
  49. package/dist/_virtual/pad-iso10126.mjs +5 -0
  50. package/dist/_virtual/pad-iso10126.mjs.map +1 -0
  51. package/dist/_virtual/pad-iso97971.mjs +5 -0
  52. package/dist/_virtual/pad-iso97971.mjs.map +1 -0
  53. package/dist/_virtual/pad-nopadding.mjs +5 -0
  54. package/dist/_virtual/pad-nopadding.mjs.map +1 -0
  55. package/dist/_virtual/pad-zeropadding.mjs +5 -0
  56. package/dist/_virtual/pad-zeropadding.mjs.map +1 -0
  57. package/dist/_virtual/pbkdf2.mjs +5 -0
  58. package/dist/_virtual/pbkdf2.mjs.map +1 -0
  59. package/dist/_virtual/rabbit-legacy.mjs +5 -0
  60. package/dist/_virtual/rabbit-legacy.mjs.map +1 -0
  61. package/dist/_virtual/rabbit.mjs +5 -0
  62. package/dist/_virtual/rabbit.mjs.map +1 -0
  63. package/dist/_virtual/rc4.mjs +5 -0
  64. package/dist/_virtual/rc4.mjs.map +1 -0
  65. package/dist/_virtual/ripemd160.mjs +5 -0
  66. package/dist/_virtual/ripemd160.mjs.map +1 -0
  67. package/dist/_virtual/sha1.mjs +5 -0
  68. package/dist/_virtual/sha1.mjs.map +1 -0
  69. package/dist/_virtual/sha224.mjs +5 -0
  70. package/dist/_virtual/sha224.mjs.map +1 -0
  71. package/dist/_virtual/sha256.mjs +5 -0
  72. package/dist/_virtual/sha256.mjs.map +1 -0
  73. package/dist/_virtual/sha3.mjs +5 -0
  74. package/dist/_virtual/sha3.mjs.map +1 -0
  75. package/dist/_virtual/sha384.mjs +5 -0
  76. package/dist/_virtual/sha384.mjs.map +1 -0
  77. package/dist/_virtual/sha512.mjs +5 -0
  78. package/dist/_virtual/sha512.mjs.map +1 -0
  79. package/dist/_virtual/tripledes.mjs +5 -0
  80. package/dist/_virtual/tripledes.mjs.map +1 -0
  81. package/dist/_virtual/x64-core.mjs +5 -0
  82. package/dist/_virtual/x64-core.mjs.map +1 -0
  83. package/dist/directive/index.d.ts +1 -0
  84. package/dist/directive/resize.d.ts +19 -0
  85. package/dist/directive/resize.mjs +42 -0
  86. package/dist/directive/resize.mjs.map +1 -0
  87. package/dist/hooks/index.d.ts +8 -0
  88. package/dist/hooks/useActivated.d.ts +3 -0
  89. package/dist/hooks/useActivated.mjs +17 -0
  90. package/dist/hooks/useActivated.mjs.map +1 -0
  91. package/dist/hooks/useAutoFocus.d.ts +3 -0
  92. package/dist/hooks/useAutoFocus.mjs +20 -0
  93. package/dist/hooks/useAutoFocus.mjs.map +1 -0
  94. package/dist/hooks/useCsl.d.ts +13 -0
  95. package/dist/hooks/useCsl.mjs +43 -0
  96. package/dist/hooks/useCsl.mjs.map +1 -0
  97. package/dist/hooks/useDoubleClick.d.ts +7 -0
  98. package/dist/hooks/useDoubleClick.mjs +41 -0
  99. package/dist/hooks/useDoubleClick.mjs.map +1 -0
  100. package/dist/hooks/useProxy.d.ts +1 -0
  101. package/dist/hooks/useProxy.mjs +12 -0
  102. package/dist/hooks/useProxy.mjs.map +1 -0
  103. package/dist/hooks/useService/index.d.ts +3 -0
  104. package/dist/hooks/useService/loadMore.d.ts +2 -0
  105. package/dist/hooks/useService/loadMore.mjs +133 -0
  106. package/dist/hooks/useService/loadMore.mjs.map +1 -0
  107. package/dist/hooks/useService/pagination.d.ts +2 -0
  108. package/dist/hooks/useService/pagination.mjs +167 -0
  109. package/dist/hooks/useService/pagination.mjs.map +1 -0
  110. package/dist/hooks/useService/types.d.ts +56 -0
  111. package/dist/hooks/useTimer.d.ts +22 -0
  112. package/dist/hooks/useTimer.mjs +31 -0
  113. package/dist/hooks/useTimer.mjs.map +1 -0
  114. package/dist/hooks/useTplRefsList.d.ts +5 -0
  115. package/dist/hooks/useTplRefsList.mjs +18 -0
  116. package/dist/hooks/useTplRefsList.mjs.map +1 -0
  117. package/dist/index.d.ts +3 -0
  118. package/dist/index.mjs +105 -0
  119. package/dist/index.mjs.map +1 -0
  120. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.mjs +163 -0
  121. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.mjs.map +1 -0
  122. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/blowfish.mjs +1198 -0
  123. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/blowfish.mjs.map +1 -0
  124. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/cipher-core.mjs +650 -0
  125. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/cipher-core.mjs.map +1 -0
  126. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/core.mjs +615 -0
  127. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/core.mjs.map +1 -0
  128. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64.mjs +113 -0
  129. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64.mjs.map +1 -0
  130. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64url.mjs +124 -0
  131. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64url.mjs.map +1 -0
  132. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf16.mjs +123 -0
  133. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf16.mjs.map +1 -0
  134. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/evpkdf.mjs +98 -0
  135. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/evpkdf.mjs.map +1 -0
  136. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/format-hex.mjs +66 -0
  137. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/format-hex.mjs.map +1 -0
  138. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/hmac.mjs +112 -0
  139. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/hmac.mjs.map +1 -0
  140. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.mjs +56 -0
  141. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.mjs.map +1 -0
  142. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/lib-typedarrays.mjs +50 -0
  143. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/lib-typedarrays.mjs.map +1 -0
  144. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/md5.mjs +184 -0
  145. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/md5.mjs.map +1 -0
  146. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-cfb.mjs +58 -0
  147. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-cfb.mjs.map +1 -0
  148. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr-gladman.mjs +81 -0
  149. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr-gladman.mjs.map +1 -0
  150. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr.mjs +46 -0
  151. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr.mjs.map +1 -0
  152. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.mjs +37 -0
  153. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.mjs.map +1 -0
  154. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ofb.mjs +44 -0
  155. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ofb.mjs.map +1 -0
  156. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-ansix923.mjs +38 -0
  157. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-ansix923.mjs.map +1 -0
  158. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso10126.mjs +34 -0
  159. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso10126.mjs.map +1 -0
  160. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso97971.mjs +33 -0
  161. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso97971.mjs.map +1 -0
  162. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-nopadding.mjs +29 -0
  163. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-nopadding.mjs.map +1 -0
  164. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-zeropadding.mjs +40 -0
  165. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-zeropadding.mjs.map +1 -0
  166. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pbkdf2.mjs +105 -0
  167. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pbkdf2.mjs.map +1 -0
  168. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit-legacy.mjs +135 -0
  169. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit-legacy.mjs.map +1 -0
  170. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit.mjs +138 -0
  171. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit.mjs.map +1 -0
  172. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rc4.mjs +92 -0
  173. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rc4.mjs.map +1 -0
  174. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/ripemd160.mjs +476 -0
  175. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/ripemd160.mjs.map +1 -0
  176. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha1.mjs +96 -0
  177. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha1.mjs.map +1 -0
  178. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha224.mjs +51 -0
  179. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha224.mjs.map +1 -0
  180. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha256.mjs +126 -0
  181. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha256.mjs.map +1 -0
  182. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha3.mjs +208 -0
  183. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha3.mjs.map +1 -0
  184. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha384.mjs +53 -0
  185. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha384.mjs.map +1 -0
  186. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha512.mjs +288 -0
  187. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha512.mjs.map +1 -0
  188. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/tripledes.mjs +790 -0
  189. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/tripledes.mjs.map +1 -0
  190. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/x64-core.mjs +262 -0
  191. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/x64-core.mjs.map +1 -0
  192. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/JSEncrypt.mjs +123 -0
  193. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/JSEncrypt.mjs.map +1 -0
  194. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/JSEncryptRSAKey.mjs +182 -0
  195. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/JSEncryptRSAKey.mjs.map +1 -0
  196. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/index.mjs +6 -0
  197. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/index.mjs.map +1 -0
  198. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/asn1.mjs +541 -0
  199. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/asn1.mjs.map +1 -0
  200. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/base64.mjs +75 -0
  201. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/base64.mjs.map +1 -0
  202. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/hex.mjs +53 -0
  203. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/hex.mjs.map +1 -0
  204. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/int10.mjs +75 -0
  205. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/int10.mjs.map +1 -0
  206. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/base64.mjs +65 -0
  207. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/base64.mjs.map +1 -0
  208. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/jsbn.mjs +1487 -0
  209. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/jsbn.mjs.map +1 -0
  210. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/prng4.mjs +47 -0
  211. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/prng4.mjs.map +1 -0
  212. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/rng.mjs +73 -0
  213. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/rng.mjs.map +1 -0
  214. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/rsa.mjs +357 -0
  215. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/rsa.mjs.map +1 -0
  216. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/sha256.mjs +104 -0
  217. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/sha256.mjs.map +1 -0
  218. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/util.mjs +60 -0
  219. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/util.mjs.map +1 -0
  220. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsrsasign/asn1-1.0.mjs +746 -0
  221. package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsrsasign/asn1-1.0.mjs.map +1 -0
  222. package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/regular/jsonrepair.mjs +567 -0
  223. package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/regular/jsonrepair.mjs.map +1 -0
  224. package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/JSONRepairError.mjs +10 -0
  225. package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/JSONRepairError.mjs.map +1 -0
  226. package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/stringUtils.mjs +114 -0
  227. package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/stringUtils.mjs.map +1 -0
  228. package/dist/node_modules/.pnpm/vue-request@2.0.4_vue@3.5.26_typescript@5.9.3_/node_modules/vue-request/dist/index.es.mjs +1183 -0
  229. package/dist/node_modules/.pnpm/vue-request@2.0.4_vue@3.5.26_typescript@5.9.3_/node_modules/vue-request/dist/index.es.mjs.map +1 -0
  230. package/dist/utils/calc.d.ts +5 -0
  231. package/dist/utils/calc.mjs +54 -0
  232. package/dist/utils/calc.mjs.map +1 -0
  233. package/dist/utils/common.d.ts +48 -0
  234. package/dist/utils/common.mjs +125 -0
  235. package/dist/utils/common.mjs.map +1 -0
  236. package/dist/utils/conversion.d.ts +12 -0
  237. package/dist/utils/conversion.mjs +59 -0
  238. package/dist/utils/conversion.mjs.map +1 -0
  239. package/dist/utils/crypto.d.ts +7 -0
  240. package/dist/utils/crypto.mjs +39 -0
  241. package/dist/utils/crypto.mjs.map +1 -0
  242. package/dist/utils/dom.d.ts +4 -0
  243. package/dist/utils/dom.mjs +29 -0
  244. package/dist/utils/dom.mjs.map +1 -0
  245. package/dist/utils/download.d.ts +1 -0
  246. package/dist/utils/download.mjs +20 -0
  247. package/dist/utils/download.mjs.map +1 -0
  248. package/dist/utils/file.d.ts +7 -0
  249. package/dist/utils/file.mjs +48 -0
  250. package/dist/utils/file.mjs.map +1 -0
  251. package/dist/utils/glob.d.ts +1 -0
  252. package/dist/utils/glob.mjs +16 -0
  253. package/dist/utils/glob.mjs.map +1 -0
  254. package/dist/utils/index.d.ts +15 -0
  255. package/dist/utils/jsencrypt.d.ts +2 -0
  256. package/dist/utils/jsencrypt.mjs +16 -0
  257. package/dist/utils/jsencrypt.mjs.map +1 -0
  258. package/dist/utils/json.d.ts +3 -0
  259. package/dist/utils/json.mjs +24 -0
  260. package/dist/utils/json.mjs.map +1 -0
  261. package/dist/utils/platformInfo.d.ts +16 -0
  262. package/dist/utils/promise.d.ts +7 -0
  263. package/dist/utils/promise.mjs +38 -0
  264. package/dist/utils/promise.mjs.map +1 -0
  265. package/dist/utils/str.d.ts +8 -0
  266. package/dist/utils/str.mjs +78 -0
  267. package/dist/utils/str.mjs.map +1 -0
  268. package/dist/utils/type.d.ts +6 -0
  269. package/dist/utils/type.mjs +21 -0
  270. package/dist/utils/type.mjs.map +1 -0
  271. package/dist/utils/url.d.ts +4 -0
  272. package/dist/utils/url.mjs +75 -0
  273. package/dist/utils/url.mjs.map +1 -0
  274. package/dist/utils/validator.d.ts +14 -0
  275. package/dist/utils/validator.mjs +51 -0
  276. package/dist/utils/validator.mjs.map +1 -0
  277. package/dist/utils/vitePlugin.d.ts +8 -0
  278. package/dist/vite/qidian-vite-plugin.cjs.js +68 -0
  279. package/dist/vite/qidian-vite-plugin.cjs.js.map +1 -0
  280. package/dist/vite/qidian-vite-plugin.es.js +68 -0
  281. package/dist/vite/qidian-vite-plugin.es.js.map +1 -0
  282. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.mjs","sources":["../../../../../../../../../node_modules/.pnpm/vue-request@2.0.4_vue@3.5.26_typescript@5.9.3_/node_modules/vue-request/dist/index.es.js"],"sourcesContent":["import { isRef, ref, computed, watchEffect, watch, shallowRef, inject, onUnmounted, provide } from 'vue-demi';\n\nconst GLOBAL_OPTIONS = {};\nconst GLOBAL_OPTIONS_PROVIDE_KEY = Symbol('GLOBAL_OPTIONS_PROVIDE_KEY');\nconst setGlobalOptions = config => {\n Object.keys(config).forEach(key => {\n GLOBAL_OPTIONS[key] = config[key];\n });\n};\nconst getGlobalOptions = () => {\n return GLOBAL_OPTIONS;\n};\n\nconst definePlugin = options => {\n return options;\n};\n\nconst objectToString = Object.prototype.toString;\nconst toTypeString = val => objectToString.call(val);\nconst isPlainObject = val => toTypeString(val) === '[object Object]';\nconst isArray = val => Array.isArray(val);\nconst isObject = val => val !== null && typeof val === 'object';\nconst isFunction = fn => fn instanceof Function;\nconst isNil = val => val === null || val === undefined;\nconst isServer = typeof window === 'undefined';\nconst isDocumentVisibility = () => {\n var _window$document;\n if (isServer || isNil((_window$document = window.document) === null || _window$document === void 0 ? void 0 : _window$document.visibilityState)) return true;\n return window.document.visibilityState === 'visible';\n};\nconst isOnline = () => {\n var _ref, _window$navigator;\n return (_ref = !isServer && ((_window$navigator = window.navigator) === null || _window$navigator === void 0 ? void 0 : _window$navigator.onLine)) !== null && _ref !== void 0 ? _ref : true;\n};\nconst resolvedPromise = () => new Promise(() => {});\nconst get = function (source, path) {\n let defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n // a[3].b -> a.3.b\n const paths = path.replace(/\\[(\\d+)\\]/g, '.$1').split('.');\n let result = source;\n for (const p of paths) {\n result = Object(result)[p];\n if (result === undefined) {\n return defaultValue;\n }\n }\n return result;\n};\nfunction omit(object, keys) {\n const result = Object.assign({}, object);\n for (const key of keys) {\n delete result[key];\n }\n return result;\n}\nconst warning = function (message) {\n let throwError = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const msg = `Warning: [vue-request] ${message}`;\n if (throwError) {\n return new Error(msg);\n } else {\n console.error(msg);\n }\n};\nconst refToRaw = value => {\n return isRef(value) ? value.value : value;\n};\nconst shallowCopy = value => {\n if (isObject(value)) {\n return Object.assign(isArray(value) ? [] : {}, value);\n } else {\n return value;\n }\n};\n\nconst CACHE_MAP = new Map();\nconst getCache = cacheKey => {\n if (isNil(cacheKey)) return;\n const data = CACHE_MAP.get(cacheKey);\n return data;\n};\nconst setCache = (cacheKey, cacheTime, data) => {\n const oldCache = CACHE_MAP.get(cacheKey);\n if (oldCache !== null && oldCache !== void 0 && oldCache.timer) {\n clearTimeout(oldCache.timer);\n }\n const timer = setTimeout(() => CACHE_MAP.delete(cacheKey), cacheTime);\n CACHE_MAP.set(cacheKey, {\n ...data,\n timer\n });\n};\nconst clearCache = cacheKey => {\n if (cacheKey) {\n var _CACHE_MAP$get;\n const timer = (_CACHE_MAP$get = CACHE_MAP.get(cacheKey)) === null || _CACHE_MAP$get === void 0 ? void 0 : _CACHE_MAP$get.timer;\n timer && clearTimeout(timer);\n CACHE_MAP.delete(cacheKey);\n } else {\n // clear timer\n CACHE_MAP.forEach(i => i.timer && clearTimeout(i.timer));\n CACHE_MAP.clear();\n }\n};\n\n/**\r\n * source by `lodash`\r\n * https://github.com/lodash/lodash.git\r\n */\nfunction debounce(func, wait, options) {\n let lastArgs, lastThis, maxWait, result, timerId, lastCallTime;\n let lastInvokeTime = 0;\n let leading = false;\n let maxing = false;\n let trailing = true;\n // Bypass `requestAnimationFrame` by explicitly setting `wait=0`.\n const useRAF = !wait && wait !== 0 && typeof window.requestAnimationFrame === 'function';\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function');\n }\n wait = +wait || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? Math.max(+options.maxWait || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n const args = lastArgs;\n const thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function startTimer(pendingFunc, wait) {\n if (useRAF) {\n window.cancelAnimationFrame(timerId);\n return window.requestAnimationFrame(pendingFunc);\n }\n return setTimeout(pendingFunc, wait);\n }\n function cancelTimer(id) {\n if (useRAF) {\n return window.cancelAnimationFrame(id);\n }\n clearTimeout(id);\n }\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = startTimer(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n const timeSinceLastCall = time - lastCallTime;\n const timeSinceLastInvoke = time - lastInvokeTime;\n const timeWaiting = wait - timeSinceLastCall;\n return maxing ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n }\n function shouldInvoke(time) {\n const timeSinceLastCall = time - lastCallTime;\n const timeSinceLastInvoke = time - lastInvokeTime;\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n const time = Date.now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = startTimer(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = undefined;\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n function cancel() {\n if (timerId !== undefined) {\n cancelTimer(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n function flush() {\n return timerId === undefined ? result : trailingEdge(Date.now());\n }\n function pending() {\n return timerId !== undefined;\n }\n function debounced() {\n const time = Date.now();\n const isInvoking = shouldInvoke(time);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n lastArgs = args;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = startTimer(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = startTimer(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n debounced.pending = pending;\n return debounced;\n}\n\nfunction baseMerge(origin, target) {\n for (const key in target) {\n if (target[key] === undefined) {\n continue;\n }\n if (!isObject(target[key]) ||\n // `target[key]` is not an object\n !isObject(origin[key]) ||\n // `target[key]` is not an object\n !(key in origin) // `key` is not in the origin object\n ) {\n origin[key] = target[key];\n continue;\n }\n if (isPlainObject(target[key]) || isArray(target[key])) {\n baseMerge(origin[key], target[key]);\n }\n }\n}\nfunction merge(origin) {\n const result = Object.assign({}, origin);\n for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n others[_key - 1] = arguments[_key];\n }\n if (!others.length) return result;\n for (const item of others) {\n baseMerge(result, item);\n }\n return result;\n}\n\n/**\r\n * source by `lodash`\r\n * https://github.com/lodash/lodash.git\r\n */\nfunction throttle(func, wait, options) {\n let leading = true;\n let trailing = true;\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function');\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n leading,\n trailing,\n maxWait: wait\n });\n}\n\nvar useDebouncePlugin = definePlugin((queryInstance, _ref) => {\n let {\n debounceInterval,\n debounceOptions,\n manual\n } = _ref;\n const initialAutoRunFlag = ref(false);\n const debouncedRun = ref();\n const debounceOptionsRef = computed(() => debounceOptions);\n const debounceIntervalRef = computed(() => refToRaw(debounceInterval));\n const originRunRef = ref(queryInstance.context.runAsync);\n if (!manual) {\n initialAutoRunFlag.value = true;\n }\n watchEffect(onInvalidate => {\n if (isNil(debounceIntervalRef.value)) return;\n debouncedRun.value = debounce(callback => callback(), debounceIntervalRef.value, debounceOptionsRef.value);\n queryInstance.context.runAsync = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new Promise((resolve, reject) => {\n if (initialAutoRunFlag.value) {\n initialAutoRunFlag.value = false;\n originRunRef.value(...args).then(resolve).catch(reject);\n } else {\n debouncedRun.value(() => {\n originRunRef.value(...args).then(resolve).catch(reject);\n });\n }\n });\n };\n onInvalidate(() => {\n var _debouncedRun$value;\n (_debouncedRun$value = debouncedRun.value) === null || _debouncedRun$value === void 0 ? void 0 : _debouncedRun$value.cancel();\n queryInstance.context.runAsync = originRunRef.value;\n });\n });\n return {\n onCancel() {\n var _debouncedRun$value2;\n (_debouncedRun$value2 = debouncedRun.value) === null || _debouncedRun$value2 === void 0 ? void 0 : _debouncedRun$value2.cancel();\n }\n };\n});\n\nvar useErrorRetryPlugin = definePlugin((queryInstance, _ref) => {\n let {\n errorRetryCount = 0,\n errorRetryInterval = 0\n } = _ref;\n const retryTimer = ref();\n const retriedCount = ref(0);\n const errorRetryCountRef = computed(() => refToRaw(errorRetryCount));\n const errorRetryIntervalRef = computed(() => refToRaw(errorRetryInterval));\n let isRetrying = false;\n // reset retried count\n const resetRetriedCount = () => {\n retriedCount.value = 0;\n };\n const actualErrorRetryInterval = computed(() => {\n if (errorRetryIntervalRef.value) return errorRetryIntervalRef.value;\n const baseTime = 1000;\n const minCoefficient = 1;\n const maxCoefficient = 9;\n // When retrying for the first time, in order to avoid the coefficient being 0\n // so replace 0 with 2, the coefficient range will become 1 - 2\n const coefficient = Math.floor(Math.random() * 2 ** Math.min(retriedCount.value, maxCoefficient) + minCoefficient);\n return baseTime * coefficient;\n });\n const errorRetryHooks = () => {\n let timerId;\n const isInfiniteRetry = errorRetryCountRef.value === -1;\n const hasRetryCount = retriedCount.value < errorRetryCountRef.value;\n // if errorRetryCount is -1, it will retry the request until it success\n if (isInfiniteRetry || hasRetryCount) {\n if (!isInfiniteRetry) retriedCount.value += 1;\n timerId = setTimeout(() => {\n isRetrying = true;\n queryInstance.context.refresh();\n }, actualErrorRetryInterval.value);\n }\n return () => timerId && clearTimeout(timerId);\n };\n // clear retryTimer\n const clearTimer = () => {\n if (retryTimer.value) {\n retryTimer.value();\n }\n };\n return {\n onBefore() {\n if (!isRetrying) {\n resetRetriedCount();\n }\n isRetrying = false;\n clearTimer();\n },\n onSuccess() {\n resetRetriedCount();\n },\n onError() {\n retryTimer.value = errorRetryHooks();\n },\n onCancel() {\n // TODO: Whether to reset the count when `onCancel`\n resetRetriedCount();\n clearTimer();\n }\n };\n});\n\nvar useReadyPlugin = definePlugin((queryInstance, _ref) => {\n let {\n ready = ref(true),\n manual,\n defaultParams = []\n } = _ref;\n // watch ready\n watch(ready, val => {\n if (!manual && val) {\n queryInstance.context.run(...defaultParams);\n }\n }, {\n flush: 'sync'\n });\n return {\n onBefore() {\n const readyFlag = isFunction(ready) ? ready() : ready.value;\n if (!readyFlag) {\n queryInstance.loading.value = false;\n return {\n isBreak: true\n };\n }\n }\n };\n});\n\nvar useRefreshDepsPlugin = definePlugin((queryInstance, _ref) => {\n let {\n refreshDeps,\n refreshDepsAction,\n manual\n } = _ref;\n if (refreshDeps === undefined || isArray(refreshDeps) && refreshDeps.length === 0) return {};\n const deps = isArray(refreshDeps) ? refreshDeps : [refreshDeps];\n // watch refreshDeps\n watch(deps, () => {\n if (refreshDepsAction) {\n refreshDepsAction();\n } else {\n !manual && queryInstance.context.refresh();\n }\n });\n return {};\n});\n\nvar useThrottlePlugin = definePlugin((queryInstance, _ref) => {\n let {\n throttleInterval,\n throttleOptions\n } = _ref;\n const throttledRun = ref();\n const throttleIntervalRef = computed(() => refToRaw(throttleInterval));\n const throttleOptionsRef = computed(() => throttleOptions);\n const originRunRef = ref(queryInstance.context.runAsync);\n watchEffect(onInvalidate => {\n if (isNil(throttleInterval)) return {};\n throttledRun.value = throttle(callback => callback(), throttleIntervalRef.value, throttleOptionsRef.value);\n queryInstance.context.runAsync = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new Promise((resolve, reject) => {\n throttledRun.value(() => {\n originRunRef.value(...args).then(resolve).catch(reject);\n });\n });\n };\n onInvalidate(() => {\n var _throttledRun$value;\n (_throttledRun$value = throttledRun.value) === null || _throttledRun$value === void 0 ? void 0 : _throttledRun$value.cancel();\n queryInstance.context.runAsync = originRunRef.value;\n });\n });\n return {\n onCancel() {\n var _throttledRun$value2;\n (_throttledRun$value2 = throttledRun.value) === null || _throttledRun$value2 === void 0 ? void 0 : _throttledRun$value2.cancel();\n }\n };\n});\n\nconst setStateBind = (oldState, publicCb) => {\n return newState => {\n Object.keys(newState).forEach(key => {\n oldState[key].value = newState[key];\n });\n publicCb.forEach(fun => fun(oldState));\n };\n};\nconst composeMiddleware = (middleArray, hook) => {\n return () => {\n let next = hook;\n for (let i = middleArray.length; i-- > 0;) {\n next = middleArray[i](next);\n }\n return next();\n };\n};\nconst createQuery = (service, config, initialState) => {\n var _initialState$loading, _initialState$data;\n const {\n initialData,\n onSuccess,\n onError,\n onBefore,\n onAfter\n } = config;\n const loading = ref((_initialState$loading = initialState === null || initialState === void 0 ? void 0 : initialState.loading) !== null && _initialState$loading !== void 0 ? _initialState$loading : false);\n const data = shallowRef((_initialState$data = initialState === null || initialState === void 0 ? void 0 : initialState.data) !== null && _initialState$data !== void 0 ? _initialState$data : initialData);\n const error = shallowRef(initialState === null || initialState === void 0 ? void 0 : initialState.error);\n const params = ref(initialState === null || initialState === void 0 ? void 0 : initialState.params);\n const plugins = ref([]);\n const status = shallowRef('pending');\n const context = {};\n const setState = setStateBind({\n status,\n loading,\n data,\n error,\n params\n }, []);\n const emit = function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (event === 'onQuery') {\n const queryFn = plugins.value.map(i => i.onQuery).filter(Boolean);\n return {\n servicePromise: composeMiddleware(queryFn, args[0])()\n };\n } else {\n // @ts-ignore\n const res = plugins.value.map(i => {\n var _i$event;\n return (_i$event = i[event]) === null || _i$event === void 0 ? void 0 : _i$event.call(i, ...args);\n });\n return Object.assign({}, ...res);\n }\n };\n const count = ref(0);\n context.runAsync = async function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n setState({\n loading: true,\n params: args,\n status: 'pending'\n });\n count.value += 1;\n const currentCount = count.value;\n const {\n isBreak,\n breakResult = resolvedPromise()\n } = emit('onBefore', args);\n if (isBreak) {\n setState({\n status: 'settled'\n });\n return breakResult;\n }\n onBefore === null || onBefore === void 0 ? void 0 : onBefore(args);\n try {\n const serviceWrapper = () => new Promise(resolve => resolve(service(...params.value)));\n let {\n servicePromise\n } = emit('onQuery', serviceWrapper);\n /* istanbul ignore next */\n if (!servicePromise) {\n servicePromise = serviceWrapper();\n }\n const res = await servicePromise;\n if (currentCount !== count.value) return resolvedPromise();\n setState({\n data: res,\n loading: false,\n error: undefined,\n status: 'settled'\n });\n emit('onSuccess', res, args);\n onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(res, args);\n if (currentCount === count.value) {\n emit('onAfter', args, res, undefined);\n }\n onAfter === null || onAfter === void 0 ? void 0 : onAfter(args);\n return res;\n } catch (error) {\n if (currentCount !== count.value) return resolvedPromise();\n setState({\n loading: false,\n error: error,\n status: 'settled'\n });\n emit('onError', error, args);\n onError === null || onError === void 0 ? void 0 : onError(error, args);\n if (currentCount === count.value) {\n emit('onAfter', args, undefined, error);\n }\n onAfter === null || onAfter === void 0 ? void 0 : onAfter(args);\n throw error;\n }\n };\n context.run = function () {\n context.runAsync(...arguments).catch(error => {\n if (!onError) {\n console.error(error);\n }\n });\n };\n context.cancel = () => {\n count.value += 1;\n setState({\n loading: false\n });\n emit('onCancel');\n };\n context.refresh = () => {\n context.run(...(params.value || []));\n };\n context.refreshAsync = () => {\n return context.runAsync(...(params.value || []));\n };\n context.mutate = x => {\n const mutateData = isFunction(x) ? x(data.value) : x;\n const _mutateData = shallowCopy(mutateData);\n setState({\n data: _mutateData\n });\n emit('onMutate', _mutateData);\n };\n return {\n status,\n loading,\n data,\n error,\n params,\n plugins,\n context\n };\n};\n\nfunction useQuery(service) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let plugins = arguments.length > 2 ? arguments[2] : undefined;\n const injectedGlobalOptions = inject(GLOBAL_OPTIONS_PROVIDE_KEY, {});\n const config = {\n ...getGlobalOptions(),\n ...injectedGlobalOptions,\n ...options\n };\n const {\n manual = false,\n defaultParams = []\n } = config;\n const queryInstance = createQuery(service, config);\n queryInstance.plugins.value = plugins.map(i => i(queryInstance, config));\n // initial run\n if (!manual) {\n const params = queryInstance.params.value || defaultParams;\n queryInstance.context.run(...params);\n }\n onUnmounted(() => {\n queryInstance.context.cancel();\n });\n return {\n loading: queryInstance.loading,\n data: queryInstance.data,\n error: queryInstance.error,\n params: queryInstance.params,\n cancel: queryInstance.context.cancel,\n refresh: queryInstance.context.refresh,\n refreshAsync: queryInstance.context.refreshAsync,\n mutate: queryInstance.context.mutate,\n run: queryInstance.context.run,\n runAsync: queryInstance.context.runAsync\n };\n}\n\nfunction useLoadMore(service, options) {\n const {\n isNoMore,\n ...restOptions\n } = options !== null && options !== void 0 ? options : {};\n const data = shallowRef();\n const dataList = computed(() => {\n var _data$value;\n return ((_data$value = data.value) === null || _data$value === void 0 ? void 0 : _data$value.list) || [];\n });\n const loadingMore = ref(false);\n const isTriggerByLoadMore = ref(false);\n const count = ref(0);\n const {\n runAsync,\n run,\n cancel: _cancel,\n ...rest\n } = useQuery(async lastData => {\n const currentCount = count.value;\n const currentData = await service(lastData);\n if (currentCount === count.value) {\n if (lastData) {\n data.value = {\n ...currentData,\n list: [...lastData.list, ...currentData.list]\n };\n } else {\n data.value = currentData;\n }\n }\n return currentData;\n }, {\n ...restOptions,\n defaultParams: [],\n refreshDepsAction: () => {\n if (restOptions !== null && restOptions !== void 0 && restOptions.refreshDepsAction) {\n restOptions.refreshDepsAction();\n } else {\n refresh();\n }\n },\n onError: error => {\n var _restOptions$onError;\n restOptions === null || restOptions === void 0 ? void 0 : (_restOptions$onError = restOptions.onError) === null || _restOptions$onError === void 0 ? void 0 : _restOptions$onError.call(restOptions, error);\n },\n onSuccess: data => {\n var _restOptions$onSucces;\n restOptions === null || restOptions === void 0 ? void 0 : (_restOptions$onSucces = restOptions.onSuccess) === null || _restOptions$onSucces === void 0 ? void 0 : _restOptions$onSucces.call(restOptions, data);\n },\n onBefore: () => {\n var _restOptions$onBefore;\n count.value += 1;\n if (isTriggerByLoadMore.value) {\n isTriggerByLoadMore.value = false;\n loadingMore.value = true;\n }\n restOptions === null || restOptions === void 0 ? void 0 : (_restOptions$onBefore = restOptions.onBefore) === null || _restOptions$onBefore === void 0 ? void 0 : _restOptions$onBefore.call(restOptions);\n },\n onAfter: () => {\n var _restOptions$onAfter;\n loadingMore.value = false;\n isTriggerByLoadMore.value = false;\n restOptions === null || restOptions === void 0 ? void 0 : (_restOptions$onAfter = restOptions.onAfter) === null || _restOptions$onAfter === void 0 ? void 0 : _restOptions$onAfter.call(restOptions);\n }\n }, [useErrorRetryPlugin, useDebouncePlugin, useThrottlePlugin, useRefreshDepsPlugin, useReadyPlugin]);\n const noMore = computed(() => {\n return isNoMore && isFunction(isNoMore) ? isNoMore(data.value) : false;\n });\n const loadMore = () => {\n loadMoreAsync().catch(() => {});\n };\n const loadMoreAsync = () => {\n if (noMore.value) {\n return Promise.reject(warning('No more data. You need to ignore this error by checking if `noMore` is false before calling `loadMoreAsync`', true));\n }\n isTriggerByLoadMore.value = true;\n return runAsync(data.value);\n };\n const refresh = () => run();\n const refreshAsync = () => runAsync();\n const cancel = () => {\n count.value += 1;\n _cancel();\n loadingMore.value = false;\n };\n const mutate = x => {\n const mutateData = isFunction(x) ? x(data.value) : x;\n const _mutateData = shallowCopy(mutateData);\n data.value = _mutateData;\n };\n return {\n data,\n dataList,\n loadingMore,\n noMore,\n cancel,\n mutate,\n refresh,\n refreshAsync,\n loadMore,\n loadMoreAsync,\n ...omit(rest, ['refresh', 'refreshAsync', 'mutate', 'params', 'data'])\n };\n}\n\nconst cacheQuery = new Map();\nconst setCacheQuery = (cacheKey, query) => {\n cacheQuery.set(cacheKey, query);\n query.then(res => {\n cacheQuery.delete(cacheKey);\n return res;\n }).catch(() => {\n cacheQuery.delete(cacheKey);\n });\n};\nconst getCacheQuery = cacheKey => {\n return cacheQuery.get(cacheKey);\n};\n\nconst listeners = new Map();\nconst trigger = (key, data) => {\n if (listeners.has(key)) {\n listeners.get(key).forEach(item => item(data));\n }\n};\nconst subscribe = (key, listener) => {\n if (!listeners.has(key)) {\n listeners.set(key, [listener]);\n } else {\n listeners.get(key).push(listener);\n }\n return () => {\n const index = listeners.get(key).indexOf(listener);\n listeners.get(key).splice(index, 1);\n };\n};\n\nvar useCachePlugin = definePlugin((queryInstance, _ref) => {\n let {\n cacheKey: customCacheKey,\n cacheTime = 600000,\n staleTime = 0,\n getCache: customGetCache,\n setCache: customSetCache\n } = _ref;\n if (!customCacheKey) return {};\n const cacheKey = isFunction(customCacheKey) ? customCacheKey : () => customCacheKey;\n const unSubscribe = ref(() => {});\n let currentQuery;\n const _getCache = key => {\n if (customGetCache) {\n return customGetCache(key);\n } else {\n return getCache(key);\n }\n };\n const _setCache = (key, time, cacheData) => {\n if (customSetCache) {\n customSetCache(key, cacheData);\n } else {\n setCache(key, time, cacheData);\n }\n trigger(key, cacheData.data);\n };\n const isFresh = time => staleTime === -1 || time + staleTime > new Date().getTime();\n // Returns a boolean indicating whether the object has the specified property as its own property\n // (as opposed to inheriting it)\n const hasProp = (object, prop) => Object.prototype.hasOwnProperty.call(object, prop);\n const subscribeCache = params => {\n const _cacheKey = cacheKey(params);\n return subscribe(_cacheKey, data => {\n queryInstance.data.value = data;\n });\n };\n // When initializing, restore if there is a cache\n const _cacheKey = cacheKey();\n const cache = _getCache(_cacheKey);\n if (cache && hasProp(cache, 'data')) {\n queryInstance.data.value = cache.data;\n queryInstance.params.value = cache.params;\n }\n if (_cacheKey) {\n unSubscribe.value = subscribeCache();\n }\n onUnmounted(() => {\n unSubscribe.value();\n });\n return {\n onBefore(params) {\n const _cacheKey = cacheKey(params);\n const cache = _getCache(_cacheKey);\n if (!cache || !hasProp(cache, 'data')) {\n return {};\n }\n // If it's fresh, stop the request\n if (isFresh(cache.time)) {\n queryInstance.data.value = cache.data;\n queryInstance.loading.value = false;\n return {\n isBreak: true,\n breakResult: cache.data\n };\n } else {\n // If it is not fresh, set data and request\n queryInstance.data.value = cache.data;\n }\n },\n onQuery(service) {\n const params = queryInstance.params.value;\n const _cacheKey = cacheKey(params);\n let servicePromise = getCacheQuery(_cacheKey);\n if (servicePromise && servicePromise !== currentQuery) {\n return () => servicePromise;\n }\n servicePromise = service();\n currentQuery = servicePromise;\n setCacheQuery(_cacheKey, servicePromise);\n return () => servicePromise;\n },\n onSuccess(data, params) {\n const _cacheKey = cacheKey(params);\n if (_cacheKey) {\n unSubscribe.value();\n _setCache(_cacheKey, cacheTime, {\n data,\n params,\n time: new Date().getTime()\n });\n unSubscribe.value = subscribeCache(params);\n }\n },\n onMutate(data) {\n const _cacheKey = cacheKey(queryInstance.params.value);\n if (_cacheKey) {\n unSubscribe.value();\n _setCache(_cacheKey, cacheTime, {\n data,\n params: queryInstance.params.value,\n time: new Date().getTime()\n });\n unSubscribe.value = subscribeCache(queryInstance.params.value);\n }\n }\n };\n});\n\nfunction setTimeoutPromise(duration) {\n let timerId, stop;\n class Timer extends Promise {\n constructor(fn) {\n super(fn);\n this.cancel = () => {\n stop();\n clearTimeout(timerId);\n };\n }\n }\n return new Timer(resolve => {\n stop = resolve;\n timerId = setTimeout(stop, duration);\n });\n}\nfunction getCurrentTime() {\n return new Date().getTime();\n}\nvar useLoadingDelayPlugin = definePlugin((queryInstance, _ref) => {\n let {\n loadingDelay = 0,\n loadingKeep = 0\n } = _ref;\n const delayLoadingTimer = ref(() => {});\n const loadingDelayRef = computed(() => refToRaw(loadingDelay));\n const loadingKeepRef = computed(() => refToRaw(loadingKeep));\n let startTime = 0;\n let timeoutPromise = {};\n const delayLoading = () => {\n let timerId;\n if (loadingDelayRef.value) {\n timerId = setTimeout(() => {\n if (queryInstance.status.value === 'pending') {\n queryInstance.loading.value = true;\n }\n }, loadingDelayRef.value);\n }\n return () => timerId && clearTimeout(timerId);\n };\n return {\n onBefore() {\n queryInstance.loading.value = !loadingDelayRef.value;\n delayLoadingTimer.value();\n delayLoadingTimer.value = delayLoading();\n startTime = getCurrentTime();\n },\n onQuery(service) {\n if (!loadingKeepRef.value) return () => service();\n timeoutPromise = setTimeoutPromise(loadingKeepRef.value + loadingDelayRef.value);\n const _service = async () => {\n try {\n const res = await service();\n if (getCurrentTime() - startTime <= loadingDelayRef.value) {\n timeoutPromise.cancel();\n }\n return Promise.resolve(res);\n } catch (error) {\n if (getCurrentTime() - startTime <= loadingDelayRef.value) {\n timeoutPromise.cancel();\n }\n return Promise.reject(error);\n }\n };\n const servicePromise = Promise.allSettled([_service(), timeoutPromise]).then(res => {\n const result = res[0];\n if (result.status === 'fulfilled') {\n return result.value;\n } else {\n return Promise.reject(result.reason);\n }\n });\n return () => servicePromise;\n },\n onCancel() {\n delayLoadingTimer.value();\n },\n onAfter() {\n delayLoadingTimer.value();\n }\n };\n});\n\nvar _window;\nconst FOCUS_LISTENER = new Set();\nconst VISIBLE_LISTENER = new Set();\nconst RECONNECT_LISTENER = new Set();\nconst subscriber = (listenerType, event) => {\n let listeners;\n switch (listenerType) {\n case 'FOCUS_LISTENER':\n listeners = FOCUS_LISTENER;\n break;\n case 'RECONNECT_LISTENER':\n listeners = RECONNECT_LISTENER;\n break;\n case 'VISIBLE_LISTENER':\n listeners = VISIBLE_LISTENER;\n break;\n }\n if (listeners.has(event)) return;\n listeners.add(event);\n return () => {\n listeners.delete(event);\n };\n};\nconst observer = listeners => {\n listeners.forEach(event => {\n event();\n });\n};\n/* istanbul ignore else */\nif (!isServer && (_window = window) !== null && _window !== void 0 && _window.addEventListener) {\n window.addEventListener('visibilitychange', () => {\n /* istanbul ignore else */\n if (isDocumentVisibility()) {\n observer(VISIBLE_LISTENER);\n }\n }, false);\n window.addEventListener('focus', () => observer(FOCUS_LISTENER), false);\n window.addEventListener('online', () => observer(RECONNECT_LISTENER), false);\n}\n\nvar usePollingPlugin = definePlugin((queryInstance, _ref) => {\n let {\n pollingInterval,\n pollingWhenHidden = false,\n pollingWhenOffline = false,\n errorRetryCount = 0\n } = _ref;\n const pollingTimer = ref();\n const stopPollingWhenHiddenOrOffline = ref(false);\n const pollingIntervalRef = computed(() => refToRaw(pollingInterval));\n const errorRetryCountRef = computed(() => refToRaw(errorRetryCount));\n const unsubscribeList = [];\n const addUnsubscribeList = event => {\n event && unsubscribeList.push(event);\n };\n const isKeepPolling = () => {\n return (\n // pollingWhenHidden = true or pollingWhenHidden = false and document is visibility\n (pollingWhenHidden || isDocumentVisibility()) && (\n // pollingWhenOffline = true or pollingWhenOffline = false and is online\n pollingWhenOffline || isOnline())\n );\n };\n const polling = pollingFunc => {\n // if errorRetry is enabled, then skip this method\n if (queryInstance.error.value && errorRetryCountRef.value !== 0) return;\n let timerId;\n if (!isNil(pollingIntervalRef.value) && pollingIntervalRef.value >= 0) {\n if (isKeepPolling()) {\n timerId = setTimeout(pollingFunc, pollingIntervalRef.value);\n } else {\n // stop polling\n stopPollingWhenHiddenOrOffline.value = true;\n return;\n }\n }\n return () => timerId && clearTimeout(timerId);\n };\n const rePolling = () => {\n if (stopPollingWhenHiddenOrOffline.value && isKeepPolling()) {\n queryInstance.context.refresh();\n stopPollingWhenHiddenOrOffline.value = false;\n }\n };\n watch(pollingIntervalRef, () => {\n if (pollingTimer.value) {\n pollingTimer.value();\n pollingTimer.value = polling(() => queryInstance.context.refresh());\n }\n });\n // subscribe polling\n if (!pollingWhenHidden) {\n addUnsubscribeList(subscriber('VISIBLE_LISTENER', rePolling));\n }\n // subscribe online when pollingWhenOffline is false\n if (!pollingWhenOffline) {\n addUnsubscribeList(subscriber('RECONNECT_LISTENER', rePolling));\n }\n onUnmounted(() => {\n unsubscribeList.forEach(unsubscribe => unsubscribe());\n });\n return {\n onBefore() {\n var _pollingTimer$value;\n (_pollingTimer$value = pollingTimer.value) === null || _pollingTimer$value === void 0 ? void 0 : _pollingTimer$value.call(pollingTimer);\n },\n onCancel() {\n var _pollingTimer$value2;\n (_pollingTimer$value2 = pollingTimer.value) === null || _pollingTimer$value2 === void 0 ? void 0 : _pollingTimer$value2.call(pollingTimer);\n },\n onAfter() {\n pollingTimer.value = polling(() => queryInstance.context.refresh());\n }\n };\n});\n\nconst limitTrigger = (fn, timeInterval) => {\n let running = false;\n return function () {\n if (running) return;\n running = true;\n fn(...arguments);\n setTimeout(() => {\n running = false;\n }, timeInterval);\n };\n};\n\nvar useRefreshOnWindowFocus = definePlugin((queryInstance, _ref) => {\n let {\n refreshOnWindowFocus = false,\n refocusTimespan = 5000\n } = _ref;\n const refreshOnWindowFocusRef = computed(() => refToRaw(refreshOnWindowFocus));\n const refocusTimespanRef = computed(() => refToRaw(refocusTimespan));\n const unsubscribeList = [];\n const addUnsubscribeList = event => {\n event && unsubscribeList.push(event);\n };\n const unsubscribe = () => {\n unsubscribeList.forEach(fn => fn());\n };\n watchEffect(() => {\n unsubscribe();\n if (refreshOnWindowFocusRef.value) {\n const limitRefresh = limitTrigger(queryInstance.context.refresh, refocusTimespanRef.value);\n addUnsubscribeList(subscriber('VISIBLE_LISTENER', limitRefresh));\n addUnsubscribeList(subscriber('FOCUS_LISTENER', limitRefresh));\n }\n });\n onUnmounted(() => {\n unsubscribe();\n });\n return {};\n});\n\nfunction useRequest(service, options, plugins) {\n return useQuery(service, options, [...(plugins || []), useLoadingDelayPlugin, useErrorRetryPlugin, useDebouncePlugin, usePollingPlugin, useThrottlePlugin, useRefreshOnWindowFocus, useRefreshDepsPlugin, useReadyPlugin, useCachePlugin]);\n}\n\nfunction usePagination(service) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const defaultPaginationOptions = {\n currentKey: 'current',\n pageSizeKey: 'pageSize',\n totalKey: 'total',\n totalPageKey: 'totalPage'\n };\n const injectedGlobalOptions = inject(GLOBAL_OPTIONS_PROVIDE_KEY, {});\n const {\n pagination,\n ...restOptions\n } = options;\n const {\n currentKey,\n pageSizeKey,\n totalKey,\n totalPageKey\n } = merge(defaultPaginationOptions, getGlobalOptions().pagination || {}, injectedGlobalOptions.pagination || {}, pagination || {});\n const finallyOptions = merge({\n defaultParams: [{\n [currentKey]: 1,\n [pageSizeKey]: 10\n }]\n }, restOptions);\n const {\n data,\n params,\n run,\n ...rest\n } = useRequest(service, finallyOptions);\n const paging = paginationParams => {\n const [oldPaginationParams, ...restParams] = params.value || [];\n const newPaginationParams = {\n ...oldPaginationParams,\n ...paginationParams\n };\n const mergerParams = [newPaginationParams, ...restParams];\n run(...mergerParams);\n };\n // changeCurrent\tchange current page\t(current: number) => void\n const changeCurrent = current => {\n paging({\n [currentKey]: current\n });\n };\n // changePageSize\tchange pageSize\t(pageSize: number) => void\n const changePageSize = pageSize => {\n paging({\n [pageSizeKey]: pageSize\n });\n };\n // changePagination\tchange current and pageSize\t(current: number, pageSize: number) => void\n const changePagination = (current, pageSize) => {\n paging({\n [currentKey]: current,\n [pageSizeKey]: pageSize\n });\n };\n const total = computed(() => get(data.value, totalKey, 0));\n const current = computed({\n get: () => {\n var _params$value$0$curre, _params$value, _params$value$;\n return (// @ts-ignore\n (_params$value$0$curre = (_params$value = params.value) === null || _params$value === void 0 ? void 0 : (_params$value$ = _params$value[0]) === null || _params$value$ === void 0 ? void 0 : _params$value$[currentKey]) !== null && _params$value$0$curre !== void 0 ? _params$value$0$curre : finallyOptions.defaultParams[0][currentKey]\n );\n },\n set: val => {\n changeCurrent(val);\n }\n });\n const pageSize = computed({\n get: () => {\n var _params$value$0$pageS, _params$value2, _params$value2$;\n return (// @ts-ignore\n (_params$value$0$pageS = (_params$value2 = params.value) === null || _params$value2 === void 0 ? void 0 : (_params$value2$ = _params$value2[0]) === null || _params$value2$ === void 0 ? void 0 : _params$value2$[pageSizeKey]) !== null && _params$value$0$pageS !== void 0 ? _params$value$0$pageS : finallyOptions.defaultParams[0][pageSizeKey]\n );\n },\n set: val => {\n changePageSize(val);\n }\n });\n const totalPage = computed(() => get(data.value, totalPageKey, Math.ceil(total.value / pageSize.value)));\n return {\n data,\n params,\n current,\n pageSize,\n total,\n totalPage,\n run,\n changeCurrent,\n changePageSize,\n changePagination,\n ...rest\n };\n}\n\nvar useRequestProvider = (config => {\n provide(GLOBAL_OPTIONS_PROVIDE_KEY, config);\n});\n\nexport { clearCache, definePlugin, setGlobalOptions, useLoadMore, usePagination, useRequest, useRequestProvider };\n"],"names":["wait","error","data","_cacheKey","cache","listeners","current","pageSize"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,5 @@
1
+ export declare function toMoney(money: string | number | undefined | null, precision?: number, multiple?: number): string;
2
+ export declare function toMoneyTrimmed(money: string | number | undefined | null, precision?: number, multiple?: number): string;
3
+ export declare function toMoneyWithK(money: string | number | undefined, precision?: number): string | number;
4
+ export declare function toPrecision(num: string | number, precision?: number): number;
5
+ export declare function padZero(value: number | string, length: number): string;
@@ -0,0 +1,54 @@
1
+ import { isEmpty } from "./common.mjs";
2
+ function toMoney(money, precision = 2, multiple) {
3
+ if (isEmpty(money)) return "";
4
+ if (multiple) money = Number(money) * multiple;
5
+ if (typeof money !== "number") money = parseFloat(money);
6
+ money = toPrecision(money, precision).toLocaleString();
7
+ if (precision > 0) {
8
+ const moneySplit = money.split(".");
9
+ let decimal = moneySplit[1] || "";
10
+ if (!decimal || decimal.length) {
11
+ while (decimal.length < precision) {
12
+ decimal += "0";
13
+ }
14
+ money = `${moneySplit[0]}.${decimal}`;
15
+ }
16
+ }
17
+ return money;
18
+ }
19
+ function toMoneyTrimmed(money, precision = 2, multiple) {
20
+ if (isEmpty(money)) return "";
21
+ if (multiple) money = Number(money) * multiple;
22
+ if (typeof money !== "number") money = parseFloat(money);
23
+ const preciseMoney = toPrecision(money, precision);
24
+ if (Number.isInteger(preciseMoney)) {
25
+ return preciseMoney.toLocaleString();
26
+ }
27
+ const localizedMoney = preciseMoney.toLocaleString(void 0, {
28
+ minimumFractionDigits: 0,
29
+ maximumFractionDigits: precision
30
+ });
31
+ return localizedMoney;
32
+ }
33
+ function toMoneyWithK(money, precision = 1) {
34
+ if (isEmpty(money)) return 0;
35
+ if (typeof money !== "number") money = parseFloat(money);
36
+ if (money < 1e3) return money;
37
+ return `${toMoney(money / 1e3, precision)}k`;
38
+ }
39
+ function toPrecision(num, precision = 0) {
40
+ if (isEmpty(num)) return Number(num);
41
+ const result = Math.round(Number(num) * 10 ** precision) / 10 ** precision;
42
+ return parseFloat(`${result}`);
43
+ }
44
+ function padZero(value, length) {
45
+ return String(value).padStart(length, "0");
46
+ }
47
+ export {
48
+ padZero,
49
+ toMoney,
50
+ toMoneyTrimmed,
51
+ toMoneyWithK,
52
+ toPrecision
53
+ };
54
+ //# sourceMappingURL=calc.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calc.mjs","sources":["../../src/utils/calc.ts"],"sourcesContent":["import { isEmpty } from './common'\n\n/**\n * 转金融数字\n * @param money\n * @param precision 小数点后位数\n * @param multiple 数字处理,如果要缩小100倍,则传入0.01即可\n * @returns 转换后的金融数字\n */\nexport function toMoney(\n money: string | number | undefined | null,\n precision = 2,\n multiple?: number\n): string {\n if (isEmpty(money)) return ''\n\n if (multiple) money = Number(money) * multiple\n if (typeof money !== 'number') money = parseFloat(money!)\n money = toPrecision(money, precision).toLocaleString()\n\n if (precision > 0) {\n const moneySplit = money.split('.')\n let decimal = moneySplit[1] || ''\n if (!decimal || decimal.length) {\n // 小数点位数补充\n while (decimal.length < precision) {\n decimal += '0'\n }\n money = `${moneySplit[0]}.${decimal}`\n }\n }\n\n return money\n}\n\n/**\n * 转金融数字并去除末尾不必要的零\n * @param money\n * @param precision 小数点后最大位数\n * @param multiple 数字处理,如果要缩小100倍,则传入0.01即可\n * @returns 转换后的金融数字\n */\nexport function toMoneyTrimmed(\n money: string | number | undefined | null,\n precision = 2,\n multiple?: number\n): string {\n if (isEmpty(money)) return ''\n\n if (multiple) money = Number(money) * multiple\n if (typeof money !== 'number') money = parseFloat(money!)\n\n // 使用 toPrecision 处理精度,然后转换为字符串并去除末尾的零\n const preciseMoney = toPrecision(money, precision)\n\n // 如果是整数,直接返回整数部分\n if (Number.isInteger(preciseMoney)) {\n return preciseMoney.toLocaleString()\n }\n\n // 转换为字符串并去除末尾的零\n const localizedMoney = preciseMoney.toLocaleString(undefined, {\n minimumFractionDigits: 0,\n maximumFractionDigits: precision\n })\n\n return localizedMoney\n}\n\n/**\n * 金额千分位处理\n * @param money\n * @param precision 小数点后位数\n * @returns 处理后的金额\n */\nexport function toMoneyWithK(money: string | number | undefined, precision = 1) {\n if (isEmpty(money)) return 0\n\n if (typeof money !== 'number') money = parseFloat(money!)\n if (money < 1000) return money\n\n return `${toMoney(money / 1000, precision)}k`\n}\n\n/**\n * 去除浮点计算bug\n * @param num\n * @param precision 小数点后位数\n * @returns\n */\nexport function toPrecision(num: string | number, precision = 0): number {\n if (isEmpty(num)) return Number(num)\n\n const result = Math.round(Number(num) * 10 ** precision) / 10 ** precision\n return parseFloat(`${result}`)\n}\n\n/**\n * 补零函数\n * @param value 值\n * @param length 长度\n * @returns\n */\nexport function padZero(value: number | string, length: number) {\n return String(value).padStart(length, '0')\n}\n"],"names":[],"mappings":";AASO,SAAS,QACd,OACA,YAAY,GACZ,UACQ;AACR,MAAI,QAAQ,KAAK,EAAG,QAAO;AAE3B,MAAI,SAAU,SAAQ,OAAO,KAAK,IAAI;AACtC,MAAI,OAAO,UAAU,SAAU,SAAQ,WAAW,KAAM;AACxD,UAAQ,YAAY,OAAO,SAAS,EAAE,eAAA;AAEtC,MAAI,YAAY,GAAG;AACjB,UAAM,aAAa,MAAM,MAAM,GAAG;AAClC,QAAI,UAAU,WAAW,CAAC,KAAK;AAC/B,QAAI,CAAC,WAAW,QAAQ,QAAQ;AAE9B,aAAO,QAAQ,SAAS,WAAW;AACjC,mBAAW;AAAA,MACb;AACA,cAAQ,GAAG,WAAW,CAAC,CAAC,IAAI,OAAO;AAAA,IACrC;AAAA,EACF;AAEA,SAAO;AACT;AASO,SAAS,eACd,OACA,YAAY,GACZ,UACQ;AACR,MAAI,QAAQ,KAAK,EAAG,QAAO;AAE3B,MAAI,SAAU,SAAQ,OAAO,KAAK,IAAI;AACtC,MAAI,OAAO,UAAU,SAAU,SAAQ,WAAW,KAAM;AAGxD,QAAM,eAAe,YAAY,OAAO,SAAS;AAGjD,MAAI,OAAO,UAAU,YAAY,GAAG;AAClC,WAAO,aAAa,eAAA;AAAA,EACtB;AAGA,QAAM,iBAAiB,aAAa,eAAe,QAAW;AAAA,IAC5D,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,EAAA,CACxB;AAED,SAAO;AACT;AAQO,SAAS,aAAa,OAAoC,YAAY,GAAG;AAC9E,MAAI,QAAQ,KAAK,EAAG,QAAO;AAE3B,MAAI,OAAO,UAAU,SAAU,SAAQ,WAAW,KAAM;AACxD,MAAI,QAAQ,IAAM,QAAO;AAEzB,SAAO,GAAG,QAAQ,QAAQ,KAAM,SAAS,CAAC;AAC5C;AAQO,SAAS,YAAY,KAAsB,YAAY,GAAW;AACvE,MAAI,QAAQ,GAAG,EAAG,QAAO,OAAO,GAAG;AAEnC,QAAM,SAAS,KAAK,MAAM,OAAO,GAAG,IAAI,MAAM,SAAS,IAAI,MAAM;AACjE,SAAO,WAAW,GAAG,MAAM,EAAE;AAC/B;AAQO,SAAS,QAAQ,OAAwB,QAAgB;AAC9D,SAAO,OAAO,KAAK,EAAE,SAAS,QAAQ,GAAG;AAC3C;"}
@@ -0,0 +1,48 @@
1
+ import type { Ref, SetupContext } from 'vue';
2
+ export declare function noop(): void;
3
+ export declare function isEmpty(val: unknown): val is null | undefined | '' | [] | Record<string, never>;
4
+ export declare function hasOwn<T extends object, K extends keyof T>(val: T, key: K): key is K;
5
+ export declare function createEnum<const T extends Record<string | number, string | ({
6
+ label: string;
7
+ } & Record<string, unknown>)>>(obj: T): {
8
+ map: { [K in keyof T]: T[K] extends string ? {
9
+ value: K;
10
+ label: T[K];
11
+ } : T[K] extends {
12
+ value: infer V;
13
+ } ? {
14
+ value: V;
15
+ } & Omit<T[K], "value"> : {
16
+ value: K;
17
+ } & T[K]; };
18
+ options: { [K_1 in keyof T]: T[K_1] extends string ? {
19
+ value: K_1;
20
+ label: T[K_1];
21
+ } : T[K_1] extends {
22
+ value: infer V;
23
+ } ? {
24
+ value: V;
25
+ } & Omit<T[K_1], "value"> : {
26
+ value: K_1;
27
+ } & T[K_1]; }[keyof T][];
28
+ };
29
+ export declare function findEnum<T extends {
30
+ value: any;
31
+ label: string;
32
+ }[]>(map?: T, value?: any, key?: keyof T[number]): T[number] | undefined;
33
+ export declare function extractSlotsWithPrefix(slots: SetupContext['slots'], prefix: string): {
34
+ originalName: string;
35
+ filterName: string;
36
+ }[];
37
+ export declare function extractSlotsWithoutPrefix(slots: SetupContext['slots'], prefix: string): string[];
38
+ export declare function filterSlots(slots: SetupContext['slots'], filterName: string[]): string[];
39
+ export declare function easyCopy<T>(data: T): T;
40
+ export declare function checkSameObject(newData: unknown, oldData: unknown): boolean;
41
+ export declare function valueFillter(val: string, keys: string, data: Record<string, string | number>): string;
42
+ type Simplify<T> = T extends any ? {
43
+ [K in keyof T]: T[K];
44
+ } : never;
45
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
46
+ type GetComponentType<T extends Readonly<Ref<object | null | undefined>[]>> = UnionToIntersection<T[number] extends Ref<infer V> ? NonNullable<V> : never>;
47
+ export declare function createExposeProxy<R extends {}, T extends Readonly<Ref<object | null | undefined>[]>>(expose: R, ...refs: T): Simplify<R & GetComponentType<T>>;
48
+ export {};
@@ -0,0 +1,125 @@
1
+ import { identifyType } from "./type.mjs";
2
+ function noop() {
3
+ }
4
+ function isEmpty(val) {
5
+ if (val == null) return true;
6
+ if (typeof val === "string" && val.trim() === "") return true;
7
+ if (typeof val === "boolean") return false;
8
+ if (typeof val === "number") return Number.isNaN(val);
9
+ if (val instanceof Error) return val.message === "";
10
+ switch (identifyType(val)) {
11
+ // Array
12
+ case "array":
13
+ return !val.length;
14
+ // Plain Object
15
+ case "object": {
16
+ return !Object.keys(val).length;
17
+ }
18
+ // Map or Set or File
19
+ case "file":
20
+ case "map":
21
+ case "set": {
22
+ return !val.size;
23
+ }
24
+ default:
25
+ return !val;
26
+ }
27
+ }
28
+ function hasOwn(val, key) {
29
+ return Object.prototype.hasOwnProperty.call(val, key);
30
+ }
31
+ function createEnum(obj) {
32
+ const map = {};
33
+ const options = Object.entries(obj).map(([key, raw]) => {
34
+ const entry = typeof raw === "string" ? { label: raw } : raw;
35
+ const value = "value" in entry ? entry.value : key;
36
+ map[key] = { value, ...entry };
37
+ return { value, ...entry };
38
+ });
39
+ return { map, options };
40
+ }
41
+ function findEnum(map, value, key) {
42
+ if (isEmpty(map)) return;
43
+ return map.find((item) => item[key || "value"] === value);
44
+ }
45
+ function extractSlotsWithPrefix(slots, prefix) {
46
+ const res = [];
47
+ for (const key in slots) {
48
+ if (!key.startsWith(`${prefix}-`)) continue;
49
+ res.push({ originalName: key, filterName: key.slice(prefix.length + 1) });
50
+ }
51
+ return res;
52
+ }
53
+ function extractSlotsWithoutPrefix(slots, prefix) {
54
+ const res = [];
55
+ for (const key in slots) {
56
+ if (key.startsWith(`${prefix}-`)) continue;
57
+ res.push(key);
58
+ }
59
+ return res;
60
+ }
61
+ function filterSlots(slots, filterName) {
62
+ const res = [];
63
+ for (const key in slots) {
64
+ if (filterName.includes(key)) continue;
65
+ res.push(key);
66
+ }
67
+ return res;
68
+ }
69
+ function easyCopy(data) {
70
+ return JSON.parse(JSON.stringify(data));
71
+ }
72
+ function checkSameObject(newData, oldData) {
73
+ if (newData && !oldData || !newData && oldData || typeof newData !== typeof oldData) {
74
+ return false;
75
+ }
76
+ return JSON.stringify(newData) === JSON.stringify(oldData);
77
+ }
78
+ function valueFillter(val, keys, data) {
79
+ if (!val) return val;
80
+ return val.replace(/(?:\${([^}]*)})|(?:\$([^&?\b]*))/g, ($1, $2, $3) => {
81
+ let result = "";
82
+ const rule = new RegExp(keys);
83
+ if (rule.test($2) || rule.test($3)) {
84
+ result = data[$2 || $3] || "";
85
+ } else {
86
+ result = $1;
87
+ }
88
+ return `${result}`;
89
+ });
90
+ }
91
+ function createExposeProxy(expose, ...refs) {
92
+ const exposeProxy = new Proxy(expose, {
93
+ has(target, key) {
94
+ if (key in target) return true;
95
+ for (const item of refs) {
96
+ if (item.value && key in item.value) return true;
97
+ }
98
+ return false;
99
+ },
100
+ get(target, key) {
101
+ if (key in target) return target[key];
102
+ for (const item of refs) {
103
+ if (item.value && key in item.value) {
104
+ return item.value[key];
105
+ }
106
+ }
107
+ }
108
+ });
109
+ return exposeProxy;
110
+ }
111
+ export {
112
+ checkSameObject,
113
+ createEnum,
114
+ createExposeProxy,
115
+ easyCopy,
116
+ extractSlotsWithPrefix,
117
+ extractSlotsWithoutPrefix,
118
+ filterSlots,
119
+ findEnum,
120
+ hasOwn,
121
+ isEmpty,
122
+ noop,
123
+ valueFillter
124
+ };
125
+ //# sourceMappingURL=common.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.mjs","sources":["../../src/utils/common.ts"],"sourcesContent":["import type { Ref, SetupContext } from 'vue'\n\nimport { identifyType } from './type'\n\n/**\n * 空方法\n */\nexport function noop(): void {}\n\n/**\n * 空判断 - undefined null NaN '' ' ' {} [] 为空\n * @param val 任何参数\n * @returns 是否为空\n */\nexport function isEmpty(val: unknown): val is null | undefined | '' | [] | Record<string, never> {\n // null or undefined\n if (val == null) return true\n\n if (typeof val === 'string' && val.trim() === '') return true\n\n if (typeof val === 'boolean') return false\n\n if (typeof val === 'number') return Number.isNaN(val)\n\n if (val instanceof Error) return val.message === ''\n\n switch (identifyType(val)) {\n // Array\n case 'array':\n return !(val as unknown[]).length\n\n // Plain Object\n case 'object': {\n return !Object.keys(val).length\n }\n\n // Map or Set or File\n case 'file':\n case 'map':\n case 'set': {\n return !(val as File | Map<unknown, unknown> | Set<unknown>).size\n }\n default:\n return !val\n }\n}\n\n/**\n * 判断对象、数组是否有某属性\n * @param val\n * @param key\n * @returns 是否含有\n */\nexport function hasOwn<T extends object, K extends keyof T>(val: T, key: K): key is K {\n return Object.prototype.hasOwnProperty.call(val, key)\n}\n\n/**\n * 生成枚举\n * @param obj 枚举对象\n * @returns 枚举对象、枚举数组\n */\nexport function createEnum<\n const T extends Record<string | number, string | ({ label: string } & Record<string, unknown>)>\n>(obj: T) {\n const map = {} as {\n [K in keyof T]: T[K] extends string\n ? { value: K; label: T[K] }\n : T[K] extends { value: infer V }\n ? { value: V } & Omit<T[K], 'value'>\n : { value: K } & T[K]\n }\n\n const options = Object.entries(obj).map(([key, raw]) => {\n const entry = typeof raw === 'string' ? { label: raw } : raw\n\n // 如果 entry 中有 value 属性,使用它;否则使用 key\n const value = 'value' in entry ? entry.value : key\n ;(map as Record<string, unknown>)[key] = { value, ...entry }\n\n return { value, ...entry }\n }) as unknown as {\n [K in keyof T]: T[K] extends string\n ? { value: K; label: T[K] }\n : T[K] extends { value: infer V }\n ? { value: V } & Omit<T[K], 'value'>\n : { value: K } & T[K]\n }[keyof T][]\n\n return { map, options }\n}\n\n/**\n * 根据指定键值从枚举数组中查找匹配项\n * @param map 枚举数组,每项需包含 value 和 label 属性\n * @param value 要匹配的值\n * @param key 匹配时使用的键名,默认为 'value'\n * @returns 匹配到的项,未找到则返回 undefined\n */\nexport function findEnum<T extends { value: any; label: string }[]>(\n map?: T,\n value?: any,\n key?: keyof T[number]\n): T[number] | undefined {\n if (isEmpty(map)) return\n\n return (map as T).find((item) => item[(key || 'value') as keyof typeof item] === value)\n}\n\n/**\n * 提取带指定前缀的插槽\n * @param slots 插槽对象\n * @param prefix 前缀\n * @returns 返回包含原始名称和过滤前缀后名称的数组\n */\nexport function extractSlotsWithPrefix(slots: SetupContext['slots'], prefix: string) {\n const res: { originalName: string; filterName: string }[] = []\n for (const key in slots) {\n if (!key.startsWith(`${prefix}-`)) continue\n\n res.push({ originalName: key, filterName: key.slice(prefix.length + 1) })\n }\n\n return res\n}\n\n/**\n * 提取不带指定前缀的插槽\n * @param slots 插槽对象\n * @param prefix 前缀\n * @returns 返回不包含该前缀的插槽名称数组\n */\nexport function extractSlotsWithoutPrefix(slots: SetupContext['slots'], prefix: string) {\n const res: string[] = []\n for (const key in slots) {\n if (key.startsWith(`${prefix}-`)) continue\n res.push(key)\n }\n\n return res\n}\n\n/**\n * 过滤插槽\n * @param slots 插槽对象\n * @param prefix 前缀\n * @returns 返回过滤后的插槽\n */\nexport function filterSlots(slots: SetupContext['slots'], filterName: string[]) {\n const res: string[] = []\n for (const key in slots) {\n if (filterName.includes(key)) continue\n res.push(key)\n }\n\n return res\n}\n\n/**\n * 简单复制\n * @param data 要复制的数组、对象\n * @return 深度复制出的新对象\n */\nexport function easyCopy<T>(data: T): T {\n return JSON.parse(JSON.stringify(data))\n}\n\n/**\n * 简单比较两个对象数据是否一致\n * @param newData 新数据对象\n * @param oldData 旧数据对象\n * @return 返回比较结果\n */\nexport function checkSameObject(newData: unknown, oldData: unknown) {\n if ((newData && !oldData) || (!newData && oldData) || typeof newData !== typeof oldData) {\n return false\n }\n return JSON.stringify(newData) === JSON.stringify(oldData)\n}\n\n/**\n * 填充数据\n * 传入的${key} || $key修改为传入的数据data\n * @param val 需要过滤的原数据\n * @param keys 需要过滤的关键字(多个key用|隔开)\n * @param data 需要替换的数据对象,匹配到结构,将使用data[key]填充\n * @returns 返回替换填充后的数据\n */\nexport function valueFillter(val: string, keys: string, data: Record<string, string | number>) {\n if (!val) return val\n return val.replace(/(?:\\${([^}]*)})|(?:\\$([^&?\\b]*))/g, ($1, $2, $3) => {\n let result: string | number = ''\n const rule = new RegExp(keys)\n if (rule.test($2) || rule.test($3)) {\n result = data[$2 || $3] || ''\n } else {\n result = $1 // 如果没有匹配到,则原路返回\n }\n return `${result}`\n })\n}\n\ntype Simplify<T> = T extends any\n ? {\n [K in keyof T]: T[K]\n }\n : never\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void\n ? I\n : never\n\ntype GetComponentType<T extends Readonly<Ref<object | null | undefined>[]>> = UnionToIntersection<\n T[number] extends Ref<infer V> ? NonNullable<V> : never\n>\n\nexport function createExposeProxy<\n R extends {},\n T extends Readonly<Ref<object | null | undefined>[]>\n>(expose: R, ...refs: T) {\n const exposeProxy = new Proxy(expose, {\n has(target, key) {\n if (key in target) return true\n for (const item of refs) {\n if (item.value && key in item.value) return true\n }\n return false\n },\n get(target: any, key) {\n if (key in target) return target[key]\n for (const item of refs) {\n if (item.value && key in item.value) {\n return (item.value as any)[key]\n }\n }\n }\n })\n\n return exposeProxy as Simplify<R & GetComponentType<T>>\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare function toArr<T>(target: T | T[] | undefined): T[];
2
+ export declare function buildTree<T extends object>(data: T[], options?: {
3
+ id?: keyof T;
4
+ parentId?: keyof T;
5
+ children?: keyof T;
6
+ }): T[];
7
+ type KeyMapValue<T, K extends keyof T> = string | {
8
+ newKey?: string;
9
+ handler?: (val: T[K]) => any;
10
+ };
11
+ export declare function remapKeys<T extends Record<string, any>, M extends Partial<Record<keyof T, KeyMapValue<T, keyof T>>>>(data: T, keyMap: M, strict?: boolean): Record<string, any>;
12
+ export {};
@@ -0,0 +1,59 @@
1
+ import { isEmpty, hasOwn } from "./common.mjs";
2
+ function toArr(target) {
3
+ if (Array.isArray(target)) return target;
4
+ if (isEmpty(target)) return [];
5
+ return [target];
6
+ }
7
+ function buildTree(data, options = {}) {
8
+ const { id = "id", parentId = "parentId", children = "children" } = options;
9
+ const childrenListMap = {};
10
+ const nodeIds = {};
11
+ const tree = [];
12
+ for (const d of data) {
13
+ const pid = d[parentId];
14
+ if (!childrenListMap[pid]) {
15
+ childrenListMap[pid] = [];
16
+ }
17
+ nodeIds[d[id]] = d;
18
+ childrenListMap[pid].push(d);
19
+ }
20
+ for (const d of data) {
21
+ const pid = d[parentId];
22
+ if (!nodeIds[pid]) {
23
+ tree.push(d);
24
+ }
25
+ }
26
+ for (const t of tree) {
27
+ adaptToChildrenList(t);
28
+ }
29
+ function adaptToChildrenList(o) {
30
+ const childNodes = childrenListMap[o[id]];
31
+ if (childNodes) {
32
+ o[children] = childNodes;
33
+ for (const c of childNodes) {
34
+ adaptToChildrenList(c);
35
+ }
36
+ }
37
+ }
38
+ return tree;
39
+ }
40
+ function remapKeys(data, keyMap, strict = false) {
41
+ const result = {};
42
+ for (const key in data) {
43
+ if (hasOwn(keyMap, key)) {
44
+ const mapValue = keyMap[key];
45
+ const newKey = typeof mapValue === "string" ? mapValue : mapValue?.newKey;
46
+ const value = typeof mapValue === "object" && mapValue.handler ? mapValue.handler(data[key]) : data[key];
47
+ result[isEmpty(newKey) ? key : newKey] = value;
48
+ } else if (!strict) {
49
+ result[key] = data[key];
50
+ }
51
+ }
52
+ return result;
53
+ }
54
+ export {
55
+ buildTree,
56
+ remapKeys,
57
+ toArr
58
+ };
59
+ //# sourceMappingURL=conversion.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.mjs","sources":["../../src/utils/conversion.ts"],"sourcesContent":["import { hasOwn, isEmpty } from './common'\n\n/**\n * 转数组\n * @param target\n * @return 转换后的数组\n */\nexport function toArr<T>(target: T | T[] | undefined): T[] {\n if (Array.isArray(target)) return target\n if (isEmpty(target)) return []\n return [target]\n}\n\n/**\n * 构造树型结构数据\n * @param data 扁平化的节点数组\n * @param options 配置项\n * @param options.id ID 字段名,默认 'id'\n * @param options.parentId 父节点 ID 字段名,默认 'parentId'\n * @param options.children 子节点字段名,默认 'children'\n * @returns 树型结构数组\n * @example\n * buildTree([\n * { id: 1, name: 'A' },\n * { id: 2, parentId: 1, name: 'B' },\n * { id: 3, parentId: 1, name: 'C' }\n * ]) // [{ id: 1, name: 'A', children: [{ id: 2, parentId: 1, name: 'B' }, { id: 3, parentId: 1, name: 'C' }] }]\n */\nexport function buildTree<T extends object>(\n data: T[],\n options: {\n id?: keyof T\n parentId?: keyof T\n children?: keyof T\n } = {}\n): T[] {\n const { id = 'id', parentId = 'parentId', children = 'children' } = options\n const childrenListMap: Record<string | number | symbol, T[]> = {}\n const nodeIds: Record<string | number | symbol, T> = {}\n const tree: T[] = []\n\n for (const d of data) {\n const pid = d[parentId as keyof typeof d] as string | number | symbol\n if (!childrenListMap[pid]) {\n childrenListMap[pid] = []\n }\n nodeIds[d[id as keyof typeof d] as string | number | symbol] = d\n childrenListMap[pid].push(d)\n }\n\n for (const d of data) {\n const pid = d[parentId as keyof typeof d] as string | number | symbol\n if (!nodeIds[pid]) {\n tree.push(d)\n }\n }\n\n for (const t of tree) {\n adaptToChildrenList(t)\n }\n\n function adaptToChildrenList(o: T): void {\n const childNodes = childrenListMap[o[id as keyof typeof o] as string | number | symbol]\n if (childNodes) {\n ;(o as Record<string, unknown>)[children as string] = childNodes\n for (const c of childNodes) {\n adaptToChildrenList(c)\n }\n }\n }\n return tree\n}\n\ntype KeyMapValue<T, K extends keyof T> = string | { newKey?: string; handler?: (val: T[K]) => any }\n\n/**\n * 重命名对象键\n * @param data 源对象\n * @param keyMap 键映射,格式为 { 旧键: 新键 | { newKey, handler } }\n * @param strict 是否严格模式(只保留映射过的字段),默认 false\n * @returns 键被重命名后的新对象\n * @example\n * remapKeys({ name: 'foo', age: 18 }, { name: 'userName' }) // { userName: 'foo', age: 18 }\n * remapKeys({ name: 'foo', age: 18 }, { name: 'userName' }, true) // { userName: 'foo' }\n * remapKeys({ name: 'foo', age: 18 }, { name: { newKey: 'userName', handler: v => v.toUpperCase() } }) // { userName: 'FOO', age: 18 }\n */\nexport function remapKeys<\n T extends Record<string, any>,\n M extends Partial<Record<keyof T, KeyMapValue<T, keyof T>>>\n>(data: T, keyMap: M, strict = false): Record<string, any> {\n const result = {} as any\n\n for (const key in data) {\n if (hasOwn(keyMap, key)) {\n const mapValue = keyMap[key]\n const newKey = typeof mapValue === 'string' ? mapValue : mapValue?.newKey\n const value =\n typeof mapValue === 'object' && mapValue.handler ? mapValue.handler(data[key]) : data[key]\n result[isEmpty(newKey) ? key : newKey] = value\n } else if (!strict) {\n result[key] = data[key]\n }\n }\n\n return result\n}\n"],"names":[],"mappings":";AAOO,SAAS,MAAS,QAAkC;AACzD,MAAI,MAAM,QAAQ,MAAM,EAAG,QAAO;AAClC,MAAI,QAAQ,MAAM,EAAG,QAAO,CAAA;AAC5B,SAAO,CAAC,MAAM;AAChB;AAiBO,SAAS,UACd,MACA,UAII,IACC;AACL,QAAM,EAAE,KAAK,MAAM,WAAW,YAAY,WAAW,eAAe;AACpE,QAAM,kBAAyD,CAAA;AAC/D,QAAM,UAA+C,CAAA;AACrD,QAAM,OAAY,CAAA;AAElB,aAAW,KAAK,MAAM;AACpB,UAAM,MAAM,EAAE,QAA0B;AACxC,QAAI,CAAC,gBAAgB,GAAG,GAAG;AACzB,sBAAgB,GAAG,IAAI,CAAA;AAAA,IACzB;AACA,YAAQ,EAAE,EAAoB,CAA6B,IAAI;AAC/D,oBAAgB,GAAG,EAAE,KAAK,CAAC;AAAA,EAC7B;AAEA,aAAW,KAAK,MAAM;AACpB,UAAM,MAAM,EAAE,QAA0B;AACxC,QAAI,CAAC,QAAQ,GAAG,GAAG;AACjB,WAAK,KAAK,CAAC;AAAA,IACb;AAAA,EACF;AAEA,aAAW,KAAK,MAAM;AACpB,wBAAoB,CAAC;AAAA,EACvB;AAEA,WAAS,oBAAoB,GAAY;AACvC,UAAM,aAAa,gBAAgB,EAAE,EAAoB,CAA6B;AACtF,QAAI,YAAY;AACZ,QAA8B,QAAkB,IAAI;AACtD,iBAAW,KAAK,YAAY;AAC1B,4BAAoB,CAAC;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAeO,SAAS,UAGd,MAAS,QAAW,SAAS,OAA4B;AACzD,QAAM,SAAS,CAAA;AAEf,aAAW,OAAO,MAAM;AACtB,QAAI,OAAO,QAAQ,GAAG,GAAG;AACvB,YAAM,WAAW,OAAO,GAAG;AAC3B,YAAM,SAAS,OAAO,aAAa,WAAW,WAAW,UAAU;AACnE,YAAM,QACJ,OAAO,aAAa,YAAY,SAAS,UAAU,SAAS,QAAQ,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG;AAC3F,aAAO,QAAQ,MAAM,IAAI,MAAM,MAAM,IAAI;AAAA,IAC3C,WAAW,CAAC,QAAQ;AAClB,aAAO,GAAG,IAAI,KAAK,GAAG;AAAA,IACxB;AAAA,EACF;AAEA,SAAO;AACT;"}
@@ -0,0 +1,7 @@
1
+ import CryptoJS from 'crypto-js';
2
+ export declare function generateRandomString(length?: number): string;
3
+ export declare function generateAesKey(): CryptoJS.lib.WordArray;
4
+ export declare function encryptBase64(str: CryptoJS.lib.WordArray): string;
5
+ export declare function decryptBase64(str: string): string;
6
+ export declare function encryptWithAes(message: string, aesKey: CryptoJS.lib.WordArray, iv?: CryptoJS.lib.WordArray, mode?: typeof CryptoJS.mode.ECB, padding?: typeof CryptoJS.pad.Pkcs7): string;
7
+ export declare function MD5(message: CryptoJS.lib.WordArray | string, cfg?: object): string;
@@ -0,0 +1,39 @@
1
+ import CryptoJS from "../_virtual/index.mjs";
2
+ function generateRandomString(length = 32) {
3
+ const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
4
+ let result = "";
5
+ const charactersLength = characters.length;
6
+ for (let i = 0; i < length; i++) {
7
+ result += characters.charAt(Math.floor(Math.random() * charactersLength));
8
+ }
9
+ return result;
10
+ }
11
+ function generateAesKey() {
12
+ return CryptoJS.enc.Utf8.parse(generateRandomString());
13
+ }
14
+ function encryptBase64(str) {
15
+ return CryptoJS.enc.Base64.stringify(str);
16
+ }
17
+ function decryptBase64(str) {
18
+ return CryptoJS.enc.Base64.parse(str).toString(CryptoJS.enc.Utf8);
19
+ }
20
+ function encryptWithAes(message, aesKey, iv, mode = CryptoJS.mode.ECB, padding = CryptoJS.pad.Pkcs7) {
21
+ const encrypted = CryptoJS.AES.encrypt(message, aesKey, {
22
+ iv,
23
+ mode,
24
+ padding
25
+ });
26
+ return encrypted.toString();
27
+ }
28
+ function MD5(message, cfg) {
29
+ return CryptoJS.MD5(message, cfg).toString();
30
+ }
31
+ export {
32
+ MD5,
33
+ decryptBase64,
34
+ encryptBase64,
35
+ encryptWithAes,
36
+ generateAesKey,
37
+ generateRandomString
38
+ };
39
+ //# sourceMappingURL=crypto.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.mjs","sources":["../../src/utils/crypto.ts"],"sourcesContent":["import CryptoJS from 'crypto-js'\n\n/**\n * 随机生成字符串\n * @param length 生成的字符串长度\n * @returns 随机字符串\n */\nexport function generateRandomString(length = 32) {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n let result = ''\n const charactersLength = characters.length\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength))\n }\n return result\n}\n\n/**\n * 随机生成 aes 密钥\n * @returns 密钥\n */\nexport function generateAesKey() {\n return CryptoJS.enc.Utf8.parse(generateRandomString())\n}\n\n/**\n * 加密 Base64\n * @param str 需要加密的字符串\n * @returns 加密后的字符串\n */\nexport function encryptBase64(str: CryptoJS.lib.WordArray) {\n return CryptoJS.enc.Base64.stringify(str)\n}\n\n/**\n * 解密 Base64\n * @param str 需要解密的字符串\n * @returns 解密后的 WordArray\n */\nexport function decryptBase64(str: string) {\n return CryptoJS.enc.Base64.parse(str).toString(CryptoJS.enc.Utf8)\n}\n\n/**\n * 使用密钥对数据进行加密\n * @param message\n * @param aesKey\n * @param iv\n * @param mode\n * @param padding\n * @returns 加密后的字符串\n */\nexport function encryptWithAes(\n message: string,\n aesKey: CryptoJS.lib.WordArray,\n iv?: CryptoJS.lib.WordArray,\n mode: typeof CryptoJS.mode.ECB = CryptoJS.mode.ECB,\n padding: typeof CryptoJS.pad.Pkcs7 = CryptoJS.pad.Pkcs7\n) {\n const encrypted = CryptoJS.AES.encrypt(message, aesKey, {\n iv,\n mode,\n padding\n })\n return encrypted.toString()\n}\n\n/**\n * md5哈希算法\n */\nexport function MD5(message: CryptoJS.lib.WordArray | string, cfg?: object) {\n return CryptoJS.MD5(message, cfg).toString()\n}\n"],"names":[],"mappings":";AAOO,SAAS,qBAAqB,SAAS,IAAI;AAChD,QAAM,aAAa;AACnB,MAAI,SAAS;AACb,QAAM,mBAAmB,WAAW;AACpC,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,cAAU,WAAW,OAAO,KAAK,MAAM,KAAK,WAAW,gBAAgB,CAAC;AAAA,EAC1E;AACA,SAAO;AACT;AAMO,SAAS,iBAAiB;AAC/B,SAAO,SAAS,IAAI,KAAK,MAAM,sBAAsB;AACvD;AAOO,SAAS,cAAc,KAA6B;AACzD,SAAO,SAAS,IAAI,OAAO,UAAU,GAAG;AAC1C;AAOO,SAAS,cAAc,KAAa;AACzC,SAAO,SAAS,IAAI,OAAO,MAAM,GAAG,EAAE,SAAS,SAAS,IAAI,IAAI;AAClE;AAWO,SAAS,eACd,SACA,QACA,IACA,OAAiC,SAAS,KAAK,KAC/C,UAAqC,SAAS,IAAI,OAClD;AACA,QAAM,YAAY,SAAS,IAAI,QAAQ,SAAS,QAAQ;AAAA,IACtD;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AACD,SAAO,UAAU,SAAA;AACnB;AAKO,SAAS,IAAI,SAA0C,KAAc;AAC1E,SAAO,SAAS,IAAI,SAAS,GAAG,EAAE,SAAA;AACpC;"}
@@ -0,0 +1,4 @@
1
+ export declare function getHtmlTxt(html?: string): string;
2
+ export declare function domOn(element: HTMLElement | Document | Window, event: string, handler: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3
+ export declare function domOff(element: HTMLElement | Document | Window, event: string, handler: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4
+ export declare function getScrollEl(element: HTMLElement): HTMLElement | null;
@@ -0,0 +1,29 @@
1
+ function getHtmlTxt(html) {
2
+ return html ? html.replace(/<[^<>]+>/g, "") : "";
3
+ }
4
+ function domOn(element, event, handler, options) {
5
+ if (element && event && handler) {
6
+ element.addEventListener(event, handler, options ?? false);
7
+ }
8
+ }
9
+ function domOff(element, event, handler, options) {
10
+ if (element && event && handler) {
11
+ element.removeEventListener(event, handler, options ?? false);
12
+ }
13
+ }
14
+ function getScrollEl(element) {
15
+ if (element.scrollHeight > element.clientHeight) {
16
+ return element;
17
+ } else if (element.parentElement) {
18
+ return getScrollEl(element.parentElement);
19
+ } else {
20
+ return null;
21
+ }
22
+ }
23
+ export {
24
+ domOff,
25
+ domOn,
26
+ getHtmlTxt,
27
+ getScrollEl
28
+ };
29
+ //# sourceMappingURL=dom.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.mjs","sources":["../../src/utils/dom.ts"],"sourcesContent":["/**\n * 获取html文本\n * @param html html文本\n * @returns html中的文本\n */\nexport function getHtmlTxt(html?: string) {\n return html ? html.replace(/<[^<>]+>/g, '') : ''\n}\n\n/**\n * 添加事件监听\n * @param element\n * @param event\n * @param handler\n * @param options\n */\nexport function domOn(\n element: HTMLElement | Document | Window,\n event: string,\n handler: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n): void {\n if (element && event && handler) {\n element.addEventListener(event, handler, options ?? false)\n }\n}\n\n/**\n * 移除事件监听\n * @param element\n * @param event\n * @param handler\n * @param options\n */\nexport function domOff(\n element: HTMLElement | Document | Window,\n event: string,\n handler: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n): void {\n if (element && event && handler) {\n element.removeEventListener(event, handler, options ?? false)\n }\n}\n\n/**\n * 获取可以滚动的元素\n * @param element\n * @return 可以滚动的元素\n */\nexport function getScrollEl(element: HTMLElement): HTMLElement | null {\n if (element.scrollHeight > element.clientHeight) {\n return element\n } else if (element.parentElement) {\n return getScrollEl(element.parentElement)\n } else {\n return null\n }\n}\n"],"names":[],"mappings":"AAKO,SAAS,WAAW,MAAe;AACxC,SAAO,OAAO,KAAK,QAAQ,aAAa,EAAE,IAAI;AAChD;AASO,SAAS,MACd,SACA,OACA,SACA,SACM;AACN,MAAI,WAAW,SAAS,SAAS;AAC/B,YAAQ,iBAAiB,OAAO,SAAS,WAAW,KAAK;AAAA,EAC3D;AACF;AASO,SAAS,OACd,SACA,OACA,SACA,SACM;AACN,MAAI,WAAW,SAAS,SAAS;AAC/B,YAAQ,oBAAoB,OAAO,SAAS,WAAW,KAAK;AAAA,EAC9D;AACF;AAOO,SAAS,YAAY,SAA0C;AACpE,MAAI,QAAQ,eAAe,QAAQ,cAAc;AAC/C,WAAO;AAAA,EACT,WAAW,QAAQ,eAAe;AAChC,WAAO,YAAY,QAAQ,aAAa;AAAA,EAC1C,OAAO;AACL,WAAO;AAAA,EACT;AACF;"}
@@ -0,0 +1 @@
1
+ export declare function easyDownload(res: File | Blob | string, name: string): void;
@@ -0,0 +1,20 @@
1
+ function easyDownload(res, name) {
2
+ const navigator = window.navigator;
3
+ if (navigator && navigator.msSaveOrOpenBlob) {
4
+ navigator.msSaveOrOpenBlob(res, name);
5
+ } else {
6
+ const aTag = document.createElement("a");
7
+ aTag.target = "_blank";
8
+ aTag.download = name;
9
+ aTag.href = typeof res === "string" ? res : window.URL.createObjectURL(res);
10
+ document.body.appendChild(aTag);
11
+ aTag.click();
12
+ setTimeout(() => {
13
+ document.body.removeChild(aTag);
14
+ }, 1e3);
15
+ }
16
+ }
17
+ export {
18
+ easyDownload
19
+ };
20
+ //# sourceMappingURL=download.mjs.map