New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

dr-js

Package Overview
Dependencies
Maintainers
1
Versions
243
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dr-js - npm Package Compare versions

Comparing version 0.21.1-dev.1 to 0.21.1-dev.2

68

bin/index.js

@@ -25,7 +25,7 @@ #!/usr/bin/env node

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 A=q("quiet")?()=>{}:console.log
const N=(e,r)=>e(r).then(()=>A(`[${b}] done: ${r}`),e=>A(`[${b}] error: ${r}\n${e.stack||e}`))
const P=q(b)||[]
const k=Boolean(q("json"))
const x=T("input-file")
const F=T("output-file")

@@ -35,8 +35,8 @@ const j=async()=>{const e=(T("host")||"").split(":")

return{hostname:r,port:Number(e[1]||await(0,l.autoTestServerPort)([80,8080,8888,8800,8e3],r))}}
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))
switch(b){case"eval":case"eval-readline":{let t=await(0,w.evalScript)(x?String((0,r.readFileSync)(x)):P[0],x?P:P.slice(1),x?(0,e.dirname)(x):process.cwd(),$)
"eval-readline"===b&&(t=await(0,w.evalReadlineExtend)(t,O("root"),A))
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
return(0,o.setTimeoutAsync)(e)}case"echo":return h(k)
case"cat":if(k.length)for(const e of k)await(0,n.pipeStreamAsync)(process.stdout,(0,r.createReadStream)(e))
case"wait":{const e=P[0]||2e3
return(0,o.setTimeoutAsync)(e)}case"echo":return h(P)
case"cat":if(P.length)for(const e of P)await(0,n.pipeStreamAsync)(process.stdout,(0,r.createReadStream)(e))
else process.stdin.isTTY||await(0,n.pipeStreamAsync)(process.stdout,process.stdin)

@@ -46,42 +46,42 @@ return

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,w.collectFile)(b,k[0]||process.cwd()))
case"file-create-directory":for(const e of k)await P(c.createDirectory,e)
return(0,n.pipeStreamAsync)((0,r.createWriteStream)(P[0],{flags:l}),process.stdin)
case"open":{const r=P[0]||"."
return(0,d.runSync)({command:(0,m.getDefaultOpen)(),argList:[r.includes("://")?r:(0,e.normalize)(r)]})}case"status":return h(k?{system:(0,f.getSystemStatus)(),process:(0,f.getCurrentProcessStatus)()}:(0,f.describeSystemStatus)())
case"file-list":case"file-list-all":case"file-tree":return h(await(0,w.collectFile)(b,P[0]||process.cwd()))
case"file-create-directory":for(const e of P)await N(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 P(u.modify.delete,e)
case"file-modify-copy":return u.modify.copy(P[0],P[1])
case"file-modify-move":return u.modify.move(P[0],P[1])
case"file-modify-delete":for(const e of P)await N(u.modify.delete,e)
return
case"file-merge":{const[e,...t]=k
case"file-merge":{const[e,...t]=P
for(const s of t)await(0,n.pipeStreamAsync)((0,r.createWriteStream)(e,{flags:"a"}),(0,r.createReadStream)(s))
return}case"fetch":{let[e,t=4,a=0]=k
return}case"fetch":{let[e,t=4,a=0]=P
t=Number(t)||0
a=Number(a)||0
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 o=await(0,w.fetchWithJump)(e,{headers:{accept:"*/*","user-agent":`${w.packageName}/${w.packageVersion}`},timeout:a},t,(e,r,o)=>A(`[fetch] url: ${e}, jump: ${r}/${t}, timeout: ${a?(0,s.time)(a):"none"}, cookie: ${o.length}`))
const i=Number(o.headers["content-length"])
N(`[fetch] get status: ${o.status}, fetch response content${i?` (${(0,s.binary)(i)}B)`:""}...`)
A(`[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))
return A("\n[fetch] done")}case"process-status":{const[e="pid--"]=P
return h(await(k?y.getAllProcessStatusAsync:y.describeAllProcessStatusAsync)(e))}case"json-format":{const[e=2]=P
const t=JSON.parse((0,r.readFileSync)(x))
const a=(0,s.prettyStringifyJSON)(t,e)
return(0,r.writeFileSync)(F||A,a)}case"server-serve-static":case"server-serve-static-simple":{const[e=3e5]=k
return(0,r.writeFileSync)(F||x,a)}case"server-serve-static":case"server-serve-static-simple":{const[e=3e5]=P
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()))
return(0,v.startServerServeStatic)(Object.assign({isSimpleServe:r,expireTime:Number(e),staticRoot:t,log:A},await j()))}case"server-websocket-group":return(0,S.startServerWebSocketGroup)(Object.assign({log:A},await j()))
case"server-test-connection":return(0,g.startServerTestConnection)(Object.assign({log:A},await j()))
case"server-tcp-proxy":{let e
let r
if((0,i.isBasicFunction)(k[0])){e=[{hostname:"custom-hostname",port:"custom-port"}]
r=k[0]}else{e=k.map(e=>{const[r,t]=e.split(":")
if((0,i.isBasicFunction)(P[0])){e=[{hostname:"custom-hostname",port:"custom-port"}]
r=P[0]}else{e=P.map(e=>{const[r,t]=e.split(":")
return{hostname:r||"localhost",port:Number(t)}})
let t=0
r=(r=>{t=(t+1)%e.length
r=r=>{t=(t+1)%e.length
const s=e[t]
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()))
A(`[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 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)()
return A((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))

@@ -88,0 +88,0 @@ if(!r)return h(e.tryGet("version")?(0,w.getVersion)():(0,b.formatUsage)(null,e.tryGet("help")?null:"simple"))

@@ -14,7 +14,7 @@ var e=require("path")

var d=require("../function")
exports.startServerServeStatic=(async({isSimpleServe:e,expireTime:r,staticRoot:o,protocol:i="http:",hostname:n,port:c,log:m})=>{const u=(0,a.createPathPrefixLock)(o)
exports.startServerServeStatic=async({isSimpleServe:e,expireTime:r,staticRoot:o,protocol:i="http:",hostname:n,port:c,log:m})=>{const u=(0,a.createPathPrefixLock)(o)
const f=e=>u(decodeURIComponent((0,l.getRouteParamAny)(e)))
const y=(0,p.createResponderServeStatic)({expireTime:r})
const b=[[e?"/*":"/file/*","GET",e=>y(e,f(e))],!e&&["/list/*","GET",e=>v(e,f(e),o)],!e&&[["/","/*","/file","/list"],"GET",e=>(0,s.responderEndWithRedirect)(e,{redirectUrl:"/list/"})]].filter(Boolean)
await(0,d.commonStartServer)({protocol:i,hostname:n,port:c,routeConfigList:b,isAddFavicon:!e,title:`ServerServeStatic|${e?"no-list":"with-list"}`,extraInfoList:[`staticRoot: '${o}'`,`expireTime: ${(0,t.time)(r)}`],log:m})})
await(0,d.commonStartServer)({protocol:i,hostname:n,port:c,routeConfigList:b,isAddFavicon:!e,title:`ServerServeStatic|${e?"no-list":"with-list"}`,extraInfoList:[`staticRoot: '${o}'`,`expireTime: ${(0,t.time)(r)}`],log:m})}
const v=async(r,t,s)=>{const l=(0,e.relative)(s,t)

@@ -21,0 +21,0 @@ const p=`/${(0,o.escapeHTML)((0,a.toPosixPath)(l))}`

@@ -11,3 +11,3 @@ var e=require("../../library/common/time")

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"))
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

@@ -25,2 +25,2 @@ 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)

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})})
await(0,c.commonStartServer)({protocol:d,hostname:m,port:p,routeConfigList:S,isAddFavicon:!0,title:"TestConnection",log:f})}

@@ -61,5 +61,5 @@ var e=require("../../library/common/error")

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)
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{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>"

@@ -66,0 +66,0 @@ 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'

@@ -1,4 +0,4 @@

exports.isString=(t=>"string"==typeof t)
exports.isBoolean=(t=>"boolean"==typeof t)
exports.isNumber=(t=>"number"==typeof t)
exports.isString=t=>"string"==typeof t
exports.isBoolean=t=>"boolean"==typeof t
exports.isNumber=t=>"number"==typeof t
const t=Number.isInteger

@@ -11,13 +11,13 @@ exports.isInteger=t

exports.isBasicObject=r
exports.isObjectKey=((t,e)=>r(t)&&t.hasOwnProperty(e))
exports.isObjectContain=((t,e)=>r(t)&&Object.entries(e).every(([e,r])=>t[e]===r))
exports.isObjectKey=(t,e)=>r(t)&&t.hasOwnProperty(e)
exports.isObjectContain=(t,e)=>r(t)&&Object.entries(e).every(([e,r])=>t[e]===r)
const s=Array.isArray
exports.isBasicArray=s
exports.isArrayLength=((t,e)=>s(t)&&t.length===e)
exports.isBasicFunction=(t=>"function"==typeof t)
exports.isPromiseAlike=(t=>Boolean(t&&"function"==typeof t.then))
exports.isOneOf=((t,e)=>e.includes(t))
exports.isFunctionThrow=(t=>{try{return t()&&!1}catch(t){return!0}})
exports.isFunctionThrowAsync=(async t=>{try{return await t()&&!1}catch(t){return!0}})
exports.isStrictEqual=((t,e)=>Object.is(t,e))
exports.isStringifyEqual=((t,r)=>!!Object.is(t,r)||!(!e(t)||!e(r))&&JSON.stringify(t)===JSON.stringify(r))
exports.isArrayLength=(t,e)=>s(t)&&t.length===e
exports.isBasicFunction=t=>"function"==typeof t
exports.isPromiseAlike=t=>Boolean(t&&"function"==typeof t.then)
exports.isOneOf=(t,e)=>e.includes(t)
exports.isFunctionThrow=t=>{try{return t()&&!1}catch(t){return!0}}
exports.isFunctionThrowAsync=async t=>{try{return await t()&&!1}catch(t){return!0}}
exports.isStrictEqual=(t,e)=>Object.is(t,e)
exports.isStringifyEqual=(t,r)=>!!Object.is(t,r)||!(!e(t)||!e(r))&&JSON.stringify(t)===JSON.stringify(r)

@@ -1,4 +0,4 @@

exports.compareString=((e,r)=>e<r?-1:e>r?1:0)
exports.compareStringLocale=((e,r)=>e.localeCompare(r))
exports.compareStringWithNumber=((t="",o="")=>{if(t===o)return 0
exports.compareString=(e,r)=>e<r?-1:e>r?1:0
exports.compareStringLocale=(e,r)=>e.localeCompare(r)
exports.compareStringWithNumber=(t="",o="")=>{if(t===o)return 0
let c=-1

@@ -11,3 +11,3 @@ let a,n

const h=e(n)
return l&&(h||e(o.charCodeAt(c-1)))||h&&(l||e(t.charCodeAt(c-1)))?r(t,l?c:c-1)-r(o,h?c:c-1):(a||0)-(n||0)})
return l&&(h||e(o.charCodeAt(c-1)))||h&&(l||e(t.charCodeAt(c-1)))?r(t,l?c:c-1)-r(o,h?c:c-1):(a||0)-(n||0)}
const e=e=>e>=48&&e<=57

@@ -14,0 +14,0 @@ const r=(r="",t)=>{let o=t-1

@@ -1,2 +0,2 @@

exports.isEqualArrayBuffer=((t,e)=>{if(t===e)return!0
exports.isEqualArrayBuffer=(t,e)=>{if(t===e)return!0
if(t.byteLength!==e.byteLength)return!1

@@ -6,3 +6,3 @@ const r=new Uint8Array(t)

for(let e=0,o=t.byteLength;e<o;e++)if(r[e]!==n[e])return!1
return!0})
return!0}
const t=(t=[])=>{const e=new Uint8Array(t.reduce((t,e)=>t+e.byteLength,0))

@@ -15,14 +15,14 @@ let r=0

exports.concatArrayBuffer=t
exports.deconcatArrayBuffer=((t,e,r=0)=>e.map(e=>{const n=t.slice(r,r+e)
exports.deconcatArrayBuffer=(t,e,r=0)=>e.map(e=>{const n=t.slice(r,r+e)
r+=e
return n}))
return n})
const e=Uint8Array.of(0)
const r=Uint8Array.of(255,255)
exports.toString=(n=>{const o=t([n.byteLength%2?e:r,n])
exports.toString=n=>{const o=t([n.byteLength%2?e:r,n])
const f=new DataView(o)
const s=[]
for(let t=0,e=f.byteLength/2;t<e;t++)s.push(String.fromCharCode(f.getUint16(2*t,!1)))
return s.join("")})
exports.fromString=((t="")=>{const n=new DataView(new ArrayBuffer(2*t.length))
return s.join("")}
exports.fromString=(t="")=>{const n=new DataView(new ArrayBuffer(2*t.length))
for(let e=0,r=t.length;e<r;e++)n.setUint16(2*e,t.charCodeAt(e),!1)
return n.buffer.slice(0===n.getUint8(0)?e.byteLength:r.byteLength)})
return n.buffer.slice(0===n.getUint8(0)?e.byteLength:r.byteLength)}

@@ -14,12 +14,12 @@ var r=require("./ArrayBuffer")

exports.parseArrayBufferHeader=a
exports.packArrayBufferPacket=((a,n=e)=>(0,r.concatArrayBuffer)([...t((0,r.fromString)(a)),n]))
exports.parseArrayBufferPacket=(e=>{const[t,n]=a(e)
return[(0,r.toString)(t),e.slice(n)]})
exports.packChainArrayBufferPacket=((e=[])=>{const a=new DataView(new ArrayBuffer(4*e.length))
exports.packArrayBufferPacket=(a,n=e)=>(0,r.concatArrayBuffer)([...t((0,r.fromString)(a)),n])
exports.parseArrayBufferPacket=e=>{const[t,n]=a(e)
return[(0,r.toString)(t),e.slice(n)]}
exports.packChainArrayBufferPacket=(e=[])=>{const a=new DataView(new ArrayBuffer(4*e.length))
e.forEach(({byteLength:r},e)=>a.setUint32(4*e,r,!1))
return(0,r.concatArrayBuffer)([...t(a.buffer),...e])})
exports.parseChainArrayBufferPacket=(e=>{const[t,n]=a(e)
return(0,r.concatArrayBuffer)([...t(a.buffer),...e])}
exports.parseChainArrayBufferPacket=e=>{const[t,n]=a(e)
const f=new DataView(t)
const s=[]
for(let r=0,e=f.byteLength/4;r<e;r++)s.push(f.getUint32(4*r,!1))
return(0,r.deconcatArrayBuffer)(e,s,n)})
return(0,r.deconcatArrayBuffer)(e,s,n)}

@@ -5,3 +5,3 @@ var e=require("../module/Event")

exports.createCache=r
exports.createCacheMap=(({valueSizeSumMax:s,valueSizeSingleMax:a=Math.max(.05*s,1),eventHub:i=(0,e.createHub)()})=>{const n=Boolean(i)
exports.createCacheMap=({valueSizeSumMax:s,valueSizeSingleMax:a=Math.max(.05*s,1),eventHub:i=(0,e.createHub)()})=>{const n=Boolean(i)
const{clear:u,subscribe:c,unsubscribe:o,send:l}=n?i:{}

@@ -33,2 +33,2 @@ const p=new Map

return e},parseList:(e,t=Date.now())=>e.forEach(({key:e,value:s,size:a,expireAt:i})=>{const n=r(e,s,a,i)
n.expireAt<=t?k(n):b(n)})}})
n.expireAt<=t?k(n):b(n)})}}

@@ -1,5 +0,5 @@

exports.hashStringToNumber=((t="",r=0)=>{for(let e=0,o=t.length;e<o;e++)r=(r<<5)-r+t.charCodeAt(e)>>>0
return r})
exports.reverseString=(t=>[...t].reverse().join(""))
exports.swapObfuscateString=((t="")=>{const r=t.length
exports.hashStringToNumber=(t="",r=0)=>{for(let e=0,o=t.length;e<o;e++)r=(r<<5)-r+t.charCodeAt(e)>>>0
return r}
exports.reverseString=t=>[...t].reverse().join("")
exports.swapObfuscateString=(t="")=>{const r=t.length
const e=r-1

@@ -11,6 +11,6 @@ const o=Math.floor(.5*r)

n[r]=t.charAt(o)
n[e-r]=t.charAt(e-o)}return n.join("")})
exports.tryParseJSONObject=((t,r={})=>{try{const r=JSON.parse(t)
if("object"==typeof r&&null!==r)return r}catch(t){}return r})
exports.getValueByKeyList=((t,r)=>{for(const e of r){if(!t||"object"!=typeof t||!t.hasOwnProperty(e))return
t=t[e]}return t})
n[e-r]=t.charAt(e-o)}return n.join("")}
exports.tryParseJSONObject=(t,r={})=>{try{const r=JSON.parse(t)
if("object"==typeof r&&null!==r)return r}catch(t){}return r}
exports.getValueByKeyList=(t,r)=>{for(const e of r){if(!t||"object"!=typeof t||!t.hasOwnProperty(e))return
t=t[e]}return t}

@@ -1,2 +0,2 @@

exports.createDoublyLinkedList=(()=>{let t,n,r
exports.createDoublyLinkedList=()=>{let t,n,r
const p=()=>{t=e(null)

@@ -59,4 +59,4 @@ n=e(null)

e.next=n
n.prev=e},push:e=>x(e,n),pop:()=>o(n.prev),unshift:e=>v(e,t),shift:()=>o(t.next)}})
n.prev=e},push:e=>x(e,n),pop:()=>o(n.prev),unshift:e=>v(e,t),shift:()=>o(t.next)}}
const e=(e,t=null,n=null)=>({value:e,prev:t,next:n})
exports.createNode=e

@@ -1,2 +0,2 @@

exports.createListMap=(()=>{const e=new Map
exports.createListMap=()=>{const e=new Map
return{clear:()=>{e.clear()},add:(t,r)=>{let s=e.get(t)

@@ -11,2 +11,2 @@ if(void 0===s){s=[]

return s&&s[r]},getList:t=>e.get(t),has:(t,r)=>{const s=e.get(t)
return Boolean(s&&s.includes(r))},hasList:t=>e.has(t),forEach:t=>{e.forEach((e,r)=>e.forEach(e=>t(e,r)))},forEachList:t=>{e.forEach(t)}}})
return Boolean(s&&s.includes(r))},hasList:t=>e.has(t),forEach:t=>{e.forEach((e,r)=>e.forEach(e=>t(e,r)))},forEachList:t=>{e.forEach(t)}}}
var e=require("../error")
const t=()=>{}
exports.createSaveQueue=(({onError:r,doSave:a,beforeSave:n=t,afterSave:c=t})=>{let o=[]
exports.createSaveQueue=({onError:r,doSave:a,beforeSave:n=t,afterSave:c=t})=>{let o=[]
let s=!1

@@ -15,2 +15,2 @@ let g={}

if(r)throw r
c()})().catch(r)},filter:e=>{o=o.filter(e)},getLength:()=>o.length,getIsSaving:()=>s,getSavingState:()=>g}})
c()})().catch(r)},filter:e=>{o=o.filter(e)},getLength:()=>o.length,getIsSaving:()=>s,getSavingState:()=>g}}

@@ -12,3 +12,3 @@ const e=()=>{const e=new Map

exports.createSetMap=e
exports.getInvertSetMap=((t,r=e())=>{t.forEach((e,t)=>r.add(e,t))
return r})
exports.getInvertSetMap=(t,r=e())=>{t.forEach((e,t)=>r.add(e,t))
return r}

@@ -1,6 +0,6 @@

exports.createToggle=(()=>{const e=new Map
exports.createToggle=()=>{const e=new Map
const t=(t,r)=>{void 0===r&&(r=!e.get(t))
e.set(t,r)
return r}
t.get=(t=>e.get(t))
return t})
t.get=t=>e.get(t)
return t}

@@ -9,3 +9,3 @@ const t=t=>{const r=(r,e)=>{const n=t(e)

exports.createTreeDepthFirstSearch=t
exports.createTreeDepthFirstSearchAsync=(t=>{const r=async(r,e)=>{const n=await t(e)
exports.createTreeDepthFirstSearchAsync=t=>{const r=async(r,e)=>{const n=await t(e)
Array.isArray(n)&&r.unshift(...n)}

@@ -16,4 +16,4 @@ return async(t,e)=>{let n

for(;n=s.shift();){if(await e(n))return n
await r(s,n)}}})
exports.createTreeBreadthFirstSearch=(t=>{const r=(r,e)=>{const n=t(e)
await r(s,n)}}}
exports.createTreeBreadthFirstSearch=t=>{const r=(r,e)=>{const n=t(e)
Array.isArray(n)&&r.push(...n)}

@@ -24,4 +24,4 @@ return(t,e)=>{let n

for(;n=s.shift();){if(e(n))return n
r(s,n)}}})
exports.createTreeBreadthFirstSearchAsync=(t=>{const r=async(r,e)=>{const n=await t(e)
r(s,n)}}}
exports.createTreeBreadthFirstSearchAsync=t=>{const r=async(r,e)=>{const n=await t(e)
Array.isArray(n)&&r.push(...n)}

@@ -32,4 +32,4 @@ return async(t,e)=>{let n

for(;n=s.shift();){if(await e(n))return n
await r(s,n)}}})
exports.createTreeBottomUpSearch=(t=>{const r=(r,e)=>{const n=t(e)
await r(s,n)}}}
exports.createTreeBottomUpSearch=t=>{const r=(r,e)=>{const n=t(e)
return Boolean(Array.isArray(n)&&r.push([e,n]))}

@@ -41,4 +41,4 @@ return(t,e)=>{const n=[]

if(0!==n.length&&e(t))return t}else{const t=s.shift()
if(!r(n,t)&&e(t))return t}}}})
exports.createTreeBottomUpSearchAsync=(t=>{const r=async(r,e)=>{const n=await t(e)
if(!r(n,t)&&e(t))return t}}}}
exports.createTreeBottomUpSearchAsync=t=>{const r=async(r,e)=>{const n=await t(e)
return Boolean(Array.isArray(n)&&r.push([e,n]))}

@@ -50,7 +50,7 @@ return async(t,e)=>{const n=[]

if(0!==n.length&&await e(t))return t}else{const t=s.shift()
if(!await r(n,t)&&await e(t))return t}}}})
exports.prettyStringifyTree=((r,e,n)=>{const s=[]
if(!await r(n,t)&&await e(t))return t}}}}
exports.prettyStringifyTree=(r,e,n)=>{const s=[]
t(e)(r,([t,r,e])=>{s.length=r
0!==r&&(s[r-1]=e?"├─ ":"└─ ")
n(s.join(""),t)
0!==r&&(s[r-1]=e?"│ ":" ")})})
0!==r&&(s[r-1]=e?"│ ":" ")})}

@@ -1,7 +0,7 @@

exports.rethrowError=(r=>{console.warn(r)
throw r})
exports.tryCall=((r,t,...e)=>{try{return r[t](...e)}catch(r){}})
exports.catchSync=((r,...t)=>{let e,c
try{e=r(...t)}catch(r){c=r||new Error}return{result:e,error:c}})
exports.catchAsync=(async(r,...t)=>{let e,c
try{e=await r(...t)}catch(r){c=r||new Error}return{result:e,error:c}})
exports.rethrowError=r=>{console.warn(r)
throw r}
exports.tryCall=(r,t,...e)=>{try{return r[t](...e)}catch(r){}}
exports.catchSync=(r,...t)=>{let e,c
try{e=r(...t)}catch(r){c=r||new Error}return{result:e,error:c}}
exports.catchAsync=async(r,...t)=>{let e,c
try{e=await r(...t)}catch(r){c=r||new Error}return{result:e,error:c}}

@@ -1,20 +0,20 @@

exports.describe=(t=>{const e=typeof t
exports.describe=t=>{const e=typeof t
let o
if("function"===e)o="()=>{...}"
else try{o=JSON.stringify(t)}catch(t){o="{...}"}return`<${e}> ${o}`})
exports.percent=(t=>`${(100*t).toFixed(2)}%`)
else try{o=JSON.stringify(t)}catch(t){o="{...}"}return`<${e}> ${o}`}
exports.percent=t=>`${(100*t).toFixed(2)}%`
const t=t=>String(Math.floor(t)).padStart(2,"0")
exports.mediaTime=(e=>{const o=Math.abs(e)
return`${e<0?"-":""}${t(o/60)}:${t(o%60)}`})
exports.decimal=(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`})
exports.time=(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`})
exports.binary=(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`})
exports.padTable=(({table:t,padFuncList:e=[],cellPad:o=" | ",rowPad:i="\n",widthMaxList:r=t.reduce((t,e)=>{e.forEach((e,o)=>{t[o]=Math.max(String(e).length,t[o]||0)})
exports.mediaTime=e=>{const o=Math.abs(e)
return`${e<0?"-":""}${t(o/60)}:${t(o%60)}`}
exports.decimal=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`}
exports.time=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`}
exports.binary=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`}
exports.padTable=({table:t,padFuncList:e=[],cellPad:o=" | ",rowPad:i="\n",widthMaxList:r=t.reduce((t,e)=>{e.forEach((e,o)=>{t[o]=Math.max(String(e).length,t[o]||0)})
return t},[])})=>t.map(t=>t.map((t,o)=>{const i=String(t)
const n=e[o]
const s=r[o]
return n&&"L"!==n?"R"===n?i.padStart(s):n(i,s):i.padEnd(s)}).join(o)).join(i))
return n&&"L"!==n?"R"===n?i.padStart(s):n(i,s):i.padEnd(s)}).join(o)).join(i)
const e=(t,o,i,r)=>{if(i>=1&&o){if(Array.isArray(o))return((t,o,i,r)=>{if(0===o.length)return t.push("[]")

@@ -37,4 +37,4 @@ t.push("[\n")

t[t.length-1]=`\n${r}}`})(t,o,i,r)}t.push(JSON.stringify(o))}
exports.prettyStringifyJSON=((t,o=2)=>{const i=[]
exports.prettyStringifyJSON=(t,o=2)=>{const i=[]
e(i,t,Math.max(o,0)||0,"")
return i.join("")})
return i.join("")}

