@stacksjs/actions 0.70.81 → 0.70.83

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.
@@ -1,8 +1,8 @@
1
1
  // @bun
2
- import{Aa as b,Ca as n,Da as c,Ea as i,za as u}from"../chunk-k7n6c9hm.js";import{qb as A}from"../chunk-v0hqskdk.js";import z from"process";import{existsSync as j,readFileSync as EE,writeFileSync as l}from"fs";import{bold as C,cyan as x,dim as Y,green as k}from"@stacksjs/cli";import{projectPath as D,storagePath as T}from"@stacksjs/path";var y=z.argv.indexOf("--verbose"),F=y!==-1&&z.argv[y+1]!=="false",XE=Bun.nanoseconds(),d=console.log,YE=console.warn,P=[];console.log=(...X)=>{P.push(X.map(String).join(" "))};console.warn=(...X)=>{P.push(X.map(String).join(" "))};var f=T("framework/defaults/views/dashboard"),$E=D("resources/views/dashboard"),v=Number(z.env.PORT_ADMIN)||3002,V=await n(v),S=z.env.APP_URL||"",zE=S!==""&&S!=="localhost"&&!S.includes("localhost:"),m=zE?S.replace(/^https?:\/\//,""):null,w=m?`dashboard.${m}`:null,t=`${z.env.HOME}/.stacks/ssl`;function r(){console.log=d,console.warn=(...X)=>{let W=X.map(String).join(" ");if(W.includes("[STX] DOM API violation")||W.includes("unsafe expression"))return;YE(...X)}}async function GE(){try{await import("@stacksjs/orm")}catch(E){if(F)console.warn("[dashboard] orm preload failed:",E?.message||E)}try{let{hoistDashboardGlobals:E}=await import("./dashboard-globals.js");await E({verbose:F})}catch(E){if(F)console.warn("[dashboard] globals preload failed:",E?.message||E)}let X;try{X=(await import("../chunk-hv8tkjw2.js")).serve}catch{X=(await import(D("pantry/bun-plugin-stx/dist/serve.js"))).serve}let W;try{let E=D("pantry/@stacksjs/stx/dist/index.js");if(await Bun.file(E).exists())W=await import(E)}catch{}let{listConfigFiles:G,readConfig:K,updateConfigKey:Q}=await import(T("framework/defaults/resources/functions/dashboard/config-io.ts")),N={"/__deps/charts.js":T("framework/core/charts/dist/index.js")},U={...Object.fromEntries(Object.entries(N).map(([E,$])=>[E,async()=>{let O=Bun.file($);if(!await O.exists())return new Response(`// dependency dist missing: ${$}
3
- // rebuild with: cd ${$.replace(/\/dist\/[^/]+$/,"")} && bun build.ts`,{status:500,headers:{"content-type":"text/javascript; charset=utf-8"}});return new Response(O,{headers:{"content-type":"text/javascript; charset=utf-8","cache-control":"no-cache"}})}])),"/api/config/list":async()=>{try{return Response.json({ok:!0,files:G()})}catch(E){return Response.json({ok:!1,error:E?.message},{status:500})}},"/api/config/read":async(E)=>{try{let O=new URL(E.url).searchParams.get("name")||"";if(!/^[\w-]+$/.test(O))return Response.json({ok:!1,error:"Invalid config name"},{status:400});let Z=await K(O);if(!Z)return Response.json({ok:!1,error:"Not found"},{status:404});return Response.json({ok:!0,name:O,fields:Z.fields,values:Z.values})}catch($){return Response.json({ok:!1,error:$?.message},{status:500})}},"/api/config/source":async(E)=>{try{let O=new URL(E.url).searchParams.get("name")||"";if(!/^[\w-]+$/.test(O))return Response.json({ok:!1,error:"Invalid config name"},{status:400});let Z=await K(O);if(!Z)return Response.json({ok:!1,error:"Not found"},{status:404});return new Response(Z.source,{headers:{"content-type":"text/plain; charset=utf-8"}})}catch($){return Response.json({ok:!1,error:$?.message},{status:500})}},"/api/config/update":async(E)=>{if(E.method!=="POST")return Response.json({ok:!1,error:"Method not allowed"},{status:405});try{let $=await E.json(),O=$.file?.replace(/\.ts$/,"");if(!O||!/^[\w-]+$/.test(O))return Response.json({ok:!1,error:"Invalid file"},{status:400});let Z=[];if(Array.isArray($.updates))for(let _ of $.updates){let R=_.key??_.path;if(typeof R==="string")Z.push({key:R,value:_.value})}else if($.key)Z.push({key:$.key,value:$.value});if(Z.length===0)return Response.json({ok:!1,error:"No updates supplied"},{status:400});let I=[];for(let _ of Z)try{let R=await Q(O,_.key,H(_.value));I.push({key:_.key,ok:!0,newValue:R.newValue})}catch(R){I.push({key:_.key,ok:!1,error:R?.message})}let e=I.every((_)=>_.ok);return Response.json({ok:e,file:O,results:I})}catch($){return Response.json({ok:!1,error:$?.message},{status:500})}}};function H(E){if(typeof E==="boolean"||typeof E==="number")return E;if(E==="true")return!0;if(E==="false")return!1;if(E===""||E==null)return"";if(typeof E==="string"&&/^-?\d+(?:\.\d+)?$/.test(E))return Number(E);return String(E)}let M=null;try{let E=await import("@stacksjs/router"),$=(await import(D("app/Routes.ts"))).default;await E.loadRoutes($),M=E.route}catch(E){if(F)console.warn("[dashboard] Stacks router init failed:",E?.message||E)}X({patterns:[$E,f],port:V,componentsDir:T("framework/defaults/resources/components/Dashboard"),layoutsDir:f,partialsDir:f,quiet:!0,routes:U,onRequest:M?async(E)=>{let O=new URL(E.url).pathname;if(O.startsWith("/api/config/")||O.startsWith("/__deps/"))return null;if(O.startsWith("/api/"))return M.handleRequest(E);if(E.method.toUpperCase()!=="GET")return M.handleRequest(E);return null}:void 0,auth:!1,...W&&{stxModule:W}}).catch((E)=>{r(),console.error(`
2
+ import{Aa as u,Ca as b,Da as n,za as m}from"../chunk-k7n6c9hm.js";import{qb as A}from"../chunk-v0hqskdk.js";import $ from"process";import{existsSync as j,readFileSync as o,writeFileSync as c}from"fs";import{bold as B,cyan as x,dim as Y,green as k}from"@stacksjs/cli";import{projectPath as T,storagePath as D}from"@stacksjs/path";var p=$.argv.indexOf("--verbose"),F=p!==-1&&$.argv[p+1]!=="false",s=Bun.nanoseconds(),i=console.log,e=console.warn,P=[];console.log=(...X)=>{P.push(X.map(String).join(" "))};console.warn=(...X)=>{P.push(X.map(String).join(" "))};var g=D("framework/defaults/views/dashboard"),EE=T("resources/views/dashboard"),h=Number($.env.PORT_ADMIN)||3002,V=await b(h),S=$.env.APP_URL||"",XE=S!==""&&S!=="localhost"&&!S.includes("localhost:"),y=XE?S.replace(/^https?:\/\//,""):null,C=y?`dashboard.${y}`:null,l=`${$.env.HOME}/.stacks/ssl`;function d(){console.log=i,console.warn=(...X)=>{let O=X.map(String).join(" ");if(O.includes("[STX] DOM API violation")||O.includes("unsafe expression"))return;e(...X)}}async function YE(){try{await import("@stacksjs/orm")}catch(E){if(F)console.warn("[dashboard] orm preload failed:",E?.message||E)}try{let{hoistDashboardGlobals:E}=await import("./dashboard-globals.js");await E({verbose:F})}catch(E){if(F)console.warn("[dashboard] globals preload failed:",E?.message||E)}let X;try{X=(await import("../chunk-hv8tkjw2.js")).serve}catch{X=(await import(T("pantry/bun-plugin-stx/dist/serve.js"))).serve}let O;try{let E=$.env.STX_SRC||`${$.env.HOME}/Code/Tools/stx/packages/stx/src/index.ts`;if(await Bun.file(E).exists())O=await import(E)}catch{}if(O&&F)console.log("[Dashboard] Using local stx checkout");if(!O)try{let E=T("pantry/@stacksjs/stx/dist/index.js");if(await Bun.file(E).exists())O=await import(E)}catch{}let{listConfigFiles:G,readConfig:K,updateConfigKey:Q}=await import(D("framework/defaults/resources/functions/dashboard/config-io.ts")),N={"/__deps/charts.js":D("framework/core/charts/dist/index.js")},U={...Object.fromEntries(Object.entries(N).map(([E,z])=>[E,async()=>{let W=Bun.file(z);if(!await W.exists())return new Response(`// dependency dist missing: ${z}
3
+ // rebuild with: cd ${z.replace(/\/dist\/[^/]+$/,"")} && bun build.ts`,{status:500,headers:{"content-type":"text/javascript; charset=utf-8"}});return new Response(W,{headers:{"content-type":"text/javascript; charset=utf-8","cache-control":"no-cache"}})}])),"/api/config/list":async()=>{try{return Response.json({ok:!0,files:G()})}catch(E){return Response.json({ok:!1,error:E?.message},{status:500})}},"/api/config/read":async(E)=>{try{let W=new URL(E.url).searchParams.get("name")||"";if(!/^[\w-]+$/.test(W))return Response.json({ok:!1,error:"Invalid config name"},{status:400});let Z=await K(W);if(!Z)return Response.json({ok:!1,error:"Not found"},{status:404});return Response.json({ok:!0,name:W,fields:Z.fields,values:Z.values})}catch(z){return Response.json({ok:!1,error:z?.message},{status:500})}},"/api/config/source":async(E)=>{try{let W=new URL(E.url).searchParams.get("name")||"";if(!/^[\w-]+$/.test(W))return Response.json({ok:!1,error:"Invalid config name"},{status:400});let Z=await K(W);if(!Z)return Response.json({ok:!1,error:"Not found"},{status:404});return new Response(Z.source,{headers:{"content-type":"text/plain; charset=utf-8"}})}catch(z){return Response.json({ok:!1,error:z?.message},{status:500})}},"/api/config/update":async(E)=>{if(E.method!=="POST")return Response.json({ok:!1,error:"Method not allowed"},{status:405});try{let z=await E.json(),W=z.file?.replace(/\.ts$/,"");if(!W||!/^[\w-]+$/.test(W))return Response.json({ok:!1,error:"Invalid file"},{status:400});let Z=[];if(Array.isArray(z.updates))for(let _ of z.updates){let I=_.key??_.path;if(typeof I==="string")Z.push({key:I,value:_.value})}else if(z.key)Z.push({key:z.key,value:z.value});if(Z.length===0)return Response.json({ok:!1,error:"No updates supplied"},{status:400});let R=[];for(let _ of Z)try{let I=await Q(W,_.key,H(_.value));R.push({key:_.key,ok:!0,newValue:I.newValue})}catch(I){R.push({key:_.key,ok:!1,error:I?.message})}let a=R.every((_)=>_.ok);return Response.json({ok:a,file:W,results:R})}catch(z){return Response.json({ok:!1,error:z?.message},{status:500})}}};function H(E){if(typeof E==="boolean"||typeof E==="number")return E;if(E==="true")return!0;if(E==="false")return!1;if(E===""||E==null)return"";if(typeof E==="string"&&/^-?\d+(?:\.\d+)?$/.test(E))return Number(E);return String(E)}let L=null;try{let E=await import("@stacksjs/router"),z=(await import(T("app/Routes.ts"))).default;await E.loadRoutes(z),L=E.route}catch(E){if(F)console.warn("[dashboard] Stacks router init failed:",E?.message||E)}X({patterns:[EE,g],port:V,componentsDir:D("framework/defaults/resources/components/Dashboard"),layoutsDir:g,partialsDir:g,quiet:!0,routes:U,onRequest:L?async(E)=>{let W=new URL(E.url).pathname;if(W.startsWith("/api/config/")||W.startsWith("/__deps/"))return null;if(W.startsWith("/api/"))return L.handleRequest(E);if(E.method.toUpperCase()!=="GET")return L.handleRequest(E);return null}:void 0,auth:!1,...O&&{stxModule:O}}).catch((E)=>{d(),console.error(`
4
4
  Failed to start dashboard server: ${E?.message||E}
5
- `),z.exit(1)})}async function OE(){if(!w)return!1;if(z.env.STACKS_PROXY_MANAGED)return!1;try{let{startProxies:X}=await import("@stacksjs/rpx");return await X({proxies:[{from:`localhost:${V}`,to:w,cleanUrls:!1}],https:{basePath:t,validityDays:825},regenerateUntrustedCerts:!1,verbose:F}),!0}catch(X){if(F)d(` ${Y(`Proxy: ${X}`)}`);return!1}}var WE=V+1;function J(X,W=200,G={}){return new Response(JSON.stringify(X),{status:W,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type",...G}})}function KE(){Bun.serve({port:WE,fetch:async(X)=>{if(X.method==="OPTIONS")return new Response(null,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"}});if(new URL(X.url).pathname==="/api/config/update"&&X.method==="POST")try{let{file:G,updates:K}=await X.json();if(!G||G.includes("..")||!G.match(/^[\w.-]+\.ts$/))return J({error:"Invalid file name"},400);let Q=D(`config/${G}`),N=EE(Q,"utf-8");for(let{path:U,value:H}of K){let B=U.split(".").pop().replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),E=new RegExp(`(${B}\\s*:\\s*)(?:'[^']*'|"[^"]*"|\\d+(?:\\.\\d+)?|true|false)`);if(E.test(N)){let $=/^\d+(?:\.\d+)?$/.test(H),O=H==="true"||H==="false",Z=H.replace(/'/g,"\\'").replace(/\$/g,"$$$$"),I=$||O?H:`'${Z}'`;N=N.replace(E,`$1${I}`)}}return l(Q,N,"utf-8"),J({success:!0})}catch(G){return J({error:G.message},500)}return J({error:"Not found"},404)}})}KE();var[,p]=await Promise.all([GE(),u(D("app/Models"),T("framework/defaults/app/Models"))]);async function ZE(){let X={library:!0,content:!0,commerce:!0,marketing:!0,analytics:!0,management:!0,utilities:!0,ci:!1,data:{dashboard:!0,activity:!0,users:!0,teams:!0,subscribers:!0,allModels:!0}};try{let W=await import(D("config/dashboard.ts")),G=W.default?.sections??{},K=G.data??{};return{library:G.library?.enabled??!0,content:G.content?.enabled??!0,commerce:G.commerce?.enabled??!0,marketing:G.marketing?.enabled??!0,analytics:G.analytics?.enabled??!0,management:G.management?.enabled??!0,utilities:G.utilities?.enabled??!0,ci:W.default?.ci?.enabled??!1,data:{dashboard:K.dashboard?.enabled??!0,activity:K.activity?.enabled??!0,users:K.users?.enabled??!0,teams:K.teams?.enabled??!0,subscribers:K.subscribers?.enabled??!0,allModels:K.allModels?.enabled??!0}}}catch{return X}}var a=await ZE(),NE=T("framework/defaults/views/dashboard/.discovered-models.json"),HE={models:b(p),sections:a};l(NE,JSON.stringify(HE,null,2));var _E=await c(V);r();var FE=!1;OE().then((X)=>{FE=X}).catch((X)=>{if(F)console.warn("[Dashboard] Reverse proxy failed:",X)});var q=w?`https://${w}`:null,g=`http://localhost:${V}`,VE=g,o=i(VE,p,a),s=`http://localhost:${V}/?native-sidebar=1`,QE=(Bun.nanoseconds()-XE)/1e6;console.log();console.log(` ${C(x("stacks dashboard"))}`);console.log();if(q)console.log(` ${k("\u279C")} ${C("Local")}: ${x(q)}`),console.log(` ${Y("\u279C")} ${Y("Origin")}: ${Y(g)}`);else console.log(` ${k("\u279C")} ${C("Local")}: ${x(g)}`);console.log(` ${k("\u279C")} ${C("Window")}: ${Y("Stacks Dashboard")} ${Y("1400\xD7900")}`);console.log(` ${k("\u279C")} ${C("Models")}: ${Y(`${p.length} discovered`)}`);if(V!==v)console.log(` ${Y("\u279C")} ${Y(`Port ${v} in use, using ${V}`)}`);if(!_E)console.log(` ${Y("\u26A0")} ${Y("Dev server may not be ready yet")}`);console.log();console.log(` ${Y(`ready in ${QE.toFixed(0)} ms`)}`);if(F){if(console.log(),console.log(` ${Y("\u279C")} ${Y("Sidebar")}: ${Y(`${o.sections.length} sections, 240px`)}`),console.log(` ${Y("\u279C")} ${Y("URL")}: ${Y(s)}`),w)console.log(` ${Y("\u279C")} ${Y("SSL")}: ${Y(t)}`),console.log(` ${Y("\u279C")} ${Y("Proxy")}: ${Y(`localhost:${V} \u2192 ${w}`)}`);if(P.length>0){console.log();for(let X of P)console.log(` ${Y(X)}`)}}console.log();var L,h=z.env.HOME?`${z.env.HOME}/Code/Tools/craft/packages/typescript/src/index.ts`:void 0;if(h&&j(h))try{({createApp:L}=await import(h))}catch{}if(!L){let X=["craft-native","@craft-native/craft","@stacksjs/ts-craft"];for(let W of X)try{if({createApp:L}=await import(W),L)break}catch{}}if(L){let X=D("resources/assets/images/app-icon.png"),W=T("framework/defaults/resources/assets/images/app-icon.png"),G=await Bun.file(X).exists()?X:await Bun.file(W).exists()?W:void 0,K=(()=>{let N=z.env.CRAFT_BIN;if(N)return j(N)?N:void 0;let U=`${z.env.HOME}/Code/Tools/craft/craft`;if(j(U))return U;let H=`${z.env.HOME}/Code/Tools/craft/bin/craft`;if(j(H))return H;let M=`${z.env.HOME}/Code/Tools/craft/packages/zig/zig-out/bin/craft`;if(j(M))return M;let B=`${z.env.HOME}/Documents/Projects/craft/packages/zig/zig-out/bin/craft`;if(j(B))return B;return})();if(!K)L=void 0;if(!L)console.log(` ${Y("Native window unavailable. Set CRAFT_BIN to a craft binary, or open the URL above in a browser.")}
6
- `),await new Promise(()=>{});let Q=L({url:s,quiet:!F,...K&&{craftPath:K},window:{title:"Stacks Dashboard",width:1400,height:900,titlebarHidden:!0,nativeSidebar:!0,sidebarWidth:240,sidebarConfig:o,...G&&{icon:G}}});z.on("SIGINT",()=>{Q.close(),z.exit(0)}),z.on("SIGTERM",()=>{Q.close(),z.exit(0)});try{await Q.show(),z.exit(0)}catch{let N=q||g;console.log(` ${Y("Dashboard available at:")} ${x(N)}
5
+ `),$.exit(1)})}async function $E(){if(!C)return!1;if($.env.STACKS_PROXY_MANAGED)return!1;try{let{startProxies:X}=await import("@stacksjs/rpx");return await X({proxies:[{from:`localhost:${V}`,to:C,cleanUrls:!1}],https:{basePath:l,validityDays:825},regenerateUntrustedCerts:!1,verbose:F}),!0}catch(X){if(F)i(` ${Y(`Proxy: ${X}`)}`);return!1}}var zE=V+1;function J(X,O=200,G={}){return new Response(JSON.stringify(X),{status:O,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type",...G}})}function GE(){Bun.serve({port:zE,fetch:async(X)=>{if(X.method==="OPTIONS")return new Response(null,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"}});if(new URL(X.url).pathname==="/api/config/update"&&X.method==="POST")try{let{file:G,updates:K}=await X.json();if(!G||G.includes("..")||!G.match(/^[\w.-]+\.ts$/))return J({error:"Invalid file name"},400);let Q=T(`config/${G}`),N=o(Q,"utf-8");for(let{path:U,value:H}of K){let w=U.split(".").pop().replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),E=new RegExp(`(${w}\\s*:\\s*)(?:'[^']*'|"[^"]*"|\\d+(?:\\.\\d+)?|true|false)`);if(E.test(N)){let z=/^\d+(?:\.\d+)?$/.test(H),W=H==="true"||H==="false",Z=H.replace(/'/g,"\\'").replace(/\$/g,"$$$$"),R=z||W?H:`'${Z}'`;N=N.replace(E,`$1${R}`)}}return c(Q,N,"utf-8"),J({success:!0})}catch(G){return J({error:G.message},500)}return J({error:"Not found"},404)}})}GE();var[,t]=await Promise.all([YE(),m(T("app/Models"),D("framework/defaults/app/Models"))]);async function OE(){let X={library:!0,content:!0,commerce:!0,marketing:!0,analytics:!0,management:!0,utilities:!0,ci:!1,data:{dashboard:!0,activity:!0,users:!0,teams:!0,subscribers:!0,allModels:!0}};try{let O=await import(T("config/dashboard.ts")),G=O.default?.sections??{},K=G.data??{};return{library:G.library?.enabled??!0,content:G.content?.enabled??!0,commerce:G.commerce?.enabled??!0,marketing:G.marketing?.enabled??!0,analytics:G.analytics?.enabled??!0,management:G.management?.enabled??!0,utilities:G.utilities?.enabled??!0,ci:O.default?.ci?.enabled??!1,data:{dashboard:K.dashboard?.enabled??!0,activity:K.activity?.enabled??!0,users:K.users?.enabled??!0,teams:K.teams?.enabled??!0,subscribers:K.subscribers?.enabled??!0,allModels:K.allModels?.enabled??!0}}}catch{return X}}var WE=await OE(),KE=D("framework/defaults/views/dashboard/.discovered-models.json"),ZE={models:u(t),sections:WE};c(KE,JSON.stringify(ZE,null,2));var NE=await n(V);d();var HE=!1;$E().then((X)=>{HE=X}).catch((X)=>{if(F)console.warn("[Dashboard] Reverse proxy failed:",X)});var v=C?`https://${C}`:null,q=`http://localhost:${V}`,r=`http://localhost:${V}/`,_E=(Bun.nanoseconds()-s)/1e6;console.log();console.log(` ${B(x("stacks dashboard"))}`);console.log();if(v)console.log(` ${k("\u279C")} ${B("Local")}: ${x(v)}`),console.log(` ${Y("\u279C")} ${Y("Origin")}: ${Y(q)}`);else console.log(` ${k("\u279C")} ${B("Local")}: ${x(q)}`);console.log(` ${k("\u279C")} ${B("Window")}: ${Y("Stacks Dashboard")} ${Y("1400\xD7900")}`);console.log(` ${k("\u279C")} ${B("Models")}: ${Y(`${t.length} discovered`)}`);if(V!==h)console.log(` ${Y("\u279C")} ${Y(`Port ${h} in use, using ${V}`)}`);if(!NE)console.log(` ${Y("\u26A0")} ${Y("Dev server may not be ready yet")}`);console.log();console.log(` ${Y(`ready in ${_E.toFixed(0)} ms`)}`);if(F){if(console.log(),console.log(` ${Y("\u279C")} ${Y("Sidebar")}: ${Y(`${sidebarConfig.sections.length} sections, 240px`)}`),console.log(` ${Y("\u279C")} ${Y("URL")}: ${Y(r)}`),C)console.log(` ${Y("\u279C")} ${Y("SSL")}: ${Y(l)}`),console.log(` ${Y("\u279C")} ${Y("Proxy")}: ${Y(`localhost:${V} \u2192 ${C}`)}`);if(P.length>0){console.log();for(let X of P)console.log(` ${Y(X)}`)}}console.log();var M,f=$.env.HOME?`${$.env.HOME}/Code/Tools/craft/packages/typescript/src/index.ts`:void 0;if(f&&j(f))try{({createApp:M}=await import(f))}catch{}if(!M){let X=["craft-native","@craft-native/craft","@stacksjs/ts-craft"];for(let O of X)try{if({createApp:M}=await import(O),M)break}catch{}}if(M){let X=T("resources/assets/images/app-icon.png"),O=D("framework/defaults/resources/assets/images/app-icon.png"),G=await Bun.file(X).exists()?X:await Bun.file(O).exists()?O:void 0,K=(()=>{let N=$.env.CRAFT_BIN;if(N)return j(N)?N:void 0;let U=`${$.env.HOME}/Code/Tools/craft/craft`;if(j(U))return U;let H=`${$.env.HOME}/Code/Tools/craft/bin/craft`;if(j(H))return H;let L=`${$.env.HOME}/Code/Tools/craft/packages/zig/zig-out/bin/craft`;if(j(L))return L;let w=`${$.env.HOME}/Documents/Projects/craft/packages/zig/zig-out/bin/craft`;if(j(w))return w;return})();if(!K)M=void 0;if(!M)console.log(` ${Y("Native window unavailable. Set CRAFT_BIN to a craft binary, or open the URL above in a browser.")}
6
+ `),await new Promise(()=>{});let Q=M({url:r,quiet:!F,...K&&{craftPath:K},window:{title:"Stacks Dashboard",width:1400,height:900,titlebarHidden:!0,webSidebarMaterial:!0,webSidebarWidth:250,...G&&{icon:G}}});$.on("SIGINT",()=>{Q.close(),$.exit(0)}),$.on("SIGTERM",()=>{Q.close(),$.exit(0)});try{await Q.show(),$.exit(0)}catch{let N=v||q;console.log(` ${Y("Dashboard available at:")} ${x(N)}
7
7
  `),await new Promise(()=>{})}}else console.log(` ${Y("Native window unavailable. Set CRAFT_BIN to a craft binary, or open the URL above in a browser.")}
8
- `),z.on("SIGINT",()=>z.exit(0)),z.on("SIGTERM",()=>z.exit(0)),await new Promise(()=>{});
8
+ `),$.on("SIGINT",()=>$.exit(0)),$.on("SIGTERM",()=>$.exit(0)),await new Promise(()=>{});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stacksjs/actions",
3
3
  "type": "module",
4
- "version": "0.70.81",
4
+ "version": "0.70.83",
5
5
  "description": "The Stacks actions.",
6
6
  "author": "Chris Breuer",
7
7
  "contributors": [
@@ -68,23 +68,23 @@
68
68
  "@stacksjs/ts-md": "^0.1.1"
69
69
  },
70
70
  "devDependencies": {
71
- "@stacksjs/api": "0.70.81",
72
- "@stacksjs/cli": "0.70.81",
73
- "@stacksjs/config": "0.70.81",
74
- "@stacksjs/database": "0.70.81",
71
+ "@stacksjs/api": "0.70.83",
72
+ "@stacksjs/cli": "0.70.83",
73
+ "@stacksjs/config": "0.70.83",
74
+ "@stacksjs/database": "0.70.83",
75
75
  "@stacksjs/tlsx": "^0.13.2",
76
76
  "better-dx": "^0.2.16",
77
- "@stacksjs/dns": "0.70.81",
78
- "@stacksjs/enums": "0.70.81",
79
- "@stacksjs/env": "0.70.81",
80
- "@stacksjs/error-handling": "0.70.81",
81
- "@stacksjs/logging": "0.70.81",
82
- "@stacksjs/path": "0.70.81",
83
- "@stacksjs/security": "0.70.81",
84
- "@stacksjs/storage": "0.70.81",
85
- "@stacksjs/strings": "0.70.81",
86
- "@stacksjs/utils": "0.70.81",
87
- "@stacksjs/validation": "0.70.81"
77
+ "@stacksjs/dns": "0.70.83",
78
+ "@stacksjs/enums": "0.70.83",
79
+ "@stacksjs/env": "0.70.83",
80
+ "@stacksjs/error-handling": "0.70.83",
81
+ "@stacksjs/logging": "0.70.83",
82
+ "@stacksjs/path": "0.70.83",
83
+ "@stacksjs/security": "0.70.83",
84
+ "@stacksjs/storage": "0.70.83",
85
+ "@stacksjs/strings": "0.70.83",
86
+ "@stacksjs/utils": "0.70.83",
87
+ "@stacksjs/validation": "0.70.83"
88
88
  },
89
89
  "peerDependencies": {
90
90
  "pickier": "^0.1.28"