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

2

bin/option.js
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: $1=hostname:port/localhost:unusedPort","root,R/SP|common option","input-file,I/SP|common option","output-file,O/SP|common option")
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,...")

@@ -5,0 +5,0 @@ const r=s.map(({name:e})=>e)

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

const p=[];(await(0,n.getDirectorySubInfoList)(t)).forEach(e=>e.stat.isDirectory()?l.push(e):p.push(e))
return(0,c.responderSendBufferCompress)(r,{type:i.BASIC_EXTENSION_MAP.html,buffer:Buffer.from((0,d.COMMON_LAYOUT)([`<title>${s}</title>`,(0,d.COMMON_STYLE)(),u],[`<b class="auto-height">${s}</b>`,a&&S("/list",[(0,e.dirname)(a)],"🔙|.."),...l.sort(f).map(({name:e,stat:{mtimeMs:r}})=>S("/list",[a,e],`📁|${e}/`,0,r)),...p.sort(f).map(({name:e,stat:{size:r,mtimeMs:t}})=>S("/file",[a,e],`📄|${e}`,r,t,`download="${e}"`))]))})}
return(0,c.responderSendBufferCompress)(r,{type:i.BASIC_EXTENSION_MAP.html,buffer:Buffer.from((0,d.COMMON_LAYOUT)([`<title>${s}</title>`,(0,d.COMMON_STYLE)(),u],[`<b class="auto-height">${s}</b>`,a&&S("/list",[(0,e.dirname)(a)],"🔙",".."),...l.sort(f).map(({name:e,stat:{mtimeMs:r}})=>S("/list",[a,e],"📁",`${e}/`,0,r)),...p.sort(f).map(({name:e,stat:{size:r,mtimeMs:t}})=>S("/file",[a,e],"📄",e,r,t,`download="${e}"`))]))})}
const u="<style>\nbody { white-space: pre; }\na, b { display: flex; align-items: center; }\na { text-decoration: none; border-top: 1px solid #ddd; }\na:hover { background: #eee; }\np.name { overflow: hidden; text-overflow: ellipsis; }\np.size, p.date { padding-left: 1em; text-align: right; opacity: 0.5 }\np.size { flex: 1; }\n@media only screen and (max-width: 768px) { p.date { display: none; } }\n</style>"
const f=({name:e},{name:t})=>(0,r.compareStringWithNumber)(e,t)
const y=e=>(0,o.escapeHTML)((0,a.toPosixPath)(e))
const S=(r,i,n,s,c,l)=>`<a class="auto-height" href="${r}/${(r=>encodeURIComponent((0,a.toPosixPath)((0,e.join)(...r))))(i)}" ${l||""}>\n<p class="name">${y(n)}</p>\n<p class="size">${s?`${(0,t.binary)(s)}B`:""}</p>\n<p class="date">${c?(0,o.escapeHTML)(new Date(c).toISOString()):""}</p>\n</a>`
const S=(r,i,n,s,c,l,p,d=`${r}/${(r=>encodeURIComponent((0,a.toPosixPath)((0,e.join)(...r))))(i)}`)=>`<a class="auto-height" href="${d}" ${p?`download="${p}"`:""}>\n<object class="name">${p?`<a href="${d}" target="_blank">${n}</a>`:n}</object>\n<p class="name">|${(0,o.escapeHTML)(s)}</p>\n<p class="size">${c?`${(0,t.binary)(c)}B`:""}</p>\n<p class="date">${l?(0,o.escapeHTML)(new Date(l).toISOString()):""}</p>\n</a>`

@@ -1,52 +0,56 @@

