imba
Version:
17 lines (13 loc) • 46.3 kB
JavaScript
var rr=Object.create;var pe=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var ir=Object.getOwnPropertyNames;var sr=Object.getPrototypeOf,or=Object.prototype.hasOwnProperty;var ar=(t,e,r)=>e in t?pe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var We=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var lr=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var cr=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ir(e))!or.call(t,i)&&i!==r&&pe(t,i,{get:()=>e[i],enumerable:!(n=nr(e,i))||n.enumerable});return t};var ur=(t,e,r)=>(r=t!=null?rr(sr(t)):{},cr(e||!t||!t.__esModule?pe(r,"default",{value:t,enumerable:!0}):r,t));var D=(t,e,r)=>ar(t,typeof e!="symbol"?e+"":e,r);var Ft=lr((ue,Rt)=>{(function(t,e){typeof ue=="object"&&typeof Rt<"u"?e(ue):typeof define=="function"&&define.amd?define(["exports"],e):(t=t||self,e(t.sourcemapCodec={}))})(ue,function(t){"use strict";for(var e={},r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n=0;n<r.length;n++)e[r.charCodeAt(n)]=n;function i(o){for(var c=[],f=[],p=[0,0,0,0,0],m=0,d=0,g=0,b=0;d<o.length;d++){var y=o.charCodeAt(d);if(y===44)s(f,p,m),m=0;else if(y===59)s(f,p,m),m=0,c.push(f),f=[],p[0]=0;else{var _=e[y];if(_===void 0)throw new Error("Invalid character ("+String.fromCharCode(y)+")");var v=_&32;if(_&=31,b+=_<<g,v)g+=5;else{var k=b&1;b>>>=1,k&&(b=b===0?-2147483648:-b),p[m]+=b,m++,b=g=0}}}return s(f,p,m),c.push(f),c}function s(o,c,f){f===4?o.push([c[0],c[1],c[2],c[3]]):f===5?o.push([c[0],c[1],c[2],c[3],c[4]]):f===1&&o.push([c[0]])}function a(o){for(var c=0,f=0,p=0,m=0,d="",g=0;g<o.length;g++){var b=o[g];if(g>0&&(d+=";"),b.length!==0){for(var y=0,_=[],v=0,k=b;v<k.length;v++){var $=k[v],I=l($[0]-y);y=$[0],$.length>1&&(I+=l($[1]-c)+l($[2]-f)+l($[3]-p),c=$[1],f=$[2],p=$[3]),$.length===5&&(I+=l($[4]-m),m=$[4]),_.push(I)}d+=_.join(",")}}return d}function l(o){var c="";o=o<0?-o<<1|1:o<<1;do{var f=o&31;o>>>=5,o>0&&(f|=32),c+=r[f]}while(o>0);return c}t.decode=i,t.encode=a,Object.defineProperty(t,"__esModule",{value:!0})})});var H=Symbol.for("#__init__"),Le=Symbol.for("#__initor__"),fr=Symbol.for("#__inited__"),Ue=Symbol.for("#__hooks__");var pr=Symbol.for("#meta"),me=Symbol.for("imba");var mr=Symbol.for("#matcher");var A={IsExtension:1,IsTag:2,HasDescriptors:4,HasSuperCalls:8,HasConstructor:16,HasFields:32,HasMixins:64,HasInitor:128,HasDecorators:256,IsObjectExtension:512,IsMixin:1024},U=new Map,dr=globalThis[me]||(globalThis[me]={counter:0,classes:U});function L(t,e={}){return U.has(t)||U.set(t,{symbol:Symbol(t.name),parent:Object.getPrototypeOf(t.prototype)?.constructor,for:t,uses:null,inits:null,id:dr.counter++,...e}),U.get(t)}function Ne(t,e){return t==e||e?.[mr]?.(t)}function C(t){return t?.toIterable?.()||t}function gr(t,e){if(!t||!e)return!1;if(t.get)return e.get===t.get;if(t.set)return e.set===t.set;if(t.value)return t.value===e.value}function ze(t,e,r,n={}){let i=t.constructor;!r&&e&&(r=Object.getOwnPropertyDescriptors(e),delete r.constructor,r[H]&&(console.warn(`Cannot define plain fields when extending class ${i.name}`),delete r[H]));let s=L(i);if(s&&s.augments){let a=new Map;for(let l of Object.keys(r)){let o=Object.getOwnPropertyDescriptor(t,l);for(let c of s.augments){let f=a.get(c);f||a.set(c,f={});let p=Object.getOwnPropertyDescriptor(c.prototype,l);p&&!gr(o,p)?console.warn("wont extend",l,p,o):f[l]=r[l]}}for(let[l,o]of a)Object.keys(o).length&&ze(l.prototype,null,o)}return Object.defineProperties(t,r),t}function de(t,e){let r=L(t),n=L(e),i=n.parent;for(;i&&L(i)?.flags&A.IsMixin;){de(t,i),i=null;break}if(i&&!(t.prototype instanceof i))throw new Error(`Mixin ${e.name} has superclass not present in target class`);if(!n.augments){n.augments=new Set;let a=n.ref=Symbol(e.name),l=Object[Symbol.hasInstance];e.prototype[a]=!0,Object.defineProperty(e,Symbol.hasInstance,{value:function(o){return this===e?o&&!!o[a]:l.call(this,o)}})}if(t.prototype[n.ref])return t;if(n.uses)for(let a of n.uses)de(t,a);n.augments.add(t),r.uses||(r.uses=[]),r.uses.push(e);let s=Object.getOwnPropertyDescriptors(e.prototype);return delete s.constructor,s[H]&&(r.inits||(r.inits=[]),r.inits.push(e.prototype[H]),delete s[H]),Object.defineProperties(t.prototype,s),e?.mixed instanceof Function&&e.mixed(t),t}var M={cache:{},self:null,target:null,proxy:new Proxy({},{apply:(t,e,r)=>Reflect.apply(M.target,e,r),get:(t,e)=>{let r=Reflect.get(M.target,e,M.self);return r instanceof Function?r.bind(M.self):r},set:(t,e,r,n)=>Reflect.set(M.target,e,r,M.self)})};function T(t,e,r,n,i=null){let s=Object.getPrototypeOf(t.prototype),a=(n&(A.HasMixins|A.IsExtension))==A.HasMixins,l;if(a&&(U.set(t,U.get(s.constructor)),s=Object.getPrototypeOf(s)),i){let c=n&A.IsObjectExtension?i:i.prototype,f=L(t);if(f.uses){i===c&&console.warn("Cannot extend object with mixins");for(let p of f.uses)de(i,p)}return n&A.HasSuperCalls&&(M.cache[e]=Object.create(Object.getPrototypeOf(c),Object.getOwnPropertyDescriptors(c))),ze(c,t.prototype),i}let o=s?.constructor;if(l=L(t,{symbol:e}),Object.defineProperty(t,pr,{value:l,enumerable:!1,configurable:!0}),r&&t.name!==r&&Object.defineProperty(t,"name",{value:r,configurable:!0}),l.flags=n,n&A.HasConstructor&&(t.prototype[Le]=e),l.uses)for(let c of l.uses)c.mixes?.(t);return o?.inherited instanceof Function&&o.inherited(t),t}function Z(t,e){t[Le]===e&&(t[fr]?.(),t[Ue]&&t[Ue].inited(t))}import{readFileSync as hr}from"fs";import{parseAsset as br}from"imba/compiler";function yr(t,e){let r,n=br({body:t});return r=`export default /* @__PURE__ */ Object.assign({
type: 'svg'
},`+JSON.stringify(n)+")"}function ge(t={}){let e=new Map;return{name:"vite-plugin-imba-svg",transform:async function(r,n,i){if(n.endsWith(".svg")){let s=e.get(n);if(!s){let a=hr(n,"utf-8");s=await yr(a,n),e.set(n,s)}return s}}}}import{normalizePath as Gn}from"vite";import*as Zt from"esbuild";import{extname as fi,win32 as vr,posix as Be,isAbsolute as xr,resolve as wr}from"path";import Or from"picomatch";function _r(t){return Array.isArray(t)}function Ve(t){return _r(t)?t:t==null?[]:[t]}var ee=function(e){return e.split(vr.sep).join(Be.sep)};function $r(t,e){if(e===!1||xr(t)||t.startsWith("*"))return ee(t);let r=ee(wr(e||"")).replace(/[-^$*+?.()|[\]{}]/g,"\\$&");return Be.join(r,ee(t))}var He=function(e,r,n){let i=n&&n.resolve,s=o=>o instanceof RegExp?o:{test:c=>{let f=$r(o,i);return Or(f,{dot:!0})(c)}},a=Ve(e).map(s),l=Ve(r).map(s);return function(c){if(typeof c!="string"||/\0/.test(c))return!1;let f=ee(c);for(let p=0;p<l.length;++p)if(l[p].test(f))return!1;for(let p=0;p<a.length;++p)if(a[p].test(f))return!0;return!a.length}},Ir="break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public",Sr="arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl",Pr=new Set(`${Ir} ${Sr}`.split(" "));Pr.add("");import{normalizePath as qe}from"vite";import*as Ke from"node:fs";import{URL as yi,URLSearchParams as Je,pathToFileURL as vi}from"node:url";var te="/@fs/",Cr=process.platform==="win32";function Er(t){let e=t.split("?",2),r=e[0],n=e[1];return{filename:r,rawQuery:n}}function jr(t,e,r,n,i,s){let a=kr(r);if(a.url||a.raw)return;let l=Dr(e,n),o=Fr(e,n,"style");return{id:t,filename:e,normalizedFilename:l,cssId:o,query:a,timestamp:i,ssr:s}}var Rr=/\?(?!.*[\/|\}])/;function Ge(t){let[e,r]=t.split(Rr,2);return r?Object.fromEntries(new Je(r)):null}function Fr(t,e,r){let n=["imba",`type=${r}`];return r==="style"&&n.push("lang.css"),Ar(t,e)?t=e+t:t.startsWith(te)&&(t=Cr?t.slice(te.length):t.slice(te.length-1)),`${t}?${n.join("&")}`}function kr(t){let e=Object.fromEntries(new Je(t));for(let r in e)e[r]===""&&(e[r]=!0);return e}function Dr(t,e){return Mr(qe(t),e)}function Ar(t,e){return t.startsWith(te)?!1:Ke.existsSync(e+t)}function Mr(t,e){return t.startsWith(e+"/")?t.slice(e.length):t}function Tr(t,e,r){let n=He(t,e);return i=>n(i)&&r.some(s=>{let[a]=i.split("?",2);return a.endsWith(s)})}function Qe(t){let{include:e,exclude:r,extensions:n,root:i}=t,s=qe(i),a=Tr(e,r,n);return(l,o,c=Date.now())=>{let{filename:f,rawQuery:p}=Er(l);if(a(f))return jr(l,f,p,s,c,o)}}var re={reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strike:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],grey:[90,39],brightΞred:[91,39],brightΞgreen:[92,39],brightΞyellow:[93,39],brightΞblue:[94,39],brightΞmagenta:[95,39],brightΞcyan:[96,39],brightΞwhite:[97,39],bgΞblack:[40,49],bgΞred:[41,49],bgΞgreen:[42,49],bgΞyellow:[43,49],bgΞblue:[44,49],bgΞmagenta:[45,49],bgΞcyan:[46,49],bgΞwhite:[47,49],bgΞgray:[100,49],bgΞgrey:[100,49],bgΞbrightΞred:[101,49],bgΞbrightΞgreen:[102,49],bgΞbrightΞyellow:[103,49],bgΞbrightΞblue:[104,49],bgΞbrightΞmagenta:[105,49],bgΞbrightΞcyan:[106,49],bgΞbrightΞwhite:[107,49]},Xe={};for(let t=0,e=Object.keys(re),r=e.length,n;t<r;t++){n=e[t];let[i,s]=re[n];Xe[n]=function(a){return"\x1B["+i+"m"+a+"\x1B["+s+"m"}}var q=Xe;for(let t=0,e=Object.keys(re),r=e.length,n;t<r;t++){n=e[t];let[i,s]=re[n];String.prototype.__defineGetter__(n,function(){return"\x1B["+i+"m"+this+"\x1B["+s+"m"})}String.prototype.f=function(t){return"\x1B[38;5;"+t+"m"+this+"\x1B[39m"};String.prototype.b=function(t){return"\x1B[48;5;"+t+"m"+this+"\x1B[49m"};import Wr from"debug";var he=["debug","info","warn","error","silent"],Ze="vite-plugin-imba",be={debug:{log:Wr(`vite:${Ze}`),enabled:!1,isDebug:!0},info:{color:q.cyan,log:console.log,enabled:!0},warn:{color:q.yellow,log:console.warn,enabled:!0},error:{color:q.red,log:console.error,enabled:!0},silent:{enabled:!1}},Ye="info";function Ur(t){if(t===Ye)return;let e=he.indexOf(t);if(e>-1){Ye=t;for(let r=0;r<he.length;r++)be[he[r]].enabled=r>=e}else et(be.error,`invalid log level: ${t} `)}function et(t,e,r){t.enabled&&(t.isDebug?r!==void 0?t.log(e,r):t.log(e):(t.log(t.color(`${new Date().toLocaleTimeString()} [${Ze}] ${e}`)),r&&t.log(r)))}function ne(t){let e=be[t],r=et.bind(null,e),n=new Set,i=function(s,a){n.has(s)||(n.add(s),r.apply(null,[s,a]))};return Object.defineProperty(r,"enabled",{get(){return e.enabled}}),Object.defineProperty(r,"once",{get(){return i}}),r}var u={debug:ne("debug"),info:ne("info"),warn:ne("warn"),error:ne("error"),setLevel:Ur};function ie(t,e,r){let{emitCss:n,onwarn:i,isBuild:s}=r,a=!s&&r.experimental?.sendWarningsToBrowser,l=s?Vr:zr,o=[],c=e?.filter(m=>!Lr(m,s,n)),f=Nr(e,s),p=[...c,...f];if(a){let m=l;l=d=>{o.push(d),m(d)}}if(p.forEach(m=>{i?i(m,l):l(m)}),a){let m={id:t.id,filename:t.filename,normalizedFilename:t.normalizedFilename,timestamp:t.timestamp,warnings:o,allWarnings:p,rawWarnings:e};u.debug(`sending imba:warnings message for ${t.normalizedFilename}`),r.server?.ws?.send("imba:warnings",m)}}function Lr(t,e,r){return!r&&t.code==="css-unused-selector"||!e&&tt(t)}function tt(t){return t.code==="css-unused-selector"&&t.message.includes('"*"')}function Nr(t,e){let r=[];if(!e){let n=t.filter(i=>tt(i));if(n.length>0){let i=n[n.length-1];r.push({...i,code:"vite-plugin-imba-css-no-scopable-elements",message:"No scopable elements found in template. If you're using global styles in the style tag, you should move it into an external stylesheet file and import it in JS. See https://github.com/imbajs/vite-plugin-imba/blob/main/docs/faq.md#where-should-i-put-my-global-styles."})}}return r}function zr(t){u.info.enabled&&u.info(K(t))}function Vr(t){u.warn.enabled&&u.warn(K(t),t.frame)}function K(t){let e=[];return t.filename&&e.push(t.filename),t.start&&e.push(":",t.start.line,":",t.start.column),t.message&&(e.length>0&&e.push(" "),e.push(t.message)),e.join("")}import{compile as Kr}from"imba/compiler";import st from"node:fs";import*as rt from"crypto";var ye=Object.create(null),Br=12;function nt(t){if(ye[t])return ye[t];let e=rt.createHash("md5");e.update(t);let r=qr(e.digest("base64")).slice(0,Br);return ye[t]=r,r}var it={"+":"-","/":"_","=":""},Hr=new RegExp(`[${Object.keys(it).join("")}]`,"g");function qr(t){return t.replace(Hr,e=>it[e])}var Jr=/<script [^>]*lang=["']?([^"' >]+)["']?[^>]*>/,Gr=(t,e)=>async function(n,i,s){let{filename:a,normalizedFilename:l,cssId:o,ssr:c}=n,{emitCss:f=!0}=s,p=[],m={...s.compilerOptions,filename:a,generate:c?"ssr":"dom",format:"esm",resolveColors:!0,sourcePath:a,vite:!0,sourcemap:s.compilerOptions.sourcemap??"extern",...t};if(s.hot&&s.emitCss){let h=`s-${nt(l)}`;u.debug(`setting cssHash ${h} for ${l}`),m.cssHash=()=>h}c&&m.enableSourcemap!==!1&&(typeof m.enableSourcemap=="object"?m.enableSourcemap.css=!1:m.enableSourcemap={js:!0,css:!1});let d=await s.experimental?.dynamicCompileOptions?.({filename:a,code:i,compileOptions:m});d&&u.debug.enabled&&u.debug(`dynamic compile options for ${a}: ${JSON.stringify(d)}`);let g=d?{...m,...d}:m;g.config=g,g.styles="extern",g.platform="browser",g.vite=!0;let b=n.query;g.platform=c?"node":"browser",b.worker?g.platform="worker":b.web&&(g.platform="browser"),s.server?.config?.mode=="test"&&s.server?.config?.test?.environment=="node"&&(g.platform="node");let y=globalThis.VITE_IMBA_CACHE,_=[],v=`${a}-${g.platform}-vite2`,k=st.existsSync(a)?st.statSync(a).mtimeMs:0,I=((h,O)=>{let w=Kr(h,O),E=w.sourcemap;return{js:{code:w.js,dependencies:[],map:E},css:{code:w.css},warnings:w.warnings,errors:w.errors}})(i,g);if(I.erroredΦ)throw I;return f&&I.css.code&&(I.js.code+=`
/*__css_import__*/import ${JSON.stringify(o)};
`),!c&&e&&(I.js.code=e({id:a,compiledCode:I.js.code,hotOptions:s.hot,compiled:I,originalCode:i,compileOptions:g})),I.js.dependencies=p,{filename:a,normalizedFilename:l,lang:i.match(Jr)?.[1]||"js",compiled:I,ssr:c,dependencies:p}};function ot(t,e){return Gr(e)}import{normalizePath as pn}from"vite";import{createRequire as Qr}from"module";import ve from"path";import se from"fs";import{pathToFileURL as at}from"url";var Xr,xe=["imba.config.mjs","imba.config.js","imbaconfig.json","imba.config.json"],Yr=new Function("path","timestamp",'return import(path + "?t=" + timestamp).then(m => m.default)'),Zr=new Function("path","timestamp",'return import(path + "?t=" + timestamp, {assert: {type: "json"}}).then(m => m.default)');async function lt(t,e){if(e?.configFile===!1)return;let r=en(t,e);if(r){let n;if(r.endsWith(".json"))try{let i=await Zr(at(r).href,se.statSync(r).mtimeMs);if(i!=null)return{...i,configFile:r};throw new Error(`invalid export in ${r}`)}catch(i){u.error(`failed to import config ${r}`,i),n=i}if(r.endsWith(".js")||r.endsWith(".mjs")||r.endsWith(".json"))try{let i=await Yr(at(r).href,se.statSync(r).mtimeMs);if(i!=null)return{...i,configFile:r};throw new Error(`invalid export in ${r}`)}catch(i){u.error(`failed to import config ${r}`,i),n=i}if(!r.endsWith(".mjs"))try{let i=import.meta.url?Xr??(Xr=Qr(import.meta.url)):We;delete i.cache[i.resolve(r)];let s=i(r);if(s!=null)return{...s,configFile:r};throw new Error(`invalid export in ${r}`)}catch(i){u.error(`failed to require config ${r}`,i),n||(n=i)}throw n}}function en(t,e){let r=t?.root||process.cwd();if(e?.configFile){let n=ve.isAbsolute(e.configFile)?e.configFile:ve.resolve(r,e.configFile);if(!se.existsSync(n))throw new Error(`failed to find imba config file ${n}.`);return n}else{let n=xe.map(i=>ve.resolve(r,i)).filter(i=>se.existsSync(i));if(n.length===0){u.debug(`no imba config found at ${r}`);return}else n.length>1&&u.warn(`found more than one imba config file, using ${n[0]}. you should only have one!`,n);return n[0]}}var tn=["module","jsnext:main","jsnext"],ct=["imba",...tn],we=[],ut=[];import mn from"path";import N from"path";import ft from"fs";import{createRequire as rn}from"module";function Oe(t,e=!0){u.debug(`findImbaDependencies: searching imba dependencies in ${t}`);let r=N.join(t,"package.json");if(!ft.existsSync(r)){if(e){let s=process.cwd();if(t!==s)return u.debug(`no package.json found in vite root ${t}`),Oe(s,!1)}return u.warn("no package.json found, findRootImbaDependencies failed"),[]}let n=dt(t);if(!n)return[];let i=[...Object.keys(n.dependencies||{}),...Object.keys(n.devDependencies||{})].filter(s=>!cn(s));return pt(i,t)}function pt(t,e,r=[]){let n=[],i=rn(`${e}/package.json`),s=t.map(a=>mt(a,i)).filter(Boolean);for(let{pkg:a,dir:l}of s){let o=nn(a);if(o&&(n.push({name:a.name,type:o,pkg:a,dir:l,path:r}),o==="component-library"&&a.dependencies)){let c=Object.keys(a.dependencies),f=c.filter(p=>r.includes(p));f.length>0&&(u.warn.enabled&&u.warn("skipping circular imba dependencies in automated vite optimizeDeps handling",f.map(p=>r.concat(p).join(">"))),c=c.filter(p=>!r.includes(p))),r.length===3&&u.debug.once(`encountered deep imba dependency tree: ${r.join(">")}`),n.push(...pt(c,l,r.concat(a.name)))}}return n}function mt(t,e){try{let r=`${t}/package.json`,n=e(r);return{dir:N.dirname(e.resolve(r)),pkg:n}}catch(r){u.debug.once(`dependency ${t} does not export package.json`,r);try{let n=N.dirname(e.resolve(t));for(;n;){let i=dt(n,!0);if(i&&i.name===t)return{dir:n,pkg:i};let s=N.dirname(n);if(s===n)break;n=s}}catch(n){u.debug.once(`error while trying to find package.json of ${t}`,n)}}u.debug.once(`failed to resolve ${t}`)}function dt(t,e=!1){let r=N.join(t,"package.json");try{return JSON.parse(ft.readFileSync(r,"utf-8"))}catch(n){!e&&u.warn.enabled&&u.warn(`failed to parse ${r}`,n)}}function nn(t){return sn(t)?"component-library":on(t)?"js-library":void 0}function sn(t){return!!t.imba}function on(t){return!!t.dependencies?.imba||!!t.peerDependencies?.imba}var an=["@lukeed/uuid","@playwright/test","@imbajs/vite-plugin-imba","@imbajs/kit","autoprefixer","cookie","dotenv","esbuild","eslint","jest","mdsvex","playwright","postcss","prettier","imba","imba-check","imba-hmr","imba-preprocess","tslib","typescript","vite","vitest","__vite-browser-external"],ln=["@fontsource/","@postcss-plugins/","@rollup/","@imbajs/adapter-","@types/","@typescript-eslint/","eslint-","jest-","postcss-plugin-","prettier-plugin-","rollup-plugin-","vite-plugin-"];function cn(t){return an.includes(t)||ln.some(e=>e.startsWith("@")?t.startsWith(e):t.substring(t.lastIndexOf("/")+1).startsWith(e))}function gt(t,e){let r=mt(t,e);if(!r)return!1;let n=r.pkg;if(n.module||n.exports)return!1;if(n.main){let s=N.extname(n.main);return!s||s===".js"||s===".cjs"}else try{return e.resolve(`${t}/index.js`),!0}catch{return!1}}import{createRequire as dn}from"module";import{compile as Ji}from"imba/compiler";var ht="Compilation Error";function oe(t){if(!t?.errors?.length)return{name:"Compilation error",id:t._sourcePath,message:K({message:`Compilation error: ${t.message}`})};let e=t?.errors?.length?t.errors[0]:{diagnostics:[{source:ht}],options:{filename:t._sourcePath},range:{start:{line:1,column:1}},message:t?.toString},n=`${e.source||e?.diagnostics[0]?.source||ht} error`,i=t.options.filename,{line:s,character:a}=e.range.start,l={line:s+1,column:a,file:i},o=K({message:e.message}),c=t.sourceCode+`
`,f=un(c,l);return{name:n,message:o,id:i,frame:f,code:c,loc:l}}function un(t,e){if(!t)return"";let n=t.split(`
`).slice(e.line-2,e.line+2).map((i,s)=>`${e.line+s-2+1} |${i.replace(/\t/g," ")}`);return n.splice(2,0,`${" ".repeat(`${e.line}`.length)} |${" ".repeat(e.column)}^`),n.join(`
`)}var bt="vite-plugin-imba:facade";function fn(t,e){let r=[],n=[],i=e.plugins.filter(o=>o?.imbaPreprocess);i.length>0&&(u.warn(`The following plugins use the deprecated 'plugin.imbaPreprocess' field. Please contact their maintainers and ask them to move it to 'plugin.api.imbaPreprocess': ${i.map(o=>o.name).join(", ")}`),i.forEach(o=>{o.api||(o.api={}),o.api.imbaPreprocess===void 0?o.api.imbaPreprocess=o.imbaPreprocess:u.error(`ignoring plugin.imbaPreprocess of ${o.name} because it already defined plugin.api.imbaPreprocess.`)}));let s=e.plugins.filter(o=>o?.api?.imbaPreprocess),a=[],l=[];for(let o of s)t.ignorePluginPreprocessors===!0||Array.isArray(t.ignorePluginPreprocessors)&&t.ignorePluginPreprocessors?.includes(o.name)?a.push(o):l.push(o);return a.length>0&&u.debug(`Ignoring imba preprocessors defined by these vite plugins: ${a.map(o=>o.name).join(", ")}`),l.length>0&&(u.debug(`Adding imba preprocessors defined by these vite plugins: ${l.map(o=>o.name).join(", ")}`),n.push(...s.map(o=>o.api.imbaPreprocess))),{prependPreprocessors:r,appendPreprocessors:n}}function vt(t,e){let{prependPreprocessors:r,appendPreprocessors:n}=fn(t,e);(r.length>0||n.length>0)&&(t.preprocess?Array.isArray(t.preprocess)?(t.preprocess.unshift(...r),t.preprocess.push(...n)):t.preprocess=[...r,t.preprocess,...n]:t.preprocess=[...r,...n]);let i=!!t.experimental?.generateMissingPreprocessorSourcemaps;t.preprocess&&i&&(t.preprocess=Array.isArray(t.preprocess)?t.preprocess.map((s,a)=>yt(s,a)):yt(t.preprocess,0))}function yt(t,e){let r={};for(let[n,i]of Object.entries(t))r[n]=async s=>{let a=await i(s);if(a&&a.code!==s.content){let l=!1;a.map?a.map?.mappings===""&&(l=!0,u.warn.enabled&&u.warn.once(`preprocessor at index ${e} returned an invalid empty sourcemap for ${n} transform`,{filename:s.filename,type:n,processor:i.toString()})):(l=!0,u.warn.enabled&&u.warn.once(`preprocessor at index ${e} did not return a sourcemap for ${n} transform`,{filename:s.filename,type:n,processor:i.toString()}))}return a};return r}import gn from"lodash.mergewith";var _e=new Set(["include","exclude","emitCss","hot","ignorePluginPreprocessors","disableDependencyReinclusion","experimental","ssr"]),xt=new Set(["extensions","compilerOptions","preprocess","onwarn"]),hn=new Set(["configFile","kit",..._e,...xt]);function wt(t){let e=Object.keys(t||{}).filter(r=>!hn.has(r));e.length&&u.warn(`invalid plugin options "${e.join(", ")}" in inline config`,t)}function bn(t){if(!t)return;let e=Object.keys(t).filter(o=>_e.has(o));if(e.length>0)throw new Error(`Invalid options in imba config. Move the following options into 'vitePlugin:{...}': ${e.join(", ")}`);if(!t.vitePlugin)return{compilerOptions:t};let r=t.vitePlugin,n=Object.keys(r),i=n.filter(o=>xt.has(o));if(i.length>0)throw new Error(`Invalid options in imba config under vitePlugin:{...}', move them to the config root : ${i.join(", ")}`);let s=n.filter(o=>Object.prototype.hasOwnProperty.call(t,o));if(s.length>0)throw new Error(`Invalid duplicate options in imba config under vitePlugin:{...}', they are defined in root too and must only exist once: ${s.join(", ")}`);let a=n.filter(o=>!_e.has(o));a.length>0&&(u.warn(`ignoring unknown plugin options in imba config under vitePlugin:{...}: ${a.join(", ")}`),a.forEach(o=>{delete r[o]}));let l={...t,...r};return delete l.vitePlugin,{compilerOptions:l}}async function Ot(t={},e,r){let n={...e,root:On(e)},i={extensions:[".imba",".imba1"],emitCss:!0},s=bn(await lt(n,t)),a={root:n.root,isBuild:r.command==="build",isServe:r.command==="serve",isDebug:process.env.DEBUG!=null},l=_t(i,s,t,a);return s?.configFile&&(l.configFile=s.configFile,l.config=s),l}function _t(...t){let e={};for(let r of t.filter(Boolean))e=gn(e,r,{arrayMerge:(n,i)=>i??n});return e}function $t(t,e){let r={hot:e.isProduction?!1:{injectCss:!t.emitCss},compilerOptions:{css:!t.emitCss,dev:!e.isProduction}},n={root:e.root,isProduction:e.isProduction},i=_t(r,t,n);return xn(i),wn(i),vt(i,e),yn(i),vn(i),i}function yn(t){t.hot&&(t.compilerOptions.dev||(u.warn("hmr is enabled but compilerOptions.dev is false, forcing it to true"),t.compilerOptions.dev=!0),t.emitCss?(t.hot!==!0&&t.hot.injectCss&&(u.warn("hmr and emitCss are enabled but hot.injectCss is true, forcing it to false"),t.hot.injectCss=!1),t.compilerOptions.css&&(u.warn("hmr and emitCss are enabled but compilerOptions.css is true, forcing it to false"),t.compilerOptions.css=!1)):((t.hot===!0||!t.hot.injectCss)&&(u.warn("hmr with emitCss disabled requires option hot.injectCss to be enabled, forcing it to true"),t.hot===!0?t.hot={injectCss:!0}:t.hot.injectCss=!0),t.compilerOptions.css||(u.warn("hmr with emitCss disabled requires compilerOptions.css to be enabled, forcing it to true"),t.compilerOptions.css=!0)))}function vn(t){t.isProduction&&(t.hot&&(u.warn("options.hot is enabled but does not work on production build, forcing it to false"),t.hot=!1),t.compilerOptions.dev&&(u.warn("you are building for production but compilerOptions.dev is true, forcing it to false"),t.compilerOptions.dev=!1))}function xn(t){let e=["generate","format","filename"];t.hot&&t.emitCss&&e.push("cssHash");let n=Object.keys(t.compilerOptions||{}).filter(i=>e.includes(i));n.length&&(u.warn(`The following Imba compilerOptions are controlled by vite-plugin-imba and essential to its functionality. User-specified values are ignored. Please remove them from your configuration: ${n.join(", ")}`),n.forEach(i=>{delete t.compilerOptions[i]}))}function wn(t){if(t?.kit!=null){let e=t.kit.browser?.hydrate,r=e!==!1;t.compilerOptions.hydratable!=null&&t.compilerOptions.hydratable!==r&&u.warn(`Conflicting values "compilerOptions.hydratable: ${t.compilerOptions.hydratable}" and "kit.browser.hydrate: ${e}" in your imba config. You should remove "compilerOptions.hydratable".`),u.debug(`Setting compilerOptions.hydratable: ${r} for ImbaKit`),t.compilerOptions.hydratable=r}}function On(t){return pn(t.root?mn.resolve(t.root):process.cwd())}function It(t,e){let r=Oe(t.root),n={resolve:{mainFields:[...ct],dedupe:[...we,...ut]}};return n.optimizeDeps=_n(r,t,e.optimizeDeps),t.experimental?.prebundleImbaLibraries&&(n.optimizeDeps={...n.optimizeDeps,extensions:t.extensions??[".imba",".imba1"],esbuildOptions:{plugins:[{name:bt,setup:()=>{}}]}}),n.ssr=$n(r,t,e,n),n}function _n(t,e,r){let n=[],i=["imba-hmr"],s=o=>n.includes(o)||r?.include?.includes(o),a=o=>i.includes(o)||r?.exclude?.some(c=>o===c||c.startsWith(`${o}/`));if(a("imba"))u.debug('"imba" is excluded in optimizeDeps.exclude, skipped adding it to include.');else{let o=we.filter(c=>c!=="imba/ssr");u.debug(`adding bare imba packages to optimizeDeps.include: ${o.join(", ")} `),n.push(...o.filter(c=>!s(c)))}if(e.experimental?.prebundleImbaLibraries)return{include:n,exclude:i};t=t.filter(o=>o.type==="component-library");let l=Array.from(new Set(t.map(o=>o.name))).filter(o=>!s(o));if(u.debug(`automatically excluding found imba dependencies: ${l.join(", ")}`),i.push(...l.filter(o=>!a(o))),e.disableDependencyReinclusion!==!0){let o=e.disableDependencyReinclusion||[];o.length>0&&u.debug("not reincluding transitive dependencies of",o);let c=t.filter(f=>!o.includes(f.name)&&a(f.name)).flatMap(f=>{let p=dn(`${f.dir}/package.json`);return Object.keys(f.pkg.dependencies||{}).filter(m=>!a(m)&>(m,p)).map(m=>f.path.concat(f.name,m).join(" > "))});u.debug("reincluding transitive dependencies of excluded imba dependencies",c),n.push(...c)}return{include:n,exclude:i}}function $n(t,e,r){let n=[];r.ssr?.external?.includes("imba")||n.push("imba",/^imba\//),n.push(...Array.from(new Set(t.map(s=>s.name))).filter(s=>!r.ssr?.external?.includes(s)));let i={noExternal:n,external:[]};return e.isServe&&(i.external=Array.from(new Set(t.flatMap(s=>Object.keys(s.pkg.dependencies||{})))).filter(s=>!i.noExternal.includes(s)&&!r.ssr?.external?.includes(s))),i}var ae=class{constructor(){D(this,"_css",new Map);D(this,"_js",new Map);D(this,"_dependencies",new Map);D(this,"_dependants",new Map);D(this,"_resolvedImbaFields",new Map);D(this,"_errors",new Map)}update(e){this._errors.delete(e.normalizedFilename),this.updateCSS(e),this.updateJS(e),this.updateDependencies(e)}has(e){let r=e.normalizedFilename;return this._errors.has(r)||this._js.has(r)||this._css.has(r)}setError(e,r){this.remove(e,!0),this._errors.set(e.normalizedFilename,r)}updateCSS(e){this._css.set(e.normalizedFilename,e.compiled.css)}updateJS(e){e.ssr||this._js.set(e.normalizedFilename,e.compiled.js)}updateDependencies(e){let r=e.normalizedFilename,n=this._dependencies.get(r)||[],i=e.dependencies;this._dependencies.set(r,i);let s=n.filter(l=>!i.includes(l));i.filter(l=>!n.includes(l)).forEach(l=>{this._dependants.has(l)||this._dependants.set(l,new Set),this._dependants.get(l).add(e.filename)}),s.forEach(l=>{this._dependants.get(l).delete(e.filename)})}remove(e,r=!1){let n=e.normalizedFilename,i=!1;if(this._errors.delete(n)&&(i=!0),this._js.delete(n)&&(i=!0),this._css.delete(n)&&(i=!0),!r){let s=this._dependencies.get(n);s&&(i=!0,s.forEach(a=>{let l=this._dependants.get(a);l&&l.has(e.filename)&&l.delete(e.filename)}),this._dependencies.delete(n))}return i}getCSS(e){return this._css.get(e.normalizedFilename)}getJS(e){if(!e.ssr)return this._js.get(e.normalizedFilename)}getError(e){return this._errors.get(e.normalizedFilename)}getDependants(e){let r=this._dependants.get(e);return r?[...r]:[]}getResolvedImbaField(e,r){return this._resolvedImbaFields.get(this._getResolvedImbaFieldKey(e,r))}setResolvedImbaField(e,r=void 0,n){this._resolvedImbaFields.set(this._getResolvedImbaFieldKey(e,r),n)}_getResolvedImbaFieldKey(e,r){return r?`${r} > ${e}`:e}};import St from"fs";import Pt from"path";function Ct(t,e,r){let{server:n,configFile:i}=t;if(!n)return;let{watcher:s,ws:a}=n,{root:l,server:o}=n.config,c=d=>{e.getDependants(d).forEach(b=>{St.existsSync(b)&&(u.debug(`emitting virtual change event for "${b}" because depdendency "${d}" changed`),s.emit("change",b))})},f=d=>{let g=r(d,!1);g&&e.remove(g)&&u.debug(`cleared VitePluginImbaCache for deleted file ${d}`)},p=d=>{if(o.middlewareMode){let g="Imba config change detected, restart your dev process to apply the changes.";u.info(g,d),a.send({type:"error",err:{message:g,stack:"",plugin:"vite-plugin-imba",id:d}})}else u.info(`imba config changed: restarting vite server. - file: ${d}`),n.restart()},m={add:[],change:[c],unlink:[f,c]};if(i!==!1){let d=xe.map(y=>Pt.join(l,y)),g=y=>{d.includes(y)&&p(y)},b=y=>{y===i&&p(y)};i?(m.change.push(b),m.unlink.push(b)):m.add.push(g)}Object.entries(m).forEach(([d,g])=>{g.length>0&&s.on(d,b=>g.forEach(y=>y(b)))})}function Et(t,e,r){e&&!e.startsWith(r+"/")&&!e.includes("\0")&&St.existsSync(e)&&t.add(Pt.resolve(e))}async function jt(t,e,r,n,i){if(!n.has(r)){u.debug("handleHotUpdate called before initial transform for "+r.id);return}let{read:s,server:a}=e,l=n.getJS(r),o=n.getCSS(r),c=await s(),f;try{i.compilerOptions.sourcemap=!1,f=await t(r,c,i),n.update(f)}catch(v){throw n.setError(r,v),v}let p=new Set,m=a.moduleGraph.getModuleById(r.cssId),d=a.moduleGraph.getModuleById(r.id);m&&Sn(o,f.compiled.css)&&(u.debug("handleHotUpdate css changed for "+r.cssId),p.add(m));let b=d&&Pn(l,f.compiled.js,r.filename);b&&(u.debug("handleHotUpdate js changed for "+r.id),p.add(d)),b||ie(r,f.compiled.warnings,i);let y=[...p].filter(Boolean),_=y.filter(function(v){return!!v.ssrTransformResult});return _.length>0&&(u.debug("invalidating modules "+_.map(function(v){return v.id}).join(", ")),_.forEach(function(v){return a.moduleGraph.invalidateModule(v)})),y.length>0&&u.debug("handleHotUpdate for "+r.id+" result: "+y.map(function(v){return v.id}).join(", ")),y}function In(t,e){return!t&&!e?!0:!t&&e||t&&!e?!1:t===e}function Sn(t,e){return!In(t?.code,e?.code)}function Pn(t,e,r){try{return t=t.code.substring(0,t.code.lastIndexOf(`
`)),e=e.code.substring(0,e.code.lastIndexOf(`
`)),!Ne(e,t)}catch{return!0}}import Qn from"node:url";import Y from"node:path";import fe from"node:fs";import Xn from"node:crypto";import J from"node:path";import $e from"node:fs";import ce from"node:url";import Cn from"lodash.mergewith";var En=typeof __dirname<"u"?__dirname:J.dirname(ce.fileURLToPath(import.meta.url));var le=J.join(En,"..","bin","./imba.config.mjs"),Ie=["imba","ts","mts","js","mjs","cjs"];async function z(t,e){e.command||(e.command="serve"),e.mode||(e.mode="development");let r=["client","server","test","testSetup","imba","root"];if(!r.includes(t))throw new Error("Unrecognized config type "+t+". Should be one of "+r);let n;for(let o=0,c=C(Ie),f=c.length;o<f;o++){let m="imba.config."+c[o],d=J.join(process.cwd(),m);$e.existsSync(d)&&(n=d)}if(!(e.vite||n))return{};if(t=="test"){for(let o=0,c=C(Ie),f=c.length;o<f;o++){let p=c[o];if(p=="imba")continue;let m="vitest.config."+p,d=J.join(process.cwd(),m);if($e.existsSync(d))return d}for(let o=0,c=C(Ie),f=c.length;o<f;o++){let m="imba.config."+c[o],d=J.join(process.cwd(),m);if($e.existsSync(d)){let{default:g}=await import(String(ce.pathToFileURL(d)));return typeof g=="function"&&(g=await g(e)),d}}return le}if(n||(n=le),n.endsWith("imba"))throw new Error(".imba config file not yet supported");let{default:i}=await import(String(ce.pathToFileURL(n)));if(typeof i=="function"&&(i=await i({command:globalThis.command,mode:globalThis.mode})),t=="root")return i;let s=i[t];if(n==le)return s;let{default:a}=await import(String(ce.pathToFileURL(le)));typeof a=="function"&&(a=await a({command:globalThis.command,mode:globalThis.mode}));let l=a[t];return s?Cn(l,s,function(o,c,f){if(Array.isArray(o)&&Array.isArray(c)){let p=c.flat(),m=o.flat();return p.concat(m).filter(function(g,b,y){return y.findLastIndex(function(v){return f=="plugins"?v?.name===g?.name:v===g})==b})}}):l}import Nt from"path";import Mn from"fs";import{createHash as Tn}from"crypto";var qs=ur(Ft());function kt(t="bcdefghijklmnopqrstuvwxyz"){let e={};for(let r=t.length,n=0,i=r-n;i>0?n<r:n>r;i>0?n++:n--)e[n.toString(t.length)]=t[n];return function(r){return r.toString(t.length).split("").map(function(n){return e[n]}).join("")}}import{performance as Ut}from"perf_hooks";var V=Symbol.for("#spinner"),jn=Symbol.for("#ctime"),Dt=Symbol.for("#IMBA_OPTIONS"),At=Symbol.for("#prefix"),Se=Symbol.for("#last"),G=process.platform!=="win32"||process.env.CI||process.env.TERM==="xterm-256color",Rn={info:(G?"ℹ":"i").brightΞyellow,success:(G?"✔":"√").green,warning:(G?"⚠":"!!").yellow,error:(G?"×":"✖").red,debug:(G?"ℹ":"i").blue},Fn={"-1":"socket",4:"ip4",6:"ip6"},Mt=["debug","info","success","warning","error","silent"];function kn(t){return t.replace(/https?\:[^\s\n\)\]]+/g,function(e){return e.brightΞblue}).replace(/^[\t\s]*\>[^\n]+/gm,function(e){return e.bold}).replace(/\t/g," ").replace(/^/gm," ")}function Pe(t,...e){return t=t.replace(/\%([\w\.]+)/g,function(r,n){let i=e.shift(),s=String(i);if(n==="red")return s.brightΞred;if(n==="green")return s.green;if(n==="magenta")return s.brightΞmagenta;if(n==="cyan")return s.brightΞcyan;if(n==="dim")return s.dim;if(n==="d")return s.brightΞblue;if(n==="yellow"||n==="imba")return s.brightΞyellow;if(n==="path"||n==="bold")return s.bold;if(n==="ms")return(""+Math.round(i)+"ms").yellow;if(n==="kb")return(""+(i/1e3).toFixed(1)+"kb").dim;if(n==="ref")return("#"+(i.id||i)).brightΞyellow;if(n==="markdown")return kn(i);if(n==="elapsed"){i!=null&&e.unshift(i);let a=Ut.now();return(""+Math.round(a)+"ms").yellow}else return n==="heap"?(i!=null&&e.unshift(i),(""+(process.memoryUsage().heapUsed/1024/1024).toFixed(2)+"mb").yellow):n==="address"?i.port?[i.address||"http://localhost",i.port].join(":").brightΞblue:String(Fn[i.addressType]).brightΞblue:i}),[t,...e]}var Tt=null,Dn=null,Wt=Symbol(),Ee=class Ee{static get main(){return Dn||(Dn=new this)}constructor({prefix:e=null,loglevel:r}={}){this[jn]=Date.now(),this.prefix=e,this.loglevel=r||process.env.IMBA_LOGLEVEL||globalThis[Dt]&&globalThis[Dt].loglevel||"info",Z(this,Wt)}set prefix(e){this[At]=e?Pe(...e)[0]:""}get prefix(){return this[At]}write(e,...r){if(Mt.indexOf(e)<Mt.indexOf(this.loglevel))return this;if(!r.length)return console.log();let n=Rn[e]||e,[i,...s]=Pe(...r);return this.prefix&&(i=this.prefix+i),this[V]&&this[V].isSpinning?(e=="success"&&(this[V].clear(),console.log(n+" "+i,...s),this[V].frame()),this[V].text=i):console.log(n+" "+i,...s)}log(){let[e,...r]=Pe(...arguments);return console.log(e,...r)}debug(){return this.write("debug",...arguments)}info(){return this.write("info",...arguments)}warn(){return this.write("warn",...arguments)}error(){return this.write("error",...arguments)}success(){return this.write("success",...arguments)}ts(){let e=Ut.now(),r=this[Se]?e-this[Se]:0;return this.write("debug",...arguments,("+"+r.toFixed(1)+"ms").blue),this[Se]=e}spinner(){}get[V](){return Tt}get proxy(){let e=this.info;return e.info=this.info.bind(this),e.log=this.log.bind(this),e.warn=this.warn.bind(this),e.error=this.error.bind(this),e.debug=this.debug.bind(this),e.success=this.success.bind(this),e.ts=this.ts.bind(this),e.logger=this,e}async time(e,r){let n=Date.now();if(r){let i=await r();return this.info(""+e+" %ms",Date.now()-n),i}}};T(Ee,Wt,"Logger",16);var Ce=Ee,Lt=new Ce().proxy;var An=Symbol.for("#key"),je={},Re={},zt=Symbol(),Fe=class Fe{constructor(e){this[An]=Symbol(),this.o=e,this.dir=this.o.cachedir,this.nodefs=this.o.volume||Mn,this.aliaspath=this.dir&&Nt.resolve(this.dir,".imba-aliases"),this.aliasmap=[],this.aliascache={},this.data={aliases:{},cache:{}},this.mintime=this.o.mtime||0,this.persistToDisk=!!this.dir,this.idFaucet=kt(),this.preload(),Z(this,zt)}preload(){if(!this.persistToDisk)return;this.nodefs.existsSync(this.dir)||this.nodefs.mkdirSync(this.dir);let e=this.nodefs.readdirSync(this.dir);for(let r=0,n=C(e),i=n.length;r<i;r++){let s=n[r];this.cache[s]={exists:1}}return this.nodefs.existsSync(this.aliaspath)||this.nodefs.appendFileSync(this.aliaspath,""),this.refreshAliasMap(),Lt.ts("cache loaded"),this}setup(){return!0}save(){return this}deserialize(){return this}serialize(){return this}get cache(){var e;return(e=this.data).cache||(e.cache={})}get aliases(){var e;return(e=this.data).aliases||(e.aliases={})}alias(e){if(!this.aliases[e]){let r=Object.keys(this.aliases).length;this.aliases[e]=this.idFaucet(r)+"0"}return this.aliases[e]}normalizeKey(e){if(je[e])return je[e];let r=Tn("sha1");return r.update(e),je[e]=r.digest("hex")}fullKeyPath(e){return Re[e]||(Re[e]=Nt.resolve(this.dir,e))}getKeyTime(e){e=this.normalizeKey(e);let r=this.cache[e];if(r&&r.time)return r.time;if(r&&r.exists&&this.persistToDisk){let n=this.fullKeyPath(e);return this.nodefs.statSync(n).mtimeMs}else return 0}refreshAliasMap(){return this.aliasmap=this.nodefs.readFileSync(this.aliaspath,"utf8").split(/\r?\n/)}getPathAlias(e){return this.getKeyAlias(e)}getKeyAlias(e){if(this.aliascache[e])return this.aliascache[e];let r=this.aliasmap.indexOf(e);if(r==-1&&(this.persistToDisk?(this.nodefs.appendFileSync(this.aliaspath,e+`
`,"utf8"),this.refreshAliasMap()):this.aliasmap.push(e),r=this.aliasmap.indexOf(e)),r>=0)return this.aliascache[e]=this.idFaucet(r);throw console.log("key not added?",e,this.aliasmap),"could not add key to aliasmap"}async getKeyValue(e){let r=this.fullKeyPath(e),n=await this.nodefs.promises.readFile(r,"utf8");return JSON.parse(n)}setKeyValue(e,r){if(!this.persistToDisk)return;let n=this.fullKeyPath(e),i=JSON.stringify(r);return this.nodefs.promises.writeFile(n,i)}memo(e,r,n){var i=this;let s=this.normalizeKey(e);this.mintime>r&&(r=this.mintime);let a=this.cache[s];if(a&&a.time>=r)return a.promise;if(this.getKeyTime(e)>r&&!process.env.CI){let o=this.getKeyValue(s).catch(function(c){return console.warn("Error compiling file in getKeyValue name: "+e+", key: "+s,c),n().then(function(f){return i.setKeyValue(s,f)})});return a=this.cache[s]={time:Date.now(),promise:o},a.promise}else return a=this.cache[s]={time:Date.now(),promise:n()},a.promise.then(function(o){return i.setKeyValue(s,o)}),a.promise}};T(Fe,zt,"Cache",16);var Q=Fe;import{resolve as Vt}from"path";import{loadEnv as Wn}from"vite";function Un(t,e,r,n){return r.reduce((i,s)=>{let a=t[s]===void 0?n[s]:t[s];return a===void 0&&Nn(s),i[`${e}.${s}`]=JSON.stringify(a),i},{})}function Ln(t){return t===""?process.env:Object.fromEntries(Object.entries(process.env).filter(([e,r])=>e.startsWith(t)))}function Nn(t){throw new Error(`vite-plugin-environment: the \`${t}\` environment variable is undefined.
You can pass an object with default values to suppress this warning.
See https://github.com/ElMassimo/vite-plugin-environment for guidance.`)}function Bt(t,e={}){let{prefix:r="",defineOn:n="process.env",loadEnvFiles:i=!0}=e;return{name:"vite-plugin-environment",config({root:s=process.cwd(),envDir:a},{mode:l}){let o=Vt(s);a=a?Vt(o,a):o;let c=i?Wn(l,a,r):Ln(r),f=t==="all"?Object.keys(c):Array.isArray(t)?t:Object.keys(t),p=t==="all"||Array.isArray(t)?{}:t;return{define:Un(c,n,f,p)}}}}import Gt from"path";import*as Xt from"vite";import Kn from"node:fs";import Qt from"get-port";var X=Symbol.for("#__listeners__");var ke=new Set,zn=Symbol(),De=class De{static for(e){return new Proxy({},new this(e))}constructor(e){this.getter=e}get target(){return this.getter()}get(e,r){return this.target[r]}set(e,r,n){return this.target[r]=n,!0}};T(De,zn,"LazyProxy",16);var Ht=De;var qt=function(t,e,r){let n,i,s;for(;(n=r)&&(r=r.next);)(i=r.listener)&&(r.path&&i[r.path]?s=e?i[r.path].apply(i,e):i[r.path]():s=e?i.apply(r,e):i.call(r)),r.times&&--r.times<=0&&(n.next=r.next,r.listener=null)};function Jt(t,e,r,n){let i,s,a;return i=t[X]||(t[X]={}),s=i[e]||(i[e]={}),a=s.tail||(s.tail=s.next={}),a.listener=r,a.path=n,s.tail=a.next={},a}function Vn(t,e,r){let n=Jt(t,e,r);return n.times=1,n}function Bn(t,e,r,n){if(!r)return;let i,s,a=t[X];if(a&&(i=a[e])){for(;(s=i)&&(i=i.next);)if(i==r||i.listener==r){s.next=i.next,i.listener=null;break}}}function Hn(t,e,r=null){let n;(n=t[X])&&(n[e]&&qt(e,r,n[e]),n.all&&qt(e,[e,r],n.all))}var qn=Symbol(),Ae=class Ae{emit(e,...r){return Hn(this,e,r)}on(e,...r){return Jt(this,e,...r)}once(e,...r){return Vn(this,e,...r)}un(e,...r){return Bn(this,e,...r)}};T(Ae,qn,"Emitter",0);var Kt=Ae;var B;async function Jn(t,e,r){globalThis.__vite__=!0,typeof e=="string"?e={mode:e}:typeof e=="function"&&(e={mode:"development"});let n=e.mode=="production"||e.prod==!0,i=n?"production":"development";if(!B){let a=await Qt({port:Qt.makeRange(24e3,26e3)}),l=await z("server",{command:"server",mode:i}),o=e.serverOptions||{server:{hmr:{port:a}}},f={...await z("client",{mode:i,vite:!0}),...o,appType:"custom",server:{...l.server,...o.server,middlewareMode:!0}};B=await Xt.createServer(f)}let s=Gt.join(B.config.root,e.outDir||"dist","public");return n?(B.close().then(function(){return B=null}),globalThis.__vite_manifest__||(globalThis.__vite_manifest__=JSON.parse(Kn.readFileSync(Gt.join(s,"manifest.json"),"utf-8"))),globalThis.IMBA_PUBDIR=s,r&&r(s),s):(t.use(function(a,l,o){return ke.add(a.url),o()}),t.use(B.middlewares),t.use(function(a,l,o){return ke.delete(a.url),o()}),s)}var er="virtual:imba/*?css",Yt="\0"+er,Me=Qn.fileURLToPath(new URL(".",import.meta.url));function Yn(){let t=Xn.createHash("sha256"),e=fe.readdirSync(Me);e.sort();for(let r of C(e)){let n=Y.join(Me,r);if(Y.extname(r)===".mjs"){let i=fe.readFileSync(n);t.update(i)}}return t.digest("hex")}function Zn(){let t=process.env.IMBA_CACHEDIR||Y.resolve(Me,".imba-cache");return fe.existsSync(t)||(console.log("cache dir does not exist - create",t),fe.mkdirSync(t)),t}var Lo=Yn(),ei=Zn();globalThis.VITE_IMBA_CACHE=new Q({cachedir:ei});function ti(t={}){let e="vite-plugin-imba",r="pre",n,i,s,a,l={},o,c,f,p,m;wt(t);let d=new ae,g=[];async function b(h,O){process.env.DEBUG?u.setLevel("debug"):h.logLevel&&u.setLevel(h.logLevel),m||(m=await z("imba",{vite:!0})||{}),s=await Ot(t,h,O);let w=It(s,h);return u.debug("additional vite config",w),c=O.mode==="test",f=O.mode==="production",p=O.mode==="development",w}function y(h){return s=$t(s,h),n=Qe(s),i=ot(s,m),a=h,l.options=s,u.debug("resolved options",s)}async function _(h,O,w){let E=!!w?.ssr,x=n(O,E);if(!x||x.query.imba)return;let S,P,j;try{j=await i(x,h,s)}catch(R){throw d.setError(x,R),oe(R)}let{warnings:F,errors:W}=j.compiled;if(Array.isArray(F)&&F.length>0&&ie(x,F,s),Array.isArray(W)&&W.length>0)throw oe({errors:W,options:{filename:O},sourceCode:h});if(d.update(j),j.dependencies.length&&s.server&&j.dependencies.forEach(function(R){return Et(s.server.watcher,R,s.root)}),u.debug("transform returns compiled js for "+x.filename),x.query.iife){let R=j.compiled.js.code,tr=(await Zt.build({bundle:!0,platform:"browser",format:"iife",stdin:{contents:R,resolveDir:process.cwd()},write:!1})).outputFiles[0].text;j.compiled.js={code:"const body = "+JSON.stringify(tr)+"; export default {body: body}; export {body}"}}return{...j.compiled.js,meta:{vite:{lang:j.lang}}}}async function v(h,O,w){let E=!!w?.ssr||s.ssr,x=n(h,E);if(h==er||h=="*?css"||h=="*")return Yt;if(x?.query.imba)return x.query.type==="style"?(u.debug("resolveId resolved virtual css module "+x.cssId),x.cssId):(u.debug("resolveId resolved "+h),h);let S=Ge(h,E);if(S?.external!==void 0){let P=[];for(let F=0,W=C(Object.keys(S)),Te=W.length;F<Te;F++){let R=W[F];R!="external"&&P.push(""+R+"="+F)}return P.length?h=h.split("?")[0]+("?"+P.join("&")):h=h.split("?")[0],{...await this.resolve(h,O,{skipSelf:!0,...w}),external:!0}}}function k(h,O){let w=!!O?.ssr;if(Y.isAbsolute(h)){let x=new URL("file://"+h),S=new URLSearchParams(x.search);if(S.has("url")&&S.has("entry")){S.delete("url"),S.delete("entry"),x.search=S.toString();let P=Gn(x.toString().replace("file://",""));return P=Y.relative(a.root,P),"export default '"+P+"'"}}let E=n(h,!!w);if(Yt==h)return"export default ''";if(E){let{filename:x,query:S}=E;if(S.imba&&S.type==="style"){let P=d.getCSS(E);if(P)return u.debug("load returns css for "+x),P;console.log("cache empty: loading "+h)}if(a.assetsInclude(x))return u.debug("load returns raw content for "+x),fs.readFileSync(x,"utf-8")}}function $(h){return s.server=h,Ct(s,d,n)}async function I(h){if(!s.hot||!s.emitCss)return;let O=n(h.file,!1,h.timestamp);if(O)try{return await jt(i,h,O,d,s)}catch(w){throw oe(w)}}return g.push(ge()),g.push({name:"vite-plugin-imba",enforce:"pre",api:l,config:b,configResolved:y,transform:_,load:k,resolveId:v,configureServer:$,handleHotUpdate:I}),g}export{ti as default,Zn as getCacheDir,Yn as getImbaHash,Jn as setupVite,Bt as vitePluginEnvironment};