@zenovay/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/ai-Bz-qWv6r.js +11 -0
- package/dist/{analytical-screen-3XlrpJ98.js → analytical-screen-CS1ZL5Mo.js} +1 -1
- package/dist/api-D5XQeEDF.js +1 -0
- package/dist/api-v2-C6UIVMCX.js +1 -0
- package/dist/bin.js +1 -1
- package/dist/{companies-CErU-nIf.js → companies-CkwVufhw.js} +3 -3
- package/dist/config-ZTGpKEWg.js +1 -0
- package/dist/deploys-SaaeyUI8.js +3 -0
- package/dist/{doctor-CB64Fu3x.js → doctor-DmQlQsg9.js} +1 -1
- package/dist/{emit-CbAMzl5f.js → emit-DIRc7UzM.js} +1 -1
- package/dist/errors-BVTLFoGS.js +3 -0
- package/dist/{events-tail-C-QUggqf.js → events-tail-DPyjak4s.js} +1 -1
- package/dist/formatter-DQ6l4sWM.js +10 -0
- package/dist/{funnel-CGk44IzM.js → funnel-BlMe1dl6.js} +4 -4
- package/dist/health-C6G6Mg6b.js +1 -0
- package/dist/health-CN35NYhE.js +1 -0
- package/dist/init-2kyLphzW.js +61 -0
- package/dist/init-CnN87oma.js +1 -0
- package/dist/{keybar-D2LIBUlF.js → keybar-D2OI-8rx.js} +1 -1
- package/dist/login-CgIfUP2O.js +1 -0
- package/dist/login-CxXnVN9s.js +1 -0
- package/dist/logout-2-GHLeZO.js +2 -0
- package/dist/{projects-Bdd36ZCo.js → projects-C0esNFNb.js} +3 -3
- package/dist/{prompt-C1qNVY6f.js → prompt-hjzdzlyj.js} +1 -1
- package/dist/query-DqQ6UBxS.js +9 -0
- package/dist/revenue-CdS4qUM-.js +3 -0
- package/dist/{sources-B3DvpVMh.js → sources-CM_HO2d4.js} +3 -3
- package/dist/stats-BekDimEO.js +3 -0
- package/dist/{themes-C0wGEs1v.js → themes-F-HUBXpr.js} +1 -1
- package/dist/{ui-CvxpWJH-.js → ui-Bk5nl2yb.js} +1 -1
- package/dist/update-BPa-ewQo.js +1 -0
- package/dist/vitals-B43I4p_v.js +3 -0
- package/dist/watch-Bk_tMcR4.js +2 -0
- package/dist/webhooks-forward-CzgkXjgW.js +3 -0
- package/dist/wizard-bin.js +1 -1
- package/dist/wrapper-U9nLhCpo.js +6 -0
- package/dist/ws-client-DsIRZ_TX.js +1 -0
- package/package.json +2 -1
- package/dist/ai-BjJZ9xbG.js +0 -11
- package/dist/api-B7QWXBbG.js +0 -1
- package/dist/api-v2-Ge4WrV8S.js +0 -1
- package/dist/errors-BQfQ3nQq.js +0 -3
- package/dist/formatter-CEeFGNXS.js +0 -10
- package/dist/health-QG3p1I4h.js +0 -1
- package/dist/health-mIabvurG.js +0 -1
- package/dist/init-D4Z7Dje8.js +0 -61
- package/dist/init-WeXKk2Ii.js +0 -1
- package/dist/login-BxbjwJpp.js +0 -1
- package/dist/login-CCbw5DxV.js +0 -1
- package/dist/logout-BXZDYs5A.js +0 -2
- package/dist/query-DviHIp7A.js +0 -9
- package/dist/revenue-Hy3Ds8Gr.js +0 -3
- package/dist/stats-BbWdAIxR.js +0 -3
- package/dist/update-CJ6RRor7.js +0 -1
- package/dist/vitals-jgl8TO5_.js +0 -3
- package/dist/watch-DT908IAi.js +0 -2
- /package/dist/{check-B7o0vbqr.js → check-S0ACFIfq.js} +0 -0
- /package/dist/{client-ClN0aAAQ.js → client-GAPcEws9.js} +0 -0
- /package/dist/{completions-DhdJEg8Q.js → completions-GDtTbG3B.js} +0 -0
- /package/dist/{panel-s0DHmKcg.js → panel-DglZ755S.js} +0 -0
package/dist/update-CJ6RRor7.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{readConfig as e}from"./formatter-CEeFGNXS.js";import{emit as t,isHeadless as n}from"./emit-CbAMzl5f.js";import{classifyBump as r,fetchManifest as i,platformKey as a}from"./check-B7o0vbqr.js";import o from"node:path";import{promises as s}from"node:fs";import c from"node:os";import l from"node:crypto";import u from"semver";const d=`AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=`;async function f(e){let t=await i({cliBase:e.cliBase,fetchImpl:e.fetchImpl});return p({...e,manifest:t})}async function p(e){let{manifest:t,currentVersion:n,forceDowngrade:i}=e,o=r(n,t.latest);if(o===`none`)return{updated:!1,from:n,to:t.latest,reason:`already-latest`};if(o===`downgrade`&&!i)return{updated:!1,from:n,to:t.latest,reason:`downgrade-blocked`};t.minSupported&&u.lt(n,t.minSupported);let c=a(),l=t.platforms[c];if(!l)throw Error(`No release binary for platform ${c}`);let d=await m(l,e.fetchImpl);try{return await h(d,l.sha256),await g(l,t.latest,c),await _(d,e.binaryPath),{updated:!0,from:n,to:t.latest}}catch(e){throw await s.unlink(d).catch(()=>void 0),e}}async function m(e,t=fetch){let n=await t(e.url);if(!n.ok)throw Error(`Download failed: ${n.status}`);let r=Buffer.from(await n.arrayBuffer()),i=await s.mkdtemp(o.join(c.tmpdir(),`zenovay-update-`)),a=o.join(i,`zenovay.new`);return await s.writeFile(a,r,{mode:493}),a}async function h(e,t){let n=await s.readFile(e),r=l.createHash(`sha256`).update(n).digest(`hex`);if(r.toLowerCase()!==t.toLowerCase())throw Error(`Checksum mismatch: expected ${t}, got ${r}. Update REFUSED.`)}async function g(e,t,n){let r=Buffer.from(d,`base64`);if(r.length!==32)throw Error(`Invalid release public key — update REFUSED.`);let i=Buffer.from(`${e.sha256}|${t}|${n}`),a=Buffer.from(e.sig,`base64`),o=l.createPublicKey({key:Buffer.concat([Buffer.from(`302a300506032b6570032100`,`hex`),r]),format:`der`,type:`spki`}),s=l.verify(null,i,o,a);if(!s)throw Error(`Signature verification FAILED. Update REFUSED.`)}async function _(e,t){let n=`${t}.old-${Date.now()}`;try{await s.rename(t,n)}catch(e){if(e.code!==`ENOENT`)throw e}try{await s.rename(e,t),process.platform!==`win32`&&await s.chmod(t,493),await s.unlink(n).catch(()=>void 0)}catch(e){try{await s.rename(n,t)}catch{}throw e}}async function v(a){let o=await e(),s=await i({cliBase:o.cliBase}),c=r(a.cliVersion,s.latest);if(a.check)return n({json:a.json})?t({type:`info`,message:`latest=${s.latest} current=${a.cliVersion} bump=${c}`}):process.stdout.write(`Current: ${a.cliVersion}\nLatest: ${s.latest}\nBump: ${c}\n`),{updated:!1,from:a.cliVersion,to:s.latest};if(c===`none`)return n({json:a.json})||process.stdout.write(`Already on latest (${a.cliVersion}).\n`),{updated:!1,from:a.cliVersion,to:s.latest};if(c===`downgrade`&&!a.forceDowngrade)throw Error(`Refused to downgrade ${a.cliVersion} → ${s.latest}. Pass --force-downgrade if you really want this.`);let l=await f({currentVersion:a.cliVersion,cliBase:o.cliBase,binaryPath:a.binaryPath,forceDowngrade:a.forceDowngrade});return n({json:a.json})?l.updated&&t({type:`update.applied`,from:l.from,to:l.to}):l.updated?process.stdout.write(`Updated ${l.from} → ${l.to}\n`):process.stdout.write(`Not updated (${l.reason??`unknown`}).\n`),l}export{v as updateCommand};
|
package/dist/vitals-jgl8TO5_.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{formatTabular as e,readConfig as t,selectFormat as n}from"./formatter-CEeFGNXS.js";import{readToken as r}from"./api-B7QWXBbG.js";import"./panel-s0DHmKcg.js";import"./keybar-D2LIBUlF.js";import"./prompt-C1qNVY6f.js";import{runAnalyticalScreen as i}from"./analytical-screen-3XlrpJ98.js";import"./sparkline-CR_bzxwB.js";import{Table as a}from"./ui-CvxpWJH-.js";import{ApiV2Client as o}from"./api-v2-Ge4WrV8S.js";import{Box as s,Text as c}from"ink";import l from"react";const u={lcp:{good:2500,poor:4e3},inp:{good:200,poor:500},cls:{good:.1,poor:.25},ttfb:{good:800,poor:1800},fcp:{good:1800,poor:3e3}};function d(e,t){let n=u[e];return t<=n.good?{label:`good`,color:`green`}:t<=n.poor?{label:`needs`,color:`yellow`}:{label:`poor`,color:`red`}}function f(e,t){return e===`cls`?t.toFixed(3):t<1e3?`${Math.round(t)}ms`:`${(t/1e3).toFixed(2)}s`}async function p(u){let p=await t(),m=await r({strict:!1}),h=u.siteId??m?.teamId??``;if(!h)return process.stderr.write(`No site selected — pass --site-id or set ZENOVAY_SITE.
|
|
2
|
-
`),2;let g=new o({config:p,cliVersion:u.cliVersion,token:m}),_=n(u),v=[{key:`url`,header:`url`,width:32},{key:`device`,header:`device`,width:7,format:e=>String(e??`—`)},{key:`lcp`,header:`LCP p75`,width:9,align:`right`,format:e=>e&&typeof e==`object`&&`p75`in e?f(`lcp`,e.p75):`—`},{key:`inp`,header:`INP p75`,width:9,align:`right`,format:e=>e&&typeof e==`object`&&`p75`in e?f(`inp`,e.p75):`—`},{key:`cls`,header:`CLS p75`,width:9,align:`right`,format:e=>e&&typeof e==`object`&&`p75`in e?f(`cls`,e.p75):`—`},{key:`samples`,header:`n`,width:6,align:`right`}];return i({cliVersion:u.cliVersion,title:`vitals · ${h}`,commandName:`vitals`,authToken:m?.accessToken??null,refreshIntervalMs:u.watch?5*6e4:0,fetcher:e=>g.getVitals(h,{url:u.url,device:u.device,window:u.window},e),format:_,headlessEmit:(t,n)=>{if(n===`json`||n===`ndjson`){process.stdout.write(JSON.stringify(t,null,n===`json`?2:0)),n===`ndjson`&&process.stdout.write(`
|
|
3
|
-
`);return}process.stdout.write(e(t.vitals,[`url`,`device`,`samples`],n))},panels:[{id:`summary`,title:`Site-wide p75`,render:e=>{let t=t=>{let n=0,r=0;for(let i of e.vitals){let e=i[t]?.p75;typeof e==`number`&&(n+=e*i.samples,r+=i.samples)}return r>0?n/r:0},n=[`lcp`,`inp`,`cls`,`ttfb`,`fcp`];return l.createElement(s,{flexDirection:`column`},n.map(e=>{let n=t(e),r=d(e,n);return l.createElement(c,{key:e},l.createElement(c,{color:r.color},`● `),l.createElement(c,{bold:!0},e.toUpperCase().padEnd(5)),` `,l.createElement(c,null,f(e,n).padStart(8)),` `,l.createElement(c,{color:r.color},r.label))}))}},{id:`pages`,title:`Per-page`,render:e=>e.vitals.length===0?l.createElement(c,{color:`gray`},`— no vitals data yet —`):l.createElement(a,{data:e.vitals.slice(0,15),columns:v})}]})}export{p as vitalsCommand};
|
package/dist/watch-DT908IAi.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{readConfig as e}from"./formatter-CEeFGNXS.js";import{ApiClient as t,readToken as n}from"./api-B7QWXBbG.js";import{parseSseStream as r}from"./client-ClN0aAAQ.js";import{emit as i,isHeadless as a}from"./emit-CbAMzl5f.js";import{Panel as o}from"./panel-s0DHmKcg.js";import{Banner as s,Keybar as c}from"./keybar-D2LIBUlF.js";import{spark as l}from"./sparkline-CR_bzxwB.js";import{Box as u,Text as d,render as f,useApp as p,useInput as m}from"ink";import h,{useEffect as g,useState as _}from"react";import v from"ink-spinner";async function y(r){let o=await e(),s=await n({strict:!1});if(!s)return process.stderr.write("Not logged in — run `zenovay login` first.\n"),2;let c=new t({config:o,cliVersion:r.cliVersion,token:s}),l=r.siteId??s.teamId;if(!l)return process.stderr.write(`No site selected — pass --site-id.
|
|
2
|
-
`),2;if(a(r)){let e=await c.getDashboardSnapshot(l);return i({type:`watch.tick`,snapshot:e}),0}return new Promise(e=>{let{unmount:t}=f(h.createElement(b,{api:c,siteId:l,intervalMs:r.intervalMs??15e3,cliVersion:r.cliVersion,onExit:n=>{t(),e(n)}}))})}const b=({api:e,siteId:t,intervalMs:n,cliVersion:i,onExit:a})=>{let{exit:l}=p(),[f,y]=_(null),[b,D]=_(null),[O,k]=_(null),[A,j]=_([]),[M,N]=_(!0),[P,F]=_(null),[I,L]=_(1);if(m((e,t)=>{if(e===`q`){l(),a(0);return}if(t.tab){L(e=>{let n=t.shift?(e+4)%6+1:e%6+1;return n});return}(e===`1`||e===`2`||e===`3`||e===`4`||e===`5`||e===`6`)&&L(Number(e))}),g(()=>{let r=!1,i=async()=>{try{let n=await e.getDashboardSnapshot(t);if(r)return;y(n);let i=e.getVitals;typeof i==`function`&&i.call(e,t).then(e=>{r||D(e)},()=>{});let a=e.getGoals;typeof a==`function`&&a.call(e,t).then(e=>{r||k(e)},()=>{}),N(!1),F(null)}catch(e){r||F(e.message)}};i();let a=setInterval(i,n);return()=>{r=!0,clearInterval(a)}},[e,t,n]),g(()=>{let n=new AbortController;return(async()=>{try{let i=await e.openEventsStream(t,n.signal);for await(let e of r(i))e.type===`error`&&j(t=>[...t,`[ERR ${e.code}] ${e.message}`].slice(-10))}catch{}})(),()=>n.abort()},[e,t]),M)return h.createElement(u,{flexDirection:`column`},h.createElement(s,{version:i,subtitle:`watch · ${t}`}),h.createElement(o,{title:`Loading`,state:`busy`},h.createElement(u,null,h.createElement(d,{color:`magenta`},h.createElement(v,{type:`dots`})),h.createElement(d,null,` Fetching snapshot…`))));if(P&&!f)return h.createElement(u,{flexDirection:`column`},h.createElement(s,{version:i,subtitle:`watch · ${t}`}),h.createElement(o,{title:`Error`,state:`err`},h.createElement(d,{color:`red`},P)));let R=process.stdout.columns??80,z=Math.max(20,Math.floor(R/3)-1);return h.createElement(u,{flexDirection:`column`},h.createElement(s,{version:i,subtitle:`watch · ${t}`}),h.createElement(u,{flexDirection:`row`},h.createElement(u,{flexDirection:`column`},h.createElement(x,{snapshot:f,focused:I===1,width:z}),h.createElement(w,{events:A,focused:I===4,width:z})),h.createElement(u,{flexDirection:`column`},h.createElement(S,{snapshot:f,focused:I===2,width:z}),h.createElement(T,{vitals:b,focused:I===5,width:z})),h.createElement(u,{flexDirection:`column`},h.createElement(C,{snapshot:f,focused:I===3,width:z}),h.createElement(E,{goals:O,focused:I===6,width:z}))),h.createElement(c,{items:[{key:`tab`,label:`next`},{key:`1-6`,label:`jump`},{key:`q`,label:`quit`}]}))},x=({snapshot:e,focused:t,width:n})=>{let r=e?.visitors?.count??0,i=e?.visitors?.series??[];return h.createElement(o,{title:`Visitors`,focused:t,width:n},h.createElement(d,{bold:!0},r.toString()),h.createElement(d,{color:`gray`},i.length>0?l(i,Math.max(8,n-6)):`— no data —`))},S=({snapshot:e,focused:t,width:n})=>{let r=e?.topPages?.slice(0,5)??[];return h.createElement(o,{title:`Top pages`,focused:t,width:n},r.length===0?h.createElement(d,{color:`gray`},`— no data —`):r.map(e=>h.createElement(u,{key:e.path},h.createElement(d,null,e.path.padEnd(n-10).slice(0,n-10)),h.createElement(d,{color:`gray`},` `,e.views))))},C=({snapshot:e,focused:t,width:n})=>{let r=e?.sources?.slice(0,5)??[];return h.createElement(o,{title:`Sources`,focused:t,width:n},r.length===0?h.createElement(d,{color:`gray`},`— no data —`):r.map(e=>h.createElement(u,{key:e.source},h.createElement(d,null,e.source.padEnd(n-10).slice(0,n-10)),h.createElement(d,{color:`gray`},` `,e.visitors))))},w=({events:e,focused:t,width:n})=>h.createElement(o,{title:`Events`,focused:t,width:n},e.length===0?h.createElement(d,{color:`gray`},`— waiting —`):e.slice(-10).map((e,t)=>h.createElement(d,{key:t},e.slice(0,n-4)))),T=({vitals:e,focused:t,width:n})=>{let r=(e,t,n)=>h.createElement(u,{key:e},h.createElement(d,{bold:!0},e.padEnd(6)),h.createElement(d,{color:`gray`},typeof t==`number`?`${t.toFixed(0)}${n}`:`—`));return h.createElement(o,{title:`Vitals`,focused:t,width:n},r(`LCP`,e?.lcpP75,`ms`),r(`INP`,e?.inpP75,`ms`),r(`CLS`,e?.clsP75?e.clsP75*1e3:void 0,`/1k`),r(`TTFB`,e?.ttfbP75,`ms`),r(`FCP`,e?.fcpP75,`ms`))},E=({goals:e,focused:t,width:n})=>{let r=e?.goals?.slice(0,5)??[];return h.createElement(o,{title:`Goals`,focused:t,width:n},r.length===0?h.createElement(d,{color:`gray`},`— no data —`):r.map(e=>h.createElement(u,{key:e.name},h.createElement(d,null,e.name.padEnd(n-10).slice(0,n-10)),h.createElement(d,{color:`gray`},` `,e.completions))))};export{y as watchCommand};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|