derived-cli 0.0.4 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/bundle.js +1 -1
  2. package/package.json +13 -13
package/dist/bundle.js CHANGED
@@ -44,7 +44,7 @@ ${i.style.help("(Use arrow keys)")}`);let _=Wr({items:f,active:m,renderItem({ite
44
44
  ${i.style.description(y.description)}`:"";return[[b,C,L].filter(Boolean).join(" "),`${O??_}${S}${W}`]});var Us=k(ar(),1);var _d=k(Et(),1),im={icon:{cursor:me.pointer},style:{disabled:e=>Us.default.dim(`- ${e}`),description:e=>Us.default.cyan(e)},helpMode:"auto",indexMode:"hidden"};function Pt(e){return!T.isSeparator(e)&&!e.disabled}function om(e){return e.map(r=>{if(T.isSeparator(r))return r;if(typeof r=="string")return{value:r,name:r,short:r,disabled:!1};let t=r.name??String(r.value),n={value:r.value,name:t,short:r.short??t,disabled:r.disabled??!1};return r.description&&(n.description=r.description),n})}var zi=X((e,r)=>{let{loop:t=!0,pageSize:n=7}=e,i=De(!0),o=Y(im,e.theme),[u,a]=w("idle"),s=J({status:u,theme:o}),c=De(),f=le(()=>om(e.choices),[e.choices]),d=le(()=>{let _=f.findIndex(Pt),O=f.findLastIndex(Pt);if(_===-1)throw new Te("[select prompt] No selectable choices. All choices are disabled.");return{first:_,last:O}},[f]),h=le(()=>"default"in e?f.findIndex(_=>Pt(_)&&_.value===e.default):-1,[e.default,f]),[p,b]=w(h===-1?d.first:h),v=f[p];Q((_,O)=>{if(clearTimeout(c.current),ee(_))a("done"),r(v.value);else if(ur(_)||pt(_)){if(O.clearLine(0),t||ur(_)&&p!==d.first||pt(_)&&p!==d.last){let L=ur(_)?-1:1,W=p;do W=(W+L+f.length)%f.length;while(!Pt(f[W]));b(W)}}else if(hi(_)&&!Number.isNaN(Number(O.line))){let L=Number(O.line)-1,W=f[L];W!=null&&Pt(W)&&b(L),c.current=setTimeout(()=>{O.clearLine(0)},700)}else if(vt(_))O.clearLine(0);else{let L=O.line.toLowerCase(),W=f.findIndex(A=>T.isSeparator(A)||!Pt(A)?!1:A.name.toLowerCase().startsWith(L));W!==-1&&b(W),c.current=setTimeout(()=>{O.clearLine(0)},700)}}),Se(()=>()=>{clearTimeout(c.current)},[]);let m=o.style.message(e.message,u),D="",y="";(o.helpMode==="always"||o.helpMode==="auto"&&i.current)&&(i.current=!1,f.length>n?y=`
45
45
  ${o.style.help(`(${e.instructions?.pager??"Use arrow keys to reveal more choices"})`)}`:D=o.style.help(`(${e.instructions?.navigation??"Use arrow keys"})`));let C=Wr({items:f,active:p,renderItem({item:_,isActive:O,index:L}){if(T.isSeparator(_))return` ${_.separator}`;let W=o.indexMode==="number"?`${L+1}. `:"";if(_.disabled){let te=typeof _.disabled=="string"?_.disabled:"(disabled)";return o.style.disabled(`${W}${_.name} ${te}`)}let A=O?o.style.highlight:te=>te,V=O?o.icon.cursor:" ";return A(`${V} ${W}${_.name}`)},pageSize:n,loop:t});if(u==="done")return`${s} ${m} ${o.style.answer(v.short)}`;let S=v.description?`
46
46
  ${o.style.description(v.description)}`:"";return`${[s,m,D].filter(Boolean).join(" ")}
47
- ${C}${y}${S}${_d.default.cursorHide}`});var ev=k(require("node:readline"),1),G=k(Y1(),1),il=k(X1(),1),rv=k(Pa(),1);var tv=k(Et(),1),Z1={set:(e,r="",t)=>{let n=e;r.split(".").forEach((i,o,u)=>{i==="__proto__"||i==="constructor"||(o===u.length-1?n[i]=t:(!(i in n)||typeof n[i]!="object")&&(n[i]={}),n=n[i])})},get:(e,r="",t)=>{let n=o=>String.prototype.split.call(r,o).filter(Boolean).reduce((u,a)=>u==null?u:u[a],e),i=n(/[,[\]]+?/)||n(/[,.[\]]+?/);return i===void 0||i===e?t:i}};async function tl(e,r,t){let n=e[r];return typeof n=="function"?(0,il.default)(n)(t):n}var nl=class extends Error{name="TTYError";isTtyError=!0};function vA(e){e.skipTTYChecks=e.skipTTYChecks===void 0?!0:e.skipTTYChecks;let r=e.input||process.stdin;if(!e.skipTTYChecks&&!r.isTTY)throw new nl("Prompts can not be meaningfully rendered in non-TTY environments");let t=new rv.default;return t.pipe(e.output||process.stdout),{terminal:!0,...e,input:r,output:t}}function bA(e){return Array.isArray(e)}function mA(e){return Object.values(e).every(r=>typeof r=="object"&&!Array.isArray(r)&&r!=null)}function yA(e){return!!(e.prototype&&"run"in e.prototype&&typeof e.prototype.run=="function")}var mn=class{prompts;answers={};process=G.EMPTY;abortController=new AbortController;opt;constructor(r,t={}){this.opt=t,this.prompts=r}async run(r,t){this.abortController=new AbortController,this.answers=typeof t=="object"?{...t}:{};let n;return bA(r)?n=(0,G.from)(r):(0,G.isObservable)(r)?n=r:mA(r)?n=(0,G.from)(Object.entries(r).map(([i,o])=>Object.assign({},o,{name:i}))):n=(0,G.from)([r]),this.process=n.pipe((0,G.concatMap)(i=>(0,G.of)(i).pipe((0,G.concatMap)(o=>(0,G.from)(this.shouldRun(o).then(u=>{if(u)return o})).pipe((0,G.filter)(u=>u!=null))),(0,G.concatMap)(o=>(0,G.defer)(()=>(0,G.from)(this.fetchAnswer(o))))))),(0,G.lastValueFrom)(this.process.pipe((0,G.reduce)((i,o)=>(Z1.set(i,o.name,o.answer),i),this.answers))).then(()=>this.answers).finally(()=>this.close())}prepareQuestion=async r=>{let[t,n,i]=await Promise.all([tl(r,"message",this.answers),tl(r,"default",this.answers),tl(r,"choices",this.answers)]),o;return Array.isArray(i)&&(o=i.map(u=>{let a=typeof u!="object"||u==null?{name:u,value:u}:{...u,value:"value"in u?u.value:"name"in u?u.name:void 0};return"value"in a&&Array.isArray(n)?{checked:n.includes(a.value),...a}:a})),Object.assign({},r,{message:t,default:n,choices:o,type:r.type in this.prompts?r.type:"input"})};fetchAnswer=async r=>{let t=await this.prepareQuestion(r),n=this.prompts[t.type];if(n==null)throw new Error(`Prompt for type ${t.type} not found`);let i,o=yA(n)?(f,d)=>new Promise((h,p)=>{let{signal:b}=d;if(b.aborted){p(new Rr({cause:b.reason}));return}let v=ev.default.createInterface(vA(d)),m=()=>{this.close(),process.kill(process.pid,"SIGINT"),console.log("")},D=()=>{process.removeListener("exit",m),v.removeListener("SIGINT",m),v.setPrompt(""),v.output.unmute(),v.output.write(tv.default.cursorShow),v.output.end(),v.close()};process.on("exit",m),v.on("SIGINT",m);let y=new n(f,v,this.answers),C=()=>{D(),i?.()},S=()=>{p(new Rr({cause:b.reason})),C()};b.addEventListener("abort",S),i=()=>{b.removeEventListener("abort",S),i=void 0},y.run().then(h,p).finally(C)}):n,u,{signal:a}=this.opt;if(a?.aborted)this.abortController.abort(a.reason);else if(a){let f=()=>this.abortController.abort(a.reason);a.addEventListener("abort",f),u=()=>{a.removeEventListener("abort",f)}}let{filter:s=f=>f}=t,{signal:c}=this.abortController;return o(t,{...this.opt,signal:c}).then(f=>({name:t.name,answer:s(f,this.answers)})).finally(()=>{i?.(),u?.()})};close=()=>{this.abortController.abort()};shouldRun=async r=>{if(r.askAnswered!==!0&&Z1.get(this.answers,r.name)!==void 0)return!1;let{when:t}=r;return typeof t=="function"?!!await(0,il.default)(t)(this.answers):t!==!1}};var nv={input:js,select:zi,list:zi,number:Ts,confirm:Ps,rawlist:Is,expand:Ms,checkbox:Wa,password:Ls,editor:Bs,search:Ns};function iv(e){function r(t,n){let i=new mn(r.prompts,e),o=i.run(t,n);return Object.assign(o,{ui:i})}return r.prompts={...nv},r.registerPrompt=function(t,n){return r.prompts[t]=n,this},r.restoreDefaultPrompts=function(){r.prompts={...nv}},r}var ol=iv();function DA(e,r){ol.registerPrompt(e,r)}function _A(){ol.restoreDefaultPrompts()}var EA={prompt:ol,ui:{Prompt:mn},createPromptModule:iv,registerPrompt:DA,restoreDefaultPrompts:_A,Separator:T},ov=EA;var uv=async()=>{try{let e=await Ir.getToken();if(e)return e;let{jwtToken:r}=await ov.prompt([{type:"password",name:"jwtToken",message:"Please enter your Token:",validate:t=>t.length>0||"Token is required"}]);return r}catch(e){return console.error(e),null}};var Uq=k(r6(),1),Wq=k(vl(),1),Vq=k(yl(),1),f6=k(ha(),1),$q=k(l6(),1);var Sl=f6.default;var x6=require("events"),va=class extends x6.EventEmitter{constructor(t){super();this.url=t}ws=null;reconnectAttempts=0;maxReconnectAttempts=5;reconnectInterval=5e3;connect(){this.ws=new Sl(this.url),this.ws.on("open",()=>{console.log("Connected to WebSocket server"),this.reconnectAttempts=0,this.emit("connected")}),this.ws.on("message",t=>{try{let n=JSON.parse(t.toString());this.emit("message",n)}catch(n){console.error("Error parsing message:",n)}}),this.ws.on("close",()=>{console.log("WebSocket connection closed"),this.emit("disconnected"),this.handleReconnect()}),this.ws.on("error",t=>{console.error("WebSocket error:",t),this.emit("error",t)})}handleReconnect(){this.reconnectAttempts<this.maxReconnectAttempts?(this.reconnectAttempts++,console.log(`Attempting to reconnect (${this.reconnectAttempts}/${this.maxReconnectAttempts})...`),setTimeout(()=>this.connect(),this.reconnectInterval)):(console.error("Max reconnection attempts reached"),this.emit("maxReconnectAttemptsReached"))}disconnect(){this.ws&&(this.ws.close(),this.ws=null)}send(t){this.ws&&this.ws.readyState===Sl.OPEN?this.ws.send(JSON.stringify(t)):console.error("WebSocket is not connected")}};var Gq="http://0.0.0.0:8080/echo";async function zq(){let e=new va(Gq);try{let r=await uv();e.on("connected",()=>{e.send({channel:wn.REGISTER,content:"register",payload:[r,Al]})}),e.on("message",t=>{Rl(t,e)}),e.on("error",t=>{console.error("WebSocket error:",t)}),e.on("disconnected",()=>{console.log("Disconnected from server")}),e.on("maxReconnectAttemptsReached",()=>{console.error("Failed to reconnect to server after maximum attempts"),process.exit(1)}),e.connect(),process.on("SIGINT",()=>{console.log(`
47
+ ${C}${y}${S}${_d.default.cursorHide}`});var ev=k(require("node:readline"),1),G=k(Y1(),1),il=k(X1(),1),rv=k(Pa(),1);var tv=k(Et(),1),Z1={set:(e,r="",t)=>{let n=e;r.split(".").forEach((i,o,u)=>{i==="__proto__"||i==="constructor"||(o===u.length-1?n[i]=t:(!(i in n)||typeof n[i]!="object")&&(n[i]={}),n=n[i])})},get:(e,r="",t)=>{let n=o=>String.prototype.split.call(r,o).filter(Boolean).reduce((u,a)=>u==null?u:u[a],e),i=n(/[,[\]]+?/)||n(/[,.[\]]+?/);return i===void 0||i===e?t:i}};async function tl(e,r,t){let n=e[r];return typeof n=="function"?(0,il.default)(n)(t):n}var nl=class extends Error{name="TTYError";isTtyError=!0};function vA(e){e.skipTTYChecks=e.skipTTYChecks===void 0?!0:e.skipTTYChecks;let r=e.input||process.stdin;if(!e.skipTTYChecks&&!r.isTTY)throw new nl("Prompts can not be meaningfully rendered in non-TTY environments");let t=new rv.default;return t.pipe(e.output||process.stdout),{terminal:!0,...e,input:r,output:t}}function bA(e){return Array.isArray(e)}function mA(e){return Object.values(e).every(r=>typeof r=="object"&&!Array.isArray(r)&&r!=null)}function yA(e){return!!(e.prototype&&"run"in e.prototype&&typeof e.prototype.run=="function")}var mn=class{prompts;answers={};process=G.EMPTY;abortController=new AbortController;opt;constructor(r,t={}){this.opt=t,this.prompts=r}async run(r,t){this.abortController=new AbortController,this.answers=typeof t=="object"?{...t}:{};let n;return bA(r)?n=(0,G.from)(r):(0,G.isObservable)(r)?n=r:mA(r)?n=(0,G.from)(Object.entries(r).map(([i,o])=>Object.assign({},o,{name:i}))):n=(0,G.from)([r]),this.process=n.pipe((0,G.concatMap)(i=>(0,G.of)(i).pipe((0,G.concatMap)(o=>(0,G.from)(this.shouldRun(o).then(u=>{if(u)return o})).pipe((0,G.filter)(u=>u!=null))),(0,G.concatMap)(o=>(0,G.defer)(()=>(0,G.from)(this.fetchAnswer(o))))))),(0,G.lastValueFrom)(this.process.pipe((0,G.reduce)((i,o)=>(Z1.set(i,o.name,o.answer),i),this.answers))).then(()=>this.answers).finally(()=>this.close())}prepareQuestion=async r=>{let[t,n,i]=await Promise.all([tl(r,"message",this.answers),tl(r,"default",this.answers),tl(r,"choices",this.answers)]),o;return Array.isArray(i)&&(o=i.map(u=>{let a=typeof u!="object"||u==null?{name:u,value:u}:{...u,value:"value"in u?u.value:"name"in u?u.name:void 0};return"value"in a&&Array.isArray(n)?{checked:n.includes(a.value),...a}:a})),Object.assign({},r,{message:t,default:n,choices:o,type:r.type in this.prompts?r.type:"input"})};fetchAnswer=async r=>{let t=await this.prepareQuestion(r),n=this.prompts[t.type];if(n==null)throw new Error(`Prompt for type ${t.type} not found`);let i,o=yA(n)?(f,d)=>new Promise((h,p)=>{let{signal:b}=d;if(b.aborted){p(new Rr({cause:b.reason}));return}let v=ev.default.createInterface(vA(d)),m=()=>{this.close(),process.kill(process.pid,"SIGINT"),console.log("")},D=()=>{process.removeListener("exit",m),v.removeListener("SIGINT",m),v.setPrompt(""),v.output.unmute(),v.output.write(tv.default.cursorShow),v.output.end(),v.close()};process.on("exit",m),v.on("SIGINT",m);let y=new n(f,v,this.answers),C=()=>{D(),i?.()},S=()=>{p(new Rr({cause:b.reason})),C()};b.addEventListener("abort",S),i=()=>{b.removeEventListener("abort",S),i=void 0},y.run().then(h,p).finally(C)}):n,u,{signal:a}=this.opt;if(a?.aborted)this.abortController.abort(a.reason);else if(a){let f=()=>this.abortController.abort(a.reason);a.addEventListener("abort",f),u=()=>{a.removeEventListener("abort",f)}}let{filter:s=f=>f}=t,{signal:c}=this.abortController;return o(t,{...this.opt,signal:c}).then(f=>({name:t.name,answer:s(f,this.answers)})).finally(()=>{i?.(),u?.()})};close=()=>{this.abortController.abort()};shouldRun=async r=>{if(r.askAnswered!==!0&&Z1.get(this.answers,r.name)!==void 0)return!1;let{when:t}=r;return typeof t=="function"?!!await(0,il.default)(t)(this.answers):t!==!1}};var nv={input:js,select:zi,list:zi,number:Ts,confirm:Ps,rawlist:Is,expand:Ms,checkbox:Wa,password:Ls,editor:Bs,search:Ns};function iv(e){function r(t,n){let i=new mn(r.prompts,e),o=i.run(t,n);return Object.assign(o,{ui:i})}return r.prompts={...nv},r.registerPrompt=function(t,n){return r.prompts[t]=n,this},r.restoreDefaultPrompts=function(){r.prompts={...nv}},r}var ol=iv();function DA(e,r){ol.registerPrompt(e,r)}function _A(){ol.restoreDefaultPrompts()}var EA={prompt:ol,ui:{Prompt:mn},createPromptModule:iv,registerPrompt:DA,restoreDefaultPrompts:_A,Separator:T},ov=EA;var uv=async()=>{try{let e=await Ir.getToken();if(e)return e;let{jwtToken:r}=await ov.prompt([{type:"password",name:"jwtToken",message:"Please enter your Token:",validate:t=>t.length>0||"Token is required"}]);return r}catch(e){return console.error(e),null}};var Uq=k(r6(),1),Wq=k(vl(),1),Vq=k(yl(),1),f6=k(ha(),1),$q=k(l6(),1);var Sl=f6.default;var x6=require("events"),va=class extends x6.EventEmitter{constructor(t){super();this.url=t}ws=null;reconnectAttempts=0;maxReconnectAttempts=5;reconnectInterval=5e3;connect(){this.ws=new Sl(this.url),this.ws.on("open",()=>{console.log("Connected to WebSocket server"),this.reconnectAttempts=0,this.emit("connected")}),this.ws.on("message",t=>{try{let n=JSON.parse(t.toString());this.emit("message",n)}catch(n){console.error("Error parsing message:",n)}}),this.ws.on("close",()=>{console.log("WebSocket connection closed"),this.emit("disconnected"),this.handleReconnect()}),this.ws.on("error",t=>{console.error("WebSocket error:",t),this.emit("error",t)})}handleReconnect(){this.reconnectAttempts<this.maxReconnectAttempts?(this.reconnectAttempts++,console.log(`Attempting to reconnect (${this.reconnectAttempts}/${this.maxReconnectAttempts})...`),setTimeout(()=>this.connect(),this.reconnectInterval)):(console.error("Max reconnection attempts reached"),this.emit("maxReconnectAttemptsReached"))}disconnect(){this.ws&&(this.ws.close(),this.ws=null)}send(t){this.ws&&this.ws.readyState===Sl.OPEN?this.ws.send(JSON.stringify(t)):console.error("WebSocket is not connected")}};var Gq="wss://api.derived.dev/echo";async function zq(){let e=new va(Gq);try{let r=await uv();e.on("connected",()=>{e.send({channel:wn.REGISTER,content:"register",payload:[r,Al]})}),e.on("message",t=>{Rl(t,e)}),e.on("error",t=>{console.error("WebSocket error:",t)}),e.on("disconnected",()=>{console.log("Disconnected from server")}),e.on("maxReconnectAttemptsReached",()=>{console.error("Failed to reconnect to server after maximum attempts"),process.exit(1)}),e.connect(),process.on("SIGINT",()=>{console.log(`
48
48
  Disconnecting from server...`),e.disconnect(),process.exit(0)})}catch(r){console.error("Error:",r),process.exit(1)}}zq();
49
49
  /*! Bundled license information:
50
50
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "derived-cli",
3
- "version": "0.0.4",
3
+ "version": "0.0.7",
4
4
  "description": "CLI for Derived",
5
5
  "author": "Derived",
6
6
  "license": "MIT",
@@ -9,6 +9,17 @@
9
9
  ],
10
10
  "main": "./dist/bundle.js",
11
11
  "bin": "./dist/bundle.js",
12
+ "scripts": {
13
+ "build:js": "node build.js",
14
+ "build": "node build.js && npx pkg dist/bundle.js -t node18-macos-x64 -o dist/derived-cli && cp dist/derived-cli /Users/vishalacharya/Documents/derived/google-drive/exes && cp ./dist/bundle.js /Users/vishalacharya/Documents/derived/google-drive/exes",
15
+ "clean": "rm -rf dist",
16
+ "dev": "nodemon --exec \"node -r esbuild-register ./src/main.ts\" -e .ts",
17
+ "lint": "tsc --noEmit && eslint \"src/**/*.ts*\" --max-warnings 0",
18
+ "start": "node -r esbuild-register ./src/main.ts",
19
+ "format": "prettier --write .",
20
+ "test:watch": "vitest watch",
21
+ "format:biome": "npx @biomejs/biome format --write ./src"
22
+ },
12
23
  "dependencies": {
13
24
  "dotenv": "16.4.5",
14
25
  "inquirer": "^12.6.0",
@@ -26,16 +37,5 @@
26
37
  "nexe": "5.0.0-beta.4",
27
38
  "nodemon": "^3.1.0",
28
39
  "typescript": "^5.8.3"
29
- },
30
- "scripts": {
31
- "build:js": "node build.js",
32
- "build": "node build.js && npx pkg dist/bundle.js -t node18-macos-x64 -o dist/derived-cli && cp dist/derived-cli /Users/vishalacharya/Documents/derived/google-drive/exes && cp ./dist/bundle.js /Users/vishalacharya/Documents/derived/google-drive/exes",
33
- "clean": "rm -rf dist",
34
- "dev": "nodemon --exec \"node -r esbuild-register ./src/main.ts\" -e .ts",
35
- "lint": "tsc --noEmit && eslint \"src/**/*.ts*\" --max-warnings 0",
36
- "start": "node -r esbuild-register ./src/main.ts",
37
- "format": "prettier --write .",
38
- "test:watch": "vitest watch",
39
- "format:biome": "npx @biomejs/biome format --write ./src"
40
40
  }
41
- }
41
+ }