devcon-cli 0.1.1 → 0.1.3

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.
package/dist/agent-bun.js CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- import*as O from"fs";import*as Y from"net";function _(B){let w=[],G=new Set,J=B.split(`
4
- `);for(let z=1;z<J.length;z++){let j=J[z].trim();if(!j)continue;let F=j.split(/\s+/),N=F[1],K=F[3];if(!N||!K)continue;if(K!=="0A")continue;let U=N.split(":")[1];if(!U)continue;let Q=parseInt(U,16);if(Q<=0||G.has(Q))continue;let R=F[9];if(!R)continue;let V=parseInt(R,10);if(isNaN(V))continue;G.add(Q),w.push({port:Q,inode:V})}return w.sort((z,j)=>z.port-j.port)}function $(){let B=new Map,w;try{w=O.readdirSync("/proc").filter((G)=>/^\d+$/.test(G))}catch{return B}for(let G of w){let J=parseInt(G,10),z=`/proc/${J}/fd`,j;try{j=O.readdirSync(z)}catch{continue}for(let F of j)try{let K=O.readlinkSync(`${z}/${F}`).match(/^socket:\[(\d+)\]$/);if(K)B.set(parseInt(K[1],10),J)}catch{continue}}return B}function C(){let B=new Map,w;try{w=O.readdirSync("/proc").filter((G)=>/^\d+$/.test(G))}catch{return B}for(let G of w){let J=parseInt(G,10);try{let z=O.readFileSync(`/proc/${J}/stat`,"utf-8"),j=z.lastIndexOf(")");if(j===-1)continue;let N=z.slice(j+2).split(" "),K=parseInt(N[1],10);if(!isNaN(K))B.set(J,K)}catch{continue}}return B}function I(B){let w=new Map;for(let[z,j]of B){let F=w.get(j);if(!F)F=[],w.set(j,F);F.push(z)}let G=new Set,J=[];for(let[z,j]of B)if(j===0&&z!==1)G.add(z),J.push(z);while(J.length>0){let z=J.shift(),j=w.get(z);if(j){for(let F of j)if(!G.has(F))G.add(F),J.push(F)}}return G}function L(){function B(j){process.stdout.write(JSON.stringify(j)+`
5
- `)}B({type:"ready",pid:process.pid});let w="";function G(){let j="";try{j+=O.readFileSync("/proc/net/tcp","utf-8")}catch{}try{j+=O.readFileSync("/proc/net/tcp6","utf-8")}catch{}let F=_(j);if(F.length===0){if(w!=="")w="",B({type:"ports",ports:[]});return}let N=$(),K=C(),U=I(K),Q=[];for(let{port:V,inode:Z}of F){let W=N.get(Z);if(W!==void 0&&U.has(W))Q.push(V)}let R=Q.join(",");if(R!==w)w=R,B({type:"ports",ports:Q})}G();let J=setInterval(G,1000),z="";process.stdin.setEncoding("utf-8"),process.stdin.on("data",(j)=>{z+=j;let F=z.split(`
6
- `);z=F.pop();for(let N of F){if(!N.trim())continue;try{let K=JSON.parse(N);if(K.type==="stop")clearInterval(J),process.exit(0);if(K.type==="ping")B({type:"ready",pid:process.pid})}catch{}}}),process.stdin.on("end",()=>{clearInterval(J),process.exit(0)})}function v(B){let w=Y.createConnection({host:"127.0.0.1",port:B},()=>{process.stdin.pipe(w),w.pipe(process.stdout)});w.on("error",(G)=>{process.stderr.write(`bridge error: ${G.message}
7
- `),process.exit(1)}),w.on("close",()=>{process.exit(0)}),process.stdin.on("end",()=>{w.end()})}var X=process.argv[2];if(X==="monitor")L();else if(X==="bridge"){let B=parseInt(process.argv[3],10);if(isNaN(B))process.stderr.write(`Usage: agent bridge <port>
8
- `),process.exit(1);v(B)}else process.stderr.write(`Usage: agent <monitor|bridge> [port]
3
+ import*as U from"fs";import*as $ from"net";function L(F){let K=[],G=new Set,N=F.split(`
4
+ `);for(let j=1;j<N.length;j++){let z=N[j].trim();if(!z)continue;let J=z.split(/\s+/),R=J[1],Q=J[3];if(!R||!Q)continue;if(Q!=="0A")continue;let X=R.split(":")[1];if(!X)continue;let V=parseInt(X,16);if(V<=0||G.has(V))continue;let W=J[9];if(!W)continue;let Y=parseInt(W,10);if(isNaN(Y))continue;G.add(V),K.push({port:V,inode:Y})}return K.sort((j,z)=>j.port-z.port)}function O(){let F=new Map,K;try{K=U.readdirSync("/proc").filter((G)=>/^\d+$/.test(G))}catch{return F}for(let G of K){let N=parseInt(G,10),j=`/proc/${N}/fd`,z;try{z=U.readdirSync(j)}catch{continue}for(let J of z)try{let Q=U.readlinkSync(`${j}/${J}`).match(/^socket:\[(\d+)\]$/);if(Q)F.set(parseInt(Q[1],10),N)}catch{continue}}return F}function v(){let F=new Map,K;try{K=U.readdirSync("/proc").filter((G)=>/^\d+$/.test(G))}catch{return F}for(let G of K){let N=parseInt(G,10);try{let j=U.readFileSync(`/proc/${N}/stat`,"utf-8"),z=j.lastIndexOf(")");if(z===-1)continue;let R=j.slice(z+2).split(" "),Q=parseInt(R[1],10);if(!isNaN(Q))F.set(N,Q)}catch{continue}}return F}function w(F){let K=new Map;for(let[j,z]of F){let J=K.get(z);if(!J)J=[],K.set(z,J);J.push(j)}let G=new Set,N=[];for(let[j,z]of F)if(z===0&&j!==1)G.add(j),N.push(j);while(N.length>0){let j=N.shift(),z=K.get(j);if(z){for(let J of z)if(!G.has(J))G.add(J),N.push(J)}}return G}function A(){function F(z){process.stdout.write(JSON.stringify(z)+`
5
+ `)}F({type:"ready",pid:process.pid});let K="";function G(){let z="";try{z+=U.readFileSync("/proc/net/tcp","utf-8")}catch{}try{z+=U.readFileSync("/proc/net/tcp6","utf-8")}catch{}let J=L(z);if(J.length===0){if(K!=="")K="",F({type:"ports",ports:[]});return}let R=O(),Q=v(),X=w(Q),V=[];for(let{port:Y,inode:B}of J){let Z=R.get(B);if(Z!==void 0&&X.has(Z))V.push(Y)}let W=V.join(",");if(W!==K)K=W,F({type:"ports",ports:V})}G();let N=setInterval(G,1000),j="";process.stdin.setEncoding("utf-8"),process.stdin.on("data",(z)=>{j+=z;let J=j.split(`
6
+ `);j=J.pop();for(let R of J){if(!R.trim())continue;try{let Q=JSON.parse(R);if(Q.type==="stop")clearInterval(N),process.exit(0);if(Q.type==="ping")F({type:"ready",pid:process.pid})}catch{}}}),process.stdin.on("end",()=>{clearInterval(N),process.exit(0)})}function C(F){let K=["127.0.0.1","::1"];function G(N){let j=$.createConnection({host:K[N],port:F},()=>{process.stdin.pipe(j),j.pipe(process.stdout)});j.on("error",(z)=>{if(z.code==="ECONNREFUSED"&&N+1<K.length){G(N+1);return}process.stderr.write(`bridge error: ${z.message}
7
+ `),process.exit(1)}),j.on("close",()=>{process.exit(0)}),process.stdin.on("end",()=>{j.end()})}G(0)}var _=process.argv[2];if(_==="monitor")A();else if(_==="bridge"){let F=parseInt(process.argv[3],10);if(isNaN(F))process.stderr.write(`Usage: agent bridge <port>
8
+ `),process.exit(1);C(F)}else process.stderr.write(`Usage: agent <monitor|bridge> [port]
9
9
  `),process.exit(1);
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import*as O from"node:fs";import*as Y from"node:net";function _(B){let w=[],G=new Set,J=B.split(`
3
- `);for(let z=1;z<J.length;z++){let j=J[z].trim();if(!j)continue;let F=j.split(/\s+/),N=F[1],K=F[3];if(!N||!K)continue;if(K!=="0A")continue;let U=N.split(":")[1];if(!U)continue;let Q=parseInt(U,16);if(Q<=0||G.has(Q))continue;let R=F[9];if(!R)continue;let V=parseInt(R,10);if(isNaN(V))continue;G.add(Q),w.push({port:Q,inode:V})}return w.sort((z,j)=>z.port-j.port)}function $(){let B=new Map,w;try{w=O.readdirSync("/proc").filter((G)=>/^\d+$/.test(G))}catch{return B}for(let G of w){let J=parseInt(G,10),z=`/proc/${J}/fd`,j;try{j=O.readdirSync(z)}catch{continue}for(let F of j)try{let K=O.readlinkSync(`${z}/${F}`).match(/^socket:\[(\d+)\]$/);if(K)B.set(parseInt(K[1],10),J)}catch{continue}}return B}function C(){let B=new Map,w;try{w=O.readdirSync("/proc").filter((G)=>/^\d+$/.test(G))}catch{return B}for(let G of w){let J=parseInt(G,10);try{let z=O.readFileSync(`/proc/${J}/stat`,"utf-8"),j=z.lastIndexOf(")");if(j===-1)continue;let N=z.slice(j+2).split(" "),K=parseInt(N[1],10);if(!isNaN(K))B.set(J,K)}catch{continue}}return B}function I(B){let w=new Map;for(let[z,j]of B){let F=w.get(j);if(!F)F=[],w.set(j,F);F.push(z)}let G=new Set,J=[];for(let[z,j]of B)if(j===0&&z!==1)G.add(z),J.push(z);while(J.length>0){let z=J.shift(),j=w.get(z);if(j){for(let F of j)if(!G.has(F))G.add(F),J.push(F)}}return G}function L(){function B(j){process.stdout.write(JSON.stringify(j)+`
4
- `)}B({type:"ready",pid:process.pid});let w="";function G(){let j="";try{j+=O.readFileSync("/proc/net/tcp","utf-8")}catch{}try{j+=O.readFileSync("/proc/net/tcp6","utf-8")}catch{}let F=_(j);if(F.length===0){if(w!=="")w="",B({type:"ports",ports:[]});return}let N=$(),K=C(),U=I(K),Q=[];for(let{port:V,inode:Z}of F){let W=N.get(Z);if(W!==void 0&&U.has(W))Q.push(V)}let R=Q.join(",");if(R!==w)w=R,B({type:"ports",ports:Q})}G();let J=setInterval(G,1000),z="";process.stdin.setEncoding("utf-8"),process.stdin.on("data",(j)=>{z+=j;let F=z.split(`
5
- `);z=F.pop();for(let N of F){if(!N.trim())continue;try{let K=JSON.parse(N);if(K.type==="stop")clearInterval(J),process.exit(0);if(K.type==="ping")B({type:"ready",pid:process.pid})}catch{}}}),process.stdin.on("end",()=>{clearInterval(J),process.exit(0)})}function v(B){let w=Y.createConnection({host:"127.0.0.1",port:B},()=>{process.stdin.pipe(w),w.pipe(process.stdout)});w.on("error",(G)=>{process.stderr.write(`bridge error: ${G.message}
6
- `),process.exit(1)}),w.on("close",()=>{process.exit(0)}),process.stdin.on("end",()=>{w.end()})}var X=process.argv[2];if(X==="monitor")L();else if(X==="bridge"){let B=parseInt(process.argv[3],10);if(isNaN(B))process.stderr.write(`Usage: agent bridge <port>
7
- `),process.exit(1);v(B)}else process.stderr.write(`Usage: agent <monitor|bridge> [port]
2
+ import*as U from"node:fs";import*as $ from"node:net";function L(F){let K=[],G=new Set,N=F.split(`
3
+ `);for(let j=1;j<N.length;j++){let z=N[j].trim();if(!z)continue;let J=z.split(/\s+/),R=J[1],Q=J[3];if(!R||!Q)continue;if(Q!=="0A")continue;let X=R.split(":")[1];if(!X)continue;let V=parseInt(X,16);if(V<=0||G.has(V))continue;let W=J[9];if(!W)continue;let Y=parseInt(W,10);if(isNaN(Y))continue;G.add(V),K.push({port:V,inode:Y})}return K.sort((j,z)=>j.port-z.port)}function O(){let F=new Map,K;try{K=U.readdirSync("/proc").filter((G)=>/^\d+$/.test(G))}catch{return F}for(let G of K){let N=parseInt(G,10),j=`/proc/${N}/fd`,z;try{z=U.readdirSync(j)}catch{continue}for(let J of z)try{let Q=U.readlinkSync(`${j}/${J}`).match(/^socket:\[(\d+)\]$/);if(Q)F.set(parseInt(Q[1],10),N)}catch{continue}}return F}function v(){let F=new Map,K;try{K=U.readdirSync("/proc").filter((G)=>/^\d+$/.test(G))}catch{return F}for(let G of K){let N=parseInt(G,10);try{let j=U.readFileSync(`/proc/${N}/stat`,"utf-8"),z=j.lastIndexOf(")");if(z===-1)continue;let R=j.slice(z+2).split(" "),Q=parseInt(R[1],10);if(!isNaN(Q))F.set(N,Q)}catch{continue}}return F}function w(F){let K=new Map;for(let[j,z]of F){let J=K.get(z);if(!J)J=[],K.set(z,J);J.push(j)}let G=new Set,N=[];for(let[j,z]of F)if(z===0&&j!==1)G.add(j),N.push(j);while(N.length>0){let j=N.shift(),z=K.get(j);if(z){for(let J of z)if(!G.has(J))G.add(J),N.push(J)}}return G}function A(){function F(z){process.stdout.write(JSON.stringify(z)+`
4
+ `)}F({type:"ready",pid:process.pid});let K="";function G(){let z="";try{z+=U.readFileSync("/proc/net/tcp","utf-8")}catch{}try{z+=U.readFileSync("/proc/net/tcp6","utf-8")}catch{}let J=L(z);if(J.length===0){if(K!=="")K="",F({type:"ports",ports:[]});return}let R=O(),Q=v(),X=w(Q),V=[];for(let{port:Y,inode:B}of J){let Z=R.get(B);if(Z!==void 0&&X.has(Z))V.push(Y)}let W=V.join(",");if(W!==K)K=W,F({type:"ports",ports:V})}G();let N=setInterval(G,1000),j="";process.stdin.setEncoding("utf-8"),process.stdin.on("data",(z)=>{j+=z;let J=j.split(`
5
+ `);j=J.pop();for(let R of J){if(!R.trim())continue;try{let Q=JSON.parse(R);if(Q.type==="stop")clearInterval(N),process.exit(0);if(Q.type==="ping")F({type:"ready",pid:process.pid})}catch{}}}),process.stdin.on("end",()=>{clearInterval(N),process.exit(0)})}function C(F){let K=["127.0.0.1","::1"];function G(N){let j=$.createConnection({host:K[N],port:F},()=>{process.stdin.pipe(j),j.pipe(process.stdout)});j.on("error",(z)=>{if(z.code==="ECONNREFUSED"&&N+1<K.length){G(N+1);return}process.stderr.write(`bridge error: ${z.message}
6
+ `),process.exit(1)}),j.on("close",()=>{process.exit(0)}),process.stdin.on("end",()=>{j.end()})}G(0)}var _=process.argv[2];if(_==="monitor")A();else if(_==="bridge"){let F=parseInt(process.argv[3],10);if(isNaN(F))process.stderr.write(`Usage: agent bridge <port>
7
+ `),process.exit(1);C(F)}else process.stderr.write(`Usage: agent <monitor|bridge> [port]
8
8
  `),process.exit(1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devcon-cli",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Devcontainer CLI with automatic port forwarding",
5
5
  "type": "module",
6
6
  "scripts": {