UNPKG

imba

Version:

Intuitive and powerful language for building webapps that fly

17 lines (13 loc) 46 kB
var tr=Object.create;var Ae=Object.defineProperty;var rr=Object.getOwnPropertyDescriptor;var nr=Object.getOwnPropertyNames;var ir=Object.getPrototypeOf,sr=Object.prototype.hasOwnProperty;var Me=(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 new Error('Dynamic require of "'+t+'" is not supported')});var or=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var ar=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of nr(e))!sr.call(t,i)&&i!==r&&Ae(t,i,{get:()=>e[i],enumerable:!(n=rr(e,i))||n.enumerable});return t};var lr=(t,e,r)=>(r=t!=null?tr(ir(t)):{},ar(e||!t||!t.__esModule?Ae(r,"default",{value:t,enumerable:!0}):r,t));var Rt=or((ce,jt)=>{(function(t,e){typeof ce=="object"&&typeof jt<"u"?e(ce):typeof define=="function"&&define.amd?define(["exports"],e):(t=t||self,e(t.sourcemapCodec={}))})(ce,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=[],p=[],f=[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(p,f,m),m=0;else if(y===59)s(p,f,m),m=0,c.push(p),p=[],f[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),f[m]+=b,m++,b=g=0}}}return s(p,f,m),c.push(p),c}function s(o,c,p){p===4?o.push([c[0],c[1],c[2],c[3]]):p===5?o.push([c[0],c[1],c[2],c[3],c[4]]):p===1&&o.push([c[0]])}function a(o){for(var c=0,p=0,f=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],S=l($[0]-y);y=$[0],$.length>1&&(S+=l($[1]-c)+l($[2]-p)+l($[3]-f),c=$[1],p=$[2],f=$[3]),$.length===5&&(S+=l($[4]-m),m=$[4]),_.push(S)}d+=_.join(",")}}return d}function l(o){var c="";o=o<0?-o<<1|1:o<<1;do{var p=o&31;o>>>=5,o>0&&(p|=32),c+=r[p]}while(o>0);return c}t.decode=i,t.encode=a,Object.defineProperty(t,"__esModule",{value:!0})})});var z=Symbol.for("#__init__"),We=Symbol.for("#__initor__"),cr=Symbol.for("#__inited__"),Te=Symbol.for("#__hooks__");var ur=Symbol.for("#meta"),pe=Symbol.for("imba");var pr=Symbol.for("#matcher");var ri={SUPERCALLS:1<<3,CONSTRUCTOR:1<<4},X={IsExtension:1<<0,IsTag:1<<1,HasDescriptors:1<<2,HasSuperCalls:1<<3,HasConstructor:1<<4,HasFields:1<<5,HasMixins:1<<6,HasInitor:1<<7,HasDecorators:1<<8,IsObjectExtension:1<<9},T=new Map,fr=globalThis[pe]||(globalThis[pe]={counter:0,classes:T});function V(t,e={}){return T.has(t)||T.set(t,{symbol:Symbol(t.name),parent:Object.getPrototypeOf(t.prototype)?.constructor,for:t,uses:null,inits:null,id:fr.counter++,...e}),T.get(t)}function Ue(t,e){return t===e||e?.[pr]?.(t)}function C(t){return t?.toIterable?.()||t}function mr(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 Le(t,e,r,n={}){let i=t.constructor;!r&&e&&(r=Object.getOwnPropertyDescriptors(e),delete r.constructor,r[z]&&(console.warn(`Cannot define plain fields when extending class ${i.name}`),delete r[z]));let s=V(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 p=a.get(c);p||a.set(c,p={});let f=Object.getOwnPropertyDescriptor(c.prototype,l);f&&!mr(o,f)?console.warn("wont extend",l,f,o):p[l]=r[l]}}for(let[l,o]of a)Object.keys(o).length&&Le(l.prototype,null,o)}return Object.defineProperties(t,r),t}function Ne(t,e){let r=V(t),n=V(e);if(n.parent&&!(t.prototype instanceof n.parent))throw new Error(`Mixin ${e.name} has superclass not present in target class`);if(!n.augments){n.augments=new Set;let s=n.ref=Symbol(e.name),a=Object[Symbol.hasInstance];e.prototype[s]=!0,Object.defineProperty(e,Symbol.hasInstance,{value:function(l){return this===e?l&&!!l[s]:a.call(this,l)}})}if(t.prototype[n.ref])return t;if(n.uses)for(let s of n.uses)Ne(t,s);n.augments.add(t),r.uses||(r.uses=[]),r.uses.push(e);let i=Object.getOwnPropertyDescriptors(e.prototype);return delete i.constructor,i[z]&&(r.inits||(r.inits=[]),r.inits.push(e.prototype[z]),delete i[z]),Object.defineProperties(t.prototype,i),e?.mixed instanceof Function&&e.mixed(t),t}var D={cache:{},self:null,target:null,proxy:new Proxy({},{apply:(t,e,...r)=>D.target[e].apply(D.self,r),get:(t,e)=>Reflect.get(D.target,e,D.self),set:(t,e,r,n)=>Reflect.set(D.target,e,r,D.self)})};function A(t,e,r,n,i=null){let s=Object.getPrototypeOf(t.prototype),a=n&X.HasMixins,l;if(a&&(T.set(t,T.get(s.constructor)),s=Object.getPrototypeOf(s)),i){let c=n&X.IsObjectExtension?i:i.prototype,p=V(t);if(p.uses){i===c&&console.warn("Cannot extend object with mixins");for(let f of p.uses)Ne(i,f)}return n&X.HasSuperCalls&&(D.cache[e]=Object.create(Object.getPrototypeOf(c),Object.getOwnPropertyDescriptors(c))),Le(c,t.prototype),i}let o=s?.constructor;if(l=V(t,{symbol:e}),Object.defineProperty(t,ur,{value:l,enumerable:!1,configurable:!0}),r&&t.name!==r&&Object.defineProperty(t,"name",{value:r,configurable:!0}),l.flags=n,n&X.HasConstructor&&(t.prototype[We]=e),l.uses)for(let c of l.uses)c.mixes?.(t);return o?.inherited instanceof Function&&o.inherited(t),t}function Y(t,e){t[We]===e&&(t[cr]?.(),t[Te]&&t[Te].inited(t))}import{readFileSync as dr}from"fs";import{parseAsset as gr}from"imba/compiler";function hr(t,e){let r,n=gr({body:t});return r=`export default /* @__PURE__ */ Object.assign({ type: 'svg' },`+JSON.stringify(n)+")"}function fe(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=dr(n,"utf-8");s=await hr(a,n),e.set(n,s)}return s}}}}import{normalizePath as Kn}from"vite";import*as Yt from"esbuild";import{extname as ui,win32 as br,posix as Ve,isAbsolute as yr,resolve as vr}from"path";import xr from"picomatch";function wr(t){return Array.isArray(t)}function ze(t){return wr(t)?t:t==null?[]:[t]}var Z=function(e){return e.split(br.sep).join(Ve.sep)};function Or(t,e){if(e===!1||yr(t)||t.startsWith("*"))return Z(t);let r=Z(vr(e||"")).replace(/[-^$*+?.()|[\]{}]/g,"\\$&");return Ve.join(r,Z(t))}var Be=function(e,r,n){let i=n&&n.resolve,s=o=>o instanceof RegExp?o:{test:c=>{let p=Or(o,i);return xr(p,{dot:!0})(c)}},a=ze(e).map(s),l=ze(r).map(s);return function(c){if(typeof c!="string"||/\0/.test(c))return!1;let p=Z(c);for(let f=0;f<l.length;++f)if(l[f].test(p))return!1;for(let f=0;f<a.length;++f)if(a[f].test(p))return!0;return!a.length}},_r="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",$r="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",Sr=new Set(`${_r} ${$r}`.split(" "));Sr.add("");import{normalizePath as He}from"vite";import*as qe from"fs";import{URL as bi,URLSearchParams as Ke,pathToFileURL as yi}from"url";var ee="/@fs/",Ir=process.platform==="win32";function Pr(t){let e=t.split("?",2),r=e[0],n=e[1];return{filename:r,rawQuery:n}}function Cr(t,e,r,n,i,s){let a=Rr(r);if(a.url||a.raw)return;let l=Fr(e,n),o=jr(e,n,"style");return{id:t,filename:e,normalizedFilename:l,cssId:o,query:a,timestamp:i,ssr:s}}var Er=/\?(?!.*[\/|\}])/;function Je(t){let[e,r]=t.split(Er,2);return r?Object.fromEntries(new Ke(r)):null}function jr(t,e,r){let n=["imba",`type=${r}`];return r==="style"&&n.push("lang.css"),kr(t,e)?t=e+t:t.startsWith(ee)&&(t=Ir?t.slice(ee.length):t.slice(ee.length-1)),`${t}?${n.join("&")}`}function Rr(t){let e=Object.fromEntries(new Ke(t));for(let r in e)e[r]===""&&(e[r]=!0);return e}function Fr(t,e){return Dr(He(t),e)}function kr(t,e){return t.startsWith(ee)?!1:qe.existsSync(e+t)}function Dr(t,e){return t.startsWith(e+"/")?t.slice(e.length):t}function Ar(t,e,r){let n=Be(t,e);return i=>n(i)&&r.some(s=>{let[a]=i.split("?",2);return a.endsWith(s)})}function Ge(t){let{include:e,exclude:r,extensions:n,root:i}=t,s=He(i),a=Ar(e,r,n);return(l,o,c=Date.now())=>{let{filename:p,rawQuery:f}=Pr(l);if(a(p))return Cr(l,p,f,s,c,o)}}var te={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]},Qe={};for(let t=0,e=Object.keys(te),r=e.length,n;t<r;t++){n=e[t];let[i,s]=te[n];Qe[n]=function(a){return"\x1B["+i+"m"+a+"\x1B["+s+"m"}}var B=Qe;for(let t=0,e=Object.keys(te),r=e.length,n;t<r;t++){n=e[t];let[i,s]=te[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 Mr from"debug";var me=["debug","info","warn","error","silent"],Ye="vite-plugin-imba",de={debug:{log:Mr(`vite:${Ye}`),enabled:!1,isDebug:!0},info:{color:B.cyan,log:console.log,enabled:!0},warn:{color:B.yellow,log:console.warn,enabled:!0},error:{color:B.red,log:console.error,enabled:!0},silent:{enabled:!1}},Xe="info";function Tr(t){if(t===Xe)return;let e=me.indexOf(t);if(e>-1){Xe=t;for(let r=0;r<me.length;r++)de[me[r]].enabled=r>=e}else Ze(de.error,`invalid log level: ${t} `)}function Ze(t,e,r){!t.enabled||(t.isDebug?r!==void 0?t.log(e,r):t.log(e):(t.log(t.color(`${new Date().toLocaleTimeString()} [${Ye}] ${e}`)),r&&t.log(r)))}function re(t){let e=de[t],r=Ze.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:re("debug"),info:re("info"),warn:re("warn"),error:re("error"),setLevel:Tr};function ne(t,e,r){let{emitCss:n,onwarn:i,isBuild:s}=r,a=!s&&r.experimental?.sendWarningsToBrowser,l=s?Nr:Lr,o=[],c=e?.filter(m=>!Wr(m,s,n)),p=Ur(e,s),f=[...c,...p];if(a){let m=l;l=d=>{o.push(d),m(d)}}if(f.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:f,rawWarnings:e};u.debug(`sending imba:warnings message for ${t.normalizedFilename}`),r.server?.ws?.send("imba:warnings",m)}}function Wr(t,e,r){return!r&&t.code==="css-unused-selector"||!e&&et(t)}function et(t){return t.code==="css-unused-selector"&&t.message.includes('"*"')}function Ur(t,e){let r=[];if(!e){let n=t.filter(i=>et(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 Lr(t){u.info.enabled&&u.info(H(t))}function Nr(t){u.warn.enabled&&u.warn(H(t),t.frame)}function H(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 Hr}from"imba/compiler";import it from"fs";import*as tt from"crypto";var ge=Object.create(null),zr=12;function rt(t){if(ge[t])return ge[t];let e=tt.createHash("md5");e.update(t);let r=Br(e.digest("base64")).slice(0,zr);return ge[t]=r,r}var nt={"+":"-","/":"_","=":""},Vr=new RegExp(`[${Object.keys(nt).join("")}]`,"g");function Br(t){return t.replace(Vr,e=>nt[e])}var qr=/<script [^>]*lang=["']?([^"' >]+)["']?[^>]*>/,Kr=(t,e)=>async function(n,i,s){let{filename:a,normalizedFilename:l,cssId:o,ssr:c}=n,{emitCss:p=!0}=s,f=[],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-${rt(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=it.existsSync(a)?it.statSync(a).mtimeMs:0,S=((h,O)=>{let w=Hr(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(S.erroredΦ)throw S;return p&&S.css.code&&(S.js.code+=` /*__css_import__*/import ${JSON.stringify(o)}; `),!c&&e&&(S.js.code=e({id:a,compiledCode:S.js.code,hotOptions:s.hot,compiled:S,originalCode:i,compileOptions:g})),S.js.dependencies=f,{filename:a,normalizedFilename:l,lang:i.match(qr)?.[1]||"js",compiled:S,ssr:c,dependencies:f}};function st(t,e){return Kr(e)}import{normalizePath as un}from"vite";import{createRequire as Jr}from"module";import he from"path";import ie from"fs";import{pathToFileURL as ot}from"url";var Gr,be=["imba.config.js","imbaconfig.json","imba.config.json"],Qr=new Function("path","timestamp",'return import(path + "?t=" + timestamp).then(m => m.default)'),Xr=new Function("path","timestamp",'return import(path + "?t=" + timestamp, {assert: {type: "json"}}).then(m => m.default)');async function at(t,e){if(e?.configFile===!1)return;let r=Yr(t,e);if(r){let n;if(r.endsWith(".json"))try{let i=await Xr(ot(r).href,ie.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 Qr(ot(r).href,ie.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?Gr??(Gr=Jr(import.meta.url)):Me;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 Yr(t,e){let r=t?.root||process.cwd();if(e?.configFile){let n=he.isAbsolute(e.configFile)?e.configFile:he.resolve(r,e.configFile);if(!ie.existsSync(n))throw new Error(`failed to find imba config file ${n}.`);return n}else{let n=be.map(i=>he.resolve(r,i)).filter(i=>ie.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 Zr=["module","jsnext:main","jsnext"],lt=["imba",...Zr],ye=[],ct=[];import pn from"path";import W from"path";import ut from"fs";import{createRequire as en}from"module";function ve(t,e=!0){u.debug(`findImbaDependencies: searching imba dependencies in ${t}`);let r=W.join(t,"package.json");if(!ut.existsSync(r)){if(e){let s=process.cwd();if(t!==s)return u.debug(`no package.json found in vite root ${t}`),ve(s,!1)}return u.warn("no package.json found, findRootImbaDependencies failed"),[]}let n=mt(t);if(!n)return[];let i=[...Object.keys(n.dependencies||{}),...Object.keys(n.devDependencies||{})].filter(s=>!an(s));return pt(i,t)}function pt(t,e,r=[]){let n=[],i=en(`${e}/package.json`),s=t.map(a=>ft(a,i)).filter(Boolean);for(let{pkg:a,dir:l}of s){let o=tn(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),p=c.filter(f=>r.includes(f));p.length>0&&(u.warn.enabled&&u.warn("skipping circular imba dependencies in automated vite optimizeDeps handling",p.map(f=>r.concat(f).join(">"))),c=c.filter(f=>!r.includes(f))),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 ft(t,e){try{let r=`${t}/package.json`,n=e(r);return{dir:W.dirname(e.resolve(r)),pkg:n}}catch(r){u.debug.once(`dependency ${t} does not export package.json`,r);try{let n=W.dirname(e.resolve(t));for(;n;){let i=mt(n,!0);if(i&&i.name===t)return{dir:n,pkg:i};let s=W.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 mt(t,e=!1){let r=W.join(t,"package.json");try{return JSON.parse(ut.readFileSync(r,"utf-8"))}catch(n){!e&&u.warn.enabled&&u.warn(`failed to parse ${r}`,n)}}function tn(t){return rn(t)?"component-library":nn(t)?"js-library":void 0}function rn(t){return!!t.imba}function nn(t){return!!t.dependencies?.imba||!!t.peerDependencies?.imba}var sn=["@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"],on=["@fontsource/","@postcss-plugins/","@rollup/","@imbajs/adapter-","@types/","@typescript-eslint/","eslint-","jest-","postcss-plugin-","prettier-plugin-","rollup-plugin-","vite-plugin-"];function an(t){return sn.includes(t)||on.some(e=>e.startsWith("@")?t.startsWith(e):t.substring(t.lastIndexOf("/")+1).startsWith(e))}function dt(t,e){let r=ft(t,e);if(!r)return!1;let n=r.pkg;if(n.module||n.exports)return!1;if(n.main){let s=W.extname(n.main);return!s||s===".js"||s===".cjs"}else try{return e.resolve(`${t}/index.js`),!0}catch{return!1}}import{createRequire as fn}from"module";import{compile as Ki}from"imba/compiler";var gt="Compilation Error";function se(t){if(!t?.errors?.length)return{name:"Compilation error",id:t._sourcePath,message:H({message:`Compilation error: ${t.message}`})};let e=t?.errors?.length?t.errors[0]:{diagnostics:[{source:gt}],options:{filename:t._sourcePath},range:{start:{line:1,column:1}},message:t?.toString},n=`${e.source||e?.diagnostics[0]?.source||gt} error`,i=t.options.filename,{line:s,character:a}=e.range.start,l={line:s+1,column:a,file:i},o=H({message:e.message}),c=t.sourceCode+` `,p=ln(c,l);return{name:n,message:o,id:i,frame:p,code:c,loc:l}}function ln(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 ht="vite-plugin-imba:facade";function cn(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 yt(t,e){let{prependPreprocessors:r,appendPreprocessors:n}=cn(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)=>bt(s,a)):bt(t.preprocess,0))}function bt(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 mn from"lodash.mergewith";var xe=new Set(["include","exclude","emitCss","hot","ignorePluginPreprocessors","disableDependencyReinclusion","experimental","ssr"]),vt=new Set(["extensions","compilerOptions","preprocess","onwarn"]),dn=new Set(["configFile","kit",...xe,...vt]);function xt(t){let e=Object.keys(t||{}).filter(r=>!dn.has(r));e.length&&u.warn(`invalid plugin options "${e.join(", ")}" in inline config`,t)}function gn(t){if(!t)return;let e=Object.keys(t).filter(o=>xe.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=>vt.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=>!xe.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 wt(t={},e,r){let n={...e,root:xn(e)},i={extensions:[".imba",".imba1"],emitCss:!0},s=gn(await at(n,t)),a={root:n.root,isBuild:r.command==="build",isServe:r.command==="serve",isDebug:process.env.DEBUG!=null},l=Ot(i,s,t,a);return s?.configFile&&(l.configFile=s.configFile,l.config=s),l}function Ot(...t){let e={};for(let r of t.filter(Boolean))e=mn(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=Ot(r,t,n);return yn(i),vn(i),yt(i,e),hn(i),bn(i),i}function hn(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 bn(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 yn(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 vn(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 xn(t){return un(t.root?pn.resolve(t.root):process.cwd())}function $t(t,e){let r=ve(t.root),n={resolve:{mainFields:[...lt],dedupe:[...ye,...ct]}};return n.optimizeDeps=wn(r,t,e.optimizeDeps),t.experimental?.prebundleImbaLibraries&&(n.optimizeDeps={...n.optimizeDeps,extensions:t.extensions??[".imba",".imba1"],esbuildOptions:{plugins:[{name:ht,setup:()=>{}}]}}),n.ssr=On(r,t,e,n),n}function wn(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=ye.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(p=>!o.includes(p.name)&&a(p.name)).flatMap(p=>{let f=fn(`${p.dir}/package.json`);return Object.keys(p.pkg.dependencies||{}).filter(m=>!a(m)&&dt(m,f)).map(m=>p.path.concat(p.name,m).join(" > "))});u.debug("reincluding transitive dependencies of excluded imba dependencies",c),n.push(...c)}return{include:n,exclude:i}}function On(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 oe=class{constructor(){this._css=new Map;this._js=new Map;this._dependencies=new Map;this._dependants=new Map;this._resolvedImbaFields=new Map;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 It from"path";function Pt(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))})},p=d=>{let g=r(d,!1);g&&e.remove(g)&&u.debug(`cleared VitePluginImbaCache for deleted file ${d}`)},f=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:[p,c]};if(i!==!1){let d=be.map(y=>It.join(l,y)),g=y=>{d.includes(y)&&f(y)},b=y=>{y===i&&f(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 Ct(t,e,r){e&&!e.startsWith(r+"/")&&!e.includes("\0")&&St.existsSync(e)&&t.add(It.resolve(e))}async function Et(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(),p;try{i.compilerOptions.sourcemap=!1,p=await t(r,c,i),n.update(p)}catch(v){throw n.setError(r,v),v}let f=new Set,m=a.moduleGraph.getModuleById(r.cssId),d=a.moduleGraph.getModuleById(r.id);m&&$n(o,p.compiled.css)&&(u.debug("handleHotUpdate css changed for "+r.cssId),f.add(m));let b=d&&Sn(l,p.compiled.js,r.filename);b&&(u.debug("handleHotUpdate js changed for "+r.id),f.add(d)),b||ne(r,p.compiled.warnings,i);let y=[...f].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 _n(t,e){return!t&&!e?!0:!t&&e||t&&!e?!1:t===e}function $n(t,e){return!_n(t?.code,e?.code)}function Sn(t,e,r){try{return t=t.code.substring(0,t.code.lastIndexOf(` `)),e=e.code.substring(0,e.code.lastIndexOf(` `)),!Ue(e,t)}catch{return!0}}import Jn from"url";import Q from"path";import ue from"fs";import Gn from"crypto";import q from"path";import we from"fs";import le from"url";import In from"lodash.mergewith";var Pn=typeof __dirname<"u"?__dirname:q.dirname(le.fileURLToPath(import.meta.url));var ae=q.join(Pn,"..","bin","./imba.config.mjs"),Oe=["imba","ts","mts","js","mjs","cjs"];async function U(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(Oe),p=c.length;o<p;o++){let m="imba.config."+c[o],d=q.join(process.cwd(),m);we.existsSync(d)&&(n=d)}if(!(e.vite||n))return{};if(t=="test"){for(let o=0,c=C(Oe),p=c.length;o<p;o++){let f=c[o];if(f=="imba")continue;let m="vitest.config."+f,d=q.join(process.cwd(),m);if(we.existsSync(d))return d}for(let o=0,c=C(Oe),p=c.length;o<p;o++){let m="imba.config."+c[o],d=q.join(process.cwd(),m);if(we.existsSync(d)){let{default:g}=await import(String(le.pathToFileURL(d)));return typeof g=="function"&&(g=await g(e)),d}}return ae}if(n||(n=ae),n.endsWith("imba"))throw new Error(".imba config file not yet supported");let{default:i}=await import(String(le.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==ae)return s;let{default:a}=await import(String(le.pathToFileURL(ae)));typeof a=="function"&&(a=await a({command:globalThis.command,mode:globalThis.mode}));let l=a[t];return s?In(l,s,function(o,c,p){if(Array.isArray(o)&&Array.isArray(c)){let f=c.flat(),m=o.flat();return f.concat(m).filter(function(g,b,y){return y.findLastIndex(function(v){return p=="plugins"?v?.name===g?.name:v===g})==b})}}):l}import Lt from"path";import Dn from"fs";import{createHash as An}from"crypto";var Bs=lr(Rt());function Ft(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 Wt}from"perf_hooks";var L=Symbol.for("#spinner"),Cn=Symbol.for("#ctime"),kt=Symbol.for("#IMBA_OPTIONS"),Dt=Symbol.for("#prefix"),_e=Symbol.for("#last"),K=process.platform!=="win32"||process.env.CI||process.env.TERM==="xterm-256color",En={info:(K?"ℹ":"i").brightΞyellow,success:(K?"✔":"√").green,warning:(K?"⚠":"!!").yellow,error:(K?"×":"✖").red,debug:(K?"ℹ":"i").blue},jn={"-1":"socket",4:"ip4",6:"ip6"},At=["debug","info","success","warning","error","silent"];function Rn(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 $e(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 Rn(i);if(n==="elapsed"){i!=null&&e.unshift(i);let a=Wt.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(jn[i.addressType]).brightΞblue:i}),[t,...e]}var Mt=null,Fn=null,Tt=Symbol(),Ie=class{static get main(){return Fn||(Fn=new this)}constructor({prefix:e=null,loglevel:r}={}){this[Cn]=Date.now(),this.prefix=e,this.loglevel=r||process.env.IMBA_LOGLEVEL||globalThis[kt]&&globalThis[kt].loglevel||"info",Y(this,Tt)}set prefix(e){this[Dt]=e?$e(...e)[0]:""}get prefix(){return this[Dt]}write(e,...r){if(At.indexOf(e)<At.indexOf(this.loglevel))return this;if(!r.length)return console.log();let n=En[e]||e,[i,...s]=$e(...r);return this.prefix&&(i=this.prefix+i),this[L]&&this[L].isSpinning?(e=="success"&&(this[L].clear(),console.log(n+" "+i,...s),this[L].frame()),this[L].text=i):console.log(n+" "+i,...s)}log(){let[e,...r]=$e(...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=Wt.now(),r=this[_e]?e-this[_e]:0;return this.write("debug",...arguments,("+"+r.toFixed(1)+"ms").blue),this[_e]=e}spinner(){}get[L](){return Mt}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}}},Se=Ie;(()=>{A(Ie,Tt,"Logger",16)})();var Ut=new Se().proxy;var kn=Symbol.for("#key"),Pe={},Ce={},Nt=Symbol(),Ee=class{constructor(e){this[kn]=Symbol(),this.o=e,this.dir=this.o.cachedir,this.nodefs=this.o.volume||Dn,this.aliaspath=this.dir&&Lt.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=Ft(),this.preload(),Y(this,Nt)}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(),Ut.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(Pe[e])return Pe[e];let r=An("sha1");return r.update(e),Pe[e]=r.digest("hex")}fullKeyPath(e){return Ce[e]||(Ce[e]=Lt.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(p){return i.setKeyValue(s,p)})});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}},J=Ee;(()=>{A(Ee,Nt,"Cache",16)})();import{resolve as zt}from"path";import{loadEnv as Mn}from"vite";function Tn(t,e,r,n){return r.reduce((i,s)=>{let a=t[s]===void 0?n[s]:t[s];return a===void 0&&Un(s),i[`${e}.${s}`]=JSON.stringify(a),i},{})}function Wn(t){return t===""?process.env:Object.fromEntries(Object.entries(process.env).filter(([e,r])=>e.startsWith(t)))}function Un(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 Vt(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=zt(s);a=a?zt(o,a):o;let c=i?Mn(l,a,r):Wn(r),p=t==="all"?Object.keys(c):Array.isArray(t)?t:Object.keys(t),f=t==="all"||Array.isArray(t)?{}:t;return{define:Tn(c,n,p,f)}}}}import Jt from"path";import*as Qt from"vite";import Hn from"fs";import Gt from"get-port";var G=Symbol.for("#__listeners__");var je=new Set,Ln=Symbol(),Re=class{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}},Bt=Re;(()=>{A(Re,Ln,"LazyProxy",16)})();var Ht=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 Kt(t,e,r,n){let i,s,a;return i=t[G]||(t[G]={}),s=i[e]||(i[e]={}),a=s.tail||(s.tail=s.next={}),a.listener=r,a.path=n,s.tail=a.next={},a}function Nn(t,e,r){let n=Kt(t,e,r);return n.times=1,n}function zn(t,e,r,n){if(!r)return;let i,s,a=t[G];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 Vn(t,e,r=null){let n;(n=t[G])&&(n[e]&&Ht(e,r,n[e]),n.all&&Ht(e,[e,r],n.all))}var Bn=Symbol(),Fe=class{emit(e,...r){return Vn(this,e,r)}on(e,...r){return Kt(this,e,...r)}once(e,...r){return Nn(this,e,...r)}un(e,...r){return zn(this,e,...r)}},qt=Fe;(()=>{A(Fe,Bn,"Emitter",0)})();var N;async function qn(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(!N){let a=await Gt({port:Gt.makeRange(24e3,26e3)}),l=await U("server",{command:"server",mode:i}),o=e.serverOptions||{server:{hmr:{port:a}}},p={...await U("client",{mode:i,vite:!0}),...o,appType:"custom",server:{...l.server,...o.server,middlewareMode:!0}};N=await Qt.createServer(p)}let s=Jt.join(N.config.root,e.outDir||"dist","public");return n?(N.close().then(function(){return N=null}),globalThis.__vite_manifest__||(globalThis.__vite_manifest__=JSON.parse(Hn.readFileSync(Jt.join(s,"manifest.json"),"utf-8"))),globalThis.IMBA_PUBDIR=s,r&&r(s),s):(t.use(function(a,l,o){return je.add(a.url),o()}),t.use(N.middlewares),t.use(function(a,l,o){return je.delete(a.url),o()}),s)}var Zt="virtual:imba/*?css",Xt="\0"+Zt,ke=Jn.fileURLToPath(new URL(".",import.meta.url));function Qn(){let t=Gn.createHash("sha256"),e=ue.readdirSync(ke);e.sort();for(let r of C(e)){let n=Q.join(ke,r);if(Q.extname(r)===".mjs"){let i=ue.readFileSync(n);t.update(i)}}return t.digest("hex")}function Xn(){let t=process.env.IMBA_CACHEDIR||Q.resolve(ke,".imba-cache");return ue.existsSync(t)||(console.log("cache dir does not exist - create",t),ue.mkdirSync(t)),t}var Wo=Qn(),Yn=Xn();globalThis.VITE_IMBA_CACHE=new J({cachedir:Yn});function Zn(t={}){let e="vite-plugin-imba",r="pre",n,i,s,a,l={},o,c,p,f,m;xt(t);let d=new oe,g=[];async function b(h,O){process.env.DEBUG?u.setLevel("debug"):h.logLevel&&u.setLevel(h.logLevel),m||(m=await U("imba",{vite:!0})||{}),s=await wt(t,h,O);let w=$t(s,h);return u.debug("additional vite config",w),c=O.mode==="test",p=O.mode==="production",f=O.mode==="development",w}function y(h){return s=_t(s,h),n=Ge(s),i=st(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 I,P,j;try{j=await i(x,h,s)}catch(R){throw d.setError(x,R),se(R)}let{warnings:F,errors:M}=j.compiled;if(Array.isArray(F)&&F.length>0&&ne(x,F,s),Array.isArray(M)&&M.length>0)throw se({errors:M,options:{filename:O},sourceCode:h});if(d.update(j),j.dependencies.length&&s.server&&j.dependencies.forEach(function(R){return Ct(s.server.watcher,R,s.root)}),u.debug("transform returns compiled js for "+x.filename),x.query.iife){let R=j.compiled.js.code,er=(await Yt.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(er)+"; 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==Zt||h=="*?css"||h=="*")return Xt;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 I=Je(h,E);if(I?.external!==void 0){let P=[];for(let F=0,M=C(Object.keys(I)),De=M.length;F<De;F++){let R=M[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(Q.isAbsolute(h)){let x=new URL("file://"+h),I=new URLSearchParams(x.search);if(I.has("url")&&I.has("entry")){I.delete("url"),I.delete("entry"),x.search=I.toString();let P=Kn(x.toString().replace("file://",""));return P=Q.relative(a.root,P),"export default '"+P+"'"}}let E=n(h,!!w);if(Xt==h)return"export default ''";if(E){let{filename:x,query:I}=E;if(I.imba&&I.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,Pt(s,d,n)}async function S(h){if(!s.hot||!s.emitCss)return;let O=n(h.file,!1,h.timestamp);if(O)try{return await Et(i,h,O,d,s)}catch(w){throw se(w)}}return g.push(fe()),g.push({name:"vite-plugin-imba",enforce:"pre",api:l,config:b,configResolved:y,transform:_,load:k,resolveId:v,configureServer:$,handleHotUpdate:S}),g}export{Zn as default,Xn as getCacheDir,Qn as getImbaHash,qn as setupVite,Vt as vitePluginEnvironment};