Comparing version 0.21.1-dev.0 to 0.21.1-dev.1
@@ -0,1 +1,3 @@ | ||
Object.defineProperty(exports,"getDrBrowserScriptHTML",{enumerable:!0,get:function(){return _resource.DR_BROWSER_SCRIPT_TAG}}) | ||
Object.defineProperty(exports,"collectAllProcessStatus",{enumerable:!0,get:function(){return _ProcessStatus.collectAllProcessStatus}}) | ||
Object.defineProperty(exports,"packageName",{enumerable:!0,get:function(){return _package.name}}) | ||
@@ -10,2 +12,3 @@ Object.defineProperty(exports,"packageVersion",{enumerable:!0,get:function(){return _package.version}}) | ||
var _Tree=require("../library/common/data/Tree") | ||
var _resource=require("../library/node/resource") | ||
var _net=require("../library/node/net") | ||
@@ -26,24 +29,24 @@ var _function2=require("../library/node/file/function") | ||
exports.evalScript=evalScript | ||
const evalReadlineExtend=async(e,r,t)=>{const{onLineSync:o,getResult:s,logLineInterval:a=0}=e | ||
let n=0 | ||
const evalReadlineExtend=async(e,r,t)=>{const{onLineSync:o,getResult:s,logLineInterval:n=0}=e | ||
let a=0 | ||
let i="" | ||
const c=a&&(0,_time.createStepper)() | ||
const l=a?()=>n%a==0&&t(`line: ${(0,_format.decimal)(n)} (+${(0,_format.time)(c())})`):()=>{} | ||
const c=n&&(0,_time.createStepper)() | ||
const l=n?()=>a%n==0&&t(`line: ${(0,_format.decimal)(a)} (+${(0,_format.time)(c())})`):()=>{} | ||
await(0,_function2.createReadlineFromFileAsync)(r,e=>{i=e | ||
l() | ||
o(i,n) | ||
n++}) | ||
o(i,a) | ||
a++}) | ||
return s()} | ||
exports.evalReadlineExtend=evalReadlineExtend | ||
const fetchWithJump=async(e,r={},t=0,o)=>{let s=e | ||
let a=0 | ||
let n=r.headers&&r.headers.cookie?[r.headers.cookie]:[] | ||
for(;;){o&&await o(s,a,n) | ||
const e=await(0,_net.fetchLikeRequest)(s,Object.assign({},r,{headers:Object.assign({},r.headers,{cookie:n.join(";")})})) | ||
let n=0 | ||
let a=r.headers&&r.headers.cookie?[r.headers.cookie]:[] | ||
for(;;){o&&await o(s,n,a) | ||
const e=await(0,_net.fetchLikeRequest)(s,Object.assign({},r,{headers:Object.assign({},r.headers,{cookie:a.join(";")})})) | ||
const i=()=>JSON.stringify({url:s,status:e.status,headers:e.headers},null,2) | ||
if(e.ok)return e | ||
if(!(e.status>=300&&e.status<=399&&e.headers.location))throw new Error(`bad status: ${i()}`) | ||
if(++a>t)throw new Error(`${t} max jump reached: ${i()}`) | ||
if(++n>t)throw new Error(`${t} max jump reached: ${i()}`) | ||
s=new URL(e.headers.location,s).href | ||
n=[...n,...(e.headers["set-cookie"]||[]).map(e=>e.split(";")[0])]}} | ||
a=[...a,...(e.headers["set-cookie"]||[]).map(e=>e.split(";")[0])]}} | ||
exports.fetchWithJump=fetchWithJump | ||
@@ -55,24 +58,12 @@ const prettyStringifyFileTree=async e=>{const{subInfoListMap:r}=await(0,_Directory.getDirectoryInfoTree)(e) | ||
exports.collectFile=collectFile | ||
const prettyStringifyProcessTree=e=>{const r=[] | ||
const t=(e,{pid:t,command:o})=>r.push(`${`${t}`.padStart(8," ")} | ${e}${o||"..."}`) | ||
t("",{pid:"pid",command:"command"});(0,_Tree.prettyStringifyTree)([e,-1,!1],([e,r,t])=>e.subTree&&Object.values(e.subTree).map((e,t,{length:o})=>[e,r+1,t!==o-1]),t) | ||
return r.join("\n")} | ||
const collectAllProcessStatus=async(e,r)=>{if(e.startsWith("t")){const t=await(0,_ProcessStatus.getProcessTree)() | ||
if(r)return t | ||
const o=prettyStringifyProcessTree(t) | ||
return"tree-wide"!==e&&"tw"!==e?o.split("\n").map(e=>(0,_string.autoEllipsis)(e,128,96,16)).join("\n"):o}const t=(0,_ProcessStatus.sortProcessList)(await(0,_ProcessStatus.getProcessList)(),e) | ||
return r?t:(0,_format.padTable)({table:[["pid","ppid","command"],...t.map(({pid:e,ppid:r,command:t})=>[e,r,t])]})} | ||
exports.collectAllProcessStatus=collectAllProcessStatus | ||
const describeServer=({baseUrl:e,protocol:r,hostname:t,port:o},s,a=[])=>(0,_string.indentList)(`[${s}]`,[`pid: ${process.pid}`,...a,`baseUrl: '${e}'`,"0.0.0.0"===t&&(0,_string.indentList)("localUrl:",[{address:"localhost"},...(0,_NetworkAddress.getNetworkIPv4AddressList)()].map(({address:e})=>`'${r}//${e}:${o}'`))].filter(Boolean)) | ||
const describeServer=({baseUrl:e,protocol:r,hostname:t,port:o},s,n=[])=>(0,_string.indentList)(`[${s}]`,[`pid: ${process.pid}`,...n,`baseUrl: '${e}'`,"0.0.0.0"===t&&(0,_string.indentList)("localUrl:",[{address:"localhost"},...(0,_NetworkAddress.getNetworkIPv4AddressList)()].map(({address:e})=>`'${r}//${e}:${o}'`))].filter(Boolean)) | ||
exports.describeServer=describeServer | ||
const commonStartServer=async({protocol:e,hostname:r,port:t,routeConfigList:o,isAddFavicon:s,title:a,extraInfoList:n,log:i})=>{const{server:c,option:l,start:p,stop:d}=(0,_Server.createServer)({protocol:e,hostname:r,port:t}) | ||
const u=(0,_Common.createResponderLogEnd)({log:i}) | ||
const commonStartServer=async({protocol:e,hostname:r,port:t,routeConfigList:o,isAddFavicon:s,title:n,extraInfoList:a,log:i})=>{const{server:c,option:l,start:p,stop:u}=(0,_Server.createServer)({protocol:e,hostname:r,port:t}) | ||
const d=(0,_Common.createResponderLogEnd)({log:i}) | ||
s&&(o=[...o,[["/favicon","/favicon.ico"],"GET",(0,_Send.createResponderFavicon)()]]) | ||
c.on("request",(0,_Server.createRequestListener)({responderList:[(0,_Common.createResponderLog)({log:i}),(0,_Router.createResponderRouter)({routeMap:(0,_Router.createRouteMap)(o),baseUrl:l.baseUrl})],responderEnd:e=>{(0,_Common.responderEnd)(e) | ||
u(e)}})) | ||
d(e)}})) | ||
await p() | ||
i(describeServer(l,a,n)) | ||
return{server:c,option:l,start:p,stop:d}} | ||
i(describeServer(l,n,a)) | ||
return{server:c,option:l,start:p,stop:u}} | ||
exports.commonStartServer=commonStartServer | ||
const getDrBrowserScriptHTML=()=>`<script>${(0,_fs.readFileSync)(`${__dirname}/../library/Dr.browser.js`)}<\/script>` | ||
exports.getDrBrowserScriptHTML=getDrBrowserScriptHTML |
@@ -16,22 +16,23 @@ #!/usr/bin/env node | ||
var d=require("../library/node/system/Run") | ||
var y=require("../library/node/system/ProcessStatus") | ||
var f=require("../library/node/system/Status") | ||
var y=require("./server/serveStatic") | ||
var v=require("./server/websocketGroup") | ||
var S=require("./server/testConnection") | ||
var g=require("./function") | ||
var w=require("./option") | ||
var v=require("./server/serveStatic") | ||
var S=require("./server/websocketGroup") | ||
var g=require("./server/testConnection") | ||
var w=require("./function") | ||
var b=require("./option") | ||
const h=e=>console.log((0,i.isBasicObject)(e)?JSON.stringify(e,null,2):e) | ||
const b=async(w,b)=>{const{tryGet:$,tryGetFirst:q,getFirst:T}=b | ||
const O=$("quiet")?()=>{}:console.log | ||
const N=(e,r)=>e(r).then(()=>O(`[${w}] done: ${r}`),e=>O(`[${w}] error: ${r}\n${e.stack||e}`)) | ||
const k=$(w)||[] | ||
const x=Boolean($("json")) | ||
const A=q("input-file") | ||
const P=q("output-file") | ||
const F=async()=>{const e=(q("host")||"").split(":") | ||
const $=async(b,$)=>{const{tryGet:q,tryGetFirst:T,getFirst:O}=$ | ||
const N=q("quiet")?()=>{}:console.log | ||
const P=(e,r)=>e(r).then(()=>N(`[${b}] done: ${r}`),e=>N(`[${b}] error: ${r}\n${e.stack||e}`)) | ||
const k=q(b)||[] | ||
const x=Boolean(q("json")) | ||
const A=T("input-file") | ||
const F=T("output-file") | ||
const j=async()=>{const e=(T("host")||"").split(":") | ||
const r=e[0]||"0.0.0.0" | ||
return{hostname:r,port:Number(e[1]||await(0,l.autoTestServerPort)([80,8080,8888,8800,8e3],r))}} | ||
switch(w){case"eval":case"eval-readline":{let t=await(0,g.evalScript)(A?String((0,r.readFileSync)(A)):k[0],A?k:k.slice(1),A?(0,e.dirname)(A):process.cwd(),b) | ||
"eval-readline"===w&&(t=await(0,g.evalReadlineExtend)(t,T("root"),O)) | ||
return void 0!==t&&(e=>P?(0,r.writeFileSync)(P,e):(0,n.pipeStreamAsync)(process.stdout,(0,n.bufferToStream)(e)))(t instanceof Buffer?t:Buffer.from(String(t)))}case"repl":return(0,t.start)({prompt:"> ",input:process.stdin,output:process.stdout,useGlobal:!0}).context.require=require | ||
switch(b){case"eval":case"eval-readline":{let t=await(0,w.evalScript)(A?String((0,r.readFileSync)(A)):k[0],A?k:k.slice(1),A?(0,e.dirname)(A):process.cwd(),$) | ||
"eval-readline"===b&&(t=await(0,w.evalReadlineExtend)(t,O("root"),N)) | ||
return void 0!==t&&(e=>F?(0,r.writeFileSync)(F,e):(0,n.pipeStreamAsync)(process.stdout,(0,n.bufferToStream)(e)))(t instanceof Buffer?t:Buffer.from(String(t)))}case"repl":return(0,t.start)({prompt:"> ",input:process.stdin,output:process.stdout,useGlobal:!0}).context.require=require | ||
case"wait":{const e=k[0]||2e3 | ||
@@ -43,12 +44,12 @@ return(0,o.setTimeoutAsync)(e)}case"echo":return h(k) | ||
case"write":case"append":if(process.stdin.isTTY)throw new Error("unsupported TTY stdin") | ||
const l="write"===w?"w":"a" | ||
const l="write"===b?"w":"a" | ||
return(0,n.pipeStreamAsync)((0,r.createWriteStream)(k[0],{flags:l}),process.stdin) | ||
case"open":{const r=k[0]||"." | ||
return(0,d.runSync)({command:(0,m.getDefaultOpen)(),argList:[r.includes("://")?r:(0,e.normalize)(r)]})}case"status":return h(x?{system:(0,f.getSystemStatus)(),process:(0,f.getProcessStatus)()}:(0,f.describeSystemStatus)()) | ||
case"file-list":case"file-list-all":case"file-tree":return h(await(0,g.collectFile)(w,k[0]||process.cwd())) | ||
case"file-create-directory":for(const e of k)await N(c.createDirectory,e) | ||
case"file-list":case"file-list-all":case"file-tree":return h(await(0,w.collectFile)(b,k[0]||process.cwd())) | ||
case"file-create-directory":for(const e of k)await P(c.createDirectory,e) | ||
return | ||
case"file-modify-copy":return u.modify.copy(k[0],k[1]) | ||
case"file-modify-move":return u.modify.move(k[0],k[1]) | ||
case"file-modify-delete":for(const e of k)await N(u.modify.delete,e) | ||
case"file-modify-delete":for(const e of k)await P(u.modify.delete,e) | ||
return | ||
@@ -60,15 +61,15 @@ case"file-merge":{const[e,...t]=k | ||
a=Number(a)||0 | ||
const o=await(0,g.fetchWithJump)(e,{headers:{accept:"*/*","user-agent":`${g.packageName}/${g.packageVersion}`},timeout:a},t,(e,r,o)=>O(`[fetch] url: ${e}, jump: ${r}/${t}, timeout: ${a?(0,s.time)(a):"none"}, cookie: ${o.length}`)) | ||
const o=await(0,w.fetchWithJump)(e,{headers:{accept:"*/*","user-agent":`${w.packageName}/${w.packageVersion}`},timeout:a},t,(e,r,o)=>N(`[fetch] url: ${e}, jump: ${r}/${t}, timeout: ${a?(0,s.time)(a):"none"}, cookie: ${o.length}`)) | ||
const i=Number(o.headers["content-length"]) | ||
O(`[fetch] get status: ${o.status}, fetch response content${i?` (${(0,s.binary)(i)}B)`:""}...`) | ||
await(e=>(0,n.pipeStreamAsync)(P?(0,r.createWriteStream)(P):process.stdout,e))(o.stream()) | ||
return O("\n[fetch] done")}case"process-status":{const[e="pid--"]=k | ||
return h(await(0,g.collectAllProcessStatus)(e,x))}case"json-format":{const[e=2]=k | ||
N(`[fetch] get status: ${o.status}, fetch response content${i?` (${(0,s.binary)(i)}B)`:""}...`) | ||
await(e=>(0,n.pipeStreamAsync)(F?(0,r.createWriteStream)(F):process.stdout,e))(o.stream()) | ||
return N("\n[fetch] done")}case"process-status":{const[e="pid--"]=k | ||
return h(await(0,y.collectAllProcessStatus)(e,x))}case"json-format":{const[e=2]=k | ||
const t=JSON.parse((0,r.readFileSync)(A)) | ||
const a=(0,s.prettyStringifyJSON)(t,e) | ||
return(0,r.writeFileSync)(P||A,a)}case"server-serve-static":case"server-serve-static-simple":{const[e=3e5]=k | ||
const r="server-serve-static-simple"===w | ||
const t=q("root")||process.cwd() | ||
return(0,y.startServerServeStatic)(Object.assign({isSimpleServe:r,expireTime:Number(e),staticRoot:t,log:O},await F()))}case"server-websocket-group":return(0,v.startServerWebSocketGroup)(Object.assign({log:O},await F())) | ||
case"server-test-connection":return(0,S.startServerTestConnection)(Object.assign({log:O},await F())) | ||
return(0,r.writeFileSync)(F||A,a)}case"server-serve-static":case"server-serve-static-simple":{const[e=3e5]=k | ||
const r="server-serve-static-simple"===b | ||
const t=T("root")||process.cwd() | ||
return(0,v.startServerServeStatic)(Object.assign({isSimpleServe:r,expireTime:Number(e),staticRoot:t,log:N},await j()))}case"server-websocket-group":return(0,S.startServerWebSocketGroup)(Object.assign({log:N},await j())) | ||
case"server-test-connection":return(0,g.startServerTestConnection)(Object.assign({log:N},await j())) | ||
case"server-tcp-proxy":{let e | ||
@@ -82,10 +83,10 @@ let r | ||
const s=e[t] | ||
O(`[CONNECT] ${r.remoteAddress}:${r.remotePort} => ${s.hostname}:${s.port}`) | ||
return s})}const{option:t,start:s}=(0,p.createTCPProxyServer)(Object.assign({getTargetOption:r},await F())) | ||
N(`[CONNECT] ${r.remoteAddress}:${r.remotePort} => ${s.hostname}:${s.port}`) | ||
return s})}const{option:t,start:s}=(0,p.createTCPProxyServer)(Object.assign({getTargetOption:r},await j())) | ||
await s() | ||
return O((0,a.indentList)("[TCPProxy]",[`pid: ${process.pid}`,`at: ${t.hostname}:${t.port}`,...e.map(e=>`proxy to: ${e.hostname}:${e.port}`)]))}}};(async()=>{const e=await(0,w.parseOption)() | ||
const r=w.MODE_NAME_LIST.find(r=>e.tryGet(r)) | ||
if(!r)return h(e.tryGet("version")?(0,g.getVersion)():(0,w.formatUsage)(null,e.tryGet("help")?null:"simple")) | ||
await b(r,e).catch(e=>{console.warn(`[Error] in mode: ${r}:`,e.stack||e) | ||
process.exit(2)})})().catch(e=>{console.warn((0,w.formatUsage)(e.stack||e,"simple")) | ||
return N((0,a.indentList)("[TCPProxy]",[`pid: ${process.pid}`,`at: ${t.hostname}:${t.port}`,...e.map(e=>`proxy to: ${e.hostname}:${e.port}`)]))}}};(async()=>{const e=await(0,b.parseOption)() | ||
const r=b.MODE_NAME_LIST.find(r=>e.tryGet(r)) | ||
if(!r)return h(e.tryGet("version")?(0,w.getVersion)():(0,b.formatUsage)(null,e.tryGet("help")?null:"simple")) | ||
await $(r,e).catch(e=>{console.warn(`[Error] in mode: ${r}:`,e.stack||e) | ||
process.exit(2)})})().catch(e=>{console.warn((0,b.formatUsage)(e.stack||e,"simple")) | ||
process.exit(1)}) |
var e=require("../../library/common/time") | ||
var r=require("../../library/common/immutable/Array") | ||
var t=require("../../library/common/module/MIME") | ||
var s=require("../../library/node/data/Buffer") | ||
var o=require("../../library/node/server/Responder/Common") | ||
var n=require("../../library/node/server/Responder/Send") | ||
var a=require("../../library/node/server/Responder/Router") | ||
var u=require("../function") | ||
const c=["GET","POST","PUT","DELETE"] | ||
exports.startServerTestConnection=(async({protocol:i="http:",hostname:d,port:m,log:p})=>{const f=(0,n.prepareBufferData)(Buffer.from("TEST CONTENT")) | ||
const y=[[["/test-describe","/test-describe/*"],Object.keys(a.METHOD_MAP),async e=>{const{url:s,method:o,httpVersion:a,rawHeaders:u,socket:{remoteAddress:c,remotePort:i}}=e.request | ||
const d=JSON.stringify({from:`${c}:${i}`,request:{url:s,method:o,httpVersion:a,headers:(0,r.arraySplitChunk)(u,2).map(e=>e.join(": "))}},null,2) | ||
p(`[test-describe]\n${d}`) | ||
return(0,n.responderSendBufferCompress)(e,{buffer:Buffer.from(d),type:t.BASIC_EXTENSION_MAP.json})}],[["/test-echo-post","/test-echo-post/:mime"],"POST",async e=>{const{url:{searchParams:r}}=e.getState() | ||
return(r.has("no-compress")?n.responderSendBuffer:n.responderSendBufferCompress)(e,{buffer:await(0,s.receiveBufferAsync)(e.request),type:t.BASIC_EXTENSION_MAP[(0,a.getRouteParam)(e,"mime")]})}],["/test-buffer",c,e=>(0,n.responderSendBufferCompress)(e,f)],["/test-json",c,e=>(0,n.responderSendJSON)(e,{object:{testKey:"TEST VALUE"}})],["/test-destroy",c,async e=>e.response.destroy()],[["/test-timeout","/test-timeout/:wait"],c,async r=>{const t=parseInt((0,a.getRouteParam)(r,"wait"))||200 | ||
var s=require("../../library/node/resource") | ||
var o=require("../../library/node/data/Buffer") | ||
var n=require("../../library/node/server/Responder/Common") | ||
var a=require("../../library/node/server/Responder/Send") | ||
var u=require("../../library/node/server/Responder/Router") | ||
var c=require("../function") | ||
const i=["GET","POST","PUT","DELETE"] | ||
exports.startServerTestConnection=(async({protocol:d="http:",hostname:m,port:p,log:f})=>{const y=(0,a.prepareBufferData)(Buffer.from("TEST CONTENT")) | ||
const S=[[["/test-describe","/test-describe/*"],Object.keys(u.METHOD_MAP),async e=>{const{url:s,method:o,httpVersion:n,rawHeaders:u,socket:{remoteAddress:c,remotePort:i}}=e.request | ||
const d=JSON.stringify({from:`${c}:${i}`,request:{url:s,method:o,httpVersion:n,headers:(0,r.arraySplitChunk)(u,2).map(e=>e.join(": "))}},null,2) | ||
f(`[test-describe]\n${d}`) | ||
return(0,a.responderSendBufferCompress)(e,{buffer:Buffer.from(d),type:t.BASIC_EXTENSION_MAP.json})}],[["/test-echo-post","/test-echo-post/:mime"],"POST",async e=>{const{url:{searchParams:r}}=e.getState() | ||
return(r.has("no-compress")?a.responderSendBuffer:a.responderSendBufferCompress)(e,{buffer:await(0,o.receiveBufferAsync)(e.request),type:t.BASIC_EXTENSION_MAP[(0,u.getRouteParam)(e,"mime")]})}],["/test-buffer",i,e=>(0,a.responderSendBufferCompress)(e,y)],["/test-json",i,e=>(0,a.responderSendJSON)(e,{object:{testKey:"TEST VALUE"}})],["/test-destroy",i,async e=>e.response.destroy()],[["/test-timeout","/test-timeout/:wait"],i,async r=>{const t=parseInt((0,u.getRouteParam)(r,"wait"))||200 | ||
await(0,e.setTimeoutAsync)(t) | ||
return(0,n.responderSendJSON)(r,{object:{}})}],[["/test-status-code","/test-status-code/:status-code"],c,async e=>{const r=parseInt((0,a.getRouteParam)(e,"status-code"))||200 | ||
return(0,o.responderEndWithStatusCode)(e,{statusCode:r})}],[["/test-retry","/test-retry/:count"],c,(()=>{const e={} | ||
return async r=>{const t=parseInt((0,a.getRouteParam)(r,"count"))||4 | ||
return(0,a.responderSendJSON)(r,{object:{}})}],[["/test-status-code","/test-status-code/:status-code"],i,async e=>{const r=parseInt((0,u.getRouteParam)(e,"status-code"))||200 | ||
return(0,n.responderEndWithStatusCode)(e,{statusCode:r})}],[["/test-retry","/test-retry/:count"],i,(()=>{const e={} | ||
return async r=>{const t=parseInt((0,u.getRouteParam)(r,"count"))||4 | ||
const s=(e[t]||0)+1 | ||
e[t]=s%t | ||
s===t?(0,n.responderSendJSON)(r,{object:{}}):r.response.destroy()}})()],["/","GET",(0,a.createResponderRouteList)({getRouteMap:()=>(0,a.createRouteMap)(y),extraBodyList:[(0,u.getDrBrowserScriptHTML)()]})]] | ||
await(0,u.commonStartServer)({protocol:i,hostname:d,port:m,routeConfigList:y,isAddFavicon:!0,title:"TestConnection",log:p})}) | ||
s===t?(0,a.responderSendJSON)(r,{object:{}}):r.response.destroy()}})()],["/","GET",(0,u.createResponderRouteList)({getRouteMap:()=>(0,u.createRouteMap)(S),extraBodyList:[(0,s.DR_BROWSER_SCRIPT_TAG)()]})]] | ||
await(0,c.commonStartServer)({protocol:d,hostname:m,port:p,routeConfigList:S,isAddFavicon:!0,title:"TestConnection",log:f})}) |
var e=require("../../library/common/error") | ||
var t=require("../../library/common/module/MIME") | ||
var o=require("../../library/node/data/BufferPacket") | ||
var r=require("../../library/node/server/Responder/Common") | ||
var n=require("../../library/node/server/Responder/Send") | ||
var a=require("../../library/node/server/Responder/Router") | ||
var s=require("../../library/node/server/WebSocket/function") | ||
var i=require("../../library/node/server/WebSocket/WebSocketServer") | ||
var l=require("../../library/node/server/WebSocket/WebSocketUpgradeRequest") | ||
var c=require("../../library/node/server/commonHTML") | ||
var d=require("../function") | ||
const p={} | ||
var o=require("../../library/node/resource") | ||
var r=require("../../library/node/data/BufferPacket") | ||
var n=require("../../library/node/server/Responder/Common") | ||
var a=require("../../library/node/server/Responder/Send") | ||
var s=require("../../library/node/server/Responder/Router") | ||
var i=require("../../library/node/server/WebSocket/function") | ||
var l=require("../../library/node/server/WebSocket/WebSocketServer") | ||
var c=require("../../library/node/server/WebSocket/WebSocketUpgradeRequest") | ||
var d=require("../../library/node/server/commonHTML") | ||
var p=require("../function") | ||
const u={} | ||
const f=(e,t)=>{const o=u[e] | ||
const f={} | ||
const y=(e,t)=>{const o=f[e] | ||
if(!o||!o.has(t))return t | ||
@@ -20,51 +21,51 @@ const r=t.replace(/-*\d+$/,"") | ||
return`${r}-${n}`} | ||
const y=t=>{const{webSocket:r}=t | ||
const g=t=>{const{webSocket:o}=t | ||
const{groupPath:n,id:a}=t.getState() | ||
const i=e=>{if(0===e.size)return | ||
const t=(0,o.packBufferPacket)(JSON.stringify({type:"#INFO_GROUP",payload:Array.from(u[n])})) | ||
const s=e=>{if(0===e.size)return | ||
const t=(0,r.packBufferPacket)(JSON.stringify({type:"#INFO_GROUP",payload:Array.from(f[n])})) | ||
e.forEach(e=>e.webSocket.sendBuffer(t))} | ||
r.on(s.WEBSOCKET_EVENT.OPEN,()=>{const e=((e,t,o)=>{void 0===u[e]&&(u[e]=new Set) | ||
const r=u[e] | ||
o.on(i.WEBSOCKET_EVENT.OPEN,()=>{const e=((e,t,o)=>{void 0===f[e]&&(f[e]=new Set) | ||
const r=f[e] | ||
r.add(t) | ||
void 0===p[e]&&(p[e]=new Map) | ||
const n=p[e] | ||
void 0===u[e]&&(u[e]=new Map) | ||
const n=u[e] | ||
n.set(t,{id:t,webSocket:o,groupIdSet:r}) | ||
return n})(n,a,r) | ||
r.sendBuffer((0,o.packBufferPacket)(JSON.stringify({type:"#INFO_USER",payload:{groupPath:n,id:a}}))) | ||
i(e)}) | ||
r.on(s.WEBSOCKET_EVENT.CLOSE,()=>{const e=((e,t)=>{const o=u[e] | ||
return n})(n,a,o) | ||
o.sendBuffer((0,r.packBufferPacket)(JSON.stringify({type:"#INFO_USER",payload:{groupPath:n,id:a}}))) | ||
s(e)}) | ||
o.on(i.WEBSOCKET_EVENT.CLOSE,()=>{const e=((e,t)=>{const o=f[e] | ||
o&&o.delete(t) | ||
o&&0===o.size&&delete u[e] | ||
const r=p[e] | ||
o&&0===o.size&&delete f[e] | ||
const r=u[e] | ||
r&&r.delete(t) | ||
r&&0===r.size&&delete p[e] | ||
r&&0===r.size&&delete u[e] | ||
return r})(n,a) | ||
i(e)}) | ||
r.on(s.WEBSOCKET_EVENT.FRAME,((t,r)=>async({dataType:n,dataBuffer:a})=>{if(n!==s.OPCODE_TYPE.BINARY)return t.close(1e3,"expect BINARY") | ||
const{error:i}=await(0,e.catchAsync)(r,(0,o.parseBufferPacket)(a)) | ||
i&&t.close(1e3,i.toString())})(r,([e,t])=>{const{type:s,payload:i,targetId:l}=JSON.parse(e) | ||
"#CLOSE"===s&&r.close(1e3,"CLOSE received") | ||
"#BUFFER_GROUP"===s&&((e,t,r,n)=>{if(e.size<=1)return | ||
const s=(0,o.packBufferPacket)(JSON.stringify({type:t,payload:Object.assign({},r,{id:a})}),n) | ||
e.forEach(e=>{e.id!==a&&e.webSocket.sendBuffer(s)})})(p[n],s,i,t) | ||
"#BUFFER_SINGLE"===s&&((e,t,r,n,s)=>{const i=e.get(n) | ||
i&&i.webSocket.sendBuffer((0,o.packBufferPacket)(JSON.stringify({type:t,targetId:n,payload:Object.assign({},r,{id:a})}),s))})(p[n],s,i,l,t)}))} | ||
const g=new Set(["group-binary-packet"]) | ||
const b=async e=>{const{origin:t,protocolList:o,isSecure:r}=e.webSocket | ||
const n=decodeURIComponent((0,a.getRouteParamAny)(e)||"") | ||
const{url:{searchParams:s}}=e.getState() | ||
const i=s.get("id") | ||
const l=m(o,g) | ||
if(n&&i&&l){e.setState({protocol:l,groupPath:n,id:f(n,i)}) | ||
y(e)}} | ||
const m=(e,t)=>{return e.find(t.has,t)} | ||
exports.startServerWebSocketGroup=(async({protocol:e="http:",hostname:o,port:s,log:p})=>{const u=(0,n.prepareBufferData)(Buffer.from((0,c.COMMON_LAYOUT)([(0,c.COMMON_STYLE)(),S],[k,(0,c.COMMON_SCRIPT)({TYPE_CLOSE:"#CLOSE",TYPE_INFO_GROUP:"#INFO_GROUP",TYPE_INFO_USER:"#INFO_USER",TYPE_BUFFER_GROUP:"#BUFFER_GROUP",TYPE_BUFFER_SINGLE:"#BUFFER_SINGLE",FRAME_LENGTH_LIMIT:268435456,onload:E}),(0,d.getDrBrowserScriptHTML)()])),t.BASIC_EXTENSION_MAP.html) | ||
const f=[["/","GET",e=>(0,n.responderSendBufferCompress)(e,u)],["/*","GET",e=>(0,r.responderEndWithRedirect)(e,{redirectUrl:"/"})]] | ||
const{server:y,option:{baseUrl:g}}=await(0,d.commonStartServer)({protocol:e,hostname:o,port:s,routeConfigList:f,isAddFavicon:!0,title:"WebSocketGroup",log:p});(0,i.enableWebSocketServer)({server:y,onUpgradeRequest:(0,l.createUpdateRequestListener)({responderList:[(0,a.createResponderRouter)({routeMap:(0,a.createRouteMap)([["/websocket-group/*","GET",b]]),baseUrl:g})]}),frameLengthLimit:268435456})}) | ||
const S="<style>\nlabel { display: flex; align-items: center; }\np { position: relative; padding: 14px 4px 2px; border-top: 1px solid #ddd; word-break: break-all; }\np:hover { background: #f5f5f5; }\npre { overflow: auto; padding: 0 2px; max-height: 10em; border-left: 1px solid #ddd; color: #666; }\ninput { flex: 1; }\n.flex-column { display: flex; flex-flow: column; }\n.non-flex { flex-shrink: 0; }\n.time-tag, .id-tag { position: absolute; top: 0; font-size: 12px; line-height: 12px; }\n.time-tag { right: 0; color: #aaa }\n.id-tag { left: 0; }\n.color-self { color: #63aeff }\n.color-system { color: #aaa }\n</style>" | ||
const k='\n<div id="setup" class="flex-column">\n <input id="group-path" class="auto-height" type="text" placeholder="group-path" autofocus />\n <input id="id" class="auto-height" type="text" placeholder="id" />\n</div>\n<button id="button-toggle"></button>\n<div id="log" style="overflow-y: auto; flex: 1; min-height: 0;"></div>\n<button id="button-log-clear" class="non-flex">Clear Log [Ctrl+l]</button>\n<div id="main" class="flex-column non-flex">\n <label for="payload-text">Message Text: </label>\n <textarea id="payload-text" style="min-height: 6em;"></textarea>\n <label>Message File: <input id="payload-file" class="auto-height" type="file" /></label>\n <button id="button-send"></button>\n</div>\n' | ||
const E=()=>{const{alert:e,getSelection:t,location:o,Blob:r,WebSocket:n,qS:a,cE:s,TYPE_CLOSE:i,TYPE_INFO_GROUP:l,TYPE_INFO_USER:c,TYPE_BUFFER_GROUP:d,TYPE_BUFFER_SINGLE:p,FRAME_LENGTH_LIMIT:u,Dr:{Common:{Time:{setTimeoutAsync:f},Function:{lossyAsync:y},Math:{getRandomInt:g,getRandomId:b},Format:{binary:m}},Browser:{Data:{BlobPacket:{packBlobPacket:S,parseBlobPacket:k}},Resource:{createDownloadWithBlob:E},DOM:{applyDragFileListListener:h},Input:{KeyCommand:{createKeyCommandHub:N}}}}}=window | ||
const O=(e,t="")=>s("span",{innerText:`[${e}]`,className:`id-tag ${t}`}) | ||
const v=()=>s("span",{innerText:(new Date).toLocaleString(),className:"time-tag"}) | ||
const x=(...e)=>{const t=a("#log") | ||
s(e)}) | ||
o.on(i.WEBSOCKET_EVENT.FRAME,((t,o)=>async({dataType:n,dataBuffer:a})=>{if(n!==i.OPCODE_TYPE.BINARY)return t.close(1e3,"expect BINARY") | ||
const{error:s}=await(0,e.catchAsync)(o,(0,r.parseBufferPacket)(a)) | ||
s&&t.close(1e3,s.toString())})(o,([e,t])=>{const{type:s,payload:i,targetId:l}=JSON.parse(e) | ||
"#CLOSE"===s&&o.close(1e3,"CLOSE received") | ||
"#BUFFER_GROUP"===s&&((e,t,o,n)=>{if(e.size<=1)return | ||
const s=(0,r.packBufferPacket)(JSON.stringify({type:t,payload:Object.assign({},o,{id:a})}),n) | ||
e.forEach(e=>{e.id!==a&&e.webSocket.sendBuffer(s)})})(u[n],s,i,t) | ||
"#BUFFER_SINGLE"===s&&((e,t,o,n,s)=>{const i=e.get(n) | ||
i&&i.webSocket.sendBuffer((0,r.packBufferPacket)(JSON.stringify({type:t,targetId:n,payload:Object.assign({},o,{id:a})}),s))})(u[n],s,i,l,t)}))} | ||
const b=new Set(["group-binary-packet"]) | ||
const m=async e=>{const{origin:t,protocolList:o,isSecure:r}=e.webSocket | ||
const n=decodeURIComponent((0,s.getRouteParamAny)(e)||"") | ||
const{url:{searchParams:a}}=e.getState() | ||
const i=a.get("id") | ||
const l=S(o,b) | ||
if(n&&i&&l){e.setState({protocol:l,groupPath:n,id:y(n,i)}) | ||
g(e)}} | ||
const S=(e,t)=>{return e.find(t.has,t)} | ||
exports.startServerWebSocketGroup=(async({protocol:e="http:",hostname:r,port:i,log:u})=>{const f=(0,a.prepareBufferData)(Buffer.from((0,d.COMMON_LAYOUT)([(0,d.COMMON_STYLE)(),k],[E,(0,d.COMMON_SCRIPT)({TYPE_CLOSE:"#CLOSE",TYPE_INFO_GROUP:"#INFO_GROUP",TYPE_INFO_USER:"#INFO_USER",TYPE_BUFFER_GROUP:"#BUFFER_GROUP",TYPE_BUFFER_SINGLE:"#BUFFER_SINGLE",FRAME_LENGTH_LIMIT:268435456,onload:h}),(0,o.DR_BROWSER_SCRIPT_TAG)()])),t.BASIC_EXTENSION_MAP.html) | ||
const y=[["/","GET",e=>(0,a.responderSendBufferCompress)(e,f)],["/*","GET",e=>(0,n.responderEndWithRedirect)(e,{redirectUrl:"/"})]] | ||
const{server:g,option:{baseUrl:b}}=await(0,p.commonStartServer)({protocol:e,hostname:r,port:i,routeConfigList:y,isAddFavicon:!0,title:"WebSocketGroup",log:u});(0,l.enableWebSocketServer)({server:g,onUpgradeRequest:(0,c.createUpdateRequestListener)({responderList:[(0,s.createResponderRouter)({routeMap:(0,s.createRouteMap)([["/websocket-group/*","GET",m]]),baseUrl:b})]}),frameLengthLimit:268435456})}) | ||
const k="<style>\nlabel { display: flex; align-items: center; }\np { position: relative; padding: 14px 4px 2px; border-top: 1px solid #ddd; word-break: break-all; }\np:hover { background: #f5f5f5; }\npre { overflow: auto; padding: 0 2px; max-height: 10em; border-left: 1px solid #ddd; color: #666; }\ninput { flex: 1; }\n.flex-column { display: flex; flex-flow: column; }\n.non-flex { flex-shrink: 0; }\n.time-tag, .id-tag { position: absolute; top: 0; font-size: 12px; line-height: 12px; }\n.time-tag { right: 0; color: #aaa }\n.id-tag { left: 0; }\n.color-self { color: #63aeff }\n.color-system { color: #aaa }\n</style>" | ||
const E='\n<div id="setup" class="flex-column">\n <input id="group-path" class="auto-height" type="text" placeholder="group-path" autofocus />\n <input id="id" class="auto-height" type="text" placeholder="id" />\n</div>\n<button id="button-toggle"></button>\n<div id="log" style="overflow-y: auto; flex: 1; min-height: 0;"></div>\n<button id="button-log-clear" class="non-flex">Clear Log [Ctrl+l]</button>\n<div id="main" class="flex-column non-flex">\n <label for="payload-text">Message Text: </label>\n <textarea id="payload-text" style="min-height: 6em;"></textarea>\n <label>Message File: <input id="payload-file" class="auto-height" type="file" /></label>\n <button id="button-send"></button>\n</div>\n' | ||
const h=()=>{const{alert:e,getSelection:t,location:o,Blob:r,WebSocket:n,qS:a,cE:s,TYPE_CLOSE:i,TYPE_INFO_GROUP:l,TYPE_INFO_USER:c,TYPE_BUFFER_GROUP:d,TYPE_BUFFER_SINGLE:p,FRAME_LENGTH_LIMIT:u,Dr:{Common:{Time:{setTimeoutAsync:f},Function:{lossyAsync:y},Math:{getRandomInt:g,getRandomId:b},Format:{binary:m}},Browser:{Data:{BlobPacket:{packBlobPacket:S,parseBlobPacket:k}},Resource:{createDownloadWithBlob:E},DOM:{applyDragFileListListener:h},Input:{KeyCommand:{createKeyCommandHub:O}}}}}=window | ||
const v=(e,t="")=>s("span",{innerText:`[${e}]`,className:`id-tag ${t}`}) | ||
const N=()=>s("span",{innerText:(new Date).toLocaleString(),className:"time-tag"}) | ||
const R=(...e)=>{const t=a("#log") | ||
const o=s("p",{id:b()},e) | ||
@@ -74,8 +75,8 @@ t.appendChild(o) | ||
return o} | ||
const T=({id:e,text:o,className:r})=>x(s("pre",{innerText:o,ondblclick:e=>t().selectAllChildren(e.currentTarget.parentNode.querySelector("pre"))}),O(e,r),v()) | ||
const w=({isSend:e,id:t,fileName:o,fileSize:r,fileId:n,className:a})=>x(s("pre",{innerText:e?"sharing: ":"share: "}),s(e?"b":"button",{innerText:`📄 ${o} (${m(r)}B)`,onclick:e?null:()=>_(t,n)}),O(t,a),v()) | ||
const I=e=>x(s("pre",{innerText:e,className:"color-system"}),O("System","color-system"),v()) | ||
const R=()=>a("#log","") | ||
const x=({id:e,text:o,className:r})=>R(s("pre",{innerText:o,ondblclick:e=>t().selectAllChildren(e.currentTarget.parentNode.querySelector("pre"))}),v(e,r),N()) | ||
const T=({isSend:e,id:t,fileName:o,fileSize:r,fileId:n,className:a})=>R(s("pre",{innerText:e?"sharing: ":"share: "}),s(e?"b":"button",{innerText:`📄 ${o} (${m(r)}B)`,onclick:e?null:()=>B(t,n)}),v(t,a),N()) | ||
const I=e=>R(s("pre",{innerText:e,className:"color-system"}),v("System","color-system"),N()) | ||
const w=()=>a("#log","") | ||
const P={fileWeakMap:new WeakMap,retryCount:0} | ||
const C=()=>{I(`Left group: ${P.groupPath}`) | ||
const _=()=>{I(`Left group: ${P.groupPath}`) | ||
a("#setup").style.display="" | ||
@@ -90,3 +91,3 @@ a("#main").style.display="none" | ||
P.groupInfo=[]} | ||
const B=y(async e=>{C() | ||
const C=y(async e=>{_() | ||
await f(200*P.retryCount) | ||
@@ -96,5 +97,5 @@ P.retryCount++ | ||
P.retryCount<=10&&$()}).trigger | ||
C() | ||
R() | ||
const _=(e,t)=>{P.websocket.send(S(JSON.stringify({type:p,targetId:e,payload:{fileId:t,intent:"request"}})))} | ||
_() | ||
w() | ||
const B=(e,t)=>{P.websocket.send(S(JSON.stringify({type:p,targetId:e,payload:{fileId:t,intent:"request"}})))} | ||
const $=()=>{if(P.websocket){P.websocket.send(S(JSON.stringify({type:i}))) | ||
@@ -118,4 +119,4 @@ return}const e=a("#group-path").value.trim()||"public" | ||
P.retryCount=0})({websocket:r,groupPath:e,id:t})} | ||
r.addEventListener("error",B) | ||
r.addEventListener("close",({code:e})=>1e3===e?C():B(new Error(`server close with code: ${e}`))) | ||
r.addEventListener("error",C) | ||
r.addEventListener("close",({code:e})=>1e3===e?_():C(new Error(`server close with code: ${e}`))) | ||
r.addEventListener("message",({data:e})=>F(e,s))} | ||
@@ -131,4 +132,4 @@ const M=()=>{const e=Object.keys(window) | ||
P.groupInfo=u}else if(s===d){const{id:e,text:t,fileName:o,fileSize:r,fileId:n}=u | ||
t&&T({id:e,text:t}) | ||
o&&w({id:e,fileName:o,fileSize:r,fileId:n})}else if(s===p){const{id:e,intent:t}=u | ||
t&&x({id:e,text:t}) | ||
o&&T({id:e,fileName:o,fileSize:r,fileId:n})}else if(s===p){const{id:e,intent:t}=u | ||
if("request"===t){const{fileId:t}=u | ||
@@ -142,3 +143,3 @@ const o=P.fileWeakMap.get(a(`#${t}`)) | ||
I(t?`Get file: ${o} from ${e}`:`Miss file response from ${e}`)}}} | ||
const L=()=>{if(!P.websocket||P.groupInfo.length<=1||!a("#payload-text"))return | ||
const U=()=>{if(!P.websocket||P.groupInfo.length<=1||!a("#payload-text"))return | ||
const t=a("#payload-text").value.trim() | ||
@@ -152,17 +153,17 @@ const o=a("#payload-file").files[0] | ||
if(n>u)return e(`fill size too big! max: ${m(u)}B, get ${m(n)}B`) | ||
t&&T({id:P.id,text:t,className:"color-self"}) | ||
const s=r&&w({isSend:!0,id:P.id,fileName:r,fileSize:n,className:"color-self"}) | ||
t&&x({id:P.id,text:t,className:"color-self"}) | ||
const s=r&&T({isSend:!0,id:P.id,fileName:r,fileSize:n,className:"color-self"}) | ||
P.websocket.send(S(JSON.stringify({type:d,payload:{text:t,fileName:r,fileSize:n,fileId:s&&s.id}}))) | ||
r&&P.fileWeakMap.set(s,o)} | ||
a("#button-log-clear").onclick=R | ||
a("#button-log-clear").onclick=w | ||
a("#button-toggle").onclick=$ | ||
a("#button-send").onclick=L | ||
const{start:U,addKeyCommand:G}=N({}) | ||
a("#button-send").onclick=U | ||
const{start:L,addKeyCommand:G}=O({}) | ||
G({checkMap:{ctrlKey:!0,key:"d"},callback:$}) | ||
G({checkMap:{ctrlKey:!0,key:"l"},callback:R}) | ||
G({checkMap:{ctrlKey:!0,key:"Enter"},callback:L}) | ||
G({checkMap:{ctrlKey:!0,key:"l"},callback:w}) | ||
G({checkMap:{ctrlKey:!0,key:"Enter"},callback:U}) | ||
G({target:a("#group-path"),checkMap:{key:"Enter"},callback:$}) | ||
G({target:a("#id"),checkMap:{key:"Enter"},callback:$}) | ||
U() | ||
L() | ||
h(document,e=>{const t=a("#payload-file") | ||
t&&(t.files=e)})} |
@@ -59,3 +59,5 @@ root=window,factory=function(){return function(t){var e={} | ||
__webpack_require__.d(__webpack_exports__,"a",()=>tryRequire) | ||
const tryRequire=(name="")=>{try{return eval("require")(name)}catch(t){}}},function(t,e){var n | ||
__webpack_require__.d(__webpack_exports__,"b",()=>tryRequireResolve) | ||
const tryRequire=(name="")=>{try{return eval("require")(name)}catch(t){}} | ||
const tryRequireResolve=(name="")=>{try{return eval("require.resolve")(name)}catch(t){}}},function(t,e){var n | ||
n=function(){return this}() | ||
@@ -66,73 +68,74 @@ try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict" | ||
n.r(r) | ||
n.d(r,"assert",()=>lt) | ||
n.d(r,"getEndianness",()=>ut) | ||
n.d(r,"getEnvironment",()=>ht.a) | ||
n.d(r,"getGlobal",()=>ht.b) | ||
n.d(r,"global",()=>ht.c) | ||
n.d(r,"tryRequire",()=>ft.a) | ||
n.d(r,"assert",()=>pt) | ||
n.d(r,"getEndianness",()=>ht) | ||
n.d(r,"getEnvironment",()=>ft.a) | ||
n.d(r,"getGlobal",()=>ft.b) | ||
n.d(r,"global",()=>ft.c) | ||
n.d(r,"tryRequire",()=>yt.a) | ||
n.d(r,"tryRequireResolve",()=>yt.b) | ||
var o={} | ||
n.r(o) | ||
n.d(o,"isEqualArrayBuffer",()=>pt) | ||
n.d(o,"concatArrayBuffer",()=>yt) | ||
n.d(o,"deconcatArrayBuffer",()=>gt) | ||
n.d(o,"fromString",()=>xt) | ||
n.d(o,"toString",()=>wt) | ||
n.d(o,"isEqualArrayBuffer",()=>gt) | ||
n.d(o,"concatArrayBuffer",()=>mt) | ||
n.d(o,"deconcatArrayBuffer",()=>vt) | ||
n.d(o,"fromString",()=>Et) | ||
n.d(o,"toString",()=>bt) | ||
var s={} | ||
n.r(s) | ||
n.d(s,"MAX_PACKET_HEADER_SIZE",()=>bt) | ||
n.d(s,"HEADER_BYTE_SIZE",()=>Et) | ||
n.d(s,"packArrayBufferHeader",()=>Mt) | ||
n.d(s,"parseArrayBufferHeader",()=>St) | ||
n.d(s,"packArrayBufferPacket",()=>Lt) | ||
n.d(s,"parseArrayBufferPacket",()=>Ot) | ||
n.d(s,"packChainArrayBufferPacket",()=>Tt) | ||
n.d(s,"parseChainArrayBufferPacket",()=>kt) | ||
n.d(s,"MAX_PACKET_HEADER_SIZE",()=>At) | ||
n.d(s,"HEADER_BYTE_SIZE",()=>Mt) | ||
n.d(s,"packArrayBufferHeader",()=>Ot) | ||
n.d(s,"parseArrayBufferHeader",()=>Lt) | ||
n.d(s,"packArrayBufferPacket",()=>Tt) | ||
n.d(s,"parseArrayBufferPacket",()=>kt) | ||
n.d(s,"packChainArrayBufferPacket",()=>jt) | ||
n.d(s,"parseChainArrayBufferPacket",()=>Dt) | ||
var a={} | ||
n.r(a) | ||
n.d(a,"createHub",()=>Dt) | ||
n.d(a,"createEventTarget",()=>jt) | ||
n.d(a,"createEventEmitter",()=>Rt) | ||
n.d(a,"createHub",()=>Ct) | ||
n.d(a,"createEventTarget",()=>Pt) | ||
n.d(a,"createEventEmitter",()=>$t) | ||
var c={} | ||
n.r(c) | ||
n.d(c,"createDoublyLinkedList",()=>$t) | ||
n.d(c,"createDoublyLinkedList",()=>_t) | ||
n.d(c,"createNode",()=>Bt) | ||
var i={} | ||
n.r(i) | ||
n.d(i,"createCache",()=>Pt) | ||
n.d(i,"createCache",()=>Nt) | ||
n.d(i,"createCacheMap",()=>Ft) | ||
var d={} | ||
n.r(d) | ||
n.d(d,"createListMap",()=>Nt) | ||
n.d(d,"createListMap",()=>It) | ||
var u={} | ||
n.r(u) | ||
n.d(u,"rethrowError",()=>It) | ||
n.d(u,"tryCall",()=>_t) | ||
n.d(u,"catchSync",()=>zt) | ||
n.d(u,"catchAsync",()=>Ut) | ||
n.d(u,"rethrowError",()=>zt) | ||
n.d(u,"tryCall",()=>Ut) | ||
n.d(u,"catchSync",()=>qt) | ||
n.d(u,"catchAsync",()=>Kt) | ||
var l={} | ||
n.r(l) | ||
n.d(l,"createSaveQueue",()=>Qt) | ||
n.d(l,"createSaveQueue",()=>Vt) | ||
var h={} | ||
n.r(h) | ||
n.d(h,"createSetMap",()=>Vt) | ||
n.d(h,"getInvertSetMap",()=>Kt) | ||
n.d(h,"createSetMap",()=>Ht) | ||
n.d(h,"getInvertSetMap",()=>Gt) | ||
var p={} | ||
n.r(p) | ||
n.d(p,"createToggle",()=>Yt) | ||
var f={} | ||
n.r(f) | ||
n.d(f,"createToggle",()=>Ht) | ||
var p={} | ||
n.r(p) | ||
n.d(p,"createTreeDepthFirstSearch",()=>Gt) | ||
n.d(p,"createTreeDepthFirstSearchAsync",()=>Yt) | ||
n.d(p,"createTreeBreadthFirstSearch",()=>Jt) | ||
n.d(p,"createTreeBreadthFirstSearchAsync",()=>Wt) | ||
n.d(p,"createTreeBottomUpSearch",()=>Xt) | ||
n.d(p,"createTreeBottomUpSearchAsync",()=>Zt) | ||
n.d(p,"prettyStringifyTree",()=>te) | ||
n.d(f,"createTreeDepthFirstSearch",()=>Wt) | ||
n.d(f,"createTreeDepthFirstSearchAsync",()=>Jt) | ||
n.d(f,"createTreeBreadthFirstSearch",()=>Xt) | ||
n.d(f,"createTreeBreadthFirstSearchAsync",()=>Zt) | ||
n.d(f,"createTreeBottomUpSearch",()=>te) | ||
n.d(f,"createTreeBottomUpSearchAsync",()=>ee) | ||
n.d(f,"prettyStringifyTree",()=>ne) | ||
var y={} | ||
n.r(y) | ||
n.d(y,"getValueByKeyList",()=>se) | ||
n.d(y,"hashStringToNumber",()=>ee) | ||
n.d(y,"reverseString",()=>ne) | ||
n.d(y,"swapObfuscateString",()=>re) | ||
n.d(y,"tryParseJSONObject",()=>oe) | ||
n.d(y,"getValueByKeyList",()=>ce) | ||
n.d(y,"hashStringToNumber",()=>re) | ||
n.d(y,"reverseString",()=>oe) | ||
n.d(y,"swapObfuscateString",()=>se) | ||
n.d(y,"tryParseJSONObject",()=>ae) | ||
n.d(y,"ArrayBuffer",()=>o) | ||
@@ -145,72 +148,72 @@ n.d(y,"ArrayBufferPacket",()=>s) | ||
n.d(y,"SetMap",()=>h) | ||
n.d(y,"Toggle",()=>f) | ||
n.d(y,"Tree",()=>p) | ||
n.d(y,"Toggle",()=>p) | ||
n.d(y,"Tree",()=>f) | ||
var g={} | ||
n.r(g) | ||
n.d(g,"fromEmpty",()=>ae) | ||
n.d(g,"fromPoint",()=>ce) | ||
n.d(g,"fromWidget",()=>ie) | ||
n.d(g,"fromWidgetList",()=>de) | ||
n.d(g,"getCenter",()=>ue) | ||
n.d(g,"getUnion",()=>le) | ||
n.d(g,"isIntersect",()=>he) | ||
n.d(g,"isContainPoint",()=>fe) | ||
n.d(g,"fromEmpty",()=>ie) | ||
n.d(g,"fromPoint",()=>de) | ||
n.d(g,"fromWidget",()=>ue) | ||
n.d(g,"fromWidgetList",()=>le) | ||
n.d(g,"getCenter",()=>he) | ||
n.d(g,"getUnion",()=>pe) | ||
n.d(g,"isIntersect",()=>fe) | ||
n.d(g,"isContainPoint",()=>ye) | ||
var m={} | ||
n.r(m) | ||
n.d(m,"fromWidget",()=>pe) | ||
n.d(m,"fromWidget",()=>ge) | ||
var v={} | ||
n.r(v) | ||
n.d(v,"fromOrigin",()=>ge) | ||
n.d(v,"fromAngleLength",()=>me) | ||
n.d(v,"getLength",()=>ve) | ||
n.d(v,"getLengthSq",()=>we) | ||
n.d(v,"getDist",()=>xe) | ||
n.d(v,"getDistSq",()=>be) | ||
n.d(v,"getAngle",()=>Ee) | ||
n.d(v,"getRotate",()=>Ae) | ||
n.d(v,"getRotateDelta",()=>Me) | ||
n.d(v,"getDotProduct",()=>Se) | ||
n.d(v,"add",()=>Le) | ||
n.d(v,"sub",()=>Oe) | ||
n.d(v,"multiply",()=>Te) | ||
n.d(v,"divide",()=>ke) | ||
n.d(v,"scale",()=>De) | ||
n.d(v,"project",()=>Ce) | ||
n.d(v,"min",()=>je) | ||
n.d(v,"max",()=>Re) | ||
n.d(v,"clamp",()=>$e) | ||
n.d(v,"fromOrigin",()=>ve) | ||
n.d(v,"fromAngleLength",()=>we) | ||
n.d(v,"getLength",()=>xe) | ||
n.d(v,"getLengthSq",()=>be) | ||
n.d(v,"getDist",()=>Ee) | ||
n.d(v,"getDistSq",()=>Ae) | ||
n.d(v,"getAngle",()=>Me) | ||
n.d(v,"getRotate",()=>Se) | ||
n.d(v,"getRotateDelta",()=>Oe) | ||
n.d(v,"getDotProduct",()=>Le) | ||
n.d(v,"add",()=>Te) | ||
n.d(v,"sub",()=>ke) | ||
n.d(v,"multiply",()=>je) | ||
n.d(v,"divide",()=>De) | ||
n.d(v,"scale",()=>Ce) | ||
n.d(v,"project",()=>Re) | ||
n.d(v,"min",()=>Pe) | ||
n.d(v,"max",()=>$e) | ||
n.d(v,"clamp",()=>_e) | ||
n.d(v,"abs",()=>Be) | ||
n.d(v,"round",()=>Pe) | ||
n.d(v,"round",()=>Ne) | ||
n.d(v,"lerp",()=>Fe) | ||
n.d(v,"isZero",()=>Ne) | ||
n.d(v,"isZero",()=>Ie) | ||
var w={} | ||
n.r(w) | ||
n.d(w,"fromEmpty",()=>Ie) | ||
n.d(w,"fromPoint",()=>_e) | ||
n.d(w,"fromBoundingRect",()=>ze) | ||
n.d(w,"getCenter",()=>Ue) | ||
n.d(w,"getSize",()=>qe) | ||
n.d(w,"getUnion",()=>Qe) | ||
n.d(w,"getUnionOfList",()=>Ve) | ||
n.d(w,"isEmpty",()=>Ke) | ||
n.d(w,"isIntersect",()=>He) | ||
n.d(w,"isContain",()=>Ge) | ||
n.d(w,"isContainPoint",()=>Ye) | ||
n.d(w,"fromEmpty",()=>ze) | ||
n.d(w,"fromPoint",()=>Ue) | ||
n.d(w,"fromBoundingRect",()=>qe) | ||
n.d(w,"getCenter",()=>Ke) | ||
n.d(w,"getSize",()=>Qe) | ||
n.d(w,"getUnion",()=>Ve) | ||
n.d(w,"getUnionOfList",()=>He) | ||
n.d(w,"isEmpty",()=>Ge) | ||
n.d(w,"isIntersect",()=>Ye) | ||
n.d(w,"isContain",()=>We) | ||
n.d(w,"isContainPoint",()=>Je) | ||
var x={} | ||
n.r(x) | ||
n.d(x,"fromPoint",()=>rn) | ||
n.d(x,"fromLine",()=>on) | ||
n.d(x,"fromBoundingRect",()=>sn) | ||
n.d(x,"getBoundingSize",()=>an) | ||
n.d(x,"getBoundingWidth",()=>cn) | ||
n.d(x,"getBoundingHeight",()=>dn) | ||
n.d(x,"getBoundingLeft",()=>un) | ||
n.d(x,"getBoundingRight",()=>ln) | ||
n.d(x,"getBoundingTop",()=>hn) | ||
n.d(x,"getBoundingBottom",()=>fn) | ||
n.d(x,"round",()=>pn) | ||
n.d(x,"localPoint",()=>yn) | ||
n.d(x,"localBoundingRect",()=>gn) | ||
n.d(x,"isContainBoundingRect",()=>mn) | ||
n.d(x,"isInterceptBoundingRect",()=>vn) | ||
n.d(x,"fromPoint",()=>sn) | ||
n.d(x,"fromLine",()=>an) | ||
n.d(x,"fromBoundingRect",()=>cn) | ||
n.d(x,"getBoundingSize",()=>dn) | ||
n.d(x,"getBoundingWidth",()=>un) | ||
n.d(x,"getBoundingHeight",()=>ln) | ||
n.d(x,"getBoundingLeft",()=>hn) | ||
n.d(x,"getBoundingRight",()=>pn) | ||
n.d(x,"getBoundingTop",()=>fn) | ||
n.d(x,"getBoundingBottom",()=>yn) | ||
n.d(x,"round",()=>gn) | ||
n.d(x,"localPoint",()=>mn) | ||
n.d(x,"localBoundingRect",()=>vn) | ||
n.d(x,"isContainBoundingRect",()=>wn) | ||
n.d(x,"isInterceptBoundingRect",()=>xn) | ||
var b={} | ||
@@ -225,6 +228,6 @@ n.r(b) | ||
n.r(E) | ||
n.d(E,"DEGREE_TO_RADIAN",()=>wn) | ||
n.d(E,"RADIAN_TO_DEGREE",()=>xn) | ||
n.d(E,"fromDegree",()=>bn) | ||
n.d(E,"getDegree",()=>En) | ||
n.d(E,"DEGREE_TO_RADIAN",()=>bn) | ||
n.d(E,"RADIAN_TO_DEGREE",()=>En) | ||
n.d(E,"fromDegree",()=>An) | ||
n.d(E,"getDegree",()=>Mn) | ||
var A={} | ||
@@ -236,340 +239,350 @@ n.r(A) | ||
n.r(M) | ||
n.d(M,"arraySet",()=>An) | ||
n.d(M,"arrayDelete",()=>Mn) | ||
n.d(M,"arrayInsert",()=>Sn) | ||
n.d(M,"arrayMove",()=>Ln) | ||
n.d(M,"arrayPush",()=>On) | ||
n.d(M,"arrayUnshift",()=>Tn) | ||
n.d(M,"arrayPop",()=>kn) | ||
n.d(M,"arrayShift",()=>Dn) | ||
n.d(M,"arrayConcat",()=>Cn) | ||
n.d(M,"arrayMatchDelete",()=>Rn) | ||
n.d(M,"arrayMatchPush",()=>jn) | ||
n.d(M,"arrayMatchMove",()=>$n) | ||
n.d(M,"arraySet",()=>Sn) | ||
n.d(M,"arrayDelete",()=>On) | ||
n.d(M,"arrayInsert",()=>Ln) | ||
n.d(M,"arrayMove",()=>Tn) | ||
n.d(M,"arrayPush",()=>kn) | ||
n.d(M,"arrayUnshift",()=>jn) | ||
n.d(M,"arrayPop",()=>Dn) | ||
n.d(M,"arrayShift",()=>Cn) | ||
n.d(M,"arrayConcat",()=>Rn) | ||
n.d(M,"arrayMatchDelete",()=>$n) | ||
n.d(M,"arrayMatchPush",()=>Pn) | ||
n.d(M,"arrayMatchMove",()=>_n) | ||
n.d(M,"arrayFindDelete",()=>Bn) | ||
n.d(M,"arrayFindMove",()=>Pn) | ||
n.d(M,"arrayFindMove",()=>Nn) | ||
n.d(M,"arrayFindSet",()=>Fn) | ||
n.d(M,"arrayFindSetOrPush",()=>Nn) | ||
n.d(M,"arrayFindOrPush",()=>In) | ||
n.d(M,"arraySplitChunk",()=>_n) | ||
n.d(M,"arrayFindSetOrPush",()=>In) | ||
n.d(M,"arrayFindOrPush",()=>zn) | ||
n.d(M,"arraySplitChunk",()=>Un) | ||
var S={} | ||
n.r(S) | ||
n.d(S,"objectSet",()=>zn) | ||
n.d(S,"objectDelete",()=>Un) | ||
n.d(S,"objectMerge",()=>qn) | ||
n.d(S,"objectMap",()=>Qn) | ||
n.d(S,"objectPickKey",()=>Vn) | ||
n.d(S,"objectFindKey",()=>Kn) | ||
n.d(S,"objectDeleteUndefined",()=>Hn) | ||
n.d(S,"objectSet",()=>qn) | ||
n.d(S,"objectDelete",()=>Kn) | ||
n.d(S,"objectMerge",()=>Qn) | ||
n.d(S,"objectMap",()=>Vn) | ||
n.d(S,"objectPickKey",()=>Hn) | ||
n.d(S,"objectFindKey",()=>Gn) | ||
n.d(S,"objectDeleteUndefined",()=>Yn) | ||
var O={} | ||
n.r(O) | ||
n.d(O,"isString",()=>Wn) | ||
n.d(O,"isBoolean",()=>Jn) | ||
n.d(O,"isNumber",()=>Xn) | ||
n.d(O,"isInteger",()=>Zn) | ||
n.d(O,"isObjectAlike",()=>tr) | ||
n.d(O,"isBasicObject",()=>er) | ||
n.d(O,"isObjectKey",()=>nr) | ||
n.d(O,"isObjectContain",()=>rr) | ||
n.d(O,"isBasicArray",()=>or) | ||
n.d(O,"isArrayLength",()=>sr) | ||
n.d(O,"isBasicFunction",()=>ar) | ||
n.d(O,"isPromiseAlike",()=>cr) | ||
n.d(O,"isOneOf",()=>ir) | ||
n.d(O,"isFunctionThrow",()=>dr) | ||
n.d(O,"isFunctionThrowAsync",()=>ur) | ||
n.d(O,"isStrictEqual",()=>lr) | ||
n.d(O,"isStringifyEqual",()=>hr) | ||
var L={} | ||
n.r(L) | ||
n.d(L,"isString",()=>Gn) | ||
n.d(L,"isBoolean",()=>Yn) | ||
n.d(L,"isNumber",()=>Jn) | ||
n.d(L,"isInteger",()=>Wn) | ||
n.d(L,"isObjectAlike",()=>Xn) | ||
n.d(L,"isBasicObject",()=>Zn) | ||
n.d(L,"isObjectKey",()=>tr) | ||
n.d(L,"isObjectContain",()=>er) | ||
n.d(L,"isBasicArray",()=>nr) | ||
n.d(L,"isArrayLength",()=>rr) | ||
n.d(L,"isBasicFunction",()=>or) | ||
n.d(L,"isPromiseAlike",()=>sr) | ||
n.d(L,"isOneOf",()=>ar) | ||
n.d(L,"isFunctionThrow",()=>cr) | ||
n.d(L,"isFunctionThrowAsync",()=>ir) | ||
n.d(L,"isStrictEqual",()=>dr) | ||
n.d(L,"isStringifyEqual",()=>ur) | ||
var O={} | ||
n.r(O) | ||
n.d(O,"describe",()=>lr) | ||
n.d(O,"percent",()=>hr) | ||
n.d(O,"mediaTime",()=>pr) | ||
n.d(O,"decimal",()=>yr) | ||
n.d(O,"time",()=>gr) | ||
n.d(O,"binary",()=>mr) | ||
n.d(O,"padTable",()=>vr) | ||
n.d(O,"prettyStringifyJSON",()=>xr) | ||
n.d(L,"describe",()=>pr) | ||
n.d(L,"percent",()=>fr) | ||
n.d(L,"mediaTime",()=>gr) | ||
n.d(L,"decimal",()=>mr) | ||
n.d(L,"time",()=>vr) | ||
n.d(L,"binary",()=>wr) | ||
n.d(L,"padTable",()=>xr) | ||
n.d(L,"prettyStringifyJSON",()=>Er) | ||
var T={} | ||
n.r(T) | ||
n.d(T,"string",()=>Ar) | ||
n.d(T,"boolean",()=>Mr) | ||
n.d(T,"number",()=>Sr) | ||
n.d(T,"integer",()=>Lr) | ||
n.d(T,"objectAlike",()=>Or) | ||
n.d(T,"basicObject",()=>Tr) | ||
n.d(T,"objectKey",()=>kr) | ||
n.d(T,"objectContain",()=>Dr) | ||
n.d(T,"basicArray",()=>Cr) | ||
n.d(T,"arrayLength",()=>jr) | ||
n.d(T,"basicFunction",()=>Rr) | ||
n.d(T,"promiseAlike",()=>$r) | ||
n.d(T,"string",()=>Sr) | ||
n.d(T,"boolean",()=>Or) | ||
n.d(T,"number",()=>Lr) | ||
n.d(T,"integer",()=>Tr) | ||
n.d(T,"objectAlike",()=>kr) | ||
n.d(T,"basicObject",()=>jr) | ||
n.d(T,"objectKey",()=>Dr) | ||
n.d(T,"objectContain",()=>Cr) | ||
n.d(T,"basicArray",()=>Rr) | ||
n.d(T,"arrayLength",()=>Pr) | ||
n.d(T,"basicFunction",()=>$r) | ||
n.d(T,"promiseAlike",()=>_r) | ||
n.d(T,"oneOf",()=>Br) | ||
n.d(T,"doThrow",()=>Pr) | ||
n.d(T,"doThrow",()=>Nr) | ||
n.d(T,"doNotThrow",()=>Fr) | ||
n.d(T,"doThrowAsync",()=>Nr) | ||
n.d(T,"doNotThrowAsync",()=>Ir) | ||
n.d(T,"strictEqual",()=>zr) | ||
n.d(T,"notStrictEqual",()=>Ur) | ||
n.d(T,"stringifyEqual",()=>qr) | ||
n.d(T,"notStringifyEqual",()=>Qr) | ||
n.d(T,"doThrowAsync",()=>Ir) | ||
n.d(T,"doNotThrowAsync",()=>zr) | ||
n.d(T,"strictEqual",()=>qr) | ||
n.d(T,"notStrictEqual",()=>Kr) | ||
n.d(T,"stringifyEqual",()=>Qr) | ||
n.d(T,"notStringifyEqual",()=>Vr) | ||
var k={} | ||
n.r(k) | ||
n.d(k,"createStateStore",()=>Vr) | ||
n.d(k,"createStateStoreLite",()=>Kr) | ||
n.d(k,"createStateStoreEnhanced",()=>Hr) | ||
n.d(k,"toReduxStore",()=>Gr) | ||
n.d(k,"reducerFromMap",()=>Yr) | ||
n.d(k,"createEntryEnhancer",()=>Jr) | ||
n.d(k,"createStoreStateSyncReducer",()=>Wr) | ||
n.d(k,"createStateStore",()=>Hr) | ||
n.d(k,"createStateStoreLite",()=>Gr) | ||
n.d(k,"createStateStoreEnhanced",()=>Yr) | ||
n.d(k,"toReduxStore",()=>Wr) | ||
n.d(k,"reducerFromMap",()=>Jr) | ||
n.d(k,"createEntryEnhancer",()=>Xr) | ||
n.d(k,"createStoreStateSyncReducer",()=>Zr) | ||
var j={} | ||
n.r(j) | ||
n.d(j,"isArrayShallowEqual",()=>eo) | ||
n.d(j,"isCompactArrayShallowEqual",()=>no) | ||
n.d(j,"isObjectShallowEqual",()=>to) | ||
n.d(j,"transformCache",()=>ro) | ||
n.d(j,"Array",()=>M) | ||
n.d(j,"Object",()=>S) | ||
n.d(j,"StateStore",()=>k) | ||
var D={} | ||
n.r(D) | ||
n.d(D,"isArrayShallowEqual",()=>Zr) | ||
n.d(D,"isCompactArrayShallowEqual",()=>to) | ||
n.d(D,"isObjectShallowEqual",()=>Xr) | ||
n.d(D,"transformCache",()=>eo) | ||
n.d(D,"Array",()=>M) | ||
n.d(D,"Object",()=>S) | ||
n.d(D,"StateStore",()=>k) | ||
n.d(D,"addAbs",()=>Ze) | ||
n.d(D,"clamp",()=>en) | ||
n.d(D,"euclideanModulo",()=>tn) | ||
n.d(D,"lerp",()=>rn) | ||
n.d(D,"roundFloat",()=>Xe) | ||
n.d(D,"smoothstep",()=>nn) | ||
n.d(D,"easeInCirc",()=>So) | ||
n.d(D,"easeInCubic",()=>io) | ||
n.d(D,"easeInExpo",()=>Eo) | ||
n.d(D,"easeInOutCirc",()=>Lo) | ||
n.d(D,"easeInOutCubic",()=>lo) | ||
n.d(D,"easeInOutExpo",()=>Mo) | ||
n.d(D,"easeInOutQuad",()=>co) | ||
n.d(D,"easeInOutQuart",()=>fo) | ||
n.d(D,"easeInOutQuint",()=>mo) | ||
n.d(D,"easeInOutSine",()=>bo) | ||
n.d(D,"easeInQuad",()=>so) | ||
n.d(D,"easeInQuart",()=>ho) | ||
n.d(D,"easeInQuint",()=>yo) | ||
n.d(D,"easeInSine",()=>wo) | ||
n.d(D,"easeOutCirc",()=>Oo) | ||
n.d(D,"easeOutCubic",()=>uo) | ||
n.d(D,"easeOutExpo",()=>Ao) | ||
n.d(D,"easeOutQuad",()=>ao) | ||
n.d(D,"easeOutQuart",()=>po) | ||
n.d(D,"easeOutQuint",()=>go) | ||
n.d(D,"easeOutSine",()=>xo) | ||
n.d(D,"linear",()=>oo) | ||
n.d(D,"getRandomArrayBuffer",()=>To.a) | ||
n.d(D,"getRandomId",()=>To.b) | ||
n.d(D,"getRandomInt",()=>To.c) | ||
n.d(D,"getRandomIntList",()=>To.d) | ||
n.d(D,"getSample",()=>ko) | ||
n.d(D,"getSampleRange",()=>jo) | ||
n.d(D,"getSampleRate",()=>Do) | ||
var C={} | ||
n.r(C) | ||
n.d(C,"addAbs",()=>We) | ||
n.d(C,"clamp",()=>Ze) | ||
n.d(C,"euclideanModulo",()=>Xe) | ||
n.d(C,"lerp",()=>en) | ||
n.d(C,"roundFloat",()=>Je) | ||
n.d(C,"smoothstep",()=>tn) | ||
n.d(C,"easeInCirc",()=>Ao) | ||
n.d(C,"easeInCubic",()=>ao) | ||
n.d(C,"easeInExpo",()=>xo) | ||
n.d(C,"easeInOutCirc",()=>So) | ||
n.d(C,"easeInOutCubic",()=>io) | ||
n.d(C,"easeInOutExpo",()=>Eo) | ||
n.d(C,"easeInOutQuad",()=>so) | ||
n.d(C,"easeInOutQuart",()=>ho) | ||
n.d(C,"easeInOutQuint",()=>yo) | ||
n.d(C,"easeInOutSine",()=>wo) | ||
n.d(C,"easeInQuad",()=>ro) | ||
n.d(C,"easeInQuart",()=>uo) | ||
n.d(C,"easeInQuint",()=>fo) | ||
n.d(C,"easeInSine",()=>mo) | ||
n.d(C,"easeOutCirc",()=>Mo) | ||
n.d(C,"easeOutCubic",()=>co) | ||
n.d(C,"easeOutExpo",()=>bo) | ||
n.d(C,"easeOutQuad",()=>oo) | ||
n.d(C,"easeOutQuart",()=>lo) | ||
n.d(C,"easeOutQuint",()=>po) | ||
n.d(C,"easeOutSine",()=>vo) | ||
n.d(C,"linear",()=>no) | ||
n.d(C,"getRandomArrayBuffer",()=>Lo.a) | ||
n.d(C,"getRandomId",()=>Lo.b) | ||
n.d(C,"getRandomInt",()=>Lo.c) | ||
n.d(C,"getRandomIntList",()=>Lo.d) | ||
n.d(C,"getSample",()=>Oo) | ||
n.d(C,"getSampleRange",()=>To) | ||
n.d(C,"getSampleRate",()=>ko) | ||
var j={} | ||
n.r(j) | ||
n.d(j,"CLOCK_PER_SECOND",()=>Do) | ||
n.d(j,"CLOCK_TO_SECOND",()=>Co) | ||
n.d(j,"clock",()=>jo) | ||
n.d(j,"getTimestamp",()=>Ro) | ||
n.d(j,"setTimeoutAsync",()=>$o) | ||
n.d(j,"requestFrameUpdate",()=>Bo) | ||
n.d(j,"cancelFrameUpdate",()=>Po) | ||
n.d(j,"createTimer",()=>Fo) | ||
n.d(j,"createStepper",()=>No) | ||
n.d(C,"CLOCK_PER_SECOND",()=>Co) | ||
n.d(C,"CLOCK_TO_SECOND",()=>Ro) | ||
n.d(C,"clock",()=>Po) | ||
n.d(C,"getTimestamp",()=>$o) | ||
n.d(C,"setTimeoutAsync",()=>_o) | ||
n.d(C,"requestFrameUpdate",()=>Bo) | ||
n.d(C,"cancelFrameUpdate",()=>No) | ||
n.d(C,"createTimer",()=>Fo) | ||
n.d(C,"createStepper",()=>Io) | ||
var R={} | ||
n.r(R) | ||
n.d(R,"debounce",()=>Io) | ||
n.d(R,"throttle",()=>_o) | ||
n.d(R,"lossyAsync",()=>zo) | ||
n.d(R,"withDelayArgvQueue",()=>Uo) | ||
n.d(R,"withRepeat",()=>qo) | ||
n.d(R,"withRepeatAsync",()=>Qo) | ||
n.d(R,"withRetry",()=>Vo) | ||
n.d(R,"withRetryAsync",()=>Ko) | ||
n.d(R,"withTimeoutAsync",()=>Ho) | ||
n.d(R,"withTimeoutPromise",()=>Go) | ||
n.d(R,"createInsideOutPromise",()=>Yo) | ||
n.d(R,"debounce",()=>zo) | ||
n.d(R,"throttle",()=>Uo) | ||
n.d(R,"lossyAsync",()=>qo) | ||
n.d(R,"withDelayArgvQueue",()=>Ko) | ||
n.d(R,"withRepeat",()=>Qo) | ||
n.d(R,"withRepeatAsync",()=>Vo) | ||
n.d(R,"withRetry",()=>Ho) | ||
n.d(R,"withRetryAsync",()=>Go) | ||
n.d(R,"withTimeoutAsync",()=>Yo) | ||
n.d(R,"withTimeoutPromise",()=>Wo) | ||
n.d(R,"createInsideOutPromise",()=>Jo) | ||
var P={} | ||
n.r(P) | ||
n.d(P,"createAsyncTaskQueue",()=>Zo) | ||
var $={} | ||
n.r($) | ||
n.d($,"createAsyncTaskQueue",()=>Wo) | ||
n.d($,"createAsyncTaskLane",()=>ts) | ||
n.d($,"selectMinLoadLane",()=>es) | ||
var _={} | ||
n.r(_) | ||
n.d(_,"createAsyncTaskRunner",()=>ns) | ||
n.d(_,"createAsyncTaskRunnerCluster",()=>rs) | ||
n.d(_,"selectMinLoadRunner",()=>os) | ||
var B={} | ||
n.r(B) | ||
n.d(B,"createAsyncTaskLane",()=>Xo) | ||
n.d(B,"selectMinLoadLane",()=>Zo) | ||
var P={} | ||
n.r(P) | ||
n.d(P,"createAsyncTaskRunner",()=>ts) | ||
n.d(P,"createAsyncTaskRunnerCluster",()=>es) | ||
n.d(P,"selectMinLoadRunner",()=>ns) | ||
n.d(B,"getBlockBar",()=>cs) | ||
n.d(B,"getBlockChart",()=>is) | ||
var N={} | ||
n.r(N) | ||
n.d(N,"concatKeyFrag",()=>ds) | ||
n.d(N,"reduceKeySelector",()=>us) | ||
n.d(N,"createMultiKeySwitch",()=>ls) | ||
var F={} | ||
n.r(F) | ||
n.d(F,"getBlockBar",()=>ss) | ||
n.d(F,"getBlockChart",()=>as) | ||
var N={} | ||
n.r(N) | ||
n.d(N,"concatKeyFrag",()=>cs) | ||
n.d(N,"reduceKeySelector",()=>is) | ||
n.d(N,"createMultiKeySwitch",()=>ds) | ||
n.d(F,"compareString",()=>hs) | ||
n.d(F,"compareStringLocale",()=>ps) | ||
n.d(F,"compareStringWithNumber",()=>fs) | ||
var I={} | ||
n.r(I) | ||
n.d(I,"getLevenshteinDistance",()=>hs) | ||
var _={} | ||
n.r(_) | ||
n.d(_,"DEFAULT_MIME",()=>fs) | ||
n.d(_,"BASIC_EXTENSION_MAP",()=>ps) | ||
n.d(_,"getMIMETypeFromFileName",()=>gs) | ||
n.d(I,"createKeyTree",()=>vs) | ||
var z={} | ||
n.r(z) | ||
n.d(z,"parseRouteToMap",()=>vs) | ||
n.d(z,"findRouteFromMap",()=>ws) | ||
n.d(z,"appendRouteMap",()=>xs) | ||
n.d(z,"createRouteMap",()=>bs) | ||
n.d(z,"parseRouteUrl",()=>Es) | ||
n.d(z,"getRouteParamAny",()=>As) | ||
n.d(z,"getRouteParam",()=>Ms) | ||
n.d(z,"getLevenshteinDistance",()=>bs) | ||
var U={} | ||
n.r(U) | ||
n.d(U,"compareString",()=>Ss) | ||
n.d(U,"compareStringLocale",()=>Ls) | ||
n.d(U,"compareStringWithNumber",()=>Os) | ||
n.d(U,"DEFAULT_MIME",()=>Es) | ||
n.d(U,"BASIC_EXTENSION_MAP",()=>As) | ||
n.d(U,"getMIMETypeFromFileName",()=>Ss) | ||
var q={} | ||
n.r(q) | ||
n.d(q,"parseSemVer",()=>Cs) | ||
n.d(q,"compareSemVer",()=>js) | ||
n.d(q,"createPatchKit",()=>Os) | ||
n.d(q,"toObjectPatchKit",()=>Ls) | ||
n.d(q,"toArrayWithKeyPatchKit",()=>Ts) | ||
var K={} | ||
n.r(K) | ||
n.d(K,"parseRouteToMap",()=>js) | ||
n.d(K,"findRouteFromMap",()=>Ds) | ||
n.d(K,"appendRouteMap",()=>Cs) | ||
n.d(K,"createRouteMap",()=>Rs) | ||
n.d(K,"parseRouteUrl",()=>Ps) | ||
n.d(K,"getRouteParamAny",()=>$s) | ||
n.d(K,"getRouteParam",()=>_s) | ||
var Q={} | ||
n.r(Q) | ||
n.d(Q,"verifyOption",()=>Ps) | ||
n.d(Q,"verifyCheckCode",()=>Fs) | ||
n.d(Q,"verifyParsedCheckCode",()=>Ns) | ||
n.d(Q,"generateLookupData",()=>Is) | ||
n.d(Q,"generateCheckCode",()=>_s) | ||
n.d(Q,"packCheckCode",()=>zs) | ||
n.d(Q,"parseCheckCode",()=>Us) | ||
n.d(Q,"packDataArrayBuffer",()=>qs) | ||
n.d(Q,"parseDataArrayBuffer",()=>Qs) | ||
n.d(Q,"parseSemVer",()=>Ns) | ||
n.d(Q,"compareSemVer",()=>Fs) | ||
var V={} | ||
n.r(V) | ||
n.d(V,"createUpdater",()=>Vs) | ||
n.d(V,"createUpdateLoop",()=>Ks) | ||
var K={} | ||
n.r(K) | ||
n.d(K,"AsyncTaskLane",()=>B) | ||
n.d(K,"AsyncTaskQueue",()=>$) | ||
n.d(K,"AsyncTaskRunner",()=>P) | ||
n.d(K,"BlockChart",()=>F) | ||
n.d(K,"Event",()=>a) | ||
n.d(K,"KeySelector",()=>N) | ||
n.d(K,"LevenshteinDistance",()=>I) | ||
n.d(K,"MIME",()=>_) | ||
n.d(K,"RouteMap",()=>z) | ||
n.d(K,"SemVer",()=>q) | ||
n.d(K,"TimedLookup",()=>Q) | ||
n.d(K,"UpdateLoop",()=>V) | ||
n.d(V,"verifyOption",()=>qs) | ||
n.d(V,"verifyCheckCode",()=>Ks) | ||
n.d(V,"verifyParsedCheckCode",()=>Qs) | ||
n.d(V,"generateLookupData",()=>Vs) | ||
n.d(V,"generateCheckCode",()=>Hs) | ||
n.d(V,"packCheckCode",()=>Gs) | ||
n.d(V,"parseCheckCode",()=>Ys) | ||
n.d(V,"packDataArrayBuffer",()=>Ws) | ||
n.d(V,"parseDataArrayBuffer",()=>Js) | ||
var H={} | ||
n.r(H) | ||
n.d(H,"objectMergeDeep",()=>Hs) | ||
n.d(H,"objectSortKey",()=>Gs) | ||
n.d(H,"createUpdater",()=>Xs) | ||
n.d(H,"createUpdateLoop",()=>Zs) | ||
var G={} | ||
n.r(G) | ||
n.d(G,"Object",()=>H) | ||
n.d(G,"AsyncTaskLane",()=>$) | ||
n.d(G,"AsyncTaskQueue",()=>P) | ||
n.d(G,"AsyncTaskRunner",()=>_) | ||
n.d(G,"BlockChart",()=>B) | ||
n.d(G,"Event",()=>a) | ||
n.d(G,"KeySelector",()=>N) | ||
n.d(G,"KeyTree",()=>I) | ||
n.d(G,"LevenshteinDistance",()=>z) | ||
n.d(G,"MIME",()=>U) | ||
n.d(G,"Patch",()=>q) | ||
n.d(G,"RouteMap",()=>K) | ||
n.d(G,"SemVer",()=>Q) | ||
n.d(G,"TimedLookup",()=>V) | ||
n.d(G,"UpdateLoop",()=>H) | ||
var Y={} | ||
n.r(Y) | ||
n.d(Y,"indentLine",()=>Js) | ||
n.d(Y,"indentList",()=>Ws) | ||
n.d(Y,"autoEllipsis",()=>Xs) | ||
n.d(Y,"splitCamelCase",()=>ea) | ||
n.d(Y,"joinCamelCase",()=>oa) | ||
n.d(Y,"splitSnakeCase",()=>na) | ||
n.d(Y,"joinSnakeCase",()=>sa) | ||
n.d(Y,"splitKebabCase",()=>ra) | ||
n.d(Y,"joinKebabCase",()=>aa) | ||
n.d(Y,"escapeHTML",()=>la) | ||
n.d(Y,"unescapeHTML",()=>ya) | ||
n.d(Y,"removeInvalidCharXML",()=>ma) | ||
n.d(Y,"objectMergeDeep",()=>ta) | ||
n.d(Y,"objectSortKey",()=>ea) | ||
var W={} | ||
n.r(W) | ||
n.d(W,"Object",()=>Y) | ||
var J={} | ||
n.r(J) | ||
n.d(J,"Data",()=>y) | ||
n.d(J,"Geometry",()=>A) | ||
n.d(J,"Immutable",()=>D) | ||
n.d(J,"Math",()=>C) | ||
n.d(J,"Module",()=>K) | ||
n.d(J,"Mutable",()=>G) | ||
n.d(J,"Check",()=>L) | ||
n.d(J,"Compare",()=>U) | ||
n.d(J,"Error",()=>u) | ||
n.d(J,"Format",()=>O) | ||
n.d(J,"Function",()=>R) | ||
n.d(J,"String",()=>Y) | ||
n.d(J,"Time",()=>j) | ||
n.d(J,"Verify",()=>T) | ||
var W={} | ||
n.r(W) | ||
n.d(W,"Blob",()=>va) | ||
n.d(W,"parseBlobAsText",()=>ba) | ||
n.d(W,"parseBlobAsDataURL",()=>Ea) | ||
n.d(W,"parseBlobAsArrayBuffer",()=>Aa) | ||
n.d(J,"indentLine",()=>ra) | ||
n.d(J,"indentList",()=>oa) | ||
n.d(J,"autoEllipsis",()=>sa) | ||
n.d(J,"splitCamelCase",()=>ia) | ||
n.d(J,"joinCamelCase",()=>la) | ||
n.d(J,"splitSnakeCase",()=>da) | ||
n.d(J,"joinSnakeCase",()=>ha) | ||
n.d(J,"splitKebabCase",()=>ua) | ||
n.d(J,"joinKebabCase",()=>pa) | ||
n.d(J,"escapeHTML",()=>va) | ||
n.d(J,"unescapeHTML",()=>Ea) | ||
n.d(J,"removeInvalidCharXML",()=>Ma) | ||
var X={} | ||
n.r(X) | ||
n.d(X,"packBlobPacket",()=>Sa) | ||
n.d(X,"parseBlobPacket",()=>La) | ||
n.d(X,"Data",()=>y) | ||
n.d(X,"Geometry",()=>A) | ||
n.d(X,"Immutable",()=>j) | ||
n.d(X,"Math",()=>D) | ||
n.d(X,"Module",()=>G) | ||
n.d(X,"Mutable",()=>W) | ||
n.d(X,"Check",()=>O) | ||
n.d(X,"Compare",()=>F) | ||
n.d(X,"Error",()=>u) | ||
n.d(X,"Format",()=>L) | ||
n.d(X,"Function",()=>R) | ||
n.d(X,"String",()=>J) | ||
n.d(X,"Time",()=>C) | ||
n.d(X,"Verify",()=>T) | ||
var Z={} | ||
n.r(Z) | ||
n.d(Z,"Blob",()=>W) | ||
n.d(Z,"BlobPacket",()=>X) | ||
n.d(Z,"Blob",()=>Sa) | ||
n.d(Z,"parseBlobAsText",()=>Ta) | ||
n.d(Z,"parseBlobAsDataURL",()=>ka) | ||
n.d(Z,"parseBlobAsArrayBuffer",()=>ja) | ||
var tt={} | ||
n.r(tt) | ||
n.d(tt,"createKeyCommandHub",()=>Oa) | ||
n.d(tt,"packBlobPacket",()=>Ca) | ||
n.d(tt,"parseBlobPacket",()=>Ra) | ||
var et={} | ||
n.r(et) | ||
n.d(et,"POINTER_EVENT_TYPE",()=>Ta) | ||
n.d(et,"applyPointerEventListener",()=>ka) | ||
n.d(et,"ENHANCED_POINTER_EVENT_TYPE",()=>Da) | ||
n.d(et,"applyEnhancedPointerEventListener",()=>Ca) | ||
n.d(et,"Blob",()=>Z) | ||
n.d(et,"BlobPacket",()=>tt) | ||
var nt={} | ||
n.r(nt) | ||
n.d(nt,"KeyCommand",()=>tt) | ||
n.d(nt,"PointerEvent",()=>et) | ||
n.d(nt,"createKeyCommandHub",()=>Pa) | ||
var rt={} | ||
n.r(rt) | ||
n.d(rt,"createHistoryStateStore",()=>ja) | ||
n.d(rt,"POINTER_EVENT_TYPE",()=>$a) | ||
n.d(rt,"applyPointerEventListener",()=>_a) | ||
n.d(rt,"ENHANCED_POINTER_EVENT_TYPE",()=>Ba) | ||
n.d(rt,"applyEnhancedPointerEventListener",()=>Na) | ||
var ot={} | ||
n.r(ot) | ||
n.d(ot,"createSyncStateStorage",()=>Ra) | ||
n.d(ot,"KeyCommand",()=>nt) | ||
n.d(ot,"PointerEvent",()=>rt) | ||
var st={} | ||
n.r(st) | ||
n.d(st,"HistoryStateStore",()=>rt) | ||
n.d(st,"StateStorage",()=>ot) | ||
n.d(st,"createHistoryStateStore",()=>Fa) | ||
var at={} | ||
n.r(at) | ||
n.d(at,"throttleByAnimationFrame",()=>$a) | ||
n.d(at,"applyDragFileListListener",()=>Pa) | ||
n.d(at,"getPathElementList",()=>Fa) | ||
n.d(at,"getElementAtViewport",()=>Na) | ||
n.d(at,"createSyncStateStorage",()=>Ia) | ||
var ct={} | ||
n.r(ct) | ||
n.d(ct,"fetchLikeRequest",()=>qa) | ||
n.d(ct,"HistoryStateStore",()=>st) | ||
n.d(ct,"StateStorage",()=>at) | ||
var it={} | ||
n.r(it) | ||
n.d(it,"loadText",()=>nc) | ||
n.d(it,"loadImage",()=>rc) | ||
n.d(it,"loadScript",()=>oc) | ||
n.d(it,"createDownload",()=>sc) | ||
n.d(it,"createDownloadWithBlob",()=>ac) | ||
n.d(it,"createDownloadWithString",()=>cc) | ||
n.d(it,"createDownloadWithObject",()=>ic) | ||
n.d(it,"saveArrayBufferCache",()=>dc) | ||
n.d(it,"loadArrayBufferCache",()=>uc) | ||
n.d(it,"deleteArrayBufferCache",()=>lc) | ||
n.d(it,"throttleByAnimationFrame",()=>za) | ||
n.d(it,"applyDragFileListListener",()=>qa) | ||
n.d(it,"getPathElementList",()=>Ka) | ||
n.d(it,"getElementAtViewport",()=>Qa) | ||
var dt={} | ||
n.r(dt) | ||
n.d(dt,"Data",()=>Z) | ||
n.d(dt,"Input",()=>nt) | ||
n.d(dt,"Module",()=>st) | ||
n.d(dt,"DOM",()=>at) | ||
n.d(dt,"Net",()=>ct) | ||
n.d(dt,"Resource",()=>it) | ||
const ut=()=>{try{const t=new Uint8Array(new ArrayBuffer(2)) | ||
n.d(dt,"fetchLikeRequest",()=>Wa) | ||
var ut={} | ||
n.r(ut) | ||
n.d(ut,"loadText",()=>dc) | ||
n.d(ut,"loadImage",()=>uc) | ||
n.d(ut,"loadScript",()=>lc) | ||
n.d(ut,"createDownload",()=>hc) | ||
n.d(ut,"createDownloadWithBlob",()=>pc) | ||
n.d(ut,"createDownloadWithString",()=>fc) | ||
n.d(ut,"createDownloadWithObject",()=>yc) | ||
n.d(ut,"saveArrayBufferCache",()=>gc) | ||
n.d(ut,"loadArrayBufferCache",()=>mc) | ||
n.d(ut,"deleteArrayBufferCache",()=>vc) | ||
var lt={} | ||
n.r(lt) | ||
n.d(lt,"Data",()=>et) | ||
n.d(lt,"Input",()=>ot) | ||
n.d(lt,"Module",()=>ct) | ||
n.d(lt,"DOM",()=>it) | ||
n.d(lt,"Net",()=>dt) | ||
n.d(lt,"Resource",()=>ut) | ||
const ht=()=>{try{const t=new Uint8Array(new ArrayBuffer(2)) | ||
const e=new Uint16Array(t.buffer) | ||
@@ -580,7 +593,7 @@ t[0]=161 | ||
if(41394===e[0])return"big"}catch(t){console.error("[getEndianness]",t)}return"unknown"} | ||
const lt=(t,...e)=>{if(!t){console.error("[ASSERT]",...e) | ||
const pt=(t,...e)=>{if(!t){console.error("[ASSERT]",...e) | ||
throw new Error(`[ASSERT] ${e.join(", ")}`)}} | ||
var ht=n(0) | ||
var ft=n(2) | ||
const pt=(t,e)=>{if(t===e)return!0 | ||
var ft=n(0) | ||
var yt=n(2) | ||
const gt=(t,e)=>{if(t===e)return!0 | ||
if(t.byteLength!==e.byteLength)return!1 | ||
@@ -591,3 +604,3 @@ const n=new Uint8Array(t) | ||
return!0} | ||
const yt=(t=[])=>{const e=new Uint8Array(t.reduce((t,e)=>t+e.byteLength,0)) | ||
const mt=(t=[])=>{const e=new Uint8Array(t.reduce((t,e)=>t+e.byteLength,0)) | ||
let n=0 | ||
@@ -598,8 +611,8 @@ t.forEach(t=>{const{byteLength:r}=t | ||
return e.buffer} | ||
const gt=(t,e,n=0)=>e.map(e=>{const r=t.slice(n,n+e) | ||
const vt=(t,e,n=0)=>e.map(e=>{const r=t.slice(n,n+e) | ||
n+=e | ||
return r}) | ||
const mt=Uint8Array.of(0) | ||
const vt=Uint8Array.of(255,255) | ||
const wt=t=>{const e=yt([t.byteLength%2?mt:vt,t]) | ||
const wt=Uint8Array.of(0) | ||
const xt=Uint8Array.of(255,255) | ||
const bt=t=>{const e=mt([t.byteLength%2?wt:xt,t]) | ||
const n=new DataView(e) | ||
@@ -609,29 +622,29 @@ const r=[] | ||
return r.join("")} | ||
const xt=(t="")=>{const e=new DataView(new ArrayBuffer(2*t.length)) | ||
const Et=(t="")=>{const e=new DataView(new ArrayBuffer(2*t.length)) | ||
for(let n=0,r=t.length;n<r;n++)e.setUint16(2*n,t.charCodeAt(n),!1) | ||
return e.buffer.slice(0===e.getUint8(0)?mt.byteLength:vt.byteLength)} | ||
const bt=4294967295 | ||
const Et=4 | ||
const At=new ArrayBuffer(0) | ||
const Mt=t=>{const e=t.byteLength | ||
if(e>bt)throw new Error(`headerArrayBuffer exceeds max size ${bt}, get: ${e}`) | ||
const n=new DataView(new ArrayBuffer(Et)) | ||
return e.buffer.slice(0===e.getUint8(0)?wt.byteLength:xt.byteLength)} | ||
const At=4294967295 | ||
const Mt=4 | ||
const St=new ArrayBuffer(0) | ||
const Ot=t=>{const e=t.byteLength | ||
if(e>At)throw new Error(`headerArrayBuffer exceeds max size ${At}, get: ${e}`) | ||
const n=new DataView(new ArrayBuffer(Mt)) | ||
n.setUint32(0,e,!1) | ||
return[n.buffer,t]} | ||
const St=t=>{const e=new DataView(t.slice(0,Et)).getUint32(0,!1) | ||
return[t.slice(Et,Et+e),Et+e]} | ||
const Lt=(t,e=At)=>yt([...Mt(xt(t)),e]) | ||
const Ot=t=>{const[e,n]=St(t) | ||
return[wt(e),t.slice(n)]} | ||
const Tt=(t=[])=>{const e=new DataView(new ArrayBuffer(4*t.length)) | ||
const Lt=t=>{const e=new DataView(t.slice(0,Mt)).getUint32(0,!1) | ||
return[t.slice(Mt,Mt+e),Mt+e]} | ||
const Tt=(t,e=St)=>mt([...Ot(Et(t)),e]) | ||
const kt=t=>{const[e,n]=Lt(t) | ||
return[bt(e),t.slice(n)]} | ||
const jt=(t=[])=>{const e=new DataView(new ArrayBuffer(4*t.length)) | ||
t.forEach(({byteLength:t},n)=>e.setUint32(4*n,t,!1)) | ||
return yt([...Mt(e.buffer),...t])} | ||
const kt=t=>{const[e,n]=St(t) | ||
return mt([...Ot(e.buffer),...t])} | ||
const Dt=t=>{const[e,n]=Lt(t) | ||
const r=new DataView(e) | ||
const o=[] | ||
for(let t=0,e=r.byteLength/4;t<e;t++)o.push(r.getUint32(4*t,!1)) | ||
return gt(t,o,n)} | ||
const Dt=()=>{const t=new Set | ||
return vt(t,o,n)} | ||
const Ct=()=>{const t=new Set | ||
return{clear:()=>t.clear(),subscribe:e=>{t.add(e)},unsubscribe:e=>{t.delete(e)},send:e=>t.forEach(t=>t(e))}} | ||
const Ct=()=>{const t=new Map | ||
const Rt=()=>{const t=new Map | ||
return{setMap:t,clear:()=>t.clear(),on:(e,n)=>{const r=t.get(e) | ||
@@ -641,9 +654,9 @@ r?r.add(n):t.set(e,new Set([n]))},off:(e,n)=>{const r=t.get(e) | ||
r&&0===r.size&&t.delete(e)}}} | ||
const jt=()=>{const{setMap:t,clear:e,on:n,off:r}=Ct() | ||
const Pt=()=>{const{setMap:t,clear:e,on:n,off:r}=Rt() | ||
return{clear:e,dispatchEvent:e=>{const n=t.get(e.type) | ||
n&&n.forEach(t=>t(e))},addEventListener:n,removeEventListener:r}} | ||
const Rt=()=>{const{setMap:t,clear:e,on:n,off:r}=Ct() | ||
const $t=()=>{const{setMap:t,clear:e,on:n,off:r}=Rt() | ||
return{clear:e,emit:(e,...n)=>{const r=t.get(e) | ||
r&&r.forEach(t=>t(...n))},on:n,off:r,addListener:n,removeListener:r,removeAllListeners:(...e)=>{e.length?e.forEach(e=>t.delete(e)):t.clear()}}} | ||
const $t=()=>{let t,e,n | ||
const _t=()=>{let t,e,n | ||
const r=()=>{t=Bt(null) | ||
@@ -708,7 +721,7 @@ e=Bt(null) | ||
const Bt=(t,e=null,n=null)=>({value:t,prev:e,next:n}) | ||
const Pt=(t,e,n,r)=>Object.assign({},Bt(e),{key:t,size:n,expireAt:r}) | ||
const Ft=({valueSizeSumMax:t,valueSizeSingleMax:e=Math.max(.05*t,1),eventHub:n=Dt()})=>{const r=Boolean(n) | ||
const Nt=(t,e,n,r)=>Object.assign({},Bt(e),{key:t,size:n,expireAt:r}) | ||
const Ft=({valueSizeSumMax:t,valueSizeSingleMax:e=Math.max(.05*t,1),eventHub:n=Ct()})=>{const r=Boolean(n) | ||
const{clear:o,subscribe:s,unsubscribe:a,send:c}=r?n:{} | ||
const i=new Map | ||
const d=$t() | ||
const d=_t() | ||
let u=0 | ||
@@ -726,3 +739,3 @@ const l=t=>{i.set(t.key,t) | ||
if(!(o>e)){for(;o+u>t;)h(d.getTail().prev) | ||
l(Pt(n,r,o,s))}},get:(t,e=Date.now())=>{const n=i.get(t) | ||
l(Nt(n,r,o,s))}},get:(t,e=Date.now())=>{const n=i.get(t) | ||
if(n){if(n.expireAt<=e)return h(n) | ||
@@ -737,5 +750,5 @@ d.setFirst(n) | ||
d.forEachReverse(({key:e,value:n,size:r,expireAt:o})=>t.push({key:e,value:n,size:r,expireAt:o})) | ||
return t},parseList:(t,e=Date.now())=>t.forEach(({key:t,value:n,size:r,expireAt:o})=>{const s=Pt(t,n,r,o) | ||
return t},parseList:(t,e=Date.now())=>t.forEach(({key:t,value:n,size:r,expireAt:o})=>{const s=Nt(t,n,r,o) | ||
s.expireAt<=e?h(s):l(s)})}} | ||
const Nt=()=>{const t=new Map | ||
const It=()=>{const t=new Map | ||
return{clear:()=>{t.clear()},add:(e,n)=>{let r=t.get(e) | ||
@@ -751,11 +764,11 @@ if(void 0===r){r=[] | ||
return Boolean(r&&r.includes(n))},hasList:e=>t.has(e),forEach:e=>{t.forEach((t,n)=>t.forEach(t=>e(t,n)))},forEachList:e=>{t.forEach(e)}}} | ||
const It=t=>{console.warn(t) | ||
const zt=t=>{console.warn(t) | ||
throw t} | ||
const _t=(t,e,...n)=>{try{return t[e](...n)}catch(t){}} | ||
const zt=(t,...e)=>{let n,r | ||
const Ut=(t,e,...n)=>{try{return t[e](...n)}catch(t){}} | ||
const qt=(t,...e)=>{let n,r | ||
try{n=t(...e)}catch(t){r=t||new Error}return{result:n,error:r}} | ||
const Ut=async(t,...e)=>{let n,r | ||
const Kt=async(t,...e)=>{let n,r | ||
try{n=await t(...e)}catch(t){r=t||new Error}return{result:n,error:r}} | ||
const qt=()=>{} | ||
const Qt=({onError:t,doSave:e,beforeSave:n=qt,afterSave:r=qt})=>{let o=[] | ||
const Qt=()=>{} | ||
const Vt=({onError:t,doSave:e,beforeSave:n=Qt,afterSave:r=Qt})=>{let o=[] | ||
let s=!1 | ||
@@ -768,3 +781,3 @@ let a={} | ||
s=!0 | ||
const{error:i}=await Ut(e,t,c) | ||
const{error:i}=await Kt(e,t,c) | ||
s=!1 | ||
@@ -774,3 +787,3 @@ a={} | ||
r()})().catch(t)},filter:t=>{o=o.filter(t)},getLength:()=>o.length,getIsSaving:()=>s,getSavingState:()=>a}} | ||
const Vt=()=>{const t=new Map | ||
const Ht=()=>{const t=new Map | ||
const e=(e,n)=>{const r=t.get(e) | ||
@@ -785,5 +798,5 @@ return r&&r.get(n)} | ||
r&&r.forEach(n)}}} | ||
const Kt=(t,e=Vt())=>{t.forEach((t,n)=>e.add(t,n)) | ||
const Gt=(t,e=Ht())=>{t.forEach((t,n)=>e.add(t,n)) | ||
return e} | ||
const Ht=()=>{const t=new Map | ||
const Yt=()=>{const t=new Map | ||
const e=(e,n)=>{void 0===n&&(n=!t.get(e)) | ||
@@ -794,3 +807,3 @@ t.set(e,n) | ||
return e} | ||
const Gt=t=>{const e=(e,n)=>{const r=t(n) | ||
const Wt=t=>{const e=(e,n)=>{const r=t(n) | ||
Array.isArray(r)&&e.unshift(...r)} | ||
@@ -802,3 +815,3 @@ return(t,n)=>{let r | ||
e(o,r)}}} | ||
const Yt=t=>{const e=async(e,n)=>{const r=await t(n) | ||
const Jt=t=>{const e=async(e,n)=>{const r=await t(n) | ||
Array.isArray(r)&&e.unshift(...r)} | ||
@@ -810,3 +823,3 @@ return async(t,n)=>{let r | ||
await e(o,r)}}} | ||
const Jt=t=>{const e=(e,n)=>{const r=t(n) | ||
const Xt=t=>{const e=(e,n)=>{const r=t(n) | ||
Array.isArray(r)&&e.push(...r)} | ||
@@ -818,3 +831,3 @@ return(t,n)=>{let r | ||
e(o,r)}}} | ||
const Wt=t=>{const e=async(e,n)=>{const r=await t(n) | ||
const Zt=t=>{const e=async(e,n)=>{const r=await t(n) | ||
Array.isArray(r)&&e.push(...r)} | ||
@@ -826,3 +839,3 @@ return async(t,n)=>{let r | ||
await e(o,r)}}} | ||
const Xt=t=>{const e=(e,n)=>{const r=t(n) | ||
const te=t=>{const e=(e,n)=>{const r=t(n) | ||
return Boolean(Array.isArray(r)&&e.push([n,r]))} | ||
@@ -835,3 +848,3 @@ return(t,n)=>{const r=[] | ||
if(!e(r,t)&&n(t))return t}}}} | ||
const Zt=t=>{const e=async(e,n)=>{const r=await t(n) | ||
const ee=t=>{const e=async(e,n)=>{const r=await t(n) | ||
return Boolean(Array.isArray(r)&&e.push([n,r]))} | ||
@@ -844,11 +857,11 @@ return async(t,n)=>{const r=[] | ||
if(!await e(r,t)&&await n(t))return t}}}} | ||
const te=(t,e,n)=>{const r=[] | ||
Gt(e)(t,([t,e,o])=>{r.length=e | ||
const ne=(t,e,n)=>{const r=[] | ||
Wt(e)(t,([t,e,o])=>{r.length=e | ||
0!==e&&(r[e-1]=o?"├─ ":"└─ ") | ||
n(r.join(""),t) | ||
0!==e&&(r[e-1]=o?"│ ":" ")})} | ||
const ee=(t="",e=0)=>{for(let n=0,r=t.length;n<r;n++)e=(e<<5)-e+t.charCodeAt(n)>>>0 | ||
const re=(t="",e=0)=>{for(let n=0,r=t.length;n<r;n++)e=(e<<5)-e+t.charCodeAt(n)>>>0 | ||
return e} | ||
const ne=t=>[...t].reverse().join("") | ||
const re=(t="")=>{const e=t.length | ||
const oe=t=>[...t].reverse().join("") | ||
const se=(t="")=>{const e=t.length | ||
const n=e-1 | ||
@@ -861,9 +874,9 @@ const r=Math.floor(.5*e) | ||
o[n-e]=t.charAt(n-r)}return o.join("")} | ||
const oe=(t,e={})=>{try{const e=JSON.parse(t) | ||
const ae=(t,e={})=>{try{const e=JSON.parse(t) | ||
if("object"==typeof e&&null!==e)return e}catch(t){}return e} | ||
const se=(t,e)=>{for(const n of e){if(!t||"object"!=typeof t||!t.hasOwnProperty(n))return | ||
const ce=(t,e)=>{for(const n of e){if(!t||"object"!=typeof t||!t.hasOwnProperty(n))return | ||
t=t[n]}return t} | ||
const ae=()=>({left:1/0,right:-1/0,top:1/0,bottom:-1/0}) | ||
const ce=(t,e)=>({left:Math.min(t.x,e.x),right:Math.max(t.x,e.x),top:Math.min(t.y,e.y),bottom:Math.max(t.y,e.y)}) | ||
const ie=({center:t,size:e,rotate:n})=>{const r=Math.cos(n) | ||
const ie=()=>({left:1/0,right:-1/0,top:1/0,bottom:-1/0}) | ||
const de=(t,e)=>({left:Math.min(t.x,e.x),right:Math.max(t.x,e.x),top:Math.min(t.y,e.y),bottom:Math.max(t.y,e.y)}) | ||
const ue=({center:t,size:e,rotate:n})=>{const r=Math.cos(n) | ||
const o=Math.sin(n) | ||
@@ -873,3 +886,3 @@ const s=.5*(Math.abs(e.x*r)+Math.abs(e.y*o)) | ||
return{left:t.x-s,right:t.x+s,top:t.y-a,bottom:t.y+a}} | ||
const de=t=>t.reduce((t,{center:e,size:n,rotate:r})=>{const o=Math.cos(r) | ||
const le=t=>t.reduce((t,{center:e,size:n,rotate:r})=>{const o=Math.cos(r) | ||
const s=Math.sin(r) | ||
@@ -882,75 +895,75 @@ const a=.5*(Math.abs(n.x*o)+Math.abs(n.y*s)) | ||
t.bottom=Math.max(t.bottom,e.y+c) | ||
return t},ae()) | ||
const ue=({left:t,right:e,top:n,bottom:r})=>({x:.5*(t+e),y:.5*(n+r)}) | ||
const le=(t,e)=>({left:Math.min(t.left,e.left),right:Math.max(t.right,e.right),top:Math.min(t.top,e.top),bottom:Math.max(t.bottom,e.bottom)}) | ||
const he=(t,e)=>!(t.left>e.right||t.right<e.left||t.top>e.bottom||t.bottom<e.top) | ||
const fe=({left:t,right:e,top:n,bottom:r},{x:o,y:s})=>o>=t&&o<=e&&s>=n&&s<=r | ||
const pe=({center:t,size:e,rotate:n})=>{const r=e.y*Math.sin(n)*.5 | ||
return t},ie()) | ||
const he=({left:t,right:e,top:n,bottom:r})=>({x:.5*(t+e),y:.5*(n+r)}) | ||
const pe=(t,e)=>({left:Math.min(t.left,e.left),right:Math.max(t.right,e.right),top:Math.min(t.top,e.top),bottom:Math.max(t.bottom,e.bottom)}) | ||
const fe=(t,e)=>!(t.left>e.right||t.right<e.left||t.top>e.bottom||t.bottom<e.top) | ||
const ye=({left:t,right:e,top:n,bottom:r},{x:o,y:s})=>o>=t&&o<=e&&s>=n&&s<=r | ||
const ge=({center:t,size:e,rotate:n})=>{const r=e.y*Math.sin(n)*.5 | ||
const o=e.y*Math.cos(n)*-.5 | ||
return{begin:{x:t.x+r,y:t.y+o},end:{x:t.x-r,y:t.y-o}}} | ||
const ye=2*Math.PI | ||
const ge=()=>({x:0,y:0}) | ||
const me=(t,e)=>({x:e*Math.cos(t),y:e*Math.sin(t)}) | ||
const ve=({x:t,y:e})=>Math.sqrt(t*t+e*e) | ||
const we=({x:t,y:e})=>t*t+e*e | ||
const xe=(t,e)=>Math.sqrt(be(t,e)) | ||
const be=(t,e)=>{const n=t.x-e.x | ||
const me=2*Math.PI | ||
const ve=()=>({x:0,y:0}) | ||
const we=(t,e)=>({x:e*Math.cos(t),y:e*Math.sin(t)}) | ||
const xe=({x:t,y:e})=>Math.sqrt(t*t+e*e) | ||
const be=({x:t,y:e})=>t*t+e*e | ||
const Ee=(t,e)=>Math.sqrt(Ae(t,e)) | ||
const Ae=(t,e)=>{const n=t.x-e.x | ||
const r=t.y-e.y | ||
return n*n+r*r} | ||
const Ee=({x:t,y:e})=>{const n=Math.atan2(e,t) | ||
return n>=0?n:n+ye} | ||
const Ae=(t,e)=>{const n=Math.atan2(t.y-e.y,t.x-e.x) | ||
return n>=0?n:n+ye} | ||
const Me=(t,e,n)=>{const r=Math.atan2(t.y-n.y,t.x-n.x)-Math.atan2(t.y-e.y,t.x-e.x) | ||
return r>=0?r:r+ye} | ||
const Se=(t,e)=>t.x*e.x+t.y*e.y | ||
const Le=(t,e)=>({x:t.x+e.x,y:t.y+e.y}) | ||
const Oe=(t,e)=>({x:t.x-e.x,y:t.y-e.y}) | ||
const Te=(t,e)=>({x:t.x*e.x,y:t.y*e.y}) | ||
const ke=(t,e)=>({x:t.x/e.x,y:t.y/e.y}) | ||
const De=({x:t,y:e},n)=>({x:t*n,y:e*n}) | ||
const Ce=(t,e)=>De(e,Se(t,e)/Math.pow(ve(e),2)) | ||
const je=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y)}) | ||
const Re=(t,e)=>({x:Math.max(t.x,e.x),y:Math.max(t.y,e.y)}) | ||
const $e=({x:t,y:e},n,r)=>({x:Math.max(Math.min(t,r.x),n.x),y:Math.max(Math.min(e,r.y),n.y)}) | ||
const Me=({x:t,y:e})=>{const n=Math.atan2(e,t) | ||
return n>=0?n:n+me} | ||
const Se=(t,e)=>{const n=Math.atan2(t.y-e.y,t.x-e.x) | ||
return n>=0?n:n+me} | ||
const Oe=(t,e,n)=>{const r=Math.atan2(t.y-n.y,t.x-n.x)-Math.atan2(t.y-e.y,t.x-e.x) | ||
return r>=0?r:r+me} | ||
const Le=(t,e)=>t.x*e.x+t.y*e.y | ||
const Te=(t,e)=>({x:t.x+e.x,y:t.y+e.y}) | ||
const ke=(t,e)=>({x:t.x-e.x,y:t.y-e.y}) | ||
const je=(t,e)=>({x:t.x*e.x,y:t.y*e.y}) | ||
const De=(t,e)=>({x:t.x/e.x,y:t.y/e.y}) | ||
const Ce=({x:t,y:e},n)=>({x:t*n,y:e*n}) | ||
const Re=(t,e)=>Ce(e,Le(t,e)/Math.pow(xe(e),2)) | ||
const Pe=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y)}) | ||
const $e=(t,e)=>({x:Math.max(t.x,e.x),y:Math.max(t.y,e.y)}) | ||
const _e=({x:t,y:e},n,r)=>({x:Math.max(Math.min(t,r.x),n.x),y:Math.max(Math.min(e,r.y),n.y)}) | ||
const Be=({x:t,y:e})=>({x:Math.abs(t),y:Math.abs(e)}) | ||
const Pe=({x:t,y:e})=>({x:Math.round(t),y:Math.round(e)}) | ||
const Ne=({x:t,y:e})=>({x:Math.round(t),y:Math.round(e)}) | ||
const Fe=(t,e,n)=>({x:t.x+(e.x-t.x)*n,y:t.y+(e.y-t.y)*n}) | ||
const Ne=({x:t,y:e})=>0===t&&0===e | ||
const Ie=()=>({min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0}}) | ||
const _e=(t,e)=>({min:je(t,e),max:Re(t,e)}) | ||
const ze=({left:t,right:e,top:n,bottom:r})=>({min:{x:t,y:n},max:{x:e,y:r}}) | ||
const Ue=({min:t,max:e})=>({x:.5*(t.x+e.x),y:.5*(t.y+e.y)}) | ||
const qe=({min:t,max:e})=>({x:e.x-t.x,y:e.y-t.y}) | ||
const Qe=(t,e)=>({min:je(t.min,e.min),max:Re(t.max,e.max)}) | ||
const Ve=t=>t.reduce((t,{min:e,max:n})=>{t.min.x=Math.min(t.min.x,e.x) | ||
const Ie=({x:t,y:e})=>0===t&&0===e | ||
const ze=()=>({min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0}}) | ||
const Ue=(t,e)=>({min:Pe(t,e),max:$e(t,e)}) | ||
const qe=({left:t,right:e,top:n,bottom:r})=>({min:{x:t,y:n},max:{x:e,y:r}}) | ||
const Ke=({min:t,max:e})=>({x:.5*(t.x+e.x),y:.5*(t.y+e.y)}) | ||
const Qe=({min:t,max:e})=>({x:e.x-t.x,y:e.y-t.y}) | ||
const Ve=(t,e)=>({min:Pe(t.min,e.min),max:$e(t.max,e.max)}) | ||
const He=t=>t.reduce((t,{min:e,max:n})=>{t.min.x=Math.min(t.min.x,e.x) | ||
t.min.y=Math.min(t.min.y,e.y) | ||
t.max.x=Math.max(t.max.x,n.x) | ||
t.max.y=Math.max(t.max.y,n.y) | ||
return t},Ie()) | ||
const Ke=({min:t,max:e})=>e.x<=t.x||e.y<=t.y | ||
const He=(t,e)=>!(t.max.x<e.min.x||t.min.x>e.max.x||t.max.y<e.min.y||t.min.y>e.max.y) | ||
const Ge=(t,e)=>t.min.x<=e.min.x&&t.max.x>=e.max.x&&t.min.y<=e.min.y&&t.max.y>=e.max.y | ||
const Ye=({min:t,max:e},{x:n,y:r})=>n>=t.x&&n<=e.x&&r>=t.y&&r<=e.y | ||
const Je=t=>Math.round(1e4*t)/1e4 | ||
const We=(t,e)=>Math.sign(t)*Math.max(0,Math.abs(t)+e) | ||
const Xe=(t,e)=>(t%e+e)%e | ||
const Ze=(t,e,n)=>Math.max(e,Math.min(n,t)) | ||
const tn=(t,e,n)=>t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*(3-2*t) | ||
const en=(t,e,n)=>t+(e-t)*n | ||
const nn=.5*Math.PI | ||
const rn=(t,e,n)=>Object.assign({},n,{center:{x:.5*(t.x+e.x),y:.5*(t.y+e.y)},size:{x:Math.abs(t.x-e.x),y:Math.abs(t.y-e.y)},rotate:0}) | ||
const on=({begin:t,end:e},n,r)=>Object.assign({},r,{center:{x:.5*(t.x+e.x),y:.5*(t.y+e.y)},size:{x:n,y:xe(e,t)},rotate:Ae(e,t)-nn}) | ||
const sn=({left:t,right:e,top:n,bottom:r},o)=>Object.assign({},o,{center:{x:.5*(t+e),y:.5*(n+r)},size:{x:e-t,y:r-n},rotate:0}) | ||
const an=({size:{x:t,y:e},rotate:n})=>{const r=Math.cos(n) | ||
return t},ze()) | ||
const Ge=({min:t,max:e})=>e.x<=t.x||e.y<=t.y | ||
const Ye=(t,e)=>!(t.max.x<e.min.x||t.min.x>e.max.x||t.max.y<e.min.y||t.min.y>e.max.y) | ||
const We=(t,e)=>t.min.x<=e.min.x&&t.max.x>=e.max.x&&t.min.y<=e.min.y&&t.max.y>=e.max.y | ||
const Je=({min:t,max:e},{x:n,y:r})=>n>=t.x&&n<=e.x&&r>=t.y&&r<=e.y | ||
const Xe=t=>Math.round(1e4*t)/1e4 | ||
const Ze=(t,e)=>Math.sign(t)*Math.max(0,Math.abs(t)+e) | ||
const tn=(t,e)=>(t%e+e)%e | ||
const en=(t,e,n)=>Math.max(e,Math.min(n,t)) | ||
const nn=(t,e,n)=>t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*(3-2*t) | ||
const rn=(t,e,n)=>t+(e-t)*n | ||
const on=.5*Math.PI | ||
const sn=(t,e,n)=>Object.assign({},n,{center:{x:.5*(t.x+e.x),y:.5*(t.y+e.y)},size:{x:Math.abs(t.x-e.x),y:Math.abs(t.y-e.y)},rotate:0}) | ||
const an=({begin:t,end:e},n,r)=>Object.assign({},r,{center:{x:.5*(t.x+e.x),y:.5*(t.y+e.y)},size:{x:n,y:Ee(e,t)},rotate:Se(e,t)-on}) | ||
const cn=({left:t,right:e,top:n,bottom:r},o)=>Object.assign({},o,{center:{x:.5*(t+e),y:.5*(n+r)},size:{x:e-t,y:r-n},rotate:0}) | ||
const dn=({size:{x:t,y:e},rotate:n})=>{const r=Math.cos(n) | ||
const o=Math.sin(n) | ||
return{x:Math.abs(t*r)+Math.abs(e*o),y:Math.abs(t*o)+Math.abs(e*r)}} | ||
const cn=({size:{x:t,y:e},rotate:n})=>Math.abs(t*Math.cos(n))+Math.abs(e*Math.sin(n)) | ||
const dn=({size:{x:t,y:e},rotate:n})=>Math.abs(t*Math.sin(n))+Math.abs(e*Math.cos(n)) | ||
const un=t=>t.center.x-.5*cn(t) | ||
const ln=t=>t.center.x+.5*cn(t) | ||
const hn=t=>t.center.y-.5*dn(t) | ||
const fn=t=>t.center.y+.5*dn(t) | ||
const pn=t=>Object.assign({},t,{center:Pe(t.center),size:Pe(t.size),rotate:Je(t.rotate)}) | ||
const yn=({center:t,rotate:e},{x:n,y:r})=>{const o=n-t.x | ||
const un=({size:{x:t,y:e},rotate:n})=>Math.abs(t*Math.cos(n))+Math.abs(e*Math.sin(n)) | ||
const ln=({size:{x:t,y:e},rotate:n})=>Math.abs(t*Math.sin(n))+Math.abs(e*Math.cos(n)) | ||
const hn=t=>t.center.x-.5*un(t) | ||
const pn=t=>t.center.x+.5*un(t) | ||
const fn=t=>t.center.y-.5*ln(t) | ||
const yn=t=>t.center.y+.5*ln(t) | ||
const gn=t=>Object.assign({},t,{center:Ne(t.center),size:Ne(t.size),rotate:Xe(t.rotate)}) | ||
const mn=({center:t,rotate:e},{x:n,y:r})=>{const o=n-t.x | ||
const s=r-t.y | ||
@@ -960,3 +973,3 @@ const a=Math.cos(-e) | ||
return{x:o*a-s*c,y:o*c+s*a}} | ||
const gn=({center:t,rotate:e},n)=>{const r=n.center.x-t.x | ||
const vn=({center:t,rotate:e},n)=>{const r=n.center.x-t.x | ||
const o=n.center.y-t.y | ||
@@ -971,35 +984,35 @@ const s=n.rotate-e | ||
return{left:i-u,right:i+u,top:d-l,bottom:d+l}} | ||
const mn=({center:t,size:e},n)=>t.x-.5*e.x<=n.left&&t.x+.5*e.x>=n.right&&t.y-.5*e.y<=n.top&&t.y+.5*e.y>=n.bottom | ||
const vn=({center:t,size:e},n)=>!(t.x+.5*e.x<n.left||t.x-.5*e.x>n.right||t.y+.5*e.y<n.top||t.y-.5*e.y>n.bottom) | ||
const wn=Math.PI/180 | ||
const xn=180/Math.PI | ||
const bn=t=>t*wn | ||
const En=t=>t*xn | ||
const An=(t,e,n)=>{if(t[e]===n)return t | ||
const wn=({center:t,size:e},n)=>t.x-.5*e.x<=n.left&&t.x+.5*e.x>=n.right&&t.y-.5*e.y<=n.top&&t.y+.5*e.y>=n.bottom | ||
const xn=({center:t,size:e},n)=>!(t.x+.5*e.x<n.left||t.x-.5*e.x>n.right||t.y+.5*e.y<n.top||t.y-.5*e.y>n.bottom) | ||
const bn=Math.PI/180 | ||
const En=180/Math.PI | ||
const An=t=>t*bn | ||
const Mn=t=>t*En | ||
const Sn=(t,e,n)=>{if(t[e]===n)return t | ||
const r=[...t] | ||
r[e]=n | ||
return r} | ||
const Mn=(t,e)=>e>=0&&e<=t.length-1?[...t.slice(0,e),...t.slice(e+1)]:t | ||
const Sn=(t,e,n)=>[...t.slice(0,e),n,...t.slice(e)] | ||
const Ln=(t,e,n)=>n===e?t:n<e?[...t.slice(0,n),...t.slice(n+1,e+1),t[n],...t.slice(e+1)]:[...t.slice(0,e),t[n],...t.slice(e,n),...t.slice(n+1)] | ||
const On=(t,e)=>[...t,e] | ||
const Tn=(t,e)=>[e,...t] | ||
const kn=t=>{if(0===t.length)return t | ||
const On=(t,e)=>e>=0&&e<=t.length-1?[...t.slice(0,e),...t.slice(e+1)]:t | ||
const Ln=(t,e,n)=>[...t.slice(0,e),n,...t.slice(e)] | ||
const Tn=(t,e,n)=>n===e?t:n<e?[...t.slice(0,n),...t.slice(n+1,e+1),t[n],...t.slice(e+1)]:[...t.slice(0,e),t[n],...t.slice(e,n),...t.slice(n+1)] | ||
const kn=(t,e)=>[...t,e] | ||
const jn=(t,e)=>[e,...t] | ||
const Dn=t=>{if(0===t.length)return t | ||
const e=[...t] | ||
e.pop() | ||
return e} | ||
const Dn=t=>{if(0===t.length)return t | ||
const Cn=t=>{if(0===t.length)return t | ||
const e=[...t] | ||
e.shift() | ||
return e} | ||
const Cn=(t,e)=>e&&e.length?[...t,...e]:t | ||
const jn=(t,e)=>t.includes(e)?t:[...t,e] | ||
const Rn=(t,e)=>{const n=t.indexOf(e) | ||
const Rn=(t,e)=>e&&e.length?[...t,...e]:t | ||
const Pn=(t,e)=>t.includes(e)?t:[...t,e] | ||
const $n=(t,e)=>{const n=t.indexOf(e) | ||
return~n?[...t.slice(0,n),...t.slice(n+1)]:t} | ||
const $n=(t,e,n)=>{const r=t.indexOf(n) | ||
return~r?Ln(t,e,r):t} | ||
const _n=(t,e,n)=>{const r=t.indexOf(n) | ||
return~r?Tn(t,e,r):t} | ||
const Bn=(t,e)=>{const n=t.findIndex(e) | ||
return~n?[...t.slice(0,n),...t.slice(n+1)]:t} | ||
const Pn=(t,e,n)=>{const r=t.findIndex(e) | ||
return~r?Ln(t,n,r):t} | ||
const Nn=(t,e,n)=>{const r=t.findIndex(e) | ||
return~r?Tn(t,n,r):t} | ||
const Fn=(t,e,n)=>{const r=t.findIndex(e) | ||
@@ -1010,3 +1023,3 @@ if(!~r||t[r]===n)return t | ||
return o} | ||
const Nn=(t,e,n)=>{const r=t.findIndex(e) | ||
const In=(t,e,n)=>{const r=t.findIndex(e) | ||
if(!~r)return[...t,n] | ||
@@ -1017,57 +1030,57 @@ if(t[r]===n)return t | ||
return o} | ||
const In=(t,e,n)=>void 0===t.find(e)?[...t,n]:t | ||
const _n=(t,e)=>{const n=[] | ||
const zn=(t,e,n)=>void 0===t.find(e)?[...t,n]:t | ||
const Un=(t,e)=>{const n=[] | ||
for(let r=0,o=t.length;r<o;r+=e)n.push(t.slice(r,r+e)) | ||
return n} | ||
const zn=(t,e,n)=>t[e]!==n?Object.assign({},t,{[e]:n}):t | ||
const Un=(t,e)=>{if(!t.hasOwnProperty(e))return t | ||
const qn=(t,e,n)=>t[e]!==n?Object.assign({},t,{[e]:n}):t | ||
const Kn=(t,e)=>{if(!t.hasOwnProperty(e))return t | ||
const n=Object.assign({},t) | ||
delete n[e] | ||
return n} | ||
const qn=(t,e)=>{for(const[n,r]of Object.entries(e))if(t[n]!==r)return Object.assign({},t,e) | ||
const Qn=(t,e)=>{for(const[n,r]of Object.entries(e))if(t[n]!==r)return Object.assign({},t,e) | ||
return t} | ||
const Qn=(t,e)=>{const n={} | ||
const Vn=(t,e)=>{const n={} | ||
for(const[r,o]of Object.entries(t))n[r]=e(o,r) | ||
return n} | ||
const Vn=(t,e)=>{const n={} | ||
const Hn=(t,e)=>{const n={} | ||
for(const r of e)t.hasOwnProperty(r)&&(n[r]=t[r]) | ||
return n} | ||
const Kn=(t,e)=>{const n=Object.entries(t).find(e) | ||
const Gn=(t,e)=>{const n=Object.entries(t).find(e) | ||
return n&&n[0]} | ||
const Hn=t=>{let e | ||
const Yn=t=>{let e | ||
for(const[n,r]of Object.entries(t))if(void 0===r){void 0===e&&(e=Object.assign({},t)) | ||
delete e[n]}return e||t} | ||
const Gn=t=>"string"==typeof t | ||
const Yn=t=>"boolean"==typeof t | ||
const Jn=t=>"number"==typeof t | ||
const Wn=Number.isInteger | ||
const Xn=t=>{const e=typeof t | ||
const Wn=t=>"string"==typeof t | ||
const Jn=t=>"boolean"==typeof t | ||
const Xn=t=>"number"==typeof t | ||
const Zn=Number.isInteger | ||
const tr=t=>{const e=typeof t | ||
return"object"===e&&null!==t||"function"===e} | ||
const Zn=t=>"object"==typeof t&&null!==t&&!Array.isArray(t) | ||
const tr=(t,e)=>Zn(t)&&t.hasOwnProperty(e) | ||
const er=(t,e)=>Zn(t)&&Object.entries(e).every(([e,n])=>t[e]===n) | ||
const nr=Array.isArray | ||
const rr=(t,e)=>nr(t)&&t.length===e | ||
const or=t=>"function"==typeof t | ||
const sr=t=>Boolean(t&&"function"==typeof t.then) | ||
const ar=(t,e)=>e.includes(t) | ||
const cr=t=>{try{return t()&&!1}catch(t){return!0}} | ||
const ir=async t=>{try{return await t()&&!1}catch(t){return!0}} | ||
const dr=(t,e)=>Object.is(t,e) | ||
const ur=(t,e)=>!!Object.is(t,e)||!(!Xn(t)||!Xn(e))&&JSON.stringify(t)===JSON.stringify(e) | ||
const lr=t=>{const e=typeof t | ||
const er=t=>"object"==typeof t&&null!==t&&!Array.isArray(t) | ||
const nr=(t,e)=>er(t)&&t.hasOwnProperty(e) | ||
const rr=(t,e)=>er(t)&&Object.entries(e).every(([e,n])=>t[e]===n) | ||
const or=Array.isArray | ||
const sr=(t,e)=>or(t)&&t.length===e | ||
const ar=t=>"function"==typeof t | ||
const cr=t=>Boolean(t&&"function"==typeof t.then) | ||
const ir=(t,e)=>e.includes(t) | ||
const dr=t=>{try{return t()&&!1}catch(t){return!0}} | ||
const ur=async t=>{try{return await t()&&!1}catch(t){return!0}} | ||
const lr=(t,e)=>Object.is(t,e) | ||
const hr=(t,e)=>!!Object.is(t,e)||!(!tr(t)||!tr(e))&&JSON.stringify(t)===JSON.stringify(e) | ||
const pr=t=>{const e=typeof t | ||
let n | ||
if("function"===e)n="()=>{...}" | ||
else try{n=JSON.stringify(t)}catch(t){n="{...}"}return`<${e}> ${n}`} | ||
const hr=t=>`${(100*t).toFixed(2)}%` | ||
const fr=t=>String(Math.floor(t)).padStart(2,"0") | ||
const pr=t=>{const e=Math.abs(t) | ||
return`${t<0?"-":""}${fr(e/60)}:${fr(e%60)}`} | ||
const yr=t=>{const e=.75*Math.abs(t) | ||
const fr=t=>`${(100*t).toFixed(2)}%` | ||
const yr=t=>String(Math.floor(t)).padStart(2,"0") | ||
const gr=t=>{const e=Math.abs(t) | ||
return`${t<0?"-":""}${yr(e/60)}:${yr(e%60)}`} | ||
const mr=t=>{const e=.75*Math.abs(t) | ||
return 0===e?"0":e<1e-9?`${(t/1e-12).toFixed(2)}pico`:e<1e-6?`${(t/1e-9).toFixed(2)}nano`:e<.001?`${(t/1e-6).toFixed(2)}micro`:e<1?`${(t/.001).toFixed(2)}milli`:e<1e3?`${(t/1).toFixed(2)}`:e<1e6?`${(t/1e3).toFixed(2)}kilo`:e<1e9?`${(t/1e6).toFixed(2)}mega`:e<1e12?`${(t/1e9).toFixed(2)}giga`:e<1e15?`${(t/1e12).toFixed(2)}tera`:e<1e18?`${(t/1e15).toFixed(2)}peta`:`${(t/1e18).toFixed(2)}exa`} | ||
const gr=t=>{const e=.75*Math.abs(t) | ||
const vr=t=>{const e=.75*Math.abs(t) | ||
return e<1e3?`${Math.floor(t)}ms`:e<6e4?`${(t/1e3).toFixed(2)}s`:e<36e5?`${(t/6e4).toFixed(2)}m`:e<864e5?`${(t/36e5).toFixed(2)}h`:`${(t/864e5).toFixed(2)}d`} | ||
const mr=t=>{const e=.75*Math.abs(t) | ||
const wr=t=>{const e=.75*Math.abs(t) | ||
return e<1024?`${Math.floor(t)}`:e<1048576?`${(t/1024).toFixed(2)}Ki`:e<1073741824?`${(t/1048576).toFixed(2)}Mi`:e<1099511627776?`${(t/1073741824).toFixed(2)}Gi`:`${(t/1099511627776).toFixed(2)}Ti`} | ||
const vr=({table:t,padFuncList:e=[],cellPad:n=" | ",rowPad:r="\n",widthMaxList:o=t.reduce((t,e)=>{e.forEach((e,n)=>{t[n]=Math.max(String(e).length,t[n]||0)}) | ||
const xr=({table:t,padFuncList:e=[],cellPad:n=" | ",rowPad:r="\n",widthMaxList:o=t.reduce((t,e)=>{e.forEach((e,n)=>{t[n]=Math.max(String(e).length,t[n]||0)}) | ||
return t},[])})=>t.map(t=>t.map((t,n)=>{const r=String(t) | ||
@@ -1077,3 +1090,3 @@ const s=e[n] | ||
return s&&"L"!==s?"R"===s?r.padStart(a):s(r,a):r.padEnd(a)}).join(n)).join(r) | ||
const wr=(t,e,n,r)=>{if(n>=1&&e){if(Array.isArray(e))return((t,e,n,r)=>{if(0===e.length)return t.push("[]") | ||
const br=(t,e,n,r)=>{if(n>=1&&e){if(Array.isArray(e))return((t,e,n,r)=>{if(0===e.length)return t.push("[]") | ||
t.push("[\n") | ||
@@ -1083,3 +1096,3 @@ const o=n-1 | ||
e.forEach(e=>{t.push(s) | ||
wr(t,e,o,s) | ||
br(t,e,o,s) | ||
t.push(",\n")}) | ||
@@ -1093,35 +1106,35 @@ t[t.length-1]=`\n${r}]`})(t,e,n,r) | ||
o.forEach(([e,n])=>{t.push(a,JSON.stringify(e),": ") | ||
wr(t,n,s,a) | ||
br(t,n,s,a) | ||
t.push(",\n")}) | ||
t[t.length-1]=`\n${r}}`})(t,e,n,r)}t.push(JSON.stringify(e))} | ||
const xr=(t,e=2)=>{const n=[] | ||
wr(n,t,Math.max(e,0)||0,"") | ||
const Er=(t,e=2)=>{const n=[] | ||
br(n,t,Math.max(e,0)||0,"") | ||
return n.join("")} | ||
const br=(t,e,n)=>{throw new Error(`[verify|${t}]${e?` ${e};`:""} ${n||""}`)} | ||
const Er=(t,e)=>(n,r)=>e(n)||br(t,r,`get: ${lr(n)}`) | ||
const Ar=Er("String",Gn) | ||
const Mr=Er("Boolean",Yn) | ||
const Sr=Er("Number",Jn) | ||
const Lr=Er("Integer",Wn) | ||
const Or=Er("ObjectAlike",Xn) | ||
const Tr=Er("BasicObject",Zn) | ||
const kr=(t,e,n)=>tr(t,e)||br("ObjectKey",n,`expect to have key: ${e}`) | ||
const Dr=(t,e,n)=>er(t,e)||br("ObjectContain",n,`expect to contain: ${lr(e)}`) | ||
const Cr=Er("Array",nr) | ||
const jr=(t,e,n)=>rr(t,e)||br("ArrayLength",n,`expect length: ${e}, get: ${nr(t)?t.length:lr(t)}`) | ||
const Rr=Er("Function",or) | ||
const $r=Er("PromiseAlike",sr) | ||
const Br=(t,e,n)=>ar(t,e)||br("OneOf",n,`expect one of: [${e}], get: ${lr(t)}`) | ||
const Pr=(t,e)=>cr(t)||br("DoThrow",e) | ||
const Fr=(t,e)=>cr(t)&&br("DoNotThrow",e) | ||
const Nr=async(t,e)=>await ir(t)||br("DoThrowAsync",e) | ||
const Ir=async(t,e)=>await ir(t)&&br("DoThrowAsync",e) | ||
const _r=(t,e)=>`\nactual: ${lr(t)}\nexpect: ${lr(e)}` | ||
const zr=(t,e,n)=>dr(t,e)||br("StrictEqual",n,_r(t,e)) | ||
const Ur=(t,e,n)=>dr(t,e)&&br("NotStrictEqual",n,_r(t,e)) | ||
const qr=(t,e,n="should stringify equal")=>ur(t,e)||br("StringifyEqual",n,_r(t,e)) | ||
const Qr=(t,e,n="should not stringify equal")=>ur(t,e)&&br("NotStringifyEqual",n,_r(t,e)) | ||
const Vr=t=>{Tr(t,"initialState should be basic Object") | ||
const Ar=(t,e,n)=>{throw new Error(`[verify|${t}]${e?` ${e};`:""} ${n||""}`)} | ||
const Mr=(t,e)=>(n,r)=>e(n)||Ar(t,r,`get: ${pr(n)}`) | ||
const Sr=Mr("String",Wn) | ||
const Or=Mr("Boolean",Jn) | ||
const Lr=Mr("Number",Xn) | ||
const Tr=Mr("Integer",Zn) | ||
const kr=Mr("ObjectAlike",tr) | ||
const jr=Mr("BasicObject",er) | ||
const Dr=(t,e,n)=>nr(t,e)||Ar("ObjectKey",n,`expect to have key: ${e}`) | ||
const Cr=(t,e,n)=>rr(t,e)||Ar("ObjectContain",n,`expect to contain: ${pr(e)}`) | ||
const Rr=Mr("Array",or) | ||
const Pr=(t,e,n)=>sr(t,e)||Ar("ArrayLength",n,`expect length: ${e}, get: ${or(t)?t.length:pr(t)}`) | ||
const $r=Mr("Function",ar) | ||
const _r=Mr("PromiseAlike",cr) | ||
const Br=(t,e,n)=>ir(t,e)||Ar("OneOf",n,`expect one of: [${e}], get: ${pr(t)}`) | ||
const Nr=(t,e)=>dr(t)||Ar("DoThrow",e) | ||
const Fr=(t,e)=>dr(t)&&Ar("DoNotThrow",e) | ||
const Ir=async(t,e)=>await ur(t)||Ar("DoThrowAsync",e) | ||
const zr=async(t,e)=>await ur(t)&&Ar("DoThrowAsync",e) | ||
const Ur=(t,e)=>`\nactual: ${pr(t)}\nexpect: ${pr(e)}` | ||
const qr=(t,e,n)=>lr(t,e)||Ar("StrictEqual",n,Ur(t,e)) | ||
const Kr=(t,e,n)=>lr(t,e)&&Ar("NotStrictEqual",n,Ur(t,e)) | ||
const Qr=(t,e,n="should stringify equal")=>hr(t,e)||Ar("StringifyEqual",n,Ur(t,e)) | ||
const Vr=(t,e,n="should not stringify equal")=>hr(t,e)&&Ar("NotStringifyEqual",n,Ur(t,e)) | ||
const Hr=t=>{jr(t,"initialState should be basic Object") | ||
let e=[] | ||
return{subscribe:t=>{e=jn(e,t)},unsubscribe:t=>{e=Rn(e,t)},getState:()=>t,setState:n=>{if((n=qn(t,n))===t)return t | ||
return{subscribe:t=>{e=Pn(e,t)},unsubscribe:t=>{e=$n(e,t)},getState:()=>t,setState:n=>{if((n=Qn(t,n))===t)return t | ||
const r=t | ||
@@ -1131,6 +1144,6 @@ t=n | ||
return t}}} | ||
const Kr=t=>({getState:()=>t,setState:e=>t=Object.assign({},t,e)}) | ||
const Hr=({initialState:t,enhancer:e,reducer:n})=>{Rr(e,"enhancer function required") | ||
Rr(n,"reducer function required") | ||
const{subscribe:r,unsubscribe:o,getState:s,setState:a}=Vr(t) | ||
const Gr=t=>({getState:()=>t,setState:e=>t=Object.assign({},t,e)}) | ||
const Yr=({initialState:t,enhancer:e,reducer:n})=>{$r(e,"enhancer function required") | ||
$r(n,"reducer function required") | ||
const{subscribe:r,unsubscribe:o,getState:s,setState:a}=Hr(t) | ||
let c=null | ||
@@ -1152,8 +1165,8 @@ let i=!1 | ||
return{subscribe:r,unsubscribe:o,getState:u,dispatch:l}} | ||
const Gr=t=>{const{subscribe:e,unsubscribe:n}=t | ||
Rr(e,"store.subscribe required") | ||
Rr(n,"store.unsubscribe required") | ||
const Wr=t=>{const{subscribe:e,unsubscribe:n}=t | ||
$r(e,"store.subscribe required") | ||
$r(n,"store.unsubscribe required") | ||
return Object.assign({},t,{subscribe:t=>{e(t) | ||
return()=>n(t)}})} | ||
const Yr=t=>{const e=Object.keys(t) | ||
const Jr=t=>{const e=Object.keys(t) | ||
const n=e.length | ||
@@ -1167,7 +1180,7 @@ return(r,o)=>{const s={} | ||
a=a||d!==i}return a?s:r}} | ||
const Jr=t=>(e,n)=>{const r=t[n.type] | ||
const Xr=t=>(e,n)=>{const r=t[n.type] | ||
return r&&r(e,n)} | ||
const Wr=(t,{getState:e,setState:n})=>(r,{type:o,payload:s})=>{o===t&&n(s) | ||
const Zr=(t,{getState:e,setState:n})=>(r,{type:o,payload:s})=>{o===t&&n(s) | ||
return e()} | ||
const Xr=(t,e)=>{if(t===e)return!0 | ||
const to=(t,e)=>{if(t===e)return!0 | ||
const n=Object.keys(t) | ||
@@ -1179,51 +1192,51 @@ const r=Object.keys(e) | ||
if(!e.hasOwnProperty(s)||t[s]!==e[a])return!1}return!0} | ||
const Zr=(t,e)=>t===e||t.length===e.length&&t.every((t,n)=>t===e[n]) | ||
const to=(t,e)=>{if(t===e)return!0 | ||
const eo=(t,e)=>t===e||t.length===e.length&&t.every((t,n)=>t===e[n]) | ||
const no=(t,e)=>{if(t===e)return!0 | ||
if(t.length!==e.length)return!1 | ||
for(let n=0,r=t.length;n<r;n++)if(t[n]!==e[n])return!1 | ||
return!0} | ||
const eo=t=>{let e=null | ||
const ro=t=>{let e=null | ||
let n=null | ||
return(...r)=>{if(!n||!to(n,r)){e=t.apply(null,r) | ||
return(...r)=>{if(!n||!no(n,r)){e=t.apply(null,r) | ||
n=r}return e}} | ||
const no=t=>t | ||
const ro=t=>t*t | ||
const oo=t=>t*(2-t) | ||
const so=t=>t<.5?t*t*2:t*(2-t)*2-1 | ||
const ao=t=>Math.pow(t,3) | ||
const co=t=>Math.pow(t-1,3)+1 | ||
const io=t=>t<.5?4*Math.pow(t,3):Math.pow(2*t-2,3)/2+1 | ||
const uo=t=>Math.pow(t,4) | ||
const lo=t=>1-Math.pow(t-1,4) | ||
const ho=t=>t<.5?8*Math.pow(t,4):1-Math.pow(2*t-2,4)/2 | ||
const fo=t=>Math.pow(t,5) | ||
const po=t=>Math.pow(t-1,5)+1 | ||
const yo=t=>t<.5?16*Math.pow(t,5):Math.pow(2*t-2,5)/2+1 | ||
const go=Math.PI/2 | ||
const mo=t=>1-Math.cos(t*go) | ||
const vo=t=>Math.sin(t*go) | ||
const wo=t=>.5-Math.cos(t*Math.PI)/2 | ||
const xo=t=>Math.pow(2,10*t-10) | ||
const bo=t=>1-Math.pow(2,-10*t) | ||
const Eo=t=>t<.5?Math.pow(2,20*t-10)/2:1-Math.pow(2,10-20*t)/2 | ||
const Ao=t=>1-Math.sqrt(1-t*t) | ||
const Mo=t=>Math.sqrt((2-t)*t) | ||
const So=t=>t<.5?.5-Math.sqrt(.25-t*t):Math.sqrt(t*(2-t)-.75)+.5 | ||
var Lo=n(1) | ||
const Oo=(t,e)=>{const n=[] | ||
const oo=t=>t | ||
const so=t=>t*t | ||
const ao=t=>t*(2-t) | ||
const co=t=>t<.5?t*t*2:t*(2-t)*2-1 | ||
const io=t=>Math.pow(t,3) | ||
const uo=t=>Math.pow(t-1,3)+1 | ||
const lo=t=>t<.5?4*Math.pow(t,3):Math.pow(2*t-2,3)/2+1 | ||
const ho=t=>Math.pow(t,4) | ||
const po=t=>1-Math.pow(t-1,4) | ||
const fo=t=>t<.5?8*Math.pow(t,4):1-Math.pow(2*t-2,4)/2 | ||
const yo=t=>Math.pow(t,5) | ||
const go=t=>Math.pow(t-1,5)+1 | ||
const mo=t=>t<.5?16*Math.pow(t,5):Math.pow(2*t-2,5)/2+1 | ||
const vo=Math.PI/2 | ||
const wo=t=>1-Math.cos(t*vo) | ||
const xo=t=>Math.sin(t*vo) | ||
const bo=t=>.5-Math.cos(t*Math.PI)/2 | ||
const Eo=t=>Math.pow(2,10*t-10) | ||
const Ao=t=>1-Math.pow(2,-10*t) | ||
const Mo=t=>t<.5?Math.pow(2,20*t-10)/2:1-Math.pow(2,10-20*t)/2 | ||
const So=t=>1-Math.sqrt(1-t*t) | ||
const Oo=t=>Math.sqrt((2-t)*t) | ||
const Lo=t=>t<.5?.5-Math.sqrt(.25-t*t):Math.sqrt(t*(2-t)-.75)+.5 | ||
var To=n(1) | ||
const ko=(t,e)=>{const n=[] | ||
for(let r=0;r<e;r++)n.push(t(r)) | ||
return n} | ||
const To=(t,e)=>Oo(e=>e+t,e-t+1) | ||
const ko=t=>Oo(e=>e/t,1+t) | ||
const Do=1e3 | ||
const Co=1/Do | ||
const jo=(()=>{try{const{performance:t}=ht.c | ||
const jo=(t,e)=>ko(e=>e+t,e-t+1) | ||
const Do=t=>ko(e=>e/t,1+t) | ||
const Co=1e3 | ||
const Ro=1/Co | ||
const Po=(()=>{try{const{performance:t}=ft.c | ||
const e=()=>t.now() | ||
if(e()<=e())return e}catch(t){}try{const{process:t}=ht.c | ||
if(e()<=e())return e}catch(t){}try{const{process:t}=ft.c | ||
const e=()=>{const[e,n]=t.hrtime() | ||
return 1e3*e+1e-6*n} | ||
if(e()<=e())return e}catch(t){}return Date.now})() | ||
const Ro=()=>Math.floor(Date.now()*Co) | ||
const $o=(t=0)=>new Promise(e=>setTimeout(e,t)) | ||
const[Bo,Po]=ht.c.requestAnimationFrame?[ht.c.requestAnimationFrame,ht.c.cancelAnimationFrame]:[t=>setTimeout(t,1e3/60),clearTimeout] | ||
const $o=()=>Math.floor(Date.now()*Ro) | ||
const _o=(t=0)=>new Promise(e=>setTimeout(e,t)) | ||
const[Bo,No]=ft.c.requestAnimationFrame?[ft.c.requestAnimationFrame,ft.c.cancelAnimationFrame]:[t=>setTimeout(t,1e3/60),clearTimeout] | ||
const Fo=({func:t,delay:e,queueTask:n=setTimeout,cancelTask:r=clearTimeout})=>{let o=null | ||
@@ -1238,7 +1251,7 @@ const s=()=>{if(o){o=n(s,e) | ||
a()}}}} | ||
const No=(t=jo())=>()=>{const e=jo() | ||
const Io=(t=Po())=>()=>{const e=Po() | ||
const n=e-t | ||
t=e | ||
return n} | ||
const Io=(t,e=250,n=!1)=>{let r=null | ||
const zo=(t,e=250,n=!1)=>{let r=null | ||
return(...o)=>{const s=n&&null===r | ||
@@ -1249,3 +1262,3 @@ clearTimeout(r) | ||
s&&t.apply(null,o)}} | ||
const _o=(t,e=250,n=!1)=>{let r=null | ||
const Uo=(t,e=250,n=!1)=>{let r=null | ||
return(...o)=>{if(r)return | ||
@@ -1256,3 +1269,3 @@ const s=n&&null===r | ||
s&&t.apply(null,o)}} | ||
const zo=(t,e=It)=>{let n | ||
const qo=(t,e=zt)=>{let n | ||
const r=()=>{n=void 0} | ||
@@ -1262,4 +1275,4 @@ const o=t=>{n=void 0 | ||
return{trigger:(...e)=>{if(!n)try{const s=t.apply(null,e) | ||
sr(s)?n=s.then(r,o):r()}catch(t){o(t)}},getRunningPromise:()=>n}} | ||
const Uo=(t,e=Io,...n)=>{let r=[] | ||
cr(s)?n=s.then(r,o):r()}catch(t){o(t)}},getRunningPromise:()=>n}} | ||
const Ko=(t,e=zo,...n)=>{let r=[] | ||
const o=e(()=>{const e=r | ||
@@ -1270,24 +1283,24 @@ r=[] | ||
o()}} | ||
const qo=(t,e=0)=>{let n=0 | ||
const Qo=(t,e=0)=>{let n=0 | ||
for(;e>n;){t(n,e) | ||
n++}} | ||
const Qo=async(t,e=0,n=0)=>{let r=0 | ||
for(;e>r;){const o=jo() | ||
const Vo=async(t,e=0,n=0)=>{let r=0 | ||
for(;e>r;){const o=Po() | ||
await t(r,e) | ||
r++ | ||
const s=n-(jo()-o) | ||
s>0&&await $o(s)}} | ||
const Vo=(t,e=1/0)=>{let n=0 | ||
const s=n-(Po()-o) | ||
s>0&&await _o(s)}} | ||
const Ho=(t,e=1/0)=>{let n=0 | ||
for(;;)try{return t(n,e)}catch(t){if(e<++n)throw t}} | ||
const Ko=async(t,e=1/0,n=0)=>{let r=0 | ||
for(;;){const o=jo() | ||
const Go=async(t,e=1/0,n=0)=>{let r=0 | ||
for(;;){const o=Po() | ||
try{return await t(r,e)}catch(t){if(e<++r)throw t | ||
const s=n-(jo()-o) | ||
s>0&&await $o(s)}}} | ||
const Ho=(t,e)=>Go(t(),e) | ||
const Go=(t,e)=>{let n=null | ||
const s=n-(Po()-o) | ||
s>0&&await _o(s)}}} | ||
const Yo=(t,e)=>Wo(t(),e) | ||
const Wo=(t,e)=>{let n=null | ||
return Promise.race([t,new Promise((t,r)=>{n=setTimeout(()=>r(new Error(`timeout after: ${e}`)),e)})]).then(t=>{clearTimeout(n) | ||
return t},t=>{clearTimeout(n) | ||
throw t})} | ||
const Yo=()=>{let t,e | ||
const Jo=()=>{let t,e | ||
return{promise:new Promise((n,r)=>{t=n | ||
@@ -1299,8 +1312,8 @@ e=r}),resolve:n=>{const r=t | ||
r&&r(n)}}} | ||
const Jo=(t=0,e=!0)=>({A:()=>t,B:()=>++t,C:()=>--t,D:()=>e,E:()=>e=!1}) | ||
const Wo=(t=(t=>{}))=>{let e=Jo() | ||
const Xo=(t=0,e=!0)=>({A:()=>t,B:()=>++t,C:()=>--t,D:()=>e,E:()=>e=!1}) | ||
const Zo=(t=(t=>{}))=>{let e=Xo() | ||
let n=Promise.resolve("QUEUE_HEAD") | ||
return{reset:()=>{e.E() | ||
e=Jo() | ||
n=Promise.resolve("QUEUE_HEAD")},getLength:()=>e.A(),pushTask:r=>{const{promise:o,resolve:s}=Yo() | ||
e=Xo() | ||
n=Promise.resolve("QUEUE_HEAD")},getLength:()=>e.A(),pushTask:r=>{const{promise:o,resolve:s}=Jo() | ||
const a=n.then(r) | ||
@@ -1312,5 +1325,5 @@ a.catch(t).then(()=>{e.C() | ||
return a}}} | ||
const Xo=({laneSize:t,selectLane:e=Zo})=>{if(!((t=Number(t))>=1))throw new Error(`invalid laneSize: ${t}`) | ||
const ts=({laneSize:t,selectLane:e=es})=>{if(!((t=Number(t))>=1))throw new Error(`invalid laneSize: ${t}`) | ||
const n=[] | ||
for(let e=0;e<t;e++)n.push({index:e,infoQueue:[],taskQueue:Wo()}) | ||
for(let e=0;e<t;e++)n.push({index:e,infoQueue:[],taskQueue:Zo()}) | ||
return{reset:()=>n.forEach(({taskQueue:t,infoQueue:e})=>{t.reset() | ||
@@ -1322,4 +1335,4 @@ e.length=0}),getStatus:t=>n.map(({index:e,infoQueue:n,taskQueue:r})=>({index:t?e:void 0,infoQueue:t?n:n.length,taskQueue:r.getLength()})),trimInfoQueue:()=>n.forEach(({taskQueue:t,infoQueue:e})=>{e.length=t.getLength()}),pushTask:(t,r)=>{const{index:o,taskQueue:s,infoQueue:a}=e(n,r) | ||
return c}}} | ||
const Zo=t=>t.reduce((t,e)=>t.taskQueue.getLength()>e.taskQueue.getLength()?e:t,t[0]) | ||
const ts=({clearRunner:t=(()=>{}),resetRunner:e=((t,e)=>{}),getTaskId:n,getTaskInitialState:r=(t=>t),runTask:o})=>{const{reset:s,getLength:a,pushTask:c}=Wo() | ||
const es=t=>t.reduce((t,e)=>t.taskQueue.getLength()>e.taskQueue.getLength()?e:t,t[0]) | ||
const ns=({clearRunner:t=(()=>{}),resetRunner:e=((t,e)=>{}),getTaskId:n,getTaskInitialState:r=(t=>t),runTask:o})=>{const{reset:s,getLength:a,pushTask:c}=Zo() | ||
const i=new Map | ||
@@ -1333,29 +1346,29 @@ const d=t=>i.get(t) | ||
return t()},getStatus:t=>({taskQueue:a(),taskStateMap:i.size,taskStateList:t?Array.from(i.entries()):void 0}),getQueueLength:a,getTaskState:d,startTask:t=>{const s=n(t) | ||
return i.get(s)||((t,n)=>{const s=c(()=>o(t,{getTaskState:d,updateTaskState:u})).then(e=>u(t,{result:e,promise:null,endAt:Ro()})).catch(n=>{u(t,{error:n,promise:null,endAt:Ro()}) | ||
return i.get(s)||((t,n)=>{const s=c(()=>o(t,{getTaskState:d,updateTaskState:u})).then(e=>u(t,{result:e,promise:null,endAt:$o()})).catch(n=>{u(t,{error:n,promise:null,endAt:$o()}) | ||
return e(n,t)}) | ||
const a=r({id:t,option:n,promise:s,error:null,result:null,startAt:Ro(),endAt:null}) | ||
const a=r({id:t,option:n,promise:s,error:null,result:null,startAt:$o(),endAt:null}) | ||
i.set(t,a) | ||
return a})(s,t)},endTask:l,autoEndTask:t=>{const e=Ro()-Math.abs(t) | ||
return a})(s,t)},endTask:l,autoEndTask:t=>{const e=$o()-Math.abs(t) | ||
i.forEach((t,n)=>{t.endAt&&t.endAt<=e&&l(n)})}}} | ||
const es=({runnerList:t=[],getRunnerByTaskId:e,selectRunner:n=ns})=>({clear:()=>t.map(t=>t.clear()),getStatus:e=>t.map(t=>t.getStatus(e)),getQueueLength:()=>t.map(t=>t.getQueueLength()),getTaskState:n=>{const r=e(t,n) | ||
const rs=({runnerList:t=[],getRunnerByTaskId:e,selectRunner:n=os})=>({clear:()=>t.map(t=>t.clear()),getStatus:e=>t.map(t=>t.getStatus(e)),getQueueLength:()=>t.map(t=>t.getQueueLength()),getTaskState:n=>{const r=e(t,n) | ||
return r&&r.getTaskState(n)},startTask:e=>n(t,e).startTask(e),endTask:n=>{const r=e(t,n) | ||
return r&&r.endTask(n)},autoEndTask:e=>t.forEach(t=>t.autoEndTask(e))}) | ||
const ns=t=>t.reduce((t,e)=>t.getQueueLength()>e.getQueueLength()?e:t,t[0]) | ||
const rs=["","▏","▎","▍","▋","▊","▉"] | ||
const os=t=>rs[Math.floor(Ze(t,0,1)*(rs.length-1))] | ||
const ss=t=>{let e="" | ||
for(;t>0;){e+=os(t) | ||
const os=t=>t.reduce((t,e)=>t.getQueueLength()>e.getQueueLength()?e:t,t[0]) | ||
const ss=["","▏","▎","▍","▋","▊","▉"] | ||
const as=t=>ss[Math.floor(en(t,0,1)*(ss.length-1))] | ||
const cs=t=>{let e="" | ||
for(;t>0;){e+=as(t) | ||
t-=1}return e} | ||
const as=({valueList:t=[],valueMax:e=t.reduce((t,e)=>Math.max(t,e),-1/0),valueMin:n=t.reduce((t,e)=>Math.min(t,e),1/0),width:r=20})=>t.map(t=>ss(Ze(t,n,e)/(e-n)*r)) | ||
const cs=(...t)=>`@/${t.join("/")}` | ||
const is=(...t)=>t.reduce((t,e)=>{const n=Array.isArray(e)?e:[e] | ||
const is=({valueList:t=[],valueMax:e=t.reduce((t,e)=>Math.max(t,e),-1/0),valueMin:n=t.reduce((t,e)=>Math.min(t,e),1/0),width:r=20})=>t.map(t=>cs(en(t,n,e)/(e-n)*r)) | ||
const ds=(...t)=>`@/${t.join("/")}` | ||
const us=(...t)=>t.reduce((t,e)=>{const n=Array.isArray(e)?e:[e] | ||
const r=[] | ||
t.forEach(t=>n.forEach(e=>r.push(`${t}/${e}`))) | ||
return r},["@"]) | ||
const ds=({keyCount:t})=>{const e={} | ||
const ls=({keyCount:t})=>{const e={} | ||
return{set:(n,r)=>r.forEach(r=>{if(t!==r.length)throw new Error(`invalid keySelectorList length: ${r.length}, expect: ${t}`) | ||
is(...r).forEach(t=>{if(e[t])throw new Error(`duplicate switchKey: ${t}`) | ||
us(...r).forEach(t=>{if(e[t])throw new Error(`duplicate switchKey: ${t}`) | ||
e[t]=n})}),get:(...n)=>{if(t!==n.length)throw new Error(`invalid keyCount: ${n.length}, expect: ${t}`) | ||
return e[cs(...n)]},verifyFull:(...n)=>{if(t!==n.length)throw new Error(`invalid keyCount: ${n.length}, expect: ${t}`) | ||
const r=is(...n) | ||
return e[ds(...n)]},verifyFull:(...n)=>{if(t!==n.length)throw new Error(`invalid keyCount: ${n.length}, expect: ${t}`) | ||
const r=us(...n) | ||
const o=Object.keys(e) | ||
@@ -1366,5 +1379,45 @@ if(r.length!==o.length){const t=r.filter(t=>!o.includes(t)) | ||
throw new Error("[verifyFull] not all possible key is set")}}}} | ||
const us=[] | ||
const ls=[] | ||
const hs=(t,e)=>{if(t===e)return 0 | ||
const hs=(t,e)=>t<e?-1:t>e?1:0 | ||
const ps=(t,e)=>t.localeCompare(e) | ||
const fs=(t="",e="")=>{if(t===e)return 0 | ||
let n=-1 | ||
let r,o | ||
do{n++ | ||
r=t.charCodeAt(n) | ||
o=e.charCodeAt(n)}while(r===o) | ||
const s=ys(r) | ||
const a=ys(o) | ||
return s&&(a||ys(e.charCodeAt(n-1)))||a&&(s||ys(t.charCodeAt(n-1)))?gs(t,s?n:n-1)-gs(e,a?n:n-1):(r||0)-(o||0)} | ||
const ys=t=>t>=48&&t<=57 | ||
const gs=(t="",e)=>{let n=e-1 | ||
let r=e+1 | ||
for(;ys(t.charCodeAt(n));)n-- | ||
for(;ys(t.charCodeAt(r));)r++ | ||
return Number(t.slice(n+1,r))} | ||
const ms=/[\w-]+/ | ||
const vs=({NAME_KEY:t="key",NAME_SUB_LIST:e="subList"})=>{if(!ms.test(t))throw new Error(`expect ${t} to match: ${ms}`) | ||
if(!ms.test(e))throw new Error(`expect ${e} to match: ${ms}`) | ||
const n=new RegExp(`"},{"${t}":"`,"g") | ||
const r=new RegExp(`(?:","${e}":|^)\\[{"${t}":"`,"g") | ||
const o=new RegExp(`"((?:}])+)(?:},{"${t}":"|$)`,"g") | ||
const s=new RegExp(",","g") | ||
const a=new RegExp("\\[","g") | ||
const c=new RegExp("(]+)","g") | ||
return{stringify:t=>JSON.stringify(t).replace(r,"[").replace(o,(t,e)=>"]".repeat(e.length/2)).replace(n,","),parse:n=>JSON.parse(n.replace(s,`"},{"${t}":"`).replace(c,(e,n,r,o)=>`"${"}]".repeat(n.length)}${r+e.length!==o.length?`},{"${t}":"`:""}`).replace(a,(n,r)=>`${0!==r?`","${e}":`:""}[{"${t}":"`)),createBuilder:n=>{const r=new Map | ||
const o=n=>{const a={[t]:n} | ||
const c=r.get(n) | ||
r.delete(n) | ||
void 0!==c&&0!==c.length&&(a[e]=c.sort(s).map(([t])=>o(t))) | ||
return a} | ||
const s=([t,e],[n,r])=>e-r||hs(t,n) | ||
return{add:(t,e,n)=>{let o=r.get(n) | ||
if(void 0===o){o=[] | ||
r.set(n,o)}o.push([t,e])},build:()=>{const s=[] | ||
let a=n | ||
for(;a;){const{[e]:t}=o(a) | ||
void 0!==t&&s.push(...t) | ||
a=r.keys().next().value}return 0===s.length?{[t]:n}:{[t]:n,[e]:s}}}}}} | ||
const ws=[] | ||
const xs=[] | ||
const bs=(t,e)=>{if(t===e)return 0 | ||
t.length>e.length&&([t,e]=[e,t]) | ||
@@ -1379,4 +1432,4 @@ let n=t.length | ||
let s=0 | ||
for(;s<n;){ls[s]=t.charCodeAt(o+s) | ||
us[s]=++s}let a,c,i,d | ||
for(;s<n;){xs[s]=t.charCodeAt(o+s) | ||
ws[s]=++s}let a,c,i,d | ||
let u=0 | ||
@@ -1386,20 +1439,58 @@ for(;u<r;){a=e.charCodeAt(o+u) | ||
c=u | ||
for(s=0;s<n;s++){d=a===ls[s]?i:i+1 | ||
i=us[s] | ||
c=us[s]=i>c?d>c?c+1:d:d>i?i+1:d}}return c} | ||
const fs="application/octet-stream" | ||
const ps=["application/gzip;gz","application/javascript;js;mjs","application/json","application/pdf","application/xml","application/x-7z-compressed;7z","application/x-tar;tar","application/zip","audio/midi;mid","audio/mpeg;mp3","audio/ogg","audio/wav","audio/webm;weba","audio/x-flac;flac","font/ttf","font/otf","font/woff","font/woff2","image/bmp","image/gif","image/jpeg;jpg","image/png","image/svg+xml;svg","image/webp","image/x-icon;ico","text/css","text/csv","text/html;htm","text/plain;txt;text;conf;log;ini","text/rtf","text/xml","video/mp4;mp4v;mpg4","video/mpeg;mpg","video/webm","video/x-flv;flv","video/x-ms-wmv;wmv","video/x-msvideo;avi"].reduce((t,e)=>{const[n]=e.split(";") | ||
for(s=0;s<n;s++){d=a===xs[s]?i:i+1 | ||
i=ws[s] | ||
c=ws[s]=i>c?d>c?c+1:d:d>i?i+1:d}}return c} | ||
const Es="application/octet-stream" | ||
const As=["application/gzip;gz","application/javascript;js;mjs","application/json","application/pdf","application/xml","application/x-7z-compressed;7z","application/x-tar;tar","application/zip","audio/midi;mid","audio/mpeg;mp3","audio/ogg","audio/wav","audio/webm;weba","audio/x-flac;flac","font/ttf","font/otf","font/woff","font/woff2","image/bmp","image/gif","image/jpeg;jpg","image/png","image/svg+xml;svg","image/webp","image/x-icon;ico","text/css","text/csv","text/html;htm","text/plain;txt;text;conf;log;ini","text/rtf","text/xml","video/mp4;mp4v;mpg4","video/mpeg;mpg","video/webm","video/x-flv;flv","video/x-ms-wmv;wmv","video/x-msvideo;avi"].reduce((t,e)=>{const[n]=e.split(";") | ||
e.split("/")[1].split(";").forEach(e=>t[e]=n) | ||
return t},{}) | ||
const ys=/\.(\w+)$/ | ||
const gs=t=>{const e=ys.exec(t) | ||
return e&&ps[e[1]]||fs} | ||
const ms=(t,e)=>void 0===t[e]?t[e]={}:t[e] | ||
const vs=(t,e)=>{const n=[] | ||
const Ms=/\.(\w+)$/ | ||
const Ss=t=>{const e=Ms.exec(t) | ||
return e&&As[e[1]]||Es} | ||
const Os=({NAME_KEY:t="key",NAME_MODIFY_TIME:e="mtime",EPSILON_MODIFY_TIME:n=1,isChanged:r=((t,n)=>t[e]!==n[e]),shouldApplyDelete:o=((t,n)=>t[e]>=n[e]),shouldApplyUpdate:s=((t,n)=>t[e]>n[e]),getPatchData:a=((t,r)=>t[e]<r[e]?Object.assign({},t,{[e]:r[e]+n}):t)})=>{const c=(e,n)=>e.set(n[t],n) | ||
return{NAME_KEY:t,NAME_MODIFY_TIME:e,isChanged:r,shouldApplyDelete:o,shouldApplyUpdate:s,hasPatch:(e,n)=>{for(let o=0,s=n.length;o<s;o++){const s=n[o] | ||
const a=s[t] | ||
const c=e.get(a) | ||
if(void 0===c)return!0 | ||
if(r(c,s))return!0 | ||
e.delete(a)}return e.size>=1},countPatch:(e,n)=>{let o=0 | ||
for(let s=0,a=n.length;s<a;s++){const a=n[s] | ||
const c=a[t] | ||
const i=e.get(c) | ||
void 0===i?o++:r(i,a)&&o++ | ||
e.delete(c)}return o+e.size},generatePatch:(n,o)=>{const s=[] | ||
const c=[] | ||
for(let i=0,d=o.length;i<d;i++){const d=o[i] | ||
const u=d[t] | ||
const l=n.get(u) | ||
void 0===l?s.push({[t]:u,[e]:d[e]}):r(l,d)&&c.push(a(l,d)) | ||
n.delete(u)}n.forEach(t=>{c.push(t)}) | ||
return{deleteList:s,updateList:c}},applyPatch:(e,n,r,a)=>{let i=!1 | ||
const d=e.reduce(c,new Map) | ||
const u=n.reduce(c,new Map) | ||
for(const e of r){const n=e[t] | ||
const r=d.get(n) | ||
if(void 0!==r&&o(r,e)){a(void 0,e) | ||
i=!0 | ||
continue}const c=u.get(n) | ||
if(void 0!==c){u.delete(n) | ||
if(s(c,e)){a(c,e) | ||
i=!0 | ||
continue}}a(e,e)}u.forEach(t=>{a(t,void 0) | ||
i=!0}) | ||
return i},arrayMapReducer:c}} | ||
const Ls=t=>{const{NAME_KEY:e,hasPatch:n,countPatch:r,generatePatch:o,applyPatch:s}=t | ||
return{hasObjectPatch:(t,e)=>n(new Map(Object.entries(t)),Object.values(e)),countObjectPatch:(t,e)=>r(new Map(Object.entries(t)),Object.values(e)),generateObjectPatch:(t,e)=>o(new Map(Object.entries(t)),Object.values(e)),applyObjectPatch:(t,{deleteList:n,updateList:r})=>{const o={} | ||
return s(n,r,Object.values(t),(t,n)=>{void 0!==t&&(o[t[e]]=t)})?o:t}}} | ||
const Ts=t=>{const{hasPatch:e,countPatch:n,generatePatch:r,applyPatch:o,arrayMapReducer:s}=t | ||
return{hasArrayWithKeyPatch:(t,n)=>e(t.reduce(s,new Map),n),countArrayWithKeyPatch:(t,e)=>n(t.reduce(s,new Map),e),generateArrayWithKeyPatch:(t,e)=>r(t.reduce(s,new Map),e),applyArrayWithKeyPatch:(t,{deleteList:e,updateList:n})=>{const r=[] | ||
return o(e,n,t,(t,e)=>{void 0!==t&&r.push(t)})?r:t}}} | ||
const ks=(t,e)=>void 0===t[e]?t[e]={}:t[e] | ||
const js=(t,e)=>{const n=[] | ||
return{routeNode:t=e.split("/").reduce((t,r)=>{if("*"===r){n.push("/*") | ||
return ms(t,"/*")}if(":"===r[0]){const o=r.slice(1) | ||
return ks(t,"/*")}if(":"===r[0]){const o=r.slice(1) | ||
if(!o||n.includes(o))throw new Error(`invalid frag [${r}] for route: ${e}`) | ||
n.push(o) | ||
return ms(t,"/:PARAM")}return ms(t,r)},t),paramNameList:n}} | ||
const ws=(t,e)=>{const n=[] | ||
return ks(t,"/:PARAM")}return ks(t,r)},t),paramNameList:n}} | ||
const Ds=(t,e)=>{const n=[] | ||
const r=e.split("/") | ||
@@ -1412,9 +1503,9 @@ for(let e=0,o=r.length;e<o;e++){const o=r[e] | ||
t=t["/:PARAM"]}}return{routeNode:t,paramValueList:n}} | ||
const xs=(t={},e="/",n)=>{if(Array.isArray(e))return e.reduce((e,r)=>xs(t,r,n),t) | ||
const{routeNode:r,paramNameList:o}=vs(t,e) | ||
const Cs=(t={},e="/",n)=>{if(Array.isArray(e))return e.reduce((e,r)=>Cs(t,r,n),t) | ||
const{routeNode:r,paramNameList:o}=js(t,e) | ||
if(r["/DATA"])throw new Error(`duplicate route: ${e}`) | ||
r["/DATA"]={route:e,paramNameList:o,data:n} | ||
return t} | ||
const bs=t=>t.reduce((t,[e,n])=>xs(t,e,n),{}) | ||
const Es=(t,e)=>{const n=ws(t,e) | ||
const Rs=t=>t.reduce((t,[e,n])=>Cs(t,e,n),{}) | ||
const Ps=(t,e)=>{const n=Ds(t,e) | ||
if(void 0===n)return | ||
@@ -1426,23 +1517,6 @@ const{routeNode:r,paramValueList:o}=n | ||
return t},{}),data:c}} | ||
const As=({paramMap:t})=>t["/*"] | ||
const Ms=({paramMap:t},e)=>t[e] | ||
const Ss=(t,e)=>t<e?-1:t>e?1:0 | ||
const Ls=(t,e)=>t.localeCompare(e) | ||
const Os=(t="",e="")=>{if(t===e)return 0 | ||
let n=-1 | ||
let r,o | ||
do{n++ | ||
r=t.charCodeAt(n) | ||
o=e.charCodeAt(n)}while(r===o) | ||
const s=Ts(r) | ||
const a=Ts(o) | ||
return s&&(a||Ts(e.charCodeAt(n-1)))||a&&(s||Ts(t.charCodeAt(n-1)))?ks(t,s?n:n-1)-ks(e,a?n:n-1):(r||0)-(o||0)} | ||
const Ts=t=>t>=48&&t<=57 | ||
const ks=(t="",e)=>{let n=e-1 | ||
let r=e+1 | ||
for(;Ts(t.charCodeAt(n));)n-- | ||
for(;Ts(t.charCodeAt(r));)r++ | ||
return Number(t.slice(n+1,r))} | ||
const Ds=/^(\d+)\.(\d+)\.(\d+)(.*)$/ | ||
const Cs=t=>{let[,e,n,r,o=""]=Ds.exec(t)||[] | ||
const $s=({paramMap:t})=>t["/*"] | ||
const _s=({paramMap:t},e)=>t[e] | ||
const Bs=/^(\d+)\.(\d+)\.(\d+)(.*)$/ | ||
const Ns=t=>{let[,e,n,r,o=""]=Bs.exec(t)||[] | ||
e=parseInt(e) | ||
@@ -1453,14 +1527,14 @@ n=parseInt(n) | ||
return{major:e,minor:n,patch:r,label:o}} | ||
const js=(t,e)=>{const n=Cs(t) | ||
const r=Cs(e) | ||
return n.major-r.major||n.minor-r.minor||n.patch-r.patch||Rs(n.label,r.label)} | ||
const Rs=(t,e)=>t===e?0:e.startsWith(t)?1:t.startsWith(e)?-1:Os(t,e) | ||
const $s="1".charCodeAt(0) | ||
const Bs=(t,e,n,r=0)=>{const o=(r=Math.floor(r)).toString(2) | ||
const Fs=(t,e)=>{const n=Ns(t) | ||
const r=Ns(e) | ||
return n.major-r.major||n.minor-r.minor||n.patch-r.patch||Is(n.label,r.label)} | ||
const Is=(t,e)=>t===e?0:e.startsWith(t)?1:t.startsWith(e)?-1:fs(t,e) | ||
const zs="1".charCodeAt(0) | ||
const Us=(t,e,n,r=0)=>{const o=(r=Math.floor(r)).toString(2) | ||
const s=Math.pow(16,e) | ||
let a=r%t | ||
let c=n.getUint8(a) | ||
for(let e=0,r=o.length;e<r;e++){o.charCodeAt(e)===$s?a=(a+n.getUint8((a+1)%t))%t:c*=16 | ||
for(let e=0,r=o.length;e<r;e++){o.charCodeAt(e)===zs?a=(a+n.getUint8((a+1)%t))%t:c*=16 | ||
c=(c+n.getUint8(a))%s}return(c%Math.pow(2,4*e)).toString(16).padStart(e,"0")} | ||
const Ps=({tag:t=Ro().toString(36),size:e=65536,tokenSize:n=8,timeGap:r=30})=>{if(!/^\w*$/.test(t))throw new Error(`invalid tag: ${t}`) | ||
const qs=({tag:t=$o().toString(36),size:e=65536,tokenSize:n=8,timeGap:r=30})=>{if(!/^\w*$/.test(t))throw new Error(`invalid tag: ${t}`) | ||
if(!Number.isInteger(e)||e<=1024||e%32)throw new Error(`invalid size: ${e}`) | ||
@@ -1470,21 +1544,21 @@ if(!Number.isInteger(n)||n>13||n<2)throw new Error(`invalid tokenSize: ${n}`) | ||
return{tag:t,size:e,tokenSize:n,timeGap:r}} | ||
const Fs=(t,e,n=Ro())=>{if("string"!=typeof e||e.length<t.tokenSize)throw new Error(`invalid checkCode: ${e}`) | ||
Ns(t,Us(e),n)} | ||
const Ns=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o},[s,a,c],i=Ro())=>{if(s!==t)throw new Error(`tag mismatch: ${s}, expect: ${t}`) | ||
const Ks=(t,e,n=$o())=>{if("string"!=typeof e||e.length<t.tokenSize)throw new Error(`invalid checkCode: ${e}`) | ||
Qs(t,Ys(e),n)} | ||
const Qs=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o},[s,a,c],i=$o())=>{if(s!==t)throw new Error(`tag mismatch: ${s}, expect: ${t}`) | ||
if(Math.abs(i-a)>r)throw new Error(`timestamp mismatch: ${a}, expect: ${i}±${r}`) | ||
const d=Bs(e,n,o,a/r) | ||
const d=Us(e,n,o,a/r) | ||
if(d!==c)throw new Error(`code mismatch: ${c}, expect: ${d}`)} | ||
const Is=t=>{t=Ps(t) | ||
return Object.assign({},t,{dataView:new DataView(Object(Lo.a)(t.size))})} | ||
const _s=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o},s=Ro())=>{const a=Bs(e,n,o,s/r) | ||
return zs(t,s,a)} | ||
const zs=(t,e,n)=>re([t,e.toString(36),n].join("-")) | ||
const Us=t=>{const e=re(t).split("-") | ||
const Vs=t=>{t=qs(t) | ||
return Object.assign({},t,{dataView:new DataView(Object(To.a)(t.size))})} | ||
const Hs=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o},s=$o())=>{const a=Us(e,n,o,s/r) | ||
return Gs(t,s,a)} | ||
const Gs=(t,e,n)=>se([t,e.toString(36),n].join("-")) | ||
const Ys=t=>{const e=se(t).split("-") | ||
e[1]=Number.parseInt(e[1],36) | ||
return e} | ||
const qs=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o})=>Lt(JSON.stringify([t,e,n,r]),o.buffer) | ||
const Qs=t=>{const[e,n]=Ot(t) | ||
const Ws=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o})=>Tt(JSON.stringify([t,e,n,r]),o.buffer) | ||
const Js=t=>{const[e,n]=kt(t) | ||
const[r,o,s,a]=JSON.parse(e) | ||
return{tag:r,size:o,tokenSize:s,timeGap:a,dataView:new DataView(n)}} | ||
const Vs=()=>{let t | ||
const Xs=()=>{let t | ||
let e | ||
@@ -1498,58 +1572,58 @@ let n | ||
o() | ||
return{clear:o,pushFunc:e=>{t.push(e)},setFunc:(t,r)=>{e=zn(e,t,r) | ||
n=Object.values(e)},deleteFunc:t=>{e=Un(e,t) | ||
return{clear:o,pushFunc:e=>{t.push(e)},setFunc:(t,r)=>{e=qn(e,t,r) | ||
n=Object.values(e)},deleteFunc:t=>{e=Kn(e,t) | ||
n=Object.values(e)},update:()=>{const e=Date.now() | ||
const o=e-r | ||
const s=t=>t(o*Co) | ||
const s=t=>t(o*Ro) | ||
r=e | ||
t.length&&(t=t.filter(s)) | ||
n.forEach(s)}}} | ||
const Ks=({delay:t,queueTask:e=Bo,cancelTask:n=Po}={})=>{const{clear:r,pushFunc:o,setFunc:s,deleteFunc:a,update:c}=Vs() | ||
const Zs=({delay:t,queueTask:e=Bo,cancelTask:n=No}={})=>{const{clear:r,pushFunc:o,setFunc:s,deleteFunc:a,update:c}=Xs() | ||
const{start:i,stop:d}=Fo({func:c,queueTask:e,cancelTask:n,delay:t}) | ||
return{start:i,stop:d,clear:r,pushFunc:o,setFunc:s,deleteFunc:a}} | ||
const Hs=(t,e)=>{Object.entries(e).forEach(([e,n])=>{const r=t[e] | ||
r!==n&&(t[e]=Zn(r)&&Zn(n)?Hs(r,n):n)}) | ||
const ta=(t,e)=>{Object.entries(e).forEach(([e,n])=>{const r=t[e] | ||
r!==n&&(t[e]=er(r)&&er(n)?ta(r,n):n)}) | ||
return t} | ||
const Gs=(t,e=Ls)=>{Object.keys(t).sort(e).forEach(e=>{const n=t[e] | ||
const ea=(t,e=ps)=>{Object.keys(t).sort(e).forEach(e=>{const n=t[e] | ||
delete t[e] | ||
t[e]=n}) | ||
return t} | ||
const Ys=/\n/g | ||
const Js=(t,e=" ",n=e)=>`${n}${t.replace(Ys,`\n${e}`)}` | ||
const Ws=(t,e=[],n=" - ",r=" ".repeat(n.length))=>[t,...e.map(t=>Js(t,r,n))].join("\n") | ||
const Xs=(t="",e=64,n=32,r=16)=>t.length>e?`${t.slice(0,n)}...${r>0?t.slice(-r):""} (+${t.length-n-r})`:t | ||
const Zs=/[^A-Z]/ | ||
const ta=/([^A-Z]|[A-Z]{2,})([A-Z])/g | ||
const ea=t=>Zs.test(t)?t.replace(ta,"$1 $2").split(" "):[t] | ||
const na=t=>t.split("_") | ||
const ra=t=>t.split("-") | ||
const oa=(t,e=1)=>t.reduce((t,n,r)=>t+(r<e?n:ca(n)),"") | ||
const sa=t=>t.join("_").toUpperCase() | ||
const aa=t=>t.join("-").toLowerCase() | ||
const ca=t=>t.charAt(0).toUpperCase()+t.slice(1) | ||
const ia={'"':""","&":"&","'":"'","<":"<",">":">"} | ||
const da=/["&'<>]/g | ||
const ua=t=>ia[t]||t | ||
const la=t=>t&&t.replace(da,ua) | ||
const ha={""":'"',""":'"',"&":"&","&":"&","'":"'","'":"'","<":"<","<":"<",">":">",">":">"} | ||
const fa=/&(?:#34|quot|#38|amp|#39|apos|#60|lt|#62|gt);/g | ||
const pa=t=>ha[t]||t | ||
const ya=t=>t&&t.replace(fa,pa) | ||
const ga=/[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm | ||
const ma=t=>t.replace(ga,"") | ||
const{Blob:va,FileReader:wa}=window | ||
const xa=t=>e=>new Promise((n,r)=>{const o=new wa | ||
const na=/\n/g | ||
const ra=(t,e=" ",n=e)=>`${n}${t.replace(na,`\n${e}`)}` | ||
const oa=(t,e=[],n=" - ",r=" ".repeat(n.length))=>[t,...e.map(t=>ra(t,r,n))].join("\n") | ||
const sa=(t="",e=64,n=32,r=16)=>t.length>e?`${t.slice(0,n)}...${r>0?t.slice(-r):""} (+${t.length-n-r})`:t | ||
const aa=/[^A-Z]/ | ||
const ca=/([^A-Z]|[A-Z]{2,})([A-Z])/g | ||
const ia=t=>aa.test(t)?t.replace(ca,"$1 $2").split(" "):[t] | ||
const da=t=>t.split("_") | ||
const ua=t=>t.split("-") | ||
const la=(t,e=1)=>t.reduce((t,n,r)=>t+(r<e?n:fa(n)),"") | ||
const ha=t=>t.join("_").toUpperCase() | ||
const pa=t=>t.join("-").toLowerCase() | ||
const fa=t=>t.charAt(0).toUpperCase()+t.slice(1) | ||
const ya={'"':""","&":"&","'":"'","<":"<",">":">"} | ||
const ga=/["&'<>]/g | ||
const ma=t=>ya[t]||t | ||
const va=t=>t&&t.replace(ga,ma) | ||
const wa={""":'"',""":'"',"&":"&","&":"&","'":"'","'":"'","<":"<","<":"<",">":">",">":">"} | ||
const xa=/&(?:#34|quot|#38|amp|#39|apos|#60|lt|#62|gt);/g | ||
const ba=t=>wa[t]||t | ||
const Ea=t=>t&&t.replace(xa,ba) | ||
const Aa=/[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm | ||
const Ma=t=>t.replace(Aa,"") | ||
const{Blob:Sa,FileReader:Oa}=window | ||
const La=t=>e=>new Promise((n,r)=>{const o=new Oa | ||
o.addEventListener("error",r) | ||
o.addEventListener("load",()=>n(o.result)) | ||
o[t](e)}) | ||
const ba=xa("readAsText") | ||
const Ea=xa("readAsDataURL") | ||
const Aa=xa("readAsArrayBuffer") | ||
const Ma=new va | ||
const Sa=(t,e=Ma)=>new va([...Mt(xt(t)),e]) | ||
const La=async t=>{const e=new DataView(await Aa(t.slice(0,Et))).getUint32(0,!1) | ||
return[wt(await Aa(t.slice(Et,Et+e))),t.slice(Et+e)]} | ||
const Oa=({eventSource:t=window.document,isSkipPreventDefault:e=!1})=>{const n=new Map | ||
const Ta=La("readAsText") | ||
const ka=La("readAsDataURL") | ||
const ja=La("readAsArrayBuffer") | ||
const Da=new Sa | ||
const Ca=(t,e=Da)=>new Sa([...Ot(Et(t)),e]) | ||
const Ra=async t=>{const e=new DataView(await ja(t.slice(0,Mt))).getUint32(0,!1) | ||
return[bt(await ja(t.slice(Mt,Mt+e))),t.slice(Mt+e)]} | ||
const Pa=({eventSource:t=window.document,isSkipPreventDefault:e=!1})=>{const n=new Map | ||
const r=t=>n.forEach(n=>{const{target:r,checkMap:o,callback:s}=n | ||
if((!r||r.contains(t.target))&&er(t,o)){!e&&t.preventDefault() | ||
if((!r||r.contains(t.target))&&rr(t,o)){!e&&t.preventDefault() | ||
s(t,n)}}) | ||
@@ -1559,6 +1633,6 @@ let o=!1 | ||
o=!0},stop:()=>{t.removeEventListener("keydown",r) | ||
o=!1},addKeyCommand:({id:t=Object(Lo.b)(),target:e,checkMap:r,callback:o})=>{n.set(t,{id:t,target:e,checkMap:r,callback:o}) | ||
o=!1},addKeyCommand:({id:t=Object(To.b)(),target:e,checkMap:r,callback:o})=>{n.set(t,{id:t,target:e,checkMap:r,callback:o}) | ||
return t},deleteKeyCommand:({id:t})=>n.delete(t)}} | ||
const Ta={START:"START",MOVE:"MOVE",END:"END",CANCEL:"CANCEL"} | ||
const ka=({element:t,onEvent:e,isGlobal:n=!1,isCancel:r=!0,isCancelOnOutOfBound:o=!0,isUseTouchEvent:s=!0})=>{!window.getComputedStyle(t).touchAction&&console.warn("[applyPointerEventListener] should set CSS 'touch-action' to 'none' to prevent browser defaults") | ||
const $a={START:"START",MOVE:"MOVE",END:"END",CANCEL:"CANCEL"} | ||
const _a=({element:t,onEvent:e,isGlobal:n=!1,isCancel:r=!0,isCancelOnOutOfBound:o=!0,isUseTouchEvent:s=!0})=>{!window.getComputedStyle(t).touchAction&&console.warn("[applyPointerEventListener] should set CSS 'touch-action' to 'none' to prevent browser defaults") | ||
const a=n?window.document:t | ||
@@ -1583,10 +1657,10 @@ o=r&&o | ||
s&&r&&a.removeEventListener("touchcancel",w)} | ||
const f=s&&window.TouchEvent?t=>t instanceof window.TouchEvent?t.touches.length?{x:t.touches[0].clientX,y:t.touches[0].clientY}:{x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY}:{x:t.clientX,y:t.clientY}:t=>({x:t.clientX,y:t.clientY}) | ||
const p=t=>{if(t!==u){const e=jo() | ||
const n=f(t) | ||
const p=s&&window.TouchEvent?t=>t instanceof window.TouchEvent?t.touches.length?{x:t.touches[0].clientX,y:t.touches[0].clientY}:{x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY}:{x:t.clientX,y:t.clientY}:t=>({x:t.clientX,y:t.clientY}) | ||
const f=t=>{if(t!==u){const e=Po() | ||
const n=p(t) | ||
u=t | ||
l={timeStart:c,pointStart:i,eventStart:d,time:e,point:n,event:t,duration:e-c,distance:xe(i,n)}}return l} | ||
l={timeStart:c,pointStart:i,eventStart:d,time:e,point:n,event:t,duration:e-c,distance:Ee(i,n)}}return l} | ||
const y=s&&window.TouchEvent?t=>t instanceof window.TouchEvent?"touchend"===t.type||"touchcancel"===t.type?0!==t.touches.length:1!==t.touches.length:!t.isPrimary||"touch"===t.pointerType:t=>!t.isPrimary | ||
const g=t=>{if(!y(t)){c=jo() | ||
i=f(t) | ||
const g=t=>{if(!y(t)){c=Po() | ||
i=p(t) | ||
d=t | ||
@@ -1600,10 +1674,10 @@ a.addEventListener("pointermove",m) | ||
s&&r&&a.addEventListener("touchcancel",w) | ||
e(Ta.START,t,p)}} | ||
e($a.START,t,f)}} | ||
const m=n=>{if(y(n))return | ||
const{point:r}=p(n) | ||
if(o&&!fe(t.getBoundingClientRect(),r))return w(n) | ||
e(Ta.MOVE,n,p)} | ||
const v=t=>{if(!y(t)){e(Ta.END,t,p) | ||
const{point:r}=f(n) | ||
if(o&&!ye(t.getBoundingClientRect(),r))return w(n) | ||
e($a.MOVE,n,f)} | ||
const v=t=>{if(!y(t)){e($a.END,t,f) | ||
h()}} | ||
const w=t=>{if(!y(t)){e(Ta.CANCEL,t,p) | ||
const w=t=>{if(!y(t)){e($a.CANCEL,t,f) | ||
h()}} | ||
@@ -1616,4 +1690,4 @@ t.addEventListener("pointerdown",g) | ||
h()}} | ||
const Da={TAP:"TAP",HOLD:"HOLD",DRAG_MOVE:"DRAG_MOVE",DRAG_END:"DRAG_END",DRAG_CANCEL:"DRAG_CANCEL"} | ||
const Ca=t=>{let{onEnhancedEvent:e,onEvent:n,holdDurationThreshold:r=500,dragDistanceThreshold:o=5}=t,s=function(t,e){if(null==t)return{} | ||
const Ba={TAP:"TAP",HOLD:"HOLD",DRAG_MOVE:"DRAG_MOVE",DRAG_END:"DRAG_END",DRAG_CANCEL:"DRAG_CANCEL"} | ||
const Na=t=>{let{onEnhancedEvent:e,onEvent:n,holdDurationThreshold:r=500,dragDistanceThreshold:o=5}=t,s=function(t,e){if(null==t)return{} | ||
var n={} | ||
@@ -1625,11 +1699,11 @@ var r=Object.keys(t) | ||
let a=!1 | ||
return ka(Object.assign({onEvent:(t,s,c)=>{const i=c(s) | ||
switch(t){case Ta.START:a=!1 | ||
return _a(Object.assign({onEvent:(t,s,c)=>{const i=c(s) | ||
switch(t){case $a.START:a=!1 | ||
break | ||
case Ta.MOVE:(a|=i.distance>=o)&&e(Da.DRAG_MOVE,i) | ||
case $a.MOVE:(a|=i.distance>=o)&&e(Ba.DRAG_MOVE,i) | ||
break | ||
case Ta.END:a?e(Da.DRAG_END,i):i.duration>=r?e(Da.HOLD,i):e(Da.TAP,i) | ||
case $a.END:a?e(Ba.DRAG_END,i):i.duration>=r?e(Ba.HOLD,i):e(Ba.TAP,i) | ||
break | ||
case Ta.CANCEL:a&&e(Da.DRAG_CANCEL,i)}n&&n(t,s,c)}},s))} | ||
const ja=(t=window.location.href)=>{const e=(e,n)=>{if("string"!=typeof e)throw new Error(`non-string href: ${e}`) | ||
case $a.CANCEL:a&&e(Ba.DRAG_CANCEL,i)}n&&n(t,s,c)}},s))} | ||
const Fa=(t=window.location.href)=>{const e=(e,n)=>{if("string"!=typeof e)throw new Error(`non-string href: ${e}`) | ||
if(e===t)return t | ||
@@ -1650,3 +1724,3 @@ const r=t | ||
window.removeEventListener("hashchange",r)}}}} | ||
const Ra=({keyPrefix:t="STATE",setItem:e=((e,n)=>window.localStorage.setItem(`${t}|${e}`,JSON.stringify(n))),getItem:n=(e=>JSON.parse(window.localStorage.getItem(`${t}|${e}`))),removeItem:r=(e=>window.localStorage.removeItem(`${t}|${e}`))})=>{let o={} | ||
const Ia=({keyPrefix:t="STATE",setItem:e=((e,n)=>window.localStorage.setItem(`${t}|${e}`,JSON.stringify(n))),getItem:n=(e=>JSON.parse(window.localStorage.getItem(`${t}|${e}`))),removeItem:r=(e=>window.localStorage.removeItem(`${t}|${e}`))})=>{let o={} | ||
let s=[] | ||
@@ -1659,3 +1733,3 @@ const a=t=>{o={} | ||
for(const e of s)!t[e]&&r(e) | ||
to(n,s)||e("@@KEY_LIST",n) | ||
no(n,s)||e("@@KEY_LIST",n) | ||
o=t | ||
@@ -1668,3 +1742,3 @@ s=n} | ||
return{reset:a,init:t=>a(Object.assign({},t,i())),save:c,load:i}} | ||
const $a=t=>{let e=null | ||
const za=t=>{let e=null | ||
const n=()=>{const n=e | ||
@@ -1675,14 +1749,14 @@ e=null | ||
e=t}} | ||
const Ba=t=>{t.stopPropagation() | ||
const Ua=t=>{t.stopPropagation() | ||
t.preventDefault()} | ||
const Pa=(t=window.document,e)=>{const n=t=>{Ba(t) | ||
const qa=(t=window.document,e)=>{const n=t=>{Ua(t) | ||
const{files:n}=t.dataTransfer | ||
n&&n.length&&e(n)} | ||
t.addEventListener("dragenter",Ba) | ||
t.addEventListener("dragover",Ba) | ||
t.addEventListener("dragenter",Ua) | ||
t.addEventListener("dragover",Ua) | ||
t.addEventListener("drop",n) | ||
return()=>{t.removeEventListener("dragenter",Ba) | ||
t.removeEventListener("dragover",Ba) | ||
return()=>{t.removeEventListener("dragenter",Ua) | ||
t.removeEventListener("dragover",Ua) | ||
t.removeEventListener("drop",n)}} | ||
const Fa=(t,e)=>{if(!t.contains(e))return[] | ||
const Ka=(t,e)=>{if(!t.contains(e))return[] | ||
let n=e | ||
@@ -1692,3 +1766,3 @@ const r=[] | ||
n=n.parentElement}return r} | ||
const Na=(t,e)=>{const n=e&&e.map(t=>{const{visibility:e}=t.style | ||
const Qa=(t,e)=>{const n=e&&e.map(t=>{const{visibility:e}=t.style | ||
t.style.visibility="hidden" | ||
@@ -1699,6 +1773,6 @@ return e}) | ||
return r} | ||
const{XMLHttpRequest:Ia,Blob:_a,TextDecoder:za}=ht.c | ||
const Ua=/[\r\n]+/ | ||
const qa=(t,{method:e="GET",headers:n,body:r,timeout:o=0,credentials:s,onUploadProgress:a,onDownloadProgress:c}={})=>new Promise((i,d)=>{const u=(n,r)=>Object.assign(new Error(n),{status:r,url:t,method:e}) | ||
const l=new Ia | ||
const{XMLHttpRequest:Va,Blob:Ha,TextDecoder:Ga}=ft.c | ||
const Ya=/[\r\n]+/ | ||
const Wa=(t,{method:e="GET",headers:n,body:r,timeout:o=0,credentials:s,onUploadProgress:a,onDownloadProgress:c}={})=>new Promise((i,d)=>{const u=(n,r)=>Object.assign(new Error(n),{status:r,url:t,method:e}) | ||
const l=new Va | ||
l.onerror=(()=>d(u("NETWORK_ERROR",-1))) | ||
@@ -1709,6 +1783,6 @@ l.ontimeout=(()=>d(u("NETWORK_TIMEOUT",-1))) | ||
if(0===e){l.abort() | ||
return d(u("HEADER_STATUS_ERROR",-1))}const n=l.getAllResponseHeaders().split(Ua).reduce((t,e)=>{const[n,...r]=e.split(":") | ||
return d(u("HEADER_STATUS_ERROR",-1))}const n=l.getAllResponseHeaders().split(Ya).reduce((t,e)=>{const[n,...r]=e.split(":") | ||
r.length&&(t[n.trim().toLowerCase()]=r.join(":").trim()) | ||
return t},{}) | ||
i(Object.assign({status:e,ok:e>=200&&e<300,headers:n},Qa(l,u)))}) | ||
i(Object.assign({status:e,ok:e>=200&&e<300,headers:n},Ja(l,u)))}) | ||
a&&l.upload&&(l.upload.onprogress=a) | ||
@@ -1722,3 +1796,3 @@ c&&(l.onprogress=c) | ||
l.send(r||null)}) | ||
const Qa=(t,e)=>{let n | ||
const Ja=(t,e)=>{let n | ||
let r | ||
@@ -1734,34 +1808,34 @@ setTimeout(()=>{if(!n){r=!0 | ||
n(t.response)}})})} | ||
const s=()=>o().then(Ka) | ||
return{arrayBuffer:o,blob:()=>o().then(Va),text:s,json:()=>s().then(Ha)}} | ||
const Va=t=>new _a([t]) | ||
const Ka=t=>(new za).decode(t) | ||
const Ha=t=>JSON.parse(t) | ||
const{fetch:Ga,navigator:Ya,caches:Ja,URL:Wa,Blob:Xa,Request:Za,Response:tc}=window | ||
const ec=(t,e={})=>Object.assign(document.createElement(t),e) | ||
const nc=async t=>(await Ga(t)).text() | ||
const rc=t=>new Promise((e,n)=>ec("img",{src:t,onerror:n,onload:t=>e(t.currentTarget)})) | ||
const oc=t=>new Promise((e,n)=>document.body.appendChild(ec("script",{src:t,async:!1,type:ps.js,onerror:n,onload:t=>e(t.currentTarget)}))) | ||
const sc=(t,e)=>{const n=ec("a",{download:t,href:e}) | ||
const s=()=>o().then(Za) | ||
return{arrayBuffer:o,blob:()=>o().then(Xa),text:s,json:()=>s().then(tc)}} | ||
const Xa=t=>new Ha([t]) | ||
const Za=t=>(new Ga).decode(t) | ||
const tc=t=>JSON.parse(t) | ||
const{fetch:ec,navigator:nc,caches:rc,URL:oc,Blob:sc,Request:ac,Response:cc}=window | ||
const ic=(t,e={})=>Object.assign(document.createElement(t),e) | ||
const dc=async t=>(await ec(t)).text() | ||
const uc=t=>new Promise((e,n)=>ic("img",{src:t,onerror:n,onload:t=>e(t.currentTarget)})) | ||
const lc=t=>new Promise((e,n)=>document.body.appendChild(ic("script",{src:t,async:!1,type:As.js,onerror:n,onload:t=>e(t.currentTarget)}))) | ||
const hc=(t,e)=>{const n=ic("a",{download:t,href:e}) | ||
document.body.appendChild(n) | ||
n.click() | ||
document.body.removeChild(n)} | ||
const ac=(t,e)=>{if(Ya.msSaveOrOpenBlob)return Ya.msSaveOrOpenBlob(e,t) | ||
const n=Wa.createObjectURL(e) | ||
sc(t,n) | ||
setTimeout(()=>Wa.revokeObjectURL(n),5e3)} | ||
const cc=(t,e,n=ps.txt)=>ac(t,new Xa([e],{type:n})) | ||
const ic=(t,e,n=ps.json)=>cc(t,JSON.stringify(e),n) | ||
const dc=async(t,e,n)=>{const r=await Ja.open(t) | ||
await r.put(new Za(e),new tc(n)) | ||
const pc=(t,e)=>{if(nc.msSaveOrOpenBlob)return nc.msSaveOrOpenBlob(e,t) | ||
const n=oc.createObjectURL(e) | ||
hc(t,n) | ||
setTimeout(()=>oc.revokeObjectURL(n),5e3)} | ||
const fc=(t,e,n=As.txt)=>pc(t,new sc([e],{type:n})) | ||
const yc=(t,e,n=As.json)=>fc(t,JSON.stringify(e),n) | ||
const gc=async(t,e,n)=>{const r=await rc.open(t) | ||
await r.put(new ac(e),new cc(n)) | ||
return{bucketName:t,key:e}} | ||
const uc=async(t,e)=>{const n=await Ja.open(t) | ||
const r=await n.match(new Za(e)) | ||
const mc=async(t,e)=>{const n=await rc.open(t) | ||
const r=await n.match(new ac(e)) | ||
return r&&r.arrayBuffer()} | ||
const lc=async(t,e)=>{if(!e)return Ja.delete(t) | ||
const n=await Ja.open(t) | ||
return n&&n.delete(new Za(e))} | ||
const vc=async(t,e)=>{if(!e)return rc.delete(t) | ||
const n=await rc.open(t) | ||
return n&&n.delete(new ac(e))} | ||
n.d(e,"Env",()=>r) | ||
n.d(e,"Common",()=>J) | ||
n.d(e,"Browser",()=>dt)}])},"object"==typeof exports&&"object"==typeof module?module.exports=factory():"function"==typeof define&&define.amd?define([],factory):"object"==typeof exports?exports.Dr=factory():root.Dr=factory() | ||
n.d(e,"Common",()=>X) | ||
n.d(e,"Browser",()=>lt)}])},"object"==typeof exports&&"object"==typeof module?module.exports=factory():"function"==typeof define&&define.amd?define([],factory):"object"==typeof exports?exports.Dr=factory():root.Dr=factory() | ||
var root,factory |
const tryRequire=(name="")=>{try{return eval("require")(name)}catch(e){}} | ||
exports.tryRequire=tryRequire | ||
const tryRequireResolve=(name="")=>{try{return eval("require.resolve")(name)}catch(e){}} | ||
exports.tryRequireResolve=tryRequireResolve |
@@ -0,15 +1,22 @@ | ||
var r=require("fs") | ||
var e=require("vm") | ||
var s=require("../env/tryRequire") | ||
var t=require("./net") | ||
var r=require("./file/function") | ||
const a=async r=>{const a=await(await(0,t.fetchLikeRequest)(r)).text() | ||
return(0,e.runInThisContext)(a,{filename:r,displayErrors:!0})} | ||
exports.loadRemoteScript=a | ||
const s=async t=>{const a=String(await(0,r.readFileAsync)(t)) | ||
return(0,e.runInThisContext)(a,{filename:t,displayErrors:!0})} | ||
exports.loadLocalScript=s | ||
exports.loadScript=(e=>e.includes("://")?a(e):s(e)) | ||
const n=async e=>(await(0,t.fetchLikeRequest)(e)).json() | ||
exports.loadRemoteJSON=n | ||
const o=async e=>JSON.parse(await(0,r.readFileAsync)(e)) | ||
exports.loadLocalJSON=o | ||
exports.loadJSON=(e=>e.includes("://")?n(e):o(e)) | ||
var a=require("./file/function") | ||
const i=()=>["dr-js/library/Dr.browser.js",`${__dirname}/../library/Dr.browser.js`,`${__dirname}/Dr.browser.js`,"Dr.browser.js"].reduce((r,e)=>r||(0,s.tryRequireResolve)(e),null) | ||
exports.DR_BROWSER_FILE_PATH=i | ||
let o | ||
exports.DR_BROWSER_SCRIPT_TAG=(()=>{void 0===o&&(o=`<script>${(0,r.readFileSync)(i())}<\/script>`) | ||
return o}) | ||
const n=async r=>{const s=await(await(0,t.fetchLikeRequest)(r)).text() | ||
return(0,e.runInThisContext)(s,{filename:r,displayErrors:!0})} | ||
exports.loadRemoteScript=n | ||
const c=async r=>{const s=String(await(0,a.readFileAsync)(r)) | ||
return(0,e.runInThisContext)(s,{filename:r,displayErrors:!0})} | ||
exports.loadLocalScript=c | ||
exports.loadScript=(r=>r.includes("://")?n(r):c(r)) | ||
const l=async r=>(await(0,t.fetchLikeRequest)(r)).json() | ||
exports.loadRemoteJSON=l | ||
const u=async r=>JSON.parse(await(0,a.readFileAsync)(r)) | ||
exports.loadLocalJSON=u | ||
exports.loadJSON=(r=>r.includes("://")?l(r):u(r)) |
var t=require("../../common/time") | ||
var e=require("../../common/data/Tree") | ||
var i=require("./Run") | ||
const o=(t,e,o,s)=>async()=>{const{promise:r,stdoutBufferPromise:p}=(0,i.runQuiet)({command:t}) | ||
await r | ||
return((t,e,i=[],o=[])=>{const[s,...r]=t.split(e) | ||
const p=(t=>{let e=" "===t.charAt(0) | ||
var e=require("../../common/string") | ||
var i=require("../../common/format") | ||
var o=require("../../common/data/Tree") | ||
var r=require("./Run") | ||
const s=(t,e,i,o)=>async()=>{const{promise:s,stdoutBufferPromise:n}=(0,r.runQuiet)({command:t}) | ||
await s | ||
return((t,e,i=[],o=[])=>{const[r,...s]=t.split(e) | ||
const n=(t=>{let e=" "===t.charAt(0) | ||
let i=2 | ||
const o=[0] | ||
for(let s=0,r=t.length;s<r;s++)if(e!==(" "===t.charAt(s))){e=!e | ||
if(0==--i){o.push(s) | ||
i=2}}return o})(s) | ||
if(p.length!==i.length)throw new Error(`title col mismatch: ${p.length}, expect: ${i.length}`) | ||
return r.map(t=>t&&((t,e,i,o)=>{const s={} | ||
for(let r=0,p=e.length;r<p;r++)s[i[r]]=o[r](t.slice(e[r],e[r+1])) | ||
return s})(t,p,i,o)).filter(Boolean)})((await p).toString(),e,o,s)} | ||
const s=t=>t.trim() | ||
const r=t=>parseInt(t) | ||
const p=["ps ax -ww -o pid,ppid,args","\n",["pid","ppid","command"],[r,r,s]] | ||
const n=["ps ax -o pid,ppid,args",...p.slice(1)] | ||
const c=["WMIC PROCESS get Commandline,ParentProcessId,Processid","\r\r\n",["command","ppid","pid"],[s,r,r]] | ||
const d=o(...p) | ||
const a=o(...n) | ||
const m={linux:d,win32:o(...c),darwin:d,android:a} | ||
const l=()=>{const t=m[process.platform] | ||
for(let r=0,s=t.length;r<s;r++)if(e!==(" "===t.charAt(r))){e=!e | ||
if(0==--i){o.push(r) | ||
i=2}}return o})(r) | ||
if(n.length!==i.length)throw new Error(`title col mismatch: ${n.length}, expect: ${i.length}`) | ||
return s.map(t=>t&&((t,e,i,o)=>{const r={} | ||
for(let s=0,n=e.length;s<n;s++)r[i[s]]=o[s](t.slice(e[s],e[s+1])) | ||
return r})(t,n,i,o)).filter(Boolean)})((await n).toString(),e,i,o)} | ||
const n=t=>t.trim() | ||
const p=t=>parseInt(t) | ||
const c=["ps ax -ww -o pid,ppid,args","\n",["pid","ppid","command"],[p,p,n]] | ||
const a=["ps ax -o pid,ppid,args",...c.slice(1)] | ||
const d=["WMIC PROCESS get Commandline,ParentProcessId,Processid","\r\r\n",["command","ppid","pid"],[n,p,p]] | ||
const m=s(...c) | ||
const l=s(...a) | ||
const u={linux:m,win32:s(...d),darwin:m,android:l} | ||
const w=()=>{const t=u[process.platform] | ||
if(!t)throw new Error(`unsupported platform: ${process.platform}`) | ||
return t()} | ||
exports.getProcessList=l | ||
const u={"pid++":(t,e)=>t.pid-e.pid,"pid--":(t,e)=>e.pid-t.pid,"ppid++":(t,e)=>t.ppid-e.ppid||t.pid-e.pid,"ppid--":(t,e)=>e.ppid-t.ppid||t.pid-e.pid} | ||
exports.sortProcessList=((t,e="pid--")=>t.sort(u[e])) | ||
const w=async t=>{void 0===t&&(t=await l()) | ||
exports.getProcessList=w | ||
const f={"pid++":(t,e)=>t.pid-e.pid,"pid--":(t,e)=>e.pid-t.pid,"ppid++":(t,e)=>t.ppid-e.ppid||t.pid-e.pid,"ppid--":(t,e)=>e.ppid-t.ppid||t.pid-e.pid} | ||
const h=(t,e="pid--")=>t.sort(f[e]) | ||
exports.sortProcessList=h | ||
const T=async t=>{void 0===t&&(t=await w()) | ||
return t.reduce((t,e)=>{t[e.pid]=e | ||
return t},{})} | ||
exports.getProcessPidMap=w | ||
const f=async t=>{void 0===t&&(t=await l()) | ||
exports.getProcessPidMap=T | ||
const g=async t=>{void 0===t&&(t=await w()) | ||
const e={pid:0,ppid:-1,command:"ROOT"} | ||
const i={0:e} | ||
const o={0:{}} | ||
for(const e of t){const{pid:t,ppid:s}=e | ||
for(const e of t){const{pid:t,ppid:r}=e | ||
if(0!==t){i[t]=e | ||
void 0===o[s]&&(o[s]={}) | ||
o[s][t]=e}}i[e.pid]=e | ||
Object.entries(o).forEach(([t,s])=>{let r=i[t] | ||
r||(o[(r={pid:t,ppid:e.pid,command:""}).ppid][r.pid]=r) | ||
r.subTree=s}) | ||
void 0===o[r]&&(o[r]={}) | ||
o[r][t]=e}}i[e.pid]=e | ||
Object.entries(o).forEach(([t,r])=>{let s=i[t] | ||
s||(o[(s={pid:t,ppid:e.pid,command:""}).ppid][s.pid]=s) | ||
s.subTree=r}) | ||
return e} | ||
exports.getProcessTree=f | ||
exports.findProcessTreeNode=(async(t,e)=>{void 0===e&&(e=await f()) | ||
return y(e,e=>P(t,e))}) | ||
const h=async(t,e)=>{void 0===e&&(e=await w()) | ||
exports.getProcessTree=g | ||
exports.findProcessTreeNode=(async(t,e)=>{void 0===e&&(e=await g()) | ||
return b(e,e=>P(t,e))}) | ||
const y=async(t,e)=>{void 0===e&&(e=await T()) | ||
return P(t,e[t.pid])} | ||
exports.checkProcessExist=h | ||
exports.checkProcessExist=y | ||
const P=({pid:t,ppid:e,command:i},o)=>o&&o.pid===t&&(void 0===e||o.ppid===e)&&(void 0===i||o.command===i) | ||
const g=async e=>{if(await h(e)){process.kill(e.pid) | ||
const v=async e=>{if(await y(e)){process.kill(e.pid) | ||
await(0,t.setTimeoutAsync)(500) | ||
if(await h(e)){process.kill(e.pid) | ||
if(await y(e)){process.kill(e.pid) | ||
await(0,t.setTimeoutAsync)(2e3) | ||
if(await h(e)){process.kill(e.pid,"SIGKILL") | ||
if(await y(e)){process.kill(e.pid,"SIGKILL") | ||
await(0,t.setTimeoutAsync)(4e3) | ||
if(await h(e))throw new Error(`failed to stop process, pid: ${e.pid}, ppid: ${e.ppid}, command: ${e.command}`)}}}} | ||
exports.tryKillProcess=g | ||
exports.tryKillProcessTreeNode=(async(t,e=!1)=>{const i=e?g:({pid:t,command:e})=>g({pid:t,command:e}) | ||
t&&await T(t,i) | ||
if(await y(e))throw new Error(`failed to stop process, pid: ${e.pid}, ppid: ${e.ppid}, command: ${e.command}`)}}}} | ||
exports.tryKillProcess=v | ||
exports.tryKillProcessTreeNode=(async(t,e=!1)=>{const i=e?v:({pid:t,command:e})=>v({pid:t,command:e}) | ||
t&&await $(t,i) | ||
t&&await i(t)}) | ||
const x=t=>t.subTree&&Object.values(t.subTree) | ||
const y=(0,e.createTreeDepthFirstSearch)(x) | ||
const T=(0,e.createTreeBottomUpSearchAsync)(x) | ||
const b=(0,o.createTreeDepthFirstSearch)(x) | ||
const $=(0,o.createTreeBottomUpSearchAsync)(x) | ||
exports.collectAllProcessStatus=(async(t,o)=>{if(t.startsWith("t")){const i=await g() | ||
if(o)return i | ||
const r=S(i) | ||
return"tree-wide"!==t&&"tw"!==t?r.split("\n").map(t=>(0,e.autoEllipsis)(t,128,96,16)).join("\n"):r}const r=h(await w(),t) | ||
return o?r:(0,i.padTable)({table:[["pid","ppid","command"],...r.map(({pid:t,ppid:e,command:i})=>[t,e,i])]})}) | ||
const S=t=>{const e=[] | ||
const i=(t,{pid:i,command:o})=>e.push(`${`${i}`.padStart(8," ")} | ${t}${o||"..."}`) | ||
i("",{pid:"pid",command:"command"});(0,o.prettyStringifyTree)([t,-1,!1],([t,e,i])=>t.subTree&&Object.values(t.subTree).map((t,i,{length:o})=>[t,e+1,i!==o-1]),i) | ||
return e.join("\n")} |
@@ -6,2 +6,7 @@ const tryRequire = (name = "") => { | ||
}; | ||
export { tryRequire }; | ||
const tryRequireResolve = (name = "") => { | ||
try { | ||
return eval("require.resolve")(name); | ||
} catch (error) {} | ||
}; | ||
export { tryRequire, tryRequireResolve }; |
@@ -0,4 +1,12 @@ | ||
import { readFileSync } from "fs"; | ||
import { runInThisContext } from "vm"; | ||
import { tryRequireResolve } from "../env/tryRequire"; | ||
import { fetchLikeRequest } from "./net"; | ||
import { readFileAsync } from "./file/function"; | ||
const DR_BROWSER_FILE_PATH = () => [ "dr-js/library/Dr.browser.js", `${__dirname}/../library/Dr.browser.js`, `${__dirname}/Dr.browser.js`, "Dr.browser.js" ].reduce((o, path) => o || tryRequireResolve(path), null); | ||
let cache; | ||
const DR_BROWSER_SCRIPT_TAG = () => { | ||
void 0 === cache && (cache = `<script>${readFileSync(DR_BROWSER_FILE_PATH())}<\/script>`); | ||
return cache; | ||
}; | ||
const loadRemoteScript = async uri => { | ||
@@ -22,2 +30,2 @@ const scriptString = await (await fetchLikeRequest(uri)).text(); | ||
const loadJSON = uri => uri.includes("://") ? loadRemoteJSON(uri) : loadLocalJSON(uri); | ||
export { loadRemoteScript, loadLocalScript, loadScript, loadRemoteJSON, loadLocalJSON, loadJSON }; | ||
export { DR_BROWSER_FILE_PATH, DR_BROWSER_SCRIPT_TAG, loadRemoteScript, loadLocalScript, loadScript, loadRemoteJSON, loadLocalJSON, loadJSON }; |
import { setTimeoutAsync } from "../../common/time"; | ||
import { createTreeDepthFirstSearch, createTreeBottomUpSearchAsync } from "../../common/data/Tree"; | ||
import { autoEllipsis } from "../../common/string"; | ||
import { padTable } from "../../common/format"; | ||
import { createTreeDepthFirstSearch, createTreeBottomUpSearchAsync, prettyStringifyTree } from "../../common/data/Tree"; | ||
import { runQuiet } from "./Run"; | ||
@@ -132,2 +134,24 @@ const createGetProcessList = (command, lineSeparator, keyList, valueProcessList) => async () => { | ||
const processTreeBottomUpSearchAsync = createTreeBottomUpSearchAsync(getSubNodeListFunc); | ||
export { getProcessList, sortProcessList, getProcessPidMap, getProcessTree, findProcessTreeNode, checkProcessExist, tryKillProcess, tryKillProcessTreeNode }; | ||
const collectAllProcessStatus = async (outputMode, isOutputJSON) => { | ||
if (outputMode.startsWith("t")) { | ||
const processRootInfo = await getProcessTree(); | ||
if (isOutputJSON) return processRootInfo; | ||
const text = prettyStringifyProcessTree(processRootInfo); | ||
return "tree-wide" !== outputMode && "tw" !== outputMode ? text.split("\n").map(line => autoEllipsis(line, 128, 96, 16)).join("\n") : text; | ||
} | ||
const processList = sortProcessList(await getProcessList(), outputMode); | ||
return isOutputJSON ? processList : padTable({ | ||
table: [ [ "pid", "ppid", "command" ], ...processList.map(({pid, ppid, command}) => [ pid, ppid, command ]) ] | ||
}); | ||
}; | ||
const prettyStringifyProcessTree = processRootInfo => { | ||
const resultList = []; | ||
const addLine = (prefix, {pid, command}) => resultList.push(`${`${pid}`.padStart(8, " ")} | ${prefix}${command || "..."}`); | ||
addLine("", { | ||
pid: "pid", | ||
command: "command" | ||
}); | ||
prettyStringifyTree([ processRootInfo, -1, !1 ], ([info, level, hasMore]) => info.subTree && Object.values(info.subTree).map((subInfo, subIndex, {length}) => [ subInfo, level + 1, subIndex !== length - 1 ]), addLine); | ||
return resultList.join("\n"); | ||
}; | ||
export { getProcessList, sortProcessList, getProcessPidMap, getProcessTree, findProcessTreeNode, checkProcessExist, tryKillProcess, tryKillProcessTreeNode, collectAllProcessStatus }; |
@@ -1,1 +0,1 @@ | ||
{"name":"dr-js","version":"0.21.1-dev.0","description":"A collection of strange functions","author":"dr-js","license":"MIT","keywords":["Dr","Dr-js","JavaScript"],"repository":"github:dr-js/dr-js","bin":"bin/index.js","browser":"library/Dr.browser.js","engines":{"node":">=10.15","npm":">=6"},"sideEffects":false} | ||
{"name":"dr-js","version":"0.21.1-dev.1","description":"A collection of strange functions","author":"dr-js","license":"MIT","keywords":["Dr","Dr-js","JavaScript"],"repository":"github:dr-js/dr-js","bin":"bin/index.js","browser":"library/Dr.browser.js","engines":{"node":">=10.15","npm":">=6"},"sideEffects":false} |
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 2 instances in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
427166
203
9867
27
19