@@ -11,3 +11,3 @@ var t=require("./time")

exports.debounce=o
exports.throttle=((t,e=250,r=!1)=>{let o=null
exports.throttle=(t,e=250,r=!1)=>{let o=null
return(...n)=>{if(o)return

@@ -17,9 +17,9 @@ const s=r&&null===o

!r&&t.apply(null,n)},e)
s&&t.apply(null,n)}})
exports.lossyAsync=((t,o=e.rethrowError)=>{let n
s&&t.apply(null,n)}}
exports.lossyAsync=(t,o=e.rethrowError)=>{let n
const s=()=>{n=void 0}
const l=t=>{n=void 0
o(t)}
return{trigger:(...e)=>{if(!n)try{const o=t.apply(null,e);(0,r.isPromiseAlike)(o)?n=o.then(s,l):s()}catch(t){l(t)}},getRunningPromise:()=>n}})
exports.withDelayArgvQueue=((t,e=o,...r)=>{let n=[]
return{trigger:(...e)=>{if(!n)try{const o=t.apply(null,e);(0,r.isPromiseAlike)(o)?n=o.then(s,l):s()}catch(t){l(t)}},getRunningPromise:()=>n}}
exports.withDelayArgvQueue=(t,e=o,...r)=>{let n=[]
const s=e(()=>{const e=n

@@ -29,7 +29,7 @@ n=[]

return(...t)=>{n.push(t)
s()}})
exports.withRepeat=((t,e=0)=>{let r=0
s()}}
exports.withRepeat=(t,e=0)=>{let r=0
for(;e>r;){t(r,e)
r++}})
exports.withRepeatAsync=(async(e,r=0,o=0)=>{let n=0
r++}}
exports.withRepeatAsync=async(e,r=0,o=0)=>{let n=0
for(;r>n;){const s=(0,t.clock)()

@@ -39,11 +39,11 @@ await e(n,r)

const l=o-((0,t.clock)()-s)
l>0&&await(0,t.setTimeoutAsync)(l)}})
exports.withRetry=((t,e=1/0)=>{let r=0
for(;;)try{return t(r,e)}catch(t){if(e<++r)throw t}})
exports.withRetryAsync=(async(e,r=1/0,o=0)=>{let n=0
l>0&&await(0,t.setTimeoutAsync)(l)}}
exports.withRetry=(t,e=1/0)=>{let r=0
for(;;)try{return t(r,e)}catch(t){if(e<++r)throw t}}
exports.withRetryAsync=async(e,r=1/0,o=0)=>{let n=0
for(;;){const s=(0,t.clock)()
try{return await e(n,r)}catch(e){if(r<++n)throw e
const l=o-((0,t.clock)()-s)
l>0&&await(0,t.setTimeoutAsync)(l)}}})
exports.withTimeoutAsync=((t,e)=>n(t(),e))
l>0&&await(0,t.setTimeoutAsync)(l)}}}
exports.withTimeoutAsync=(t,e)=>n(t(),e)
const n=(t,e)=>{let r=null

@@ -54,3 +54,3 @@ return Promise.race([t,new Promise((t,o)=>{r=setTimeout(()=>o(new Error(`timeout after: ${e}`)),e)})]).then(t=>{clearTimeout(r)

exports.withTimeoutPromise=n
exports.createInsideOutPromise=(()=>{let t,e
exports.createInsideOutPromise=()=>{let t,e
return{promise:new Promise((r,o)=>{t=r

@@ -61,2 +61,2 @@ e=o}),resolve:r=>{const o=t

t=e=void 0
o&&o(r)}}})
o&&o(r)}}}

@@ -5,3 +5,3 @@ const e=Math.PI/180

exports.RADIAN_TO_DEGREE=t
exports.fromDegree=(t=>t*e)
exports.getDegree=(e=>e*t)
exports.fromDegree=t=>t*e
exports.getDegree=e=>e*t

@@ -1,9 +0,9 @@

exports.fromEmpty=(()=>({left:1/0,right:-1/0,top:1/0,bottom:-1/0}))
exports.fromPoint=((t,o)=>({left:Math.min(t.x,o.x),right:Math.max(t.x,o.x),top:Math.min(t.y,o.y),bottom:Math.max(t.y,o.y)}))
exports.fromWidget=(({center:t,size:o,rotate:a})=>{const e=Math.cos(a)
exports.fromEmpty=()=>({left:1/0,right:-1/0,top:1/0,bottom:-1/0})
exports.fromPoint=(t,o)=>({left:Math.min(t.x,o.x),right:Math.max(t.x,o.x),top:Math.min(t.y,o.y),bottom:Math.max(t.y,o.y)})
exports.fromWidget=({center:t,size:o,rotate:a})=>{const e=Math.cos(a)
const h=Math.sin(a)
const r=.5*(Math.abs(o.x*e)+Math.abs(o.y*h))
const s=.5*(Math.abs(o.x*h)+Math.abs(o.y*e))
return{left:t.x-r,right:t.x+r,top:t.y-s,bottom:t.y+s}})
exports.fromWidgetList=(t=>t.reduce((t,{center:o,size:a,rotate:e})=>{const h=Math.cos(e)
return{left:t.x-r,right:t.x+r,top:t.y-s,bottom:t.y+s}}
exports.fromWidgetList=t=>t.reduce((t,{center:o,size:a,rotate:e})=>{const h=Math.cos(e)
const r=Math.sin(e)

@@ -16,6 +16,6 @@ const s=.5*(Math.abs(a.x*h)+Math.abs(a.y*r))

t.bottom=Math.max(t.bottom,o.y+i)
return t},{left:1/0,right:-1/0,top:1/0,bottom:-1/0}))
exports.getCenter=(({left:t,right:o,top:a,bottom:e})=>({x:.5*(t+o),y:.5*(a+e)}))
exports.getUnion=((t,o)=>({left:Math.min(t.left,o.left),right:Math.max(t.right,o.right),top:Math.min(t.top,o.top),bottom:Math.max(t.bottom,o.bottom)}))
exports.isIntersect=((t,o)=>!(t.left>o.right||t.right<o.left||t.top>o.bottom||t.bottom<o.top))
exports.isContainPoint=(({left:t,right:o,top:a,bottom:e},{x:h,y:r})=>h>=t&&h<=o&&r>=a&&r<=e)
return t},{left:1/0,right:-1/0,top:1/0,bottom:-1/0})
exports.getCenter=({left:t,right:o,top:a,bottom:e})=>({x:.5*(t+o),y:.5*(a+e)})
exports.getUnion=(t,o)=>({left:Math.min(t.left,o.left),right:Math.max(t.right,o.right),top:Math.min(t.top,o.top),bottom:Math.max(t.bottom,o.bottom)})
exports.isIntersect=(t,o)=>!(t.left>o.right||t.right<o.left||t.top>o.bottom||t.bottom<o.top)
exports.isContainPoint=({left:t,right:o,top:a,bottom:e},{x:h,y:r})=>h>=t&&h<=o&&r>=a&&r<=e

@@ -1,3 +0,3 @@

exports.fromWidget=(({center:t,size:e,rotate:n})=>{const o=e.y*Math.sin(n)*.5
exports.fromWidget=({center:t,size:e,rotate:n})=>{const o=e.y*Math.sin(n)*.5
const r=e.y*Math.cos(n)*-.5
return{begin:{x:t.x+o,y:t.y+r},end:{x:t.x-o,y:t.y-r}}})
return{begin:{x:t.x+o,y:t.y+r},end:{x:t.x-o,y:t.y-r}}}
var x=require("./Vector")
exports.fromEmpty=(()=>({min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0}}))
exports.fromPoint=((m,i)=>({min:(0,x.min)(m,i),max:(0,x.max)(m,i)}))
exports.fromBoundingRect=(({left:x,right:m,top:i,bottom:n})=>({min:{x,y:i},max:{x:m,y:n}}))
exports.getCenter=(({min:x,max:m})=>({x:.5*(x.x+m.x),y:.5*(x.y+m.y)}))
exports.getSize=(({min:x,max:m})=>({x:m.x-x.x,y:m.y-x.y}))
exports.getUnion=((m,i)=>({min:(0,x.min)(m.min,i.min),max:(0,x.max)(m.max,i.max)}))
exports.getUnionOfList=(x=>x.reduce((x,{min:m,max:i})=>{x.min.x=Math.min(x.min.x,m.x)
exports.fromEmpty=()=>({min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0}})
exports.fromPoint=(m,i)=>({min:(0,x.min)(m,i),max:(0,x.max)(m,i)})
exports.fromBoundingRect=({left:x,right:m,top:i,bottom:n})=>({min:{x,y:i},max:{x:m,y:n}})
exports.getCenter=({min:x,max:m})=>({x:.5*(x.x+m.x),y:.5*(x.y+m.y)})
exports.getSize=({min:x,max:m})=>({x:m.x-x.x,y:m.y-x.y})
exports.getUnion=(m,i)=>({min:(0,x.min)(m.min,i.min),max:(0,x.max)(m.max,i.max)})
exports.getUnionOfList=x=>x.reduce((x,{min:m,max:i})=>{x.min.x=Math.min(x.min.x,m.x)
x.min.y=Math.min(x.min.y,m.y)
x.max.x=Math.max(x.max.x,i.x)
x.max.y=Math.max(x.max.y,i.y)
return x},{min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0}}))
exports.isEmpty=(({min:x,max:m})=>m.x<=x.x||m.y<=x.y)
exports.isIntersect=((x,m)=>!(x.max.x<m.min.x||x.min.x>m.max.x||x.max.y<m.min.y||x.min.y>m.max.y))
exports.isContain=((x,m)=>x.min.x<=m.min.x&&x.max.x>=m.max.x&&x.min.y<=m.min.y&&x.max.y>=m.max.y)
exports.isContainPoint=(({min:x,max:m},{x:i,y:n})=>i>=x.x&&i<=m.x&&n>=x.y&&n<=m.y)
return x},{min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0}})
exports.isEmpty=({min:x,max:m})=>m.x<=x.x||m.y<=x.y
exports.isIntersect=(x,m)=>!(x.max.x<m.min.x||x.min.x>m.max.x||x.max.y<m.min.y||x.min.y>m.max.y)
exports.isContain=(x,m)=>x.min.x<=m.min.x&&x.max.x>=m.max.x&&x.min.y<=m.min.y&&x.max.y>=m.max.y
exports.isContainPoint=({min:x,max:m},{x:i,y:n})=>i>=x.x&&i<=m.x&&n>=x.y&&n<=m.y
const t=2*Math.PI
exports.fromOrigin=(()=>({x:0,y:0}))
exports.fromAngleLength=((t,x)=>({x:x*Math.cos(t),y:x*Math.sin(t)}))
exports.fromOrigin=()=>({x:0,y:0})
exports.fromAngleLength=(t,x)=>({x:x*Math.cos(t),y:x*Math.sin(t)})
const x=({x:t,y:x})=>Math.sqrt(t*t+x*x)
exports.getLength=x
exports.getLengthSq=(({x:t,y:x})=>t*t+x*x)
exports.getDist=((t,x)=>Math.sqrt(y(t,x)))
exports.getLengthSq=({x:t,y:x})=>t*t+x*x
exports.getDist=(t,x)=>Math.sqrt(y(t,x))
const y=(t,x)=>{const y=t.x-x.x

@@ -12,23 +12,23 @@ const e=t.y-x.y

exports.getDistSq=y
exports.getAngle=(({x,y})=>{const e=Math.atan2(y,x)
return e>=0?e:e+t})
exports.getRotate=((x,y)=>{const e=Math.atan2(x.y-y.y,x.x-y.x)
return e>=0?e:e+t})
exports.getRotateDelta=((x,y,e)=>{const o=Math.atan2(x.y-e.y,x.x-e.x)-Math.atan2(x.y-y.y,x.x-y.x)
return o>=0?o:o+t})
exports.getAngle=({x,y})=>{const e=Math.atan2(y,x)
return e>=0?e:e+t}
exports.getRotate=(x,y)=>{const e=Math.atan2(x.y-y.y,x.x-y.x)
return e>=0?e:e+t}
exports.getRotateDelta=(x,y,e)=>{const o=Math.atan2(x.y-e.y,x.x-e.x)-Math.atan2(x.y-y.y,x.x-y.x)
return o>=0?o:o+t}
const e=(t,x)=>t.x*x.x+t.y*x.y
exports.getDotProduct=e
exports.add=((t,x)=>({x:t.x+x.x,y:t.y+x.y}))
exports.sub=((t,x)=>({x:t.x-x.x,y:t.y-x.y}))
exports.multiply=((t,x)=>({x:t.x*x.x,y:t.y*x.y}))
exports.divide=((t,x)=>({x:t.x/x.x,y:t.y/x.y}))
exports.add=(t,x)=>({x:t.x+x.x,y:t.y+x.y})
exports.sub=(t,x)=>({x:t.x-x.x,y:t.y-x.y})
exports.multiply=(t,x)=>({x:t.x*x.x,y:t.y*x.y})
exports.divide=(t,x)=>({x:t.x/x.x,y:t.y/x.y})
const o=({x:t,y:x},y)=>({x:t*y,y:x*y})
exports.scale=o
exports.project=((t,y)=>o(y,e(t,y)/Math.pow(x(y),2)))
exports.min=((t,x)=>({x:Math.min(t.x,x.x),y:Math.min(t.y,x.y)}))
exports.max=((t,x)=>({x:Math.max(t.x,x.x),y:Math.max(t.y,x.y)}))
exports.clamp=(({x:t,y:x},y,e)=>({x:Math.max(Math.min(t,e.x),y.x),y:Math.max(Math.min(x,e.y),y.y)}))
exports.abs=(({x:t,y:x})=>({x:Math.abs(t),y:Math.abs(x)}))
exports.round=(({x:t,y:x})=>({x:Math.round(t),y:Math.round(x)}))
exports.lerp=((t,x,y)=>({x:t.x+(x.x-t.x)*y,y:t.y+(x.y-t.y)*y}))
exports.isZero=(({x:t,y:x})=>0===t&&0===x)
exports.project=(t,y)=>o(y,e(t,y)/Math.pow(x(y),2))
exports.min=(t,x)=>({x:Math.min(t.x,x.x),y:Math.min(t.y,x.y)})
exports.max=(t,x)=>({x:Math.max(t.x,x.x),y:Math.max(t.y,x.y)})
exports.clamp=({x:t,y:x},y,e)=>({x:Math.max(Math.min(t,e.x),y.x),y:Math.max(Math.min(x,e.y),y.y)})
exports.abs=({x:t,y:x})=>({x:Math.abs(t),y:Math.abs(x)})
exports.round=({x:t,y:x})=>({x:Math.round(t),y:Math.round(x)})
exports.lerp=(t,x,y)=>({x:t.x+(x.x-t.x)*y,y:t.y+(x.y-t.y)*y})
exports.isZero=({x:t,y:x})=>0===t&&0===x
var t=require("../../math/base")
var e=require("./Vector")
const o=.5*Math.PI
exports.fromPoint=((t,e,o)=>Object.assign({},o,{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}))
exports.fromLine=(({begin:t,end:n},s,r)=>Object.assign({},r,{center:{x:.5*(t.x+n.x),y:.5*(t.y+n.y)},size:{x:s,y:(0,e.getDist)(n,t)},rotate:(0,e.getRotate)(n,t)-o}))
exports.fromBoundingRect=(({left:t,right:e,top:o,bottom:n},s)=>Object.assign({},s,{center:{x:.5*(t+e),y:.5*(o+n)},size:{x:e-t,y:n-o},rotate:0}))
exports.getBoundingSize=(({size:{x:t,y:e},rotate:o})=>{const n=Math.cos(o)
exports.fromPoint=(t,e,o)=>Object.assign({},o,{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})
exports.fromLine=({begin:t,end:n},s,r)=>Object.assign({},r,{center:{x:.5*(t.x+n.x),y:.5*(t.y+n.y)},size:{x:s,y:(0,e.getDist)(n,t)},rotate:(0,e.getRotate)(n,t)-o})
exports.fromBoundingRect=({left:t,right:e,top:o,bottom:n},s)=>Object.assign({},s,{center:{x:.5*(t+e),y:.5*(o+n)},size:{x:e-t,y:n-o},rotate:0})
exports.getBoundingSize=({size:{x:t,y:e},rotate:o})=>{const n=Math.cos(o)
const s=Math.sin(o)
return{x:Math.abs(t*n)+Math.abs(e*s),y:Math.abs(t*s)+Math.abs(e*n)}})
return{x:Math.abs(t*n)+Math.abs(e*s),y:Math.abs(t*s)+Math.abs(e*n)}}
const n=({size:{x:t,y:e},rotate:o})=>Math.abs(t*Math.cos(o))+Math.abs(e*Math.sin(o))

@@ -14,13 +14,13 @@ exports.getBoundingWidth=n

exports.getBoundingHeight=s
exports.getBoundingLeft=(t=>t.center.x-.5*n(t))
exports.getBoundingRight=(t=>t.center.x+.5*n(t))
exports.getBoundingTop=(t=>t.center.y-.5*s(t))
exports.getBoundingBottom=(t=>t.center.y+.5*s(t))
exports.round=(o=>Object.assign({},o,{center:(0,e.round)(o.center),size:(0,e.round)(o.size),rotate:(0,t.roundFloat)(o.rotate)}))
exports.localPoint=(({center:t,rotate:e},{x:o,y:n})=>{const s=o-t.x
exports.getBoundingLeft=t=>t.center.x-.5*n(t)
exports.getBoundingRight=t=>t.center.x+.5*n(t)
exports.getBoundingTop=t=>t.center.y-.5*s(t)
exports.getBoundingBottom=t=>t.center.y+.5*s(t)
exports.round=o=>Object.assign({},o,{center:(0,e.round)(o.center),size:(0,e.round)(o.size),rotate:(0,t.roundFloat)(o.rotate)})
exports.localPoint=({center:t,rotate:e},{x:o,y:n})=>{const s=o-t.x
const r=n-t.y
const a=Math.cos(-e)
const i=Math.sin(-e)
return{x:s*a-r*i,y:s*i+r*a}})
exports.localBoundingRect=(({center:t,rotate:e},o)=>{const n=o.center.x-t.x
return{x:s*a-r*i,y:s*i+r*a}}
exports.localBoundingRect=({center:t,rotate:e},o)=>{const n=o.center.x-t.x
const s=o.center.y-t.y

@@ -34,4 +34,4 @@ const r=o.rotate-e

const g=.5*(o.size.x*i+o.size.y*a)
return{left:c-y,right:c+y,top:x-g,bottom:x+g}})
exports.isContainBoundingRect=(({center:t,size:e},o)=>t.x-.5*e.x<=o.left&&t.x+.5*e.x>=o.right&&t.y-.5*e.y<=o.top&&t.y+.5*e.y>=o.bottom)
exports.isInterceptBoundingRect=(({center:t,size:e},o)=>!(t.x+.5*e.x<o.left||t.x-.5*e.x>o.right||t.y+.5*e.y<o.top||t.y-.5*e.y>o.bottom))
return{left:c-y,right:c+y,top:x-g,bottom:x+g}}
exports.isContainBoundingRect=({center:t,size:e},o)=>t.x-.5*e.x<=o.left&&t.x+.5*e.x>=o.right&&t.y-.5*e.y<=o.top&&t.y+.5*e.y>=o.bottom
exports.isInterceptBoundingRect=({center:t,size:e},o)=>!(t.x+.5*e.x<o.left||t.x-.5*e.x>o.right||t.y+.5*e.y<o.top||t.y-.5*e.y>o.bottom)

@@ -1,35 +0,35 @@

exports.arraySet=((r,e,t)=>{if(r[e]===t)return r
exports.arraySet=(r,e,t)=>{if(r[e]===t)return r
const n=[...r]
n[e]=t
return n})
exports.arrayDelete=((r,e)=>e>=0&&e<=r.length-1?[...r.slice(0,e),...r.slice(e+1)]:r)
exports.arrayInsert=((r,e,t)=>[...r.slice(0,e),t,...r.slice(e)])
return n}
exports.arrayDelete=(r,e)=>e>=0&&e<=r.length-1?[...r.slice(0,e),...r.slice(e+1)]:r
exports.arrayInsert=(r,e,t)=>[...r.slice(0,e),t,...r.slice(e)]
const r=(r,e,t)=>t===e?r:t<e?[...r.slice(0,t),...r.slice(t+1,e+1),r[t],...r.slice(e+1)]:[...r.slice(0,e),r[t],...r.slice(e,t),...r.slice(t+1)]
exports.arrayMove=r
exports.arrayPush=((r,e)=>[...r,e])
exports.arrayUnshift=((r,e)=>[e,...r])
exports.arrayPop=(r=>{if(0===r.length)return r
exports.arrayPush=(r,e)=>[...r,e]
exports.arrayUnshift=(r,e)=>[e,...r]
exports.arrayPop=r=>{if(0===r.length)return r
const e=[...r]
e.pop()
return e})
exports.arrayShift=(r=>{if(0===r.length)return r
return e}
exports.arrayShift=r=>{if(0===r.length)return r
const e=[...r]
e.shift()
return e})
exports.arrayConcat=((r,e)=>e&&e.length?[...r,...e]:r)
exports.arrayMatchPush=((r,e)=>r.includes(e)?r:[...r,e])
exports.arrayMatchDelete=((r,e)=>{const t=r.indexOf(e)
return~t?[...r.slice(0,t),...r.slice(t+1)]:r})
exports.arrayMatchMove=((e,t,n)=>{const s=e.indexOf(n)
return~s?r(e,t,s):e})
exports.arrayFindDelete=((r,e)=>{const t=r.findIndex(e)
return~t?[...r.slice(0,t),...r.slice(t+1)]:r})
exports.arrayFindMove=((e,t,n)=>{const s=e.findIndex(t)
return~s?r(e,n,s):e})
exports.arrayFindSet=((r,e,t)=>{const n=r.findIndex(e)
return e}
exports.arrayConcat=(r,e)=>e&&e.length?[...r,...e]:r
exports.arrayMatchPush=(r,e)=>r.includes(e)?r:[...r,e]
exports.arrayMatchDelete=(r,e)=>{const t=r.indexOf(e)
return~t?[...r.slice(0,t),...r.slice(t+1)]:r}
exports.arrayMatchMove=(e,t,n)=>{const s=e.indexOf(n)
return~s?r(e,t,s):e}
exports.arrayFindDelete=(r,e)=>{const t=r.findIndex(e)
return~t?[...r.slice(0,t),...r.slice(t+1)]:r}
exports.arrayFindMove=(e,t,n)=>{const s=e.findIndex(t)
return~s?r(e,n,s):e}
exports.arrayFindSet=(r,e,t)=>{const n=r.findIndex(e)
if(!~n||r[n]===t)return r
const s=[...r]
s[n]=t
return s})
exports.arrayFindSetOrPush=((r,e,t)=>{const n=r.findIndex(e)
return s}
exports.arrayFindSetOrPush=(r,e,t)=>{const n=r.findIndex(e)
if(!~n)return[...r,t]

@@ -39,6 +39,6 @@ if(r[n]===t)return r

s[n]=t
return s})
exports.arrayFindOrPush=((r,e,t)=>void 0===r.find(e)?[...r,t]:r)
exports.arraySplitChunk=((r,e)=>{const t=[]
return s}
exports.arrayFindOrPush=(r,e,t)=>void 0===r.find(e)?[...r,t]:r
exports.arraySplitChunk=(r,e)=>{const t=[]
for(let n=0,s=r.length;n<s;n+=e)t.push(r.slice(n,n+e))
return t})
return t}

@@ -1,2 +0,2 @@

exports.isObjectShallowEqual=((t,e)=>{if(t===e)return!0
exports.isObjectShallowEqual=(t,e)=>{if(t===e)return!0
const r=Object.keys(t)

@@ -7,7 +7,7 @@ const n=Object.keys(e)

const s=n[l]
if(!e.hasOwnProperty(o)||t[o]!==e[s])return!1}return!0})
exports.isArrayShallowEqual=((t,e)=>t===e||t.length===e.length&&t.every((t,r)=>t===e[r]))
exports.isCompactArrayShallowEqual=((t,e)=>{if(t===e)return!0
if(!e.hasOwnProperty(o)||t[o]!==e[s])return!1}return!0}
exports.isArrayShallowEqual=(t,e)=>t===e||t.length===e.length&&t.every((t,r)=>t===e[r])
exports.isCompactArrayShallowEqual=(t,e)=>{if(t===e)return!0
if(t.length!==e.length)return!1
for(let r=0,n=t.length;r<n;r++)if(t[r]!==e[r])return!1
return!0})
return!0}
var l=require("./check")
exports.transformCache=(r=>{let e=null
exports.transformCache=r=>{let e=null
let a=null
return(...t)=>{if(!a||!(0,l.isCompactArrayShallowEqual)(a,t)){e=r.apply(null,t)
a=t}return e}})
a=t}return e}}

