@salty-css/vite 0.0.1-alpha.133 → 0.0.1-alpha.134

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/index.cjs +15 -15
  2. package/index.js +144 -144
  3. package/package.json +2 -2
package/index.cjs CHANGED
@@ -1,28 +1,28 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const fe=require("esbuild"),ue=require("child_process"),c=require("path"),u=require("fs"),G=require("fs/promises"),J=require("winston");var Z=typeof document<"u"?document.currentScript:null;function pe(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const s in e)if(s!=="default"){const n=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(t,s,n.get?n:{enumerable:!0,get:()=>e[s]})}}return t.default=e,Object.freeze(t)}const X=pe(fe),U=e=>String.fromCharCode(e+(e>25?39:97)),de=(e,t)=>{let s="",n;for(n=Math.abs(e);n>52;n=n/52|0)s=U(n%52)+s;return s=U(n%52)+s,s.length<t?s=s.padStart(t,"a"):s.length>t&&(s=s.slice(-t)),s},ye=(e,t)=>{let s=t.length;for(;s;)e=e*33^t.charCodeAt(--s);return e},I=(e,t=5)=>{const s=ye(5381,JSON.stringify(e))>>>0;return de(s,t)};function D(e){return e?typeof e!="string"?D(String(e)):e.replace(/[\s.]/g,"-").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g,(t,s)=>(s>0?"-":"")+t.toLowerCase()):""}const ge=(e,t)=>{if(typeof e!="string")return{result:e};if(!t)return{result:e};const s=[];return Object.values(t).forEach(n=>{const{pattern:i,transform:r}=n;e=e.replace(i,y=>{const{value:f,css:h}=r(y);return h&&s.push(h),f})}),{result:e,additionalCss:s}},Y=e=>typeof e!="string"?{result:e}:/\{[^{}]+\}/g.test(e)?{result:e.replace(/\{([^{}]+)\}/g,(...n)=>`var(--${D(n[1].replaceAll(".","-"))})`)}:{result:e},O=(e,t,s,n)=>{if(!e)return"";const i=[],r=Object.entries(e).reduce((f,[h,o])=>{const a=h.trim();if(typeof o=="function"&&(o=o()),typeof o=="object"){if(!o)return f;if(a==="variants")return Object.entries(o).forEach(([d,$])=>{$&&Object.entries($).forEach(([k,P])=>{if(!P)return;const T=`${t}.${d}-${k}`,p=O(P,T);i.push(p)})}),f;if(a==="defaultVariants")return f;if(a==="compoundVariants")return o.forEach(d=>{const{css:$,...k}=d,P=Object.entries(k).reduce((p,[g,w])=>`${p}.${g}-${w}`,t),T=O($,P);i.push(T)}),f;if(a.startsWith("@")){const d=O(o,t),$=`${a} {
2
- ${d.replace(`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const fe=require("esbuild"),ue=require("child_process"),a=require("path"),u=require("fs"),G=require("fs/promises"),J=require("winston");var Z=typeof document<"u"?document.currentScript:null;function pe(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const s in e)if(s!=="default"){const n=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(t,s,n.get?n:{enumerable:!0,get:()=>e[s]})}}return t.default=e,Object.freeze(t)}const X=pe(fe),U=e=>String.fromCharCode(e+(e>25?39:97)),de=(e,t)=>{let s="",n;for(n=Math.abs(e);n>52;n=n/52|0)s=U(n%52)+s;return s=U(n%52)+s,s.length<t?s=s.padStart(t,"a"):s.length>t&&(s=s.slice(-t)),s},ye=(e,t)=>{let s=t.length;for(;s;)e=e*33^t.charCodeAt(--s);return e},I=(e,t=5)=>{const s=ye(5381,JSON.stringify(e))>>>0;return de(s,t)};function M(e){return e?typeof e!="string"?M(String(e)):e.replace(/[\s.]/g,"-").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g,(t,s)=>(s>0?"-":"")+t.toLowerCase()):""}const ge=(e,t)=>{if(typeof e!="string")return{result:e};if(!t)return{result:e};const s=[];return Object.values(t).forEach(n=>{const{pattern:i,transform:r}=n;e=e.replace(i,f=>{const{value:g,css:c}=r(f);return c&&s.push(c),g})}),{result:e,additionalCss:s}},Y=e=>typeof e!="string"?{result:e}:/\{[^{}]+\}/g.test(e)?{result:e.replace(/\{([^{}]+)\}/g,(...n)=>`var(--${M(n[1].replaceAll(".","-"))})`)}:{result:e},D=(e,t,s)=>{if(!e)return"";const n=[],i=Object.entries(e).reduce((f,[g,c])=>{const o=g.trim();if(typeof c=="function"&&(c=c()),typeof c=="object"){if(!c)return f;if(o==="variants")return Object.entries(c).forEach(([l,y])=>{y&&Object.entries(y).forEach(([C,$])=>{if(!$)return;const T=`${t}.${l}-${C}`,k=D($,T);n.push(k)})}),f;if(o==="defaultVariants")return f;if(o==="compoundVariants")return c.forEach(l=>{const{css:y,...C}=l,$=Object.entries(C).reduce((k,[p,h])=>`${k}.${p}-${h}`,t),T=D(y,$);n.push(T)}),f;if(o.startsWith("@")){const l=D(c,t),y=`${o} {
2
+ ${l.replace(`
3
3
  `,`
4
4
  `)}
5
- }`;return i.push($),f}const m=h.includes("&")?a.replace("&",t):a.startsWith(":")?`${t}${a}`:`${t} ${a}`,l=O(o,m);return i.push(l),f}const F=a.startsWith("-")?a:D(a),x=(m,l=";")=>f=`${f}${m}${l}`,b=m=>x(`${F}:${m}`);if(typeof o=="number")return b(o);if(typeof o!="string")if("toString"in o)o=o.toString();else return f;const{modifiers:C}={},j=function*(){yield Y(o),yield ge(o,C)}();for(const{result:m,additionalCss:l=[]}of j)o=m,l.forEach(d=>{const $=O(d,"");x($,"")});return b(o)},"");if(!r)return i.join(`
6
- `);if(!t)return r;let y="";return y=`${t} { ${r} }`,[y,...i].join(`
7
- `)},Q=(e,t=[])=>{if(!e)return"";const s=[],n={};if(Object.entries(e).forEach(([i,r])=>{if(typeof r=="object"){if(!r)return;const y=i.trim(),f=Q(r,[...t,y]);s.push(f)}else n[i]=r}),Object.keys(n).length){const i=t.map(D).join("-"),r=O(n,`.${i}`);s.push(r)}return s.join(`
8
- `)},me=e=>Object.entries(e).reduce((t,[s,n])=>(typeof n=="object"&&(t[s]=v(n).map(i=>`"${i}"`).join(" | ")),t),{}),v=(e,t="",s=new Set)=>e?(Object.entries(e).forEach(([n,i])=>{const r=t?`${t}.${n}`:n;return typeof i=="object"?v(i,r,s):s.add(t)}),[...s]):[],ee=e=>{if(!e||e==="/")throw new Error("Could not find package.json file");const t=c.join(e,"package.json");return u.existsSync(t)?t:ee(c.join(e,".."))},he=async e=>{const t=ee(e);return await G.readFile(t,"utf-8").then(JSON.parse).catch(()=>{})},be=async e=>{const t=await he(e);if(t)return t.type};let V;const te=async e=>{if(V)return V;const t=await be(e);return t==="module"?V="esm":(t==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:Z&&Z.tagName.toUpperCase()==="SCRIPT"&&Z.src||new URL("index.cjs",document.baseURI).href).endsWith(".cjs"))&&(V="cjs"),V||"esm"},q=J.createLogger({level:"debug",format:J.format.combine(J.format.colorize(),J.format.cli()),transports:[new J.transports.Console({})]});function se(e){return e?typeof e!="string"?se(String(e)):e.replace(/[\s-]/g,".").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g,(t,s)=>(s>0?".":"")+t.toLowerCase()):""}const je={"*, *::before, *::after":{boxSizing:"border-box"},"*":{margin:0},html:{lineHeight:1.15,textSizeAdjust:"100%",WebkitFontSmoothing:"antialiased"},"img, picture, video, canvas, svg":{display:"block",maxWidth:"100%"},"p, h1, h2, h3, h4, h5, h6":{overflowWrap:"break-word"},p:{textWrap:"pretty"},"h1, h2, h3, h4, h5, h6":{textWrap:"balance"},a:{color:"currentColor"},button:{lineHeight:"1em",color:"currentColor"},"input, optgroup, select, textarea":{fontFamily:"inherit",fontSize:"100%",lineHeight:"1.15em"}},H={externalModules:[]},ne=e=>{if(H.externalModules.length>0)return H.externalModules;const t=c.join(e,"salty.config.ts"),n=u.readFileSync(t,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!n)return[];const i=n[1].split(",").map(r=>r.replace(/['"`]/g,"").trim());return H.externalModules=i,i},W=e=>c.join(e,"./saltygen"),Se=["salty","css","styles","styled"],$e=(e=[])=>new RegExp(`\\.(${[...Se,...e].join("|")})\\.`),z=(e,t=[])=>$e(t).test(e),we=async e=>{const t=W(e),s=c.join(e,"salty.config.ts"),n=c.join(t,"salty.config.js"),i=await te(e),r=ne(e);await X.build({entryPoints:[s],minify:!0,treeShaking:!0,bundle:!0,outfile:n,format:i,external:r});const y=Date.now(),{config:f}=await import(`${n}?t=${y}`);return f},Fe=async e=>{const t=await we(e),s=new Set,n=(p,g=[])=>p?Object.entries(p).flatMap(([w,S])=>{if(!S)return;if(typeof S=="object")return n(S,[...g,w]);const A=se(w),R=D(w),E=[...g,A].join(".");s.add(`"${E}"`);const N=[...g.map(D),R].join("-"),{result:_}=Y(S);return`--${N}: ${_};`}):[],i=p=>p?Object.entries(p).flatMap(([g,w])=>{const S=n(w);return g==="base"?S.join(""):`${g} { ${S.join("")} }`}):[],r=p=>p?Object.entries(p).flatMap(([g,w])=>Object.entries(w).flatMap(([S,A])=>{const R=n(A,[g]),E=`.${g}-${S}, [data-${g}="${S}"]`,N=R.join("");return`${E} { ${N} }`})):[],y=n(t.variables),f=i(t.responsiveVariables),h=r(t.conditionalVariables),o=W(e),a=c.join(o,"css/_variables.css"),F=`:root { ${y.join("")} ${f.join("")} } ${h.join("")}`;u.writeFileSync(a,F);const x=c.join(o,"css/_global.css"),b=O(t.global,"");u.writeFileSync(x,`@layer global { ${b} }`);const C=c.join(o,"css/_reset.css"),j=t.reset==="none"?{}:typeof t.reset=="object"?t.reset:je,m=O(j,"");u.writeFileSync(C,`@layer reset { ${m} }`);const l=c.join(o,"css/_templates.css"),d=Q(t.templates),$=me(t.templates);u.writeFileSync(l,d);const k=c.join(o,"types/css-tokens.d.ts"),T=`
5
+ }`;return n.push(y),f}const d=g.includes("&")?o.replace("&",t):o.startsWith(":")?`${t}${o}`:`${t} ${o}`,S=D(c,d);return n.push(S),f}const m=o.startsWith("-")?o:M(o),w=(d,S=";")=>f=`${f}${d}${S}`,F=d=>w(`${m}:${d}`);if(typeof c=="number")return F(c);if(typeof c!="string")if("toString"in c)c=c.toString();else return f;const{modifiers:j}={},O=function*(){yield Y(c),yield ge(c,j)}();for(const{result:d,additionalCss:S=[]}of O)c=d,S.forEach(l=>{const y=D(l,"");w(y,"")});return F(c)},"");return i?t?[`${t} { ${i} }`,...n].join(`
6
+ `):i:n.join(`
7
+ `)},Q=(e,t=[])=>{if(!e)return"";const s=[],n={};if(Object.entries(e).forEach(([i,r])=>{if(typeof r=="object"){if(!r)return;const f=i.trim(),g=Q(r,[...t,f]);s.push(g)}else n[i]=r}),Object.keys(n).length){const i=t.map(M).join("-"),r=D(n,`.${i}`);s.push(r)}return s.join(`
8
+ `)},me=e=>Object.entries(e).reduce((t,[s,n])=>(typeof n=="object"&&(t[s]=v(n).map(i=>`"${i}"`).join(" | ")),t),{}),v=(e,t="",s=new Set)=>e?(Object.entries(e).forEach(([n,i])=>{const r=t?`${t}.${n}`:n;return typeof i=="object"?v(i,r,s):s.add(t)}),[...s]):[],ee=e=>{if(!e||e==="/")throw new Error("Could not find package.json file");const t=a.join(e,"package.json");return u.existsSync(t)?t:ee(a.join(e,".."))},he=async e=>{const t=ee(e);return await G.readFile(t,"utf-8").then(JSON.parse).catch(()=>{})},be=async e=>{const t=await he(e);if(t)return t.type};let V;const te=async e=>{if(V)return V;const t=await be(e);return t==="module"?V="esm":(t==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:Z&&Z.tagName.toUpperCase()==="SCRIPT"&&Z.src||new URL("index.cjs",document.baseURI).href).endsWith(".cjs"))&&(V="cjs"),V||"esm"},q=J.createLogger({level:"debug",format:J.format.combine(J.format.colorize(),J.format.cli()),transports:[new J.transports.Console({})]});function se(e){return e?typeof e!="string"?se(String(e)):e.replace(/[\s-]/g,".").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g,(t,s)=>(s>0?".":"")+t.toLowerCase()):""}const je={"*, *::before, *::after":{boxSizing:"border-box"},"*":{margin:0},html:{lineHeight:1.15,textSizeAdjust:"100%",WebkitFontSmoothing:"antialiased"},"img, picture, video, canvas, svg":{display:"block",maxWidth:"100%"},"p, h1, h2, h3, h4, h5, h6":{overflowWrap:"break-word"},p:{textWrap:"pretty"},"h1, h2, h3, h4, h5, h6":{textWrap:"balance"},a:{color:"currentColor"},button:{lineHeight:"1em",color:"currentColor"},"input, optgroup, select, textarea":{fontFamily:"inherit",fontSize:"100%",lineHeight:"1.15em"}},H={externalModules:[]},ne=e=>{if(H.externalModules.length>0)return H.externalModules;const t=a.join(e,"salty.config.ts"),n=u.readFileSync(t,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!n)return[];const i=n[1].split(",").map(r=>r.replace(/['"`]/g,"").trim());return H.externalModules=i,i},W=e=>a.join(e,"./saltygen"),Se=["salty","css","styles","styled"],$e=(e=[])=>new RegExp(`\\.(${[...Se,...e].join("|")})\\.`),z=(e,t=[])=>$e(t).test(e),we=async e=>{const t=W(e),s=a.join(e,"salty.config.ts"),n=a.join(t,"salty.config.js"),i=await te(e),r=ne(e);await X.build({entryPoints:[s],minify:!0,treeShaking:!0,bundle:!0,outfile:n,format:i,external:r});const f=Date.now(),{config:g}=await import(`${n}?t=${f}`);return g},Fe=async e=>{const t=await we(e),s=new Set,n=(p,h=[])=>p?Object.entries(p).flatMap(([P,b])=>{if(!b)return;if(typeof b=="object")return n(b,[...h,P]);const A=se(P),R=M(P),E=[...h,A].join(".");s.add(`"${E}"`);const N=[...h.map(M),R].join("-"),{result:_}=Y(b);return`--${N}: ${_};`}):[],i=p=>p?Object.entries(p).flatMap(([h,P])=>{const b=n(P);return h==="base"?b.join(""):`${h} { ${b.join("")} }`}):[],r=p=>p?Object.entries(p).flatMap(([h,P])=>Object.entries(P).flatMap(([b,A])=>{const R=n(A,[h]),E=`.${h}-${b}, [data-${h}="${b}"]`,N=R.join("");return`${E} { ${N} }`})):[],f=n(t.variables),g=i(t.responsiveVariables),c=r(t.conditionalVariables),o=W(e),m=a.join(o,"css/_variables.css"),w=`:root { ${f.join("")} ${g.join("")} } ${c.join("")}`;u.writeFileSync(m,w);const F=a.join(o,"css/_global.css"),j=D(t.global,"");u.writeFileSync(F,`@layer global { ${j} }`);const x=a.join(o,"css/_reset.css"),d=t.reset==="none"?{}:typeof t.reset=="object"?t.reset:je,S=D(d,"");u.writeFileSync(x,`@layer reset { ${S} }`);const l=a.join(o,"css/_templates.css"),y=Q(t.templates),C=me(t.templates);u.writeFileSync(l,y);const $=a.join(o,"types/css-tokens.d.ts"),k=`
9
9
  // Variable types
10
10
  type VariableTokens = ${[...s].join("|")};
11
11
  type PropertyValueToken = \`{\${VariableTokens}}\`;
12
12
 
13
13
  // Template types
14
14
  type TemplateTokens = {
15
- ${Object.entries($).map(([p,g])=>`${p}?: ${g}`).join(`
15
+ ${Object.entries(C).map(([p,h])=>`${p}?: ${h}`).join(`
16
16
  `)}
17
17
  }
