Comparing version 0.21.0 to 0.21.1-dev.0
@@ -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} |
409812
9503