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.0 to 0.21.1-dev.0

10

bin/function.js

@@ -22,3 +22,3 @@ Object.defineProperty(exports,"packageName",{enumerable:!0,get:function(){return _package.name}})

exports.getVersion=getVersion
const evalScript=async(evalScriptString,evalArgv,evalCwd,evalOption)=>{const scriptFunc=await eval(`(evalArgv, evalCwd, evalOption) => { ${evalScriptString} }`)
const evalScript=async(evalScriptString,evalArgv,evalCwd,evalOption)=>{const scriptFunc=await eval(`async (evalArgv, evalCwd, evalOption) => { ${evalScriptString} }`)
return scriptFunc(evalArgv,evalCwd,evalOption)}

@@ -44,4 +44,4 @@ exports.evalScript=evalScript

if(e.ok)return e
if(!(e.status>=300&&e.status<=399&&e.headers.location))throw new Error(`[fetch] bad status: ${i()}`)
if(++a>t)throw new Error(`[fetch] ${t} max jump reached: ${i()}`)
if(!(e.status>=300&&e.status<=399&&e.headers.location))throw new Error(`bad status: ${i()}`)
if(++a>t)throw new Error(`${t} max jump reached: ${i()}`)
s=new URL(e.headers.location,s).href

@@ -60,6 +60,6 @@ n=[...n,...(e.headers["set-cookie"]||[]).map(e=>e.split(";")[0])]}}

const collectAllProcessStatus=async(e,r)=>{if(e.startsWith("t")){const t=await(0,_ProcessStatus.getProcessTree)()
if(!r)return t
if(r)return t
const o=prettyStringifyProcessTree(t)
return"tree-wide"!==e&&"tw"!==e?o.split("\n").map(e=>(0,_string.autoEllipsis)(e,128,96,16)).join("\n"):o}const t=(0,_ProcessStatus.sortProcessList)(await(0,_ProcessStatus.getProcessList)(),e)
return r?(0,_format.padTable)({table:[["pid","ppid","command"],...t.map(({pid:e,ppid:r,command:t})=>[e,r,t])]}):t}
return r?t:(0,_format.padTable)({table:[["pid","ppid","command"],...t.map(({pid:e,ppid:r,command:t})=>[e,r,t])]})}
exports.collectAllProcessStatus=collectAllProcessStatus

@@ -66,0 +66,0 @@ const describeServer=({baseUrl:e,protocol:r,hostname:t,port:o},s,a=[])=>(0,_string.indentList)(`[${s}]`,[`pid: ${process.pid}`,...a,`baseUrl: '${e}'`,"0.0.0.0"===t&&(0,_string.indentList)("localUrl:",[{address:"localhost"},...(0,_NetworkAddress.getNetworkIPv4AddressList)()].map(({address:e})=>`'${r}//${e}:${o}'`))].filter(Boolean))

@@ -26,32 +26,32 @@ #!/usr/bin/env node

const N=(e,r)=>e(r).then(()=>O(`[${w}] done: ${r}`),e=>O(`[${w}] error: ${r}\n${e.stack||e}`))
const k=Boolean($("help"))
const x=$(w)||[]
const k=$(w)||[]
const x=Boolean($("json"))
const A=q("input-file")
const P=q("output-file")
const G=async()=>{const e=(q("host")||"").split(":")
const F=async()=>{const e=(q("host")||"").split(":")
const r=e[0]||"0.0.0.0"
return{hostname:r,port:Number(e[1]||await(0,l.autoTestServerPort)([80,8080,8888,8800,8e3],r))}}
switch(w){case"eval":case"eval-readline":{let t=await(0,g.evalScript)(A?(0,r.readFileSync)(A).toString():x[0],A?x:x.slice(1),A?(0,e.dirname)(A):process.cwd(),b)
switch(w){case"eval":case"eval-readline":{let t=await(0,g.evalScript)(A?String((0,r.readFileSync)(A)):k[0],A?k:k.slice(1),A?(0,e.dirname)(A):process.cwd(),b)
"eval-readline"===w&&(t=await(0,g.evalReadlineExtend)(t,T("root"),O))
return void 0!==t&&(e=>P?(0,r.writeFileSync)(P,e):(0,n.pipeStreamAsync)(process.stdout,(0,n.bufferToStream)(e)))(t instanceof Buffer?t:Buffer.from(String(t)))}case"repl":return(0,t.start)({prompt:"> ",input:process.stdin,output:process.stdout,useGlobal:!0}).context.require=require
case"wait":{const e=x[0]||2e3
return(0,o.setTimeoutAsync)(e)}case"echo":return h(x)
case"cat":if(x.length)for(const e of x)await(0,n.pipeStreamAsync)(process.stdout,(0,r.createReadStream)(e))
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))
else process.stdin.isTTY||await(0,n.pipeStreamAsync)(process.stdout,process.stdin)
return
case"write":case"append":if(process.stdin.isTTY)throw new Error("[pipe] stdin should not be TTY mode")
case"write":case"append":if(process.stdin.isTTY)throw new Error("unsupported TTY stdin")
const l="write"===w?"w":"a"
return(0,n.pipeStreamAsync)((0,r.createWriteStream)(x[0],{flags:l}),process.stdin)
case"open":{const r=x[0]||"."
return(0,d.runSync)({command:(0,m.getDefaultOpen)(),argList:[r.includes("://")?r:(0,e.normalize)(r)]})}case"status":return h(k?(0,f.describeSystemStatus)():{system:(0,f.getSystemStatus)(),process:(0,f.getProcessStatus)()})
case"file-list":case"file-list-all":case"file-tree":return h(await(0,g.collectFile)(w,x[0]||process.cwd()))
case"file-create-directory":for(const e of x)await N(c.createDirectory,e)
return(0,n.pipeStreamAsync)((0,r.createWriteStream)(k[0],{flags:l}),process.stdin)
case"open":{const r=k[0]||"."
return(0,d.runSync)({command:(0,m.getDefaultOpen)(),argList:[r.includes("://")?r:(0,e.normalize)(r)]})}case"status":return h(x?{system:(0,f.getSystemStatus)(),process:(0,f.getProcessStatus)()}:(0,f.describeSystemStatus)())
case"file-list":case"file-list-all":case"file-tree":return h(await(0,g.collectFile)(w,k[0]||process.cwd()))
case"file-create-directory":for(const e of k)await N(c.createDirectory,e)
return
case"file-modify-copy":return u.modify.copy(x[0],x[1])
case"file-modify-move":return u.modify.move(x[0],x[1])
case"file-modify-delete":for(const e of x)await N(u.modify.delete,e)
case"file-modify-copy":return u.modify.copy(k[0],k[1])
case"file-modify-move":return u.modify.move(k[0],k[1])
case"file-modify-delete":for(const e of k)await N(u.modify.delete,e)
return
case"file-merge":{const[e,...t]=x
case"file-merge":{const[e,...t]=k
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]=x
return}case"fetch":{let[e,t=4,a=0]=k
t=Number(t)||0

@@ -63,12 +63,15 @@ a=Number(a)||0

await(e=>(0,n.pipeStreamAsync)(P?(0,r.createWriteStream)(P):process.stdout,e))(o.stream())
return O("\n[fetch] done")}case"process-status":{const[e="pid--"]=x
return h(await(0,g.collectAllProcessStatus)(e,k))}case"server-serve-static":case"server-serve-static-simple":{const[e=3e5]=x
return O("\n[fetch] done")}case"process-status":{const[e="pid--"]=k
return h(await(0,g.collectAllProcessStatus)(e,x))}case"json-format":{const[e=2]=k
const t=JSON.parse((0,r.readFileSync)(A))
const a=(0,s.prettyStringifyJSON)(t,e)
return(0,r.writeFileSync)(P||A,a)}case"server-serve-static":case"server-serve-static-simple":{const[e=3e5]=k
const r="server-serve-static-simple"===w
const t=q("root")||process.cwd()
return(0,y.startServerServeStatic)(Object.assign({isSimpleServe:r,expireTime:Number(e),staticRoot:t,log:O},await G()))}case"server-websocket-group":return(0,v.startServerWebSocketGroup)(Object.assign({log:O},await G()))
case"server-test-connection":return(0,S.startServerTestConnection)(Object.assign({log:O},await G()))
return(0,y.startServerServeStatic)(Object.assign({isSimpleServe:r,expireTime:Number(e),staticRoot:t,log:O},await F()))}case"server-websocket-group":return(0,v.startServerWebSocketGroup)(Object.assign({log:O},await F()))
case"server-test-connection":return(0,S.startServerTestConnection)(Object.assign({log:O},await F()))
case"server-tcp-proxy":{let e
let r
if((0,i.isBasicFunction)(x[0])){e=[{hostname:"custom-hostname",port:"custom-port"}]
r=x[0]}else{e=x.map(e=>{const[r,t]=e.split(":")
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(":")
return{hostname:r||"localhost",port:Number(t)}})

@@ -79,3 +82,3 @@ let t=0

O(`[CONNECT] ${r.remoteAddress}:${r.remotePort} => ${s.hostname}:${s.port}`)
return s})}const{option:t,start:s}=(0,p.createTCPProxyServer)(Object.assign({getTargetOption:r},await G()))
return s})}const{option:t,start:s}=(0,p.createTCPProxyServer)(Object.assign({getTargetOption:r},await F()))
await s()

