@enterprisestandard/cli 0.0.20-beta.20260623.2 → 0.0.20-beta.20260701.1
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/cli.js +9 -9
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{spawn as
|
|
3
|
-
`))
|
|
4
|
-
`;
|
|
5
|
-
`}}
|
|
6
|
-
Error: ${j.error}`),process.exit(1);return}if(!j.token){
|
|
7
|
-
Error: No token received`),process.exit(1);return}let
|
|
2
|
+
import{spawn as O}from"node:child_process";import{randomBytes as R}from"node:crypto";import{existsSync as B,readFileSync as L,writeFileSync as b}from"node:fs";import{createServer as C}from"node:http";import{platform as I}from"node:os";import{resolve as M}from"node:path";var K=`/callback/${R(32).toString("base64url")}`,T=300000;function _(){let G=process.argv.slice(2),Y,J=".env";for(let Q of G)if(Q.startsWith("--url="))Y=Q.slice(6).trim();else if(Q.startsWith("--envFile="))J=Q.slice(10).trim();return{url:Y,envFile:J}}function m(G){return G.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function A(G){if(/^[A-Za-z0-9_./:@=+-]+$/.test(G))return G;return`"${G.replace(/\\/g,"\\\\").replace(/"/g,"\\\"").replace(/\n/g,"\\n").replace(/\r/g,"\\r")}"`}function F(G,Y){let J=M(G),Q="";if(B(J))Q=L(J,"utf-8");for(let[W,X]of Object.entries(Y)){let Z=A(X),j=new RegExp(`^${W}=.*$`,"m");if(j.test(Q))Q=Q.replace(j,()=>`${W}=${Z}`);else{if(Q.length>0&&!Q.endsWith(`
|
|
3
|
+
`))Q+=`
|
|
4
|
+
`;Q+=`${W}=${Z}
|
|
5
|
+
`}}b(J,Q)}function S(G){let Y=I()==="win32"?{command:"cmd",args:["/c","start","",G]}:I()==="darwin"?{command:"open",args:[G]}:{command:"xdg-open",args:[G]};try{return O(Y.command,Y.args,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function V(){let{url:G,envFile:Y}=_();if(!G)console.error("Usage: bunx @enterprisestandard/cli --url=<config-url> [--envFile=<path>]"),console.error(""),console.error("Example:"),console.error(" bunx @enterprisestandard/cli --url=https://demo.ionite.dev/api/dev/config/my-project/my-app"),process.exit(1);let J=C((W,X)=>{let Z=new URL(W.url??"",`http://${W.headers.host}`);if(Z.pathname!==K){X.writeHead(404,{"Content-Type":"text/plain"}),X.end("Not found");return}let j=Object.fromEntries(Z.searchParams);if(j.error){X.writeHead(400,{"Content-Type":"text/html; charset=utf-8"}),X.end(`<!DOCTYPE html><html><head><title>Error</title></head><body><p>Error: ${m(j.error)}</p></body></html>`),J.close(),console.error(`
|
|
6
|
+
Error: ${j.error}`),process.exit(1);return}if(!j.token){X.writeHead(400,{"Content-Type":"text/html; charset=utf-8"}),X.end("<!DOCTYPE html><html><head><title>Error</title></head><body><p>Error: No token received</p></body></html>"),J.close(),console.error(`
|
|
7
|
+
Error: No token received`),process.exit(1);return}let D=new URL(G),x=D.pathname.split("/").filter(Boolean),k=x.pop()??"",w=x[0]??"",z=`${D.origin}/${w}/ai/${k}`;if(X.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),X.end(`<!DOCTYPE html><html><head><meta http-equiv="refresh" content="0;url=${z}"></head><body></body></html>`),setTimeout(()=>J.close(),500),console.error(`
|
|
8
8
|
✓ Authentication successful!
|
|
9
|
-
`),j.expires){let
|
|
10
|
-
`),process.exit(0)});
|
|
9
|
+
`),j.expires){let N=new Date(j.expires);console.error(`You will be prompted to re-authenticate on or before: ${N.toLocaleString()}`)}let $={ES_VAULT_TOKEN:j.token,ES_CONFIG_TYPE:"vault"};if(j.ioniteEndpoint)$.ES_VAULT_URL=j.ioniteEndpoint,$.ES_VAULT_TTL="600000";if(j.endpoint)$.ES_VAULT_URL=j.endpoint;if(j.path)$.ES_VAULT_PATH=j.path.startsWith("v1/")?j.path:`v1/${j.path}`;$.ES_VAULT_TTL=j.ttl?String(j.ttl):"600000";let H=M(Y);F(Y,$),console.error(`Saved developer configuration to ${H}
|
|
10
|
+
`),process.exit(0)});J.listen(0,"127.0.0.1",()=>{let W=J.address();if(!W||typeof W==="string")console.error("Error: could not bind callback server"),process.exit(1);let Z=`http://127.0.0.1:${W.port}${K}`,j=new URL(G);if(j.searchParams.set("redirect",Z),console.error("Opening browser to authenticate..."),!S(j.toString()))console.error(`
|
|
11
11
|
Could not open browser automatically.`);console.error(`
|
|
12
|
-
If a browser didn't open, please visit this URL:`),console.error(j.toString()),console.error("")}),
|
|
12
|
+
If a browser didn't open, please visit this URL:`),console.error(j.toString()),console.error("")}),J.on("error",(W)=>{console.error("Error starting callback server:",W.message),process.exit(1)}),setTimeout(()=>{J.close(),console.error("Timeout: no callback received within 5 minutes. Please try again."),process.exit(1)},T).unref()}V();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enterprisestandard/cli",
|
|
3
|
-
"version": "0.0.20-beta.
|
|
3
|
+
"version": "0.0.20-beta.20260701.1",
|
|
4
4
|
"description": "Enterprise Standard CLI - Wrangler-style SSO dev flow",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "enterprisestandard",
|
|
@@ -16,6 +16,6 @@
|
|
|
16
16
|
"node": ">=18"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@types/node": "^25.
|
|
19
|
+
"@types/node": "^25.9.3"
|
|
20
20
|
}
|
|
21
21
|
}
|