devcon-cli 0.1.2 → 0.1.4

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