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

dr-js

Package Overview
Dependencies
Maintainers
1
Versions
243
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dr-js - npm Package Compare versions

Comparing version 0.21.0-dev.3 to 0.21.0-dev.4

124

bin/index.js

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

var a=require("../library/common/string")
var o=require("../library/common/check")
var i=require("../library/node/data/Stream")
var n=require("../library/node/file/File")
var c=require("../library/node/file/Modify")
var u=require("../library/node/server/function")
var l=require("../library/node/server/TCPProxyServer")
var p=require("../library/node/system/DefaultOpen")
var m=require("../library/node/system/Run")
var d=require("../library/node/system/Status")
var f=require("./server/serveStatic")
var y=require("./server/websocketGroup")
var v=require("./server/testConnection")
var S=require("./function")
var g=require("./option")
const h=e=>console.log((0,o.isBasicObject)(e)?JSON.stringify(e,null,2):e)
const w=async(g,w)=>{const{tryGet:b,tryGetFirst:$,getFirst:q}=w
const T=b("quiet")?()=>{}:console.log
const O=(e,r)=>e(r).then(()=>T(`[${g}] done: ${r}`),e=>T(`[${g}] error: ${r}\n${e.stack||e}`))
const N=Boolean(b("help"))
const k=b(g)||[]
const x=$("input-file")
const P=$("output-file")
const A=async()=>{const e=($("host")||"").split(":")
var o=require("../library/common/time")
var i=require("../library/common/check")
var n=require("../library/node/data/Stream")
var c=require("../library/node/file/File")
var u=require("../library/node/file/Modify")
var l=require("../library/node/server/function")
var p=require("../library/node/server/TCPProxyServer")
var m=require("../library/node/system/DefaultOpen")
var d=require("../library/node/system/Run")
var f=require("../library/node/system/Status")
var y=require("./server/serveStatic")
var v=require("./server/websocketGroup")
var S=require("./server/testConnection")
var g=require("./function")
var w=require("./option")
const h=e=>console.log((0,i.isBasicObject)(e)?JSON.stringify(e,null,2):e)
const b=async(w,b)=>{const{tryGet:$,tryGetFirst:q,getFirst:T}=b
const O=$("quiet")?()=>{}:console.log
const N=(e,r)=>e(r).then(()=>O(`[${w}] done: ${r}`),e=>O(`[${w}] error: ${r}\n${e.stack||e}`))
const k=Boolean($("help"))
const x=$(w)||[]
const A=q("input-file")
const P=q("output-file")
const G=async()=>{const e=(q("host")||"").split(":")
const r=e[0]||"0.0.0.0"
return{hostname:r,port:Number(e[1]||await(0,u.autoTestServerPort)([80,8080,8888,8800,8e3],r))}}
switch(g){case"eval":case"eval-readline":{let t=await(0,S.evalScript)(x?(0,r.readFileSync)(x).toString():k[0],x?k:k.slice(1),x?(0,e.dirname)(x):process.cwd(),w)
"eval-readline"===g&&(t=await(0,S.evalReadlineExtend)(t,q("root"),T))
return void 0!==t&&(e=>P?(0,r.writeFileSync)(P,e):(0,i.pipeStreamAsync)(process.stdout,(0,i.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"echo":return h(k)
case"cat":if(k.length)for(const e of k)await(0,i.pipeStreamAsync)(process.stdout,(0,r.createReadStream)(e))
else process.stdin.isTTY||await(0,i.pipeStreamAsync)(process.stdout,process.stdin)
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)
"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))
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")
const u="write"===g?"w":"a"
return(0,i.pipeStreamAsync)((0,r.createWriteStream)(k[0],{flags:u}),process.stdin)
case"open":{const r=k[0]||"."
return(0,m.runSync)({command:(0,p.getDefaultOpen)(),argList:[r.includes("://")?r:(0,e.normalize)(r)]})}case"status":return h(N?(0,d.describeSystemStatus)():{system:(0,d.getSystemStatus)(),process:(0,d.getProcessStatus)()})
case"file-list":case"file-list-all":case"file-tree":return h(await(0,S.collectFile)(g,k[0]||process.cwd()))
case"file-create-directory":for(const e of k)await O(n.createDirectory,e)
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
case"file-modify-copy":return c.modify.copy(k[0],k[1])
case"file-modify-move":return c.modify.move(k[0],k[1])
case"file-modify-delete":for(const e of k)await O(c.modify.delete,e)
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)
return
case"file-merge":{const[e,...t]=k
for(const s of t)await(0,i.pipeStreamAsync)((0,r.createWriteStream)(e,{flags:"a"}),(0,r.createReadStream)(s))
return}case"fetch":{let[e,t=4,a=0]=k
case"file-merge":{const[e,...t]=x
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
t=Number(t)||0
a=Number(a)||0
const o=await(0,S.fetchWithJump)(e,{headers:{accept:"*/*","user-agent":`${S.packageName}/${S.packageVersion}`},timeout:a},t,(e,r,o)=>T(`[fetch] url: ${e}, jump: ${r}/${t}, timeout: ${a?(0,s.time)(a):"none"}, cookie: ${o.length}`))
const n=Number(o.headers["content-length"])
T(`[fetch] get status: ${o.status}, fetch response content${n?` (${(0,s.binary)(n)}B)`:""}...`)
await(e=>(0,i.pipeStreamAsync)(P?(0,r.createWriteStream)(P):process.stdout,e))(o.stream())
return T("\n[fetch] done")}case"process-status":{const[e="pid--"]=k
return h(await(0,S.collectAllProcessStatus)(e,N))}case"server-serve-static":case"server-serve-static-simple":{const[e=3e5]=k
const r="server-serve-static-simple"===g
const t=$("root")||process.cwd()
return(0,f.startServerServeStatic)(Object.assign({isSimpleServe:r,expireTime:Number(e),staticRoot:t,log:T},await A()))}case"server-websocket-group":return(0,y.startServerWebSocketGroup)(Object.assign({log:T},await A()))
case"server-test-connection":return(0,v.startServerTestConnection)(Object.assign({log:T},await A()))
const o=await(0,g.fetchWithJump)(e,{headers:{accept:"*/*","user-agent":`${g.packageName}/${g.packageVersion}`},timeout:a},t,(e,r,o)=>O(`[fetch] url: ${e}, jump: ${r}/${t}, timeout: ${a?(0,s.time)(a):"none"}, cookie: ${o.length}`))
const i=Number(o.headers["content-length"])
O(`[fetch] get status: ${o.status}, fetch response content${i?` (${(0,s.binary)(i)}B)`:""}...`)
await(e=>(0,n.pipeStreamAsync)(P?(0,r.createWriteStream)(P):process.stdout,e))(o.stream())
return O("\n[fetch] done")}case"process-status":{const[e="pid--"]=x
return h(await(0,g.collectAllProcessStatus)(e,k))}case"server-serve-static":case"server-serve-static-simple":{const[e=3e5]=x
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()))
case"server-tcp-proxy":{let e
let r
if((0,o.isBasicFunction)(k[0])){e=[{hostname:"custom-hostname",port:"custom-port"}]
r=k[0]}else{e=k.map(e=>{const[r,t]=e.split(":")
if((0,i.isBasicFunction)(x[0])){e=[{hostname:"custom-hostname",port:"custom-port"}]
r=x[0]}else{e=x.map(e=>{const[r,t]=e.split(":")
return{hostname:r||"localhost",port:Number(t)}})

@@ -75,10 +77,10 @@ let t=0

const s=e[t]
T(`[CONNECT] ${r.remoteAddress}:${r.remotePort} => ${s.hostname}:${s.port}`)
return s})}const{option:t,start:s}=(0,l.createTCPProxyServer)(Object.assign({getTargetOption:r},await A()))
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()))
await s()
return T((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,g.parseOption)()
const r=g.MODE_NAME_LIST.find(r=>e.tryGet(r))
if(!r)return h(e.tryGet("version")?(0,S.getVersion)():(0,g.formatUsage)(null,e.tryGet("help")?null:"simple"))
await w(r,e).catch(e=>{console.warn(`[Error] in mode: ${r}:`,e.stack||e)
process.exit(2)})})().catch(e=>{console.warn((0,g.formatUsage)(e.stack||e,"simple"))
return O((0,a.indentList)("[TCPProxy]",[`pid: ${process.pid}`,`at: ${t.hostname}:${t.port}`,...e.map(e=>`proxy to: ${e.hostname}:${e.port}`)]))}}};(async()=>{const e=await(0,w.parseOption)()
const r=w.MODE_NAME_LIST.find(r=>e.tryGet(r))
if(!r)return h(e.tryGet("version")?(0,g.getVersion)():(0,w.formatUsage)(null,e.tryGet("help")?null:"simple"))
await b(r,e).catch(e=>{console.warn(`[Error] in mode: ${r}:`,e.stack||e)
process.exit(2)})})().catch(e=>{console.warn((0,w.formatUsage)(e.stack||e,"simple"))
process.exit(1)})
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","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 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)

@@ -6,0 +6,0 @@ exports.MODE_NAME_LIST=r

@@ -14,3 +14,3 @@ exports.isEqualArrayBuffer=((t,e)=>{if(t===e)return!0

exports.concatArrayBuffer=t
exports.decatArrayBuffer=((t,e,r=0)=>e.map(e=>{const n=t.slice(r,r+e)
exports.deconcatArrayBuffer=((t,e,r=0)=>e.map(e=>{const n=t.slice(r,r+e)
r+=e

@@ -17,0 +17,0 @@ return n}))

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

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

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

n.d(o,"concatArrayBuffer",()=>yt)
n.d(o,"decatArrayBuffer",()=>gt)
n.d(o,"deconcatArrayBuffer",()=>gt)
n.d(o,"fromString",()=>xt)

@@ -1502,3 +1502,3 @@ n.d(o,"toString",()=>wt)

const La=async t=>{const e=new DataView(await Aa(t.slice(0,Et))).getUint32(0,!1)
return[await wt(await Aa(t.slice(Et,Et+e))),t.slice(Et+e)]}
return[wt(await Aa(t.slice(Et,Et+e))),t.slice(Et+e)]}
const Oa=({eventSource:t=window.document,isSkipPreventDefault:e=!1})=>{const n=new Map

@@ -1505,0 +1505,0 @@ const r=t=>n.forEach(n=>{const{target:r,checkMap:o,callback:s}=n

var e=require("http")
var t=require("https")
var r=require("url")
var o=require("zlib")
var n=require("../common/function")
var s=require("./data/Buffer")
const a=({protocol:e,hostname:t,hash:r,search:o,pathname:n,href:s,port:a,username:c,password:i})=>{const u={protocol:e,hostname:t,hash:r,search:o,pathname:n,href:s,path:`${n}${o}`}
""!==a&&(u.port=Number(a));(c||i)&&(u.auth=`${c}:${i}`)
return u}
exports.urlToOption=a
const c=(r,o=null)=>new Promise((n,s)=>{const a=("https:"===r.protocol?t.request:e.request)(r,n)
const c=e=>{a.destroy()
e.option=r
s(e)}
a.on("timeout",()=>c(new Error("NETWORK_TIMEOUT")))
a.on("error",c)
a.end(o)})
exports.requestAsync=c
exports.ping=(async e=>{let{url:t,body:o,wait:s=5e3,maxRetry:i=0}=e,u=function(e,t){if(null==e)return{}
var r={}
var o=Object.keys(e)
var n,s
for(s=0;s<o.length;s++){n=o[s]
t.indexOf(n)>=0||(r[n]=e[n])}return r}(e,["url","body","wait","maxRetry"])
u=Object.assign({},u,a(new r.URL(t)),{timeout:s})
await(0,n.withRetryAsync)(async()=>{(await c(u,o)).destroy()},i,s)})
exports.fetchLikeRequest=(async(e,{method:t="GET",headers:o,body:n,timeout:s=1e4}={})=>{const u=Object.assign({},a(new r.URL(e)),{method:t,headers:Object.assign({"accept-encoding":"gzip"},o),timeout:s})
const h=await c(u,n)
const p=h.statusCode
return Object.assign({status:p,ok:p>=200&&p<300,headers:h.headers},i(h,s))})
const i=(e,t)=>{let r
let n
process.nextTick(()=>{if(!r){e.destroy()
n=!0}})
const a=()=>{if(r)throw new Error("PAYLOAD_ALREADY_USED")
if(n)throw new Error("PAYLOAD_ALREADY_DROPPED")
r=!0
const s=t&&setTimeout(()=>{e.destroy()
var r=require("zlib")
var o=require("../common/function")
var n=require("./data/Buffer")
const s=(r,o,n)=>new Promise((s,c)=>{const a=(e=>e instanceof URL?e:new URL(e))(r)
const i=("https:"===a.protocol?t.request:e.request)(a,o,s)
const u=e=>{i.destroy()
e.urlObject=a
e.option=o
c(e)}
i.on("timeout",()=>u(new Error("NETWORK_TIMEOUT")))
i.on("error",u)
i.end(n)})
exports.requestAsync=s
exports.ping=(async(e,{method:t="GET",headers:r,body:n,wait:c=5e3,maxRetry:a=0}={})=>(0,o.withRetryAsync)(async()=>{(await s(e,{method:t,headers:r,timeout:c},n)).destroy()},a,c))
exports.fetchLikeRequest=(async(e,{method:t="GET",headers:r,body:o,timeout:n=1e4}={})=>{const a={method:t,headers:Object.assign({"accept-encoding":"gzip"},r),timeout:n}
const i=await s(e,a,o)
const u=i.statusCode
return Object.assign({status:u,ok:u>=200&&u<300,headers:i.headers},c(i,n))})
const c=(e,t)=>{let o
let s
process.nextTick(()=>{if(!o){e.destroy()
s=!0}})
const c=()=>{if(o)throw new Error("PAYLOAD_ALREADY_USED")
if(s)throw new Error("PAYLOAD_ALREADY_DROPPED")
o=!0
const n=t&&setTimeout(()=>{e.destroy()
e.emit("error",new Error("PAYLOAD_TIMEOUT"))},t)
e.on("end",()=>s&&clearTimeout(s))
return"gzip"===e.headers["content-encoding"]?e.pipe((0,o.createGunzip)()):e}
const c=async()=>(0,s.receiveBufferAsync)(a())
const i=()=>c().then(u)
return{stream:a,buffer:c,arrayBuffer:()=>c().then(s.toArrayBuffer),text:i,json:()=>i().then(h)}}
const u=e=>e.toString()
const h=e=>JSON.parse(e)
e.on("end",()=>n&&clearTimeout(n))
return"gzip"===e.headers["content-encoding"]?e.pipe((0,r.createGunzip)()):e}
const u=async()=>(0,n.receiveBufferAsync)(c())
const d=()=>u().then(a)
return{stream:c,buffer:u,arrayBuffer:()=>u().then(n.toArrayBuffer),text:d,json:()=>d().then(i)}}
const a=e=>e.toString()
const i=e=>JSON.parse(e)

@@ -1,45 +0,44 @@

var e=require("url")
var r=require("../../../common/check")
var t=require("../../../common/data/Tree")
var o=require("../../../common/module/RouteMap")
var a=require("../../../common/module/MIME")
var u=require("../commonHTML")
var n=require("./Send")
const s={GET:"/GET",POST:"/POST",PUT:"/PUT",PATCH:"/PATCH",DELETE:"/DELETE",HEAD:"/HEAD",OPTIONS:"/OPTIONS",CONNECT:"/CONNECT",TRACE:"/TRACE"}
exports.METHOD_MAP=s
const i=(e,r="/",t="GET",a)=>{if(Array.isArray(r))return r.reduce((r,o)=>i(e,o,t,a),e)
if(Array.isArray(t))return t.reduce((t,o)=>i(e,r,o,a),e)
const{routeNode:u,paramNameList:n}=(0,o.parseRouteToMap)(e,r)
const c=s[t]
if(!c)throw new Error(`invalid method [${t}] for: ${r}`)
if(u[c])throw new Error(`duplicate method [${t}] for: ${r}`)
var e=require("../../../common/check")
var r=require("../../../common/data/Tree")
var t=require("../../../common/module/RouteMap")
var o=require("../../../common/module/MIME")
var a=require("../commonHTML")
var u=require("./Send")
const n={GET:"/GET",POST:"/POST",PUT:"/PUT",PATCH:"/PATCH",DELETE:"/DELETE",HEAD:"/HEAD",OPTIONS:"/OPTIONS",CONNECT:"/CONNECT",TRACE:"/TRACE"}
exports.METHOD_MAP=n
const s=(e,r="/",o="GET",a)=>{if(Array.isArray(r))return r.reduce((r,t)=>s(e,t,o,a),e)
if(Array.isArray(o))return o.reduce((t,o)=>s(e,r,o,a),e)
const{routeNode:u,paramNameList:c}=(0,t.parseRouteToMap)(e,r)
const d=n[o]
if(!d)throw new Error(`invalid method [${o}] for: ${r}`)
if(u[d])throw new Error(`duplicate method [${o}] for: ${r}`)
if("function"!=typeof a)throw new Error(`invalid responder for: ${r}`)
u[c]={route:r,paramNameList:n,routeResponder:a}
u[d]={route:r,paramNameList:c,routeResponder:a}
return e}
exports.appendRouteMap=i
exports.createRouteMap=(e=>e.reduce((e,[r,t,o])=>i(e,r,t,o),{}))
exports.createResponderRouter=(({routeMap:r,baseUrl:t="",getMethodUrl:a=c(new e.URL(t))})=>e=>{const{method:t,url:u}=a(e)
const n=s[t]
if(void 0===n)return
const i=(0,o.findRouteFromMap)(r,u.pathname)
if(void 0===i)return
const{routeNode:c,paramValueList:d}=i
if(void 0===c[n])return
const{route:p,paramNameList:m,routeResponder:T}=c[n]
const E=m.reduce((e,r,t)=>{e[r]=d[t]
exports.appendRouteMap=s
exports.createRouteMap=(e=>e.reduce((e,[r,t,o])=>s(e,r,t,o),{}))
exports.createResponderRouter=(({routeMap:e,baseUrl:r="",getMethodUrl:o=c(new URL(r))})=>r=>{const{method:a,url:u}=o(r)
const s=n[a]
if(void 0===s)return
const c=(0,t.findRouteFromMap)(e,u.pathname)
if(void 0===c)return
const{routeNode:d,paramValueList:i}=c
if(void 0===d[s])return
const{route:p,paramNameList:m,routeResponder:T}=d[s]
const E=m.reduce((e,r,t)=>{e[r]=i[t]
return e},{})
return T(e,e.setState({method:t,url:u,route:p,paramMap:E}))})
const c=r=>({request:{method:t,url:o}})=>({method:t,url:new e.URL(o.replace(d,"/"),r)})
return T(r,r.setState({method:a,url:u,route:p,paramMap:E}))})
const c=e=>({request:{method:r,url:t}})=>({method:r,url:new URL(t.replace(d,"/"),e)})
const d=/\/\//g
exports.getRouteParamAny=(e=>(0,o.getRouteParamAny)(e.getState()))
exports.getRouteParam=((e,r)=>(0,o.getRouteParam)(e.getState(),r))
const p=e=>{const r=[]
const t=new Set(Object.values(s))
m(["ROOT",e],([e,{route:o}])=>{t.has(e)&&r.push({method:e,route:o})})
exports.getRouteParamAny=(e=>(0,t.getRouteParamAny)(e.getState()))
exports.getRouteParam=((e,r)=>(0,t.getRouteParam)(e.getState(),r))
const i=e=>{const r=[]
const t=new Set(Object.values(n))
p(["ROOT",e],([e,{route:o}])=>{t.has(e)&&r.push({method:e,route:o})})
return r}
exports.describeRouteMap=p
const m=(0,t.createTreeDepthFirstSearch)(([e,t])=>(0,r.isBasicObject)(t)&&Object.entries(t))
exports.describeRouteMap=i
const p=(0,r.createTreeDepthFirstSearch)(([r,t])=>(0,e.isBasicObject)(t)&&Object.entries(t))
exports.createResponderRouteList=(({getRouteMap:e,extraBodyList:r})=>{let t
return async o=>{void 0===t&&(t=await(0,n.prepareBufferData)(Buffer.from(T(e(),r)),a.BASIC_EXTENSION_MAP.html))
return(0,n.responderSendBufferCompress)(o,t)}})
const T=(e,r=[])=>(0,u.COMMON_LAYOUT)([(0,u.COMMON_STYLE)(),"<style>body { align-items: start; }</style>"],["<h2>Route List</h2>","<table>",...p(e).map(({method:e,route:r})=>`<tr><td><b>${e}</b></td><td>${"/GET"===e?`<a href="${r}">${r}</a>`:r}</td></tr>`),"</table>",...r])
return async a=>{void 0===t&&(t=await(0,u.prepareBufferData)(Buffer.from(m(e(),r)),o.BASIC_EXTENSION_MAP.html))
return(0,u.responderSendBufferCompress)(a,t)}})
const m=(e,r=[])=>(0,a.COMMON_LAYOUT)([(0,a.COMMON_STYLE)(),"<style>body { align-items: start; }</style>"],["<h2>Route List</h2>","<table>",...i(e).map(({method:e,route:r})=>`<tr><td><b>${e}</b></td><td>${"/GET"===e?`<a href="${r}">${r}</a>`:r}</td></tr>`),"</table>",...r])

@@ -1,27 +0,25 @@

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

@@ -31,2 +29,2 @@ const s=o.headers["sec-websocket-protocol"]

e.protocol=s
e.open()})(r,e,b,k)})})
e.open()})(s,e,u,l)})})

@@ -8,4 +8,4 @@ import { fromString, toString } from "../../common/data/ArrayBuffer";

const headerSize = new DataView(await parseBlobAsArrayBuffer(blobPacket.slice(0, HEADER_BYTE_SIZE))).getUint32(0, !1);
return [ await toString(await parseBlobAsArrayBuffer(blobPacket.slice(HEADER_BYTE_SIZE, HEADER_BYTE_SIZE + headerSize))), blobPacket.slice(HEADER_BYTE_SIZE + headerSize) ];
return [ toString(await parseBlobAsArrayBuffer(blobPacket.slice(HEADER_BYTE_SIZE, HEADER_BYTE_SIZE + headerSize))), blobPacket.slice(HEADER_BYTE_SIZE + headerSize) ];
};
export { packBlobPacket, parseBlobPacket };

