qidian-shared 1.0.72 → 1.0.73
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 +0 -1
- package/dist/_virtual/__vite-browser-external.mjs +0 -1
- package/dist/_virtual/_commonjs-dynamic-modules.mjs +0 -1
- package/dist/_virtual/_commonjsHelpers.mjs +0 -1
- package/dist/_virtual/aes.mjs +0 -1
- package/dist/_virtual/blowfish.mjs +0 -1
- package/dist/_virtual/cipher-core.mjs +0 -1
- package/dist/_virtual/core.mjs +0 -1
- package/dist/_virtual/enc-base64.mjs +0 -1
- package/dist/_virtual/enc-base64url.mjs +0 -1
- package/dist/_virtual/enc-utf16.mjs +0 -1
- package/dist/_virtual/evpkdf.mjs +0 -1
- package/dist/_virtual/format-hex.mjs +0 -1
- package/dist/_virtual/hmac.mjs +0 -1
- package/dist/_virtual/index.mjs +0 -1
- package/dist/_virtual/index2.mjs +0 -1
- package/dist/_virtual/lib-typedarrays.mjs +0 -1
- package/dist/_virtual/md5.mjs +0 -1
- package/dist/_virtual/mode-cfb.mjs +0 -1
- package/dist/_virtual/mode-ctr-gladman.mjs +0 -1
- package/dist/_virtual/mode-ctr.mjs +0 -1
- package/dist/_virtual/mode-ecb.mjs +0 -1
- package/dist/_virtual/mode-ofb.mjs +0 -1
- package/dist/_virtual/pad-ansix923.mjs +0 -1
- package/dist/_virtual/pad-iso10126.mjs +0 -1
- package/dist/_virtual/pad-iso97971.mjs +0 -1
- package/dist/_virtual/pad-nopadding.mjs +0 -1
- package/dist/_virtual/pad-zeropadding.mjs +0 -1
- package/dist/_virtual/pbkdf2.mjs +0 -1
- package/dist/_virtual/rabbit-legacy.mjs +0 -1
- package/dist/_virtual/rabbit.mjs +0 -1
- package/dist/_virtual/rc4.mjs +0 -1
- package/dist/_virtual/ripemd160.mjs +0 -1
- package/dist/_virtual/sha1.mjs +0 -1
- package/dist/_virtual/sha224.mjs +0 -1
- package/dist/_virtual/sha256.mjs +0 -1
- package/dist/_virtual/sha3.mjs +0 -1
- package/dist/_virtual/sha384.mjs +0 -1
- package/dist/_virtual/sha512.mjs +0 -1
- package/dist/_virtual/tripledes.mjs +0 -1
- package/dist/_virtual/x64-core.mjs +0 -1
- package/dist/directive/resize.mjs +0 -1
- package/dist/hooks/useActivated.mjs +0 -1
- package/dist/hooks/useAutofocus.mjs +0 -1
- package/dist/hooks/useCsl.mjs +0 -1
- package/dist/hooks/useDoubleClick.mjs +0 -1
- package/dist/hooks/useProxy.mjs +0 -1
- package/dist/hooks/useService/loadMore.mjs +0 -1
- package/dist/hooks/useService/pagination.mjs +11 -7
- package/dist/hooks/useService/types.d.ts +1 -0
- package/dist/hooks/useTimer.mjs +0 -1
- package/dist/hooks/useTplRefsList.mjs +0 -1
- package/dist/index.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/blowfish.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/cipher-core.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/core.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64url.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf16.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/evpkdf.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/format-hex.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/hmac.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/lib-typedarrays.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/md5.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-cfb.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr-gladman.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ofb.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-ansix923.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso10126.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso97971.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-nopadding.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-zeropadding.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pbkdf2.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit-legacy.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rc4.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/ripemd160.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha1.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha224.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha256.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha3.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha384.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha512.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/tripledes.mjs +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/x64-core.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/JSEncrypt.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/JSEncryptRSAKey.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/index.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/asn1.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/base64.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/hex.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/int10.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/base64.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/jsbn.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/prng4.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/rng.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/rsa.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/sha256.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/util.mjs +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsrsasign/asn1-1.0.mjs +0 -1
- package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/regular/jsonrepair.mjs +0 -1
- package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/JSONRepairError.mjs +0 -1
- package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/stringUtils.mjs +0 -1
- 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 +0 -1
- package/dist/utils/calc.mjs +0 -1
- package/dist/utils/common.mjs +0 -1
- package/dist/utils/conversion.mjs +0 -1
- package/dist/utils/crypto.mjs +0 -1
- package/dist/utils/dom.mjs +0 -1
- package/dist/utils/download.mjs +0 -1
- package/dist/utils/file.mjs +0 -1
- package/dist/utils/glob.mjs +0 -1
- package/dist/utils/jsencrypt.mjs +0 -1
- package/dist/utils/json.mjs +0 -1
- package/dist/utils/promise.mjs +0 -1
- package/dist/utils/str.mjs +0 -1
- package/dist/utils/type.mjs +0 -1
- package/dist/utils/url.mjs +0 -1
- package/dist/utils/validator.mjs +0 -1
- package/package.json +1 -1
- package/dist/_virtual/___vite-browser-external.mjs.map +0 -1
- package/dist/_virtual/__vite-browser-external.mjs.map +0 -1
- package/dist/_virtual/_commonjs-dynamic-modules.mjs.map +0 -1
- package/dist/_virtual/_commonjsHelpers.mjs.map +0 -1
- package/dist/_virtual/aes.mjs.map +0 -1
- package/dist/_virtual/blowfish.mjs.map +0 -1
- package/dist/_virtual/cipher-core.mjs.map +0 -1
- package/dist/_virtual/core.mjs.map +0 -1
- package/dist/_virtual/enc-base64.mjs.map +0 -1
- package/dist/_virtual/enc-base64url.mjs.map +0 -1
- package/dist/_virtual/enc-utf16.mjs.map +0 -1
- package/dist/_virtual/evpkdf.mjs.map +0 -1
- package/dist/_virtual/format-hex.mjs.map +0 -1
- package/dist/_virtual/hmac.mjs.map +0 -1
- package/dist/_virtual/index.mjs.map +0 -1
- package/dist/_virtual/index2.mjs.map +0 -1
- package/dist/_virtual/lib-typedarrays.mjs.map +0 -1
- package/dist/_virtual/md5.mjs.map +0 -1
- package/dist/_virtual/mode-cfb.mjs.map +0 -1
- package/dist/_virtual/mode-ctr-gladman.mjs.map +0 -1
- package/dist/_virtual/mode-ctr.mjs.map +0 -1
- package/dist/_virtual/mode-ecb.mjs.map +0 -1
- package/dist/_virtual/mode-ofb.mjs.map +0 -1
- package/dist/_virtual/pad-ansix923.mjs.map +0 -1
- package/dist/_virtual/pad-iso10126.mjs.map +0 -1
- package/dist/_virtual/pad-iso97971.mjs.map +0 -1
- package/dist/_virtual/pad-nopadding.mjs.map +0 -1
- package/dist/_virtual/pad-zeropadding.mjs.map +0 -1
- package/dist/_virtual/pbkdf2.mjs.map +0 -1
- package/dist/_virtual/rabbit-legacy.mjs.map +0 -1
- package/dist/_virtual/rabbit.mjs.map +0 -1
- package/dist/_virtual/rc4.mjs.map +0 -1
- package/dist/_virtual/ripemd160.mjs.map +0 -1
- package/dist/_virtual/sha1.mjs.map +0 -1
- package/dist/_virtual/sha224.mjs.map +0 -1
- package/dist/_virtual/sha256.mjs.map +0 -1
- package/dist/_virtual/sha3.mjs.map +0 -1
- package/dist/_virtual/sha384.mjs.map +0 -1
- package/dist/_virtual/sha512.mjs.map +0 -1
- package/dist/_virtual/tripledes.mjs.map +0 -1
- package/dist/_virtual/x64-core.mjs.map +0 -1
- package/dist/directive/resize.mjs.map +0 -1
- package/dist/hooks/useActivated.mjs.map +0 -1
- package/dist/hooks/useAutofocus.mjs.map +0 -1
- package/dist/hooks/useCsl.mjs.map +0 -1
- package/dist/hooks/useDoubleClick.mjs.map +0 -1
- package/dist/hooks/useProxy.mjs.map +0 -1
- package/dist/hooks/useService/loadMore.mjs.map +0 -1
- package/dist/hooks/useService/pagination.mjs.map +0 -1
- package/dist/hooks/useTimer.mjs.map +0 -1
- package/dist/hooks/useTplRefsList.mjs.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/blowfish.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/cipher-core.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/core.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64url.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf16.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/evpkdf.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/format-hex.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/hmac.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/lib-typedarrays.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/md5.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-cfb.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr-gladman.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ofb.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-ansix923.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso10126.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso97971.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-nopadding.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-zeropadding.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pbkdf2.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit-legacy.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rc4.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/ripemd160.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha1.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha224.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha256.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha3.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha384.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha512.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/tripledes.mjs.map +0 -1
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/x64-core.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/JSEncrypt.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/JSEncryptRSAKey.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/index.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/asn1.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/base64.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/hex.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/asn1js/int10.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/base64.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/jsbn.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/prng4.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/rng.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/rsa.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/sha256.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsbn/util.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/lib/jsrsasign/asn1-1.0.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/regular/jsonrepair.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/JSONRepairError.mjs.map +0 -1
- package/dist/node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/stringUtils.mjs.map +0 -1
- 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 +0 -1
- package/dist/utils/calc.mjs.map +0 -1
- package/dist/utils/common.mjs.map +0 -1
- package/dist/utils/conversion.mjs.map +0 -1
- package/dist/utils/crypto.mjs.map +0 -1
- package/dist/utils/dom.mjs.map +0 -1
- package/dist/utils/download.mjs.map +0 -1
- package/dist/utils/file.mjs.map +0 -1
- package/dist/utils/glob.mjs.map +0 -1
- package/dist/utils/jsencrypt.mjs.map +0 -1
- package/dist/utils/json.mjs.map +0 -1
- package/dist/utils/promise.mjs.map +0 -1
- package/dist/utils/str.mjs.map +0 -1
- package/dist/utils/type.mjs.map +0 -1
- package/dist/utils/url.mjs.map +0 -1
- package/dist/utils/validator.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsonrepair.mjs","sources":["../../../../../../../../../../../node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/regular/jsonrepair.js"],"sourcesContent":["import { JSONRepairError } from '../utils/JSONRepairError.js';\nimport { endsWithCommaOrNewline, insertBeforeLastWhitespace, isControlCharacter, isDelimiter, isDigit, isDoubleQuote, isDoubleQuoteLike, isFunctionNameChar, isFunctionNameCharStart, isHex, isQuote, isSingleQuote, isSingleQuoteLike, isSpecialWhitespace, isStartOfValue, isUnquotedStringDelimiter, isValidStringCharacter, isWhitespace, isWhitespaceExceptNewline, regexUrlChar, regexUrlStart, removeAtIndex, stripLastOccurrence } from '../utils/stringUtils.js';\nconst controlCharacters = {\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t'\n};\n\n// map with all escape characters\nconst escapeCharacters = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n // note that \\u is handled separately in parseString()\n};\n\n/**\n * Repair a string containing an invalid JSON document.\n * For example changes JavaScript notation into JSON notation.\n *\n * Example:\n *\n * try {\n * const json = \"{name: 'John'}\"\n * const repaired = jsonrepair(json)\n * console.log(repaired)\n * // '{\"name\": \"John\"}'\n * } catch (err) {\n * console.error(err)\n * }\n *\n */\nexport function jsonrepair(text) {\n let i = 0; // current index in text\n let output = ''; // generated output\n\n parseMarkdownCodeBlock(['```', '[```', '{```']);\n const processed = parseValue();\n if (!processed) {\n throwUnexpectedEnd();\n }\n parseMarkdownCodeBlock(['```', '```]', '```}']);\n const processedComma = parseCharacter(',');\n if (processedComma) {\n parseWhitespaceAndSkipComments();\n }\n if (isStartOfValue(text[i]) && endsWithCommaOrNewline(output)) {\n // start of a new value after end of the root level object: looks like\n // newline delimited JSON -> turn into a root level array\n if (!processedComma) {\n // repair missing comma\n output = insertBeforeLastWhitespace(output, ',');\n }\n parseNewlineDelimitedJSON();\n } else if (processedComma) {\n // repair: remove trailing comma\n output = stripLastOccurrence(output, ',');\n }\n\n // repair redundant end quotes\n while (text[i] === '}' || text[i] === ']') {\n i++;\n parseWhitespaceAndSkipComments();\n }\n if (i >= text.length) {\n // reached the end of the document properly\n return output;\n }\n throwUnexpectedCharacter();\n function parseValue() {\n parseWhitespaceAndSkipComments();\n const processed = parseObject() || parseArray() || parseString() || parseNumber() || parseKeywords() || parseUnquotedString(false) || parseRegex();\n parseWhitespaceAndSkipComments();\n return processed;\n }\n function parseWhitespaceAndSkipComments() {\n let skipNewline = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n const start = i;\n let changed = parseWhitespace(skipNewline);\n do {\n changed = parseComment();\n if (changed) {\n changed = parseWhitespace(skipNewline);\n }\n } while (changed);\n return i > start;\n }\n function parseWhitespace(skipNewline) {\n const _isWhiteSpace = skipNewline ? isWhitespace : isWhitespaceExceptNewline;\n let whitespace = '';\n while (true) {\n if (_isWhiteSpace(text, i)) {\n whitespace += text[i];\n i++;\n } else if (isSpecialWhitespace(text, i)) {\n // repair special whitespace\n whitespace += ' ';\n i++;\n } else {\n break;\n }\n }\n if (whitespace.length > 0) {\n output += whitespace;\n return true;\n }\n return false;\n }\n function parseComment() {\n // find a block comment '/* ... */'\n if (text[i] === '/' && text[i + 1] === '*') {\n // repair block comment by skipping it\n while (i < text.length && !atEndOfBlockComment(text, i)) {\n i++;\n }\n i += 2;\n return true;\n }\n\n // find a line comment '// ...'\n if (text[i] === '/' && text[i + 1] === '/') {\n // repair line comment by skipping it\n while (i < text.length && text[i] !== '\\n') {\n i++;\n }\n return true;\n }\n return false;\n }\n function parseMarkdownCodeBlock(blocks) {\n // find and skip over a Markdown fenced code block:\n // ``` ... ```\n // or\n // ```json ... ```\n if (skipMarkdownCodeBlock(blocks)) {\n if (isFunctionNameCharStart(text[i])) {\n // strip the optional language specifier like \"json\"\n while (i < text.length && isFunctionNameChar(text[i])) {\n i++;\n }\n }\n parseWhitespaceAndSkipComments();\n return true;\n }\n return false;\n }\n function skipMarkdownCodeBlock(blocks) {\n parseWhitespace(true);\n for (const block of blocks) {\n const end = i + block.length;\n if (text.slice(i, end) === block) {\n i = end;\n return true;\n }\n }\n return false;\n }\n function parseCharacter(char) {\n if (text[i] === char) {\n output += text[i];\n i++;\n return true;\n }\n return false;\n }\n function skipCharacter(char) {\n if (text[i] === char) {\n i++;\n return true;\n }\n return false;\n }\n function skipEscapeCharacter() {\n return skipCharacter('\\\\');\n }\n\n /**\n * Skip ellipsis like \"[1,2,3,...]\" or \"[1,2,3,...,9]\" or \"[...,7,8,9]\"\n * or a similar construct in objects.\n */\n function skipEllipsis() {\n parseWhitespaceAndSkipComments();\n if (text[i] === '.' && text[i + 1] === '.' && text[i + 2] === '.') {\n // repair: remove the ellipsis (three dots) and optionally a comma\n i += 3;\n parseWhitespaceAndSkipComments();\n skipCharacter(',');\n return true;\n }\n return false;\n }\n\n /**\n * Parse an object like '{\"key\": \"value\"}'\n */\n function parseObject() {\n if (text[i] === '{') {\n output += '{';\n i++;\n parseWhitespaceAndSkipComments();\n\n // repair: skip leading comma like in {, message: \"hi\"}\n if (skipCharacter(',')) {\n parseWhitespaceAndSkipComments();\n }\n let initial = true;\n while (i < text.length && text[i] !== '}') {\n let processedComma;\n if (!initial) {\n processedComma = parseCharacter(',');\n if (!processedComma) {\n // repair missing comma\n output = insertBeforeLastWhitespace(output, ',');\n }\n parseWhitespaceAndSkipComments();\n } else {\n processedComma = true;\n initial = false;\n }\n skipEllipsis();\n const processedKey = parseString() || parseUnquotedString(true);\n if (!processedKey) {\n if (text[i] === '}' || text[i] === '{' || text[i] === ']' || text[i] === '[' || text[i] === undefined) {\n // repair trailing comma\n output = stripLastOccurrence(output, ',');\n } else {\n throwObjectKeyExpected();\n }\n break;\n }\n parseWhitespaceAndSkipComments();\n const processedColon = parseCharacter(':');\n const truncatedText = i >= text.length;\n if (!processedColon) {\n if (isStartOfValue(text[i]) || truncatedText) {\n // repair missing colon\n output = insertBeforeLastWhitespace(output, ':');\n } else {\n throwColonExpected();\n }\n }\n const processedValue = parseValue();\n if (!processedValue) {\n if (processedColon || truncatedText) {\n // repair missing object value\n output += 'null';\n } else {\n throwColonExpected();\n }\n }\n }\n if (text[i] === '}') {\n output += '}';\n i++;\n } else {\n // repair missing end bracket\n output = insertBeforeLastWhitespace(output, '}');\n }\n return true;\n }\n return false;\n }\n\n /**\n * Parse an array like '[\"item1\", \"item2\", ...]'\n */\n function parseArray() {\n if (text[i] === '[') {\n output += '[';\n i++;\n parseWhitespaceAndSkipComments();\n\n // repair: skip leading comma like in [,1,2,3]\n if (skipCharacter(',')) {\n parseWhitespaceAndSkipComments();\n }\n let initial = true;\n while (i < text.length && text[i] !== ']') {\n if (!initial) {\n const processedComma = parseCharacter(',');\n if (!processedComma) {\n // repair missing comma\n output = insertBeforeLastWhitespace(output, ',');\n }\n } else {\n initial = false;\n }\n skipEllipsis();\n const processedValue = parseValue();\n if (!processedValue) {\n // repair trailing comma\n output = stripLastOccurrence(output, ',');\n break;\n }\n }\n if (text[i] === ']') {\n output += ']';\n i++;\n } else {\n // repair missing closing array bracket\n output = insertBeforeLastWhitespace(output, ']');\n }\n return true;\n }\n return false;\n }\n\n /**\n * Parse and repair Newline Delimited JSON (NDJSON):\n * multiple JSON objects separated by a newline character\n */\n function parseNewlineDelimitedJSON() {\n // repair NDJSON\n let initial = true;\n let processedValue = true;\n while (processedValue) {\n if (!initial) {\n // parse optional comma, insert when missing\n const processedComma = parseCharacter(',');\n if (!processedComma) {\n // repair: add missing comma\n output = insertBeforeLastWhitespace(output, ',');\n }\n } else {\n initial = false;\n }\n processedValue = parseValue();\n }\n if (!processedValue) {\n // repair: remove trailing comma\n output = stripLastOccurrence(output, ',');\n }\n\n // repair: wrap the output inside array brackets\n output = `[\\n${output}\\n]`;\n }\n\n /**\n * Parse a string enclosed by double quotes \"...\". Can contain escaped quotes\n * Repair strings enclosed in single quotes or special quotes\n * Repair an escaped string\n *\n * The function can run in two stages:\n * - First, it assumes the string has a valid end quote\n * - If it turns out that the string does not have a valid end quote followed\n * by a delimiter (which should be the case), the function runs again in a\n * more conservative way, stopping the string at the first next delimiter\n * and fixing the string by inserting a quote there, or stopping at a\n * stop index detected in the first iteration.\n */\n function parseString() {\n let stopAtDelimiter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n let stopAtIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;\n let skipEscapeChars = text[i] === '\\\\';\n if (skipEscapeChars) {\n // repair: remove the first escape character\n i++;\n skipEscapeChars = true;\n }\n if (isQuote(text[i])) {\n // double quotes are correct JSON,\n // single quotes come from JavaScript for example, we assume it will have a correct single end quote too\n // otherwise, we will match any double-quote-like start with a double-quote-like end,\n // or any single-quote-like start with a single-quote-like end\n const isEndQuote = isDoubleQuote(text[i]) ? isDoubleQuote : isSingleQuote(text[i]) ? isSingleQuote : isSingleQuoteLike(text[i]) ? isSingleQuoteLike : isDoubleQuoteLike;\n const iBefore = i;\n const oBefore = output.length;\n let str = '\"';\n i++;\n while (true) {\n if (i >= text.length) {\n // end of text, we are missing an end quote\n\n const iPrev = prevNonWhitespaceIndex(i - 1);\n if (!stopAtDelimiter && isDelimiter(text.charAt(iPrev))) {\n // if the text ends with a delimiter, like [\"hello],\n // so the missing end quote should be inserted before this delimiter\n // retry parsing the string, stopping at the first next delimiter\n i = iBefore;\n output = output.substring(0, oBefore);\n return parseString(true);\n }\n\n // repair missing quote\n str = insertBeforeLastWhitespace(str, '\"');\n output += str;\n return true;\n }\n if (i === stopAtIndex) {\n // use the stop index detected in the first iteration, and repair end quote\n str = insertBeforeLastWhitespace(str, '\"');\n output += str;\n return true;\n }\n if (isEndQuote(text[i])) {\n // end quote\n // let us check what is before and after the quote to verify whether this is a legit end quote\n const iQuote = i;\n const oQuote = str.length;\n str += '\"';\n i++;\n output += str;\n parseWhitespaceAndSkipComments(false);\n if (stopAtDelimiter || i >= text.length || isDelimiter(text[i]) || isQuote(text[i]) || isDigit(text[i])) {\n // The quote is followed by the end of the text, a delimiter,\n // or a next value. So the quote is indeed the end of the string.\n parseConcatenatedString();\n return true;\n }\n const iPrevChar = prevNonWhitespaceIndex(iQuote - 1);\n const prevChar = text.charAt(iPrevChar);\n if (prevChar === ',') {\n // A comma followed by a quote, like '{\"a\":\"b,c,\"d\":\"e\"}'.\n // We assume that the quote is a start quote, and that the end quote\n // should have been located right before the comma but is missing.\n i = iBefore;\n output = output.substring(0, oBefore);\n return parseString(false, iPrevChar);\n }\n if (isDelimiter(prevChar)) {\n // This is not the right end quote: it is preceded by a delimiter,\n // and NOT followed by a delimiter. So, there is an end quote missing\n // parse the string again and then stop at the first next delimiter\n i = iBefore;\n output = output.substring(0, oBefore);\n return parseString(true);\n }\n\n // revert to right after the quote but before any whitespace, and continue parsing the string\n output = output.substring(0, oBefore);\n i = iQuote + 1;\n\n // repair unescaped quote\n str = `${str.substring(0, oQuote)}\\\\${str.substring(oQuote)}`;\n } else if (stopAtDelimiter && isUnquotedStringDelimiter(text[i])) {\n // we're in the mode to stop the string at the first delimiter\n // because there is an end quote missing\n\n // test start of an url like \"https://...\" (this would be parsed as a comment)\n if (text[i - 1] === ':' && regexUrlStart.test(text.substring(iBefore + 1, i + 2))) {\n while (i < text.length && regexUrlChar.test(text[i])) {\n str += text[i];\n i++;\n }\n }\n\n // repair missing quote\n str = insertBeforeLastWhitespace(str, '\"');\n output += str;\n parseConcatenatedString();\n return true;\n } else if (text[i] === '\\\\') {\n // handle escaped content like \\n or \\u2605\n const char = text.charAt(i + 1);\n const escapeChar = escapeCharacters[char];\n if (escapeChar !== undefined) {\n str += text.slice(i, i + 2);\n i += 2;\n } else if (char === 'u') {\n let j = 2;\n while (j < 6 && isHex(text[i + j])) {\n j++;\n }\n if (j === 6) {\n str += text.slice(i, i + 6);\n i += 6;\n } else if (i + j >= text.length) {\n // repair invalid or truncated unicode char at the end of the text\n // by removing the unicode char and ending the string here\n i = text.length;\n } else {\n throwInvalidUnicodeCharacter();\n }\n } else {\n // repair invalid escape character: remove it\n str += char;\n i += 2;\n }\n } else {\n // handle regular characters\n const char = text.charAt(i);\n if (char === '\"' && text[i - 1] !== '\\\\') {\n // repair unescaped double quote\n str += `\\\\${char}`;\n i++;\n } else if (isControlCharacter(char)) {\n // unescaped control character\n str += controlCharacters[char];\n i++;\n } else {\n if (!isValidStringCharacter(char)) {\n throwInvalidCharacter(char);\n }\n str += char;\n i++;\n }\n }\n if (skipEscapeChars) {\n // repair: skipped escape character (nothing to do)\n skipEscapeCharacter();\n }\n }\n }\n return false;\n }\n\n /**\n * Repair concatenated strings like \"hello\" + \"world\", change this into \"helloworld\"\n */\n function parseConcatenatedString() {\n let processed = false;\n parseWhitespaceAndSkipComments();\n while (text[i] === '+') {\n processed = true;\n i++;\n parseWhitespaceAndSkipComments();\n\n // repair: remove the end quote of the first string\n output = stripLastOccurrence(output, '\"', true);\n const start = output.length;\n const parsedStr = parseString();\n if (parsedStr) {\n // repair: remove the start quote of the second string\n output = removeAtIndex(output, start, 1);\n } else {\n // repair: remove the + because it is not followed by a string\n output = insertBeforeLastWhitespace(output, '\"');\n }\n }\n return processed;\n }\n\n /**\n * Parse a number like 2.4 or 2.4e6\n */\n function parseNumber() {\n const start = i;\n if (text[i] === '-') {\n i++;\n if (atEndOfNumber()) {\n repairNumberEndingWithNumericSymbol(start);\n return true;\n }\n if (!isDigit(text[i])) {\n i = start;\n return false;\n }\n }\n\n // Note that in JSON leading zeros like \"00789\" are not allowed.\n // We will allow all leading zeros here though and at the end of parseNumber\n // check against trailing zeros and repair that if needed.\n // Leading zeros can have meaning, so we should not clear them.\n while (isDigit(text[i])) {\n i++;\n }\n if (text[i] === '.') {\n i++;\n if (atEndOfNumber()) {\n repairNumberEndingWithNumericSymbol(start);\n return true;\n }\n if (!isDigit(text[i])) {\n i = start;\n return false;\n }\n while (isDigit(text[i])) {\n i++;\n }\n }\n if (text[i] === 'e' || text[i] === 'E') {\n i++;\n if (text[i] === '-' || text[i] === '+') {\n i++;\n }\n if (atEndOfNumber()) {\n repairNumberEndingWithNumericSymbol(start);\n return true;\n }\n if (!isDigit(text[i])) {\n i = start;\n return false;\n }\n while (isDigit(text[i])) {\n i++;\n }\n }\n\n // if we're not at the end of the number by this point, allow this to be parsed as another type\n if (!atEndOfNumber()) {\n i = start;\n return false;\n }\n if (i > start) {\n // repair a number with leading zeros like \"00789\"\n const num = text.slice(start, i);\n const hasInvalidLeadingZero = /^0\\d/.test(num);\n output += hasInvalidLeadingZero ? `\"${num}\"` : num;\n return true;\n }\n return false;\n }\n\n /**\n * Parse keywords true, false, null\n * Repair Python keywords True, False, None\n */\n function parseKeywords() {\n return parseKeyword('true', 'true') || parseKeyword('false', 'false') || parseKeyword('null', 'null') ||\n // repair Python keywords True, False, None\n parseKeyword('True', 'true') || parseKeyword('False', 'false') || parseKeyword('None', 'null');\n }\n function parseKeyword(name, value) {\n if (text.slice(i, i + name.length) === name) {\n output += value;\n i += name.length;\n return true;\n }\n return false;\n }\n\n /**\n * Repair an unquoted string by adding quotes around it\n * Repair a MongoDB function call like NumberLong(\"2\")\n * Repair a JSONP function call like callback({...});\n */\n function parseUnquotedString(isKey) {\n // note that the symbol can end with whitespaces: we stop at the next delimiter\n // also, note that we allow strings to contain a slash / in order to support repairing regular expressions\n const start = i;\n if (isFunctionNameCharStart(text[i])) {\n while (i < text.length && isFunctionNameChar(text[i])) {\n i++;\n }\n let j = i;\n while (isWhitespace(text, j)) {\n j++;\n }\n if (text[j] === '(') {\n // repair a MongoDB function call like NumberLong(\"2\")\n // repair a JSONP function call like callback({...});\n i = j + 1;\n parseValue();\n if (text[i] === ')') {\n // repair: skip close bracket of function call\n i++;\n if (text[i] === ';') {\n // repair: skip semicolon after JSONP call\n i++;\n }\n }\n return true;\n }\n }\n while (i < text.length && !isUnquotedStringDelimiter(text[i]) && !isQuote(text[i]) && (!isKey || text[i] !== ':')) {\n i++;\n }\n\n // test start of an url like \"https://...\" (this would be parsed as a comment)\n if (text[i - 1] === ':' && regexUrlStart.test(text.substring(start, i + 2))) {\n while (i < text.length && regexUrlChar.test(text[i])) {\n i++;\n }\n }\n if (i > start) {\n // repair unquoted string\n // also, repair undefined into null\n\n // first, go back to prevent getting trailing whitespaces in the string\n while (isWhitespace(text, i - 1) && i > 0) {\n i--;\n }\n const symbol = text.slice(start, i);\n output += symbol === 'undefined' ? 'null' : JSON.stringify(symbol);\n if (text[i] === '\"') {\n // we had a missing start quote, but now we encountered the end quote, so we can skip that one\n i++;\n }\n return true;\n }\n }\n function parseRegex() {\n if (text[i] === '/') {\n const start = i;\n i++;\n while (i < text.length && (text[i] !== '/' || text[i - 1] === '\\\\')) {\n i++;\n }\n i++;\n output += `\"${text.substring(start, i)}\"`;\n return true;\n }\n }\n function prevNonWhitespaceIndex(start) {\n let prev = start;\n while (prev > 0 && isWhitespace(text, prev)) {\n prev--;\n }\n return prev;\n }\n function atEndOfNumber() {\n return i >= text.length || isDelimiter(text[i]) || isWhitespace(text, i);\n }\n function repairNumberEndingWithNumericSymbol(start) {\n // repair numbers cut off at the end\n // this will only be called when we end after a '.', '-', or 'e' and does not\n // change the number more than it needs to make it valid JSON\n output += `${text.slice(start, i)}0`;\n }\n function throwInvalidCharacter(char) {\n throw new JSONRepairError(`Invalid character ${JSON.stringify(char)}`, i);\n }\n function throwUnexpectedCharacter() {\n throw new JSONRepairError(`Unexpected character ${JSON.stringify(text[i])}`, i);\n }\n function throwUnexpectedEnd() {\n throw new JSONRepairError('Unexpected end of json string', text.length);\n }\n function throwObjectKeyExpected() {\n throw new JSONRepairError('Object key expected', i);\n }\n function throwColonExpected() {\n throw new JSONRepairError('Colon expected', i);\n }\n function throwInvalidUnicodeCharacter() {\n const chars = text.slice(i, i + 6);\n throw new JSONRepairError(`Invalid unicode character \"${chars}\"`, i);\n }\n}\nfunction atEndOfBlockComment(text, i) {\n return text[i] === '*' && text[i + 1] === '/';\n}\n//# sourceMappingURL=jsonrepair.js.map"],"names":["processed","processedComma"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JSONRepairError.mjs","sources":["../../../../../../../../../../../node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/JSONRepairError.js"],"sourcesContent":["export class JSONRepairError extends Error {\n constructor(message, position) {\n super(`${message} at position ${position}`);\n this.position = position;\n }\n}\n//# sourceMappingURL=JSONRepairError.js.map"],"names":[],"mappings":"AAAO,MAAM,wBAAwB,MAAM;AAAA,EACzC,YAAY,SAAS,UAAU;AAC7B,UAAM,GAAG,OAAO,gBAAgB,QAAQ,EAAE;AAC1C,SAAK,WAAW;AAAA,EAClB;AACF;","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stringUtils.mjs","sources":["../../../../../../../../../../../node_modules/.pnpm/jsonrepair@3.13.1/node_modules/jsonrepair/lib/esm/utils/stringUtils.js"],"sourcesContent":["const codeSpace = 0x20; // \" \"\nconst codeNewline = 0xa; // \"\\n\"\nconst codeTab = 0x9; // \"\\t\"\nconst codeReturn = 0xd; // \"\\r\"\nconst codeNonBreakingSpace = 0xa0;\nconst codeEnQuad = 0x2000;\nconst codeHairSpace = 0x200a;\nconst codeNarrowNoBreakSpace = 0x202f;\nconst codeMediumMathematicalSpace = 0x205f;\nconst codeIdeographicSpace = 0x3000;\nexport function isHex(char) {\n return /^[0-9A-Fa-f]$/.test(char);\n}\nexport function isDigit(char) {\n return char >= '0' && char <= '9';\n}\nexport function isValidStringCharacter(char) {\n // note that the valid range is between \\u{0020} and \\u{10ffff},\n // but in JavaScript it is not possible to create a code point larger than\n // \\u{10ffff}, so there is no need to test for that here.\n return char >= '\\u0020';\n}\nexport function isDelimiter(char) {\n return ',:[]/{}()\\n+'.includes(char);\n}\nexport function isFunctionNameCharStart(char) {\n return char >= 'a' && char <= 'z' || char >= 'A' && char <= 'Z' || char === '_' || char === '$';\n}\nexport function isFunctionNameChar(char) {\n return char >= 'a' && char <= 'z' || char >= 'A' && char <= 'Z' || char === '_' || char === '$' || char >= '0' && char <= '9';\n}\n\n// matches \"https://\" and other schemas\nexport const regexUrlStart = /^(http|https|ftp|mailto|file|data|irc):\\/\\/$/;\n\n// matches all valid URL characters EXCEPT \"[\", \"]\", and \",\", since that are important JSON delimiters\nexport const regexUrlChar = /^[A-Za-z0-9-._~:/?#@!$&'()*+;=]$/;\nexport function isUnquotedStringDelimiter(char) {\n return ',[]/{}\\n+'.includes(char);\n}\nexport function isStartOfValue(char) {\n return isQuote(char) || regexStartOfValue.test(char);\n}\n\n// alpha, number, minus, or opening bracket or brace\nconst regexStartOfValue = /^[[{\\w-]$/;\nexport function isControlCharacter(char) {\n return char === '\\n' || char === '\\r' || char === '\\t' || char === '\\b' || char === '\\f';\n}\n/**\n * Check if the given character is a whitespace character like space, tab, or\n * newline\n */\nexport function isWhitespace(text, index) {\n const code = text.charCodeAt(index);\n return code === codeSpace || code === codeNewline || code === codeTab || code === codeReturn;\n}\n\n/**\n * Check if the given character is a whitespace character like space or tab,\n * but NOT a newline\n */\nexport function isWhitespaceExceptNewline(text, index) {\n const code = text.charCodeAt(index);\n return code === codeSpace || code === codeTab || code === codeReturn;\n}\n\n/**\n * Check if the given character is a special whitespace character, some\n * unicode variant\n */\nexport function isSpecialWhitespace(text, index) {\n const code = text.charCodeAt(index);\n return code === codeNonBreakingSpace || code >= codeEnQuad && code <= codeHairSpace || code === codeNarrowNoBreakSpace || code === codeMediumMathematicalSpace || code === codeIdeographicSpace;\n}\n\n/**\n * Test whether the given character is a quote or double quote character.\n * Also tests for special variants of quotes.\n */\nexport function isQuote(char) {\n // the first check double quotes, since that occurs most often\n return isDoubleQuoteLike(char) || isSingleQuoteLike(char);\n}\n\n/**\n * Test whether the given character is a double quote character.\n * Also tests for special variants of double quotes.\n */\nexport function isDoubleQuoteLike(char) {\n return char === '\"' || char === '\\u201c' || char === '\\u201d';\n}\n\n/**\n * Test whether the given character is a double quote character.\n * Does NOT test for special variants of double quotes.\n */\nexport function isDoubleQuote(char) {\n return char === '\"';\n}\n\n/**\n * Test whether the given character is a single quote character.\n * Also tests for special variants of single quotes.\n */\nexport function isSingleQuoteLike(char) {\n return char === \"'\" || char === '\\u2018' || char === '\\u2019' || char === '\\u0060' || char === '\\u00b4';\n}\n\n/**\n * Test whether the given character is a single quote character.\n * Does NOT test for special variants of single quotes.\n */\nexport function isSingleQuote(char) {\n return char === \"'\";\n}\n\n/**\n * Strip last occurrence of textToStrip from text\n */\nexport function stripLastOccurrence(text, textToStrip) {\n let stripRemainingText = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n const index = text.lastIndexOf(textToStrip);\n return index !== -1 ? text.substring(0, index) + (stripRemainingText ? '' : text.substring(index + 1)) : text;\n}\nexport function insertBeforeLastWhitespace(text, textToInsert) {\n let index = text.length;\n if (!isWhitespace(text, index - 1)) {\n // no trailing whitespaces\n return text + textToInsert;\n }\n while (isWhitespace(text, index - 1)) {\n index--;\n }\n return text.substring(0, index) + textToInsert + text.substring(index);\n}\nexport function removeAtIndex(text, start, count) {\n return text.substring(0, start) + text.substring(start + count);\n}\n\n/**\n * Test whether a string ends with a newline or comma character and optional whitespace\n */\nexport function endsWithCommaOrNewline(text) {\n return /[,\\n][ \\t\\r]*$/.test(text);\n}\n//# sourceMappingURL=stringUtils.js.map"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
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]}
|
package/dist/utils/calc.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1 +0,0 @@
|
|
|
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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"}
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
package/dist/utils/dom.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
package/dist/utils/file.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
package/dist/utils/glob.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
package/dist/utils/json.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
package/dist/utils/str.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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 * @param uppercase 是否转大写(默认 false)\n * @returns 结果\n */\nexport function kebabCase(str: string, separator = '-', uppercase = false) {\n const result = str\n .replace(/([A-Z])/g, `${separator}$1`)\n .toLowerCase()\n .replace(new RegExp(`^\\\\${separator}`), '')\n return uppercase ? result.toUpperCase() : result\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;AASO,SAAS,UAAU,KAAa,YAAY,KAAK,YAAY,OAAO;AACzE,QAAM,SAAS,IACZ,QAAQ,YAAY,GAAG,SAAS,IAAI,EACpC,YAAA,EACA,QAAQ,IAAI,OAAO,MAAM,SAAS,EAAE,GAAG,EAAE;AAC5C,SAAO,YAAY,OAAO,YAAA,IAAgB;AAC5C;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;"}
|
package/dist/utils/type.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
package/dist/utils/url.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|