@absolutejs/absolute 0.19.0-beta.1039 → 0.19.0-beta.1040

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  var __require = import.meta.require;
3
3
 
4
- // .angular-partial-tmp-sdQucV/src/core/streamingSlotRegistrar.ts
4
+ // .angular-partial-tmp-zcEjR9/src/core/streamingSlotRegistrar.ts
5
5
  var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
6
6
  var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
7
7
  var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  var __require = import.meta.require;
3
3
 
4
- // .angular-partial-tmp-sdQucV/src/core/streamingSlotRegistrar.ts
4
+ // .angular-partial-tmp-zcEjR9/src/core/streamingSlotRegistrar.ts
5
5
  var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
6
6
  var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
7
7
  var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
@@ -48,7 +48,7 @@ var warnMissingStreamingSlotCollector = (primitiveName) => {
48
48
  getWarningController()?.maybeWarn(primitiveName);
49
49
  };
50
50
 
51
- // .angular-partial-tmp-sdQucV/src/core/streamingSlotRegistry.ts
51
+ // .angular-partial-tmp-zcEjR9/src/core/streamingSlotRegistry.ts
52
52
  var STREAMING_SLOT_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotAsyncLocalStorage");
53
53
  var isObjectRecord2 = (value) => Boolean(value) && typeof value === "object";
