utils-uniapp 1.0.9 → 1.1.0

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.
@@ -0,0 +1,29 @@
1
+ // alipaySubmit.d.ts
2
+
3
+ /**
4
+ * 生成input表单项
5
+ * @param key 表单name
6
+ * @param data 表单数据源对象
7
+ * @param form 挂载form表单
8
+ */
9
+ declare function createFormInputNode(key: string, data: Record<string, any>, form: HTMLFormElement): void;
10
+
11
+ interface AlipaySubmitOptions {
12
+ /** pay | charge | string,pay模式过滤 sn、id,默认 pay */
13
+ type?: 'pay' | 'charge' | string;
14
+ /** 支付宝网关地址,默认 https://mapi.alipay.com/gateway.do */
15
+ alipayGateway?: string;
16
+ }
17
+
18
+ /**
19
+ * 【纯支付执行函数】只接收后端返回数据,不发起网络请求,仅H5环境
20
+ * @param data 后端返回的data对象
21
+ * @param options 配置项
22
+ */
23
+ export declare function alipaySubmit(data: Record<string, any>, options?: AlipaySubmitOptions): void;
24
+
25
+ declare const _default: {
26
+ alipaySubmit: typeof alipaySubmit;
27
+ };
28
+
29
+ export default _default;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function m(e,o,a){let t=document.createElement("input");t.name=e,t.value=o[e],a.append(t)}function r(e){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(typeof document>"u"){console.warn("alipaySubmit:仅支持H5环境");return}if(!e||typeof e!="object"){console.error("alipaySubmit:入参data必须为对象");return}const{type:a="pay",alipayGateway:t="https://mapi.alipay.com/gateway.do"}=o,n=document.createElement("form");n.action=t;const u=a==="pay"?["sn","id"]:[];Object.keys(e).forEach(i=>{u.includes(i)||m(i,e,n)}),document.getElementsByTagName("body")[0].append(n),n.submit(),setTimeout(()=>{n.remove()},100)}exports.alipaySubmit=r;
package/lib/fs/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("../index-e3f8a8ef.js"),I=require("../http/index.js");require("../object/index.js");const x=I.createDownloadFile(),u=uni.getFileSystemManager(),P=["ascii","base64","binary","hex","ucs2","ucs-2","utf16le","utf-16le","utf-8","utf8","latin1"];function A(){return`data:image/${arguments.length>0&&arguments[0]!==void 0?arguments[0]:"png"};base64,`}function y(r){let{filePath:n,encoding:t,sync:e,opts:i={}}=r;if(!P.includes(t))throw"编码不符合";if(e===!0)try{return u.readFileSync(n,t,i.position,i.length)}catch(a){return console.error(a),null}return new Promise(function(a,s){u.readFile({filePath:n,encoding:t,...i,success(o){a(o)},fail:s})})}y.sync=function(r){return y({...r,sync:!0})};function g(r){let{filePath:n,data:t,encoding:e,sync:i,opts:a}=r;if(e=e||"binary",!P.includes(e))throw"编码不符合";if(i===!0)try{return u.writeFileSync(n,t,e),{tempFilePath:n,unlink:()=>u.unlinkSync(n)}}catch(s){return console.error(s),null}return new Promise(function(s,o){u.writeFile({filePath:n,encoding:e,data:t,...a,success(f){if(f.errMsg!=="writeFile:ok")return o(new Error(f.errMsg));s({tempFilePath:n,unlink:()=>u.unlinkSync(n)})},fail:o})})}g.sync=function(r){return g({...r,sync:!0})};function M(r){let{arraybuffer:n,fileType:t,method:e,canvasId:i,width:a,height:s,ctx:o,sync:f}=r;if(typeof n!="object"||n.toString().slice(8,-1)!=="ArrayBuffer")return reject(new Error("ArrayBuffer must be a ArrayBuffer"));if(e=e||"canvas",t=t||"png",e==="fs"){const d=wx.env.USER_DATA_PATH+"/"+Date.now()+"."+t;return g({filePath:d,data:n,sync:f})}if(e==="canvas")return new Promise(function(d,l){if(!["canvas","fs"].includes(e))return l(new Error("method must be canvas | fs"));const F=`data:image/${t};base64,${uni.arrayBufferToBase64(n)}`;if(typeof i!="string")return l(new Error("canvasId must be a string [#id]"));const w=uni.createSelectorQuery();o&&w.in(o),w.select(i).fields({node:!0,size:!0}).exec(function(){var b=v._asyncToGenerator(function*(c){if(c=c[0],!c)return l(new Error("No canvas nodes were obtained"));a=a||c.width,s=s||c.height;const m=c.node;if(!m)return l(new Error("No canvas instances were obtained"));const p=m.getContext("2d"),h=m.createImage();yield new Promise(T=>{h.onload=T,h.src=F}).catch(l),p.clearRect(0,0,a,s),p.drawImage(h,0,0,a,s),uni.canvasToTempFilePath({canvas:m,width:a,height:s,fileType:t,success:d,fail:l})});return function(c){return b.apply(this,arguments)}}())})}const S=uni.canIUse("chooseMedia");function B(r){return r={count:1,...r},new Promise((n,t)=>{S?uni.chooseMedia({...r,mediaType:"image",sizeType:["original","compressed"],success(e){if(e.errMsg=="chooseMedia:ok"&&e.tempFiles[0]){const i=e.tempFiles.map(a=>a.tempFilePath);n(i)}else t(e.errMsg)},fail(e){t(e)}}):uni.chooseImage({count:r.count,success(e){n(e.tempFilePaths)},fail(e){t(e)}})})}function E(r){return new Promise((n,t)=>{x(r).then(e=>{uni.saveImageToPhotosAlbum({filePath:e.tempFilePath,success:i=>{uni.showToast({icon:"none",title:"保存成功"}),n(i)},fail:i=>{t(i)}})})})}exports.$fs=u;exports.chooseImg=B;exports.getArraybufferTempPath=M;exports.getImgBase64Prefix=A;exports.readFile=y;exports.saveImageToPhotosAlbum=E;exports.writeFile=g;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("../index-b81565a7.js"),I=require("../http/index.js");require("../object/index.js");const x=I.createDownloadFile(),u=uni.getFileSystemManager(),P=["ascii","base64","binary","hex","ucs2","ucs-2","utf16le","utf-16le","utf-8","utf8","latin1"];function A(){return`data:image/${arguments.length>0&&arguments[0]!==void 0?arguments[0]:"png"};base64,`}function y(r){let{filePath:n,encoding:t,sync:e,opts:i={}}=r;if(!P.includes(t))throw"编码不符合";if(e===!0)try{return u.readFileSync(n,t,i.position,i.length)}catch(a){return console.error(a),null}return new Promise(function(a,s){u.readFile({filePath:n,encoding:t,...i,success(o){a(o)},fail:s})})}y.sync=function(r){return y({...r,sync:!0})};function g(r){let{filePath:n,data:t,encoding:e,sync:i,opts:a}=r;if(e=e||"binary",!P.includes(e))throw"编码不符合";if(i===!0)try{return u.writeFileSync(n,t,e),{tempFilePath:n,unlink:()=>u.unlinkSync(n)}}catch(s){return console.error(s),null}return new Promise(function(s,o){u.writeFile({filePath:n,encoding:e,data:t,...a,success(f){if(f.errMsg!=="writeFile:ok")return o(new Error(f.errMsg));s({tempFilePath:n,unlink:()=>u.unlinkSync(n)})},fail:o})})}g.sync=function(r){return g({...r,sync:!0})};function M(r){let{arraybuffer:n,fileType:t,method:e,canvasId:i,width:a,height:s,ctx:o,sync:f}=r;if(typeof n!="object"||n.toString().slice(8,-1)!=="ArrayBuffer")return reject(new Error("ArrayBuffer must be a ArrayBuffer"));if(e=e||"canvas",t=t||"png",e==="fs"){const d=wx.env.USER_DATA_PATH+"/"+Date.now()+"."+t;return g({filePath:d,data:n,sync:f})}if(e==="canvas")return new Promise(function(d,l){if(!["canvas","fs"].includes(e))return l(new Error("method must be canvas | fs"));const F=`data:image/${t};base64,${uni.arrayBufferToBase64(n)}`;if(typeof i!="string")return l(new Error("canvasId must be a string [#id]"));const w=uni.createSelectorQuery();o&&w.in(o),w.select(i).fields({node:!0,size:!0}).exec(function(){var b=v._asyncToGenerator(function*(c){if(c=c[0],!c)return l(new Error("No canvas nodes were obtained"));a=a||c.width,s=s||c.height;const m=c.node;if(!m)return l(new Error("No canvas instances were obtained"));const p=m.getContext("2d"),h=m.createImage();yield new Promise(T=>{h.onload=T,h.src=F}).catch(l),p.clearRect(0,0,a,s),p.drawImage(h,0,0,a,s),uni.canvasToTempFilePath({canvas:m,width:a,height:s,fileType:t,success:d,fail:l})});return function(c){return b.apply(this,arguments)}}())})}const S=uni.canIUse("chooseMedia");function B(r){return r={count:1,...r},new Promise((n,t)=>{S?uni.chooseMedia({...r,mediaType:"image",sizeType:["original","compressed"],success(e){if(e.errMsg=="chooseMedia:ok"&&e.tempFiles[0]){const i=e.tempFiles.map(a=>a.tempFilePath);n(i)}else t(e.errMsg)},fail(e){t(e)}}):uni.chooseImage({count:r.count,success(e){n(e.tempFilePaths)},fail(e){t(e)}})})}function E(r){return new Promise((n,t)=>{x(r).then(e=>{uni.saveImageToPhotosAlbum({filePath:e.tempFilePath,success:i=>{uni.showToast({icon:"none",title:"保存成功"}),n(i)},fail:i=>{t(i)}})})})}exports.$fs=u;exports.chooseImg=B;exports.getArraybufferTempPath=M;exports.getImgBase64Prefix=A;exports.readFile=y;exports.saveImageToPhotosAlbum=E;exports.writeFile=g;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("../index-e3f8a8ef.js"),g="/packageOther/pages/errorPage/errorPage",m={altitude:!0,type:"gcj02"},d={check:!1,errorPage:{path:g,message:"定位失败",type:2,enabled:!0}};function a(e,n){try{return e()}catch(o){console.warn(n||"执行失败",o);return}}function w(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const n=k(e);return new Promise((o,r)=>{const{success:l,fail:i,...t}=n.locationParams||{},c={...m,...t,success:o,fail:u=>{N(u,n,r)}};uni.getLocation(c)})}function k(e){return typeof e=="boolean"?{check:e,locationParams:{},errorPage:{...d.errorPage},onLocationFail:null,onNetworkFail:null}:e&&typeof e=="object"&&!Array.isArray(e)?{check:e.check!==!1,locationParams:e.locationParams||{},errorPage:{...d.errorPage,...e.errorPage||{}},onLocationFail:e.onLocationFail||null,onNetworkFail:e.onNetworkFail||null}:{check:d.check,locationParams:{},errorPage:{...d.errorPage},onLocationFail:null,onNetworkFail:null}}function N(e,n,o){a(()=>{var r;return(r=n.onLocationFail)===null||r===void 0?void 0:r.call(n,e)},"onLocationFail 回调执行失败"),n.check&&F(n),o(e)}function F(e){uni.getNetworkType({success:n=>{n.networkType==="none"?f(e,new Error("无网络连接")):P(e.errorPage)},fail:n=>{console.warn("网络检测失败",n),f(e,n),P(e.errorPage)}})}function f(e,n){if(typeof e.onNetworkFail=="function")a(()=>e.onNetworkFail(n),"onNetworkFail 回调执行失败");else{const o=(n==null?void 0:n.errMsg)||(n==null?void 0:n.message)||"网络连接异常";a(()=>{uni.showToast({title:o,icon:"none"})},"显示提示失败")}}function P(e){if((e==null?void 0:e.enabled)===!1)return;const n=v();if(!n){console.warn("无法获取当前页面");return}if(L(n))return;const o=y(n,e);a(()=>{uni.redirectTo({url:o})},"跳转错误页面失败")}function v(){try{const e=getCurrentPages();return e&&e.length>0?e[e.length-1]:null}catch(e){return console.warn("获取当前页面失败",e),null}}function L(e){const n=(e==null?void 0:e.route)||"",o=g.replace("/","");return n===o||n.startsWith(o+"/")}function y(e,n){var o;const{path:r,message:l,type:i}=n||{},t={url:(e==null||(o=e.$page)===null||o===void 0?void 0:o.fullPath)||"",message:l||"定位失败",type:i||2};return`${r||g}${h.getSearchStr(t)}`}function E(e){let{latitude:n,longitude:o,name:r="",address:l=""}=e;return new Promise((i,t)=>{const c=Number(n),u=Number(o);if(isNaN(c)||isNaN(u)){const s=new Error("经纬度参数无效");a(()=>{uni.showToast({icon:"none",title:"位置信息不完整"})}),t(s);return}uni.openLocation({latitude:c,longitude:u,name:r||"",address:l||"",success:i,fail:s=>{a(()=>{uni.showToast({icon:"none",title:s.errMsg||"打开地图失败"})}),t(s)}})})}exports.getLocation=w;exports.openLocation=E;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("../index-b81565a7.js"),g="/packageOther/pages/errorPage/errorPage",m={altitude:!0,type:"gcj02"},d={check:!1,errorPage:{path:g,message:"定位失败",type:2,enabled:!0}};function a(e,n){try{return e()}catch(o){console.warn(n||"执行失败",o);return}}function w(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const n=k(e);return new Promise((o,r)=>{const{success:l,fail:i,...t}=n.locationParams||{},c={...m,...t,success:o,fail:u=>{N(u,n,r)}};uni.getLocation(c)})}function k(e){return typeof e=="boolean"?{check:e,locationParams:{},errorPage:{...d.errorPage},onLocationFail:null,onNetworkFail:null}:e&&typeof e=="object"&&!Array.isArray(e)?{check:e.check!==!1,locationParams:e.locationParams||{},errorPage:{...d.errorPage,...e.errorPage||{}},onLocationFail:e.onLocationFail||null,onNetworkFail:e.onNetworkFail||null}:{check:d.check,locationParams:{},errorPage:{...d.errorPage},onLocationFail:null,onNetworkFail:null}}function N(e,n,o){a(()=>{var r;return(r=n.onLocationFail)===null||r===void 0?void 0:r.call(n,e)},"onLocationFail 回调执行失败"),n.check&&F(n),o(e)}function F(e){uni.getNetworkType({success:n=>{n.networkType==="none"?f(e,new Error("无网络连接")):P(e.errorPage)},fail:n=>{console.warn("网络检测失败",n),f(e,n),P(e.errorPage)}})}function f(e,n){if(typeof e.onNetworkFail=="function")a(()=>e.onNetworkFail(n),"onNetworkFail 回调执行失败");else{const o=(n==null?void 0:n.errMsg)||(n==null?void 0:n.message)||"网络连接异常";a(()=>{uni.showToast({title:o,icon:"none"})},"显示提示失败")}}function P(e){if((e==null?void 0:e.enabled)===!1)return;const n=v();if(!n){console.warn("无法获取当前页面");return}if(L(n))return;const o=y(n,e);a(()=>{uni.redirectTo({url:o})},"跳转错误页面失败")}function v(){try{const e=getCurrentPages();return e&&e.length>0?e[e.length-1]:null}catch(e){return console.warn("获取当前页面失败",e),null}}function L(e){const n=(e==null?void 0:e.route)||"",o=g.replace("/","");return n===o||n.startsWith(o+"/")}function y(e,n){var o;const{path:r,message:l,type:i}=n||{},t={url:(e==null||(o=e.$page)===null||o===void 0?void 0:o.fullPath)||"",message:l||"定位失败",type:i||2};return`${r||g}${h.toQueryString(t)}`}function E(e){let{latitude:n,longitude:o,name:r="",address:l=""}=e;return new Promise((i,t)=>{const c=Number(n),u=Number(o);if(isNaN(c)||isNaN(u)){const s=new Error("经纬度参数无效");a(()=>{uni.showToast({icon:"none",title:"位置信息不完整"})}),t(s);return}uni.openLocation({latitude:c,longitude:u,name:r||"",address:l||"",success:i,fail:s=>{a(()=>{uni.showToast({icon:"none",title:s.errMsg||"打开地图失败"})}),t(s)}})})}exports.getLocation=w;exports.openLocation=E;
package/lib/http/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("../index-e3f8a8ef.js"),A=require("../object/index.js"),O=Object.freeze({JSON:"application/json;charset=UTF-8",TEXT:"text/plain;charset=UTF-8",FORM_URLENCODED:"application/x-www-form-urlencoded;charset=UTF-8",FORM_DATA:"multipart/form-data"}),m={caches:Object.create(null),add(e,t){this.caches[e]=t},delete(e){Reflect.deleteProperty(this.caches,e)},_cancel(e){const t=this.caches[e];typeof(t==null?void 0:t.abort)=="function"&&t.abort()},cancelAll(){Object.values(this.caches).forEach(e=>{typeof(e==null?void 0:e.abort)=="function"&&e.abort()}),this.caches=Object.create(null)},source(){const e=`${Date.now()}-${C.getRandomStr(16)}`;return{token:e,cancel:()=>this._cancel(e)}}};function b(e,t){return new Promise((r,c)=>{const o=uni[e]({...t,success(n){if(n.statusCode>=200&&n.statusCode<300)return r(n);c({type:"fail",res:n})},fail(n){c({type:"fail",res:n})},complete(){t.cancelToken&&m.delete(t.cancelToken)}});t.cancelToken&&m.add(t.cancelToken,o)})}let R=0,v=!1;function N(e){v||(v=!0,uni.showLoading({title:e,mask:!0}))}function S(){v&&(v=!1,uni.hideLoading())}function j(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"加载中...";R++,R===1&&N(e)}function D(){R>0&&R--,R===0&&S()}function _(e,t){return function(r,c,o,n){return e(r,t,c,o,n)}}function w(e){return typeof e=="function"?e:()=>e||{}}function k(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const c=w(t.headers)(),o=w(r.headers)(),n={...t,...r,headers:{...c,...o}},{headers:a,...s}=n;return{urlRes:e.startsWith("http")?e:n.baseURL?n.baseURL+e:e,headers:a,configRes:s}}function U(e){return typeof e=="function"?[e]:Array.isArray(e)?e.filter(t=>typeof t=="function"):[]}function F(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const c={qs:!0,showError:!0,isCache:!1,cacheKey:`api:${e.url}`,cacheExpire:1e3*60*60*1,loadingText:e.loadingText,loading:!0,reqInterceptor:o=>o,resInterceptor:o=>o,errInterceptor:()=>{},...t,...r};return["reqInterceptor","resInterceptor","errInterceptor"].forEach(o=>{const n=[...U(t[o]),...U(r[o])];c[o]=n.length?C.composeAsync(...n):a=>a}),c}function q(e,t){const r=Array.from(t);return()=>e(...A.cloneDeepWithDescriptors(r))}function E(e,t,r,c,o){return x.apply(this,arguments)}function x(){return x=C._asyncToGenerator(function*(e,t,r,c,o){let n;c.loading&&(j(c.loadingText),n=()=>{D(),n=null});try{var a;const u=yield c.reqInterceptor(r),l=yield e(t,u);return(a=n)===null||a===void 0||a(),yield c.resInterceptor(l,c,o)}catch(u){var s;(s=n)===null||s===void 0||s();const l=yield c.errInterceptor(u);return l!==void 0?l:Promise.reject(u)}}),x.apply(this,arguments)}function L(e,t){function r(c,o,n,a,s){const u=m.source(),l=q(r,arguments),i=F({url:c,loadingText:"加载中..."},t,s),{urlRes:y,headers:T,configRes:g}=k(c,e,a);if(i.isCache){const d=C.getCache(i.cacheKey);if(d)return Promise.resolve(d)}const p=o.toUpperCase()==="GET"?O.JSON:i.qs?O.FORM_URLENCODED:O.JSON,h={cancelToken:u.token,method:o,url:y,data:n,header:{"Content-Type":p,...T},...g};return E(b,"request",h,i,l).then(d=>(i.isCache&&C.setCache(i.cacheKey,d,i.cacheExpire),d))}return r.get=_(r,"get"),r.post=_(r,"post"),r}function P(e,t){return function r(c,o,n,a){const s=m.source(),u=q(r,arguments),l=F({loadingText:"上传中..."},t,a),{urlRes:i,headers:y,configRes:T}=k(c,e,n),{keyName:g="file",filePath:f,...p}={keyName:"file",...o};if(!f||!f.startsWith("http://tmp")&&!f.startsWith("wxfile://tmp"))return Promise.resolve({data:f});const h={cancelToken:s.token,url:i,filePath:f,name:g,formData:p,header:{...y},...T};return E(b,"uploadFile",h,l,u)}}function z(e,t){return function r(c,o,n,a){const s=m.source(),u=q(r,arguments),l=F({loadingText:"下载中..."},t,a),{urlRes:i,headers:y,configRes:T}=k(c,e,n);let g=i;if(o&&typeof o=="object"){const p=Object.entries(o).filter(h=>{let[,d]=h;return d!=null&&d!==""}).map(h=>{let[d,I]=h;return`${encodeURIComponent(d)}=${encodeURIComponent(I)}`}).join("&");p&&(g+=(g.includes("?")?"&":"?")+p)}const f={cancelToken:s.token,url:g,header:{...y},...T};return E(b,"downloadFile",f,l,u)}}exports.CONTENT_TYPES=O;exports.CancelToken=m;exports.createDownloadFile=z;exports.createRequest=L;exports.createUploadFile=P;exports.endLoading=D;exports.promisifyRequest=b;exports.startLoading=j;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("../index-b81565a7.js"),A=require("../object/index.js"),O=Object.freeze({JSON:"application/json;charset=UTF-8",TEXT:"text/plain;charset=UTF-8",FORM_URLENCODED:"application/x-www-form-urlencoded;charset=UTF-8",FORM_DATA:"multipart/form-data"}),m={caches:Object.create(null),add(e,t){this.caches[e]=t},delete(e){Reflect.deleteProperty(this.caches,e)},_cancel(e){const t=this.caches[e];typeof(t==null?void 0:t.abort)=="function"&&t.abort()},cancelAll(){Object.values(this.caches).forEach(e=>{typeof(e==null?void 0:e.abort)=="function"&&e.abort()}),this.caches=Object.create(null)},source(){const e=`${Date.now()}-${C.getRandomStr(16)}`;return{token:e,cancel:()=>this._cancel(e)}}};function b(e,t){return new Promise((r,c)=>{const o=uni[e]({...t,success(n){if(n.statusCode>=200&&n.statusCode<300)return r(n);c({type:"fail",res:n})},fail(n){c({type:"fail",res:n})},complete(){t.cancelToken&&m.delete(t.cancelToken)}});t.cancelToken&&m.add(t.cancelToken,o)})}let R=0,v=!1;function N(e){v||(v=!0,uni.showLoading({title:e,mask:!0}))}function S(){v&&(v=!1,uni.hideLoading())}function j(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"加载中...";R++,R===1&&N(e)}function D(){R>0&&R--,R===0&&S()}function _(e,t){return function(r,c,o,n){return e(r,t,c,o,n)}}function w(e){return typeof e=="function"?e:()=>e||{}}function k(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const c=w(t.headers)(),o=w(r.headers)(),n={...t,...r,headers:{...c,...o}},{headers:a,...s}=n;return{urlRes:e.startsWith("http")?e:n.baseURL?n.baseURL+e:e,headers:a,configRes:s}}function U(e){return typeof e=="function"?[e]:Array.isArray(e)?e.filter(t=>typeof t=="function"):[]}function F(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const c={qs:!0,showError:!0,isCache:!1,cacheKey:`api:${e.url}`,cacheExpire:1e3*60*60*1,loadingText:e.loadingText,loading:!0,reqInterceptor:o=>o,resInterceptor:o=>o,errInterceptor:()=>{},...t,...r};return["reqInterceptor","resInterceptor","errInterceptor"].forEach(o=>{const n=[...U(t[o]),...U(r[o])];c[o]=n.length?C.composeAsync(...n):a=>a}),c}function q(e,t){const r=Array.from(t);return()=>e(...A.cloneDeepWithDescriptors(r))}function E(e,t,r,c,o){return x.apply(this,arguments)}function x(){return x=C._asyncToGenerator(function*(e,t,r,c,o){let n;c.loading&&(j(c.loadingText),n=()=>{D(),n=null});try{var a;const u=yield c.reqInterceptor(r),l=yield e(t,u);return(a=n)===null||a===void 0||a(),yield c.resInterceptor(l,c,o)}catch(u){var s;(s=n)===null||s===void 0||s();const l=yield c.errInterceptor(u);return l!==void 0?l:Promise.reject(u)}}),x.apply(this,arguments)}function L(e,t){function r(c,o,n,a,s){const u=m.source(),l=q(r,arguments),i=F({url:c,loadingText:"加载中..."},t,s),{urlRes:y,headers:T,configRes:g}=k(c,e,a);if(i.isCache){const d=C.getCache(i.cacheKey);if(d)return Promise.resolve(d)}const p=o.toUpperCase()==="GET"?O.JSON:i.qs?O.FORM_URLENCODED:O.JSON,h={cancelToken:u.token,method:o,url:y,data:n,header:{"Content-Type":p,...T},...g};return E(b,"request",h,i,l).then(d=>(i.isCache&&C.setCache(i.cacheKey,d,i.cacheExpire),d))}return r.get=_(r,"get"),r.post=_(r,"post"),r}function P(e,t){return function r(c,o,n,a){const s=m.source(),u=q(r,arguments),l=F({loadingText:"上传中..."},t,a),{urlRes:i,headers:y,configRes:T}=k(c,e,n),{keyName:g="file",filePath:f,...p}={keyName:"file",...o};if(!f||!f.startsWith("http://tmp")&&!f.startsWith("wxfile://tmp"))return Promise.resolve({data:f});const h={cancelToken:s.token,url:i,filePath:f,name:g,formData:p,header:{...y},...T};return E(b,"uploadFile",h,l,u)}}function z(e,t){return function r(c,o,n,a){const s=m.source(),u=q(r,arguments),l=F({loadingText:"下载中..."},t,a),{urlRes:i,headers:y,configRes:T}=k(c,e,n);let g=i;if(o&&typeof o=="object"){const p=Object.entries(o).filter(h=>{let[,d]=h;return d!=null&&d!==""}).map(h=>{let[d,I]=h;return`${encodeURIComponent(d)}=${encodeURIComponent(I)}`}).join("&");p&&(g+=(g.includes("?")?"&":"?")+p)}const f={cancelToken:s.token,url:g,header:{...y},...T};return E(b,"downloadFile",f,l,u)}}exports.CONTENT_TYPES=O;exports.CancelToken=m;exports.createDownloadFile=z;exports.createRequest=L;exports.createUploadFile=P;exports.endLoading=D;exports.promisifyRequest=b;exports.startLoading=j;
@@ -0,0 +1 @@
1
+ "use strict";function C(n,e,u,t,o,r,a){try{var i=n[r](a),c=i.value}catch(f){return void u(f)}i.done?e(c):Promise.resolve(c).then(t,o)}function h(n){return function(){var e=this,u=arguments;return new Promise(function(t,o){var r=n.apply(e,u);function a(c){C(r,t,o,a,i,"next",c)}function i(c){C(r,t,o,a,i,"throw",c)}a(void 0)})}}function y(){for(var n=arguments.length,e=new Array(n),u=0;u<n;u++)e[u]=arguments[u];if(e.some(t=>typeof t!="function"))throw new TypeError("compose 参数必须是函数");return e.length===0?function(){for(var t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];return o.length===1?o[0]:o}:e.reduce((t,o)=>function(){for(var r=this,a=arguments.length,i=new Array(a),c=0;c<a;c++)i[c]=arguments[c];return o.call(this,function(){for(var f=arguments.length,l=new Array(f),s=0;s<f;s++)l[s]=arguments[s];return t.apply(r,l.concat(i))},...i)})}function P(){for(var n=arguments.length,e=new Array(n),u=0;u<n;u++)e[u]=arguments[u];if(e.some(t=>typeof t!="function"))throw new TypeError("composeAsync 参数必须是函数");return e.length===0?h(function*(){for(var t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];return o.length===1?o[0]:o}):e.reduce((t,o)=>h(function*(){for(var r=this,a=arguments.length,i=new Array(a),c=0;c<a;c++)i[c]=arguments[c];return o.call(this,h(function*(){for(var f=arguments.length,l=new Array(f),s=0;s<f;s++)l[s]=arguments[s];return t.apply(r,l.concat(i))}),...i)}))}function I(){for(var n=arguments.length,e=new Array(n),u=0;u<n;u++)e[u]=arguments[u];if(e.some(t=>typeof t!="function"))throw new TypeError("pipe 参数必须是函数");return e.length===0?function(){for(var t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];return o.length===1?o[0]:o}:e.reduce((t,o)=>function(){for(var r=this,a=arguments.length,i=new Array(a),c=0;c<a;c++)i[c]=arguments[c];return t.call(this,function(){for(var f=arguments.length,l=new Array(f),s=0;s<f;s++)l[s]=arguments[s];return o.apply(r,l.concat(i))},...i)})}function x(){for(var n=arguments.length,e=new Array(n),u=0;u<n;u++)e[u]=arguments[u];if(e.some(t=>typeof t!="function"))throw new TypeError("pipeAsync 参数必须是函数");return e.length===0?h(function*(){for(var t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];return o.length===1?o[0]:o}):e.reduce((t,o)=>h(function*(){for(var r=this,a=arguments.length,i=new Array(a),c=0;c<a;c++)i[c]=arguments[c];return t.call(this,h(function*(){for(var f=arguments.length,l=new Array(f),s=0;s<f;s++)l[s]=arguments[s];return o.apply(r,l.concat(i))}),...i)}))}function R(n,e){let u=null;t.stop=()=>u&&clearTimeout(u);function t(){for(var o=arguments.length,r=new Array(o),a=0;a<o;a++)r[a]=arguments[a];t.stop(),u=setTimeout(()=>{n.apply(this,r)},e)}return t}function T(n,e){let u=null,t=[];o.stop=()=>{if(u){var r;(r=t.shift())===null||r===void 0||r("cancel"),clearTimeout(u)}};function o(){for(var r=arguments.length,a=new Array(r),i=0;i<r;i++)a[i]=arguments[i];return new Promise((c,f)=>{o.stop(),t.push(f),u=setTimeout(()=>{c(n.apply(this,a))},e)})}return o}function b(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:500,u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,t;return u?function(){if(!t){t=!0;for(var o=arguments.length,r=new Array(o),a=0;a<o;a++)r[a]=arguments[a];typeof n=="function"&&n.apply(this,r),setTimeout(()=>{t=!1},e)}}:function(){for(var o=arguments.length,r=new Array(o),a=0;a<o;a++)r[a]=arguments[a];t||(t=!0,setTimeout(()=>{t=!1,typeof n=="function"&&n.apply(this,r)},e))}}function U(n){return encodeURIComponent(JSON.stringify(n||{}))}function Q(n){return JSON.parse(decodeURIComponent(n||"{}"))}function A(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{silent:u=!1,decodePlus:t=!0,strict:o=!1}=e,r={};if(typeof n!="string")return r;function a(s,g){let m=s;t&&(m=m.replace(/\+/g," "));try{return decodeURIComponent(m)}catch(d){return u||console.warn(`Failed to decode ${g?"key":"value"}: ${m}`,d),o?null:(g&&(m=m.replace(/%[0-9a-f]{2}/gi,"")),m)}}const i=n.split("#")[0],c=i.indexOf("?"),f=c>=0?i.slice(c+1):i;if(!f)return r;const l=f.split("&");for(let s=0;s<l.length;s++){const g=l[s];if(!g)continue;const m=g.indexOf("=");let d,S;m===-1?(d=g,S=""):(d=g.slice(0,m),S=g.slice(m+1));const p=a(d,!0);if(p===null)continue;const w=a(S,!1);if(w===null||!p)continue;const v=r[p];v===void 0?r[p]=w:Array.isArray(v)?v.push(w):r[p]=[v,w]}return r}function $(n){return typeof window>"u"?{}:A(window.location.search,n)}function M(n){if(typeof window>"u")return{};const e=window.location.hash,u=e.indexOf("?");if(u===-1)return{};const t=e.substring(u);return A(t,n)}function O(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"-";return[Date.now().toString(),Math.random().toString(16).slice(2,10),Math.random().toString(16).slice(7),n.toString()].join(e)}function j(n){return n.replace(/([^-])([^-]*)/g,function(e,u,t){return u.toLocaleUpperCase()+t.toLocaleLowerCase()}).replace(/-/g,"")}function E(n,e){n=n.split("."),e=e.split(".");const u=Math.max(n.length,e.length);for(;n.length<u;)n.push("0");for(;e.length<u;)e.push("0");for(let t=0;t<u;t++){const o=parseInt(n[t]),r=parseInt(e[t]);if(o>r)return 1;if(o<r)return-1}return 0}function D(){return"#"+Math.floor(Math.random()*16777215).toString(16).padEnd(6,"0")}function F(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:8,e=arguments.length>1?arguments[1]:void 0;n=n||32,e||(e="ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678");const u=e.length;let t="";for(let o=0;o<n;o++)t+=e.charAt(Math.floor(Math.random()*u));return t}function q(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!n||typeof n!="object")return"";const u=[];Object.keys(n).forEach(o=>{const r=n[o];if(r==null)return;const a=encodeURIComponent(o);if(Array.isArray(r)){r.forEach(c=>{const f=encodeURIComponent(c);u.push(`${a}=${f}`)});return}let i=r;typeof i=="object"&&i!==null&&(i=JSON.stringify(i)),u.push(`${a}=${encodeURIComponent(i)}`)});const t=u.join("&");return e&&t?`?${t}`:t}function L(n){const e=n.scene;return e&&(n={fromCode:!0,...n,...A(e)}),n}function V(n,e){let u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:36e5;try{return uni.setStorageSync(n,{time:Date.now(),expire:u,data:e}),!0}catch(t){return console.error(`设置缓存[${n}]失败:`,t),!1}}function G(n){try{const e=uni.getStorageSync(n);return!e||typeof e!="object"||Array.isArray(e)||!("time"in e)||!("expire"in e)?(e&&uni.removeStorageSync(n),null):Date.now()-e.time>=e.expire?(uni.removeStorageSync(n),null):e.data}catch(e){return console.error(`获取缓存[${n}]失败:`,e),null}}function H(n){try{const e=uni.getStorageSync(n);return!e||typeof e!="object"||Array.isArray(e)||!("time"in e)||!("expire"in e)?!1:Date.now()-e.time>=e.expire?(uni.removeStorageSync(n),!1):(e.time=Date.now(),uni.setStorageSync(n,e),!0)}catch(e){return console.error(`续期缓存[${n}]失败:`,e),!1}}function J(n){try{return uni.removeStorageSync(n),!0}catch(e){return console.error(`删除缓存[${n}]失败:`,e),!1}}exports._asyncToGenerator=h;exports.compareVersion=E;exports.compose=y;exports.composeAsync=P;exports.debounce=R;exports.debouncePromise=T;exports.decodeURIParams=Q;exports.encodeURIParams=U;exports.getCache=G;exports.getOnLoadParams=L;exports.getPascalCase=j;exports.getQueryParams=A;exports.getQueryParamsFromHash=M;exports.getQueryParamsFromSearch=$;exports.getRandom=O;exports.getRandomStr=F;exports.pipe=I;exports.pipeAsync=x;exports.randomColor=D;exports.removeCache=J;exports.renewCache=H;exports.setCache=V;exports.throttle=b;exports.toQueryString=q;
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./array/index.js"),n=require("./date/index.js"),r=require("./fs/index.js"),s=require("./getLocation/index.js"),t=require("./http/index.js"),e=require("./index-e3f8a8ef.js"),i=require("./object/index.js"),o=require("./validate/index.js"),c=require("./index-9456b3d9.js"),d=require("./lodash");Object.assign(exports,d);exports.exchangeArrP=a.exchangeArrP;exports.filterTree=a.filterTree;exports.findTreeItem=a.findTreeItem;exports.flatWithKey=a.flatWithKey;exports.getTreePath=a.getTreePath;exports.groupBy=a.groupBy;exports.reverseForEach=a.reverseForEach;exports.treeItemSetParent=a.treeItemSetParent;exports.dateFormat=n.dateFormat;exports.getDate=n.getDate;exports.$fs=r.$fs;exports.chooseImg=r.chooseImg;exports.getArraybufferTempPath=r.getArraybufferTempPath;exports.getImgBase64Prefix=r.getImgBase64Prefix;exports.readFile=r.readFile;exports.saveImageToPhotosAlbum=r.saveImageToPhotosAlbum;exports.writeFile=r.writeFile;exports.getLocation=s.getLocation;exports.openLocation=s.openLocation;exports.CONTENT_TYPES=t.CONTENT_TYPES;exports.CancelToken=t.CancelToken;exports.createDownloadFile=t.createDownloadFile;exports.createRequest=t.createRequest;exports.createUploadFile=t.createUploadFile;exports.endLoading=t.endLoading;exports.promisifyRequest=t.promisifyRequest;exports.startLoading=t.startLoading;exports.compareVersion=e.compareVersion;exports.compose=e.compose;exports.composeAsync=e.composeAsync;exports.debounce=e.debounce;exports.debouncePromise=e.debouncePromise;exports.decodeURIParams=e.decodeURIParams;exports.encodeURIParams=e.encodeURIParams;exports.getCache=e.getCache;exports.getOnLoadParams=e.getOnLoadParams;exports.getPascalCase=e.getPascalCase;exports.getRandom=e.getRandom;exports.getRandomStr=e.getRandomStr;exports.getSearchParams=e.getSearchParams;exports.getSearchStr=e.getSearchStr;exports.pipe=e.pipe;exports.pipeAsync=e.pipeAsync;exports.randomColor=e.randomColor;exports.removeCache=e.removeCache;exports.renewCache=e.renewCache;exports.setCache=e.setCache;exports.throttle=e.throttle;exports.cloneDeepWithDescriptors=i.cloneDeepWithDescriptors;exports.getRawType=i.getRawType;exports.hasOwnProperty=i.hasOwnProperty;exports.isExternal=o.isExternal;exports.validDate=o.validDate;exports.validIDCard=o.validIDCard;exports.validPhone=o.validPhone;exports.validPostalCode=o.validPostalCode;exports.validURL=o.validURL;exports.wx=c.index;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./aliPay/index.js"),a=require("./array/index.js"),n=require("./date/index.js"),t=require("./fs/index.js"),s=require("./getLocation/index.js"),r=require("./http/index.js"),e=require("./index-b81565a7.js"),i=require("./object/index.js"),o=require("./validate/index.js"),d=require("./index-9456b3d9.js"),m=require("./lodash");Object.assign(exports,m);exports.alipaySubmit=c.alipaySubmit;exports.exchangeArrP=a.exchangeArrP;exports.filterTree=a.filterTree;exports.findTreeItem=a.findTreeItem;exports.flatWithKey=a.flatWithKey;exports.getTreePath=a.getTreePath;exports.groupBy=a.groupBy;exports.reverseForEach=a.reverseForEach;exports.treeItemSetParent=a.treeItemSetParent;exports.dateFormat=n.dateFormat;exports.getDate=n.getDate;exports.$fs=t.$fs;exports.chooseImg=t.chooseImg;exports.getArraybufferTempPath=t.getArraybufferTempPath;exports.getImgBase64Prefix=t.getImgBase64Prefix;exports.readFile=t.readFile;exports.saveImageToPhotosAlbum=t.saveImageToPhotosAlbum;exports.writeFile=t.writeFile;exports.getLocation=s.getLocation;exports.openLocation=s.openLocation;exports.CONTENT_TYPES=r.CONTENT_TYPES;exports.CancelToken=r.CancelToken;exports.createDownloadFile=r.createDownloadFile;exports.createRequest=r.createRequest;exports.createUploadFile=r.createUploadFile;exports.endLoading=r.endLoading;exports.promisifyRequest=r.promisifyRequest;exports.startLoading=r.startLoading;exports.compareVersion=e.compareVersion;exports.compose=e.compose;exports.composeAsync=e.composeAsync;exports.debounce=e.debounce;exports.debouncePromise=e.debouncePromise;exports.decodeURIParams=e.decodeURIParams;exports.encodeURIParams=e.encodeURIParams;exports.getCache=e.getCache;exports.getOnLoadParams=e.getOnLoadParams;exports.getPascalCase=e.getPascalCase;exports.getQueryParams=e.getQueryParams;exports.getQueryParamsFromHash=e.getQueryParamsFromHash;exports.getQueryParamsFromSearch=e.getQueryParamsFromSearch;exports.getRandom=e.getRandom;exports.getRandomStr=e.getRandomStr;exports.pipe=e.pipe;exports.pipeAsync=e.pipeAsync;exports.randomColor=e.randomColor;exports.removeCache=e.removeCache;exports.renewCache=e.renewCache;exports.setCache=e.setCache;exports.throttle=e.throttle;exports.toQueryString=e.toQueryString;exports.cloneDeepWithDescriptors=i.cloneDeepWithDescriptors;exports.getRawType=i.getRawType;exports.hasOwnProperty=i.hasOwnProperty;exports.isExternal=o.isExternal;exports.validDate=o.validDate;exports.validIDCard=o.validIDCard;exports.validPhone=o.validPhone;exports.validPostalCode=o.validPostalCode;exports.validURL=o.validURL;exports.wx=d.index;
@@ -84,11 +84,51 @@ export function decodeURIParams<T = any>(params?: string): T;
84
84
  /** 路径参数对象化结果,同名key聚合为数组 */
