test-lah 1.0.7 → 1.0.9
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/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +44 -34
- package/.next/standalone/.next/app-path-routes-manifest.json +8 -7
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +21 -21
- package/.next/standalone/.next/server/app/(dashboard)/integrations/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[projectId]/page.js +17 -70
- package/.next/standalone/.next/server/app/(dashboard)/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[projectId]/summary/page.js +2 -22
- package/.next/standalone/.next/server/app/(dashboard)/projects/[projectId]/summary/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[projectId]/summary/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +34 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/.next/server/app/api/e2e/route.js +13 -2
- package/.next/standalone/.next/server/app/api/e2e/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/generate/route.js +13 -2
- package/.next/standalone/.next/server/app/api/generate/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/llm/encrypt/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/llm/test/route.js +13 -2
- package/.next/standalone/.next/server/app/api/llm/test/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/refine-notes/route.js +29 -0
- package/.next/standalone/.next/server/app/api/refine-notes/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/refine-notes/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/weather/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +3 -3
- package/.next/standalone/.next/server/app/integrations.html +1 -1
- package/.next/standalone/.next/server/app/integrations.rsc +4 -4
- package/.next/standalone/.next/server/app/login/page.js +2 -2
- package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login.html +1 -1
- package/.next/standalone/.next/server/app/login.rsc +3 -3
- package/.next/standalone/.next/server/app/page.js +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects.html +1 -1
- package/.next/standalone/.next/server/app/projects.rsc +4 -4
- package/.next/standalone/.next/server/app-paths-manifest.json +8 -7
- package/.next/standalone/.next/server/chunks/423.js +62 -0
- package/.next/standalone/.next/server/chunks/615.js +2 -2
- package/.next/standalone/.next/server/chunks/736.js +2 -2
- package/.next/standalone/.next/server/chunks/779.js +1 -0
- package/.next/standalone/.next/server/chunks/845.js +5 -5
- package/.next/standalone/.next/server/chunks/898.js +21 -0
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/static/chunks/172-84d6b7afea495880.js +1 -0
- package/.next/standalone/.next/static/chunks/246-28370f424ce95be6.js +1 -0
- package/.next/standalone/.next/static/chunks/253-d1beae5e3cf2d88e.js +1 -0
- package/.next/standalone/.next/static/chunks/642-d84ad067810dd35b.js +1 -0
- package/.next/standalone/.next/static/chunks/661-a763fedcbf90af81.js +1 -0
- package/.next/standalone/.next/static/chunks/793-7306e111aea85b00.js +1 -0
- package/.next/standalone/.next/static/chunks/968-a7dcf12036013254.js +62 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/integrations/page-d62f7774ba0ed3ab.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-e4ed5abcbb7c8802.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[projectId]/page-0d320c1bd8d89d9c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[projectId]/summary/page-1b2e89d37c95e30f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-5f4191feafff095a.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/e2e/route-234cc6154c5cd194.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/generate/route-234cc6154c5cd194.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/llm/encrypt/route-234cc6154c5cd194.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/llm/test/route-234cc6154c5cd194.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/refine-notes/route-234cc6154c5cd194.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/weather/route-234cc6154c5cd194.js +1 -0
- package/.next/{static/chunks/app/login/page-a655de2a3e8514f8.js → standalone/.next/static/chunks/app/login/page-35c717d39c71dcbf.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/page-dd12a450edb4a44d.js +1 -0
- package/.next/standalone/.next/static/css/d31bdcc43c2da03c.css +3 -0
- package/.next/standalone/.next/static/pu5ThH8RrsP9e4dTXjYwA/_buildManifest.js +1 -0
- package/.next/standalone/package.json +1 -1
- package/.next/static/chunks/172-84d6b7afea495880.js +1 -0
- package/.next/static/chunks/246-28370f424ce95be6.js +1 -0
- package/.next/static/chunks/253-d1beae5e3cf2d88e.js +1 -0
- package/.next/static/chunks/642-d84ad067810dd35b.js +1 -0
- package/.next/static/chunks/661-a763fedcbf90af81.js +1 -0
- package/.next/static/chunks/793-7306e111aea85b00.js +1 -0
- package/.next/static/chunks/968-a7dcf12036013254.js +62 -0
- package/.next/static/chunks/app/(dashboard)/integrations/page-d62f7774ba0ed3ab.js +1 -0
- package/.next/static/chunks/app/(dashboard)/layout-e4ed5abcbb7c8802.js +1 -0
- package/.next/static/chunks/app/(dashboard)/projects/[projectId]/page-0d320c1bd8d89d9c.js +1 -0
- package/.next/static/chunks/app/(dashboard)/projects/[projectId]/summary/page-1b2e89d37c95e30f.js +1 -0
- package/.next/static/chunks/app/(dashboard)/projects/page-5f4191feafff095a.js +1 -0
- package/.next/static/chunks/app/api/e2e/route-234cc6154c5cd194.js +1 -0
- package/.next/static/chunks/app/api/generate/route-234cc6154c5cd194.js +1 -0
- package/.next/static/chunks/app/api/llm/encrypt/route-234cc6154c5cd194.js +1 -0
- package/.next/static/chunks/app/api/llm/test/route-234cc6154c5cd194.js +1 -0
- package/.next/static/chunks/app/api/refine-notes/route-234cc6154c5cd194.js +1 -0
- package/.next/static/chunks/app/api/weather/route-234cc6154c5cd194.js +1 -0
- package/.next/{standalone/.next/static/chunks/app/login/page-a655de2a3e8514f8.js → static/chunks/app/login/page-35c717d39c71dcbf.js} +1 -1
- package/.next/static/chunks/app/page-dd12a450edb4a44d.js +1 -0
- package/.next/static/css/d31bdcc43c2da03c.css +3 -0
- package/.next/static/pu5ThH8RrsP9e4dTXjYwA/_buildManifest.js +1 -0
- package/README.md +27 -4
- package/package.json +1 -1
- package/.next/standalone/.next/server/chunks/350.js +0 -21
- package/.next/standalone/.next/server/chunks/403.js +0 -1
- package/.next/standalone/.next/server/chunks/583.js +0 -1
- package/.next/standalone/.next/static/Dmhhi1aH71i6LYut_5YOv/_buildManifest.js +0 -1
- package/.next/standalone/.next/static/chunks/246-1673b37cc8edb269.js +0 -1
- package/.next/standalone/.next/static/chunks/485-23e4a6e33ee79f14.js +0 -1
- package/.next/standalone/.next/static/chunks/532-95cb537bb36c2e68.js +0 -62
- package/.next/standalone/.next/static/chunks/637-dcbc811f7143935f.js +0 -1
- package/.next/standalone/.next/static/chunks/708-1fc7a6d1d5b4aee7.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/integrations/page-f5e71fcfbeffdfb1.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-69e4ea7abe9faff3.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[projectId]/page-4f738ff151196fe8.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[projectId]/summary/page-b69fc155f1796e19.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-11a49918142004f5.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/e2e/route-ccff81cd0a5704f2.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/generate/route-ccff81cd0a5704f2.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/llm/encrypt/route-ccff81cd0a5704f2.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/llm/test/route-ccff81cd0a5704f2.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/weather/route-ccff81cd0a5704f2.js +0 -1
- package/.next/standalone/.next/static/chunks/app/page-a90eeaea3538ebf2.js +0 -1
- package/.next/standalone/.next/static/css/ab7683c62149b050.css +0 -3
- package/.next/static/Dmhhi1aH71i6LYut_5YOv/_buildManifest.js +0 -1
- package/.next/static/chunks/246-1673b37cc8edb269.js +0 -1
- package/.next/static/chunks/485-23e4a6e33ee79f14.js +0 -1
- package/.next/static/chunks/532-95cb537bb36c2e68.js +0 -62
- package/.next/static/chunks/637-dcbc811f7143935f.js +0 -1
- package/.next/static/chunks/708-1fc7a6d1d5b4aee7.js +0 -1
- package/.next/static/chunks/app/(dashboard)/integrations/page-f5e71fcfbeffdfb1.js +0 -1
- package/.next/static/chunks/app/(dashboard)/layout-69e4ea7abe9faff3.js +0 -1
- package/.next/static/chunks/app/(dashboard)/projects/[projectId]/page-4f738ff151196fe8.js +0 -1
- package/.next/static/chunks/app/(dashboard)/projects/[projectId]/summary/page-b69fc155f1796e19.js +0 -1
- package/.next/static/chunks/app/(dashboard)/projects/page-11a49918142004f5.js +0 -1
- package/.next/static/chunks/app/api/e2e/route-ccff81cd0a5704f2.js +0 -1
- package/.next/static/chunks/app/api/generate/route-ccff81cd0a5704f2.js +0 -1
- package/.next/static/chunks/app/api/llm/encrypt/route-ccff81cd0a5704f2.js +0 -1
- package/.next/static/chunks/app/api/llm/test/route-ccff81cd0a5704f2.js +0 -1
- package/.next/static/chunks/app/api/weather/route-ccff81cd0a5704f2.js +0 -1
- package/.next/static/chunks/app/page-a90eeaea3538ebf2.js +0 -1
- package/.next/static/css/ab7683c62149b050.css +0 -3
- /package/.next/standalone/.next/static/{Dmhhi1aH71i6LYut_5YOv → pu5ThH8RrsP9e4dTXjYwA}/_ssgManifest.js +0 -0
- /package/.next/static/{Dmhhi1aH71i6LYut_5YOv → pu5ThH8RrsP9e4dTXjYwA}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";exports.id=898,exports.ids=[898],exports.modules={19553:(a,b,c)=>{c.d(b,{P:()=>i});var d=c(38301),e=c(79472);let f={apiKey:"",baseURL:"",defaultModel:"",secondaryModel:"",models:[],connected:!1};function g(){let a={};for(let b of e.Pj)a[b.id]={...f,baseURL:b.baseURL||""};return{activeProvider:null,providers:a}}function h(a){try{localStorage.setItem("qa-llm-config",JSON.stringify(a))}catch{}}function i(){let[a,b]=(0,d.useState)(g),[c,e]=(0,d.useState)(!1),f=(0,d.useCallback)((a,c)=>{let d=g(),e={...d,providers:{...d.providers,[a]:{...d.providers[a],...c}}};h(e),b(e)},[]),i=(0,d.useCallback)(a=>{let c={...g(),activeProvider:a};h(c),b(c)},[]),j=a.activeProvider?a.providers[a.activeProvider]:null,k=c&&!!j&&j.apiKey.length>0&&j.connected;return{config:a,loaded:c,isConnected:k,activeProvider:j,activeProviderId:a.activeProvider,updateProvider:f,setActiveProvider:i}}},22858:(a,b,c)=>{c.d(b,{Bf:()=>B,G$:()=>y,Rz:()=>s,Vj:()=>m,hX:()=>o,ii:()=>l,k5:()=>n,nN:()=>j,sy:()=>A,wy:()=>i});var d=c(19188),e=c(13824),f=c.n(e);let g={untested:"⬜ Untested",pass:"✅ Pass",fail:"❌ Fail",skip:"⏭ Skip",blocked:"\uD83D\uDEAB Blocked"},h=a=>a.replace(/\n/g,"<br>").replace(/\|/g,"\\|");function i(a,b,c){let e=(c.length>0?c:d._X).filter(a=>a.visible),f=e.map(a=>a.label).join(" | "),i=e.map(()=>"---").join(" | "),j=`# ${a.code?a.code+" — ":""}${a.label}
|
|
2
|
+
|
|
3
|
+
`;j+=`| # | ${f} |
|
|
4
|
+
|---|${i}|
|
|
5
|
+
`,b.forEach((a,b)=>{let c=e.map(b=>"status"===b.key?g[a.status]:h(a[b.key]||""));j+=`| ${b+1} | ${c.join(" | ")} |
|
|
6
|
+
`});let k=b.length,l=b.filter(a=>"skip"===a.status).length,m=b.filter(a=>"pass"===a.status).length,n=k-l>0?Math.round(m/(k-l)*100):0;return j+=`
|
|
7
|
+
**Pass rate: ${m}/${k-l} (${n}%)**
|
|
8
|
+
`}function j(a,b){return JSON.stringify({node:a,testCases:b},null,2)}function k(a,b,c){let d=new Blob([a],{type:c}),e=URL.createObjectURL(d),f=document.createElement("a");f.href=e,f.download=b,f.click(),URL.revokeObjectURL(e)}function l(a){k(function(a){let b=`# ${a.name}
|
|
9
|
+
|
|
10
|
+
`;for(let c of a.flows){let e=a.testCases[c.id];if(!e||0===e.length)continue;let f=((a.columnConfigs?.[c.id]??a.columnConfig??[]).length>0?a.columnConfigs?.[c.id]??a.columnConfig??[]:d._X).filter(a=>a.visible),i=f.map(a=>a.label).join(" | "),j=f.map(()=>"---").join(" | ");b+=`## ${c.code?c.code+" — ":""}${c.label}
|
|
11
|
+
|
|
12
|
+
| # | ${i} |
|
|
13
|
+
|---|${j}|
|
|
14
|
+
`,e.forEach((a,c)=>{let d=f.map(b=>"status"===b.key?g[a.status]:h(a[b.key]||""));b+=`| ${c+1} | ${d.join(" | ")} |
|
|
15
|
+
`});let k=e.length,l=e.filter(a=>"skip"===a.status).length,m=e.filter(a=>"pass"===a.status).length,n=k-l>0?Math.round(m/(k-l)*100):0;b+=`
|
|
16
|
+
**Pass rate: ${m}/${k-l} (${n}%)**
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
`}return b}(a),`${a.name}.md`,"text/markdown")}function m(a){k(JSON.stringify(a,null,2),`${a.name}.json`,"application/json")}function n(a,b,c){let d=(a.code||a.label).replace(/[^a-zA-Z0-9_-]/g,"_");k(i(a,b,c),`${d}.md`,"text/markdown")}function o(a,b){let c=(a.code||a.label).replace(/[^a-zA-Z0-9_-]/g,"_");k(j(a,b),`${c}.json`,"application/json")}function p(a,b){let c=a&&a.length>0?a:b;return c.length>0?c:d._X}function q(a,b){return b.map(b=>"status"===b.key?g[a.status]:a[b.key]||"")}function r(a){return a.includes(",")||a.includes('"')||a.includes("\n")?`"${a.replace(/"/g,'""')}"`:a}function s(a,b,c){let e=(a.code||a.label).replace(/[^a-zA-Z0-9_-]/g,"_");k(function(a,b,c){let e=p(c,d._X).filter(a=>a.visible);return[["#",...e.map(a=>r(a.label))].join(","),...b.map((a,b)=>[String(b+1),...q(a,e).map(r)].join(","))].join("\n")}(0,b,c),`${e}.csv`,"text/csv")}function t(a,b){let c=a.columnConfigs?.[b]??a.columnConfig??[];return c.length>0?c:d._X}function u(a){a.fill={type:"pattern",pattern:"solid",fgColor:{argb:"FFdbd8d3"}},a.font={name:"Inter",bold:!0,size:11},a.border={top:{style:"thin"},bottom:{style:"thin"},left:{style:"thin"},right:{style:"thin"}},a.alignment={vertical:"middle",horizontal:"left",wrapText:!0}}function v(a){a.border={top:{style:"thin"},bottom:{style:"thin"},left:{style:"thin"},right:{style:"thin"}},a.font={name:"Inter",size:11},a.alignment={vertical:"middle",horizontal:"left",wrapText:!0}}function w(a,b,c,d,e){let f=a.addWorksheet(b);return f.columns=[{header:"#",key:"row",width:6},...e.map(a=>({header:a.label,key:a.key,width:Math.max(a.label.length+4,18)}))],f.getRow(1).eachCell(u),d.forEach((a,b)=>{let c={row:b+1};e.forEach(b=>{"status"===b.key?c[b.key]=g[a.status]:c[b.key]=a[b.key]||""}),f.addRow(c).eachCell(v)}),f}async function x(a,b,c){let e=p(c,d._X).filter(a=>a.visible),g=new(f()).Workbook;return g.creator="Ayu Management Tools",w(g,a.label,a.label,b,e),new Blob([await g.xlsx.writeBuffer()],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})}async function y(a,b,c){let d=(a.code||a.label).replace(/[^a-zA-Z0-9_-]/g,"_"),e=await x(a,b,c),f=URL.createObjectURL(e),g=document.createElement("a");g.href=f,g.download=`${d}.xlsx`,g.click(),URL.revokeObjectURL(f)}async function z(a){let b=new(f()).Workbook;for(let c of(b.creator="Ayu Management Tools",a.flows)){let d=a.testCases[c.id];if(!d||0===d.length)continue;let e=t(a,c.id).filter(a=>a.visible);w(b,(c.code||c.label).substring(0,31).replace(/[\\/*?[\]]/g,"_"),c.label,d,e)}return new Blob([await b.xlsx.writeBuffer()],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})}async function A(a){let b=await z(a),c=URL.createObjectURL(b),d=document.createElement("a");d.href=c,d.download=`${a.name}.xlsx`,d.click(),URL.revokeObjectURL(c)}function B(a){k(function(a){let b="";for(let c of a.flows){let d=a.testCases[c.id];if(!d||0===d.length)continue;let e=t(a,c.id).filter(a=>a.visible);b+=`# ${c.code?c.code+" — ":""}${c.label}
|
|
21
|
+
`+["#",...e.map(a=>r(a.label))].join(",")+"\n",d.forEach((a,c)=>{let d=[String(c+1),...q(a,e).map(r)];b+=d.join(",")+"\n"}),b+="\n"}return b}(a),`${a.name}.csv`,"text/csv")}},36427:(a,b,c)=>{c.d(b,{Z7:()=>e,Js:()=>f});var d=c(67423);async function e(a,b,c,d="google",f="",g="en",h,i){let j=await fetch("/api/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:a,prompt:b,apiKey:c,provider:d,model:f,language:g,baseURL:h,images:i})});if(!j.ok)throw Error((await j.json().catch(()=>({error:"Request failed"}))).error||`HTTP ${j.status}`);return(await j.json()).testCases}async function f(a,b,c,d="google",e="",g){let h=await fetch("/api/refine-notes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:a,notes:b,apiKey:c,provider:d,model:e,baseURL:g})});if(!h.ok)throw Error((await h.json().catch(()=>({error:"Request failed"}))).error||`HTTP ${h.status}`);return(await h.json()).refined}d.Ik({title:d.Yj().describe("Short descriptive title of the test case"),steps:d.Yj().describe("Numbered test steps separated by newlines"),expected:d.Yj().describe("Expected result of the test")})},79472:(a,b,c)=>{c.d(b,{Pj:()=>d});let d=Object.values({openai:{id:"openai",name:"OpenAI",type:"native",description:"GPT models powering ChatGPT. Industry-leading language understanding.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/openai.svg",keyUrl:"https://platform.openai.com/api-keys",keyPlaceholder:"sk-...",color:"#10A37F",sdkProvider:"openai",defaultModel:"gpt-4o-mini",popularModels:["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-3.5-turbo"]},google:{id:"google",name:"Google Gemini",type:"native",description:"Google's multimodal AI with strong reasoning capabilities.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/googlegemini.svg",keyUrl:"https://aistudio.google.com/apikey",keyPlaceholder:"AIza...",color:"#4285F4",sdkProvider:"google",defaultModel:"gemini-2.5-flash",popularModels:["gemini-2.5-flash","gemini-2.5-pro","gemini-2.0-flash"]},anthropic:{id:"anthropic",name:"Anthropic",type:"native",description:"Claude models — safe, steerable, and highly capable.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/anthropic.svg",keyUrl:"https://console.anthropic.com/settings/keys",keyPlaceholder:"sk-ant-...",color:"#D97706",sdkProvider:"anthropic",defaultModel:"claude-sonnet-4-20250514",popularModels:["claude-sonnet-4-20250514","claude-haiku-4-20250514","claude-3-5-sonnet-20241022"]},deepseek:{id:"deepseek",name:"DeepSeek",type:"openai-compatible",description:"High-performance open-source models with competitive reasoning.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/deepseek.svg",keyUrl:"https://platform.deepseek.com/api_keys",keyPlaceholder:"sk-...",color:"#4D6BFE",sdkProvider:"openai",baseURL:"https://api.deepseek.com/v1",defaultModel:"deepseek-chat",popularModels:["deepseek-chat","deepseek-reasoner"]},xiaomi:{id:"xiaomi",name:"Xiaomi (MiMo)",type:"openai-compatible",description:"Xiaomi's MiMo models — OpenAI-compatible API.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/xiaomi.svg",keyUrl:"https://platform.xiaomimimo.com/",keyPlaceholder:"tp-...",color:"#FF6900",sdkProvider:"openai",baseURL:"https://token-plan-sgp.xiaomimimo.com/v1",defaultModel:"mimo-v2.5",popularModels:["mimo-v2.5","mimo-v2.5-pro"]},openrouter:{id:"openrouter",name:"OpenRouter",type:"openai-compatible",description:"Unified gateway to 200+ models — Claude, Llama, Mistral, Gemini, and more.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/openrouter.svg",keyUrl:"https://openrouter.ai/keys",keyPlaceholder:"sk-or-...",color:"#6366F1",sdkProvider:"openai",baseURL:"https://openrouter.ai/api/v1",defaultModel:"openrouter/free",popularModels:["openrouter/free","meta-llama/llama-4-maverick:free","google/gemini-2.5-flash:free","deepseek/deepseek-chat-v3-0324:free","mistralai/mistral-small-3.2-24b:free","qwen/qwen3-235b-a22b:free","microsoft/phi-4-reasoning-plus:free"]},groq:{id:"groq",name:"Groq",type:"native",description:"Ultra-fast inference with LPU hardware. Blazing speed for Llama, Mixtral, and Gemma models.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/groq.svg",keyUrl:"https://console.groq.com/keys",keyPlaceholder:"gsk_...",color:"#F55036",sdkProvider:"groq",defaultModel:"llama-3.3-70b-versatile",popularModels:["llama-3.3-70b-versatile","llama-3.1-8b-instant","mixtral-8x7b-32768","gemma2-9b-it","meta-llama/llama-4-scout-17b-16e-instruct","qwen-qwq-32b"]},custom:{id:"custom",name:"Custom (OpenAI-compatible)",type:"openai-compatible",description:"Any OpenAI-compatible API — Ollama, LM Studio, vLLM, LiteLLM, etc.",logoUrl:"",keyUrl:"",keyPlaceholder:"sk-... or any key",color:"#6B7280",sdkProvider:"openai",defaultModel:"",popularModels:[],requiresBaseURL:!0}})}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--pu5ThH8RrsP9e4dTXjYwA--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/d31bdcc43c2da03c.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-879312f65eed9520.js"/><script src="/_next/static/chunks/4bd1b696-c023c6e3521b1417.js" async=""></script><script src="/_next/static/chunks/255-4f84124391a7dac4.js" async=""></script><script src="/_next/static/chunks/main-app-9c62372c526a8308.js" async=""></script><script src="/_next/static/chunks/app/layout-3ad98a7069d70b7b.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Test Lah!</title><meta name="description" content="Test Lah! — Your Boss's Favorite QA Tool"/><link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="350x350"/><link rel="icon" href="/favicon.ico"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3" style="font-family:Inter, system-ui, sans-serif"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><div class="fixed bottom-0 left-0 right-0 z-[600] transition-all duration-300 ease-out" style="opacity:0;transform:translateY(100%);pointer-events:none"><div class="h-1 w-full" style="background-color:var(--bg-secondary)"><div class="h-full transition-all duration-200 ease-out" style="width:0%;background-color:var(--accent);box-shadow:none"></div></div></div><script src="/_next/static/chunks/webpack-879312f65eed9520.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[6061,[\"177\",\"static/chunks/app/layout-3ad98a7069d70b7b.js\"],\"Providers\"]\n3:I[9766,[],\"\"]\n4:I[8924,[],\"\"]\n5:I[4431,[],\"OutletBoundary\"]\n7:I[5278,[],\"AsyncMetadataOutlet\"]\n9:I[4431,[],\"ViewportBoundary\"]\nb:I[4431,[],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[7150,[],\"\"]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/d31bdcc43c2da03c.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"pu5ThH8RrsP9e4dTXjYwA\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/d31bdcc43c2da03c.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3\",\"style\":{\"fontFamily\":\"Inter, system-ui, sans-serif\"},\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"f:I[622,[],\"IconMark\"]\n8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Test Lah!\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Test Lah! — Your Boss's Favorite QA Tool\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"350x350\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"$Lf\",\"4\",{}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-879312f65eed9520.js" defer=""></script><script src="/_next/static/chunks/framework-a6e0b7e30f98059a.js" defer=""></script><script src="/_next/static/chunks/main-646068343426c12d.js" defer=""></script><script src="/_next/static/chunks/pages/_app-7d307437aca18ad4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-cb2a52f75f2162e2.js" defer=""></script><script src="/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-879312f65eed9520.js" defer=""></script><script src="/_next/static/chunks/framework-a6e0b7e30f98059a.js" defer=""></script><script src="/_next/static/chunks/main-646068343426c12d.js" defer=""></script><script src="/_next/static/chunks/pages/_app-7d307437aca18ad4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-cb2a52f75f2162e2.js" defer=""></script><script src="/_next/static/pu5ThH8RrsP9e4dTXjYwA/_buildManifest.js" defer=""></script><script src="/_next/static/pu5ThH8RrsP9e4dTXjYwA/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"pu5ThH8RrsP9e4dTXjYwA","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[172],{619:(e,t,r)=>{r.d(t,{E:()=>i});var n=r(3182),o=r(938);function i(e){for(var t=arguments.length,r=Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];let a=e.length;return(0,o.j)(r.filter(n.S),function(){let t="";for(let o=0;o<a;o++){t+=e[o];let i=r[o];i&&(t+=(0,n.S)(i)?i.get():i)}return t})}},938:(e,t,r)=>{r.d(t,{j:()=>a});var n=r(3934),o=r(6436),i=r(3350);function a(e,t){let r=(0,i.d)(t()),a=()=>r.set(t());return a(),(0,o.E)(()=>{let t=()=>n.Gt.preRender(a,!1,!0),r=e.map(e=>e.on("change",t));return()=>{r.forEach(e=>e()),(0,n.WG)(a)}}),r}},2850:(e,t,r)=>{r.d(t,{z:()=>y});var n=r(3182),o=r(9752),i=r(3934);function a(e){return"number"==typeof e?e:parseFloat(e)}var u=r(2115),l=r(3127),f=r(3350),s=r(6706),c=r(4416),d=r(938),v=r(2039);function g(e,t){let r=(0,c.M)(()=>[]);return(0,d.j)(e,()=>{r.length=0;let n=e.length;for(let t=0;t<n;t++)r[t]=e[t].get();return t(r)})}function y(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{isStatic:r}=(0,u.useContext)(l.Q),y=()=>(0,n.S)(e)?e.get():e;if(r)return function e(t,r,n,o){if("function"==typeof t){v.bt.current=[],t();let e=(0,d.j)(v.bt.current,t);return v.bt.current=void 0,e}if(void 0!==n&&!Array.isArray(n)&&"function"!=typeof r){var i=t,a=r,u=n,l=o;let f=(0,c.M)(()=>Object.keys(u)),s=(0,c.M)(()=>({}));for(let t of f)s[t]=e(i,a,u[t],l);return s}let f="function"==typeof r?r:function(...e){let t=!Array.isArray(e[0]),r=t?0:-1,n=e[0+r],o=e[1+r],i=e[2+r],a=e[3+r],u=(0,s.G)(o,i,a);return t?u(n):u}(r,n,o),y=Array.isArray(t)?g(t,f):g([t],e=>{let[t]=e;return f(t)}),p=Array.isArray(t)?void 0:t.accelerate;return p&&!p.isTransformed&&"function"!=typeof r&&Array.isArray(n)&&(null==o?void 0:o.clamp)!==!1&&(y.accelerate={...p,times:r,keyframes:n,isTransformed:!0,...(null==o?void 0:o.ease)?{ease:o.ease}:{}}),y}(y);let p=(0,f.d)(y());return(0,u.useInsertionEffect)(()=>(function(e,t,r={}){let u,l=e.get(),f=null,s=l,c="string"==typeof l?l.replace(/[\d.-]/g,""):void 0,d=()=>{f&&(f.stop(),f=null),e.animation=void 0},v=()=>{(()=>{let t=a(e.get()),n=a(s);if(t===n)return d();let i=f?f.getGeneratorVelocity():e.getVelocity();d(),f=new o.s({keyframes:[t,n],velocity:i,type:"spring",restDelta:.001,restSpeed:.01,...r,onUpdate:u})})(),e.animation=f??void 0,e.events.animationStart?.notify(),f?.then(()=>{e.animation=void 0,e.events.animationComplete?.notify()})};if(e.attach((e,t)=>{s=e,u=e=>{var r,n;return t((r=e,(n=c)?r+n:r))},i.Gt.postRender(v)},d),(0,n.S)(t)){let n=!0===r.skipInitialAnimation,o=t.on("change",t=>{var r,o,i,a;n?(n=!1,e.jump((r=t,(o=c)?r+o:r),!1)):e.set((i=t,(a=c)?i+a:i))}),i=e.on("destroy",o);return()=>{o(),i()}}return d})(p,e,t),[p,JSON.stringify(t)]),p}(e,{type:"spring",...t})}},3350:(e,t,r)=>{r.d(t,{d:()=>u});var n=r(2039),o=r(2115),i=r(3127),a=r(4416);function u(e){let t=(0,a.M)(()=>(0,n.OQ)(e)),{isStatic:r}=(0,o.useContext)(i.Q);if(r){let[,r]=(0,o.useState)(e);(0,o.useEffect)(()=>t.on("change",r),[])}return t}},3648:(e,t,r)=>{r.d(t,{_:()=>n});function n(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}},4570:(e,t,r)=>{r.d(t,{W:()=>a});var n=r(2115),o=r(8561);let i={some:0,all:1};function a(e){let{root:t,margin:r,amount:a,once:u=!1,initial:l=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},[f,s]=(0,n.useState)(l);return(0,n.useEffect)(()=>{if(!e.current||u&&f)return;let n={root:t&&t.current||void 0,margin:r,amount:a};return function(e,t,{root:r,margin:n,amount:a="some"}={}){let u=(0,o.K)(e),l=new WeakMap,f=new IntersectionObserver(e=>{e.forEach(e=>{let r=l.get(e.target);if(!!r!==e.isIntersecting)if(e.isIntersecting){let r=t(e.target,e);"function"==typeof r?l.set(e.target,r):f.unobserve(e.target)}else"function"==typeof r&&(r(e),l.delete(e.target))})},{root:r,rootMargin:n,threshold:"number"==typeof a?a:i[a]});return u.forEach(e=>f.observe(e)),()=>f.disconnect()}(e.current,()=>(s(!0),u?void 0:()=>s(!1)),n)},[t,e,r,u,a]),f}},5379:(e,t,r)=>{r.d(t,{D:()=>a});var n=r(2115),o=n.createContext(void 0),i={setTheme:e=>{},themes:[]},a=()=>{var e;return null!=(e=n.useContext(o))?e:i}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[246],{7065:(e,t,r)=>{r.d(t,{q:()=>n,s:()=>a});var l=r(5155),s=r(2115);function a(){let[e,t]=(0,s.useState)(null),r=(0,s.useCallback)((e,r)=>new Promise(l=>{t({type:"alert",title:e,message:r,resolve:()=>{t(null),l()}})}),[]);return{dialog:e,alert:r,confirm:(0,s.useCallback)((e,r)=>new Promise(l=>{t({type:"confirm",title:e,message:r,resolve:e=>{t(null),l(!0===e)}})}),[]),prompt:(0,s.useCallback)(function(e,r){let l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return new Promise(s=>{t({type:"prompt",title:e,message:r,defaultValue:l,resolve:e=>{t(null),s("string"==typeof e?e:null)}})})},[])}}function n(e){let{dialog:t}=e,[r,a]=(0,s.useState)(""),n=(0,s.useRef)(null);return((0,s.useEffect)(()=>{if((null==t?void 0:t.type)==="prompt"){var e;a(null!=(e=t.defaultValue)?e:""),setTimeout(()=>{var e;return null==(e=n.current)?void 0:e.focus()},50)}},[t]),(0,s.useEffect)(()=>{if(!t)return;let e=e=>{"Escape"===e.key&&t.resolve("prompt"===t.type&&null),"Enter"===e.key&&"prompt"!==t.type&&t.resolve("confirm"===t.type||null)};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[t]),t)?(0,l.jsx)("div",{className:"fixed inset-0 z-[400] flex items-center justify-center",style:{backgroundColor:"rgba(0,0,0,0.3)",animation:"fadeIn 150ms ease-out"},onClick:()=>t.resolve("prompt"===t.type&&null),children:(0,l.jsx)("div",{className:"relative w-full max-w-sm mx-4",onClick:e=>e.stopPropagation(),children:(0,l.jsx)("div",{className:"p-[2px] rounded-xl overflow-hidden",style:{background:"linear-gradient(135deg, #9E7AFF 0%, #FE8BBB 50%, #9E7AFF 100%)",backgroundSize:"200% 200%",animation:"borderShine 3s linear infinite"},children:(0,l.jsxs)("div",{className:"rounded-[10px] p-5",style:{backgroundColor:"var(--bg-card)",boxShadow:"var(--shadow-xl)"},children:[(0,l.jsx)("h3",{className:"text-sm font-semibold mb-2",style:{color:"var(--text-primary)"},children:t.title}),(0,l.jsx)("p",{className:"text-xs mb-4",style:{color:"var(--text-secondary)"},children:t.message}),"prompt"===t.type&&(0,l.jsx)("input",{ref:n,value:r,onChange:e=>a(e.target.value),onKeyDown:e=>{"Enter"===e.key&&t.resolve(r.trim()||null)},className:"w-full px-3 py-2 text-sm rounded-lg border outline-none transition-colors focus:border-[var(--accent)] mb-4",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-secondary)",color:"var(--text-primary)"},placeholder:"Enter value..."}),(0,l.jsxs)("div",{className:"flex gap-2 justify-end",children:["alert"!==t.type&&(0,l.jsx)("button",{onClick:()=>t.resolve("prompt"===t.type&&null),className:"px-3 py-1.5 text-xs font-medium rounded-lg border transition-colors hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-secondary)"},children:"Cancel"}),(0,l.jsx)("button",{onClick:()=>{"confirm"===t.type?t.resolve(!0):"prompt"===t.type?t.resolve(r.trim()||null):t.resolve(null)},className:"px-3 py-1.5 text-xs font-medium rounded-lg transition-opacity hover:opacity-80",style:{backgroundColor:"var(--accent)",color:"var(--bg-primary)"},children:"confirm"===t.type?"Confirm":"OK"})]})]})})})}):null}},7246:(e,t,r)=>{r.d(t,{q:()=>f,M:()=>C});var l=r(5155),s=r(2115);function a(e,t){let[r,l]=(0,s.useState)(()=>(function(e,t){try{let r=localStorage.getItem(e);return r?JSON.parse(r):t}catch(e){return t}})(e,t)),[a,n]=(0,s.useState)(null),o=(0,s.useRef)(null);return(0,s.useEffect)(()=>{let t=t=>{if(t.key===e&&t.newValue)try{l(JSON.parse(t.newValue))}catch(e){}};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)},[e]),[r,(0,s.useCallback)(t=>{l(r=>{let l=t instanceof Function?t(r):t;return o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{try{localStorage.setItem(e,JSON.stringify(l))}catch(e){}n(new Date().toISOString())},300),l})},[e]),a]}var n=r(8566);let o={projects:{},activeProjectId:null,selectedNodeId:null},i={name:"",bannerColor:"#64B5F6",avatarUrl:"",role:"QA Engineer"};function c(e){try{localStorage.setItem("qa-last-test-activity",new Date().toISOString());let t=localStorage.getItem("qa-project-activity"),r=t?JSON.parse(t):{};r[e]=new Date().toISOString(),localStorage.setItem("qa-project-activity",JSON.stringify(r))}catch(e){}}let u={baseUrl:"http://localhost:3000",browser:"chromium",headless:!0,timeout:3e4};var d=r(7065);let p=(0,s.createContext)(null);function f(e){let{children:t}=e,r=function(){var e;let[t,r,l]=a("qa-dashboard",o),i=(0,s.useCallback)((e,t)=>{let l=crypto.randomUUID(),s={id:l,name:e,type:t||"",notes:"",createdAt:new Date().toISOString(),flows:[],testCases:{},columnConfig:[...n._X],columnConfigs:{},edges:[],userProfile:{name:"",bannerColor:"#64B5F6"},nodeCounter:0,tcCounter:{}};return r(e=>({...e,projects:{...e.projects,[l]:s},activeProjectId:l,selectedNodeId:null})),l},[r]),c=(0,s.useCallback)(e=>{r(t=>{var r;let{[e]:l,...s}=t.projects,a=Object.keys(s);return{...t,projects:s,activeProjectId:t.activeProjectId===e?null!=(r=a[0])?r:null:t.activeProjectId,selectedNodeId:t.activeProjectId===e?null:t.selectedNodeId}})},[r]),u=(0,s.useCallback)(e=>{r(t=>({...t,activeProjectId:e,selectedNodeId:null}))},[r]),d=(0,s.useCallback)((e,t)=>{r(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],name:t}}}))},[r]),p=(0,s.useCallback)(e=>{r(t=>{let r=t.projects[e];if(!r)return t;let l=crypto.randomUUID(),s=new Date().toISOString(),a={...JSON.parse(JSON.stringify(r)),id:l,name:"".concat(r.name," (Copy)"),createdAt:s};return{...t,projects:{...t.projects,[l]:a},activeProjectId:l,selectedNodeId:null}})},[r]),f=(0,s.useCallback)(e=>{try{let t=JSON.parse(e);if(!t||"object"!=typeof t)return{ok:!1,error:"Invalid JSON"};if(!t.name||!t.flows)return{ok:!1,error:"Missing required fields (name, flows)"};let l=crypto.randomUUID(),s={id:l,name:t.name,createdAt:t.createdAt||new Date().toISOString(),flows:Array.isArray(t.flows)?t.flows:[],testCases:t.testCases&&"object"==typeof t.testCases?t.testCases:{},columnConfig:Array.isArray(t.columnConfig)?t.columnConfig:[...n._X],columnConfigs:t.columnConfigs&&"object"==typeof t.columnConfigs?t.columnConfigs:{},edges:Array.isArray(t.edges)?t.edges:[],userProfile:t.userProfile&&"object"==typeof t.userProfile?t.userProfile:{name:"",bannerColor:"#64B5F6"},nodeCounter:"number"==typeof t.nodeCounter?t.nodeCounter:0,tcCounter:t.tcCounter&&"object"==typeof t.tcCounter?t.tcCounter:{}};return r(e=>({...e,projects:{...e.projects,[l]:s},activeProjectId:l,selectedNodeId:null})),{ok:!0}}catch(e){return{ok:!1,error:"Failed to parse project file"}}},[r]),C=(0,s.useCallback)(e=>{r(t=>({...t,selectedNodeId:e}))},[r]),m=(0,s.useCallback)((e,t)=>{r(r=>({...r,projects:{...r.projects,[e]:t(r.projects[e])}}))},[r]),v=t.activeProjectId&&null!=(e=t.projects[t.activeProjectId])?e:null;return{state:t,setState:r,projects:t.projects,activeProject:v,activeProjectId:t.activeProjectId,selectedNodeId:t.selectedNodeId,createProject:i,deleteProject:c,duplicateProject:p,importProject:f,switchProject:u,renameProject:d,setSelectedNodeId:C,updateProject:m,lastSaved:l}}(),f=function(){let[e,t]=a("qa-profile",i),r=e.name.split(" ").map(e=>e[0]).filter(Boolean).slice(0,2).join("").toUpperCase()||"?";return{profile:e,setName:e=>t(t=>({...t,name:e})),setBannerColor:e=>t(t=>({...t,bannerColor:e})),setAvatarUrl:e=>t(t=>({...t,avatarUrl:e})),setRole:e=>t(t=>({...t,role:e})),initials:r}}(),C=function(e,t){let[r,l]=(0,s.useState)([]),[a,n]=(0,s.useState)(-1),o=(0,s.useRef)(!1),i=(0,s.useCallback)(t=>{if(!e||o.current){o.current=!1;return}l(r=>{let l=[...r.slice(0,a+1),{label:t,projectSnapshot:JSON.parse(JSON.stringify(e))}];return l.length>50&&l.shift(),l}),n(e=>Math.min(e+1,49))},[e,a]),c=(0,s.useCallback)(()=>{if(a<0||!e)return;let l=r[a];l&&(o.current=!0,t(e.id,()=>l.projectSnapshot),n(e=>e-1))},[r,a,e,t]),u=(0,s.useCallback)(()=>{if(a>=r.length-1||!e)return;let l=r[a+1];l&&(o.current=!0,t(e.id,()=>l.projectSnapshot),n(e=>e+1))},[r,a,e,t]),d=a>=0;return{pushState:i,undo:c,redo:u,canUndo:d,canRedo:a<r.length-1,recentActions:r.slice(-10).map(e=>e.label).reverse()}}(r.activeProject,r.updateProject),m=function(e,t,r,l){var a,o;let i=null!=(a=null==e?void 0:e.flows)?a:[],c=null!=(o=null==e?void 0:e.edges)?o:[],u=(0,s.useCallback)((r,s,a,o)=>{if(!e)return null;let i=crypto.randomUUID(),c="";return t(e.id,e=>{var t;let l=(null!=(t=e.nodeCounter)?t:0)+1,u=(s||"").trim().replace(/[^a-zA-Z0-9\s]/g,"").split(/\s+/).filter(e=>e.length>0),d="";d=u.length>=2?u[0].charAt(0).toUpperCase()+u[u.length-1].charAt(0).toUpperCase():1===u.length&&u[0].length>=2?u[0].charAt(0).toUpperCase()+u[0].charAt(u[0].length-1).toUpperCase():"N";let p=e.flows.map(e=>e.code),f=d,C=1;for(;p.includes(f);)f=d+String(++C);c=f;let m=(0,n.IU)(i,c,s,r);a&&(m.position=a),o&&(m.direction=o);let v=[...e.flows];if(r){let e=v.findIndex(e=>e.id===r);-1!==e&&(v[e]={...v[e],children:[...v[e].children,i]})}return v.push(m),{...e,flows:v,testCases:{...e.testCases,[i]:[]},nodeCounter:l}}),l(i),i},[e,t,l]),d=(0,s.useCallback)(s=>{if(!e)return;let a=new Set,n=t=>{a.add(t);let r=e.flows.find(e=>e.id===t);null==r||r.children.forEach(n)};n(s),t(e.id,e=>{var t;let r=e.flows.filter(e=>!a.has(e.id)).map(e=>({...e,children:e.children.filter(e=>!a.has(e))})),l={...e.testCases};a.forEach(e=>delete l[e]);let s=(null!=(t=e.edges)?t:[]).filter(e=>!a.has(e.fromId)&&!a.has(e.toId));return{...e,flows:r,testCases:l,edges:s}}),a.has(null!=r?r:"")&&l(null)},[e,t,r,l]),p=(0,s.useCallback)(s=>{if(!e||0===s.length)return;let a=new Set,n=t=>{a.add(t);let r=e.flows.find(e=>e.id===t);null==r||r.children.forEach(n)};s.forEach(n),t(e.id,e=>{var t;let r=e.flows.filter(e=>!a.has(e.id)).map(e=>({...e,children:e.children.filter(e=>!a.has(e))})),l={...e.testCases};a.forEach(e=>delete l[e]);let s=(null!=(t=e.edges)?t:[]).filter(e=>!a.has(e.fromId)&&!a.has(e.toId));return{...e,flows:r,testCases:l,edges:s}}),a.has(null!=r?r:"")&&l(null)},[e,t,r,l]),f=(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>({...e,flows:e.flows.map(e=>e.id===r?{...e,label:l}:e)}))},[e,t]),C=(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>({...e,flows:e.flows.map(e=>e.id===r?{...e,...l}:e)}))},[e,t]),m=(0,s.useCallback)(r=>{e&&t(e.id,e=>{let t=e.flows.find(e=>e.id===r);return t&&t.parentId?{...e,flows:e.flows.map(e=>e.id===r?{...e,parentId:null}:e.id===t.parentId?{...e,children:e.children.filter(e=>e!==r)}:e)}:e})},[e,t]),v=(0,s.useCallback)(e=>{l(e)},[l]),g=(0,s.useCallback)((r,l,s)=>{if(!e)return;let a={id:crypto.randomUUID(),fromId:r,toId:l,type:s};t(e.id,e=>{var t;return{...e,edges:[...null!=(t=e.edges)?t:[],a]}})},[e,t]),b=(0,s.useCallback)(r=>{e&&t(e.id,e=>{var t;return{...e,edges:(null!=(t=e.edges)?t:[]).filter(e=>e.id!==r)}})},[e,t]);return{nodes:i,edges:c,selectedNodeId:r,addNode:u,deleteNode:d,deleteNodes:p,unlinkNode:m,renameNode:f,updateNode:C,selectNode:v,addEdge:g,deleteEdge:b,updateEdge:(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>{var t;return{...e,edges:(null!=(t=e.edges)?t:[]).map(e=>e.id===r?{...e,...l}:e)}})},[e,t]),resetLayout:(0,s.useCallback)(()=>{e&&t(e.id,e=>({...e,flows:e.flows.map(e=>({...e,position:null}))}))},[e,t])}}(r.activeProject,r.updateProject,r.selectedNodeId,r.setSelectedNodeId),v=function(e,t,r){var l;let a=r&&e&&null!=(l=e.testCases[r])?l:[],o=function(e){let t=e.length,r=e.filter(e=>"pass"===e.status).length,l=e.filter(e=>"fail"===e.status).length,s=e.filter(e=>"skip"===e.status).length,a=e.filter(e=>"untested"===e.status).length,n=e.filter(e=>"blocked"===e.status).length,o=t-s,i=o>0?Math.round(r/o*100):0;return{total:t,pass:r,fail:l,skip:s,untested:a,blocked:n,passRate:i}}(a),i=(0,s.useCallback)((r,l,s,a)=>{var n,o;if(!e)return;let i=e.flows.find(e=>e.id===r),u=null!=(n=null==i?void 0:i.code)?n:"N000",d=null!=(o=e.testCases[r])?o:[],p="";t(e.id,e=>{var t,n,o;let i={...null!=(t=e.tcCounter)?t:{}},c=(null!=(n=i[r])?n:0)+1;i[r]=c,p="".concat(u,"-TC").concat(String(c).padStart(3,"0"));let f={id:crypto.randomUUID(),code:p,title:l,steps:null!=s?s:"",expected:null!=a?a:"",status:"untested",case_type:"General",notes:"",links:"",order:d.length};return{...e,testCases:{...e.testCases,[r]:[...null!=(o=e.testCases[r])?o:[],f]},tcCounter:i}}),c(e.id)},[e,t]),u=(0,s.useCallback)((r,l,s)=>{e&&(t(e.id,e=>{var t;return{...e,testCases:{...e.testCases,[r]:(null!=(t=e.testCases[r])?t:[]).map(e=>e.id===l?{...e,...s}:e)}}}),c(e.id))},[e,t]),d=(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>{var t;return{...e,testCases:{...e.testCases,[r]:(null!=(t=e.testCases[r])?t:[]).filter(e=>e.id!==l)}}})},[e,t]),p=(0,s.useCallback)((r,l)=>{if(!e||0===l.length)return;let s=new Set(l);t(e.id,e=>{var t;return{...e,testCases:{...e.testCases,[r]:(null!=(t=e.testCases[r])?t:[]).filter(e=>!s.has(e.id))}}})},[e,t]),f=(0,s.useCallback)((r,l,s)=>{if(!e||0===l.length)return;let a=new Set(l);t(e.id,e=>{var t;return{...e,testCases:{...e.testCases,[r]:(null!=(t=e.testCases[r])?t:[]).map(e=>a.has(e.id)?{...e,...s}:e)}}})},[e,t]),C=(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>{var t;let s=new Map((null!=(t=e.testCases[r])?t:[]).map(e=>[e.id,e])),a=l.map((e,t)=>{let r=s.get(e);return r?{...r,order:t}:null}).filter(Boolean);return{...e,testCases:{...e.testCases,[r]:a}}})},[e,t]),m=(0,s.useCallback)((r,l,s)=>{e&&t(e.id,e=>{var t,a;let o={...null!=(t=e.columnConfigs)?t:{}},i=null!=(a=o[r])?a:[...n._X];return o[r]=i.map(e=>e.key===l?{...e,label:s}:e),{...e,columnConfigs:o}})},[e,t]),v=(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>{var t,s;let a={...null!=(t=e.columnConfigs)?t:{}},o=null!=(s=a[r])?s:[...n._X];return a[r]=o.map(e=>e.key===l?{...e,visible:!e.visible}:e),{...e,columnConfigs:a}})},[e,t]),g=(0,s.useCallback)((r,l)=>{if(!e)return;let s=l.toLowerCase().replace(/\s+/g,"_");t(e.id,e=>{var t,a;let o={...null!=(t=e.columnConfigs)?t:{}},i=null!=(a=o[r])?a:[...n._X];return o[r]=[...i,{key:s,label:l,visible:!0}],{...e,columnConfigs:o}})},[e,t]);return{testCases:a,stats:o,addTestCase:i,updateTestCase:u,deleteTestCase:d,bulkDeleteTestCases:p,bulkUpdateTestCases:f,reorderTestCases:C,updateColumnConfig:m,toggleColumnVisibility:v,addColumn:g,deleteColumn:(0,s.useCallback)((r,l)=>{e&&t(e.id,e=>{var t,s;let a={...null!=(t=e.columnConfigs)?t:{}},o=null!=(s=a[r])?s:[...n._X];return a[r]=o.filter(e=>e.key!==l),{...e,columnConfigs:a}})},[e,t]),reorderColumn:(0,s.useCallback)((r,l,s)=>{e&&t(e.id,e=>{var t,a;let o={...null!=(t=e.columnConfigs)?t:{}},i=[...null!=(a=o[r])?a:[...n._X]],c=i.findIndex(e=>e.key===l);if(-1===c)return e;let u="up"===s?c-1:c+1;if(u<0||u>=i.length)return e;let d=i[c];return i[c]=i[u],i[u]=d,o[r]=i,{...e,columnConfigs:o}})},[e,t])}}(r.activeProject,r.updateProject,r.selectedNodeId),g=function(e,t){let r=null==e?void 0:e.id,l=(0,s.useMemo)(()=>(null==e?void 0:e.e2eData)||{config:u,runs:[],savedScripts:[]},[null==e?void 0:e.e2eData]),a=(0,s.useCallback)(e=>{r&&t(r,t=>({...t,e2eData:e(t.e2eData||{config:u,runs:[],savedScripts:[]})}))},[r,t]),n=(0,s.useCallback)(e=>{a(t=>({...t,config:{...t.config,...e}}))},[a]),o=(0,s.useCallback)(e=>{let t={...e,id:"run-".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8)),timestamp:new Date().toISOString()};return a(e=>({...e,runs:[t,...e.runs].slice(0,20)})),t},[a]),i=(0,s.useCallback)(e=>{a(t=>({...t,runs:t.runs.filter(t=>t.id!==e)}))},[a]),c=(0,s.useCallback)(()=>{a(e=>({...e,runs:[]}))},[a]),d=(0,s.useCallback)((e,t,l,s)=>{a(a=>{let n=a.savedScripts.findIndex(t=>t.testCaseId===e),o={id:n>=0?a.savedScripts[n].id:"script-".concat(Date.now()),projectId:r,testCaseId:e,title:t,code:l,script:s,updatedAt:new Date().toISOString()},i=[...a.savedScripts];return n>=0?i[n]=o:i.push(o),{...a,savedScripts:i}})},[r,a]),p=(0,s.useCallback)(e=>{a(t=>({...t,savedScripts:t.savedScripts.filter(t=>t.testCaseId!==e)}))},[a]),f=(0,s.useCallback)(e=>l.savedScripts.find(t=>t.testCaseId===e),[l.savedScripts]);return{config:l.config,runs:l.runs,savedScripts:l.savedScripts,saveConfig:n,saveRun:o,deleteRun:i,clearRuns:c,saveScript:d,deleteScript:p,getScript:f}}(r.activeProject,r.updateProject),b=(0,d.s)(),h=(0,s.useMemo)(()=>({projects:r.projects,activeProject:r.activeProject,activeProjectId:r.activeProjectId,selectedNodeId:r.selectedNodeId,createProject:r.createProject,deleteProject:r.deleteProject,duplicateProject:r.duplicateProject,importProject:r.importProject,switchProject:r.switchProject,renameProject:r.renameProject,setSelectedNodeId:r.setSelectedNodeId,updateProject:r.updateProject,profile:f.profile,profileInitials:f.initials,setProfileName:f.setName,setProfileBannerColor:f.setBannerColor,setProfileAvatarUrl:f.setAvatarUrl,setProfileRole:f.setRole,canUndo:C.canUndo,canRedo:C.canRedo,undo:C.undo,redo:C.redo,pushState:C.pushState,mindmap:m,testCases:v,e2e:g,dialog:b.dialog,alertDialog:b.alert,confirmDialog:b.confirm,promptDialog:b.prompt,lastSaved:r.lastSaved}),[r,f,C,m,v,g,b]);return(0,l.jsx)(p.Provider,{value:h,children:t})}function C(){let e=(0,s.useContext)(p);if(!e)throw Error("useDashboard must be used within DashboardProvider");return e}},8566:(e,t,r)=>{r.d(t,{D_:()=>s,IU:()=>n,T7:()=>a,_X:()=>l});let l=[{key:"code",label:"ID",visible:!0},{key:"title",label:"Test Case",visible:!0},{key:"steps",label:"Steps",visible:!0},{key:"expected",label:"Expected Result",visible:!0},{key:"status",label:"Status",visible:!0},{key:"case_type",label:"Case Type",visible:!1},{key:"notes",label:"Notes",visible:!0},{key:"links",label:"Links",visible:!1}],s=["General","Positive","Negative"],a=["#E57373","#F06292","#BA68C8","#9575CD","#7986CB","#64B5F6","#4FC3F7","#4DD0E1","#4DB6AC","#81C784","#AED581","#FFD54F","#FFB74D","#FF8A65","#A1887F","#90A4AE"];function n(e,t,r,l){return{id:e,code:t,label:r,parentId:l,children:[],shape:"rounded",notes:"",position:null}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[253],{3101:(e,t,n)=>{n.d(t,{F:()=>i});var r=n(2821);let l=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,o=r.$,i=(e,t)=>n=>{var r;if((null==t?void 0:t.variants)==null)return o(e,null==n?void 0:n.class,null==n?void 0:n.className);let{variants:i,defaultVariants:s}=t,u=Object.keys(i).map(e=>{let t=null==n?void 0:n[e],r=null==s?void 0:s[e];if(null===t)return null;let o=l(t)||l(r);return i[e][o]}),c=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return void 0===r||(e[n]=r),e},{});return o(e,u,null==t||null==(r=t.compoundVariants)?void 0:r.reduce((e,t)=>{let{class:n,className:r,...l}=t;return Object.entries(l).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...s,...c}[t]):({...s,...c})[t]===n})?[...e,n,r]:e},[]),null==n?void 0:n.class,null==n?void 0:n.className)}},6497:(e,t,n)=>{n.d(t,{N:()=>y});var r=n(5155),l=n(2115),o=n(296),i=n(4416),s=n(6436),u=n(9686),c=n(1402),a=n(3127);function p(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}class f extends l.Component{getSnapshotBeforeUpdate(e){let t=this.props.childRef.current;if((0,c.s)(t)&&e.isPresent&&!this.props.isPresent&&!1!==this.props.pop){let e=t.offsetParent,n=(0,c.s)(e)&&e.offsetWidth||0,r=(0,c.s)(e)&&e.offsetHeight||0,l=getComputedStyle(t),o=this.props.sizeRef.current;o.height=parseFloat(l.height),o.width=parseFloat(l.width),o.top=t.offsetTop,o.left=t.offsetLeft,o.right=n-o.width-o.left,o.bottom=r-o.height-o.top,o.direction=l.direction}return null}componentDidUpdate(){}render(){return this.props.children}}function d(e){var t,n;let{children:o,isPresent:i,anchorX:s,anchorY:u,root:c,pop:d}=e,h=(0,l.useId)(),m=(0,l.useRef)(null),v=(0,l.useRef)({width:0,height:0,top:0,left:0,right:0,bottom:0,direction:"ltr"}),{nonce:g}=(0,l.useContext)(a.Q),x=function(...e){return l.useCallback(function(...e){return t=>{let n=!1,r=e.map(e=>{let r=p(e,t);return n||"function"!=typeof r||(n=!0),r});if(n)return()=>{for(let t=0;t<r.length;t++){let n=r[t];"function"==typeof n?n():p(e[t],null)}}}}(...e),e)}(m,null!=(n=null==(t=o.props)?void 0:t.ref)?n:null==o?void 0:o.ref);return(0,l.useInsertionEffect)(()=>{let{width:e,height:t,top:n,left:r,right:l,bottom:o,direction:a}=v.current;if(i||!1===d||!m.current||!e||!t)return;let p="rtl"===a;m.current.dataset.motionPopId=h;let f=document.createElement("style");g&&(f.nonce=g);let x=null!=c?c:document.head;return x.appendChild(f),f.sheet&&f.sheet.insertRule('\n [data-motion-pop-id="'.concat(h,'"] {\n position: absolute !important;\n width: ').concat(e,"px !important;\n height: ").concat(t,"px !important;\n ").concat("left"===s?p?"right: ".concat(l):"left: ".concat(r):p?"left: ".concat(r):"right: ".concat(l),"px !important;\n ").concat("bottom"===u?"bottom: ".concat(o):"top: ".concat(n),"px !important;\n }\n ")),()=>{var e;null==(e=m.current)||e.removeAttribute("data-motion-pop-id"),x.contains(f)&&x.removeChild(f)}},[i]),(0,r.jsx)(f,{isPresent:i,childRef:m,sizeRef:v,pop:d,children:!1===d?o:l.cloneElement(o,{ref:x})})}let h=e=>{let{children:t,initial:n,isPresent:o,onExitComplete:s,custom:c,presenceAffectsLayout:a,mode:p,anchorX:f,anchorY:h,root:v}=e,g=(0,i.M)(m),x=(0,l.useId)(),y=!0,b=(0,l.useMemo)(()=>(y=!1,{id:x,initial:n,isPresent:o,custom:c,onExitComplete:e=>{for(let t of(g.set(e,!0),g.values()))if(!t)return;s&&s()},register:e=>(g.set(e,!1),()=>g.delete(e))}),[o,g,s]);return a&&y&&(b={...b}),(0,l.useMemo)(()=>{g.forEach((e,t)=>g.set(t,!1))},[o]),l.useEffect(()=>{o||g.size||!s||s()},[o]),t=(0,r.jsx)(d,{pop:"popLayout"===p,isPresent:o,anchorX:f,anchorY:h,root:v,children:t}),(0,r.jsx)(u.t.Provider,{value:b,children:t})};function m(){return new Map}var v=n(5601);let g=e=>e.key||"";function x(e){let t=[];return l.Children.forEach(e,e=>{(0,l.isValidElement)(e)&&t.push(e)}),t}let y=e=>{let{children:t,custom:n,initial:u=!0,onExitComplete:c,presenceAffectsLayout:a=!0,mode:p="sync",propagate:f=!1,anchorX:d="left",anchorY:m="top",root:y}=e,[b,E]=(0,v.xQ)(f),C=(0,l.useMemo)(()=>x(t),[t]),w=f&&!b?[]:C.map(g),R=(0,l.useRef)(!0),j=(0,l.useRef)(C),P=(0,i.M)(()=>new Map),k=(0,l.useRef)(new Set),[M,N]=(0,l.useState)(C),[S,A]=(0,l.useState)(C);(0,s.E)(()=>{R.current=!1,j.current=C;for(let e=0;e<S.length;e++){let t=g(S[e]);w.includes(t)?(P.delete(t),k.current.delete(t)):!0!==P.get(t)&&P.set(t,!1)}},[S,w.length,w.join("-")]);let F=[];if(C!==M){let e=[...C];for(let t=0;t<S.length;t++){let n=S[t],r=g(n);w.includes(r)||(e.splice(t,0,n),F.push(n))}return"wait"===p&&F.length&&(e=F),A(x(e)),N(C),null}let{forceRender:I}=(0,l.useContext)(o.L);return(0,r.jsx)(r.Fragment,{children:S.map(e=>{let t=g(e),l=(!f||!!b)&&(C===S||w.includes(t));return(0,r.jsx)(h,{isPresent:l,initial:(!R.current||!!u)&&void 0,custom:n,presenceAffectsLayout:a,mode:p,root:y,onExitComplete:l?void 0:()=>{if(k.current.has(t)||!P.has(t))return;k.current.add(t),P.set(t,!0);let e=!0;P.forEach(t=>{t||(e=!1)}),e&&(null==I||I(),A(j.current),f&&(null==E||E()),c&&c())},anchorX:d,anchorY:m,children:e},t)})})}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[642],{158:(e,t,o)=>{o.d(t,{Bf:()=>x,G$:()=>P,Rz:()=>k,Vj:()=>u,hX:()=>f,ii:()=>p,k5:()=>m,nN:()=>c,sy:()=>L,wy:()=>s});var n=o(8566),l=o(9280),i=o.n(l);let a={untested:"⬜ Untested",pass:"✅ Pass",fail:"❌ Fail",skip:"⏭ Skip",blocked:"\uD83D\uDEAB Blocked"},r=e=>e.replace(/\n/g,"<br>").replace(/\|/g,"\\|");function s(e,t,o){let l=(o.length>0?o:n._X).filter(e=>e.visible),i=l.map(e=>e.label).join(" | "),s=l.map(()=>"---").join(" | "),c="# ".concat(e.code?e.code+" — ":"").concat(e.label,"\n\n");c+="| # | ".concat(i," |\n"),c+="|---|".concat(s,"|\n"),t.forEach((e,t)=>{let o=l.map(t=>"status"===t.key?a[e.status]:r(e[t.key]||""));c+="| ".concat(t+1," | ").concat(o.join(" | ")," |\n")});let d=t.length,p=t.filter(e=>"skip"===e.status).length,u=t.filter(e=>"pass"===e.status).length,m=d-p>0?Math.round(u/(d-p)*100):0;return c+="\n**Pass rate: ".concat(u,"/").concat(d-p," (").concat(m,"%)**\n")}function c(e,t){return JSON.stringify({node:e,testCases:t},null,2)}function d(e,t,o){let n=new Blob([e],{type:o}),l=URL.createObjectURL(n),i=document.createElement("a");i.href=l,i.download=t,i.click(),URL.revokeObjectURL(l)}function p(e){d(function(e){let t="# ".concat(e.name,"\n\n");for(let p of e.flows){var o,l,i,s,c,d;let u=e.testCases[p.id];if(!u||0===u.length)continue;let m=((null!=(s=null!=(i=null==(o=e.columnConfigs)?void 0:o[p.id])?i:e.columnConfig)?s:[]).length>0?null!=(d=null!=(c=null==(l=e.columnConfigs)?void 0:l[p.id])?c:e.columnConfig)?d:[]:n._X).filter(e=>e.visible),f=m.map(e=>e.label).join(" | "),g=m.map(()=>"---").join(" | ");t+="## ".concat(p.code?p.code+" — ":"").concat(p.label,"\n\n"),t+="| # | ".concat(f," |\n"),t+="|---|".concat(g,"|\n"),u.forEach((e,o)=>{let n=m.map(t=>"status"===t.key?a[e.status]:r(e[t.key]||""));t+="| ".concat(o+1," | ").concat(n.join(" | ")," |\n")});let h=u.length,v=u.filter(e=>"skip"===e.status).length,k=u.filter(e=>"pass"===e.status).length,y=h-v>0?Math.round(k/(h-v)*100):0;t+="\n**Pass rate: ".concat(k,"/").concat(h-v," (").concat(y,"%)**\n\n---\n\n")}return t}(e),"".concat(e.name,".md"),"text/markdown")}function u(e){d(JSON.stringify(e,null,2),"".concat(e.name,".json"),"application/json")}function m(e,t,o){let n=(e.code||e.label).replace(/[^a-zA-Z0-9_-]/g,"_");d(s(e,t,o),"".concat(n,".md"),"text/markdown")}function f(e,t){let o=(e.code||e.label).replace(/[^a-zA-Z0-9_-]/g,"_");d(c(e,t),"".concat(o,".json"),"application/json")}function g(e,t){let o=e&&e.length>0?e:t;return o.length>0?o:n._X}function h(e,t){return t.map(t=>"status"===t.key?a[e.status]:e[t.key]||"")}function v(e){return e.includes(",")||e.includes('"')||e.includes("\n")?'"'.concat(e.replace(/"/g,'""'),'"'):e}function k(e,t,o){let l=(e.code||e.label).replace(/[^a-zA-Z0-9_-]/g,"_");d(function(e,t,o){let l=g(o,n._X).filter(e=>e.visible);return[["#",...l.map(e=>v(e.label))].join(","),...t.map((e,t)=>[String(t+1),...h(e,l).map(v)].join(","))].join("\n")}(0,t,o),"".concat(l,".csv"),"text/csv")}function y(e,t){var o,l,i;let a=null!=(i=null!=(l=null==(o=e.columnConfigs)?void 0:o[t])?l:e.columnConfig)?i:[];return a.length>0?a:n._X}function b(e){e.fill={type:"pattern",pattern:"solid",fgColor:{argb:"FFdbd8d3"}},e.font={name:"Inter",bold:!0,size:11},e.border={top:{style:"thin"},bottom:{style:"thin"},left:{style:"thin"},right:{style:"thin"}},e.alignment={vertical:"middle",horizontal:"left",wrapText:!0}}function w(e){e.border={top:{style:"thin"},bottom:{style:"thin"},left:{style:"thin"},right:{style:"thin"}},e.font={name:"Inter",size:11},e.alignment={vertical:"middle",horizontal:"left",wrapText:!0}}function j(e,t,o,n,l){let i=e.addWorksheet(t);return i.columns=[{header:"#",key:"row",width:6},...l.map(e=>({header:e.label,key:e.key,width:Math.max(e.label.length+4,18)}))],i.getRow(1).eachCell(b),n.forEach((e,t)=>{let o={row:t+1};l.forEach(t=>{"status"===t.key?o[t.key]=a[e.status]:o[t.key]=e[t.key]||""}),i.addRow(o).eachCell(w)}),i}async function U(e,t,o){let l=g(o,n._X).filter(e=>e.visible),a=new(i()).Workbook;return a.creator="Ayu Management Tools",j(a,e.label,e.label,t,l),new Blob([await a.xlsx.writeBuffer()],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})}async function P(e,t,o){let n=(e.code||e.label).replace(/[^a-zA-Z0-9_-]/g,"_"),l=await U(e,t,o),i=URL.createObjectURL(l),a=document.createElement("a");a.href=i,a.download="".concat(n,".xlsx"),a.click(),URL.revokeObjectURL(i)}async function M(e){let t=new(i()).Workbook;for(let o of(t.creator="Ayu Management Tools",e.flows)){let n=e.testCases[o.id];if(!n||0===n.length)continue;let l=y(e,o.id).filter(e=>e.visible);j(t,(o.code||o.label).substring(0,31).replace(/[\\/*?[\]]/g,"_"),o.label,n,l)}return new Blob([await t.xlsx.writeBuffer()],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})}async function L(e){let t=await M(e),o=URL.createObjectURL(t),n=document.createElement("a");n.href=o,n.download="".concat(e.name,".xlsx"),n.click(),URL.revokeObjectURL(o)}function x(e){d(function(e){let t="";for(let o of e.flows){let n=e.testCases[o.id];if(!n||0===n.length)continue;let l=y(e,o.id).filter(e=>e.visible);t+="# ".concat(o.code?o.code+" — ":"").concat(o.label,"\n"),t+=["#",...l.map(e=>v(e.label))].join(",")+"\n",n.forEach((e,o)=>{let n=[String(o+1),...h(e,l).map(v)];t+=n.join(",")+"\n"}),t+="\n"}return t}(e),"".concat(e.name,".csv"),"text/csv")}},3362:(e,t,o)=>{o.d(t,{Pj:()=>n});let n=Object.values({openai:{id:"openai",name:"OpenAI",type:"native",description:"GPT models powering ChatGPT. Industry-leading language understanding.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/openai.svg",keyUrl:"https://platform.openai.com/api-keys",keyPlaceholder:"sk-...",color:"#10A37F",sdkProvider:"openai",defaultModel:"gpt-4o-mini",popularModels:["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-3.5-turbo"]},google:{id:"google",name:"Google Gemini",type:"native",description:"Google's multimodal AI with strong reasoning capabilities.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/googlegemini.svg",keyUrl:"https://aistudio.google.com/apikey",keyPlaceholder:"AIza...",color:"#4285F4",sdkProvider:"google",defaultModel:"gemini-2.5-flash",popularModels:["gemini-2.5-flash","gemini-2.5-pro","gemini-2.0-flash"]},anthropic:{id:"anthropic",name:"Anthropic",type:"native",description:"Claude models — safe, steerable, and highly capable.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/anthropic.svg",keyUrl:"https://console.anthropic.com/settings/keys",keyPlaceholder:"sk-ant-...",color:"#D97706",sdkProvider:"anthropic",defaultModel:"claude-sonnet-4-20250514",popularModels:["claude-sonnet-4-20250514","claude-haiku-4-20250514","claude-3-5-sonnet-20241022"]},deepseek:{id:"deepseek",name:"DeepSeek",type:"openai-compatible",description:"High-performance open-source models with competitive reasoning.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/deepseek.svg",keyUrl:"https://platform.deepseek.com/api_keys",keyPlaceholder:"sk-...",color:"#4D6BFE",sdkProvider:"openai",baseURL:"https://api.deepseek.com/v1",defaultModel:"deepseek-chat",popularModels:["deepseek-chat","deepseek-reasoner"]},xiaomi:{id:"xiaomi",name:"Xiaomi (MiMo)",type:"openai-compatible",description:"Xiaomi's MiMo models — OpenAI-compatible API.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/xiaomi.svg",keyUrl:"https://platform.xiaomimimo.com/",keyPlaceholder:"tp-...",color:"#FF6900",sdkProvider:"openai",baseURL:"https://token-plan-sgp.xiaomimimo.com/v1",defaultModel:"mimo-v2.5",popularModels:["mimo-v2.5","mimo-v2.5-pro"]},openrouter:{id:"openrouter",name:"OpenRouter",type:"openai-compatible",description:"Unified gateway to 200+ models — Claude, Llama, Mistral, Gemini, and more.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/openrouter.svg",keyUrl:"https://openrouter.ai/keys",keyPlaceholder:"sk-or-...",color:"#6366F1",sdkProvider:"openai",baseURL:"https://openrouter.ai/api/v1",defaultModel:"openrouter/free",popularModels:["openrouter/free","meta-llama/llama-4-maverick:free","google/gemini-2.5-flash:free","deepseek/deepseek-chat-v3-0324:free","mistralai/mistral-small-3.2-24b:free","qwen/qwen3-235b-a22b:free","microsoft/phi-4-reasoning-plus:free"]},groq:{id:"groq",name:"Groq",type:"native",description:"Ultra-fast inference with LPU hardware. Blazing speed for Llama, Mixtral, and Gemma models.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/groq.svg",keyUrl:"https://console.groq.com/keys",keyPlaceholder:"gsk_...",color:"#F55036",sdkProvider:"groq",defaultModel:"llama-3.3-70b-versatile",popularModels:["llama-3.3-70b-versatile","llama-3.1-8b-instant","mixtral-8x7b-32768","gemma2-9b-it","meta-llama/llama-4-scout-17b-16e-instruct","qwen-qwq-32b"]},custom:{id:"custom",name:"Custom (OpenAI-compatible)",type:"openai-compatible",description:"Any OpenAI-compatible API — Ollama, LM Studio, vLLM, LiteLLM, etc.",logoUrl:"",keyUrl:"",keyPlaceholder:"sk-... or any key",color:"#6B7280",sdkProvider:"openai",defaultModel:"",popularModels:[],requiresBaseURL:!0}})},7669:(e,t,o)=>{o.d(t,{P:()=>d});var n=o(2115),l=o(3362);let i="qa-llm-config",a={apiKey:"",baseURL:"",defaultModel:"",secondaryModel:"",models:[],connected:!1};function r(){let e={};for(let t of l.Pj)e[t.id]={...a,baseURL:t.baseURL||""};return{activeProvider:null,providers:e}}function s(){try{let t=localStorage.getItem(i);if(!t)return r();let o=JSON.parse(t);if(o.provider&&o.apiKey&&!o.providers){let e=r();return{...e,activeProvider:null,providers:{...e.providers,google:{...a,apiKey:o.apiKey,connected:!0}}}}let n=r(),s={...n,...o,providers:{...n.providers}};for(let t of l.Pj){var e;let n=null==(e=o.providers)?void 0:e[t.id];s.providers[t.id]={...a,baseURL:t.baseURL||"",...n}}return s}catch(e){return r()}}function c(e){try{localStorage.setItem(i,JSON.stringify(e))}catch(e){}}function d(){let[e,t]=(0,n.useState)(r),[o,l]=(0,n.useState)(!1);(0,n.useEffect)(()=>{t(s()),l(!0)},[]);let i=(0,n.useCallback)((e,o)=>{let n=s(),l={...n,providers:{...n.providers,[e]:{...n.providers[e],...o}}};c(l),t(l)},[]),a=(0,n.useCallback)(e=>{let o={...s(),activeProvider:e};c(o),t(o)},[]),d=e.activeProvider?e.providers[e.activeProvider]:null,p=o&&!!d&&d.apiKey.length>0&&d.connected;return{config:e,loaded:o,isConnected:p,activeProvider:d,activeProviderId:e.activeProvider,updateProvider:i,setActiveProvider:a}}},7711:(e,t,o)=>{o.d(t,{Z7:()=>l,Js:()=>i});var n=o(5653);async function l(e,t,o){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"google",l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"",i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"en",a=arguments.length>6?arguments[6]:void 0,r=arguments.length>7?arguments[7]:void 0,s=await fetch("/api/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:e,prompt:t,apiKey:o,provider:n,model:l,language:i,baseURL:a,images:r})});if(!s.ok)throw Error((await s.json().catch(()=>({error:"Request failed"}))).error||"HTTP ".concat(s.status));return(await s.json()).testCases}async function i(e,t,o){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"google",l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"",i=arguments.length>5?arguments[5]:void 0,a=await fetch("/api/refine-notes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:e,notes:t,apiKey:o,provider:n,model:l,baseURL:i})});if(!a.ok)throw Error((await a.json().catch(()=>({error:"Request failed"}))).error||"HTTP ".concat(a.status));return(await a.json()).refined}n.Ik({title:n.Yj().describe("Short descriptive title of the test case"),steps:n.Yj().describe("Numbered test steps separated by newlines"),expected:n.Yj().describe("Expected result of the test")})}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[661],{63:(t,e,a)=>{var n=a(7260);a.o(n,"useParams")&&a.d(e,{useParams:function(){return n.useParams}}),a.o(n,"usePathname")&&a.d(e,{usePathname:function(){return n.usePathname}}),a.o(n,"useRouter")&&a.d(e,{useRouter:function(){return n.useRouter}})},1708:(t,e,a)=>{a.d(e,{A:()=>r});var n={};!function t(e,a,n,r){var o,i,s,l,c,h,f,u,d,m,g,p=!!(e.Worker&&e.Blob&&e.Promise&&e.OffscreenCanvas&&e.OffscreenCanvasRenderingContext2D&&e.HTMLCanvasElement&&e.HTMLCanvasElement.prototype.transferControlToOffscreen&&e.URL&&e.URL.createObjectURL),b="function"==typeof Path2D&&"function"==typeof DOMMatrix;function M(){}function v(t){var n=a.exports.Promise,r=void 0!==n?n:e.Promise;return"function"==typeof r?new r(t):(t(M,M),null)}var y=(o=function(){if(!e.OffscreenCanvas)return!1;try{var t=new OffscreenCanvas(1,1),a=t.getContext("2d");a.fillRect(0,0,1,1);var n=t.transferToImageBitmap();a.createPattern(n,"no-repeat")}catch(t){return!1}return!0}(),i=new Map,{transform:function(t){if(o)return t;if(i.has(t))return i.get(t);var e=new OffscreenCanvas(t.width,t.height);return e.getContext("2d").drawImage(t,0,0),i.set(t,e),e},clear:function(){i.clear()}}),w=(c=Math.floor(1e3/60),h={},f=0,"function"==typeof requestAnimationFrame&&"function"==typeof cancelAnimationFrame?(s=function(t){var e=Math.random();return h[e]=requestAnimationFrame(function a(n){f===n||f+c-1<n?(f=n,delete h[e],t()):h[e]=requestAnimationFrame(a)}),e},l=function(t){h[t]&&cancelAnimationFrame(h[t])}):(s=function(t){return setTimeout(t,c)},l=function(t){return clearTimeout(t)}),{frame:s,cancel:l}),x=(m={},function(){if(u)return u;if(!n&&p){var e=["var CONFETTI, SIZE = {}, module = {};","("+t.toString()+")(this, module, true, SIZE);","onmessage = function(msg) {\n if (msg.data.options) {\n CONFETTI(msg.data.options).then(function () {\n if (msg.data.callback) {\n postMessage({ callback: msg.data.callback });\n }\n });\n } else if (msg.data.reset) {\n CONFETTI && CONFETTI.reset();\n } else if (msg.data.resize) {\n SIZE.width = msg.data.resize.width;\n SIZE.height = msg.data.resize.height;\n } else if (msg.data.canvas) {\n SIZE.width = msg.data.canvas.width;\n SIZE.height = msg.data.canvas.height;\n CONFETTI = module.exports.create(msg.data.canvas);\n }\n}"].join("\n");try{u=new Worker(URL.createObjectURL(new Blob([e])))}catch(t){return"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("\uD83C\uDF8A Could not load worker",t),null}var a=u;function r(t,e){a.postMessage({options:t||{},callback:e})}a.init=function(t){var e=t.transferControlToOffscreen();a.postMessage({canvas:e},[e])},a.fire=function(t,e,n){if(d)return r(t,null),d;var o=Math.random().toString(36).slice(2);return d=v(function(e){function i(t){t.data.callback===o&&(delete m[o],a.removeEventListener("message",i),d=null,y.clear(),n(),e())}a.addEventListener("message",i),r(t,o),m[o]=i.bind(null,{data:{callback:o}})})},a.reset=function(){for(var t in a.postMessage({reset:!0}),m)m[t](),delete m[t]}}return u}),C={particleCount:50,angle:90,spread:45,startVelocity:45,decay:.9,gravity:1,drift:0,ticks:200,x:.5,y:.5,shapes:["square","circle"],zIndex:100,colors:["#26ccff","#a25afd","#ff5e7e","#88ff5a","#fcff42","#ffa62d","#ff36ff"],disableForReducedMotion:!1,scalar:1};function P(t,e,a){var n;return n=t&&null!=t[e]?t[e]:C[e],a?a(n):n}function I(t){return t<0?0:Math.floor(t)}function T(t){return parseInt(t,16)}function E(t){return t.map(S)}function S(t){var e=String(t).replace(/[^0-9a-f]/gi,"");return e.length<6&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),{r:T(e.substring(0,2)),g:T(e.substring(2,4)),b:T(e.substring(4,6))}}function k(t){t.width=document.documentElement.clientWidth,t.height=document.documentElement.clientHeight}function O(t){var e=t.getBoundingClientRect();t.width=e.width,t.height=e.height}function B(t,a){var o,i=!t,s=!!P(a||{},"resize"),l=!1,c=P(a,"disableForReducedMotion",Boolean),h=p&&P(a||{},"useWorker")?x():null,f=i?k:O,u=!!t&&!!h&&!!t.__confetti_initialized,d="function"==typeof matchMedia&&matchMedia("(prefers-reduced-motion)").matches;function m(a){var m,g=c||P(a,"disableForReducedMotion",Boolean),p=P(a,"zIndex",Number);if(g&&d)return v(function(t){t()});i&&o?t=o.canvas:i&&!t&&((m=document.createElement("canvas")).style.position="fixed",m.style.top="0px",m.style.left="0px",m.style.pointerEvents="none",m.style.zIndex=p,t=m,document.body.appendChild(t)),s&&!u&&f(t);var M={width:t.width,height:t.height};function x(){if(h){var e={getBoundingClientRect:function(){if(!i)return t.getBoundingClientRect()}};f(e),h.postMessage({resize:{width:e.width,height:e.height}});return}M.width=M.height=null}function C(){o=null,s&&(l=!1,e.removeEventListener("resize",x)),i&&t&&(document.body.contains(t)&&document.body.removeChild(t),t=null,u=!1)}return(h&&!u&&h.init(t),u=!0,h&&(t.__confetti_initialized=!0),s&&!l&&(l=!0,e.addEventListener("resize",x,!1)),h)?h.fire(a,M,C):function(e,a,i){for(var s,l,c,h,u,d,m,g=P(e,"particleCount",I),p=P(e,"angle",Number),M=P(e,"spread",Number),x=P(e,"startVelocity",Number),C=P(e,"decay",Number),T=P(e,"gravity",Number),S=P(e,"drift",Number),k=P(e,"colors",E),O=P(e,"ticks",Number),B=P(e,"shapes"),R=P(e,"scalar"),F=!!P(e,"flat"),A=((s=P(e,"origin",Object)).x=P(s,"x",Number),s.y=P(s,"y",Number),s),N=g,z=[],D=t.width*A.x,L=t.height*A.y;N--;)z.push(function(t){var e=t.angle*(Math.PI/180),a=t.spread*(Math.PI/180);return{x:t.x,y:t.y,wobble:10*Math.random(),wobbleSpeed:Math.min(.11,.1*Math.random()+.05),velocity:.5*t.startVelocity+Math.random()*t.startVelocity,angle2D:-e+(.5*a-Math.random()*a),tiltAngle:(.5*Math.random()+.25)*Math.PI,color:t.color,shape:t.shape,tick:0,totalTicks:t.ticks,decay:t.decay,drift:t.drift,random:Math.random()+2,tiltSin:0,tiltCos:0,wobbleX:0,wobbleY:0,gravity:3*t.gravity,ovalScalar:.6,scalar:t.scalar,flat:t.flat}}({x:D,y:L,angle:p,spread:M,startVelocity:x,color:k[N%k.length],shape:B[Math.floor(Math.random()*(B.length-0))+0],ticks:O,decay:C,gravity:T,drift:S,scalar:R,flat:F}));return o?o.addFettis(z):(l=t,u=z.slice(),d=l.getContext("2d"),m=v(function(t){function e(){c=h=null,d.clearRect(0,0,a.width,a.height),y.clear(),i(),t()}c=w.frame(function t(){n&&(a.width!==r.width||a.height!==r.height)&&(a.width=l.width=r.width,a.height=l.height=r.height),a.width||a.height||(f(l),a.width=l.width,a.height=l.height),d.clearRect(0,0,a.width,a.height),(u=u.filter(function(t){return function(t,e){e.x+=Math.cos(e.angle2D)*e.velocity+e.drift,e.y+=Math.sin(e.angle2D)*e.velocity+e.gravity,e.velocity*=e.decay,e.flat?(e.wobble=0,e.wobbleX=e.x+10*e.scalar,e.wobbleY=e.y+10*e.scalar,e.tiltSin=0,e.tiltCos=0,e.random=1):(e.wobble+=e.wobbleSpeed,e.wobbleX=e.x+10*e.scalar*Math.cos(e.wobble),e.wobbleY=e.y+10*e.scalar*Math.sin(e.wobble),e.tiltAngle+=.1,e.tiltSin=Math.sin(e.tiltAngle),e.tiltCos=Math.cos(e.tiltAngle),e.random=Math.random()+2);var a,n,r,o,i,s,l,c,h,f,u,d,m,g,p,M,v=e.tick++/e.totalTicks,w=e.x+e.random*e.tiltCos,x=e.y+e.random*e.tiltSin,C=e.wobbleX+e.random*e.tiltCos,P=e.wobbleY+e.random*e.tiltSin;if(t.fillStyle="rgba("+e.color.r+", "+e.color.g+", "+e.color.b+", "+(1-v)+")",t.beginPath(),b&&"path"===e.shape.type&&"string"==typeof e.shape.path&&Array.isArray(e.shape.matrix)){t.fill((a=e.shape.path,n=e.shape.matrix,r=e.x,o=e.y,i=.1*Math.abs(C-w),s=.1*Math.abs(P-x),l=Math.PI/10*e.wobble,c=new Path2D(a),(h=new Path2D).addPath(c,new DOMMatrix(n)),(f=new Path2D).addPath(h,new DOMMatrix([Math.cos(l)*i,Math.sin(l)*i,-Math.sin(l)*s,Math.cos(l)*s,r,o])),f))}else if("bitmap"===e.shape.type){var I=Math.PI/10*e.wobble,T=.1*Math.abs(C-w),E=.1*Math.abs(P-x),S=e.shape.bitmap.width*e.scalar,k=e.shape.bitmap.height*e.scalar,O=new DOMMatrix([Math.cos(I)*T,Math.sin(I)*T,-Math.sin(I)*E,Math.cos(I)*E,e.x,e.y]);O.multiplySelf(new DOMMatrix(e.shape.matrix));var B=t.createPattern(y.transform(e.shape.bitmap),"no-repeat");B.setTransform(O),t.globalAlpha=1-v,t.fillStyle=B,t.fillRect(e.x-S/2,e.y-k/2,S,k),t.globalAlpha=1}else if("circle"===e.shape)t.ellipse?t.ellipse(e.x,e.y,Math.abs(C-w)*e.ovalScalar,Math.abs(P-x)*e.ovalScalar,Math.PI/10*e.wobble,0,2*Math.PI):(u=e.x,d=e.y,m=Math.abs(C-w)*e.ovalScalar,g=Math.abs(P-x)*e.ovalScalar,p=Math.PI/10*e.wobble,M=2*Math.PI,t.save(),t.translate(u,d),t.rotate(p),t.scale(m,g),t.arc(0,0,1,0,M,void 0),t.restore());else if("star"===e.shape)for(var R=Math.PI/2*3,F=4*e.scalar,A=8*e.scalar,N=e.x,z=e.y,D=5,L=Math.PI/5;D--;)N=e.x+Math.cos(R)*A,z=e.y+Math.sin(R)*A,t.lineTo(N,z),R+=L,N=e.x+Math.cos(R)*F,z=e.y+Math.sin(R)*F,t.lineTo(N,z),R+=L;else t.moveTo(Math.floor(e.x),Math.floor(e.y)),t.lineTo(Math.floor(e.wobbleX),Math.floor(x)),t.lineTo(Math.floor(C),Math.floor(P)),t.lineTo(Math.floor(w),Math.floor(e.wobbleY));return t.closePath(),t.fill(),e.tick<e.totalTicks}(d,t)})).length?c=w.frame(t):e()}),h=e}),(o={addFettis:function(t){return u=u.concat(t),m},canvas:l,promise:m,reset:function(){c&&w.cancel(c),h&&h()}}).promise)}(a,M,C)}return m.reset=function(){h&&h.reset(),o&&o.reset()},m}function R(){return g||(g=B(null,{useWorker:!0,resize:!0})),g}a.exports=function(){return R().apply(this,arguments)},a.exports.reset=function(){R().reset()},a.exports.create=B,a.exports.shapeFromPath=function(t){if(!b)throw Error("path confetti are not supported in this browser");"string"==typeof t?n=t:(n=t.path,r=t.matrix);var e=new Path2D(n),a=document.createElement("canvas").getContext("2d");if(!r){for(var n,r,o,i,s=1e3,l=1e3,c=0,h=0,f=0;f<1e3;f+=2)for(var u=0;u<1e3;u+=2)a.isPointInPath(e,f,u,"nonzero")&&(s=Math.min(s,f),l=Math.min(l,u),c=Math.max(c,f),h=Math.max(h,u));o=c-s;var d=Math.min(10/o,10/(i=h-l));r=[d,0,0,d,-Math.round(o/2+s)*d,-Math.round(i/2+l)*d]}return{type:"path",path:n,matrix:r}},a.exports.shapeFromText=function(t){var e,a=1,n="#000000",r='"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", "EmojiOne Color", "Android Emoji", "Twemoji Mozilla", "system emoji", sans-serif';"string"==typeof t?e=t:(e=t.text,a="scalar"in t?t.scalar:a,r="fontFamily"in t?t.fontFamily:r,n="color"in t?t.color:n);var o=10*a,i=""+o+"px "+r,s=new OffscreenCanvas(o,o),l=s.getContext("2d");l.font=i;var c=l.measureText(e),h=Math.ceil(c.actualBoundingBoxRight+c.actualBoundingBoxLeft),f=Math.ceil(c.actualBoundingBoxAscent+c.actualBoundingBoxDescent),u=c.actualBoundingBoxLeft+2,d=c.actualBoundingBoxAscent+2;h+=4,f+=4,(l=(s=new OffscreenCanvas(h,f)).getContext("2d")).font=i,l.fillStyle=n,l.fillText(e,u,d);var m=1/a;return{type:"bitmap",bitmap:s.transferToImageBitmap(),matrix:[m,0,0,m,-h*m/2,-f*m/2]}}}(function(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:this||{}}(),n,!1);let r=n.exports;n.exports.create}}]);
|