var e=require("./time")
var t=require("./error")
const r=(e,t=250,r=!1)=>{let o=null
return(...s)=>{const i=r&&null===o
var t=require("./time")
var e=require("./error")
const r=(t,e=250,r=!1)=>{let o=null
return(...s)=>{const n=r&&null===o
clearTimeout(o)
o=setTimeout(()=>{o=null
!r&&e.apply(null,s)},t)
i&&e.apply(null,s)}}
!r&&t.apply(null,s)},e)
n&&t.apply(null,s)}}
exports.debounce=r
exports.throttle=((e,t=250,r=!1)=>{let o=null
exports.throttle=((t,e=250,r=!1)=>{let o=null
return(...s)=>{if(o)return
const i=r&&null===o
const n=r&&null===o
o=setTimeout(()=>{o=null
!r&&e.apply(null,s)},t)
i&&e.apply(null,s)}})
exports.lossyAsync=((e,r=t.rethrowError)=>{let o
!r&&t.apply(null,s)},e)
n&&t.apply(null,s)}})
exports.lossyAsync=((t,r=e.rethrowError)=>{let o
const s=()=>{o=void 0}
const i=e=>{o=void 0
r(e)}
return{trigger:(...t)=>{if(!o)try{const r=e.apply(null,t)
r instanceof Object&&r.then?o=r.then(s,i):s()}catch(e){i(e)}},getRunningPromise:()=>o}})
exports.withDelayArgvQueue=((e,t=r,...o)=>{let s=[]
const i=t(()=>{const t=s
const n=t=>{o=void 0
r(t)}
return{trigger:(...e)=>{if(!o)try{const r=t.apply(null,e)
r instanceof Object&&r.then?o=r.then(s,n):s()}catch(t){n(t)}},getRunningPromise:()=>o}})
exports.withDelayArgvQueue=((t,e=r,...o)=>{let s=[]
const n=e(()=>{const e=s
s=[]
e(t)},...o)
return(...e)=>{s.push(e)
i()}})
exports.withRepeat=((e,t=0)=>{let r=0
for(;t>r;){e(r,t)
t(e)},...o)
return(...t)=>{s.push(t)
n()}})
exports.withRepeat=((t,e=0)=>{let r=0
for(;e>r;){t(r,e)
r++}})
exports.withRepeatAsync=(async(t,r=0,o=0)=>{let s=0
for(;r>s;){const i=(0,e.clock)()
await t(s,r)
exports.withRepeatAsync=(async(e,r=0,o=0)=>{let s=0
for(;r>s;){const n=(0,t.clock)()
await e(s,r)
s++
const n=o-((0,e.clock)()-i)
n>0&&await(0,e.setTimeoutAsync)(n)}})
exports.withRetry=((e,t=1/0)=>{let r=0
for(;;)try{return e(r,t)}catch(e){if(t<++r)throw e}})
exports.withRetryAsync=(async(t,r=1/0,o=0)=>{let s=0
for(;;){const i=(0,e.clock)()
try{return await t(s,r)}catch(t){if(r<++s)throw t
const n=o-((0,e.clock)()-i)
n>0&&await(0,e.setTimeoutAsync)(n)}}})
exports.withTimeoutAsync=((e,t)=>Promise.race([e(),new Promise((e,r)=>setTimeout(()=>r(new Error(`[withTimeoutAsync] timeout after: ${t}`)),t))]))
exports.withTimeoutPromise=((e,t)=>Promise.race([e,new Promise((e,r)=>setTimeout(()=>r(new Error(`[withTimeoutPromise] timeout after: ${t}`)),t))]))
exports.createInsideOutPromise=(()=>{let e,t
return{promise:new Promise((r,o)=>{e=r
t=o}),resolve:r=>{const o=e
e=t=void 0
o&&o(r)},reject:r=>{const o=t
e=t=void 0
const i=o-((0,t.clock)()-n)
i>0&&await(0,t.setTimeoutAsync)(i)}})
exports.withRetry=((t,e=1/0)=>{let r=0
for(;;)try{return t(r,e)}catch(t){if(e<++r)throw t}})
exports.withRetryAsync=(async(e,r=1/0,o=0)=>{let s=0
for(;;){const n=(0,t.clock)()
try{return await e(s,r)}catch(e){if(r<++s)throw e
const i=o-((0,t.clock)()-n)
i>0&&await(0,t.setTimeoutAsync)(i)}}})
exports.withTimeoutAsync=((t,e)=>o(t(),e))
const o=(t,e)=>{let r=null
return Promise.race([t,new Promise((t,o)=>{r=setTimeout(()=>o(new Error(`timeout after: ${e}`)),e)})]).then(t=>{clearTimeout(r)
return t},t=>{clearTimeout(r)
throw t})}
exports.withTimeoutPromise=o
exports.createInsideOutPromise=(()=>{let t,e
return{promise:new Promise((r,o)=>{t=r
e=o}),resolve:r=>{const o=t
t=e=void 0
o&&o(r)},reject:r=>{const o=e
t=e=void 0
o&&o(r)}}})

@@ -8,38 +8,39 @@ var e=require("path")

var s=require("./parser")
const i=(e,t=(()=>{}),r=(e=>e),o="",n=!1)=>({argumentCount:e,argumentListNormalize:r,argumentListVerify:t,description:o,optional:n})
const p={Optional:{optional:!0},Path:{isPath:!0},Any:i("0-",void 0,void 0,"any",!0),Toggle:i("0-",void 0,()=>[!0],"set to enable",!0)}
exports.Preset=p
Object.assign(p,...[["String",o.string,e=>e.map(String)],["Number",o.number,e=>e.map(Number)],["Boolean",o.boolean,e=>e.map(Boolean)],["Integer",o.integer,e=>e.map(parseInt)],["Function",o.basicFunction,void 0]].map(([e,t,r])=>{return{[`Single${e}`]:i(1,r=>{(0,o.arrayLength)(r,1)
t(r[0],`expect ${e}`)},r),[`All${e}`]:i("1-",r=>r.forEach((r,o)=>t(r,`expect ${e} at #${o}`)),r)}}))
const c=(e,t={})=>{const[r,...o]=e.split("|")
const[a,s="",i]=r.split(/\s*[\s\/]\s*/)
const[c,...l]=a.split(",")
const m=l[0]
const g=s.split(",")
return Object.assign({},...g.map(e=>{if(e&&!p[e])throw new Error(`invalid presetName: ${e}`)
return p[e]}).filter(Boolean),(0,n.objectDeleteUndefined)({name:c,shortName:m&&1===m.length?l[0]:void 0,aliasNameList:l,argumentCount:i||void 0,description:o.join("|")||void 0}),Array.isArray(t)?{extendFormatList:t}:t)}
Object.assign(p,{SinglePath:c("/SingleString,Path"),AllPath:c("/AllString,Path"),Config:c('config,c/SingleString,Optional|from ENV: set to "env"\nfrom JS/JSON file: set to "path/to/config.js|json"'),pickOneOf:e=>{if(e.length<=2)throw new Error(`expect more to pick: ${e}`)
return i(1,t=>{(0,o.arrayLength)(t,1);(0,o.oneOf)(t[0],e)},void 0,`one of:\n ${(0,a.arraySplitChunk)(e,4).map(e=>e.join(" ")).join("\n ")}`)},parseCompact:c,parseCompactList:(...e)=>e.map(e=>Array.isArray(e)?c(...e):c(e))})
Object.entries(p).forEach(([e,t])=>{const o=(0,r.splitCamelCase)(e).map(e=>e.charAt(0)).join("")
const i=e=>{throw new Error(e)}
const p=(e,t=(()=>{}),r=(e=>e),o="",n=!1)=>({argumentCount:e,argumentListNormalize:r,argumentListVerify:t,description:o,optional:n})
const c={Optional:{optional:!0},Path:{isPath:!0},Any:p("0-",void 0,void 0,"any",!0),Toggle:p("0-",void 0,()=>[!0],"set to enable",!0)}
exports.Preset=c
Object.assign(c,...[["String",o.string,e=>e.map(String)],["Number",o.number,e=>e.map(Number)],["Boolean",o.boolean,e=>e.map(Boolean)],["Integer",o.integer,e=>e.map(parseInt)],["Function",o.basicFunction,void 0]].map(([e,t,r])=>{return{[`Single${e}`]:p(1,r=>{(0,o.arrayLength)(r,1)
t(r[0],`expect ${e}`)},r),[`All${e}`]:p("1-",r=>r.forEach((r,o)=>t(r,`expect ${e} at #${o}`)),r)}}))
const l=(e,t={})=>{const[r,...o]=e.split("|")
const[a,s="",p]=r.split(/\s*[\s\/]\s*/)
const[l,...m]=a.split(",")
const g=m[0]
const u=s.split(",")
return Object.assign({},...u.map(e=>{e&&!c[e]&&i(`invalid presetName: ${e}`)
return c[e]}).filter(Boolean),(0,n.objectDeleteUndefined)({name:l,shortName:g&&1===g.length?m[0]:void 0,aliasNameList:m,argumentCount:p||void 0,description:o.join("|")||void 0}),Array.isArray(t)?{extendFormatList:t}:t)}
Object.assign(c,{SinglePath:l("/SingleString,Path"),AllPath:l("/AllString,Path"),Config:l('config,c/SingleString,Optional|from ENV: set to "env"\nfrom JS/JSON file: set to "path/to/config.js|json"'),pickOneOf:e=>{e.length<=2&&i(`expect more to pick: ${e}`)
return p(1,t=>{(0,o.arrayLength)(t,1);(0,o.oneOf)(t[0],e)},void 0,`one of:\n ${(0,a.arraySplitChunk)(e,4).map(e=>e.join(" ")).join("\n ")}`)},parseCompact:l,parseCompactList:(...e)=>e.map(e=>Array.isArray(e)?l(...e):l(e))})
Object.entries(c).forEach(([e,t])=>{const o=(0,r.splitCamelCase)(e).map(e=>e.charAt(0)).join("")
0
p[o]=t})
c[o]=t})
exports.getOptionalFormatFlag=((...e)=>t=>!e.some(e=>Boolean(t[e])))
exports.getOptionalFormatValue=((e,...t)=>r=>{const o=r[e]
return o&&!t.includes(o.argumentList[0])})
const l=async({parseCLI:r,parseENV:o,parseCONFIG:n,processOptionMap:a})=>{const s=m(r(process.argv.slice(2)),process.cwd())
const i=s.config&&s.config.argumentList[0]
const p=i?"env"===i?m(o(process.env),process.cwd()):m(n((0,t.tryRequire)((0,e.resolve)(process.cwd(),i))),(0,e.dirname)((0,e.resolve)(process.cwd(),i))):null
const c=a(Object.assign({},p,s))
return c}
exports.parseOptionMap=l
const m=(t,r)=>{Object.values(t).forEach(({format:{isPath:t},argumentList:o})=>t&&o.forEach((t,n)=>o[n]=(0,e.resolve)(r,t)))
const m=async({parseCLI:r,parseENV:o,parseCONFIG:n,processOptionMap:a})=>{const s=g(r(process.argv.slice(2)),process.cwd())
const p=s.config&&s.config.argumentList[0]
const c=p?"env"===p?g(o(process.env),process.cwd()):g(n((0,t.tryRequire)((0,e.resolve)(process.cwd(),p))||i(`failed to load config: ${p}`)),(0,e.dirname)((0,e.resolve)(process.cwd(),p))):null
const l=a(Object.assign({},c,s))
return l}
exports.parseOptionMap=m
const g=(t,r)=>{Object.values(t).forEach(({format:{isPath:t},argumentList:o})=>t&&o.forEach((t,n)=>o[n]=(0,e.resolve)(r,t)))
return t}
const g=e=>{const t=t=>e[t]&&e[t].argumentList
const u=e=>{const t=t=>e[t]&&e[t].argumentList
const r=(e,r)=>{const o=t(e)
if(!o)throw new Error(`expect option ${e}`)
if(void 0!==r&&o.length!==r)throw new Error(`expect option ${e} with ${r} value, get ${o.length}`)
o||i(`expect option ${e}`)
void 0!==r&&o.length!==r&&i(`expect option ${e} with ${r} value, get ${o.length}`)
return o}
return{optionMap:e,tryGet:t,tryGetFirst:t=>e[t]&&e[t].argumentList[0],get:r,getFirst:e=>r(e,1)[0]}}
exports.createOptionGetter=g
exports.createOptionGetter=u
exports.prepareOption=(e=>{const{parseCLI:t,parseENV:r,parseCONFIG:o,processOptionMap:n,formatUsage:a}=(0,s.createOptionParser)(e)
return{parseOption:async()=>g(await l({parseCLI:t,parseENV:r,parseCONFIG:o,processOptionMap:n})),formatUsage:a}})
return{parseOption:async()=>u(await m({parseCLI:t,parseENV:r,parseCONFIG:o,processOptionMap:n})),formatUsage:a}})

@@ -98,4 +98,15 @@ import { clock, setTimeoutAsync } from "./time";

};
const withTimeoutAsync = (func, timeout) => Promise.race([ func(), new Promise((resolve, reject) => setTimeout(() => reject(new Error(`[withTimeoutAsync] timeout after: ${timeout}`)), timeout)) ]);
const withTimeoutPromise = (promise, timeout) => Promise.race([ promise, new Promise((resolve, reject) => setTimeout(() => reject(new Error(`[withTimeoutPromise] timeout after: ${timeout}`)), timeout)) ]);
const withTimeoutAsync = (func, timeout) => withTimeoutPromise(func(), timeout);
const withTimeoutPromise = (promise, timeout) => {
let timeoutToken = null;
return Promise.race([ promise, new Promise((resolve, reject) => {
timeoutToken = setTimeout(() => reject(new Error(`timeout after: ${timeout}`)), timeout);
}) ]).then(result => {
clearTimeout(timeoutToken);
return result;
}, error => {
clearTimeout(timeoutToken);
throw error;
});
};
const createInsideOutPromise = () => {

@@ -102,0 +113,0 @@ let promiseResolve, promiseReject;

@@ -8,2 +8,5 @@ import { resolve, dirname } from "path";

import { createOptionParser } from "./parser";
const throwError = message => {
throw new Error(message);
};
const getPreset = (argumentCount, argumentListVerify = (() => {}), argumentListNormalize = (v => v), description = "", optional = !1) => ({

@@ -42,3 +45,3 @@ argumentCount,

return Object.assign({}, ...presetList.map(presetName => {
if (presetName && !Preset[presetName]) throw new Error(`invalid presetName: ${presetName}`);
presetName && !Preset[presetName] && throwError(`invalid presetName: ${presetName}`);
return Preset[presetName];

@@ -60,3 +63,3 @@ }).filter(Boolean), objectDeleteUndefined({

pickOneOf: selectList => {
if (selectList.length <= 2) throw new Error(`expect more to pick: ${selectList}`);
selectList.length <= 2 && throwError(`expect more to pick: ${selectList}`);
return getPreset(1, argumentList => {

@@ -84,3 +87,3 @@ arrayLength(argumentList, 1);

const optionMap = processOptionMap({
...config ? "env" === config ? optionMapResolvePath(parseENV(process.env), process.cwd()) : optionMapResolvePath(parseCONFIG(tryRequire(resolve(process.cwd(), config))), dirname(resolve(process.cwd(), config))) : null,
...config ? "env" === config ? optionMapResolvePath(parseENV(process.env), process.cwd()) : optionMapResolvePath(parseCONFIG(tryRequire(resolve(process.cwd(), config)) || throwError(`failed to load config: ${config}`)), dirname(resolve(process.cwd(), config))) : null,
...optionMapCLI

@@ -98,4 +101,4 @@ });

const argumentList = tryGet(name);
if (!argumentList) throw new Error(`expect option ${name}`);
if (void 0 !== argumentCount && argumentList.length !== argumentCount) throw new Error(`expect option ${name} with ${argumentCount} value, get ${argumentList.length}`);
argumentList || throwError(`expect option ${name}`);
void 0 !== argumentCount && argumentList.length !== argumentCount && throwError(`expect option ${name} with ${argumentCount} value, get ${argumentList.length}`);
return argumentList;

@@ -102,0 +105,0 @@ };

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

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

Sorry, the diff of this file is too big to display

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