@@ -19,3 +19,3 @@ const isEqualArrayBuffer = (a, b) => {

};
const decatArrayBuffer = (concatedArrayBuffer, byteLengthList, byteOffset = 0) => byteLengthList.map(byteLength => {
const deconcatArrayBuffer = (concatedArrayBuffer, byteLengthList, byteOffset = 0) => byteLengthList.map(byteLength => {
const arrayBuffer = concatedArrayBuffer.slice(byteOffset, byteOffset + byteLength);

@@ -39,2 +39,2 @@ byteOffset += byteLength;

};
export { isEqualArrayBuffer, concatArrayBuffer, decatArrayBuffer, fromString, toString };
export { isEqualArrayBuffer, concatArrayBuffer, deconcatArrayBuffer, fromString, toString };

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

import { concatArrayBuffer, decatArrayBuffer, fromString, toString } from "./ArrayBuffer";
import { concatArrayBuffer, deconcatArrayBuffer, fromString, toString } from "./ArrayBuffer";
const MAX_PACKET_HEADER_SIZE = 4294967295;

@@ -31,4 +31,4 @@ const HEADER_BYTE_SIZE = 4;

for (let index = 0, indexMax = headerDataView.byteLength / 4; index < indexMax; index++) byteLengthList.push(headerDataView.getUint32(4 * index, !1));
return decatArrayBuffer(chainArrayBufferPacket, byteLengthList, payloadOffset);
return deconcatArrayBuffer(chainArrayBufferPacket, byteLengthList, payloadOffset);
};
export { MAX_PACKET_HEADER_SIZE, HEADER_BYTE_SIZE, packArrayBufferHeader, parseArrayBufferHeader, packArrayBufferPacket, parseArrayBufferPacket, packChainArrayBufferPacket, parseChainArrayBufferPacket };
import { request as httpRequest } from "http";
import { request as httpsRequest } from "https";
import { URL } from "url";
import { createGunzip } from "zlib";
import { withRetryAsync } from "../common/function";
import { receiveBufferAsync, toArrayBuffer } from "./data/Buffer";
const urlToOption = ({protocol, hostname, hash, search, pathname, href, port, username, password}) => {
const option = {
protocol,
hostname,
hash,
search,
pathname,
href,
path: `${pathname}${search}`
};
"" !== port && (option.port = Number(port));
(username || password) && (option.auth = `${username}:${password}`);
return option;
};
const requestAsync = (option, body = null) => new Promise((resolve, reject) => {
const request = ("https:" === option.protocol ? httpsRequest : httpRequest)(option, resolve);
const requestAsync = (url, option, body) => new Promise((resolve, reject) => {
const urlObject = (url => url instanceof URL ? url : new URL(url))(url);
const request = ("https:" === urlObject.protocol ? httpsRequest : httpRequest)(urlObject, option, resolve);
const endWithError = error => {
request.destroy();
error.urlObject = urlObject;
error.option = option;

@@ -32,15 +19,11 @@ reject(error);

});
const ping = async ({url, body, wait = 5e3, maxRetry = 0, ...option}) => {
option = {
...option,
...urlToOption(new URL(url)),
const ping = async (url, {method = "GET", headers, body, wait = 5e3, maxRetry = 0} = {}) => withRetryAsync(async () => {
(await requestAsync(url, {
method,
headers,
timeout: wait
};
await withRetryAsync(async () => {
(await requestAsync(option, body)).destroy();
}, maxRetry, wait);
};
}, body)).destroy();
}, maxRetry, wait);
const fetchLikeRequest = async (url, {method = "GET", headers: requestHeaders, body, timeout = 1e4} = {}) => {
const option = {
...urlToOption(new URL(url)),
method,

@@ -53,3 +36,3 @@ headers: {

};
const response = await requestAsync(option, body);
const response = await requestAsync(url, option, body);
const status = response.statusCode;

@@ -60,6 +43,6 @@ return {

headers: response.headers,
...wrapPayload(response, timeout)
...wrapResponse(response, timeout)
};
};
const wrapPayload = (response, timeout) => {
const wrapResponse = (response, timeout) => {
let isKeep;

@@ -96,2 +79,2 @@ let isDropped;

const parseJSON = text => JSON.parse(text);
export { urlToOption, requestAsync, ping, fetchLikeRequest };
export { requestAsync, ping, fetchLikeRequest };

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

import { URL } from "url";
import { isBasicObject } from "../../../common/check";

@@ -3,0 +2,0 @@ import { createTreeDepthFirstSearch } from "../../../common/data/Tree";

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

import { URL } from "url";
import { get as httpGet } from "http";
import { get as httpsGet } from "https";
import { urlToOption } from "../../net";
import { WEBSOCKET_VERSION, WEBSOCKET_EVENT, getRequestKey, getRespondKey } from "./function";
import { WEBSOCKET_VERSION, getRequestKey, getRespondKey } from "./function";
import { createWebSocket } from "./WebSocket";

@@ -10,30 +8,21 @@ const VALID_WEBSOCKET_PROTOCOL_SET = new Set([ "wss:", "ws:", "https:", "http:" ]);

const DEFAULT_ON_UPGRADE_RESPONSE = (webSocket, response, bodyHeadBuffer) => webSocket.doCloseSocket();
const createWebSocketClient = ({urlString, option = {}, onError, onUpgradeResponse = DEFAULT_ON_UPGRADE_RESPONSE, frameLengthLimit}) => {
const url = new URL(urlString);
if (!VALID_WEBSOCKET_PROTOCOL_SET.has(url.protocol)) throw new Error(`[WebSocketClient] invalid url protocol: ${url.protocol}`);
if (!url.host) throw new Error(`[WebSocketClient] invalid url host: ${url.host}`);
option.isSecure = SECURE_WEBSOCKET_PROTOCOL_SET.has(url.protocol);
const {requestOption, requestProtocolString, responseKey} = ((url, {key, isSecure, headers, origin = "", requestProtocolString = ""}) => {
const requestKey = key || getRequestKey();
const responseKey = getRespondKey(requestKey);
return {
requestOption: {
...urlToOption(url),
protocol: void 0,
port: "" !== url.port ? url.port : isSecure ? 443 : 80,
headers: {
...headers,
origin,
upgrade: "websocket",
connection: "upgrade",
"sec-websocket-version": WEBSOCKET_VERSION,
"sec-websocket-key": requestKey,
"sec-websocket-protocol": requestProtocolString
}
},
requestProtocolString,
responseKey
};
})(url, option);
const request = (option.isSecure ? httpsGet : httpGet)(requestOption);
const createWebSocketClient = ({urlString, option: {key, headers, origin = "", requestProtocolString = ""} = {}, onError, onUpgradeResponse = DEFAULT_ON_UPGRADE_RESPONSE, frameLengthLimit}) => {
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}`);
const isSecure = SECURE_WEBSOCKET_PROTOCOL_SET.has(urlObject.protocol);
const requestKey = key || getRequestKey();
const responseKey = getRespondKey(requestKey);
urlObject.protocol = isSecure ? "https:" : "http:";
const request = (isSecure ? httpsGet : httpGet)(urlObject, {
headers: {
origin,
upgrade: "websocket",
connection: "upgrade",
"sec-websocket-version": WEBSOCKET_VERSION,
"sec-websocket-key": requestKey,
"sec-websocket-protocol": requestProtocolString,
...headers
}
});
request.on("error", error => {

@@ -55,4 +44,4 @@ if (!request.aborted) {

});
webSocket.origin = option.origin;
webSocket.isSecure = option.isSecure;
webSocket.origin = origin;
webSocket.isSecure = isSecure;
await onUpgradeResponse(webSocket, response, bodyHeadBuffer);

@@ -59,0 +48,0 @@ webSocket.isClosed() || ((webSocket, response, responseKey, requestProtocolString) => {

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

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

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc