@salty-css/vite 0.0.1-alpha.132 → 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 +16 -16
  2. package/index.js +150 -145
  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(([C,P])=>{if(!P)return;const T=`${t}.${d}-${C}`,p=O(P,T);i.push(p)})}),f;if(a==="defaultVariants")return f;if(a==="compoundVariants")return o.forEach(d=>{const{css:$,...C}=d,P=Object.entries(C).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:k}={},j=function*(){yield Y(o),yield ge(o,k)}();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"},button:{lineHeight:"1em"},"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 k=c.join(o,"css/_reset.css"),j=t.reset==="none"?{}:typeof t.reset=="object"?t.reset:je,m=O(j,"");u.writeFileSync(k,`@layer reset { ${m} }`);const l=c.join(o,"css/_templates.css"),d=Q(t.templates),$=me(t.templates);u.writeFileSync(l,d);const C=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(C,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"],C=u.statSync(l);if(C.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(C.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 k=`@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
- `);k+=l}u.writeFileSync(y,k);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)}},ke=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 k=b.generator._withBuildContext({name:x,config:y}),M=`css/${k.cssFileName}`,j=c.join(n,M);s.push(k.cssFileName),u.writeFileSync(j,k.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)}},Ce=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 k=(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,C=0;for(;!$&&!m;){const S=o[j+d];S==="("&&C++,S===")"&&C--,C===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(${k}, "${x.classNames}", ${JSON.stringify(x.props)});`;o=o.replace(T,g),p===o&&console.error("Minimize file failed to change content",{name:a,tagName:k})}),f.importStrategy==="component"){const a=I(t,6),F=c.parse(t);o=`import '../../saltygen/css/${`f_${D(F.name)}-${a}.css`}';
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 Ce(e,t)},handleHotUpdate:async({file:t,server:s})=>{t.includes("salty.config")&&await s.restart()},watchChange:{handler:async t=>{z(t)&&await ke(e,t)}}});exports.default=re;exports.saltyPlugin=re;
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
+ ${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(`
@@ -159,9 +156,14 @@ const xt = {
159
156
  "h1, h2, h3, h4, h5, h6": {
160
157
  textWrap: "balance"
161
158
  },
159
+ /** Improve link color */
160
+ a: {
161
+ color: "currentColor"
162
+ },
162
163
  /** Improve button line height */
163
164
  button: {
164
- lineHeight: "1em"
165
+ lineHeight: "1em",
166
+ color: "currentColor"
165
167
  },
166
168
  /** Improve form elements */
167
169
  "input, optgroup, select, textarea": {
@@ -188,52 +190,52 @@ const xt = {
188
190
  format: i,
189
191
  external: r
190
192
  });
191
- const d = Date.now(), { config: f } = await import(`${n}?t=${d}`);
192
- return f;
193
+ const f = Date.now(), { config: g } = await import(`${n}?t=${f}`);
194
+ return g;
193
195
  }, Pt = async (t) => {
194
- const e = await Nt(t), s = /* @__PURE__ */ new Set(), n = (p, g = []) => p ? Object.entries(p).flatMap(([w, b]) => {
195
- if (!b) return;
196
- if (typeof b == "object") return n(b, [...g, w]);
197
- 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(".");
198
200
  s.add(`"${M}"`);
199
- const T = [...g.map(O), J].join("-"), { result: D } = v(b);
201
+ const T = [...m.map(V), J].join("-"), { result: D } = v(h);
200
202
  return `--${T}: ${D};`;
201
- }) : [], i = (p) => p ? Object.entries(p).flatMap(([g, w]) => {
202
- const b = n(w);
203
- return g === "base" ? b.join("") : `${g} { ${b.join("")} }`;
204
- }) : [], r = (p) => p ? Object.entries(p).flatMap(([g, w]) => Object.entries(w).flatMap(([b, A]) => {
205
- 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("");
206
208
  return `${M} { ${T} }`;
207
- })) : [], 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("")}`;
208
- k(c, j);
209
- const F = l(o, "css/_global.css"), h = E(e.global, "");
210
- k(F, `@layer global { ${h} }`);
211
- const x = l(o, "css/_reset.css"), $ = e.reset === "none" ? {} : typeof e.reset == "object" ? e.reset : xt, y = E($, "");
212
- k(x, `@layer reset { ${y} }`);
213
- const a = l(o, "css/_templates.css"), u = tt(e.templates), S = wt(e.templates);
214
- k(a, u);
215
- 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 = `
216
218
  // Variable types
217
219
  type VariableTokens = ${[...s].join("|")};
218
220
  type PropertyValueToken = \`{\${VariableTokens}}\`;
219
221
 
220
222
  // Template types
221
223
  type TemplateTokens = {
222
- ${Object.entries(S).map(([p, g]) => `${p}?: ${g}`).join(`
224
+ ${Object.entries(x).map(([p, m]) => `${p}?: ${m}`).join(`
223
225
  `)}
224
226
  }
225
227
  `;
226
- k(C, P);
228
+ N(S, C);
227
229
  }, q = async (t, e, s) => {
228
230
  const n = L(e), i = l(s, "./temp");
229
231
  G(i) || R(i);
230
232
  const r = K(e);
231
- let d = z(e, "utf8");
232
- d = d.replace(/styled\([^"'`{,]+,/g, "styled('div',");
233
- 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);
234
236
  await Q.build({
235
237
  stdin: {
236
- contents: d,
238
+ contents: f,
237
239
  sourcefile: r.base,
238
240
  resolveDir: r.dir,
239
241
  loader: "tsx"
@@ -241,15 +243,15 @@ const xt = {
241
243
  minify: !1,
242
244
  treeShaking: !0,
243
245
  bundle: !0,
244
- outfile: f,
246
+ outfile: g,
245
247
  format: o,
246
248
  target: ["node20"],
247
249
  keepNames: !0,
248
- external: m,
250
+ external: c,
249
251
  packages: "external"
250
252
  });
251
- const c = Date.now();
252
- return await import(`${f}?t=${c}`);
253
+ const y = Date.now();
254
+ return await import(`${g}?t=${y}`);
253
255
  }, U = async (t) => {
254
256
  const e = Z(t), s = l(e, "salty.config.js"), n = Date.now(), { config: i } = await import(`${s}?t=${n}`);
255
257
  return i;
@@ -263,44 +265,44 @@ const xt = {
263
265
  try {
264
266
  const s = Date.now();
265
267
  e ? B.info("Generating CSS in production mode! 🔥") : B.info("Generating CSS in development mode! 🚀");
266
- const n = [], i = [], r = Z(t), d = l(r, "index.css");
268
+ const n = [], i = [], r = Z(t), f = l(r, "index.css");
267
269
  (() => {
268
270
  G(r) && pt("rm -rf " + r), R(r), R(l(r, "css")), R(l(r, "types"));
269
271
  })(), await Pt(t);
270
- const m = await U(t);
271
- async function o(a, u) {
272
- const S = ["node_modules", "saltygen"], C = ut(a);
273
- if (C.isDirectory()) {
274
- const N = dt(a);
275
- if (S.some((p) => a.includes(p))) return;
276
- await Promise.all(N.map((p) => o(l(a, p), l(u, p))));
277
- } else if (C.isFile() && W(a)) {
278
- const P = await q(t, a, r), p = [];
279
- 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]) => {
280
282
  if (T.isKeyframes && T.css) {
281
283
  const X = `a_${T.animationName}.css`, lt = `css/${X}`, ft = l(r, lt);
282
- n.push(X), k(ft, T.css);
284
+ n.push(X), N(ft, T.css);
283
285
  return;
284
286
  }
285
287
  if (!T.generator) return;
286
288
  const D = T.generator._withBuildContext({
287
289
  name: M,
288
- config: m,
290
+ config: c,
289
291
  prod: e
290
292
  });
291
293
  i[D.priority] || (i[D.priority] = []), i[D.priority].push(D.cssFileName), p.push(D.cssFileName);
292
294
  const ct = `css/${D.cssFileName}`, at = l(r, ct);
293
- k(at, D.css);
295
+ N(at, D.css);
294
296
  });
295
- const g = p.map((M) => `@import url('./${M}');`).join(`
296
- `), w = L(a, 6), b = K(a), A = O(b.name), J = l(r, `css/f_${A}-${w}.css`);
297
- 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);
298
300
  }
299
301
  }
