UNPKG

my-uniapp-tools

Version:

一个简洁稳定的 uni-app 开发工具库,提供剪贴板、本地存储、导航、系统信息等常用功能

2 lines (1 loc) 3.37 kB
"use strict";var e=require("./constants.cjs");function t(e){if("string"!=typeof e)return"";const t=e.trim().toLowerCase().replace(/^\./,"");return"jpeg"===t||"jpe"===t?"jpg":t}function r(e){if(!Array.isArray(e))return;const r=Array.from(new Set(e.map(e=>t(e)).filter(Boolean)));return r.length>0?r:void 0}function n(e){return"string"==typeof e&&e.startsWith("blob:")}function i(e){if(null==e)return"";const t=typeof e;if("string"===t||"number"===t||"boolean"===t)return String(e);if("object"===t)try{return JSON.stringify(e)}catch{return String(e)}return String(e)}function o(e,t){return null==t||"number"!=typeof t||!Number.isFinite(t)||t<0?{valid:!0}:("number"==typeof e&&Number.isFinite(e)&&e>0?e:0)>1024*t*1024?{valid:!1,message:`文件大小不能超过 ${t}MB`}:{valid:!0}}exports.createFileId=function(e){return`${Date.now()}_${e}_${Math.random().toString(16).slice(2)}`},exports.detectPlatform=function(){if("undefined"!=typeof wx&&wx?.getSystemInfoSync)return"weixin";if("undefined"!=typeof my&&my?.getSystemInfoSync)return"alipay";if("undefined"!=typeof window&&"undefined"!=typeof document)return"h5";if("undefined"!=typeof plus)return"app";let e="unknown";return e="h5",e="weixin",e="alipay",e="app","app"},exports.getExtension=function(e){if(!e||"string"!=typeof e)return;const t=e.split(/[?#]/)[0].match(/\.([^./\\]+)$/);return t?t[1].toLowerCase():void 0},exports.isBlobUrl=n,exports.normalizeConcurrency=function(e,t){return!Number.isFinite(t)||t<=0?0:"number"!=typeof e||!Number.isFinite(e)||e<=0?t:Math.min(Math.floor(e),t)},exports.normalizeExtension=t,exports.normalizeExtensions=r,exports.normalizeFormData=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return;const t={},r=e;return Object.keys(r).forEach(e=>{t[e]=i(r[e])}),t},exports.normalizeHeaders=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return;const t={};return Object.keys(e).forEach(r=>{const n=e[r];null!=n&&(t[r]=String(n))}),Object.keys(t).length>0?t:void 0},exports.normalizePickFailMessage=function(e){const t=(e||"").trim();if(!t)return"选择文件失败";const r=t.toLowerCase();return r.includes("fail cancel")||r.includes("cancel")?"用户取消选择":/[\u4e00-\u9fff]/.test(t)?t:"选择文件失败"},exports.normalizeUniUploadStatusCode=function(e){if(e&&"number"==typeof e.statusCode)return e.statusCode;if(e&&"number"==typeof e.status)return e.status;const t="string"==typeof e?.errMsg?e.errMsg:"";return/:ok\b/i.test(t)?200:0},exports.revokeObjectURLSafely=function(e){if(n(e)&&"undefined"!=typeof URL&&"function"==typeof URL.revokeObjectURL)try{URL.revokeObjectURL(e)}catch{}},exports.safeJsonParse=function(e){if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return e}},exports.serializeFormDataValue=i,exports.validateFileSize=o,exports.validateSelectedFiles=function(n,i){if(!n||0===n.length)return{success:!1,message:e.MESSAGES.NO_FILES_SELECTED};const{maxSizeMB:s,extensions:u}=i||{};if(0===s)return{success:!1,message:e.MESSAGES.NO_FILES_ALLOWED};const f=null!=s&&"number"==typeof s&&Number.isFinite(s)&&s>0,c=r(u)||[],a=c.length>0;if(!f&&!a)return{success:!0};const l=a?new Set(c):null;for(const r of n){if(f&&!o(r.size,s).valid)return{success:!1,message:e.MESSAGES.PART_FILES_TOO_LARGE(s)};if(a&&l){const n=r.ext?t(r.ext):void 0;if(!n||!l.has(n))return{success:!1,message:e.MESSAGES.UNSUPPORTED_TYPE(c)}}}return{success:!0}};