@zenovay/cli 0.1.19 → 0.1.20
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-4Yo74A1a.js → ai-BtL-3tWv.js} +1 -1
- package/dist/{analytical-screen-DI8ahq4z.js → analytical-screen-DdnG-A8U.js} +1 -1
- package/dist/bin.js +2 -2
- package/dist/companies-Ck1YXksb.js +2 -0
- package/dist/{data-table-CDTM2qS0.js → data-table-B1FiGp8c.js} +1 -1
- package/dist/deploys-BDcSODZT.js +2 -0
- package/dist/devices-DiBMDyfc.js +1 -0
- package/dist/{doctor-CjpTOujh.js → doctor-Cewej993.js} +1 -1
- package/dist/{empty-state-CNtcEPJ9.js → empty-state-BUlTM7wA.js} +1 -1
- package/dist/errors-DHpw3PO2.js +2 -0
- package/dist/{events-tail-CtoMkdkb.js → events-tail-BlMK84c8.js} +1 -1
- package/dist/funnel-Z3HHRLwg.js +3 -0
- package/dist/geo-PyqvcLvy.js +1 -0
- package/dist/gradient-93CUjfDW.js +3 -0
- package/dist/{health-DBiKIoYL.js → health-BioDPveS.js} +1 -1
- package/dist/{health-Bn_Bw6c_.js → health-DBXPCNzJ.js} +1 -1
- package/dist/heatmaps-CrOP0_TX.js +1 -0
- package/dist/{init-HBcPrM1L.js → init-CZTDJ-vf.js} +3 -3
- package/dist/init-DbWxI6M2.js +1 -0
- package/dist/insights-yI1UgyRG.js +1 -0
- package/dist/journeys-DegXpwij.js +1 -0
- package/dist/{keybar-DUC7w1HQ.js → keybar-CoNHlPOn.js} +1 -1
- package/dist/live-BeZkd7mo.js +1 -0
- package/dist/{metric-card-W4GayhPO.js → metric-card--FhiQMgt.js} +1 -1
- package/dist/overview-CGTlmjQy.js +1 -0
- package/dist/pages-CEcLNfKb.js +1 -0
- package/dist/panel-BNI8Q_9k.js +1 -0
- package/dist/projects-DnzI_z_C.js +2 -0
- package/dist/prompt-CnNQNqeK.js +1 -0
- package/dist/query-DlhhP3PE.js +8 -0
- package/dist/{resolve-site-B54mr0Bh.js → resolve-site-IXvBPhrx.js} +1 -1
- package/dist/retention-xuYAxg4L.js +1 -0
- package/dist/revenue-CUHv5LCn.js +2 -0
- package/dist/sessions-DXxeC1Om.js +1 -0
- package/dist/sources-Bs-T6MjS.js +2 -0
- package/dist/stats-DWj2oLhf.js +2 -0
- package/dist/themes-DbjOibiR.js +4 -0
- package/dist/ui-Bw_RHAeN.js +1 -0
- package/dist/uptime-DQUNMxBI.js +1 -0
- package/dist/{use-DOxo6QgS.js → use-DSsSDVW7.js} +1 -1
- package/dist/vitals-B23CXo61.js +2 -0
- package/dist/{watch-CawlqYPo.js → watch-D12Fz1UB.js} +1 -1
- package/dist/webhooks-forward-9COAtWRu.js +3 -0
- package/dist/wizard-bin.js +1 -1
- package/package.json +1 -1
- package/dist/companies-f2shersJ.js +0 -2
- package/dist/deploys-CudLAqUS.js +0 -2
- package/dist/devices-B4_ouB05.js +0 -1
- package/dist/errors-CEJ43Vd4.js +0 -2
- package/dist/funnel-CK0vfgfb.js +0 -3
- package/dist/geo-CInOewrI.js +0 -1
- package/dist/heatmaps-DfVR48Km.js +0 -1
- package/dist/init-BMNuKlUT.js +0 -1
- package/dist/insights-Dd0HWA_M.js +0 -1
- package/dist/journeys-CCrSFXhO.js +0 -1
- package/dist/live-CUExJ1O5.js +0 -1
- package/dist/overview-CNuR2Mx9.js +0 -1
- package/dist/pages-CdoPyNQH.js +0 -1
- package/dist/panel-DZqvtaao.js +0 -1
- package/dist/projects-Cb8Jk1rh.js +0 -2
- package/dist/prompt-DEng-me1.js +0 -3
- package/dist/query-BDppYLwt.js +0 -8
- package/dist/retention-B-fiW8Un.js +0 -1
- package/dist/revenue-D0DkXtgI.js +0 -2
- package/dist/sessions-DYb8v1LG.js +0 -1
- package/dist/sources-2Zhm5ihV.js +0 -2
- package/dist/stats-Bf3LR7aS.js +0 -2
- package/dist/themes-Ty85UcjT.js +0 -4
- package/dist/ui-BtZp4Eh8.js +0 -1
- package/dist/uptime-I4CzdPZv.js +0 -1
- package/dist/vitals-XBfK3I8H.js +0 -2
- package/dist/webhooks-forward-DcnCiBcP.js +0 -3
- /package/dist/{completions-hFMu39uk.js → completions-CnHbpLqp.js} +0 -0
- /package/dist/{logout-B_-6rZdK.js → logout-B3V_2DRZ.js} +0 -0
- /package/dist/{sparkline-B6ueqPAB.js → sparkline-ut0Tvv-E.js} +0 -0
- /package/dist/{tier-Ceoo7ndQ.js → tier-DJvWU86k.js} +0 -0
- /package/dist/{update-5mypMXp6.js → update-wMGBdUT-.js} +0 -0
package/dist/vitals-XBfK3I8H.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{readConfig as e}from"./config-CZ9IzjIH.js";import{readToken as t}from"./api-DXmhz2DM.js";import{formatTabular as n,selectFormat as r}from"./formatter-BNYzdX5c.js";import"./panel-DZqvtaao.js";import"./prompt-DEng-me1.js";import"./keybar-DUC7w1HQ.js";import"./sparkline-B6ueqPAB.js";import{runAnalyticalScreen as i}from"./analytical-screen-DI8ahq4z.js";import{Table as a}from"./ui-BtZp4Eh8.js";import{EmptyState as o}from"./empty-state-CNtcEPJ9.js";import{resolveSiteId as s}from"./resolve-site-B54mr0Bh.js";import{ApiV2Client as c}from"./api-v2-CRj-zoG9.js";import{Box as l,Text as u}from"ink";import d from"react";const f={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 p(e,t){let n=f[e];return t<=n.good?{label:`good`,color:`green`}:t<=n.poor?{label:`needs`,color:`yellow`}:{label:`poor`,color:`red`}}function m(e,t){return e===`cls`?t.toFixed(3):t<1e3?`${Math.round(t)}ms`:`${(t/1e3).toFixed(2)}s`}async function h(f){let h=await e(),g=await t({strict:!1}),_=new c({config:h,cliVersion:f.cliVersion,token:g}),v;try{({siteId:v}=await s(_,{explicit:f.siteId,headless:!!(f.json||f.csv||f.tsv||f.ndjson),cliVersion:f.cliVersion}))}catch(e){return process.stderr.write(`${e.message}\n`),2}let y=r(f),b=[{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?m(`lcp`,e.p75):`—`},{key:`inp`,header:`INP p75`,width:9,align:`right`,format:e=>e&&typeof e==`object`&&`p75`in e?m(`inp`,e.p75):`—`},{key:`cls`,header:`CLS p75`,width:9,align:`right`,format:e=>e&&typeof e==`object`&&`p75`in e?m(`cls`,e.p75):`—`},{key:`samples`,header:`n`,width:6,align:`right`}];return i({cliVersion:f.cliVersion,title:`vitals · ${v}`,commandName:`vitals`,authToken:g?.accessToken??null,refreshIntervalMs:f.watch?5*6e4:0,fetcher:e=>_.getVitals(v,{url:f.url,device:f.device,window:f.window},e),format:y,headlessEmit:(e,t)=>{if(t===`json`||t===`ndjson`){process.stdout.write(JSON.stringify(e,null,t===`json`?2:0)),t===`ndjson`&&process.stdout.write(`
|
|
2
|
-
`);return}process.stdout.write(n(e.vitals,[`url`,`device`,`samples`],t))},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 d.createElement(l,{flexDirection:`column`},n.map(e=>{let n=t(e),r=p(e,n);return d.createElement(u,{key:e},d.createElement(u,{color:r.color},`● `),d.createElement(u,{bold:!0},e.toUpperCase().padEnd(5)),` `,d.createElement(u,null,m(e,n).padStart(8)),` `,d.createElement(u,{color:r.color},r.label))}))}},{id:`pages`,title:`Per-page`,render:e=>e.vitals.length===0?d.createElement(o,{reason:`no-data`,headline:`No vitals data yet`,hint:`Real-user LCP/INP/CLS samples appear once visitors load instrumented pages.`}):d.createElement(a,{data:e.vitals.slice(0,15),columns:b})}]})}export{h as vitalsCommand};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{readConfig as e}from"./config-CZ9IzjIH.js";import{readToken as t}from"./api-DXmhz2DM.js";import{Panel as n}from"./panel-DZqvtaao.js";import{Banner as r}from"./prompt-DEng-me1.js";import"./keybar-DUC7w1HQ.js";import"./sparkline-B6ueqPAB.js";import"./ui-BtZp4Eh8.js";import{ApiV2Client as i}from"./api-v2-CRj-zoG9.js";import{Box as a,Text as o,render as s,useApp as c,useInput as l}from"ink";import u,{useEffect as d,useState as f}from"react";async function p(e,t){let n=new TextEncoder,r=await crypto.subtle.importKey(`raw`,n.encode(e),{name:`HMAC`,hash:`SHA-256`},!1,[`sign`]),i=await crypto.subtle.sign(`HMAC`,r,n.encode(t));return Array.from(new Uint8Array(i),e=>e.toString(16).padStart(2,`0`)).join(``)}function m({stats:e}){return u.createElement(n,{title:`webhooks forward`,state:e.connected?`ok`:`busy`},u.createElement(a,{flexDirection:`column`},u.createElement(o,null,u.createElement(o,{color:`gray`},`public URL `),u.createElement(o,{color:`cyan`},e.publicUrl)),u.createElement(o,null,u.createElement(o,{color:`gray`},`→ forwarding to `),u.createElement(o,{color:`magenta`},e.wsUrl)),u.createElement(o,null,e.connected?u.createElement(o,{color:`green`},`● connected`):u.createElement(o,{color:`yellow`},`○ connecting…`),u.createElement(o,{color:`gray`},` · `,e.total,` requests · `,e.ok,` ok · `),u.createElement(o,{color:e.err>0?`red`:`gray`},e.err,` err`),e.lastStatus===null?null:u.createElement(o,{color:`gray`},` · last: HTTP `,e.lastStatus)),e.lastError?u.createElement(o,{color:`red`},`last error: `,e.lastError.slice(0,80)):null))}async function h(n){let h=await e(),g=await t({strict:!1});if(!g?.accessToken)return process.stderr.write("Not authenticated. Run `zenovay login` first.\n"),2;let _=n.siteId??g.teamId??``;if(!_)return process.stderr.write(`No site selected — pass --site-id or set ZENOVAY_SITE.
|
|
2
|
-
`),2;if(!n.to)return process.stderr.write(`Missing --to <url> (e.g. --to localhost:3000/webhook).
|
|
3
|
-
`),2;let v=n.to.match(/^https?:\/\//)?n.to:`http://${n.to}`,y=new i({config:h,cliVersion:n.cliVersion,token:g}),b;try{b=await y.createTunnel(_,n.to)}catch(e){return process.stderr.write(`Failed to register tunnel: ${e.message}\n`),1}let x=n.sign?n.secret??b.tunnelKey:null,S=()=>{let{exit:e}=c(),[t,i]=f({total:0,ok:0,err:0,lastStatus:null,lastError:null,publicUrl:b.publicUrl,wsUrl:b.wsUrl,connected:!1});return l((t,n)=>{(t===`q`||n.escape)&&e()}),d(()=>{let e=new AbortController,t=async e=>{try{let t={...e.headers};delete t.host,delete t[`content-length`],x&&(t[`X-Zenovay-Signature`]=`sha256=${await p(x,e.body)}`);let n=await fetch(v,{method:e.method,headers:t,body:e.method===`GET`||e.method===`HEAD`?void 0:e.body}),r=await n.text(),a={};return n.headers.forEach((e,t)=>{a[t]=e}),i(e=>({...e,total:e.total+1,ok:e.ok+(n.ok?1:0),err:e.err+(n.ok?0:1),lastStatus:n.status,lastError:n.ok?null:`HTTP ${n.status}`})),{status:n.status,headers:a,body:r}}catch(e){let t=e instanceof Error?e.message:String(e);return i(e=>({...e,total:e.total+1,err:e.err+1,lastError:t})),{status:502,body:JSON.stringify({error:`cli_local_failed`,detail:t})}}};return(async()=>{let n=y.tunnelClient(b.wsUrl);i(e=>({...e,connected:!0}));try{await n.start(t,e.signal)}catch(e){i(t=>({...t,connected:!1,lastError:e.message}))}})(),()=>{e.abort()}},[]),u.createElement(a,{flexDirection:`column`},u.createElement(r,{version:`webhooks forward`}),u.createElement(m,{stats:t}),u.createElement(o,{color:`gray`},`target: `,v,` `,n.sign?`· HMAC-signed`:``),u.createElement(o,{color:`gray`},`[q | Esc] quit`))},{waitUntilExit:C}=s(u.createElement(S,null));return await C(),0}export{h as webhooksForwardCommand};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|