85
85
  export type SearchParams = Record<string, string | string[]>;
86
86
 
87
+ export interface GetQueryParamsOptions {
88
+ /** 是否静默模式,不输出警告 */
89
+ silent?: boolean;
90
+ /** 是否将 + 号解码为空格 */
91
+ decodePlus?: boolean;
92
+ /** 严格模式,解码失败时跳过该参数 */
93
+ strict?: boolean;
94
+ }
95
+
96
+ /**
97
+ * 解析 URL query 字符串,相同 key 自动转为数组
98
+ * 支持传入完整 URL / query 字符串,自动剔除 hash
99
+ *
100
+ * @param str 完整 url / query 字符串,可以带开头 ?,可携带 #hash
101
+ * @param options 配置选项
102
+ * @returns 解析结果
103
+ */
104
+ export declare function getQueryParams(
105
+ str?: string,
106
+ options?: GetQueryParamsOptions
107
+ ): Record<string, string | string[]>;
108
+
109
+ /**
110
+ * 从当前页面 URL 的 search 部分解析参数(仅浏览器环境)
111
+ * @param options 同 getQueryParams 的 options
112
+ * @returns 解析结果
113
+ */
114
+ export declare function getQueryParamsFromSearch(
115
+ options?: GetQueryParamsOptions
116
+ ): Record<string, string | string[]>;
117
+
87
118
  /**
88
- * 路径参数对象化
89
- * @param { string } str 查询字符串
119
+ * 从当前页面 URL 的 hash 部分解析参数(仅浏览器环境)
120
+ * 自动提取 hash 中 ? 后的 query 参数
121
+ *
122
+ * @example
123
+ * // URL: https://example.com#/pages/index?a=1&b=2
124
+ * getQueryParamsFromHash() // => { a: '1', b: '2' }
125
+ *
126
+ * @param options 同 getQueryParams 的 options
127
+ * @returns 解析结果
90
128
  */
