@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.
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/cli/htmx/htmx.min.js +1 -0
- package/dist/cli/index.js +564 -77
- package/dist/src/cli/add/dependencies.d.ts +12 -0
- package/dist/src/cli/htmx/install.d.ts +6 -0
- package/dist/src/cli/scripts/add.d.ts +1 -0
- package/dist/src/cli/scripts/htmx.d.ts +1 -0
- package/dist/src/cli/scripts/remove.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
|
-
// .angular-partial-tmp-
|
|
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-
|
|
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-
|
|
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
|
|
173202
|
-
import { join as
|
|
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 = () =>
|
|
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(
|
|
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
|
|
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 || !
|
|
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
|
|
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
|
|
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
|
-
|
|
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(
|
|
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
|
|
173547
|
-
import { basename as basename6, dirname as
|
|
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 =
|
|
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 (!
|
|
174040
|
+
if (!existsSync25(assetPath))
|
|
173569
174041
|
continue;
|
|
173570
174042
|
if (!statSync3(assetPath).isFile())
|
|
173571
174043
|
continue;
|
|
173572
|
-
const targetPath =
|
|
173573
|
-
if (
|
|
174044
|
+
const targetPath = join24(outDir, basename6(assetPath));
|
|
174045
|
+
if (existsSync25(targetPath))
|
|
173574
174046
|
continue;
|
|
173575
|
-
|
|
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
|
|
173594
|
-
mkdirSync as
|
|
174065
|
+
existsSync as existsSync26,
|
|
174066
|
+
mkdirSync as mkdirSync13,
|
|
173595
174067
|
readdirSync as readdirSync6,
|
|
173596
|
-
readFileSync as
|
|
174068
|
+
readFileSync as readFileSync23,
|
|
173597
174069
|
rmSync as rmSync5,
|
|
173598
174070
|
statSync as statSync4,
|
|
173599
174071
|
unlinkSync as unlinkSync4,
|
|
173600
|
-
writeFileSync as
|
|
174072
|
+
writeFileSync as writeFileSync13
|
|
173601
174073
|
} from "fs";
|
|
173602
|
-
import { basename as basename7, dirname as
|
|
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 =
|
|
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 =
|
|
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(
|
|
173650
|
-
if (!
|
|
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
|
-
|
|
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 =
|
|
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(
|
|
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 (
|
|
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(
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
173803
|
-
if (!
|
|
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 =
|
|
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 =
|
|
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 =
|
|
174314
|
+
const packageDir = join25(distDir, "node_modules", ...packageSpecifier.split("/"));
|
|
173843
174315
|
const subpath = specifier.slice(packageSpecifier.length);
|
|
173844
|
-
const subPackageDir = subpath ?
|
|
173845
|
-
const resolvedPackageDir = subPackageDir &&
|
|
173846
|
-
const packageJsonPath =
|
|
173847
|
-
if (!
|
|
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(
|
|
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
|
|
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) =>
|
|
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 =
|
|
173871
|
-
while (dir !==
|
|
173872
|
-
if (isNodeModulesPath(dir) &&
|
|
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 =
|
|
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
|
|
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 =
|
|
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(
|
|
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
|
-
|
|
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 =
|
|
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(
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 (!
|
|
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 (
|
|
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 =
|
|
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(
|
|
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 =
|
|
174962
|
+
const entrypointPath = join25(resolvedOutdir, "_compile_entrypoint.ts");
|
|
174491
174963
|
await Bun.write(entrypointPath, entrypointCode);
|
|
174492
|
-
|
|
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
|
|
174587
|
-
import { existsSync as
|
|
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 (!
|
|
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
|
|
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) =>
|
|
175135
|
+
return candidates.find((candidate) => existsSync27(candidate)) ?? candidates[0];
|
|
174664
175136
|
}, ABSOLUTE_TYPECHECK_FILES, readProjectTsconfig = () => {
|
|
174665
175137
|
try {
|
|
174666
|
-
return JSON.parse(
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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>;
|