@@ -82,0 +85,0 @@ return O((0,a.indentList)("[TCPProxy]",[`pid: ${process.pid}`,`at: ${t.hostname}:${t.port}`,...e.map(e=>`proxy to: ${e.hostname}:${e.port}`)]))}}};(async()=>{const e=await(0,w.parseOption)()

var e=require("../library/node/module/Option/preset")
const t=(...t)=>t.map(t=>e.Preset.parseCompact(t,{optional:!0}))
const o=t("help,h/T|show full help, or human readable output","quiet,q/T|less log","version,v/T|show version","host,H/SS|common option: $0=hostname:port (hostname default to 0.0.0.0)","root,R/SP|common option: $0=path/cwd","input-file,I/SP|common option","output-file,O/SP|common option")
const s=t("eval,e/A|eval file or string: -O=outputFile, -I/$0=scriptFile/scriptString, $@=...evalArgv","eval-readline,erl/A|eval with readline: -R=readlineFile, ...eval","repl,i/T|start node REPL","wait/AI/0-1|wait specified time, in msec: $0=waitTime/2*1000","echo/A|show args: $@=...args","cat/AP/0-|with 0 args pipe stdin to stdout, else read $@ as file and pipe to stdout",'write/SP|for use like ">": `dr-js --cat sourceFile | dr-js --write outputFile`','append/SP|for use like ">>": `dr-js --cat sourceFile | dr-js --append outputFile`',"open,o//0-1|use system default app to open uri or path: $0=uriOrPath/cwd","status,s/T|basic system status: -h=isHumanReadableOutput","file-list,ls/AP/0-1|list file: $0=path/cwd","file-list-all,ls-R,lla/AP/0-1|list all file: $0=path/cwd","file-tree,tree/AP/0-1|list all file in tree: $0=path/cwd","file-create-directory,mkdir/AP/0-|create directory: $@=...pathList","file-modify-copy,cp/AP/2|copy path: $@=pathFrom,pathTo","file-modify-move,mv/AP/2|move path: $@=pathFrom,pathTo","file-modify-delete,rm/AP/0-|delete path: $@=...pathList","file-merge,merge/AP/2-|merge to one file: $@=mergedFile,...inputFileList","fetch,f//1-3|fetch uri: -O=outputFile/stdout, $@=initialUrl,jumpMax/4,timeout/0",'process-status,ps//0-1|show system process status: -h=isHumanReadableOutput, $0=outputMode/"pid--"',"server-serve-static,sss//0-1|static file server: -H=hostname:port, -R=staticRoot/cwd, $0=expireTime/5*60*1000","server-serve-static-simple,ssss//0-1|static file server, no HTML: -H=hostname:port, -R=staticRoot/cwd, $0=expireTime/5*60*1000","server-websocket-group,swg|websocket chat server: -H=hostname:port","server-test-connection,stc|connection test server: -H=hostname:port","server-tcp-proxy,stp//1-|tcp proxy server: -H=hostname:port, $@=toHostname:toPort,toHostname:toPort,...")
const r=s.map(({name:e})=>e)
exports.MODE_NAME_LIST=r
const i={prefixENV:"dr-js",prefixCONFIG:"dr-js",formatList:[e.Preset.Config,...o,...s]}
const{parseOption:a,formatUsage:p}=(0,e.prepareOption)(i)
exports.formatUsage=p
exports.parseOption=a
const o=t("help,h/T|show full help","quiet,q/T|less log","version,v/T|show version","json,J/T|output JSON, if supported","host,H/SS|common option: $0=hostname:port (hostname default to 0.0.0.0)","root,R/SP|common option: $0=path/cwd","input-file,I/SP|common option","output-file,O/SP|common option")
const s=t("eval,e/A|eval file or string: -O=outputFile, -I/$0=scriptFile/scriptString, $@=...evalArgv","eval-readline,erl/A|eval with readline: -R=readlineFile, ...eval","repl,i/T|start node REPL","wait/AI/0-1|wait specified time, in msec: $0=waitTime/2*1000","echo/A|show args: $@=...args","cat/AP/0-|with 0 args pipe stdin to stdout, else read $@ as file and pipe to stdout",'write/SP|for use like ">": `dr-js --cat sourceFile | dr-js --write outputFile`','append/SP|for use like ">>": `dr-js --cat sourceFile | dr-js --append outputFile`',"open,o//0-1|use system default app to open uri or path: $0=uriOrPath/cwd","status,s/T|basic system status: -J=isOutputJSON","file-list,ls/AP/0-1|list file: $0=path/cwd","file-list-all,ls-R,lla/AP/0-1|list all file: $0=path/cwd","file-tree,tree/AP/0-1|list all file in tree: $0=path/cwd","file-create-directory,mkdir/AP/0-|create directory: $@=...pathList","file-modify-copy,cp/AP/2|copy path: $@=pathFrom,pathTo","file-modify-move,mv/AP/2|move path: $@=pathFrom,pathTo","file-modify-delete,rm/AP/0-|delete path: $@=...pathList","file-merge,merge/AP/2-|merge to one file: $@=mergedFile,...inputFileList",'fetch,f//1-3|fetch "GET" uri: -O=outputFile/stdout, $@=initialUrl,jumpMax/4,timeout/0','process-status,ps//0-1|show system process status: -J=isOutputJSON, $0=outputMode/"pid--"',"json-format,jf/AI/0-1|re-format JSON file: -O=outputFile/-I, -I=inputFile, $0=unfoldLevel/2","server-serve-static,sss//0-1|static file server: -H=hostname:port, -R=staticRoot/cwd, $0=expireTime/5*60*1000","server-serve-static-simple,ssss//0-1|static file server, no HTML: -H=hostname:port, -R=staticRoot/cwd, $0=expireTime/5*60*1000","server-websocket-group,swg|websocket chat server: -H=hostname:port","server-test-connection,stc|connection test server: -H=hostname:port","server-tcp-proxy,stp//1-|tcp proxy server: -H=hostname:port, $@=toHostname:toPort,toHostname:toPort,...")
const i=s.map(({name:e})=>e)
exports.MODE_NAME_LIST=i
const r={prefixENV:"dr-js",prefixCONFIG:"dr-js",formatList:[e.Preset.Config,...o,...s]}
const{parseOption:p,formatUsage:a}=(0,e.prepareOption)(r)
exports.formatUsage=a
exports.parseOption=p

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

return o}
const w=({id:e,text:o,className:r})=>x(s("pre",{innerText:o,ondblclick:e=>t().selectAllChildren(e.currentTarget.parentNode.querySelector("pre"))}),O(e,r),v())
const T=({isSend:e,id:t,fileName:o,fileSize:r,fileId:n,className:a})=>x(s("pre",{innerText:e?"sharing: ":"share: "}),s(e?"b":"button",{innerText:`📄 ${o} (${m(r)}B)`,onclick:e?null:()=>_(t,n)}),O(t,a),v())
const T=({id:e,text:o,className:r})=>x(s("pre",{innerText:o,ondblclick:e=>t().selectAllChildren(e.currentTarget.parentNode.querySelector("pre"))}),O(e,r),v())
const w=({isSend:e,id:t,fileName:o,fileSize:r,fileId:n,className:a})=>x(s("pre",{innerText:e?"sharing: ":"share: "}),s(e?"b":"button",{innerText:`📄 ${o} (${m(r)}B)`,onclick:e?null:()=>_(t,n)}),O(t,a),v())
const I=e=>x(s("pre",{innerText:e,className:"color-system"}),O("System","color-system"),v())

@@ -127,5 +127,4 @@ const R=()=>a("#log","")

P.groupInfo=u}else if(s===d){const{id:e,text:t,fileName:o,fileSize:r,fileId:n}=u
t&&w({id:e,text:t})
o&&T({id:e,fileName:o,fileSize:r,fileId:n})}else if(s===p){if(i!==P.id)throw new Error("Strange mismatch")
const{id:e,intent:t}=u
t&&T({id:e,text:t})
o&&w({id:e,fileName:o,fileSize:r,fileId:n})}else if(s===p){const{id:e,intent:t}=u
if("request"===t){const{fileId:t}=u

@@ -148,4 +147,4 @@ const o=P.fileWeakMap.get(a(`#${t}`))

if(n>u)return e(`fill size too big! max: ${m(u)}B, get ${m(n)}B`)
t&&w({id:P.id,text:t,className:"color-self"})
const s=r&&T({isSend:!0,id:P.id,fileName:r,fileSize:n,className:"color-self"})
t&&T({id:P.id,text:t,className:"color-self"})
const s=r&&w({isSend:!0,id:P.id,fileName:r,fileSize:n,className:"color-self"})
P.websocket.send(S(JSON.stringify({type:d,payload:{text:t,fileName:r,fileSize:n,fileId:s&&s.id}})))

@@ -152,0 +151,0 @@ r&&P.fileWeakMap.set(s,o)}

@@ -6,3 +6,3 @@ var r=require("./ArrayBuffer")

const t=r=>{const e=r.byteLength
if(e>4294967295)throw new Error(`[packArrayBufferPair] headerArrayBuffer exceeds max size 4294967295 with size: ${e}`)
if(e>4294967295)throw new Error(`headerArrayBuffer exceeds max size 4294967295, get: ${e}`)
const t=new DataView(new ArrayBuffer(4))

@@ -9,0 +9,0 @@ t.setUint32(0,e,!1)

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

const e=(e,t=null,n=null)=>({value:e,prev:t,next:n})
exports.createNode=e
exports.createDoublyLinkedList=(()=>{let t,n,r
const p=()=>{t=new Set
const p=()=>{t=e(null)
n=e(null)
r=e(null)
n.next=r
r.prev=n}
t.next=n
n.prev=t
r=0}
p()
const v=(e,n)=>{const{next:r}=n
n.next=r.prev=e
const v=(e,t)=>{const{next:n}=t
t.next=n.prev=e
e.prev=t
e.next=n
r++}
const x=(e,t)=>{const{prev:n}=t
t.prev=n.next=e
e.prev=n
e.next=r
t.add(e)}
const x=(e,n)=>{const{prev:r}=n
n.prev=r.next=e
e.prev=r
e.next=n
t.add(e)}
const s=e=>{const{prev:n,next:r}=e
n.next=r
r.prev=n
e.next=t
r++}
const o=e=>{const{prev:t,next:n}=e
t.next=n
n.prev=t
e.prev=e.next=null
t.delete(e)}
return{clear:p,getHead:()=>n,getTail:()=>r,getLength:()=>t.size,insertAfter:v,insertBefore:x,remove:s,removeBetween:(e,n)=>{const{prev:r}=e
const{next:p}=n
r.next=p
p.prev=r
e.prev=n.next=null
r--}
return{clear:p,getHead:()=>t,getTail:()=>n,getLength:()=>r,insertAfter:v,insertBefore:x,remove:o,removeBetween:(e,t)=>{const{prev:n}=e
const{next:p}=t
n.next=p
p.prev=n
e.prev=t.next=null
let v=e
for(;v;){t.delete(v)
v=v.next}},forEach:e=>{let t=n.next
for(;v;){r--
v=v.next}},forEach:e=>{let r=t.next
let p=0
for(;t!==r;){e(t,p)
t=t.next
p++}},forEachReverse:e=>{let p=r.prev
let v=t.size-1
for(;p!==n;){e(p,v)
for(;r!==n;){e(r,p)
r=r.next
p++}},forEachReverse:e=>{let p=n.prev
let v=r-1
for(;p!==t;){e(p,v)
p=p.prev
v--}},reverse:()=>{let e=n.next
for(;e!==r;){const{prev:t,next:n}=e
v--}},reverse:()=>{let e=t.next
for(;e!==n;){const{prev:t,next:n}=e
e.prev=n
e.next=t
e=n}const{next:t}=n
const{prev:p}=r
n.next=p
r.prev=t
p.prev=n
t.next=r},setFirst:e=>{if(e===n.next)return
e=n}const{next:r}=t
const{prev:p}=n
t.next=p
n.prev=r
p.prev=t
r.next=n},setFirst:e=>{if(e===t.next)return
const{prev:n,next:r}=e
n.next=r
r.prev=n
e.prev=t
e.next=t.next
t.next=e},setLast:e=>{if(e===n.prev)return
const{prev:t,next:r}=e
t.next=r
r.prev=t
e.prev=n
e.next=n.next
n.next=e},setLast:e=>{if(e===r.prev)return
const{prev:t,next:n}=e
t.next=n
n.prev=t
e.prev=r.prev
e.next=r
r.prev=e},push:e=>x(e,r),pop:()=>s(r.prev),unshift:e=>v(e,n),shift:()=>s(n.next)}})
e.prev=n.prev
e.next=n
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
var e=require("../verify")
var t=require("./Object")
var r=require("./Array")
const c=c=>{(0,e.basicObject)(c,"initialState should be basic Object")
let s=[]
return{subscribe:e=>{s=(0,r.arrayMatchPush)(s,e)},unsubscribe:e=>{s=(0,r.arrayMatchDelete)(s,e)},getState:()=>c,setState:r=>{(0,e.basicObject)(r,"state should be basic Object")
if((r=(0,t.objectMerge)(c,r))===c)return c
const n=c
c=r
s.forEach(e=>e(c,n))
return c}}}
exports.createStateStore=c
const s=s=>{(0,e.basicObject)(s,"initialState should be basic Object")
let c=[]
return{subscribe:e=>{c=(0,r.arrayMatchPush)(c,e)},unsubscribe:e=>{c=(0,r.arrayMatchDelete)(c,e)},getState:()=>s,setState:e=>{if((e=(0,t.objectMerge)(s,e))===s)return s
const r=s
s=e
c.forEach(e=>e(s,r))
return s}}}
exports.createStateStore=s
exports.createStateStoreLite=(e=>({getState:()=>e,setState:t=>e=Object.assign({},e,t)}))
exports.createStateStoreEnhanced=(({initialState:t,enhancer:r,reducer:s})=>{(0,e.basicFunction)(r,"enhancer function required");(0,e.basicFunction)(s,"reducer function required")
const{subscribe:n,unsubscribe:a,getState:i,setState:u}=c(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)
let o=null
let b=!1
let S=!1
const d=()=>b?o:i()
const h=t=>{(0,e.basicObject)(t,"action should be basic Object")
return b?(t=>{if(S)throw new Error(`got reducer caused dispatching, action: ${JSON.stringify(t)}`)
r(l,t)
o=s(o,t);(0,e.basicObject)(o,"reducer should return basic Object state")})(t):(e=>{o=i()
const l=()=>b?o:u()
const d=e=>b?(e=>{r(p,e)
o=c(o,e)})(e):(e=>{o=u()
b=!0
r(l,e)
if(!o)throw new Error(`dispatchingState after enhancer is invalid, get: ${JSON.stringify(o)}`)
r(p,e)
b=!1
S=!0
const t=s(o,e)
const t=c(o,e)
S=!1
o=null
u(t)})(t)}
const l={getState:d,dispatch:h}
return{subscribe:n,unsubscribe:a,getState:d,dispatch:h}})
exports.toReduxStore=(t=>{const{subscribe:r,unsubscribe:c}=t;(0,e.basicFunction)(r,"store.subscribe required");(0,e.basicFunction)(c,"store.unsubscribe required")
i(t)})(e)
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 Object.assign({},t,{subscribe:e=>{r(e)
return()=>c(e)}})})
return()=>s(e)}})})
exports.reducerFromMap=(e=>{const t=Object.keys(e)
const r=t.length
return(c,s)=>{const n={}
return(s,c)=>{const n={}
let a=!1
for(let i=0;i<r;i++){const r=t[i]
const u=c[r]
const o=e[r](u,s)
for(let u=0;u<r;u++){const r=t[u]
const i=s[r]
const o=e[r](i,c)
n[r]=o
a=a||o!==u}return a?n:c}})
exports.createEntryEnhancer=(e=>(t,r)=>{const c=e[r.type]
return c&&c(t,r)})
exports.createStoreStateSyncReducer=((e,{getState:t,setState:r})=>(c,{type:s,payload:n})=>{s===e&&r(n)
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()})
var e=require("./AsyncTaskQueue")
exports.createAsyncTaskLane=(({laneSize:u,selectLane:n=t})=>{if(!((u=Number(u))>=1))throw new Error(`[createTaskLane] invalid laneSize: ${u}`)
exports.createAsyncTaskLane=(({laneSize:t,selectLane:n=u})=>{if(!((t=Number(t))>=1))throw new Error(`invalid laneSize: ${t}`)
const s=[]
for(let t=0;t<u;t++)s.push({index:t,infoQueue:[],taskQueue:(0,e.createAsyncTaskQueue)()})
return{reset:()=>s.forEach(({taskQueue:e,infoQueue:t})=>{e.reset()
t.length=0}),getStatus:e=>s.map(({index:t,infoQueue:u,taskQueue:n})=>({index:e?t:void 0,infoQueue:e?u:u.length,taskQueue:n.getLength()})),trimInfoQueue:()=>s.forEach(({taskQueue:e,infoQueue:t})=>{t.length=e.getLength()}),pushTask:(e,t)=>{const{index:u,taskQueue:a,infoQueue:r}=n(s,t)
for(let u=0;u<t;u++)s.push({index:u,infoQueue:[],taskQueue:(0,e.createAsyncTaskQueue)()})
return{reset:()=>s.forEach(({taskQueue:e,infoQueue:u})=>{e.reset()
u.length=0}),getStatus:e=>s.map(({index:u,infoQueue:t,taskQueue:n})=>({index:e?u:void 0,infoQueue:e?t:t.length,taskQueue:n.getLength()})),trimInfoQueue:()=>s.forEach(({taskQueue:e,infoQueue:u})=>{u.length=e.getLength()}),pushTask:(e,u)=>{const{index:t,taskQueue:a,infoQueue:r}=n(s,u)
const i=a.pushTask(e)
r.unshift(t)
r.unshift(u)
r.length=a.getLength()
return i}}})
const t=e=>e.reduce((e,t)=>e.taskQueue.getLength()>t.taskQueue.getLength()?t:e,e[0])
exports.selectMinLoadLane=t
const u=e=>e.reduce((e,u)=>e.taskQueue.getLength()>u.taskQueue.getLength()?u:e,e[0])
exports.selectMinLoadLane=u

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

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

@@ -15,0 +15,0 @@ const l=Object.keys(n)

const r=(r,e)=>void 0===r[e]?r[e]={}:r[e]
const e=(e,t)=>{const a=[]
return{routeNode:e=t.split("/").reduce((e,o)=>{if("*"===o){a.push("/*")
return r(e,"/*")}if(":"===o[0]){const u=o.slice(1)
if(!u||a.includes(u))throw new Error(`[parseRouteToMap] invalid frag [${o}] for route: ${t}`)
a.push(u)
return r(e,"/:PARAM")}return r(e,o)},e),paramNameList:a}}
const e=(e,t)=>{const o=[]
return{routeNode:e=t.split("/").reduce((e,a)=>{if("*"===a){o.push("/*")
return r(e,"/*")}if(":"===a[0]){const u=a.slice(1)
if(!u||o.includes(u))throw new Error(`invalid frag [${a}] for route: ${t}`)
o.push(u)
return r(e,"/:PARAM")}return r(e,a)},e),paramNameList:o}}
exports.parseRouteToMap=e
const t=(r,e)=>{const t=[]
const a=e.split("/")
for(let e=0,o=a.length;e<o;e++){const o=a[e]
if(r[o])r=r[o]
else{if(!r["/:PARAM"]){if(r["/*"]){t.push(a.slice(e).join("/"))
const o=e.split("/")
for(let e=0,a=o.length;e<a;e++){const a=o[e]
if(r[a])r=r[a]
else{if(!r["/:PARAM"]){if(r["/*"]){t.push(o.slice(e).join("/"))
r=r["/*"]
break}return}t.push(o)
break}return}t.push(a)
r=r["/:PARAM"]}}return{routeNode:r,paramValueList:t}}
exports.findRouteFromMap=t
const a=(r={},t="/",o)=>{if(Array.isArray(t))return t.reduce((e,t)=>a(r,t,o),r)
const o=(r={},t="/",a)=>{if(Array.isArray(t))return t.reduce((e,t)=>o(r,t,a),r)
const{routeNode:u,paramNameList:s}=e(r,t)
if(u["/DATA"])throw new Error(`[appendRouteMap] duplicate route: ${t}`)
u["/DATA"]={route:t,paramNameList:s,data:o}
if(u["/DATA"])throw new Error(`duplicate route: ${t}`)
u["/DATA"]={route:t,paramNameList:s,data:a}
return r}
exports.appendRouteMap=a
exports.createRouteMap=(r=>r.reduce((r,[e,t])=>a(r,e,t),{}))
exports.parseRouteUrl=((r,e)=>{const a=t(r,e)
if(void 0===a)return
const{routeNode:o,paramValueList:u}=a
if(void 0===o["/DATA"])return
const{route:s,paramNameList:p,data:n}=o["/DATA"]
return{route:s,paramMap:p.reduce((r,e,t)=>{r[e]=u[t]
return r},{}),data:n}})
exports.appendRouteMap=o
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
const{routeNode:a,paramValueList:u}=o
if(void 0===a["/DATA"])return
const{route:s,paramNameList:n,data:p}=a["/DATA"]
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])
var r=require("../compare")
const e=/^(\d+)\.(\d+)\.(\d+)(.*)$/
const t=r=>{let[,t,a,s,o=""]=e.exec(r)
const t=r=>{let[,t,a,o,s=""]=e.exec(r)||[]
t=parseInt(t)
a=parseInt(a)
s=parseInt(s)
if(isNaN(t)||isNaN(a)||isNaN(s))throw new Error(`[parseSemVer] invalid versionString: ${r}`)
return{major:t,minor:a,patch:s,label:o}}
o=parseInt(o)
if(isNaN(t)||isNaN(a)||isNaN(o))throw new Error(`invalid version: ${r}`)
return{major:t,minor:a,patch:o,label:s}}
exports.parseSemVer=t
exports.compareSemVer=((r,e)=>{const s=t(r)
const o=t(e)
return s.major-o.major||s.minor-o.minor||s.patch-o.patch||a(s.label,o.label)})
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)})
const a=(e,t)=>e===t?0:t.startsWith(e)?1:e.startsWith(t)?-1:(0,r.compareStringWithNumber)(e,t)

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

n.d(s,"HEADER_BYTE_SIZE",()=>Et)
n.d(s,"packArrayBufferHeader",()=>St)
n.d(s,"parseArrayBufferHeader",()=>Mt)
n.d(s,"packArrayBufferHeader",()=>Mt)
n.d(s,"parseArrayBufferHeader",()=>St)
n.d(s,"packArrayBufferPacket",()=>Lt)

@@ -92,8 +92,8 @@ n.d(s,"parseArrayBufferPacket",()=>Ot)

n.d(a,"createHub",()=>Dt)
n.d(a,"createEventTarget",()=>Ct)
n.d(a,"createEventTarget",()=>jt)
n.d(a,"createEventEmitter",()=>Rt)
var c={}
n.r(c)
n.d(c,"createDoublyLinkedList",()=>Bt)
n.d(c,"createNode",()=>$t)
n.d(c,"createDoublyLinkedList",()=>$t)
n.d(c,"createNode",()=>Bt)
var i={}

@@ -125,4 +125,4 @@ n.r(i)

n.d(p,"createTreeDepthFirstSearch",()=>Gt)
n.d(p,"createTreeDepthFirstSearchAsync",()=>Jt)
n.d(p,"createTreeBreadthFirstSearch",()=>Yt)
n.d(p,"createTreeDepthFirstSearchAsync",()=>Yt)
n.d(p,"createTreeBreadthFirstSearch",()=>Jt)
n.d(p,"createTreeBreadthFirstSearchAsync",()=>Wt)

@@ -171,4 +171,4 @@ n.d(p,"createTreeBottomUpSearch",()=>Xt)

n.d(v,"getRotate",()=>Ae)
n.d(v,"getRotateDelta",()=>Se)
n.d(v,"getDotProduct",()=>Me)
n.d(v,"getRotateDelta",()=>Me)
n.d(v,"getDotProduct",()=>Se)
n.d(v,"add",()=>Le)

@@ -179,4 +179,4 @@ n.d(v,"sub",()=>Oe)

n.d(v,"scale",()=>De)
n.d(v,"project",()=>je)
n.d(v,"min",()=>Ce)
n.d(v,"project",()=>Ce)
n.d(v,"min",()=>je)
n.d(v,"max",()=>Re)

@@ -200,3 +200,3 @@ n.d(v,"clamp",()=>$e)

n.d(w,"isContain",()=>Ge)
n.d(w,"isContainPoint",()=>Je)
n.d(w,"isContainPoint",()=>Ye)
var x={}

@@ -236,36 +236,36 @@ n.r(x)

n.d(A,"Angle",()=>E)
var M={}
n.r(M)
n.d(M,"arraySet",()=>An)
n.d(M,"arrayDelete",()=>Mn)
n.d(M,"arrayInsert",()=>Sn)
n.d(M,"arrayMove",()=>Ln)
n.d(M,"arrayPush",()=>On)
n.d(M,"arrayUnshift",()=>Tn)
n.d(M,"arrayPop",()=>kn)
n.d(M,"arrayShift",()=>Dn)
n.d(M,"arrayConcat",()=>Cn)
n.d(M,"arrayMatchDelete",()=>Rn)
n.d(M,"arrayMatchPush",()=>jn)
n.d(M,"arrayMatchMove",()=>$n)
n.d(M,"arrayFindDelete",()=>Bn)
n.d(M,"arrayFindMove",()=>Pn)
n.d(M,"arrayFindSet",()=>Fn)
n.d(M,"arrayFindSetOrPush",()=>Nn)
n.d(M,"arrayFindOrPush",()=>In)
n.d(M,"arraySplitChunk",()=>_n)
var S={}
n.r(S)
n.d(S,"arraySet",()=>An)
n.d(S,"arrayDelete",()=>Sn)
n.d(S,"arrayInsert",()=>Mn)
n.d(S,"arrayMove",()=>Ln)
n.d(S,"arrayPush",()=>On)
n.d(S,"arrayUnshift",()=>Tn)
n.d(S,"arrayPop",()=>kn)
n.d(S,"arrayShift",()=>Dn)
n.d(S,"arrayConcat",()=>jn)
n.d(S,"arrayMatchDelete",()=>Rn)
n.d(S,"arrayMatchPush",()=>Cn)
n.d(S,"arrayMatchMove",()=>$n)
n.d(S,"arrayFindDelete",()=>Bn)
n.d(S,"arrayFindMove",()=>Pn)
n.d(S,"arrayFindSet",()=>Fn)
n.d(S,"arrayFindSetOrPush",()=>Nn)
n.d(S,"arrayFindOrPush",()=>In)
n.d(S,"arraySplitChunk",()=>_n)
var M={}
n.r(M)
n.d(M,"objectSet",()=>zn)
n.d(M,"objectDelete",()=>Un)
n.d(M,"objectMerge",()=>qn)
n.d(M,"objectMap",()=>Qn)
n.d(M,"objectPickKey",()=>Vn)
n.d(M,"objectFindKey",()=>Kn)
n.d(M,"objectDeleteUndefined",()=>Hn)
n.d(S,"objectSet",()=>zn)
n.d(S,"objectDelete",()=>Un)
n.d(S,"objectMerge",()=>qn)
n.d(S,"objectMap",()=>Qn)
n.d(S,"objectPickKey",()=>Vn)
n.d(S,"objectFindKey",()=>Kn)
n.d(S,"objectDeleteUndefined",()=>Hn)
var L={}
n.r(L)
n.d(L,"isString",()=>Gn)
n.d(L,"isBoolean",()=>Jn)
n.d(L,"isNumber",()=>Yn)
n.d(L,"isBoolean",()=>Yn)
n.d(L,"isNumber",()=>Jn)
n.d(L,"isInteger",()=>Wn)

@@ -298,4 +298,4 @@ n.d(L,"isObjectAlike",()=>Xn)

n.d(T,"string",()=>Ar)
n.d(T,"boolean",()=>Sr)
n.d(T,"number",()=>Mr)
n.d(T,"boolean",()=>Mr)
n.d(T,"number",()=>Sr)
n.d(T,"integer",()=>Lr)

@@ -306,4 +306,4 @@ n.d(T,"objectAlike",()=>Or)

n.d(T,"objectContain",()=>Dr)
n.d(T,"basicArray",()=>jr)
n.d(T,"arrayLength",()=>Cr)
n.d(T,"basicArray",()=>Cr)
n.d(T,"arrayLength",()=>jr)
n.d(T,"basicFunction",()=>Rr)

@@ -326,4 +326,4 @@ n.d(T,"promiseAlike",()=>$r)

n.d(k,"toReduxStore",()=>Gr)
n.d(k,"reducerFromMap",()=>Jr)
n.d(k,"createEntryEnhancer",()=>Yr)
n.d(k,"reducerFromMap",()=>Yr)
n.d(k,"createEntryEnhancer",()=>Jr)
n.d(k,"createStoreStateSyncReducer",()=>Wr)

@@ -336,53 +336,53 @@ var D={}

n.d(D,"transformCache",()=>eo)
n.d(D,"Array",()=>S)
n.d(D,"Object",()=>M)
n.d(D,"Array",()=>M)
n.d(D,"Object",()=>S)
n.d(D,"StateStore",()=>k)
var C={}
n.r(C)
n.d(C,"addAbs",()=>We)
n.d(C,"clamp",()=>Ze)
n.d(C,"euclideanModulo",()=>Xe)
n.d(C,"lerp",()=>en)
n.d(C,"roundFloat",()=>Je)
n.d(C,"smoothstep",()=>tn)
n.d(C,"easeInCirc",()=>Ao)
n.d(C,"easeInCubic",()=>ao)
n.d(C,"easeInExpo",()=>xo)
n.d(C,"easeInOutCirc",()=>So)
n.d(C,"easeInOutCubic",()=>io)
n.d(C,"easeInOutExpo",()=>Eo)
n.d(C,"easeInOutQuad",()=>so)
n.d(C,"easeInOutQuart",()=>ho)
n.d(C,"easeInOutQuint",()=>yo)
n.d(C,"easeInOutSine",()=>wo)
n.d(C,"easeInQuad",()=>ro)
n.d(C,"easeInQuart",()=>uo)
n.d(C,"easeInQuint",()=>fo)
n.d(C,"easeInSine",()=>mo)
n.d(C,"easeOutCirc",()=>Mo)
n.d(C,"easeOutCubic",()=>co)
n.d(C,"easeOutExpo",()=>bo)
n.d(C,"easeOutQuad",()=>oo)
n.d(C,"easeOutQuart",()=>lo)
n.d(C,"easeOutQuint",()=>po)
n.d(C,"easeOutSine",()=>vo)
n.d(C,"linear",()=>no)
n.d(C,"getRandomArrayBuffer",()=>Lo.a)
n.d(C,"getRandomId",()=>Lo.b)
n.d(C,"getRandomInt",()=>Lo.c)
n.d(C,"getRandomIntList",()=>Lo.d)
n.d(C,"getSample",()=>Oo)
n.d(C,"getSampleRange",()=>To)
n.d(C,"getSampleRate",()=>ko)
var j={}
n.r(j)
n.d(j,"addAbs",()=>We)
n.d(j,"clamp",()=>Ze)
n.d(j,"euclideanModulo",()=>Xe)
n.d(j,"lerp",()=>en)
n.d(j,"roundFloat",()=>Ye)
n.d(j,"smoothstep",()=>tn)
n.d(j,"easeInCirc",()=>Ao)
n.d(j,"easeInCubic",()=>ao)
n.d(j,"easeInExpo",()=>xo)
n.d(j,"easeInOutCirc",()=>Mo)
n.d(j,"easeInOutCubic",()=>io)
n.d(j,"easeInOutExpo",()=>Eo)
n.d(j,"easeInOutQuad",()=>so)
n.d(j,"easeInOutQuart",()=>ho)
n.d(j,"easeInOutQuint",()=>yo)
n.d(j,"easeInOutSine",()=>wo)
n.d(j,"easeInQuad",()=>ro)
n.d(j,"easeInQuart",()=>uo)
n.d(j,"easeInQuint",()=>fo)
n.d(j,"easeInSine",()=>mo)
n.d(j,"easeOutCirc",()=>So)
n.d(j,"easeOutCubic",()=>co)
n.d(j,"easeOutExpo",()=>bo)
n.d(j,"easeOutQuad",()=>oo)
n.d(j,"easeOutQuart",()=>lo)
n.d(j,"easeOutQuint",()=>po)
n.d(j,"easeOutSine",()=>vo)
n.d(j,"linear",()=>no)
n.d(j,"getRandomArrayBuffer",()=>Lo.a)
n.d(j,"getRandomId",()=>Lo.b)
n.d(j,"getRandomInt",()=>Lo.c)
n.d(j,"getRandomIntList",()=>Lo.d)
n.d(j,"getSample",()=>Oo)
n.d(j,"getSampleRange",()=>To)
n.d(j,"getSampleRate",()=>ko)
var C={}
n.r(C)
n.d(C,"CLOCK_PER_SECOND",()=>Do)
n.d(C,"CLOCK_TO_SECOND",()=>jo)
n.d(C,"clock",()=>Co)
n.d(C,"getTimestamp",()=>Ro)
n.d(C,"setTimeoutAsync",()=>$o)
n.d(C,"requestFrameUpdate",()=>Bo)
n.d(C,"cancelFrameUpdate",()=>Po)
n.d(C,"createTimer",()=>Fo)
n.d(C,"createStepper",()=>No)
n.d(j,"CLOCK_PER_SECOND",()=>Do)
n.d(j,"CLOCK_TO_SECOND",()=>Co)
n.d(j,"clock",()=>jo)
n.d(j,"getTimestamp",()=>Ro)
n.d(j,"setTimeoutAsync",()=>$o)
n.d(j,"requestFrameUpdate",()=>Bo)
n.d(j,"cancelFrameUpdate",()=>Po)
n.d(j,"createTimer",()=>Fo)
n.d(j,"createStepper",()=>No)
var R={}

@@ -400,3 +400,3 @@ n.r(R)

n.d(R,"withTimeoutPromise",()=>Go)
n.d(R,"createInsideOutPromise",()=>Jo)
n.d(R,"createInsideOutPromise",()=>Yo)
var $={}

@@ -439,6 +439,6 @@ n.r($)

n.d(z,"getRouteParamAny",()=>As)
n.d(z,"getRouteParam",()=>Ss)
n.d(z,"getRouteParam",()=>Ms)
var U={}
n.r(U)
n.d(U,"compareString",()=>Ms)
n.d(U,"compareString",()=>Ss)
n.d(U,"compareStringLocale",()=>Ls)

@@ -448,4 +448,4 @@ n.d(U,"compareStringWithNumber",()=>Os)

n.r(q)
n.d(q,"parseSemVer",()=>js)
n.d(q,"compareSemVer",()=>Cs)
n.d(q,"parseSemVer",()=>Cs)
n.d(q,"compareSemVer",()=>js)
var Q={}

@@ -487,32 +487,32 @@ n.r(Q)

n.d(G,"Object",()=>H)
var Y={}
n.r(Y)
n.d(Y,"indentLine",()=>Js)
n.d(Y,"indentList",()=>Ws)
n.d(Y,"autoEllipsis",()=>Xs)
n.d(Y,"splitCamelCase",()=>ea)
n.d(Y,"joinCamelCase",()=>oa)
n.d(Y,"splitSnakeCase",()=>na)
n.d(Y,"joinSnakeCase",()=>sa)
n.d(Y,"splitKebabCase",()=>ra)
n.d(Y,"joinKebabCase",()=>aa)
n.d(Y,"escapeHTML",()=>la)
n.d(Y,"unescapeHTML",()=>ya)
n.d(Y,"removeInvalidCharXML",()=>ma)
var J={}
n.r(J)
n.d(J,"indentLine",()=>Ys)
n.d(J,"indentList",()=>Ws)
n.d(J,"autoEllipsis",()=>Xs)
n.d(J,"splitCamelCase",()=>ea)
n.d(J,"joinCamelCase",()=>oa)
n.d(J,"splitSnakeCase",()=>na)
n.d(J,"joinSnakeCase",()=>sa)
n.d(J,"splitKebabCase",()=>ra)
n.d(J,"joinKebabCase",()=>aa)
n.d(J,"escapeHTML",()=>la)
n.d(J,"unescapeHTML",()=>ya)
n.d(J,"removeInvalidCharXML",()=>ma)
var Y={}
n.r(Y)
n.d(Y,"Data",()=>y)
n.d(Y,"Geometry",()=>A)
n.d(Y,"Immutable",()=>D)
n.d(Y,"Math",()=>j)
n.d(Y,"Module",()=>K)
n.d(Y,"Mutable",()=>G)
n.d(Y,"Check",()=>L)
n.d(Y,"Compare",()=>U)
n.d(Y,"Error",()=>u)
n.d(Y,"Format",()=>O)
n.d(Y,"Function",()=>R)
n.d(Y,"String",()=>J)
n.d(Y,"Time",()=>C)
n.d(Y,"Verify",()=>T)
n.d(J,"Data",()=>y)
n.d(J,"Geometry",()=>A)
n.d(J,"Immutable",()=>D)
n.d(J,"Math",()=>C)
n.d(J,"Module",()=>K)
n.d(J,"Mutable",()=>G)
n.d(J,"Check",()=>L)
n.d(J,"Compare",()=>U)
n.d(J,"Error",()=>u)
n.d(J,"Format",()=>O)
n.d(J,"Function",()=>R)
n.d(J,"String",()=>Y)
n.d(J,"Time",()=>j)
n.d(J,"Verify",()=>T)
var W={}

@@ -526,3 +526,3 @@ n.r(W)

n.r(X)
n.d(X,"packBlobPacket",()=>Ma)
n.d(X,"packBlobPacket",()=>Sa)
n.d(X,"parseBlobPacket",()=>La)

@@ -541,3 +541,3 @@ var Z={}

n.d(et,"ENHANCED_POINTER_EVENT_TYPE",()=>Da)
n.d(et,"applyEnhancedPointerEventListener",()=>ja)
n.d(et,"applyEnhancedPointerEventListener",()=>Ca)
var nt={}

@@ -549,3 +549,3 @@ n.r(nt)

n.r(rt)
n.d(rt,"createHistoryStateStore",()=>Ca)
n.d(rt,"createHistoryStateStore",()=>ja)
var ot={}

@@ -625,16 +625,16 @@ n.r(ot)

const At=new ArrayBuffer(0)
const St=t=>{const e=t.byteLength
if(e>bt)throw new Error(`[packArrayBufferPair] headerArrayBuffer exceeds max size ${bt} with size: ${e}`)
const Mt=t=>{const e=t.byteLength
if(e>bt)throw new Error(`headerArrayBuffer exceeds max size ${bt}, get: ${e}`)
const n=new DataView(new ArrayBuffer(Et))
n.setUint32(0,e,!1)
return[n.buffer,t]}
const Mt=t=>{const e=new DataView(t.slice(0,Et)).getUint32(0,!1)
const St=t=>{const e=new DataView(t.slice(0,Et)).getUint32(0,!1)
return[t.slice(Et,Et+e),Et+e]}
const Lt=(t,e=At)=>yt([...St(xt(t)),e])
const Ot=t=>{const[e,n]=Mt(t)
const Lt=(t,e=At)=>yt([...Mt(xt(t)),e])
const Ot=t=>{const[e,n]=St(t)
return[wt(e),t.slice(n)]}
const Tt=(t=[])=>{const e=new DataView(new ArrayBuffer(4*t.length))
t.forEach(({byteLength:t},n)=>e.setUint32(4*n,t,!1))
return yt([...St(e.buffer),...t])}
const kt=t=>{const[e,n]=Mt(t)
return yt([...Mt(e.buffer),...t])}
const kt=t=>{const[e,n]=St(t)
const r=new DataView(e)

@@ -646,3 +646,3 @@ const o=[]

return{clear:()=>t.clear(),subscribe:e=>{t.add(e)},unsubscribe:e=>{t.delete(e)},send:e=>t.forEach(t=>t(e))}}
const jt=()=>{const t=new Map
const Ct=()=>{const t=new Map
return{setMap:t,clear:()=>t.clear(),on:(e,n)=>{const r=t.get(e)

@@ -652,73 +652,73 @@ r?r.add(n):t.set(e,new Set([n]))},off:(e,n)=>{const r=t.get(e)

r&&0===r.size&&t.delete(e)}}}
const Ct=()=>{const{setMap:t,clear:e,on:n,off:r}=jt()
const jt=()=>{const{setMap:t,clear:e,on:n,off:r}=Ct()
return{clear:e,dispatchEvent:e=>{const n=t.get(e.type)
n&&n.forEach(t=>t(e))},addEventListener:n,removeEventListener:r}}
const Rt=()=>{const{setMap:t,clear:e,on:n,off:r}=jt()
const Rt=()=>{const{setMap:t,clear:e,on:n,off:r}=Ct()
return{clear:e,emit:(e,...n)=>{const r=t.get(e)
r&&r.forEach(t=>t(...n))},on:n,off:r,addListener:n,removeListener:r,removeAllListeners:(...e)=>{e.length?e.forEach(e=>t.delete(e)):t.clear()}}}
const $t=(t,e=null,n=null)=>({value:t,prev:e,next:n})
const Bt=()=>{let t,e,n
const r=()=>{t=new Set
e=$t(null)
n=$t(null)
e.next=n
n.prev=e}
const $t=()=>{let t,e,n
const r=()=>{t=Bt(null)
e=Bt(null)
t.next=e
e.prev=t
n=0}
r()
const o=(e,n)=>{const{next:r}=n
n.next=r.prev=e
e.prev=n
const o=(t,e)=>{const{next:r}=e
e.next=r.prev=t
t.prev=e
t.next=r
n++}
const s=(t,e)=>{const{prev:r}=e
e.prev=r.next=t
t.prev=r
t.next=e
n++}
const a=t=>{const{prev:e,next:r}=t
e.next=r
t.add(e)}
const s=(e,n)=>{const{prev:r}=n
n.prev=r.next=e
e.prev=r
e.next=n
t.add(e)}
const a=e=>{const{prev:n,next:r}=e
n.next=r
r.prev=n
e.prev=e.next=null
t.delete(e)}
return{clear:r,getHead:()=>e,getTail:()=>n,getLength:()=>t.size,insertAfter:o,insertBefore:s,remove:a,removeBetween:(e,n)=>{const{prev:r}=e
const{next:o}=n
r.prev=e
t.prev=t.next=null
n--}
return{clear:r,getHead:()=>t,getTail:()=>e,getLength:()=>n,insertAfter:o,insertBefore:s,remove:a,removeBetween:(t,e)=>{const{prev:r}=t
const{next:o}=e
r.next=o
o.prev=r
e.prev=n.next=null
let s=e
for(;s;){t.delete(s)
s=s.next}},forEach:t=>{let r=e.next
t.prev=e.next=null
let s=t
for(;s;){n--
s=s.next}},forEach:n=>{let r=t.next
let o=0
for(;r!==n;){t(r,o)
for(;r!==e;){n(r,o)
r=r.next
o++}},forEachReverse:r=>{let o=n.prev
let s=t.size-1
for(;o!==e;){r(o,s)
o++}},forEachReverse:r=>{let o=e.prev
let s=n-1
for(;o!==t;){r(o,s)
o=o.prev
s--}},reverse:()=>{let t=e.next
for(;t!==n;){const{prev:e,next:n}=t
t.prev=n
t.next=e
t=n}const{next:r}=e
const{prev:o}=n
e.next=o
n.prev=r
o.prev=e
r.next=n},setFirst:t=>{if(t===e.next)return
s--}},reverse:()=>{let n=t.next
for(;n!==e;){const{prev:t,next:e}=n
n.prev=e
n.next=t
n=e}const{next:r}=t
const{prev:o}=e
t.next=o
e.prev=r
o.prev=t
r.next=e},setFirst:e=>{if(e===t.next)return
const{prev:n,next:r}=e
n.next=r
r.prev=n
e.prev=t
e.next=t.next
t.next=e},setLast:t=>{if(t===e.prev)return
const{prev:n,next:r}=t
n.next=r
r.prev=n
t.prev=e
t.next=e.next
e.next=t},setLast:t=>{if(t===n.prev)return
const{prev:e,next:r}=t
e.next=r
r.prev=e
t.prev=n.prev
t.next=n
n.prev=t},push:t=>s(t,n),pop:()=>a(n.prev),unshift:t=>o(t,e),shift:()=>a(e.next)}}
const Pt=(t,e,n,r)=>Object.assign({},$t(e),{key:t,size:n,expireAt:r})
t.prev=e.prev
t.next=e
e.prev=t},push:t=>s(t,e),pop:()=>a(e.prev),unshift:e=>o(e,t),shift:()=>a(t.next)}}
const Bt=(t,e=null,n=null)=>({value:t,prev:e,next:n})
const Pt=(t,e,n,r)=>Object.assign({},Bt(e),{key:t,size:n,expireAt:r})
const Ft=({valueSizeSumMax:t,valueSizeSingleMax:e=Math.max(.05*t,1),eventHub:n=Dt()})=>{const r=Boolean(n)
const{clear:o,subscribe:s,unsubscribe:a,send:c}=r?n:{}
const i=new Map
const d=Bt()
const d=$t()
let u=0

@@ -805,3 +805,3 @@ const l=t=>{i.set(t.key,t)

e(o,r)}}}
const Jt=t=>{const e=async(e,n)=>{const r=await t(n)
const Yt=t=>{const e=async(e,n)=>{const r=await t(n)
Array.isArray(r)&&e.unshift(...r)}

@@ -813,3 +813,3 @@ return async(t,n)=>{let r

await e(o,r)}}}
const Yt=t=>{const e=(e,n)=>{const r=t(n)
const Jt=t=>{const e=(e,n)=>{const r=t(n)
Array.isArray(r)&&e.push(...r)}

@@ -900,5 +900,5 @@ return(t,n)=>{let r

return n>=0?n:n+ye}
const Se=(t,e,n)=>{const r=Math.atan2(t.y-n.y,t.x-n.x)-Math.atan2(t.y-e.y,t.x-e.x)
const Me=(t,e,n)=>{const r=Math.atan2(t.y-n.y,t.x-n.x)-Math.atan2(t.y-e.y,t.x-e.x)
return r>=0?r:r+ye}
const Me=(t,e)=>t.x*e.x+t.y*e.y
const Se=(t,e)=>t.x*e.x+t.y*e.y
const Le=(t,e)=>({x:t.x+e.x,y:t.y+e.y})

@@ -909,4 +909,4 @@ const Oe=(t,e)=>({x:t.x-e.x,y:t.y-e.y})

const De=({x:t,y:e},n)=>({x:t*n,y:e*n})
const je=(t,e)=>De(e,Me(t,e)/Math.pow(ve(e),2))
const Ce=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y)})
const Ce=(t,e)=>De(e,Se(t,e)/Math.pow(ve(e),2))
const je=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y)})
const Re=(t,e)=>({x:Math.max(t.x,e.x),y:Math.max(t.y,e.y)})

@@ -919,7 +919,7 @@ const $e=({x:t,y:e},n,r)=>({x:Math.max(Math.min(t,r.x),n.x),y:Math.max(Math.min(e,r.y),n.y)})

const Ie=()=>({min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0}})
const _e=(t,e)=>({min:Ce(t,e),max:Re(t,e)})
const _e=(t,e)=>({min:je(t,e),max:Re(t,e)})
const ze=({left:t,right:e,top:n,bottom:r})=>({min:{x:t,y:n},max:{x:e,y:r}})
const Ue=({min:t,max:e})=>({x:.5*(t.x+e.x),y:.5*(t.y+e.y)})
const qe=({min:t,max:e})=>({x:e.x-t.x,y:e.y-t.y})
const Qe=(t,e)=>({min:Ce(t.min,e.min),max:Re(t.max,e.max)})
const Qe=(t,e)=>({min:je(t.min,e.min),max:Re(t.max,e.max)})
const Ve=t=>t.reduce((t,{min:e,max:n})=>{t.min.x=Math.min(t.min.x,e.x)

@@ -933,4 +933,4 @@ t.min.y=Math.min(t.min.y,e.y)

const Ge=(t,e)=>t.min.x<=e.min.x&&t.max.x>=e.max.x&&t.min.y<=e.min.y&&t.max.y>=e.max.y
const Je=({min:t,max:e},{x:n,y:r})=>n>=t.x&&n<=e.x&&r>=t.y&&r<=e.y
const Ye=t=>Math.round(1e4*t)/1e4
const Ye=({min:t,max:e},{x:n,y:r})=>n>=t.x&&n<=e.x&&r>=t.y&&r<=e.y
const Je=t=>Math.round(1e4*t)/1e4
const We=(t,e)=>Math.sign(t)*Math.max(0,Math.abs(t)+e)

@@ -954,3 +954,3 @@ const Xe=(t,e)=>(t%e+e)%e

const fn=t=>t.center.y+.5*dn(t)
const pn=t=>Object.assign({},t,{center:Pe(t.center),size:Pe(t.size),rotate:Ye(t.rotate)})
const pn=t=>Object.assign({},t,{center:Pe(t.center),size:Pe(t.size),rotate:Je(t.rotate)})
const yn=({center:t,rotate:e},{x:n,y:r})=>{const o=n-t.x

@@ -981,4 +981,4 @@ const s=r-t.y

return r}
const Sn=(t,e)=>e>=0&&e<=t.length-1?[...t.slice(0,e),...t.slice(e+1)]:t
const Mn=(t,e,n)=>[...t.slice(0,e),n,...t.slice(e)]
const Mn=(t,e)=>e>=0&&e<=t.length-1?[...t.slice(0,e),...t.slice(e+1)]:t
const Sn=(t,e,n)=>[...t.slice(0,e),n,...t.slice(e)]
const Ln=(t,e,n)=>n===e?t:n<e?[...t.slice(0,n),...t.slice(n+1,e+1),t[n],...t.slice(e+1)]:[...t.slice(0,e),t[n],...t.slice(e,n),...t.slice(n+1)]

@@ -995,4 +995,4 @@ const On=(t,e)=>[...t,e]

return e}
const jn=(t,e)=>e&&e.length?[...t,...e]:t
const Cn=(t,e)=>t.includes(e)?t:[...t,e]
const Cn=(t,e)=>e&&e.length?[...t,...e]:t
const jn=(t,e)=>t.includes(e)?t:[...t,e]
const Rn=(t,e)=>{const n=t.indexOf(e)

@@ -1040,4 +1040,4 @@ return~n?[...t.slice(0,n),...t.slice(n+1)]:t}

const Gn=t=>"string"==typeof t
const Jn=t=>"boolean"==typeof t
const Yn=t=>"number"==typeof t
const Yn=t=>"boolean"==typeof t
const Jn=t=>"number"==typeof t
const Wn=Number.isInteger

@@ -1100,4 +1100,4 @@ const Xn=t=>{const e=typeof t

const Ar=Er("String",Gn)
const Sr=Er("Boolean",Jn)
const Mr=Er("Number",Yn)
const Mr=Er("Boolean",Yn)
const Sr=Er("Number",Jn)
const Lr=Er("Integer",Wn)

@@ -1108,4 +1108,4 @@ const Or=Er("ObjectAlike",Xn)

const Dr=(t,e,n)=>er(t,e)||br("ObjectContain",n,`expect to contain: ${lr(e)}`)
const jr=Er("Array",nr)
const Cr=(t,e,n)=>rr(t,e)||br("ArrayLength",n,`expect length: ${e}, get: ${nr(t)?t.length:lr(t)}`)
const Cr=Er("Array",nr)
const jr=(t,e,n)=>rr(t,e)||br("ArrayLength",n,`expect length: ${e}, get: ${nr(t)?t.length:lr(t)}`)
const Rr=Er("Function",or)

@@ -1125,4 +1125,3 @@ const $r=Er("PromiseAlike",sr)

let e=[]
return{subscribe:t=>{e=Cn(e,t)},unsubscribe:t=>{e=Rn(e,t)},getState:()=>t,setState:n=>{Tr(n,"state should be basic Object")
if((n=qn(t,n))===t)return t
return{subscribe:t=>{e=jn(e,t)},unsubscribe:t=>{e=Rn(e,t)},getState:()=>t,setState:n=>{if((n=qn(t,n))===t)return t
const r=t

@@ -1140,10 +1139,6 @@ t=n

const u=()=>i?c:s()
const l=t=>{Tr(t,"action should be basic Object")
return i?(t=>{if(d)throw new Error(`got reducer caused dispatching, action: ${JSON.stringify(t)}`)
e(h,t)
c=n(c,t)
Tr(c,"reducer should return basic Object state")})(t):(t=>{c=s()
const l=t=>i?(t=>{e(h,t)
c=n(c,t)})(t):(t=>{c=s()
i=!0
e(h,t)
if(!c)throw new Error(`dispatchingState after enhancer is invalid, get: ${JSON.stringify(c)}`)
i=!1

@@ -1154,3 +1149,3 @@ d=!0

c=null
a(r)})(t)}
a(r)})(t)
const h={getState:u,dispatch:l}

@@ -1163,3 +1158,3 @@ return{subscribe:r,unsubscribe:o,getState:u,dispatch:l}}

return()=>n(t)}})}
const Jr=t=>{const e=Object.keys(t)
const Yr=t=>{const e=Object.keys(t)
const n=e.length

@@ -1173,3 +1168,3 @@ return(r,o)=>{const s={}

a=a||d!==i}return a?s:r}}
const Yr=t=>(e,n)=>{const r=t[n.type]
const Jr=t=>(e,n)=>{const r=t[n.type]
return r&&r(e,n)}

@@ -1215,4 +1210,4 @@ const Wr=(t,{getState:e,setState:n})=>(r,{type:o,payload:s})=>{o===t&&n(s)

const Ao=t=>1-Math.sqrt(1-t*t)
const So=t=>Math.sqrt((2-t)*t)
const Mo=t=>t<.5?.5-Math.sqrt(.25-t*t):Math.sqrt(t*(2-t)-.75)+.5
const Mo=t=>Math.sqrt((2-t)*t)
const So=t=>t<.5?.5-Math.sqrt(.25-t*t):Math.sqrt(t*(2-t)-.75)+.5
var Lo=n(1)

@@ -1225,4 +1220,4 @@ const Oo=(t,e)=>{const n=[]

const Do=1e3
const jo=1/Do
const Co=(()=>{try{const{performance:t}=ht.c
const Co=1/Do
const jo=(()=>{try{const{performance:t}=ht.c
const e=()=>t.now()

@@ -1233,3 +1228,3 @@ if(e()<=e())return e}catch(t){}try{const{process:t}=ht.c

if(e()<=e())return e}catch(t){}return Date.now})()
const Ro=()=>Math.floor(Date.now()*jo)
const Ro=()=>Math.floor(Date.now()*Co)
const $o=(t=0)=>new Promise(e=>setTimeout(e,t))

@@ -1246,3 +1241,3 @@ const[Bo,Po]=ht.c.requestAnimationFrame?[ht.c.requestAnimationFrame,ht.c.cancelAnimationFrame]:[t=>setTimeout(t,1e3/60),clearTimeout]

a()}}}}
const No=(t=Co())=>()=>{const e=Co()
const No=(t=jo())=>()=>{const e=jo()
const n=e-t

@@ -1279,6 +1274,6 @@ t=e

const Qo=async(t,e=0,n=0)=>{let r=0
for(;e>r;){const o=Co()
for(;e>r;){const o=jo()
await t(r,e)
r++
const s=n-(Co()-o)
const s=n-(jo()-o)
s>0&&await $o(s)}}

@@ -1288,5 +1283,5 @@ const Vo=(t,e=1/0)=>{let n=0

const Ko=async(t,e=1/0,n=0)=>{let r=0
for(;;){const o=Co()
for(;;){const o=jo()
try{return await t(r,e)}catch(t){if(e<++r)throw t
const s=n-(Co()-o)
const s=n-(jo()-o)
s>0&&await $o(s)}}}

@@ -1298,3 +1293,3 @@ const Ho=(t,e)=>Go(t(),e)

throw t})}
const Jo=()=>{let t,e
const Yo=()=>{let t,e
return{promise:new Promise((n,r)=>{t=n

@@ -1306,8 +1301,8 @@ e=r}),resolve:n=>{const r=t

r&&r(n)}}}
const Yo=(t=0,e=!0)=>({A:()=>t,B:()=>++t,C:()=>--t,D:()=>e,E:()=>e=!1})
const Wo=(t=(t=>{}))=>{let e=Yo()
const Jo=(t=0,e=!0)=>({A:()=>t,B:()=>++t,C:()=>--t,D:()=>e,E:()=>e=!1})
const Wo=(t=(t=>{}))=>{let e=Jo()
let n=Promise.resolve("QUEUE_HEAD")
return{reset:()=>{e.E()
e=Yo()
n=Promise.resolve("QUEUE_HEAD")},getLength:()=>e.A(),pushTask:r=>{const{promise:o,resolve:s}=Jo()
e=Jo()
n=Promise.resolve("QUEUE_HEAD")},getLength:()=>e.A(),pushTask:r=>{const{promise:o,resolve:s}=Yo()
const a=n.then(r)

@@ -1319,3 +1314,3 @@ a.catch(t).then(()=>{e.C()

return a}}}
const Xo=({laneSize:t,selectLane:e=Zo})=>{if(!((t=Number(t))>=1))throw new Error(`[createTaskLane] invalid laneSize: ${t}`)
const Xo=({laneSize:t,selectLane:e=Zo})=>{if(!((t=Number(t))>=1))throw new Error(`invalid laneSize: ${t}`)
const n=[]

@@ -1361,6 +1356,6 @@ for(let e=0;e<t;e++)n.push({index:e,infoQueue:[],taskQueue:Wo()})

const ds=({keyCount:t})=>{const e={}
return{set:(n,r)=>r.forEach(r=>{if(t!==r.length)throw new Error(`[set] invalid keySelectorList length: ${r.length}, expect: ${t}`)
is(...r).forEach(t=>{if(e[t])throw new Error(`[set] duplicate switchKey: ${t}`)
e[t]=n})}),get:(...n)=>{if(t!==n.length)throw new Error(`[get] invalid keyCount: ${n.length}, expect: ${t}`)
return e[cs(...n)]},verifyFull:(...n)=>{if(t!==n.length)throw new Error(`[verifyFull] invalid keyCount: ${n.length}, expect: ${t}`)
return{set:(n,r)=>r.forEach(r=>{if(t!==r.length)throw new Error(`invalid keySelectorList length: ${r.length}, expect: ${t}`)
is(...r).forEach(t=>{if(e[t])throw new Error(`duplicate switchKey: ${t}`)
e[t]=n})}),get:(...n)=>{if(t!==n.length)throw new Error(`invalid keyCount: ${n.length}, expect: ${t}`)
return e[cs(...n)]},verifyFull:(...n)=>{if(t!==n.length)throw new Error(`invalid keyCount: ${n.length}, expect: ${t}`)
const r=is(...n)

@@ -1404,3 +1399,3 @@ const o=Object.keys(e)

return ms(t,"/*")}if(":"===r[0]){const o=r.slice(1)
if(!o||n.includes(o))throw new Error(`[parseRouteToMap] invalid frag [${r}] for route: ${e}`)
if(!o||n.includes(o))throw new Error(`invalid frag [${r}] for route: ${e}`)
n.push(o)

@@ -1418,3 +1413,3 @@ return ms(t,"/:PARAM")}return ms(t,r)},t),paramNameList:n}}

const{routeNode:r,paramNameList:o}=vs(t,e)
if(r["/DATA"])throw new Error(`[appendRouteMap] duplicate route: ${e}`)
if(r["/DATA"])throw new Error(`duplicate route: ${e}`)
r["/DATA"]={route:e,paramNameList:o,data:n}

@@ -1431,4 +1426,4 @@ return t}

const As=({paramMap:t})=>t["/*"]
const Ss=({paramMap:t},e)=>t[e]
const Ms=(t,e)=>t<e?-1:t>e?1:0
const Ms=({paramMap:t},e)=>t[e]
const Ss=(t,e)=>t<e?-1:t>e?1:0
const Ls=(t,e)=>t.localeCompare(e)

@@ -1451,10 +1446,10 @@ const Os=(t="",e="")=>{if(t===e)return 0

const Ds=/^(\d+)\.(\d+)\.(\d+)(.*)$/
const js=t=>{let[,e,n,r,o=""]=Ds.exec(t)
const Cs=t=>{let[,e,n,r,o=""]=Ds.exec(t)||[]
e=parseInt(e)
n=parseInt(n)
r=parseInt(r)
if(isNaN(e)||isNaN(n)||isNaN(r))throw new Error(`[parseSemVer] invalid versionString: ${t}`)
if(isNaN(e)||isNaN(n)||isNaN(r))throw new Error(`invalid version: ${t}`)
return{major:e,minor:n,patch:r,label:o}}
const Cs=(t,e)=>{const n=js(t)
const r=js(e)
const js=(t,e)=>{const n=Cs(t)
const r=Cs(e)
return n.major-r.major||n.minor-r.minor||n.patch-r.patch||Rs(n.label,r.label)}

@@ -1505,3 +1500,3 @@ const Rs=(t,e)=>t===e?0:e.startsWith(t)?1:t.startsWith(e)?-1:Os(t,e)

const o=e-r
const s=t=>t(o*jo)
const s=t=>t(o*Co)
r=e

@@ -1520,5 +1515,5 @@ t.length&&(t=t.filter(s))

return t}
const Js=/\n/g
const Ys=(t,e=" ",n=e)=>`${n}${t.replace(Js,`\n${e}`)}`
const Ws=(t,e=[],n=" - ",r=" ".repeat(n.length))=>[t,...e.map(t=>Ys(t,r,n))].join("\n")
const Ys=/\n/g
const Js=(t,e=" ",n=e)=>`${n}${t.replace(Ys,`\n${e}`)}`
const Ws=(t,e=[],n=" - ",r=" ".repeat(n.length))=>[t,...e.map(t=>Js(t,r,n))].join("\n")
const Xs=(t="",e=64,n=32,r=16)=>t.length>e?`${t.slice(0,n)}...${r>0?t.slice(-r):""} (+${t.length-n-r})`:t

@@ -1552,4 +1547,4 @@ const Zs=/[^A-Z]/

const Aa=xa("readAsArrayBuffer")
const Sa=new va
const Ma=(t,e=Sa)=>new va([...St(xt(t)),e])
const Ma=new va
const Sa=(t,e=Ma)=>new va([...Mt(xt(t)),e])
const La=async t=>{const e=new DataView(await Aa(t.slice(0,Et))).getUint32(0,!1)

@@ -1588,3 +1583,3 @@ return[wt(await Aa(t.slice(Et,Et+e))),t.slice(Et+e)]}

const f=s&&window.TouchEvent?t=>t instanceof window.TouchEvent?t.touches.length?{x:t.touches[0].clientX,y:t.touches[0].clientY}:{x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY}:{x:t.clientX,y:t.clientY}:t=>({x:t.clientX,y:t.clientY})
const p=t=>{if(t!==u){const e=Co()
const p=t=>{if(t!==u){const e=jo()
const n=f(t)

@@ -1594,3 +1589,3 @@ u=t

const y=s&&window.TouchEvent?t=>t instanceof window.TouchEvent?"touchend"===t.type||"touchcancel"===t.type?0!==t.touches.length:1!==t.touches.length:!t.isPrimary||"touch"===t.pointerType:t=>!t.isPrimary
const g=t=>{if(!y(t)){c=Co()
const g=t=>{if(!y(t)){c=jo()
i=f(t)

@@ -1621,3 +1616,3 @@ d=t

const Da={TAP:"TAP",HOLD:"HOLD",DRAG_MOVE:"DRAG_MOVE",DRAG_END:"DRAG_END",DRAG_CANCEL:"DRAG_CANCEL"}
const ja=t=>{let{onEnhancedEvent:e,onEvent:n,holdDurationThreshold:r=500,dragDistanceThreshold:o=5}=t,s=function(t,e){if(null==t)return{}
const Ca=t=>{let{onEnhancedEvent:e,onEvent:n,holdDurationThreshold:r=500,dragDistanceThreshold:o=5}=t,s=function(t,e){if(null==t)return{}
var n={}

@@ -1637,3 +1632,3 @@ var r=Object.keys(t)

case Ta.CANCEL:a&&e(Da.DRAG_CANCEL,i)}n&&n(t,s,c)}},s))}
const Ca=(t=window.location.href)=>{const e=(e,n)=>{if("string"!=typeof e)throw new Error(`[createHistoryStateStore] unexpected non-string href: ${e}`)
const ja=(t=window.location.href)=>{const e=(e,n)=>{if("string"!=typeof e)throw new Error(`non-string href: ${e}`)
if(e===t)return t

@@ -1648,3 +1643,3 @@ const r=t

const o=new Set
return{getState:()=>{if(0===o.size)throw new Error("[createHistoryStateStore] should not getState before subscribe")
return{getState:()=>{if(0===o.size)throw new Error("should subscribe before getState")
return t},setState:e,subscribe:t=>{o.add(t)

@@ -1736,3 +1731,3 @@ if(1===o.size){window.addEventListener("popstate",n)

const Ha=t=>JSON.parse(t)
const{fetch:Ga,navigator:Ja,caches:Ya,URL:Wa,Blob:Xa,Request:Za,Response:tc}=window
const{fetch:Ga,navigator:Ya,caches:Ja,URL:Wa,Blob:Xa,Request:Za,Response:tc}=window
const ec=(t,e={})=>Object.assign(document.createElement(t),e)

@@ -1746,3 +1741,3 @@ const nc=async t=>(await Ga(t)).text()

document.body.removeChild(n)}
const ac=(t,e)=>{if(Ja.msSaveOrOpenBlob)return Ja.msSaveOrOpenBlob(e,t)
const ac=(t,e)=>{if(Ya.msSaveOrOpenBlob)return Ya.msSaveOrOpenBlob(e,t)
const n=Wa.createObjectURL(e)

@@ -1753,14 +1748,14 @@ sc(t,n)

const ic=(t,e,n=ps.json)=>cc(t,JSON.stringify(e),n)
const dc=async(t,e,n)=>{const r=await Ya.open(t)
const dc=async(t,e,n)=>{const r=await Ja.open(t)
await r.put(new Za(e),new tc(n))
return{bucketName:t,key:e}}
const uc=async(t,e)=>{const n=await Ya.open(t)
const uc=async(t,e)=>{const n=await Ja.open(t)
const r=await n.match(new Za(e))
return r&&r.arrayBuffer()}
const lc=async(t,e)=>{if(!e)return Ya.delete(t)
const n=await Ya.open(t)
const lc=async(t,e)=>{if(!e)return Ja.delete(t)
const n=await Ja.open(t)
return n&&n.delete(new Za(e))}
n.d(e,"Env",()=>r)
n.d(e,"Common",()=>Y)
n.d(e,"Common",()=>J)
n.d(e,"Browser",()=>dt)}])},"object"==typeof exports&&"object"==typeof module?module.exports=factory():"function"==typeof define&&define.amd?define([],factory):"object"==typeof exports?exports.Dr=factory():root.Dr=factory()
var root,factory

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

const a=async(a,r)=>{void 0===r&&(r=await(0,e.getPathStat)(a))
if(!r.isDirectory())throw new Error(`[getDirectorySubInfoList] error pathType: ${(0,e.getPathTypeFromStat)(r)} for ${a}`)
if(!r.isDirectory())throw new Error(`error pathType: ${(0,e.getPathTypeFromStat)(r)} for ${a}`)
const s=[]

@@ -51,3 +51,3 @@ for(const r of await(0,o.readdirAsync)(a)){const o=(0,t.join)(a,r)

break
default:throw new Error(`[getFileList] 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)
var r=require("fs")
var t=require("path")
var e=require("./function")
const i=new r.Stats(-1,-1,0,-1,-1,-1,0,0,0,0,0,0,0,0)
exports.ERROR_STAT=i
var i=require("./function")
const e=new r.Stats(-1,-1,0,-1,-1,-1,0,0,0,0,0,0,0,0)
exports.ERROR_STAT=e
const o={File:"File",Directory:"Directory",Other:"Other",Error:"Error"}
exports.FILE_TYPE=o
const a=r=>i
const a=r=>e
const c=r=>{if(r&&r.code===n)return n
throw r}
const n="ENOTEMPTY"
const s=r=>(0,e.statAsync)(r).catch(a)
const s=r=>(0,i.statAsync)(r).catch(a)
exports.getPathStat=s
exports.getPathTypeFromStat=(r=>r.isDirectory()?o.Directory:r.isFile()?o.File:r!==i?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))
if(!o.isDirectory()){if(o!==i)throw new Error(`[createDirectory] path already taken by non-directory: ${r}`)
if(!o.isDirectory()){if(o!==e)throw new Error(`path already taken by non-directory: ${r}`)
await y((0,t.dirname)(r))
await(0,e.mkdirAsync)(r)}}
await(0,i.mkdirAsync)(r)}}
exports.createDirectory=y
const h=async(r,o=1,a)=>{if(o){void 0===a&&(a=await s(r))
if(a!==i){if(!a.isDirectory())throw new Error(`[trimDirectory] path taken by non-directory: ${r}`)
if(await(0,e.rmdirAsync)(r).catch(c)===n)return}await h((0,t.dirname)(r),o-1)}}
if(a!==e){if(!a.isDirectory())throw new Error(`path taken by non-directory: ${r}`)
if(await(0,i.rmdirAsync)(r).catch(c)===n)return}await h((0,t.dirname)(r),o-1)}}
exports.trimDirectory=h
exports.movePath=(async(r,t,o)=>{void 0===o&&(o=await s(r))
if(o===i)throw new Error(`[movePath] missing path from ${r}`)
return(0,e.renameAsync)(r,t)})
exports.copyPath=(async(r,t,i)=>{void 0===i&&(i=await s(r))
return(!i.isDirectory()||!(await s(t)).isDirectory())&&(i.isDirectory()?(0,e.mkdirAsync)(t):(0,e.copyFileAsync)(r,t))})
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,e.rmdirAsync)(r):(0,e.unlinkAsync)(r)})
return t.isDirectory()?(0,i.rmdirAsync)(r):(0,i.unlinkAsync)(r)})

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

exports.statAsync=n
const[A,f,F,P]=[r.constants.F_OK,r.constants.R_OK,r.constants.W_OK,r.constants.X_OK].map(e=>t=>new Promise(s=>(0,r.access)(t,e,e=>s(!e))))
const[A,F,f,P]=[r.constants.F_OK,r.constants.R_OK,r.constants.W_OK,r.constants.X_OK].map(e=>t=>new Promise(s=>(0,r.access)(t,e,e=>s(!e))))
exports.executableAsync=P
exports.writableAsync=F
exports.readableAsync=f
exports.writableAsync=f
exports.readableAsync=F
exports.visibleAsync=A

@@ -30,3 +30,3 @@ exports.nearestExistAsync=(async r=>{for(;r&&!await A(r);)r=(0,e.dirname)(r)

return t=>{const s=(0,e.resolve)(r,t)
if(!s.startsWith(r))throw new Error(`[PathPrefixLock] invalid relativePath: ${t}`)
if(!s.startsWith(r))throw new Error(`invalid relativePath: ${t}`)
return s}})

@@ -33,0 +33,0 @@ const h=(e,r)=>new Promise((t,n)=>{const a=(0,s.createInterface)({input:e,historySize:0,crlfDelay:1/0})

@@ -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:I=s,nameFactCacheFile:y=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={}

@@ -21,9 +21,9 @@ var c=Object.keys(t)

e.indexOf(i)>=0||(a[i]=t[i])}return a}(e,["initialFactInfo","initialState","applyFact","encodeFact","decodeFact","pathFactDirectory","nameFactLogFile","nameFactCacheFile","onError"])
void 0===c&&(c=await d(Object.assign({},F,{factState:n}),{applyFact:u,decodeFact:p,pathFactDirectory:g,nameFactLogFile:I,nameFactCacheFile:y}))
void 0===c&&(c=await d(Object.assign({},F,{factState:n}),{applyFact:u,decodeFact:p,pathFactDirectory:g,nameFactLogFile:y,nameFactCacheFile:I}))
let b=!0
let L=c.factId||0
let v=c.factCacheFile||""
const{getState:w,setState:A,subscribe:C,unsubscribe:E}=(0,i.createStateStore)(c.factState)
const O=await(0,o.createLogger)(Object.assign({},S,{pathLogDirectory:g,getLogFileName:()=>`${I}.${L+1}.log`,onError:m}))
const{trigger:D,getRunningPromise:N}=(0,a.lossyAsync)(async()=>{const e=(0,t.join)(g,`${y}.${L}.json`)
const{getState:w,setState:C,subscribe:A,unsubscribe:O}=(0,i.createStateStore)(c.factState)
const D=await(0,o.createLogger)(Object.assign({},S,{pathLogDirectory:g,getLogFileName:()=>`${y}.${L+1}.log`,onError:m}))
const{trigger:j,getRunningPromise:x}=(0,a.lossyAsync)(async()=>{const e=(0,t.join)(g,`${I}.${L}.json`)
if(v===e)return

@@ -34,10 +34,10 @@ const a=JSON.stringify({factId:L,factState:w()})

v=e},m)
return{getState:w,getIsActive:()=>b,getSaveFactCachePromise:N,subscribe:C,unsubscribe:E,add:t=>{if(b){if(L>=Number.MAX_SAFE_INTEGER)throw new Error(`[FactDatabase] factId is Number.MAX_SAFE_INTEGER: ${L}`)
return{getState:w,getIsActive:()=>b,getSaveFactCachePromise:x,subscribe:A,unsubscribe:O,add:t=>{if(b){if(L>=Number.MAX_SAFE_INTEGER)throw new Error(`factId is too big: ${L}`)
t.id=L+1
L++
O.add(h(t))
A(u(w(),t))}},save:()=>{b&&O.save()},split:()=>{if(b){O.split()
D()}},end:()=>{if(b){b=!1
O.end()
D()}}}})
D.add(h(t))
C(u(w(),t))}},save:()=>{b&&D.save()},split:()=>{if(b){D.split()
j()}},end:()=>{if(b){b=!1
D.end()
j()}}}})
const d=async(t,{applyFact:a,decodeFact:c,pathFactDirectory:i,nameFactLogFile:r,nameFactCacheFile:o})=>{const s=[]

@@ -44,0 +44,0 @@ const f=[]

var e=require("../../../common/data/CacheMap")
var t=require("../../../common/module/MIME")
var r=require("../../file/function")
var n=require("../../module/EntityTag")
var a=require("./Send")
var a=require("../../module/EntityTag")
var n=require("./Send")
const s=()=>(0,e.createCacheMap)({valueSizeSumMax:33554432})
exports.createResponderBufferCache=(({getBufferData:e,sizeSingleMax:t=i,expireTime:r=6e4,isEnableGzip:n=!1,serveCacheMap:o=s()})=>{const c=n?a.responderSendBufferCompress:a.responderSendBuffer
return async(n,a)=>{let s=o.get(a)
s||(s=await e(n,a)).length<=t&&o.set(a,s,s.length,Date.now()+r)
return c(n,s)}})
const i=524288
const o=/gzip/i
exports.createResponderServeStatic=(({sizeSingleMax:e=i,expireTime:c=6e4,isEnableGzip:p=!1,isEnableRange:g=!0,serveCacheMap:u=s()})=>{const f=async(e,t,r,n)=>{let s=u.get(t)
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
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)
if(!s)return!1
r&&e.response.setHeader("content-encoding",r)
if(n){n[1]===1/0&&(n[1]=s.length-1)
await(0,a.responderSendBufferRange)(e,s,n)}else await(0,a.responderSendBuffer)(e,s)
if(a){a[1]===1/0&&(a[1]=s.length-1)
await(0,n.responderSendBufferRange)(e,s,a)}else await(0,n.responderSendBuffer)(e,s)
return!0}
const l=async(t,s,i,o,d)=>{const p=await(0,r.statAsync)(s).catch(e=>{})
const f=async(t,s,i,o,d)=>{const p=await(0,r.statAsync)(s).catch(e=>{})
if(!p||!p.isFile())return!1
const g=p.size
const f=(0,n.getWeakEntityTagByStat)(p)
const u=p.size
const f=(0,a.getWeakEntityTagByStat)(p)
o&&t.response.setHeader("content-encoding",o)
if(d){d[1]===1/0&&(d[1]=g-1)
await(0,a.responderSendStreamRange)(t,{streamRange:(0,r.createReadStream)(s,{start:d[0],end:d[1]}),length:g,type:i,entityTag:f},d)}else if(g>e)await(0,a.responderSendStream)(t,{stream:(0,r.createReadStream)(s),length:g,type:i,entityTag:f})
else{const e={buffer:await(0,r.readFileAsync)(s),length:g,type:i,entityTag:f}
u.set(s,e,g,Date.now()+c)
await(0,a.responderSendBuffer)(t,e)}return!0}
return async(e,r)=>{const n=p&&o.test(e.request.headers["accept-encoding"])
const a=g&&d(e.request.headers.range)
g&&!n&&e.response.setHeader("accept-ranges","bytes")
if(n&&await f(e,r+".gz","gzip"))return
if(await f(e,r,void 0,a))return
if(d){d[1]===1/0&&(d[1]=u-1)
await(0,n.responderSendStreamRange)(t,{streamRange:(0,r.createReadStream)(s,{start:d[0],end:d[1]}),length:u,type:i,entityTag:f},d)}else if(u>e)await(0,n.responderSendStream)(t,{stream:(0,r.createReadStream)(s),length:u,type:i,entityTag:f})
else{const e={buffer:await(0,r.readFileAsync)(s),length:u,type:i,entityTag:f}
g.set(s,e,u,Date.now()+c)
await(0,n.responderSendBuffer)(t,e)}return!0}
return async(e,r)=>{const a=d&&i.test(e.request.headers["accept-encoding"])
const n=p&&o(e.request.headers.range)
p&&!a&&e.response.setHeader("accept-ranges","bytes")
if(a&&await u(e,r+".gz","gzip"))return
if(await u(e,r,void 0,n))return
const s=(0,t.getMIMETypeFromFileName)(r)
if(!(n&&await l(e,r+".gz",s,"gzip")||await l(e,r,s,void 0,a)))throw new Error(`[ServeStatic] 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
const o=e=>{const t=c.exec(e)
if(!t)return
const[,r,a]=t
const n=parseInt(r)
const s=a?parseInt(a):1/0
return n<s?[n,s]:void 0}
const c=/bytes=(\d+)-(\d+)?$/i
const d=e=>{const t=c.exec(e)
if(!t)return
const[,r,n]=t
const a=parseInt(r)
const s=n?parseInt(n):1/0
return a<s?[a,s]:void 0}

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

r.indexOf(n)>=0||(t[n]=e[n])}return t}(e,["protocol"])
if(!l.has(o))throw new Error(`[createServer] invalid protocol: ${o}`);(s=Object.assign({},"https:"===o?c:i,s)).baseUrl=`${o}//${s.hostname}:${s.port}`
if(!l.has(o))throw new Error(`invalid protocol: ${o}`);(s=Object.assign({},"https:"===o?c:i,s)).baseUrl=`${o}//${s.hostname}:${s.port}`
const a=s.isSecure?(0,t.createServer)(s):(0,r.createServer)()

@@ -20,0 +20,0 @@ s.isSecure&&(e=>{const r=(0,n.createCacheMap)({valueSizeSumMax:4096,eventHub:null})

@@ -21,3 +21,3 @@ var e=require("./function")

e.queuePromise(()=>n.then(t),s)}
const c=r=>{e.frameDecoder.pushBufferFrag(r)
const u=r=>{e.frameDecoder.pushBufferFrag(r)
for(;;){null===l&&a()

@@ -28,4 +28,4 @@ if(!e.frameDecoder.decode())break

f()}}}
r.on("data",c)
e.setClearSocketListener(()=>{r.off("data",c)
r.on("data",u)
e.setClearSocketListener(()=>{r.off("data",u)
f()})})

@@ -37,27 +37,27 @@ const t=r=>{const{pushBufferFrag:t,tryShiftMergedBuffer:l}=n()

let a=null
let c=!1
let u=null
let d=null
let i=0
let u=!1
let c=null
let i=null
let d=0
return{pushBufferFrag:t,decode:()=>{switch(f){case 0:if(o=l(2)){const e=o.readUInt16BE(0,!0)
const t=127&e
s=0!=(128&e)
c=8==(e>>>12&8)
u=e>>>8&15
if(0===t){i=0
f=s?3:5}else if(t<=125){if((i=t)>r)throw new Error(`[decode] dataBuffer length ${i} exceeds limit: ${r}`)
u=8==(e>>>12&8)
c=e>>>8&15
if(0===t){d=0
f=s?3:5}else if(t<=125){if((d=t)>r)throw new Error(`dataBuffer length ${d} exceeds limit: ${r}`)
f=s?3:4}else f=126===t?1:2
return!0}break
case 1:if(o=l(2)){if((i=o.readUInt16BE(0,!0))>r)throw new Error(`[decode] dataBuffer length ${i} exceeds limit: ${r}`)
case 1:if(o=l(2)){if((d=o.readUInt16BE(0,!0))>r)throw new Error(`dataBuffer length ${d} exceeds limit: ${r}`)
f=s?3:4
return!0}break
case 2:if(o=l(8)){if((i=4294967296*o.readUInt32BE(0,!0)+o.readUInt32BE(4,!0))>e.BUFFER_MAX_LENGTH)throw new Error("[decode] decodedDataBufferLength exceeds BUFFER_MAX_LENGTH")
if(i>r)throw new Error(`[decode] dataBuffer length ${i} exceeds limit: ${r}`)
case 2:if(o=l(8)){if((d=4294967296*o.readUInt32BE(0,!0)+o.readUInt32BE(4,!0))>e.BUFFER_MAX_LENGTH)throw new Error("decodedDataBufferLength too big")
if(d>r)throw new Error(`dataBuffer length ${d} exceeds limit: ${r}`)
f=s?3:4
return!0}break
case 3:if(o=l(4)){a=o
f=i?4:5
f=d?4:5
return!0}break
case 4:if(o=l(i)){d=o
s&&(0,e.applyMaskQuadletBufferInPlace)(d,a)
case 4:if(o=l(d)){i=o
s&&(0,e.applyMaskQuadletBufferInPlace)(i,a)
f=5

@@ -67,6 +67,6 @@ return!0}}return!1},resetDecode:()=>{f=0

a=null
c=!1
u=null
d=null
i=0},tryGetDecodedFrame:()=>5!==f?void 0:{isFIN:c,dataType:u,dataBuffer:d,dataBufferLength:i}}}
u=!1
c=null
i=null
d=0},tryGetDecodedFrame:()=>5!==f?void 0:{isFIN:u,dataType:c,dataBuffer:i,dataBufferLength:d}}}
const n=()=>{const e=[]

@@ -73,0 +73,0 @@ let r=0

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

const{length:u}=f
const m=c<<4|a&s
let F,i
if(u<=125){F=u
i=0}else if(u<=65535){F=126
i=2}else{if(!(u<=r.BUFFER_MAX_LENGTH))throw new Error("[encodeFrame] dataBuffer length exceeds BUFFER_MAX_LENGTH")
F=127
i=8}if(u>t.frameLengthLimit)throw new Error(`[encodeFrame] dataBuffer length ${u} exceeds limit: ${t.frameLengthLimit}`)
const l=d?4:0
const B=d&&u?(0,e.randomBytes)(4):n
d&&(F|=128)
t.encodedFrameHeaderBuffer=Buffer.allocUnsafe(2+i+l)
t.encodedFrameHeaderBuffer.writeUInt16BE(m<<8|F,0,!0)
2===i&&t.encodedFrameHeaderBuffer.writeUInt16BE(u,2,!0)
8===i&&t.encodedFrameHeaderBuffer.writeUInt32BE(0,2,!0)
8===i&&t.encodedFrameHeaderBuffer.writeUInt32BE(u,6,!0)
d&&B.copy(t.encodedFrameHeaderBuffer,2+i)
const i=c<<4|a&s
let m,l
if(u<=125){m=u
l=0}else if(u<=65535){m=126
l=2}else{if(!(u<=r.BUFFER_MAX_LENGTH))throw new Error("dataBuffer length too big")
m=127
l=8}if(u>t.frameLengthLimit)throw new Error(`dataBuffer length ${u} exceeds limit: ${t.frameLengthLimit}`)
const B=d?4:0
const F=d&&u?(0,e.randomBytes)(4):n
d&&(m|=128)
t.encodedFrameHeaderBuffer=Buffer.allocUnsafe(2+l+B)
t.encodedFrameHeaderBuffer.writeUInt16BE(i<<8|m,0,!0)
2===l&&t.encodedFrameHeaderBuffer.writeUInt16BE(u,2,!0)
8===l&&t.encodedFrameHeaderBuffer.writeUInt32BE(0,2,!0)
8===l&&t.encodedFrameHeaderBuffer.writeUInt32BE(u,6,!0)
d&&F.copy(t.encodedFrameHeaderBuffer,2+l)
t.encodedFrameDataBuffer=f
d&&u&&(0,r.applyMaskQuadletBufferInPlace)(t.encodedFrameDataBuffer,B)}
d&&u&&(0,r.applyMaskQuadletBufferInPlace)(t.encodedFrameDataBuffer,F)}
exports.encodeFrame=o

@@ -30,0 +30,0 @@ exports.encodeCloseFrame=((e,n=1e3,t="",a)=>{const f=Buffer.byteLength(t)

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

u.emit(r.WEBSOCKET_EVENT.CLOSE)}}
let B=null
let C=[]
let F=0
let C=null
let F=[]
let B=0
const g=e=>{switch(e.dataType){case r.OPCODE_TYPE.CLOSE:{const r=e.dataBufferLength>=2&&e.dataBuffer.readUInt16BE(0,!0)||1e3
const t=e.dataBufferLength>=3&&e.dataBuffer.slice(2,e.dataBufferLength).toString()||""
return S(r,t)}case r.OPCODE_TYPE.PING:return y(e.dataBuffer)
case r.OPCODE_TYPE.PONG:return p()}const t=(e=>{B||(B=e.dataType)
C.push(e.dataBuffer)
if((F+=e.dataBuffer.length)>c)throw new Error(`[WebSocket] frameBufferList length ${F} exceeds limit: ${c}`)
case r.OPCODE_TYPE.PONG:return p()}const t=(e=>{C||(C=e.dataType)
F.push(e.dataBuffer)
if((B+=e.dataBuffer.length)>c)throw new Error(`frameBufferList length ${B} exceeds limit: ${c}`)
if(!e.isFIN)return null
const r=B
const t=1===C.length?C[0]:Buffer.concat(C,F)
B=null
C=[]
F=0
const r=C
const t=1===F.length?F[0]:Buffer.concat(F,B)
C=null
F=[]
B=0
return{dataType:r,dataBuffer:t}})(e)

@@ -49,3 +49,3 @@ t&&u.emit(r.WEBSOCKET_EVENT.FRAME,t)

const S=(e=1e3,r="")=>{if(3!==O){if(2===O)return P()
if(1!==O&&2!==O)throw new Error(`[close] error readyState = ${O}`)
if(1!==O&&2!==O)throw new Error(`error readyState = ${O}`)
O=2

@@ -70,4 +70,4 @@ E=setTimeout(P,5e3);(0,t.encodeCloseFrame)(f,e,r,d)

O=1
u.emit(r.WEBSOCKET_EVENT.OPEN)},close:S,sendText:e=>{if(1!==O)throw new Error(`[sendBuffer] not open yet: readyState = ${O}`);(0,t.encodeFrame)(f,r.FRAME_CONFIG.COMPLETE,r.OPCODE_TYPE.TEXT,Buffer.from(e),d)
return(0,t.sendEncodedFrame)(f,s)},sendBuffer:e=>{if(1!==O)throw new Error(`[sendBuffer] not open yet: readyState = ${O}`);(0,t.encodeFrame)(f,r.FRAME_CONFIG.COMPLETE,r.OPCODE_TYPE.BINARY,e,d)
u.emit(r.WEBSOCKET_EVENT.OPEN)},close:S,sendText:e=>{if(1!==O)throw new Error(`not open yet: readyState = ${O}`);(0,t.encodeFrame)(f,r.FRAME_CONFIG.COMPLETE,r.OPCODE_TYPE.TEXT,Buffer.from(e),d)
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})})

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

const n=(e,o,t)=>e.doCloseSocket()
exports.createWebSocketClient=(({urlString:i,option:{key:a,headers:p,origin:d="",requestProtocolString:l=""}={},onError:w,onUpgradeResponse:k=n,frameLengthLimit:h})=>{const S=new URL(i)
if(!s.has(S.protocol))throw new Error(`[WebSocketClient] invalid url protocol: ${S.protocol}`)
if(!S.host)throw new Error(`[WebSocketClient] invalid url host: ${S.host}`)
const g=c.has(S.protocol)
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}`)
if(!u.host)throw new Error(`invalid url host: ${u.host}`)
const k=c.has(u.protocol)
const b=a||(0,t.getRequestKey)()
const u=(0,t.getRespondKey)(b)
S.protocol=g?"https:":"http:"
const C=(g?o.get:e.get)(S,{headers:Object.assign({origin:d,upgrade:"websocket",connection:"upgrade","sec-websocket-version":t.WEBSOCKET_VERSION,"sec-websocket-key":b,"sec-websocket-protocol":l},p)})
C.on("error",e=>{if(!C.aborted){C.abort()
w(e)}})
C.on("response",e=>{C.abort()
w(new Error("[WebSocketClient] unexpected response"))})
C.on("upgrade",async(e,o,t)=>{const s=(0,r.createWebSocket)({socket:o,frameLengthLimit:h,isMask:!0})
s.origin=d
s.isSecure=g
await k(s,e,t)
s.isClosed()||((e,o,t,r)=>{if(e.getReadyState()!==e.CONNECTING)throw new Error(`[WebSocketClient][doUpgradeSocket] error readyState ${e.getReadyState()}`)
if(t!==o.headers["sec-websocket-accept"])throw new Error("[WebSocketClient][doUpgradeSocket] wrong sec-websocket-accept")
const S=(0,t.getRespondKey)(b)
u.protocol=k?"https:":"http:"
const E=(k?o.get:e.get)(u,{headers:Object.assign({origin:w,upgrade:"websocket",connection:"upgrade","sec-websocket-version":t.WEBSOCKET_VERSION,"sec-websocket-key":b,"sec-websocket-protocol":h},p)})
E.on("error",e=>{if(!E.aborted){E.abort()
d(e)}})
E.on("response",e=>{E.abort()
d(new Error("unexpected response"))})
E.on("upgrade",async(e,o,t)=>{const s=(0,r.createWebSocket)({socket:o,frameLengthLimit:g,isMask:!0})
s.origin=w
s.isSecure=k
await l(s,e,t)
s.isClosed()||((e,o,t,r)=>{if(e.getReadyState()!==e.CONNECTING)throw new Error(`error readyState ${e.getReadyState()}`)
if(t!==o.headers["sec-websocket-accept"])throw new Error("wrong sec-websocket-accept")
const s=o.headers["sec-websocket-protocol"]
if(!r.split(/, */).includes(s))throw new Error(`[WebSocketClient][doUpgradeSocket] unexpected protocol ${s}`)
if(!r.split(/, */).includes(s))throw new Error(`unexpected protocol ${s}`)
e.protocol=s
e.open()})(s,e,u,l)})})
e.open()})(s,e,S,h)})})

@@ -14,10 +14,10 @@ var e=require("./function")

if(a.isClosed())return
const p=await s(a,r,i)
if(!a.isClosed()){if(!p)return a.doCloseSocket(new Error("no selected protocol"));((e,o,r)=>{if(e.getReadyState()!==e.CONNECTING)throw new Error(`[WebSocketServer][doUpgradeSocket] error readyState ${e.getReadyState()}`)
if(o&&!e.protocolList.includes(o))throw new Error(`[WebSocketServer][doUpgradeSocket] unexpected protocol ${o}`)
const l=await s(a,r,i)
if(!a.isClosed()){if(!l)return a.doCloseSocket(new Error("no selected protocol"));((e,o,r)=>{if(e.getReadyState()!==e.CONNECTING)throw new Error(`error readyState ${e.getReadyState()}`)
if(o&&!e.protocolList.includes(o))throw new Error(`unexpected protocol ${o}`)
e.protocol=o
e.open()
e.socket.write(["HTTP/1.1 101 Switching Protocols","upgrade: websocket","connection: upgrade",`sec-websocket-accept: ${r}`,o&&`sec-websocket-protocol: ${o}`,"\r\n"].filter(Boolean).join("\r\n"))})(a,p,d)
e.socket.write(["HTTP/1.1 101 Switching Protocols","upgrade: websocket","connection: upgrade",`sec-websocket-accept: ${r}`,o&&`sec-websocket-protocol: ${o}`,"\r\n"].filter(Boolean).join("\r\n"))})(a,l,d)
if(!a.isClosed()){n.add(a)
a.on(e.WEBSOCKET_EVENT.CLOSE,()=>{n.delete(a)})}}})
return n})
const r={linux:"xdg-open",win32:"start",darwin:"open",android:"termux-open"}
exports.getDefaultOpen=(()=>{const e=r[process.platform]
if(!e)throw new Error(`[getDefaultOpen] unsupported platform: ${process.platform}`)
return e})
exports.getDefaultOpen=(()=>{const o=r[process.platform]
if(!o)throw new Error(`unsupported platform: ${process.platform}`)
return o})

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

const l=()=>{const t=m[process.platform]
if(!t)throw new Error(`[getProcessList] unsupported platform: ${process.platform}`)
if(!t)throw new Error(`unsupported platform: ${process.platform}`)
return t()}

@@ -29,0 +29,0 @@ exports.getProcessList=l

const createHistoryStateStore = (state = window.location.href) => {
const setState = (nextState, shouldPushState) => {
if ("string" != typeof nextState) throw new Error(`[createHistoryStateStore] unexpected non-string href: ${nextState}`);
if ("string" != typeof nextState) throw new Error(`non-string href: ${nextState}`);
if (nextState === state) return state;

@@ -20,3 +20,3 @@ const prevState = state;

getState: () => {
if (0 === listenerSet.size) throw new Error("[createHistoryStateStore] should not getState before subscribe");
if (0 === listenerSet.size) throw new Error("should subscribe before getState");
return state;

@@ -23,0 +23,0 @@ },

@@ -7,3 +7,3 @@ import { concatArrayBuffer, deconcatArrayBuffer, fromString, toString } from "./ArrayBuffer";

const headerSize = headerArrayBuffer.byteLength;
if (headerSize > 4294967295) throw new Error(`[packArrayBufferPair] headerArrayBuffer exceeds max size 4294967295 with size: ${headerSize}`);
if (headerSize > 4294967295) throw new Error(`headerArrayBuffer exceeds max size 4294967295, get: ${headerSize}`);
const headerSizeDataView = new DataView(new ArrayBuffer(4));

@@ -10,0 +10,0 @@ headerSizeDataView.setUint32(0, headerSize, !1);

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

const createNode = (value, prev = null, next = null) => ({
value,
prev,
next
});
const createDoublyLinkedList = () => {
let nodeSet, head, tail;
let head, tail, length;
const clear = () => {
nodeSet = new Set();
head = createNode(null);

@@ -14,2 +8,3 @@ tail = createNode(null);

tail.prev = head;
length = 0;
};

@@ -22,3 +17,3 @@ clear();

node.next = next;
nodeSet.add(node);
length++;
};

@@ -30,3 +25,3 @@ const insertBefore = (node, nextNode) => {

node.next = nextNode;
nodeSet.add(node);
length++;
};

@@ -38,3 +33,3 @@ const remove = node => {

node.prev = node.next = null;
nodeSet.delete(node);
length--;
};

@@ -45,3 +40,3 @@ return {

getTail: () => tail,
getLength: () => nodeSet.size,
getLength: () => length,
insertAfter,

@@ -58,3 +53,3 @@ insertBefore,

for (;node; ) {
nodeSet.delete(node);
length--;
node = node.next;

@@ -74,3 +69,3 @@ }

let node = tail.prev;
let index = nodeSet.size - 1;
let index = length - 1;
for (;node !== head; ) {

@@ -121,2 +116,7 @@ callback(node, index);

};
const createNode = (value, prev = null, next = null) => ({
value,
prev,
next
});
export { createDoublyLinkedList, createNode };

@@ -16,3 +16,2 @@ import { basicObject as verifyBasicObject, basicFunction as verifyBasicFunction } from "../verify";

setState: nextState => {
verifyBasicObject(nextState, "state should be basic Object");
if ((nextState = objectMerge(state, nextState)) === state) return state;

@@ -41,22 +40,16 @@ const prevState = state;

const getState = () => isDispatching ? dispatchingState : getStoreState();
const dispatch = action => {
verifyBasicObject(action, "action should be basic Object");
return isDispatching ? (action => {
if (isReducing) throw new Error(`got reducer caused dispatching, action: ${JSON.stringify(action)}`);
enhancer(enhancerStore, action);
dispatchingState = reducer(dispatchingState, action);
verifyBasicObject(dispatchingState, "reducer should return basic Object state");
})(action) : (action => {
dispatchingState = getStoreState();
isDispatching = !0;
enhancer(enhancerStore, action);
if (!dispatchingState) throw new Error(`dispatchingState after enhancer is invalid, get: ${JSON.stringify(dispatchingState)}`);
isDispatching = !1;
isReducing = !0;
const nextState = reducer(dispatchingState, action);
isReducing = !1;
dispatchingState = null;
setStoreState(nextState);
})(action);
};
const dispatch = action => isDispatching ? (action => {
enhancer(enhancerStore, action);
dispatchingState = reducer(dispatchingState, action);
})(action) : (action => {
dispatchingState = getStoreState();
isDispatching = !0;
enhancer(enhancerStore, action);
isDispatching = !1;
isReducing = !0;
const nextState = reducer(dispatchingState, action);
isReducing = !1;
dispatchingState = null;
setStoreState(nextState);
})(action);
const enhancerStore = {

@@ -63,0 +56,0 @@ getState,

import { createAsyncTaskQueue } from "./AsyncTaskQueue";
const createAsyncTaskLane = ({laneSize, selectLane = selectMinLoadLane}) => {
if (!((laneSize = Number(laneSize)) >= 1)) throw new Error(`[createTaskLane] invalid laneSize: ${laneSize}`);
if (!((laneSize = Number(laneSize)) >= 1)) throw new Error(`invalid laneSize: ${laneSize}`);
const laneList = [];

@@ -5,0 +5,0 @@ for (let index = 0; index < laneSize; index++) laneList.push({

@@ -12,5 +12,5 @@ const concatKeyFrag = (...fragList) => `@/${fragList.join("/")}`;

set: (value, keySelectorListList) => keySelectorListList.forEach(keySelectorList => {
if (keyCount !== keySelectorList.length) throw new Error(`[set] invalid keySelectorList length: ${keySelectorList.length}, expect: ${keyCount}`);
if (keyCount !== keySelectorList.length) throw new Error(`invalid keySelectorList length: ${keySelectorList.length}, expect: ${keyCount}`);
reduceKeySelector(...keySelectorList).forEach(switchKey => {
if (switchMap[switchKey]) throw new Error(`[set] duplicate switchKey: ${switchKey}`);
if (switchMap[switchKey]) throw new Error(`duplicate switchKey: ${switchKey}`);
switchMap[switchKey] = value;

@@ -20,7 +20,7 @@ });

get: (...keyFragList) => {
if (keyCount !== keyFragList.length) throw new Error(`[get] invalid keyCount: ${keyFragList.length}, expect: ${keyCount}`);
if (keyCount !== keyFragList.length) throw new Error(`invalid keyCount: ${keyFragList.length}, expect: ${keyCount}`);
return switchMap[concatKeyFrag(...keyFragList)];
},
verifyFull: (...keySelectorList) => {
if (keyCount !== keySelectorList.length) throw new Error(`[verifyFull] invalid keyCount: ${keySelectorList.length}, expect: ${keyCount}`);
if (keyCount !== keySelectorList.length) throw new Error(`invalid keyCount: ${keySelectorList.length}, expect: ${keyCount}`);
const fullKeyList = reduceKeySelector(...keySelectorList);

@@ -27,0 +27,0 @@ const setKeyList = Object.keys(switchMap);

@@ -12,3 +12,3 @@ const nextObject = (object, key) => void 0 === object[key] ? object[key] = {} : object[key];

const paramName = frag.slice(1);
if (!paramName || paramNameList.includes(paramName)) throw new Error(`[parseRouteToMap] invalid frag [${frag}] for route: ${route}`);
if (!paramName || paramNameList.includes(paramName)) throw new Error(`invalid frag [${frag}] for route: ${route}`);
paramNameList.push(paramName);

@@ -48,3 +48,3 @@ return nextObject(routeNode, "/:PARAM");

const {routeNode, paramNameList} = parseRouteToMap(routeMap, route);
if (routeNode["/DATA"]) throw new Error(`[appendRouteMap] duplicate route: ${route}`);
if (routeNode["/DATA"]) throw new Error(`duplicate route: ${route}`);
routeNode["/DATA"] = {

@@ -51,0 +51,0 @@ route,

import { compareStringWithNumber } from "../compare";
const REGEXP_SEMVER = /^(\d+)\.(\d+)\.(\d+)(.*)$/;
const parseSemVer = versionString => {
let [, major, minor, patch, label = ""] = REGEXP_SEMVER.exec(versionString);
let [, major, minor, patch, label = ""] = REGEXP_SEMVER.exec(versionString) || [];
major = parseInt(major);
minor = parseInt(minor);
patch = parseInt(patch);
if (isNaN(major) || isNaN(minor) || isNaN(patch)) throw new Error(`[parseSemVer] invalid versionString: ${versionString}`);
if (isNaN(major) || isNaN(minor) || isNaN(patch)) throw new Error(`invalid version: ${versionString}`);
return {

@@ -10,0 +10,0 @@ major,

@@ -6,3 +6,3 @@ import { join as joinPath, dirname, basename } from "path";

void 0 === pathStat && (pathStat = await getPathStat(path));
if (!pathStat.isDirectory()) throw new Error(`[getDirectorySubInfoList] error pathType: ${getPathTypeFromStat(pathStat)} for ${path}`);
if (!pathStat.isDirectory()) throw new Error(`error pathType: ${getPathTypeFromStat(pathStat)} for ${path}`);
const subInfoList = [];

@@ -103,3 +103,3 @@ for (const name of await readdirAsync(path)) {

default:
throw new Error(`[getFileList] invalid pathType: ${pathType} for ${path}`);
throw new Error(`invalid pathType: ${pathType} for ${path}`);
}

@@ -106,0 +106,0 @@ return fileList;

@@ -22,3 +22,3 @@ import { Stats } from "fs";

if (!pathStat.isDirectory()) {
if (pathStat !== ERROR_STAT) throw new Error(`[createDirectory] path already taken by non-directory: ${path}`);
if (pathStat !== ERROR_STAT) throw new Error(`path already taken by non-directory: ${path}`);
await createDirectory(dirname(path));

@@ -32,3 +32,3 @@ await mkdirAsync(path);

if (pathStat !== ERROR_STAT) {
if (!pathStat.isDirectory()) throw new Error(`[trimDirectory] path taken by non-directory: ${path}`);
if (!pathStat.isDirectory()) throw new Error(`path taken by non-directory: ${path}`);
if (await rmdirAsync(path).catch(onTrimError) === ERROR_NON_EMPTY) return;

@@ -41,3 +41,3 @@ }

void 0 === pathStat && (pathStat = await getPathStat(pathFrom));
if (pathStat === ERROR_STAT) throw new Error(`[movePath] missing path from ${pathFrom}`);
if (pathStat === ERROR_STAT) throw new Error(`missing path from ${pathFrom}`);
return renameAsync(pathFrom, pathTo);

@@ -44,0 +44,0 @@ };

@@ -15,3 +15,3 @@ import { resolve as resolvePath, normalize, dirname, sep } from "path";

const absolutePath = resolvePath(rootPath, relativePath);
if (!absolutePath.startsWith(rootPath)) throw new Error(`[PathPrefixLock] invalid relativePath: ${relativePath}`);
if (!absolutePath.startsWith(rootPath)) throw new Error(`invalid relativePath: ${relativePath}`);
return absolutePath;

@@ -18,0 +18,0 @@ };

@@ -61,3 +61,3 @@ import { join as joinPath } from "path";

if (isActive) {
if (factId >= Number.MAX_SAFE_INTEGER) throw new Error(`[FactDatabase] factId is Number.MAX_SAFE_INTEGER: ${factId}`);
if (factId >= Number.MAX_SAFE_INTEGER) throw new Error(`factId is too big: ${factId}`);
fact.id = factId + 1;

@@ -64,0 +64,0 @@ factId++;

@@ -6,6 +6,6 @@ import { createCacheMap } from "../../../common/data/CacheMap";

import { responderSendBuffer, responderSendBufferRange, responderSendBufferCompress, responderSendStream, responderSendStreamRange } from "./Send";
const GET_DEFAULT_CACHE_MAP = () => createCacheMap({
const createDefaultCacheMap = () => createCacheMap({
valueSizeSumMax: 33554432
});
const createResponderBufferCache = ({getBufferData, sizeSingleMax = CACHE_FILE_SIZE_MAX, expireTime = 6e4, isEnableGzip = !1, serveCacheMap = GET_DEFAULT_CACHE_MAP()}) => {
const createResponderBufferCache = ({getBufferData, sizeSingleMax = 524288, expireTime = 6e4, isEnableGzip = !1, serveCacheMap = createDefaultCacheMap()}) => {
const responderSendCacheBuffer = isEnableGzip ? responderSendBufferCompress : responderSendBuffer;

@@ -18,5 +18,3 @@ return async (store, cacheKey) => {

};
const CACHE_FILE_SIZE_MAX = 524288;
const REGEXP_ENCODING_GZIP = /gzip/i;
const createResponderServeStatic = ({sizeSingleMax = CACHE_FILE_SIZE_MAX, expireTime = 6e4, isEnableGzip = !1, isEnableRange = !0, serveCacheMap = GET_DEFAULT_CACHE_MAP()}) => {
const createResponderServeStatic = ({sizeSingleMax = 524288, expireTime = 6e4, isEnableGzip = !1, isEnableRange = !0, serveCacheMap = createDefaultCacheMap()}) => {
const serveCache = async (store, filePath, encoding, range) => {

@@ -73,6 +71,6 @@ let bufferData = serveCacheMap.get(filePath);

const type = getMIMETypeFromFileName(filePath);
if (!(acceptGzip && await serve(store, filePath + ".gz", type, "gzip") || await serve(store, filePath, type, void 0, range))) throw new Error(`[ServeStatic] miss file: ${filePath}`);
if (!(acceptGzip && await serve(store, filePath + ".gz", type, "gzip") || await serve(store, filePath, type, void 0, range))) throw new Error(`miss file: ${filePath}`);
};
};
const REGEXP_HEADER_RANGE = /bytes=(\d+)-(\d+)?$/i;
const REGEXP_ENCODING_GZIP = /gzip/i;
const parseRangeHeader = rangeString => {

@@ -86,2 +84,3 @@ const result = REGEXP_HEADER_RANGE.exec(rangeString);

};
export { createResponderBufferCache, createResponderServeStatic };
const REGEXP_HEADER_RANGE = /bytes=(\d+)-(\d+)?$/i;
export { createDefaultCacheMap, createResponderBufferCache, createResponderServeStatic };

@@ -23,3 +23,3 @@ import { constants } from "crypto";

const createServer = ({protocol, ...option}) => {
if (!VALID_SERVER_PROTOCOL_SET.has(protocol)) throw new Error(`[createServer] invalid protocol: ${protocol}`);
if (!VALID_SERVER_PROTOCOL_SET.has(protocol)) throw new Error(`invalid protocol: ${protocol}`);
(option = {

@@ -26,0 +26,0 @@ ..."https:" === protocol ? DEFAULT_HTTPS_OPTION : DEFAULT_HTTP_OPTION,

@@ -85,3 +85,3 @@ import { BUFFER_MAX_LENGTH, applyMaskQuadletBufferInPlace } from "./function";

} else if (initialLength <= 125) {
if ((decodedDataBufferLength = initialLength) > frameLengthLimit) throw new Error(`[decode] dataBuffer length ${decodedDataBufferLength} exceeds limit: ${frameLengthLimit}`);
if ((decodedDataBufferLength = initialLength) > frameLengthLimit) throw new Error(`dataBuffer length ${decodedDataBufferLength} exceeds limit: ${frameLengthLimit}`);
stage = decodedIsMask ? 3 : 4;

@@ -94,3 +94,3 @@ } else stage = 126 === initialLength ? 1 : 2;

if (mergedBuffer = tryShiftMergedBuffer(2)) {
if ((decodedDataBufferLength = mergedBuffer.readUInt16BE(0, !0)) > frameLengthLimit) throw new Error(`[decode] dataBuffer length ${decodedDataBufferLength} exceeds limit: ${frameLengthLimit}`);
if ((decodedDataBufferLength = mergedBuffer.readUInt16BE(0, !0)) > frameLengthLimit) throw new Error(`dataBuffer length ${decodedDataBufferLength} exceeds limit: ${frameLengthLimit}`);
stage = decodedIsMask ? 3 : 4;

@@ -102,4 +102,4 @@ return !0;

if (mergedBuffer = tryShiftMergedBuffer(8)) {
if ((decodedDataBufferLength = 4294967296 * mergedBuffer.readUInt32BE(0, !0) + mergedBuffer.readUInt32BE(4, !0)) > BUFFER_MAX_LENGTH) throw new Error("[decode] decodedDataBufferLength exceeds BUFFER_MAX_LENGTH");
if (decodedDataBufferLength > frameLengthLimit) throw new Error(`[decode] dataBuffer length ${decodedDataBufferLength} exceeds limit: ${frameLengthLimit}`);
if ((decodedDataBufferLength = 4294967296 * mergedBuffer.readUInt32BE(0, !0) + mergedBuffer.readUInt32BE(4, !0)) > BUFFER_MAX_LENGTH) throw new Error("decodedDataBufferLength too big");
if (decodedDataBufferLength > frameLengthLimit) throw new Error(`dataBuffer length ${decodedDataBufferLength} exceeds limit: ${frameLengthLimit}`);
stage = decodedIsMask ? 3 : 4;

@@ -106,0 +106,0 @@ return !0;

@@ -30,7 +30,7 @@ import { randomBytes } from "crypto";

} else {
if (!(length <= BUFFER_MAX_LENGTH)) throw new Error("[encodeFrame] dataBuffer length exceeds BUFFER_MAX_LENGTH");
if (!(length <= BUFFER_MAX_LENGTH)) throw new Error("dataBuffer length too big");
maskLengthOctet = 127;
extendLengthOctetCount = 8;
}
if (length > frameSenderStore.frameLengthLimit) throw new Error(`[encodeFrame] dataBuffer length ${length} exceeds limit: ${frameSenderStore.frameLengthLimit}`);
if (length > frameSenderStore.frameLengthLimit) throw new Error(`dataBuffer length ${length} exceeds limit: ${frameSenderStore.frameLengthLimit}`);
const maskOctetCount = isMask ? 4 : 0;

@@ -37,0 +37,0 @@ const maskQuadletBuffer = isMask && length ? randomBytes(4) : DEFAULT_MASK_QUADLET_BUFFER;

@@ -53,3 +53,3 @@ import { createEventEmitter } from "../../../common/module/Event";

frameBufferList.push(frame.dataBuffer);
if ((frameBufferLength += frame.dataBuffer.length) > frameLengthLimit) throw new Error(`[WebSocket] frameBufferList length ${frameBufferLength} exceeds limit: ${frameLengthLimit}`);
if ((frameBufferLength += frame.dataBuffer.length) > frameLengthLimit) throw new Error(`frameBufferList length ${frameBufferLength} exceeds limit: ${frameLengthLimit}`);
if (!frame.isFIN) return null;

@@ -72,3 +72,3 @@ const dataType = frameDataType;

if (2 === readyState) return doCloseSocket();
if (1 !== readyState && 2 !== readyState) throw new Error(`[close] error readyState = ${readyState}`);
if (1 !== readyState && 2 !== readyState) throw new Error(`error readyState = ${readyState}`);
readyState = 2;

@@ -130,3 +130,3 @@ closeTimeoutToken = setTimeout(doCloseSocket, 5e3);

sendText: text => {
if (1 !== readyState) throw new Error(`[sendBuffer] not open yet: readyState = ${readyState}`);
if (1 !== readyState) throw new Error(`not open yet: readyState = ${readyState}`);
encodeFrame(frameSenderStore, FRAME_CONFIG.COMPLETE, OPCODE_TYPE.TEXT, Buffer.from(text), isMask);

@@ -136,3 +136,3 @@ return sendEncodedFrame(frameSenderStore, socket);

sendBuffer: buffer => {
if (1 !== readyState) throw new Error(`[sendBuffer] not open yet: readyState = ${readyState}`);
if (1 !== readyState) throw new Error(`not open yet: readyState = ${readyState}`);
encodeFrame(frameSenderStore, FRAME_CONFIG.COMPLETE, OPCODE_TYPE.BINARY, buffer, isMask);

@@ -139,0 +139,0 @@ return sendEncodedFrame(frameSenderStore, socket);

@@ -10,4 +10,4 @@ import { get as httpGet } from "http";

const urlObject = new URL(urlString);
if (!VALID_WEBSOCKET_PROTOCOL_SET.has(urlObject.protocol)) throw new Error(`[WebSocketClient] invalid url protocol: ${urlObject.protocol}`);
if (!urlObject.host) throw new Error(`[WebSocketClient] invalid url host: ${urlObject.host}`);
if (!VALID_WEBSOCKET_PROTOCOL_SET.has(urlObject.protocol)) throw new Error(`invalid url protocol: ${urlObject.protocol}`);
if (!urlObject.host) throw new Error(`invalid url host: ${urlObject.host}`);
const isSecure = SECURE_WEBSOCKET_PROTOCOL_SET.has(urlObject.protocol);

@@ -36,3 +36,3 @@ const requestKey = key || getRequestKey();

request.abort();
onError(new Error("[WebSocketClient] unexpected response"));
onError(new Error("unexpected response"));
});

@@ -49,6 +49,6 @@ request.on("upgrade", async (response, socket, bodyHeadBuffer) => {

webSocket.isClosed() || ((webSocket, response, responseKey, requestProtocolString) => {
if (webSocket.getReadyState() !== webSocket.CONNECTING) throw new Error(`[WebSocketClient][doUpgradeSocket] error readyState ${webSocket.getReadyState()}`);
if (responseKey !== response.headers["sec-websocket-accept"]) throw new Error("[WebSocketClient][doUpgradeSocket] wrong sec-websocket-accept");
if (webSocket.getReadyState() !== webSocket.CONNECTING) throw new Error(`error readyState ${webSocket.getReadyState()}`);
if (responseKey !== response.headers["sec-websocket-accept"]) throw new Error("wrong sec-websocket-accept");
const protocol = response.headers["sec-websocket-protocol"];
if (!requestProtocolString.split(/, */).includes(protocol)) throw new Error(`[WebSocketClient][doUpgradeSocket] unexpected protocol ${protocol}`);
if (!requestProtocolString.split(/, */).includes(protocol)) throw new Error(`unexpected protocol ${protocol}`);
webSocket.protocol = protocol;

@@ -55,0 +55,0 @@ webSocket.open();

@@ -29,4 +29,4 @@ import { WEBSOCKET_VERSION, WEBSOCKET_EVENT, getRespondKey } from "./function";

((webSocket, protocol, responseKey) => {
if (webSocket.getReadyState() !== webSocket.CONNECTING) throw new Error(`[WebSocketServer][doUpgradeSocket] error readyState ${webSocket.getReadyState()}`);
if (protocol && !webSocket.protocolList.includes(protocol)) throw new Error(`[WebSocketServer][doUpgradeSocket] unexpected protocol ${protocol}`);
if (webSocket.getReadyState() !== webSocket.CONNECTING) throw new Error(`error readyState ${webSocket.getReadyState()}`);
if (protocol && !webSocket.protocolList.includes(protocol)) throw new Error(`unexpected protocol ${protocol}`);
webSocket.protocol = protocol;

@@ -33,0 +33,0 @@ webSocket.open();

@@ -9,5 +9,5 @@ const DEFAULT_OPEN_MAP = {

const defaultOpen = DEFAULT_OPEN_MAP[process.platform];
if (!defaultOpen) throw new Error(`[getDefaultOpen] unsupported platform: ${process.platform}`);
if (!defaultOpen) throw new Error(`unsupported platform: ${process.platform}`);
return defaultOpen;
};
export { getDefaultOpen };

@@ -47,3 +47,3 @@ import { setTimeoutAsync } from "../../common/time";

const getProcessList = GET_PROCESS_LIST_MAP[process.platform];
if (!getProcessList) throw new Error(`[getProcessList] unsupported platform: ${process.platform}`);
if (!getProcessList) throw new Error(`unsupported platform: ${process.platform}`);
return getProcessList();

@@ -50,0 +50,0 @@ };

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

{"name":"dr-js","version":"0.21.0","description":"A collection of strange functions","author":"dr-js","license":"MIT","keywords":["Dr","Dr-js","JavaScript"],"repository":"github:dr-js/dr-js","bin":"bin/index.js","browser":"library/Dr.browser.js","engines":{"node":">=10.15","npm":">=6"},"sideEffects":false}
{"name":"dr-js","version":"0.21.1-dev.0","description":"A collection of strange functions","author":"dr-js","license":"MIT","keywords":["Dr","Dr-js","JavaScript"],"repository":"github:dr-js/dr-js","bin":"bin/index.js","browser":"library/Dr.browser.js","engines":{"node":">=10.15","npm":">=6"},"sideEffects":false}
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