@salty-css/vite 0.0.1-alpha.135 → 0.0.1-alpha.136

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 -14
  2. package/index.js +165 -161
  3. package/package.json +2 -2
package/index.cjs CHANGED
@@ -1,28 +1,29 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const ue=require("esbuild"),pe=require("child_process"),l=require("path"),u=require("fs"),G=require("fs/promises"),I=require("winston");var W=typeof document<"u"?document.currentScript:null;function de(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=de(ue),U=e=>String.fromCharCode(e+(e>25?39:97)),ye=(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},ge=(e,t)=>{let s=t.length;for(;s;)e=e*33^t.charCodeAt(--s);return e},H=(e,t=5)=>{const s=ge(5381,JSON.stringify(e))>>>0;return ye(s,t)};function E(e){return e?typeof e!="string"?E(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 me=(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:a}=r(f);return a&&s.push(a),g})}),{result:e,additionalCss:s}},Y=e=>typeof e!="string"?{result:e}:/\{[^{}]+\}/g.test(e)?{result:e.replace(/\{([^{}]+)\}/g,(...n)=>`var(--${E(n[1].replaceAll(".","-"))})`)}:{result:e},D=(e,t,s)=>{if(!e)return"";const n=[],i=Object.entries(e).reduce((f,[g,a])=>{const o=g.trim();if(typeof a=="function"&&(a=a()),typeof a=="object"){if(!a)return f;if(o==="variants")return Object.entries(a).forEach(([c,y])=>{y&&Object.entries(y).forEach(([x,w])=>{if(!w)return;const N=`${t}.${c}-${x}`,k=D(w,N);n.push(k)})}),f;if(o==="defaultVariants")return f;if(o==="compoundVariants")return a.forEach(c=>{const{css:y,...x}=c,w=Object.entries(x).reduce((k,[p,S])=>`${k}.${p}-${S}`,t),N=D(y,w);n.push(N)}),f;if(o.startsWith("@")){const c=D(a,t),y=`${o} {
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const fe=require("esbuild"),pe=require("child_process"),l=require("path"),f=require("fs"),G=require("fs/promises"),J=require("winston");var I=typeof document<"u"?document.currentScript:null;function de(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=de(fe),U=e=>String.fromCharCode(e+(e>25?39:97)),ye=(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},ge=(e,t)=>{let s=t.length;for(;s;)e=e*33^t.charCodeAt(--s);return e},H=(e,t=5)=>{const s=ge(5381,JSON.stringify(e))>>>0;return ye(s,t)};function E(e){return e?typeof e!="string"?E(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 me=(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:o}=n;e=e.replace(i,u=>{const{value:m,css:a}=o(u);return a&&s.push(a),m})}),{result:e,additionalCss:s}},Y=e=>typeof e!="string"?{result:e}:/\{[^{}]+\}/g.test(e)?{result:e.replace(/\{([^{}]+)\}/g,(...n)=>`var(--${E(n[1].replaceAll(".","-"))})`)}:{result:e},D=(e,t,s)=>{if(!e)return"";const n=[],i=Object.entries(e).reduce((u,[m,a])=>{const r=m.trim();if(typeof a=="function"&&(a=a()),typeof a=="object"){if(!a)return u;if(r==="variants")return Object.entries(a).forEach(([c,y])=>{y&&Object.entries(y).forEach(([x,w])=>{if(!w)return;const T=`${t}.${c}-${x}`,P=D(w,T);n.push(P)})}),u;if(r==="defaultVariants")return u;if(r==="compoundVariants")return a.forEach(c=>{const{css:y,...x}=c,w=Object.entries(x).reduce((P,[p,g])=>`${P}.${p}-${g}`,t),T=D(y,w);n.push(T)}),u;if(r.startsWith("@")){const c=D(a,t),y=`${r} {
2
2
  ${c.replace(`
3
3
  `,`
4
4
  `)}
5
- }`;return n.push(y),f}const d=g.includes("&")?o.replace("&",t):o.startsWith(":")?`${t}${o}`:`${t} ${o}`,b=D(a,d);return n.push(b),f}const m=o.startsWith("-")?o:E(o),F=(d,b=";")=>f=`${f}${d}${b}`,$=d=>F(`${m}:${d}`);if(typeof a=="number")return $(a);if(typeof a!="string")if("toString"in a)a=a.toString();else return f;const{modifiers:h}={},T=function*(){yield Y(a),yield me(a,h)}();for(const{result:d,additionalCss:b=[]}of T)a=d,b.forEach(c=>{const y=D(c,"");F(y,"")});return $(a)},"");return i?t?[`${t} { ${i} }`,...n].join(`
5
+ }`;return n.push(y),u}const d=m.includes("&")?r.replace("&",t):r.startsWith(":")?`${t}${r}`:`${t} ${r}`,b=D(a,d);return n.push(b),u}const h=r.startsWith("-")?r:E(r),F=(d,b=";")=>u=`${u}${d}${b}`,j=d=>F(`${h}:${d}`);if(typeof a=="number")return j(a);if(typeof a!="string")if("toString"in a)a=a.toString();else return u;const{modifiers:S}={},N=function*(){yield Y(a),yield me(a,S)}();for(const{result:d,additionalCss:b=[]}of N)a=d,b.forEach(c=>{const y=D(c,"");F(y,"")});return j(a)},"");return i?t?[`${t} { ${i} }`,...n].join(`
6
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(E).join("-"),r=D(n,`.${i}`);s.push(r)}return s.join(`
8
- `)},he=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=l.join(e,"package.json");return u.existsSync(t)?t:ee(l.join(e,".."))},be=async e=>{const t=ee(e);return await G.readFile(t,"utf-8").then(JSON.parse).catch(()=>{})},Se=async e=>{const t=await be(e);if(t)return t.type};let V;const te=async e=>{if(V)return V;const t=await Se(e);return t==="module"?V="esm":(t==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:W&&W.tagName.toUpperCase()==="SCRIPT"&&W.src||new URL("index.cjs",document.baseURI).href).endsWith(".cjs"))&&(V="cjs"),V||"esm"},Z=I.createLogger({level:"debug",format:I.format.combine(I.format.colorize(),I.format.cli()),transports:[new I.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 $e={"*, *::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"}},q={externalModules:[]},ne=e=>{if(q.externalModules.length>0)return q.externalModules;const t=l.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 q.externalModules=i,i},z=e=>l.join(e,"./saltygen"),oe=["salty","css","styles","styled"],je=(e=[])=>new RegExp(`\\.(${[...oe,...e].join("|")})\\.`),J=(e,t=[])=>je(t).test(e),we=async e=>{const t=z(e),s=l.join(e,"salty.config.ts"),n=l.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,S=[])=>p?Object.entries(p).flatMap(([P,j])=>{if(!j)return;if(typeof j=="object")return n(j,[...S,P]);const R=se(P),A=E(P),M=[...S,R].join(".");s.add(`"${M}"`);const _=[...S.map(E),A].join("-"),{result:O}=Y(j);return`--${_}: ${O};`}):[],i=p=>p?Object.entries(p).flatMap(([S,P])=>{const j=n(P);return S==="base"?j.join(""):`${S} { ${j.join("")} }`}):[],r=p=>p?Object.entries(p).flatMap(([S,P])=>Object.entries(P).flatMap(([j,R])=>{const A=n(R,[S]),M=`.${S}-${j}, [data-${S}="${j}"]`,_=A.join("");return`${M} { ${_} }`})):[],f=n(t.variables),g=i(t.responsiveVariables),a=r(t.conditionalVariables),o=z(e),m=l.join(o,"css/_variables.css"),F=`:root { ${f.join("")} ${g.join("")} } ${a.join("")}`;u.writeFileSync(m,F);const $=l.join(o,"css/_global.css"),h=D(t.global,"");u.writeFileSync($,`@layer global { ${h} }`);const C=l.join(o,"css/_reset.css"),d=t.reset==="none"?{}:typeof t.reset=="object"?t.reset:$e,b=D(d,"");u.writeFileSync(C,`@layer reset { ${b} }`);const c=l.join(o,"css/_templates.css"),y=Q(t.templates),x=he(t.templates);u.writeFileSync(c,y);const w=l.join(o,"types/css-tokens.d.ts"),k=`
7
+ `)},Q=(e,t=[])=>{if(!e)return"";const s=[],n={};if(Object.entries(e).forEach(([i,o])=>{if(typeof o=="object"){if(!o)return;const u=i.trim(),m=Q(o,[...t,u]);s.push(m)}else n[i]=o}),Object.keys(n).length){const i=t.map(E).join("-"),o=D(n,`.${i}`);s.push(o)}return s.join(`
8
+ `)},he=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 o=t?`${t}.${n}`:n;return typeof i=="object"?v(i,o,s):s.add(t)}),[...s]):[],ee=e=>{if(!e||e==="/")throw new Error("Could not find package.json file");const t=l.join(e,"package.json");return f.existsSync(t)?t:ee(l.join(e,".."))},Se=async e=>{const t=ee(e);return await G.readFile(t,"utf-8").then(JSON.parse).catch(()=>{})},be=async e=>{const t=await Se(e);if(t)return t.type};let R;const te=async e=>{if(R)return R;const t=await be(e);return t==="module"?R="esm":(t==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:I&&I.tagName.toUpperCase()==="SCRIPT"&&I.src||new URL("index.cjs",document.baseURI).href).endsWith(".cjs"))&&(R="cjs"),R||"esm"},Z=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 $e={"*, *::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"}},q={externalModules:[]},ne=e=>{if(q.externalModules.length>0)return q.externalModules;const t=l.join(e,"salty.config.ts"),n=f.readFileSync(t,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!n)return[];const i=n[1].split(",").map(o=>o.replace(/['"`]/g,"").trim());return q.externalModules=i,i},z=e=>l.join(e,"./saltygen"),oe=["salty","css","styles","styled"],je=(e=[])=>new RegExp(`\\.(${[...oe,...e].join("|")})\\.`),W=(e,t=[])=>je(t).test(e),we=async e=>{const t=z(e),s=l.join(e,"salty.config.ts"),n=l.join(t,"salty.config.js"),i=await te(e),o=ne(e);await X.build({entryPoints:[s],minify:!0,treeShaking:!0,bundle:!0,outfile:n,format:i,external:o});const u=Date.now(),{config:m}=await import(`${n}?t=${u}`);return m},Fe=async e=>{const t=await we(e),s=new Set,n=(p,g=[])=>p?Object.entries(p).flatMap(([C,$])=>{if(!$)return;if(typeof $=="object")return n($,[...g,C]);const M=se(C),A=E(C),V=[...g,M].join(".");s.add(`"${V}"`);const _=[...g.map(E),A].join("-"),{result:O}=Y($);return`--${_}: ${O};`}):[],i=p=>p?Object.entries(p).flatMap(([g,C])=>{const $=n(C);return g==="base"?$.join(""):`${g} { ${$.join("")} }`}):[],o=p=>p?Object.entries(p).flatMap(([g,C])=>Object.entries(C).flatMap(([$,M])=>{const A=n(M,[g]),V=`.${g}-${$}, [data-${g}="${$}"]`,_=A.join("");return`${V} { ${_} }`})):[],u=n(t.variables),m=i(t.responsiveVariables),a=o(t.conditionalVariables),r=z(e),h=l.join(r,"css/_variables.css"),F=`:root { ${u.join("")} ${m.join("")} } ${a.join("")}`;f.writeFileSync(h,F);const j=l.join(r,"css/_global.css"),S=D(t.global,"");f.writeFileSync(j,`@layer global { ${S} }`);const k=l.join(r,"css/_reset.css"),d=t.reset==="none"?{}:typeof t.reset=="object"?t.reset:$e,b=D(d,"");f.writeFileSync(k,`@layer reset { ${b} }`);const c=l.join(r,"css/_templates.css"),y=Q(t.templates),x=he(t.templates);f.writeFileSync(c,y);const w=l.join(r,"types/css-tokens.d.ts"),P=`
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(x).map(([p,S])=>`${p}?: ${S}`).join(`
15
+ ${Object.entries(x).map(([p,g])=>`${p}?: ${g}`).join(`
16
16
  `)}
17
17
  }
18
- `;u.writeFileSync(w,k)},B=async(e,t,s)=>{const n=H(t),i=l.join(s,"./temp");u.existsSync(i)||u.mkdirSync(i);const r=l.parse(t);let f=u.readFileSync(t,"utf8");f=f.replace(/styled\(([^"'`{,]+),/g,($,h)=>{if(/^['"`]/.test(h))return $;const T=new RegExp(`import\\s?\\{[^{}]*${h}[^{}]*\\}\\s?from\\s?([^{};]+);`);if(!T.test(f))return $;const b=T.exec(f);if(b){const c=b.at(1);if(oe.some(x=>c==null?void 0:c.includes(x)))return $}return"styled('div',"});const g=l.join(s,"js",n+".js"),a=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:a,packages:"external"});const m=Date.now();return await import(`${g}?t=${m}`)},K=async e=>{const t=z(e),s=l.join(t,"salty.config.js"),n=Date.now(),{config:i}=await import(`${s}?t=${n}`);return i},re=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},xe=async(e,t=re())=>{try{const s=Date.now();t?Z.info("Generating CSS in production mode! 🔥"):Z.info("Generating CSS in development mode! 🚀");const n=[],i=[],r=z(e),f=l.join(r,"index.css");(()=>{u.existsSync(r)&&pe.execSync("rm -rf "+r),u.mkdirSync(r),u.mkdirSync(l.join(r,"css")),u.mkdirSync(l.join(r,"types"))})(),await Fe(e);const a=await K(e);async function o(c,y){const x=["node_modules","saltygen"],w=u.statSync(c);if(w.isDirectory()){const N=u.readdirSync(c);if(x.some(p=>c.includes(p)))return;await Promise.all(N.map(p=>o(l.join(c,p),l.join(y,p))))}else if(w.isFile()&&J(c)){const k=await B(e,c,r),p=[];Object.entries(k).forEach(([M,_])=>{if(_.isKeyframes&&_.css){const L=`a_${_.animationName}.css`,le=`css/${L}`,fe=l.join(r,le);n.push(L),u.writeFileSync(fe,_.css);return}if(!_.generator)return;const O=_.generator._withBuildContext({name:M,config:a,prod:t});i[O.priority]||(i[O.priority]=[]),i[O.priority].push(O.cssFileName),p.push(O.cssFileName);const ce=`css/${O.cssFileName}`,ae=l.join(r,ce);u.writeFileSync(ae,O.css)});const S=p.map(M=>`@import url('./${M}');`).join(`
19
- `),P=H(c,6),j=l.parse(c),R=E(j.name),A=l.join(r,`css/f_${R}-${P}.css`);u.writeFileSync(A,S)}}await o(e,r);const m=n.map(c=>`@import url('./css/${c}');`).join(`
20
- `);let C=`@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
18
+ `;f.writeFileSync(w,P)},L=async(e,t,s)=>{const n=H(t),i=l.join(s,"./temp");f.existsSync(i)||f.mkdirSync(i);const o=l.parse(t);let u=f.readFileSync(t,"utf8");u=u.replace(/styled\(([^"'`{,]+),/g,(j,S)=>{if(/^['"`]/.test(S))return j;const N=new RegExp(`import\\s?\\{[^{}]*${S}[^{}]*\\}\\s?from\\s?([^{};]+);`);if(!N.test(u))return j;const b=N.exec(u);if(b){const c=b.at(1);if(oe.some(x=>c==null?void 0:c.includes(x)))return j}return"styled('div',"});const m=l.join(s,"js",n+".js"),a=ne(e),r=await te(e);await X.build({stdin:{contents:u,sourcefile:o.base,resolveDir:o.dir,loader:"tsx"},minify:!1,treeShaking:!0,bundle:!0,outfile:m,format:r,target:["node20"],keepNames:!0,external:a,packages:"external"});const h=Date.now();return await import(`${m}?t=${h}`)},B=async e=>{const t=z(e),s=l.join(t,"salty.config.js"),n=Date.now(),{config:i}=await import(`${s}?t=${n}`);return i},re=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},xe=async(e,t=re())=>{try{const s=Date.now();t?Z.info("Generating CSS in production mode! 🔥"):Z.info("Generating CSS in development mode! 🚀");const n=[],i=[],o=z(e),u=l.join(o,"index.css");(()=>{f.existsSync(o)&&pe.execSync("rm -rf "+o),f.mkdirSync(o),f.mkdirSync(l.join(o,"css")),f.mkdirSync(l.join(o,"types"))})(),await Fe(e);const a=await B(e);async function r(c,y){const x=["node_modules","saltygen"],w=f.statSync(c);if(w.isDirectory()){const T=f.readdirSync(c);if(x.some(p=>c.includes(p)))return;await Promise.all(T.map(p=>r(l.join(c,p),l.join(y,p))))}else if(w.isFile()&&W(c)){const P=await L(e,c,o),p=[];Object.entries(P).forEach(([V,_])=>{if(_.isKeyframes&&_.css){const K=`a_${_.animationName}.css`,le=`css/${K}`,ue=l.join(o,le);n.push(K),f.writeFileSync(ue,_.css);return}if(!_.generator)return;const O=_.generator._withBuildContext({name:V,config:a,prod:t});i[O.priority]||(i[O.priority]=[]),i[O.priority].push(O.cssFileName),p.push(O.cssFileName);const ce=`css/${O.cssFileName}`,ae=l.join(o,ce);f.writeFileSync(ae,O.css)});const g=p.map(V=>`@import url('./${V}');`).join(`
19
+ `),C=H(c,6),$=l.parse(c),M=E($.name),A=l.join(o,`css/f_${M}-${C}.css`);f.writeFileSync(A,g)}}await r(e,o);const h=n.map(c=>`@import url('./css/${c}');`).join(`
20
+ `);let k=`@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
21
21
 
22
- ${["_variables.css","_reset.css","_global.css","_templates.css"].filter(c=>{try{return u.readFileSync(l.join(r,"css",c),"utf8").length>0}catch{return!1}}).map(c=>`@import url('./css/${c}');`).join(`
22
+ ${["_variables.css","_reset.css","_global.css","_templates.css"].filter(c=>{try{return f.readFileSync(l.join(o,"css",c),"utf8").length>0}catch{return!1}}).map(c=>`@import url('./css/${c}');`).join(`
23
23
  `)}
24
- ${m}`;if(a.importStrategy!=="component"){const c=i.reduce((y,x,w)=>{const N=x.reduce((k,p)=>k+`@import url('./css/${p}') layer(l${w});`,"");return`${y}
25
- ${N}`},"");C+=c}u.writeFileSync(f,C);const d=Date.now()-s,b=d<200?"🔥":d<500?"🚀":d<1e3?"🎉":d<2e3?"🚗":d<5e3?"🤔":"🥴";Z.info(`Generated CSS in ${d}ms! ${b}`)}catch(s){console.error(s)}},Ce=async(e,t)=>{try{const s=[],n=l.join(e,"./saltygen"),i=l.join(n,"index.css");if(J(t)){const f=await K(e),g=await B(e,t,n);Object.entries(g).forEach(([$,h])=>{if(h.isKeyframes&&h.css){const c=`css/${`a_${h.animationName}.css`}`,y=l.join(n,c);u.writeFileSync(y,h.css);return}if(!h.generator)return;const C=h.generator._withBuildContext({name:$,config:f}),T=`css/${C.cssFileName}`,d=l.join(n,T);s.push(C.cssFileName),u.writeFileSync(d,C.css)});const a=u.readFileSync(i,"utf8").split(`
26
- `),o=s.map($=>`@import url('../saltygen/css/${$}');`),F=[...new Set([...a,...o])].join(`
27
- `);u.writeFileSync(i,F)}}catch(s){console.error(s)}},ke=async(e,t,s=re())=>{try{const n=l.join(e,"./saltygen");if(J(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),a=await B(e,t,n);let o=r;if(Object.entries(a).forEach(([m,F])=>{var P;if(F.isKeyframes||!F.generator)return;const $=F.generator._withBuildContext({name:m,config:g,prod:s}),h=new RegExp(`\\s${m}[=\\s]+[^()]+styled\\(([^,]+),`,"g").exec(r);if(!h)return console.error("Could not find the original declaration");const C=(P=h.at(1))==null?void 0:P.trim(),T=new RegExp(`\\s${m}[=\\s]+styled\\(`,"g").exec(o);if(!T)return console.error("Could not find the original declaration");const{index:d}=T;let b=!1;const c=setTimeout(()=>b=!0,5e3);let y=0,x=!1,w=0;for(;!x&&!b;){const j=o[d+y];j==="("&&w++,j===")"&&w--,w===0&&j===")"&&(x=!0),y>o.length&&(b=!0),y++}if(!b)clearTimeout(c);else throw new Error("Failed to find the end of the styled call and timed out");const N=d+y,k=o.slice(d,N),p=o,S=` ${m} = styled(${C}, "${$.classNames}", ${JSON.stringify($.props)});`;o=o.replace(k,S),p===o&&console.error("Minimize file failed to change content",{name:m,tagName:C})}),g.importStrategy==="component"){const m=H(t,6),F=l.parse(t);o=`import '../../saltygen/css/${`f_${E(F.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)}},ie=e=>({name:"stylegen",buildStart:()=>xe(e),load:async t=>{if(J(t))return await ke(e,t)},handleHotUpdate:async({file:t,server:s})=>{t.includes("salty.config")&&await s.restart()},watchChange:{handler:async t=>{J(t)&&await Ce(e,t)}}});exports.default=ie;exports.saltyPlugin=ie;
24
+ ${h}`;if(a.importStrategy!=="component"){const c=i.reduce((y,x,w)=>{const T=x.reduce((C,$)=>{const M=f.readFileSync(l.join(o,"css",$),"utf8");return`${C}
25
+ ${M}`},""),P=`l_${w}.css`,p=l.join(o,"css",P),g=`@layer l${w} { ${T} }`;return f.writeFileSync(p,g),`${y}
26
+ @import url('./css/${P}');`},"");k+=c}f.writeFileSync(u,k);const d=Date.now()-s,b=d<200?"🔥":d<500?"🚀":d<1e3?"🎉":d<2e3?"🚗":d<5e3?"🤔":"🥴";Z.info(`Generated CSS in ${d}ms! ${b}`)}catch(s){console.error(s)}},Ce=async(e,t)=>{try{const s=[],n=l.join(e,"./saltygen"),i=l.join(n,"index.css");if(W(t)){const u=await B(e),m=await L(e,t,n);Object.entries(m).forEach(([j,S])=>{if(S.isKeyframes&&S.css){const c=`css/${`a_${S.animationName}.css`}`,y=l.join(n,c);f.writeFileSync(y,S.css);return}if(!S.generator)return;const k=S.generator._withBuildContext({name:j,config:u}),N=`css/${k.cssFileName}`,d=l.join(n,N);s.push(k.cssFileName),f.writeFileSync(d,k.css)});const a=f.readFileSync(i,"utf8").split(`
27
+ `),r=s.map(j=>`@import url('../saltygen/css/${j}');`),F=[...new Set([...a,...r])].join(`
28
+ `);f.writeFileSync(i,F)}}catch(s){console.error(s)}},ke=async(e,t,s=re())=>{try{const n=l.join(e,"./saltygen");if(W(t)){const o=f.readFileSync(t,"utf8");o.replace(/^(?!export\s)const\s.*/gm,h=>`export ${h}`)!==o&&await G.writeFile(t,o);const m=await B(e),a=await L(e,t,n);let r=o;if(Object.entries(a).forEach(([h,F])=>{var C;if(F.isKeyframes||!F.generator)return;const j=F.generator._withBuildContext({name:h,config:m,prod:s}),S=new RegExp(`\\s${h}[=\\s]+[^()]+styled\\(([^,]+),`,"g").exec(o);if(!S)return console.error("Could not find the original declaration");const k=(C=S.at(1))==null?void 0:C.trim(),N=new RegExp(`\\s${h}[=\\s]+styled\\(`,"g").exec(r);if(!N)return console.error("Could not find the original declaration");const{index:d}=N;let b=!1;const c=setTimeout(()=>b=!0,5e3);let y=0,x=!1,w=0;for(;!x&&!b;){const $=r[d+y];$==="("&&w++,$===")"&&w--,w===0&&$===")"&&(x=!0),y>r.length&&(b=!0),y++}if(!b)clearTimeout(c);else throw new Error("Failed to find the end of the styled call and timed out");const T=d+y,P=r.slice(d,T),p=r,g=` ${h} = styled(${k}, "${j.classNames}", ${JSON.stringify(j.props)});`;r=r.replace(P,g),p===r&&console.error("Minimize file failed to change content",{name:h,tagName:k})}),m.importStrategy==="component"){const h=H(t,6),F=l.parse(t);r=`import '../../saltygen/css/${`f_${E(F.name)}-${h}.css`}';
29
+ ${r}`}return r=r.replace("{ styled }","{ styledClient as styled }"),r=r.replace("@salty-css/react/styled","@salty-css/react/styled-client"),r}}catch(n){console.error("Error in minimizeFile:",n)}},ie=e=>({name:"stylegen",buildStart:()=>xe(e),load:async t=>{if(W(t))return await ke(e,t)},handleHotUpdate:async({file:t,server:s})=>{t.includes("salty.config")&&await s.restart()},watchChange:{handler:async t=>{W(t)&&await Ce(e,t)}}});exports.default=ie;exports.saltyPlugin=ie;
package/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import * as Q from "esbuild";
2
2
  import { execSync as ut } from "child_process";
3
- import { join as f, parse as K } from "path";
4
- import { existsSync as G, mkdirSync as z, statSync as dt, readdirSync as gt, writeFileSync as N, readFileSync as W } from "fs";
5
- import { readFile as mt, writeFile as yt } from "fs/promises";
6
- import { createLogger as ht, format as Z, transports as $t } from "winston";
3
+ import { join as l, parse as K } from "path";
4
+ import { existsSync as G, mkdirSync as z, statSync as dt, readdirSync as gt, writeFileSync as N, readFileSync as R } from "fs";
5
+ import { readFile as yt, writeFile as mt } from "fs/promises";
6
+ import { createLogger as ht, format as I, transports as $t } from "winston";
7
7
  const Y = (t) => String.fromCharCode(t + (t > 25 ? 39 : 97)), bt = (t, e) => {
8
8
  let s = "", n;
9
9
  for (n = Math.abs(t); n > 52; n = n / 52 | 0) s = Y(n % 52) + s;
@@ -24,58 +24,58 @@ const wt = (t, e) => {
24
24
  if (!e) return { result: t };
25
25
  const s = [];
26
26
  return Object.values(e).forEach((n) => {
27
- const { pattern: i, transform: r } = n;
28
- t = t.replace(i, (l) => {
29
- const { value: g, css: a } = r(l);
30
- return a && s.push(a), g;
27
+ const { pattern: i, transform: o } = n;
28
+ t = t.replace(i, (f) => {
29
+ const { value: y, css: a } = o(f);
30
+ return a && s.push(a), y;
31
31
  });
32
32
  }), { result: t, additionalCss: s };
33
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 n = [], i = Object.entries(t).reduce((l, [g, a]) => {
36
- const o = g.trim();
35
+ const n = [], i = Object.entries(t).reduce((f, [y, a]) => {
36
+ const r = y.trim();
37
37
  if (typeof a == "function" && (a = a()), typeof a == "object") {
38
- if (!a) return l;
39
- if (o === "variants")
38
+ if (!a) return f;
39
+ if (r === "variants")
40
40
  return Object.entries(a).forEach(([c, d]) => {
41
41
  d && Object.entries(d).forEach(([F, w]) => {
42
42
  if (!w) return;
43
- const T = `${e}.${c}-${F}`, C = O(w, T);
44
- n.push(C);
43
+ const T = `${e}.${c}-${F}`, k = O(w, T);
44
+ n.push(k);
45
45
  });
46
- }), l;
47
- if (o === "defaultVariants")
48
- return l;
49
- if (o === "compoundVariants")
46
+ }), f;
47
+ if (r === "defaultVariants")
48
+ return f;
49
+ if (r === "compoundVariants")
50
50
  return a.forEach((c) => {
51
- const { css: d, ...F } = c, w = Object.entries(F).reduce((C, [p, $]) => `${C}.${p}-${$}`, e), T = O(d, w);
51
+ const { css: d, ...F } = c, w = Object.entries(F).reduce((k, [p, g]) => `${k}.${p}-${g}`, e), T = O(d, w);
52
52
  n.push(T);
53
- }), l;
54
- if (o.startsWith("@")) {
55
- const c = O(a, e), d = `${o} {
53
+ }), f;
54
+ if (r.startsWith("@")) {
55
+ const c = O(a, e), d = `${r} {
56
56
  ${c.replace(`
57
57
  `, `
58
58
  `)}
59
59
  }`;
60
- return n.push(d), l;
60
+ return n.push(d), f;
61
61
  }
62
- const u = g.includes("&") ? o.replace("&", e) : o.startsWith(":") ? `${e}${o}` : `${e} ${o}`, h = O(a, u);
63
- return n.push(h), l;
62
+ const u = y.includes("&") ? r.replace("&", e) : r.startsWith(":") ? `${e}${r}` : `${e} ${r}`, $ = O(a, u);
63
+ return n.push($), f;
64
64
  }
65
- const m = o.startsWith("-") ? o : V(o), j = (u, h = ";") => l = `${l}${u}${h}`, b = (u) => j(`${m}:${u}`);
66
- if (typeof a == "number") return b(a);
65
+ const m = r.startsWith("-") ? r : V(r), j = (u, $ = ";") => f = `${f}${u}${$}`, S = (u) => j(`${m}:${u}`);
66
+ if (typeof a == "number") return S(a);
67
67
  if (typeof a != "string")
68
68
  if ("toString" in a) a = a.toString();
69
- else return l;
70
- const { modifiers: y } = {}, P = function* () {
71
- yield v(a), yield wt(a, y);
69
+ else return f;
70
+ const { modifiers: h } = {}, P = function* () {
71
+ yield v(a), yield wt(a, h);
72
72
  }();
73
- for (const { result: u, additionalCss: h = [] } of P)
74
- a = u, h.forEach((c) => {
73
+ for (const { result: u, additionalCss: $ = [] } of P)
74
+ a = u, $.forEach((c) => {
75
75
  const d = O(c, "");
76
76
  j(d, "");
77
77
  });
78
- return b(a);
78
+ return S(a);
79
79
  }, "");
80
80
  return i ? e ? [`${e} { ${i} }`, ...n].join(`
81
81
  `) : i : n.join(`
@@ -83,43 +83,43 @@ const wt = (t, e) => {
83
83
  }, tt = (t, e = []) => {
84
84
  if (!t) return "";
85
85
  const s = [], n = {};
86
- if (Object.entries(t).forEach(([i, r]) => {
87
- if (typeof r == "object") {
88
- if (!r) return;
89
- const l = i.trim(), g = tt(r, [...e, l]);
90
- s.push(g);
86
+ if (Object.entries(t).forEach(([i, o]) => {
87
+ if (typeof o == "object") {
88
+ if (!o) return;
89
+ const f = i.trim(), y = tt(o, [...e, f]);
90
+ s.push(y);
91
91
  } else
92
- n[i] = r;
92
+ n[i] = o;
93
93
  }), Object.keys(n).length) {
94
- const i = e.map(V).join("-"), r = O(n, `.${i}`);
95
- s.push(r);
94
+ const i = e.map(V).join("-"), o = O(n, `.${i}`);
95
+ s.push(o);
96
96
  }
97
97
  return s.join(`
98
98
  `);
99
99
  }, jt = (t) => Object.entries(t).reduce((e, [s, n]) => (typeof n == "object" && (e[s] = et(n).map((i) => `"${i}"`).join(" | ")), e), {}), et = (t, e = "", s = /* @__PURE__ */ new Set()) => t ? (Object.entries(t).forEach(([n, i]) => {
100
- const r = e ? `${e}.${n}` : n;
101
- return typeof i == "object" ? et(i, r, s) : s.add(e);
100
+ const o = e ? `${e}.${n}` : n;
101
+ return typeof i == "object" ? et(i, o, s) : s.add(e);
102
102
  }), [...s]) : [], st = (t) => {
103
103
  if (!t || t === "/") throw new Error("Could not find package.json file");
104
- const e = f(t, "package.json");
105
- return G(e) ? e : st(f(t, ".."));
104
+ const e = l(t, "package.json");
105
+ return G(e) ? e : st(l(t, ".."));
106
106
  }, Ft = async (t) => {
107
107
  const e = st(t);
108
- return await mt(e, "utf-8").then(JSON.parse).catch(() => {
108
+ return await yt(e, "utf-8").then(JSON.parse).catch(() => {
109
109
  });
110
110
  }, xt = async (t) => {
111
111
  const e = await Ft(t);
112
112
  if (e)
113
113
  return e.type;
114
114
  };
115
- let _;
115
+ let A;
116
116
  const nt = async (t) => {
117
- if (_) return _;
117
+ if (A) return A;
118
118
  const e = await xt(t);
119
- return e === "module" ? _ = "esm" : (e === "commonjs" || import.meta.url.endsWith(".cjs")) && (_ = "cjs"), _ || "esm";
119
+ return e === "module" ? A = "esm" : (e === "commonjs" || import.meta.url.endsWith(".cjs")) && (A = "cjs"), A || "esm";
120
120
  }, H = ht({
121
121
  level: "debug",
122
- format: Z.combine(Z.colorize(), Z.cli()),
122
+ format: I.combine(I.colorize(), I.cli()),
123
123
  transports: [new $t.Console({})]
124
124
  });
125
125
  function ot(t) {
@@ -175,12 +175,12 @@ const Ct = {
175
175
  externalModules: []
176
176
  }, rt = (t) => {
177
177
  if (B.externalModules.length > 0) return B.externalModules;
178
- const e = f(t, "salty.config.ts"), n = W(e, "utf8").match(/externalModules:\s?\[(.*)\]/);
178
+ const e = l(t, "salty.config.ts"), n = R(e, "utf8").match(/externalModules:\s?\[(.*)\]/);
179
179
  if (!n) return [];
180
- const i = n[1].split(",").map((r) => r.replace(/['"`]/g, "").trim());
180
+ const i = n[1].split(",").map((o) => o.replace(/['"`]/g, "").trim());
181
181
  return B.externalModules = i, i;
182
- }, I = (t) => f(t, "./saltygen"), it = ["salty", "css", "styles", "styled"], kt = (t = []) => new RegExp(`\\.(${[...it, ...t].join("|")})\\.`), J = (t, e = []) => kt(e).test(t), Nt = async (t) => {
183
- const e = I(t), s = f(t, "salty.config.ts"), n = f(e, "salty.config.js"), i = await nt(t), r = rt(t);
182
+ }, Z = (t) => l(t, "./saltygen"), it = ["salty", "css", "styles", "styled"], kt = (t = []) => new RegExp(`\\.(${[...it, ...t].join("|")})\\.`), W = (t, e = []) => kt(e).test(t), Nt = async (t) => {
183
+ const e = Z(t), s = l(t, "salty.config.ts"), n = l(e, "salty.config.js"), i = await nt(t), o = rt(t);
184
184
  await Q.build({
185
185
  entryPoints: [s],
186
186
  minify: !0,
@@ -188,82 +188,82 @@ const Ct = {
188
188
  bundle: !0,
189
189
  outfile: n,
190
190
  format: i,
191
- external: r
191
+ external: o
192
192
  });
193
- const l = Date.now(), { config: g } = await import(`${n}?t=${l}`);
194
- return g;
193
+ const f = Date.now(), { config: y } = await import(`${n}?t=${f}`);
194
+ return y;
195
195
  }, Pt = async (t) => {
196
- const e = await Nt(t), s = /* @__PURE__ */ new Set(), n = (p, $ = []) => p ? Object.entries(p).flatMap(([k, S]) => {
197
- if (!S) return;
198
- if (typeof S == "object") return n(S, [...$, k]);
199
- const A = ot(k), R = V(k), M = [...$, A].join(".");
200
- s.add(`"${M}"`);
201
- const D = [...$.map(V), R].join("-"), { result: E } = v(S);
196
+ const e = await Nt(t), s = /* @__PURE__ */ new Set(), n = (p, g = []) => p ? Object.entries(p).flatMap(([x, b]) => {
197
+ if (!b) return;
198
+ if (typeof b == "object") return n(b, [...g, x]);
199
+ const M = ot(x), J = V(x), _ = [...g, M].join(".");
200
+ s.add(`"${_}"`);
201
+ const D = [...g.map(V), J].join("-"), { result: E } = v(b);
202
202
  return `--${D}: ${E};`;
203
- }) : [], i = (p) => p ? Object.entries(p).flatMap(([$, k]) => {
204
- const S = n(k);
205
- return $ === "base" ? S.join("") : `${$} { ${S.join("")} }`;
206
- }) : [], r = (p) => p ? Object.entries(p).flatMap(([$, k]) => Object.entries(k).flatMap(([S, A]) => {
207
- const R = n(A, [$]), M = `.${$}-${S}, [data-${$}="${S}"]`, D = R.join("");
208
- return `${M} { ${D} }`;
209
- })) : [], l = n(e.variables), g = i(e.responsiveVariables), a = r(e.conditionalVariables), o = I(t), m = f(o, "css/_variables.css"), j = `:root { ${l.join("")} ${g.join("")} } ${a.join("")}`;
203
+ }) : [], i = (p) => p ? Object.entries(p).flatMap(([g, x]) => {
204
+ const b = n(x);
205
+ return g === "base" ? b.join("") : `${g} { ${b.join("")} }`;
206
+ }) : [], o = (p) => p ? Object.entries(p).flatMap(([g, x]) => Object.entries(x).flatMap(([b, M]) => {
207
+ const J = n(M, [g]), _ = `.${g}-${b}, [data-${g}="${b}"]`, D = J.join("");
208
+ return `${_} { ${D} }`;
209
+ })) : [], f = n(e.variables), y = i(e.responsiveVariables), a = o(e.conditionalVariables), r = Z(t), m = l(r, "css/_variables.css"), j = `:root { ${f.join("")} ${y.join("")} } ${a.join("")}`;
210
210
  N(m, j);
211
- const b = f(o, "css/_global.css"), y = O(e.global, "");
212
- N(b, `@layer global { ${y} }`);
213
- const x = f(o, "css/_reset.css"), u = e.reset === "none" ? {} : typeof e.reset == "object" ? e.reset : Ct, h = O(u, "");
214
- N(x, `@layer reset { ${h} }`);
215
- const c = f(o, "css/_templates.css"), d = tt(e.templates), F = jt(e.templates);
211
+ const S = l(r, "css/_global.css"), h = O(e.global, "");
212
+ N(S, `@layer global { ${h} }`);
213
+ const C = l(r, "css/_reset.css"), u = e.reset === "none" ? {} : typeof e.reset == "object" ? e.reset : Ct, $ = O(u, "");
214
+ N(C, `@layer reset { ${$} }`);
215
+ const c = l(r, "css/_templates.css"), d = tt(e.templates), F = jt(e.templates);
216
216
  N(c, d);
217
- const w = f(o, "types/css-tokens.d.ts"), C = `
217
+ const w = l(r, "types/css-tokens.d.ts"), k = `
218
218
  // Variable types
219
219
  type VariableTokens = ${[...s].join("|")};
220
220
  type PropertyValueToken = \`{\${VariableTokens}}\`;
221
221
 
222
222
  // Template types
223
223
  type TemplateTokens = {
224
- ${Object.entries(F).map(([p, $]) => `${p}?: ${$}`).join(`
224
+ ${Object.entries(F).map(([p, g]) => `${p}?: ${g}`).join(`
225
225
  `)}
226
226
  }
227
227
  `;
228
- N(w, C);
228
+ N(w, k);
229
229
  }, q = async (t, e, s) => {
230
- const n = L(e), i = f(s, "./temp");
230
+ const n = L(e), i = l(s, "./temp");
231
231
  G(i) || z(i);
232
- const r = K(e);
233
- let l = W(e, "utf8");
234
- l = l.replace(/styled\(([^"'`{,]+),/g, (b, y) => {
235
- if (/^['"`]/.test(y)) return b;
236
- const P = new RegExp(`import\\s?\\{[^{}]*${y}[^{}]*\\}\\s?from\\s?([^{};]+);`);
237
- if (!P.test(l)) return b;
238
- const h = P.exec(l);
239
- if (h) {
240
- const c = h.at(1);
241
- if (it.some((F) => c == null ? void 0 : c.includes(F))) return b;
232
+ const o = K(e);
233
+ let f = R(e, "utf8");
234
+ f = f.replace(/styled\(([^"'`{,]+),/g, (S, h) => {
235
+ if (/^['"`]/.test(h)) return S;
236
+ const P = new RegExp(`import\\s?\\{[^{}]*${h}[^{}]*\\}\\s?from\\s?([^{};]+);`);
237
+ if (!P.test(f)) return S;
238
+ const $ = P.exec(f);
239
+ if ($) {
240
+ const c = $.at(1);
241
+ if (it.some((F) => c == null ? void 0 : c.includes(F))) return S;
242
242
  }
243
243
  return "styled('div',";
244
244
  });
245
- const g = f(s, "js", n + ".js"), a = rt(t), o = await nt(t);
245
+ const y = l(s, "js", n + ".js"), a = rt(t), r = await nt(t);
246
246
  await Q.build({
247
247
  stdin: {
248
- contents: l,
249
- sourcefile: r.base,
250
- resolveDir: r.dir,
248
+ contents: f,
249
+ sourcefile: o.base,
250
+ resolveDir: o.dir,
251
251
  loader: "tsx"
252
252
  },
253
253
  minify: !1,
254
254
  treeShaking: !0,
255
255
  bundle: !0,
256
- outfile: g,
257
- format: o,
256
+ outfile: y,
257
+ format: r,
258
258
  target: ["node20"],
259
259
  keepNames: !0,
260
260
  external: a,
261
261
  packages: "external"
262
262
  });
263
263
  const m = Date.now();
264
- return await import(`${g}?t=${m}`);
264
+ return await import(`${y}?t=${m}`);
265
265
  }, U = async (t) => {
266
- const e = I(t), s = f(e, "salty.config.js"), n = Date.now(), { config: i } = await import(`${s}?t=${n}`);
266
+ const e = Z(t), s = l(e, "salty.config.js"), n = Date.now(), { config: i } = await import(`${s}?t=${n}`);
267
267
  return i;
268
268
  }, ct = () => {
269
269
  try {
@@ -275,48 +275,48 @@ const Ct = {
275
275
  try {
276
276
  const s = Date.now();
277
277
  e ? H.info("Generating CSS in production mode! 🔥") : H.info("Generating CSS in development mode! 🚀");
278
- const n = [], i = [], r = I(t), l = f(r, "index.css");
278
+ const n = [], i = [], o = Z(t), f = l(o, "index.css");
279
279
  (() => {
280
- G(r) && ut("rm -rf " + r), z(r), z(f(r, "css")), z(f(r, "types"));
280
+ G(o) && ut("rm -rf " + o), z(o), z(l(o, "css")), z(l(o, "types"));
281
281
  })(), await Pt(t);
282
282
  const a = await U(t);
283
- async function o(c, d) {
283
+ async function r(c, d) {
284
284
  const F = ["node_modules", "saltygen"], w = dt(c);
285
285
  if (w.isDirectory()) {
286
286
  const T = gt(c);
287
287
  if (F.some((p) => c.includes(p))) return;
288
- await Promise.all(T.map((p) => o(f(c, p), f(d, p))));
289
- } else if (w.isFile() && J(c)) {
290
- const C = await q(t, c, r), p = [];
291
- Object.entries(C).forEach(([M, D]) => {
288
+ await Promise.all(T.map((p) => r(l(c, p), l(d, p))));
289
+ } else if (w.isFile() && W(c)) {
290
+ const k = await q(t, c, o), p = [];
291
+ Object.entries(k).forEach(([_, D]) => {
292
292
  if (D.isKeyframes && D.css) {
293
- const X = `a_${D.animationName}.css`, ft = `css/${X}`, pt = f(r, ft);
293
+ const X = `a_${D.animationName}.css`, ft = `css/${X}`, pt = l(o, ft);
294
294
  n.push(X), N(pt, D.css);
295
295
  return;
296
296
  }
297
297
  if (!D.generator) return;
298
298
  const E = D.generator._withBuildContext({
299
- name: M,
299
+ name: _,
300
300
  config: a,
301
301
  prod: e
302
302
  });
303
303
  i[E.priority] || (i[E.priority] = []), i[E.priority].push(E.cssFileName), p.push(E.cssFileName);
304
- const at = `css/${E.cssFileName}`, lt = f(r, at);
304
+ const at = `css/${E.cssFileName}`, lt = l(o, at);
305
305
  N(lt, E.css);
306
306
  });
307
- const $ = p.map((M) => `@import url('./${M}');`).join(`
308
- `), k = L(c, 6), S = K(c), A = V(S.name), R = f(r, `css/f_${A}-${k}.css`);
309
- N(R, $);
307
+ const g = p.map((_) => `@import url('./${_}');`).join(`
308
+ `), x = L(c, 6), b = K(c), M = V(b.name), J = l(o, `css/f_${M}-${x}.css`);
309
+ N(J, g);
310
310
  }
311
311
  }
312
- await o(t, r);
312
+ await r(t, o);
313
313
  const m = n.map((c) => `@import url('./css/${c}');`).join(`
314
314
  `);
315
- let x = `@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
315
+ let C = `@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
316
316
 
317
317
  ${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((c) => {
318
318
  try {
319
- return W(f(r, "css", c), "utf8").length > 0;
319
+ return R(l(o, "css", c), "utf8").length > 0;
320
320
  } catch {
321
321
  return !1;
322
322
  }
@@ -325,38 +325,42 @@ ${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((c) =
325
325
  ${m}`;
326
326
  if (a.importStrategy !== "component") {
327
327
  const c = i.reduce((d, F, w) => {
328
- const T = F.reduce((C, p) => C + `@import url('./css/${p}') layer(l${w});`, "");
329
- return `${d}
330
- ${T}`;
328
+ const T = F.reduce((x, b) => {
329
+ const M = R(l(o, "css", b), "utf8");
330
+ return `${x}
331
+ ${M}`;
332
+ }, ""), k = `l_${w}.css`, p = l(o, "css", k), g = `@layer l${w} { ${T} }`;
333
+ return N(p, g), `${d}
334
+ @import url('./css/${k}');`;
331
335
  }, "");
332
- x += c;
336
+ C += c;
333
337
  }
334
- N(l, x);
335
- const u = Date.now() - s, h = u < 200 ? "🔥" : u < 500 ? "🚀" : u < 1e3 ? "🎉" : u < 2e3 ? "🚗" : u < 5e3 ? "🤔" : "🥴";
336
- H.info(`Generated CSS in ${u}ms! ${h}`);
338
+ N(f, C);
339
+ const u = Date.now() - s, $ = u < 200 ? "🔥" : u < 500 ? "🚀" : u < 1e3 ? "🎉" : u < 2e3 ? "🚗" : u < 5e3 ? "🤔" : "🥴";
340
+ H.info(`Generated CSS in ${u}ms! ${$}`);
337
341
  } catch (s) {
338
342
  console.error(s);
339
343
  }
340
344
  }, Dt = async (t, e) => {
341
345
  try {
342
- const s = [], n = f(t, "./saltygen"), i = f(n, "index.css");
343
- if (J(e)) {
344
- const l = await U(t), g = await q(t, e, n);
345
- Object.entries(g).forEach(([b, y]) => {
346
- if (y.isKeyframes && y.css) {
347
- const c = `css/${`a_${y.animationName}.css`}`, d = f(n, c);
348
- N(d, y.css);
346
+ const s = [], n = l(t, "./saltygen"), i = l(n, "index.css");
347
+ if (W(e)) {
348
+ const f = await U(t), y = await q(t, e, n);
349
+ Object.entries(y).forEach(([S, h]) => {
350
+ if (h.isKeyframes && h.css) {
351
+ const c = `css/${`a_${h.animationName}.css`}`, d = l(n, c);
352
+ N(d, h.css);
349
353
  return;
350
354
  }
351
- if (!y.generator) return;
352
- const x = y.generator._withBuildContext({
353
- name: b,
354
- config: l
355
- }), P = `css/${x.cssFileName}`, u = f(n, P);
356
- s.push(x.cssFileName), N(u, x.css);
355
+ if (!h.generator) return;
356
+ const C = h.generator._withBuildContext({
357
+ name: S,
358
+ config: f
359
+ }), P = `css/${C.cssFileName}`, u = l(n, P);
360
+ s.push(C.cssFileName), N(u, C.css);
357
361
  });
358
- const a = W(i, "utf8").split(`
359
- `), o = s.map((b) => `@import url('../saltygen/css/${b}');`), j = [.../* @__PURE__ */ new Set([...a, ...o])].join(`
362
+ const a = R(i, "utf8").split(`
363
+ `), r = s.map((S) => `@import url('../saltygen/css/${S}');`), j = [.../* @__PURE__ */ new Set([...a, ...r])].join(`
360
364
  `);
361
365
  N(i, j);
362
366
  }
@@ -365,41 +369,41 @@ ${T}`;
365
369
  }
366
370
  }, Et = async (t, e, s = ct()) => {
367
371
  try {
368
- const n = f(t, "./saltygen");
369
- if (J(e)) {
370
- const r = W(e, "utf8");
371
- r.replace(/^(?!export\s)const\s.*/gm, (m) => `export ${m}`) !== r && await yt(e, r);
372
- const g = await U(t), a = await q(t, e, n);
373
- let o = r;
372
+ const n = l(t, "./saltygen");
373
+ if (W(e)) {
374
+ const o = R(e, "utf8");
375
+ o.replace(/^(?!export\s)const\s.*/gm, (m) => `export ${m}`) !== o && await mt(e, o);
376
+ const y = await U(t), a = await q(t, e, n);
377
+ let r = o;
374
378
  if (Object.entries(a).forEach(([m, j]) => {
375
- var k;
379
+ var x;
376
380
  if (j.isKeyframes || !j.generator) return;
377
- const b = j.generator._withBuildContext({
381
+ const S = j.generator._withBuildContext({
378
382
  name: m,
379
- config: g,
383
+ config: y,
380
384
  prod: s
381
- }), y = new RegExp(`\\s${m}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(r);
382
- if (!y) return console.error("Could not find the original declaration");
383
- const x = (k = y.at(1)) == null ? void 0 : k.trim(), P = new RegExp(`\\s${m}[=\\s]+styled\\(`, "g").exec(o);
385
+ }), h = new RegExp(`\\s${m}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(o);
386
+ if (!h) return console.error("Could not find the original declaration");
387
+ const C = (x = h.at(1)) == null ? void 0 : x.trim(), P = new RegExp(`\\s${m}[=\\s]+styled\\(`, "g").exec(r);
384
388
  if (!P) return console.error("Could not find the original declaration");
385
389
  const { index: u } = P;
386
- let h = !1;
387
- const c = setTimeout(() => h = !0, 5e3);
390
+ let $ = !1;
391
+ const c = setTimeout(() => $ = !0, 5e3);
388
392
  let d = 0, F = !1, w = 0;
389
- for (; !F && !h; ) {
390
- const S = o[u + d];
391
- S === "(" && w++, S === ")" && w--, w === 0 && S === ")" && (F = !0), d > o.length && (h = !0), d++;
393
+ for (; !F && !$; ) {
394
+ const b = r[u + d];
395
+ b === "(" && w++, b === ")" && w--, w === 0 && b === ")" && (F = !0), d > r.length && ($ = !0), d++;
392
396
  }
393
- if (!h) clearTimeout(c);
397
+ if (!$) clearTimeout(c);
394
398
  else throw new Error("Failed to find the end of the styled call and timed out");
395
- const T = u + d, C = o.slice(u, T), p = o, $ = ` ${m} = styled(${x}, "${b.classNames}", ${JSON.stringify(b.props)});`;
396
- o = o.replace(C, $), p === o && console.error("Minimize file failed to change content", { name: m, tagName: x });
397
- }), g.importStrategy === "component") {
399
+ const T = u + d, k = r.slice(u, T), p = r, g = ` ${m} = styled(${C}, "${S.classNames}", ${JSON.stringify(S.props)});`;
400
+ r = r.replace(k, g), p === r && console.error("Minimize file failed to change content", { name: m, tagName: C });
401
+ }), y.importStrategy === "component") {
398
402
  const m = L(e, 6), j = K(e);
399
- o = `import '../../saltygen/css/${`f_${V(j.name)}-${m}.css`}';
400
- ${o}`;
403
+ r = `import '../../saltygen/css/${`f_${V(j.name)}-${m}.css`}';
404
+ ${r}`;
401
405
  }
402
- return o = o.replace("{ styled }", "{ styledClient as styled }"), o = o.replace("@salty-css/react/styled", "@salty-css/react/styled-client"), o;
406
+ return r = r.replace("{ styled }", "{ styledClient as styled }"), r = r.replace("@salty-css/react/styled", "@salty-css/react/styled-client"), r;
403
407
  }
404
408
  } catch (n) {
405
409
  console.error("Error in minimizeFile:", n);
@@ -408,7 +412,7 @@ ${o}`;
408
412
  name: "stylegen",
409
413
  buildStart: () => Tt(t),
410
414
  load: async (e) => {
411
- if (J(e))
415
+ if (W(e))
412
416
  return await Et(t, e);
413
417
  },
414
418
  handleHotUpdate: async ({ file: e, server: s }) => {
@@ -416,7 +420,7 @@ ${o}`;
416
420
  },
417
421
  watchChange: {
418
422
  handler: async (e) => {
419
- J(e) && await Dt(t, e);
423
+ W(e) && await Dt(t, e);
420
424
  }
421
425
  }
422
426
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salty-css/vite",
3
- "version": "0.0.1-alpha.135",
3
+ "version": "0.0.1-alpha.136",
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.135"
37
+ "@salty-css/core": "^0.0.1-alpha.136"
38
38
  }
39
39
  }