@salty-css/vite 0.0.1-alpha.85 → 0.0.1-alpha.86

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 +14 -14
  2. package/index.js +206 -204
  3. package/package.json +2 -2
package/index.cjs CHANGED
@@ -1,18 +1,18 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const nt=require("esbuild"),ot=require("child_process"),u=require("path"),y=require("fs"),Z=require("fs/promises"),E=require("winston");var J=typeof document<"u"?document.currentScript:null;function rt(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const o=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,o.get?o:{enumerable:!0,get:()=>t[s]})}}return e.default=t,Object.freeze(e)}const L=rt(nt),z=t=>String.fromCharCode(t+(t>25?39:97)),it=(t,e)=>{let s="",o;for(o=Math.abs(t);o>52;o=o/52|0)s=z(o%52)+s;return s=z(o%52)+s,s.length<e?s=s.padStart(e,"a"):s.length>e&&(s=s.slice(-e)),s},ct=(t,e)=>{let s=e.length;for(;s;)t=t*33^e.charCodeAt(--s);return t},A=(t,e=3)=>{const s=ct(5381,JSON.stringify(t))>>>0;return it(s,e)};function N(t){return t?typeof t!="string"?N(String(t)):t.replace(/\s/g,"-").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g,(e,s)=>(s>0?"-":"")+e.toLowerCase()):""}const at=(t,e)=>{if(typeof t!="string")return{result:t};if(!e)return{result:t};const s=[];return Object.values(e).forEach(o=>{const{pattern:n,transform:f}=o;t=t.replace(n,h=>{const{value:a,css:c}=f(h);return c&&s.push(c),a})}),{result:t,additionalCss:s}},U=t=>typeof t!="string"?{result:t}:/\{[^{}]+\}/g.test(t)?{result:t.replace(/\{([^{}]+)\}/g,(...o)=>`var(--${N(o[1].replaceAll(".","-"))})`)}:{result:t},M=(t,e,s,o)=>{if(!t)return"";const n=[],f=Object.entries(t).reduce((a,[c,r])=>{const p=c.trim();if(typeof r=="function"&&(r=r()),typeof r=="object"){if(!r)return a;if(p==="variants")return Object.entries(r).forEach(([d,i])=>{i&&Object.entries(i).forEach(([j,m])=>{if(!m)return;const P=`${e}.${d}-${j}`,w=M(m,P);n.push(w)})}),a;if(p==="defaultVariants")return a;if(p==="compoundVariants")return r.forEach(d=>{const{css:i,...j}=d,m=Object.entries(j).reduce((w,[$,F])=>`${w}.${$}-${F}`,e),P=M(i,m);n.push(P)}),a;if(p.startsWith("@")){const d=M(r,e),i=`${p} {
2
- ${d.replace(`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const ot=require("esbuild"),rt=require("child_process"),u=require("path"),d=require("fs"),L=require("fs/promises"),V=require("winston");var R=typeof document<"u"?document.currentScript:null;function it(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const n=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,n.get?n:{enumerable:!0,get:()=>t[s]})}}return e.default=t,Object.freeze(e)}const U=it(ot),B=t=>String.fromCharCode(t+(t>25?39:97)),ct=(t,e)=>{let s="",n;for(n=Math.abs(t);n>52;n=n/52|0)s=B(n%52)+s;return s=B(n%52)+s,s.length<e?s=s.padStart(e,"a"):s.length>e&&(s=s.slice(-e)),s},at=(t,e)=>{let s=e.length;for(;s;)t=t*33^e.charCodeAt(--s);return t},q=(t,e=3)=>{const s=at(5381,JSON.stringify(t))>>>0;return ct(s,e)};function E(t){return t?typeof t!="string"?E(String(t)):t.replace(/\s/g,"-").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g,(e,s)=>(s>0?"-":"")+e.toLowerCase()):""}const lt=(t,e)=>{if(typeof t!="string")return{result:t};if(!e)return{result:t};const s=[];return Object.values(e).forEach(n=>{const{pattern:r,transform:c}=n;t=t.replace(r,m=>{const{value:a,css:j}=c(m);return j&&s.push(j),a})}),{result:t,additionalCss:s}},G=t=>typeof t!="string"?{result:t}:/\{[^{}]+\}/g.test(t)?{result:t.replace(/\{([^{}]+)\}/g,(...n)=>`var(--${E(n[1].replaceAll(".","-"))})`)}:{result:t},T=(t,e,s,n)=>{if(!t)return"";const r=[],c=Object.entries(t).reduce((a,[j,o])=>{const y=j.trim();if(typeof o=="function"&&(o=o()),typeof o=="object"){if(!o)return a;if(y==="variants")return Object.entries(o).forEach(([f,i])=>{i&&Object.entries(i).forEach(([h,p])=>{if(!p)return;const P=`${e}.${f}-${h}`,C=T(p,P);r.push(C)})}),a;if(y==="defaultVariants")return a;if(y==="compoundVariants")return o.forEach(f=>{const{css:i,...h}=f,p=Object.entries(h).reduce((C,[S,x])=>`${C}.${S}-${x}`,e),P=T(i,p);r.push(P)}),a;if(y.startsWith("@")){const f=T(o,e),i=`${y} {
2
+ ${f.replace(`
3
3
  `,`
4
4
  `)}
5
- }`;return n.push(i),a}const g=c.includes("&")?p.replace("&",e):p.startsWith(":")?`${e}${p}`:`${e} ${p}`,k=M(r,g);return n.push(k),a}const O=p.startsWith("-")?p:N(p),b=(g,k=";")=>a=`${a}${g}${k}`,C=g=>b(`${O}:${g}`);if(typeof r=="number")return C(r);if(typeof r!="string")if("toString"in r)r=r.toString();else return a;const{modifiers:l}={},x=function*(){yield U(r),yield at(r,l)}();for(const{result:g,additionalCss:k=[]}of x)r=g,k.forEach(d=>{const i=M(d,"");b(i,"")});return C(r)},"");if(!f)return n.join(`
6
- `);if(!e)return f;let h="";return h=`${e} { ${f} }`,[h,...n].join(`
7
- `)},G=(t,e=[])=>{if(!t)return"";const s=[],o={};if(Object.entries(t).forEach(([n,f])=>{if(typeof f=="object"){if(!f)return;const h=n.trim(),a=G(f,[...e,h]);s.push(a)}else o[n]=f}),Object.keys(o).length){const n=e.map(N).join("-"),f=M(o,`.${n}`);s.push(f)}return s.join(`
8
- `)},H=t=>{if(!t||t==="/")throw new Error("Could not find package.json file");const e=u.join(t,"package.json");return y.existsSync(e)?e:H(u.join(t,".."))},lt=async t=>{const e=H(t);return await Z.readFile(e,"utf-8").then(JSON.parse).catch(()=>{})},ut=async t=>{const e=await lt(t);if(e)return e.type};let D;const K=async t=>{if(D)return D;const e=await ut(t);return e==="module"?D="esm":(e==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:J&&J.tagName.toUpperCase()==="SCRIPT"&&J.src||new URL("index.cjs",document.baseURI).href).endsWith(".cjs"))&&(D="cjs"),D||"esm"},B=E.createLogger({level:"debug",format:E.format.combine(E.format.colorize(),E.format.cli()),transports:[new E.transports.Console({})]}),R={externalModules:[]},X=t=>{if(R.externalModules.length>0)return R.externalModules;const e=u.join(t,"salty.config.ts"),o=y.readFileSync(e,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!o)return[];const n=o[1].split(",").map(f=>f.replace(/['"`]/g,"").trim());return R.externalModules=n,n},_=t=>u.join(t,"./saltygen"),ft=["salty","css","styles","styled"],pt=(t=[])=>new RegExp(`\\.(${[...ft,...t].join("|")})\\.`),V=(t,e=[])=>pt(e).test(t),dt=async t=>{const e=_(t),s=u.join(t,"salty.config.ts"),o=u.join(e,"salty.config.js"),n=await K(t),f=X(t);await L.build({entryPoints:[s],minify:!0,treeShaking:!0,bundle:!0,outfile:o,format:n,external:f});const h=Date.now(),{config:a}=await import(`${o}?t=${h}`);return a},Y=async t=>{const e=await dt(t),s=new Set,o=(d,i=[])=>d?Object.entries(d).flatMap(([j,m])=>{if(!m)return;if(typeof m=="object")return o(m,[...i,j]);const P=[...i,j].join(".");s.add(`"${P}"`);const w=[...i.map(N),N(j)].join("-"),{result:$}=U(m);return`--${w}: ${$};`}):[],n=d=>d?Object.entries(d).flatMap(([i,j])=>{const m=o(j);return i==="base"?m.join(""):`${i} { ${m.join("")} }`}):[],f=d=>d?Object.entries(d).flatMap(([i,j])=>Object.entries(j).flatMap(([m,P])=>{const w=o(P,[i]),$=`.${i}-${m}, [data-${i}="${m}"]`,F=w.join("");return`${$} { ${F} }`})):[],h=o(e.variables),a=n(e.responsiveVariables),c=f(e.conditionalVariables),r=_(t),p=u.join(r,"css/variables.css"),O=`:root { ${h.join("")} ${a.join("")} } ${c.join("")}`;y.writeFileSync(p,O);const b=u.join(r,"types/css-tokens.d.ts"),l=`type VariableTokens = ${[...s].join("|")||'""'}; type PropertyValueToken = \`{\${VariableTokens}}\``;y.writeFileSync(b,l);const S=u.join(r,"css/global.css"),x=M(e.global,"");y.writeFileSync(S,x);const g=u.join(r,"css/templates.css"),k=G(e.templates);y.writeFileSync(g,k)},q=async(t,e,s)=>{const o=A(e),n=u.join(s,"js",o+".js"),f=await K(t),h=X(t);await L.build({entryPoints:[e],minify:!0,treeShaking:!0,bundle:!0,outfile:n,format:f,target:["es2022"],keepNames:!0,external:h});const a=Date.now();return await import(`${n}?t=${a}`)},I=async t=>{const e=_(t),s=u.join(e,"salty.config.js"),{config:o}=await import(s);return o},yt=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},gt=async(t,e=yt())=>{try{e?B.info("Generating CSS in production mode! 🔥"):B.info("Generating CSS in development mode! 🚀");const s=[],o=[],n=_(t),f=u.join(n,"index.css");(()=>{y.existsSync(n)&&ot.execSync("rm -rf "+n),y.mkdirSync(n),y.mkdirSync(u.join(n,"css")),y.mkdirSync(u.join(n,"types"))})(),await Y(t);const a=await I(t);async function c(l,S){const x=["node_modules","saltygen"],g=y.statSync(l);if(g.isDirectory()){const k=y.readdirSync(l);if(x.some(i=>l.includes(i)))return;await Promise.all(k.map(i=>c(u.join(l,i),u.join(S,i))))}else if(g.isFile()&&V(l)){const d=await q(t,l,n),i=[];Object.entries(d).forEach(([w,$])=>{if($.isKeyframes&&$.css){const W=`${$.animationName}.css`,et=`css/${W}`,st=u.join(n,et);s.push(W),y.writeFileSync(st,$.css);return}if(!$.generator)return;const F=$.generator._withBuildContext({name:w,config:a}),T=`${F.hash}-${F.priority}.css`;o[F.priority]||(o[F.priority]=[]),o[F.priority].push(T),i.push(T);const v=`css/${T}`,tt=u.join(n,v);y.writeFileSync(tt,F.css)});const j=i.map(w=>`@import url('./${w}');`).join(`
9
- `),m=A(l,6),P=u.join(n,`css/${m}.css`);y.writeFileSync(P,j)}}await c(t,n);const r=s.map(l=>`@import url('./css/${l}');`).join(`
10
- `);let C=`@layer l0, l1, l2, l3, l4, l5, l6, l7, l8;
5
+ }`;return r.push(i),a}const g=j.includes("&")?y.replace("&",e):y.startsWith(":")?`${e}${y}`:`${e} ${y}`,b=T(o,g);return r.push(b),a}const $=y.startsWith("-")?y:E(y),w=(g,b=";")=>a=`${a}${g}${b}`,k=g=>w(`${$}:${g}`);if(typeof o=="number")return k(o);if(typeof o!="string")if("toString"in o)o=o.toString();else return a;const{modifiers:l}={},O=function*(){yield G(o),yield lt(o,l)}();for(const{result:g,additionalCss:b=[]}of O)o=g,b.forEach(f=>{const i=T(f,"");w(i,"")});return k(o)},"");if(!c)return r.join(`
6
+ `);if(!e)return c;let m="";return m=`${e} { ${c} }`,[m,...r].join(`
7
+ `)},H=(t,e=[])=>{if(!t)return"";const s=[],n={};if(Object.entries(t).forEach(([r,c])=>{if(typeof c=="object"){if(!c)return;const m=r.trim(),a=H(c,[...e,m]);s.push(a)}else n[r]=c}),Object.keys(n).length){const r=e.map(E).join("-"),c=T(n,`.${r}`);s.push(c)}return s.join(`
8
+ `)},K=t=>{if(!t||t==="/")throw new Error("Could not find package.json file");const e=u.join(t,"package.json");return d.existsSync(e)?e:K(u.join(t,".."))},ut=async t=>{const e=K(t);return await L.readFile(e,"utf-8").then(JSON.parse).catch(()=>{})},ft=async t=>{const e=await ut(t);if(e)return e.type};let D;const X=async t=>{if(D)return D;const e=await ft(t);return e==="module"?D="esm":(e==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:R&&R.tagName.toUpperCase()==="SCRIPT"&&R.src||new URL("index.cjs",document.baseURI).href).endsWith(".cjs"))&&(D="cjs"),D||"esm"},Z=V.createLogger({level:"debug",format:V.format.combine(V.format.colorize(),V.format.cli()),transports:[new V.transports.Console({})]}),A={externalModules:[]},Y=t=>{if(A.externalModules.length>0)return A.externalModules;const e=u.join(t,"salty.config.ts"),n=d.readFileSync(e,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!n)return[];const r=n[1].split(",").map(c=>c.replace(/['"`]/g,"").trim());return A.externalModules=r,r},J=t=>u.join(t,"./saltygen"),pt=["salty","css","styles","styled"],dt=(t=[])=>new RegExp(`\\.(${[...pt,...t].join("|")})\\.`),_=(t,e=[])=>dt(e).test(t),yt=async t=>{const e=J(t),s=u.join(t,"salty.config.ts"),n=u.join(e,"salty.config.js"),r=await X(t),c=Y(t);await U.build({entryPoints:[s],minify:!0,treeShaking:!0,bundle:!0,outfile:n,format:r,external:c});const m=Date.now(),{config:a}=await import(`${n}?t=${m}`);return a},Q=async t=>{const e=await yt(t),s=new Set,n=(f,i=[])=>f?Object.entries(f).flatMap(([h,p])=>{if(!p)return;if(typeof p=="object")return n(p,[...i,h]);const P=[...i,h].join(".");s.add(`"${P}"`);const C=[...i.map(E),E(h)].join("-"),{result:S}=G(p);return`--${C}: ${S};`}):[],r=f=>f?Object.entries(f).flatMap(([i,h])=>{const p=n(h);return i==="base"?p.join(""):`${i} { ${p.join("")} }`}):[],c=f=>f?Object.entries(f).flatMap(([i,h])=>Object.entries(h).flatMap(([p,P])=>{const C=n(P,[i]),S=`.${i}-${p}, [data-${i}="${p}"]`,x=C.join("");return`${S} { ${x} }`})):[],m=n(e.variables),a=r(e.responsiveVariables),j=c(e.conditionalVariables),o=J(t),y=u.join(o,"css/variables.css"),$=`:root { ${m.join("")} ${a.join("")} } ${j.join("")}`;d.writeFileSync(y,$);const w=u.join(o,"types/css-tokens.d.ts"),l=`type VariableTokens = ${[...s].join("|")||'""'}; type PropertyValueToken = \`{\${VariableTokens}}\``;d.writeFileSync(w,l);const F=u.join(o,"css/global.css"),O=T(e.global,"");d.writeFileSync(F,O);const g=u.join(o,"css/templates.css"),b=H(e.templates);d.writeFileSync(g,b)},I=async(t,e,s)=>{const n=q(e),r=u.join(s,"js",n+".js"),c=await X(t),m=Y(t);await U.build({entryPoints:[e],minify:!0,treeShaking:!0,bundle:!0,outfile:r,format:c,target:["es2022"],keepNames:!0,external:m});const a=Date.now();return await import(`${r}?t=${a}`)},W=async t=>{const e=J(t),s=u.join(e,"salty.config.js"),{config:n}=await import(s);return n},v=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},gt=async(t,e=v())=>{try{e?Z.info("Generating CSS in production mode! 🔥"):Z.info("Generating CSS in development mode! 🚀");const s=[],n=[],r=J(t),c=u.join(r,"index.css");(()=>{d.existsSync(r)&&rt.execSync("rm -rf "+r),d.mkdirSync(r),d.mkdirSync(u.join(r,"css")),d.mkdirSync(u.join(r,"types"))})(),await Q(t);const a=await W(t);async function j(l,F){const O=["node_modules","saltygen"],g=d.statSync(l);if(g.isDirectory()){const b=d.readdirSync(l);if(O.some(i=>l.includes(i)))return;await Promise.all(b.map(i=>j(u.join(l,i),u.join(F,i))))}else if(g.isFile()&&_(l)){const f=await I(t,l,r),i=[];Object.entries(f).forEach(([C,S])=>{if(S.isKeyframes&&S.css){const z=`${S.animationName}.css`,st=`css/${z}`,nt=u.join(r,st);s.push(z),d.writeFileSync(nt,S.css);return}if(!S.generator)return;const x=S.generator._withBuildContext({name:C,config:a,prod:e}),M=`${x.hash}-${x.priority}.css`;n[x.priority]||(n[x.priority]=[]),n[x.priority].push(M),i.push(M);const N=`css/${M}`,et=u.join(r,N);d.writeFileSync(et,x.css)});const h=i.map(C=>`@import url('./${C}');`).join(`
9
+ `),p=q(l,6),P=u.join(r,`css/${p}.css`);d.writeFileSync(P,h)}}await j(t,r);const o=s.map(l=>`@import url('./css/${l}');`).join(`
10
+ `);let k=`@layer l0, l1, l2, l3, l4, l5, l6, l7, l8;
11
11
 
12
- ${["variables.css","global.css","templates.css"].filter(l=>{try{return y.readFileSync(u.join(n,"css",l),"utf8").length>0}catch{return!1}}).map(l=>`@import url('./css/${l}');`).join(`
12
+ ${["variables.css","global.css","templates.css"].filter(l=>{try{return d.readFileSync(u.join(r,"css",l),"utf8").length>0}catch{return!1}}).map(l=>`@import url('./css/${l}');`).join(`
13
13
  `)}
14
- ${r}`;if(a.importStrategy!=="component"){const l=o.flat().map(S=>`@import url('./css/${S}');`).join(`
15
- `);C+=l}y.writeFileSync(f,C)}catch(s){console.error(s)}},mt=async(t,e)=>{try{const s=[],o=u.join(t,"./saltygen"),n=u.join(o,"index.css");if(V(e)){const h=await I(t),a=await q(t,e,o);Object.entries(a).forEach(([b,C])=>{if(!C.generator)return;const l=C.generator._withBuildContext({name:b,config:h}),S=`${l.hash}-${l.priority}.css`,x=`css/${S}`,g=u.join(o,x);s.push(S),y.writeFileSync(g,l.css)});const c=y.readFileSync(n,"utf8").split(`
16
- `),r=s.map(b=>`@import url('../saltygen/css/${b}');`),O=[...new Set([...c,...r])].join(`
17
- `);y.writeFileSync(n,O)}}catch(s){console.error(s)}},ht=async(t,e)=>{try{const s=u.join(t,"./saltygen");if(V(e)){const n=y.readFileSync(e,"utf8");n.replace(/^(?!export\s)const\s.*/gm,p=>`export ${p}`)!==n&&await Z.writeFile(e,n);const h=await I(t),a=await q(t,e,s);let c=n;Object.entries(a).forEach(([p,O])=>{var F;if(O.isKeyframes||!O.generator)return;const b=O.generator._withBuildContext({name:p,config:h}),C=new RegExp(`\\s${p}[=\\s]+[^()]+styled\\(([^,]+),`,"g").exec(n);if(!C)return console.error("Could not find the original declaration");const l=(F=C.at(1))==null?void 0:F.trim(),S=new RegExp(`\\s${p}[=\\s]+styled\\(`,"g").exec(c);if(!S)return console.error("Could not find the original declaration");const{index:x}=S;let g=!1;const k=setTimeout(()=>g=!0,5e3);let d=0,i=!1,j=0;for(;!i&&!g;){const T=c[x+d];T==="("&&j++,T===")"&&j--,j===0&&T===")"&&(i=!0),d>c.length&&(g=!0),d++}if(!g)clearTimeout(k);else throw new Error("Failed to find the end of the styled call and timed out");const m=x+d,P=c.slice(x,m),w=c,$=` ${p} = styled(${l}, "${b.classNames}", "${b._callerName}", ${JSON.stringify(b.props)});`;c=c.replace(P,$),w===c&&console.error("Minimize file failed to change content",{name:p,tagName:l})});const r=A(e,6);return h.importStrategy==="component"&&(c=`import '../../saltygen/css/${r}.css';
18
- ${c}`),c=c.replace("{ styled }","{ styledClient as styled }"),c=c.replace("@salty-css/react/styled","@salty-css/react/styled-client"),c}}catch(s){console.error("Error in minimizeFile:",s)}},Q=t=>({name:"stylegen",buildStart:()=>gt(t),load:async e=>{if(V(e))return await ht(t,e)},watchChange:{handler:async e=>{V(e)&&await mt(t,e),e.includes("salty.config")&&await Y(t)}}});exports.default=Q;exports.saltyPlugin=Q;
14
+ ${o}`;if(a.importStrategy!=="component"){const l=n.flat().map(F=>`@import url('./css/${F}');`).join(`
15
+ `);k+=l}d.writeFileSync(c,k)}catch(s){console.error(s)}},mt=async(t,e)=>{try{const s=[],n=u.join(t,"./saltygen"),r=u.join(n,"index.css");if(_(e)){const m=await W(t),a=await I(t,e,n);Object.entries(a).forEach(([w,k])=>{if(!k.generator)return;const l=k.generator._withBuildContext({name:w,config:m}),F=`${l.hash}-${l.priority}.css`,O=`css/${F}`,g=u.join(n,O);s.push(F),d.writeFileSync(g,l.css)});const j=d.readFileSync(r,"utf8").split(`
16
+ `),o=s.map(w=>`@import url('../saltygen/css/${w}');`),$=[...new Set([...j,...o])].join(`
17
+ `);d.writeFileSync(r,$)}}catch(s){console.error(s)}},ht=async(t,e,s=v())=>{try{const n=u.join(t,"./saltygen");if(_(e)){const c=d.readFileSync(e,"utf8");c.replace(/^(?!export\s)const\s.*/gm,$=>`export ${$}`)!==c&&await L.writeFile(e,c);const a=await W(t),j=await I(t,e,n);let o=c;Object.entries(j).forEach(([$,w])=>{var M;if(w.isKeyframes||!w.generator)return;const k=w.generator._withBuildContext({name:$,config:a,prod:s}),l=new RegExp(`\\s${$}[=\\s]+[^()]+styled\\(([^,]+),`,"g").exec(c);if(!l)return console.error("Could not find the original declaration");const F=(M=l.at(1))==null?void 0:M.trim(),O=new RegExp(`\\s${$}[=\\s]+styled\\(`,"g").exec(o);if(!O)return console.error("Could not find the original declaration");const{index:g}=O;let b=!1;const f=setTimeout(()=>b=!0,5e3);let i=0,h=!1,p=0;for(;!h&&!b;){const N=o[g+i];N==="("&&p++,N===")"&&p--,p===0&&N===")"&&(h=!0),i>o.length&&(b=!0),i++}if(!b)clearTimeout(f);else throw new Error("Failed to find the end of the styled call and timed out");const P=g+i,C=o.slice(g,P),S=o,x=` ${$} = styled(${F}, "${k.classNames}", ${JSON.stringify(k.props)});`;o=o.replace(C,x),S===o&&console.error("Minimize file failed to change content",{name:$,tagName:F})});const y=q(e,6);return a.importStrategy==="component"&&(o=`import '../../saltygen/css/${y}.css';
18
+ ${o}`),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)}},tt=t=>({name:"stylegen",buildStart:()=>gt(t),load:async e=>{if(_(e))return await ht(t,e)},watchChange:{handler:async e=>{_(e)&&await mt(t,e),e.includes("salty.config")&&await Q(t)}}});exports.default=tt;exports.saltyPlugin=tt;
package/index.js CHANGED
@@ -1,321 +1,323 @@
1
- import * as H from "esbuild";
2
- import { execSync as nt } from "child_process";
1
+ import * as K from "esbuild";
2
+ import { execSync as ot } from "child_process";
3
3
  import { join as f } from "path";
4
- import { existsSync as K, writeFileSync as E, mkdirSync as A, statSync as ot, readdirSync as rt, readFileSync as V } from "fs";
5
- import { readFile as ct, writeFile as it } from "fs/promises";
6
- import { createLogger as at, format as _, transports as lt } from "winston";
7
- const z = (t) => String.fromCharCode(t + (t > 25 ? 39 : 97)), ft = (t, e) => {
4
+ import { existsSync as L, writeFileSync as E, mkdirSync as R, statSync as rt, readdirSync as ct, readFileSync as J } from "fs";
5
+ import { readFile as it, writeFile as at } from "fs/promises";
6
+ import { createLogger as lt, format as _, transports as ft } from "winston";
7
+ const G = (t) => String.fromCharCode(t + (t > 25 ? 39 : 97)), ut = (t, e) => {
8
8
  let s = "", o;
9
- for (o = Math.abs(t); o > 52; o = o / 52 | 0) s = z(o % 52) + s;
10
- return s = z(o % 52) + s, s.length < e ? s = s.padStart(e, "a") : s.length > e && (s = s.slice(-e)), s;
11
- }, ut = (t, e) => {
9
+ for (o = Math.abs(t); o > 52; o = o / 52 | 0) s = G(o % 52) + s;
10
+ return s = G(o % 52) + s, s.length < e ? s = s.padStart(e, "a") : s.length > e && (s = s.slice(-e)), s;
11
+ }, pt = (t, e) => {
12
12
  let s = e.length;
13
13
  for (; s; ) t = t * 33 ^ e.charCodeAt(--s);
14
14
  return t;
15
- }, W = (t, e = 3) => {
16
- const s = ut(5381, JSON.stringify(t)) >>> 0;
17
- return ft(s, e);
15
+ }, B = (t, e = 3) => {
16
+ const s = pt(5381, JSON.stringify(t)) >>> 0;
17
+ return ut(s, e);
18
18
  };
19
- function T(t) {
20
- return t ? typeof t != "string" ? T(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 N(t) {
20
+ return t ? typeof t != "string" ? N(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
- const pt = (t, e) => {
22
+ const gt = (t, e) => {
23
23
  if (typeof t != "string") return { result: t };
24
24
  if (!e) return { result: t };
25
25
  const s = [];
26
26
  return Object.values(e).forEach((o) => {
27
- const { pattern: n, transform: u } = o;
28
- t = t.replace(n, (m) => {
29
- const { value: a, css: i } = u(m);
30
- return i && s.push(i), a;
27
+ const { pattern: r, transform: i } = o;
28
+ t = t.replace(r, (d) => {
29
+ const { value: a, css: h } = i(d);
30
+ return h && s.push(h), a;
31
31
  });
32
32
  }), { result: t, additionalCss: s };
33
- }, L = (t) => typeof t != "string" ? { result: t } : /\{[^{}]+\}/g.test(t) ? { result: t.replace(/\{([^{}]+)\}/g, (...o) => `var(--${T(o[1].replaceAll(".", "-"))})`) } : { result: t }, M = (t, e, s, o) => {
33
+ }, q = (t) => typeof t != "string" ? { result: t } : /\{[^{}]+\}/g.test(t) ? { result: t.replace(/\{([^{}]+)\}/g, (...o) => `var(--${N(o[1].replaceAll(".", "-"))})`) } : { result: t }, D = (t, e, s, o) => {
34
34
  if (!t) return "";
35
- const n = [], u = Object.entries(t).reduce((a, [i, r]) => {
36
- const p = i.trim();
37
- if (typeof r == "function" && (r = r()), typeof r == "object") {
38
- if (!r) return a;
39
- if (p === "variants")
40
- return Object.entries(r).forEach(([g, c]) => {
41
- c && Object.entries(c).forEach(([h, d]) => {
42
- if (!d) return;
43
- const x = `${e}.${g}-${h}`, S = M(d, x);
44
- n.push(S);
35
+ const r = [], i = Object.entries(t).reduce((a, [h, n]) => {
36
+ const g = h.trim();
37
+ if (typeof n == "function" && (n = n()), typeof n == "object") {
38
+ if (!n) return a;
39
+ if (g === "variants")
40
+ return Object.entries(n).forEach(([u, c]) => {
41
+ c && Object.entries(c).forEach(([m, p]) => {
42
+ if (!p) return;
43
+ const x = `${e}.${u}-${m}`, F = D(p, x);
44
+ r.push(F);
45
45
  });
46
46
  }), a;
47
- if (p === "defaultVariants")
47
+ if (g === "defaultVariants")
48
48
  return a;
49
- if (p === "compoundVariants")
50
- return r.forEach((g) => {
51
- const { css: c, ...h } = g, d = Object.entries(h).reduce((S, [$, j]) => `${S}.${$}-${j}`, e), x = M(c, d);
52
- n.push(x);
49
+ if (g === "compoundVariants")
50
+ return n.forEach((u) => {
51
+ const { css: c, ...m } = u, p = Object.entries(m).reduce((F, [w, k]) => `${F}.${w}-${k}`, e), x = D(c, p);
52
+ r.push(x);
53
53
  }), a;
54
- if (p.startsWith("@")) {
55
- const g = M(r, e), c = `${p} {
56
- ${g.replace(`
54
+ if (g.startsWith("@")) {
55
+ const u = D(n, e), c = `${g} {
56
+ ${u.replace(`
57
57
  `, `
58
58
  `)}
59
59
  }`;
60
- return n.push(c), a;
60
+ return r.push(c), a;
61
61
  }
62
- const y = i.includes("&") ? p.replace("&", e) : p.startsWith(":") ? `${e}${p}` : `${e} ${p}`, C = M(r, y);
63
- return n.push(C), a;
62
+ const y = h.includes("&") ? g.replace("&", e) : g.startsWith(":") ? `${e}${g}` : `${e} ${g}`, $ = D(n, y);
63
+ return r.push($), a;
64
64
  }
65
- const P = p.startsWith("-") ? p : T(p), b = (y, C = ";") => a = `${a}${y}${C}`, F = (y) => b(`${P}:${y}`);
66
- if (typeof r == "number") return F(r);
67
- if (typeof r != "string")
68
- if ("toString" in r) r = r.toString();
65
+ const b = g.startsWith("-") ? g : N(g), S = (y, $ = ";") => a = `${a}${y}${$}`, C = (y) => S(`${b}:${y}`);
66
+ if (typeof n == "number") return C(n);
67
+ if (typeof n != "string")
68
+ if ("toString" in n) n = n.toString();
69
69
  else return a;
70
- const { modifiers: l } = {}, k = function* () {
71
- yield L(r), yield pt(r, l);
70
+ const { modifiers: l } = {}, P = function* () {
71
+ yield q(n), yield gt(n, l);
72
72
  }();
73
- for (const { result: y, additionalCss: C = [] } of k)
74
- r = y, C.forEach((g) => {
75
- const c = M(g, "");
76
- b(c, "");
73
+ for (const { result: y, additionalCss: $ = [] } of P)
74
+ n = y, $.forEach((u) => {
75
+ const c = D(u, "");
76
+ S(c, "");
77
77
  });
78
- return F(r);
78
+ return C(n);
79
79
  }, "");
80
- if (!u) return n.join(`
80
+ if (!i) return r.join(`
81
81
  `);
82
- if (!e) return u;
83
- let m = "";
84
- return m = `${e} { ${u} }`, [m, ...n].join(`
82
+ if (!e) return i;
83
+ let d = "";
84
+ return d = `${e} { ${i} }`, [d, ...r].join(`
85
85
  `);
86
- }, q = (t, e = []) => {
86
+ }, U = (t, e = []) => {
87
87
  if (!t) return "";
88
88
  const s = [], o = {};
89
- if (Object.entries(t).forEach(([n, u]) => {
90
- if (typeof u == "object") {
91
- if (!u) return;
92
- const m = n.trim(), a = q(u, [...e, m]);
89
+ if (Object.entries(t).forEach(([r, i]) => {
90
+ if (typeof i == "object") {
91
+ if (!i) return;
92
+ const d = r.trim(), a = U(i, [...e, d]);
93
93
  s.push(a);
94
94
  } else
95
- o[n] = u;
95
+ o[r] = i;
96
96
  }), Object.keys(o).length) {
97
- const n = e.map(T).join("-"), u = M(o, `.${n}`);
98
- s.push(u);
97
+ const r = e.map(N).join("-"), i = D(o, `.${r}`);
98
+ s.push(i);
99
99
  }
100
100
  return s.join(`
101
101
  `);
102
- }, U = (t) => {
102
+ }, X = (t) => {
103
103
  if (!t || t === "/") throw new Error("Could not find package.json file");
104
104
  const e = f(t, "package.json");
105
- return K(e) ? e : U(f(t, ".."));
106
- }, gt = async (t) => {
107
- const e = U(t);
108
- return await ct(e, "utf-8").then(JSON.parse).catch(() => {
109
- });
105
+ return L(e) ? e : X(f(t, ".."));
110
106
  }, yt = async (t) => {
111
- const e = await gt(t);
107
+ const e = X(t);
108
+ return await it(e, "utf-8").then(JSON.parse).catch(() => {
109
+ });
110
+ }, dt = async (t) => {
111
+ const e = await yt(t);
112
112
  if (e)
113
113
  return e.type;
114
114
  };
115
- let N;
116
- const X = async (t) => {
117
- if (N) return N;
118
- const e = await yt(t);
119
- return e === "module" ? N = "esm" : (e === "commonjs" || import.meta.url.endsWith(".cjs")) && (N = "cjs"), N || "esm";
120
- }, G = at({
115
+ let T;
116
+ const Y = async (t) => {
117
+ if (T) return T;
118
+ const e = await dt(t);
119
+ return e === "module" ? T = "esm" : (e === "commonjs" || import.meta.url.endsWith(".cjs")) && (T = "cjs"), T || "esm";
120
+ }, H = lt({
121
121
  level: "debug",
122
122
  format: _.combine(_.colorize(), _.cli()),
123
- transports: [new lt.Console({})]
124
- }), R = {
123
+ transports: [new ft.Console({})]
124
+ }), W = {
125
125
  externalModules: []
126
- }, Y = (t) => {
127
- if (R.externalModules.length > 0) return R.externalModules;
128
- const e = f(t, "salty.config.ts"), o = V(e, "utf8").match(/externalModules:\s?\[(.*)\]/);
126
+ }, Q = (t) => {
127
+ if (W.externalModules.length > 0) return W.externalModules;
128
+ const e = f(t, "salty.config.ts"), o = J(e, "utf8").match(/externalModules:\s?\[(.*)\]/);
129
129
  if (!o) return [];
130
- const n = o[1].split(",").map((u) => u.replace(/['"`]/g, "").trim());
131
- return R.externalModules = n, n;
132
- }, J = (t) => f(t, "./saltygen"), dt = ["salty", "css", "styles", "styled"], mt = (t = []) => new RegExp(`\\.(${[...dt, ...t].join("|")})\\.`), O = (t, e = []) => mt(e).test(t), ht = async (t) => {
133
- const e = J(t), s = f(t, "salty.config.ts"), o = f(e, "salty.config.js"), n = await X(t), u = Y(t);
134
- await H.build({
130
+ const r = o[1].split(",").map((i) => i.replace(/['"`]/g, "").trim());
131
+ return W.externalModules = r, r;
132
+ }, A = (t) => f(t, "./saltygen"), mt = ["salty", "css", "styles", "styled"], ht = (t = []) => new RegExp(`\\.(${[...mt, ...t].join("|")})\\.`), V = (t, e = []) => ht(e).test(t), $t = async (t) => {
133
+ const e = A(t), s = f(t, "salty.config.ts"), o = f(e, "salty.config.js"), r = await Y(t), i = Q(t);
134
+ await K.build({
135
135
  entryPoints: [s],
136
136
  minify: !0,
137
137
  treeShaking: !0,
138
138
  bundle: !0,
139
139
  outfile: o,
140
- format: n,
141
- external: u
140
+ format: r,
141
+ external: i
142
142
  });
143
- const m = Date.now(), { config: a } = await import(`${o}?t=${m}`);
143
+ const d = Date.now(), { config: a } = await import(`${o}?t=${d}`);
144
144
  return a;
145
- }, Q = async (t) => {
146
- const e = await ht(t), s = /* @__PURE__ */ new Set(), o = (g, c = []) => g ? Object.entries(g).flatMap(([h, d]) => {
147
- if (!d) return;
148
- if (typeof d == "object") return o(d, [...c, h]);
149
- const x = [...c, h].join(".");
145
+ }, v = async (t) => {
146
+ const e = await $t(t), s = /* @__PURE__ */ new Set(), o = (u, c = []) => u ? Object.entries(u).flatMap(([m, p]) => {
147
+ if (!p) return;
148
+ if (typeof p == "object") return o(p, [...c, m]);
149
+ const x = [...c, m].join(".");
150
150
  s.add(`"${x}"`);
151
- const S = [...c.map(T), T(h)].join("-"), { result: $ } = L(d);
152
- return `--${S}: ${$};`;
153
- }) : [], n = (g) => g ? Object.entries(g).flatMap(([c, h]) => {
154
- const d = o(h);
155
- return c === "base" ? d.join("") : `${c} { ${d.join("")} }`;
156
- }) : [], u = (g) => g ? Object.entries(g).flatMap(([c, h]) => Object.entries(h).flatMap(([d, x]) => {
157
- const S = o(x, [c]), $ = `.${c}-${d}, [data-${c}="${d}"]`, j = S.join("");
158
- return `${$} { ${j} }`;
159
- })) : [], m = o(e.variables), a = n(e.responsiveVariables), i = u(e.conditionalVariables), r = J(t), p = f(r, "css/variables.css"), P = `:root { ${m.join("")} ${a.join("")} } ${i.join("")}`;
160
- E(p, P);
161
- const b = f(r, "types/css-tokens.d.ts"), l = `type VariableTokens = ${[...s].join("|") || '""'}; type PropertyValueToken = \`{\${VariableTokens}}\``;
162
- E(b, l);
163
- const w = f(r, "css/global.css"), k = M(e.global, "");
164
- E(w, k);
165
- const y = f(r, "css/templates.css"), C = q(e.templates);
166
- E(y, C);
167
- }, B = async (t, e, s) => {
168
- const o = W(e), n = f(s, "js", o + ".js"), u = await X(t), m = Y(t);
169
- await H.build({
151
+ const F = [...c.map(N), N(m)].join("-"), { result: w } = q(p);
152
+ return `--${F}: ${w};`;
153
+ }) : [], r = (u) => u ? Object.entries(u).flatMap(([c, m]) => {
154
+ const p = o(m);
155
+ return c === "base" ? p.join("") : `${c} { ${p.join("")} }`;
156
+ }) : [], i = (u) => u ? Object.entries(u).flatMap(([c, m]) => Object.entries(m).flatMap(([p, x]) => {
157
+ const F = o(x, [c]), w = `.${c}-${p}, [data-${c}="${p}"]`, k = F.join("");
158
+ return `${w} { ${k} }`;
159
+ })) : [], d = o(e.variables), a = r(e.responsiveVariables), h = i(e.conditionalVariables), n = A(t), g = f(n, "css/variables.css"), b = `:root { ${d.join("")} ${a.join("")} } ${h.join("")}`;
160
+ E(g, b);
161
+ const S = f(n, "types/css-tokens.d.ts"), l = `type VariableTokens = ${[...s].join("|") || '""'}; type PropertyValueToken = \`{\${VariableTokens}}\``;
162
+ E(S, l);
163
+ const j = f(n, "css/global.css"), P = D(e.global, "");
164
+ E(j, P);
165
+ const y = f(n, "css/templates.css"), $ = U(e.templates);
166
+ E(y, $);
167
+ }, I = async (t, e, s) => {
168
+ const o = B(e), r = f(s, "js", o + ".js"), i = await Y(t), d = Q(t);
169
+ await K.build({
170
170
  entryPoints: [e],
171
171
  minify: !0,
172
172
  treeShaking: !0,
173
173
  bundle: !0,
174
- outfile: n,
175
- format: u,
174
+ outfile: r,
175
+ format: i,
176
176
  target: ["es2022"],
177
177
  keepNames: !0,
178
- external: m
178
+ external: d
179
179
  });
180
180
  const a = Date.now();
181
- return await import(`${n}?t=${a}`);
182
- }, I = async (t) => {
183
- const e = J(t), s = f(e, "salty.config.js"), { config: o } = await import(s);
181
+ return await import(`${r}?t=${a}`);
182
+ }, Z = async (t) => {
183
+ const e = A(t), s = f(e, "salty.config.js"), { config: o } = await import(s);
184
184
  return o;
185
- }, $t = () => {
185
+ }, tt = () => {
186
186
  try {
187
187
  return process.env.NODE_ENV === "production";
188
188
  } catch {
189
189
  return !1;
190
190
  }
191
- }, bt = async (t, e = $t()) => {
191
+ }, bt = async (t, e = tt()) => {
192
192
  try {
193
- e ? G.info("Generating CSS in production mode! 🔥") : G.info("Generating CSS in development mode! 🚀");
194
- const s = [], o = [], n = J(t), u = f(n, "index.css");
193
+ e ? H.info("Generating CSS in production mode! 🔥") : H.info("Generating CSS in development mode! 🚀");
194
+ const s = [], o = [], r = A(t), i = f(r, "index.css");
195
195
  (() => {
196
- K(n) && nt("rm -rf " + n), A(n), A(f(n, "css")), A(f(n, "types"));
197
- })(), await Q(t);
198
- const a = await I(t);
199
- async function i(l, w) {
200
- const k = ["node_modules", "saltygen"], y = ot(l);
196
+ L(r) && ot("rm -rf " + r), R(r), R(f(r, "css")), R(f(r, "types"));
197
+ })(), await v(t);
198
+ const a = await Z(t);
199
+ async function h(l, j) {
200
+ const P = ["node_modules", "saltygen"], y = rt(l);
201
201
  if (y.isDirectory()) {
202
- const C = rt(l);
203
- if (k.some((c) => l.includes(c))) return;
204
- await Promise.all(C.map((c) => i(f(l, c), f(w, c))));
205
- } else if (y.isFile() && O(l)) {
206
- const g = await B(t, l, n), c = [];
207
- Object.entries(g).forEach(([S, $]) => {
208
- if ($.isKeyframes && $.css) {
209
- const Z = `${$.animationName}.css`, et = `css/${Z}`, st = f(n, et);
210
- s.push(Z), E(st, $.css);
202
+ const $ = ct(l);
203
+ if (P.some((c) => l.includes(c))) return;
204
+ await Promise.all($.map((c) => h(f(l, c), f(j, c))));
205
+ } else if (y.isFile() && V(l)) {
206
+ const u = await I(t, l, r), c = [];
207
+ Object.entries(u).forEach(([F, w]) => {
208
+ if (w.isKeyframes && w.css) {
209
+ const z = `${w.animationName}.css`, st = `css/${z}`, nt = f(r, st);
210
+ s.push(z), E(nt, w.css);
211
211
  return;
212
212
  }
213
- if (!$.generator) return;
214
- const j = $.generator._withBuildContext({
215
- name: S,
216
- config: a
217
- }), D = `${j.hash}-${j.priority}.css`;
218
- o[j.priority] || (o[j.priority] = []), o[j.priority].push(D), c.push(D);
219
- const v = `css/${D}`, tt = f(n, v);
220
- E(tt, j.css);
213
+ if (!w.generator) return;
214
+ const k = w.generator._withBuildContext({
215
+ name: F,
216
+ config: a,
217
+ prod: e
218
+ }), M = `${k.hash}-${k.priority}.css`;
219
+ o[k.priority] || (o[k.priority] = []), o[k.priority].push(M), c.push(M);
220
+ const O = `css/${M}`, et = f(r, O);
221
+ E(et, k.css);
221
222
  });
222
- const h = c.map((S) => `@import url('./${S}');`).join(`
223
- `), d = W(l, 6), x = f(n, `css/${d}.css`);
224
- E(x, h);
223
+ const m = c.map((F) => `@import url('./${F}');`).join(`
224
+ `), p = B(l, 6), x = f(r, `css/${p}.css`);
225
+ E(x, m);
225
226
  }
226
227
  }
227
- await i(t, n);
228
- const r = s.map((l) => `@import url('./css/${l}');`).join(`
228
+ await h(t, r);
229
+ const n = s.map((l) => `@import url('./css/${l}');`).join(`
229
230
  `);
230
- let F = `@layer l0, l1, l2, l3, l4, l5, l6, l7, l8;
231
+ let C = `@layer l0, l1, l2, l3, l4, l5, l6, l7, l8;
231
232
 
232
233
  ${["variables.css", "global.css", "templates.css"].filter((l) => {
233
234
  try {
234
- return V(f(n, "css", l), "utf8").length > 0;
235
+ return J(f(r, "css", l), "utf8").length > 0;
235
236
  } catch {
236
237
  return !1;
237
238
  }
238
239
  }).map((l) => `@import url('./css/${l}');`).join(`
239
240
  `)}
240
- ${r}`;
241
+ ${n}`;
241
242
  if (a.importStrategy !== "component") {
242
- const l = o.flat().map((w) => `@import url('./css/${w}');`).join(`
243
+ const l = o.flat().map((j) => `@import url('./css/${j}');`).join(`
243
244
  `);
244
- F += l;
245
+ C += l;
245
246
  }
246
- E(u, F);
247
+ E(i, C);
247
248
  } catch (s) {
248
249
  console.error(s);
249
250
  }
250
251
  }, wt = async (t, e) => {
251
252
  try {
252
- const s = [], o = f(t, "./saltygen"), n = f(o, "index.css");
253
- if (O(e)) {
254
- const m = await I(t), a = await B(t, e, o);
255
- Object.entries(a).forEach(([b, F]) => {
256
- if (!F.generator) return;
257
- const l = F.generator._withBuildContext({
258
- name: b,
259
- config: m
260
- }), w = `${l.hash}-${l.priority}.css`, k = `css/${w}`, y = f(o, k);
261
- s.push(w), E(y, l.css);
253
+ const s = [], o = f(t, "./saltygen"), r = f(o, "index.css");
254
+ if (V(e)) {
255
+ const d = await Z(t), a = await I(t, e, o);
256
+ Object.entries(a).forEach(([S, C]) => {
257
+ if (!C.generator) return;
258
+ const l = C.generator._withBuildContext({
259
+ name: S,
260
+ config: d
261
+ }), j = `${l.hash}-${l.priority}.css`, P = `css/${j}`, y = f(o, P);
262
+ s.push(j), E(y, l.css);
262
263
  });
263
- const i = V(n, "utf8").split(`
264
- `), r = s.map((b) => `@import url('../saltygen/css/${b}');`), P = [.../* @__PURE__ */ new Set([...i, ...r])].join(`
264
+ const h = J(r, "utf8").split(`
265
+ `), n = s.map((S) => `@import url('../saltygen/css/${S}');`), b = [.../* @__PURE__ */ new Set([...h, ...n])].join(`
265
266
  `);
266
- E(n, P);
267
+ E(r, b);
267
268
  }
268
269
  } catch (s) {
269
270
  console.error(s);
270
271
  }
271
- }, St = async (t, e) => {
272
+ }, St = async (t, e, s = tt()) => {
272
273
  try {
273
- const s = f(t, "./saltygen");
274
- if (O(e)) {
275
- const n = V(e, "utf8");
276
- n.replace(/^(?!export\s)const\s.*/gm, (p) => `export ${p}`) !== n && await it(e, n);
277
- const m = await I(t), a = await B(t, e, s);
278
- let i = n;
279
- Object.entries(a).forEach(([p, P]) => {
280
- var j;
281
- if (P.isKeyframes || !P.generator) return;
282
- const b = P.generator._withBuildContext({
283
- name: p,
284
- config: m
285
- }), F = new RegExp(`\\s${p}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(n);
286
- if (!F) return console.error("Could not find the original declaration");
287
- const l = (j = F.at(1)) == null ? void 0 : j.trim(), w = new RegExp(`\\s${p}[=\\s]+styled\\(`, "g").exec(i);
288
- if (!w) return console.error("Could not find the original declaration");
289
- const { index: k } = w;
290
- let y = !1;
291
- const C = setTimeout(() => y = !0, 5e3);
292
- let g = 0, c = !1, h = 0;
293
- for (; !c && !y; ) {
294
- const D = i[k + g];
295
- D === "(" && h++, D === ")" && h--, h === 0 && D === ")" && (c = !0), g > i.length && (y = !0), g++;
274
+ const o = f(t, "./saltygen");
275
+ if (V(e)) {
276
+ const i = J(e, "utf8");
277
+ i.replace(/^(?!export\s)const\s.*/gm, (b) => `export ${b}`) !== i && await at(e, i);
278
+ const a = await Z(t), h = await I(t, e, o);
279
+ let n = i;
280
+ Object.entries(h).forEach(([b, S]) => {
281
+ var M;
282
+ if (S.isKeyframes || !S.generator) return;
283
+ const C = S.generator._withBuildContext({
284
+ name: b,
285
+ config: a,
286
+ prod: s
287
+ }), l = new RegExp(`\\s${b}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(i);
288
+ if (!l) return console.error("Could not find the original declaration");
289
+ const j = (M = l.at(1)) == null ? void 0 : M.trim(), P = new RegExp(`\\s${b}[=\\s]+styled\\(`, "g").exec(n);
290
+ if (!P) return console.error("Could not find the original declaration");
291
+ const { index: y } = P;
292
+ let $ = !1;
293
+ const u = setTimeout(() => $ = !0, 5e3);
294
+ let c = 0, m = !1, p = 0;
295
+ for (; !m && !$; ) {
296
+ const O = n[y + c];
297
+ O === "(" && p++, O === ")" && p--, p === 0 && O === ")" && (m = !0), c > n.length && ($ = !0), c++;
296
298
  }
297
- if (!y) clearTimeout(C);
299
+ if (!$) clearTimeout(u);
298
300
  else throw new Error("Failed to find the end of the styled call and timed out");
299
- const d = k + g, x = i.slice(k, d), S = i, $ = ` ${p} = styled(${l}, "${b.classNames}", "${b._callerName}", ${JSON.stringify(b.props)});`;
300
- i = i.replace(x, $), S === i && console.error("Minimize file failed to change content", { name: p, tagName: l });
301
+ const x = y + c, F = n.slice(y, x), w = n, k = ` ${b} = styled(${j}, "${C.classNames}", ${JSON.stringify(C.props)});`;
302
+ n = n.replace(F, k), w === n && console.error("Minimize file failed to change content", { name: b, tagName: j });
301
303
  });
302
- const r = W(e, 6);
303
- return m.importStrategy === "component" && (i = `import '../../saltygen/css/${r}.css';
304
- ${i}`), i = i.replace("{ styled }", "{ styledClient as styled }"), i = i.replace("@salty-css/react/styled", "@salty-css/react/styled-client"), i;
304
+ const g = B(e, 6);
305
+ return a.importStrategy === "component" && (n = `import '../../saltygen/css/${g}.css';
306
+ ${n}`), n = n.replace("{ styled }", "{ styledClient as styled }"), n = n.replace("@salty-css/react/styled", "@salty-css/react/styled-client"), n;
305
307
  }
306
- } catch (s) {
307
- console.error("Error in minimizeFile:", s);
308
+ } catch (o) {
309
+ console.error("Error in minimizeFile:", o);
308
310
  }
309
311
  }, Pt = (t) => ({
310
312
  name: "stylegen",
311
313
  buildStart: () => bt(t),
312
314
  load: async (e) => {
313
- if (O(e))
315
+ if (V(e))
314
316
  return await St(t, e);
315
317
  },
316
318
  watchChange: {
317
319
  handler: async (e) => {
318
- O(e) && await wt(t, e), e.includes("salty.config") && await Q(t);
320
+ V(e) && await wt(t, e), e.includes("salty.config") && await v(t);
319
321
  }
320
322
  }
321
323
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salty-css/vite",
3
- "version": "0.0.1-alpha.85",
3
+ "version": "0.0.1-alpha.86",
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.85"
37
+ "@salty-css/core": "^0.0.1-alpha.86"
38
38
  }
39
39
  }