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.
- package/dist/_virtual/___vite-browser-external.mjs +7 -0
- package/dist/_virtual/___vite-browser-external.mjs.map +1 -0
- package/dist/_virtual/__vite-browser-external.mjs +5 -0
- package/dist/_virtual/__vite-browser-external.mjs.map +1 -0
- package/dist/_virtual/_commonjs-dynamic-modules.mjs +7 -0
- package/dist/_virtual/_commonjs-dynamic-modules.mjs.map +1 -0
- package/dist/_virtual/_commonjsHelpers.mjs +39 -0
- package/dist/_virtual/_commonjsHelpers.mjs.map +1 -0
- package/dist/_virtual/aes.mjs +5 -0
- package/dist/_virtual/aes.mjs.map +1 -0
- package/dist/_virtual/blowfish.mjs +5 -0
- package/dist/_virtual/blowfish.mjs.map +1 -0
- package/dist/_virtual/cipher-core.mjs +5 -0
- package/dist/_virtual/cipher-core.mjs.map +1 -0
- package/dist/_virtual/core.mjs +5 -0
- package/dist/_virtual/core.mjs.map +1 -0
- package/dist/_virtual/enc-base64.mjs +5 -0
- package/dist/_virtual/enc-base64.mjs.map +1 -0
- package/dist/_virtual/enc-base64url.mjs +5 -0
- package/dist/_virtual/enc-base64url.mjs.map +1 -0
- package/dist/_virtual/enc-utf16.mjs +5 -0
- package/dist/_virtual/enc-utf16.mjs.map +1 -0
- package/dist/_virtual/evpkdf.mjs +5 -0
- package/dist/_virtual/evpkdf.mjs.map +1 -0
- package/dist/_virtual/format-hex.mjs +5 -0
- package/dist/_virtual/format-hex.mjs.map +1 -0
- package/dist/_virtual/hmac.mjs +5 -0
- package/dist/_virtual/hmac.mjs.map +1 -0
- package/dist/_virtual/index.mjs +8 -0
- package/dist/_virtual/index.mjs.map +1 -0
- package/dist/_virtual/index2.mjs +5 -0
- package/dist/_virtual/index2.mjs.map +1 -0
- package/dist/_virtual/lib-typedarrays.mjs +5 -0
- package/dist/_virtual/lib-typedarrays.mjs.map +1 -0
- package/dist/_virtual/md5.mjs +5 -0
- package/dist/_virtual/md5.mjs.map +1 -0
- package/dist/_virtual/mode-cfb.mjs +5 -0
- package/dist/_virtual/mode-cfb.mjs.map +1 -0
- package/dist/_virtual/mode-ctr-gladman.mjs +5 -0
- package/dist/_virtual/mode-ctr-gladman.mjs.map +1 -0
- package/dist/_virtual/mode-ctr.mjs +5 -0
- package/dist/_virtual/mode-ctr.mjs.map +1 -0
- package/dist/_virtual/mode-ecb.mjs +5 -0
- package/dist/_virtual/mode-ecb.mjs.map +1 -0
- package/dist/_virtual/mode-ofb.mjs +5 -0
- package/dist/_virtual/mode-ofb.mjs.map +1 -0
- package/dist/_virtual/pad-ansix923.mjs +5 -0
- package/dist/_virtual/pad-ansix923.mjs.map +1 -0
- package/dist/_virtual/pad-iso10126.mjs +5 -0
- package/dist/_virtual/pad-iso10126.mjs.map +1 -0
- package/dist/_virtual/pad-iso97971.mjs +5 -0
- package/dist/_virtual/pad-iso97971.mjs.map +1 -0
- package/dist/_virtual/pad-nopadding.mjs +5 -0
- package/dist/_virtual/pad-nopadding.mjs.map +1 -0
- package/dist/_virtual/pad-zeropadding.mjs +5 -0
- package/dist/_virtual/pad-zeropadding.mjs.map +1 -0
- package/dist/_virtual/pbkdf2.mjs +5 -0
- package/dist/_virtual/pbkdf2.mjs.map +1 -0
- package/dist/_virtual/rabbit-legacy.mjs +5 -0
- package/dist/_virtual/rabbit-legacy.mjs.map +1 -0
- package/dist/_virtual/rabbit.mjs +5 -0
- package/dist/_virtual/rabbit.mjs.map +1 -0
- package/dist/_virtual/rc4.mjs +5 -0
- package/dist/_virtual/rc4.mjs.map +1 -0
- package/dist/_virtual/ripemd160.mjs +5 -0
- package/dist/_virtual/ripemd160.mjs.map +1 -0
- package/dist/_virtual/sha1.mjs +5 -0
- package/dist/_virtual/sha1.mjs.map +1 -0
- package/dist/_virtual/sha224.mjs +5 -0
- package/dist/_virtual/sha224.mjs.map +1 -0
- package/dist/_virtual/sha256.mjs +5 -0
- package/dist/_virtual/sha256.mjs.map +1 -0
- package/dist/_virtual/sha3.mjs +5 -0
- package/dist/_virtual/sha3.mjs.map +1 -0
- package/dist/_virtual/sha384.mjs +5 -0
- package/dist/_virtual/sha384.mjs.map +1 -0
- package/dist/_virtual/sha512.mjs +5 -0
- package/dist/_virtual/sha512.mjs.map +1 -0
- package/dist/_virtual/tripledes.mjs +5 -0
- package/dist/_virtual/tripledes.mjs.map +1 -0
- package/dist/_virtual/x64-core.mjs +5 -0
- package/dist/_virtual/x64-core.mjs.map +1 -0
- package/dist/directive/index.d.ts +1 -0
- package/dist/directive/resize.d.ts +19 -0
- package/dist/directive/resize.mjs +42 -0
- package/dist/directive/resize.mjs.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/useActivated.d.ts +3 -0
- package/dist/hooks/useActivated.mjs +17 -0
- package/dist/hooks/useActivated.mjs.map +1 -0
- package/dist/hooks/useAutoFocus.d.ts +3 -0
- package/dist/hooks/useAutoFocus.mjs +20 -0
- package/dist/hooks/useAutoFocus.mjs.map +1 -0
- package/dist/hooks/useCsl.d.ts +13 -0
- package/dist/hooks/useCsl.mjs +43 -0
- package/dist/hooks/useCsl.mjs.map +1 -0
- package/dist/hooks/useDoubleClick.d.ts +7 -0
- package/dist/hooks/useDoubleClick.mjs +41 -0
- package/dist/hooks/useDoubleClick.mjs.map +1 -0
- package/dist/hooks/useProxy.d.ts +1 -0
- package/dist/hooks/useProxy.mjs +12 -0
- package/dist/hooks/useProxy.mjs.map +1 -0
- package/dist/hooks/useService/index.d.ts +3 -0
- package/dist/hooks/useService/loadMore.d.ts +2 -0
- package/dist/hooks/useService/loadMore.mjs +133 -0
- package/dist/hooks/useService/loadMore.mjs.map +1 -0
- package/dist/hooks/useService/pagination.d.ts +2 -0
- package/dist/hooks/useService/pagination.mjs +167 -0
- package/dist/hooks/useService/pagination.mjs.map +1 -0
- package/dist/hooks/useService/types.d.ts +56 -0
- package/dist/hooks/useTimer.d.ts +22 -0
- package/dist/hooks/useTimer.mjs +31 -0
- package/dist/hooks/useTimer.mjs.map +1 -0
- package/dist/hooks/useTplRefsList.d.ts +5 -0
- package/dist/hooks/useTplRefsList.mjs +18 -0
- package/dist/hooks/useTplRefsList.mjs.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.mjs +105 -0
- package/dist/index.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.mjs +163 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/blowfish.mjs +1198 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/blowfish.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/cipher-core.mjs +650 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/cipher-core.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/core.mjs +615 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/core.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64.mjs +113 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64url.mjs +124 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64url.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf16.mjs +123 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf16.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/evpkdf.mjs +98 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/evpkdf.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/format-hex.mjs +66 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/format-hex.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/hmac.mjs +112 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/hmac.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.mjs +56 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/lib-typedarrays.mjs +50 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/lib-typedarrays.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/md5.mjs +184 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/md5.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-cfb.mjs +58 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-cfb.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr-gladman.mjs +81 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr-gladman.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr.mjs +46 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.mjs +37 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ofb.mjs +44 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ofb.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-ansix923.mjs +38 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-ansix923.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso10126.mjs +34 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso10126.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso97971.mjs +33 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso97971.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-nopadding.mjs +29 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-nopadding.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-zeropadding.mjs +40 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-zeropadding.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pbkdf2.mjs +105 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pbkdf2.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit-legacy.mjs +135 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit-legacy.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit.mjs +138 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rc4.mjs +92 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rc4.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/ripemd160.mjs +476 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/ripemd160.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha1.mjs +96 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha1.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha224.mjs +51 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha224.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha256.mjs +126 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha256.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha3.mjs +208 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha3.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha384.mjs +53 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha384.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha512.mjs +288 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha512.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/tripledes.mjs +790 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/tripledes.mjs.map +1 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/x64-core.mjs +262 -0
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/x64-core.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/JSEncrypt.mjs +123 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/JSEncrypt.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/JSEncryptRSAKey.mjs +182 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/JSEncryptRSAKey.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/index.mjs +6 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/index.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/asn1.mjs +541 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/asn1.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/base64.mjs +75 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/base64.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/hex.mjs +53 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/hex.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/int10.mjs +75 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/int10.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/base64.mjs +65 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/base64.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/jsbn.mjs +1487 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/jsbn.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/prng4.mjs +47 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/prng4.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/rng.mjs +73 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/rng.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/rsa.mjs +357 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/rsa.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/sha256.mjs +104 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/sha256.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/util.mjs +60 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/util.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsrsasign/asn1-1.0.mjs +746 -0
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsrsasign/asn1-1.0.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/regular/jsonrepair.mjs +567 -0
- package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/regular/jsonrepair.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/JSONRepairError.mjs +10 -0
- package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/JSONRepairError.mjs.map +1 -0
- package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/stringUtils.mjs +114 -0
- package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/stringUtils.mjs.map +1 -0
- 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
- 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
- package/dist/utils/calc.d.ts +5 -0
- package/dist/utils/calc.mjs +54 -0
- package/dist/utils/calc.mjs.map +1 -0
- package/dist/utils/common.d.ts +48 -0
- package/dist/utils/common.mjs +125 -0
- package/dist/utils/common.mjs.map +1 -0
- package/dist/utils/conversion.d.ts +12 -0
- package/dist/utils/conversion.mjs +59 -0
- package/dist/utils/conversion.mjs.map +1 -0
- package/dist/utils/crypto.d.ts +7 -0
- package/dist/utils/crypto.mjs +39 -0
- package/dist/utils/crypto.mjs.map +1 -0
- package/dist/utils/dom.d.ts +4 -0
- package/dist/utils/dom.mjs +29 -0
- package/dist/utils/dom.mjs.map +1 -0
- package/dist/utils/download.d.ts +1 -0
- package/dist/utils/download.mjs +20 -0
- package/dist/utils/download.mjs.map +1 -0
- package/dist/utils/file.d.ts +7 -0
- package/dist/utils/file.mjs +48 -0
- package/dist/utils/file.mjs.map +1 -0
- package/dist/utils/glob.d.ts +1 -0
- package/dist/utils/glob.mjs +16 -0
- package/dist/utils/glob.mjs.map +1 -0
- package/dist/utils/index.d.ts +15 -0
- package/dist/utils/jsencrypt.d.ts +2 -0
- package/dist/utils/jsencrypt.mjs +16 -0
- package/dist/utils/jsencrypt.mjs.map +1 -0
- package/dist/utils/json.d.ts +3 -0
- package/dist/utils/json.mjs +24 -0
- package/dist/utils/json.mjs.map +1 -0
- package/dist/utils/platformInfo.d.ts +16 -0
- package/dist/utils/promise.d.ts +7 -0
- package/dist/utils/promise.mjs +38 -0
- package/dist/utils/promise.mjs.map +1 -0
- package/dist/utils/str.d.ts +8 -0
- package/dist/utils/str.mjs +78 -0
- package/dist/utils/str.mjs.map +1 -0
- package/dist/utils/type.d.ts +6 -0
- package/dist/utils/type.mjs +21 -0
- package/dist/utils/type.mjs.map +1 -0
- package/dist/utils/url.d.ts +4 -0
- package/dist/utils/url.mjs +75 -0
- package/dist/utils/url.mjs.map +1 -0
- package/dist/utils/validator.d.ts +14 -0
- package/dist/utils/validator.mjs +51 -0
- package/dist/utils/validator.mjs.map +1 -0
- package/dist/utils/vitePlugin.d.ts +8 -0
- package/dist/vite/qidian-vite-plugin.cjs.js +68 -0
- package/dist/vite/qidian-vite-plugin.cjs.js.map +1 -0
- package/dist/vite/qidian-vite-plugin.es.js +68 -0
- package/dist/vite/qidian-vite-plugin.es.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.mjs","sources":["../../src/utils/download.ts"],"sourcesContent":["/**\n * 简单下载\n * @param {file|string} res 文件或地址\n * @param {string} name 文件名称\n */\nexport function easyDownload(res: File | Blob | string, name: string) {\n const navigator = window.navigator as Navigator & {\n msSaveOrOpenBlob?: (res: File | Blob | string, name: string) => void\n }\n\n if (navigator && navigator.msSaveOrOpenBlob) {\n navigator.msSaveOrOpenBlob(res, name) // 兼容ie11\n } else {\n const aTag = document.createElement('a')\n aTag.target = '_blank'\n aTag.download = name\n aTag.href = typeof res === 'string' ? res : window.URL.createObjectURL(res)\n document.body.appendChild(aTag) // 兼容火狐\n aTag.click()\n\n setTimeout(() => {\n document.body.removeChild(aTag)\n }, 1000)\n }\n}\n"],"names":[],"mappings":"AAKO,SAAS,aAAa,KAA2B,MAAc;AACpE,QAAM,YAAY,OAAO;AAIzB,MAAI,aAAa,UAAU,kBAAkB;AAC3C,cAAU,iBAAiB,KAAK,IAAI;AAAA,EACtC,OAAO;AACL,UAAM,OAAO,SAAS,cAAc,GAAG;AACvC,SAAK,SAAS;AACd,SAAK,WAAW;AAChB,SAAK,OAAO,OAAO,QAAQ,WAAW,MAAM,OAAO,IAAI,gBAAgB,GAAG;AAC1E,aAAS,KAAK,YAAY,IAAI;AAC9B,SAAK,MAAA;AAEL,eAAW,MAAM;AACf,eAAS,KAAK,YAAY,IAAI;AAAA,IAChC,GAAG,GAAI;AAAA,EACT;AACF;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function cutFilename(name: string | undefined, num: number): string;
|
|
2
|
+
export declare function cutFileSuffix(name?: string): string;
|
|
3
|
+
export declare function isTypeByName(name: string | undefined, suffixs: string[]): boolean;
|
|
4
|
+
export declare function b2kb(size?: number): number;
|
|
5
|
+
export declare function b2mb(size?: number): number;
|
|
6
|
+
export declare function b2gb(size?: number): number;
|
|
7
|
+
export declare function formatByte(size?: number | string): string;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { toPrecision } from "./calc.mjs";
|
|
2
|
+
import { isEmpty } from "./common.mjs";
|
|
3
|
+
function cutFilename(name, num) {
|
|
4
|
+
if (!name) return "";
|
|
5
|
+
const lastIndex = name.lastIndexOf(".");
|
|
6
|
+
const suffix = lastIndex === -1 ? "" : name.substring(lastIndex + 1);
|
|
7
|
+
return `${name.substring(0, num - suffix.length - 1)}.${suffix}`;
|
|
8
|
+
}
|
|
9
|
+
function cutFileSuffix(name) {
|
|
10
|
+
if (!name) return "";
|
|
11
|
+
const nameSplit = name.split(".");
|
|
12
|
+
return nameSplit[nameSplit.length - 1];
|
|
13
|
+
}
|
|
14
|
+
function isTypeByName(name, suffixs) {
|
|
15
|
+
if (!name) return false;
|
|
16
|
+
return suffixs.some((suffix) => `.${cutFileSuffix(name)}`.toLowerCase() === suffix.toLowerCase());
|
|
17
|
+
}
|
|
18
|
+
function b2kb(size = 0) {
|
|
19
|
+
return size / 1024;
|
|
20
|
+
}
|
|
21
|
+
function b2mb(size = 0) {
|
|
22
|
+
return size / 1024 / 1024;
|
|
23
|
+
}
|
|
24
|
+
function b2gb(size = 0) {
|
|
25
|
+
return size / 1024 / 1024 / 1024;
|
|
26
|
+
}
|
|
27
|
+
function formatByte(size) {
|
|
28
|
+
if (isEmpty(size)) return "0B";
|
|
29
|
+
const numSize = typeof size === "string" ? parseFloat(size) : size;
|
|
30
|
+
if (numSize < 1024) {
|
|
31
|
+
return `${toPrecision(numSize, 2)}B`;
|
|
32
|
+
} else if (numSize < 1024 * 1024) {
|
|
33
|
+
return `${toPrecision(b2kb(numSize), 2)}KB`;
|
|
34
|
+
} else if (numSize < 1024 * 1024 * 1024) {
|
|
35
|
+
return `${toPrecision(b2mb(numSize), 2)}MB`;
|
|
36
|
+
}
|
|
37
|
+
return `${toPrecision(b2gb(numSize), 2)}GB`;
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
b2gb,
|
|
41
|
+
b2kb,
|
|
42
|
+
b2mb,
|
|
43
|
+
cutFileSuffix,
|
|
44
|
+
cutFilename,
|
|
45
|
+
formatByte,
|
|
46
|
+
isTypeByName
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=file.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.mjs","sources":["../../src/utils/file.ts"],"sourcesContent":["import { toPrecision } from './calc'\nimport { isEmpty } from './common'\n\n/**\n * 截取文件名\n * @param name 文件名称\n * @param num 开始位置\n * @returns\n */\nexport function cutFilename(name: string | undefined, num: number) {\n if (!name) return ''\n\n const lastIndex = name.lastIndexOf('.')\n const suffix = lastIndex === -1 ? '' : name.substring(lastIndex + 1)\n return `${name.substring(0, num - suffix.length - 1)}.${suffix}`\n}\n\n/**\n * 截取文件后缀名\n * @param name 文件名称\n * @returns\n */\nexport function cutFileSuffix(name?: string) {\n if (!name) return ''\n\n const nameSplit = name.split('.')\n return nameSplit[nameSplit.length - 1]\n}\n\n/**\n * 是否为该类型文件\n * @param name 文件名称\n * @param suffixs 后缀\n * @returns\n */\nexport function isTypeByName(name: string | undefined, suffixs: string[]) {\n if (!name) return false\n\n return suffixs.some((suffix) => `.${cutFileSuffix(name)}`.toLowerCase() === suffix.toLowerCase())\n}\n\n/**\n * 字节转KB\n * @param size 字节\n * @returns kb\n */\nexport function b2kb(size = 0) {\n return size / 1024\n}\n\n/**\n * 字节转MB\n * @param size 字节\n * @returns mb\n */\nexport function b2mb(size = 0) {\n return size / 1024 / 1024\n}\n\n/**\n * 字节转GB\n * @param size 字节\n * @returns gb\n */\nexport function b2gb(size = 0) {\n return size / 1024 / 1024 / 1024\n}\n\n/**\n * 格式化文件大小\n * @param size 字节\n * @returns 格式化后的文件大小字符串\n */\nexport function formatByte(size?: number | string) {\n if (isEmpty(size)) return '0B'\n\n const numSize = typeof size === 'string' ? parseFloat(size) : size\n if (numSize < 1024) {\n return `${toPrecision(numSize, 2)}B`\n } else if (numSize < 1024 * 1024) {\n return `${toPrecision(b2kb(numSize), 2)}KB`\n } else if (numSize < 1024 * 1024 * 1024) {\n return `${toPrecision(b2mb(numSize), 2)}MB`\n }\n\n return `${toPrecision(b2gb(numSize), 2)}GB`\n}\n"],"names":[],"mappings":";;AASO,SAAS,YAAY,MAA0B,KAAa;AACjE,MAAI,CAAC,KAAM,QAAO;AAElB,QAAM,YAAY,KAAK,YAAY,GAAG;AACtC,QAAM,SAAS,cAAc,KAAK,KAAK,KAAK,UAAU,YAAY,CAAC;AACnE,SAAO,GAAG,KAAK,UAAU,GAAG,MAAM,OAAO,SAAS,CAAC,CAAC,IAAI,MAAM;AAChE;AAOO,SAAS,cAAc,MAAe;AAC3C,MAAI,CAAC,KAAM,QAAO;AAElB,QAAM,YAAY,KAAK,MAAM,GAAG;AAChC,SAAO,UAAU,UAAU,SAAS,CAAC;AACvC;AAQO,SAAS,aAAa,MAA0B,SAAmB;AACxE,MAAI,CAAC,KAAM,QAAO;AAElB,SAAO,QAAQ,KAAK,CAAC,WAAW,IAAI,cAAc,IAAI,CAAC,GAAG,YAAA,MAAkB,OAAO,aAAa;AAClG;AAOO,SAAS,KAAK,OAAO,GAAG;AAC7B,SAAO,OAAO;AAChB;AAOO,SAAS,KAAK,OAAO,GAAG;AAC7B,SAAO,OAAO,OAAO;AACvB;AAOO,SAAS,KAAK,OAAO,GAAG;AAC7B,SAAO,OAAO,OAAO,OAAO;AAC9B;AAOO,SAAS,WAAW,MAAwB;AACjD,MAAI,QAAQ,IAAI,EAAG,QAAO;AAE1B,QAAM,UAAU,OAAO,SAAS,WAAW,WAAW,IAAI,IAAI;AAC9D,MAAI,UAAU,MAAM;AAClB,WAAO,GAAG,YAAY,SAAS,CAAC,CAAC;AAAA,EACnC,WAAW,UAAU,OAAO,MAAM;AAChC,WAAO,GAAG,YAAY,KAAK,OAAO,GAAG,CAAC,CAAC;AAAA,EACzC,WAAW,UAAU,OAAO,OAAO,MAAM;AACvC,WAAO,GAAG,YAAY,KAAK,OAAO,GAAG,CAAC,CAAC;AAAA,EACzC;AAEA,SAAO,GAAG,YAAY,KAAK,OAAO,GAAG,CAAC,CAAC;AACzC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function formatGlob<T = any>(data: Record<string, T>, removeSuffix?: boolean): Record<string, T>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
function formatGlob(data, removeSuffix) {
|
|
2
|
+
const map = {};
|
|
3
|
+
for (const key in data) {
|
|
4
|
+
const keySplit = key.split("/");
|
|
5
|
+
let name = keySplit[keySplit.length - 1];
|
|
6
|
+
if (removeSuffix) {
|
|
7
|
+
name = name.slice(0, name.lastIndexOf("."));
|
|
8
|
+
}
|
|
9
|
+
map[name] = data[key];
|
|
10
|
+
}
|
|
11
|
+
return map;
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
formatGlob
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=glob.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glob.mjs","sources":["../../src/utils/glob.ts"],"sourcesContent":["/**\n * 处理 glob\n * @param data 数据\n * @param removeSuffix 是否去除后缀\n * @returns 处理后的数据\n */\nexport function formatGlob<T = any>(data: Record<string, T>, removeSuffix?: boolean) {\n const map: Record<string, T> = {}\n for (const key in data) {\n const keySplit = key.split('/')\n let name = keySplit[keySplit.length - 1]\n if (removeSuffix) {\n name = name.slice(0, name.lastIndexOf('.'))\n }\n map[name] = data[key]\n }\n\n return map\n}\n"],"names":[],"mappings":"AAMO,SAAS,WAAoB,MAAyB,cAAwB;AACnF,QAAM,MAAyB,CAAA;AAC/B,aAAW,OAAO,MAAM;AACtB,UAAM,WAAW,IAAI,MAAM,GAAG;AAC9B,QAAI,OAAO,SAAS,SAAS,SAAS,CAAC;AACvC,QAAI,cAAc;AAChB,aAAO,KAAK,MAAM,GAAG,KAAK,YAAY,GAAG,CAAC;AAAA,IAC5C;AACA,QAAI,IAAI,IAAI,KAAK,GAAG;AAAA,EACtB;AAEA,SAAO;AACT;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from './calc';
|
|
2
|
+
export * from './common';
|
|
3
|
+
export * from './conversion';
|
|
4
|
+
export * from './crypto';
|
|
5
|
+
export * from './dom';
|
|
6
|
+
export * from './download';
|
|
7
|
+
export * from './file';
|
|
8
|
+
export * from './glob';
|
|
9
|
+
export * from './jsencrypt';
|
|
10
|
+
export * from './json';
|
|
11
|
+
export * from './promise';
|
|
12
|
+
export * from './str';
|
|
13
|
+
export * from './type';
|
|
14
|
+
export * from './url';
|
|
15
|
+
export * from './validator';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { JSEncrypt } from "../node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/JSEncrypt.mjs";
|
|
2
|
+
function encrypt(publicKey, txt) {
|
|
3
|
+
const encryptor = new JSEncrypt();
|
|
4
|
+
encryptor.setPublicKey(publicKey);
|
|
5
|
+
return encryptor.encrypt(txt);
|
|
6
|
+
}
|
|
7
|
+
function decrypt(privateKey, txt) {
|
|
8
|
+
const encryptor = new JSEncrypt();
|
|
9
|
+
encryptor.setPrivateKey(privateKey);
|
|
10
|
+
return encryptor.decrypt(txt);
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
decrypt,
|
|
14
|
+
encrypt
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=jsencrypt.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsencrypt.mjs","sources":["../../src/utils/jsencrypt.ts"],"sourcesContent":["import JSEncrypt from 'jsencrypt'\n\n/**\n * 加密\n * @param publicKey 公钥\n * @param txt\n * @returns 结果\n */\nexport function encrypt(publicKey: string, txt: string) {\n const encryptor = new JSEncrypt()\n encryptor.setPublicKey(publicKey) // 设置公钥\n return encryptor.encrypt(txt) // 对数据进行加密\n}\n\n/**\n * 解密\n * @param privateKey 私钥\n * @param txt\n * @returns 结果\n */\nexport function decrypt(privateKey: string, txt: string) {\n const encryptor = new JSEncrypt()\n encryptor.setPrivateKey(privateKey) // 设置私钥\n return encryptor.decrypt(txt) // 对数据进行解密\n}\n"],"names":[],"mappings":";AAQO,SAAS,QAAQ,WAAmB,KAAa;AACtD,QAAM,YAAY,IAAI,UAAA;AACtB,YAAU,aAAa,SAAS;AAChC,SAAO,UAAU,QAAQ,GAAG;AAC9B;AAQO,SAAS,QAAQ,YAAoB,KAAa;AACvD,QAAM,YAAY,IAAI,UAAA;AACtB,YAAU,cAAc,UAAU;AAClC,SAAO,UAAU,QAAQ,GAAG;AAC9B;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsonrepair } from "../node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/regular/jsonrepair.mjs";
|
|
2
|
+
function parseRelaxedJSON(str, options) {
|
|
3
|
+
const startObj = str.indexOf("{");
|
|
4
|
+
const endObj = str.lastIndexOf("}");
|
|
5
|
+
const startArr = str.indexOf("[");
|
|
6
|
+
const endArr = str.lastIndexOf("]");
|
|
7
|
+
if (startObj > -1 && (startObj < startArr || startArr === -1) && endObj > -1 && (endObj > endArr || endArr === -1) && endObj > startObj) {
|
|
8
|
+
str = str.slice(startObj, endObj + 1);
|
|
9
|
+
} else if (startArr > -1 && endArr > -1 && endArr > startArr) {
|
|
10
|
+
str = str.slice(startArr, endArr + 1);
|
|
11
|
+
}
|
|
12
|
+
if (options?.eval) {
|
|
13
|
+
try {
|
|
14
|
+
return new Function(`return (${str})`)();
|
|
15
|
+
} catch {
|
|
16
|
+
return JSON.parse(jsonrepair(str));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return JSON.parse(jsonrepair(str));
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
parseRelaxedJSON
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=json.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.mjs","sources":["../../src/utils/json.ts"],"sourcesContent":["import { jsonrepair } from 'jsonrepair'\n\n/**\n * 宽松解析 JSON 字符串\n * @param str 字符串\n * @returns 解析后的对象\n */\nexport function parseRelaxedJSON<T = unknown>(str: string, options?: { eval?: boolean }): T {\n const startObj = str.indexOf('{')\n const endObj = str.lastIndexOf('}')\n const startArr = str.indexOf('[')\n const endArr = str.lastIndexOf(']')\n\n if (\n startObj > -1 &&\n (startObj < startArr || startArr === -1) &&\n endObj > -1 &&\n (endObj > endArr || endArr === -1) &&\n endObj > startObj\n ) {\n str = str.slice(startObj, endObj + 1)\n } else if (startArr > -1 && endArr > -1 && endArr > startArr) {\n str = str.slice(startArr, endArr + 1)\n }\n\n if (options?.eval) {\n try {\n // 安全执行表达式,返回 JS 对象\n return new Function(`return (${str})`)() as T\n } catch {\n return JSON.parse(jsonrepair(str)) as T\n }\n }\n\n return JSON.parse(jsonrepair(str)) as T\n}\n"],"names":[],"mappings":";AAOO,SAAS,iBAA8B,KAAa,SAAiC;AAC1F,QAAM,WAAW,IAAI,QAAQ,GAAG;AAChC,QAAM,SAAS,IAAI,YAAY,GAAG;AAClC,QAAM,WAAW,IAAI,QAAQ,GAAG;AAChC,QAAM,SAAS,IAAI,YAAY,GAAG;AAElC,MACE,WAAW,OACV,WAAW,YAAY,aAAa,OACrC,SAAS,OACR,SAAS,UAAU,WAAW,OAC/B,SAAS,UACT;AACA,UAAM,IAAI,MAAM,UAAU,SAAS,CAAC;AAAA,EACtC,WAAW,WAAW,MAAM,SAAS,MAAM,SAAS,UAAU;AAC5D,UAAM,IAAI,MAAM,UAAU,SAAS,CAAC;AAAA,EACtC;AAEA,MAAI,SAAS,MAAM;AACjB,QAAI;AAEF,aAAO,IAAI,SAAS,WAAW,GAAG,GAAG,EAAA;AAAA,IACvC,QAAQ;AACN,aAAO,KAAK,MAAM,WAAW,GAAG,CAAC;AAAA,IACnC;AAAA,EACF;AAEA,SAAO,KAAK,MAAM,WAAW,GAAG,CAAC;AACnC;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface PlatformInfo {
|
|
2
|
+
system: string;
|
|
3
|
+
beWrapped: boolean;
|
|
4
|
+
engine: string;
|
|
5
|
+
supporter: string;
|
|
6
|
+
shell: string;
|
|
7
|
+
shellVs: string;
|
|
8
|
+
networkType: string;
|
|
9
|
+
systemVs: string;
|
|
10
|
+
platform: string;
|
|
11
|
+
client: string;
|
|
12
|
+
engineVs: string;
|
|
13
|
+
supporterVs: string;
|
|
14
|
+
webp: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function getPlatformInfo(): PlatformInfo;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function to<T, U = Error>(promise: Promise<T>, errorExt?: object): Promise<[U, undefined] | [null, T]>;
|
|
2
|
+
export declare function suspectedWrapperPromise<T, U = Error>(p: T | Promise<T>): Promise<[U, undefined] | [null, T]>;
|
|
3
|
+
export interface AbortWrapperPromise<T = any> extends Promise<T> {
|
|
4
|
+
abort?: (reasonToAbort: any) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function abortWrapper<T>(p1: Promise<T>): AbortWrapperPromise<T>;
|
|
7
|
+
export declare function waitTime(time: number): Promise<void>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { isPromise } from "./type.mjs";
|
|
2
|
+
function to(promise, errorExt) {
|
|
3
|
+
return promise.then((data) => [null, data]).catch((err) => {
|
|
4
|
+
if (errorExt) {
|
|
5
|
+
const parsedError = { ...err, ...errorExt };
|
|
6
|
+
return [parsedError, void 0];
|
|
7
|
+
}
|
|
8
|
+
return [err ?? true, void 0];
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
async function suspectedWrapperPromise(p) {
|
|
12
|
+
if (isPromise(p)) {
|
|
13
|
+
const [err, res] = await to(p);
|
|
14
|
+
if (err) return [err, void 0];
|
|
15
|
+
return [null, res];
|
|
16
|
+
} else {
|
|
17
|
+
return [null, p];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function abortWrapper(p1) {
|
|
21
|
+
let abort;
|
|
22
|
+
const p2 = new Promise((resolve, reject) => abort = reject);
|
|
23
|
+
const p = Promise.race([p1, p2]);
|
|
24
|
+
p.abort = abort;
|
|
25
|
+
return p;
|
|
26
|
+
}
|
|
27
|
+
function waitTime(time) {
|
|
28
|
+
return new Promise((resolve) => {
|
|
29
|
+
setTimeout(resolve, time);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
export {
|
|
33
|
+
abortWrapper,
|
|
34
|
+
suspectedWrapperPromise,
|
|
35
|
+
to,
|
|
36
|
+
waitTime
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=promise.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promise.mjs","sources":["../../src/utils/promise.ts"],"sourcesContent":["import { isPromise } from './type'\n\n/**\n * https://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/\n * @param promise\n * @param errorExt 你可以传递给 err 对象的附加信息\n * @returns [err, res]\n */\nexport function to<T, U = Error>(\n promise: Promise<T>,\n errorExt?: object\n): Promise<[U, undefined] | [null, T]> {\n return promise\n .then<[null, T]>((data: T) => [null, data])\n .catch<[U, undefined]>((err: U) => {\n if (errorExt) {\n const parsedError = { ...err, ...errorExt }\n return [parsedError, undefined]\n }\n\n return [err ?? (true as U), undefined]\n })\n}\n\n/**\n * 疑似Promise包装器\n * @param promise\n */\nexport async function suspectedWrapperPromise<T, U = Error>(\n p: T | Promise<T>\n): Promise<[U, undefined] | [null, T]> {\n if (isPromise(p)) {\n const [err, res] = await to<T, U>(p as Promise<T>)\n if (err) return [err, undefined]\n\n return [null, res as T]\n } else {\n return [null, p]\n }\n}\n\n/**\n * 中止包装器\n * @param {promise} p1\n * @return {promise}\n */\nexport interface AbortWrapperPromise<T = any> extends Promise<T> {\n abort?: (reasonToAbort: any) => void\n}\nexport function abortWrapper<T>(p1: Promise<T>) {\n let abort\n const p2 = new Promise((resolve, reject) => (abort = reject))\n const p = Promise.race([p1, p2]) as AbortWrapperPromise<T>\n p.abort = abort\n return p\n}\n\n/**\n * 等待\n * @param time 毫秒\n */\nexport function waitTime(time: number) {\n return new Promise<void>((resolve) => {\n setTimeout(resolve, time)\n })\n}\n"],"names":[],"mappings":";AAQO,SAAS,GACd,SACA,UACqC;AACrC,SAAO,QACJ,KAAgB,CAAC,SAAY,CAAC,MAAM,IAAI,CAAC,EACzC,MAAsB,CAAC,QAAW;AACjC,QAAI,UAAU;AACZ,YAAM,cAAc,EAAE,GAAG,KAAK,GAAG,SAAA;AACjC,aAAO,CAAC,aAAa,MAAS;AAAA,IAChC;AAEA,WAAO,CAAC,OAAQ,MAAY,MAAS;AAAA,EACvC,CAAC;AACL;AAMA,eAAsB,wBACpB,GACqC;AACrC,MAAI,UAAU,CAAC,GAAG;AAChB,UAAM,CAAC,KAAK,GAAG,IAAI,MAAM,GAAS,CAAe;AACjD,QAAI,IAAK,QAAO,CAAC,KAAK,MAAS;AAE/B,WAAO,CAAC,MAAM,GAAQ;AAAA,EACxB,OAAO;AACL,WAAO,CAAC,MAAM,CAAC;AAAA,EACjB;AACF;AAUO,SAAS,aAAgB,IAAgB;AAC9C,MAAI;AACJ,QAAM,KAAK,IAAI,QAAQ,CAAC,SAAS,WAAY,QAAQ,MAAO;AAC5D,QAAM,IAAI,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;AAC/B,IAAE,QAAQ;AACV,SAAO;AACT;AAMO,SAAS,SAAS,MAAc;AACrC,SAAO,IAAI,QAAc,CAAC,YAAY;AACpC,eAAW,SAAS,IAAI;AAAA,EAC1B,CAAC;AACH;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function initialConversion(str: string, isLowerCase?: boolean): string;
|
|
2
|
+
export declare function camelize(str: string): string;
|
|
3
|
+
export declare function kebabCase(str: string, separator?: string): string;
|
|
4
|
+
export declare function levenshtein(a: string, b: string): number;
|
|
5
|
+
export declare function copy2Clipboard(input: string, { target }?: {
|
|
6
|
+
target?: HTMLElement | undefined;
|
|
7
|
+
}): boolean;
|
|
8
|
+
export declare function deleteSpace(str: string): string;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
function initialConversion(str, isLowerCase) {
|
|
2
|
+
if (!isLowerCase) {
|
|
3
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
4
|
+
} else {
|
|
5
|
+
return str.charAt(0).toLowerCase() + str.slice(1);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
function camelize(str) {
|
|
9
|
+
return str.replace(/[-_](\w)/g, (_, c) => c.toUpperCase());
|
|
10
|
+
}
|
|
11
|
+
function kebabCase(str, separator = "-") {
|
|
12
|
+
return str.replace(/([A-Z])/g, `${separator}$1`).toLowerCase().replace(new RegExp(`^\\${separator}`), "");
|
|
13
|
+
}
|
|
14
|
+
function levenshtein(a, b) {
|
|
15
|
+
const matrix = [];
|
|
16
|
+
for (let i = 0; i <= b.length; i++) {
|
|
17
|
+
matrix[i] = [i];
|
|
18
|
+
}
|
|
19
|
+
for (let j = 0; j <= a.length; j++) {
|
|
20
|
+
matrix[0][j] = j;
|
|
21
|
+
}
|
|
22
|
+
for (let i = 1; i <= b.length; i++) {
|
|
23
|
+
for (let j = 1; j <= a.length; j++) {
|
|
24
|
+
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
25
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
26
|
+
} else {
|
|
27
|
+
matrix[i][j] = Math.min(
|
|
28
|
+
matrix[i - 1][j - 1] + 1,
|
|
29
|
+
matrix[i][j - 1] + 1,
|
|
30
|
+
matrix[i - 1][j] + 1
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return 1 - matrix[b.length][a.length] / Math.max(a.length, b.length);
|
|
36
|
+
}
|
|
37
|
+
function copy2Clipboard(input, { target = document.body } = {}) {
|
|
38
|
+
const element = document.createElement("textarea");
|
|
39
|
+
const previouslyFocusedElement = document.activeElement;
|
|
40
|
+
element.value = input;
|
|
41
|
+
element.setAttribute("readonly", "");
|
|
42
|
+
element.style.contain = "strict";
|
|
43
|
+
element.style.position = "absolute";
|
|
44
|
+
element.style.left = "-9999px";
|
|
45
|
+
element.style.fontSize = "12pt";
|
|
46
|
+
const selection = document.getSelection();
|
|
47
|
+
const originalRange = selection && selection.rangeCount > 0 && selection.getRangeAt(0);
|
|
48
|
+
target.append(element);
|
|
49
|
+
element.select();
|
|
50
|
+
element.selectionStart = 0;
|
|
51
|
+
element.selectionEnd = input.length;
|
|
52
|
+
let isSuccess = false;
|
|
53
|
+
try {
|
|
54
|
+
isSuccess = document.execCommand("copy");
|
|
55
|
+
} catch {
|
|
56
|
+
}
|
|
57
|
+
element.remove();
|
|
58
|
+
if (originalRange) {
|
|
59
|
+
selection.removeAllRanges();
|
|
60
|
+
selection.addRange(originalRange);
|
|
61
|
+
}
|
|
62
|
+
if (previouslyFocusedElement) {
|
|
63
|
+
previouslyFocusedElement?.focus();
|
|
64
|
+
}
|
|
65
|
+
return isSuccess;
|
|
66
|
+
}
|
|
67
|
+
function deleteSpace(str) {
|
|
68
|
+
return str.replace(/\s*/g, "");
|
|
69
|
+
}
|
|
70
|
+
export {
|
|
71
|
+
camelize,
|
|
72
|
+
copy2Clipboard,
|
|
73
|
+
deleteSpace,
|
|
74
|
+
initialConversion,
|
|
75
|
+
kebabCase,
|
|
76
|
+
levenshtein
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=str.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"str.mjs","sources":["../../src/utils/str.ts"],"sourcesContent":["/**\n * 首字母转换\n * @param str 要转换的string\n * @param isLowerCase 首字母是否小写(默认大写)\n * @returns 结果\n */\nexport function initialConversion(str: string, isLowerCase?: boolean) {\n if (!isLowerCase) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n } else {\n return str.charAt(0).toLowerCase() + str.slice(1)\n }\n}\n\n/**\n * 驼峰化\n * @param str\n * @returns 结果\n */\nexport function camelize(str: string) {\n return str.replace(/[-_](\\w)/g, (_, c) => c.toUpperCase())\n}\n\n/**\n * 驼峰转短横线\n * @param str\n * @param separator 分隔符(默认-)\n * @returns 结果\n */\nexport function kebabCase(str: string, separator = '-') {\n return str\n .replace(/([A-Z])/g, `${separator}$1`)\n .toLowerCase()\n .replace(new RegExp(`^\\\\${separator}`), '')\n}\n\n/**\n * 获取相似度\n * @param a 内容\n * @param b 内容\n * @returns 相似度\n */\nexport function levenshtein(a: string, b: string) {\n const matrix: number[][] = []\n\n for (let i = 0; i <= b.length; i++) {\n matrix[i] = [i]\n }\n for (let j = 0; j <= a.length; j++) {\n matrix[0][j] = j\n }\n\n for (let i = 1; i <= b.length; i++) {\n for (let j = 1; j <= a.length; j++) {\n if (b.charAt(i - 1) === a.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1]\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j - 1] + 1,\n matrix[i][j - 1] + 1,\n matrix[i - 1][j] + 1\n )\n }\n }\n }\n\n return 1 - matrix[b.length][a.length] / Math.max(a.length, b.length)\n}\n\n/**\n * 复制文本到剪贴板\n * @param input 文本\n * @param options.target 默认为 body\n */\nexport function copy2Clipboard(input: string, { target = document.body } = {}) {\n const element = document.createElement('textarea')\n const previouslyFocusedElement = document.activeElement\n\n element.value = input\n\n // Prevent keyboard from showing on mobile\n element.setAttribute('readonly', '')\n\n element.style.contain = 'strict'\n element.style.position = 'absolute'\n element.style.left = '-9999px'\n element.style.fontSize = '12pt' // Prevent zooming on iOS\n\n const selection = document.getSelection()\n const originalRange = selection && selection.rangeCount > 0 && selection.getRangeAt(0)\n\n target.append(element)\n element.select()\n\n // Explicit selection workaround for iOS\n element.selectionStart = 0\n element.selectionEnd = input.length\n\n let isSuccess = false\n try {\n isSuccess = document.execCommand('copy')\n } catch {\n // ignore\n }\n\n element.remove()\n\n if (originalRange) {\n selection.removeAllRanges()\n selection.addRange(originalRange)\n }\n\n // Get the focus back on the previously focused element, if any\n if (previouslyFocusedElement) {\n // @ts-expect-error-error\n previouslyFocusedElement?.focus()\n }\n\n return isSuccess\n}\n\n/**\n * 删除所有空格\n * @param str 值\n * @returns 删除空格后的值\n */\nexport function deleteSpace(str: string) {\n return str.replace(/\\s*/g, '')\n}\n"],"names":[],"mappings":"AAMO,SAAS,kBAAkB,KAAa,aAAuB;AACpE,MAAI,CAAC,aAAa;AAChB,WAAO,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAAA,EAClD,OAAO;AACL,WAAO,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAAA,EAClD;AACF;AAOO,SAAS,SAAS,KAAa;AACpC,SAAO,IAAI,QAAQ,aAAa,CAAC,GAAG,MAAM,EAAE,aAAa;AAC3D;AAQO,SAAS,UAAU,KAAa,YAAY,KAAK;AACtD,SAAO,IACJ,QAAQ,YAAY,GAAG,SAAS,IAAI,EACpC,YAAA,EACA,QAAQ,IAAI,OAAO,MAAM,SAAS,EAAE,GAAG,EAAE;AAC9C;AAQO,SAAS,YAAY,GAAW,GAAW;AAChD,QAAM,SAAqB,CAAA;AAE3B,WAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,WAAO,CAAC,IAAI,CAAC,CAAC;AAAA,EAChB;AACA,WAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,WAAO,CAAC,EAAE,CAAC,IAAI;AAAA,EACjB;AAEA,WAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,aAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,UAAI,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG;AACvC,eAAO,CAAC,EAAE,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,MACpC,OAAO;AACL,eAAO,CAAC,EAAE,CAAC,IAAI,KAAK;AAAA,UAClB,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;AAAA,UACvB,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI;AAAA,UACnB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI;AAAA,QAAA;AAAA,MAEvB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM;AACrE;AAOO,SAAS,eAAe,OAAe,EAAE,SAAS,SAAS,KAAA,IAAS,IAAI;AAC7E,QAAM,UAAU,SAAS,cAAc,UAAU;AACjD,QAAM,2BAA2B,SAAS;AAE1C,UAAQ,QAAQ;AAGhB,UAAQ,aAAa,YAAY,EAAE;AAEnC,UAAQ,MAAM,UAAU;AACxB,UAAQ,MAAM,WAAW;AACzB,UAAQ,MAAM,OAAO;AACrB,UAAQ,MAAM,WAAW;AAEzB,QAAM,YAAY,SAAS,aAAA;AAC3B,QAAM,gBAAgB,aAAa,UAAU,aAAa,KAAK,UAAU,WAAW,CAAC;AAErF,SAAO,OAAO,OAAO;AACrB,UAAQ,OAAA;AAGR,UAAQ,iBAAiB;AACzB,UAAQ,eAAe,MAAM;AAE7B,MAAI,YAAY;AAChB,MAAI;AACF,gBAAY,SAAS,YAAY,MAAM;AAAA,EACzC,QAAQ;AAAA,EAER;AAEA,UAAQ,OAAA;AAER,MAAI,eAAe;AACjB,cAAU,gBAAA;AACV,cAAU,SAAS,aAAa;AAAA,EAClC;AAGA,MAAI,0BAA0B;AAE5B,8BAA0B,MAAA;AAAA,EAC5B;AAEA,SAAO;AACT;AAOO,SAAS,YAAY,KAAa;AACvC,SAAO,IAAI,QAAQ,QAAQ,EAAE;AAC/B;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const objToStr: () => string;
|
|
2
|
+
export declare const toTypeStr: (val: unknown) => string;
|
|
3
|
+
export declare const isFunction: (val: unknown) => val is (...any: unknown[]) => unknown;
|
|
4
|
+
export declare const isObject: <T extends Record<string, unknown> = Record<string, unknown>>(val: unknown) => val is T;
|
|
5
|
+
export declare const isPromise: (val: unknown) => val is Promise<unknown>;
|
|
6
|
+
export declare const identifyType: (val: unknown) => string;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const objToStr = Object.prototype.toString;
|
|
2
|
+
const toTypeStr = (val) => objToStr.call(val);
|
|
3
|
+
const isFunction = (val) => typeof val === "function";
|
|
4
|
+
const isObject = (val) => {
|
|
5
|
+
return val !== null && typeof val === "object";
|
|
6
|
+
};
|
|
7
|
+
const isPromise = (val) => {
|
|
8
|
+
return isObject(val) && isFunction(val.then) && isFunction(val.catch);
|
|
9
|
+
};
|
|
10
|
+
const identifyType = (val) => {
|
|
11
|
+
return toTypeStr(val).replace("[object ", "").replace("]", "").toLowerCase();
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
identifyType,
|
|
15
|
+
isFunction,
|
|
16
|
+
isObject,
|
|
17
|
+
isPromise,
|
|
18
|
+
objToStr,
|
|
19
|
+
toTypeStr
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=type.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.mjs","sources":["../../src/utils/type.ts"],"sourcesContent":["export const objToStr = Object.prototype.toString\nexport const toTypeStr = (val: unknown) => objToStr.call(val)\n\nexport const isFunction = (val: unknown): val is (...any: unknown[]) => unknown =>\n typeof val === 'function'\n\nexport const isObject = <T extends Record<string, unknown> = Record<string, unknown>>(\n val: unknown\n): val is T => {\n return val !== null && typeof val === 'object'\n}\n\nexport const isPromise = (val: unknown): val is Promise<unknown> => {\n return isObject(val) && isFunction(val.then) && isFunction(val.catch)\n}\n\n/**\n * 准确识别类型\n * @param val 任何参数\n * @returns 识别的类型\n */\nexport const identifyType = (val: unknown) => {\n return toTypeStr(val).replace('[object ', '').replace(']', '').toLowerCase()\n}\n"],"names":[],"mappings":"AAAO,MAAM,WAAW,OAAO,UAAU;AAClC,MAAM,YAAY,CAAC,QAAiB,SAAS,KAAK,GAAG;AAErD,MAAM,aAAa,CAAC,QACzB,OAAO,QAAQ;AAEV,MAAM,WAAW,CACtB,QACa;AACb,SAAO,QAAQ,QAAQ,OAAO,QAAQ;AACxC;AAEO,MAAM,YAAY,CAAC,QAA0C;AAClE,SAAO,SAAS,GAAG,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,KAAK;AACtE;AAOO,MAAM,eAAe,CAAC,QAAiB;AAC5C,SAAO,UAAU,GAAG,EAAE,QAAQ,YAAY,EAAE,EAAE,QAAQ,KAAK,EAAE,EAAE,YAAA;AACjE;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function getUrlParams(url?: string): Record<string, string>;
|
|
2
|
+
export declare function getUrlParam(key: string, url?: string): string;
|
|
3
|
+
export declare function deleteUrlParams(params: Array<string>, url?: string): string;
|
|
4
|
+
export declare function setUrlParam(key: string, value: string | number | boolean | null | undefined, url?: string, andString?: string, newKey?: string): string;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
function getUrlParams(url) {
|
|
2
|
+
url = url || window?.location.href;
|
|
3
|
+
const res = {};
|
|
4
|
+
const params = url.match(/([^?=&#]+)=([^?&#]+)/g) || [];
|
|
5
|
+
params.forEach((item) => {
|
|
6
|
+
item = decodeURIComponent(item);
|
|
7
|
+
const index = item.indexOf("=");
|
|
8
|
+
res[item.slice(0, index)] = item.slice(index + 1);
|
|
9
|
+
});
|
|
10
|
+
return res;
|
|
11
|
+
}
|
|
12
|
+
function getUrlParam(key, url) {
|
|
13
|
+
url = url || window?.location.href;
|
|
14
|
+
const keyRegx = new RegExp("(^|\\?|&|#)(?:" + key + ")=([^&#]*)(&|$)?");
|
|
15
|
+
const keyRegxResult = url.match(keyRegx);
|
|
16
|
+
return keyRegxResult ? decodeURIComponent(keyRegxResult[2] || "") || "" : "";
|
|
17
|
+
}
|
|
18
|
+
function deleteUrlParams(params, url) {
|
|
19
|
+
url = url || window?.location.href;
|
|
20
|
+
const res = url.split("?");
|
|
21
|
+
for (let i = 1; i < res.length; i++) {
|
|
22
|
+
res[i] = `?${res[i]}`;
|
|
23
|
+
params.forEach((item) => {
|
|
24
|
+
const reg = new RegExp(`[?&]${item}=([^&#]*)`, "i");
|
|
25
|
+
res[i] = res[i].replace(reg, "");
|
|
26
|
+
if (res[i][0] === "&") res[i] = res[i].replace("&", "?");
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return res.join("");
|
|
30
|
+
}
|
|
31
|
+
function setUrlParam(key, value, url, andString, newKey) {
|
|
32
|
+
url = url || window?.location.href;
|
|
33
|
+
const keyRegx = new RegExp("(^|\\?|&|#)(" + key + ")=([^&#]*)(&|$)?");
|
|
34
|
+
const keyRegxResult = url.match(keyRegx);
|
|
35
|
+
const keyName = newKey || (keyRegxResult ? keyRegxResult[2] : key);
|
|
36
|
+
let and = "&";
|
|
37
|
+
if (url.indexOf("?") === -1) {
|
|
38
|
+
and = "?";
|
|
39
|
+
} else if (andString === "#" && url.indexOf("#") === -1) {
|
|
40
|
+
and = "#";
|
|
41
|
+
}
|
|
42
|
+
let andtype = "";
|
|
43
|
+
let urltmp = "";
|
|
44
|
+
if (keyRegxResult) {
|
|
45
|
+
urltmp = url.replace(keyRegx, ($1, $and, $key, $val, $nextAnd) => {
|
|
46
|
+
let result = andtype = $and;
|
|
47
|
+
if (value !== null) {
|
|
48
|
+
if (value === "undefined") value = "";
|
|
49
|
+
result = (andtype || and) + keyName + "=" + value + ($nextAnd || "");
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
});
|
|
53
|
+
} else {
|
|
54
|
+
if (value !== null) {
|
|
55
|
+
if (value === "undefined") value = "";
|
|
56
|
+
urltmp = url + and + keyName + "=" + value;
|
|
57
|
+
} else {
|
|
58
|
+
urltmp = url;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (urltmp.indexOf(andtype) === urltmp.length - 1) {
|
|
62
|
+
urltmp = urltmp.substring(0, urltmp.length - 1);
|
|
63
|
+
}
|
|
64
|
+
if (/[\\?&#]$/.test(urltmp)) {
|
|
65
|
+
urltmp.substring(0, urltmp.length - 1);
|
|
66
|
+
}
|
|
67
|
+
return urltmp;
|
|
68
|
+
}
|
|
69
|
+
export {
|
|
70
|
+
deleteUrlParams,
|
|
71
|
+
getUrlParam,
|
|
72
|
+
getUrlParams,
|
|
73
|
+
setUrlParam
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=url.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.mjs","sources":["../../src/utils/url.ts"],"sourcesContent":["/**\n * 获取url参数\n * @param {string} url\n * @return {object} url参数\n */\nexport function getUrlParams(url?: string) {\n url = url || window?.location.href\n const res: Record<string, string> = {}\n const params: Array<string> = url.match(/([^?=&#]+)=([^?&#]+)/g) || []\n\n params.forEach((item) => {\n item = decodeURIComponent(item)\n const index: number = item.indexOf('=')\n res[item.slice(0, index)] = item.slice(index + 1)\n })\n\n return res\n}\n\n/**\n * 获取url指定参数\n * @param {string} key\n * @param {string} url\n * @return {unknown}\n */\nexport function getUrlParam(key: string, url?: string) {\n url = url || window?.location.href\n\n const keyRegx = new RegExp('(^|\\\\?|&|#)(?:' + key + ')=([^&#]*)(&|$)?')\n const keyRegxResult = url.match(keyRegx)\n return keyRegxResult ? decodeURIComponent(keyRegxResult[2] || '') || '' : ''\n}\n\n/**\n * 删除url参数\n * @param {array} params\n * @param {string} url\n * @return {string} 删除参数后的url\n */\nexport function deleteUrlParams(params: Array<string>, url?: string): string {\n url = url || window?.location.href\n const res = url.split('?')\n\n for (let i = 1; i < res.length; i++) {\n res[i] = `?${res[i]}`\n\n params.forEach((item) => {\n const reg = new RegExp(`[?&]${item}=([^&#]*)`, 'i')\n res[i] = res[i].replace(reg, '')\n if (res[i][0] === '&') res[i] = res[i].replace('&', '?')\n })\n }\n\n return res.join('')\n}\n\n/**\n * 设置/删除地址参数\n * @param {string} key 可以使用分割号分开,例如:openKey|openkey,多key查询,最终输出保持找到的第一个key为标准\n * @param {string} value 如果需要删除url上面的参数,value需要设置为null,否则只会设置为空而已并不会删除\n * @param {string} url 不设置则默认使用window.location.href\n * @param {string} andString 参数拼接参数类型,设置为#将使用#拼接参数,注意,地址必须有一个?,如果没有则不会使用#\n * @param {string} newKey 设置了newKey将会使用newKey替换原来key再输出\n * @return {string} 返回设置结果地址\n */\nexport function setUrlParam(\n key: string,\n value: string | number | boolean | null | undefined,\n url?: string,\n andString?: string,\n newKey?: string\n): string {\n url = url || window?.location.href\n\n const keyRegx = new RegExp('(^|\\\\?|&|#)(' + key + ')=([^&#]*)(&|$)?')\n const keyRegxResult = url.match(keyRegx)\n const keyName = newKey || (keyRegxResult ? keyRegxResult[2] : key)\n\n let and = '&'\n // 必须保证?的存在\n if (url.indexOf('?') === -1) {\n and = '?'\n } else if (andString === '#' && url.indexOf('#') === -1) {\n and = '#'\n }\n\n // 如果原来存在连结符,则采用旧的连结符号\n let andtype = ''\n let urltmp = ''\n if (keyRegxResult) {\n urltmp = url.replace(keyRegx, ($1, $and, $key, $val, $nextAnd) => {\n let result = (andtype = $and)\n if (value !== null) {\n if (value === 'undefined') value = ''\n result = (andtype || and) + keyName + '=' + value + ($nextAnd || '') // 需要把下一个链接符也加上\n }\n return result\n })\n } else {\n if (value !== null) {\n if (value === 'undefined') value = ''\n urltmp = url + and + keyName + '=' + value\n } else {\n urltmp = url\n }\n }\n if (urltmp.indexOf(andtype) === urltmp.length - 1) {\n urltmp = urltmp.substring(0, urltmp.length - 1)\n }\n\n if (/[\\\\?&#]$/.test(urltmp)) {\n urltmp.substring(0, urltmp.length - 1) // 清除最后一个无用到链接符\n }\n\n return urltmp\n}\n"],"names":[],"mappings":"AAKO,SAAS,aAAa,KAAc;AACzC,QAAM,OAAO,QAAQ,SAAS;AAC9B,QAAM,MAA8B,CAAA;AACpC,QAAM,SAAwB,IAAI,MAAM,uBAAuB,KAAK,CAAA;AAEpE,SAAO,QAAQ,CAAC,SAAS;AACvB,WAAO,mBAAmB,IAAI;AAC9B,UAAM,QAAgB,KAAK,QAAQ,GAAG;AACtC,QAAI,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,QAAQ,CAAC;AAAA,EAClD,CAAC;AAED,SAAO;AACT;AAQO,SAAS,YAAY,KAAa,KAAc;AACrD,QAAM,OAAO,QAAQ,SAAS;AAE9B,QAAM,UAAU,IAAI,OAAO,mBAAmB,MAAM,kBAAkB;AACtE,QAAM,gBAAgB,IAAI,MAAM,OAAO;AACvC,SAAO,gBAAgB,mBAAmB,cAAc,CAAC,KAAK,EAAE,KAAK,KAAK;AAC5E;AAQO,SAAS,gBAAgB,QAAuB,KAAsB;AAC3E,QAAM,OAAO,QAAQ,SAAS;AAC9B,QAAM,MAAM,IAAI,MAAM,GAAG;AAEzB,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,QAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAEnB,WAAO,QAAQ,CAAC,SAAS;AACvB,YAAM,MAAM,IAAI,OAAO,OAAO,IAAI,aAAa,GAAG;AAClD,UAAI,CAAC,IAAI,IAAI,CAAC,EAAE,QAAQ,KAAK,EAAE;AAC/B,UAAI,IAAI,CAAC,EAAE,CAAC,MAAM,IAAK,KAAI,CAAC,IAAI,IAAI,CAAC,EAAE,QAAQ,KAAK,GAAG;AAAA,IACzD,CAAC;AAAA,EACH;AAEA,SAAO,IAAI,KAAK,EAAE;AACpB;AAWO,SAAS,YACd,KACA,OACA,KACA,WACA,QACQ;AACR,QAAM,OAAO,QAAQ,SAAS;AAE9B,QAAM,UAAU,IAAI,OAAO,iBAAiB,MAAM,kBAAkB;AACpE,QAAM,gBAAgB,IAAI,MAAM,OAAO;AACvC,QAAM,UAAU,WAAW,gBAAgB,cAAc,CAAC,IAAI;AAE9D,MAAI,MAAM;AAEV,MAAI,IAAI,QAAQ,GAAG,MAAM,IAAI;AAC3B,UAAM;AAAA,EACR,WAAW,cAAc,OAAO,IAAI,QAAQ,GAAG,MAAM,IAAI;AACvD,UAAM;AAAA,EACR;AAGA,MAAI,UAAU;AACd,MAAI,SAAS;AACb,MAAI,eAAe;AACjB,aAAS,IAAI,QAAQ,SAAS,CAAC,IAAI,MAAM,MAAM,MAAM,aAAa;AAChE,UAAI,SAAU,UAAU;AACxB,UAAI,UAAU,MAAM;AAClB,YAAI,UAAU,YAAa,SAAQ;AACnC,kBAAU,WAAW,OAAO,UAAU,MAAM,SAAS,YAAY;AAAA,MACnE;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH,OAAO;AACL,QAAI,UAAU,MAAM;AAClB,UAAI,UAAU,YAAa,SAAQ;AACnC,eAAS,MAAM,MAAM,UAAU,MAAM;AAAA,IACvC,OAAO;AACL,eAAS;AAAA,IACX;AAAA,EACF;AACA,MAAI,OAAO,QAAQ,OAAO,MAAM,OAAO,SAAS,GAAG;AACjD,aAAS,OAAO,UAAU,GAAG,OAAO,SAAS,CAAC;AAAA,EAChD;AAEA,MAAI,WAAW,KAAK,MAAM,GAAG;AAC3B,WAAO,UAAU,GAAG,OAAO,SAAS,CAAC;AAAA,EACvC;AAEA,SAAO;AACT;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MaybeRef } from 'vue';
|
|
2
|
+
export declare const validatorRegs: {
|
|
3
|
+
cellPhone: RegExp;
|
|
4
|
+
telephone: RegExp;
|
|
5
|
+
url: RegExp;
|
|
6
|
+
email: RegExp;
|
|
7
|
+
};
|
|
8
|
+
export declare function validator(value: string | number | undefined | null, type: keyof typeof validatorRegs | 'empty', required?: boolean): boolean | null;
|
|
9
|
+
export declare function checkValue<T = unknown>(value: MaybeRef<T>, options?: {
|
|
10
|
+
interval?: number;
|
|
11
|
+
timeout?: number;
|
|
12
|
+
throwOnTimeout?: boolean;
|
|
13
|
+
validator?: (val: T) => boolean;
|
|
14
|
+
}): Promise<T | undefined>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { unref } from "vue";
|
|
2
|
+
import { isEmpty } from "./common.mjs";
|
|
3
|
+
const validatorRegs = {
|
|
4
|
+
cellPhone: /^1[3-9]\d{9}$/,
|
|
5
|
+
telephone: /^\d{7,8}$/,
|
|
6
|
+
url: /^((blob:)*(https|http|ftp|rtsp|mms|wss)?:\/\/)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/,
|
|
7
|
+
email: /^([A-Za-z0-9_\\-\\.\\u4e00-\\u9fa5])+@([A-Za-z0-9_\\-\\.])+\.([A-Za-z]{2,8})$/
|
|
8
|
+
};
|
|
9
|
+
function validator(value, type, required = false) {
|
|
10
|
+
if (type === "empty") return isEmpty(value);
|
|
11
|
+
const reg = validatorRegs[type];
|
|
12
|
+
if (!reg) throw new Error(`[validator] 没有 ${type} 类型`);
|
|
13
|
+
if (required && isEmpty(value)) return null;
|
|
14
|
+
return isEmpty(value) ? false : reg.test(value + "");
|
|
15
|
+
}
|
|
16
|
+
function checkValue(value, options) {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
const {
|
|
19
|
+
interval = 10,
|
|
20
|
+
timeout = 0,
|
|
21
|
+
throwOnTimeout = false,
|
|
22
|
+
validator: validator2 = (val) => !isEmpty(val)
|
|
23
|
+
} = options ?? {};
|
|
24
|
+
const startTime = Date.now();
|
|
25
|
+
let timer;
|
|
26
|
+
core();
|
|
27
|
+
timer = setInterval(core, interval);
|
|
28
|
+
function core() {
|
|
29
|
+
const val = unref(value);
|
|
30
|
+
if (validator2(val)) {
|
|
31
|
+
clearInterval(timer);
|
|
32
|
+
resolve(val);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (timeout > 0 && Date.now() - startTime >= timeout) {
|
|
36
|
+
clearInterval(timer);
|
|
37
|
+
if (throwOnTimeout) {
|
|
38
|
+
reject(new Error(`checkValue timeout after ${timeout}ms`));
|
|
39
|
+
} else {
|
|
40
|
+
resolve(void 0);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export {
|
|
47
|
+
checkValue,
|
|
48
|
+
validator,
|
|
49
|
+
validatorRegs
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=validator.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.mjs","sources":["../../src/utils/validator.ts"],"sourcesContent":["import type { MaybeRef } from 'vue'\nimport { unref } from 'vue'\n\nimport { isEmpty } from './common'\n\nexport const validatorRegs = {\n cellPhone: /^1[3-9]\\d{9}$/,\n telephone: /^\\d{7,8}$/,\n url: /^((blob:)*(https|http|ftp|rtsp|mms|wss)?:\\/\\/)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/,\n email: /^([A-Za-z0-9_\\\\-\\\\.\\\\u4e00-\\\\u9fa5])+@([A-Za-z0-9_\\\\-\\\\.])+\\.([A-Za-z]{2,8})$/\n}\n\n/**\n * 验证器函数 - 检查输入值是否符合指定规则\n * @param value 要验证的字符串值\n * @param type 验证类型\n * @param required 是否必填,必填时空值返回 null\n * @returns 验证结果:通过返回 true,失败返回 false,必填为空返回 null\n * @throws Error 当传入不支持的验证类型时抛出异常\n */\nexport function validator(\n value: string | number | undefined | null,\n type: keyof typeof validatorRegs | 'empty',\n required = false\n) {\n if (type === 'empty') return isEmpty(value)\n\n const reg = validatorRegs[type]\n if (!reg) throw new Error(`[validator] 没有 ${type} 类型`)\n if (required && isEmpty(value)) return null\n\n return isEmpty(value) ? false : reg.test(value + '')\n}\n\n/**\n * 循环等待值满足条件\n * @param value Vue ref 对象或普通值\n * @param options 配置项\n * @param options.interval 轮询间隔,默认 10ms\n * @param options.timeout 超时时间,默认 0(不超时)\n * @param options.throwOnTimeout 超时时是否抛错,默认 false\n * @param options.validator 自定义校验函数,返回 true 表示值有效,默认使用 isEmpty 判断\n * @returns Promise,成功返回值,超时时根据 throwOnTimeout 决定返回 undefined 或抛错\n */\nexport function checkValue<T = unknown>(\n value: MaybeRef<T>,\n options?: {\n interval?: number\n timeout?: number\n throwOnTimeout?: boolean\n validator?: (val: T) => boolean\n }\n): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n const {\n interval = 10,\n timeout = 0,\n throwOnTimeout = false,\n validator = (val: T) => !isEmpty(val)\n } = options ?? {}\n\n const startTime = Date.now()\n let timer: NodeJS.Timeout | undefined\n\n core()\n timer = setInterval(core, interval)\n\n function core() {\n const val = unref(value)\n if (validator(val)) {\n clearInterval(timer)\n resolve(val)\n return\n }\n\n if (timeout > 0 && Date.now() - startTime >= timeout) {\n clearInterval(timer)\n if (throwOnTimeout) {\n reject(new Error(`checkValue timeout after ${timeout}ms`))\n } else {\n resolve(undefined)\n }\n }\n }\n })\n}\n"],"names":["validator"],"mappings":";;AAKO,MAAM,gBAAgB;AAAA,EAC3B,WAAW;AAAA,EACX,WAAW;AAAA,EACX,KAAK;AAAA,EACL,OAAO;AACT;AAUO,SAAS,UACd,OACA,MACA,WAAW,OACX;AACA,MAAI,SAAS,QAAS,QAAO,QAAQ,KAAK;AAE1C,QAAM,MAAM,cAAc,IAAI;AAC9B,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,kBAAkB,IAAI,KAAK;AACrD,MAAI,YAAY,QAAQ,KAAK,EAAG,QAAO;AAEvC,SAAO,QAAQ,KAAK,IAAI,QAAQ,IAAI,KAAK,QAAQ,EAAE;AACrD;AAYO,SAAS,WACd,OACA,SAMwB;AACxB,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM;AAAA,MACJ,WAAW;AAAA,MACX,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,WAAAA,aAAY,CAAC,QAAW,CAAC,QAAQ,GAAG;AAAA,IAAA,IAClC,WAAW,CAAA;AAEf,UAAM,YAAY,KAAK,IAAA;AACvB,QAAI;AAEJ,SAAA;AACA,YAAQ,YAAY,MAAM,QAAQ;AAElC,aAAS,OAAO;AACd,YAAM,MAAM,MAAM,KAAK;AACvB,UAAIA,WAAU,GAAG,GAAG;AAClB,sBAAc,KAAK;AACnB,gBAAQ,GAAG;AACX;AAAA,MACF;AAEA,UAAI,UAAU,KAAK,KAAK,IAAA,IAAQ,aAAa,SAAS;AACpD,sBAAc,KAAK;AACnB,YAAI,gBAAgB;AAClB,iBAAO,IAAI,MAAM,4BAA4B,OAAO,IAAI,CAAC;AAAA,QAC3D,OAAO;AACL,kBAAQ,MAAS;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function devProxy(env: Record<string, string>, prefix?: string): Record<string, string | object>;
|
|
2
|
+
export declare function versionPlugin({ version, outputPath }: {
|
|
3
|
+
version: string;
|
|
4
|
+
outputPath?: string;
|
|
5
|
+
}): {
|
|
6
|
+
name: string;
|
|
7
|
+
closeBundle(): void;
|
|
8
|
+
};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const node_fs = require("node:fs");
|
|
4
|
+
const node_path = require("node:path");
|
|
5
|
+
function devProxy(env, prefix = "VITE") {
|
|
6
|
+
const proxy = {};
|
|
7
|
+
if (env.MODE === "production" || env[`${prefix}_PROXY`] !== "true") return proxy;
|
|
8
|
+
const baseUrlKey = `${prefix}_BASE_URL`;
|
|
9
|
+
for (const key in env) {
|
|
10
|
+
const urlIndex = key.indexOf("_BASE_URL");
|
|
11
|
+
if (urlIndex === -1) continue;
|
|
12
|
+
const isBase = key === baseUrlKey;
|
|
13
|
+
if (isBase) continue;
|
|
14
|
+
const isProxy = key.indexOf("_PROXY") !== -1;
|
|
15
|
+
if (isProxy) continue;
|
|
16
|
+
const url = env[key].endsWith("/") ? env[key] : `${env[key]}/`;
|
|
17
|
+
if (url === env[baseUrlKey]) continue;
|
|
18
|
+
const proxyUrl = env[`${prefix}_PROXY${key.slice(prefix.length)}`];
|
|
19
|
+
if (!proxyUrl) continue;
|
|
20
|
+
proxy[url] = {
|
|
21
|
+
target: proxyUrl,
|
|
22
|
+
changeOrigin: true,
|
|
23
|
+
ws: true,
|
|
24
|
+
autoRewrite: false,
|
|
25
|
+
pathRewrite: {
|
|
26
|
+
// 兼容 vue-cli
|
|
27
|
+
[url]: ""
|
|
28
|
+
},
|
|
29
|
+
rewrite: (path) => {
|
|
30
|
+
const newPath = `/${path.replace(new RegExp(url), "")}`;
|
|
31
|
+
return newPath;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const otherProxy = `${env[`${prefix}_OTHER_PROXY${key.slice(prefix.length)}`]}`;
|
|
35
|
+
if (otherProxy !== "undefined") {
|
|
36
|
+
const reg = `^/(${otherProxy})(/.*|$)`;
|
|
37
|
+
proxy[reg] = {
|
|
38
|
+
target: proxyUrl,
|
|
39
|
+
changeOrigin: true,
|
|
40
|
+
ws: true,
|
|
41
|
+
autoRewrite: false,
|
|
42
|
+
rewrite: (path) => {
|
|
43
|
+
return path;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return proxy;
|
|
49
|
+
}
|
|
50
|
+
function versionPlugin({ version, outputPath }) {
|
|
51
|
+
return {
|
|
52
|
+
name: "version-plugin",
|
|
53
|
+
closeBundle() {
|
|
54
|
+
const versionInfo = {
|
|
55
|
+
code: 200,
|
|
56
|
+
version: version || "unknown",
|
|
57
|
+
buildTime: (/* @__PURE__ */ new Date()).toISOString()
|
|
58
|
+
};
|
|
59
|
+
const outputPathResolved = outputPath || "dist/version.json";
|
|
60
|
+
const dir = node_path.dirname(outputPathResolved);
|
|
61
|
+
node_fs.mkdirSync(dir, { recursive: true });
|
|
62
|
+
node_fs.writeFileSync(outputPathResolved, JSON.stringify(versionInfo, null, 2));
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
exports.devProxy = devProxy;
|
|
67
|
+
exports.versionPlugin = versionPlugin;
|
|
68
|
+
//# sourceMappingURL=qidian-vite-plugin.cjs.js.map
|