91
- export function getSearchParams(str: string): SearchParams;
129
+ export declare function getQueryParamsFromHash(
130
+ options?: GetQueryParamsOptions
131
+ ): Record<string, string | string[]>;
92
132
 
93
133
  /**
94
134
  * 生成随机标识串(时间戳与随机数拼接)
@@ -123,10 +163,16 @@ export function randomColor(): string;
123
163
  export function getRandomStr(len?: number, $chars?: string): string;
124
164
 
125
165
  /**
126
- * 对象转为查询字符串(对象值JSON序列化)
127
- * @param { Record<string,any> } params 参数对象
166
+ * 对象转url query字符串
167
+ * 数组自动展开为重复key,与 getQueryParams 解析行为双向对称
168
+ * @param params 参数对象
169
+ * @param addQuestionMark 是否添加开头问号 ?
170
+ * @returns query串
128
171
  */
129
- export function getSearchStr(params: Record<string, any>): string;
172
+ export declare function toQueryString(
173
+ params: Record<string, any>,
174
+ addQuestionMark?: boolean
175
+ ): string;
130
176
 
131
177
  /**
132
178
  * 获取页面onLoad参数(自动解析小程序扫码scene)
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../index-e3f8a8ef.js");exports.compareVersion=e.compareVersion;exports.compose=e.compose;exports.composeAsync=e.composeAsync;exports.debounce=e.debounce;exports.debouncePromise=e.debouncePromise;exports.decodeURIParams=e.decodeURIParams;exports.encodeURIParams=e.encodeURIParams;exports.getCache=e.getCache;exports.getOnLoadParams=e.getOnLoadParams;exports.getPascalCase=e.getPascalCase;exports.getRandom=e.getRandom;exports.getRandomStr=e.getRandomStr;exports.getSearchParams=e.getSearchParams;exports.getSearchStr=e.getSearchStr;exports.pipe=e.pipe;exports.pipeAsync=e.pipeAsync;exports.randomColor=e.randomColor;exports.removeCache=e.removeCache;exports.renewCache=e.renewCache;exports.setCache=e.setCache;exports.throttle=e.throttle;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../index-b81565a7.js");exports.compareVersion=e.compareVersion;exports.compose=e.compose;exports.composeAsync=e.composeAsync;exports.debounce=e.debounce;exports.debouncePromise=e.debouncePromise;exports.decodeURIParams=e.decodeURIParams;exports.encodeURIParams=e.encodeURIParams;exports.getCache=e.getCache;exports.getOnLoadParams=e.getOnLoadParams;exports.getPascalCase=e.getPascalCase;exports.getQueryParams=e.getQueryParams;exports.getQueryParamsFromHash=e.getQueryParamsFromHash;exports.getQueryParamsFromSearch=e.getQueryParamsFromSearch;exports.getRandom=e.getRandom;exports.getRandomStr=e.getRandomStr;exports.pipe=e.pipe;exports.pipeAsync=e.pipeAsync;exports.randomColor=e.randomColor;exports.removeCache=e.removeCache;exports.renewCache=e.renewCache;exports.setCache=e.setCache;exports.throttle=e.throttle;exports.toQueryString=e.toQueryString;
@@ -0,0 +1,134 @@
1
+ import Vue from 'vue';
2
+
3
+ /**
4
+ * 返回守卫弹窗配置项
5
+ * @property title 弹窗标题
6
+ * @property content 弹窗主体提示文案
7
+ * @property confirmText 确认按钮文字
8
+ * @property cancelText 取消按钮文字
9
+ */
10
+ export interface BackGuardOptions {
11
+ title: string;
12
+ content: string;
13
+ confirmText: string;
14
+ cancelText: string;
15
+ }
16
+
17
+ /**
18
+ * Mixin注入的响应式状态
19
+ * @property backGuard 控制 page‑container 组件 show 显示/隐藏
20
+ * @property guardActive 业务内部标记:是否真正开启返回防护;业务禁止直接修改,统一调用 enableBackGuard / disableBackGuard
21
+ * @property backGuardOptions 返回确认弹窗配置对象;运行时通过 setBackGuardOptions 更新文案
22
+ */
23
+ export interface BackGuardMixinState {
24
+ backGuard: boolean;
25
+ guardActive: boolean;
26
+ backGuardOptions: BackGuardOptions;
27
+ }
28
+
29
+ /**
30
+ * Mixin注入的实例方法
31
+ */
32
+ export interface BackGuardMixinMethods {
33
+ /**
34
+ * page‑container @before‑leave 绑定事件回调
35
+ * 小程序点击左上角返回 / 物理返回键触发此事件
36
+ * - 未开启防护直接放行;开启防护弹出确认框
37
+ * - 确认离开执行 uni.navigateBack;取消则维持页面不跳转
38
+ */
39
+ onBeforeLeave(): Promise<void>;
40
+
41
+ /**
42
+ * 封装 uni.showModal,转为Promise调用
43
+ * @param options 弹窗配置,支持部分字段
44
+ * @returns Promise<boolean> true=确认离开,false=取消
45
+ */
46
+ handleBackGuardConfirm(options: Partial<BackGuardOptions>): Promise<boolean>;
47
+
48
+ /**
49
+ * 运行时更新挽留弹窗配置,浅合并对象,支持只传部分字段
50
+ * @example
51
+ * this.setBackGuardOptions({ content: '问诊会话未结束,确定离开吗?' })
52
+ * @param customOpts 自定义弹窗配置
53
+ */
54
+ setBackGuardOptions(customOpts: Partial<BackGuardOptions>): void;
55
+
56
+ /**
57
+ * 【业务API】开启返回挽留防护;表单编辑、会话进行中调用
58
+ * @example
59
+ * this.enableBackGuard()
60
+ */
61
+ enableBackGuard(): void;
62
+
63
+ /**
64
+ * 【业务API】关闭返回挽留防护;保存成功、会话结束调用
65
+ * @example
66
+ * this.disableBackGuard()
67
+ */
68
+ disableBackGuard(): void;
69
+ }
70
+
71
+ /**
72
+ * 返回守卫 Mixin(微信小程序 page‑container 实现返回拦截)
73
+ *
74
+ * ## 说明
75
+ * 1. mixin 内部自动注入 onShow / onUnload 生命周期,页面无需处理
76
+ * 2. 仅微信小程序有效;H5/App不支持该组件能力
77
+ *
78
+ * ## 模板使用(页面template必须引入该组件)
79
+ * ```html
80
+ * <page-container
81
+ * :show="backGuard"
82
+ * overlay="false"
83
+ * duration="0"
84
+ * @beforeleave="onBeforeLeave"
85
+ * />
86
+ * ```
87
+ *
88
+ * ## 业务代码调用示例(和截图保持一致)
89
+ * ```js
90
+ * // 会话开始,开启防护 + 修改弹窗提示文案
91
+ * this.enableBackGuard()
92
+ * this.setBackGuardOptions({
93
+ * content: '问诊会话未结束,确定离开吗?'
94
+ * })
95
+ *
96
+ * // 会话结束/保存成功,关闭防护
97
+ * this.disableBackGuard()
98
+ * ```
99
+ */
100
+ declare const backGuardMixin: Vue.ComponentOptions<Vue> & {
101
+ /** mixin内部data函数,返回响应式状态 */
102
+ data(): BackGuardMixinState;
103
+ /** mixin内部方法集合 */
104
+ methods: BackGuardMixinMethods;
105
+ };
106
+
107
+ export default backGuardMixin;
108
+
109
+ /**
110
+ * 【可选全局Vue实例扩展】
111
+ * 开启后,所有页面 this.xxx 自动获得类型提示;
112
+ * ⚠️风险:全局污染,多个mixin会出现字段冲突;不需要请注释
113
+ */
114
+ // declare module 'vue/types/vue' {
115
+ // interface Vue extends BackGuardMixinState, BackGuardMixinMethods {}
116
+ // }
117
+
118
+ /**
119
+ * 不开启全局扩展时,页面手动标注this类型示例
120
+ * ```ts
121
+ * import Vue from 'vue'
122
+ * import backGuardMixin, { BackGuardMixinState, BackGuardMixinMethods } from '@/common/mixins/backGuard.mixin'
123
+ *
124
+ * type PageThis = Vue & BackGuardMixinState & BackGuardMixinMethods;
125
+ * export default {
126
+ * mixins: [backGuardMixin],
127
+ * methods: {
128
+ * demo(this: PageThis) {
129
+ * this.enableBackGuard()
130
+ * }
131
+ * }
132
+ * }
133
+ * ```
134
+ */
@@ -0,0 +1,65 @@
1
+ export default {
2
+ data() {
3
+ return {
4
+ backGuard: false,
5
+ // 内部源状态:是否需要开启返回防护,业务不直接修改
6
+ guardActive: false,
7
+ backGuardOptions: {
8
+ title: '提示',
9
+ content: '内容尚未保存,确定放弃编辑?',
10
+ confirmText: '确定离开',
11
+ cancelText: '取消'
12
+ }
13
+ };
14
+ },
15
+ onShow() {
16
+ this.backGuard = this.guardActive;
17
+ },
18
+ onUnload() {
19
+ this.backGuard = false;
20
+ },
21
+ methods: {
22
+ async onBeforeLeave() {
23
+ // 容器由代码关闭(disableBackGuard 置 show=false)时直接放行,不弹确认框
24
+ if (!this.guardActive) return;
25
+ this.backGuard = false;
26
+ const shouldLeave = await this.handleBackGuardConfirm(this.backGuardOptions);
27
+ if (shouldLeave === true) {
28
+ uni.navigateBack();
29
+ } else {
30
+ this.$nextTick(() => {
31
+ this.backGuard = this.guardActive;
32
+ });
33
+ }
34
+ },
35
+
36
+ async handleBackGuardConfirm(options) {
37
+ return new Promise(resolve => {
38
+ uni.showModal({
39
+ title: options.title,
40
+ content: options.content,
41
+ confirmText: options.confirmText,
42
+ cancelText: options.cancelText,
43
+ success: res => resolve(res.confirm)
44
+ });
45
+ });
46
+ },
47
+
48
+ setBackGuardOptions(customOpts) {
49
+ this.backGuardOptions = {
50
+ ...this.backGuardOptions,
51
+ ...customOpts
52
+ };
53
+ },
54
+
55
+ // ========== 对外API,业务只调用这两个 ==========
56
+ enableBackGuard() {
57
+ this.guardActive = true;
58
+ this.backGuard = true;
59
+ },
60
+ disableBackGuard() {
61
+ this.guardActive = false;
62
+ this.backGuard = false;
63
+ }
64
+ }
65
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "utils-uniapp",
3
- "version": "1.0.9",
3
+ "version": "1.1.0",
4
4
  "description": "aubyn's utils for uniapp",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -1 +0,0 @@
1
- "use strict";function l(r,t,a,n,o,e,u){try{var c=r[e](u),i=c.value}catch(m){return void a(m)}c.done?t(i):Promise.resolve(i).then(n,o)}function g(r){return function(){var t=this,a=arguments;return new Promise(function(n,o){var e=r.apply(t,a);function u(i){l(e,n,o,u,c,"next",i)}function c(i){l(e,n,o,u,c,"throw",i)}u(void 0)})}}function p(){for(var r=arguments.length,t=new Array(r),a=0;a<r;a++)t[a]=arguments[a];if(t.some(n=>typeof n!="function"))throw new TypeError("compose 参数必须是函数");return t.length===0?function(){for(var n=arguments.length,o=new Array(n),e=0;e<n;e++)o[e]=arguments[e];return o.length===1?o[0]:o}:t.reduce((n,o)=>function(){for(var e=this,u=arguments.length,c=new Array(u),i=0;i<u;i++)c[i]=arguments[i];return o.call(this,function(){for(var m=arguments.length,f=new Array(m),s=0;s<m;s++)f[s]=arguments[s];return n.apply(e,f.concat(c))},...c)})}function d(){for(var r=arguments.length,t=new Array(r),a=0;a<r;a++)t[a]=arguments[a];if(t.some(n=>typeof n!="function"))throw new TypeError("composeAsync 参数必须是函数");return t.length===0?g(function*(){for(var n=arguments.length,o=new Array(n),e=0;e<n;e++)o[e]=arguments[e];return o.length===1?o[0]:o}):t.reduce((n,o)=>g(function*(){for(var e=this,u=arguments.length,c=new Array(u),i=0;i<u;i++)c[i]=arguments[i];return o.call(this,g(function*(){for(var m=arguments.length,f=new Array(m),s=0;s<m;s++)f[s]=arguments[s];return n.apply(e,f.concat(c))}),...c)}))}function w(){for(var r=arguments.length,t=new Array(r),a=0;a<r;a++)t[a]=arguments[a];if(t.some(n=>typeof n!="function"))throw new TypeError("pipe 参数必须是函数");return t.length===0?function(){for(var n=arguments.length,o=new Array(n),e=0;e<n;e++)o[e]=arguments[e];return o.length===1?o[0]:o}:t.reduce((n,o)=>function(){for(var e=this,u=arguments.length,c=new Array(u),i=0;i<u;i++)c[i]=arguments[i];return n.call(this,function(){for(var m=arguments.length,f=new Array(m),s=0;s<m;s++)f[s]=arguments[s];return o.apply(e,f.concat(c))},...c)})}function S(){for(var r=arguments.length,t=new Array(r),a=0;a<r;a++)t[a]=arguments[a];if(t.some(n=>typeof n!="function"))throw new TypeError("pipeAsync 参数必须是函数");return t.length===0?g(function*(){for(var n=arguments.length,o=new Array(n),e=0;e<n;e++)o[e]=arguments[e];return o.length===1?o[0]:o}):t.reduce((n,o)=>g(function*(){for(var e=this,u=arguments.length,c=new Array(u),i=0;i<u;i++)c[i]=arguments[i];return n.call(this,g(function*(){for(var m=arguments.length,f=new Array(m),s=0;s<m;s++)f[s]=arguments[s];return o.apply(e,f.concat(c))}),...c)}))}function v(r,t){let a=null;n.stop=()=>a&&clearTimeout(a);function n(){for(var o=arguments.length,e=new Array(o),u=0;u<o;u++)e[u]=arguments[u];n.stop(),a=setTimeout(()=>{r.apply(this,e)},t)}return n}function A(r,t){let a=null,n=[];o.stop=()=>{if(a){var e;(e=n.shift())===null||e===void 0||e("cancel"),clearTimeout(a)}};function o(){for(var e=arguments.length,u=new Array(e),c=0;c<e;c++)u[c]=arguments[c];return new Promise((i,m)=>{o.stop(),n.push(m),a=setTimeout(()=>{i(r.apply(this,u))},t)})}return o}function C(r){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:500,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,n;return a?function(){if(!n){n=!0;for(var o=arguments.length,e=new Array(o),u=0;u<o;u++)e[u]=arguments[u];typeof r=="function"&&r.apply(this,e),setTimeout(()=>{n=!1},t)}}:function(){for(var o=arguments.length,e=new Array(o),u=0;u<o;u++)e[u]=arguments[u];n||(n=!0,setTimeout(()=>{n=!1,typeof r=="function"&&r.apply(this,e)},t))}}function P(r){return encodeURIComponent(JSON.stringify(r||{}))}function I(r){return JSON.parse(decodeURIComponent(r||"{}"))}function h(r){const t={};return decodeURIComponent(r).replace(/([^?^&]*?)=([^?^&]*)/g,(a,n,o)=>{const e=t[n];if(!e)return t[n]=o;if(e&&typeof e=="string")return t[n]=[e,o];t[n].push(o)}),t}function T(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"-";return[Date.now().toString(),Math.random().toString(16).slice(2,10),Math.random().toString(16).slice(7),r.toString()].join(t)}function R(r){return r.replace(/([^-])([^-]*)/g,function(t,a,n){return a.toLocaleUpperCase()+n.toLocaleLowerCase()}).replace(/-/g,"")}function x(r,t){r=r.split("."),t=t.split(".");const a=Math.max(r.length,t.length);for(;r.length<a;)r.push("0");for(;t.length<a;)t.push("0");for(let n=0;n<a;n++){const o=parseInt(r[n]),e=parseInt(t[n]);if(o>e)return 1;if(o<e)return-1}return 0}function b(){return"#"+Math.floor(Math.random()*16777215).toString(16).padEnd(6,"0")}function M(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:8,t=arguments.length>1?arguments[1]:void 0;r=r||32,t||(t="ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678");const a=t.length;let n="";for(let o=0;o<r;o++)n+=t.charAt(Math.floor(Math.random()*a));return n}function U(r){return Object.keys(r).map(t=>{const a=r[t];return`${t}=${a&&typeof a=="object"?JSON.stringify(a):a}`}).join("&")}function j(r){const t=r.scene;return t&&(r={fromCode:!0,...r,...h(t)}),r}function D(r,t){let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:36e5;try{return uni.setStorageSync(r,{time:Date.now(),expire:a,data:t}),!0}catch(n){return console.error(`设置缓存[${r}]失败:`,n),!1}}function E(r){try{const t=uni.getStorageSync(r);return!t||typeof t!="object"||Array.isArray(t)||!("time"in t)||!("expire"in t)?(t&&uni.removeStorageSync(r),null):Date.now()-t.time>=t.expire?(uni.removeStorageSync(r),null):t.data}catch(t){return console.error(`获取缓存[${r}]失败:`,t),null}}function O(r){try{const t=uni.getStorageSync(r);return!t||typeof t!="object"||Array.isArray(t)||!("time"in t)||!("expire"in t)?!1:Date.now()-t.time>=t.expire?(uni.removeStorageSync(r),!1):(t.time=Date.now(),uni.setStorageSync(r,t),!0)}catch(t){return console.error(`续期缓存[${r}]失败:`,t),!1}}function L(r){try{return uni.removeStorageSync(r),!0}catch(t){return console.error(`删除缓存[${r}]失败:`,t),!1}}exports._asyncToGenerator=g;exports.compareVersion=x;exports.compose=p;exports.composeAsync=d;exports.debounce=v;exports.debouncePromise=A;exports.decodeURIParams=I;exports.encodeURIParams=P;exports.getCache=E;exports.getOnLoadParams=j;exports.getPascalCase=R;exports.getRandom=T;exports.getRandomStr=M;exports.getSearchParams=h;exports.getSearchStr=U;exports.pipe=w;exports.pipeAsync=S;exports.randomColor=b;exports.removeCache=L;exports.renewCache=O;exports.setCache=D;exports.throttle=C;