@karan171996/metricflow 0.1.8 → 0.2.0
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/api/analyze/route.js.nft.json +1 -1
- package/.next/server/app/api/connect/route.js +2 -2
- package/.next/server/app/api/connect/route.js.nft.json +1 -1
- package/.next/server/app/api/metrics/route.js +2 -2
- package/.next/server/app/api/metrics/route.js.nft.json +1 -1
- package/.next/server/app/api/setup/ai/route.js.nft.json +1 -1
- package/.next/server/app/api/setup/route.js +1 -1
- package/.next/server/app/api/setup/route.js.nft.json +1 -1
- package/.next/server/app/connect.html +1 -1
- package/.next/server/app/connect.rsc +1 -1
- package/.next/server/app/connect.segments/_full.segment.rsc +1 -1
- package/.next/server/app/connect.segments/_index.segment.rsc +1 -1
- package/.next/server/app/connect.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/connect.segments/connect/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +1 -1
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/performance/[slug]/page.js.nft.json +1 -1
- package/.next/server/app/performance.html +1 -1
- package/.next/server/app/performance.rsc +1 -1
- package/.next/server/app/performance.segments/_full.segment.rsc +1 -1
- package/.next/server/app/performance.segments/_index.segment.rsc +1 -1
- package/.next/server/app/performance.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/performance.segments/performance/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +1 -1
- package/.next/server/app/settings.segments/_full.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/setup/page.js.nft.json +1 -1
- package/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/server/app/setup.html +2 -2
- package/.next/server/app/setup.rsc +8 -8
- package/.next/server/app/setup.segments/_full.segment.rsc +8 -8
- package/.next/server/app/setup.segments/_index.segment.rsc +5 -5
- package/.next/server/app/setup.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +7 -7
- package/.next/server/chunks/{[root-of-the-server]__02yfc43._.js → [root-of-the-server]__0jh5wh2._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1226gv2._.js → [root-of-the-server]__0ndce1-._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1d1y03f._.js → [root-of-the-server]__10xpkhu._.js} +2 -2
- package/.next/server/chunks/_0w8wvdn._.js +1 -1
- package/.next/server/chunks/_0wct7-r._.js +1 -1
- package/.next/server/chunks/_1l9d64o._.js +1 -1
- package/.next/server/chunks/_1lktrox._.js +1 -1
- package/.next/server/chunks/_1ze9o4l._.js +1 -1
- package/.next/server/chunks/ssr/_0defuav._.js +1 -1
- package/.next/server/chunks/ssr/_0htqt7_._.js +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/3xupay20_o0lm.js +1 -0
- package/.next/trace +1 -1
- package/.next/trace-build +1 -1
- package/README.md +2 -3
- package/package.json +3 -2
- package/.next/static/chunks/11ea1elg0081p.js +0 -1
- /package/.next/static/{4eFlFb3mHDe_1sW60xSTA → W3WQIPNU6SPcB55G3PD2t}/_buildManifest.js +0 -0
- /package/.next/static/{4eFlFb3mHDe_1sW60xSTA → W3WQIPNU6SPcB55G3PD2t}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{4eFlFb3mHDe_1sW60xSTA → W3WQIPNU6SPcB55G3PD2t}/_ssgManifest.js +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@karan171996/metricflow",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Local performance dashboard: New Relic page metrics and Sentry errors per page, with AI suggestions. Run with one npx command.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"performance",
|
|
@@ -104,6 +104,7 @@
|
|
|
104
104
|
"test:cli": "node --experimental-test-module-mocks --import ./test/register.mjs --test test/*.test.mjs",
|
|
105
105
|
"test:basic": "node scripts/test-env.mjs basic",
|
|
106
106
|
"test:real": "node scripts/test-env.mjs real",
|
|
107
|
-
"test": "pnpm run test:basic"
|
|
107
|
+
"test": "pnpm run test:basic",
|
|
108
|
+
"release:bump": "node scripts/bump-version.mjs"
|
|
108
109
|
}
|
|
109
110
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,55370,e=>{"use strict";var t=e.i(40798),a=e.i(96341),s=e.i(70065),r=e.i(67881),n=e.i(23750);let i=[{id:"gemini",label:"Google Gemini",help:"Create a key at aistudio.google.com/apikey."},{id:"claude",label:"Anthropic Claude",help:"Create a key at console.anthropic.com > API keys."},{id:"openai",label:"OpenAI",help:"Create a key at platform.openai.com/api-keys."}];e.s(["AiKeyForm",0,function(){let[e,l]=(0,a.useState)(i[0].id),[d,o]=(0,a.useState)(""),[c,m]=(0,a.useState)(null),[p,h]=(0,a.useState)({}),[x,u]=(0,a.useState)(null),[g,f]=(0,a.useState)(!1);async function y(t){t.preventDefault(),f(!0),u(null);try{let t=await fetch("/api/setup/ai",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e,key:d})}),a=await t.json();a.saved?(o(""),m(e),h({...p,[e]:!0}),u({ok:!0,text:"Saved. AI suggestions now use this provider. No restart needed."})):u({ok:!1,text:a.error??"Nothing was saved."})}catch{u({ok:!1,text:"Could not reach the dashboard server."})}finally{f(!1)}}(0,a.useEffect)(()=>{fetch("/api/setup/ai").then(e=>e.json()).then(e=>{e.keys&&(h(e.keys),m(e.provider),e.provider&&l(e.provider))}).catch(()=>{})},[]);let b=i.find(t=>t.id===e);return(0,t.jsxs)(s.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl mt-6",children:[(0,t.jsxs)(s.CardHeader,{children:[(0,t.jsx)(s.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"AI suggestions (optional)"}),(0,t.jsx)(s.CardDescription,{className:"text-sm text-gray-400",children:"Add a Gemini, Claude or OpenAI key to get AI insights and recommendations for your pages. Only page names, load times and error counts are sent to the provider you pick. Without a key, the dashboard shows sample suggestions."})]}),(0,t.jsx)(s.CardContent,{children:(0,t.jsxs)("form",{onSubmit:y,className:"flex flex-col gap-5",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("label",{htmlFor:"ai-provider",className:"text-sm font-medium text-gray-300",children:"Provider"}),(0,t.jsx)("select",{id:"ai-provider",value:e,onChange:e=>l(e.target.value),className:"h-9 rounded-md border border-[#2d3748] bg-[#0f1419] px-3 text-sm text-gray-200",children:i.map(e=>(0,t.jsxs)("option",{value:e.id,children:[e.label,c===e.id?" (in use)":p[e.id]?" (key saved)":""]},e.id))})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("label",{htmlFor:"ai-key",className:"text-sm font-medium text-gray-300",children:[b.label," API key ",p[e]&&(0,t.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,t.jsx)(n.Input,{id:"ai-key",type:"password",autoComplete:"off",spellCheck:!1,placeholder:p[e]?"•••••••• (type to replace)":"",value:d,onChange:e=>o(e.target.value),"aria-describedby":"ai-key-help",className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,t.jsx)("p",{id:"ai-key-help",className:"text-xs text-gray-400",children:b.help})]}),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)(r.Button,{type:"submit",disabled:g||!d.trim(),children:g?"Checking…":"Check and save"}),(0,t.jsx)("span",{"aria-live":"polite",className:`text-sm ${x?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:x?.text})]})]})})]})}])},4603,e=>{"use strict";var t=e.i(40798),a=e.i(96341),s=e.i(3547),r=e.i(70065),n=e.i(67881),i=e.i(23750);let l=[{name:"NEWRELIC_API_KEY",label:"New Relic User API key",secret:!0,help:'READS your data (starts NRAK-). Create it under API keys > key type "User".'},{name:"NEXT_PUBLIC_NEWRELIC_ACCOUNT_ID",label:"New Relic account ID",secret:!1,help:"A plain number, shown next to your keys in New Relic."},{name:"SENTRY_API_KEY",label:"Sentry auth token",secret:!0,help:"Lets the dashboard read issues (scopes: project:read, event:read)."},{name:"SENTRY_ORG_SLUG",label:"Sentry organization slug",secret:!1,help:"The name in your Sentry URL: sentry.io/organizations/<slug>/."},{name:"SENTRY_PROJECT_ID",label:"Sentry project slug",secret:!1,help:"The project's slug from Project settings."}];e.s(["SetupForm",0,function(){let[e,d]=(0,a.useState)({}),[o,c]=(0,a.useState)({}),[m,p]=(0,a.useState)({}),[h,x]=(0,a.useState)(null),[u,g]=(0,a.useState)(!1),[f,y]=(0,a.useState)(!1),b=(0,a.useRef)(null);async function v(t){t.preventDefault(),g(!0),x(null);try{let t=await fetch("/api/setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),a=await t.json(),s=a.results??{};p(s);let r=l.find(e=>s[e.name]&&!s[e.name].ok);r&&setTimeout(()=>b.current?.querySelector(`#${r.name}`)?.focus(),0),a.saved?(y(!0),d({}),c(Object.fromEntries(l.map(e=>[e.name,!0]))),x({ok:!0,text:"Saved. Your keys are valid and stored in .env.local. No restart needed."})):x({ok:!1,text:a.error??"Nothing was saved. Fix the fields marked below."})}catch{x({ok:!1,text:"Could not reach the dashboard server."})}finally{g(!1)}}return(0,a.useEffect)(()=>{fetch("/api/setup").then(e=>e.json()).then(e=>{e.keys?c(e.keys):e.error&&x({ok:!1,text:e.error})}).catch(()=>{})},[]),(0,t.jsxs)(r.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl",children:[(0,t.jsxs)(r.CardHeader,{children:[(0,t.jsx)(r.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"Connect New Relic and Sentry"}),(0,t.jsx)(r.CardDescription,{className:"text-sm text-gray-400",children:"Keys are checked once, saved to .env.local in this folder, and never shown again. The key that sends events (Ingest - License) is separate and is added later on the Connect page."})]}),(0,t.jsx)(r.CardContent,{children:(0,t.jsxs)("form",{ref:b,onSubmit:v,className:"flex flex-col gap-5",children:[l.map(a=>{let s=m[a.name];return(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("label",{htmlFor:a.name,className:"text-sm font-medium text-gray-300",children:[a.label," ",o[a.name]&&(0,t.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,t.jsx)(i.Input,{id:a.name,name:a.name,type:a.secret?"password":"text",autoComplete:"off",spellCheck:!1,placeholder:o[a.name]?"•••••••• (leave blank to keep, type to replace)":"",value:e[a.name]??"",onChange:t=>d({...e,[a.name]:t.target.value}),"aria-invalid":!!s&&!s.ok||void 0,"aria-describedby":`${a.name}-help ${a.name}-result`,className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,t.jsx)("p",{id:`${a.name}-help`,className:"text-xs text-gray-400",children:a.help}),(0,t.jsxs)("div",{id:`${a.name}-result`,"aria-live":"polite",children:[s&&!s.ok&&(0,t.jsxs)("p",{className:"text-xs text-[#f87171]",children:["✗ ",s.error]}),s?.ok&&(0,t.jsx)("p",{className:"text-xs text-[#3ee0a1]",children:"✓ Checked"})]})]},a.name)}),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)(n.Button,{type:"submit",disabled:u,children:u?"Checking…":"Check and save"}),(0,t.jsx)("span",{"aria-live":"polite",className:`text-sm ${h?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:h?.text}),f&&(0,t.jsx)(s.default,{href:"/connect",className:(0,n.buttonVariants)({variant:"outline"}),children:"Next: connect your app"})]})]})})]})}])},70065,e=>{"use strict";var t=e.i(40798),a=e.i(28603);e.s(["Card",0,function({className:e,size:s="default",...r}){return(0,t.jsx)("div",{"data-slot":"card","data-size":s,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...r})},"CardContent",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...s})},"CardDescription",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",e),...s})},"CardHeader",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...s})},"CardTitle",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...s})}])}]);
|
|
File without changes
|
/package/.next/static/{4eFlFb3mHDe_1sW60xSTA → W3WQIPNU6SPcB55G3PD2t}/_clientMiddlewareManifest.js
RENAMED
|
File without changes
|
|
File without changes
|