@@ -1,18 +0,18 @@

exports.objectSet=((e,t,r)=>e[t]!==r?Object.assign({},e,{[t]:r}):e)
exports.objectDelete=((e,t)=>{if(!e.hasOwnProperty(t))return e
exports.objectSet=(e,t,r)=>e[t]!==r?Object.assign({},e,{[t]:r}):e
exports.objectDelete=(e,t)=>{if(!e.hasOwnProperty(t))return e
const r=Object.assign({},e)
delete r[t]
return r})
exports.objectMerge=((e,t)=>{for(const[r,o]of Object.entries(t))if(e[r]!==o)return Object.assign({},e,t)
return e})
exports.objectMap=((e,t)=>{const r={}
return r}
exports.objectMerge=(e,t)=>{for(const[r,o]of Object.entries(t))if(e[r]!==o)return Object.assign({},e,t)
return e}
exports.objectMap=(e,t)=>{const r={}
for(const[o,n]of Object.entries(e))r[o]=t(n,o)
return r})
exports.objectPickKey=((e,t)=>{const r={}
return r}
exports.objectPickKey=(e,t)=>{const r={}
for(const o of t)e.hasOwnProperty(o)&&(r[o]=e[o])
return r})
exports.objectFindKey=((e,t)=>{const r=Object.entries(e).find(t)
return r&&r[0]})
exports.objectDeleteUndefined=(e=>{let t
return r}
exports.objectFindKey=(e,t)=>{const r=Object.entries(e).find(t)
return r&&r[0]}
exports.objectDeleteUndefined=e=>{let t
for(const[r,o]of Object.entries(e))if(void 0===o){void 0===t&&(t=Object.assign({},e))
delete t[r]}return t||e})
delete t[r]}return t||e}

@@ -12,4 +12,4 @@ var e=require("../verify")

exports.createStateStore=s
exports.createStateStoreLite=(e=>({getState:()=>e,setState:t=>e=Object.assign({},e,t)}))
exports.createStateStoreEnhanced=(({initialState:t,enhancer:r,reducer:c})=>{(0,e.basicFunction)(r,"enhancer function required");(0,e.basicFunction)(c,"reducer function required")
exports.createStateStoreLite=e=>({getState:()=>e,setState:t=>e=Object.assign({},e,t)})
exports.createStateStoreEnhanced=({initialState:t,enhancer:r,reducer:c})=>{(0,e.basicFunction)(r,"enhancer function required");(0,e.basicFunction)(c,"reducer function required")
const{subscribe:n,unsubscribe:a,getState:u,setState:i}=s(t)

@@ -31,7 +31,7 @@ let o=null

const p={getState:l,dispatch:d}
return{subscribe:n,unsubscribe:a,getState:l,dispatch:d}})
exports.toReduxStore=(t=>{const{subscribe:r,unsubscribe:s}=t;(0,e.basicFunction)(r,"store.subscribe required");(0,e.basicFunction)(s,"store.unsubscribe required")
return{subscribe:n,unsubscribe:a,getState:l,dispatch:d}}
exports.toReduxStore=t=>{const{subscribe:r,unsubscribe:s}=t;(0,e.basicFunction)(r,"store.subscribe required");(0,e.basicFunction)(s,"store.unsubscribe required")
return Object.assign({},t,{subscribe:e=>{r(e)
return()=>s(e)}})})
exports.reducerFromMap=(e=>{const t=Object.keys(e)
return()=>s(e)}})}
exports.reducerFromMap=e=>{const t=Object.keys(e)
const r=t.length

@@ -44,6 +44,6 @@ return(s,c)=>{const n={}

n[r]=o
a=a||o!==i}return a?n:s}})
exports.createEntryEnhancer=(e=>(t,r)=>{const s=e[r.type]
return s&&s(t,r)})
exports.createStoreStateSyncReducer=((e,{getState:t,setState:r})=>(s,{type:c,payload:n})=>{c===e&&r(n)
return t()})
a=a||o!==i}return a?n:s}}
exports.createEntryEnhancer=e=>(t,r)=>{const s=e[r.type]
return s&&s(t,r)}
exports.createStoreStateSyncReducer=(e,{getState:t,setState:r})=>(s,{type:c,payload:n})=>{c===e&&r(n)
return t()}

@@ -1,6 +0,6 @@

exports.roundFloat=(t=>Math.round(1e4*t)/1e4)
exports.addAbs=((t,a)=>Math.sign(t)*Math.max(0,Math.abs(t)+a))
exports.euclideanModulo=((t,a)=>(t%a+a)%a)
exports.clamp=((t,a,o)=>Math.max(a,Math.min(o,t)))
exports.smoothstep=((t,a,o)=>t<=a?0:t>=o?1:(t=(t-a)/(o-a))*t*(3-2*t))
exports.lerp=((t,a,o)=>t+(a-t)*o)
exports.roundFloat=t=>Math.round(1e4*t)/1e4
exports.addAbs=(t,a)=>Math.sign(t)*Math.max(0,Math.abs(t)+a)
exports.euclideanModulo=(t,a)=>(t%a+a)%a
exports.clamp=(t,a,o)=>Math.max(a,Math.min(o,t))
exports.smoothstep=(t,a,o)=>t<=a?0:t>=o?1:(t=(t-a)/(o-a))*t*(3-2*t)
exports.lerp=(t,a,o)=>t+(a-t)*o

@@ -1,23 +0,23 @@

exports.linear=(t=>t)
exports.easeInQuad=(t=>t*t)
exports.easeOutQuad=(t=>t*(2-t))
exports.easeInOutQuad=(t=>t<.5?t*t*2:t*(2-t)*2-1)
exports.easeInCubic=(t=>Math.pow(t,3))
exports.easeOutCubic=(t=>Math.pow(t-1,3)+1)
exports.easeInOutCubic=(t=>t<.5?4*Math.pow(t,3):Math.pow(2*t-2,3)/2+1)
exports.easeInQuart=(t=>Math.pow(t,4))
exports.easeOutQuart=(t=>1-Math.pow(t-1,4))
exports.easeInOutQuart=(t=>t<.5?8*Math.pow(t,4):1-Math.pow(2*t-2,4)/2)
exports.easeInQuint=(t=>Math.pow(t,5))
exports.easeOutQuint=(t=>Math.pow(t-1,5)+1)
exports.easeInOutQuint=(t=>t<.5?16*Math.pow(t,5):Math.pow(2*t-2,5)/2+1)
exports.linear=t=>t
exports.easeInQuad=t=>t*t
exports.easeOutQuad=t=>t*(2-t)
exports.easeInOutQuad=t=>t<.5?t*t*2:t*(2-t)*2-1
exports.easeInCubic=t=>Math.pow(t,3)
exports.easeOutCubic=t=>Math.pow(t-1,3)+1
exports.easeInOutCubic=t=>t<.5?4*Math.pow(t,3):Math.pow(2*t-2,3)/2+1
exports.easeInQuart=t=>Math.pow(t,4)
exports.easeOutQuart=t=>1-Math.pow(t-1,4)
exports.easeInOutQuart=t=>t<.5?8*Math.pow(t,4):1-Math.pow(2*t-2,4)/2
exports.easeInQuint=t=>Math.pow(t,5)
exports.easeOutQuint=t=>Math.pow(t-1,5)+1
exports.easeInOutQuint=t=>t<.5?16*Math.pow(t,5):Math.pow(2*t-2,5)/2+1
const t=Math.PI/2
exports.easeInSine=(e=>1-Math.cos(e*t))
exports.easeOutSine=(e=>Math.sin(e*t))
exports.easeInOutSine=(t=>.5-Math.cos(t*Math.PI)/2)
exports.easeInExpo=(t=>Math.pow(2,10*t-10))
exports.easeOutExpo=(t=>1-Math.pow(2,-10*t))
exports.easeInOutExpo=(t=>t<.5?Math.pow(2,20*t-10)/2:1-Math.pow(2,10-20*t)/2)
exports.easeInCirc=(t=>1-Math.sqrt(1-t*t))
exports.easeOutCirc=(t=>Math.sqrt((2-t)*t))
exports.easeInOutCirc=(t=>t<.5?.5-Math.sqrt(.25-t*t):Math.sqrt(t*(2-t)-.75)+.5)
exports.easeInSine=e=>1-Math.cos(e*t)
exports.easeOutSine=e=>Math.sin(e*t)
exports.easeInOutSine=t=>.5-Math.cos(t*Math.PI)/2
exports.easeInExpo=t=>Math.pow(2,10*t-10)
exports.easeOutExpo=t=>1-Math.pow(2,-10*t)
exports.easeInOutExpo=t=>t<.5?Math.pow(2,20*t-10)/2:1-Math.pow(2,10-20*t)/2
exports.easeInCirc=t=>1-Math.sqrt(1-t*t)
exports.easeOutCirc=t=>Math.sqrt((2-t)*t)
exports.easeInOutCirc=t=>t<.5?.5-Math.sqrt(.25-t*t):Math.sqrt(t*(2-t)-.75)+.5
var t=require("../../env/tryRequire")
const r=(t,r)=>Math.floor(Math.random()*(r-t+1)+t)
exports.getRandomInt=((t,e=0)=>r(Math.min(t,e),Math.max(t,e)))
exports.getRandomIntList=((t,e,n)=>{const o=Math.min(t,e)
exports.getRandomInt=(t,e=0)=>r(Math.min(t,e),Math.max(t,e))
exports.getRandomIntList=(t,e,n)=>{const o=Math.min(t,e)
const a=Math.max(t,e)

@@ -10,4 +10,4 @@ const c=[]

for(;n<c.length&&!(c[n]>e);){e++
n++}c.splice(n,0,e)}return c})
exports.getRandomId=((t="")=>`${t}${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`)
n++}c.splice(n,0,e)}return c}
exports.getRandomId=(t="")=>`${t}${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`
const e=(()=>{try{const{crypto:t}=global

@@ -14,0 +14,0 @@ const r=r=>{const e=new ArrayBuffer(r)

@@ -5,3 +5,3 @@ const e=(e,t)=>{const p=[]

exports.getSample=e
exports.getSampleRange=((t,p)=>e(e=>e+t,p-t+1))
exports.getSampleRate=(t=>e(e=>e/t,1+t))
exports.getSampleRange=(t,p)=>e(e=>e+t,p-t+1)
exports.getSampleRate=t=>e(e=>e/t,1+t)
var e=require("./AsyncTaskQueue")
exports.createAsyncTaskLane=(({laneSize:t,selectLane:n=u})=>{if(!((t=Number(t))>=1))throw new Error(`invalid laneSize: ${t}`)
exports.createAsyncTaskLane=({laneSize:t,selectLane:n=u})=>{if(!((t=Number(t))>=1))throw new Error(`invalid laneSize: ${t}`)
const s=[]

@@ -10,4 +10,4 @@ for(let u=0;u<t;u++)s.push({index:u,infoQueue:[],taskQueue:(0,e.createAsyncTaskQueue)()})

r.length=a.getLength()
return i}}})
return i}}}
const u=e=>e.reduce((e,u)=>e.taskQueue.getLength()>u.taskQueue.getLength()?u:e,e[0])
exports.selectMinLoadLane=u
var e=require("../function")
const r=(e=0,r=!0)=>({A:()=>e,B:()=>++e,C:()=>--e,D:()=>r,E:()=>r=!1})
exports.createAsyncTaskQueue=((t=(e=>{}))=>{let s=r()
exports.createAsyncTaskQueue=(t=(e=>{}))=>{let s=r()
let n=Promise.resolve("QUEUE_HEAD")

@@ -13,2 +13,2 @@ return{reset:()=>{s.E()

n=o
return u}}})
return u}}}
var e=require("../time")
var t=require("./AsyncTaskQueue")
exports.createAsyncTaskRunner=(({clearRunner:s=(()=>{}),resetRunner:a=((e,t)=>{}),getTaskId:n,getTaskInitialState:r=(e=>e),runTask:u})=>{const{reset:c,getLength:o,pushTask:g}=(0,t.createAsyncTaskQueue)()
exports.createAsyncTaskRunner=({clearRunner:s=(()=>{}),resetRunner:a=((e,t)=>{}),getTaskId:n,getTaskInitialState:r=(e=>e),runTask:u})=>{const{reset:c,getLength:o,pushTask:g}=(0,t.createAsyncTaskQueue)()
const T=new Map

@@ -17,7 +17,7 @@ const k=e=>T.get(e)

return c})(s,t)},endTask:i,autoEndTask:t=>{const s=(0,e.getTimestamp)()-Math.abs(t)
T.forEach((e,t)=>{e.endAt&&e.endAt<=s&&i(t)})}}})
exports.createAsyncTaskRunnerCluster=(({runnerList:e=[],getRunnerByTaskId:t,selectRunner:a=s})=>({clear:()=>e.map(e=>e.clear()),getStatus:t=>e.map(e=>e.getStatus(t)),getQueueLength:()=>e.map(e=>e.getQueueLength()),getTaskState:s=>{const a=t(e,s)
T.forEach((e,t)=>{e.endAt&&e.endAt<=s&&i(t)})}}}
exports.createAsyncTaskRunnerCluster=({runnerList:e=[],getRunnerByTaskId:t,selectRunner:a=s})=>({clear:()=>e.map(e=>e.clear()),getStatus:t=>e.map(e=>e.getStatus(t)),getQueueLength:()=>e.map(e=>e.getQueueLength()),getTaskState:s=>{const a=t(e,s)
return a&&a.getTaskState(s)},startTask:t=>a(e,t).startTask(t),endTask:s=>{const a=t(e,s)
return a&&a.endTask(s)},autoEndTask:t=>e.forEach(e=>e.autoEndTask(t))}))
return a&&a.endTask(s)},autoEndTask:t=>e.forEach(e=>e.autoEndTask(t))})
const s=e=>e.reduce((e,t)=>e.getQueueLength()>t.getQueueLength()?t:e,e[0])
exports.selectMinLoadRunner=s

@@ -8,2 +8,2 @@ var e=require("../math/base")

exports.getBlockBar=r
exports.getBlockChart=(({valueList:t=[],valueMax:a=t.reduce((e,t)=>Math.max(e,t),-1/0),valueMin:l=t.reduce((e,t)=>Math.min(e,t),1/0),width:o=20})=>t.map(t=>r((0,e.clamp)(t,l,a)/(a-l)*o)))
exports.getBlockChart=({valueList:t=[],valueMax:a=t.reduce((e,t)=>Math.max(e,t),-1/0),valueMin:l=t.reduce((e,t)=>Math.min(e,t),1/0),width:o=20})=>t.map(t=>r((0,e.clamp)(t,l,a)/(a-l)*o))

@@ -1,3 +0,3 @@

exports.createHub=(()=>{const e=new Set
return{clear:()=>e.clear(),subscribe:t=>{e.add(t)},unsubscribe:t=>{e.delete(t)},send:t=>e.forEach(e=>e(t))}})
exports.createHub=()=>{const e=new Set
return{clear:()=>e.clear(),subscribe:t=>{e.add(t)},unsubscribe:t=>{e.delete(t)},send:t=>e.forEach(e=>e(t))}}
const e=()=>{const e=new Map

@@ -8,7 +8,7 @@ return{setMap:e,clear:()=>e.clear(),on:(t,r)=>{const n=e.get(t)

n&&0===n.size&&e.delete(t)}}}
exports.createEventTarget=(()=>{const{setMap:t,clear:r,on:n,off:s}=e()
exports.createEventTarget=()=>{const{setMap:t,clear:r,on:n,off:s}=e()
return{clear:r,dispatchEvent:e=>{const r=t.get(e.type)
r&&r.forEach(t=>t(e))},addEventListener:n,removeEventListener:s}})
exports.createEventEmitter=(()=>{const{setMap:t,clear:r,on:n,off:s}=e()
r&&r.forEach(t=>t(e))},addEventListener:n,removeEventListener:s}}
exports.createEventEmitter=()=>{const{setMap:t,clear:r,on:n,off:s}=e()
return{clear:r,emit:(e,...r)=>{const n=t.get(e)
n&&n.forEach(e=>e(...r))},on:n,off:s,addListener:n,removeListener:s,removeAllListeners:(...e)=>{e.length?e.forEach(e=>t.delete(e)):t.clear()}}})
n&&n.forEach(e=>e(...r))},on:n,off:s,addListener:n,removeListener:s,removeAllListeners:(...e)=>{e.length?e.forEach(e=>t.delete(e)):t.clear()}}}

@@ -8,3 +8,3 @@ const e=(...e)=>`@/${e.join("/")}`

exports.reduceKeySelector=t
exports.createMultiKeySwitch=(({keyCount:r})=>{const n={}
exports.createMultiKeySwitch=({keyCount:r})=>{const n={}
return{set:(e,o)=>o.forEach(o=>{if(r!==o.length)throw new Error(`invalid keySelectorList length: ${o.length}, expect: ${r}`)

@@ -19,2 +19,2 @@ t(...o).forEach(t=>{if(n[t])throw new Error(`duplicate switchKey: ${t}`)

console.warn("[verifyFull] unsetKeyList",e)
throw new Error("[verifyFull] not all possible key is set")}}}})
throw new Error("[verifyFull] not all possible key is set")}}}}
var e=require("../compare")
const t=/[\w-]+/
exports.createKeyTree=(({NAME_KEY:r="key",NAME_SUB_LIST:n="subList"})=>{if(!t.test(r))throw new Error(`expect ${r} to match: ${t}`)
if(!t.test(n))throw new Error(`expect ${n} to match: ${t}`)
const c=new RegExp(`"},{"${r}":"`,"g")
const o=new RegExp(`(?:","${n}":|^)\\[{"${r}":"`,"g")
const s=new RegExp(`"((?:}])+)(?:},{"${r}":"|$)`,"g")
const p=new RegExp(",","g")
const g=new RegExp("\\[","g")
const a=new RegExp("(]+)","g")
return{stringify:e=>JSON.stringify(e).replace(o,"[").replace(s,(e,t)=>"]".repeat(t.length/2)).replace(c,","),parse:e=>JSON.parse(e.replace(p,`"},{"${r}":"`).replace(a,(e,t,n,c)=>`"${"}]".repeat(t.length)}${n+e.length!==c.length?`},{"${r}":"`:""}`).replace(g,(e,t)=>`${0!==t?`","${n}":`:""}[{"${r}":"`)),createBuilder:t=>{const c=new Map
const o=e=>{const t={[r]:e}
const p=c.get(e)
c.delete(e)
void 0!==p&&0!==p.length&&(t[n]=p.sort(s).map(([e])=>o(e)))
var t=require("../data/Tree")
const r=/[\w-]+/
const n=({NAME_KEY:e="key",NAME_SUB_LIST:t="subList"})=>{if(!r.test(e))throw new Error(`expect ${e} to match: ${r}`)
if(!r.test(t))throw new Error(`expect ${t} to match: ${r}`)
const n=new RegExp(`"},{"${e}":"`,"g")
const s=new RegExp(`(?:","${t}":|^)\\[{"${e}":"`,"g")
const c=new RegExp(`"((?:}])+)(?:},{"${e}":"|$)`,"g")
const o=new RegExp(",","g")
const a=new RegExp("\\[","g")
const p=new RegExp("(]+)","g")
return{stringify:e=>JSON.stringify(e).replace(s,"[").replace(c,(e,t)=>"]".repeat(t.length/2)).replace(n,","),parse:r=>JSON.parse(r.replace(o,`"},{"${e}":"`).replace(p,(t,r,n,s)=>`"${"}]".repeat(r.length)}${n+t.length!==s.length?`},{"${e}":"`:""}`).replace(a,(r,n)=>`${0!==n?`","${t}":`:""}[{"${e}":"`))}}
exports.createKeyTree=n
exports.createKeyTreeEnhanced=({NAME_KEY:r="key",NAME_SUB_LIST:s="subList"})=>{const c=(0,t.createTreeDepthFirstSearch)(([e,t,n])=>e[s]&&e[s].length&&e[s].map((t,n)=>[t,n,e[r]]))
return Object.assign({},n({NAME_KEY:r,NAME_SUB_LIST:s}),{createBuilder:t=>{const n=new Map
const c=e=>{const t={[r]:e}
const a=n.get(e)
n.delete(e)
void 0!==a&&0!==a.length&&(t[s]=a.sort(o).map(([e])=>c(e)))
return t}
const s=([t,r],[n,c])=>r-c||(0,e.compareString)(t,n)
return{add:(e,t,r)=>{let n=c.get(r)
if(void 0===n){n=[]
c.set(r,n)}n.push([e,t])},build:()=>{const e=[]
let s=t
for(;s;){const{[n]:t}=o(s)
const o=([t,r],[n,s])=>r-s||(0,e.compareString)(t,n)
return{add:(e,t,r)=>{let s=n.get(r)
if(void 0===s){s=[]
n.set(r,s)}s.push([e,t])},build:()=>{const e=[]
let o=t
for(;o;){const{[s]:t}=c(o)
void 0!==t&&e.push(...t)
s=c.keys().next().value}return 0===e.length?{[r]:t}:{[r]:t,[n]:e}}}}}})
o=n.keys().next().value}return 0===e.length?{[r]:t}:{[r]:t,[s]:e}}}},walkKeyTreeJSON:(e,t=(([e,t,r])=>{}))=>c([e,0,void 0],t)})}
const e=[]
const t=[]
exports.getLevenshteinDistance=((r,o)=>{if(r===o)return 0
exports.getLevenshteinDistance=(r,o)=>{if(r===o)return 0
r.length>o.length&&([r,o]=[o,r])

@@ -21,2 +21,2 @@ let n=r.length

d=e[c]
f=e[c]=d>f?A>f?f+1:A:A>d?d+1:A}}return f})
f=e[c]=d>f?A>f?f+1:A:A>d?d+1:A}}return f}

@@ -7,3 +7,3 @@ exports.DEFAULT_MIME="application/octet-stream"

const i=/\.(\w+)$/
exports.getMIMETypeFromFileName=(o=>{const a=i.exec(o)
return a&&t[a[1]]||"application/octet-stream"})
exports.getMIMETypeFromFileName=o=>{const a=i.exec(o)
return a&&t[a[1]]||"application/octet-stream"}

@@ -1,2 +0,2 @@

exports.createPatchKit=(({NAME_KEY:e="key",NAME_MODIFY_TIME:t="mtime",EPSILON_MODIFY_TIME:c=1,isChanged:a=((e,c)=>e[t]!==c[t]),shouldApplyDelete:n=((e,c)=>e[t]>=c[t]),shouldApplyUpdate:r=((e,c)=>e[t]>c[t]),getPatchData:s=((e,a)=>e[t]<a[t]?Object.assign({},e,{[t]:a[t]+c}):e)})=>{const o=(t,c)=>t.set(c[e],c)
exports.createPatchKit=({NAME_KEY:e="key",NAME_MODIFY_TIME:t="mtime",EPSILON_MODIFY_TIME:c=1,isChanged:a=((e,c)=>e[t]!==c[t]),shouldApplyDelete:n=((e,c)=>e[t]>=c[t]),shouldApplyUpdate:r=((e,c)=>e[t]>c[t]),getPatchData:s=((e,a)=>e[t]<a[t]?Object.assign({},e,{[t]:a[t]+c}):e)})=>{const o=(t,c)=>t.set(c[e],c)
return{NAME_KEY:e,NAME_MODIFY_TIME:t,isChanged:a,shouldApplyDelete:n,shouldApplyUpdate:r,hasPatch:(t,c)=>{for(let n=0,r=c.length;n<r;n++){const r=c[n]

@@ -32,8 +32,8 @@ const s=r[e]

h=!0})
return h},arrayMapReducer:o}})
exports.toObjectPatchKit=(e=>{const{NAME_KEY:t,hasPatch:c,countPatch:a,generatePatch:n,applyPatch:r}=e
return h},arrayMapReducer:o}}
exports.toObjectPatchKit=e=>{const{NAME_KEY:t,hasPatch:c,countPatch:a,generatePatch:n,applyPatch:r}=e
return{hasObjectPatch:(e,t)=>c(new Map(Object.entries(e)),Object.values(t)),countObjectPatch:(e,t)=>a(new Map(Object.entries(e)),Object.values(t)),generateObjectPatch:(e,t)=>n(new Map(Object.entries(e)),Object.values(t)),applyObjectPatch:(e,{deleteList:c,updateList:a})=>{const n={}
return r(c,a,Object.values(e),(e,c)=>{void 0!==e&&(n[e[t]]=e)})?n:e}}})
exports.toArrayWithKeyPatchKit=(e=>{const{hasPatch:t,countPatch:c,generatePatch:a,applyPatch:n,arrayMapReducer:r}=e
return r(c,a,Object.values(e),(e,c)=>{void 0!==e&&(n[e[t]]=e)})?n:e}}}
exports.toArrayWithKeyPatchKit=e=>{const{hasPatch:t,countPatch:c,generatePatch:a,applyPatch:n,arrayMapReducer:r}=e
return{hasArrayWithKeyPatch:(e,c)=>t(e.reduce(r,new Map),c),countArrayWithKeyPatch:(e,t)=>c(e.reduce(r,new Map),t),generateArrayWithKeyPatch:(e,t)=>a(e.reduce(r,new Map),t),applyArrayWithKeyPatch:(e,{deleteList:t,updateList:c})=>{const a=[]
return n(t,c,e,(e,t)=>{void 0!==e&&a.push(e)})?a:e}}})
return n(t,c,e,(e,t)=>{void 0!==e&&a.push(e)})?a:e}}}

