@stacksjs/stx 0.2.361 → 0.2.363
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-fq3a8sq3.js → chunk-00hwz03z.js} +1 -1
- package/dist/{chunk-bab01mkf.js → chunk-14fy0xrz.js} +1 -1
- package/dist/{chunk-d0350ak9.js → chunk-25yvh46m.js} +1 -1
- package/dist/{chunk-xn226qe0.js → chunk-2bsaq9kq.js} +1 -1
- package/dist/{chunk-n6eg071x.js → chunk-3e0ba18k.js} +1 -1
- package/dist/{chunk-6nf5g9bh.js → chunk-3fd7w2va.js} +1 -1
- package/dist/{chunk-p1ycxzwx.js → chunk-3n0hpd5m.js} +1 -1
- package/dist/{chunk-4qhhbzx9.js → chunk-4my2kn5x.js} +1 -1
- package/dist/{chunk-x6c2t5dv.js → chunk-4n3vnzs0.js} +1 -1
- package/dist/{chunk-nabannen.js → chunk-51tct8h7.js} +1 -1
- package/dist/{chunk-0p52xkk9.js → chunk-5fqs93qg.js} +1 -1
- package/dist/{chunk-0ppgyq8q.js → chunk-5ppdkjhy.js} +1 -1
- package/dist/{chunk-0vrn78j5.js → chunk-6557pfz9.js} +1 -1
- package/dist/{chunk-7kfv1q2r.js → chunk-725npc6m.js} +1 -1
- package/dist/{chunk-0vvqxeq3.js → chunk-9rx9bbqh.js} +1 -1
- package/dist/{chunk-8e6fgnk5.js → chunk-9y0btmfc.js} +1 -1
- package/dist/{chunk-9y1zrqcs.js → chunk-a127v0w5.js} +1 -1
- package/dist/{chunk-1tz8fb87.js → chunk-asshx9sb.js} +1 -1
- package/dist/{chunk-fqk6m818.js → chunk-bcd9byk3.js} +2 -2
- package/dist/{chunk-s3q7k0bf.js → chunk-cbh9bfk7.js} +1 -1
- package/dist/{chunk-k91ej0ts.js → chunk-cjz5nzak.js} +1 -1
- package/dist/{chunk-r6sacvqn.js → chunk-e45zxsgj.js} +1 -1
- package/dist/{chunk-benx1c4p.js → chunk-ec4072zn.js} +1 -1
- package/dist/{chunk-tfjv0567.js → chunk-egnck8vx.js} +1 -1
- package/dist/{chunk-b381xgvw.js → chunk-fxt2hxh0.js} +1 -1
- package/dist/{chunk-r6xmsxaz.js → chunk-gv6a9fsn.js} +1 -1
- package/dist/chunk-hs1azpgz.js +4 -0
- package/dist/{chunk-7rj4h2t2.js → chunk-jtzfd61j.js} +1 -1
- package/dist/{chunk-7k7vqrj3.js → chunk-jwna46yq.js} +1 -1
- package/dist/{chunk-9455qyt3.js → chunk-k1trppjz.js} +1 -1
- package/dist/{chunk-41f9ngse.js → chunk-khaasesy.js} +1 -1
- package/dist/{chunk-7ppey2yt.js → chunk-kzg9gjmy.js} +1 -1
- package/dist/{chunk-3v63btq1.js → chunk-mwj6w2r7.js} +1 -1
- package/dist/{chunk-qg0w5tjb.js → chunk-n3xxhvng.js} +1 -1
- package/dist/{chunk-46rtxawz.js → chunk-p75e8vf3.js} +1 -1
- package/dist/{chunk-r7q89mv2.js → chunk-phq051sh.js} +1 -1
- package/dist/{chunk-1tfhw9c0.js → chunk-pkandp4e.js} +1 -1
- package/dist/{chunk-2119txb8.js → chunk-pw8q3ety.js} +17 -17
- package/dist/{chunk-zmvgsgtd.js → chunk-q92wr6a0.js} +1 -1
- package/dist/{chunk-dj24n5n7.js → chunk-sf45fhg4.js} +1 -1
- package/dist/{chunk-aw8egr6t.js → chunk-sxnb6ws9.js} +9 -9
- package/dist/{chunk-rargfb5s.js → chunk-t2yqh8nb.js} +2 -2
- package/dist/{chunk-s8tft9yt.js → chunk-tcsgynpc.js} +1 -1
- package/dist/{chunk-dhteg6ev.js → chunk-ttfb1v63.js} +1 -1
- package/dist/{chunk-masf0yq5.js → chunk-wk7wn1nw.js} +2 -2
- package/dist/{chunk-vnwzzw9j.js → chunk-xy3gx0x7.js} +1 -1
- package/dist/{chunk-11hfa3kp.js → chunk-y6ysrzx8.js} +1 -1
- package/dist/{chunk-52h2n4c4.js → chunk-yp1cbwvf.js} +1 -1
- package/dist/{chunk-g6av70d6.js → chunk-yvv9qjcd.js} +1 -1
- package/dist/cli.js +7 -7
- package/dist/client-module-registry.d.ts +7 -0
- package/dist/client-module-registry.js +2 -1
- package/dist/craft-entry.js +1 -1
- package/dist/craft.js +1 -1
- package/dist/process.js +8 -5
- package/dist/pwa.js +1 -1
- package/dist/ssg.js +2 -2
- package/package.json +5 -5
- package/dist/chunk-s4jbvdx3.js +0 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{bm as x,fq as M}from"./chunk-
|
|
2
|
+
import{bm as x,fq as M}from"./chunk-pw8q3ety.js";import"./chunk-jc6wrxrh.js";import"./chunk-2xpdcr8c.js";import"./chunk-v90kxg77.js";import"./chunk-4arms0am.js";import"./chunk-135mme4g.js";import{Ks as B,Ms as P}from"./chunk-sf45fhg4.js";import"./chunk-w1asc0zd.js";import"./chunk-kd95t585.js";import"./chunk-asshx9sb.js";import"./chunk-xk402w4a.js";import"./chunk-dnard9gp.js";import"./chunk-vgx5077x.js";import"./chunk-met6wtbk.js";import"./chunk-ta6z7k4p.js";import"./chunk-zxptxz2b.js";import"./chunk-7racewc5.js";import"./chunk-e03m4har.js";import"./chunk-vsqx756d.js";import"./chunk-m8kem5ca.js";import G from"path";var T=["broadcast","calculateDistance","canNotify","clearCookies","clearFetchCache","clearStorage","copyToClipboard","createShareableFile","defineForm","getBatteryLevel","getCookie","getCurrentPosition","getStorageKeys","getStorageSize","getVoices","hasBattery","hasCameraPermission","hasGeolocationPermission","hasMicrophonePermission","hasNotificationPermission","hasResizeObserver","hexToHsl","hexToRgb","isBroadcastChannelSupported","isCharging","isDeviceMotionSupported","isDeviceOrientationSupported","isEventSourceSupported","isEyeDropperSupported","isInFullscreen","isMutationObserverSupported","isPermissionGranted","isSpeechRecognitionSupported","isSpeechSynthesisSupported","isWakeLockSupported","isWebSocketSupported","notify","parseCookies","pickColor","prefetch","removeCookie","requestMediaPermissions","requestMotionPermission","requestNotificationPermission","requestOrientationPermission","setCookie","share","shareCurrentPage","shareFiles","shareText","shareURL","shareWithFallback","speak","stopSpeaking","toggleFullscreen","useAsyncData","useAttributeObserver","useAutoLogout","useAutoWakeLock","useBattery","useBreakpoint","useBroadcastChannel","useChannel","useChildListObserver","useClipboard","useColorHistory","useConditionalWakeLock","useCookies","useCopySelection","useDeviceMotion","useDeviceOrientation","useElementSize","useElementTextSelection","useElementVisibility","useEventSource","useEyeDropper","useFavicon","useForm","useFullscreen","useGeolocation","useGeolocationWatch","useHotkey","useIdle","useIdleState","useInfiniteScroll","useIntersectionObserver","useIntersectionObserverMultiple","useIsDesktop","useIsMobile","useIsTablet","useKeyPressed","useKeySequence","useKeyboard","useLastActive","useLazyLoad","useMeta","useMouse","useMouseInElement","useMutationObserver","useNetwork","useNotification","useOnline","useParallax","usePermission","usePermissions","usePointer","usePost","useResizeObserver","useResizeObserverMultiple","useSSE","useScroll","useSelectionPopup","useShare","useSpeechRecognition","useSpeechSynthesis","useStorage","useTextObserver","useTextSelection","useTitle","useVisibility","useWakeLock","useWindowSize"],O=new Set(T);var K=new Map,U=B(64),V=new Set,D=0,N=new Set(T);function f(){K.clear(),U.clear()}function S(H){let J=new Map;for(let Q of H){let Z=G.basename(Q);if(Z.endsWith(".d.ts"))continue;let z=Z.replace(/\.[jt]s$/,"");if(z==="index")continue;if(z===Z)continue;let X=J.get(z);if(X&&!X.endsWith(".js"))continue;J.set(z,Q)}return[...J.values()].sort()}function g(H,J){let Q=J.replace(/[$()*+.?[\\\]^{|}-]/g,"\\$&");return new RegExp(`(?:^|[^\\w$.])(?:const|let|var|function|class)\\s+${Q}\\b`).test(H)}function y(H){if(!H)return[];let J=P(H,D),Q=U.get(J);if(Q)return Q.slice();let Z=H.replace(/<script\b[^>]*\bdata-stx-runtime\b[^>]*>[\s\S]*?<\/script>/gi,"").replace(/<script\b[^>]*\bdata-stx-framework-composables\b[^>]*>[\s\S]*?<\/script>/gi,"").replace(/<script\b[^>]*\bdata-stx-stores\b[^>]*>[\s\S]*?<\/script>/gi,"").replace(/<script\b[^>]*\bdata-stx-composables\b[^>]*>[\s\S]*?<\/script>/gi,""),z=[];for(let X of N){if(V.has(X))continue;let A=X.replace(/[$()*+.?[\\\]^{|}-]/g,"\\$&");if(new RegExp(`(^|[^\\w$.])${A}\\s*\\(`).test(Z))z.push(X)}return z.sort(),U.set(J,z),z.slice()}async function p(H,J){let Q=y(H);if(Q.length===0)return null;let Z=J??G.join(import.meta.dir,"composables"),z=`${Z}\x00${Q.join(",")}`,X=K.get(z);if(X!==void 0)return X||null;let A=M({loader:"ts",target:"browser",define:x()}),L=new Set(Q),W=[],C=new Set,F=[];try{let q=new Bun.Glob("*.{ts,js}");for await(let j of q.scan({cwd:Z,absolute:!0}))F.push(j)}catch{return K.set(z,""),null}F=S(F);for(let q of F){let j;try{j=await Bun.file(q).text()}catch{continue}let I=[];try{I=A.scan(j).exports.filter(($)=>$!=="default")}catch{continue}if(!I.some(($)=>L.has($)))continue;try{j=j.replace(/^import\s+.*from\s+['"][^'"]+['"]\s*;?\s*$/gm,""),j=j.replace(/^import\s+type\s+.*$/gm,""),j=j.replace(/^export\s+\*\s+(?:as\s+\w+\s+)?from\s*['"][^'"]+['"]\s*;?\s*$/gm,""),j=j.replace(/^export\s+(?:type\s+)?\{[\s\S]*?\}\s*(?:from\s*['"][^'"]+['"]\s*)?;?\s*$/gm,""),j=j.replace(/^export\s+default\s+/gm,""),j=j.replace(/^export\s+(?=(?:declare\s+)?(?:abstract\s+)?(?:async\s+)?(?:function|class|const|let|var|type|interface|enum)\b)/gm,""),W.push(`// ${G.basename(q).replace(/\.[jt]s$/,"")}
|
|
3
3
|
${A.transformSync(j).trim()}`);for(let $ of I)C.add($)}catch($){console.warn(`[stx] framework composable ${G.basename(q)} could not be bundled:`,$)}}let Y=Q.filter((q)=>!C.has(q)&&!g(H,q));if(Y.length>0)console.warn(`[stx] could not bundle ${Y.join(", ")} from @stacksjs/stx/composables \u2014 `+"calls to them will throw ReferenceError in the browser. Import them explicitly so the bundler inlines them, or use a runtime equivalent from window.stx.");if(W.length===0)return K.set(z,""),null;let k=[...C].map((q)=>` try { if (!(${JSON.stringify(q)} in __s)) { __s[${JSON.stringify(q)}] = ${q}; if (!(${JSON.stringify(q)} in window)) window[${JSON.stringify(q)}] = ${q}; } } catch (e) {}`).join(`
|
|
4
4
|
`),w=`<script data-stx-framework-composables>
|
|
5
5
|
;(function(){
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{tl as QJ}from"./chunk-
|
|
2
|
+
import{tl as QJ}from"./chunk-jtzfd61j.js";import{ul as WJ}from"./chunk-qjvny3wf.js";import{bm as GJ,xr as XJ,yr as qJ}from"./chunk-pw8q3ety.js";import{qs as ZJ,rs as $J}from"./chunk-v90kxg77.js";import{Ks as YJ,Os as u}from"./chunk-sf45fhg4.js";import{st as c}from"./chunk-w1asc0zd.js";import X from"path";import O from"fs";function UJ(J){if(!J||typeof J!=="object")return!1;let K=J;return typeof K.message==="string"&&(K.name==="BuildMessage"||K.name==="ResolveMessage"||("position"in K))}function LJ(J){if(J&&typeof J==="object"&&Array.isArray(J.errors))return J.errors;return[J]}function b(J,K){let $=[];for(let W of LJ(J)){if(UJ(W)){let Y=W.position||void 0;$.push({file:K||Y?.file,line:Y?.line,column:Y?.column,message:W.message??"",lineText:Y?.lineText});continue}$.push({file:K,message:W instanceof Error?W.message:String(W)})}return $}function t(J,K){return b(J,K).map(($)=>{let W=$.file?`${$.file}${$.line?`:${$.line}${$.column?`:${$.column}`:""}`:""}`:"",Y=$.lineText?`
|
|
3
3
|
${$.lineText.trim()}`:"";return W?`${W}: ${$.message}${Y}`:`${$.message}${Y}`}).join(`
|
|
4
4
|
`)}var TJ=9;function P(J,K,$){return/^(?:(?:stx|ui)\.config\.[cm]?[jt]s|runtime-config-(?:server|loader)\.[cm]?[jt]s)$/.test(X.basename(J))||QJ(J,K,$)}var HJ=1,zJ=new Map,f=600,AJ=100,g=new Map;async function MJ(J){let K=g.get(J)??0;if(K>0&&K<AJ){g.set(J,K+1);return}g.set(J,1);try{let $=(await O.promises.readdir(J)).filter((z)=>z.endsWith(".js"));if($.length<=f)return;let Y=(await Promise.all($.map(async(z)=>{try{return{name:z,at:(await O.promises.stat(X.join(J,z))).mtimeMs}}catch{return null}}))).filter((z)=>z!==null);Y.sort((z,H)=>H.at-z.at);for(let z of Y.slice(f)){let H=z.name.slice(0,-3);await O.promises.rm(X.join(J,`${H}.js`),{force:!0}),await O.promises.rm(X.join(J,`${H}.deps.json`),{force:!0})}x("pruned bundle cache to",f,"entries")}catch{}}function nJ(J){return zJ.get(J)??[]}function h(J,K){if(J)zJ.set(J,K)}function CJ(J=process.env){return J.STX_DEBUG==="true"||J.STX_DEBUG==="1"}function x(...J){if(CJ())console.log("[stx:bundler]",...J)}var n=[];function r(J,K,$){n.push({filePath:J||"<inline>",message:K,details:$})}function oJ(){return n.slice()}function lJ(){n.length=0}var p;function dJ(J){p=J}function a(){if(p)return p;try{let J=qJ.strict;return typeof J==="object"&&J!==null?J.bundlerFallback??"warn":"warn"}catch{return"warn"}}var e=[/^stx$/,/^@stacksjs\/stx$/,/^@stores$/,/^stx\/stores$/,/^@composables$/];function sJ(J){let K=/^[ \t]*import[ \t]+(?!type(?:[ \t]|{))[\s\S]*?\s+from\s+['"]([^'"]+)['"][ \t]*;?/gm,$;while(($=K.exec(J))!==null){let Y=$[1];if(!e.some((H)=>H.test(Y)))return x("detected user import:",Y),!0}let W=/^[ \t]*import[ \t]+['"]([^'"]+)['"]/gm;while(($=W.exec(J))!==null){let Y=$[1];if(/\.css(?:\?.*)?$/.test(Y))continue;if(!e.some((H)=>H.test(Y)))return x("detected side-effect import:",Y),!0}return!1}var v="stx-module:",xJ=/\.(?:[cm]?[jt]sx?|json)$/i;function IJ(J,K){return X.relative(J,K).split(X.sep).join("/")}function _J(J,K){if(K.size===0)return J;return J.replace(/^([ \t]*import\s+(?:[^;"']*?\s+from\s+)?)(["'])([^"']+)\2/gm,($,W,Y,z)=>{let H=K.get(z);return H&&!z.startsWith(v)?`${W}${Y}${H}${Y}`:$})}function NJ(J,K){let $=0,W=(z)=>{let H=`__stxMod${$++}`,j=JSON.stringify(z);return K.push(`var ${H} = globalThis.__stxModules && globalThis.__stxModules[${j}];`,`if (${H} === undefined) throw new Error("[stx] module " + ${JSON.stringify(j)} + " is not registered on this page (#1957)");`),H},Y=(z,H)=>{for(let j of z.split(",")){let T=j.trim();if(!T)continue;let Q=T.match(/^("(?:[^"\\]|\\.)*"|[\w$]+)(?:\s+as\s+([\w$]+))?$/);if(!Q)continue;let Z=Q[1].startsWith('"')?JSON.parse(Q[1]):Q[1],G=Q[2]??Z;K.push(`var ${G} = ${H}[${JSON.stringify(Z)}];`)}};return J=J.replace(/^[ \t]*import\s+([^;"']*?)\s+from\s+["'](stx-module:[^"']+)["'];?[ \t]*$/gm,(z,H,j)=>{let T=j.slice(v.length),Q=W(T),Z=H.trim(),G=Z.match(/^([\w$]+)\s*(?:,\s*|$)/);if(G&&!Z.startsWith("{")&&!Z.startsWith("*"))K.push(`var ${G[1]} = ${Q}.default;`),Z=Z.slice(G[0].length).trim();let q=Z.match(/^\*\s*as\s+([\w$]+)$/);if(q)K.push(`var ${q[1]} = ${Q};`);else if(Z.startsWith("{"))Y(Z.replace(/^\{|\}$/g,""),Q);return""}),J=J.replace(/^[ \t]*import\s+["'](stx-module:[^"']+)["'];?[ \t]*$/gm,(z,H)=>{return W(H.slice(v.length)),""}),J}function JJ(J){let K=[J,`${J}.ts`,`${J}.tsx`,`${J}.js`,`${J}.mjs`,`${J}.jsx`,X.join(J,"index.ts"),X.join(J,"index.tsx"),X.join(J,"index.js"),X.join(J,"index.mjs")];for(let $ of K)try{if(O.existsSync($)&&O.statSync($,{throwIfNoEntry:!1})?.isFile())return $}catch{}return}function SJ(J,K,$,W,Y,z=new Map,H){let j=(Q,Z,G)=>{if(P(Z,J,H))return null;if(!Y||Q!==$||!xJ.test(Z))return null;try{if(!O.statSync(Z,{throwIfNoEntry:!1})?.isFile())return null}catch{return null}W.add(Z);let q=`${v}${IJ(process.cwd(),Z)}`;return z.set(G,q),{path:q,external:!0}},T=(Q,Z)=>{let G=Q===$?K:X.dirname(Q),q=X.resolve(G,Z);return JJ(q)??q};return{name:"stx-client-bundle",setup(Q){if(Q.onResolve({filter:/^(stx|@stacksjs\/stx)$/},(Z)=>({path:Z.path,external:!0})),Q.onResolve({filter:/^(@stores|@composables|stx\/stores)$/},(Z)=>({path:Z.path,external:!0})),Q.onResolve({filter:/^\//},(Z)=>{let G=JJ(Z.path);if(G){let q=j(Z.importer,G,Z.path);if(q)return q;if(G!==$)W.add(G);return{path:G}}return{path:Z.path,external:!0}}),Q.onResolve({filter:/^\.\.?\//},(Z)=>{let G=T(Z.importer,Z.path),q=j(Z.importer,G,Z.path);if(q)return q;return W.add(G),{path:G}}),Q.onResolve({filter:/^[@~]\//},(Z)=>{let G=X.resolve(J,Z.path.slice(2)),q=[G,`${G}.ts`,`${G}.tsx`,`${G}.js`,`${G}.mjs`,`${G}.jsx`,X.join(G,"index.ts"),X.join(G,"index.tsx"),X.join(G,"index.js"),X.join(G,"index.mjs")];for(let w of q)if(O.existsSync(w)&&O.statSync(w,{throwIfNoEntry:!1})?.isFile()){let y=j(Z.importer,w,Z.path);if(y)return y;return x(`resolved ${Z.path[0]}/ import:`,Z.path,"\u2192",w),W.add(w),{path:w}}return console.warn(`[stx:bundler] could not resolve ${Z.path[0]}/ import:`,Z.path),{path:G}}),Y)Q.onResolve({filter:/^(?!node:|bun:)(?:@[\w.-]+\/)?[\w.-]/},(Z)=>{if(Z.importer!==$)return;let G=`${v}npm:${Z.path}`;return z.set(Z.path,G),{path:G,external:!0}});Q.onLoad({filter:/\.(?:[cm]?[jt]sx?|json)$/},(Z)=>{if(P(Z.path,J,H))throw Error(`Server-only API source cannot be imported by a client script: ${Z.path}`);let G=X.extname(Z.path).toLowerCase(),q=G===".json"?"json":G===".tsx"?"tsx":G===".jsx"?"jsx":G===".ts"||G===".mts"||G===".cts"?"ts":"js";if(Z.path!==$)W.add(Z.path);return{contents:O.readFileSync(Z.path,"utf8"),loader:q}})}}}var m=new Map,D=YJ(64),KJ=Symbol.for("stx.client-bundle-build-queue");function yJ(J){let K=globalThis,W=(K[KJ]??Promise.resolve()).then(J,J);return K[KJ]=W.then(()=>{return},()=>{return}),W}async function iJ(J,K,$={}){let W=$.projectRoot||process.cwd(),Y=(await XJ(W)).serverApi,z=$.minify??!1,H=$.externalizeUserModules??!0,j=$.cacheDir||c(W,"bundle-cache"),T=new Bun.CryptoHasher("md5");T.update(`${TJ}\x00${WJ()}\x00${JSON.stringify(Y??!1)}\x00${H?"registry":"inline"}\x00${J}\x00${K}`);let Q=T.digest("hex").slice(0,12),Z=X.join(j,`${Q}.js`),G=D.get(Z);if(G){if(u(G.files)&&G.files.every((A)=>!P(A.path,W,Y))){x("memo hit:",Q);let A=G.files.map((M)=>M.path);return h(K,A),$.collectInputs?.push(...A),G.code}D.delete(Z),x("memo invalidated by dep change:",Q)}let q=X.join(j,`${Q}.deps.json`),w=Bun.file(Z);if(await w.exists()){let A=Bun.file(q),M=!1,U=null;if(await A.exists())try{let N=JSON.parse(await A.text());if(N.metadataVersion!==HJ||!Array.isArray(N.files))M=!1;else U=N.files,M=!0;if(U&&(!u(U)||U.some((B)=>P(B.path,W,Y))))M=!1}catch{M=!1}if(M){if(x("cache hit:",Q),U)h(K,U.map((B)=>B.path)),$.collectInputs?.push(...U.map((B)=>B.path));let N=await w.text();if(U)D.set(Z,{code:N,files:U});return N}x("cache invalidated by dep change:",Q)}let y=m.get(Q);if(y){let A=await y;if($.collectInputs)$.collectInputs.push(...(D.get(Z)?.files??[]).map((M)=>M.path));return A}let I=yJ(()=>FJ(J,K,{projectRoot:W,minify:z,cacheDir:j,hash:Q,cachePath:Z,depsPath:q,collectInputs:$.collectInputs,externalizeUserModules:H,serverApi:Y}));m.set(Q,I);try{return await I}finally{m.delete(Q)}}var BJ=0;function RJ(J){return`${J}-${process.pid}-${++BJ}`}async function FJ(J,K,$){let{projectRoot:W,minify:Y,cacheDir:z,hash:H,cachePath:j,depsPath:T,externalizeUserModules:Q}=$,Z=c(W,"bundle-tmp"),G=RJ(H),q=X.join(Z,`${G}.ts`),w=X.join(Z,"out",G);O.mkdirSync(Z,{recursive:!0}),O.mkdirSync(w,{recursive:!0});let y=X.dirname(K),I=new Set,A=/^[ \t]*(export\s+)?(?:const|let|var)\s+(?:\{([^}]+)\}|(\w+))/gm,M=/^[ \t]*(export\s+)?(?:async\s+)?function\s+(\w+)/gm,U=ZJ(J),{depths:N,balanced:B}=$J(U),o=(L)=>!B||N[L]===0,C;while((C=A.exec(U))!==null){if(C[1])continue;if(!o(C.index))continue;if(C[2])C[2].split(",").forEach((L)=>{let k=DJ(L);if(k)I.add(k)});else if(C[3])I.add(C[3])}while((C=M.exec(U))!==null){if(C[1])continue;if(!o(C.index))continue;I.add(C[2])}let VJ=I.size>0?`
|
|
5
5
|
export { ${[...I].join(", ")} }`:"";await Bun.write(q,J+VJ),x("bundling:",H,"from:",X.basename(K));let l=new Set,d=new Map;try{let L=await Bun.build({entrypoints:[q],outdir:w,target:"browser",format:"esm",minify:Y,plugins:[SJ(W,y,q,l,Q,d,$.serverApi)],define:{"process.env.NODE_ENV":Y?'"production"':'"development"',...GJ()},root:W});if(!L.success){let S=L.logs.filter((R)=>R.level==="error").map((R)=>R.message).join(", ")||`Unable to bundle ${X.basename(K)}`,F=b(L.logs,K||void 0);if(console.warn("[stx:bundler] build failed:",S),r(K||"",S,F),a()==="error")throw Error(S);return J}let k="";for(let V of L.outputs){k=await V.text();break}let _=[];for(let V of k.matchAll(/^\s*export\s*\{([^}]*)\}\s*;?\s*$/gm))for(let S of V[1].split(",")){let F=S.trim().match(/^([A-Za-z_$][\w$]*)\s+as\s+([A-Za-z_$][\w$]*)$/);if(F){_.push([F[2],F[1]]);continue}let R=S.trim();if(/^[A-Za-z_$][\w$]*$/.test(R))_.push([R,R])}let s=[];k=NJ(_J(k,d),s);let kJ=k.match(/^\s*import\s+[^;]+;?\s*$/gm)||[];k=k.replace(/^\s*import\s+[^;]+;?\s*$/gm,"").replace(/^\s*export\s*\{[^}]*\}\s*;?\s*$/gm,"").replace(/^\s*export\s+default\s+.*$/gm,"").trim();let i=`__stxBundle_${H}`,jJ=_.map(([V,S])=>`${JSON.stringify(V)}: ${S}`).join(", "),OJ=_.map(([V])=>`var ${V} = undefined;`).join(`
|
|
@@ -891,7 +891,7 @@ NoDisplay=true`:""}
|
|
|
891
891
|
`;if(!p(G))G4(G,{recursive:!0});X4(J,K,"utf-8")}else if(p(J))Q4(J)}async function Q8(Z){return p(R4(Z))}async function X8(Z){let Y=K4(Z);if(!p(Y))return!1;try{let $=$8(Y,"utf-8");if($.includes("X-GNOME-Autostart-enabled=false"))return!1;if($.includes("Hidden=true"))return!1;return!0}catch{return!1}}function z8(Z){return Z.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}async function R8(Z,Y={}){let $=z4();switch($){case"darwin":return J8(Z,Y);case"linux":return G8(Z,Y);default:throw Error(`Auto-launch is not yet supported on ${$}`)}}async function K8(Z){let Y=Z||"StxApp";switch(z4()){case"darwin":return Q8(Y);case"linux":return X8(Y);default:return!1}}var B=new Map,F8=0,zZ=!1;function F4(Z){let Y=Z.split("+").map((J)=>J.trim()),$={key:"",meta:!1,ctrl:!1,shift:!1,alt:!1};for(let J of Y){let G=J.toLowerCase();switch(G){case"cmd":case"command":case"meta":case"\u2318":$.meta=!0;break;case"ctrl":case"control":case"\u2303":$.ctrl=!0;break;case"shift":case"\u21E7":$.shift=!0;break;case"alt":case"option":case"opt":case"\u2325":$.alt=!0;break;case"cmdorctrl":case"commandorcontrol":if(typeof process<"u"&&process.platform==="darwin")$.meta=!0;else $.ctrl=!0;break;default:$.key=G}}return $}function j8(Z){let Y=[];if(Z.ctrl)Y.push("\u2303");if(Z.alt)Y.push("\u2325");if(Z.shift)Y.push("\u21E7");if(Z.meta)Y.push("\u2318");return Y.push(Z.key.toUpperCase()),Y.join("")}function O8(Z,Y){if(Y.meta!==Z.metaKey)return!1;if(Y.ctrl!==Z.ctrlKey)return!1;if(Y.shift!==Z.shiftKey)return!1;if(Y.alt!==Z.altKey)return!1;return Z.key.toLowerCase()===Y.key||Z.code.toLowerCase()===`key${Y.key}`}function j4(Z){for(let[,Y]of B)if(O8(Z,Y.parsed)){Z.preventDefault(),Z.stopPropagation();try{Y.handler()}catch{}break}}function V8(){if(zZ)return;if(typeof document>"u")return;document.addEventListener("keydown",j4,!0),zZ=!0}function TZ(){if(!zZ)return;if(typeof document>"u")return;document.removeEventListener("keydown",j4,!0),zZ=!1}async function q8(Z,Y){if(typeof window>"u")return!1;let $=window.craft;if(!$?.hotkeys?.register)return!1;try{return await $.hotkeys.register(Z,Y),!0}catch{return!1}}async function NZ(Z){if(typeof window>"u")return;let Y=window.craft;if(!Y?.hotkeys?.unregister)return;try{await Y.hotkeys.unregister(Z)}catch{}}function U8(Z,Y){let $=`hotkey_${++F8}_${Date.now()}`,J=F4(Z);B.set($,{shortcut:Z,handler:Y,parsed:J}),q8($,Z),V8();let G={shortcut:Z,id:$,unregister(){O4(G)}};return G}function O4(Z){if(B.delete(Z.id),NZ(Z.id),B.size===0)TZ()}function P8(){for(let[Z]of B)NZ(Z);B.clear(),TZ()}function L8(){return Array.from(B.entries()).map(([Z,Y])=>({shortcut:Y.shortcut,id:Z,unregister(){if(B.delete(Z),NZ(Z),B.size===0)TZ()}}))}class V4{_duration;_tickInterval;_remaining;_running=!1;_paused=!1;_complete=!1;_intervalId=null;_lastTick=0;_completionHandlers=new Set;_tickHandlers=new Set;constructor(Z){if(this._duration=Z.duration,this._tickInterval=Z.tickInterval||1000,this._remaining=Z.duration,Z.onComplete)this._completionHandlers.add(Z.onComplete);if(Z.onTick)this._tickHandlers.add(Z.onTick);if(Z.autoStart)this.start()}get isRunning(){return this._running&&!this._paused}get isPaused(){return this._paused}get isComplete(){return this._complete}get remaining(){if(this._running&&!this._paused){let Z=Date.now()-this._lastTick;return Math.max(0,this._remaining-Z)}return Math.max(0,this._remaining)}get elapsed(){return this._duration-this.remaining}get duration(){return this._duration}get progress(){if(this._duration===0)return 1;return Math.min(1,this.elapsed/this._duration)}start(){if(this._running)return;this._running=!0,this._paused=!1,this._complete=!1,this._lastTick=Date.now(),this._startInterval()}stop(){this._clearInterval(),this._running=!1,this._paused=!1,this._remaining=this._duration}pause(){if(!this._running||this._paused)return;let Z=Date.now()-this._lastTick;this._remaining=Math.max(0,this._remaining-Z),this._clearInterval(),this._paused=!0}resume(){if(!this._paused)return;this._paused=!1,this._lastTick=Date.now(),this._startInterval()}reset(){this._clearInterval(),this._running=!1,this._paused=!1,this._complete=!1,this._remaining=this._duration}onComplete(Z){return this._completionHandlers.add(Z),()=>{this._completionHandlers.delete(Z)}}onTick(Z){return this._tickHandlers.add(Z),()=>{this._tickHandlers.delete(Z)}}_startInterval(){this._clearInterval(),this._intervalId=setInterval(()=>{let Z=Date.now(),Y=Z-this._lastTick;this._lastTick=Z,this._remaining=Math.max(0,this._remaining-Y);for(let $ of this._tickHandlers)try{$(this._remaining)}catch{}if(this._remaining<=0){this._clearInterval(),this._running=!1,this._complete=!0;for(let $ of this._completionHandlers)try{$()}catch{}}},this._tickInterval)}_clearInterval(){if(this._intervalId!==null)clearInterval(this._intervalId),this._intervalId=null}}class q4{_interval;_handler;_immediate;_running=!1;_intervalId=null;constructor(Z){if(this._interval=Z.interval,this._handler=Z.handler,this._immediate=Z.immediate!==!1,this._immediate)this.start()}get isRunning(){return this._running}start(){if(this._running)return;this._running=!0,this._intervalId=setInterval(()=>{try{this._handler()}catch{}},this._interval)}stop(){if(this._intervalId!==null)clearInterval(this._intervalId),this._intervalId=null;this._running=!1}}function W8(Z){return new V4(Z)}function D8(Z){return new q4(Z)}function M8(Z){return new Promise((Y)=>setTimeout(Y,Z))}function _8(Z){let Y=Math.ceil(Z/1000),$=Math.floor(Y/3600),J=Math.floor(Y%3600/60),G=Y%60;if($>0)return`${$}:${String(J).padStart(2,"0")}:${String(G).padStart(2,"0")}`;return`${J}:${String(G).padStart(2,"0")}`}function T8(Z){let Y=Math.ceil(Z/1000),$=Math.floor(Y/3600),J=Math.floor(Y%3600/60),G=Y%60;if($>0){if(J>0)return`${$}h ${J}m`;return`${$}h`}if(J>0){if(G>0)return`${J}m ${G}s`;return`${J}m`}return`${G}s`}function Q(Z){if(typeof window>"u")return!1;let Y=window.craft;return!!(Y&&Y[Z])}function M(Z){if(!Q(Z))throw Error(`craft.${Z} is not available \u2014 this API requires a Craft native window`);return window.craft[Z]}function U(Z,Y){if(typeof window>"u")return()=>{};let $=(J)=>Y(J.detail??{});return window.addEventListener(Z,$),()=>window.removeEventListener(Z,$)}var N8={async writeText(Z){if(Q("clipboard")){await window.craft.clipboard.writeText(Z);return}if(typeof navigator<"u"&&navigator.clipboard)await navigator.clipboard.writeText(Z)},async readText(){if(Q("clipboard")){let Z=await window.craft.clipboard.readText();return typeof Z==="string"?Z:""}if(typeof navigator<"u"&&navigator.clipboard?.readText)try{return await navigator.clipboard.readText()}catch{return""}return""},async writeHTML(Z){if(Q("clipboard")){await window.craft.clipboard.writeHTML(Z);return}if(typeof navigator<"u"&&navigator.clipboard?.write)try{let Y=new window.ClipboardItem({"text/html":new Blob([Z],{type:"text/html"}),"text/plain":new Blob([E8(Z)],{type:"text/plain"})});await navigator.clipboard.write([Y])}catch{}},async readHTML(){if(Q("clipboard")){let Z=await window.craft.clipboard.readHTML();return typeof Z==="string"?Z:""}if(typeof navigator<"u"&&navigator.clipboard?.read)try{let Z=await navigator.clipboard.read();for(let Y of Z)if(Y.types.includes("text/html"))return await(await Y.getType("text/html")).text()}catch{}return""},async clear(){if(Q("clipboard")){await window.craft.clipboard.clear();return}if(typeof navigator<"u"&&navigator.clipboard?.writeText)try{await navigator.clipboard.writeText("")}catch{}},async hasText(){if(Q("clipboard"))return await window.craft.clipboard.hasText();return(await this.readText()).length>0},async hasHTML(){if(Q("clipboard"))return await window.craft.clipboard.hasHTML();return(await this.readHTML()).length>0},async hasImage(){if(Q("clipboard"))return await window.craft.clipboard.hasImage();return!1}};function E8(Z){return Z.replace(/<(script|style)[^>]*>[\s\S]*?<\/\1>/gi,"").replace(/<\/?(br|p|div|li|h[1-6])\b[^>]*>/gi,`
|
|
892
892
|
`).replace(/<[^>]+>/g,"").replace(/ /g," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/\n{3,}/g,`
|
|
893
893
|
|
|
894
|
-
`).trim()}var A8={async show(Z){if(!Z.title)throw Error("notification title is required");if(Q("notifications")){await window.craft.notifications.show(Z);return}if(typeof window<"u"&&"Notification"in window){let Y=window.Notification;if(Y.permission==="granted")new Y(Z.title,{body:Z.body,icon:Z.icon});else if(Y.permission==="default"){if(await Y.requestPermission()==="granted")new Y(Z.title,{body:Z.body,icon:Z.icon})}}},async schedule(Z){if(Q("notifications")){let J={...Z};if(J.triggerAt instanceof Date)J.triggerAt=J.triggerAt.toISOString();await window.craft.notifications.schedule(J);return}let Y=k8(Z.triggerAt),$=Math.max(0,Y-Date.now());setTimeout(()=>{this.show(Z).catch(()=>{})},$)},async cancel(Z){if(Q("notifications"))await window.craft.notifications.cancel(Z)},async cancelAll(){if(Q("notifications"))await window.craft.notifications.cancelAll()},async setBadge(Z){let Y=Math.max(0,Math.round(Number.isFinite(Z)?Z:0));if(Q("notifications")){await window.craft.notifications.setBadge(Y);return}if(typeof navigator<"u"&&navigator.setAppBadge)try{await navigator.setAppBadge(Y)}catch{}},async clearBadge(){if(Q("notifications")){await window.craft.notifications.clearBadge();return}if(typeof navigator<"u"&&navigator.clearAppBadge)try{await navigator.clearAppBadge()}catch{}},async requestPermission(){if(Q("notifications"))return await window.craft.notifications.requestPermission();if(typeof window<"u"&&"Notification"in window){let Z=window.Notification;if(Z.permission==="granted")return!0;if(Z.permission==="denied")return!1;return await Z.requestPermission()==="granted"}return!1},async registerCategories(Z){if(!Array.isArray(Z)||Z.length===0)return;if(Q("notifications")){let Y=window.craft.notifications.registerCategories;if(typeof Y==="function")await Y(Z)}},onActionClicked(Z){return U("craft:notification:actionClicked",Z)},onReply(Z){return U("craft:notification:reply",Z)}};function k8(Z){if(Z==null)return Date.now();if(Z instanceof Date)return Z.getTime();if(typeof Z==="number")return Z;let Y=Date.parse(Z);return Number.isNaN(Y)?Date.now():Y}var H8={async readFile(Z){let Y=await M("fs").readFile(Z);return Y&&Y.data||""},async readBuffer(Z){let Y=await M("fs").readFile(Z),$=Y&&Y.data||"";if(Y&&Y.base64===!0)return C8($);return new TextEncoder().encode($)},async writeFile(Z,Y){await M("fs").writeFile(Z,Y)},async writeBuffer(Z,Y){let $=x8(Y),J=M("fs");if(typeof J.writeFileBytes==="function")await J.writeFileBytes(Z,$);else await J.writeFile(Z,$)},async copy(Z,Y){if(Z===Y)throw Error("fs.copy: source and destination must differ");await M("fs").copy(Z,Y)},async move(Z,Y){if(Z===Y)throw Error("fs.move: source and destination must differ");await M("fs").move(Z,Y)},async appendFile(Z,Y){await M("fs").appendFile(Z,Y)},async deleteFile(Z){await M("fs").deleteFile(Z)},async exists(Z){return await M("fs").exists(Z)},async stat(Z){return I8(await M("fs").stat(Z))},async readDir(Z){let Y=await M("fs").readDir(Z),$=Y&&Y.entries||[],J=Z.endsWith("/")?Z.slice(0,-1):Z;return $.map((G)=>({name:G.name,path:`${J}/${G.name}`,isDirectory:!!G.isDirectory}))},async mkdir(Z,Y){await M("fs").mkdir(Z,Y)},async rmdir(Z,Y){await M("fs").rmdir(Z,Y)},async watch(Z,Y){await M("fs").watch(Z,Y)},async unwatch(Z){await M("fs").unwatch(Z)},onChange(Z){return U("craft:fs:change",Z)},async watchTree(Z,Y,$){let J=`watch-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,G=M("fs");await G.watch(Z,J,{recursive:!!Y.recursive});let X=Y.kinds&&Y.kinds.length>0?new Set(Y.kinds):null,R=Math.max(0,Math.floor(Y.coalesceMs??0)),z=[],K=null,F=!1,O=()=>{if(K=null,z.length===0)return;let j=z;z=[];try{$(j)}catch{}},V=U("craft:fs:change",(j)=>{if(F)return;if(j.id!==J)return;if(X&&j.kind&&!X.has(j.kind))return;if(z.push(j),R===0){O();return}if(K==null)K=setTimeout(O,R)});return{id:J,async stop(){if(F)return;if(F=!0,V(),K)clearTimeout(K),K=null;if(z.length>0)O();try{await G.unwatch(J)}catch{}}}},async homeDir(){return await M("fs").homeDir()},async tempDir(){return await M("fs").tempDir()},async appDataDir(){return await M("fs").appDataDir()}};function x8(Z){let Y="";for(let $=0;$<Z.length;$++)Y+=String.fromCharCode(Z[$]);return typeof btoa==="function"?btoa(Y):Buffer.from(Z).toString("base64")}function C8(Z){let Y=typeof atob==="function"?atob(Z):Buffer.from(Z,"base64").toString("binary"),$=new Uint8Array(Y.length);for(let J=0;J<Y.length;J++)$[J]=Y.charCodeAt(J);return $}function I8(Z){return{isFile:!!Z.isFile,isDirectory:!!Z.isDirectory,isSymlink:!!Z.isSymlink,size:Number(Z.size)||0,modifiedAt:Z.modifiedAt!=null?Z.modifiedAt<1000000000000?Z.modifiedAt*1000:Z.modifiedAt:0}}var a=new Set,U4=!1;function S8(){if(U4)return;if(typeof window>"u"||typeof window.addEventListener!=="function")return;window.addEventListener("craft:shell:exit",(Z)=>{let Y=Z.detail;if(Y?.id)a.delete(Y.id)}),U4=!0}var w8=new Set(["javascript:","data:","file:","vbscript:"]),B8={async openExternal(Z){let Y=Z.trim().toLowerCase();for(let $ of w8)if(Y.startsWith($))throw Error(`shell.openExternal: ${$} URLs are blocked for safety`);if(Q("shell")){await window.craft.shell.openExternal(Z);return}if(typeof window<"u"&&typeof window.open==="function")window.open(Z,"_blank","noopener,noreferrer")},async openPath(Z){await M("shell").openPath(Z)},async showInFinder(Z){await M("shell").showInFinder(Z)},async spawn(Z,Y,$=[],J={}){if(S8(),!Z||typeof Z!=="string")throw Error("shell.spawn: id must be a non-empty string");if(!Y||typeof Y!=="string")throw Error("shell.spawn: command must be a non-empty string");if(!Array.isArray($))throw Error("shell.spawn: args must be an array");for(let G of $)if(typeof G!=="string")throw Error("shell.spawn: args entries must be strings");if(a.has(Z))throw Error(`shell.spawn: id "${Z}" is already in use \u2014 call kill(id) first or pick a different id`);a.add(Z);try{await M("shell").spawn(Z,Y,$,J)}catch(G){throw a.delete(Z),G}},async kill(Z){await M("shell").kill(Z),a.delete(Z)},async getEnv(Z){if(Q("shell")){let Y=await window.craft.shell.getEnv(Z);return Y==null?void 0:String(Y)}return},async setEnv(Z,Y){await M("shell").setEnv(Z,Y)},onStdout(Z){return U("craft:shell:stdout",Z)},onStderr(Z){return U("craft:shell:stderr",Z)},onExit(Z){return U("craft:shell:exit",Z)}};function u(){return window.craft.shortcuts}var f8={async register(Z,Y,$){if(!Q("shortcuts"))return;await u().register(Z,Y,$)},async unregister(Z){if(!Q("shortcuts"))return;await u().unregister(Z)},async unregisterAll(){if(!Q("shortcuts"))return;await u().unregisterAll()},async enable(Z){if(!Q("shortcuts"))return;await u().enable(Z)},async disable(Z){if(!Q("shortcuts"))return;await u().disable(Z)},async isRegistered(Z){if(!Q("shortcuts"))return!1;return await u().isRegistered(Z)},async list(){if(!Q("shortcuts"))return[];return await u().list()},on(Z){return U("craft:shortcut",Z)}};var v8={get(){if(Q("theme"))try{return window.craft.theme.get()}catch{}return{appearance:y8()}},onChange(Z){if(Z(this.get()),Q("theme"))return U("craft:theme",Z);if(typeof window<"u"&&window.matchMedia){let Y=window.matchMedia("(prefers-color-scheme: dark)"),$=()=>Z({appearance:Y.matches?"dark":"light"});return Y.addEventListener("change",$),()=>Y.removeEventListener("change",$)}return()=>{}},async current(){return this.get()}};function y8(){if(typeof window>"u"||!window.matchMedia)return"light";return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}async function g8(Z,Y={}){if(!Q("dragOut"))throw Error("dragOut requires a Craft native window");let $=Array.isArray(Z)?Z:[Z];if($.length===0)throw Error("dragOut: at least one path required");await window.craft.dragOut.start($,Y)}function b8(){return Q("dragOut")}var u8={onUrl(Z){if(!Q("deepLink"))return()=>{};return U("craft:deepLink",Z)},getInitialUrl(){if(typeof window>"u")return null;if(Q("deepLink"))try{return window.craft.deepLink.getInitialUrl()}catch{return null}return window.__craftPendingDeepLink||null},consumeInitialUrl(){let Z=this.getInitialUrl();if(typeof window<"u")window.__craftPendingDeepLink=void 0;return Z},isAvailable(){return Q("deepLink")}};var m8={async isCharging(){if(Q("power"))return await window.craft.power.isCharging();let Z=await RZ();return Z?!!Z.charging:!1},async isPluggedIn(){if(Q("power"))return await window.craft.power.isPluggedIn();let Z=await RZ();return Z?!!Z.charging||Z.level>=0.999:!1},async isLowPowerMode(){if(Q("power"))return await window.craft.power.isLowPowerMode();return!1},async level(){if(Q("power")){let Y=await window.craft.power.batteryLevel();return typeof Y==="number"?Y:null}let Z=await RZ();return Z?Z.level:null},async timeRemaining(){if(Q("power")){let $=await window.craft.power.timeRemaining();return typeof $==="number"?$:null}let Z=await RZ();if(!Z)return null;let Y=Z.charging?Z.chargingTime:Z.dischargingTime;return Number.isFinite(Y)?Math.round(Y/60):null},async thermalState(){if(Q("power"))return await window.craft.power.thermalState()||"unknown";return"unknown"},async uptimeSeconds(){if(Q("power"))return await window.craft.power.uptimeSeconds();if(typeof performance<"u"&&typeof performance.now==="function")return Math.round(performance.now()/1000);return 0},async preventSleep(Z="app is busy"){if(Q("power")){await window.craft.power.preventSleep(Z);return}if(typeof navigator>"u"||!navigator.wakeLock)return;let Y=window;if(Y.__craftWebWakeLock?.release){try{await Y.__craftWebWakeLock.release()}catch{}Y.__craftWebWakeLock=null}try{let $=await navigator.wakeLock.request("screen");Y.__craftWebWakeLock=$}catch{}},async allowSleep(){if(Q("power")){await window.craft.power.allowSleep();return}let Z=window.__craftWebWakeLock;if(Z&&typeof Z.release==="function"){try{await Z.release()}catch{}window.__craftWebWakeLock=null}},onSleep(Z){return U("craft:powerSleep",Z)},onWake(Z){return U("craft:powerWake",Z)}};async function RZ(){if(typeof navigator>"u")return null;let Z=navigator;if(typeof Z.getBattery!=="function")return null;try{return await Z.getBattery()}catch{return null}}var h8={async connectionType(){if(Q("network"))return await window.craft.network.connectionType();return P4()},async wifiSSID(){if(Q("network"))return await window.craft.network.wifiSSID()||void 0;return},async wifiSignalStrength(){if(Q("network")){let Z=await window.craft.network.wifiSignalStrength();return typeof Z==="number"?Z:void 0}return},async ipAddress(){if(Q("network"))return await window.craft.network.ipAddress();return""},async macAddress(){if(Q("network"))return await window.craft.network.macAddress();return""},async interfaces(){if(Q("network"))return await window.craft.network.interfaces();return[]},async isVPNConnected(){if(Q("network"))return await window.craft.network.isVPNConnected();return!1},async proxySettings(){if(Q("network"))return await window.craft.network.proxySettings()||{};return{}},async openPreferences(){if(Q("network"))await window.craft.network.openPreferences()},onChange(Z){if(Q("network"))return U("craft:networkChange",Z);if(typeof window>"u")return()=>{};let Y=()=>Z({type:P4(),online:!0}),$=()=>Z({type:"none",online:!1});return window.addEventListener("online",Y),window.addEventListener("offline",$),()=>{window.removeEventListener("online",Y),window.removeEventListener("offline",$)}}};function P4(){if(typeof navigator>"u")return"unknown";if(navigator.onLine===!1)return"none";let Z=navigator.connection;if(!Z)return"unknown";let Y=String(Z.type||Z.effectiveType||"unknown").toLowerCase();if(Y==="wifi"||Y==="cellular"||Y==="ethernet"||Y==="bluetooth"||Y==="none")return Y;return"unknown"}var c8={async checkForUpdates(){if(!Q("updater"))return;await window.craft.updater.checkForUpdates()},async checkInBackground(){if(!Q("updater"))return;await window.craft.updater.checkInBackground()},async setAutomaticChecks(Z){if(!Q("updater"))return;await window.craft.updater.setAutomaticChecks(Z)},async setCheckInterval(Z){if(!Q("updater"))return;if(!Number.isFinite(Z))throw Error("setCheckInterval: must be a finite number");let Y=Z<=0?0:Math.max(60,Math.round(Z));await window.craft.updater.setCheckInterval(Y)},async setFeedURL(Z){if(!Q("updater"))return;await window.craft.updater.setFeedURL(Z)},async getLastUpdateCheckDate(){if(!Q("updater"))return null;return await window.craft.updater.getLastUpdateCheckDate()||null},async getUpdateInfo(){if(!Q("updater"))return null;let Z=await window.craft.updater.getUpdateInfo();if(!Z||typeof Z.version!=="string"||Z.version.length===0)return null;return Z},onAvailable(Z){return U("craft:updateAvailable",Z)},onDownloaded(Z){return U("craft:updateDownloaded",Z)},async verifySignature({payload:Z,signatureB64:Y,publicKeyB64:$}){let J=L4(Z),G;try{G=await crypto.subtle.importKey("raw",KZ($),{name:"Ed25519"},!1,["verify"])}catch{return!1}try{return await crypto.subtle.verify("Ed25519",G,KZ(Y),J)}catch{return!1}},async verifyDownload({url:Z,signatureB64:Y,publicKeyB64:$,fetchInit:J}){let G;try{G=await fetch(Z,J)}catch{return{ok:!1,reason:"fetch-failed"}}if(!G.ok)return{ok:!1,reason:"http-error",status:G.status};let X=new Uint8Array(await G.arrayBuffer()),R;try{R=await crypto.subtle.importKey("raw",KZ($),{name:"Ed25519"},!1,["verify"])}catch{return{ok:!1,reason:"bad-key"}}let z=!1;try{z=await crypto.subtle.verify("Ed25519",R,KZ(Y),L4(X))}catch{z=!1}if(!z)return{ok:!1,reason:"bad-signature"};return{ok:!0,payload:X}}};function L4(Z){if(Z instanceof ArrayBuffer)return new Uint8Array(Z);let Y=new ArrayBuffer(Z.byteLength),$=new Uint8Array(Y);return $.set(Z),$}function KZ(Z){if(typeof atob==="function"){let J=atob(Z),G=new ArrayBuffer(J.length),X=new Uint8Array(G);for(let R=0;R<J.length;R++)X[R]=J.charCodeAt(R);return X}let Y=Buffer.from(Z,"base64"),$=new ArrayBuffer(Y.length);return new Uint8Array($).set(Y),new Uint8Array($)}var p8={onFocus(Z){if(Q("window"))return U("craft:window:focus",()=>Z());return EZ("focus",Z)},onBlur(Z){if(Q("window"))return U("craft:window:blur",()=>Z());return EZ("blur",Z)},onResize(Z){if(Q("window"))return U("craft:window:resize",Z);if(typeof window>"u")return()=>{};let Y=()=>Z({width:window.innerWidth,height:window.innerHeight});return window.addEventListener("resize",Y),()=>window.removeEventListener("resize",Y)},onMove(Z){if(Q("window"))return U("craft:window:move",Z);return()=>{}},onClose(Z){if(Q("window"))return U("craft:window:close",()=>Z());return EZ("beforeunload",Z)},onMinimize(Z){if(Q("window"))return U("craft:window:minimize",()=>Z());if(typeof document>"u")return()=>{};let Y=()=>{if(document.visibilityState==="hidden")Z()};return document.addEventListener("visibilitychange",Y),()=>document.removeEventListener("visibilitychange",Y)},onRestore(Z){if(Q("window"))return U("craft:window:restore",()=>Z());if(typeof document>"u")return()=>{};let Y=()=>{if(document.visibilityState==="visible")Z()};return document.addEventListener("visibilitychange",Y),()=>document.removeEventListener("visibilitychange",Y)}};function EZ(Z,Y){if(typeof window>"u")return()=>{};let $=()=>Y();return window.addEventListener(Z,$),()=>window.removeEventListener(Z,$)}var W4={name:"",version:"0.0.0"},l8={async hideDockIcon(){if(Q("app"))await window.craft.app.hideDockIcon()},async showDockIcon(){if(Q("app"))await window.craft.app.showDockIcon()},async quit(){if(Q("app"))await window.craft.app.quit()},async getInfo(){if(!Q("app"))return W4;let Z=await window.craft.app.getInfo();return{...W4,...Z||{}}},async notify(Z){if(!Z.title)throw Error("notify: title is required");if(Q("app"))await window.craft.app.notify(Z)},async setBadge(Z){if(Q("app"))await window.craft.app.setBadge(Z)},async bounce(Z="informational"){if(Q("app"))await window.craft.app.bounce(Z)}};var d8={app(Z){return{label:Z,items:[{label:`About ${Z}`,role:"about"},{separator:!0},{label:`Hide ${Z}`,role:"hide",shortcut:"cmd+h"},{label:"Hide Others",role:"hideOthers",shortcut:"cmd+alt+h"},{label:"Show All",role:"showAll"},{separator:!0},{label:`Quit ${Z}`,role:"quit",shortcut:"cmd+q"}]}},edit(){return{label:"Edit",items:[{label:"Undo",role:"undo",shortcut:"cmd+z"},{label:"Redo",role:"redo",shortcut:"cmd+shift+z"},{separator:!0},{label:"Cut",role:"cut",shortcut:"cmd+x"},{label:"Copy",role:"copy",shortcut:"cmd+c"},{label:"Paste",role:"paste",shortcut:"cmd+v"},{label:"Select All",role:"selectAll",shortcut:"cmd+a"}]}},window(){return{label:"Window",items:[{label:"Minimize",role:"minimize",shortcut:"cmd+m"},{label:"Zoom",role:"zoom"},{separator:!0},{label:"Close Window",role:"close",shortcut:"cmd+w"}]}},leading(Z){return[this.app(Z),this.edit()]}},r8=0;function n8(Z){let Y=new Map;return{payload:{menus:Z.menus.map((J)=>({label:J.label,items:J.items.map((G)=>{let{onClick:X,...R}=G;if(R.separator)return R;let z=R.id??`stx.menu.${r8++}`;if(X)Y.set(z,X);return{...R,id:z}})}))},handlers:Y}}var AZ=null,o8={async set(Z){if(!Q("menu"))return!1;let{payload:Y,handlers:$}=n8(Z);if(AZ?.(),AZ=null,$.size>0)AZ=U("craft:menu:action",(J)=>{$.get(J.id)?.()});return await window.craft.menu.set(Y),!0},async setDock(Z){if(Q("menu"))await window.craft.menu.setDock(Z)},async addItem(Z,Y){if(Q("menu"))await window.craft.menu.addItem(Z,Y)},async removeItem(Z){if(Q("menu"))await window.craft.menu.removeItem(Z)},async enableItem(Z){if(Q("menu"))await window.craft.menu.enableItem(Z)},async disableItem(Z){if(Q("menu"))await window.craft.menu.disableItem(Z)},async checkItem(Z){if(Q("menu"))await window.craft.menu.checkItem(Z)},async uncheckItem(Z){if(Q("menu"))await window.craft.menu.uncheckItem(Z)},async setItemLabel(Z,Y){if(Q("menu"))await window.craft.menu.setItemLabel(Z,Y)},async clearDock(){if(Q("menu"))await window.craft.menu.clearDock()},onAction(Z){return U("craft:menu:action",Z)}};function M4(Z){if(Z.separator)return{id:Z.id||"",title:"",type:"separator"};return{id:Z.id||"",title:Z.title||"",icon:Z.icon,shortcut:Z.shortcut,enabled:Z.disabled?!1:void 0,checked:Z.checked?!0:void 0,type:Z.submenu?"submenu":void 0,submenu:Z.submenu?.map(M4)}}async function D4(Z){if(!Z.items||Z.items.length===0)throw Error("contextMenu.show requires at least one item");if(!Q("nativeUI"))return null;let Y=await window.craft.nativeUI.showContextMenu({targetId:Z.targetId||"",targetType:"general",x:Math.round(Z.x),y:Math.round(Z.y),items:Z.items.map(M4)});return{id:typeof Y?.id==="string"?Y.id:null,targetId:Y?.targetId}}var a8={available(){return Q("nativeUI")},async show(Z){return await D4(Z)!==null},async pick(Z){return(await D4(Z))?.id??null},onAction(Z){return U("craft:contextmenu:action",(Y)=>{if(typeof Y.id==="string")Z({id:Y.id,targetId:Y.targetId??""})})}};function kZ(Z){if(Z===null||Z===void 0||Z===0)return"";return String(Z)}function _4(Z){return Z.map((Y)=>({id:Y.id,header:Y.header,items:Y.items.map(($)=>({id:$.id,label:$.label,icon:$.icon,badge:kZ($.badge)||void 0}))}))}function T4(Z){return JSON.stringify(Z.map((Y)=>[Y.id,Y.header??"",Y.items.map(($)=>[$.id,$.label,$.icon??""])]))}function N4(Z){return new Map(Z.flatMap((Y)=>Y.items.map(($)=>[$.id,kZ($.badge)])))}var E4={available(){return Q("nativeUI")&&typeof window.craft?.nativeUI?._emitSidebarSelect==="function"},create(Z){if(!E4.available())return null;let Y=window.craft.nativeUI.createSidebar({id:Z.id,sections:_4(Z.sections),selected:Z.selected}),$=Z.sections,J=new Set;return Y.onSelect((G)=>{for(let X of[...J])X(G)}),{id:Y.id,update(G){if(T4(G)===T4($)){let X=N4($);for(let[R,z]of N4(G))if(X.get(R)!==z)Y.updateItem(R,{badge:z})}else Y.setSections(_4(G));$=G},updateItem(G,X){Y.updateItem(G,{...X.label!==void 0?{label:X.label}:{},...X.icon!==void 0?{icon:X.icon}:{},..."badge"in X?{badge:kZ(X.badge)}:{}}),$=$.map((R)=>({...R,items:R.items.map((z)=>z.id===G?{...z,...X}:z)}))},select(G){Y.setSelectedItem(G)},onSelect(G){return J.add(G),()=>J.delete(G)},destroy(){J.clear(),Y.destroy()}}}};var i8={accentColor:()=>x("system","accentColor",()=>""),highlightColor:()=>x("system","highlightColor",()=>""),language:()=>x("system","language",()=>{if(typeof navigator>"u")return"";return navigator.language?.split("-")[0]||""}),locale:()=>x("system","locale",()=>{if(typeof navigator>"u")return"";return navigator.language||""}),timezone:()=>x("system","timezone",()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone||""}catch{return""}}),is24HourTime:()=>x("system","is24HourTime",()=>{try{let Z=new Intl.DateTimeFormat([],{hour:"numeric"}).resolvedOptions();return Z.hourCycle==="h23"||Z.hourCycle==="h24"}catch{return!1}}),reduceMotion:()=>x("system","reduceMotion",()=>HZ("(prefers-reduced-motion: reduce)")),reduceTransparency:()=>x("system","reduceTransparency",()=>HZ("(prefers-reduced-transparency: reduce)")),increaseContrast:()=>x("system","increaseContrast",()=>HZ("(prefers-contrast: more)")),systemVersion:()=>x("system","systemVersion",()=>""),hostname:()=>x("system","hostname",()=>""),username:()=>x("system","username",()=>""),async openPreferences(){if(Q("system"))await window.craft.system.openPreferences()}};async function x(Z,Y,$){if(Q(Z))return await window.craft[Z][Y]();return await $()}function HZ(Z){if(typeof window>"u"||!window.matchMedia)return!1;return window.matchMedia(Z).matches}var s8={async getDisplays(){if(Q("screen"))return await window.craft.screen.getDisplays();return A4()},async getPrimary(){if(Q("screen")){let Z=await window.craft.screen.getPrimary();return Z&&typeof Z.width==="number"?Z:null}return A4()[0]??null},onChange(Z){if(Q("screen"))return U("craft:screen:change",()=>Z());if(typeof window>"u")return()=>{};let Y=()=>Z();return window.addEventListener("resize",Y),()=>window.removeEventListener("resize",Y)}};function A4(){if(typeof window>"u"||!window.screen)return[];let Z=window.screen;return[{id:0,x:Z.left??0,y:Z.top??0,width:Z.width||0,height:Z.height||0,workX:Z.availLeft??0,workY:Z.availTop??0,workWidth:Z.availWidth??Z.width??0,workHeight:Z.availHeight??Z.height??0,scaleFactor:window.devicePixelRatio||1}]}var t8={async set(Z,Y,$){if(!Z)throw Error("keychain.set: service is required");if(!Y)throw Error("keychain.set: account is required");await M("keychain").set(Z,Y,$)},async get(Z,Y){if(!Z)throw Error("keychain.get: service is required");if(!Y)throw Error("keychain.get: account is required");let $=await M("keychain").get(Z,Y);return typeof $==="string"?$:null},async delete(Z,Y){if(!Z)throw Error("keychain.delete: service is required");if(!Y)throw Error("keychain.delete: account is required");await M("keychain").delete(Z,Y)},async has(Z,Y){if(!Z)throw Error("keychain.has: service is required");if(!Y)throw Error("keychain.has: account is required");return await M("keychain").has(Z,Y)}};var e8={async check(Z){if(Q("permissions"))return await window.craft.permissions.check(Z);return await k4(Z)},async request(Z){if(Q("permissions"))return await window.craft.permissions.request(Z);return await Z9(Z)},async openSettings(Z){if(Q("permissions"))await window.craft.permissions.openSettings(Z)}};async function k4(Z){if(typeof navigator>"u"||!navigator.permissions?.query)return"not-supported";try{let Y=await navigator.permissions.query({name:Z});return Y9(Y.state)}catch{return"not-supported"}}async function Z9(Z){if(Z==="notifications"&&typeof window<"u"&&"Notification"in window){let Y=await window.Notification.requestPermission();return Y==="granted"?"granted":Y==="denied"?"denied":"undetermined"}return await k4(Z)}function Y9(Z){if(Z==="granted")return"granted";if(Z==="denied")return"denied";if(Z==="prompt")return"undetermined";return"undetermined"}var $9={async print(){if(Q("printing")){await window.craft.printing.print();return}if(typeof window<"u"&&typeof window.print==="function")window.print()},async printToPDF(Z){if(!Z)throw Error("printToPDF: path is required");let Y=Z.startsWith("/"),$=/^[a-zA-Z]:[\\/]/.test(Z)||Z.startsWith("\\\\");if(!Y&&!$)throw Error("printToPDF: path must be absolute");let J=await M("printing").printToPDF(Z);return{ok:!!(J&&J.ok),path:J?.path}}};var J9={async enable(){if(!Q("autoLaunch"))return!1;return await window.craft.autoLaunch.enable()},async disable(){if(!Q("autoLaunch"))return!1;return await window.craft.autoLaunch.disable()},async isEnabled(){if(!Q("autoLaunch"))return!1;return await window.craft.autoLaunch.isEnabled()}};function xZ(){if(!Q("window"))return null;return window.craft.window}function f(Z){let Y=xZ();if(!Y)return Promise.resolve();try{return Promise.resolve(Z(Y)).then(()=>{return},()=>{return})}catch{return Promise.resolve()}}var G9={get available(){return xZ()!==null},open(Z){let Y=()=>{if(typeof window<"u"&&Z.url)window.open(Z.url,Z.name);return{name:Z.name}},$=xZ();if(!$?.open)return Promise.resolve(Y());return $.open(Z).then((J)=>({name:J?.name||Z.name})).catch(Y)},close:()=>f((Z)=>Z.close?.()),focus:()=>f((Z)=>Z.focus?.()),minimize:()=>f((Z)=>Z.minimize?.()),maximize:()=>f((Z)=>Z.maximize?.()),center:()=>f((Z)=>Z.center?.()),startDrag:()=>f((Z)=>Z.startDrag?.()),setTitle:(Z)=>f((Y)=>Y.setTitle?.(Z)),setSize:(Z,Y)=>f(($)=>$.setSize?.(Z,Y)),setAppearance:(Z)=>f((Y)=>Y.setAppearance?.(Z))};var Q9={async addItem(Z){if(Q("touchbar"))await window.craft.touchbar.addItem(Z)},async removeItem(Z){if(Q("touchbar"))await window.craft.touchbar.removeItem(Z)},async updateItem(Z,Y){if(Q("touchbar"))await window.craft.touchbar.updateItem(Z,Y)},async setLabel(Z,Y){if(Q("touchbar"))await window.craft.touchbar.setLabel(Z,Y)},async setIcon(Z,Y){if(Q("touchbar"))await window.craft.touchbar.setIcon(Z,Y)},async setEnabled(Z,Y){if(Q("touchbar"))await window.craft.touchbar.setEnabled(Z,Y)},async setSliderValue(Z,Y){if(Q("touchbar"))await window.craft.touchbar.setSliderValue(Z,Y)},async clear(){if(Q("touchbar"))await window.craft.touchbar.clear()},async show(){if(Q("touchbar"))await window.craft.touchbar.show()},async hide(){if(Q("touchbar"))await window.craft.touchbar.hide()},onAction(Z){return U("craft:touchbar:action",Z)}};var X9=/^[\da-f]*$/i;function z9(Z,Y){if(typeof Y!=="string"||!X9.test(Y)||Y.length%2!==0)throw Error(`${Z}: must be a hex string with even length, got ${JSON.stringify(Y)}`)}var R9={async isEnabled(){return Q("bluetooth")?await window.craft.bluetooth.isEnabled():!1},async powerState(){return Q("bluetooth")?await window.craft.bluetooth.powerState():"unknown"},async connectedDevices(){return Q("bluetooth")?await window.craft.bluetooth.connectedDevices():[]},async pairedDevices(){return Q("bluetooth")?await window.craft.bluetooth.pairedDevices():[]},async startDiscovery(){if(Q("bluetooth"))await window.craft.bluetooth.startDiscovery()},async stopDiscovery(){if(Q("bluetooth"))await window.craft.bluetooth.stopDiscovery()},async isDiscovering(){return Q("bluetooth")?await window.craft.bluetooth.isDiscovering():!1},async connect(Z){if(Q("bluetooth"))await window.craft.bluetooth.connect(Z)},async disconnect(Z){if(Q("bluetooth"))await window.craft.bluetooth.disconnect(Z)},async openPreferences(){if(Q("bluetooth"))await window.craft.bluetooth.openPreferences()},async discoverServices(Z){if(!Z)throw Error("bluetooth.discoverServices: deviceId is required");if(!Q("bluetooth"))return[];let Y=await window.craft.bluetooth.discoverServices(Z);return Array.isArray(Y)?Y:[]},async discoverCharacteristics(Z,Y){if(!Z||!Y)throw Error("bluetooth.discoverCharacteristics: deviceId and serviceUuid are required");if(!Q("bluetooth"))return[];let $=await window.craft.bluetooth.discoverCharacteristics(Z,Y);return Array.isArray($)?$:[]},async readCharacteristic(Z,Y,$){if(!Z||!Y||!$)throw Error("bluetooth.readCharacteristic: deviceId, serviceUuid, characteristicUuid are required");if(!Q("bluetooth"))return{ok:!1,reason:"bridge unavailable"};return await window.craft.bluetooth.readCharacteristic(Z,Y,$)},async writeCharacteristic(Z,Y,$,J,G="with-response"){if(!Z||!Y||!$)throw Error("bluetooth.writeCharacteristic: deviceId, serviceUuid, characteristicUuid are required");if(z9("bluetooth.writeCharacteristic.valueHex",J),!Q("bluetooth"))return{ok:!1,reason:"bridge unavailable"};return await window.craft.bluetooth.writeCharacteristic(Z,Y,$,J,G)},async setCharacteristicNotify(Z,Y,$,J){if(!Z||!Y||!$)throw Error("bluetooth.setCharacteristicNotify: deviceId, serviceUuid, characteristicUuid are required");if(!Q("bluetooth"))return{ok:!1,reason:"bridge unavailable"};return await window.craft.bluetooth.setCharacteristicNotify(Z,Y,$,J)},onDeviceFound(Z){return U("craft:bluetooth:deviceFound",Z)},onDeviceConnected(Z){return U("craft:bluetooth:deviceConnected",Z)},onDeviceDisconnected(Z){return U("craft:bluetooth:deviceDisconnected",Z)},onCharacteristicValue(Z){return U("craft:bluetooth:characteristicValue",Z)}};var K9={async speak(Z,Y){if(!Z)throw Error("speech.speak: text is required");if(Q("speech")){await window.craft.speech.speak(Z,Y);return}if(typeof window<"u"&&window.speechSynthesis){let $=new window.SpeechSynthesisUtterance(Z);if(Y){if(Y.rate!=null)$.rate=Y.rate;if(Y.pitch!=null)$.pitch=Y.pitch;if(Y.volume!=null)$.volume=Y.volume;if(Y.voice){let G=window.speechSynthesis.getVoices().find((X)=>X.voiceURI===Y.voice||X.name===Y.voice||X.lang===Y.voice);if(G)$.voice=G}}window.speechSynthesis.speak($)}},async stop(){if(Q("speech")){await window.craft.speech.stop();return}if(typeof window<"u"&&window.speechSynthesis)window.speechSynthesis.cancel()},async pause(){if(Q("speech")){await window.craft.speech.pause();return}if(typeof window<"u"&&window.speechSynthesis)window.speechSynthesis.pause()},async resume(){if(Q("speech")){await window.craft.speech.resume();return}if(typeof window<"u"&&window.speechSynthesis)window.speechSynthesis.resume()},async isSpeaking(){if(Q("speech"))return await window.craft.speech.isSpeaking();if(typeof window<"u"&&window.speechSynthesis)return!!window.speechSynthesis.speaking;return!1},async getVoices(){if(Q("speech"))return await window.craft.speech.getVoices();if(typeof window<"u"&&window.speechSynthesis)return window.speechSynthesis.getVoices().map((Y)=>({id:Y.voiceURI||Y.name,name:Y.name,language:Y.lang||"",quality:"default"}));return[]}};var i=[],CZ=!0,IZ,SZ,s={async report(Z){if(Q("crashReporter")){await window.craft.crashReporter.report(Z);return}if(!CZ)return;let Y=Z instanceof Error?{timestamp:Date.now(),severity:"error",message:Z.message,source:"js",stack:Z.stack||"",userId:IZ,appVersion:SZ}:{timestamp:Date.now(),severity:Z.severity||"error",message:Z.message||"",source:Z.source||"js",stack:Z.stack||"",userId:IZ,appVersion:SZ};if(i.length>=64)i.shift();i.push(Y)},async flush(){if(Q("crashReporter"))return await window.craft.crashReporter.flush();return[...i]},async clear(){if(Q("crashReporter")){await window.craft.crashReporter.clear();return}i.length=0},async setEnabled(Z){if(Q("crashReporter")){await window.craft.crashReporter.setEnabled(Z);return}CZ=Z},async isEnabled(){if(Q("crashReporter"))return await window.craft.crashReporter.isEnabled();return CZ},async setUser(Z){if(Q("crashReporter")){await window.craft.crashReporter.setUser(Z);return}IZ=Z||void 0},async setAppVersion(Z){if(Q("crashReporter")){await window.craft.crashReporter.setAppVersion(Z);return}SZ=Z||void 0},attachGlobalHandlers(){if(Q("crashReporter")&&window.craft.crashReporter.attachGlobalHandlers)return window.craft.crashReporter.attachGlobalHandlers();if(typeof window>"u")return()=>{};let Z=($)=>{s.report({severity:"error",message:$.message,source:"js",stack:$.error?.stack||`${$.message}
|
|
894
|
+
`).trim()}var A8={async show(Z){if(!Z.title)throw Error("notification title is required");if(Q("notifications")){await window.craft.notifications.show(Z);return}if(typeof window<"u"&&"Notification"in window){let Y=window.Notification;if(Y.permission==="granted")new Y(Z.title,{body:Z.body,icon:Z.icon});else if(Y.permission==="default"){if(await Y.requestPermission()==="granted")new Y(Z.title,{body:Z.body,icon:Z.icon})}}},async schedule(Z){if(Q("notifications")){let J={...Z};if(J.triggerAt instanceof Date)J.triggerAt=J.triggerAt.toISOString();await window.craft.notifications.schedule(J);return}let Y=k8(Z.triggerAt),$=Math.max(0,Y-Date.now());setTimeout(()=>{this.show(Z).catch(()=>{})},$)},async cancel(Z){if(Q("notifications"))await window.craft.notifications.cancel(Z)},async cancelAll(){if(Q("notifications"))await window.craft.notifications.cancelAll()},async setBadge(Z){let Y=Math.max(0,Math.round(Number.isFinite(Z)?Z:0));if(Q("notifications")){await window.craft.notifications.setBadge(Y);return}if(typeof navigator<"u"&&navigator.setAppBadge)try{await navigator.setAppBadge(Y)}catch{}},async clearBadge(){if(Q("notifications")){await window.craft.notifications.clearBadge();return}if(typeof navigator<"u"&&navigator.clearAppBadge)try{await navigator.clearAppBadge()}catch{}},async requestPermission(){if(Q("notifications"))return await window.craft.notifications.requestPermission();if(typeof window<"u"&&"Notification"in window){let Z=window.Notification;if(Z.permission==="granted")return!0;if(Z.permission==="denied")return!1;return await Z.requestPermission()==="granted"}return!1},async registerCategories(Z){if(!Array.isArray(Z)||Z.length===0)return;if(Q("notifications")){let Y=window.craft.notifications.registerCategories;if(typeof Y==="function")await Y(Z)}},onActionClicked(Z){return U("craft:notification:actionClicked",Z)},onReply(Z){return U("craft:notification:reply",Z)}};function k8(Z){if(Z==null)return Date.now();if(Z instanceof Date)return Z.getTime();if(typeof Z==="number")return Z;let Y=Date.parse(Z);return Number.isNaN(Y)?Date.now():Y}var H8={async readFile(Z){let Y=await M("fs").readFile(Z);return Y&&Y.data||""},async readBuffer(Z){let Y=await M("fs").readFile(Z),$=Y&&Y.data||"";if(Y&&Y.base64===!0)return C8($);return new TextEncoder().encode($)},async writeFile(Z,Y){await M("fs").writeFile(Z,Y)},async writeBuffer(Z,Y){let $=x8(Y),J=M("fs");if(typeof J.writeFileBytes==="function")await J.writeFileBytes(Z,$);else await J.writeFile(Z,$)},async copy(Z,Y){if(Z===Y)throw Error("fs.copy: source and destination must differ");await M("fs").copy(Z,Y)},async move(Z,Y){if(Z===Y)throw Error("fs.move: source and destination must differ");await M("fs").move(Z,Y)},async appendFile(Z,Y){await M("fs").appendFile(Z,Y)},async deleteFile(Z){await M("fs").deleteFile(Z)},async exists(Z){return await M("fs").exists(Z)},async stat(Z){return I8(await M("fs").stat(Z))},async readDir(Z){let Y=await M("fs").readDir(Z),$=Y&&Y.entries||[],J=Z.endsWith("/")?Z.slice(0,-1):Z;return $.map((G)=>({name:G.name,path:`${J}/${G.name}`,isDirectory:!!G.isDirectory}))},async mkdir(Z,Y){await M("fs").mkdir(Z,Y)},async rmdir(Z,Y){await M("fs").rmdir(Z,Y)},async watch(Z,Y){await M("fs").watch(Z,Y)},async unwatch(Z){await M("fs").unwatch(Z)},onChange(Z){return U("craft:fs:change",Z)},async watchTree(Z,Y,$){let J=`watch-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,G=M("fs");await G.watch(Z,J,{recursive:!!Y.recursive});let X=Y.kinds&&Y.kinds.length>0?new Set(Y.kinds):null,R=Math.max(0,Math.floor(Y.coalesceMs??0)),z=[],K=null,F=!1,O=()=>{if(K=null,z.length===0)return;let j=z;z=[];try{$(j)}catch{}},V=U("craft:fs:change",(j)=>{if(F)return;if(j.id!==J)return;if(X&&j.kind&&!X.has(j.kind))return;if(z.push(j),R===0){O();return}if(K==null)K=setTimeout(O,R)});return{id:J,async stop(){if(F)return;if(F=!0,V(),K)clearTimeout(K),K=null;if(z.length>0)O();try{await G.unwatch(J)}catch{}}}},async homeDir(){return await M("fs").homeDir()},async tempDir(){return await M("fs").tempDir()},async appDataDir(){return await M("fs").appDataDir()}};function x8(Z){let Y="";for(let $=0;$<Z.length;$++)Y+=String.fromCharCode(Z[$]);return typeof btoa==="function"?btoa(Y):Buffer.from(Z).toString("base64")}function C8(Z){let Y=typeof atob==="function"?atob(Z):Buffer.from(Z,"base64").toString("binary"),$=new Uint8Array(Y.length);for(let J=0;J<Y.length;J++)$[J]=Y.charCodeAt(J);return $}function I8(Z){return{isFile:!!Z.isFile,isDirectory:!!Z.isDirectory,isSymlink:!!Z.isSymlink,size:Number(Z.size)||0,modifiedAt:Z.modifiedAt!=null?Z.modifiedAt<1000000000000?Z.modifiedAt*1000:Z.modifiedAt:0}}var a=new Set,U4=!1;function S8(){if(U4)return;if(typeof window>"u"||typeof window.addEventListener!=="function")return;window.addEventListener("craft:shell:exit",(Z)=>{let Y=Z.detail;if(Y?.id)a.delete(Y.id)}),U4=!0}var w8=new Set(["javascript:","data:","file:","vbscript:"]),B8={async openExternal(Z){let Y=Z.trim().toLowerCase();for(let $ of w8)if(Y.startsWith($))throw Error(`shell.openExternal: ${$} URLs are blocked for safety`);if(Q("shell")){await window.craft.shell.openExternal(Z);return}if(typeof window<"u"&&typeof window.open==="function")window.open(Z,"_blank","noopener,noreferrer")},async openPath(Z){await M("shell").openPath(Z)},async showInFinder(Z){await M("shell").showInFinder(Z)},async spawn(Z,Y,$=[],J={}){if(S8(),!Z||typeof Z!=="string")throw Error("shell.spawn: id must be a non-empty string");if(!Y||typeof Y!=="string")throw Error("shell.spawn: command must be a non-empty string");if(!Array.isArray($))throw Error("shell.spawn: args must be an array");for(let G of $)if(typeof G!=="string")throw Error("shell.spawn: args entries must be strings");if(a.has(Z))throw Error(`shell.spawn: id "${Z}" is already in use \u2014 call kill(id) first or pick a different id`);a.add(Z);try{await M("shell").spawn(Z,Y,$,J)}catch(G){throw a.delete(Z),G}},async kill(Z){await M("shell").kill(Z),a.delete(Z)},async getEnv(Z){if(Q("shell")){let Y=await window.craft.shell.getEnv(Z);return Y==null?void 0:String(Y)}return},async setEnv(Z,Y){await M("shell").setEnv(Z,Y)},onStdout(Z){return U("craft:shell:stdout",Z)},onStderr(Z){return U("craft:shell:stderr",Z)},onExit(Z){return U("craft:shell:exit",Z)}};function u(){return window.craft.shortcuts}var f8={async register(Z,Y,$){if(!Q("shortcuts"))return;await u().register(Z,Y,$)},async unregister(Z){if(!Q("shortcuts"))return;await u().unregister(Z)},async unregisterAll(){if(!Q("shortcuts"))return;await u().unregisterAll()},async enable(Z){if(!Q("shortcuts"))return;await u().enable(Z)},async disable(Z){if(!Q("shortcuts"))return;await u().disable(Z)},async isRegistered(Z){if(!Q("shortcuts"))return!1;return await u().isRegistered(Z)},async list(){if(!Q("shortcuts"))return[];return await u().list()},on(Z){return U("craft:shortcut",Z)}};var v8={get(){if(Q("theme"))try{return window.craft.theme.get()}catch{}return{appearance:y8()}},onChange(Z){if(Z(this.get()),Q("theme"))return U("craft:theme",Z);if(typeof window<"u"&&window.matchMedia){let Y=window.matchMedia("(prefers-color-scheme: dark)"),$=()=>Z({appearance:Y.matches?"dark":"light"});return Y.addEventListener("change",$),()=>Y.removeEventListener("change",$)}return()=>{}},async current(){return this.get()}};function y8(){if(typeof window>"u"||!window.matchMedia)return"light";return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}async function g8(Z,Y={}){if(!Q("dragOut"))throw Error("dragOut requires a Craft native window");let $=Array.isArray(Z)?Z:[Z];if($.length===0)throw Error("dragOut: at least one path required");await window.craft.dragOut.start($,Y)}function b8(){return Q("dragOut")}var u8={onUrl(Z){if(!Q("deepLink"))return()=>{};return U("craft:deepLink",Z)},getInitialUrl(){if(typeof window>"u")return null;if(Q("deepLink"))try{return window.craft.deepLink.getInitialUrl()}catch{return null}return window.__craftPendingDeepLink||null},consumeInitialUrl(){let Z=this.getInitialUrl();if(typeof window<"u")window.__craftPendingDeepLink=void 0;return Z},isAvailable(){return Q("deepLink")}};var m8={async isCharging(){if(Q("power"))return await window.craft.power.isCharging();let Z=await RZ();return Z?!!Z.charging:!1},async isPluggedIn(){if(Q("power"))return await window.craft.power.isPluggedIn();let Z=await RZ();return Z?!!Z.charging||Z.level>=0.999:!1},async isLowPowerMode(){if(Q("power"))return await window.craft.power.isLowPowerMode();return!1},async level(){if(Q("power")){let Y=await window.craft.power.batteryLevel();return typeof Y==="number"?Y:null}let Z=await RZ();return Z?Z.level:null},async timeRemaining(){if(Q("power")){let $=await window.craft.power.timeRemaining();return typeof $==="number"?$:null}let Z=await RZ();if(!Z)return null;let Y=Z.charging?Z.chargingTime:Z.dischargingTime;return Number.isFinite(Y)?Math.round(Y/60):null},async thermalState(){if(Q("power"))return await window.craft.power.thermalState()||"unknown";return"unknown"},async uptimeSeconds(){if(Q("power"))return await window.craft.power.uptimeSeconds();if(typeof performance<"u"&&typeof performance.now==="function")return Math.round(performance.now()/1000);return 0},async preventSleep(Z="app is busy"){if(Q("power")){await window.craft.power.preventSleep(Z);return}if(typeof navigator>"u"||!navigator.wakeLock)return;let Y=window;if(Y.__craftWebWakeLock?.release){try{await Y.__craftWebWakeLock.release()}catch{}Y.__craftWebWakeLock=null}try{let $=await navigator.wakeLock.request("screen");Y.__craftWebWakeLock=$}catch{}},async allowSleep(){if(Q("power")){await window.craft.power.allowSleep();return}let Z=window.__craftWebWakeLock;if(Z&&typeof Z.release==="function"){try{await Z.release()}catch{}window.__craftWebWakeLock=null}},onSleep(Z){return U("craft:powerSleep",Z)},onWake(Z){return U("craft:powerWake",Z)}};async function RZ(){if(typeof navigator>"u")return null;let Z=navigator;if(typeof Z.getBattery!=="function")return null;try{return await Z.getBattery()}catch{return null}}var h8={async connectionType(){if(Q("network"))return await window.craft.network.connectionType();return P4()},async wifiSSID(){if(Q("network"))return await window.craft.network.wifiSSID()||void 0;return},async wifiSignalStrength(){if(Q("network")){let Z=await window.craft.network.wifiSignalStrength();return typeof Z==="number"?Z:void 0}return},async ipAddress(){if(Q("network"))return await window.craft.network.ipAddress();return""},async macAddress(){if(Q("network"))return await window.craft.network.macAddress();return""},async interfaces(){if(Q("network"))return await window.craft.network.interfaces();return[]},async isVPNConnected(){if(Q("network"))return await window.craft.network.isVPNConnected();return!1},async proxySettings(){if(Q("network"))return await window.craft.network.proxySettings()||{};return{}},async openPreferences(){if(Q("network"))await window.craft.network.openPreferences()},onChange(Z){if(Q("network"))return U("craft:networkChange",Z);if(typeof window>"u")return()=>{};let Y=()=>Z({type:P4(),online:!0}),$=()=>Z({type:"none",online:!1});return window.addEventListener("online",Y),window.addEventListener("offline",$),()=>{window.removeEventListener("online",Y),window.removeEventListener("offline",$)}}};function P4(){if(typeof navigator>"u")return"unknown";if(navigator.onLine===!1)return"none";let Z=navigator.connection;if(!Z)return"unknown";let Y=String(Z.type||Z.effectiveType||"unknown").toLowerCase();if(Y==="wifi"||Y==="cellular"||Y==="ethernet"||Y==="bluetooth"||Y==="none")return Y;return"unknown"}var c8={async checkForUpdates(){if(!Q("updater"))return;await window.craft.updater.checkForUpdates()},async checkInBackground(){if(!Q("updater"))return;await window.craft.updater.checkInBackground()},async setAutomaticChecks(Z){if(!Q("updater"))return;await window.craft.updater.setAutomaticChecks(Z)},async setCheckInterval(Z){if(!Q("updater"))return;if(!Number.isFinite(Z))throw Error("setCheckInterval: must be a finite number");let Y=Z<=0?0:Math.max(60,Math.round(Z));await window.craft.updater.setCheckInterval(Y)},async setFeedURL(Z){if(!Q("updater"))return;await window.craft.updater.setFeedURL(Z)},async getLastUpdateCheckDate(){if(!Q("updater"))return null;return await window.craft.updater.getLastUpdateCheckDate()||null},async getUpdateInfo(){if(!Q("updater"))return null;let Z=await window.craft.updater.getUpdateInfo();if(!Z||typeof Z.version!=="string"||Z.version.length===0)return null;return Z},onAvailable(Z){return U("craft:updateAvailable",Z)},onDownloaded(Z){return U("craft:updateDownloaded",Z)},async verifySignature({payload:Z,signatureB64:Y,publicKeyB64:$}){let J=L4(Z),G;try{G=await crypto.subtle.importKey("raw",KZ($),{name:"Ed25519"},!1,["verify"])}catch{return!1}try{return await crypto.subtle.verify("Ed25519",G,KZ(Y),J)}catch{return!1}},async verifyDownload({url:Z,signatureB64:Y,publicKeyB64:$,fetchInit:J}){let G;try{G=await fetch(Z,J)}catch{return{ok:!1,reason:"fetch-failed"}}if(!G.ok)return{ok:!1,reason:"http-error",status:G.status};let X=new Uint8Array(await G.arrayBuffer()),R;try{R=await crypto.subtle.importKey("raw",KZ($),{name:"Ed25519"},!1,["verify"])}catch{return{ok:!1,reason:"bad-key"}}let z=!1;try{z=await crypto.subtle.verify("Ed25519",R,KZ(Y),L4(X))}catch{z=!1}if(!z)return{ok:!1,reason:"bad-signature"};return{ok:!0,payload:X}}};function L4(Z){if(Z instanceof ArrayBuffer)return new Uint8Array(Z);let Y=new ArrayBuffer(Z.byteLength),$=new Uint8Array(Y);return $.set(Z),$}function KZ(Z){if(typeof atob==="function"){let J=atob(Z),G=new ArrayBuffer(J.length),X=new Uint8Array(G);for(let R=0;R<J.length;R++)X[R]=J.charCodeAt(R);return X}let Y=Buffer.from(Z,"base64"),$=new ArrayBuffer(Y.length);return new Uint8Array($).set(Y),new Uint8Array($)}var p8={onFocus(Z){if(Q("window"))return U("craft:window:focus",()=>Z());return EZ("focus",Z)},onBlur(Z){if(Q("window"))return U("craft:window:blur",()=>Z());return EZ("blur",Z)},onResize(Z){if(Q("window"))return U("craft:window:resize",Z);if(typeof window>"u")return()=>{};let Y=()=>Z({width:window.innerWidth,height:window.innerHeight});return window.addEventListener("resize",Y),()=>window.removeEventListener("resize",Y)},onMove(Z){if(Q("window"))return U("craft:window:move",Z);return()=>{}},onClose(Z){if(Q("window"))return U("craft:window:close",()=>Z());return EZ("beforeunload",Z)},onMinimize(Z){if(Q("window"))return U("craft:window:minimize",()=>Z());if(typeof document>"u")return()=>{};let Y=()=>{if(document.visibilityState==="hidden")Z()};return document.addEventListener("visibilitychange",Y),()=>document.removeEventListener("visibilitychange",Y)},onRestore(Z){if(Q("window"))return U("craft:window:restore",()=>Z());if(typeof document>"u")return()=>{};let Y=()=>{if(document.visibilityState==="visible")Z()};return document.addEventListener("visibilitychange",Y),()=>document.removeEventListener("visibilitychange",Y)}};function EZ(Z,Y){if(typeof window>"u")return()=>{};let $=()=>Y();return window.addEventListener(Z,$),()=>window.removeEventListener(Z,$)}var W4={name:"",version:"0.0.0"},l8={async hideDockIcon(){if(Q("app"))await window.craft.app.hideDockIcon()},async showDockIcon(){if(Q("app"))await window.craft.app.showDockIcon()},async quit(){if(Q("app"))await window.craft.app.quit()},async getInfo(){if(!Q("app"))return W4;let Z=await window.craft.app.getInfo();return{...W4,...Z||{}}},async notify(Z){if(!Z.title)throw Error("notify: title is required");if(Q("app"))await window.craft.app.notify(Z)},async setBadge(Z){if(Q("app"))await window.craft.app.setBadge(Z)},async bounce(Z="informational"){if(Q("app"))await window.craft.app.bounce(Z)}};var d8={app(Z,Y={}){return{label:Z,items:[{label:`About ${Z}`,role:"about"},{separator:!0},...Y.settings?[{id:"stx.menu.settings",label:"Settings\u2026",shortcut:"cmd+,",onClick:Y.settings},{separator:!0}]:[],{label:`Hide ${Z}`,role:"hide",shortcut:"cmd+h"},{label:"Hide Others",role:"hideOthers",shortcut:"cmd+alt+h"},{label:"Show All",role:"showAll"},{separator:!0},{label:`Quit ${Z}`,role:"quit",shortcut:"cmd+q"}]}},edit(){return{label:"Edit",items:[{label:"Undo",role:"undo",shortcut:"cmd+z"},{label:"Redo",role:"redo",shortcut:"cmd+shift+z"},{separator:!0},{label:"Cut",role:"cut",shortcut:"cmd+x"},{label:"Copy",role:"copy",shortcut:"cmd+c"},{label:"Paste",role:"paste",shortcut:"cmd+v"},{label:"Select All",role:"selectAll",shortcut:"cmd+a"}]}},window(){return{label:"Window",items:[{label:"Minimize",role:"minimize",shortcut:"cmd+m"},{label:"Zoom",role:"zoom"},{separator:!0},{label:"Close Window",role:"close",shortcut:"cmd+w"}]}},leading(Z,Y={}){return[this.app(Z,Y),this.edit()]}},r8=0;function n8(Z){let Y=new Map;return{payload:{menus:Z.menus.map((J)=>({label:J.label,items:J.items.map((G)=>{let{onClick:X,...R}=G;if(R.separator)return R;let z=R.id??`stx.menu.${r8++}`;if(X)Y.set(z,X);return{...R,id:z}})}))},handlers:Y}}var AZ=null,o8={async set(Z){if(!Q("menu"))return!1;let{payload:Y,handlers:$}=n8(Z);if(AZ?.(),AZ=null,$.size>0)AZ=U("craft:menu:action",(J)=>{$.get(J.id)?.()});return await window.craft.menu.set(Y),!0},async setDock(Z){if(Q("menu"))await window.craft.menu.setDock(Z)},async addItem(Z,Y){if(Q("menu"))await window.craft.menu.addItem(Z,Y)},async removeItem(Z){if(Q("menu"))await window.craft.menu.removeItem(Z)},async enableItem(Z){if(Q("menu"))await window.craft.menu.enableItem(Z)},async disableItem(Z){if(Q("menu"))await window.craft.menu.disableItem(Z)},async checkItem(Z){if(Q("menu"))await window.craft.menu.checkItem(Z)},async uncheckItem(Z){if(Q("menu"))await window.craft.menu.uncheckItem(Z)},async setItemLabel(Z,Y){if(Q("menu"))await window.craft.menu.setItemLabel(Z,Y)},async clearDock(){if(Q("menu"))await window.craft.menu.clearDock()},onAction(Z){return U("craft:menu:action",Z)}};function M4(Z){if(Z.separator)return{id:Z.id||"",title:"",type:"separator"};return{id:Z.id||"",title:Z.title||"",icon:Z.icon,shortcut:Z.shortcut,enabled:Z.disabled?!1:void 0,checked:Z.checked?!0:void 0,type:Z.submenu?"submenu":void 0,submenu:Z.submenu?.map(M4)}}async function D4(Z){if(!Z.items||Z.items.length===0)throw Error("contextMenu.show requires at least one item");if(!Q("nativeUI"))return null;let Y=await window.craft.nativeUI.showContextMenu({targetId:Z.targetId||"",targetType:"general",x:Math.round(Z.x),y:Math.round(Z.y),items:Z.items.map(M4)});return{id:typeof Y?.id==="string"?Y.id:null,targetId:Y?.targetId}}var a8={available(){return Q("nativeUI")},async show(Z){return await D4(Z)!==null},async pick(Z){return(await D4(Z))?.id??null},onAction(Z){return U("craft:contextmenu:action",(Y)=>{if(typeof Y.id==="string")Z({id:Y.id,targetId:Y.targetId??""})})}};function kZ(Z){if(Z===null||Z===void 0||Z===0)return"";return String(Z)}function _4(Z){return Z.map((Y)=>({id:Y.id,header:Y.header,items:Y.items.map(($)=>({id:$.id,label:$.label,icon:$.icon,badge:kZ($.badge)||void 0}))}))}function T4(Z){return JSON.stringify(Z.map((Y)=>[Y.id,Y.header??"",Y.items.map(($)=>[$.id,$.label,$.icon??""])]))}function N4(Z){return new Map(Z.flatMap((Y)=>Y.items.map(($)=>[$.id,kZ($.badge)])))}var E4={available(){return Q("nativeUI")&&typeof window.craft?.nativeUI?._emitSidebarSelect==="function"},create(Z){if(!E4.available())return null;let Y=window.craft.nativeUI.createSidebar({id:Z.id,sections:_4(Z.sections),selected:Z.selected}),$=Z.sections,J=new Set;return Y.onSelect((G)=>{for(let X of[...J])X(G)}),{id:Y.id,update(G){if(T4(G)===T4($)){let X=N4($);for(let[R,z]of N4(G))if(X.get(R)!==z)Y.updateItem(R,{badge:z})}else Y.setSections(_4(G));$=G},updateItem(G,X){Y.updateItem(G,{...X.label!==void 0?{label:X.label}:{},...X.icon!==void 0?{icon:X.icon}:{},..."badge"in X?{badge:kZ(X.badge)}:{}}),$=$.map((R)=>({...R,items:R.items.map((z)=>z.id===G?{...z,...X}:z)}))},select(G){Y.setSelectedItem(G)},onSelect(G){return J.add(G),()=>J.delete(G)},destroy(){J.clear(),Y.destroy()}}}};var i8={accentColor:()=>x("system","accentColor",()=>""),highlightColor:()=>x("system","highlightColor",()=>""),language:()=>x("system","language",()=>{if(typeof navigator>"u")return"";return navigator.language?.split("-")[0]||""}),locale:()=>x("system","locale",()=>{if(typeof navigator>"u")return"";return navigator.language||""}),timezone:()=>x("system","timezone",()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone||""}catch{return""}}),is24HourTime:()=>x("system","is24HourTime",()=>{try{let Z=new Intl.DateTimeFormat([],{hour:"numeric"}).resolvedOptions();return Z.hourCycle==="h23"||Z.hourCycle==="h24"}catch{return!1}}),reduceMotion:()=>x("system","reduceMotion",()=>HZ("(prefers-reduced-motion: reduce)")),reduceTransparency:()=>x("system","reduceTransparency",()=>HZ("(prefers-reduced-transparency: reduce)")),increaseContrast:()=>x("system","increaseContrast",()=>HZ("(prefers-contrast: more)")),systemVersion:()=>x("system","systemVersion",()=>""),hostname:()=>x("system","hostname",()=>""),username:()=>x("system","username",()=>""),async openPreferences(){if(Q("system"))await window.craft.system.openPreferences()}};async function x(Z,Y,$){if(Q(Z))return await window.craft[Z][Y]();return await $()}function HZ(Z){if(typeof window>"u"||!window.matchMedia)return!1;return window.matchMedia(Z).matches}var s8={async getDisplays(){if(Q("screen"))return await window.craft.screen.getDisplays();return A4()},async getPrimary(){if(Q("screen")){let Z=await window.craft.screen.getPrimary();return Z&&typeof Z.width==="number"?Z:null}return A4()[0]??null},onChange(Z){if(Q("screen"))return U("craft:screen:change",()=>Z());if(typeof window>"u")return()=>{};let Y=()=>Z();return window.addEventListener("resize",Y),()=>window.removeEventListener("resize",Y)}};function A4(){if(typeof window>"u"||!window.screen)return[];let Z=window.screen;return[{id:0,x:Z.left??0,y:Z.top??0,width:Z.width||0,height:Z.height||0,workX:Z.availLeft??0,workY:Z.availTop??0,workWidth:Z.availWidth??Z.width??0,workHeight:Z.availHeight??Z.height??0,scaleFactor:window.devicePixelRatio||1}]}var t8={async set(Z,Y,$){if(!Z)throw Error("keychain.set: service is required");if(!Y)throw Error("keychain.set: account is required");await M("keychain").set(Z,Y,$)},async get(Z,Y){if(!Z)throw Error("keychain.get: service is required");if(!Y)throw Error("keychain.get: account is required");let $=await M("keychain").get(Z,Y);return typeof $==="string"?$:null},async delete(Z,Y){if(!Z)throw Error("keychain.delete: service is required");if(!Y)throw Error("keychain.delete: account is required");await M("keychain").delete(Z,Y)},async has(Z,Y){if(!Z)throw Error("keychain.has: service is required");if(!Y)throw Error("keychain.has: account is required");return await M("keychain").has(Z,Y)}};var e8={async check(Z){if(Q("permissions"))return await window.craft.permissions.check(Z);return await k4(Z)},async request(Z){if(Q("permissions"))return await window.craft.permissions.request(Z);return await Z9(Z)},async openSettings(Z){if(Q("permissions"))await window.craft.permissions.openSettings(Z)}};async function k4(Z){if(typeof navigator>"u"||!navigator.permissions?.query)return"not-supported";try{let Y=await navigator.permissions.query({name:Z});return Y9(Y.state)}catch{return"not-supported"}}async function Z9(Z){if(Z==="notifications"&&typeof window<"u"&&"Notification"in window){let Y=await window.Notification.requestPermission();return Y==="granted"?"granted":Y==="denied"?"denied":"undetermined"}return await k4(Z)}function Y9(Z){if(Z==="granted")return"granted";if(Z==="denied")return"denied";if(Z==="prompt")return"undetermined";return"undetermined"}var $9={async print(){if(Q("printing")){await window.craft.printing.print();return}if(typeof window<"u"&&typeof window.print==="function")window.print()},async printToPDF(Z){if(!Z)throw Error("printToPDF: path is required");let Y=Z.startsWith("/"),$=/^[a-zA-Z]:[\\/]/.test(Z)||Z.startsWith("\\\\");if(!Y&&!$)throw Error("printToPDF: path must be absolute");let J=await M("printing").printToPDF(Z);return{ok:!!(J&&J.ok),path:J?.path}}};var J9={async enable(){if(!Q("autoLaunch"))return!1;return await window.craft.autoLaunch.enable()},async disable(){if(!Q("autoLaunch"))return!1;return await window.craft.autoLaunch.disable()},async isEnabled(){if(!Q("autoLaunch"))return!1;return await window.craft.autoLaunch.isEnabled()}};function xZ(){if(!Q("window"))return null;return window.craft.window}function f(Z){let Y=xZ();if(!Y)return Promise.resolve();try{return Promise.resolve(Z(Y)).then(()=>{return},()=>{return})}catch{return Promise.resolve()}}var G9={get available(){return xZ()!==null},open(Z){let Y=()=>{if(typeof window<"u"&&Z.url)window.open(Z.url,Z.name);return{name:Z.name}},$=xZ();if(!$?.open)return Promise.resolve(Y());return $.open(Z).then((J)=>({name:J?.name||Z.name})).catch(Y)},close:()=>f((Z)=>Z.close?.()),focus:()=>f((Z)=>Z.focus?.()),minimize:()=>f((Z)=>Z.minimize?.()),maximize:()=>f((Z)=>Z.maximize?.()),center:()=>f((Z)=>Z.center?.()),startDrag:()=>f((Z)=>Z.startDrag?.()),setTitle:(Z)=>f((Y)=>Y.setTitle?.(Z)),setSize:(Z,Y)=>f(($)=>$.setSize?.(Z,Y)),setAppearance:(Z)=>f((Y)=>Y.setAppearance?.(Z))};var Q9={async addItem(Z){if(Q("touchbar"))await window.craft.touchbar.addItem(Z)},async removeItem(Z){if(Q("touchbar"))await window.craft.touchbar.removeItem(Z)},async updateItem(Z,Y){if(Q("touchbar"))await window.craft.touchbar.updateItem(Z,Y)},async setLabel(Z,Y){if(Q("touchbar"))await window.craft.touchbar.setLabel(Z,Y)},async setIcon(Z,Y){if(Q("touchbar"))await window.craft.touchbar.setIcon(Z,Y)},async setEnabled(Z,Y){if(Q("touchbar"))await window.craft.touchbar.setEnabled(Z,Y)},async setSliderValue(Z,Y){if(Q("touchbar"))await window.craft.touchbar.setSliderValue(Z,Y)},async clear(){if(Q("touchbar"))await window.craft.touchbar.clear()},async show(){if(Q("touchbar"))await window.craft.touchbar.show()},async hide(){if(Q("touchbar"))await window.craft.touchbar.hide()},onAction(Z){return U("craft:touchbar:action",Z)}};var X9=/^[\da-f]*$/i;function z9(Z,Y){if(typeof Y!=="string"||!X9.test(Y)||Y.length%2!==0)throw Error(`${Z}: must be a hex string with even length, got ${JSON.stringify(Y)}`)}var R9={async isEnabled(){return Q("bluetooth")?await window.craft.bluetooth.isEnabled():!1},async powerState(){return Q("bluetooth")?await window.craft.bluetooth.powerState():"unknown"},async connectedDevices(){return Q("bluetooth")?await window.craft.bluetooth.connectedDevices():[]},async pairedDevices(){return Q("bluetooth")?await window.craft.bluetooth.pairedDevices():[]},async startDiscovery(){if(Q("bluetooth"))await window.craft.bluetooth.startDiscovery()},async stopDiscovery(){if(Q("bluetooth"))await window.craft.bluetooth.stopDiscovery()},async isDiscovering(){return Q("bluetooth")?await window.craft.bluetooth.isDiscovering():!1},async connect(Z){if(Q("bluetooth"))await window.craft.bluetooth.connect(Z)},async disconnect(Z){if(Q("bluetooth"))await window.craft.bluetooth.disconnect(Z)},async openPreferences(){if(Q("bluetooth"))await window.craft.bluetooth.openPreferences()},async discoverServices(Z){if(!Z)throw Error("bluetooth.discoverServices: deviceId is required");if(!Q("bluetooth"))return[];let Y=await window.craft.bluetooth.discoverServices(Z);return Array.isArray(Y)?Y:[]},async discoverCharacteristics(Z,Y){if(!Z||!Y)throw Error("bluetooth.discoverCharacteristics: deviceId and serviceUuid are required");if(!Q("bluetooth"))return[];let $=await window.craft.bluetooth.discoverCharacteristics(Z,Y);return Array.isArray($)?$:[]},async readCharacteristic(Z,Y,$){if(!Z||!Y||!$)throw Error("bluetooth.readCharacteristic: deviceId, serviceUuid, characteristicUuid are required");if(!Q("bluetooth"))return{ok:!1,reason:"bridge unavailable"};return await window.craft.bluetooth.readCharacteristic(Z,Y,$)},async writeCharacteristic(Z,Y,$,J,G="with-response"){if(!Z||!Y||!$)throw Error("bluetooth.writeCharacteristic: deviceId, serviceUuid, characteristicUuid are required");if(z9("bluetooth.writeCharacteristic.valueHex",J),!Q("bluetooth"))return{ok:!1,reason:"bridge unavailable"};return await window.craft.bluetooth.writeCharacteristic(Z,Y,$,J,G)},async setCharacteristicNotify(Z,Y,$,J){if(!Z||!Y||!$)throw Error("bluetooth.setCharacteristicNotify: deviceId, serviceUuid, characteristicUuid are required");if(!Q("bluetooth"))return{ok:!1,reason:"bridge unavailable"};return await window.craft.bluetooth.setCharacteristicNotify(Z,Y,$,J)},onDeviceFound(Z){return U("craft:bluetooth:deviceFound",Z)},onDeviceConnected(Z){return U("craft:bluetooth:deviceConnected",Z)},onDeviceDisconnected(Z){return U("craft:bluetooth:deviceDisconnected",Z)},onCharacteristicValue(Z){return U("craft:bluetooth:characteristicValue",Z)}};var K9={async speak(Z,Y){if(!Z)throw Error("speech.speak: text is required");if(Q("speech")){await window.craft.speech.speak(Z,Y);return}if(typeof window<"u"&&window.speechSynthesis){let $=new window.SpeechSynthesisUtterance(Z);if(Y){if(Y.rate!=null)$.rate=Y.rate;if(Y.pitch!=null)$.pitch=Y.pitch;if(Y.volume!=null)$.volume=Y.volume;if(Y.voice){let G=window.speechSynthesis.getVoices().find((X)=>X.voiceURI===Y.voice||X.name===Y.voice||X.lang===Y.voice);if(G)$.voice=G}}window.speechSynthesis.speak($)}},async stop(){if(Q("speech")){await window.craft.speech.stop();return}if(typeof window<"u"&&window.speechSynthesis)window.speechSynthesis.cancel()},async pause(){if(Q("speech")){await window.craft.speech.pause();return}if(typeof window<"u"&&window.speechSynthesis)window.speechSynthesis.pause()},async resume(){if(Q("speech")){await window.craft.speech.resume();return}if(typeof window<"u"&&window.speechSynthesis)window.speechSynthesis.resume()},async isSpeaking(){if(Q("speech"))return await window.craft.speech.isSpeaking();if(typeof window<"u"&&window.speechSynthesis)return!!window.speechSynthesis.speaking;return!1},async getVoices(){if(Q("speech"))return await window.craft.speech.getVoices();if(typeof window<"u"&&window.speechSynthesis)return window.speechSynthesis.getVoices().map((Y)=>({id:Y.voiceURI||Y.name,name:Y.name,language:Y.lang||"",quality:"default"}));return[]}};var i=[],CZ=!0,IZ,SZ,s={async report(Z){if(Q("crashReporter")){await window.craft.crashReporter.report(Z);return}if(!CZ)return;let Y=Z instanceof Error?{timestamp:Date.now(),severity:"error",message:Z.message,source:"js",stack:Z.stack||"",userId:IZ,appVersion:SZ}:{timestamp:Date.now(),severity:Z.severity||"error",message:Z.message||"",source:Z.source||"js",stack:Z.stack||"",userId:IZ,appVersion:SZ};if(i.length>=64)i.shift();i.push(Y)},async flush(){if(Q("crashReporter"))return await window.craft.crashReporter.flush();return[...i]},async clear(){if(Q("crashReporter")){await window.craft.crashReporter.clear();return}i.length=0},async setEnabled(Z){if(Q("crashReporter")){await window.craft.crashReporter.setEnabled(Z);return}CZ=Z},async isEnabled(){if(Q("crashReporter"))return await window.craft.crashReporter.isEnabled();return CZ},async setUser(Z){if(Q("crashReporter")){await window.craft.crashReporter.setUser(Z);return}IZ=Z||void 0},async setAppVersion(Z){if(Q("crashReporter")){await window.craft.crashReporter.setAppVersion(Z);return}SZ=Z||void 0},attachGlobalHandlers(){if(Q("crashReporter")&&window.craft.crashReporter.attachGlobalHandlers)return window.craft.crashReporter.attachGlobalHandlers();if(typeof window>"u")return()=>{};let Z=($)=>{s.report({severity:"error",message:$.message,source:"js",stack:$.error?.stack||`${$.message}
|
|
895
895
|
at ${$.filename}:${$.lineno}:${$.colno}`}).catch(()=>{})},Y=($)=>{let J=$.reason;s.report({severity:"error",message:J?.message||String(J),source:"js",stack:J?.stack||""}).catch(()=>{})};return window.addEventListener("error",Z),window.addEventListener("unhandledrejection",Y),()=>{window.removeEventListener("error",Z),window.removeEventListener("unhandledrejection",Y)}},forwardTo(Z){return U9(Z)}},F9="craft:crashReporter:pending",j9=/[\w.+-]+@[\w-]+\.[\w.-]+/g,O9=/\b(?:\d{1,3}\.){3}\d{1,3}\b/g,V9=/\/(?:Users|home)\/[^\s/'"`]+/g;function x4(Z){let Y=($)=>$.replace(j9,"<email>").replace(O9,"<ip>").replace(V9,"/<home>");return{...Z,message:Y(Z.message),stack:Y(Z.stack)}}async function C4(Z,Y){let $=new TextEncoder,J=await crypto.subtle.importKey("raw",$.encode(Z),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),G=await crypto.subtle.sign("HMAC",J,$.encode(Y));return[...new Uint8Array(G)].map((X)=>X.toString(16).padStart(2,"0")).join("")}function q9(Z){if(!Z||typeof localStorage>"u")return[];try{let Y=localStorage.getItem(Z);if(!Y)return[];let $=JSON.parse(Y);return Array.isArray($)?$:[]}catch{return[]}}function H4(Z,Y){if(!Z||typeof localStorage>"u")return;try{if(Y.length===0)localStorage.removeItem(Z);else localStorage.setItem(Z,JSON.stringify(Y))}catch{}}function U9(Z){let{endpoint:Y,intervalMs:$=60000,signingSecret:J,redact:G=!0,headers:X={},maxRetries:R=5,persistKey:z}=Z,K=z===null?null:z??F9,F=q9(K),O=!1,V=null,j=null,P=typeof G==="function"?G:G===!1?(N)=>N:x4;async function L(N){let E=JSON.stringify({entries:N}),S={"Content-Type":"application/json",...X};if(J)S["X-Craft-Signature"]=await C4(J,E);let e=0,w=1000;while(!O)try{let m=await fetch(Y,{method:"POST",headers:S,body:E});if(m.ok)return;if(m.status>=400&&m.status<500)return;throw Error(`HTTP ${m.status}`)}catch(m){if(e+=1,e>R)throw F=[...N,...F],H4(K,F),m;await new Promise((y4)=>{setTimeout(y4,w)}),w=Math.min(w*2,60000)}}async function T(){if(O||j)return j??void 0;let N=await s.flush();if(N.length>0)await s.clear();if(F=[...F,...N.map((S)=>P(S))],F.length===0)return;let E=F;return F=[],H4(K,F),j=L(E).catch(()=>{}).finally(()=>{j=null}),j}if($>0)V=setInterval(()=>{T().catch(()=>{})},$);return{async flushNow(){await T()},stop(){if(O=!0,V)clearInterval(V);V=null},pending(){return[...F]}}}var P9={async isAvailable(){if(!Q("iap"))return!1;return await window.craft.iap.isAvailable()},async getProducts(Z){if(!Q("iap"))return[];let Y=Array.isArray(Z)?Z:[String(Z)];return await window.craft.iap.getProducts(Y)},async purchase(Z){if(!Q("iap"))return{queued:!1,productId:Z,reason:"IAP bridge not available"};let Y=await window.craft.iap.purchase(Z);return{queued:!!(Y&&Y.queued),productId:Y?.productId,reason:Y?.reason}},async restorePurchases(){if(!Q("iap"))return{ok:!1};let Z=await window.craft.iap.restorePurchases();return{ok:!!(Z&&Z.ok)}},async finishTransaction(Z){if(!Q("iap"))return;await window.craft.iap.finishTransaction(Z)},async getReceiptData(){if(!Q("iap"))return null;let Z=await window.craft.iap.getReceiptData();return Z?String(Z):null},onPurchased(Z){return U("craft:iap:purchased",Z)},onFailed(Z){return U("craft:iap:failed",Z)},onRestored(Z){return U("craft:iap:restored",Z)},onProductsLoaded(Z){return U("craft:iap:productsLoaded",(Y)=>Z(Y.products||[]))},onRefunded(Z){return U("craft:iap:refunded",Z)},onSubscriptionStatusChanged(Z){return U("craft:iap:subscriptionStatusChanged",Z)},async getActiveSubscriptions(){if(!Q("iap"))return[];let Z=window.craft.iap.getActiveSubscriptions;if(typeof Z!=="function")return[];let Y=await Z();return Array.isArray(Y)?Y:[]},async isEligibleForIntroOffer(Z){if(!Q("iap"))return!1;let Y=window.craft.iap.isEligibleForIntroOffer;if(typeof Y!=="function")return!1;return!!await Y(Z)}};var t={async startActivity(Z,Y){if(!Z)throw Error("handoff.startActivity: type is required");if(!Q("handoff"))return!1;let $=await window.craft.handoff.startActivity(Z,Y);return typeof $==="boolean"?$:!!($&&$.ok)},async updateActivity(Z){if(!Q("handoff"))return!1;let Y=await window.craft.handoff.updateActivity(Z);return typeof Y==="boolean"?Y:!!(Y&&Y.ok)},async stopActivity(){if(!Q("handoff"))return;await window.craft.handoff.stopActivity()},async getCurrentActivity(){if(!Q("handoff"))return null;let Z=await window.craft.handoff.getCurrentActivity();return Z&&typeof Z.type==="string"?Z:null},onIncoming(Z){return U("craft:handoff:incoming",Z)}};var L9={async start(Z,Y){return t.startActivity(Z,{title:Y?.title,webpageURL:Y?.webpageURL,userInfo:Y?.state})},async update(Z){return t.updateActivity({title:Z.title,webpageURL:Z.webpageURL,userInfo:Z.state})},async stop(){await t.stopActivity()}};var W9={async requestPermission(Z="whenInUse"){if(Q("location"))return await window.craft.location.requestPermission(Z);if(typeof navigator<"u"&&navigator.geolocation)return"undetermined";return"not-supported"},async getAuthorization(){if(Q("location"))return await window.craft.location.getAuthorization();return"unknown"},async getCurrentLocation(){if(Q("location"))return await window.craft.location.getCurrentLocation();if(typeof navigator<"u"&&navigator.geolocation)return navigator.geolocation.getCurrentPosition((Z)=>{window.dispatchEvent(new CustomEvent("craft:location:update",{detail:{latitude:Z.coords.latitude,longitude:Z.coords.longitude,altitude:Z.coords.altitude,horizontalAccuracy:Z.coords.accuracy,verticalAccuracy:Z.coords.altitudeAccuracy,speed:Z.coords.speed}}))},(Z)=>{window.dispatchEvent(new CustomEvent("craft:location:error",{detail:{message:Z.message||String(Z)}}))}),{requested:!0};return{requested:!1}},async startWatching(Z){if(Q("location"))return await window.craft.location.startWatching(Z);if(typeof navigator<"u"&&navigator.geolocation){let Y=navigator.geolocation.watchPosition(($)=>{window.dispatchEvent(new CustomEvent("craft:location:update",{detail:{latitude:$.coords.latitude,longitude:$.coords.longitude,altitude:$.coords.altitude,horizontalAccuracy:$.coords.accuracy,verticalAccuracy:$.coords.altitudeAccuracy,speed:$.coords.speed}}))});return window.__craftWebLocationWatchId=Y,!0}return!1},async stopWatching(){if(Q("location")){await window.craft.location.stopWatching();return}if(typeof navigator<"u"&&navigator.geolocation){let Z=window.__craftWebLocationWatchId;if(Z!=null)navigator.geolocation.clearWatch(Z),window.__craftWebLocationWatchId=null}},onUpdate(Z){return U("craft:location:update",Z)},onError(Z){return U("craft:location:error",Z)},onAuthChanged(Z){return U("craft:location:authChanged",Z)}};var D9={async captureScreen(){if(!Q("screenCapture"))return null;let Z=await window.craft.screenCapture.captureScreen();return Z?String(Z):null},async captureWindow(Z){if(!Q("screenCapture"))return null;if(!Number.isFinite(Z)||Z<=0)throw Error("captureWindow: id must be a positive number");let Y=await window.craft.screenCapture.captureWindow(Z);return Y?String(Y):null},async listWindows(){if(!Q("screenCapture"))return[];return await window.craft.screenCapture.listWindows()}};var S4=250,w4=60000,wZ=2000,I4={sharing:!1,signals:{systemScreenShare:!1,remoteSession:!1,conferenceSharing:!1,screenRecording:!1},sources:[]};function M9(){return{...I4,signals:{...I4.signals},sources:[]}}var FZ={async getState(){if(!Q("screenSharing"))return M9();return await window.craft.screenSharing.getState()},async watch(Z=wZ){let Y=Math.min(w4,Math.max(S4,Math.round(Z)));if(!Q("screenSharing"))return Y;let $=await window.craft.screenSharing.watch(Y);return $&&$.intervalMs||Y},async stop(){if(!Q("screenSharing"))return;await window.craft.screenSharing.unwatch()},onChange(Z){return U("craft:screenSharing:change",Z)}};async function _9(Z,Y=wZ){let $=FZ.onChange(Z);return await FZ.watch(Y),()=>{$(),FZ.stop()}}var T9={supported:!1,isFocused:null,authorization:"unsupported"};function B4(){return{ok:!1,error:"Focus control is only available in a Craft window on macOS"}}var BZ={async getStatus(){if(!Q("focus"))return{...T9};return await window.craft.focus.getStatus()},async requestAuthorization(){if(!Q("focus"))return"unsupported";return await window.craft.focus.requestAuthorization()},async setEnabled(Z,Y={}){if(!Q("focus"))return B4();if(!(Z?Y.onShortcut:Y.offShortcut))return{ok:!1,error:`focus.setEnabled: no ${Z?"onShortcut":"offShortcut"} configured`};return await window.craft.focus.setEnabled(Z,Y)},async runShortcut(Z){if(!Q("focus"))return B4();if(!Z)throw Error("focus.runShortcut: name is required");return await window.craft.focus.runShortcut(Z)},async listShortcuts(){if(!Q("focus"))return[];return await window.craft.focus.listShortcuts()},async listShortcutsResult(){if(!Q("focus"))return{canList:!1,shortcuts:[]};let Y=await window.craft.focus.listShortcutsResult?.();return{canList:Boolean(Y?.canList),shortcuts:Y?.shortcuts??[]}}};async function N9(...Z){if(Z.length===0)return!1;let Y=new Set(await BZ.listShortcuts());return Z.every(($)=>Y.has($))}async function E9(...Z){if(Z.length===0)return!1;let{canList:Y,shortcuts:$}=await BZ.listShortcutsResult();if(!Y)return"unknown";let J=new Set($);return Z.every((G)=>J.has(G))}var A9={async start(Z=0,Y="127.0.0.1"){if(!Q("localServer"))return{port:0,started:!1,reason:"bridge unavailable"};return await window.craft.localServer.start(Z,Y)},async stop(){if(!Q("localServer"))return;await window.craft.localServer.stop()},async respond(Z){if(!Q("localServer"))return;await window.craft.localServer.respond(Z||{status:200,body:"OK"})},onRequest(Z){return U("craft:localServer:request",Z)},async awaitOAuthCallback(Z={}){M("localServer");let{port:Y=0,host:$="127.0.0.1",timeoutMs:J=300000,successHTML:G}=Z,X=await this.start(Y,$);if(!X.started)throw Error(`localServer: start failed${X.reason?` \u2014 ${X.reason}`:""}`);return new Promise((R,z)=>{let K=setTimeout(()=>{F(),this.stop().catch(()=>{}),z(Error("localServer: OAuth callback timed out"))},J),F=this.onRequest(({url:O})=>{clearTimeout(K),F();let V=G??`<!doctype html><meta charset="utf-8"><title>Done</title>
|
|
896
896
|
<style>body{font-family:-apple-system,BlinkMacSystemFont,sans-serif;display:flex;align-items:center;justify-content:center;height:100vh;margin:0;background:#f5f5f7}</style>
|
|
897
897
|
<div><h1>You can close this tab.</h1><p>Returning to the app\u2026</p></div>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{ct as a,dt as b,et as c,ft as d,gt as e,ht as f,it as g,jt as h,kt as i,lt as j,mt as k,nt as l}from"./chunk-
|
|
2
|
+
import{ct as a,dt as b,et as c,ft as d,gt as e,ht as f,it as g,jt as h,kt as i,lt as j,mt as k,nt as l}from"./chunk-sf45fhg4.js";import"./chunk-w1asc0zd.js";import"./chunk-m8kem5ca.js";export{e as resolveUserCssConfig,c as resetCssCache,h as rebuildCss,d as loadCssEngineConfig,b as loadCssEngine,l as injectCss,a as getCssServeAsset,i as getCachedCSS,k as generateCss,f as fingerprintConfig,j as extractClassNames,g as buildCss};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{Oo as a,Po as b,Qo as c,Ro as d}from"./chunk-
|
|
2
|
+
import{Oo as a,Po as b,Qo as c,Ro as d}from"./chunk-pw8q3ety.js";import"./chunk-jc6wrxrh.js";import"./chunk-2xpdcr8c.js";import"./chunk-v90kxg77.js";import"./chunk-4arms0am.js";import"./chunk-135mme4g.js";import"./chunk-sf45fhg4.js";import"./chunk-w1asc0zd.js";import"./chunk-kd95t585.js";import"./chunk-asshx9sb.js";import"./chunk-xk402w4a.js";import"./chunk-dnard9gp.js";import"./chunk-vgx5077x.js";import"./chunk-met6wtbk.js";import"./chunk-ta6z7k4p.js";import"./chunk-zxptxz2b.js";import"./chunk-7racewc5.js";import"./chunk-e03m4har.js";import"./chunk-vsqx756d.js";import"./chunk-m8kem5ca.js";export{b as reportDeferredLoopWarnings,c as processLoops,a as parseLoopBinding,d as declareBareLoopHead};
|