54
54
  var isAsyncLocalStorage = (value) => isObjectRecord2(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
@@ -0,0 +1 @@
1
+ var htmx=function(){"use strict";const Q={onLoad:null,process:null,on:null,off:null,trigger:null,ajax:null,find:null,findAll:null,closest:null,values:function(e,t){const n=dn(e,t||"post");return n.values},remove:null,addClass:null,removeClass:null,toggleClass:null,takeClass:null,swap:null,defineExtension:null,removeExtension:null,logAll:null,logNone:null,logger:null,config:{historyEnabled:true,historyCacheSize:10,refreshOnHistoryMiss:false,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:true,indicatorClass:"htmx-indicator",requestClass:"htmx-request",addedClass:"htmx-added",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:true,allowScriptTags:true,inlineScriptNonce:"",inlineStyleNonce:"",attributesToSettle:["class","style","width","height"],withCredentials:false,timeout:0,wsReconnectDelay:"full-jitter",wsBinaryType:"blob",disableSelector:"[hx-disable], [data-hx-disable]",scrollBehavior:"instant",defaultFocusScroll:false,getCacheBusterParam:false,globalViewTransitions:false,methodsThatUseUrlParams:["get","delete"],selfRequestsOnly:true,ignoreTitle:false,scrollIntoViewOnBoost:true,triggerSpecsCache:null,disableInheritance:false,responseHandling:[{code:"204",swap:false},{code:"[23]..",swap:true},{code:"[45]..",swap:false,error:true}],allowNestedOobSwaps:true,historyRestoreAsHxRequest:true},parseInterval:null,location:location,_:null,version:"2.0.6"};Q.onLoad=j;Q.process=Ft;Q.on=xe;Q.off=be;Q.trigger=ae;Q.ajax=Ln;Q.find=f;Q.findAll=x;Q.closest=g;Q.remove=z;Q.addClass=K;Q.removeClass=G;Q.toggleClass=W;Q.takeClass=Z;Q.swap=$e;Q.defineExtension=zn;Q.removeExtension=$n;Q.logAll=V;Q.logNone=_;Q.parseInterval=d;Q._=e;const n={addTriggerHandler:St,bodyContains:se,canAccessLocalStorage:B,findThisElement:Se,filterValues:yn,swap:$e,hasAttribute:s,getAttributeValue:a,getClosestAttributeValue:ne,getClosestMatch:q,getExpressionVars:Tn,getHeaders:mn,getInputValues:dn,getInternalData:oe,getSwapSpecification:bn,getTriggerSpecs:st,getTarget:Ee,makeFragment:P,mergeObjects:le,makeSettleInfo:Sn,oobSwap:He,querySelectorExt:ue,settleImmediately:Yt,shouldCancel:ht,triggerEvent:ae,triggerErrorEvent:fe,withExtensions:jt};const de=["get","post","put","delete","patch"];const T=de.map(function(e){return"[hx-"+e+"], [data-hx-"+e+"]"}).join(", ");function d(e){if(e==undefined){return undefined}let t=NaN;if(e.slice(-2)=="ms"){t=parseFloat(e.slice(0,-2))}else if(e.slice(-1)=="s"){t=parseFloat(e.slice(0,-1))*1e3}else if(e.slice(-1)=="m"){t=parseFloat(e.slice(0,-1))*1e3*60}else{t=parseFloat(e)}return isNaN(t)?undefined:t}function ee(e,t){return e instanceof Element&&e.getAttribute(t)}function s(e,t){return!!e.hasAttribute&&(e.hasAttribute(t)||e.hasAttribute("data-"+t))}function a(e,t){return ee(e,t)||ee(e,"data-"+t)}function u(e){const t=e.parentElement;if(!t&&e.parentNode instanceof ShadowRoot)return e.parentNode;return t}function te(){return document}function y(e,t){return e.getRootNode?e.getRootNode({composed:t}):te()}function q(e,t){while(e&&!t(e)){e=u(e)}return e||null}function o(e,t,n){const r=a(t,n);const o=a(t,"hx-disinherit");var i=a(t,"hx-inherit");if(e!==t){if(Q.config.disableInheritance){if(i&&(i==="*"||i.split(" ").indexOf(n)>=0)){return r}else{return null}}if(o&&(o==="*"||o.split(" ").indexOf(n)>=0)){return"unset"}}return r}function ne(t,n){let r=null;q(t,function(e){return!!(r=o(t,ce(e),n))});if(r!=="unset"){return r}}function h(e,t){return e instanceof Element&&e.matches(t)}function A(e){const t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;const n=t.exec(e);if(n){return n[1].toLowerCase()}else{return""}}function L(e){const t=new DOMParser;return t.parseFromString(e,"text/html")}function N(e,t){while(t.childNodes.length>0){e.append(t.childNodes[0])}}function r(e){const t=te().createElement("script");ie(e.attributes,function(e){t.setAttribute(e.name,e.value)});t.textContent=e.textContent;t.async=false;if(Q.config.inlineScriptNonce){t.nonce=Q.config.inlineScriptNonce}return t}function i(e){return e.matches("script")&&(e.type==="text/javascript"||e.type==="module"||e.type==="")}function I(e){Array.from(e.querySelectorAll("script")).forEach(e=>{if(i(e)){const t=r(e);const n=e.parentNode;try{n.insertBefore(t,e)}catch(e){R(e)}finally{e.remove()}}})}function P(e){const t=e.replace(/<head(\s[^>]*)?>[\s\S]*?<\/head>/i,"");const n=A(t);let r;if(n==="html"){r=new DocumentFragment;const i=L(e);N(r,i.body);r.title=i.title}else if(n==="body"){r=new DocumentFragment;const i=L(t);N(r,i.body);r.title=i.title}else{const i=L('<body><template class="internal-htmx-wrapper">'+t+"</template></body>");r=i.querySelector("template").content;r.title=i.title;var o=r.querySelector("title");if(o&&o.parentNode===r){o.remove();r.title=o.innerText}}if(r){if(Q.config.allowScriptTags){I(r)}else{r.querySelectorAll("script").forEach(e=>e.remove())}}return r}function re(e){if(e){e()}}function t(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function D(e){return typeof e==="function"}function k(e){return t(e,"Object")}function oe(e){const t="htmx-internal-data";let n=e[t];if(!n){n=e[t]={}}return n}function M(t){const n=[];if(t){for(let e=0;e<t.length;e++){n.push(t[e])}}return n}function ie(t,n){if(t){for(let e=0;e<t.length;e++){n(t[e])}}}function F(e){const t=e.getBoundingClientRect();const n=t.top;const r=t.bottom;return n<window.innerHeight&&r>=0}function se(e){return e.getRootNode({composed:true})===document}function X(e){return e.trim().split(/\s+/)}function le(e,t){for(const n in t){if(t.hasOwnProperty(n)){e[n]=t[n]}}return e}function v(e){try{return JSON.parse(e)}catch(e){R(e);return null}}function B(){const e="htmx:sessionStorageTest";try{sessionStorage.setItem(e,e);sessionStorage.removeItem(e);return true}catch(e){return false}}function U(e){const t=new URL(e,"http://x");if(t){e=t.pathname+t.search}if(e!="/"){e=e.replace(/\/+$/,"")}return e}function e(e){return On(te().body,function(){return eval(e)})}function j(t){const e=Q.on("htmx:load",function(e){t(e.detail.elt)});return e}function V(){Q.logger=function(e,t,n){if(console){console.log(t,e,n)}}}function _(){Q.logger=null}function f(e,t){if(typeof e!=="string"){return e.querySelector(t)}else{return f(te(),e)}}function x(e,t){if(typeof e!=="string"){return e.querySelectorAll(t)}else{return x(te(),e)}}function b(){return window}function z(e,t){e=w(e);if(t){b().setTimeout(function(){z(e);e=null},t)}else{u(e).removeChild(e)}}function ce(e){return e instanceof Element?e:null}function $(e){return e instanceof HTMLElement?e:null}function J(e){return typeof e==="string"?e:null}function p(e){return e instanceof Element||e instanceof Document||e instanceof DocumentFragment?e:null}function K(e,t,n){e=ce(w(e));if(!e){return}if(n){b().setTimeout(function(){K(e,t);e=null},n)}else{e.classList&&e.classList.add(t)}}function G(e,t,n){let r=ce(w(e));if(!r){return}if(n){b().setTimeout(function(){G(r,t);r=null},n)}else{if(r.classList){r.classList.remove(t);if(r.classList.length===0){r.removeAttribute("class")}}}}function W(e,t){e=w(e);e.classList.toggle(t)}function Z(e,t){e=w(e);ie(e.parentElement.children,function(e){G(e,t)});K(ce(e),t)}function g(e,t){e=ce(w(e));if(e){return e.closest(t)}return null}function l(e,t){return e.substring(0,t.length)===t}function Y(e,t){return e.substring(e.length-t.length)===t}function pe(e){const t=e.trim();if(l(t,"<")&&Y(t,"/>")){return t.substring(1,t.length-2)}else{return t}}function m(t,r,n){if(r.indexOf("global ")===0){return m(t,r.slice(7),true)}t=w(t);const o=[];{let t=0;let n=0;for(let e=0;e<r.length;e++){const l=r[e];if(l===","&&t===0){o.push(r.substring(n,e));n=e+1;continue}if(l==="<"){t++}else if(l==="/"&&e<r.length-1&&r[e+1]===">"){t--}}if(n<r.length){o.push(r.substring(n))}}const i=[];const s=[];while(o.length>0){const r=pe(o.shift());let e;if(r.indexOf("closest ")===0){e=g(ce(t),pe(r.slice(8)))}else if(r.indexOf("find ")===0){e=f(p(t),pe(r.slice(5)))}else if(r==="next"||r==="nextElementSibling"){e=ce(t).nextElementSibling}else if(r.indexOf("next ")===0){e=ge(t,pe(r.slice(5)),!!n)}else if(r==="previous"||r==="previousElementSibling"){e=ce(t).previousElementSibling}else if(r.indexOf("previous ")===0){e=me(t,pe(r.slice(9)),!!n)}else if(r==="document"){e=document}else if(r==="window"){e=window}else if(r==="body"){e=document.body}else if(r==="root"){e=y(t,!!n)}else if(r==="host"){e=t.getRootNode().host}else{s.push(r)}if(e){i.push(e)}}if(s.length>0){const e=s.join(",");const c=p(y(t,!!n));i.push(...M(c.querySelectorAll(e)))}return i}var ge=function(t,e,n){const r=p(y(t,n)).querySelectorAll(e);for(let e=0;e<r.length;e++){const o=r[e];if(o.compareDocumentPosition(t)===Node.DOCUMENT_POSITION_PRECEDING){return o}}};var me=function(t,e,n){const r=p(y(t,n)).querySelectorAll(e);for(let e=r.length-1;e>=0;e--){const o=r[e];if(o.compareDocumentPosition(t)===Node.DOCUMENT_POSITION_FOLLOWING){return o}}};function ue(e,t){if(typeof e!=="string"){return m(e,t)[0]}else{return m(te().body,e)[0]}}function w(e,t){if(typeof e==="string"){return f(p(t)||document,e)}else{return e}}function ye(e,t,n,r){if(D(t)){return{target:te().body,event:J(e),listener:t,options:n}}else{return{target:w(e),event:J(t),listener:n,options:r}}}function xe(t,n,r,o){Gn(function(){const e=ye(t,n,r,o);e.target.addEventListener(e.event,e.listener,e.options)});const e=D(n);return e?n:r}function be(t,n,r){Gn(function(){const e=ye(t,n,r);e.target.removeEventListener(e.event,e.listener)});return D(n)?n:r}const ve=te().createElement("output");function we(t,n){const e=ne(t,n);if(e){if(e==="this"){return[Se(t,n)]}else{const r=m(t,e);const o=/(^|,)(\s*)inherit(\s*)($|,)/.test(e);if(o){const i=ce(q(t,function(e){return e!==t&&s(ce(e),n)}));if(i){r.push(...we(i,n))}}if(r.length===0){R('The selector "'+e+'" on '+n+" returned no matches!");return[ve]}else{return r}}}}function Se(e,t){return ce(q(e,function(e){return a(ce(e),t)!=null}))}function Ee(e){const t=ne(e,"hx-target");if(t){if(t==="this"){return Se(e,"hx-target")}else{return ue(e,t)}}else{const n=oe(e);if(n.boosted){return te().body}else{return e}}}function Ce(e){return Q.config.attributesToSettle.includes(e)}function Oe(t,n){ie(t.attributes,function(e){if(!n.hasAttribute(e.name)&&Ce(e.name)){t.removeAttribute(e.name)}});ie(n.attributes,function(e){if(Ce(e.name)){t.setAttribute(e.name,e.value)}})}function Re(t,e){const n=Jn(e);for(let e=0;e<n.length;e++){const r=n[e];try{if(r.isInlineSwap(t)){return true}}catch(e){R(e)}}return t==="outerHTML"}function He(e,o,i,t){t=t||te();let n="#"+CSS.escape(ee(o,"id"));let s="outerHTML";if(e==="true"){}else if(e.indexOf(":")>0){s=e.substring(0,e.indexOf(":"));n=e.substring(e.indexOf(":")+1)}else{s=e}o.removeAttribute("hx-swap-oob");o.removeAttribute("data-hx-swap-oob");const r=m(t,n,false);if(r.length){ie(r,function(e){let t;const n=o.cloneNode(true);t=te().createDocumentFragment();t.appendChild(n);if(!Re(s,e)){t=p(n)}const r={shouldSwap:true,target:e,fragment:t};if(!ae(e,"htmx:oobBeforeSwap",r))return;e=r.target;if(r.shouldSwap){qe(t);_e(s,e,e,t,i);Te()}ie(i.elts,function(e){ae(e,"htmx:oobAfterSwap",r)})});o.parentNode.removeChild(o)}else{o.parentNode.removeChild(o);fe(te().body,"htmx:oobErrorNoTarget",{content:o})}return e}function Te(){const e=f("#--htmx-preserve-pantry--");if(e){for(const t of[...e.children]){const n=f("#"+t.id);n.parentNode.moveBefore(t,n);n.remove()}e.remove()}}function qe(e){ie(x(e,"[hx-preserve], [data-hx-preserve]"),function(e){const t=a(e,"id");const n=te().getElementById(t);if(n!=null){if(e.moveBefore){let e=f("#--htmx-preserve-pantry--");if(e==null){te().body.insertAdjacentHTML("afterend","<div id='--htmx-preserve-pantry--'></div>");e=f("#--htmx-preserve-pantry--")}e.moveBefore(n,null)}else{e.parentNode.replaceChild(n,e)}}})}function Ae(l,e,c){ie(e.querySelectorAll("[id]"),function(t){const n=ee(t,"id");if(n&&n.length>0){const r=n.replace("'","\\'");const o=t.tagName.replace(":","\\:");const e=p(l);const i=e&&e.querySelector(o+"[id='"+r+"']");if(i&&i!==e){const s=t.cloneNode();Oe(t,i);c.tasks.push(function(){Oe(t,s)})}}})}function Le(e){return function(){G(e,Q.config.addedClass);Ft(ce(e));Ne(p(e));ae(e,"htmx:load")}}function Ne(e){const t="[autofocus]";const n=$(h(e,t)?e:e.querySelector(t));if(n!=null){n.focus()}}function c(e,t,n,r){Ae(e,n,r);while(n.childNodes.length>0){const o=n.firstChild;K(ce(o),Q.config.addedClass);e.insertBefore(o,t);if(o.nodeType!==Node.TEXT_NODE&&o.nodeType!==Node.COMMENT_NODE){r.tasks.push(Le(o))}}}function Ie(e,t){let n=0;while(n<e.length){t=(t<<5)-t+e.charCodeAt(n++)|0}return t}function Pe(t){let n=0;for(let e=0;e<t.attributes.length;e++){const r=t.attributes[e];if(r.value){n=Ie(r.name,n);n=Ie(r.value,n)}}return n}function De(t){const n=oe(t);if(n.onHandlers){for(let e=0;e<n.onHandlers.length;e++){const r=n.onHandlers[e];be(t,r.event,r.listener)}delete n.onHandlers}}function ke(e){const t=oe(e);if(t.timeout){clearTimeout(t.timeout)}if(t.listenerInfos){ie(t.listenerInfos,function(e){if(e.on){be(e.on,e.trigger,e.listener)}})}De(e);ie(Object.keys(t),function(e){if(e!=="firstInitCompleted")delete t[e]})}function S(e){ae(e,"htmx:beforeCleanupElement");ke(e);ie(e.children,function(e){S(e)})}function Me(t,e,n){if(t.tagName==="BODY"){return Ve(t,e,n)}let r;const o=t.previousSibling;const i=u(t);if(!i){return}c(i,t,e,n);if(o==null){r=i.firstChild}else{r=o.nextSibling}n.elts=n.elts.filter(function(e){return e!==t});while(r&&r!==t){if(r instanceof Element){n.elts.push(r)}r=r.nextSibling}S(t);t.remove()}function Fe(e,t,n){return c(e,e.firstChild,t,n)}function Xe(e,t,n){return c(u(e),e,t,n)}function Be(e,t,n){return c(e,null,t,n)}function Ue(e,t,n){return c(u(e),e.nextSibling,t,n)}function je(e){S(e);const t=u(e);if(t){return t.removeChild(e)}}function Ve(e,t,n){const r=e.firstChild;c(e,r,t,n);if(r){while(r.nextSibling){S(r.nextSibling);e.removeChild(r.nextSibling)}S(r);e.removeChild(r)}}function _e(t,e,n,r,o){switch(t){case"none":return;case"outerHTML":Me(n,r,o);return;case"afterbegin":Fe(n,r,o);return;case"beforebegin":Xe(n,r,o);return;case"beforeend":Be(n,r,o);return;case"afterend":Ue(n,r,o);return;case"delete":je(n);return;default:var i=Jn(e);for(let e=0;e<i.length;e++){const s=i[e];try{const l=s.handleSwap(t,n,r,o);if(l){if(Array.isArray(l)){for(let e=0;e<l.length;e++){const c=l[e];if(c.nodeType!==Node.TEXT_NODE&&c.nodeType!==Node.COMMENT_NODE){o.tasks.push(Le(c))}}}return}}catch(e){R(e)}}if(t==="innerHTML"){Ve(n,r,o)}else{_e(Q.config.defaultSwapStyle,e,n,r,o)}}}function ze(e,n,r){var t=x(e,"[hx-swap-oob], [data-hx-swap-oob]");ie(t,function(e){if(Q.config.allowNestedOobSwaps||e.parentElement===null){const t=a(e,"hx-swap-oob");if(t!=null){He(t,e,n,r)}}else{e.removeAttribute("hx-swap-oob");e.removeAttribute("data-hx-swap-oob")}});return t.length>0}function $e(h,d,p,g){if(!g){g={}}let m=null;let n=null;let e=function(){re(g.beforeSwapCallback);h=w(h);const r=g.contextElement?y(g.contextElement,false):te();const e=document.activeElement;let t={};t={elt:e,start:e?e.selectionStart:null,end:e?e.selectionEnd:null};const o=Sn(h);if(p.swapStyle==="textContent"){h.textContent=d}else{let n=P(d);o.title=g.title||n.title;if(g.historyRequest){n=n.querySelector("[hx-history-elt],[data-hx-history-elt]")||n}if(g.selectOOB){const i=g.selectOOB.split(",");for(let t=0;t<i.length;t++){const s=i[t].split(":",2);let e=s[0].trim();if(e.indexOf("#")===0){e=e.substring(1)}const l=s[1]||"true";const c=n.querySelector("#"+e);if(c){He(l,c,o,r)}}}ze(n,o,r);ie(x(n,"template"),function(e){if(e.content&&ze(e.content,o,r)){e.remove()}});if(g.select){const u=te().createDocumentFragment();ie(n.querySelectorAll(g.select),function(e){u.appendChild(e)});n=u}qe(n);_e(p.swapStyle,g.contextElement,h,n,o);Te()}if(t.elt&&!se(t.elt)&&ee(t.elt,"id")){const f=document.getElementById(ee(t.elt,"id"));const a={preventScroll:p.focusScroll!==undefined?!p.focusScroll:!Q.config.defaultFocusScroll};if(f){if(t.start&&f.setSelectionRange){try{f.setSelectionRange(t.start,t.end)}catch(e){}}f.focus(a)}}h.classList.remove(Q.config.swappingClass);ie(o.elts,function(e){if(e.classList){e.classList.add(Q.config.settlingClass)}ae(e,"htmx:afterSwap",g.eventInfo)});re(g.afterSwapCallback);if(!p.ignoreTitle){Bn(o.title)}const n=function(){ie(o.tasks,function(e){e.call()});ie(o.elts,function(e){if(e.classList){e.classList.remove(Q.config.settlingClass)}ae(e,"htmx:afterSettle",g.eventInfo)});if(g.anchor){const e=ce(w("#"+g.anchor));if(e){e.scrollIntoView({block:"start",behavior:"auto"})}}En(o.elts,p);re(g.afterSettleCallback);re(m)};if(p.settleDelay>0){b().setTimeout(n,p.settleDelay)}else{n()}};let t=Q.config.globalViewTransitions;if(p.hasOwnProperty("transition")){t=p.transition}const r=g.contextElement||te();if(t&&ae(r,"htmx:beforeTransition",g.eventInfo)&&typeof Promise!=="undefined"&&document.startViewTransition){const o=new Promise(function(e,t){m=e;n=t});const i=e;e=function(){document.startViewTransition(function(){i();return o})}}try{if(p?.swapDelay&&p.swapDelay>0){b().setTimeout(e,p.swapDelay)}else{e()}}catch(e){fe(r,"htmx:swapError",g.eventInfo);re(n);throw e}}function Je(e,t,n){const r=e.getResponseHeader(t);if(r.indexOf("{")===0){const o=v(r);for(const i in o){if(o.hasOwnProperty(i)){let e=o[i];if(k(e)){n=e.target!==undefined?e.target:n}else{e={value:e}}ae(n,i,e)}}}else{const s=r.split(",");for(let e=0;e<s.length;e++){ae(n,s[e].trim(),[])}}}const Ke=/\s/;const E=/[\s,]/;const Ge=/[_$a-zA-Z]/;const We=/[_$a-zA-Z0-9]/;const Ze=['"',"'","/"];const C=/[^\s]/;const Ye=/[{(]/;const Qe=/[})]/;function et(e){const t=[];let n=0;while(n<e.length){if(Ge.exec(e.charAt(n))){var r=n;while(We.exec(e.charAt(n+1))){n++}t.push(e.substring(r,n+1))}else if(Ze.indexOf(e.charAt(n))!==-1){const o=e.charAt(n);var r=n;n++;while(n<e.length&&e.charAt(n)!==o){if(e.charAt(n)==="\\"){n++}n++}t.push(e.substring(r,n+1))}else{const i=e.charAt(n);t.push(i)}n++}return t}function tt(e,t,n){return Ge.exec(e.charAt(0))&&e!=="true"&&e!=="false"&&e!=="this"&&e!==n&&t!=="."}function nt(r,o,i){if(o[0]==="["){o.shift();let e=1;let t=" return (function("+i+"){ return (";let n=null;while(o.length>0){const s=o[0];if(s==="]"){e--;if(e===0){if(n===null){t=t+"true"}o.shift();t+=")})";try{const l=On(r,function(){return Function(t)()},function(){return true});l.source=t;return l}catch(e){fe(te().body,"htmx:syntax:error",{error:e,source:t});return null}}}else if(s==="["){e++}if(tt(s,n,i)){t+="(("+i+"."+s+") ? ("+i+"."+s+") : (window."+s+"))"}else{t=t+s}n=o.shift()}}}function O(e,t){let n="";while(e.length>0&&!t.test(e[0])){n+=e.shift()}return n}function rt(e){let t;if(e.length>0&&Ye.test(e[0])){e.shift();t=O(e,Qe).trim();e.shift()}else{t=O(e,E)}return t}const ot="input, textarea, select";function it(e,t,n){const r=[];const o=et(t);do{O(o,C);const l=o.length;const c=O(o,/[,\[\s]/);if(c!==""){if(c==="every"){const u={trigger:"every"};O(o,C);u.pollInterval=d(O(o,/[,\[\s]/));O(o,C);var i=nt(e,o,"event");if(i){u.eventFilter=i}r.push(u)}else{const f={trigger:c};var i=nt(e,o,"event");if(i){f.eventFilter=i}O(o,C);while(o.length>0&&o[0]!==","){const a=o.shift();if(a==="changed"){f.changed=true}else if(a==="once"){f.once=true}else if(a==="consume"){f.consume=true}else if(a==="delay"&&o[0]===":"){o.shift();f.delay=d(O(o,E))}else if(a==="from"&&o[0]===":"){o.shift();if(Ye.test(o[0])){var s=rt(o)}else{var s=O(o,E);if(s==="closest"||s==="find"||s==="next"||s==="previous"){o.shift();const h=rt(o);if(h.length>0){s+=" "+h}}}f.from=s}else if(a==="target"&&o[0]===":"){o.shift();f.target=rt(o)}else if(a==="throttle"&&o[0]===":"){o.shift();f.throttle=d(O(o,E))}else if(a==="queue"&&o[0]===":"){o.shift();f.queue=O(o,E)}else if(a==="root"&&o[0]===":"){o.shift();f[a]=rt(o)}else if(a==="threshold"&&o[0]===":"){o.shift();f[a]=O(o,E)}else{fe(e,"htmx:syntax:error",{token:o.shift()})}O(o,C)}r.push(f)}}if(o.length===l){fe(e,"htmx:syntax:error",{token:o.shift()})}O(o,C)}while(o[0]===","&&o.shift());if(n){n[t]=r}return r}function st(e){const t=a(e,"hx-trigger");let n=[];if(t){const r=Q.config.triggerSpecsCache;n=r&&r[t]||it(e,t,r)}if(n.length>0){return n}else if(h(e,"form")){return[{trigger:"submit"}]}else if(h(e,'input[type="button"], input[type="submit"]')){return[{trigger:"click"}]}else if(h(e,ot)){return[{trigger:"change"}]}else{return[{trigger:"click"}]}}function lt(e){oe(e).cancelled=true}function ct(e,t,n){const r=oe(e);r.timeout=b().setTimeout(function(){if(se(e)&&r.cancelled!==true){if(!pt(n,e,Bt("hx:poll:trigger",{triggerSpec:n,target:e}))){t(e)}ct(e,t,n)}},n.pollInterval)}function ut(e){return location.hostname===e.hostname&&ee(e,"href")&&ee(e,"href").indexOf("#")!==0}function ft(e){return g(e,Q.config.disableSelector)}function at(t,n,e){if(t instanceof HTMLAnchorElement&&ut(t)&&(t.target===""||t.target==="_self")||t.tagName==="FORM"&&String(ee(t,"method")).toLowerCase()!=="dialog"){n.boosted=true;let r,o;if(t.tagName==="A"){r="get";o=ee(t,"href")}else{const i=ee(t,"method");r=i?i.toLowerCase():"get";o=ee(t,"action");if(o==null||o===""){o=location.href}if(r==="get"&&o.includes("?")){o=o.replace(/\?[^#]+/,"")}}e.forEach(function(e){gt(t,function(e,t){const n=ce(e);if(ft(n)){S(n);return}he(r,o,n,t)},n,e,true)})}}function ht(e,t){if(e.type==="submit"||e.type==="click"){t=ce(e.target)||t;if(t.tagName==="FORM"){return true}if(t.form&&t.type==="submit"){return true}t=t.closest("a");if(t&&t.href&&(t.getAttribute("href")==="#"||t.getAttribute("href").indexOf("#")!==0)){return true}}return false}function dt(e,t){return oe(e).boosted&&e instanceof HTMLAnchorElement&&t.type==="click"&&(t.ctrlKey||t.metaKey)}function pt(e,t,n){const r=e.eventFilter;if(r){try{return r.call(t,n)!==true}catch(e){const o=r.source;fe(te().body,"htmx:eventFilter:error",{error:e,source:o});return true}}return false}function gt(l,c,e,u,f){const a=oe(l);let t;if(u.from){t=m(l,u.from)}else{t=[l]}if(u.changed){if(!("lastValue"in a)){a.lastValue=new WeakMap}t.forEach(function(e){if(!a.lastValue.has(u)){a.lastValue.set(u,new WeakMap)}a.lastValue.get(u).set(e,e.value)})}ie(t,function(i){const s=function(e){if(!se(l)){i.removeEventListener(u.trigger,s);return}if(dt(l,e)){return}if(f||ht(e,l)){e.preventDefault()}if(pt(u,l,e)){return}const t=oe(e);t.triggerSpec=u;if(t.handledFor==null){t.handledFor=[]}if(t.handledFor.indexOf(l)<0){t.handledFor.push(l);if(u.consume){e.stopPropagation()}if(u.target&&e.target){if(!h(ce(e.target),u.target)){return}}if(u.once){if(a.triggeredOnce){return}else{a.triggeredOnce=true}}if(u.changed){const n=e.target;const r=n.value;const o=a.lastValue.get(u);if(o.has(n)&&o.get(n)===r){return}o.set(n,r)}if(a.delayed){clearTimeout(a.delayed)}if(a.throttle){return}if(u.throttle>0){if(!a.throttle){ae(l,"htmx:trigger");c(l,e);a.throttle=b().setTimeout(function(){a.throttle=null},u.throttle)}}else if(u.delay>0){a.delayed=b().setTimeout(function(){ae(l,"htmx:trigger");c(l,e)},u.delay)}else{ae(l,"htmx:trigger");c(l,e)}}};if(e.listenerInfos==null){e.listenerInfos=[]}e.listenerInfos.push({trigger:u.trigger,listener:s,on:i});i.addEventListener(u.trigger,s)})}let mt=false;let yt=null;function xt(){if(!yt){yt=function(){mt=true};window.addEventListener("scroll",yt);window.addEventListener("resize",yt);setInterval(function(){if(mt){mt=false;ie(te().querySelectorAll("[hx-trigger*='revealed'],[data-hx-trigger*='revealed']"),function(e){bt(e)})}},200)}}function bt(e){if(!s(e,"data-hx-revealed")&&F(e)){e.setAttribute("data-hx-revealed","true");const t=oe(e);if(t.initHash){ae(e,"revealed")}else{e.addEventListener("htmx:afterProcessNode",function(){ae(e,"revealed")},{once:true})}}}function vt(e,t,n,r){const o=function(){if(!n.loaded){n.loaded=true;ae(e,"htmx:trigger");t(e)}};if(r>0){b().setTimeout(o,r)}else{o()}}function wt(t,n,e){let i=false;ie(de,function(r){if(s(t,"hx-"+r)){const o=a(t,"hx-"+r);i=true;n.path=o;n.verb=r;e.forEach(function(e){St(t,e,n,function(e,t){const n=ce(e);if(ft(n)){S(n);return}he(r,o,n,t)})})}});return i}function St(r,e,t,n){if(e.trigger==="revealed"){xt();gt(r,n,t,e);bt(ce(r))}else if(e.trigger==="intersect"){const o={};if(e.root){o.root=ue(r,e.root)}if(e.threshold){o.threshold=parseFloat(e.threshold)}const i=new IntersectionObserver(function(t){for(let e=0;e<t.length;e++){const n=t[e];if(n.isIntersecting){ae(r,"intersect");break}}},o);i.observe(ce(r));gt(ce(r),n,t,e)}else if(!t.firstInitCompleted&&e.trigger==="load"){if(!pt(e,r,Bt("load",{elt:r}))){vt(ce(r),n,t,e.delay)}}else if(e.pollInterval>0){t.polling=true;ct(ce(r),n,e)}else{gt(r,n,t,e)}}function Et(e){const t=ce(e);if(!t){return false}const n=t.attributes;for(let e=0;e<n.length;e++){const r=n[e].name;if(l(r,"hx-on:")||l(r,"data-hx-on:")||l(r,"hx-on-")||l(r,"data-hx-on-")){return true}}return false}const Ct=(new XPathEvaluator).createExpression('.//*[@*[ starts-with(name(), "hx-on:") or starts-with(name(), "data-hx-on:") or'+' starts-with(name(), "hx-on-") or starts-with(name(), "data-hx-on-") ]]');function Ot(e,t){if(Et(e)){t.push(ce(e))}const n=Ct.evaluate(e);let r=null;while(r=n.iterateNext())t.push(ce(r))}function Rt(e){const t=[];if(e instanceof DocumentFragment){for(const n of e.childNodes){Ot(n,t)}}else{Ot(e,t)}return t}function Ht(e){if(e.querySelectorAll){const n=", [hx-boost] a, [data-hx-boost] a, a[hx-boost], a[data-hx-boost]";const r=[];for(const i in Vn){const s=Vn[i];if(s.getSelectors){var t=s.getSelectors();if(t){r.push(t)}}}const o=e.querySelectorAll(T+n+", form, [type='submit'],"+" [hx-ext], [data-hx-ext], [hx-trigger], [data-hx-trigger]"+r.flat().map(e=>", "+e).join(""));return o}else{return[]}}function Tt(e){const t=At(e.target);const n=Nt(e);if(n){n.lastButtonClicked=t}}function qt(e){const t=Nt(e);if(t){t.lastButtonClicked=null}}function At(e){return g(ce(e),"button, input[type='submit']")}function Lt(e){return e.form||g(e,"form")}function Nt(e){const t=At(e.target);if(!t){return}const n=Lt(t);return oe(n)}function It(e){e.addEventListener("click",Tt);e.addEventListener("focusin",Tt);e.addEventListener("focusout",qt)}function Pt(t,e,n){const r=oe(t);if(!Array.isArray(r.onHandlers)){r.onHandlers=[]}let o;const i=function(e){On(t,function(){if(ft(t)){return}if(!o){o=new Function("event",n)}o.call(t,e)})};t.addEventListener(e,i);r.onHandlers.push({event:e,listener:i})}function Dt(t){De(t);for(let e=0;e<t.attributes.length;e++){const n=t.attributes[e].name;const r=t.attributes[e].value;if(l(n,"hx-on")||l(n,"data-hx-on")){const o=n.indexOf("-on")+3;const i=n.slice(o,o+1);if(i==="-"||i===":"){let e=n.slice(o+1);if(l(e,":")){e="htmx"+e}else if(l(e,"-")){e="htmx:"+e.slice(1)}else if(l(e,"htmx-")){e="htmx:"+e.slice(5)}Pt(t,e,r)}}}}function kt(t){ae(t,"htmx:beforeProcessNode");const n=oe(t);const e=st(t);const r=wt(t,n,e);if(!r){if(ne(t,"hx-boost")==="true"){at(t,n,e)}else if(s(t,"hx-trigger")){e.forEach(function(e){St(t,e,n,function(){})})}}if(t.tagName==="FORM"||ee(t,"type")==="submit"&&s(t,"form")){It(t)}n.firstInitCompleted=true;ae(t,"htmx:afterProcessNode")}function Mt(e){if(!(e instanceof Element)){return false}const t=oe(e);const n=Pe(e);if(t.initHash!==n){ke(e);t.initHash=n;return true}return false}function Ft(e){e=w(e);if(ft(e)){S(e);return}const t=[];if(Mt(e)){t.push(e)}ie(Ht(e),function(e){if(ft(e)){S(e);return}if(Mt(e)){t.push(e)}});ie(Rt(e),Dt);ie(t,kt)}function Xt(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}function Bt(e,t){return new CustomEvent(e,{bubbles:true,cancelable:true,composed:true,detail:t})}function fe(e,t,n){ae(e,t,le({error:t},n))}function Ut(e){return e==="htmx:afterProcessNode"}function jt(e,t,n){ie(Jn(e,[],n),function(e){try{t(e)}catch(e){R(e)}})}function R(e){console.error(e)}function ae(e,t,n){e=w(e);if(n==null){n={}}n.elt=e;const r=Bt(t,n);if(Q.logger&&!Ut(t)){Q.logger(e,t,n)}if(n.error){R(n.error);ae(e,"htmx:error",{errorInfo:n})}let o=e.dispatchEvent(r);const i=Xt(t);if(o&&i!==t){const s=Bt(i,r.detail);o=o&&e.dispatchEvent(s)}jt(ce(e),function(e){o=o&&(e.onEvent(t,r)!==false&&!r.defaultPrevented)});return o}let Vt=location.pathname+location.search;function _t(e){Vt=e;if(B()){sessionStorage.setItem("htmx-current-path-for-history",e)}}function zt(){const e=te().querySelector("[hx-history-elt],[data-hx-history-elt]");return e||te().body}function $t(t,e){if(!B()){return}const n=Kt(e);const r=te().title;const o=window.scrollY;if(Q.config.historyCacheSize<=0){sessionStorage.removeItem("htmx-history-cache");return}t=U(t);const i=v(sessionStorage.getItem("htmx-history-cache"))||[];for(let e=0;e<i.length;e++){if(i[e].url===t){i.splice(e,1);break}}const s={url:t,content:n,title:r,scroll:o};ae(te().body,"htmx:historyItemCreated",{item:s,cache:i});i.push(s);while(i.length>Q.config.historyCacheSize){i.shift()}while(i.length>0){try{sessionStorage.setItem("htmx-history-cache",JSON.stringify(i));break}catch(e){fe(te().body,"htmx:historyCacheError",{cause:e,cache:i});i.shift()}}}function Jt(t){if(!B()){return null}t=U(t);const n=v(sessionStorage.getItem("htmx-history-cache"))||[];for(let e=0;e<n.length;e++){if(n[e].url===t){return n[e]}}return null}function Kt(e){const t=Q.config.requestClass;const n=e.cloneNode(true);ie(x(n,"."+t),function(e){G(e,t)});ie(x(n,"[data-disabled-by-htmx]"),function(e){e.removeAttribute("disabled")});return n.innerHTML}function Gt(){const e=zt();let t=Vt;if(B()){t=sessionStorage.getItem("htmx-current-path-for-history")}t=t||location.pathname+location.search;const n=te().querySelector('[hx-history="false" i],[data-hx-history="false" i]');if(!n){ae(te().body,"htmx:beforeHistorySave",{path:t,historyElt:e});$t(t,e)}if(Q.config.historyEnabled)history.replaceState({htmx:true},te().title,location.href)}function Wt(e){if(Q.config.getCacheBusterParam){e=e.replace(/org\.htmx\.cache-buster=[^&]*&?/,"");if(Y(e,"&")||Y(e,"?")){e=e.slice(0,-1)}}if(Q.config.historyEnabled){history.pushState({htmx:true},"",e)}_t(e)}function Zt(e){if(Q.config.historyEnabled)history.replaceState({htmx:true},"",e);_t(e)}function Yt(e){ie(e,function(e){e.call(undefined)})}function Qt(e){const t=new XMLHttpRequest;const n={swapStyle:"innerHTML",swapDelay:0,settleDelay:0};const r={path:e,xhr:t,historyElt:zt(),swapSpec:n};t.open("GET",e,true);if(Q.config.historyRestoreAsHxRequest){t.setRequestHeader("HX-Request","true")}t.setRequestHeader("HX-History-Restore-Request","true");t.setRequestHeader("HX-Current-URL",location.href);t.onload=function(){if(this.status>=200&&this.status<400){r.response=this.response;ae(te().body,"htmx:historyCacheMissLoad",r);$e(r.historyElt,r.response,n,{contextElement:r.historyElt,historyRequest:true});_t(r.path);ae(te().body,"htmx:historyRestore",{path:e,cacheMiss:true,serverResponse:r.response})}else{fe(te().body,"htmx:historyCacheMissLoadError",r)}};if(ae(te().body,"htmx:historyCacheMiss",r)){t.send()}}function en(e){Gt();e=e||location.pathname+location.search;const t=Jt(e);if(t){const n={swapStyle:"innerHTML",swapDelay:0,settleDelay:0,scroll:t.scroll};const r={path:e,item:t,historyElt:zt(),swapSpec:n};if(ae(te().body,"htmx:historyCacheHit",r)){$e(r.historyElt,t.content,n,{contextElement:r.historyElt,title:t.title});_t(r.path);ae(te().body,"htmx:historyRestore",r)}}else{if(Q.config.refreshOnHistoryMiss){Q.location.reload(true)}else{Qt(e)}}}function tn(e){let t=we(e,"hx-indicator");if(t==null){t=[e]}ie(t,function(e){const t=oe(e);t.requestCount=(t.requestCount||0)+1;e.classList.add.call(e.classList,Q.config.requestClass)});return t}function nn(e){let t=we(e,"hx-disabled-elt");if(t==null){t=[]}ie(t,function(e){const t=oe(e);t.requestCount=(t.requestCount||0)+1;e.setAttribute("disabled","");e.setAttribute("data-disabled-by-htmx","")});return t}function rn(e,t){ie(e.concat(t),function(e){const t=oe(e);t.requestCount=(t.requestCount||1)-1});ie(e,function(e){const t=oe(e);if(t.requestCount===0){e.classList.remove.call(e.classList,Q.config.requestClass)}});ie(t,function(e){const t=oe(e);if(t.requestCount===0){e.removeAttribute("disabled");e.removeAttribute("data-disabled-by-htmx")}})}function on(t,n){for(let e=0;e<t.length;e++){const r=t[e];if(r.isSameNode(n)){return true}}return false}function sn(e){const t=e;if(t.name===""||t.name==null||t.disabled||g(t,"fieldset[disabled]")){return false}if(t.type==="button"||t.type==="submit"||t.tagName==="image"||t.tagName==="reset"||t.tagName==="file"){return false}if(t.type==="checkbox"||t.type==="radio"){return t.checked}return true}function ln(t,e,n){if(t!=null&&e!=null){if(Array.isArray(e)){e.forEach(function(e){n.append(t,e)})}else{n.append(t,e)}}}function cn(t,n,r){if(t!=null&&n!=null){let e=r.getAll(t);if(Array.isArray(n)){e=e.filter(e=>n.indexOf(e)<0)}else{e=e.filter(e=>e!==n)}r.delete(t);ie(e,e=>r.append(t,e))}}function un(e){if(e instanceof HTMLSelectElement&&e.multiple){return M(e.querySelectorAll("option:checked")).map(function(e){return e.value})}if(e instanceof HTMLInputElement&&e.files){return M(e.files)}return e.value}function fn(t,n,r,e,o){if(e==null||on(t,e)){return}else{t.push(e)}if(sn(e)){const i=ee(e,"name");ln(i,un(e),n);if(o){an(e,r)}}if(e instanceof HTMLFormElement){ie(e.elements,function(e){if(t.indexOf(e)>=0){cn(e.name,un(e),n)}else{t.push(e)}if(o){an(e,r)}});new FormData(e).forEach(function(e,t){if(e instanceof File&&e.name===""){return}ln(t,e,n)})}}function an(e,t){const n=e;if(n.willValidate){ae(n,"htmx:validation:validate");if(!n.checkValidity()){t.push({elt:n,message:n.validationMessage,validity:n.validity});ae(n,"htmx:validation:failed",{message:n.validationMessage,validity:n.validity})}}}function hn(n,e){for(const t of e.keys()){n.delete(t)}e.forEach(function(e,t){n.append(t,e)});return n}function dn(e,t){const n=[];const r=new FormData;const o=new FormData;const i=[];const s=oe(e);if(s.lastButtonClicked&&!se(s.lastButtonClicked)){s.lastButtonClicked=null}let l=e instanceof HTMLFormElement&&e.noValidate!==true||a(e,"hx-validate")==="true";if(s.lastButtonClicked){l=l&&s.lastButtonClicked.formNoValidate!==true}if(t!=="get"){fn(n,o,i,Lt(e),l)}fn(n,r,i,e,l);if(s.lastButtonClicked||e.tagName==="BUTTON"||e.tagName==="INPUT"&&ee(e,"type")==="submit"){const u=s.lastButtonClicked||e;const f=ee(u,"name");ln(f,u.value,o)}const c=we(e,"hx-include");ie(c,function(e){fn(n,r,i,ce(e),l);if(!h(e,"form")){ie(p(e).querySelectorAll(ot),function(e){fn(n,r,i,e,l)})}});hn(r,o);return{errors:i,formData:r,values:kn(r)}}function pn(e,t,n){if(e!==""){e+="&"}if(String(n)==="[object Object]"){n=JSON.stringify(n)}const r=encodeURIComponent(n);e+=encodeURIComponent(t)+"="+r;return e}function gn(e){e=Pn(e);let n="";e.forEach(function(e,t){n=pn(n,t,e)});return n}function mn(e,t,n){const r={"HX-Request":"true","HX-Trigger":ee(e,"id"),"HX-Trigger-Name":ee(e,"name"),"HX-Target":a(t,"id"),"HX-Current-URL":location.href};Cn(e,"hx-headers",false,r);if(n!==undefined){r["HX-Prompt"]=n}if(oe(e).boosted){r["HX-Boosted"]="true"}return r}function yn(n,e){const t=ne(e,"hx-params");if(t){if(t==="none"){return new FormData}else if(t==="*"){return n}else if(t.indexOf("not ")===0){ie(t.slice(4).split(","),function(e){e=e.trim();n.delete(e)});return n}else{const r=new FormData;ie(t.split(","),function(t){t=t.trim();if(n.has(t)){n.getAll(t).forEach(function(e){r.append(t,e)})}});return r}}else{return n}}function xn(e){return!!ee(e,"href")&&ee(e,"href").indexOf("#")>=0}function bn(e,t){const n=t||ne(e,"hx-swap");const r={swapStyle:oe(e).boosted?"innerHTML":Q.config.defaultSwapStyle,swapDelay:Q.config.defaultSwapDelay,settleDelay:Q.config.defaultSettleDelay};if(Q.config.scrollIntoViewOnBoost&&oe(e).boosted&&!xn(e)){r.show="top"}if(n){const s=X(n);if(s.length>0){for(let e=0;e<s.length;e++){const l=s[e];if(l.indexOf("swap:")===0){r.swapDelay=d(l.slice(5))}else if(l.indexOf("settle:")===0){r.settleDelay=d(l.slice(7))}else if(l.indexOf("transition:")===0){r.transition=l.slice(11)==="true"}else if(l.indexOf("ignoreTitle:")===0){r.ignoreTitle=l.slice(12)==="true"}else if(l.indexOf("scroll:")===0){const c=l.slice(7);var o=c.split(":");const u=o.pop();var i=o.length>0?o.join(":"):null;r.scroll=u;r.scrollTarget=i}else if(l.indexOf("show:")===0){const f=l.slice(5);var o=f.split(":");const a=o.pop();var i=o.length>0?o.join(":"):null;r.show=a;r.showTarget=i}else if(l.indexOf("focus-scroll:")===0){const h=l.slice("focus-scroll:".length);r.focusScroll=h=="true"}else if(e==0){r.swapStyle=l}else{R("Unknown modifier in hx-swap: "+l)}}}}return r}function vn(e){return ne(e,"hx-encoding")==="multipart/form-data"||h(e,"form")&&ee(e,"enctype")==="multipart/form-data"}function wn(t,n,r){let o=null;jt(n,function(e){if(o==null){o=e.encodeParameters(t,r,n)}});if(o!=null){return o}else{if(vn(n)){return hn(new FormData,Pn(r))}else{return gn(r)}}}function Sn(e){return{tasks:[],elts:[e]}}function En(e,t){const n=e[0];const r=e[e.length-1];if(t.scroll){var o=null;if(t.scrollTarget){o=ce(ue(n,t.scrollTarget))}if(t.scroll==="top"&&(n||o)){o=o||n;o.scrollTop=0}if(t.scroll==="bottom"&&(r||o)){o=o||r;o.scrollTop=o.scrollHeight}if(typeof t.scroll==="number"){b().setTimeout(function(){window.scrollTo(0,t.scroll)},0)}}if(t.show){var o=null;if(t.showTarget){let e=t.showTarget;if(t.showTarget==="window"){e="body"}o=ce(ue(n,e))}if(t.show==="top"&&(n||o)){o=o||n;o.scrollIntoView({block:"start",behavior:Q.config.scrollBehavior})}if(t.show==="bottom"&&(r||o)){o=o||r;o.scrollIntoView({block:"end",behavior:Q.config.scrollBehavior})}}}function Cn(r,e,o,i,s){if(i==null){i={}}if(r==null){return i}const l=a(r,e);if(l){let e=l.trim();let t=o;if(e==="unset"){return null}if(e.indexOf("javascript:")===0){e=e.slice(11);t=true}else if(e.indexOf("js:")===0){e=e.slice(3);t=true}if(e.indexOf("{")!==0){e="{"+e+"}"}let n;if(t){n=On(r,function(){if(s){return Function("event","return ("+e+")").call(r,s)}else{return Function("return ("+e+")").call(r)}},{})}else{n=v(e)}for(const c in n){if(n.hasOwnProperty(c)){if(i[c]==null){i[c]=n[c]}}}}return Cn(ce(u(r)),e,o,i,s)}function On(e,t,n){if(Q.config.allowEval){return t()}else{fe(e,"htmx:evalDisallowedError");return n}}function Rn(e,t,n){return Cn(e,"hx-vars",true,n,t)}function Hn(e,t,n){return Cn(e,"hx-vals",false,n,t)}function Tn(e,t){return le(Rn(e,t),Hn(e,t))}function qn(t,n,r){if(r!==null){try{t.setRequestHeader(n,r)}catch(e){t.setRequestHeader(n,encodeURIComponent(r));t.setRequestHeader(n+"-URI-AutoEncoded","true")}}}function An(t){if(t.responseURL){try{const e=new URL(t.responseURL);return e.pathname+e.search}catch(e){fe(te().body,"htmx:badResponseUrl",{url:t.responseURL})}}}function H(e,t){return t.test(e.getAllResponseHeaders())}function Ln(t,n,r){t=t.toLowerCase();if(r){if(r instanceof Element||typeof r==="string"){return he(t,n,null,null,{targetOverride:w(r)||ve,returnPromise:true})}else{let e=w(r.target);if(r.target&&!e||r.source&&!e&&!w(r.source)){e=ve}return he(t,n,w(r.source),r.event,{handler:r.handler,headers:r.headers,values:r.values,targetOverride:e,swapOverride:r.swap,select:r.select,returnPromise:true})}}else{return he(t,n,null,null,{returnPromise:true})}}function Nn(e){const t=[];while(e){t.push(e);e=e.parentElement}return t}function In(e,t,n){const r=new URL(t,location.protocol!=="about:"?location.href:window.origin);const o=location.protocol!=="about:"?location.origin:window.origin;const i=o===r.origin;if(Q.config.selfRequestsOnly){if(!i){return false}}return ae(e,"htmx:validateUrl",le({url:r,sameHost:i},n))}function Pn(e){if(e instanceof FormData)return e;const t=new FormData;for(const n in e){if(e.hasOwnProperty(n)){if(e[n]&&typeof e[n].forEach==="function"){e[n].forEach(function(e){t.append(n,e)})}else if(typeof e[n]==="object"&&!(e[n]instanceof Blob)){t.append(n,JSON.stringify(e[n]))}else{t.append(n,e[n])}}}return t}function Dn(r,o,e){return new Proxy(e,{get:function(t,e){if(typeof e==="number")return t[e];if(e==="length")return t.length;if(e==="push"){return function(e){t.push(e);r.append(o,e)}}if(typeof t[e]==="function"){return function(){t[e].apply(t,arguments);r.delete(o);t.forEach(function(e){r.append(o,e)})}}if(t[e]&&t[e].length===1){return t[e][0]}else{return t[e]}},set:function(e,t,n){e[t]=n;r.delete(o);e.forEach(function(e){r.append(o,e)});return true}})}function kn(o){return new Proxy(o,{get:function(e,t){if(typeof t==="symbol"){const r=Reflect.get(e,t);if(typeof r==="function"){return function(){return r.apply(o,arguments)}}else{return r}}if(t==="toJSON"){return()=>Object.fromEntries(o)}if(t in e){if(typeof e[t]==="function"){return function(){return o[t].apply(o,arguments)}}}const n=o.getAll(t);if(n.length===0){return undefined}else if(n.length===1){return n[0]}else{return Dn(e,t,n)}},set:function(t,n,e){if(typeof n!=="string"){return false}t.delete(n);if(e&&typeof e.forEach==="function"){e.forEach(function(e){t.append(n,e)})}else if(typeof e==="object"&&!(e instanceof Blob)){t.append(n,JSON.stringify(e))}else{t.append(n,e)}return true},deleteProperty:function(e,t){if(typeof t==="string"){e.delete(t)}return true},ownKeys:function(e){return Reflect.ownKeys(Object.fromEntries(e))},getOwnPropertyDescriptor:function(e,t){return Reflect.getOwnPropertyDescriptor(Object.fromEntries(e),t)}})}function he(t,n,r,o,i,k){let s=null;let l=null;i=i!=null?i:{};if(i.returnPromise&&typeof Promise!=="undefined"){var e=new Promise(function(e,t){s=e;l=t})}if(r==null){r=te().body}const M=i.handler||jn;const F=i.select||null;if(!se(r)){re(s);return e}const c=i.targetOverride||ce(Ee(r));if(c==null||c==ve){fe(r,"htmx:targetError",{target:ne(r,"hx-target")});re(l);return e}let u=oe(r);const f=u.lastButtonClicked;if(f){const A=ee(f,"formaction");if(A!=null){n=A}const L=ee(f,"formmethod");if(L!=null){if(de.includes(L.toLowerCase())){t=L}else{re(s);return e}}}const a=ne(r,"hx-confirm");if(k===undefined){const K=function(e){return he(t,n,r,o,i,!!e)};const G={target:c,elt:r,path:n,verb:t,triggeringEvent:o,etc:i,issueRequest:K,question:a};if(ae(r,"htmx:confirm",G)===false){re(s);return e}}let h=r;let d=ne(r,"hx-sync");let p=null;let X=false;if(d){const N=d.split(":");const I=N[0].trim();if(I==="this"){h=Se(r,"hx-sync")}else{h=ce(ue(r,I))}d=(N[1]||"drop").trim();u=oe(h);if(d==="drop"&&u.xhr&&u.abortable!==true){re(s);return e}else if(d==="abort"){if(u.xhr){re(s);return e}else{X=true}}else if(d==="replace"){ae(h,"htmx:abort")}else if(d.indexOf("queue")===0){const W=d.split(" ");p=(W[1]||"last").trim()}}if(u.xhr){if(u.abortable){ae(h,"htmx:abort")}else{if(p==null){if(o){const P=oe(o);if(P&&P.triggerSpec&&P.triggerSpec.queue){p=P.triggerSpec.queue}}if(p==null){p="last"}}if(u.queuedRequests==null){u.queuedRequests=[]}if(p==="first"&&u.queuedRequests.length===0){u.queuedRequests.push(function(){he(t,n,r,o,i)})}else if(p==="all"){u.queuedRequests.push(function(){he(t,n,r,o,i)})}else if(p==="last"){u.queuedRequests=[];u.queuedRequests.push(function(){he(t,n,r,o,i)})}re(s);return e}}const g=new XMLHttpRequest;u.xhr=g;u.abortable=X;const m=function(){u.xhr=null;u.abortable=false;if(u.queuedRequests!=null&&u.queuedRequests.length>0){const e=u.queuedRequests.shift();e()}};const B=ne(r,"hx-prompt");if(B){var y=prompt(B);if(y===null||!ae(r,"htmx:prompt",{prompt:y,target:c})){re(s);m();return e}}if(a&&!k){if(!confirm(a)){re(s);m();return e}}let x=mn(r,c,y);if(t!=="get"&&!vn(r)){x["Content-Type"]="application/x-www-form-urlencoded"}if(i.headers){x=le(x,i.headers)}const U=dn(r,t);let b=U.errors;const j=U.formData;if(i.values){hn(j,Pn(i.values))}const V=Pn(Tn(r,o));const v=hn(j,V);let w=yn(v,r);if(Q.config.getCacheBusterParam&&t==="get"){w.set("org.htmx.cache-buster",ee(c,"id")||"true")}if(n==null||n===""){n=location.href}const S=Cn(r,"hx-request");const _=oe(r).boosted;let E=Q.config.methodsThatUseUrlParams.indexOf(t)>=0;const C={boosted:_,useUrlParams:E,formData:w,parameters:kn(w),unfilteredFormData:v,unfilteredParameters:kn(v),headers:x,elt:r,target:c,verb:t,errors:b,withCredentials:i.credentials||S.credentials||Q.config.withCredentials,timeout:i.timeout||S.timeout||Q.config.timeout,path:n,triggeringEvent:o};if(!ae(r,"htmx:configRequest",C)){re(s);m();return e}n=C.path;t=C.verb;x=C.headers;w=Pn(C.parameters);b=C.errors;E=C.useUrlParams;if(b&&b.length>0){ae(r,"htmx:validation:halted",C);re(s);m();return e}const z=n.split("#");const $=z[0];const O=z[1];let R=n;if(E){R=$;const Z=!w.keys().next().done;if(Z){if(R.indexOf("?")<0){R+="?"}else{R+="&"}R+=gn(w);if(O){R+="#"+O}}}if(!In(r,R,C)){fe(r,"htmx:invalidPath",C);re(l);m();return e}g.open(t.toUpperCase(),R,true);g.overrideMimeType("text/html");g.withCredentials=C.withCredentials;g.timeout=C.timeout;if(S.noHeaders){}else{for(const D in x){if(x.hasOwnProperty(D)){const Y=x[D];qn(g,D,Y)}}}const H={xhr:g,target:c,requestConfig:C,etc:i,boosted:_,select:F,pathInfo:{requestPath:n,finalRequestPath:R,responsePath:null,anchor:O}};g.onload=function(){try{const t=Nn(r);H.pathInfo.responsePath=An(g);M(r,H);if(H.keepIndicators!==true){rn(T,q)}ae(r,"htmx:afterRequest",H);ae(r,"htmx:afterOnLoad",H);if(!se(r)){let e=null;while(t.length>0&&e==null){const n=t.shift();if(se(n)){e=n}}if(e){ae(e,"htmx:afterRequest",H);ae(e,"htmx:afterOnLoad",H)}}re(s)}catch(e){fe(r,"htmx:onLoadError",le({error:e},H));throw e}finally{m()}};g.onerror=function(){rn(T,q);fe(r,"htmx:afterRequest",H);fe(r,"htmx:sendError",H);re(l);m()};g.onabort=function(){rn(T,q);fe(r,"htmx:afterRequest",H);fe(r,"htmx:sendAbort",H);re(l);m()};g.ontimeout=function(){rn(T,q);fe(r,"htmx:afterRequest",H);fe(r,"htmx:timeout",H);re(l);m()};if(!ae(r,"htmx:beforeRequest",H)){re(s);m();return e}var T=tn(r);var q=nn(r);ie(["loadstart","loadend","progress","abort"],function(t){ie([g,g.upload],function(e){e.addEventListener(t,function(e){ae(r,"htmx:xhr:"+t,{lengthComputable:e.lengthComputable,loaded:e.loaded,total:e.total})})})});ae(r,"htmx:beforeSend",H);const J=E?null:wn(g,r,w);g.send(J);return e}function Mn(e,t){const n=t.xhr;let r=null;let o=null;if(H(n,/HX-Push:/i)){r=n.getResponseHeader("HX-Push");o="push"}else if(H(n,/HX-Push-Url:/i)){r=n.getResponseHeader("HX-Push-Url");o="push"}else if(H(n,/HX-Replace-Url:/i)){r=n.getResponseHeader("HX-Replace-Url");o="replace"}if(r){if(r==="false"){return{}}else{return{type:o,path:r}}}const i=t.pathInfo.finalRequestPath;const s=t.pathInfo.responsePath;const l=ne(e,"hx-push-url");const c=ne(e,"hx-replace-url");const u=oe(e).boosted;let f=null;let a=null;if(l){f="push";a=l}else if(c){f="replace";a=c}else if(u){f="push";a=s||i}if(a){if(a==="false"){return{}}if(a==="true"){a=s||i}if(t.pathInfo.anchor&&a.indexOf("#")===-1){a=a+"#"+t.pathInfo.anchor}return{type:f,path:a}}else{return{}}}function Fn(e,t){var n=new RegExp(e.code);return n.test(t.toString(10))}function Xn(e){for(var t=0;t<Q.config.responseHandling.length;t++){var n=Q.config.responseHandling[t];if(Fn(n,e.status)){return n}}return{swap:false}}function Bn(e){if(e){const t=f("title");if(t){t.textContent=e}else{window.document.title=e}}}function Un(e,t){if(t==="this"){return e}const n=ce(ue(e,t));if(n==null){fe(e,"htmx:targetError",{target:t});throw new Error(`Invalid re-target ${t}`)}return n}function jn(t,e){const n=e.xhr;let r=e.target;const o=e.etc;const i=e.select;if(!ae(t,"htmx:beforeOnLoad",e))return;if(H(n,/HX-Trigger:/i)){Je(n,"HX-Trigger",t)}if(H(n,/HX-Location:/i)){Gt();let e=n.getResponseHeader("HX-Location");var s;if(e.indexOf("{")===0){s=v(e);e=s.path;delete s.path}Ln("get",e,s).then(function(){Wt(e)});return}const l=H(n,/HX-Refresh:/i)&&n.getResponseHeader("HX-Refresh")==="true";if(H(n,/HX-Redirect:/i)){e.keepIndicators=true;Q.location.href=n.getResponseHeader("HX-Redirect");l&&Q.location.reload();return}if(l){e.keepIndicators=true;Q.location.reload();return}const c=Mn(t,e);const u=Xn(n);const f=u.swap;let a=!!u.error;let h=Q.config.ignoreTitle||u.ignoreTitle;let d=u.select;if(u.target){e.target=Un(t,u.target)}var p=o.swapOverride;if(p==null&&u.swapOverride){p=u.swapOverride}if(H(n,/HX-Retarget:/i)){e.target=Un(t,n.getResponseHeader("HX-Retarget"))}if(H(n,/HX-Reswap:/i)){p=n.getResponseHeader("HX-Reswap")}var g=n.response;var m=le({shouldSwap:f,serverResponse:g,isError:a,ignoreTitle:h,selectOverride:d,swapOverride:p},e);if(u.event&&!ae(r,u.event,m))return;if(!ae(r,"htmx:beforeSwap",m))return;r=m.target;g=m.serverResponse;a=m.isError;h=m.ignoreTitle;d=m.selectOverride;p=m.swapOverride;e.target=r;e.failed=a;e.successful=!a;if(m.shouldSwap){if(n.status===286){lt(t)}jt(t,function(e){g=e.transformResponse(g,n,t)});if(c.type){Gt()}var y=bn(t,p);if(!y.hasOwnProperty("ignoreTitle")){y.ignoreTitle=h}r.classList.add(Q.config.swappingClass);if(i){d=i}if(H(n,/HX-Reselect:/i)){d=n.getResponseHeader("HX-Reselect")}const x=ne(t,"hx-select-oob");const b=ne(t,"hx-select");$e(r,g,y,{select:d==="unset"?null:d||b,selectOOB:x,eventInfo:e,anchor:e.pathInfo.anchor,contextElement:t,afterSwapCallback:function(){if(H(n,/HX-Trigger-After-Swap:/i)){let e=t;if(!se(t)){e=te().body}Je(n,"HX-Trigger-After-Swap",e)}},afterSettleCallback:function(){if(H(n,/HX-Trigger-After-Settle:/i)){let e=t;if(!se(t)){e=te().body}Je(n,"HX-Trigger-After-Settle",e)}},beforeSwapCallback:function(){if(c.type){ae(te().body,"htmx:beforeHistoryUpdate",le({history:c},e));if(c.type==="push"){Wt(c.path);ae(te().body,"htmx:pushedIntoHistory",{path:c.path})}else{Zt(c.path);ae(te().body,"htmx:replacedInHistory",{path:c.path})}}}})}if(a){fe(t,"htmx:responseError",le({error:"Response Status Error Code "+n.status+" from "+e.pathInfo.requestPath},e))}}const Vn={};function _n(){return{init:function(e){return null},getSelectors:function(){return null},onEvent:function(e,t){return true},transformResponse:function(e,t,n){return e},isInlineSwap:function(e){return false},handleSwap:function(e,t,n,r){return false},encodeParameters:function(e,t,n){return null}}}function zn(e,t){if(t.init){t.init(n)}Vn[e]=le(_n(),t)}function $n(e){delete Vn[e]}function Jn(e,n,r){if(n==undefined){n=[]}if(e==undefined){return n}if(r==undefined){r=[]}const t=a(e,"hx-ext");if(t){ie(t.split(","),function(e){e=e.replace(/ /g,"");if(e.slice(0,7)=="ignore:"){r.push(e.slice(7));return}if(r.indexOf(e)<0){const t=Vn[e];if(t&&n.indexOf(t)<0){n.push(t)}}})}return Jn(ce(u(e)),n,r)}var Kn=false;te().addEventListener("DOMContentLoaded",function(){Kn=true});function Gn(e){if(Kn||te().readyState==="complete"){e()}else{te().addEventListener("DOMContentLoaded",e)}}function Wn(){if(Q.config.includeIndicatorStyles!==false){const e=Q.config.inlineStyleNonce?` nonce="${Q.config.inlineStyleNonce}"`:"";te().head.insertAdjacentHTML("beforeend","<style"+e+"> ."+Q.config.indicatorClass+"{opacity:0} ."+Q.config.requestClass+" ."+Q.config.indicatorClass+"{opacity:1; transition: opacity 200ms ease-in;} ."+Q.config.requestClass+"."+Q.config.indicatorClass+"{opacity:1; transition: opacity 200ms ease-in;} </style>")}}function Zn(){const e=te().querySelector('meta[name="htmx-config"]');if(e){return v(e.content)}else{return null}}function Yn(){const e=Zn();if(e){Q.config=le(Q.config,e)}}Gn(function(){Yn();Wn();let e=te().body;Ft(e);const t=te().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']");e.addEventListener("htmx:abort",function(e){const t=e.target;const n=oe(t);if(n&&n.xhr){n.xhr.abort()}});const n=window.onpopstate?window.onpopstate.bind(window):null;window.onpopstate=function(e){if(e.state&&e.state.htmx){en();ie(t,function(e){ae(e,"htmx:restored",{document:te(),triggerEvent:ae})})}else{if(n){n(e)}}};b().setTimeout(function(){ae(e,"htmx:load",{});e=null},0)});return Q}();
package/dist/cli/index.js CHANGED
@@ -172067,6 +172067,23 @@ var import_typescript4, CONFIG_CANDIDATES2, RUNTIME_FIELDS, findConfigPath2 = (c
172067
172067
  return candidate;
172068
172068
  }
172069
172069
  return null;
172070
+ }, findConfigObject = (sourceFile) => {
172071
+ let found = null;
172072
+ const visit = (node) => {
172073
+ if (found)
172074
+ return;
172075
+ if (import_typescript4.default.isCallExpression(node) && import_typescript4.default.isIdentifier(node.expression) && node.expression.text === "defineConfig" && node.arguments[0] && import_typescript4.default.isObjectLiteralExpression(node.arguments[0])) {
172076
+ found = node.arguments[0];
172077
+ return;
172078
+ }
172079
+ if (import_typescript4.default.isExportAssignment(node) && import_typescript4.default.isObjectLiteralExpression(node.expression)) {
172080
+ found = node.expression;
172081
+ return;
172082
+ }
172083
+ import_typescript4.default.forEachChild(node, visit);
172084
+ };
172085
+ visit(sourceFile);
172086
+ return found;
172070
172087
  };
172071
172088
  var init_resolveAbsoluteConfig = __esm(() => {
172072
172089
  init_fromType();
@@ -173191,6 +173208,461 @@ var init_generate = __esm(() => {
173191
173208
  SUBCOMMANDS = new Set(["api", "component", "page"]);
173192
173209
  });
173193
173210
 
173211
+ // src/cli/config/guards.ts
173212
+ var isRecord4 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
173213
+
173214
+ // src/cli/config/schema/serialize.ts
173215
+ var isIdentifier = (key) => /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key), serializeValue = (value, level = 1, indent = "\t") => {
173216
+ if (value === null)
173217
+ return "null";
173218
+ if (typeof value === "string") {
173219
+ return `'${value.replace(/\\/g, "\\\\").replace(/'/g, "\\'")}'`;
173220
+ }
173221
+ if (typeof value === "number" || typeof value === "boolean") {
173222
+ return String(value);
173223
+ }
173224
+ if (Array.isArray(value)) {
173225
+ if (value.length === 0)
173226
+ return "[]";
173227
+ const pad = indent.repeat(level + 1);
173228
+ return `[
173229
+ ${value.map((item) => `${pad}${serializeValue(item, level + 1, indent)}`).join(`,
173230
+ `)}
173231
+ ${indent.repeat(level)}]`;
173232
+ }
173233
+ if (isRecord4(value)) {
173234
+ const keys = Object.keys(value);
173235
+ if (keys.length === 0)
173236
+ return "{}";
173237
+ const pad = indent.repeat(level + 1);
173238
+ return `{
173239
+ ${keys.map((key) => {
173240
+ const name = isIdentifier(key) ? key : `'${key}'`;
173241
+ return `${pad}${name}: ${serializeValue(value[key], level + 1, indent)}`;
173242
+ }).join(`,
173243
+ `)}
173244
+ ${indent.repeat(level)}}`;
173245
+ }
173246
+ return "undefined";
173247
+ };
173248
+ var init_serialize = () => {};
173249
+
173250
+ // src/cli/config/absolute/editAbsoluteConfig.ts
173251
+ import { readFileSync as readFileSync19, writeFileSync as writeFileSync11 } from "fs";
173252
+ var import_typescript8, lineStartOffset = (text, position) => {
173253
+ let index = position;
173254
+ while (index > 0 && text[index - 1] !== `
173255
+ `)
173256
+ index -= 1;
173257
+ return index;
173258
+ }, indentBefore2 = (text, position) => text.slice(lineStartOffset(text, position), position), findProperty = (object, name) => object.properties.find((property) => import_typescript8.default.isPropertyAssignment(property) && (import_typescript8.default.isIdentifier(property.name) || import_typescript8.default.isStringLiteral(property.name)) && property.name.text === name), applyAbsoluteConfigEdit = (configPath2, request) => {
173259
+ try {
173260
+ const text = readFileSync19(configPath2, "utf-8");
173261
+ const sourceFile = import_typescript8.default.createSourceFile(configPath2, text, import_typescript8.default.ScriptTarget.Latest, true);
173262
+ const object = findConfigObject(sourceFile);
173263
+ if (!object) {
173264
+ return {
173265
+ message: "Could not find defineConfig({ ... }) in the config file.",
173266
+ ok: false
173267
+ };
173268
+ }
173269
+ const existing = findProperty(object, request.name);
173270
+ if (request.remove) {
173271
+ if (!existing)
173272
+ return { message: `${request.name} is not set`, ok: true };
173273
+ const start2 = lineStartOffset(text, existing.getStart(sourceFile));
173274
+ let end = existing.getEnd();
173275
+ if (text[end] === ",")
173276
+ end += 1;
173277
+ if (text[end] === `
173278
+ `)
173279
+ end += 1;
173280
+ writeFileSync11(configPath2, text.slice(0, start2) + text.slice(end), "utf-8");
173281
+ return { message: `Removed ${request.name}`, ok: true };
173282
+ }
173283
+ const valueText = serializeValue(request.value);
173284
+ if (existing) {
173285
+ const start2 = existing.initializer.getStart(sourceFile);
173286
+ const end = existing.initializer.getEnd();
173287
+ writeFileSync11(configPath2, text.slice(0, start2) + valueText + text.slice(end), "utf-8");
173288
+ return { message: `Updated ${request.name}`, ok: true };
173289
+ }
173290
+ const { properties } = object;
173291
+ const entry = `${request.name}: ${valueText}`;
173292
+ if (properties.length > 0) {
173293
+ const last = properties[properties.length - 1];
173294
+ if (!last) {
173295
+ return {
173296
+ message: "Could not locate insertion point.",
173297
+ ok: false
173298
+ };
173299
+ }
173300
+ const indent = indentBefore2(text, last.getStart(sourceFile));
173301
+ let at = last.getEnd();
173302
+ const hasComma = text[at] === ",";
173303
+ if (hasComma)
173304
+ at += 1;
173305
+ const insertion = `${hasComma ? "" : ","}
173306
+ ${indent}${entry}`;
173307
+ writeFileSync11(configPath2, text.slice(0, at) + insertion + text.slice(at), "utf-8");
173308
+ } else {
173309
+ const at = object.getStart(sourceFile) + 1;
173310
+ const indent = `${indentBefore2(text, object.getStart(sourceFile))} `;
173311
+ const insertion = `
173312
+ ${indent}${entry}
173313
+ ${indentBefore2(text, object.getStart(sourceFile))}`;
173314
+ writeFileSync11(configPath2, text.slice(0, at) + insertion + text.slice(at), "utf-8");
173315
+ }
173316
+ return { message: `Updated ${request.name}`, ok: true };
173317
+ } catch (error) {
173318
+ return { message: String(error), ok: false };
173319
+ }
173320
+ };
173321
+ var init_editAbsoluteConfig = __esm(() => {
173322
+ init_resolveAbsoluteConfig();
173323
+ init_serialize();
173324
+ import_typescript8 = __toESM(require_typescript(), 1);
173325
+ });
173326
+
173327
+ // src/cli/add/dependencies.ts
173328
+ var FRAMEWORK_DEPENDENCIES, toSpecs = (record) => Object.entries(record).map(([name, version2]) => `${name}@${version2}`), runBunAdd = (cwd, specs, dev2) => {
173329
+ if (specs.length === 0)
173330
+ return true;
173331
+ const flags = dev2 ? ["--dev"] : [];
173332
+ const result = Bun.spawnSync(["bun", "add", ...flags, ...specs], {
173333
+ cwd,
173334
+ stderr: "inherit",
173335
+ stdout: "inherit"
173336
+ });
173337
+ return result.success;
173338
+ }, frameworkDependencyNames = (framework) => {
173339
+ const manifest = FRAMEWORK_DEPENDENCIES[framework];
173340
+ return [
173341
+ ...Object.keys(manifest.dependencies),
173342
+ ...Object.keys(manifest.devDependencies)
173343
+ ];
173344
+ }, installFrameworkDependencies = (cwd, framework) => {
173345
+ const manifest = FRAMEWORK_DEPENDENCIES[framework];
173346
+ const deps = toSpecs(manifest.dependencies);
173347
+ const devDeps = toSpecs(manifest.devDependencies);
173348
+ const specs = [...deps, ...devDeps];
173349
+ if (specs.length === 0)
173350
+ return { ok: true, specs };
173351
+ const succeeded = runBunAdd(cwd, deps, false) && runBunAdd(cwd, devDeps, true);
173352
+ return { ok: succeeded, specs };
173353
+ };
173354
+ var init_dependencies = __esm(() => {
173355
+ FRAMEWORK_DEPENDENCIES = {
173356
+ angular: {
173357
+ dependencies: {
173358
+ "@angular/common": "^21.0.0",
173359
+ "@angular/compiler": "^21.0.0",
173360
+ "@angular/compiler-cli": "^21.0.0",
173361
+ "@angular/core": "^21.0.0",
173362
+ "@angular/platform-browser": "^21.0.0",
173363
+ "@angular/platform-server": "^21.0.0",
173364
+ "@angular/ssr": "^21.0.0"
173365
+ },
173366
+ devDependencies: {}
173367
+ },
173368
+ html: { dependencies: {}, devDependencies: {} },
173369
+ htmx: { dependencies: {}, devDependencies: {} },
173370
+ react: {
173371
+ dependencies: { react: "19.2.4", "react-dom": "19.2.4" },
173372
+ devDependencies: {
173373
+ "@types/react": "^19.2.14",
173374
+ "@types/react-dom": "^19.2.3"
173375
+ }
173376
+ },
173377
+ svelte: {
173378
+ dependencies: { svelte: "5.55.0" },
173379
+ devDependencies: { "svelte-check": "^4.4.5" }
173380
+ },
173381
+ vue: {
173382
+ dependencies: { vue: "3.5.27" },
173383
+ devDependencies: { "vue-tsc": "^3.2.6" }
173384
+ }
173385
+ };
173386
+ });
173387
+
173388
+ // src/cli/htmx/install.ts
173389
+ import { existsSync as existsSync20, mkdirSync as mkdirSync11, readFileSync as readFileSync20, writeFileSync as writeFileSync12 } from "fs";
173390
+ import { join as join20 } from "path";
173391
+ var VENDORED_HTMX_VERSION = "2.0.6", vendoredHtmxFile = () => [
173392
+ join20(import.meta.dir, "htmx.min.js"),
173393
+ join20(import.meta.dir, "htmx", "htmx.min.js"),
173394
+ join20(import.meta.dir, "..", "htmx", "htmx.min.js")
173395
+ ].find((path) => existsSync20(path)) ?? null, detectHtmxVersion = (content) => {
173396
+ const match = content.match(/version:"([0-9.]+)"/);
173397
+ return match ? match[1] : null;
173398
+ }, fetchHtmx = async (version2) => {
173399
+ const url = `https://cdn.jsdelivr.net/npm/htmx.org@${version2}/dist/htmx.min.js`;
173400
+ const response = await fetch(url);
173401
+ if (!response.ok) {
173402
+ throw new Error(`Failed to fetch htmx@${version2} (HTTP ${response.status})`);
173403
+ }
173404
+ return response.text();
173405
+ }, installedHtmxVersion = (htmxDir) => {
173406
+ const file = join20(htmxDir, "htmx.min.js");
173407
+ if (!existsSync20(file))
173408
+ return null;
173409
+ return detectHtmxVersion(readFileSync20(file, "utf-8"));
173410
+ }, readVendoredHtmx = () => {
173411
+ const file = vendoredHtmxFile();
173412
+ return file ? readFileSync20(file, "utf-8") : null;
173413
+ }, writeHtmx = (htmxDir, content) => {
173414
+ mkdirSync11(htmxDir, { recursive: true });
173415
+ const file = join20(htmxDir, "htmx.min.js");
173416
+ writeFileSync12(file, content, "utf-8");
173417
+ return file;
173418
+ };
173419
+ var init_install = () => {};
173420
+
173421
+ // src/cli/scripts/add.ts
173422
+ var exports_add = {};
173423
+ __export(exports_add, {
173424
+ runAdd: () => runAdd
173425
+ });
173426
+ import { dirname as dirname10, join as join21, relative as relative6 } from "path";
173427
+ var write2 = (text) => process.stdout.write(`${text}
173428
+ `), fail2 = (message) => {
173429
+ process.stdout.write(`${colors.red}${message}${colors.reset}
173430
+ `);
173431
+ process.exitCode = 1;
173432
+ }, printList2 = (label, paths, cwd) => {
173433
+ if (paths.length === 0)
173434
+ return;
173435
+ write2(` ${colors.dim}${label}${colors.reset}`);
173436
+ for (const path of paths)
173437
+ write2(` ${relative6(cwd, path)}`);
173438
+ }, frontendRoot = (project, cwd) => {
173439
+ const [firstKey] = configuredFrameworks(project);
173440
+ const firstDir = firstKey ? project.frameworkDirs[firstKey] : undefined;
173441
+ return firstDir ? dirname10(firstDir) : join21(cwd, "src", "frontend");
173442
+ }, runAdd = async (args) => {
173443
+ const [framework] = args.filter((arg) => !arg.startsWith("--"));
173444
+ const noInstall = args.includes("--no-install");
173445
+ if (!framework || !isFrameworkKey(framework)) {
173446
+ fail2("Usage: absolute add <react|svelte|vue|angular|html|htmx> [--no-install]");
173447
+ return;
173448
+ }
173449
+ const cwd = process.cwd();
173450
+ let project;
173451
+ try {
173452
+ project = await resolveProject(cwd);
173453
+ } catch (error) {
173454
+ fail2(error instanceof Error ? error.message : String(error));
173455
+ return;
173456
+ }
173457
+ if (!project.configPath) {
173458
+ fail2("No absolute.config.ts found in this project.");
173459
+ return;
173460
+ }
173461
+ if (project.frameworkDirs[framework]) {
173462
+ write2(`${colors.yellow}!${colors.reset} ${frameworks2[framework].label} is already configured \u2014 nothing to do.`);
173463
+ return;
173464
+ }
173465
+ const dirAbs = join21(frontendRoot(project, cwd), framework);
173466
+ const dirRel = `./${relative6(cwd, dirAbs).split("\\").join("/")}`;
173467
+ let depNote = "Skipped dependency install (--no-install).";
173468
+ if (!noInstall) {
173469
+ write2(`${colors.dim}Installing ${frameworks2[framework].label} dependencies\u2026${colors.reset}`);
173470
+ const { ok: succeeded, specs } = installFrameworkDependencies(cwd, framework);
173471
+ if (specs.length === 0)
173472
+ depNote = "No extra dependencies needed.";
173473
+ else if (succeeded)
173474
+ depNote = `Installed ${specs.length} package(s).`;
173475
+ else
173476
+ depNote = "Dependency install failed \u2014 run `bun add` manually.";
173477
+ }
173478
+ const edit = applyAbsoluteConfigEdit(project.configPath, {
173479
+ name: `${framework}Directory`,
173480
+ value: dirRel
173481
+ });
173482
+ if (!edit.ok) {
173483
+ fail2(`Could not update absolute.config.ts: ${edit.message}`);
173484
+ return;
173485
+ }
173486
+ const updated = {
173487
+ ...project,
173488
+ frameworkDirs: { ...project.frameworkDirs, [framework]: dirAbs }
173489
+ };
173490
+ const created = [];
173491
+ if (framework === "htmx") {
173492
+ const content = readVendoredHtmx();
173493
+ if (content)
173494
+ created.push(writeHtmx(dirAbs, content));
173495
+ }
173496
+ const outcome = generatePage(updated, framework, `${framework}-example`);
173497
+ write2(`${colors.green}\u2713${colors.reset} Added ${frameworks2[framework].label} to your project
173498
+ `);
173499
+ write2(` ${depNote}`);
173500
+ printList2("Created", [...created, ...outcome.created], cwd);
173501
+ printList2("Updated", [project.configPath, ...outcome.updated], cwd);
173502
+ if (outcome.manual) {
173503
+ write2(`
173504
+ ${colors.yellow}Couldn't auto-wire the route${colors.reset} (${outcome.manual.reason}). Add manually:
173505
+ `);
173506
+ for (const line of outcome.manual.snippet.split(`
173507
+ `))
173508
+ write2(` ${line}`);
173509
+ }
173510
+ if (outcome.route)
173511
+ write2(`
173512
+ ${colors.dim}Route${colors.reset} ${outcome.route}`);
173513
+ write2(`
173514
+ ${colors.dim}Next${colors.reset} run \`absolute prettier --write\`, then \`absolute dev\``);
173515
+ };
173516
+ var init_add = __esm(() => {
173517
+ init_editAbsoluteConfig();
173518
+ init_context();
173519
+ init_generatePage();
173520
+ init_frameworkKey();
173521
+ init_frameworks();
173522
+ init_dependencies();
173523
+ init_install();
173524
+ init_tuiPrimitives();
173525
+ });
173526
+
173527
+ // src/cli/scripts/remove.ts
173528
+ var exports_remove = {};
173529
+ __export(exports_remove, {
173530
+ runRemove: () => runRemove
173531
+ });
173532
+ import { existsSync as existsSync21, readFileSync as readFileSync21 } from "fs";
173533
+ import { relative as relative7 } from "path";
173534
+ var write3 = (text) => process.stdout.write(`${text}
173535
+ `), fail3 = (message) => {
173536
+ process.stdout.write(`${colors.red}${message}${colors.reset}
173537
+ `);
173538
+ process.exitCode = 1;
173539
+ }, HANDLER_NAME, referencingFiles = (serverEntry, handler) => {
173540
+ const candidates = [findRoutingFile(serverEntry), serverEntry];
173541
+ const seen = new Set;
173542
+ return candidates.filter((file) => {
173543
+ if (file === null || seen.has(file) || !existsSync21(file))
173544
+ return false;
173545
+ seen.add(file);
173546
+ return readFileSync21(file, "utf-8").includes(handler);
173547
+ });
173548
+ }, runRemove = async (args) => {
173549
+ const [framework] = args.filter((arg) => !arg.startsWith("--"));
173550
+ const prune = args.includes("--prune");
173551
+ if (!framework || !isFrameworkKey(framework)) {
173552
+ fail3("Usage: absolute remove <react|svelte|vue|angular|html|htmx> [--prune]");
173553
+ return;
173554
+ }
173555
+ const cwd = process.cwd();
173556
+ let project;
173557
+ try {
173558
+ project = await resolveProject(cwd);
173559
+ } catch (error) {
173560
+ fail3(error instanceof Error ? error.message : String(error));
173561
+ return;
173562
+ }
173563
+ if (!project.configPath) {
173564
+ fail3("No absolute.config.ts found in this project.");
173565
+ return;
173566
+ }
173567
+ const frameworkDir = project.frameworkDirs[framework];
173568
+ if (!frameworkDir) {
173569
+ write3(`${colors.yellow}!${colors.reset} ${frameworks2[framework].label} is not configured \u2014 nothing to remove.`);
173570
+ return;
173571
+ }
173572
+ const edit = applyAbsoluteConfigEdit(project.configPath, {
173573
+ name: `${framework}Directory`,
173574
+ remove: true
173575
+ });
173576
+ if (!edit.ok) {
173577
+ fail3(`Could not update absolute.config.ts: ${edit.message}`);
173578
+ return;
173579
+ }
173580
+ write3(`${colors.green}\u2713${colors.reset} Removed ${framework}Directory from absolute.config.ts
173581
+ `);
173582
+ write3(` ${colors.dim}Kept${colors.reset} ${relative7(cwd, frameworkDir)} \u2014 delete its source manually if no longer needed.`);
173583
+ const refs = referencingFiles(project.serverEntry, HANDLER_NAME[framework]);
173584
+ for (const file of refs) {
173585
+ write3(` ${colors.yellow}Still references${colors.reset} ${relative7(cwd, file)} (calls ${HANDLER_NAME[framework]})`);
173586
+ }
173587
+ const deps = frameworkDependencyNames(framework);
173588
+ if (prune && deps.length > 0) {
173589
+ Bun.spawnSync(["bun", "remove", ...deps], {
173590
+ cwd,
173591
+ stderr: "inherit",
173592
+ stdout: "inherit"
173593
+ });
173594
+ write3(` ${colors.dim}Pruned${colors.reset} ${deps.length} package(s).`);
173595
+ } else if (deps.length > 0) {
173596
+ write3(`
173597
+ Run \`absolute remove ${framework} --prune\` to also uninstall: ${deps.join(", ")}`);
173598
+ }
173599
+ };
173600
+ var init_remove = __esm(() => {
173601
+ init_editAbsoluteConfig();
173602
+ init_context();
173603
+ init_dependencies();
173604
+ init_frameworkKey();
173605
+ init_frameworks();
173606
+ init_routeWiring();
173607
+ init_tuiPrimitives();
173608
+ HANDLER_NAME = {
173609
+ angular: "handleAngularPageRequest",
173610
+ html: "handleHTMLPageRequest",
173611
+ htmx: "handleHTMXPageRequest",
173612
+ react: "handleReactPageRequest",
173613
+ svelte: "handleSveltePageRequest",
173614
+ vue: "handleVuePageRequest"
173615
+ };
173616
+ });
173617
+
173618
+ // src/cli/scripts/htmx.ts
173619
+ var exports_htmx = {};
173620
+ __export(exports_htmx, {
173621
+ runHtmx: () => runHtmx
173622
+ });
173623
+ var write4 = (text) => process.stdout.write(`${text}
173624
+ `), fail4 = (message) => {
173625
+ process.stdout.write(`${colors.red}${message}${colors.reset}
173626
+ `);
173627
+ process.exitCode = 1;
173628
+ }, runHtmx = async (args) => {
173629
+ const target = args.find((arg) => !arg.startsWith("--"));
173630
+ const cwd = process.cwd();
173631
+ let project;
173632
+ try {
173633
+ project = await resolveProject(cwd);
173634
+ } catch (error) {
173635
+ fail4(error instanceof Error ? error.message : String(error));
173636
+ return;
173637
+ }
173638
+ const htmxDir = project.frameworkDirs.htmx;
173639
+ if (!htmxDir) {
173640
+ fail4("htmx isn't configured. Run `absolute add htmx` first.");
173641
+ return;
173642
+ }
173643
+ if (target === undefined) {
173644
+ const current = installedHtmxVersion(htmxDir);
173645
+ write4(` ${colors.dim}installed${colors.reset} ${current ?? `${colors.yellow}not installed${colors.reset}`}`);
173646
+ write4(` ${colors.dim}vendored${colors.reset} ${VENDORED_HTMX_VERSION}`);
173647
+ write4(`
173648
+ Upgrade with \`absolute htmx <version>\` (e.g. \`absolute htmx latest\`).`);
173649
+ return;
173650
+ }
173651
+ try {
173652
+ const content = await fetchHtmx(target);
173653
+ const file = writeHtmx(htmxDir, content);
173654
+ const version2 = detectHtmxVersion(content) ?? target;
173655
+ write4(`${colors.green}\u2713${colors.reset} Installed htmx ${version2} \u2192 ${file}`);
173656
+ } catch (error) {
173657
+ fail4(error instanceof Error ? error.message : String(error));
173658
+ }
173659
+ };
173660
+ var init_htmx = __esm(() => {
173661
+ init_context();
173662
+ init_install();
173663
+ init_tuiPrimitives();
173664
+ });
173665
+
173194
173666
  // src/cli/scripts/env.ts
173195
173667
  var exports_env = {};
173196
173668
  __export(exports_env, {
@@ -173198,15 +173670,15 @@ __export(exports_env, {
173198
173670
  runEnv: () => runEnv,
173199
173671
  collectEnvVars: () => collectEnvVars
173200
173672
  });
173201
- import { existsSync as existsSync20, readFileSync as readFileSync19 } from "fs";
173202
- import { join as join20 } from "path";
173673
+ import { existsSync as existsSync22, readFileSync as readFileSync22 } from "fs";
173674
+ import { join as join22 } from "path";
173203
173675
  var {env: env3, Glob: Glob3 } = globalThis.Bun;
173204
- var EXTENSIONS = "ts,tsx,js,jsx,mjs,cjs,svelte,vue", STATUS_WIDTH, keysInFile = (text) => [...text.matchAll(/getEnv\(\s*['"]([^'"]+)['"]\s*\)/g)].map((match) => match[1]).filter((key) => key !== undefined), scanPatterns = () => existsSync20(join20(process.cwd(), "src")) ? [`src/**/*.{${EXTENSIONS}}`] : [`*.{${EXTENSIONS}}`], scanEnvUsage = async () => {
173676
+ var EXTENSIONS = "ts,tsx,js,jsx,mjs,cjs,svelte,vue", STATUS_WIDTH, keysInFile = (text) => [...text.matchAll(/getEnv\(\s*['"]([^'"]+)['"]\s*\)/g)].map((match) => match[1]).filter((key) => key !== undefined), scanPatterns = () => existsSync22(join22(process.cwd(), "src")) ? [`src/**/*.{${EXTENSIONS}}`] : [`*.{${EXTENSIONS}}`], scanEnvUsage = async () => {
173205
173677
  const scans = scanPatterns().map((pattern) => Array.fromAsync(new Glob3(pattern).scan({ cwd: process.cwd() })));
173206
173678
  const files = (await Promise.all(scans)).flat();
173207
173679
  const usage = new Map;
173208
173680
  files.forEach((file) => {
173209
- keysInFile(readFileSync19(file, "utf-8")).forEach((key) => {
173681
+ keysInFile(readFileSync22(file, "utf-8")).forEach((key) => {
173210
173682
  usage.set(key, [...usage.get(key) ?? [], file]);
173211
173683
  });
173212
173684
  });
@@ -173264,7 +173736,7 @@ __export(exports_logs, {
173264
173736
  });
173265
173737
  import {
173266
173738
  closeSync as closeSync2,
173267
- existsSync as existsSync21,
173739
+ existsSync as existsSync23,
173268
173740
  openSync as openSync4,
173269
173741
  readSync as readSync2,
173270
173742
  statSync as statSync2,
@@ -173331,7 +173803,7 @@ var DEFAULT_LINES = 40, POLL_MS = 250, LINES_FLAG_SPAN = 2, readFrom = (path, st
173331
173803
  printAvailable(instances);
173332
173804
  return;
173333
173805
  }
173334
- if (match.logFile === null || !existsSync21(match.logFile)) {
173806
+ if (match.logFile === null || !existsSync23(match.logFile)) {
173335
173807
  printDim2(`"${name}" has no captured log (untracked, or started outside the CLI).`);
173336
173808
  return;
173337
173809
  }
@@ -173354,10 +173826,10 @@ var exports_doctor = {};
173354
173826
  __export(exports_doctor, {
173355
173827
  runDoctor: () => runDoctor
173356
173828
  });
173357
- import { existsSync as existsSync22 } from "fs";
173829
+ import { existsSync as existsSync24 } from "fs";
173358
173830
  import { createRequire } from "module";
173359
173831
  import { arch as arch4, platform as platform5 } from "os";
173360
- import { join as join21 } from "path";
173832
+ import { join as join23 } from "path";
173361
173833
  var FRAMEWORK_FIELDS2, projectRequire, check = (status2, label, detail) => ({
173362
173834
  detail,
173363
173835
  label,
@@ -173392,7 +173864,7 @@ var FRAMEWORK_FIELDS2, projectRequire, check = (status2, label, detail) => ({
173392
173864
  return [];
173393
173865
  const label = `${field.replace("Directory", "")} pages`;
173394
173866
  return [
173395
- existsSync22(join21(process.cwd(), dir)) ? check("ok", label, dir) : check("fail", label, `${dir} (missing)`)
173867
+ existsSync24(join23(process.cwd(), dir)) ? check("ok", label, dir) : check("fail", label, `${dir} (missing)`)
173396
173868
  ];
173397
173869
  }), envCheck = async () => {
173398
173870
  const vars = await collectEnvVars();
@@ -173462,7 +173934,7 @@ var init_doctor = __esm(() => {
173462
173934
  "htmlDirectory",
173463
173935
  "htmxDirectory"
173464
173936
  ];
173465
- projectRequire = createRequire(join21(process.cwd(), "package.json"));
173937
+ projectRequire = createRequire(join23(process.cwd(), "package.json"));
173466
173938
  STATUS_MARK = {
173467
173939
  fail: `${colors.red}\u2717${colors.reset}`,
173468
173940
  ok: `${colors.green}\u2713${colors.reset}`,
@@ -173543,8 +174015,8 @@ var init_routes = __esm(() => {
173543
174015
  });
173544
174016
 
173545
174017
  // src/build/externalAssetPlugin.ts
173546
- import { copyFileSync as copyFileSync2, existsSync as existsSync23, mkdirSync as mkdirSync11, statSync as statSync3 } from "fs";
173547
- import { basename as basename6, dirname as dirname10, join as join22, resolve as resolve13 } from "path";
174018
+ import { copyFileSync as copyFileSync2, existsSync as existsSync25, mkdirSync as mkdirSync12, statSync as statSync3 } from "fs";
174019
+ import { basename as basename6, dirname as dirname11, join as join24, resolve as resolve13 } from "path";
173548
174020
  var createExternalAssetPlugin = (outDir, userSourceRoots = []) => ({
173549
174021
  name: "absolute-external-asset",
173550
174022
  setup(bld) {
@@ -173559,20 +174031,20 @@ var createExternalAssetPlugin = (outDir, userSourceRoots = []) => ({
173559
174031
  return;
173560
174032
  urlPattern.lastIndex = 0;
173561
174033
  let match;
173562
- const sourceDir = dirname10(args.path);
174034
+ const sourceDir = dirname11(args.path);
173563
174035
  while ((match = urlPattern.exec(source)) !== null) {
173564
174036
  const relPath = match[1];
173565
174037
  if (!relPath)
173566
174038
  continue;
173567
174039
  const assetPath = resolve13(sourceDir, relPath);
173568
- if (!existsSync23(assetPath))
174040
+ if (!existsSync25(assetPath))
173569
174041
  continue;
173570
174042
  if (!statSync3(assetPath).isFile())
173571
174043
  continue;
173572
- const targetPath = join22(outDir, basename6(assetPath));
173573
- if (existsSync23(targetPath))
174044
+ const targetPath = join24(outDir, basename6(assetPath));
174045
+ if (existsSync25(targetPath))
173574
174046
  continue;
173575
- mkdirSync11(dirname10(targetPath), { recursive: true });
174047
+ mkdirSync12(dirname11(targetPath), { recursive: true });
173576
174048
  copyFileSync2(assetPath, targetPath);
173577
174049
  }
173578
174050
  return;
@@ -173590,16 +174062,16 @@ __export(exports_compile, {
173590
174062
  var {env: env4 } = globalThis.Bun;
173591
174063
  import {
173592
174064
  cpSync,
173593
- existsSync as existsSync24,
173594
- mkdirSync as mkdirSync12,
174065
+ existsSync as existsSync26,
174066
+ mkdirSync as mkdirSync13,
173595
174067
  readdirSync as readdirSync6,
173596
- readFileSync as readFileSync20,
174068
+ readFileSync as readFileSync23,
173597
174069
  rmSync as rmSync5,
173598
174070
  statSync as statSync4,
173599
174071
  unlinkSync as unlinkSync4,
173600
- writeFileSync as writeFileSync11
174072
+ writeFileSync as writeFileSync13
173601
174073
  } from "fs";
173602
- import { basename as basename7, dirname as dirname11, join as join23, relative as relative6, resolve as resolve14 } from "path";
174074
+ import { basename as basename7, dirname as dirname12, join as join25, relative as relative8, resolve as resolve14 } from "path";
173603
174075
  var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[cli]\x1B[0m ${color}${message}\x1B[0m`, compileBanner = (version2) => {
173604
174076
  const resolvedVersion = version2 || "unknown";
173605
174077
  console.log("");
@@ -173612,7 +174084,7 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173612
174084
  const entry = pending.pop();
173613
174085
  if (!entry)
173614
174086
  continue;
173615
- const fullPath = join23(entry.parentPath, entry.name);
174087
+ const fullPath = join25(entry.parentPath, entry.name);
173616
174088
  if (entry.isDirectory())
173617
174089
  pending = pending.concat(readdirSync6(fullPath, { withFileTypes: true }));
173618
174090
  else
@@ -173632,7 +174104,7 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173632
174104
  const entry = pending.pop();
173633
174105
  if (!entry)
173634
174106
  continue;
173635
- const fullPath = join23(entry.parentPath, entry.name);
174107
+ const fullPath = join25(entry.parentPath, entry.name);
173636
174108
  if (entry.isDirectory()) {
173637
174109
  if (SERVER_RUNTIME_SCAN_SKIP_DIRS.has(entry.name))
173638
174110
  continue;
@@ -173646,8 +174118,8 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173646
174118
  const copied = new Set;
173647
174119
  const normalizedOutdir = resolve14(outdir);
173648
174120
  const copyReference = (filePath, relPath) => {
173649
- const assetSource = resolve14(dirname11(filePath), relPath);
173650
- if (!existsSync24(assetSource) || !statSync4(assetSource).isFile())
174121
+ const assetSource = resolve14(dirname12(filePath), relPath);
174122
+ if (!existsSync26(assetSource) || !statSync4(assetSource).isFile())
173651
174123
  return;
173652
174124
  const assetTarget = resolve14(normalizedOutdir, relPath.replace(/^\.\//, ""));
173653
174125
  if (assetTarget !== normalizedOutdir && !assetTarget.startsWith(`${normalizedOutdir}/`))
@@ -173655,11 +174127,11 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173655
174127
  if (copied.has(assetTarget))
173656
174128
  return;
173657
174129
  copied.add(assetTarget);
173658
- mkdirSync12(dirname11(assetTarget), { recursive: true });
174130
+ mkdirSync13(dirname12(assetTarget), { recursive: true });
173659
174131
  cpSync(assetSource, assetTarget, { force: true });
173660
174132
  };
173661
174133
  for (const filePath of collectProjectSourceFiles(process.cwd())) {
173662
- const source = readFileSync20(filePath, "utf-8");
174134
+ const source = readFileSync23(filePath, "utf-8");
173663
174135
  SERVER_RUNTIME_ASSET_RE.lastIndex = 0;
173664
174136
  let match;
173665
174137
  while ((match = SERVER_RUNTIME_ASSET_RE.exec(source)) !== null) {
@@ -173688,7 +174160,7 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173688
174160
  }
173689
174161
  }, readPackageVersion4 = (candidate) => {
173690
174162
  try {
173691
- const pkg = JSON.parse(readFileSync20(candidate, "utf-8"));
174163
+ const pkg = JSON.parse(readFileSync23(candidate, "utf-8"));
173692
174164
  if (pkg.name !== "@absolutejs/absolute")
173693
174165
  return null;
173694
174166
  const ver = pkg.version;
@@ -173731,7 +174203,7 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173731
174203
  resolve14(import.meta.dir, "..", "..", "..", "src", "react", "jsxDevRuntimeCompat.ts")
173732
174204
  ];
173733
174205
  for (const candidate of candidates) {
173734
- if (existsSync24(candidate))
174206
+ if (existsSync26(candidate))
173735
174207
  return candidate;
173736
174208
  }
173737
174209
  return resolve14(import.meta.dir, "..", "..", "react", "jsxDevRuntimeCompat.js");
@@ -173747,7 +174219,7 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173747
174219
  return true;
173748
174220
  }, tryReadNodePackageJson = (packageDir) => {
173749
174221
  try {
173750
- return JSON.parse(readFileSync20(join23(packageDir, "package.json"), "utf-8"));
174222
+ return JSON.parse(readFileSync23(join25(packageDir, "package.json"), "utf-8"));
173751
174223
  } catch {
173752
174224
  return null;
173753
174225
  }
@@ -173759,13 +174231,13 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173759
174231
  if (!pkg)
173760
174232
  return;
173761
174233
  seen.add(specifier);
173762
- const destDir = join23(outdir, "node_modules", ...specifier.split("/"));
174234
+ const destDir = join25(outdir, "node_modules", ...specifier.split("/"));
173763
174235
  rmSync5(destDir, { force: true, recursive: true });
173764
174236
  cpSync(srcDir, destDir, {
173765
174237
  force: true,
173766
174238
  recursive: true,
173767
174239
  filter(source) {
173768
- const rel = relative6(srcDir, source);
174240
+ const rel = relative8(srcDir, source);
173769
174241
  const [firstSegment] = rel.split(/[\\/]/);
173770
174242
  return firstSegment !== "node_modules" && firstSegment !== ".git";
173771
174243
  }
@@ -173782,7 +174254,7 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173782
174254
  if (!buildConfig.angularDirectory)
173783
174255
  return;
173784
174256
  const angularScopeDir = resolve14(process.cwd(), "node_modules", "@angular");
173785
- const angularPackages = existsSync24(angularScopeDir) ? readdirSync6(angularScopeDir, { withFileTypes: true }).filter((entry) => entry.isDirectory()).filter((entry) => entry.name !== "compiler-cli").map((entry) => `@angular/${entry.name}`) : [];
174257
+ const angularPackages = existsSync26(angularScopeDir) ? readdirSync6(angularScopeDir, { withFileTypes: true }).filter((entry) => entry.isDirectory()).filter((entry) => entry.name !== "compiler-cli").map((entry) => `@angular/${entry.name}`) : [];
173786
174258
  const roots = new Set([...angularPackages, "rxjs", "tslib", "typescript"]);
173787
174259
  const seen = new Set;
173788
174260
  for (const specifier of roots) {
@@ -173799,15 +174271,15 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173799
174271
  }
173800
174272
  copyAngularRuntimePackages(buildConfig, outdir);
173801
174273
  }, collectRuntimePackageSpecifiers = (distDir) => {
173802
- const nodeModulesDir = join23(distDir, "node_modules");
173803
- if (!existsSync24(nodeModulesDir))
174274
+ const nodeModulesDir = join25(distDir, "node_modules");
174275
+ if (!existsSync26(nodeModulesDir))
173804
174276
  return [];
173805
174277
  const specifiers = [];
173806
174278
  for (const entry of readdirSync6(nodeModulesDir, { withFileTypes: true })) {
173807
174279
  if (!entry.isDirectory())
173808
174280
  continue;
173809
174281
  if (entry.name.startsWith("@")) {
173810
- const scopeDir = join23(nodeModulesDir, entry.name);
174282
+ const scopeDir = join25(nodeModulesDir, entry.name);
173811
174283
  for (const scopedEntry of readdirSync6(scopeDir, {
173812
174284
  withFileTypes: true
173813
174285
  })) {
@@ -173821,7 +174293,7 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173821
174293
  }
173822
174294
  return specifiers.sort((a, b) => b.length - a.length);
173823
174295
  }, ensureRelativeModuleSpecifier = (fromFile, toFile) => {
173824
- const rel = relative6(dirname11(fromFile), toFile).replace(/\\/g, "/");
174296
+ const rel = relative8(dirname12(fromFile), toFile).replace(/\\/g, "/");
173825
174297
  return rel.startsWith(".") ? rel : `./${rel}`;
173826
174298
  }, pickExportEntry = (value) => {
173827
174299
  if (typeof value === "string")
@@ -173839,18 +174311,18 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173839
174311
  const packageSpecifier = packageSpecifiers.find((root) => specifier === root || specifier.startsWith(`${root}/`));
173840
174312
  if (!packageSpecifier)
173841
174313
  return null;
173842
- const packageDir = join23(distDir, "node_modules", ...packageSpecifier.split("/"));
174314
+ const packageDir = join25(distDir, "node_modules", ...packageSpecifier.split("/"));
173843
174315
  const subpath = specifier.slice(packageSpecifier.length);
173844
- const subPackageDir = subpath ? join23(packageDir, ...subpath.slice(1).split("/")) : null;
173845
- const resolvedPackageDir = subPackageDir && existsSync24(join23(subPackageDir, "package.json")) ? subPackageDir : packageDir;
173846
- const packageJsonPath = join23(resolvedPackageDir, "package.json");
173847
- if (!existsSync24(packageJsonPath))
174316
+ const subPackageDir = subpath ? join25(packageDir, ...subpath.slice(1).split("/")) : null;
174317
+ const resolvedPackageDir = subPackageDir && existsSync26(join25(subPackageDir, "package.json")) ? subPackageDir : packageDir;
174318
+ const packageJsonPath = join25(resolvedPackageDir, "package.json");
174319
+ if (!existsSync26(packageJsonPath))
173848
174320
  return null;
173849
- const pkg = JSON.parse(readFileSync20(packageJsonPath, "utf-8"));
174321
+ const pkg = JSON.parse(readFileSync23(packageJsonPath, "utf-8"));
173850
174322
  const exportKey = resolvedPackageDir !== subPackageDir && subpath ? `.${subpath}` : ".";
173851
174323
  const rootExport = pkg.exports?.[exportKey];
173852
174324
  const entry = pickExportEntry(rootExport) ?? (resolvedPackageDir === subPackageDir || !subpath ? pkg.module ?? pkg.main ?? "index.js" : `.${subpath}`);
173853
- return join23(resolvedPackageDir, entry);
174325
+ return join25(resolvedPackageDir, entry);
173854
174326
  }, RUNTIME_JS_EXTENSIONS, MODULE_SPECIFIER_RE, isRuntimeJsFile = (filePath) => RUNTIME_JS_EXTENSIONS.some((extension) => filePath.endsWith(extension)), isNodeModulesPath = (filePath) => filePath.split(/[\\/]/).includes("node_modules"), isFile = (filePath) => {
173855
174327
  try {
173856
174328
  return statSync4(filePath).isFile();
@@ -173863,16 +174335,16 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173863
174335
  const candidates = [
173864
174336
  candidate,
173865
174337
  ...RUNTIME_JS_EXTENSIONS.map((extension) => `${candidate}${extension}`),
173866
- ...RUNTIME_JS_EXTENSIONS.map((extension) => join23(candidate, `index${extension}`))
174338
+ ...RUNTIME_JS_EXTENSIONS.map((extension) => join25(candidate, `index${extension}`))
173867
174339
  ];
173868
174340
  return candidates.find((filePath) => isRuntimeJsFile(filePath) && isFile(filePath)) ?? null;
173869
174341
  }, findContainingRuntimePackageDir = (filePath) => {
173870
- let dir = dirname11(filePath);
173871
- while (dir !== dirname11(dir)) {
173872
- if (isNodeModulesPath(dir) && existsSync24(join23(dir, "package.json"))) {
174342
+ let dir = dirname12(filePath);
174343
+ while (dir !== dirname12(dir)) {
174344
+ if (isNodeModulesPath(dir) && existsSync26(join25(dir, "package.json"))) {
173873
174345
  return dir;
173874
174346
  }
173875
- dir = dirname11(dir);
174347
+ dir = dirname12(dir);
173876
174348
  }
173877
174349
  return null;
173878
174350
  }, resolvePackageImportEntryFile = (fromFile, specifier) => {
@@ -173885,7 +174357,7 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173885
174357
  const entry = pickExportEntry(pkg?.imports?.[specifier]);
173886
174358
  if (!entry)
173887
174359
  return null;
173888
- return join23(packageDir, entry);
174360
+ return join25(packageDir, entry);
173889
174361
  }, collectRuntimeRewriteRoots = (distDir) => collectFiles2(distDir).filter((filePath) => isRuntimeJsFile(filePath) && !isNodeModulesPath(filePath)), rewriteRuntimeModuleSpecifiers = (distDir) => {
173890
174362
  const packageSpecifiers = collectRuntimePackageSpecifiers(distDir);
173891
174363
  if (packageSpecifiers.length === 0)
@@ -173904,10 +174376,10 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173904
174376
  if (!filePath || seen.has(filePath))
173905
174377
  continue;
173906
174378
  seen.add(filePath);
173907
- const source = readFileSync20(filePath, "utf-8");
174379
+ const source = readFileSync23(filePath, "utf-8");
173908
174380
  const rewritten = source.replace(MODULE_SPECIFIER_RE, (match, prefix, quote, specifier) => {
173909
174381
  if (typeof specifier === "string" && specifier.startsWith(".")) {
173910
- enqueue(resolveRuntimeJsFile(resolve14(dirname11(filePath), specifier)));
174382
+ enqueue(resolveRuntimeJsFile(resolve14(dirname12(filePath), specifier)));
173911
174383
  return match;
173912
174384
  }
173913
174385
  const packageImportTarget = resolveRuntimeJsFile(resolvePackageImportEntryFile(filePath, specifier) ?? "");
@@ -173922,7 +174394,7 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173922
174394
  return `${prefix}${quote}${ensureRelativeModuleSpecifier(filePath, target)}${quote}`;
173923
174395
  });
173924
174396
  if (rewritten !== source) {
173925
- writeFileSync11(filePath, rewritten);
174397
+ writeFileSync13(filePath, rewritten);
173926
174398
  }
173927
174399
  }
173928
174400
  }, generateEntrypoint = (distDir, serverEntry, prerenderMap, version2, buildConfig) => {
@@ -173935,25 +174407,25 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173935
174407
  "_compile_entrypoint.ts"
173936
174408
  ]);
173937
174409
  const embeddedFiles = allFiles.filter((file) => {
173938
- const rel = relative6(distDir, file);
174410
+ const rel = relative8(distDir, file);
173939
174411
  if (embeddedSkip.has(rel))
173940
174412
  return false;
173941
174413
  return true;
173942
174414
  });
173943
- const clientFiles = embeddedFiles.filter((file) => shouldEmbedCompiledAsset(relative6(distDir, file), assetSkip));
174415
+ const clientFiles = embeddedFiles.filter((file) => shouldEmbedCompiledAsset(relative8(distDir, file), assetSkip));
173944
174416
  const imports = [];
173945
174417
  const embeddedMappings = [];
173946
174418
  const mappings = [];
173947
174419
  const embeddedVarMap = new Map;
173948
174420
  embeddedFiles.forEach((filePath, idx) => {
173949
- const rel = relative6(distDir, filePath).replace(/\\/g, "/");
174421
+ const rel = relative8(distDir, filePath).replace(/\\/g, "/");
173950
174422
  const varName = `__a${idx}`;
173951
174423
  embeddedVarMap.set(rel, varName);
173952
174424
  imports.push(`import ${varName} from "./${rel}" with { type: "file" };`);
173953
174425
  embeddedMappings.push(` ["${rel}", ${varName}],`);
173954
174426
  });
173955
174427
  clientFiles.forEach((filePath) => {
173956
- const rel = relative6(distDir, filePath).replace(/\\/g, "/");
174428
+ const rel = relative8(distDir, filePath).replace(/\\/g, "/");
173957
174429
  const varName = embeddedVarMap.get(rel);
173958
174430
  if (!varName)
173959
174431
  return;
@@ -173967,7 +174439,7 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
173967
174439
  const pageVarMap = new Map;
173968
174440
  const prerenderEntries = Array.from(prerenderMap.entries());
173969
174441
  prerenderEntries.forEach(([route, filePath]) => {
173970
- const rel = relative6(distDir, filePath).replace(/\\/g, "/");
174442
+ const rel = relative8(distDir, filePath).replace(/\\/g, "/");
173971
174443
  const varName = embeddedVarMap.get(rel);
173972
174444
  if (varName)
173973
174445
  pageVarMap.set(route, varName);
@@ -174442,11 +174914,11 @@ console.log(\`
174442
174914
  process.exit(1);
174443
174915
  }
174444
174916
  const outputPath = resolve14(resolvedOutdir, `${entryName}.js`);
174445
- if (!existsSync24(outputPath)) {
174917
+ if (!existsSync26(outputPath)) {
174446
174918
  console.error(cliTag4("\x1B[31m", `Expected output not found: ${outputPath}`));
174447
174919
  process.exit(1);
174448
174920
  }
174449
- if (existsSync24(resolve14(resolvedOutdir, "angular", "vendor", "server"))) {
174921
+ if (existsSync26(resolve14(resolvedOutdir, "angular", "vendor", "server"))) {
174450
174922
  const vendorDir = resolve14(resolvedOutdir, "angular", "vendor", "server");
174451
174923
  const vendorEntries = readdirSync6(vendorDir).filter((f) => f.endsWith(".js"));
174452
174924
  const angularServerVendorPaths = {};
@@ -174456,7 +174928,7 @@ console.log(\`
174456
174928
  if (scope !== "angular" || rest.length === 0)
174457
174929
  continue;
174458
174930
  const specifier = `@angular/${rest.join("/")}`;
174459
- const relPath = relative6(dirname11(outputPath), resolve14(vendorDir, file));
174931
+ const relPath = relative8(dirname12(outputPath), resolve14(vendorDir, file));
174460
174932
  angularServerVendorPaths[specifier] = relPath.startsWith(".") ? relPath : `./${relPath}`;
174461
174933
  }
174462
174934
  if (Object.keys(angularServerVendorPaths).length > 0) {
@@ -174468,7 +174940,7 @@ console.log(\`
174468
174940
  copyServerRuntimeAssetReferences(resolvedOutdir);
174469
174941
  const prerenderStart = performance.now();
174470
174942
  process.stdout.write(cliTag4("\x1B[36m", "Pre-rendering pages"));
174471
- rmSync5(join23(resolvedOutdir, "_prerendered"), {
174943
+ rmSync5(join25(resolvedOutdir, "_prerendered"), {
174472
174944
  force: true,
174473
174945
  recursive: true
174474
174946
  });
@@ -174487,9 +174959,9 @@ console.log(\`
174487
174959
  const compileStart = performance.now();
174488
174960
  process.stdout.write(cliTag4("\x1B[36m", "Compiling standalone executable"));
174489
174961
  const entrypointCode = generateEntrypoint(resolvedOutdir, serverEntry, prerenderMap, absoluteVersion, buildConfig);
174490
- const entrypointPath = join23(resolvedOutdir, "_compile_entrypoint.ts");
174962
+ const entrypointPath = join25(resolvedOutdir, "_compile_entrypoint.ts");
174491
174963
  await Bun.write(entrypointPath, entrypointCode);
174492
- mkdirSync12(dirname11(resolvedOutfile), { recursive: true });
174964
+ mkdirSync13(dirname12(resolvedOutfile), { recursive: true });
174493
174965
  const result = await Bun.build({
174494
174966
  compile: { outfile: resolvedOutfile },
174495
174967
  define: { "process.env.NODE_ENV": '"production"' },
@@ -174583,11 +175055,11 @@ var exports_typecheck = {};
174583
175055
  __export(exports_typecheck, {
174584
175056
  typecheck: () => typecheck
174585
175057
  });
174586
- import { resolve as resolve15, join as join24 } from "path";
174587
- import { existsSync as existsSync25, readFileSync as readFileSync21 } from "fs";
175058
+ import { resolve as resolve15, join as join26 } from "path";
175059
+ import { existsSync as existsSync27, readFileSync as readFileSync24 } from "fs";
174588
175060
  import { mkdir as mkdir2, writeFile } from "fs/promises";
174589
175061
  var isCommandService3 = (service) => service.kind === "command" || Array.isArray(service.command), resolveConfigPath = (configPath2) => resolve15(configPath2 ?? process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts"), getTypecheckTargets = async (configPath2) => {
174590
- if (!existsSync25(resolveConfigPath(configPath2))) {
175062
+ if (!existsSync27(resolveConfigPath(configPath2))) {
174591
175063
  return [{}];
174592
175064
  }
174593
175065
  const rawConfig = await loadRawConfig(configPath2);
@@ -174608,7 +175080,7 @@ var isCommandService3 = (service) => service.kind === "command" || Array.isArray
174608
175080
  return { exitCode, name, output: (stdout + stderr).trim() };
174609
175081
  }, shellEscape = (value) => `'${value.replaceAll("'", "'\\''")}'`, runShell = async (name, command) => run(name, ["/bin/bash", "-lc", command]), findBin = (name) => {
174610
175082
  const local = resolve15("node_modules", ".bin", name);
174611
- return existsSync25(local) ? local : null;
175083
+ return existsSync27(local) ? local : null;
174612
175084
  }, ANSI_COLOR_REGEX, ANSI_PURPLE_REGEX, ANSI_CYAN_REGEX, ANSI_TOKEN_END_REGEX, stripAnsi3 = (str) => str.replace(ANSI_COLOR_REGEX, ""), formatSvelteOutput = (output) => {
174613
175085
  const cwd = `${process.cwd()}/`;
174614
175086
  const summaryMatch = stripAnsi3(output).match(/svelte-check found (\d+) error/);
@@ -174660,10 +175132,10 @@ Found ${errorCount} error${suffix}.`;
174660
175132
  resolve15(import.meta.dir, "../../types", fileName),
174661
175133
  resolve15(import.meta.dir, "../../../types", fileName)
174662
175134
  ];
174663
- return candidates.find((candidate) => existsSync25(candidate)) ?? candidates[0];
175135
+ return candidates.find((candidate) => existsSync27(candidate)) ?? candidates[0];
174664
175136
  }, ABSOLUTE_TYPECHECK_FILES, readProjectTsconfig = () => {
174665
175137
  try {
174666
- return JSON.parse(readFileSync21(resolve15("tsconfig.json"), "utf-8"));
175138
+ return JSON.parse(readFileSync24(resolve15("tsconfig.json"), "utf-8"));
174667
175139
  } catch {
174668
175140
  return {};
174669
175141
  }
@@ -174691,7 +175163,7 @@ Found ${errorCount} error${suffix}.`;
174691
175163
  console.error("\x1B[31m\u2717\x1B[0m vue-tsc is required for Vue type checking. Install it: bun add -d vue-tsc");
174692
175164
  process.exit(1);
174693
175165
  }
174694
- const vueTsconfigPath = join24(cacheDir, "tsconfig.vue-check.json");
175166
+ const vueTsconfigPath = join26(cacheDir, "tsconfig.vue-check.json");
174695
175167
  return writeFile(vueTsconfigPath, JSON.stringify({
174696
175168
  compilerOptions: {
174697
175169
  rootDir: ".."
@@ -174706,7 +175178,7 @@ Found ${errorCount} error${suffix}.`;
174706
175178
  resolve15(vueTsconfigPath),
174707
175179
  "--incremental",
174708
175180
  "--tsBuildInfoFile",
174709
- join24(cacheDir, "vue-tsc.tsbuildinfo"),
175181
+ join26(cacheDir, "vue-tsc.tsbuildinfo"),
174710
175182
  "--pretty"
174711
175183
  ]));
174712
175184
  }, buildAngularCheck = async (cacheDir, angularDir) => {
@@ -174715,7 +175187,7 @@ Found ${errorCount} error${suffix}.`;
174715
175187
  console.error("\x1B[31m\u2717\x1B[0m @angular/compiler-cli is required for Angular type checking. Install it: bun add -d @angular/compiler-cli");
174716
175188
  process.exit(1);
174717
175189
  }
174718
- const angularTsconfigPath = join24(cacheDir, "tsconfig.angular-check.json");
175190
+ const angularTsconfigPath = join26(cacheDir, "tsconfig.angular-check.json");
174719
175191
  await writeFile(angularTsconfigPath, JSON.stringify({
174720
175192
  angularCompilerOptions: {
174721
175193
  strictTemplates: true
@@ -174735,7 +175207,7 @@ Found ${errorCount} error${suffix}.`;
174735
175207
  console.error("\x1B[31m\u2717\x1B[0m typescript is required for type checking. Install it: bun add -d typescript");
174736
175208
  process.exit(1);
174737
175209
  }
174738
- const tscConfigPath = join24(cacheDir, "tsconfig.typecheck.json");
175210
+ const tscConfigPath = join26(cacheDir, "tsconfig.typecheck.json");
174739
175211
  return writeFile(tscConfigPath, JSON.stringify({
174740
175212
  compilerOptions: {
174741
175213
  rootDir: ".."
@@ -174750,7 +175222,7 @@ Found ${errorCount} error${suffix}.`;
174750
175222
  resolve15(tscConfigPath),
174751
175223
  "--incremental",
174752
175224
  "--tsBuildInfoFile",
174753
- join24(cacheDir, "tsc.tsbuildinfo"),
175225
+ join26(cacheDir, "tsc.tsbuildinfo"),
174754
175226
  "--pretty"
174755
175227
  ]));
174756
175228
  }, buildSvelteCheck = async (cacheDir, svelteDir) => {
@@ -174759,7 +175231,7 @@ Found ${errorCount} error${suffix}.`;
174759
175231
  console.error("\x1B[31m\u2717\x1B[0m svelte-check is required for Svelte type checking. Install it: bun add -d svelte-check");
174760
175232
  process.exit(1);
174761
175233
  }
174762
- const svelteTsconfigPath = join24(cacheDir, "tsconfig.svelte-check.json");
175234
+ const svelteTsconfigPath = join26(cacheDir, "tsconfig.svelte-check.json");
174763
175235
  await writeFile(svelteTsconfigPath, JSON.stringify({
174764
175236
  extends: resolve15("tsconfig.json"),
174765
175237
  files: ABSOLUTE_TYPECHECK_FILES,
@@ -178470,6 +178942,18 @@ if (command === "dev") {
178470
178942
  sendTelemetryEvent("cli:command", { command: "generate" });
178471
178943
  const { runGenerate: runGenerate2 } = await Promise.resolve().then(() => (init_generate(), exports_generate));
178472
178944
  await runGenerate2(args);
178945
+ } else if (command === "add") {
178946
+ sendTelemetryEvent("cli:command", { command: "add" });
178947
+ const { runAdd: runAdd2 } = await Promise.resolve().then(() => (init_add(), exports_add));
178948
+ await runAdd2(args);
178949
+ } else if (command === "remove") {
178950
+ sendTelemetryEvent("cli:command", { command: "remove" });
178951
+ const { runRemove: runRemove2 } = await Promise.resolve().then(() => (init_remove(), exports_remove));
178952
+ await runRemove2(args);
178953
+ } else if (command === "htmx") {
178954
+ sendTelemetryEvent("cli:command", { command: "htmx" });
178955
+ const { runHtmx: runHtmx2 } = await Promise.resolve().then(() => (init_htmx(), exports_htmx));
178956
+ await runHtmx2(args);
178473
178957
  } else if (command === "env") {
178474
178958
  sendTelemetryEvent("cli:command", { command: "env" });
178475
178959
  const { runEnv: runEnv2 } = await Promise.resolve().then(() => (init_env(), exports_env));
@@ -178527,9 +179011,12 @@ if (command === "dev") {
178527
179011
  console.error(" config [--port n] Open the unified config UI (ESLint, tsconfig, Prettier)");
178528
179012
  console.error(" doctor [--json] Diagnose the project (bun, config, framework dirs, env, port)");
178529
179013
  console.error(" env [--check] [--json] Report env vars the app reads (getEnv) and which are missing");
179014
+ console.error(" add <framework> [--no-install] Add a framework (deps, config, starter page)");
178530
179015
  console.error(" eslint Run ESLint (cached)");
178531
179016
  console.error(" generate <page|api|component> <name> [--framework <fw>] Scaffold a page, API plugin, or component");
179017
+ console.error(" htmx [version] Self-host htmx \u2014 report or install/upgrade the pinned copy");
178532
179018
  console.error(" info Print system info for bug reports");
179019
+ console.error(" remove <framework> [--prune] Remove a framework from config (keeps source)");
178533
179020
  console.error(" logs <name> [-f] [-n <lines>] Tail a running server's log by name");
178534
179021
  console.error(" ls [--sizes] [--budget <size>] [--json] List the project's pages by framework");
178535
179022
  console.error(" mem [--json] Memory report (RSS) for running servers, plus system usage");
@@ -0,0 +1,12 @@
1
+ import type { FrameworkKey } from '../generate/frameworkKey';
2
+ type FrameworkDependencies = {
3
+ dependencies: Record<string, string>;
4
+ devDependencies: Record<string, string>;
5
+ };
6
+ export declare const FRAMEWORK_DEPENDENCIES: Record<FrameworkKey, FrameworkDependencies>;
7
+ export declare const frameworkDependencyNames: (framework: FrameworkKey) => string[];
8
+ export declare const installFrameworkDependencies: (cwd: string, framework: FrameworkKey) => {
9
+ ok: boolean;
10
+ specs: string[];
11
+ };
12
+ export {};
@@ -0,0 +1,6 @@
1
+ export declare const VENDORED_HTMX_VERSION = "2.0.6";
2
+ export declare const detectHtmxVersion: (content: string) => string | null | undefined;
3
+ export declare const fetchHtmx: (version: string) => Promise<string>;
4
+ export declare const installedHtmxVersion: (htmxDir: string) => string | null | undefined;
5
+ export declare const readVendoredHtmx: () => string | null;
6
+ export declare const writeHtmx: (htmxDir: string, content: string) => string;
@@ -0,0 +1 @@
1
+ export declare const runAdd: (args: string[]) => Promise<void>;
@@ -0,0 +1 @@
1
+ export declare const runHtmx: (args: string[]) => Promise<void>;
@@ -0,0 +1 @@
1
+ export declare const runRemove: (args: string[]) => Promise<void>;
package/package.json CHANGED
@@ -411,7 +411,7 @@
411
411
  ]
412
412
  }
413
413
  },
414
- "version": "0.19.0-beta.1039",
414
+ "version": "0.19.0-beta.1040",
415
415
  "workspaces": [
416
416
  "tests/fixtures/*",
417
417
  "tests/fixtures/_packages/*"