@@ -24,4 +24,4 @@ const r=(r,e)=>void 0===r[e]?r[e]={}:r[e]

exports.appendRouteMap=o
exports.createRouteMap=(r=>r.reduce((r,[e,t])=>o(r,e,t),{}))
exports.parseRouteUrl=((r,e)=>{const o=t(r,e)
exports.createRouteMap=r=>r.reduce((r,[e,t])=>o(r,e,t),{})
exports.parseRouteUrl=(r,e)=>{const o=t(r,e)
if(void 0===o)return

@@ -32,4 +32,4 @@ const{routeNode:a,paramValueList:u}=o

return{route:s,paramMap:n.reduce((r,e,t)=>{r[e]=u[t]
return r},{}),data:p}})
exports.getRouteParamAny=(({paramMap:r})=>r["/*"])
exports.getRouteParam=(({paramMap:r},e)=>r[e])
return r},{}),data:p}}
exports.getRouteParamAny=({paramMap:r})=>r["/*"]
exports.getRouteParam=({paramMap:r},e)=>r[e]

@@ -10,5 +10,5 @@ var r=require("../compare")

exports.parseSemVer=t
exports.compareSemVer=((r,e)=>{const o=t(r)
exports.compareSemVer=(r,e)=>{const o=t(r)
const s=t(e)
return o.major-s.major||o.minor-s.minor||o.patch-s.patch||a(o.label,s.label)})
return o.major-s.major||o.minor-s.minor||o.patch-s.patch||a(o.label,s.label)}
const a=(e,t)=>e===t?0:t.startsWith(e)?1:e.startsWith(t)?-1:(0,r.compareStringWithNumber)(e,t)

@@ -18,4 +18,4 @@ var e=require("../time")

exports.verifyOption=n
exports.verifyCheckCode=((t,r,a=(0,e.getTimestamp)())=>{if("string"!=typeof r||r.length<t.tokenSize)throw new Error(`invalid checkCode: ${r}`)
s(t,c(r),a)})
exports.verifyCheckCode=(t,r,a=(0,e.getTimestamp)())=>{if("string"!=typeof r||r.length<t.tokenSize)throw new Error(`invalid checkCode: ${r}`)
s(t,c(r),a)}
const s=({tag:t,size:r,tokenSize:a,timeGap:i,dataView:n},[s,p,c],f=(0,e.getTimestamp)())=>{if(s!==t)throw new Error(`tag mismatch: ${s}, expect: ${t}`)

@@ -26,6 +26,6 @@ if(Math.abs(f-p)>i)throw new Error(`timestamp mismatch: ${p}, expect: ${f}±${i}`)

exports.verifyParsedCheckCode=s
exports.generateLookupData=(e=>{e=n(e)
return Object.assign({},e,{dataView:new DataView((0,t.getRandomArrayBuffer)(e.size))})})
exports.generateCheckCode=(({tag:t,size:r,tokenSize:a,timeGap:i,dataView:n},s=(0,e.getTimestamp)())=>{const c=o(r,a,n,s/i)
return p(t,s,c)})
exports.generateLookupData=e=>{e=n(e)
return Object.assign({},e,{dataView:new DataView((0,t.getRandomArrayBuffer)(e.size))})}
exports.generateCheckCode=({tag:t,size:r,tokenSize:a,timeGap:i,dataView:n},s=(0,e.getTimestamp)())=>{const c=o(r,a,n,s/i)
return p(t,s,c)}
const p=(e,t,a)=>(0,r.swapObfuscateString)([e,t.toString(36),a].join("-"))

@@ -37,5 +37,5 @@ exports.packCheckCode=p

exports.parseCheckCode=c
exports.packDataArrayBuffer=(({tag:e,size:t,tokenSize:r,timeGap:i,dataView:o})=>(0,a.packArrayBufferPacket)(JSON.stringify([e,t,r,i]),o.buffer))
exports.parseDataArrayBuffer=(e=>{const[t,r]=(0,a.parseArrayBufferPacket)(e)
exports.packDataArrayBuffer=({tag:e,size:t,tokenSize:r,timeGap:i,dataView:o})=>(0,a.packArrayBufferPacket)(JSON.stringify([e,t,r,i]),o.buffer)
exports.parseDataArrayBuffer=e=>{const[t,r]=(0,a.parseArrayBufferPacket)(e)
const[i,o,n,s]=JSON.parse(t)
return{tag:i,size:o,tokenSize:n,timeGap:s,dataView:new DataView(r)}})
return{tag:i,size:o,tokenSize:n,timeGap:s,dataView:new DataView(r)}}

@@ -21,4 +21,4 @@ var e=require("../time")

exports.createUpdater=c
exports.createUpdateLoop=(({delay:t,queueTask:a=e.requestFrameUpdate,cancelTask:u=e.cancelFrameUpdate}={})=>{const{clear:r,pushFunc:s,setFunc:n,deleteFunc:l,update:o}=c()
exports.createUpdateLoop=({delay:t,queueTask:a=e.requestFrameUpdate,cancelTask:u=e.cancelFrameUpdate}={})=>{const{clear:r,pushFunc:s,setFunc:n,deleteFunc:l,update:o}=c()
const{start:p,stop:d}=(0,e.createTimer)({func:o,queueTask:a,cancelTask:u,delay:t})
return{start:p,stop:d,clear:r,pushFunc:s,setFunc:n,deleteFunc:l}})
return{start:p,stop:d,clear:r,pushFunc:s,setFunc:n,deleteFunc:l}}

@@ -7,5 +7,5 @@ var e=require("../check")

exports.objectMergeDeep=c
exports.objectSortKey=((e,c=r.compareStringLocale)=>{Object.keys(e).sort(c).forEach(r=>{const c=e[r]
exports.objectSortKey=(e,c=r.compareStringLocale)=>{Object.keys(e).sort(c).forEach(r=>{const c=e[r]
delete e[r]
e[r]=c})
return e})
return e}
const e=/\n/g
const s=(s,t=" ",o=t)=>`${o}${s.replace(e,`\n${t}`)}`
exports.indentLine=s
exports.indentList=((e,t=[],o=" - ",p=" ".repeat(o.length))=>[e,...t.map(e=>s(e,p,o))].join("\n"))
exports.autoEllipsis=((e="",s=64,t=32,o=16)=>e.length>s?`${e.slice(0,t)}...${o>0?e.slice(-o):""} (+${e.length-t-o})`:e)
exports.indentList=(e,t=[],o=" - ",p=" ".repeat(o.length))=>[e,...t.map(e=>s(e,p,o))].join("\n")
exports.autoEllipsis=(e="",s=64,t=32,o=16)=>e.length>s?`${e.slice(0,t)}...${o>0?e.slice(-o):""} (+${e.length-t-o})`:e
const t=/[^A-Z]/
const o=/([^A-Z]|[A-Z]{2,})([A-Z])/g
exports.splitCamelCase=(e=>t.test(e)?e.replace(o,"$1 $2").split(" "):[e])
exports.splitSnakeCase=(e=>e.split("_"))
exports.splitKebabCase=(e=>e.split("-"))
exports.joinCamelCase=((e,s=1)=>e.reduce((e,t,o)=>e+(o<s?t:p(t)),""))
exports.joinSnakeCase=(e=>e.join("_").toUpperCase())
exports.joinKebabCase=(e=>e.join("-").toLowerCase())
exports.splitCamelCase=e=>t.test(e)?e.replace(o,"$1 $2").split(" "):[e]
exports.splitSnakeCase=e=>e.split("_")
exports.splitKebabCase=e=>e.split("-")
exports.joinCamelCase=(e,s=1)=>e.reduce((e,t,o)=>e+(o<s?t:p(t)),"")
exports.joinSnakeCase=e=>e.join("_").toUpperCase()
exports.joinKebabCase=e=>e.join("-").toLowerCase()
const p=e=>e.charAt(0).toUpperCase()+e.slice(1)

@@ -18,8 +18,8 @@ const n={'"':"&#34;","&":"&#38;","'":"&#39;","<":"&#60;",">":"&#62;"}

const r=e=>n[e]||e
exports.escapeHTML=(e=>e&&e.replace(a,r))
exports.escapeHTML=e=>e&&e.replace(a,r)
const c={"&#34;":'"',"&quot;":'"',"&#38;":"&","&amp;":"&","&#39;":"'","&apos;":"'","&#60;":"<","&lt;":"<","&#62;":">","&gt;":">"}
const l=/&(?:#34|quot|#38|amp|#39|apos|#60|lt|#62|gt);/g
const i=e=>c[e]||e
exports.unescapeHTML=(e=>e&&e.replace(l,i))
exports.unescapeHTML=e=>e&&e.replace(l,i)
const x=/[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm
exports.removeInvalidCharXML=(e=>e.replace(x,""))
exports.removeInvalidCharXML=e=>e.replace(x,"")

@@ -11,8 +11,8 @@ var e=require("../env/global")

exports.clock=t
exports.getTimestamp=(()=>Math.floor(.001*Date.now()))
exports.setTimeoutAsync=((e=0)=>new Promise(t=>setTimeout(t,e)))
exports.getTimestamp=()=>Math.floor(.001*Date.now())
exports.setTimeoutAsync=(e=0)=>new Promise(t=>setTimeout(t,e))
const[o,r]=e.global.requestAnimationFrame?[e.global.requestAnimationFrame,e.global.cancelAnimationFrame]:[e=>setTimeout(e,1e3/60),clearTimeout]
exports.cancelFrameUpdate=r
exports.requestFrameUpdate=o
exports.createTimer=(({func:e,delay:t,queueTask:o=setTimeout,cancelTask:r=clearTimeout})=>{let s=null
exports.createTimer=({func:e,delay:t,queueTask:o=setTimeout,cancelTask:r=clearTimeout})=>{let s=null
const a=()=>{if(s){s=o(a,t)

@@ -25,6 +25,6 @@ e()}}

c()
n()}}}})
exports.createStepper=((e=t())=>()=>{const o=t()
n()}}}}
exports.createStepper=(e=t())=>()=>{const o=t()
const r=o-e
e=o
return r})
return r}

@@ -17,7 +17,7 @@ var t=require("./check")

exports.basicObject=u
exports.objectKey=((e,r,i)=>(0,t.isObjectKey)(e,r)||o("ObjectKey",i,`expect to have key: ${r}`))
exports.objectContain=((r,i,s)=>(0,t.isObjectContain)(r,i)||o("ObjectContain",s,`expect to contain: ${(0,e.describe)(i)}`))
exports.objectKey=(e,r,i)=>(0,t.isObjectKey)(e,r)||o("ObjectKey",i,`expect to have key: ${r}`)
exports.objectContain=(r,i,s)=>(0,t.isObjectContain)(r,i)||o("ObjectContain",s,`expect to contain: ${(0,e.describe)(i)}`)
const l=r("Array",t.isBasicArray)
exports.basicArray=l
exports.arrayLength=((r,i,s)=>(0,t.isArrayLength)(r,i)||o("ArrayLength",s,`expect length: ${i}, get: ${(0,t.isBasicArray)(r)?r.length:(0,e.describe)(r)}`))
exports.arrayLength=(r,i,s)=>(0,t.isArrayLength)(r,i)||o("ArrayLength",s,`expect length: ${i}, get: ${(0,t.isBasicArray)(r)?r.length:(0,e.describe)(r)}`)
const y=r("Function",t.isBasicFunction)

@@ -27,11 +27,11 @@ exports.basicFunction=y

exports.promiseAlike=p
exports.oneOf=((r,i,s)=>(0,t.isOneOf)(r,i)||o("OneOf",s,`expect one of: [${i}], get: ${(0,e.describe)(r)}`))
exports.doThrow=((e,r)=>(0,t.isFunctionThrow)(e)||o("DoThrow",r))
exports.doNotThrow=((e,r)=>(0,t.isFunctionThrow)(e)&&o("DoNotThrow",r))
exports.doThrowAsync=(async(e,r)=>await(0,t.isFunctionThrowAsync)(e)||o("DoThrowAsync",r))
exports.doNotThrowAsync=(async(e,r)=>await(0,t.isFunctionThrowAsync)(e)&&o("DoThrowAsync",r))
exports.oneOf=(r,i,s)=>(0,t.isOneOf)(r,i)||o("OneOf",s,`expect one of: [${i}], get: ${(0,e.describe)(r)}`)
exports.doThrow=(e,r)=>(0,t.isFunctionThrow)(e)||o("DoThrow",r)
exports.doNotThrow=(e,r)=>(0,t.isFunctionThrow)(e)&&o("DoNotThrow",r)
exports.doThrowAsync=async(e,r)=>await(0,t.isFunctionThrowAsync)(e)||o("DoThrowAsync",r)
exports.doNotThrowAsync=async(e,r)=>await(0,t.isFunctionThrowAsync)(e)&&o("DoThrowAsync",r)
const x=(t,o)=>`\nactual: ${(0,e.describe)(t)}\nexpect: ${(0,e.describe)(o)}`
exports.strictEqual=((e,r,i)=>(0,t.isStrictEqual)(e,r)||o("StrictEqual",i,x(e,r)))
exports.notStrictEqual=((e,r,i)=>(0,t.isStrictEqual)(e,r)&&o("NotStrictEqual",i,x(e,r)))
exports.stringifyEqual=((e,r,i="should stringify equal")=>(0,t.isStringifyEqual)(e,r)||o("StringifyEqual",i,x(e,r)))
exports.notStringifyEqual=((e,r,i="should not stringify equal")=>(0,t.isStringifyEqual)(e,r)&&o("NotStringifyEqual",i,x(e,r)))
exports.strictEqual=(e,r,i)=>(0,t.isStrictEqual)(e,r)||o("StrictEqual",i,x(e,r))
exports.notStrictEqual=(e,r,i)=>(0,t.isStrictEqual)(e,r)&&o("NotStrictEqual",i,x(e,r))
exports.stringifyEqual=(e,r,i="should stringify equal")=>(0,t.isStringifyEqual)(e,r)||o("StringifyEqual",i,x(e,r))
exports.notStringifyEqual=(e,r,i="should not stringify equal")=>(0,t.isStringifyEqual)(e,r)&&o("NotStringifyEqual",i,x(e,r))

@@ -119,6 +119,6 @@ root=window,factory=function(){return function(t){var e={}

n.d(h,"createSetMap",()=>Ht)
n.d(h,"getInvertSetMap",()=>Gt)
n.d(h,"getInvertSetMap",()=>Yt)
var p={}
n.r(p)
n.d(p,"createToggle",()=>Yt)
n.d(p,"createToggle",()=>Gt)
var f={}

@@ -196,4 +196,4 @@ n.r(f)

n.d(w,"getUnionOfList",()=>He)
n.d(w,"isEmpty",()=>Ge)
n.d(w,"isIntersect",()=>Ye)
n.d(w,"isEmpty",()=>Ye)
n.d(w,"isIntersect",()=>Ge)
n.d(w,"isContain",()=>We)

@@ -262,4 +262,4 @@ n.d(w,"isContainPoint",()=>Je)

n.d(S,"objectPickKey",()=>Hn)
n.d(S,"objectFindKey",()=>Gn)
n.d(S,"objectDeleteUndefined",()=>Yn)
n.d(S,"objectFindKey",()=>Yn)
n.d(S,"objectDeleteUndefined",()=>Gn)
var O={}

@@ -320,4 +320,4 @@ n.r(O)

n.d(k,"createStateStore",()=>Hr)
n.d(k,"createStateStoreLite",()=>Gr)
n.d(k,"createStateStoreEnhanced",()=>Yr)
n.d(k,"createStateStoreLite",()=>Yr)
n.d(k,"createStateStoreEnhanced",()=>Gr)
n.d(k,"toReduxStore",()=>Wr)

@@ -393,4 +393,4 @@ n.d(k,"reducerFromMap",()=>Jr)

n.d(R,"withRetry",()=>Ho)
n.d(R,"withRetryAsync",()=>Go)
n.d(R,"withTimeoutAsync",()=>Yo)
n.d(R,"withRetryAsync",()=>Yo)
n.d(R,"withTimeoutAsync",()=>Go)
n.d(R,"withTimeoutPromise",()=>Wo)

@@ -427,80 +427,81 @@ n.d(R,"createInsideOutPromise",()=>Jo)

n.d(I,"createKeyTree",()=>vs)
n.d(I,"createKeyTreeEnhanced",()=>ws)
var z={}
n.r(z)
n.d(z,"getLevenshteinDistance",()=>bs)
n.d(z,"getLevenshteinDistance",()=>Es)
var U={}
n.r(U)
n.d(U,"DEFAULT_MIME",()=>Es)
n.d(U,"BASIC_EXTENSION_MAP",()=>As)
n.d(U,"getMIMETypeFromFileName",()=>Ss)
n.d(U,"DEFAULT_MIME",()=>As)
n.d(U,"BASIC_EXTENSION_MAP",()=>Ms)
n.d(U,"getMIMETypeFromFileName",()=>Os)
var q={}
n.r(q)
n.d(q,"createPatchKit",()=>Os)
n.d(q,"toObjectPatchKit",()=>Ls)
n.d(q,"toArrayWithKeyPatchKit",()=>Ts)
n.d(q,"createPatchKit",()=>Ls)
n.d(q,"toObjectPatchKit",()=>Ts)
n.d(q,"toArrayWithKeyPatchKit",()=>ks)
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)
n.d(K,"parseRouteToMap",()=>Ds)
n.d(K,"findRouteFromMap",()=>Cs)
n.d(K,"appendRouteMap",()=>Rs)
n.d(K,"createRouteMap",()=>Ps)
n.d(K,"parseRouteUrl",()=>$s)
n.d(K,"getRouteParamAny",()=>_s)
n.d(K,"getRouteParam",()=>Bs)
var Q={}
n.r(Q)
n.d(Q,"parseSemVer",()=>Ns)
n.d(Q,"compareSemVer",()=>Fs)
n.d(Q,"parseSemVer",()=>Fs)
n.d(Q,"compareSemVer",()=>Is)
var V={}
n.r(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,"verifyOption",()=>Ks)
n.d(V,"verifyCheckCode",()=>Qs)
n.d(V,"verifyParsedCheckCode",()=>Vs)
n.d(V,"generateLookupData",()=>Hs)
n.d(V,"generateCheckCode",()=>Ys)
n.d(V,"packCheckCode",()=>Gs)
n.d(V,"parseCheckCode",()=>Ys)
n.d(V,"packDataArrayBuffer",()=>Ws)
n.d(V,"parseDataArrayBuffer",()=>Js)
n.d(V,"parseCheckCode",()=>Ws)
n.d(V,"packDataArrayBuffer",()=>Js)
n.d(V,"parseDataArrayBuffer",()=>Xs)
var H={}
n.r(H)
n.d(H,"createUpdater",()=>Xs)
n.d(H,"createUpdateLoop",()=>Zs)
n.d(H,"createUpdater",()=>Zs)
n.d(H,"createUpdateLoop",()=>ta)
var Y={}
n.r(Y)
n.d(Y,"AsyncTaskLane",()=>$)
n.d(Y,"AsyncTaskQueue",()=>P)
n.d(Y,"AsyncTaskRunner",()=>_)
n.d(Y,"BlockChart",()=>B)
n.d(Y,"Event",()=>a)
n.d(Y,"KeySelector",()=>N)
n.d(Y,"KeyTree",()=>I)
n.d(Y,"LevenshteinDistance",()=>z)
n.d(Y,"MIME",()=>U)
n.d(Y,"Patch",()=>q)
n.d(Y,"RouteMap",()=>K)
n.d(Y,"SemVer",()=>Q)
n.d(Y,"TimedLookup",()=>V)
n.d(Y,"UpdateLoop",()=>H)
var G={}
n.r(G)
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,"objectMergeDeep",()=>ta)
n.d(Y,"objectSortKey",()=>ea)
n.d(G,"objectMergeDeep",()=>ea)
n.d(G,"objectSortKey",()=>na)
var W={}
n.r(W)
n.d(W,"Object",()=>Y)
n.d(W,"Object",()=>G)
var J={}
n.r(J)
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)
n.d(J,"indentLine",()=>oa)
n.d(J,"indentList",()=>sa)
n.d(J,"autoEllipsis",()=>aa)
n.d(J,"splitCamelCase",()=>da)
n.d(J,"joinCamelCase",()=>ha)
n.d(J,"splitSnakeCase",()=>ua)
n.d(J,"joinSnakeCase",()=>pa)
n.d(J,"splitKebabCase",()=>la)
n.d(J,"joinKebabCase",()=>fa)
n.d(J,"escapeHTML",()=>wa)
n.d(J,"unescapeHTML",()=>Aa)
n.d(J,"removeInvalidCharXML",()=>Sa)
var X={}

@@ -512,3 +513,3 @@ n.r(X)

n.d(X,"Math",()=>D)
n.d(X,"Module",()=>G)
n.d(X,"Module",()=>Y)
n.d(X,"Mutable",()=>W)

@@ -525,10 +526,10 @@ n.d(X,"Check",()=>O)

n.r(Z)
n.d(Z,"Blob",()=>Sa)
n.d(Z,"parseBlobAsText",()=>Ta)
n.d(Z,"parseBlobAsDataURL",()=>ka)
n.d(Z,"parseBlobAsArrayBuffer",()=>ja)
n.d(Z,"Blob",()=>Oa)
n.d(Z,"parseBlobAsText",()=>ka)
n.d(Z,"parseBlobAsDataURL",()=>ja)
n.d(Z,"parseBlobAsArrayBuffer",()=>Da)
var tt={}
n.r(tt)
n.d(tt,"packBlobPacket",()=>Ca)
n.d(tt,"parseBlobPacket",()=>Ra)
n.d(tt,"packBlobPacket",()=>Ra)
n.d(tt,"parseBlobPacket",()=>Pa)
var et={}

@@ -540,9 +541,9 @@ n.r(et)

n.r(nt)
n.d(nt,"createKeyCommandHub",()=>Pa)
n.d(nt,"createKeyCommandHub",()=>$a)
var rt={}
n.r(rt)
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)
n.d(rt,"POINTER_EVENT_TYPE",()=>_a)
n.d(rt,"applyPointerEventListener",()=>Ba)
n.d(rt,"ENHANCED_POINTER_EVENT_TYPE",()=>Na)
n.d(rt,"applyEnhancedPointerEventListener",()=>Fa)
var ot={}

@@ -554,6 +555,6 @@ n.r(ot)

n.r(st)
n.d(st,"createHistoryStateStore",()=>Fa)
n.d(st,"createHistoryStateStore",()=>Ia)
var at={}
n.r(at)
n.d(at,"createSyncStateStorage",()=>Ia)
n.d(at,"createSyncStateStorage",()=>za)
var ct={}

@@ -565,21 +566,21 @@ n.r(ct)

n.r(it)
n.d(it,"throttleByAnimationFrame",()=>za)
n.d(it,"applyDragFileListListener",()=>qa)
n.d(it,"getPathElementList",()=>Ka)
n.d(it,"getElementAtViewport",()=>Qa)
n.d(it,"throttleByAnimationFrame",()=>Ua)
n.d(it,"applyDragFileListListener",()=>Ka)
n.d(it,"getPathElementList",()=>Qa)
n.d(it,"getElementAtViewport",()=>Va)
var dt={}
n.r(dt)
n.d(dt,"fetchLikeRequest",()=>Wa)
n.d(dt,"fetchLikeRequest",()=>Ja)
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)
n.d(ut,"loadText",()=>uc)
n.d(ut,"loadImage",()=>lc)
n.d(ut,"loadScript",()=>hc)
n.d(ut,"createDownload",()=>pc)
n.d(ut,"createDownloadWithBlob",()=>fc)
n.d(ut,"createDownloadWithString",()=>yc)
n.d(ut,"createDownloadWithObject",()=>gc)
n.d(ut,"saveArrayBufferCache",()=>mc)
n.d(ut,"loadArrayBufferCache",()=>vc)
n.d(ut,"deleteArrayBufferCache",()=>wc)
var lt={}

@@ -793,9 +794,9 @@ n.r(lt)