300
302
  await o(t, r);
301
- const c = n.map((a) => `@import url('./css/${a}');`).join(`
303
+ const y = n.map((a) => `@import url('./css/${a}');`).join(`
302
304
  `);
303
- 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;
304
306
 
305
307
  ${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((a) => {
306
308
  try {
@@ -310,15 +312,18 @@ ${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((a) =
310
312
  }
311
313
  }).map((a) => `@import url('./css/${a}');`).join(`
312
314
  `)}
313
- ${c}`;
314
- if (m.importStrategy !== "component") {
315
- const a = i.flat().map((u) => `@import url('./css/${u}');`).join(`
316
- `);
317
- 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;
318
323
  }
319
- k(d, x);
320
- const $ = Date.now() - s, y = $ < 200 ? "🔥" : $ < 500 ? "🚀" : $ < 1e3 ? "🎉" : $ < 2e3 ? "🚗" : $ < 5e3 ? "🤔" : "🥴";
321
- 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}`);
322
327
  } catch (s) {
323
328
  console.error(s);
324
329
  }
@@ -326,24 +331,24 @@ ${c}`;
326
331
  try {
327
332
  const s = [], n = l(t, "./saltygen"), i = l(n, "index.css");
328
333
  if (W(e)) {
329
- const d = await U(t), f = await q(t, e, n);
330
- Object.entries(f).forEach(([F, h]) => {
331
- if (h.isKeyframes && h.css) {
332
- const a = `css/${`a_${h.animationName}.css`}`, u = l(n, a);
333
- 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);
334
339
  return;
335
340
  }
336
- if (!h.generator) return;
337
- const x = h.generator._withBuildContext({
338
- name: F,
339
- config: d
340
- }), V = `css/${x.cssFileName}`, $ = l(n, V);
341
- 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);
342
347
  });
343
- const m = z(i, "utf8").split(`
344
- `), 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(`
345
350
  `);
346
- k(i, j);
351
+ N(i, w);
347
352
  }
348
353
  } catch (s) {
349
354
  console.error(s);
@@ -353,35 +358,35 @@ ${c}`;
353
358
  const n = l(t, "./saltygen");
354
359
  if (W(e)) {
355
360
  const r = z(e, "utf8");
356
- r.replace(/^(?!export\s)const\s.*/gm, (c) => `export ${c}`) !== r && await yt(e, r);
357
- 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);
358
363
  let o = r;
359
- if (Object.entries(m).forEach(([c, j]) => {
360
- var w;
361
- if (j.isKeyframes || !j.generator) return;
362
- const F = j.generator._withBuildContext({
363
- name: c,
364
- 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,
365
370
  prod: s
366
- }), h = new RegExp(`\\s${c}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(r);
367
- if (!h) return console.error("Could not find the original declaration");
368
- const x = (w = h.at(1)) == null ? void 0 : w.trim(), V = new RegExp(`\\s${c}[=\\s]+styled\\(`, "g").exec(o);
369
- if (!V) return console.error("Could not find the original declaration");
370
- const { index: $ } = V;
371
- let y = !1;
372
- const a = setTimeout(() => y = !0, 5e3);
373
- let u = 0, S = !1, C = 0;
374
- for (; !S && !y; ) {
375
- const b = o[$ + u];
376
- 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++;
377
382
  }
378
- if (!y) clearTimeout(a);
383
+ if (!b) clearTimeout(a);
379
384
  else throw new Error("Failed to find the end of the styled call and timed out");
380
- const N = $ + u, P = o.slice($, N), p = o, g = ` ${c} = styled(${x}, "${F.classNames}", ${JSON.stringify(F.props)});`;
381
- o = o.replace(P, g), p === o && console.error("Minimize file failed to change content", { name: c, tagName: x });
382
- }), f.importStrategy === "component") {
383
- const c = L(e, 6), j = K(e);
384
- 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`}';
385
390
  ${o}`;
386
391
  }
387
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.132",
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.132"
37
+ "@salty-css/core": "^0.0.1-alpha.134"
38
38
  }
39
39
  }