youtil 3.0.6 → 3.1.0-beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/dist/index.mjs +55 -0
  3. package/package.json +67 -69
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # youtil
2
2
 
3
- `youtil`,发音同`util`,中文可以叫做`油梯`,一个与框架(`Vue`、`React`等)、环境(`Nodejs`、`Browser`等)无关的小巧、精简、实用、不依赖任何第三方库的`JavaScript`工具库。
3
+ `youtil`,发音同`util`,中文可以叫做`油梯`,一个与框架(`Vue`、`React`等)、环境(`Nodejs`、`Browser`等)无关的小巧、精简、实用、不依赖任何第三方库的`JavaScript`工具库,官网:[youtil.haoji.me](https://youtil.haoji.me)。
4
4
 
5
5
  > 1. 代码还在不断补充完善,敬请期待!
6
6
  > 2. 少数方法可能依赖DOM,例如`showLoading`;
package/dist/index.mjs ADDED
@@ -0,0 +1,55 @@
1
+ var P=Object.defineProperty,D=Object.defineProperties;var _=Object.getOwnPropertyDescriptors;var S=Object.getOwnPropertySymbols;var F=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable;var q=(e,n,t)=>n in e?P(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,O=(e,n)=>{for(var t in n||(n={}))F.call(n,t)&&q(e,t,n[t]);if(S)for(var t of S(n))U.call(n,t)&&q(e,t,n[t]);return e},L=(e,n)=>D(e,_(n));function X(e){let n=[...e];return e.forEach(t=>{n[t.key]=t.value}),n.pick=t=>e.find(r=>r.key===t||r.value===t),n.pickLabel=t=>{var r;return(r=n.pick(t))==null?void 0:r.label},n.pickValue=t=>{var r;return(r=n.pick(t))==null?void 0:r.value},n.pickKey=t=>{var r;return(r=n.pick(t))==null?void 0:r.key},n}var Z=(e="\u8BF7\u7A0D\u5019",n=10,t={})=>{t=Object.assign({},{hasMask:!1,maskColor:"#00000070",onCancel:null,cancelInline:!1,id:"com_global_page_loading"},t);let{id:s,hasMask:c,maskColor:l,onCancel:d,cancelInline:w}=t,x=`_${s}_timeout`;window[x]&&clearTimeout(window[x]);let u=document.getElementById(s);u||(u=document.createElement("div"),u.id=s,u.className=s,document.body.append(u));let a=`${s}_style`;if(!document.getElementById(a)){let i=document.createElement("style");i.id=a,i.innerHTML=`
2
+ .${s} {
3
+ position: fixed;
4
+ left: 0;
5
+ top: 0;
6
+ width: 100vw;
7
+ height: 100vh;
8
+ display: flex;
9
+ justify-content: center;
10
+ align-items: center;
11
+ pointer-events: none;
12
+ z-index: 10000;
13
+ }
14
+ .${s}.show-mask {
15
+ pointer-events: unset;
16
+ background: #00000070;
17
+ }
18
+ .${s} .mask-wrapper {
19
+ position: fixed;
20
+ }
21
+ .${s} .loading-wrapper {
22
+ width: 120px;
23
+ height: 120px;
24
+ z-index: 8000;
25
+ background: rgba(0, 0, 0, 0.6);
26
+ border-radius: 8px;
27
+ text-align: center;
28
+ color: white;
29
+ display: flex;
30
+ justify-content: center;
31
+ flex-direction: column;
32
+ align-items: center;
33
+ pointer-events: initial;
34
+ line-height: 1.3;
35
+ }
36
+ .${s} .loading-wrapper img {
37
+ width: 50px;
38
+ height: 50px;
39
+ margin-bottom: 10px;
40
+ }
41
+ .${s} .loading-wrapper a {
42
+ color: #6ab2ff;
43
+ }`,document.head.appendChild(i)}if(u.innerHTML=`
44
+ <div class="loading-wrapper">
45
+ <img src="https://img.alicdn.com/tfs/TB1bnUsQBLoK1RjSZFuXXXn0XXa-32-32.svg" alt="\u52A0\u8F7D\u4E2D">
46
+ <div>
47
+ <span>${e}</span>
48
+ ${w?"":"<br />"}
49
+ ${d?'<a href="javascript:;" class="cancel">\u53D6\u6D88</a>':""}
50
+ </div>
51
+ </div>`,d){let i=u.querySelector(".cancel");i&&i.addEventListener("click",()=>{I(),d()})}u.addEventListener("click",()=>{I()}),u.style.display="flex",u.style.background=c?l:"transparent",u.className=`${s} ${c?"show-mask":""}`,n>0&&(window[x]=setTimeout(()=>{I()},n*1e3))},I=()=>{let n=document.getElementById("com_global_page_loading");n&&(n.style.display="none")};function Y(e,n){!n&&window!==window.parent&&(n=window.parent),!n&&window.opener&&(n=window.opener);let t=new Map,r=new Map,s=()=>Math.random().toString(36).substring(2),c={},l="_local_function_";function d(a){let i=`${l}${s()}`;return c[i]=a,i}let w=(a,i)=>(a==null?void 0:a.map(g=>{if(typeof g=="object")for(let k in g)g[k]=i(g[k]);return i(g)}))||[];function x(a,...i){if(!n){console.warn("TargetWindow is null.");return}return new Promise((g,k)=>{let f=s();t.set(f,{resolve:g,reject:k}),n.postMessage({scene:e,type:"event",eventName:a,payload:w(i,y=>typeof y=="function"?d(y):y),callbackId:f},"*")})}window.addEventListener("message",async a=>{if(!a.data||a.data.scene!==e)return;n=a.source;let{type:i,eventName:g,payload:k,callbackId:f}=a.data;if(i==="event"){let y=w(k,m=>{if(typeof m=="string"&&m.startsWith(l)){let p=`getFn_${m}`;return(...b)=>x("executeLocalFunction",p,...b)}return m}),h=r.get(g)||[],v=r.get("*")||[];try{let m=await Promise.all(h.map(b=>Promise.resolve(b(...y)))),p=await Promise.all(v.map(b=>Promise.resolve(b(g,...y))));if(f){let b=m[m.length-1]||p[p.length-1];if(!h.length&&!b)return;n.postMessage({scene:e,type:"callback",callbackId:f,payload:b},"*")}}catch(m){console.error(m),f&&n.postMessage({scene:e,type:"callback",callbackId:f,error:m||"unknown error"},"*")}}else if(i==="callback"&&f){let y=t.get(f);y&&(a.data.error?y.reject(a.data.error):y.resolve(a.data.payload),t.delete(f))}});function u(a,i){r.has(a)||r.set(a,[]),r.get(a).push(i)}return u("executeLocalFunction",(a,...i)=>{if(a=(a==null?void 0:a.replace("getFn_",""))||"",!c[a])throw new Error(`\u672A\u627E\u5230\u672C\u5730\u7F13\u5B58\u65B9\u6CD5\uFF1A${a}`);return c[a](...i)}),x("auto-connect"),{postMessage:x,onMessage:u}}var Q=e=>!e||typeof e!="object"?e:JSON.parse(JSON.stringify(e)),A=e=>{if(typeof e=="string"){let n=document.createElement("div");return n.innerText=e,n.innerHTML}else if(typeof e=="object"&&e)for(let n in e)e[n]=A(e[n]);return e},B=e=>{if(typeof e=="string"){let n=document.createElement("div");return n.innerHTML=e,n.innerText}else if(typeof e=="object"&&e)for(let n in e)e[n]=B(e[n]);return e},W=(e,n,t)=>{if(!e)throw new Error("text can not be empty.");return n=n||(r=>console.error(`\u590D\u5236\u5230\u526A\u8D34\u677F\u5931\u8D25\uFF1A${r||""}`)),navigator.clipboard&&!t?navigator.clipboard.writeText(e).catch(r=>{throw n(r.message),r}):new Promise((r,s)=>{let c=document.createElement("input");c.value=e,c.style.cssText="position:fixed;left:0;top:0;opacity:0;",document.body.appendChild(c),c.select();try{if(document.execCommand("copy"))r();else{let l="Failed to execute 'document.execCommand'.";n(l),s(new Error(l))}}catch(l){n(l.message),s(l)}finally{document.body.removeChild(c)}})},K=e=>{if(!e||e.length<17)throw new Error("\u4F20\u5165\u7684\u8EAB\u4EFD\u8BC1\u53F7\u957F\u5EA6\u5FC5\u987B>=17");let n=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],t=["1","0","X","9","8","7","6","5","4","3","2"],r=0;for(let s=0;s<17;s++)r+=parseInt(e.charAt(s),10)*n[s];return t[r%11]},ee=e=>!e||e.length!==18?(console.error("\u8EAB\u4EFD\u8BC1\u53F7\u4E0D\u662F18\u4F4D\uFF01"),!1):`${K(e)}`===e.charAt(17),ne=(()=>{let e={backspace:8,tab:9,clear:12,enter:13,shift:16,ctrl:17,alt:18,esc:27,space:32,pageup:33,pagedown:34,end:35,home:36,left:37,up:38,right:39,down:40,insert:45,delete:46};for(let n=48;n<=57;n++)e[String.fromCharCode(n)]=n;for(let n=65;n<=90;n++)e[String.fromCharCode(n).toLowerCase()]=n;for(let n=96;n<=105;n++)e[`num${n-96}`]=n;for(let n=112;n<=123;n++)e[`f${n-111}`]=n;return e})();var H=(e,n=location.search)=>(new RegExp(`(^|\\?|&)${e}=(.*?)(?=&|#|$)`,"g").exec(n)||[])[2],re=(e,n=location.search)=>parseInt(H(e,n)||"0",10),se=(e=location.search)=>{let n=((e||"").split("?").pop()||"").split("#")[0]||"",t={};return n.split("&").map(r=>r.split("=")).forEach(([r,s])=>{t[r]=s||""}),t},oe=(e,n,t)=>{if(t=t||`${location.pathname}${location.search}`,H(e,t)!==void 0)return t.replace(new RegExp(`(^|\\?|&)${e}=(.*?)(?=&|#|$)`,"g"),`$1${e}=${n}`);let[r,s]=t.split("#");return`${r}${r.indexOf("?")<0?"?":"&"}${e}=${n}${s?"#":""}${s||""}`},ae=(e,n)=>(n=n||`${location.pathname}${location.search}`,n.replace(new RegExp(`(^|\\?|&)${e}=.*?(&|#|$)`,"g"),(t,r,s)=>s==="&"?r:s)),M=e=>Object.keys(e||{}).filter(n=>e[n]!==void 0).map(n=>{let t=typeof e[n]=="object"?JSON.stringify(e[n]):e[n];return`${encodeURIComponent(n)}=${encodeURIComponent(t)}`}).join("&");var T=(e,n)=>{let t=Object.assign({},(e==null?void 0:e.headers)||{},(n==null?void 0:n.headers)||{}),r=Object.assign({},(e==null?void 0:e.fetchOptions)||{},(n==null?void 0:n.fetchOptions)||{});return Object.assign({},e||{},n||{},{headers:t,fetchOptions:r})},E=class extends Error{constructor(n,t){super(n),Object.assign(this,t||{})}},R=async(e,n)=>{var b,C;n=T({errorMessage:"\u7CFB\u7EDF\u7E41\u5FD9\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",errorHandler:o=>{var $;throw!(n!=null&&n.silent)&&o&&(($=n==null?void 0:n.toastHandler)==null||$.call(n,o)),new Error(o)},baseUrl:"",headers:{},fetchOptions:{credentials:"include"},checkSuccess:o=>(o==null?void 0:o.code)==0||(o==null?void 0:o.code)==200,toastHandler:o=>console.error(`[\u60A8\u8FD8\u6CA1\u6709\u914D\u7F6EtoastHandler\uFF0C\u8BF7\u6839\u636E\u60A8\u7684UI\u7EC4\u4EF6\u5E93\u914D\u7F6E\u5408\u9002\u7684\u63D0\u793A\u65B9\u6CD5] ${o||""}`),onFetchResponse:o=>{if(o.status===200)return o.json();throw new E(o.statusText,{response:L(O({},o),{code:o.status,message:o.statusText,isHttpResponse:!0})})}},n);let{params:r,data:s,formData:c,json:l,method:d,headers:w,baseUrl:x,fetchOptions:u,checkSuccess:a,afterRequest:i,errorHandler:g,errorMessage:k,responseConverter:f,onFetchResponse:y,setLoading:h,overrideMessage:v}=n||{},m=(n==null?void 0:n.defaultErrorMessage)||k;if(u.headers=O(O({},w||{}),u.headers||{}),r&&(u.method=d||"GET",e=`${e}${e.indexOf("?")>=0?"&":"?"}${M(r)}`),s)Object.assign(u,{method:d||"POST",body:M(s),headers:O({"Content-Type":"application/x-www-form-urlencoded;charset=utf-8"},u.headers||{})});else if(c){let o=c;if(!(c instanceof FormData)){o=new FormData;for(let $ in c)o.append($,c[$])}Object.assign(u,{method:d||"POST",body:o})}else l&&Object.assign(u,{method:d||"POST",body:JSON.stringify(l),headers:O({"Content-Type":"application/json;charset=utf-8"},u.headers||{})});let p=null;h==null||h(!0);try{let o=`${/^(http|\/\/)/g.test(e)?"":x||""}${e}`;o.indexOf("//")===0&&location.protocol==="blob:"&&(o=`${(b=location.pathname.split(":"))==null?void 0:b[0]}:${o}`),p=await fetch(o,u).then(y)}catch(o){console.error(o),h==null||h(!1),i==null||i(!1,o.response);let $=typeof v=="function"?v(o.response):v;g==null||g($!=null?$:((C=o.response)==null?void 0:C.message)||m,o.response,n);return}if(h==null||h(!1),p=f?f(p):p,a!=null&&a(p))return i==null||i(!0,p),p.data;{i==null||i(!1,p);let o=typeof v=="function"?v(p):v;g==null||g(o!=null?o:p.message||m,p,n);return}},j=function(e){let n=T(this.overrideDefaultOptions,e),t=(r,s)=>R(r,T(n,s));return t.overrideDefaultOptions=n,t.create=j.bind(t),t};R.create=j.bind(R);var le=function(e,n){let t=n;return n||(t=e,e=R),(r,s)=>e(r,O(O({},t||{}),s||{}))};var ge=(e,n)=>{if(!e)return"";if(typeof e=="number")e=new Date(e);else if(typeof e=="string")if(/^\d{12,13}$/g.test(e))e=new Date(parseInt(e,10));else if(/^.{10}T.{8,12}Z?$/g.test(e))e=new Date(e);else return e;if(!(e instanceof Date))throw new Error("formatDate error: not date.");if(isNaN(e==null?void 0:e.getFullYear()))throw new Error("formatDate error: invalid date.");n=n||"yyyy-MM-dd HH:mm:ss";let t={y:e.getFullYear(),M:e.getMonth()+1,d:e.getDate(),q:Math.floor((e.getMonth()+3)/3),w:e.getDay(),H:e.getHours(),h:e.getHours()%12===0?12:e.getHours()%12,m:e.getMinutes(),s:e.getSeconds(),S:e.getMilliseconds()},r=["\u5929","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"];for(let s in t)n=n.replace(new RegExp(`${s}+`,"g"),c=>{let l=`${t[s]}`;if(s==="w")return`${c.length>2?"\u661F\u671F":"\u5468"}${r[l]}`;for(let d=0,w=l.length;d<c.length-w;d++)l=`0${l}`;return c.length===1?l:l.substring(l.length-c.length)});return n},pe=(e,n)=>{n=n||"yyyy-MM-dd";let t={y:0,M:1,d:0,H:0,h:0,m:0,s:0,S:0};n.replace(/([^yMdHmsS]*?)(([yMdHmsS])\3*)([^yMdHmsS]*?)/g,(s,c,l,d,w)=>(e=e.replace(new RegExp(`${c}(\\d{${l.length}})${w}`),(x,u)=>(t[d]=parseInt(u,10),"")),"")),t.M--;let r=new Date(t.y,t.M,t.d,t.H,t.m,t.s);return t.S!==0&&r.setMilliseconds(t.S),r},fe=e=>new Promise(n=>setTimeout(n,e||0));var ye=(json,indent,leftBracesInSameLine)=>{function getIndentStr(e){let n="";for(let t=0;t<e;t++)n+=indent||" ";return n}function format(e,n){n=n===void 0?0:n;let t="";if(typeof e=="object"&&e!=null){let r=e instanceof Array,s=0;t+=`${r?"[":"{"}
52
+ `;for(let c in e){t+=s++>0?`,
53
+ `:"";let l=typeof e[c]=="object"&&e[c]!=null,d=getIndentStr(n+1);t+=r&&l?"":d,t+=r?"":`"${c}": ${l&&!leftBracesInSameLine?`
54
+ `:""}`,t+=!l||l&&leftBracesInSameLine&&!r?"":d,t+=format(e[c],n+1)}t+=`
55
+ ${getIndentStr(n)}${r?"]":"}"}`}else{let r=typeof e=="string"?'"':"";t+=`${r}${e}${r}`}return t}return format(eval(`(${json})`))},N=(e,n)=>typeof e=="number"?(typeof n=="undefined"&&(n=e,e=0),e+Math.floor(Math.random()*(n-e))):e instanceof Array?typeof n=="undefined"?e.length===0?null:e.length===1?e[0]:e[Math.floor(Math.random()*e.length)]:(e.sort(()=>Math.random()>.5?1:-1),e.slice(0,n)):Math.random(),he=(e,n)=>{e=e||18;let t="ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz0123456789".split("");n==="number"&&(t="0123456789".split(""));let r="";for(let s=0;s<e;s++)r+=N(t);return r},be=(e,n)=>e.replace(/([A-Z])/g,(t,r)=>`${n||"_"}${r.toLowerCase()}`),we=(e,n)=>e.replace(new RegExp(`${n||"_"}(\\w)`,"g"),(t,r)=>r.toUpperCase());export{le as Request,W as copyToClipboard,X as createEnum,B as decodeHtml,Q as deepCopy,ae as delParam,A as encodeHtml,ge as formatDate,ye as formatJson,K as getIdCardLastChar,H as getParam,re as getParamInt,se as getParams,N as getRandom,he as getRandomStr,I as hideLoading,Y as initWindowMessage,ne as keyCodes,pe as parseDate,R as request,oe as setParam,Z as showLoading,fe as sleep,we as toHump,be as toUnderline,M as toUrlParams,ee as validateIdCard};
package/package.json CHANGED
@@ -1,72 +1,70 @@
1
1
  {
2
- "name": "youtil",
3
- "version": "3.0.6",
4
- "description": "油梯,一个与框架、环境无关的小巧、精简、实用的JavaScript工具库",
5
- "files": [
6
- "es",
7
- "esm",
8
- "cjs",
9
- "docs",
10
- "umd"
11
- ],
12
- "main": "cjs/index.js",
13
- "module": "es/index.mjs",
14
- "types": "esm/index.d.ts",
15
- "exports": {
16
- ".": {
17
- "require": "./cjs/index.js",
18
- "import": "./es/index.mjs",
19
- "types": "./esm/index.d.ts"
2
+ "name": "youtil",
3
+ "version": "3.1.0-beta1",
4
+ "description": "油梯,一个与框架、环境无关的小巧、精简、实用的JavaScript工具库",
5
+ "files": [
6
+ "es",
7
+ "esm",
8
+ "cjs",
9
+ "docs",
10
+ "umd"
11
+ ],
12
+ "main": "dist/index.mjs",
13
+ "module": "dist/index.mjs",
14
+ "types": "dist/types/index.d.ts",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/types/index.d.ts",
18
+ "require": "./dist/index.mjs",
19
+ "import": "./dist/index.mjs"
20
+ }
20
21
  },
21
- "./*": {
22
- "require": "./cjs/*.js",
23
- "import": "./esm/*.js",
24
- "types": "./esm/*.d.ts"
25
- }
26
- },
27
- "sideEffects": [
28
- "es/*"
29
- ],
30
- "scripts": {
31
- "dev": "concurrently \"typedoc --watch\" \"ice-pkg start\"",
32
- "build": "typedoc && ice-pkg build && node after-build.mjs",
33
- "prepublishOnly": "npm run build",
34
- "after-publish": "node after-publish.mjs",
35
- "test": "jest",
36
- "eslint": "eslint --cache --ext .js,.jsx,.ts,.tsx ./",
37
- "eslint:fix": "npm run eslint -- --fix",
38
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
39
- "lint": "npm run eslint && npm run stylelint"
40
- },
41
- "keywords": [
42
- "youtil"
43
- ],
44
- "dependencies": {
45
- "@swc/helpers": "0.4.14"
46
- },
47
- "devDependencies": {
48
- "concurrently": "^9.1.2",
49
- "@ice/jsx-runtime": "^0.2.0",
50
- "@ice/pkg": "1.5.5",
51
- "@ice/pkg-plugin-docusaurus": "^1.4.18",
52
- "@iceworks/spec": "^1.0.0",
53
- "eslint": "^7.0.0",
54
- "jest": "^29.5.0",
55
- "react": "^16",
56
- "react-dom": "^16",
57
- "stylelint": "^13.7.2",
58
- "ts-jest": "^29.0.5",
59
- "typedoc": "^0.28.1",
60
- "typedoc-plugin-markdown": "^4.6.0"
61
- },
62
- "publishConfig": {
63
- "access": "public"
64
- },
65
- "repository": {
66
- "type": "git",
67
- "url": "github.com/sxei/youtil"
68
- },
69
- "author": "sxei",
70
- "license": "MIT",
71
- "homepage": "https://youtil.haoji.me"
22
+ "sideEffects": [
23
+ "es/*"
24
+ ],
25
+ "scripts": {
26
+ "dev": "concurrently \"typedoc --watch\" \"ice-pkg start\"",
27
+ "_build": "typedoc && ice-pkg build && node after-build.mjs",
28
+ "build": "node esbuild.config.mjs",
29
+ "prepublishOnly": "npm run build",
30
+ "after-publish": "node after-publish.mjs",
31
+ "test": "jest",
32
+ "eslint": "eslint --cache --ext .js,.jsx,.ts,.tsx ./",
33
+ "eslint:fix": "npm run eslint -- --fix",
34
+ "stylelint": "stylelint \"**/*.{css,scss,less}\"",
35
+ "lint": "npm run eslint && npm run stylelint"
36
+ },
37
+ "keywords": [
38
+ "youtil"
39
+ ],
40
+ "dependencies": {
41
+ "@swc/helpers": "0.4.14"
42
+ },
43
+ "devDependencies": {
44
+ "@ice/jsx-runtime": "^0.2.0",
45
+ "@ice/pkg": "1.5.5",
46
+ "@ice/pkg-plugin-docusaurus": "^1.4.18",
47
+ "@iceworks/spec": "^1.0.0",
48
+ "concurrently": "^9.1.2",
49
+ "esbuild": "^0.25.8",
50
+ "esbuild-plugin-d.ts": "^1.3.1",
51
+ "eslint": "^7.0.0",
52
+ "jest": "^29.5.0",
53
+ "react": "^16",
54
+ "react-dom": "^16",
55
+ "stylelint": "^13.7.2",
56
+ "ts-jest": "^29.0.5",
57
+ "typedoc": "^0.28.1",
58
+ "typedoc-plugin-markdown": "^4.6.0"
59
+ },
60
+ "publishConfig": {
61
+ "access": "public"
62
+ },
63
+ "repository": {
64
+ "type": "git",
65
+ "url": "github.com/sxei/youtil"
66
+ },
67
+ "author": "sxei",
68
+ "license": "MIT",
69
+ "homepage": "https://youtil.haoji.me"
72
70
  }