18
- `;u.writeFileSync(k,T)},B=async(e,t,s)=>{const n=I(t),i=c.join(s,"./temp");u.existsSync(i)||u.mkdirSync(i);const r=c.parse(t);let y=u.readFileSync(t,"utf8");y=y.replace(/styled\([^"'`{,]+,/g,"styled('div',");const f=c.join(s,"js",n+".js"),h=ne(e),o=await te(e);await X.build({stdin:{contents:y,sourcefile:r.base,resolveDir:r.dir,loader:"tsx"},minify:!1,treeShaking:!0,bundle:!0,outfile:f,format:o,target:["node20"],keepNames:!0,external:h,packages:"external"});const a=Date.now();return await import(`${f}?t=${a}`)},K=async e=>{const t=W(e),s=c.join(t,"salty.config.js"),n=Date.now(),{config:i}=await import(`${s}?t=${n}`);return i},oe=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},xe=async(e,t=oe())=>{try{const s=Date.now();t?q.info("Generating CSS in production mode! 🔥"):q.info("Generating CSS in development mode! 🚀");const n=[],i=[],r=W(e),y=c.join(r,"index.css");(()=>{u.existsSync(r)&&ue.execSync("rm -rf "+r),u.mkdirSync(r),u.mkdirSync(c.join(r,"css")),u.mkdirSync(c.join(r,"types"))})(),await Fe(e);const h=await K(e);async function o(l,d){const $=["node_modules","saltygen"],k=u.statSync(l);if(k.isDirectory()){const P=u.readdirSync(l);if($.some(p=>l.includes(p)))return;await Promise.all(P.map(p=>o(c.join(l,p),c.join(d,p))))}else if(k.isFile()&&z(l)){const T=await B(e,l,r),p=[];Object.entries(T).forEach(([E,N])=>{if(N.isKeyframes&&N.css){const L=`a_${N.animationName}.css`,ae=`css/${L}`,le=c.join(r,ae);n.push(L),u.writeFileSync(le,N.css);return}if(!N.generator)return;const _=N.generator._withBuildContext({name:E,config:h,prod:t});i[_.priority]||(i[_.priority]=[]),i[_.priority].push(_.cssFileName),p.push(_.cssFileName);const ie=`css/${_.cssFileName}`,ce=c.join(r,ie);u.writeFileSync(ce,_.css)});const g=p.map(E=>`@import url('./${E}');`).join(`
19
- `),w=I(l,6),S=c.parse(l),A=D(S.name),R=c.join(r,`css/f_${A}-${w}.css`);u.writeFileSync(R,g)}}await o(e,r);const a=n.map(l=>`@import url('./css/${l}');`).join(`
20
- `);let C=`@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
18
+ `;u.writeFileSync($,k)},B=async(e,t,s)=>{const n=I(t),i=a.join(s,"./temp");u.existsSync(i)||u.mkdirSync(i);const r=a.parse(t);let f=u.readFileSync(t,"utf8");f=f.replace(/styled\([^"'`{,]+,/g,"styled('div',");const g=a.join(s,"js",n+".js"),c=ne(e),o=await te(e);await X.build({stdin:{contents:f,sourcefile:r.base,resolveDir:r.dir,loader:"tsx"},minify:!1,treeShaking:!0,bundle:!0,outfile:g,format:o,target:["node20"],keepNames:!0,external:c,packages:"external"});const m=Date.now();return await import(`${g}?t=${m}`)},K=async e=>{const t=W(e),s=a.join(t,"salty.config.js"),n=Date.now(),{config:i}=await import(`${s}?t=${n}`);return i},oe=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},xe=async(e,t=oe())=>{try{const s=Date.now();t?q.info("Generating CSS in production mode! 🔥"):q.info("Generating CSS in development mode! 🚀");const n=[],i=[],r=W(e),f=a.join(r,"index.css");(()=>{u.existsSync(r)&&ue.execSync("rm -rf "+r),u.mkdirSync(r),u.mkdirSync(a.join(r,"css")),u.mkdirSync(a.join(r,"types"))})(),await Fe(e);const c=await K(e);async function o(l,y){const C=["node_modules","saltygen"],$=u.statSync(l);if($.isDirectory()){const T=u.readdirSync(l);if(C.some(p=>l.includes(p)))return;await Promise.all(T.map(p=>o(a.join(l,p),a.join(y,p))))}else if($.isFile()&&z(l)){const k=await B(e,l,r),p=[];Object.entries(k).forEach(([E,N])=>{if(N.isKeyframes&&N.css){const L=`a_${N.animationName}.css`,ae=`css/${L}`,le=a.join(r,ae);n.push(L),u.writeFileSync(le,N.css);return}if(!N.generator)return;const _=N.generator._withBuildContext({name:E,config:c,prod:t});i[_.priority]||(i[_.priority]=[]),i[_.priority].push(_.cssFileName),p.push(_.cssFileName);const ie=`css/${_.cssFileName}`,ce=a.join(r,ie);u.writeFileSync(ce,_.css)});const h=p.map(E=>`@import url('./${E}');`).join(`
19
+ `),P=I(l,6),b=a.parse(l),A=M(b.name),R=a.join(r,`css/f_${A}-${P}.css`);u.writeFileSync(R,h)}}await o(e,r);const m=n.map(l=>`@import url('./css/${l}');`).join(`
20
+ `);let x=`@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
21
21
 
22
- ${["_variables.css","_reset.css","_global.css","_templates.css"].filter(l=>{try{return u.readFileSync(c.join(r,"css",l),"utf8").length>0}catch{return!1}}).map(l=>`@import url('./css/${l}');`).join(`
22
+ ${["_variables.css","_reset.css","_global.css","_templates.css"].filter(l=>{try{return u.readFileSync(a.join(r,"css",l),"utf8").length>0}catch{return!1}}).map(l=>`@import url('./css/${l}');`).join(`
23
23
  `)}
24
- ${a}`;if(h.importStrategy!=="component"){const l=i.flat().map(d=>`@import url('./css/${d}');`).join(`
25
- `);C+=l}u.writeFileSync(y,C);const j=Date.now()-s,m=j<200?"🔥":j<500?"🚀":j<1e3?"🎉":j<2e3?"🚗":j<5e3?"🤔":"🥴";q.info(`Generated CSS in ${j}ms! ${m}`)}catch(s){console.error(s)}},Ce=async(e,t)=>{try{const s=[],n=c.join(e,"./saltygen"),i=c.join(n,"index.css");if(z(t)){const y=await K(e),f=await B(e,t,n);Object.entries(f).forEach(([x,b])=>{if(b.isKeyframes&&b.css){const l=`css/${`a_${b.animationName}.css`}`,d=c.join(n,l);u.writeFileSync(d,b.css);return}if(!b.generator)return;const C=b.generator._withBuildContext({name:x,config:y}),M=`css/${C.cssFileName}`,j=c.join(n,M);s.push(C.cssFileName),u.writeFileSync(j,C.css)});const h=u.readFileSync(i,"utf8").split(`
26
- `),o=s.map(x=>`@import url('../saltygen/css/${x}');`),F=[...new Set([...h,...o])].join(`
27
- `);u.writeFileSync(i,F)}}catch(s){console.error(s)}},ke=async(e,t,s=oe())=>{try{const n=c.join(e,"./saltygen");if(z(t)){const r=u.readFileSync(t,"utf8");r.replace(/^(?!export\s)const\s.*/gm,a=>`export ${a}`)!==r&&await G.writeFile(t,r);const f=await K(e),h=await B(e,t,n);let o=r;if(Object.entries(h).forEach(([a,F])=>{var w;if(F.isKeyframes||!F.generator)return;const x=F.generator._withBuildContext({name:a,config:f,prod:s}),b=new RegExp(`\\s${a}[=\\s]+[^()]+styled\\(([^,]+),`,"g").exec(r);if(!b)return console.error("Could not find the original declaration");const C=(w=b.at(1))==null?void 0:w.trim(),M=new RegExp(`\\s${a}[=\\s]+styled\\(`,"g").exec(o);if(!M)return console.error("Could not find the original declaration");const{index:j}=M;let m=!1;const l=setTimeout(()=>m=!0,5e3);let d=0,$=!1,k=0;for(;!$&&!m;){const S=o[j+d];S==="("&&k++,S===")"&&k--,k===0&&S===")"&&($=!0),d>o.length&&(m=!0),d++}if(!m)clearTimeout(l);else throw new Error("Failed to find the end of the styled call and timed out");const P=j+d,T=o.slice(j,P),p=o,g=` ${a} = styled(${C}, "${x.classNames}", ${JSON.stringify(x.props)});`;o=o.replace(T,g),p===o&&console.error("Minimize file failed to change content",{name:a,tagName:C})}),f.importStrategy==="component"){const a=I(t,6),F=c.parse(t);o=`import '../../saltygen/css/${`f_${D(F.name)}-${a}.css`}';
24
+ ${m}`;if(c.importStrategy!=="component"){const l=i.reduce((y,C,$)=>{const T=C.reduce((k,p)=>k+`@import url('./css/${p}') layer(l${$});`,"");return`${y}
25
+ ${T}`},"");x+=l}u.writeFileSync(f,x);const d=Date.now()-s,S=d<200?"🔥":d<500?"🚀":d<1e3?"🎉":d<2e3?"🚗":d<5e3?"🤔":"🥴";q.info(`Generated CSS in ${d}ms! ${S}`)}catch(s){console.error(s)}},Ce=async(e,t)=>{try{const s=[],n=a.join(e,"./saltygen"),i=a.join(n,"index.css");if(z(t)){const f=await K(e),g=await B(e,t,n);Object.entries(g).forEach(([F,j])=>{if(j.isKeyframes&&j.css){const l=`css/${`a_${j.animationName}.css`}`,y=a.join(n,l);u.writeFileSync(y,j.css);return}if(!j.generator)return;const x=j.generator._withBuildContext({name:F,config:f}),O=`css/${x.cssFileName}`,d=a.join(n,O);s.push(x.cssFileName),u.writeFileSync(d,x.css)});const c=u.readFileSync(i,"utf8").split(`
26
+ `),o=s.map(F=>`@import url('../saltygen/css/${F}');`),w=[...new Set([...c,...o])].join(`
27
+ `);u.writeFileSync(i,w)}}catch(s){console.error(s)}},ke=async(e,t,s=oe())=>{try{const n=a.join(e,"./saltygen");if(z(t)){const r=u.readFileSync(t,"utf8");r.replace(/^(?!export\s)const\s.*/gm,m=>`export ${m}`)!==r&&await G.writeFile(t,r);const g=await K(e),c=await B(e,t,n);let o=r;if(Object.entries(c).forEach(([m,w])=>{var P;if(w.isKeyframes||!w.generator)return;const F=w.generator._withBuildContext({name:m,config:g,prod:s}),j=new RegExp(`\\s${m}[=\\s]+[^()]+styled\\(([^,]+),`,"g").exec(r);if(!j)return console.error("Could not find the original declaration");const x=(P=j.at(1))==null?void 0:P.trim(),O=new RegExp(`\\s${m}[=\\s]+styled\\(`,"g").exec(o);if(!O)return console.error("Could not find the original declaration");const{index:d}=O;let S=!1;const l=setTimeout(()=>S=!0,5e3);let y=0,C=!1,$=0;for(;!C&&!S;){const b=o[d+y];b==="("&&$++,b===")"&&$--,$===0&&b===")"&&(C=!0),y>o.length&&(S=!0),y++}if(!S)clearTimeout(l);else throw new Error("Failed to find the end of the styled call and timed out");const T=d+y,k=o.slice(d,T),p=o,h=` ${m} = styled(${x}, "${F.classNames}", ${JSON.stringify(F.props)});`;o=o.replace(k,h),p===o&&console.error("Minimize file failed to change content",{name:m,tagName:x})}),g.importStrategy==="component"){const m=I(t,6),w=a.parse(t);o=`import '../../saltygen/css/${`f_${M(w.name)}-${m}.css`}';
28
28
  ${o}`}return o=o.replace("{ styled }","{ styledClient as styled }"),o=o.replace("@salty-css/react/styled","@salty-css/react/styled-client"),o}}catch(n){console.error("Error in minimizeFile:",n)}},re=e=>({name:"stylegen",buildStart:()=>xe(e),load:async t=>{if(z(t))return await ke(e,t)},handleHotUpdate:async({file:t,server:s})=>{t.includes("salty.config")&&await s.restart()},watchChange:{handler:async t=>{z(t)&&await Ce(e,t)}}});exports.default=re;exports.saltyPlugin=re;
package/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as Q from "esbuild";
2
2
  import { execSync as pt } from "child_process";
3
3
  import { join as l, parse as K } from "path";
4
- import { existsSync as G, mkdirSync as R, statSync as ut, readdirSync as dt, writeFileSync as k, readFileSync as z } from "fs";
4
+ import { existsSync as G, mkdirSync as R, statSync as ut, readdirSync as dt, writeFileSync as N, readFileSync as z } from "fs";
5
5
  import { readFile as gt, writeFile as yt } from "fs/promises";
6
6
  import { createLogger as mt, format as H, transports as ht } from "winston";
7
7
  const Y = (t) => String.fromCharCode(t + (t > 25 ? 39 : 97)), $t = (t, e) => {
@@ -16,8 +16,8 @@ const Y = (t) => String.fromCharCode(t + (t > 25 ? 39 : 97)), $t = (t, e) => {
16
16
  const s = bt(5381, JSON.stringify(t)) >>> 0;
17
17
  return $t(s, e);
18
18
  };
19
- function O(t) {
20
- return t ? typeof t != "string" ? O(String(t)) : t.replace(/[\s.]/g, "-").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g, (e, s) => (s > 0 ? "-" : "") + e.toLowerCase()) : "";
19
+ function V(t) {
20
+ return t ? typeof t != "string" ? V(String(t)) : t.replace(/[\s.]/g, "-").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g, (e, s) => (s > 0 ? "-" : "") + e.toLowerCase()) : "";
21
21
  }
22
22
  const St = (t, e) => {
23
23
  if (typeof t != "string") return { result: t };
@@ -25,63 +25,60 @@ const St = (t, e) => {
25
25
  const s = [];
26
26
  return Object.values(e).forEach((n) => {
27
27
  const { pattern: i, transform: r } = n;
28
- t = t.replace(i, (d) => {
29
- const { value: f, css: m } = r(d);
30
- return m && s.push(m), f;
28
+ t = t.replace(i, (f) => {
29
+ const { value: g, css: c } = r(f);
30
+ return c && s.push(c), g;
31
31
  });
32
32
  }), { result: t, additionalCss: s };
33
- }, v = (t) => typeof t != "string" ? { result: t } : /\{[^{}]+\}/g.test(t) ? { result: t.replace(/\{([^{}]+)\}/g, (...n) => `var(--${O(n[1].replaceAll(".", "-"))})`) } : { result: t }, E = (t, e, s, n) => {
33
+ }, v = (t) => typeof t != "string" ? { result: t } : /\{[^{}]+\}/g.test(t) ? { result: t.replace(/\{([^{}]+)\}/g, (...n) => `var(--${V(n[1].replaceAll(".", "-"))})`) } : { result: t }, O = (t, e, s) => {
34
34
  if (!t) return "";
35
- const i = [], r = Object.entries(t).reduce((f, [m, o]) => {
36
- const c = m.trim();
37
- if (typeof o == "function" && (o = o()), typeof o == "object") {
38
- if (!o) return f;
39
- if (c === "variants")
40
- return Object.entries(o).forEach(([u, S]) => {
41
- S && Object.entries(S).forEach(([C, N]) => {
42
- if (!N) return;
43
- const P = `${e}.${u}-${C}`, p = E(N, P);
44
- i.push(p);
35
+ const n = [], i = Object.entries(t).reduce((f, [g, c]) => {
36
+ const o = g.trim();
37
+ if (typeof c == "function" && (c = c()), typeof c == "object") {
38
+ if (!c) return f;
39
+ if (o === "variants")
40
+ return Object.entries(c).forEach(([a, d]) => {
41
+ d && Object.entries(d).forEach(([x, S]) => {
42
+ if (!S) return;
43
+ const P = `${e}.${a}-${x}`, C = O(S, P);
44
+ n.push(C);
45
45
  });
46
46
  }), f;
47
- if (c === "defaultVariants")
47
+ if (o === "defaultVariants")
48
48
  return f;
49
- if (c === "compoundVariants")
50
- return o.forEach((u) => {
51
- const { css: S, ...C } = u, N = Object.entries(C).reduce((p, [g, w]) => `${p}.${g}-${w}`, e), P = E(S, N);
52
- i.push(P);
49
+ if (o === "compoundVariants")
50
+ return c.forEach((a) => {
51
+ const { css: d, ...x } = a, S = Object.entries(x).reduce((C, [p, m]) => `${C}.${p}-${m}`, e), P = O(d, S);
52
+ n.push(P);
53
53
  }), f;
54
- if (c.startsWith("@")) {
55
- const u = E(o, e), S = `${c} {
56
- ${u.replace(`
54
+ if (o.startsWith("@")) {
55
+ const a = O(c, e), d = `${o} {
56
+ ${a.replace(`
57
57
  `, `
58
58
  `)}
59
59
  }`;
60
- return i.push(S), f;
60
+ return n.push(d), f;
61
61
  }
62
- const y = m.includes("&") ? c.replace("&", e) : c.startsWith(":") ? `${e}${c}` : `${e} ${c}`, a = E(o, y);
63
- return i.push(a), f;
62
+ const u = g.includes("&") ? o.replace("&", e) : o.startsWith(":") ? `${e}${o}` : `${e} ${o}`, b = O(c, u);
63
+ return n.push(b), f;
64
64
  }
65
- const j = c.startsWith("-") ? c : O(c), F = (y, a = ";") => f = `${f}${y}${a}`, h = (y) => F(`${j}:${y}`);
66
- if (typeof o == "number") return h(o);
67
- if (typeof o != "string")
68
- if ("toString" in o) o = o.toString();
65
+ const y = o.startsWith("-") ? o : V(o), w = (u, b = ";") => f = `${f}${u}${b}`, j = (u) => w(`${y}:${u}`);
66
+ if (typeof c == "number") return j(c);
67
+ if (typeof c != "string")
68
+ if ("toString" in c) c = c.toString();
69
69
  else return f;
70
- const { modifiers: x } = {}, $ = function* () {
71
- yield v(o), yield St(o, x);
70
+ const { modifiers: $ } = {}, E = function* () {
71
+ yield v(c), yield St(c, $);
72
72
  }();
73
- for (const { result: y, additionalCss: a = [] } of $)
74
- o = y, a.forEach((u) => {
75
- const S = E(u, "");
76
- F(S, "");
73
+ for (const { result: u, additionalCss: b = [] } of E)
74
+ c = u, b.forEach((a) => {
75
+ const d = O(a, "");
76
+ w(d, "");
77
77
  });
78
- return h(o);
78
+ return j(c);
79
79
  }, "");
80
- if (!r) return i.join(`
81
- `);
82
- if (!e) return r;
83
- let d = "";
84
- return d = `${e} { ${r} }`, [d, ...i].join(`
80
+ return i ? e ? [`${e} { ${i} }`, ...n].join(`
81
+ `) : i : n.join(`
85
82
  `);
86
83
  }, tt = (t, e = []) => {
87
84
  if (!t) return "";
@@ -89,12 +86,12 @@ const St = (t, e) => {
89
86
  if (Object.entries(t).forEach(([i, r]) => {
90
87
  if (typeof r == "object") {
91
88
  if (!r) return;
92
- const d = i.trim(), f = tt(r, [...e, d]);
93
- s.push(f);
89
+ const f = i.trim(), g = tt(r, [...e, f]);
90
+ s.push(g);
94
91
  } else
95
92
  n[i] = r;
96
93
  }), Object.keys(n).length) {
97
- const i = e.map(O).join("-"), r = E(n, `.${i}`);
94
+ const i = e.map(V).join("-"), r = O(n, `.${i}`);
98
95
  s.push(r);
99
96
  }
100
97
  return s.join(`
@@ -193,52 +190,52 @@ const xt = {
193
190
  format: i,
194
191
  external: r
195
192
  });
196
- const d = Date.now(), { config: f } = await import(`${n}?t=${d}`);
197
- return f;
193
+ const f = Date.now(), { config: g } = await import(`${n}?t=${f}`);
194
+ return g;
198
195
  }, Pt = async (t) => {
199
- const e = await Nt(t), s = /* @__PURE__ */ new Set(), n = (p, g = []) => p ? Object.entries(p).flatMap(([w, b]) => {
200
- if (!b) return;
201
- if (typeof b == "object") return n(b, [...g, w]);
202
- const A = ot(w), J = O(w), M = [...g, A].join(".");
196
+ const e = await Nt(t), s = /* @__PURE__ */ new Set(), n = (p, m = []) => p ? Object.entries(p).flatMap(([k, h]) => {
197
+ if (!h) return;
198
+ if (typeof h == "object") return n(h, [...m, k]);
199
+ const A = ot(k), J = V(k), M = [...m, A].join(".");
203
200
  s.add(`"${M}"`);
204
- const T = [...g.map(O), J].join("-"), { result: D } = v(b);
201
+ const T = [...m.map(V), J].join("-"), { result: D } = v(h);
205
202
  return `--${T}: ${D};`;
206
- }) : [], i = (p) => p ? Object.entries(p).flatMap(([g, w]) => {
207
- const b = n(w);
208
- return g === "base" ? b.join("") : `${g} { ${b.join("")} }`;
209
- }) : [], r = (p) => p ? Object.entries(p).flatMap(([g, w]) => Object.entries(w).flatMap(([b, A]) => {
210
- const J = n(A, [g]), M = `.${g}-${b}, [data-${g}="${b}"]`, T = J.join("");
203
+ }) : [], i = (p) => p ? Object.entries(p).flatMap(([m, k]) => {
204
+ const h = n(k);
205
+ return m === "base" ? h.join("") : `${m} { ${h.join("")} }`;
206
+ }) : [], r = (p) => p ? Object.entries(p).flatMap(([m, k]) => Object.entries(k).flatMap(([h, A]) => {
207
+ const J = n(A, [m]), M = `.${m}-${h}, [data-${m}="${h}"]`, T = J.join("");
211
208
  return `${M} { ${T} }`;
212
- })) : [], d = n(e.variables), f = i(e.responsiveVariables), m = r(e.conditionalVariables), o = Z(t), c = l(o, "css/_variables.css"), j = `:root { ${d.join("")} ${f.join("")} } ${m.join("")}`;
213
- k(c, j);
214
- const F = l(o, "css/_global.css"), h = E(e.global, "");
215
- k(F, `@layer global { ${h} }`);
216
- const x = l(o, "css/_reset.css"), $ = e.reset === "none" ? {} : typeof e.reset == "object" ? e.reset : xt, y = E($, "");
217
- k(x, `@layer reset { ${y} }`);
218
- const a = l(o, "css/_templates.css"), u = tt(e.templates), S = wt(e.templates);
219
- k(a, u);
220
- const C = l(o, "types/css-tokens.d.ts"), P = `
209
+ })) : [], f = n(e.variables), g = i(e.responsiveVariables), c = r(e.conditionalVariables), o = Z(t), y = l(o, "css/_variables.css"), w = `:root { ${f.join("")} ${g.join("")} } ${c.join("")}`;
210
+ N(y, w);
211
+ const j = l(o, "css/_global.css"), $ = O(e.global, "");
212
+ N(j, `@layer global { ${$} }`);
213
+ const F = l(o, "css/_reset.css"), u = e.reset === "none" ? {} : typeof e.reset == "object" ? e.reset : xt, b = O(u, "");
214
+ N(F, `@layer reset { ${b} }`);
215
+ const a = l(o, "css/_templates.css"), d = tt(e.templates), x = wt(e.templates);
216
+ N(a, d);
217
+ const S = l(o, "types/css-tokens.d.ts"), C = `
221
218
  // Variable types
222
219
  type VariableTokens = ${[...s].join("|")};
223
220
  type PropertyValueToken = \`{\${VariableTokens}}\`;
224
221
 
225
222
  // Template types
226
223
  type TemplateTokens = {
227
- ${Object.entries(S).map(([p, g]) => `${p}?: ${g}`).join(`
224
+ ${Object.entries(x).map(([p, m]) => `${p}?: ${m}`).join(`
228
225
  `)}
229
226
  }
230
227
  `;
231
- k(C, P);
228
+ N(S, C);
232
229
  }, q = async (t, e, s) => {
233
230
  const n = L(e), i = l(s, "./temp");
234
231
  G(i) || R(i);
235
232
  const r = K(e);
236
- let d = z(e, "utf8");
237
- d = d.replace(/styled\([^"'`{,]+,/g, "styled('div',");
238
- const f = l(s, "js", n + ".js"), m = rt(t), o = await nt(t);
233
+ let f = z(e, "utf8");
234
+ f = f.replace(/styled\([^"'`{,]+,/g, "styled('div',");
235
+ const g = l(s, "js", n + ".js"), c = rt(t), o = await nt(t);
239
236
  await Q.build({
240
237
  stdin: {
241
- contents: d,
238
+ contents: f,
242
239
  sourcefile: r.base,
243
240
  resolveDir: r.dir,
244
241
  loader: "tsx"
@@ -246,15 +243,15 @@ const xt = {
246
243
  minify: !1,
247
244
  treeShaking: !0,
248
245
  bundle: !0,
249
- outfile: f,
246
+ outfile: g,
250
247
  format: o,
251
248
  target: ["node20"],
252
249
  keepNames: !0,
253
- external: m,
250
+ external: c,
254
251
  packages: "external"
255
252
  });
256
- const c = Date.now();
257
- return await import(`${f}?t=${c}`);
253
+ const y = Date.now();
254
+ return await import(`${g}?t=${y}`);
258
255
  }, U = async (t) => {
259
256
  const e = Z(t), s = l(e, "salty.config.js"), n = Date.now(), { config: i } = await import(`${s}?t=${n}`);
260
257
  return i;
@@ -268,44 +265,44 @@ const xt = {
268
265
  try {
269
266
  const s = Date.now();
270
267
  e ? B.info("Generating CSS in production mode! 🔥") : B.info("Generating CSS in development mode! 🚀");
271
- const n = [], i = [], r = Z(t), d = l(r, "index.css");
268
+ const n = [], i = [], r = Z(t), f = l(r, "index.css");
272
269
  (() => {
273
270
  G(r) && pt("rm -rf " + r), R(r), R(l(r, "css")), R(l(r, "types"));
274
271
  })(), await Pt(t);
275
- const m = await U(t);
276
- async function o(a, u) {
277
- const S = ["node_modules", "saltygen"], C = ut(a);
278
- if (C.isDirectory()) {
279
- const N = dt(a);
280
- if (S.some((p) => a.includes(p))) return;
281
- await Promise.all(N.map((p) => o(l(a, p), l(u, p))));
282
- } else if (C.isFile() && W(a)) {
283
- const P = await q(t, a, r), p = [];
284
- Object.entries(P).forEach(([M, T]) => {
272
+ const c = await U(t);
273
+ async function o(a, d) {
274
+ const x = ["node_modules", "saltygen"], S = ut(a);
275
+ if (S.isDirectory()) {
276
+ const P = dt(a);
277
+ if (x.some((p) => a.includes(p))) return;
278
+ await Promise.all(P.map((p) => o(l(a, p), l(d, p))));
279
+ } else if (S.isFile() && W(a)) {
280
+ const C = await q(t, a, r), p = [];
281
+ Object.entries(C).forEach(([M, T]) => {
285
282
  if (T.isKeyframes && T.css) {
286
283
  const X = `a_${T.animationName}.css`, lt = `css/${X}`, ft = l(r, lt);
287
- n.push(X), k(ft, T.css);
284
+ n.push(X), N(ft, T.css);
288
285
  return;
289
286
  }
290
287
  if (!T.generator) return;
291
288
  const D = T.generator._withBuildContext({
292
289
  name: M,
293
- config: m,
290
+ config: c,
294
291
  prod: e
295
292
  });
296
293
  i[D.priority] || (i[D.priority] = []), i[D.priority].push(D.cssFileName), p.push(D.cssFileName);
297
294
  const ct = `css/${D.cssFileName}`, at = l(r, ct);
298
- k(at, D.css);
295
+ N(at, D.css);
299
296
  });
300
- const g = p.map((M) => `@import url('./${M}');`).join(`
301
- `), w = L(a, 6), b = K(a), A = O(b.name), J = l(r, `css/f_${A}-${w}.css`);
302
- k(J, g);
297
+ const m = p.map((M) => `@import url('./${M}');`).join(`
298
+ `), k = L(a, 6), h = K(a), A = V(h.name), J = l(r, `css/f_${A}-${k}.css`);
299
+ N(J, m);
303
300
  }
304
301
  }
305
302
  await o(t, r);
306
- const c = n.map((a) => `@import url('./css/${a}');`).join(`
303
+ const y = n.map((a) => `@import url('./css/${a}');`).join(`
307
304
  `);
308
- let x = `@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
305
+ let F = `@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
309
306
 
310
307
  ${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((a) => {
311
308
  try {
@@ -315,15 +312,18 @@ ${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((a) =
315
312
  }
316
313
  }).map((a) => `@import url('./css/${a}');`).join(`
317
314
  `)}
318
- ${c}`;
319
- if (m.importStrategy !== "component") {
320
- const a = i.flat().map((u) => `@import url('./css/${u}');`).join(`
321
- `);
322
- x += a;
315
+ ${y}`;
316
+ if (c.importStrategy !== "component") {
317
+ const a = i.reduce((d, x, S) => {
318
+ const P = x.reduce((C, p) => C + `@import url('./css/${p}') layer(l${S});`, "");
319
+ return `${d}
320
+ ${P}`;
321
+ }, "");
322
+ F += a;
323
323
  }
324
- k(d, x);
325
- const $ = Date.now() - s, y = $ < 200 ? "🔥" : $ < 500 ? "🚀" : $ < 1e3 ? "🎉" : $ < 2e3 ? "🚗" : $ < 5e3 ? "🤔" : "🥴";
326
- B.info(`Generated CSS in ${$}ms! ${y}`);
324
+ N(f, F);
325
+ const u = Date.now() - s, b = u < 200 ? "🔥" : u < 500 ? "🚀" : u < 1e3 ? "🎉" : u < 2e3 ? "🚗" : u < 5e3 ? "🤔" : "🥴";
326
+ B.info(`Generated CSS in ${u}ms! ${b}`);
327
327
  } catch (s) {
328
328
  console.error(s);
329
329
  }
@@ -331,24 +331,24 @@ ${c}`;
331
331
  try {
332
332
  const s = [], n = l(t, "./saltygen"), i = l(n, "index.css");
333
333
  if (W(e)) {
334
- const d = await U(t), f = await q(t, e, n);
335
- Object.entries(f).forEach(([F, h]) => {
336
- if (h.isKeyframes && h.css) {
337
- const a = `css/${`a_${h.animationName}.css`}`, u = l(n, a);
338
- k(u, h.css);
334
+ const f = await U(t), g = await q(t, e, n);
335
+ Object.entries(g).forEach(([j, $]) => {
336
+ if ($.isKeyframes && $.css) {
337
+ const a = `css/${`a_${$.animationName}.css`}`, d = l(n, a);
338
+ N(d, $.css);
339
339
  return;
340
340
  }
341
- if (!h.generator) return;
342
- const x = h.generator._withBuildContext({
343
- name: F,
344
- config: d
345
- }), V = `css/${x.cssFileName}`, $ = l(n, V);
346
- s.push(x.cssFileName), k($, x.css);
341
+ if (!$.generator) return;
342
+ const F = $.generator._withBuildContext({
343
+ name: j,
344
+ config: f
345
+ }), E = `css/${F.cssFileName}`, u = l(n, E);
346
+ s.push(F.cssFileName), N(u, F.css);
347
347
  });
348
- const m = z(i, "utf8").split(`
349
- `), o = s.map((F) => `@import url('../saltygen/css/${F}');`), j = [.../* @__PURE__ */ new Set([...m, ...o])].join(`
348
+ const c = z(i, "utf8").split(`
349
+ `), o = s.map((j) => `@import url('../saltygen/css/${j}');`), w = [.../* @__PURE__ */ new Set([...c, ...o])].join(`
350
350
  `);
351
- k(i, j);
351
+ N(i, w);
352
352
  }
353
353
  } catch (s) {
354
354
  console.error(s);
@@ -358,35 +358,35 @@ ${c}`;
358
358
  const n = l(t, "./saltygen");
359
359
  if (W(e)) {
360
360
  const r = z(e, "utf8");
361
- r.replace(/^(?!export\s)const\s.*/gm, (c) => `export ${c}`) !== r && await yt(e, r);
362
- const f = await U(t), m = await q(t, e, n);
361
+ r.replace(/^(?!export\s)const\s.*/gm, (y) => `export ${y}`) !== r && await yt(e, r);
362
+ const g = await U(t), c = await q(t, e, n);
363
363
  let o = r;
364
- if (Object.entries(m).forEach(([c, j]) => {
365
- var w;
366
- if (j.isKeyframes || !j.generator) return;
367
- const F = j.generator._withBuildContext({
368
- name: c,
369
- config: f,
364
+ if (Object.entries(c).forEach(([y, w]) => {
365
+ var k;
366
+ if (w.isKeyframes || !w.generator) return;
367
+ const j = w.generator._withBuildContext({
368
+ name: y,
369
+ config: g,
370
370
  prod: s
371
- }), h = new RegExp(`\\s${c}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(r);
372
- if (!h) return console.error("Could not find the original declaration");
373
- const x = (w = h.at(1)) == null ? void 0 : w.trim(), V = new RegExp(`\\s${c}[=\\s]+styled\\(`, "g").exec(o);
374
- if (!V) return console.error("Could not find the original declaration");
375
- const { index: $ } = V;
376
- let y = !1;
377
- const a = setTimeout(() => y = !0, 5e3);
378
- let u = 0, S = !1, C = 0;
379
- for (; !S && !y; ) {
380
- const b = o[$ + u];
381
- b === "(" && C++, b === ")" && C--, C === 0 && b === ")" && (S = !0), u > o.length && (y = !0), u++;
371
+ }), $ = new RegExp(`\\s${y}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(r);
372
+ if (!$) return console.error("Could not find the original declaration");
373
+ const F = (k = $.at(1)) == null ? void 0 : k.trim(), E = new RegExp(`\\s${y}[=\\s]+styled\\(`, "g").exec(o);
374
+ if (!E) return console.error("Could not find the original declaration");
375
+ const { index: u } = E;
376
+ let b = !1;
377
+ const a = setTimeout(() => b = !0, 5e3);
378
+ let d = 0, x = !1, S = 0;
379
+ for (; !x && !b; ) {
380
+ const h = o[u + d];
381
+ h === "(" && S++, h === ")" && S--, S === 0 && h === ")" && (x = !0), d > o.length && (b = !0), d++;
382
382
  }
383
- if (!y) clearTimeout(a);
383
+ if (!b) clearTimeout(a);
384
384
  else throw new Error("Failed to find the end of the styled call and timed out");
385
- const N = $ + u, P = o.slice($, N), p = o, g = ` ${c} = styled(${x}, "${F.classNames}", ${JSON.stringify(F.props)});`;
386
- o = o.replace(P, g), p === o && console.error("Minimize file failed to change content", { name: c, tagName: x });
387
- }), f.importStrategy === "component") {
388
- const c = L(e, 6), j = K(e);
389
- o = `import '../../saltygen/css/${`f_${O(j.name)}-${c}.css`}';
385
+ const P = u + d, C = o.slice(u, P), p = o, m = ` ${y} = styled(${F}, "${j.classNames}", ${JSON.stringify(j.props)});`;
386
+ o = o.replace(C, m), p === o && console.error("Minimize file failed to change content", { name: y, tagName: F });
387
+ }), g.importStrategy === "component") {
388
+ const y = L(e, 6), w = K(e);
389
+ o = `import '../../saltygen/css/${`f_${V(w.name)}-${y}.css`}';
390
390
  ${o}`;
391
391
  }
392
392
  return o = o.replace("{ styled }", "{ styledClient as styled }"), o = o.replace("@salty-css/react/styled", "@salty-css/react/styled-client"), o;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salty-css/vite",
3
- "version": "0.0.1-alpha.133",
3
+ "version": "0.0.1-alpha.134",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "typings": "./dist/index.d.ts",
@@ -34,6 +34,6 @@
34
34
  }
35
35
  },
36
36
  "dependencies": {
37
- "@salty-css/core": "^0.0.1-alpha.133"
37
+ "@salty-css/core": "^0.0.1-alpha.134"
38
38
  }
39
39
  }