r&&r.forEach(n)}}}
const Gt=(t,e=Ht())=>{t.forEach((t,n)=>e.add(t,n))
const Yt=(t,e=Ht())=>{t.forEach((t,n)=>e.add(t,n))
return e}
const Yt=()=>{const t=new Map
const Gt=()=>{const t=new Map
const e=(e,n)=>{void 0===n&&(n=!t.get(e))
t.set(e,n)
return n}
e.get=(e=>t.get(e))
e.get=e=>t.get(e)
return e}

@@ -929,4 +930,4 @@ const Wt=t=>{const e=(e,n)=>{const r=t(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 Ye=({min:t,max:e})=>e.x<=t.x||e.y<=t.y
const Ge=(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

@@ -1030,5 +1031,5 @@ const Je=({min:t,max:e},{x:n,y:r})=>n>=t.x&&n<=e.x&&r>=t.y&&r<=e.y

return n}
const Gn=(t,e)=>{const n=Object.entries(t).find(e)
const Yn=(t,e)=>{const n=Object.entries(t).find(e)
return n&&n[0]}
const Yn=t=>{let e
const Gn=t=>{let e
for(const[n,r]of Object.entries(t))if(void 0===r){void 0===e&&(e=Object.assign({},t))

@@ -1124,4 +1125,4 @@ delete e[n]}return e||t}

return 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")
const Yr=t=>({getState:()=>t,setState:e=>t=Object.assign({},t,e)})
const Gr=({initialState:t,enhancer:e,reducer:n})=>{$r(e,"enhancer function required")
$r(n,"reducer function required")

@@ -1267,3 +1268,3 @@ const{subscribe:r,unsubscribe:o,getState:s,setState:a}=Hr(t)

for(;;)try{return t(n,e)}catch(t){if(e<++n)throw t}}
const Go=async(t,e=1/0,n=0)=>{let r=0
const Yo=async(t,e=1/0,n=0)=>{let r=0
for(;;){const o=Po()

@@ -1273,3 +1274,3 @@ try{return await t(r,e)}catch(t){if(e<++r)throw t

s>0&&await _o(s)}}}
const Yo=(t,e)=>Wo(t(),e)
const Go=(t,e)=>Wo(t(),e)
const Wo=(t,e)=>{let n=null

@@ -1375,3 +1376,5 @@ return Promise.race([t,new Promise((t,r)=>{n=setTimeout(()=>r(new Error(`timeout after: ${e}`)),e)})]).then(t=>{clearTimeout(n)

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
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}":"`))}}
const ws=({NAME_KEY:t="key",NAME_SUB_LIST:e="subList"})=>{const n=Wt(([n,r,o])=>n[e]&&n[e].length&&n[e].map((e,r)=>[e,r,n[t]]))
return Object.assign({},vs({NAME_KEY:t,NAME_SUB_LIST:e}),{createBuilder:n=>{const r=new Map
const o=n=>{const a={[t]:n}

@@ -1389,6 +1392,6 @@ const c=r.get(n)

void 0!==t&&s.push(...t)
a=r.keys().next().value}return 0===s.length?{[t]:n}:{[t]:n,[e]:s}}}}}}
const ws=[]
a=r.keys().next().value}return 0===s.length?{[t]:n}:{[t]:n,[e]:s}}}},walkKeyTreeJSON:(t,e=(([t,e,n])=>{}))=>n([t,0,void 0],e)})}
const xs=[]
const bs=(t,e)=>{if(t===e)return 0
const bs=[]
const Es=(t,e)=>{if(t===e)return 0
t.length>e.length&&([t,e]=[e,t])

@@ -1403,4 +1406,4 @@ let n=t.length

let s=0
for(;s<n;){xs[s]=t.charCodeAt(o+s)
ws[s]=++s}let a,c,i,d
for(;s<n;){bs[s]=t.charCodeAt(o+s)
xs[s]=++s}let a,c,i,d
let u=0

@@ -1410,13 +1413,13 @@ for(;u<r;){a=e.charCodeAt(o+u)

c=u
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(";")
for(s=0;s<n;s++){d=a===bs[s]?i:i+1
i=xs[s]
c=xs[s]=i>c?d>c?c+1:d:d>i?i+1:d}}return c}
const As="application/octet-stream"
const Ms=["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 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)
const Ss=/\.(\w+)$/
const Os=t=>{const e=Ss.exec(t)
return e&&Ms[e[1]]||As}
const Ls=({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]

@@ -1453,16 +1456,16 @@ const a=s[t]

return i},arrayMapReducer:c}}
const Ls=t=>{const{NAME_KEY:e,hasPatch:n,countPatch:r,generatePatch:o,applyPatch:s}=t
const Ts=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
const ks=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=[]
const js=(t,e)=>void 0===t[e]?t[e]={}:t[e]
const Ds=(t,e)=>{const n=[]
return{routeNode:t=e.split("/").reduce((t,r)=>{if("*"===r){n.push("/*")
return ks(t,"/*")}if(":"===r[0]){const o=r.slice(1)
return js(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 ks(t,"/:PARAM")}return ks(t,r)},t),paramNameList:n}}
const Ds=(t,e)=>{const n=[]
return js(t,"/:PARAM")}return js(t,r)},t),paramNameList:n}}
const Cs=(t,e)=>{const n=[]
const r=e.split("/")

@@ -1475,9 +1478,9 @@ for(let e=0,o=r.length;e<o;e++){const o=r[e]

t=t["/:PARAM"]}}return{routeNode:t,paramValueList:n}}
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)
const Rs=(t={},e="/",n)=>{if(Array.isArray(e))return e.reduce((e,r)=>Rs(t,r,n),t)
const{routeNode:r,paramNameList:o}=Ds(t,e)
if(r["/DATA"])throw new Error(`duplicate route: ${e}`)
r["/DATA"]={route:e,paramNameList:o,data:n}
return t}
const Rs=t=>t.reduce((t,[e,n])=>Cs(t,e,n),{})
const Ps=(t,e)=>{const n=Ds(t,e)
const Ps=t=>t.reduce((t,[e,n])=>Rs(t,e,n),{})
const $s=(t,e)=>{const n=Cs(t,e)
if(void 0===n)return

@@ -1489,6 +1492,6 @@ const{routeNode:r,paramValueList:o}=n

return t},{}),data:c}}
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)||[]
const _s=({paramMap:t})=>t["/*"]
const Bs=({paramMap:t},e)=>t[e]
const Ns=/^(\d+)\.(\d+)\.(\d+)(.*)$/
const Fs=t=>{let[,e,n,r,o=""]=Ns.exec(t)||[]
e=parseInt(e)

@@ -1499,14 +1502,14 @@ n=parseInt(n)

return{major:e,minor:n,patch:r,label:o}}
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 Is=(t,e)=>{const n=Fs(t)
const r=Fs(e)
return n.major-r.major||n.minor-r.minor||n.patch-r.patch||zs(n.label,r.label)}
const zs=(t,e)=>t===e?0:e.startsWith(t)?1:t.startsWith(e)?-1:fs(t,e)
const Us="1".charCodeAt(0)
const qs=(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)===zs?a=(a+n.getUint8((a+1)%t))%t:c*=16
for(let e=0,r=o.length;e<r;e++){o.charCodeAt(e)===Us?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 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}`)
const Ks=({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}`)

@@ -1516,21 +1519,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 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}`)
const Qs=(t,e,n=$o())=>{if("string"!=typeof e||e.length<t.tokenSize)throw new Error(`invalid checkCode: ${e}`)
Vs(t,Ws(e),n)}
const Vs=({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=Us(e,n,o,a/r)
const d=qs(e,n,o,a/r)
if(d!==c)throw new Error(`code mismatch: ${c}, expect: ${d}`)}
const Vs=t=>{t=qs(t)
const Hs=t=>{t=Ks(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)
const Ys=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o},s=$o())=>{const a=qs(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("-")
const Ws=t=>{const e=se(t).split("-")
e[1]=Number.parseInt(e[1],36)
return e}
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 Js=({tag:t,size:e,tokenSize:n,timeGap:r,dataView:o})=>Tt(JSON.stringify([t,e,n,r]),o.buffer)
const Xs=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 Xs=()=>{let t
const Zs=()=>{let t
let e

@@ -1552,48 +1555,48 @@ let n

n.forEach(s)}}}
const Zs=({delay:t,queueTask:e=Bo,cancelTask:n=No}={})=>{const{clear:r,pushFunc:o,setFunc:s,deleteFunc:a,update:c}=Xs()
const ta=({delay:t,queueTask:e=Bo,cancelTask:n=No}={})=>{const{clear:r,pushFunc:o,setFunc:s,deleteFunc:a,update:c}=Zs()
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 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)})
const ea=(t,e)=>{Object.entries(e).forEach(([e,n])=>{const r=t[e]
r!==n&&(t[e]=er(r)&&er(n)?ea(r,n):n)})
return t}
const ea=(t,e=ps)=>{Object.keys(t).sort(e).forEach(e=>{const n=t[e]
const na=(t,e=ps)=>{Object.keys(t).sort(e).forEach(e=>{const n=t[e]
delete t[e]
t[e]=n})
return t}
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={'"':"&#34;","&":"&#38;","'":"&#39;","<":"&#60;",">":"&#62;"}
const ga=/["&'<>]/g
const ma=t=>ya[t]||t
const va=t=>t&&t.replace(ga,ma)
const wa={"&#34;":'"',"&quot;":'"',"&#38;":"&","&amp;":"&","&#39;":"'","&apos;":"'","&#60;":"<","&lt;":"<","&#62;":">","&gt;":">"}
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
const ra=/\n/g
const oa=(t,e=" ",n=e)=>`${n}${t.replace(ra,`\n${e}`)}`
const sa=(t,e=[],n=" - ",r=" ".repeat(n.length))=>[t,...e.map(t=>oa(t,r,n))].join("\n")
const aa=(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 ca=/[^A-Z]/
const ia=/([^A-Z]|[A-Z]{2,})([A-Z])/g
const da=t=>ca.test(t)?t.replace(ia,"$1 $2").split(" "):[t]
const ua=t=>t.split("_")
const la=t=>t.split("-")
const ha=(t,e=1)=>t.reduce((t,n,r)=>t+(r<e?n:ya(n)),"")
const pa=t=>t.join("_").toUpperCase()
const fa=t=>t.join("-").toLowerCase()
const ya=t=>t.charAt(0).toUpperCase()+t.slice(1)
const ga={'"':"&#34;","&":"&#38;","'":"&#39;","<":"&#60;",">":"&#62;"}
const ma=/["&'<>]/g
const va=t=>ga[t]||t
const wa=t=>t&&t.replace(ma,va)
const xa={"&#34;":'"',"&quot;":'"',"&#38;":"&","&amp;":"&","&#39;":"'","&apos;":"'","&#60;":"<","&lt;":"<","&#62;":">","&gt;":">"}
const ba=/&(?:#34|quot|#38|amp|#39|apos|#60|lt|#62|gt);/g
const Ea=t=>xa[t]||t
const Aa=t=>t&&t.replace(ba,Ea)
const Ma=/[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm
const Sa=t=>t.replace(Ma,"")
const{Blob:Oa,FileReader:La}=window
const Ta=t=>e=>new Promise((n,r)=>{const o=new La
o.addEventListener("error",r)
o.addEventListener("load",()=>n(o.result))
o[t](e)})
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 ka=Ta("readAsText")
const ja=Ta("readAsDataURL")
const Da=Ta("readAsArrayBuffer")
const Ca=new Oa
const Ra=(t,e=Ca)=>new Oa([...Ot(Et(t)),e])
const Pa=async t=>{const e=new DataView(await Da(t.slice(0,Mt))).getUint32(0,!1)
return[bt(await Da(t.slice(Mt,Mt+e))),t.slice(Mt+e)]}
const $a=({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

@@ -1607,4 +1610,4 @@ if((!r||r.contains(t.target))&&rr(t,o)){!e&&t.preventDefault()

return t},deleteKeyCommand:({id:t})=>n.delete(t)}}
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={START:"START",MOVE:"MOVE",END:"END",CANCEL:"CANCEL"}
const Ba=({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

@@ -1645,10 +1648,10 @@ o=r&&o

s&&r&&a.addEventListener("touchcancel",w)
e($a.START,t,f)}}
e(_a.START,t,f)}}
const m=n=>{if(y(n))return
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)
e(_a.MOVE,n,f)}
const v=t=>{if(!y(t)){e(_a.END,t,f)
h()}}
const w=t=>{if(!y(t)){e($a.CANCEL,t,f)
const w=t=>{if(!y(t)){e(_a.CANCEL,t,f)
h()}}

@@ -1661,4 +1664,4 @@ t.addEventListener("pointerdown",g)

h()}}
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{}
const Na={TAP:"TAP",HOLD:"HOLD",DRAG_MOVE:"DRAG_MOVE",DRAG_END:"DRAG_END",DRAG_CANCEL:"DRAG_CANCEL"}
const Fa=t=>{let{onEnhancedEvent:e,onEvent:n,holdDurationThreshold:r=500,dragDistanceThreshold:o=5}=t,s=function(t,e){if(null==t)return{}
var n={}

@@ -1670,11 +1673,11 @@ var r=Object.keys(t)

let a=!1
return _a(Object.assign({onEvent:(t,s,c)=>{const i=c(s)
switch(t){case $a.START:a=!1
return Ba(Object.assign({onEvent:(t,s,c)=>{const i=c(s)
switch(t){case _a.START:a=!1
break
case $a.MOVE:(a|=i.distance>=o)&&e(Ba.DRAG_MOVE,i)
case _a.MOVE:(a|=i.distance>=o)&&e(Na.DRAG_MOVE,i)
break
case $a.END:a?e(Ba.DRAG_END,i):i.duration>=r?e(Ba.HOLD,i):e(Ba.TAP,i)
case _a.END:a?e(Na.DRAG_END,i):i.duration>=r?e(Na.HOLD,i):e(Na.TAP,i)
break
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}`)
case _a.CANCEL:a&&e(Na.DRAG_CANCEL,i)}n&&n(t,s,c)}},s))}
const Ia=(t=window.location.href)=>{const e=(e,n)=>{if("string"!=typeof e)throw new Error(`non-string href: ${e}`)
if(e===t)return t

@@ -1695,3 +1698,3 @@ const r=t

window.removeEventListener("hashchange",r)}}}}
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={}
const za=({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=[]

@@ -1712,3 +1715,3 @@ const a=t=>{o={}

return{reset:a,init:t=>a(Object.assign({},t,i())),save:c,load:i}}
const za=t=>{let e=null
const Ua=t=>{let e=null
const n=()=>{const n=e

@@ -1719,14 +1722,14 @@ e=null

e=t}}
const Ua=t=>{t.stopPropagation()
const qa=t=>{t.stopPropagation()
t.preventDefault()}
const qa=(t=window.document,e)=>{const n=t=>{Ua(t)
const Ka=(t=window.document,e)=>{const n=t=>{qa(t)
const{files:n}=t.dataTransfer
n&&n.length&&e(n)}
t.addEventListener("dragenter",Ua)
t.addEventListener("dragover",Ua)
t.addEventListener("dragenter",qa)
t.addEventListener("dragover",qa)
t.addEventListener("drop",n)
return()=>{t.removeEventListener("dragenter",Ua)
t.removeEventListener("dragover",Ua)
return()=>{t.removeEventListener("dragenter",qa)
t.removeEventListener("dragover",qa)
t.removeEventListener("drop",n)}}
const Ka=(t,e)=>{if(!t.contains(e))return[]
const Qa=(t,e)=>{if(!t.contains(e))return[]
let n=e

@@ -1736,3 +1739,3 @@ const r=[]

n=n.parentElement}return r}
const Qa=(t,e)=>{const n=e&&e.map(t=>{const{visibility:e}=t.style
const Va=(t,e)=>{const n=e&&e.map(t=>{const{visibility:e}=t.style
t.style.visibility="hidden"

@@ -1743,15 +1746,15 @@ return e})

return r}
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)))
l.ontimeout=(()=>d(u("NETWORK_TIMEOUT",-1)))
l.onreadystatechange=(()=>{const{readyState:t,status:e}=l
const{XMLHttpRequest:Ha,Blob:Ya,TextDecoder:Ga}=ft.c
const Wa=/[\r\n]+/
const Ja=(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 Ha
l.onerror=()=>d(u("NETWORK_ERROR",-1))
l.ontimeout=()=>d(u("NETWORK_TIMEOUT",-1))
l.onreadystatechange=()=>{const{readyState:t,status:e}=l
if(2!==t)return
if(0===e){l.abort()
return d(u("HEADER_STATUS_ERROR",-1))}const n=l.getAllResponseHeaders().split(Ya).reduce((t,e)=>{const[n,...r]=e.split(":")
return d(u("HEADER_STATUS_ERROR",-1))}const n=l.getAllResponseHeaders().split(Wa).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},Ja(l,u)))})
i(Object.assign({status:e,ok:e>=200&&e<300,headers:n},Xa(l,u)))}
a&&l.upload&&(l.upload.onprogress=a)

@@ -1765,3 +1768,3 @@ c&&(l.onprogress=c)

l.send(r||null)})
const Ja=(t,e)=>{let n
const Xa=(t,e)=>{let n
let r

@@ -1773,35 +1776,35 @@ setTimeout(()=>{if(!n){r=!0

n=!0
return new Promise((n,r)=>{t.onerror=(()=>r(e("PAYLOAD_ERROR",-1)))
t.ontimeout=(()=>r(e("PAYLOAD_TIMEOUT",-1)))
t.onreadystatechange=(()=>{if(4===t.readyState){if(0===t.status)return r(e("PAYLOAD_STATUS_ERROR",-1))
n(t.response)}})})}
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})
return new Promise((n,r)=>{t.onerror=()=>r(e("PAYLOAD_ERROR",-1))
t.ontimeout=()=>r(e("PAYLOAD_TIMEOUT",-1))
t.onreadystatechange=()=>{if(4===t.readyState){if(0===t.status)return r(e("PAYLOAD_STATUS_ERROR",-1))
n(t.response)}}})}
const s=()=>o().then(tc)
return{arrayBuffer:o,blob:()=>o().then(Za),text:s,json:()=>s().then(ec)}}
const Za=t=>new Ya([t])
const tc=t=>(new Ga).decode(t)
const ec=t=>JSON.parse(t)
const{fetch:nc,navigator:rc,caches:oc,URL:sc,Blob:ac,Request:cc,Response:ic}=window
const dc=(t,e={})=>Object.assign(document.createElement(t),e)
const uc=async t=>(await nc(t)).text()
const lc=t=>new Promise((e,n)=>dc("img",{src:t,onerror:n,onload:t=>e(t.currentTarget)}))
const hc=t=>new Promise((e,n)=>document.body.appendChild(dc("script",{src:t,async:!1,type:Ms.js,onerror:n,onload:t=>e(t.currentTarget)})))
const pc=(t,e)=>{const n=dc("a",{download:t,href:e})
document.body.appendChild(n)
n.click()
document.body.removeChild(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))
const fc=(t,e)=>{if(rc.msSaveOrOpenBlob)return rc.msSaveOrOpenBlob(e,t)
const n=sc.createObjectURL(e)
pc(t,n)
setTimeout(()=>sc.revokeObjectURL(n),5e3)}
const yc=(t,e,n=Ms.txt)=>fc(t,new ac([e],{type:n}))
const gc=(t,e,n=Ms.json)=>yc(t,JSON.stringify(e),n)
const mc=async(t,e,n)=>{const r=await oc.open(t)
await r.put(new cc(e),new ic(n))
return{bucketName:t,key:e}}
const mc=async(t,e)=>{const n=await rc.open(t)
const r=await n.match(new ac(e))
const vc=async(t,e)=>{const n=await oc.open(t)
const r=await n.match(new cc(e))
return r&&r.arrayBuffer()}
const vc=async(t,e)=>{if(!e)return rc.delete(t)
const n=await rc.open(t)
return n&&n.delete(new ac(e))}
const wc=async(t,e)=>{if(!e)return oc.delete(t)
const n=await oc.open(t)
return n&&n.delete(new cc(e))}
n.d(e,"Env",()=>r)

@@ -1808,0 +1811,0 @@ n.d(e,"Common",()=>X)

@@ -1,2 +0,2 @@

exports.getEndianness=(()=>{try{const r=new Uint8Array(new ArrayBuffer(2))
exports.getEndianness=()=>{try{const r=new Uint8Array(new ArrayBuffer(2))
const n=new Uint16Array(r.buffer)

@@ -6,4 +6,4 @@ r[0]=161

if(45729===n[0])return"little"
if(41394===n[0])return"big"}catch(r){console.error("[getEndianness]",r)}return"unknown"})
exports.assert=((r,...n)=>{if(!r){console.error("[ASSERT]",...n)
throw new Error(`[ASSERT] ${n.join(", ")}`)}})
if(41394===n[0])return"big"}catch(r){console.error("[getEndianness]",r)}return"unknown"}
exports.assert=(r,...n)=>{if(!r){console.error("[ASSERT]",...n)
throw new Error(`[ASSERT] ${n.join(", ")}`)}}
const o=()=>"undefined"!=typeof window?window:"undefined"!=typeof global?global:void 0
exports.getGlobal=o
exports.getEnvironment=(()=>{const{process:n,window:e,document:s}=o()
exports.getEnvironment=()=>{const{process:n,window:e,document:s}=o()
const d=void 0!==n&&void 0!==n.versions&&n.versions.node
const i=void 0!==e&&void 0!==s
return{isNode:d,isBrowser:i,environmentName:d?"node":i?"browser":"unknown"}})
return{isNode:d,isBrowser:i,environmentName:d?"node":i?"browser":"unknown"}}
const n=o()
exports.global=n

@@ -1,11 +0,11 @@

exports.receiveBufferAsync=(e=>new Promise((r,o)=>{const n=[]
exports.receiveBufferAsync=e=>new Promise((r,o)=>{const n=[]
e.on("error",o)
e.on("data",e=>n.push(e))
e.on("end",()=>{e.off("error",o)
r(Buffer.concat(n))})}))
exports.sendBufferAsync=((e,r)=>new Promise((o,n)=>{if(0===r.length)return o()
r(Buffer.concat(n))})})
exports.sendBufferAsync=(e,r)=>new Promise((o,n)=>{if(0===r.length)return o()
e.on("error",n)
e.write(r,()=>{e.off("error",n)
o()})}))
exports.toArrayBuffer=(e=>{const{buffer:r,byteOffset:o,byteLength:n}=e
return r.byteLength===n?r:r.slice(o,o+n)})
o()})})
exports.toArrayBuffer=e=>{const{buffer:r,byteOffset:o,byteLength:n}=e
return r.byteLength===n?r:r.slice(o,o+n)}

@@ -5,4 +5,4 @@ var r=require("../../common/data/ArrayBuffer")

const f=Buffer.allocUnsafe(0)
exports.packBufferPacket=((a,E=f)=>Buffer.concat([...(0,e.packArrayBufferHeader)((0,r.fromString)(a)).map(r=>Buffer.from(r)),E]))
exports.parseBufferPacket=(f=>{const E=f.readUIntBE(0,e.HEADER_BYTE_SIZE,!0)
return[(0,r.toString)((0,a.toArrayBuffer)(f.slice(e.HEADER_BYTE_SIZE,e.HEADER_BYTE_SIZE+E))),f.slice(e.HEADER_BYTE_SIZE+E)]})
exports.packBufferPacket=(a,E=f)=>Buffer.concat([...(0,e.packArrayBufferHeader)((0,r.fromString)(a)).map(r=>Buffer.from(r)),E])
exports.parseBufferPacket=f=>{const E=f.readUIntBE(0,e.HEADER_BYTE_SIZE,!0)
return[(0,r.toString)((0,a.toArrayBuffer)(f.slice(e.HEADER_BYTE_SIZE,e.HEADER_BYTE_SIZE+E))),f.slice(e.HEADER_BYTE_SIZE+E)]}
var r=require("crypto")
const e=(0,require("util").promisify)(r.randomFill)
exports.getRandomBufferAsync=(r=>e(Buffer.allocUnsafe(r)))
exports.getRandomBufferAsync=r=>e(Buffer.allocUnsafe(r))

@@ -1,2 +0,2 @@

exports.createLogQueue=(({outputStream:e,queueLengthThreshold:t=1024})=>{const n=[]
exports.createLogQueue=({outputStream:e,queueLengthThreshold:t=1024})=>{const n=[]
const r=()=>{n.push("")

@@ -9,2 +9,2 @@ const e=n.join("\n")

n.length>t&&u()},save:u,end:()=>{0!==n.length&&e.write(r())
e.end()}}})
e.end()}}}
var e=require("stream")
exports.pipeStreamAsync=((e,r)=>new Promise((o,n)=>{r.on("error",n)
exports.pipeStreamAsync=(e,r)=>new Promise((o,n)=>{r.on("error",n)
r.on("end",()=>{r.off("error",n)
o()})
r.pipe(e)}))
exports.bufferToStream=(r=>{const o=new e.Duplex
r.pipe(e)})
exports.bufferToStream=r=>{const o=new e.Duplex
o.push(r)
o.push(null)
return o})
return o}

@@ -13,6 +13,6 @@ var e=require("zlib")

exports.compressFile=s
exports.compressFileList=(async({fileList:a,fileSuffix:i=".gz",createCompressStream:o=e.createGzip,deleteBloat:n=!1,bloatRatio:c=1})=>{for(const e of a){if(e.endsWith(i))continue
exports.compressFileList=async({fileList:a,fileSuffix:i=".gz",createCompressStream:o=e.createGzip,deleteBloat:n=!1,bloatRatio:c=1})=>{for(const e of a){if(e.endsWith(i))continue
const a=`${e}${i}`
await(0,t.readableAsync)(a)||await s(e,a,o())
n&&await r(e,a,c)&&await(0,t.unlinkAsync)(a)}})
n&&await r(e,a,c)&&await(0,t.unlinkAsync)(a)}}
const r=async(e,s,r)=>{const{size:a}=await(0,t.statAsync)(e)

@@ -19,0 +19,0 @@ const{size:i}=await(0,t.statAsync)(s)

@@ -33,3 +33,3 @@ var t=require("path")

exports.walkDirectoryInfoTreeBottomUp=n
exports.copyDirectoryInfoTree=(async(o,a)=>{await(0,e.createDirectory)(a)
exports.copyDirectoryInfoTree=async(o,a)=>{await(0,e.createDirectory)(a)
const r={[o.root]:a}

@@ -39,8 +39,8 @@ return s(o,({path:o,name:a,stat:s})=>{const n=(0,t.dirname)(o)

r[o]=c
return(0,e.copyPath)(o,c,s)})})
exports.moveDirectoryInfoTree=(async({root:o,subInfoListMap:a},r)=>{await(0,e.createDirectory)(r)
return(0,e.copyPath)(o,c,s)})}
exports.moveDirectoryInfoTree=async({root:o,subInfoListMap:a},r)=>{await(0,e.createDirectory)(r)
for(const s of a[o]){const{path:o,name:a,stat:n}=s
await(0,e.movePath)(o,(0,t.join)(r,a),n)}})
exports.deleteDirectoryInfoTree=(async t=>n(t,({path:t,stat:o})=>(0,e.deletePath)(t,o)))
exports.getFileList=(async(o,a=c)=>{const n=[]
await(0,e.movePath)(o,(0,t.join)(r,a),n)}}
exports.deleteDirectoryInfoTree=async t=>n(t,({path:t,stat:o})=>(0,e.deletePath)(t,o))
exports.getFileList=async(o,a=c)=>{const n=[]
const i=await(0,e.getPathStat)(o)

@@ -52,3 +52,3 @@ const p=(0,e.getPathTypeFromStat)(i)

break
default:throw new Error(`invalid pathType: ${p} for ${o}`)}return n})
default:throw new Error(`invalid pathType: ${p} for ${o}`)}return n}
const c=(t,{path:o})=>t.push(o)

@@ -14,3 +14,3 @@ var r=require("fs")

exports.getPathStat=s
exports.getPathTypeFromStat=(r=>r.isDirectory()?o.Directory:r.isFile()?o.File:r!==e?o.Other:o.Error)
exports.getPathTypeFromStat=r=>r.isDirectory()?o.Directory:r.isFile()?o.File:r!==e?o.Other:o.Error
const y=async(r,o)=>{void 0===o&&(o=await s(r))

@@ -25,8 +25,8 @@ if(!o.isDirectory()){if(o!==e)throw new Error(`path already taken by non-directory: ${r}`)

exports.trimDirectory=h
exports.movePath=(async(r,t,o)=>{void 0===o&&(o=await s(r))
exports.movePath=async(r,t,o)=>{void 0===o&&(o=await s(r))
if(o===e)throw new Error(`missing path from ${r}`)
return(0,i.renameAsync)(r,t)})
exports.copyPath=(async(r,t,e)=>{void 0===e&&(e=await s(r))
return(!e.isDirectory()||!(await s(t)).isDirectory())&&(e.isDirectory()?(0,i.mkdirAsync)(t):(0,i.copyFileAsync)(r,t))})
exports.deletePath=(async(r,t)=>{void 0===t&&(t=await s(r))
return t.isDirectory()?(0,i.rmdirAsync)(r):(0,i.unlinkAsync)(r)})
return(0,i.renameAsync)(r,t)}
exports.copyPath=async(r,t,e)=>{void 0===e&&(e=await s(r))
return(!e.isDirectory()||!(await s(t)).isDirectory())&&(e.isDirectory()?(0,i.mkdirAsync)(t):(0,i.copyFileAsync)(r,t))}
exports.deletePath=async(r,t)=>{void 0===t&&(t=await s(r))
return t.isDirectory()?(0,i.rmdirAsync)(r):(0,i.unlinkAsync)(r)}

@@ -25,8 +25,8 @@ Object.defineProperty(exports,"createReadStream",{enumerable:!0,get:function(){return r.createReadStream}})

exports.visibleAsync=A
exports.nearestExistAsync=(async r=>{for(;r&&!await A(r);)r=(0,e.dirname)(r)
return r})
exports.createPathPrefixLock=(r=>{r=(0,e.resolve)(r)
exports.nearestExistAsync=async r=>{for(;r&&!await A(r);)r=(0,e.dirname)(r)
return r}
exports.createPathPrefixLock=r=>{r=(0,e.resolve)(r)
return t=>{const s=(0,e.resolve)(r,t)
if(!s.startsWith(r))throw new Error(`invalid relativePath: ${t}`)
return s}})
return s}}
const h=(e,r)=>new Promise((t,n)=>{const a=(0,s.createInterface)({input:e,historySize:0,crlfDelay:1/0})

@@ -38,5 +38,5 @@ a.on("error",e=>{a.close()

exports.createReadlineFromStreamAsync=h
exports.createReadlineFromFileAsync=((e,t)=>h((0,r.createReadStream)(e),t))
exports.trimPathDepth=((r,t)=>(0,e.normalize)(r).split(e.sep).slice(0,t).join(e.sep))
exports.createReadlineFromFileAsync=(e,t)=>h((0,r.createReadStream)(e),t)
exports.trimPathDepth=(r,t)=>(0,e.normalize)(r).split(e.sep).slice(0,t).join(e.sep)
const v=/\\/g
exports.toPosixPath=(e=>e.replace(v,"/"))
exports.toPosixPath=e=>e.replace(v,"/")

@@ -23,3 +23,3 @@ var e=require("path")

exports.modify=p
exports.withTempDirectory=(async(o,i)=>{const c=await(0,t.nearestExistAsync)(o)
exports.withTempDirectory=async(o,i)=>{const c=await(0,t.nearestExistAsync)(o)
await(0,a.createDirectory)(o)

@@ -31,2 +31,2 @@ if(c===o)return i()

if(p)throw p
return s})
return s}

@@ -7,3 +7,3 @@ var e=require("path")

const s=()=>null
exports.createFileWatcher=(({wait:c=250,persistent:i=!1})=>{const o=(0,n.createHub)()
exports.createFileWatcher=({wait:c=250,persistent:i=!1})=>{const o=(0,n.createHub)()
let l

@@ -48,2 +48,2 @@ let u

await g()
b=l===w?u:null},subscribe:e=>o.subscribe(e),unsubscribe:e=>o.unsubscribe(e)}})
b=l===w?u:null},subscribe:e=>o.subscribe(e),unsubscribe:e=>o.unsubscribe(e)}}
var t=require("crypto")
var e=require("../data/Buffer")
exports.getEntityTagByContentHash=(e=>`"${e.length.toString(16)}-${(0,t.createHash)("sha1").update(e).digest("base64")}"`)
exports.getEntityTagByContentHashAsync=(async a=>{const r=a.length.toString(16)
exports.getEntityTagByContentHash=e=>`"${e.length.toString(16)}-${(0,t.createHash)("sha1").update(e).digest("base64")}"`
exports.getEntityTagByContentHashAsync=async a=>{const r=a.length.toString(16)
const n=(0,t.createHash)("sha1")
n.write(a)
n.end()
return`"${r}-${(await(0,e.receiveBufferAsync)(n)).toString("base64")}"`})
exports.getWeakEntityTagByStat=(t=>`W/"${t.size.toString(16)}-${t.mtimeMs.toString(16)}"`)
return`"${r}-${(await(0,e.receiveBufferAsync)(n)).toString("base64")}"`}
exports.getWeakEntityTagByStat=t=>`W/"${t.size.toString(16)}-${t.mtimeMs.toString(16)}"`

@@ -14,3 +14,3 @@ var t=require("path")

exports.INITIAL_FACT_INFO=F
exports.createFactDatabase=(async e=>{let{initialFactInfo:c,initialState:n=l,applyFact:u=((t,e)=>Object.assign({},t,e)),encodeFact:h=JSON.stringify,decodeFact:p=JSON.parse,pathFactDirectory:g,nameFactLogFile:y=s,nameFactCacheFile:I=f,onError:m}=e,S=function(t,e){if(null==t)return{}
exports.createFactDatabase=async e=>{let{initialFactInfo:c,initialState:n=l,applyFact:u=((t,e)=>Object.assign({},t,e)),encodeFact:h=JSON.stringify,decodeFact:p=JSON.parse,pathFactDirectory:g,nameFactLogFile:y=s,nameFactCacheFile:I=f,onError:m}=e,S=function(t,e){if(null==t)return{}
var a={}

@@ -40,3 +40,3 @@ var c=Object.keys(t)

D.end()
j()}}}})
j()}}}}
const d=async(t,{applyFact:a,decodeFact:c,pathFactDirectory:i,nameFactLogFile:r,nameFactCacheFile:o})=>{const s=[]

@@ -64,3 +64,3 @@ const f=[]

o=e}})}return Object.assign({},t,{factId:i,factState:n,factLogFile:o})}
exports.tryDeleteExtraCache=(async({pathFactDirectory:t,nameFactCacheFile:a=f,keepFactId:c=1/0,keepFileCount:i=2})=>{const o=(await(0,n.getDirectorySubInfoList)(t)).map(({path:t,name:e})=>{const c=e.startsWith(a)&&h.test(e)&&parseInt(h.exec(e)[1])
exports.tryDeleteExtraCache=async({pathFactDirectory:t,nameFactCacheFile:a=f,keepFactId:c=1/0,keepFileCount:i=2})=>{const o=(await(0,n.getDirectorySubInfoList)(t)).map(({path:t,name:e})=>{const c=e.startsWith(a)&&h.test(e)&&parseInt(h.exec(e)[1])
return Number.isInteger(c)&&{fileId:c,path:t,name:e}}).filter(Boolean)

@@ -73,2 +73,2 @@ if(!o.length)return

if(s<i){s+=1
continue}const{error:f}=await(0,e.catchAsync)(r.unlinkAsync,n)}})
continue}const{error:f}=await(0,e.catchAsync)(r.unlinkAsync,n)}}

@@ -15,3 +15,3 @@ var e=require("path")

const u=864e5
exports.createLogger=(async t=>{let{pathLogDirectory:a,getLogFileName:i=(()=>`${(new Date).toISOString().replace(/\W/g,"-")}.log`),saveInterval:s=o,splitInterval:c=u}=t,g=l(t,["pathLogDirectory","getLogFileName","saveInterval","splitInterval"])
exports.createLogger=async t=>{let{pathLogDirectory:a,getLogFileName:i=(()=>`${(new Date).toISOString().replace(/\W/g,"-")}.log`),saveInterval:s=o,splitInterval:c=u}=t,g=l(t,["pathLogDirectory","getLogFileName","saveInterval","splitInterval"])
let v

@@ -35,2 +35,2 @@ let h

d()
return{add:(...e)=>{v&&v.add(e.join(" "))},save:L,split:f,end:m}})
return{add:(...e)=>{v&&v.add(e.join(" "))},save:L,split:f,end:m}}
var t=require("../../../common/string")
const e={name:"",nameENV:"",nameCONFIG:"",shortName:"",aliasNameList:[],optional:!1,argumentCount:"0",argumentLengthMin:0,argumentLengthMax:0,argumentListNormalize:t=>t,argumentListVerify:t=>{},description:"",extendFormatList:[]}
exports.createOptionParser=(({formatList:e,prefixENV:r="",prefixCONFIG:i=""})=>{const u=new Map
exports.createOptionParser=({formatList:e,prefixENV:r="",prefixCONFIG:i=""})=>{const u=new Map
const g=new Map

@@ -26,3 +26,3 @@ const h=new Map

e.extendFormatList.forEach((t,n)=>E(t,n,e))};(e=e.map((t,e)=>o(t,e,null))).forEach((t,e)=>E(t,e,null))
return{parseCLI:p(c(u,g)),parseENV:l(h),parseCONFIG:$(N),processOptionMap:L(f,C),formatUsage:(t,n=!1)=>V(t&&`Message:\n${b(t.toString())}`,`CLI Usage:\n${b(d(e))}`,!n&&`ENV Usage:\n${b(x(e))}`,!n&&`CONFIG Usage:\n${b(O(e))}`)}})
return{parseCLI:p(c(u,g)),parseENV:l(h),parseCONFIG:$(N),processOptionMap:L(f,C),formatUsage:(t,n=!1)=>V(t&&`Message:\n${b(t.toString())}`,`CLI Usage:\n${b(d(e))}`,!n&&`ENV Usage:\n${b(x(e))}`,!n&&`CONFIG Usage:\n${b(O(e))}`)}}
const n=/^(\d+)(-)?(\d+)?$/

@@ -29,0 +29,0 @@ const a=(t,e)=>{"function"!=typeof t&&(t=!!t&&s)

@@ -25,5 +25,5 @@ var e=require("path")

c[o]=t})
exports.getOptionalFormatFlag=((...e)=>t=>!e.some(e=>Boolean(t[e])))
exports.getOptionalFormatValue=((e,...t)=>r=>{const o=r[e]
return o&&!t.includes(o.argumentList[0])})
exports.getOptionalFormatFlag=(...e)=>t=>!e.some(e=>Boolean(t[e]))
exports.getOptionalFormatValue=(e,...t)=>r=>{const o=r[e]
return o&&!t.includes(o.argumentList[0])}
const m=async({parseCLI:r,parseENV:o,parseCONFIG:n,processOptionMap:a})=>{const s=g(r(process.argv.slice(2)),process.cwd())

@@ -43,3 +43,3 @@ const p=s.config&&s.config.argumentList[0]

exports.createOptionGetter=u
exports.prepareOption=(e=>{const{parseCLI:t,parseENV:r,parseCONFIG:o,processOptionMap:n,formatUsage:a}=(0,s.createOptionParser)(e)
return{parseOption:async()=>u(await m({parseCLI:t,parseENV:r,parseCONFIG:o,processOptionMap:n})),formatUsage:a}})
exports.prepareOption=e=>{const{parseCLI:t,parseENV:r,parseCONFIG:o,processOptionMap:n,formatUsage:a}=(0,s.createOptionParser)(e)
return{parseOption:async()=>u(await m({parseCLI:t,parseENV:r,parseCONFIG:o,processOptionMap:n})),formatUsage:a}}
var e=require("fs")
var r=require("../../common/error")
exports.createSafeWriteStream=(({pathOutputFile:t,flag:n="w",mode:o=438,onError:l=r.rethrowError})=>{let i=(0,e.openSync)(t,n,o)
exports.createSafeWriteStream=({pathOutputFile:t,flag:n="w",mode:o=438,onError:l=r.rethrowError})=>{let i=(0,e.openSync)(t,n,o)
let c=[]

@@ -13,2 +13,2 @@ let s=[]

i=null
s.length=c.length=0}}})
s.length=c.length=0}}}

@@ -16,7 +16,7 @@ var e=require("http")

exports.requestAsync=s
exports.ping=(async(e,{method:t="GET",headers:r,body:n,wait:c=5e3,maxRetry:a=0}={})=>(0,o.withRetryAsync)(async()=>{(await s(e,{method:t,headers:r,timeout:c},n)).destroy()},a,c))
exports.fetchLikeRequest=(async(e,{method:t="GET",headers:r,body:o,timeout:n=1e4}={})=>{const a={method:t,headers:Object.assign({"accept-encoding":"gzip"},r),timeout:n}
exports.ping=async(e,{method:t="GET",headers:r,body:n,wait:c=5e3,maxRetry:a=0}={})=>(0,o.withRetryAsync)(async()=>{(await s(e,{method:t,headers:r,timeout:c},n)).destroy()},a,c)
exports.fetchLikeRequest=async(e,{method:t="GET",headers:r,body:o,timeout:n=1e4}={})=>{const a={method:t,headers:Object.assign({"accept-encoding":"gzip"},r),timeout:n}
const i=await s(e,a,o)
const u=i.statusCode
return Object.assign({status:u,ok:u>=200&&u<300,headers:i.headers},c(i,n))})
return Object.assign({status:u,ok:u>=200&&u<300,headers:i.headers},c(i,n))}
const c=(e,t)=>{let o

@@ -23,0 +23,0 @@ let s

@@ -9,4 +9,4 @@ var r=require("fs")

let o
exports.DR_BROWSER_SCRIPT_TAG=(()=>{void 0===o&&(o=`<script>${(0,r.readFileSync)(i())}<\/script>`)
return 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()

@@ -18,3 +18,3 @@ return(0,e.runInThisContext)(s,{filename:r,displayErrors:!0})}

exports.loadLocalScript=c
exports.loadScript=(r=>r.includes("://")?n(r):c(r))
exports.loadScript=r=>r.includes("://")?n(r):c(r)
const l=async r=>(await(0,t.fetchLikeRequest)(r)).json()

@@ -24,2 +24,2 @@ exports.loadRemoteJSON=l

exports.loadLocalJSON=u
exports.loadJSON=(r=>r.includes("://")?l(r):u(r))
exports.loadJSON=r=>r.includes("://")?l(r):u(r)

@@ -1,7 +0,7 @@

exports.COMMON_LAYOUT=((t=[],e=[])=>["<!DOCTYPE html>","<html>","<head>",'<meta charset="utf-8">','<meta name="viewport" content="minimum-scale=1, width=device-width">',...t,"</head>","<body>",...e,"</body>","</html>"].join("\n"))
exports.COMMON_STYLE=(()=>"<style>\n*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; outline-color: #f00; }\n::-webkit-scrollbar-thumb { background: #0004; }\n::-webkit-scrollbar-thumb:hover { background: #0006; }\nbody { overflow: auto; display: flex; flex-flow: column; height: 100vh; font-family: monospace; font-size: 16px; }\nbutton, .button { text-decoration: none; cursor: pointer; margin: 4px; padding: 4px; min-width: 32px; border: 0; border-radius: 4px; background: hsla(0, 0%, 70%, 0.4); box-shadow: inset 0 0 0 1px #888; }\nbutton:hover, .button:hover { background: hsla(0, 0%, 80%, 0.4); box-shadow: inset 0 0 0 1px #aaa; }\nbutton.select, button:hover.select, .button.select, .button:hover.select { color: #e00; box-shadow: inset 0 0 0 1px #e00; }\nbutton:disabled, button:disabled:hover, .button:disabled, .button:disabled:hover { cursor: default; background: hsla(0, 0%, 100%, 0.4); box-shadow: unset; }\n@media (pointer: fine) {\n ::-webkit-scrollbar { width: 14px; height: 14px; }\n button, .button, .auto-height { min-height: 20px; font-size: 14px; } \n}\n@media (pointer: coarse) {\n ::-webkit-scrollbar { width: 6px; height: 6px; }\n button, .button, .auto-height { min-height: 32px; font-size: 18px; } \n}\n</style>")
exports.COMMON_SCRIPT=(c=>{const d={}
exports.COMMON_LAYOUT=(t=[],e=[])=>["<!DOCTYPE html>","<html>","<head>",'<meta charset="utf-8">','<meta name="viewport" content="minimum-scale=1, width=device-width">',...t,"</head>","<body>",...e,"</body>","</html>"].join("\n")
exports.COMMON_STYLE=()=>"<style>\n*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; outline-color: #f00; }\n::-webkit-scrollbar-thumb { background: #0004; }\n::-webkit-scrollbar-thumb:hover { background: #0006; }\nbody { overflow: auto; display: flex; flex-flow: column; height: 100vh; font-family: monospace; font-size: 16px; }\nbutton, .button { text-decoration: none; cursor: pointer; margin: 4px; padding: 4px; min-width: 32px; border: 0; border-radius: 4px; background: hsla(0, 0%, 70%, 0.4); box-shadow: inset 0 0 0 1px #888; }\nbutton:hover, .button:hover { background: hsla(0, 0%, 80%, 0.4); box-shadow: inset 0 0 0 1px #aaa; }\nbutton.select, button:hover.select, .button.select, .button:hover.select { color: #e00; box-shadow: inset 0 0 0 1px #e00; }\nbutton:disabled, button:disabled:hover, .button:disabled, .button:disabled:hover { cursor: default; background: hsla(0, 0%, 100%, 0.4); box-shadow: unset; }\n@media (pointer: fine) {\n ::-webkit-scrollbar { width: 14px; height: 14px; }\n button, .button, .auto-height { min-height: 20px; font-size: 14px; } \n}\n@media (pointer: coarse) {\n ::-webkit-scrollbar { width: 6px; height: 6px; }\n button, .button, .auto-height { min-height: 32px; font-size: 18px; } \n}\n</style>"
exports.COMMON_SCRIPT=c=>{const d={}
const b=[]
Object.entries(Object.assign({qS:t,qSA:e,cE:n,aCL:o,mECN:i,mEA:r,iDR:s,tDR:a},c)).forEach(([t,e])=>{"function"==typeof e?b.push(`<script>window[${JSON.stringify(t)}] = ${e.toString()}<\/script>`):d[t]=e})
return[`<script>Object.assign(window, ${JSON.stringify(d)})<\/script>`,...b].join("\n")})
return[`<script>Object.assign(window, ${JSON.stringify(d)})<\/script>`,...b].join("\n")}
const t=(t,e)=>{const n=document.querySelector(t)

@@ -8,0 +8,0 @@ n&&"string"==typeof e&&(n.innerHTML=e)

var r=require("../../common/error")
var e=require("net")
exports.parseCookieString=(r=>r.split(";").reduce((r,e)=>{const[t,...o]=e.split("=")
exports.parseCookieString=r=>r.split(";").reduce((r,e)=>{const[t,...o]=e.split("=")
const s=o.join("=").trim()
""!==s&&(r[t.trim()]=s)
return r},{}))
return r},{})
const t=(r=0,t="0.0.0.0")=>new Promise((o,s)=>{const n=(0,e.createServer)()

@@ -13,3 +13,3 @@ n.on("error",s)

exports.getUnusedPort=t
exports.autoTestServerPort=(async(e,o)=>{for(const s of e){const{result:e,error:n}=await(0,r.catchAsync)(t,s,o)
if(e)return e}return t(0,o)})
exports.autoTestServerPort=async(e,o)=>{for(const s of e){const{result:e,error:n}=await(0,r.catchAsync)(t,s,o)
if(e)return e}return t(0,o)}
var e=require("../../../common/time")
var r=require("../../../common/format")
exports.responderEnd=(e=>{if(e.response.finished)return
exports.responderEnd=e=>{if(e.response.finished)return
const{error:r}=e.getState()
!e.response.headersSent&&e.response.writeHead(r?500:400)
e.response.end()})
exports.responderEndWithStatusCode=((e,{statusCode:r=500,headerMap:s})=>{if(!e.response.finished){!e.response.headersSent&&e.response.writeHead(r,s)
e.response.end()}})
exports.responderEndWithRedirect=((e,{statusCode:r=302,redirectUrl:s})=>{if(!e.response.finished){!e.response.headersSent&&e.response.writeHead(r,{location:s})
e.response.end()}})
exports.responderSetHeaderCacheControlImmutable=(e=>{e.response.setHeader("cache-control","max-age=315360000, public, immutable")})
e.response.end()}
exports.responderEndWithStatusCode=(e,{statusCode:r=500,headerMap:s})=>{if(!e.response.finished){!e.response.headersSent&&e.response.writeHead(r,s)
e.response.end()}}
exports.responderEndWithRedirect=(e,{statusCode:r=302,redirectUrl:s})=>{if(!e.response.finished){!e.response.headersSent&&e.response.writeHead(r,{location:s})
e.response.end()}}
exports.responderSetHeaderCacheControlImmutable=e=>{e.response.setHeader("cache-control","max-age=315360000, public, immutable")}
const s=({url:e,method:r,headers:{host:s},socket:{remoteAddress:t,remotePort:o}})=>`[${r}] ${s||""}${e} (${t}:${o})`
exports.createResponderLog=(({log:e,describeRequest:r=s})=>s=>{const t=s.request.headers["user-agent"]||"no-user-agent"
e(r(s.request),"[UA]",t)})
exports.createResponderLogEnd=(({log:t,describeRequest:o=s})=>s=>{const{statusCode:n}=s.response
exports.createResponderLog=({log:e,describeRequest:r=s})=>s=>{const t=s.request.headers["user-agent"]||"no-user-agent"
e(r(s.request),"[UA]",t)}
exports.createResponderLogEnd=({log:t,describeRequest:o=s})=>s=>{const{statusCode:n}=s.response
const{time:a,error:d}=s.getState()
const p=(0,r.time)((0,e.clock)()-a)
t(o(s.request),d?`[ERROR|${n}|${p}] ${d.stack||d}`:`[END|${n}|${p}]`)})
exports.createResponderSetHeaderHSTS=(({protocol:e})=>"https:"!==e?()=>{}:e=>{e.response.setHeader("strict-transport-security","max-age=31536000; includeSubDomains; preload")})
exports.createResponderHostMapper=(({hostResponderMap:e,responderDefault:r})=>s=>{const t=e[(s.request.headers.host||"").toLowerCase()]||r
return t&&t(s)})
t(o(s.request),d?`[ERROR|${n}|${p}] ${d.stack||d}`:`[END|${n}|${p}]`)}
exports.createResponderSetHeaderHSTS=({protocol:e})=>"https:"!==e?()=>{}:e=>{e.response.setHeader("strict-transport-security","max-age=31536000; includeSubDomains; preload")}
exports.createResponderHostMapper=({hostResponderMap:e,responderDefault:r})=>s=>{const t=e[(s.request.headers.host||"").toLowerCase()]||r
return t&&t(s)}

@@ -7,3 +7,3 @@ var e=require("../../../common/error")

const a=()=>(0,t.createCacheMap)({valueSizeSumMax:32768,eventHub:null})
exports.createResponderRateLimit=(({responderNext:e,responderDeny:t=n,getRequestKey:r=o,limitCount:s=32,expireTime:c=6e5,rateCacheMap:i=a()})=>n=>{const o=r(n)
exports.createResponderRateLimit=({responderNext:e,responderDeny:t=n,getRequestKey:r=o,limitCount:s=32,expireTime:c=6e5,rateCacheMap:i=a()})=>n=>{const o=r(n)
let a=i.get(o)

@@ -13,4 +13,4 @@ void 0===a&&(a=s)

i.set(o,a-1,1,Date.now()+c)
return e(n,a)})
exports.createResponderCheckRateLimit=(({checkFunc:t,responderNext:r,responderDeny:s=n,getRequestKey:c=o,limitCount:i=32,expireTime:u=6e5,rateCacheMap:d=a()})=>async n=>{const o=c(n)
return e(n,a)}
exports.createResponderCheckRateLimit=({checkFunc:t,responderNext:r,responderDeny:s=n,getRequestKey:c=o,limitCount:i=32,expireTime:u=6e5,rateCacheMap:d=a()})=>async n=>{const o=c(n)
let a=d.get(o)

@@ -22,2 +22,2 @@ void 0===a&&(a=i)

d.set(o,a-1,1,Date.now()+u)
return s(n,a,p)})
return s(n,a,p)}

@@ -19,4 +19,4 @@ var e=require("../../../common/check")

exports.appendRouteMap=s
exports.createRouteMap=(e=>e.reduce((e,[r,t,o])=>s(e,r,t,o),{}))
exports.createResponderRouter=(({routeMap:e,baseUrl:r="",getMethodUrl:o=c(new URL(r))})=>r=>{const{method:a,url:u}=o(r)
exports.createRouteMap=e=>e.reduce((e,[r,t,o])=>s(e,r,t,o),{})
exports.createResponderRouter=({routeMap:e,baseUrl:r="",getMethodUrl:o=c(new URL(r))})=>r=>{const{method:a,url:u}=o(r)
const s=n[a]

@@ -31,7 +31,7 @@ if(void 0===s)return

return e},{})
return T(r,r.setState({method:a,url:u,route:p,paramMap:E}))})
return T(r,r.setState({method:a,url:u,route:p,paramMap:E}))}
const c=e=>({request:{method:r,url:t}})=>({method:r,url:new URL(t.replace(d,"/"),e)})
const d=/\/\//g
exports.getRouteParamAny=(e=>(0,t.getRouteParamAny)(e.getState()))
exports.getRouteParam=((e,r)=>(0,t.getRouteParam)(e.getState(),r))
exports.getRouteParamAny=e=>(0,t.getRouteParamAny)(e.getState())
exports.getRouteParam=(e,r)=>(0,t.getRouteParam)(e.getState(),r)
const i=e=>{const r=[]

@@ -43,5 +43,5 @@ const t=new Set(Object.values(n))

const p=(0,r.createTreeDepthFirstSearch)(([r,t])=>(0,e.isBasicObject)(t)&&Object.entries(t))
exports.createResponderRouteList=(({getRouteMap:e,extraBodyList:r})=>{let t
exports.createResponderRouteList=({getRouteMap:e,extraBodyList:r})=>{let t
return async a=>{void 0===t&&(t=await(0,u.prepareBufferData)(Buffer.from(m(e(),r)),o.BASIC_EXTENSION_MAP.html))
return(0,u.responderSendBufferCompress)(a,t)}})
return(0,u.responderSendBufferCompress)(a,t)}}
const m=(e,r=[])=>(0,a.COMMON_LAYOUT)([(0,a.COMMON_STYLE)(),"<style>body { align-items: start; }</style>"],["<h2>Route List</h2>","<table>",...i(e).map(({method:e,route:r})=>`<tr><td><b>${e}</b></td><td>${"/GET"===e?`<a href="${r}">${r}</a>`:r}</td></tr>`),"</table>",...r])

@@ -16,4 +16,4 @@ var e=require("zlib")

return!0}}
exports.responderSendBuffer=((e,{buffer:t,entityTag:s,type:a=n.DEFAULT_MIME,length:o=t.length})=>p(e,s,a,o)&&o&&(0,r.sendBufferAsync)(e.response,t))
exports.responderSendBufferRange=((e,{buffer:t,entityTag:s,type:a=n.DEFAULT_MIME,length:o=t.length},[p,i])=>c(e,s,a,o,p,i)&&o&&(0,r.sendBufferAsync)(e.response,t.slice(p,i+1)))
exports.responderSendBuffer=(e,{buffer:t,entityTag:s,type:a=n.DEFAULT_MIME,length:o=t.length})=>p(e,s,a,o)&&o&&(0,r.sendBufferAsync)(e.response,t)
exports.responderSendBufferRange=(e,{buffer:t,entityTag:s,type:a=n.DEFAULT_MIME,length:o=t.length},[p,i])=>c(e,s,a,o,p,i)&&o&&(0,r.sendBufferAsync)(e.response,t.slice(p,i+1))
const i=async(e,{buffer:t,bufferGzip:s,entityTag:a,type:p=n.DEFAULT_MIME,length:c=t.length})=>{if(e.request.aborted)return

@@ -27,5 +27,5 @@ a&&e.response.setHeader("etag",a)

exports.responderSendBufferCompress=i
exports.responderSendStream=((e,{stream:t,entityTag:r,type:a=n.DEFAULT_MIME,length:o})=>p(e,r,a,o)&&(0,s.pipeStreamAsync)(e.response,t))
exports.responderSendStreamRange=((e,{streamRange:t,entityTag:r,type:a=n.DEFAULT_MIME,length:o},[p,i])=>c(e,r,a,o,p,i)&&(0,s.pipeStreamAsync)(e.response,t))
exports.responderSendStreamCompress=(async(t,{stream:r,streamGzip:a,entityTag:o,type:p=n.DEFAULT_MIME,length:c})=>{if(t.request.aborted)return
exports.responderSendStream=(e,{stream:t,entityTag:r,type:a=n.DEFAULT_MIME,length:o})=>p(e,r,a,o)&&(0,s.pipeStreamAsync)(e.response,t)
exports.responderSendStreamRange=(e,{streamRange:t,entityTag:r,type:a=n.DEFAULT_MIME,length:o},[p,i])=>c(e,r,a,o,p,i)&&(0,s.pipeStreamAsync)(e.response,t)
exports.responderSendStreamCompress=async(t,{stream:r,streamGzip:a,entityTag:o,type:p=n.DEFAULT_MIME,length:c})=>{if(t.request.aborted)return
o&&t.response.setHeader("etag",o)

@@ -35,8 +35,8 @@ const i=!o||!t.request.headers["if-none-match"]||!t.request.headers["if-none-match"].includes(o)

i?t.response.writeHead(200,g?{"content-type":p,"content-encoding":"gzip"}:{"content-type":p,"content-length":c}):t.response.writeHead(304,{"content-type":p})
return i&&c&&(0,s.pipeStreamAsync)(t.response,g?a||r.pipe((0,e.createGzip)()):r)})
exports.responderSendJSON=((e,{object:t,entityTag:r})=>i(e,{buffer:Buffer.from(JSON.stringify(t)),type:n.BASIC_EXTENSION_MAP.json,entityTag:r}))
return i&&c&&(0,s.pipeStreamAsync)(t.response,g?a||r.pipe((0,e.createGzip)()):r)}
exports.responderSendJSON=(e,{object:t,entityTag:r})=>i(e,{buffer:Buffer.from(JSON.stringify(t)),type:n.BASIC_EXTENSION_MAP.json,entityTag:r})
const g=(t,n)=>({type:n,buffer:t,bufferGzip:(0,e.gzipSync)(t),entityTag:(0,a.getEntityTagByContentHash)(t),length:t.length})
exports.prepareBufferData=g
exports.prepareBufferDataAsync=(async(e,t)=>({type:t,buffer:e,bufferGzip:await o(e),entityTag:await(0,a.getEntityTagByContentHashAsync)(e),length:e.length}))
exports.createResponderFavicon=(()=>{const e=g(Buffer.from("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNMXvf/PwAGnQMR4CJUOAAAAABJRU5ErkJggg==","base64"),n.BASIC_EXTENSION_MAP.png)
return t=>i(t,e)})
exports.prepareBufferDataAsync=async(e,t)=>({type:t,buffer:e,bufferGzip:await o(e),entityTag:await(0,a.getEntityTagByContentHashAsync)(e),length:e.length})
exports.createResponderFavicon=()=>{const e=g(Buffer.from("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNMXvf/PwAGnQMR4CJUOAAAAABJRU5ErkJggg==","base64"),n.BASIC_EXTENSION_MAP.png)
return t=>i(t,e)}

@@ -8,7 +8,7 @@ var e=require("../../../common/data/CacheMap")

exports.createDefaultCacheMap=s
exports.createResponderBufferCache=(({getBufferData:e,sizeSingleMax:t=524288,expireTime:r=6e4,isEnableGzip:a=!1,serveCacheMap:i=s()})=>{const o=a?n.responderSendBufferCompress:n.responderSendBuffer
exports.createResponderBufferCache=({getBufferData:e,sizeSingleMax:t=524288,expireTime:r=6e4,isEnableGzip:a=!1,serveCacheMap:i=s()})=>{const o=a?n.responderSendBufferCompress:n.responderSendBuffer
return async(a,n)=>{let s=i.get(n)
s||(s=await e(a,n)).length<=t&&i.set(n,s,s.length,Date.now()+r)
return o(a,s)}})
exports.createResponderServeStatic=(({sizeSingleMax:e=524288,expireTime:c=6e4,isEnableGzip:d=!1,isEnableRange:p=!0,serveCacheMap:g=s()})=>{const u=async(e,t,r,a)=>{let s=g.get(t)
return o(a,s)}}
exports.createResponderServeStatic=({sizeSingleMax:e=524288,expireTime:c=6e4,isEnableGzip:d=!1,isEnableRange:p=!0,serveCacheMap:g=s()})=>{const u=async(e,t,r,a)=>{let s=g.get(t)
if(!s)return!1

@@ -35,3 +35,3 @@ r&&e.response.setHeader("content-encoding",r)

const s=(0,t.getMIMETypeFromFileName)(r)
if(!(a&&await f(e,r+".gz",s,"gzip")||await f(e,r,s,void 0,n)))throw new Error(`miss file: ${r}`)}})
if(!(a&&await f(e,r+".gz",s,"gzip")||await f(e,r,s,void 0,n)))throw new Error(`miss file: ${r}`)}}
const i=/gzip/i

@@ -38,0 +38,0 @@ const o=e=>{const t=c.exec(e)

@@ -11,3 +11,3 @@ var e=require("crypto")

const l=new Set([c.protocol,i.protocol])
exports.createServer=(e=>{let{protocol:o}=e,s=function(e,r){if(null==e)return{}
exports.createServer=e=>{let{protocol:o}=e,s=function(e,r){if(null==e)return{}
var t={}

@@ -26,8 +26,8 @@ var o=Object.keys(e)

a.listen(s.port,s.hostname,()=>{a.off("error",r)
e()})}),stop:async()=>a.listening&&new Promise(e=>a.close(e))}})
e()})}),stop:async()=>a.listening&&new Promise(e=>a.close(e))}}
const p=(e,r)=>e.setState({error:r})
const u=a.responderEnd
exports.createRequestListener=(({responderList:e=[],responderError:r=p,responderEnd:t=u})=>async(n,a)=>{const c=(0,s.createStateStoreLite)({time:(0,o.clock)(),error:null})
exports.createRequestListener=({responderList:e=[],responderError:r=p,responderEnd:t=u})=>async(n,a)=>{const c=(0,s.createStateStoreLite)({time:(0,o.clock)(),error:null})
c.request=n
c.response=a
try{for(const r of e)await r(c)}catch(e){await r(c,e)}await t(c)})
try{for(const r of e)await r(c)}catch(e){await r(c,e)}await t(c)}
var t=require("net")
exports.createTCPProxyServer=(({hostname:o="localhost",port:e,targetHostname:r="localhost",targetPort:n,getTargetOption:s=(t=>({hostname:r,port:n}))})=>{const a=(0,t.createServer)()
exports.createTCPProxyServer=({hostname:o="localhost",port:e,targetHostname:r="localhost",targetPort:n,getTargetOption:s=(t=>({hostname:r,port:n}))})=>{const a=(0,t.createServer)()
const c={hostname:o,port:e,getTargetOption:s}

@@ -27,2 +27,2 @@ const i=new Set

i.clear()
a.close(t)})}})
a.close(t)})}}
var e=require("./function")
const r=e=>{}
exports.createFrameReceiverStore=(e=>{let n=Promise.resolve("HEAD")
exports.createFrameReceiverStore=e=>{let n=Promise.resolve("HEAD")
let l=null

@@ -8,4 +8,4 @@ return{dispose:()=>{n.then(r,r)

l&&l()
l=null},queuePromise:(e,r)=>n=n.then(e,r),setClearSocketListener:e=>{l=e},frameDecoder:t(e),frameLengthLimit:e}})
exports.listenAndReceiveFrame=((e,r,t,n=e.dispose)=>{let l=null
l=null},queuePromise:(e,r)=>n=n.then(e,r),setClearSocketListener:e=>{l=e},frameDecoder:t(e),frameLengthLimit:e}}
exports.listenAndReceiveFrame=(e,r,t,n=e.dispose)=>{let l=null
let o=null

@@ -30,3 +30,3 @@ const f=()=>{o&&r.off("error",o)

e.setClearSocketListener(()=>{r.off("data",u)
f()})})
f()})}
const t=r=>{const{pushBufferFrag:t,tryShiftMergedBuffer:l}=n()

@@ -33,0 +33,0 @@ let o=null

@@ -5,5 +5,5 @@ var e=require("crypto")

const t=e=>{}
exports.createFrameSenderStore=(e=>{let r=Promise.resolve("HEAD")
exports.createFrameSenderStore=e=>{let r=Promise.resolve("HEAD")
return{dispose:()=>{r.then(t,t)
r=null},queuePromise:(e,n)=>r=r.then(e,n),encodedFrameHeaderBuffer:null,encodedFrameDataBuffer:null,frameLengthLimit:e}})
r=null},queuePromise:(e,n)=>r=r.then(e,n),encodedFrameHeaderBuffer:null,encodedFrameDataBuffer:null,frameLengthLimit:e}}
const o=(t,o,a,f,d)=>{const[c,s]=o

@@ -30,10 +30,10 @@ const{length:u}=f

exports.encodeFrame=o
exports.encodeCloseFrame=((e,n=1e3,t="",a)=>{const f=Buffer.byteLength(t)
exports.encodeCloseFrame=(e,n=1e3,t="",a)=>{const f=Buffer.byteLength(t)
const d=Buffer.allocUnsafe(2+f)
d.writeUInt16BE(n,0,!0)
d.write(t,2,f)
o(e,r.FRAME_CONFIG.COMPLETE,r.OPCODE_TYPE.CLOSE,d,a)})
exports.encodePingFrame=((e,n,t)=>o(e,r.FRAME_CONFIG.COMPLETE,r.OPCODE_TYPE.PING,n,t))
exports.encodePongFrame=((e,n,t)=>o(e,r.FRAME_CONFIG.COMPLETE,r.OPCODE_TYPE.PONG,n,t))
exports.sendEncodedFrame=((e,r)=>{const n=e.encodedFrameHeaderBuffer
o(e,r.FRAME_CONFIG.COMPLETE,r.OPCODE_TYPE.CLOSE,d,a)}
exports.encodePingFrame=(e,n,t)=>o(e,r.FRAME_CONFIG.COMPLETE,r.OPCODE_TYPE.PING,n,t)
exports.encodePongFrame=(e,n,t)=>o(e,r.FRAME_CONFIG.COMPLETE,r.OPCODE_TYPE.PONG,n,t)
exports.sendEncodedFrame=(e,r)=>{const n=e.encodedFrameHeaderBuffer
const t=e.encodedFrameDataBuffer

@@ -47,2 +47,2 @@ e.encodedFrameHeaderBuffer=null

else{r.write(n)
r.write(t,a)}}))})
r.write(t,a)}}))}

@@ -7,6 +7,6 @@ var e=require("crypto")

exports.WEBSOCKET_EVENT={OPEN:"ws:open",FRAME:"ws:frame",CLOSE:"ws:close"}
exports.getRequestKey=(()=>(0,e.randomBytes)(16).toString("base64"))
exports.getRespondKey=(s=>(0,e.createHash)("sha1").update(`${s}258EAFA5-E914-47DA-95CA-C5AB0DC85B11`).digest("base64"))
exports.getRequestKey=()=>(0,e.randomBytes)(16).toString("base64")
exports.getRespondKey=s=>(0,e.createHash)("sha1").update(`${s}258EAFA5-E914-47DA-95CA-C5AB0DC85B11`).digest("base64")
const t=s.constants.MAX_LENGTH
exports.BUFFER_MAX_LENGTH=t
exports.applyMaskQuadletBufferInPlace=((e,s)=>{for(let t=0,E=e.length;t<E;t++)e[t]^=s[3&t]})
exports.applyMaskQuadletBufferInPlace=(e,s)=>{for(let t=0,E=e.length;t<E;t++)e[t]^=s[3&t]}

@@ -7,3 +7,3 @@ var e=require("../../../common/module/Event")

const a=Buffer.from("Dr")
exports.createWebSocket=(({socket:s,frameLengthLimit:c=8388608,isMask:d=!1,shouldPing:i=!1})=>{const u=(0,e.createEventEmitter)()
exports.createWebSocket=({socket:s,frameLengthLimit:c=8388608,isMask:d=!1,shouldPing:i=!1})=>{const u=(0,e.createEventEmitter)()
const f=(0,t.createFrameSenderStore)(c)

@@ -71,2 +71,2 @@ const l=(0,n.createFrameReceiverStore)(c)

return(0,t.sendEncodedFrame)(f,s)},sendBuffer:e=>{if(1!==O)throw new Error(`not open yet: readyState = ${O}`);(0,t.encodeFrame)(f,r.FRAME_CONFIG.COMPLETE,r.OPCODE_TYPE.BINARY,e,d)
return(0,t.sendEncodedFrame)(f,s)},setNextPing:h,setNextPong:N,sendPing:L,sendPong:y})})
return(0,t.sendEncodedFrame)(f,s)},setNextPing:h,setNextPong:N,sendPing:L,sendPong:y})}

@@ -8,3 +8,3 @@ var e=require("http")

const n=(e,o,t)=>e.doCloseSocket()
exports.createWebSocketClient=(({urlString:i,option:{key:a,headers:p,origin:w="",requestProtocolString:h=""}={},onError:d,onUpgradeResponse:l=n,frameLengthLimit:g})=>{const u=new URL(i)
exports.createWebSocketClient=({urlString:i,option:{key:a,headers:p,origin:w="",requestProtocolString:h=""}={},onError:d,onUpgradeResponse:l=n,frameLengthLimit:g})=>{const u=new URL(i)
if(!s.has(u.protocol))throw new Error(`invalid url protocol: ${u.protocol}`)

@@ -30,2 +30,2 @@ if(!u.host)throw new Error(`invalid url host: ${u.host}`)

e.protocol=s
e.open()})(s,e,S,h)})})
e.open()})(s,e,S,h)})}
var e=require("./function")
var o=require("./WebSocket")
const r=(e,o,r)=>e.doCloseSocket()
exports.enableWebSocketServer=(({server:t,onUpgradeRequest:s=r,frameLengthLimit:c})=>{const n=new Set
exports.enableWebSocketServer=({server:t,onUpgradeRequest:s=r,frameLengthLimit:c})=>{const n=new Set
t.on("upgrade",async(r,t,i)=>{const a=(0,o.createWebSocket)({socket:t,frameLengthLimit:c,isMask:!1,shouldPing:!0})

@@ -22,2 +22,2 @@ const{responseKey:d}=((o,r)=>{const t=r.headers["sec-websocket-key"]

a.on(e.WEBSOCKET_EVENT.CLOSE,()=>{n.delete(a)})}}})
return n})
return n}

@@ -5,3 +5,3 @@ var e=require("../../../common/time")

e.setState({error:t})}
exports.createUpdateRequestListener=(({responderList:o=[],responderError:a=r})=>async(r,c,s)=>{const n=(0,t.createStateStoreLite)({time:(0,e.clock)(),error:null,protocol:""})
exports.createUpdateRequestListener=({responderList:o=[],responderError:a=r})=>async(r,c,s)=>{const n=(0,t.createStateStoreLite)({time:(0,e.clock)(),error:null,protocol:""})
n.request=c

@@ -11,2 +11,2 @@ n.response={finished:!0}

n.bodyHeadBuffer=s
try{for(const e of o)await e(n)}catch(e){await a(n,e)}return n.getState().protocol})
try{for(const e of o)await e(n)}catch(e){await a(n,e)}return n.getState().protocol}
const r={linux:"xdg-open",win32:"start",darwin:"open",android:"termux-open"}
exports.getDefaultOpen=(()=>{const o=r[process.platform]
exports.getDefaultOpen=()=>{const o=r[process.platform]
if(!o)throw new Error(`unsupported platform: ${process.platform}`)
return o})
return o}

@@ -15,10 +15,10 @@ var e=require("../../common/error")

t.forEach(({event:e,listener:t})=>process.off(e,t))}
exports.clearExitListener=(()=>{n.clear()
exports.clearExitListener=()=>{n.clear()
r.clear()
i()})
exports.addExitListenerSync=((...e)=>{e.forEach(e=>n.add(e))
!s&&a()})
exports.addExitListenerAsync=((...e)=>{e.forEach(e=>r.add(e))
!s&&a()})
exports.deleteExitListenerSync=((...e)=>{e.forEach(e=>n.delete(e))})
exports.deleteExitListenerAsync=((...e)=>{e.forEach(e=>r.delete(e))})
i()}
exports.addExitListenerSync=(...e)=>{e.forEach(e=>n.add(e))
!s&&a()}
exports.addExitListenerAsync=(...e)=>{e.forEach(e=>r.add(e))
!s&&a()}
exports.deleteExitListenerSync=(...e)=>{e.forEach(e=>n.delete(e))}
exports.deleteExitListenerAsync=(...e)=>{e.forEach(e=>r.delete(e))}
var e=require("os")
exports.getNetworkIPv4AddressList=(()=>Object.entries((0,e.networkInterfaces)()).reduce((e,[r,t])=>{t.forEach(t=>{"IPv4"===t.family&&!1===t.internal&&e.push(Object.assign({},t,{interfaceName:r}))})
return e},[]))
exports.getNetworkIPv4AddressList=()=>Object.entries((0,e.networkInterfaces)()).reduce((e,[r,t])=>{t.forEach(t=>{"IPv4"===t.family&&!1===t.internal&&e.push(Object.assign({},t,{interfaceName:r}))})
return e},[])
var t=require("../../common/time")
var e=require("../../common/string")
var i=require("../../common/format")
var s=require("../../common/string")
var e=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 i={INIT:!1,linux:null,win32:null,darwin:null,android:null}
const n=()=>{!1===i.INIT&&(()=>{const t=(t,s,e,o)=>async()=>{const{promise:i,stdoutBufferPromise:n}=(0,r.runQuiet)({command:t})
await i
return((t,s,e=[],o=[])=>{const[r,...i]=t.split(s)
const n=(t=>{let s=" "===t.charAt(0)
let e=2
const o=[0]
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]
for(let r=0,i=t.length;r<i;r++)if(s!==(" "===t.charAt(r))){s=!s
if(0==--e){o.push(r)
e=2}}return o})(r)
if(n.length!==e.length)throw new Error(`title col mismatch: ${n.length}, expect: ${e.length}`)
return i.map(t=>t&&((t,s,e,o)=>{const r={}
for(let i=0,n=s.length;i<n;i++)r[e[i]]=o[i](t.slice(s[i],s[i+1]))
return r})(t,n,e,o)).filter(Boolean)})((await n).toString(),s,e,o)}
const s=t=>String(t).trim()
const e=t=>parseInt(t)
const o=["ps ax -ww -o pid,ppid,args","\n",["pid","ppid","command"],[e,e,s]]
const n=["ps ax -o pid,ppid,args",...o.slice(1)]
const c=["WMIC PROCESS get Commandline,ParentProcessId,Processid","\r\r\n",["command","ppid","pid"],[s,e,e]]
const p=t(...o)
const a=t(...n)
const d=t(...c)
Object.assign(i,{INIT:!0,linux:p,win32:d,darwin:p,android:a})})()
const t=i[process.platform]
if(!t)throw new Error(`unsupported platform: ${process.platform}`)
return t()}
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=T
const g=async t=>{void 0===t&&(t=await w())
const e={pid:0,ppid:-1,command:"ROOT"}
const i={0:e}
exports.getProcessList=exports.getProcessListAsync=n
const c={"pid++":(t,s)=>t.pid-s.pid,"pid--":(t,s)=>s.pid-t.pid,"ppid++":(t,s)=>t.ppid-s.ppid||t.pid-s.pid,"ppid--":(t,s)=>s.ppid-t.ppid||t.pid-s.pid}
const p=(t,s="pid--")=>t.sort(c[s])
exports.sortProcessList=p
const a=t=>t.reduce((t,s)=>{t[s.pid]=s
return t},{})
exports.toProcessPidMap=a
const d=t=>{const s={pid:0,ppid:-1,command:"ROOT"}
const e={0:s}
const o={0:{}}
for(const e of t){const{pid:t,ppid:r}=e
if(0!==t){i[t]=e
for(const s of t){const{pid:t,ppid:r}=s
if(0!==t){e[t]=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=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=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 v=async e=>{if(await y(e)){process.kill(e.pid)
o[r][t]=s}}e[s.pid]=s
Object.entries(o).forEach(([t,r])=>{let i=e[t]
i||(o[(i={pid:t,ppid:s.pid,command:""}).ppid][i.pid]=i)
i.subTree=r})
return s}
exports.toProcessTree=d
const l=({pid:t,ppid:s,command:e},o)=>o&&o.pid===t&&(void 0===s||o.ppid===s)&&(void 0===e||o.command===e)
const m=(t,s)=>l(t,s[t.pid])?s[t.pid]:void 0
exports.findProcessPidMapInfo=m
const u=(t,s)=>P(s,s=>l(t,s))
exports.findProcessTreeInfo=u
const w=async s=>{const e=async()=>g(s.pid)&&m(s,a(await n()))
if(await e()){process.kill(s.pid)
await(0,t.setTimeoutAsync)(500)
if(await y(e)){process.kill(e.pid)
if(await e()){process.kill(s.pid)
await(0,t.setTimeoutAsync)(2e3)
if(await y(e)){process.kill(e.pid,"SIGKILL")
if(await e()){process.kill(s.pid,"SIGKILL")
await(0,t.setTimeoutAsync)(4e3)
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 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")}
if(await e())throw new Error(`failed to stop process, pid: ${s.pid}, ppid: ${s.ppid}, command: ${s.command}`)}}}}
exports.tryKillProcess=exports.killProcessInfoAsync=w
exports.tryKillProcessTreeNode=exports.killProcessTreeInfoAsync=async(t,s=!1)=>{const e=s?w:({pid:t,command:s})=>w({pid:t,command:s})
await x(t,e)
await e(t)}
const f=t=>t.subTree&&Object.values(t.subTree)
const P=(0,o.createTreeDepthFirstSearch)(f)
const x=(0,o.createTreeBottomUpSearchAsync)(f)
const y=async t=>{const s=await n()
return t.startsWith("t")?d(s):p(s,t)}
exports.getAllProcessStatusAsync=y
const h=async t=>{const o=await y(t)
if(t.startsWith("t")){const e=T(o)
return"tree-wide"!==t&&"tw"!==t?e.split("\n").map(t=>(0,s.autoEllipsis)(t,128,96,16)).join("\n"):e}return(0,e.padTable)({table:[["pid","ppid","command"],...o.map(({pid:t,ppid:s,command:e})=>[t,s,e])]})}
exports.describeAllProcessStatusAsync=h
const T=t=>{const s=[]
const e=(t,{pid:e,command:o})=>s.push(`${`${e}`.padStart(8," ")} | ${t}${o||"..."}`)
e("",{pid:"pid",command:"command"});(0,o.prettyStringifyTree)([t,-1,!1],([t,s,e])=>t.subTree&&Object.values(t.subTree).map((t,e,{length:o})=>[t,s+1,e!==o-1]),e)
return s.join("\n")}
const g=t=>{try{process.kill(t,0)
return!0}catch(t){return!1}}
exports.isPidExist=g
const I=async t=>a(t||await n())
exports.getProcessPidMap=I
const A=async t=>d(t||await n())
exports.getProcessTree=A
exports.findProcessTreeNode=async(t,s)=>u(t,s||await A())
exports.checkProcessExist=async(t,s)=>Boolean(m(t,s||await I()))
exports.collectAllProcessStatus=async(t,s)=>s?y(t):h(t)

@@ -10,8 +10,8 @@ var r=require("child_process")

exports.run=n
exports.runSync=(({command:s,argList:e=[],option:n})=>{const{status:i,signal:t,error:c}=(0,r.spawnSync)(s,e,Object.assign({stdio:"inherit",shell:!0},n))
exports.runSync=({command:s,argList:e=[],option:n})=>{const{status:i,signal:t,error:c}=(0,r.spawnSync)(s,e,Object.assign({stdio:"inherit",shell:!0},n))
if(c||i)throw o(c,{command:s,argList:e,code:i,signal:t})
return{command:s,argList:e,code:i,signal:t}})
exports.runQuiet=(({command:r,argList:s,option:o})=>{const{subProcess:i,promise:t}=n({command:r,argList:s,option:Object.assign({stdio:["ignore","pipe","pipe"]},o)})
return{subProcess:i,promise:t,stdoutBufferPromise:(0,e.receiveBufferAsync)(i.stdout),stderrBufferPromise:(0,e.receiveBufferAsync)(i.stderr)}})
exports.withCwd=((r,e)=>async(...o)=>{const n=process.cwd()
return{command:s,argList:e,code:i,signal:t}}
exports.runQuiet=({command:r,argList:s,option:o})=>{const{subProcess:i,promise:t}=n({command:r,argList:s,option:Object.assign({stdio:["ignore","pipe","pipe"]},o)})
return{subProcess:i,promise:t,stdoutBufferPromise:(0,e.receiveBufferAsync)(i.stdout),stderrBufferPromise:(0,e.receiveBufferAsync)(i.stderr)}}
exports.withCwd=(r,e)=>async(...o)=>{const n=process.cwd()
process.chdir(r)

@@ -21,2 +21,2 @@ const{result:i,error:t}=await(0,s.catchAsync)(e,...o)

if(t)throw t
return i})
return i}

@@ -13,6 +13,6 @@ var e=require("os")

exports.describeSystemProcessor=c
const m=()=>({total:(0,e.totalmem)(),free:(0,e.freemem)()})
exports.getSystemMemory=m
const n=({total:e,free:s}=m())=>[`Used: ${(0,t.percent)((e-s)/e)}`,`Total: ${(0,t.binary)(e)}B`,`Free: ${(0,t.binary)(s)}B`].join("\n")
exports.describeSystemMemory=n
const n=()=>({total:(0,e.totalmem)(),free:(0,e.freemem)()})
exports.getSystemMemory=n
const m=({total:e,free:s}=n())=>[`Used: ${(0,t.percent)((e-s)/e)}`,`Total: ${(0,t.binary)(e)}B`,`Free: ${(0,t.binary)(s)}B`].join("\n")
exports.describeSystemMemory=m
const p=()=>({hostname:(0,e.hostname)(),networkInterface:(0,e.networkInterfaces)()})

@@ -26,6 +26,6 @@ exports.getSystemNetwork=p

exports.describeSystemActivity=y
const g=()=>({platform:o(),processor:a(),memory:m(),network:p(),activity:l()})
const g=()=>({platform:o(),processor:a(),memory:n(),network:p(),activity:l()})
exports.getSystemStatus=g
exports.describeSystemStatus=(({platform:e,processor:t,memory:r,network:o,activity:a}=g())=>Object.entries({platform:i(e),processor:c(t),memory:n(r),network:d(o),activity:y(a)}).map(([e,t])=>`[${e}]\n${(0,s.indentLine)(t)}`).join("\n"))
exports.getProcessStatus=(()=>({title:process.title,pid:process.pid,ppid:process.ppid,uid:(0,r.tryCall)(process,"getuid"),gid:(0,r.tryCall)(process,"getgid"),groups:(0,r.tryCall)(process,"getgroups")||[],euid:(0,r.tryCall)(process,"geteuid"),egid:(0,r.tryCall)(process,"getegid"),stdio:{stdin:u("stdin"),stdout:u("stdout"),stderr:u("stderr")},isConnectedIPC:Boolean(process.connected),execPath:process.execPath,execArgv:process.execArgv,argv:process.argv,cwd:process.cwd(),uptime:1e3*process.uptime(),cpuUsage:process.cpuUsage(),memoryUsage:process.memoryUsage()}))
exports.describeSystemStatus=({platform:e,processor:t,memory:r,network:o,activity:a}=g())=>Object.entries({platform:i(e),processor:c(t),memory:m(r),network:d(o),activity:y(a)}).map(([e,t])=>`[${e}]\n${(0,s.indentLine)(t)}`).join("\n")
exports.getProcessStatus=exports.getCurrentProcessStatus=()=>({title:process.title,pid:process.pid,ppid:process.ppid,uid:(0,r.tryCall)(process,"getuid"),gid:(0,r.tryCall)(process,"getgid"),groups:(0,r.tryCall)(process,"getgroups")||[],euid:(0,r.tryCall)(process,"geteuid"),egid:(0,r.tryCall)(process,"getegid"),stdio:{stdin:u("stdin"),stdout:u("stdout"),stderr:u("stderr")},isConnectedIPC:Boolean(process.connected),execPath:process.execPath,execArgv:process.execArgv,argv:process.argv,cwd:process.cwd(),uptime:1e3*process.uptime(),cpuUsage:process.cpuUsage(),memoryUsage:process.memoryUsage()})
const u=e=>({isTTY:Boolean(process[e].isTTY)})

@@ -11,5 +11,5 @@ import { global } from "../env/global";

const request = new XMLHttpRequest();
request.onerror = (() => reject(getError("NETWORK_ERROR", -1)));
request.ontimeout = (() => reject(getError("NETWORK_TIMEOUT", -1)));
request.onreadystatechange = (() => {
request.onerror = () => reject(getError("NETWORK_ERROR", -1));
request.ontimeout = () => reject(getError("NETWORK_TIMEOUT", -1));
request.onreadystatechange = () => {
const {readyState, status} = request;

@@ -32,3 +32,3 @@ if (2 !== readyState) return;

});
});
};
onUploadProgress && request.upload && (request.upload.onprogress = onUploadProgress);

@@ -57,5 +57,5 @@ onDownloadProgress && (request.onprogress = onDownloadProgress);

return new Promise((resolve, reject) => {
request.onerror = (() => reject(getError("PAYLOAD_ERROR", -1)));
request.ontimeout = (() => reject(getError("PAYLOAD_TIMEOUT", -1)));
request.onreadystatechange = (() => {
request.onerror = () => reject(getError("PAYLOAD_ERROR", -1));
request.ontimeout = () => reject(getError("PAYLOAD_TIMEOUT", -1));
request.onreadystatechange = () => {
if (4 === request.readyState) {

@@ -65,3 +65,3 @@ if (0 === request.status) return reject(getError("PAYLOAD_STATUS_ERROR", -1));

}
});
};
});

@@ -68,0 +68,0 @@ };

@@ -8,5 +8,5 @@ const createToggle = () => {

};
toggle.get = (key => data.get(key));
toggle.get = key => data.get(key);
return toggle;
};
export { createToggle };
import { compareString } from "../compare";
import { createTreeDepthFirstSearch } from "../data/Tree";
const REGEXP_NAME = /[\w-]+/;

@@ -14,3 +15,12 @@ const createKeyTree = ({NAME_KEY = "key", NAME_SUB_LIST = "subList"}) => {

stringify: keyTreeJSON => JSON.stringify(keyTreeJSON).replace(REGEXP_MAX_BRACKET_LEFT, "[").replace(REGEXP_MAX_BRACKET_RIGHT, (match, $1) => "]".repeat($1.length / 2)).replace(REGEXP_MAX_COMMA, ","),
parse: keyTreeString => JSON.parse(keyTreeString.replace(REGEXP_MIN_COMMA, `"},{"${NAME_KEY}":"`).replace(REGEXP_MIN_BRACKET_RIGHT, (match, $1, offset, string) => `"${"}]".repeat($1.length)}${offset + match.length !== string.length ? `},{"${NAME_KEY}":"` : ""}`).replace(REGEXP_MIN_BRACKET_LEFT, (match, offset) => `${0 !== offset ? `","${NAME_SUB_LIST}":` : ""}[{"${NAME_KEY}":"`)),
parse: keyTreeString => JSON.parse(keyTreeString.replace(REGEXP_MIN_COMMA, `"},{"${NAME_KEY}":"`).replace(REGEXP_MIN_BRACKET_RIGHT, (match, $1, offset, string) => `"${"}]".repeat($1.length)}${offset + match.length !== string.length ? `},{"${NAME_KEY}":"` : ""}`).replace(REGEXP_MIN_BRACKET_LEFT, (match, offset) => `${0 !== offset ? `","${NAME_SUB_LIST}":` : ""}[{"${NAME_KEY}":"`))
};
};
const createKeyTreeEnhanced = ({NAME_KEY = "key", NAME_SUB_LIST = "subList"}) => {
const keyTreeJSONDepthFirstSearch = createTreeDepthFirstSearch(([node, index, upperKey]) => node[NAME_SUB_LIST] && node[NAME_SUB_LIST].length && node[NAME_SUB_LIST].map((subNode, index) => [ subNode, index, node[NAME_KEY] ]));
return {
...createKeyTree({
NAME_KEY,
NAME_SUB_LIST
}),
createBuilder: rootKey => {

@@ -53,5 +63,6 @@ const listMap = new Map();

};
}
},
walkKeyTreeJSON: (keyTreeJSON, func = (([node, index, upperKey]) => {})) => keyTreeJSONDepthFirstSearch([ keyTreeJSON, 0, void 0 ], func)
};
};
export { createKeyTree };
export { createKeyTree, createKeyTreeEnhanced };

@@ -6,48 +6,59 @@ import { setTimeoutAsync } from "../../common/time";

import { runQuiet } from "./Run";
const createGetProcessList = (command, lineSeparator, keyList, valueProcessList) => async () => {
const {promise, stdoutBufferPromise} = runQuiet({
command
});
await promise;
return ((outputString, lineSeparator, keyList = [], valueProcessList = []) => {
const [titleLine, ...rowList] = outputString.split(lineSeparator);
const colStartIndexList = (titleString => {
let flipCharType = " " === titleString.charAt(0);
let flipCount = 2;
const colStartIndexList = [ 0 ];
for (let index = 0, indexMax = titleString.length; index < indexMax; index++) if (flipCharType !== (" " === titleString.charAt(index))) {
flipCharType = !flipCharType;
if (0 == --flipCount) {
colStartIndexList.push(index);
flipCount = 2;
}
}
return colStartIndexList;
})(titleLine);
if (colStartIndexList.length !== keyList.length) throw new Error(`title col mismatch: ${colStartIndexList.length}, expect: ${keyList.length}`);
return rowList.map(rowString => rowString && ((rowString, colStartIndexList, keyList, valueProcessList) => {
const itemMap = {};
for (let index = 0, indexMax = colStartIndexList.length; index < indexMax; index++) itemMap[keyList[index]] = valueProcessList[index](rowString.slice(colStartIndexList[index], colStartIndexList[index + 1]));
return itemMap;
})(rowString, colStartIndexList, keyList, valueProcessList)).filter(Boolean);
})((await stdoutBufferPromise).toString(), lineSeparator, keyList, valueProcessList);
const GET_PROCESS_LIST_ASYNC_MAP = {
INIT: !1,
linux: null,
win32: null,
darwin: null,
android: null
};
const valueProcessString = string => string.trim();
const valueProcessInteger = string => parseInt(string);
const ProcessListLinux = [ "ps ax -ww -o pid,ppid,args", "\n", [ "pid", "ppid", "command" ], [ valueProcessInteger, valueProcessInteger, valueProcessString ] ];
const ProcessListAndroid = [ "ps ax -o pid,ppid,args", ...ProcessListLinux.slice(1) ];
const ProcessListWin32 = [ "WMIC PROCESS get Commandline,ParentProcessId,Processid", "\r\r\n", [ "command", "ppid", "pid" ], [ valueProcessString, valueProcessInteger, valueProcessInteger ] ];
const getProcessListLinux = createGetProcessList(...ProcessListLinux);
const getProcessListAndroid = createGetProcessList(...ProcessListAndroid);
const GET_PROCESS_LIST_MAP = {
linux: getProcessListLinux,
win32: createGetProcessList(...ProcessListWin32),
darwin: getProcessListLinux,
android: getProcessListAndroid
const getProcessListAsync = () => {
!1 === GET_PROCESS_LIST_ASYNC_MAP.INIT && (() => {
const createGetProcessListAsync = (command, lineSeparator, keyList, valueProcessList) => async () => {
const {promise, stdoutBufferPromise} = runQuiet({
command
});
await promise;
return ((outputString, lineSeparator, keyList = [], valueProcessList = []) => {
const [titleLine, ...rowList] = outputString.split(lineSeparator);
const colStartIndexList = (titleString => {
let flipCharType = " " === titleString.charAt(0);
let flipCount = 2;
const colStartIndexList = [ 0 ];
for (let index = 0, indexMax = titleString.length; index < indexMax; index++) if (flipCharType !== (" " === titleString.charAt(index))) {
flipCharType = !flipCharType;
if (0 == --flipCount) {
colStartIndexList.push(index);
flipCount = 2;
}
}
return colStartIndexList;
})(titleLine);
if (colStartIndexList.length !== keyList.length) throw new Error(`title col mismatch: ${colStartIndexList.length}, expect: ${keyList.length}`);
return rowList.map(rowString => rowString && ((rowString, colStartIndexList, keyList, valueProcessList) => {
const itemMap = {};
for (let index = 0, indexMax = colStartIndexList.length; index < indexMax; index++) itemMap[keyList[index]] = valueProcessList[index](rowString.slice(colStartIndexList[index], colStartIndexList[index + 1]));
return itemMap;
})(rowString, colStartIndexList, keyList, valueProcessList)).filter(Boolean);
})((await stdoutBufferPromise).toString(), lineSeparator, keyList, valueProcessList);
};
const valueProcessString = string => String(string).trim();
const valueProcessInteger = string => parseInt(string);
const ProcessListLinux = [ "ps ax -ww -o pid,ppid,args", "\n", [ "pid", "ppid", "command" ], [ valueProcessInteger, valueProcessInteger, valueProcessString ] ];
const ProcessListAndroid = [ "ps ax -o pid,ppid,args", ...ProcessListLinux.slice(1) ];
const ProcessListWin32 = [ "WMIC PROCESS get Commandline,ParentProcessId,Processid", "\r\r\n", [ "command", "ppid", "pid" ], [ valueProcessString, valueProcessInteger, valueProcessInteger ] ];
const getProcessListAsyncLinux = createGetProcessListAsync(...ProcessListLinux);
const getProcessListAsyncAndroid = createGetProcessListAsync(...ProcessListAndroid);
const getProcessListAsyncWin32 = createGetProcessListAsync(...ProcessListWin32);
Object.assign(GET_PROCESS_LIST_ASYNC_MAP, {
INIT: !0,
linux: getProcessListAsyncLinux,
win32: getProcessListAsyncWin32,
darwin: getProcessListAsyncLinux,
android: getProcessListAsyncAndroid
});
})();
const getProcessListAsync = GET_PROCESS_LIST_ASYNC_MAP[process.platform];
if (!getProcessListAsync) throw new Error(`unsupported platform: ${process.platform}`);
return getProcessListAsync();
};
const getProcessList = () => {
const getProcessList = GET_PROCESS_LIST_MAP[process.platform];
if (!getProcessList) throw new Error(`unsupported platform: ${process.platform}`);
return getProcessList();
};
const PROCESS_LIST_SORT_MAP = {

@@ -60,11 +71,7 @@ "pid++": (a, b) => a.pid - b.pid,

const sortProcessList = (processList, sortOrder = "pid--") => processList.sort(PROCESS_LIST_SORT_MAP[sortOrder]);
const getProcessPidMap = async processList => {
void 0 === processList && (processList = await getProcessList());
return processList.reduce((o, info) => {
o[info.pid] = info;
return o;
}, {});
};
const getProcessTree = async processList => {
void 0 === processList && (processList = await getProcessList());
const toProcessPidMap = processList => processList.reduce((o, info) => {
o[info.pid] = info;
return o;
}, {});
const toProcessTree = processList => {
const rootInfo = {

@@ -101,22 +108,17 @@ pid: 0,

};
const findProcessTreeNode = async (info, processTree) => {
void 0 === processTree && (processTree = await getProcessTree());
return processTreeDepthFirstSearch(processTree, searchInfo => isSameInfo(info, searchInfo));
};
const checkProcessExist = async (info, processPidMap) => {
void 0 === processPidMap && (processPidMap = await getProcessPidMap());
return isSameInfo(info, processPidMap[info.pid]);
};
const isSameInfo = ({pid, ppid, command}, info) => info && info.pid === pid && (void 0 === ppid || info.ppid === ppid) && (void 0 === command || info.command === command);
const tryKillProcess = async info => {
if (await checkProcessExist(info)) {
const isInfoMatch = ({pid, ppid, command}, info) => info && info.pid === pid && (void 0 === ppid || info.ppid === ppid) && (void 0 === command || info.command === command);
const findProcessPidMapInfo = (info, processPidMap) => isInfoMatch(info, processPidMap[info.pid]) ? processPidMap[info.pid] : void 0;
const findProcessTreeInfo = (info, processTree) => processTreeDepthFirstSearch(processTree, searchInfo => isInfoMatch(info, searchInfo));
const killProcessInfoAsync = async info => {
const isExistAsync = async () => isPidExist(info.pid) && findProcessPidMapInfo(info, toProcessPidMap(await getProcessListAsync()));
if (await isExistAsync()) {
process.kill(info.pid);
await setTimeoutAsync(500);
if (await checkProcessExist(info)) {
if (await isExistAsync()) {
process.kill(info.pid);
await setTimeoutAsync(2e3);
if (await checkProcessExist(info)) {
if (await isExistAsync()) {
process.kill(info.pid, "SIGKILL");
await setTimeoutAsync(4e3);
if (await checkProcessExist(info)) throw new Error(`failed to stop process, pid: ${info.pid}, ppid: ${info.ppid}, command: ${info.command}`);
if (await isExistAsync()) throw new Error(`failed to stop process, pid: ${info.pid}, ppid: ${info.ppid}, command: ${info.command}`);
}

@@ -126,9 +128,9 @@ }

};
const tryKillProcessTreeNode = async (processTreeNode, checkPpid = !1) => {
const tryKillProcessInfo = checkPpid ? tryKillProcess : ({pid, command}) => tryKillProcess({
const killProcessTreeInfoAsync = async (processTreeInfo, isMatchPpid = !1) => {
const killAsync = isMatchPpid ? killProcessInfoAsync : ({pid, command}) => killProcessInfoAsync({
pid,
command
});
processTreeNode && await processTreeBottomUpSearchAsync(processTreeNode, tryKillProcessInfo);
processTreeNode && await tryKillProcessInfo(processTreeNode);
await processTreeBottomUpSearchAsync(processTreeInfo, killAsync);
await killAsync(processTreeInfo);
};

@@ -138,12 +140,14 @@ const getSubNodeListFunc = info => info.subTree && Object.values(info.subTree);

const processTreeBottomUpSearchAsync = createTreeBottomUpSearchAsync(getSubNodeListFunc);
const collectAllProcessStatus = async (outputMode, isOutputJSON) => {
const getAllProcessStatusAsync = async outputMode => {
const processList = await getProcessListAsync();
return outputMode.startsWith("t") ? toProcessTree(processList) : sortProcessList(processList, outputMode);
};
const describeAllProcessStatusAsync = async outputMode => {
const status = await getAllProcessStatusAsync(outputMode);
if (outputMode.startsWith("t")) {
const processRootInfo = await getProcessTree();
if (isOutputJSON) return processRootInfo;
const text = prettyStringifyProcessTree(processRootInfo);
const text = prettyStringifyProcessTree(status);
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 ]) ]
return padTable({
table: [ [ "pid", "ppid", "command" ], ...status.map(({pid, ppid, command}) => [ pid, ppid, command ]) ]
});

@@ -161,2 +165,15 @@ };

};
export { getProcessList, sortProcessList, getProcessPidMap, getProcessTree, findProcessTreeNode, checkProcessExist, tryKillProcess, tryKillProcessTreeNode, collectAllProcessStatus };
const isPidExist = pid => {
try {
process.kill(pid, 0);
return !0;
} catch (error) {
return !1;
}
};
const getProcessPidMapAsync = async processList => toProcessPidMap(processList || await getProcessListAsync());
const getProcessTreeAsync = async processList => toProcessTree(processList || await getProcessListAsync());
const findProcessTreeNodeAsync = async (info, processTree) => findProcessTreeInfo(info, processTree || await getProcessTreeAsync());
const checkProcessExistAsync = async (info, processPidMap) => Boolean(findProcessPidMapInfo(info, processPidMap || await getProcessPidMapAsync()));
const collectAllProcessStatusAsync = async (outputMode, isOutputJSON) => isOutputJSON ? getAllProcessStatusAsync(outputMode) : describeAllProcessStatusAsync(outputMode);
export { getProcessListAsync, sortProcessList, toProcessPidMap, findProcessPidMapInfo, toProcessTree, findProcessTreeInfo, killProcessInfoAsync, killProcessTreeInfoAsync, getAllProcessStatusAsync, describeAllProcessStatusAsync, isPidExist, getProcessListAsync as getProcessList, getProcessPidMapAsync as getProcessPidMap, getProcessTreeAsync as getProcessTree, findProcessTreeNodeAsync as findProcessTreeNode, checkProcessExistAsync as checkProcessExist, killProcessInfoAsync as tryKillProcess, killProcessTreeInfoAsync as tryKillProcessTreeNode, collectAllProcessStatusAsync as collectAllProcessStatus };

@@ -52,3 +52,3 @@ import { arch, platform, release, hostname, cpus, networkInterfaces, totalmem, freemem, loadavg, uptime } from "os";

}).map(([k, v]) => `[${k}]\n${indentLine(v)}`).join("\n");
const getProcessStatus = () => ({
const getCurrentProcessStatus = () => ({
title: process.title,

@@ -79,2 +79,2 @@ pid: process.pid,

});
export { getSystemPlatform, getSystemProcessor, getSystemMemory, getSystemNetwork, getSystemActivity, getSystemStatus, describeSystemPlatform, describeSystemProcessor, describeSystemMemory, describeSystemNetwork, describeSystemActivity, describeSystemStatus, getProcessStatus };
export { getSystemPlatform, getSystemProcessor, getSystemMemory, getSystemNetwork, getSystemActivity, getSystemStatus, describeSystemPlatform, describeSystemProcessor, describeSystemMemory, describeSystemNetwork, describeSystemActivity, describeSystemStatus, getCurrentProcessStatus, getCurrentProcessStatus as getProcessStatus };

@@ -1,1 +0,1 @@

{"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}
{"name":"dr-js","version":"0.21.1-dev.2","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}

@@ -19,2 +19,4 @@ # dr-js

[i:lint]: https://img.shields.io/badge/code_style-standard_ES6+-yellow.svg
[l:lint]: https://standardjs.com
[l:lint]: https://standardjs.com
more in source `README.md`
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc