@salty-css/webpack 0.0.1-alpha.190 → 0.0.1-alpha.192

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.
@@ -1,11 +1,11 @@
1
- "use strict";const $e=require("esbuild"),je=require("child_process"),l=require("path"),u=require("fs"),ee=require("fs/promises"),q=require("winston");var Y=typeof document<"u"?document.currentScript:null;function be(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 ie=be($e),oe=e=>String.fromCharCode(e+(e>25?39:97)),we=(e,t)=>{let s="",n;for(n=Math.abs(e);n>52;n=n/52|0)s=oe(n%52)+s;return s=oe(n%52)+s,s.length<t?s=s.padStart(t,"a"):s.length>t&&(s=s.slice(-t)),s},Fe=(e,t)=>{let s=t.length;for(;s;)e=e*33^t.charCodeAt(--s);return e},W=(e,t=5)=>{const s=Fe(5381,JSON.stringify(e))>>>0;return we(s,t)};function V(e){return e?typeof e!="string"?V(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 Ce=(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:a}=n;e=e.replace(i,c=>{const{value:d,css:r}=a(c);return r&&s.push(r),d})}),{result:e,additionalCss:s}},ce=e=>typeof e!="string"?{result:e}:/\{[^{}]+\}/g.test(e)?{result:e.replace(/\{([^{}]+)\}/g,(...n)=>`var(--${V(n[1].replaceAll(".","-"))})`)}:{result:e},M=(e,t,s)=>{if(!e)return"";const n=[],i=Object.entries(e).reduce((c,[d,r])=>{const o=d.trim();if(typeof r=="function"&&(r=r()),typeof r=="object"){if(!r)return c;if(o==="variants")return Object.entries(r).forEach(([D,j])=>{j&&Object.entries(j).forEach(([E,f])=>{if(!f)return;const h=`${t}.${D}-${E}`,b=M(f,h);n.push(b)})}),c;if(o==="defaultVariants")return c;if(o==="compoundVariants")return r.forEach(D=>{const{css:j,...E}=D,f=Object.entries(E).reduce((b,[p,x])=>`${b}.${p}-${x}`,t),h=M(j,f);n.push(h)}),c;if(o.startsWith("@")){const D=M(r,t),j=`${o} {
1
+ "use strict";const $e=require("esbuild"),je=require("child_process"),l=require("path"),u=require("fs"),ee=require("fs/promises"),q=require("winston");var Y=typeof document<"u"?document.currentScript:null;function be(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 ie=be($e),oe=e=>String.fromCharCode(e+(e>25?39:97)),we=(e,t)=>{let s="",n;for(n=Math.abs(e);n>52;n=n/52|0)s=oe(n%52)+s;return s=oe(n%52)+s,s.length<t?s=s.padStart(t,"a"):s.length>t&&(s=s.slice(-t)),s},Fe=(e,t)=>{let s=t.length;for(;s;)e=e*33^t.charCodeAt(--s);return e},W=(e,t=5)=>{const s=Fe(5381,JSON.stringify(e))>>>0;return we(s,t)};function V(e){return e?typeof e!="string"?V(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 Ce=(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:a}=n;e=e.replace(i,c=>{const{value:d,css:r}=a(c);return r&&s.push(r),d})}),{result:e,additionalCss:s}},ce=e=>typeof e!="string"?{result:e}:/\{[^{}]+\}/g.test(e)?{result:e.replace(/\{([^{}]+)\}/g,(...n)=>`var(--${V(n[1].replaceAll(".","-"))})`)}:{result:e},M=(e,t,s)=>{if(!e)return"";const n=[],i=Object.entries(e).reduce((c,[d,r])=>{const o=d.trim(),m=o.startsWith("-")?o:V(o),g=(F,N=";")=>c=`${c}${F}${N}`,y=F=>g(`${m}:${F}`);if(typeof r=="function"&&(r=r()),typeof r=="object"){if(!r)return c;if(r.isColor)return y(r.toString()),c;if(o==="variants")return Object.entries(r).forEach(([D,j])=>{j&&Object.entries(j).forEach(([E,f])=>{if(!f)return;const h=`${t}.${D}-${E}`,b=M(f,h);n.push(b)})}),c;if(o==="defaultVariants")return c;if(o==="compoundVariants")return r.forEach(D=>{const{css:j,...E}=D,f=Object.entries(E).reduce((b,[p,x])=>`${b}.${p}-${x}`,t),h=M(j,f);n.push(h)}),c;if(o.startsWith("@")){const D=M(r,t),j=`${o} {
2
2
  ${D.replace(`
3
3
  `,`
4
4
  `)}
5
- }`;return n.push(j),c}const F=d.includes("&")?o.replace("&",t):o.startsWith(":")?`${t}${o}`:`${t} ${o}`,N=M(r,F);return n.push(N),c}const m=o.startsWith("-")?o:V(o),y=(F,N=";")=>c=`${c}${F}${N}`,g=F=>y(`${m}:${F}`);if(typeof r=="number")return g(r);if(typeof r!="string")if("toString"in r)r=r.toString();else return c;const{modifiers:$}={},_=function*(){yield ce(r),yield Ce(r,$)}();for(const{result:F,additionalCss:N=[]}of _)r=F,N.forEach(D=>{const j=M(D,"");y(j,"")});return g(r)},"");return i?t?[`${t} { ${i} }`,...n].join(`
5
+ }`;return n.push(j),c}const F=d.includes("&")?o.replace("&",t):o.startsWith(":")?`${t}${o}`:`${t} ${o}`,N=M(r,F);return n.push(N),c}if(typeof r=="number")return y(r);if(typeof r!="string")if("toString"in r)r=r.toString();else return c;const{modifiers:$}={},_=function*(){yield ce(r),yield Ce(r,$)}();for(const{result:F,additionalCss:N=[]}of _)r=F,N.forEach(D=>{const j=M(D,"");g(j,"")});return y(r)},"");return i?t?[`${t} { ${i} }`,...n].join(`
6
6
  `):i:n.join(`
7
7
  `)},ae=(e,t=[])=>{if(!e)return"";const s=[],n={};if(Object.entries(e).forEach(([i,a])=>{if(typeof a=="object"){if(!a)return;const c=i.trim(),d=ae(a,[...t,c]);s.push(d)}else n[i]=a}),Object.keys(n).length){const i=t.map(V).join("-"),a=M(n,`.${i}`);s.push(a)}return s.join(`
8
- `)},Ne=e=>e?Object.entries(e).reduce((t,[s,n])=>(typeof n=="object"&&(t[s]=le(n).map(i=>`"${i}"`).join(" | ")),t),{}):{},le=(e,t="",s=new Set)=>e?(Object.entries(e).forEach(([n,i])=>{const a=t?`${t}.${n}`:n;return typeof i=="object"?le(i,a,s):s.add(t)}),[...s]):[],fe=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:fe(l.join(e,".."))},xe=async e=>{const t=fe(e);return await ee.readFile(t,"utf-8").then(JSON.parse).catch(()=>{})},ke=async e=>{const t=await xe(e);if(t)return t.type};let z;const ue=async e=>{if(z)return z;const t=await ke(e);return t==="module"?z="esm":(t==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:Y&&Y.tagName.toUpperCase()==="SCRIPT"&&Y.src||new URL("index-LHz82WN_.cjs",document.baseURI).href).endsWith(".cjs"))&&(z="cjs"),z||"esm"},v=q.createLogger({level:"debug",format:q.format.combine(q.format.colorize(),q.format.cli()),transports:[new q.transports.Console({})]});function pe(e){return e?typeof e!="string"?pe(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 Pe={"*, *::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"}},A=(...e)=>e.flat().reduce((t,s)=>s!=null&&s._current?{...t,...s._current}:{...t,...s},{}),O={externalModules:[],rcFile:void 0,destDir:void 0},de=e=>{if(O.externalModules.length>0)return O.externalModules;const s=u.readFileSync(e,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!s)return[];const n=s[1].split(",").map(i=>i.replace(/['"`]/g,"").trim());return O.externalModules=n,n},J=async e=>{if(O.destDir)return O.destDir;const t=await te(e),s=l.join(e,(t==null?void 0:t.saltygenDir)||"saltygen");return O.destDir=s,s},ye=["salty","css","styles","styled"],ge=(e=[])=>new RegExp(`\\.(${[...ye,...e].join("|")})\\.`),G=(e,t=[])=>ge(t).test(e),me=async e=>{if(O.rcFile)return O.rcFile;if(e==="/")throw new Error("Could not find .saltyrc.json file");const t=l.join(e,".saltyrc.json"),s=await ee.readFile(t,"utf-8").then(JSON.parse).catch(()=>{});return s?(O.rcFile=s,s):me(l.join(e,".."))},te=async e=>{var n,i;const t=await me(e),s=(n=t.projects)==null?void 0:n.find(a=>e.endsWith(a.dir||""));return s||((i=t.projects)==null?void 0:i.find(a=>a.dir===t.defaultProject))},De=async e=>{const t=await te(e),s=await J(e),n=l.join(e,(t==null?void 0:t.configDir)||"","salty.config.ts"),i=l.join(s,"salty.config.js"),a=await ue(e),c=de(n);await ie.build({entryPoints:[n],minify:!0,treeShaking:!0,bundle:!0,outfile:i,format:a,external:c});const d=Date.now(),{config:r}=await import(`${i}?t=${d}`);return r},_e=async(e,t)=>{var Z,B;const s=await De(e),n={...s},i=new Set,a=(C,k=[])=>C?Object.entries(C).flatMap(([R,T])=>{if(!T)return;if(typeof T=="object")return a(T,[...k,R]);const K=pe(R),U=V(R),Q=[...k,K].join(".");i.add(`"${Q}"`);const X=[...k.map(V),U].join("-"),{result:Se}=ce(T);return`--${X}: ${Se};`}):[],c=C=>C?Object.entries(C).flatMap(([k,R])=>{const T=a(R);return k==="base"?T.join(""):`${k} { ${T.join("")} }`}):[],d=C=>C?Object.entries(C).flatMap(([k,R])=>Object.entries(R).flatMap(([T,K])=>{const U=a(K,[k]),Q=`.${k}-${T}, [data-${k}="${T}"]`,X=U.join("");return`${Q} { ${X} }`})):[],r=C=>({...C,responsive:void 0,conditional:void 0}),o=C=>t.variables.map(k=>C==="static"?r(k._current):k._current[C]),m=a(A(r(s.variables),o("static"))),y=c(A((Z=s.variables)==null?void 0:Z.responsive,o("responsive"))),g=d(A((B=s.variables)==null?void 0:B.conditional,o("conditional"))),$=await J(e),P=l.join($,"css/_variables.css"),_=`:root { ${m.join("")} ${y.join("")} } ${g.join("")}`;u.writeFileSync(P,_);const F=l.join($,"css/_global.css"),N=A(s.global,t.globalStyles),D=M(N,"");u.writeFileSync(F,`@layer global { ${D} }`);const j=l.join($,"css/_reset.css"),f=s.reset==="none"?{}:typeof s.reset=="object"?s.reset:Pe,h=M(f,"");u.writeFileSync(j,`@layer reset { ${h} }`);const b=l.join($,"css/_templates.css"),p=A(s.templates,t.templates),x=ae(p),w=Ne(p);u.writeFileSync(b,x),n.templates=p;const S=l.join($,"types/css-tokens.d.ts"),I=`
8
+ `)},Ne=e=>e?Object.entries(e).reduce((t,[s,n])=>(typeof n=="object"&&(t[s]=le(n).map(i=>`"${i}"`).join(" | ")),t),{}):{},le=(e,t="",s=new Set)=>e?(Object.entries(e).forEach(([n,i])=>{const a=t?`${t}.${n}`:n;return typeof i=="object"?le(i,a,s):s.add(t)}),[...s]):[],fe=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:fe(l.join(e,".."))},xe=async e=>{const t=fe(e);return await ee.readFile(t,"utf-8").then(JSON.parse).catch(()=>{})},ke=async e=>{const t=await xe(e);if(t)return t.type};let z;const ue=async e=>{if(z)return z;const t=await ke(e);return t==="module"?z="esm":(t==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:Y&&Y.tagName.toUpperCase()==="SCRIPT"&&Y.src||new URL("index-BIUzTm7X.cjs",document.baseURI).href).endsWith(".cjs"))&&(z="cjs"),z||"esm"},v=q.createLogger({level:"debug",format:q.format.combine(q.format.colorize(),q.format.cli()),transports:[new q.transports.Console({})]});function pe(e){return e?typeof e!="string"?pe(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 Pe={"*, *::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"}},A=(...e)=>e.flat().reduce((t,s)=>s!=null&&s._current?{...t,...s._current}:{...t,...s},{}),O={externalModules:[],rcFile:void 0,destDir:void 0},de=e=>{if(O.externalModules.length>0)return O.externalModules;const s=u.readFileSync(e,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!s)return[];const n=s[1].split(",").map(i=>i.replace(/['"`]/g,"").trim());return O.externalModules=n,n},J=async e=>{if(O.destDir)return O.destDir;const t=await te(e),s=l.join(e,(t==null?void 0:t.saltygenDir)||"saltygen");return O.destDir=s,s},ye=["salty","css","styles","styled"],ge=(e=[])=>new RegExp(`\\.(${[...ye,...e].join("|")})\\.`),G=(e,t=[])=>ge(t).test(e),me=async e=>{if(O.rcFile)return O.rcFile;if(e==="/")throw new Error("Could not find .saltyrc.json file");const t=l.join(e,".saltyrc.json"),s=await ee.readFile(t,"utf-8").then(JSON.parse).catch(()=>{});return s?(O.rcFile=s,s):me(l.join(e,".."))},te=async e=>{var n,i;const t=await me(e),s=(n=t.projects)==null?void 0:n.find(a=>e.endsWith(a.dir||""));return s||((i=t.projects)==null?void 0:i.find(a=>a.dir===t.defaultProject))},De=async e=>{const t=await te(e),s=await J(e),n=l.join(e,(t==null?void 0:t.configDir)||"","salty.config.ts"),i=l.join(s,"salty.config.js"),a=await ue(e),c=de(n);await ie.build({entryPoints:[n],minify:!0,treeShaking:!0,bundle:!0,outfile:i,format:a,external:c});const d=Date.now(),{config:r}=await import(`${i}?t=${d}`);return r},_e=async(e,t)=>{var Z,B;const s=await De(e),n={...s},i=new Set,a=(C,k=[])=>C?Object.entries(C).flatMap(([R,T])=>{if(!T)return;if(typeof T=="object")return a(T,[...k,R]);const K=pe(R),U=V(R),Q=[...k,K].join(".");i.add(`"${Q}"`);const X=[...k.map(V),U].join("-"),{result:Se}=ce(T);return`--${X}: ${Se};`}):[],c=C=>C?Object.entries(C).flatMap(([k,R])=>{const T=a(R);return k==="base"?T.join(""):`${k} { ${T.join("")} }`}):[],d=C=>C?Object.entries(C).flatMap(([k,R])=>Object.entries(R).flatMap(([T,K])=>{const U=a(K,[k]),Q=`.${k}-${T}, [data-${k}="${T}"]`,X=U.join("");return`${Q} { ${X} }`})):[],r=C=>({...C,responsive:void 0,conditional:void 0}),o=C=>t.variables.map(k=>C==="static"?r(k._current):k._current[C]),m=a(A(r(s.variables),o("static"))),g=c(A((Z=s.variables)==null?void 0:Z.responsive,o("responsive"))),y=d(A((B=s.variables)==null?void 0:B.conditional,o("conditional"))),$=await J(e),P=l.join($,"css/_variables.css"),_=`:root { ${m.join("")} ${g.join("")} } ${y.join("")}`;u.writeFileSync(P,_);const F=l.join($,"css/_global.css"),N=A(s.global,t.globalStyles),D=M(N,"");u.writeFileSync(F,`@layer global { ${D} }`);const j=l.join($,"css/_reset.css"),f=s.reset==="none"?{}:typeof s.reset=="object"?s.reset:Pe,h=M(f,"");u.writeFileSync(j,`@layer reset { ${h} }`);const b=l.join($,"css/_templates.css"),p=A(s.templates,t.templates),x=ae(p),w=Ne(p);u.writeFileSync(b,x),n.templates=p;const S=l.join($,"types/css-tokens.d.ts"),I=`
9
9
  // Variable types
10
10
  type VariableTokens = ${[...i].join("|")};
11
11
  type PropertyValueToken = \`{\${VariableTokens}}\`;
@@ -15,23 +15,23 @@
15
15
  ${Object.entries(w).map(([C,k])=>`${C}?: ${k}`).join(`
16
16
  `)}
17
17
  }
18
- `;u.writeFileSync(S,I);const L=l.join($,"cache/config-cache.json");u.writeFileSync(L,JSON.stringify(n,null,2))},re=e=>e.replace(/styled\(([^"'`{,]+),/g,(t,s)=>{if(/^['"`]/.test(s))return t;const i=new RegExp(`import[^;]*${s}[,\\s{][^;]*from\\s?([^{};]+);`);if(!i.test(e))return t;const c=i.exec(e);if(c){const d=c.at(1);if(ye.some(o=>d==null?void 0:d.includes(o)))return t}return"styled('div',"}),se=async(e,t,s)=>{const n=W(t),i=l.join(s,"./temp");u.existsSync(i)||u.mkdirSync(i);const a=l.parse(t);let c=u.readFileSync(t,"utf8");c=re(c);const d=l.join(s,"js",n+".js"),r=await te(e),o=l.join(e,(r==null?void 0:r.configDir)||"","salty.config.ts"),m=de(o),y=await ue(e);await ie.build({stdin:{contents:c,sourcefile:a.base,resolveDir:a.dir,loader:"tsx"},minify:!1,treeShaking:!0,bundle:!0,outfile:d,format:y,target:["node20"],keepNames:!0,external:m,packages:"external",plugins:[{name:"test",setup:P=>{P.onLoad({filter:/.*\.css|salty|styles|styled\.ts/},_=>{const F=u.readFileSync(_.path,"utf8");return{contents:re(F),loader:"ts"}})}}]});const g=Date.now();return await import(`${d}?t=${g}`)},Te=async e=>{const t=await J(e),s=l.join(t,"cache/config-cache.json"),n=u.readFileSync(s,"utf8");if(!n)throw new Error("Could not find config cache file");return JSON.parse(n)},ne=async e=>{const t=await Te(e),s=await J(e),n=l.join(s,"salty.config.js"),i=Date.now(),{config:a}=await import(`${n}?t=${i}`);return A(a,t)},he=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},Ee=async(e,t=he(),s=!0)=>{try{const n=Date.now();t?v.info("Generating CSS in production mode! 🔥"):v.info("Generating CSS in development mode! 🚀");const i=[],a=[],c=await J(e),d=l.join(c,"index.css");s&&(()=>{u.existsSync(c)&&je.execSync("rm -rf "+c),u.mkdirSync(c,{recursive:!0}),u.mkdirSync(l.join(c,"css")),u.mkdirSync(l.join(c,"types")),u.mkdirSync(l.join(c,"js")),u.mkdirSync(l.join(c,"cache"))})();const o={keyframes:[],mediaQueries:[],globalStyles:[],variables:[],templates:[],components:[],classNames:[]};async function m(f){const h=["node_modules","saltygen"],b=u.statSync(f);if(b.isDirectory()){const p=u.readdirSync(f);if(h.some(w=>f.includes(w)))return;await Promise.all(p.map(w=>m(l.join(f,w))))}else if(b.isFile()&&G(f)){const x=await se(e,f,c);Object.entries(x).forEach(([w,S])=>{S.isKeyframes?o.keyframes.push({value:S,src:f,name:w}):S.isMedia?o.mediaQueries.push(S):S.isGlobalDefine?o.globalStyles.push(S):S.isDefineVariables?o.variables.push(S):S.isDefineTemplates?o.templates.push(S):S.isClassName?o.classNames.push({...S,src:f,name:w}):S.generator&&o.components.push({...S,src:f,name:w})})}}await m(e),await _e(e,o);const y=await ne(e);for(const f of o.keyframes){const{value:h}=f,b=`a_${h.animationName}.css`,p=`css/${b}`,x=l.join(c,p);i.push(b),u.writeFileSync(x,h.css)}const g={};for(const f of o.components){const{src:h,name:b}=f,p=f.generator._withBuildContext({callerName:b,isProduction:t,config:y});a[p.priority]||(a[p.priority]=[]),a[p.priority].push(p.cssFileName);const x=`css/${p.cssFileName}`,w=l.join(c,x);u.writeFileSync(w,p.css),y.importStrategy==="component"&&(g[h]?g[h].push(p.cssFileName):g[h]=[p.cssFileName])}for(const f of o.classNames){const{src:h,name:b}=f,p=f.generator._withBuildContext({callerName:b,isProduction:t,config:y});a[0].push(p.cssFileName);const x=`css/${p.cssFileName}`,w=l.join(c,x);u.writeFileSync(w,p.css),y.importStrategy==="component"&&(g[h]?g[h].push(p.cssFileName):g[h]=[p.cssFileName])}y.importStrategy==="component"&&Object.entries(g).forEach(([f,h])=>{const b=h.map(H=>`@import url('./${H}');`).join(`
18
+ `;u.writeFileSync(S,I);const L=l.join($,"cache/config-cache.json");u.writeFileSync(L,JSON.stringify(n,null,2))},re=e=>e.replace(/styled\(([^"'`{,]+),/g,(t,s)=>{if(/^['"`]/.test(s))return t;const i=new RegExp(`import[^;]*${s}[,\\s{][^;]*from\\s?([^{};]+);`);if(!i.test(e))return t;const c=i.exec(e);if(c){const d=c.at(1);if(ye.some(o=>d==null?void 0:d.includes(o)))return t}return"styled('div',"}),se=async(e,t,s)=>{const n=W(t),i=l.join(s,"./temp");u.existsSync(i)||u.mkdirSync(i);const a=l.parse(t);let c=u.readFileSync(t,"utf8");c=re(c);const d=l.join(s,"js",n+".js"),r=await te(e),o=l.join(e,(r==null?void 0:r.configDir)||"","salty.config.ts"),m=de(o),g=await ue(e);await ie.build({stdin:{contents:c,sourcefile:a.base,resolveDir:a.dir,loader:"tsx"},minify:!1,treeShaking:!0,bundle:!0,outfile:d,format:g,target:["node20"],keepNames:!0,external:m,packages:"external",plugins:[{name:"test",setup:P=>{P.onLoad({filter:/.*\.css|salty|styles|styled\.ts/},_=>{const F=u.readFileSync(_.path,"utf8");return{contents:re(F),loader:"ts"}})}}]});const y=Date.now();return await import(`${d}?t=${y}`)},Te=async e=>{const t=await J(e),s=l.join(t,"cache/config-cache.json"),n=u.readFileSync(s,"utf8");if(!n)throw new Error("Could not find config cache file");return JSON.parse(n)},ne=async e=>{const t=await Te(e),s=await J(e),n=l.join(s,"salty.config.js"),i=Date.now(),{config:a}=await import(`${n}?t=${i}`);return A(a,t)},he=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},Ee=async(e,t=he(),s=!0)=>{try{const n=Date.now();t?v.info("Generating CSS in production mode! 🔥"):v.info("Generating CSS in development mode! 🚀");const i=[],a=[],c=await J(e),d=l.join(c,"index.css");s&&(()=>{u.existsSync(c)&&je.execSync("rm -rf "+c),u.mkdirSync(c,{recursive:!0}),u.mkdirSync(l.join(c,"css")),u.mkdirSync(l.join(c,"types")),u.mkdirSync(l.join(c,"js")),u.mkdirSync(l.join(c,"cache"))})();const o={keyframes:[],mediaQueries:[],globalStyles:[],variables:[],templates:[],components:[],classNames:[]};async function m(f){const h=["node_modules","saltygen"],b=u.statSync(f);if(b.isDirectory()){const p=u.readdirSync(f);if(h.some(w=>f.includes(w)))return;await Promise.all(p.map(w=>m(l.join(f,w))))}else if(b.isFile()&&G(f)){const x=await se(e,f,c);Object.entries(x).forEach(([w,S])=>{S.isKeyframes?o.keyframes.push({value:S,src:f,name:w}):S.isMedia?o.mediaQueries.push(S):S.isGlobalDefine?o.globalStyles.push(S):S.isDefineVariables?o.variables.push(S):S.isDefineTemplates?o.templates.push(S):S.isClassName?o.classNames.push({...S,src:f,name:w}):S.generator&&o.components.push({...S,src:f,name:w})})}}await m(e),await _e(e,o);const g=await ne(e);for(const f of o.keyframes){const{value:h}=f,b=`a_${h.animationName}.css`,p=`css/${b}`,x=l.join(c,p);i.push(b),u.writeFileSync(x,h.css)}const y={};for(const f of o.components){const{src:h,name:b}=f,p=f.generator._withBuildContext({callerName:b,isProduction:t,config:g});a[p.priority]||(a[p.priority]=[]),a[p.priority].push(p.cssFileName);const x=`css/${p.cssFileName}`,w=l.join(c,x);u.writeFileSync(w,p.css),g.importStrategy==="component"&&(y[h]?y[h].push(p.cssFileName):y[h]=[p.cssFileName])}for(const f of o.classNames){const{src:h,name:b}=f,p=f.generator._withBuildContext({callerName:b,isProduction:t,config:g});a[0].push(p.cssFileName);const x=`css/${p.cssFileName}`,w=l.join(c,x);u.writeFileSync(w,p.css),g.importStrategy==="component"&&(y[h]?y[h].push(p.cssFileName):y[h]=[p.cssFileName])}g.importStrategy==="component"&&Object.entries(y).forEach(([f,h])=>{const b=h.map(H=>`@import url('./${H}');`).join(`
19
19
  `),p=W(f,6),x=l.parse(f),w=V(x.name),S=l.join(c,`css/f_${w}-${p}.css`);u.writeFileSync(S,b)});const $=i.map(f=>`@import url('./css/${f}');`).join(`
20
20
  `);let N=`@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
21
21
 
22
22
  ${["_variables.css","_reset.css","_global.css","_templates.css"].filter(f=>{try{return u.readFileSync(l.join(c,"css",f),"utf8").length>0}catch{return!1}}).map(f=>`@import url('./css/${f}');`).join(`
23
23
  `)}
24
- ${$}`;if(y.importStrategy!=="component"){const f=a.reduce((h,b,p)=>{const x=b.reduce((I,L)=>{var k;const Z=l.join(c,"css",L),B=u.readFileSync(Z,"utf8"),C=((k=/.*-([^-]+)-\d+.css/.exec(L))==null?void 0:k.at(1))||W(Z,6);return I.includes(C)?I:`${I}
24
+ ${$}`;if(g.importStrategy!=="component"){const f=a.reduce((h,b,p)=>{const x=b.reduce((I,L)=>{var k;const Z=l.join(c,"css",L),B=u.readFileSync(Z,"utf8"),C=((k=/.*-([^-]+)-\d+.css/.exec(L))==null?void 0:k.at(1))||W(Z,6);return I.includes(C)?I:`${I}
25
25
  /*start:${C}*/
26
26
  ${B}
27
27
  /*end:${C}*/
28
28
  `},""),w=`l_${p}.css`,S=l.join(c,"css",w),H=`@layer l${p} { ${x}
29
29
  }`;return u.writeFileSync(S,H),`${h}
30
- @import url('./css/${w}');`},"");N+=f}u.writeFileSync(d,N);const j=Date.now()-n,E=j<200?"🔥":j<500?"🚀":j<1e3?"🎉":j<2e3?"🚗":j<5e3?"🤔":"🥴";v.info(`Generated CSS in ${j}ms! ${E}`)}catch(n){console.error(n)}},Oe=async(e,t)=>{try{const s=await J(e);if(G(t)){const i=[],a=await ne(e),c=await se(e,t,s);if(Object.entries(c).forEach(([d,r])=>{if(r.isKeyframes&&r.css){const $=`css/${`a_${r.animationName}.css`}`,P=l.join(s,$);u.writeFileSync(P,r.css);return}if(r.isClassName){const g=r.factory._withBuildContext({name:d});i[0].push(g.cssFileName);const $=`css/${g.cssFileName}`,P=l.join(s,$);u.writeFileSync(P,g.css)}if(!r.generator)return;const o=r.generator._withBuildContext({name:d,config:a}),m=`css/${o.cssFileName}`,y=l.join(s,m);u.writeFileSync(y,o.css),i[o.priority]||(i[o.priority]=[]),i[o.priority].push(o.cssFileName)}),a.importStrategy!=="component")i.forEach((d,r)=>{const o=`l_${r}.css`,m=l.join(s,"css",o);let y=u.readFileSync(m,"utf8");d.forEach(g=>{var F;const $=l.join(s,"css",g),P=((F=/.*-([^-]+)-\d+.css/.exec(g))==null?void 0:F.at(1))||W($,6);if(!y.includes(P)){const N=u.readFileSync($,"utf8"),D=`/*start:${P}*/
30
+ @import url('./css/${w}');`},"");N+=f}u.writeFileSync(d,N);const j=Date.now()-n,E=j<200?"🔥":j<500?"🚀":j<1e3?"🎉":j<2e3?"🚗":j<5e3?"🤔":"🥴";v.info(`Generated CSS in ${j}ms! ${E}`)}catch(n){console.error(n)}},Oe=async(e,t)=>{try{const s=await J(e);if(G(t)){const i=[],a=await ne(e),c=await se(e,t,s);if(Object.entries(c).forEach(([d,r])=>{if(r.isKeyframes&&r.css){const $=`css/${`a_${r.animationName}.css`}`,P=l.join(s,$);u.writeFileSync(P,r.css);return}if(r.isClassName){const y=r.factory._withBuildContext({name:d});i[0].push(y.cssFileName);const $=`css/${y.cssFileName}`,P=l.join(s,$);u.writeFileSync(P,y.css)}if(!r.generator)return;const o=r.generator._withBuildContext({name:d,config:a}),m=`css/${o.cssFileName}`,g=l.join(s,m);u.writeFileSync(g,o.css),i[o.priority]||(i[o.priority]=[]),i[o.priority].push(o.cssFileName)}),a.importStrategy!=="component")i.forEach((d,r)=>{const o=`l_${r}.css`,m=l.join(s,"css",o);let g=u.readFileSync(m,"utf8");d.forEach(y=>{var F;const $=l.join(s,"css",y),P=((F=/.*-([^-]+)-\d+.css/.exec(y))==null?void 0:F.at(1))||W($,6);if(!g.includes(P)){const N=u.readFileSync($,"utf8"),D=`/*start:${P}*/
31
31
  ${N}
32
32
  /*end:${P}*/
33
- `;y=`${y.replace(/\}$/,"")}
33
+ `;g=`${g.replace(/\}$/,"")}
34
34
  ${D}
35
- }`}}),u.writeFileSync(m,y)});else{const d=i.flat().map(g=>`@import url('./${g}');`).join(`
36
- `),r=W(t,6),o=l.parse(t),m=V(o.name),y=l.join(s,`css/f_${m}-${r}.css`);u.writeFileSync(y,d)}}}catch(s){console.error(s)}},Ve=async(e,t,s=he())=>{try{const n=await J(e);if(G(t)){const a=u.readFileSync(t,"utf8");a.replace(/^(?!export\s)const\s.*/gm,m=>`export ${m}`)!==a&&await ee.writeFile(t,a);const d=await ne(e),r=await se(e,t,n);let o=a;if(Object.entries(r).forEach(([m,y])=>{var w;if(y.isKeyframes||!y.generator)return;const g=y.generator._withBuildContext({name:m,config:d,prod:s}),$=new RegExp(`\\s${m}[=\\s]+[^()]+styled\\(([^,]+),`,"g").exec(a);if(!$)return console.error("Could not find the original declaration");const P=(w=$.at(1))==null?void 0:w.trim(),_=new RegExp(`\\s${m}[=\\s]+styled\\(`,"g").exec(o);if(!_)return console.error("Could not find the original declaration");const{index:F}=_;let N=!1;const D=setTimeout(()=>N=!0,5e3);let j=0,E=!1,f=0;for(;!E&&!N;){const S=o[F+j];S==="("&&f++,S===")"&&f--,f===0&&S===")"&&(E=!0),j>o.length&&(N=!0),j++}if(!N)clearTimeout(D);else throw new Error("Failed to find the end of the styled call and timed out");const h=F+j,b=o.slice(F,h),p=o,x=` ${m} = styled(${P}, "${g.classNames}", ${JSON.stringify(g.clientProps)});`;o=o.replace(b,x),p===o&&console.error("Minimize file failed to change content",{name:m,tagName:P})}),d.importStrategy==="component"){const m=W(t,6),y=l.parse(t);o=`import '../../saltygen/css/${`f_${V(y.name)}-${m}.css`}';
35
+ }`}}),u.writeFileSync(m,g)});else{const d=i.flat().map(y=>`@import url('./${y}');`).join(`
36
+ `),r=W(t,6),o=l.parse(t),m=V(o.name),g=l.join(s,`css/f_${m}-${r}.css`);u.writeFileSync(g,d)}}}catch(s){console.error(s)}},Ve=async(e,t,s=he())=>{try{const n=await J(e);if(G(t)){const a=u.readFileSync(t,"utf8");a.replace(/^(?!export\s)const\s.*/gm,m=>`export ${m}`)!==a&&await ee.writeFile(t,a);const d=await ne(e),r=await se(e,t,n);let o=a;if(Object.entries(r).forEach(([m,g])=>{var w;if(g.isKeyframes||!g.generator)return;const y=g.generator._withBuildContext({name:m,config:d,prod:s}),$=new RegExp(`\\s${m}[=\\s]+[^()]+styled\\(([^,]+),`,"g").exec(a);if(!$)return console.error("Could not find the original declaration");const P=(w=$.at(1))==null?void 0:w.trim(),_=new RegExp(`\\s${m}[=\\s]+styled\\(`,"g").exec(o);if(!_)return console.error("Could not find the original declaration");const{index:F}=_;let N=!1;const D=setTimeout(()=>N=!0,5e3);let j=0,E=!1,f=0;for(;!E&&!N;){const S=o[F+j];S==="("&&f++,S===")"&&f--,f===0&&S===")"&&(E=!0),j>o.length&&(N=!0),j++}if(!N)clearTimeout(D);else throw new Error("Failed to find the end of the styled call and timed out");const h=F+j,b=o.slice(F,h),p=o,x=` ${m} = styled(${P}, "${y.classNames}", ${JSON.stringify(y.clientProps)});`;o=o.replace(b,x),p===o&&console.error("Minimize file failed to change content",{name:m,tagName:P})}),d.importStrategy==="component"){const m=W(t,6),g=l.parse(t);o=`import '../../saltygen/css/${`f_${V(g.name)}-${m}.css`}';
37
37
  ${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)}};exports.generateCss=Ee;exports.generateFile=Oe;exports.isSaltyFile=G;exports.minimizeFile=Ve;exports.saltyFileRegExp=ge;
@@ -1,7 +1,7 @@
1
1
  import * as at from "esbuild";
2
2
  import { execSync as wt } from "child_process";
3
3
  import { join as f, parse as q } from "path";
4
- import { existsSync as et, writeFileSync as k, readFileSync as V, mkdirSync as z, statSync as jt, readdirSync as Ct } from "fs";
4
+ import { existsSync as et, writeFileSync as k, readFileSync as V, mkdirSync as z, statSync as Ct, readdirSync as jt } from "fs";
5
5
  import { readFile as lt, writeFile as Ft } from "fs/promises";
6
6
  import { createLogger as Nt, format as v, transports as xt } from "winston";
7
7
  const it = (t) => String.fromCharCode(t + (t > 25 ? 39 : 97)), kt = (t, e) => {
@@ -26,16 +26,18 @@ const Dt = (t, e) => {
26
26
  return Object.values(e).forEach((o) => {
27
27
  const { pattern: i, transform: a } = o;
28
28
  t = t.replace(i, (c) => {
29
- const { value: p, css: r } = a(c);
30
- return r && s.push(r), p;
29
+ const { value: u, css: r } = a(c);
30
+ return r && s.push(r), u;
31
31
  });
32
32
  }), { result: t, additionalCss: s };
33
33
  }, ft = (t) => typeof t != "string" ? { result: t } : /\{[^{}]+\}/g.test(t) ? { result: t.replace(/\{([^{}]+)\}/g, (...o) => `var(--${M(o[1].replaceAll(".", "-"))})`) } : { result: t }, J = (t, e, s) => {
34
34
  if (!t) return "";
35
- const o = [], i = Object.entries(t).reduce((c, [p, r]) => {
36
- const n = p.trim();
35
+ const o = [], i = Object.entries(t).reduce((c, [u, r]) => {
36
+ const n = u.trim(), m = n.startsWith("-") ? n : M(n), g = (C, F = ";") => c = `${c}${C}${F}`, d = (C) => g(`${m}:${C}`);
37
37
  if (typeof r == "function" && (r = r()), typeof r == "object") {
38
38
  if (!r) return c;
39
+ if (r.isColor)
40
+ return d(r.toString()), c;
39
41
  if (n === "variants")
40
42
  return Object.entries(r).forEach(([D, b]) => {
41
43
  b && Object.entries(b).forEach(([_, l]) => {
@@ -48,7 +50,7 @@ const Dt = (t, e) => {
48
50
  return c;
49
51
  if (n === "compoundVariants")
50
52
  return r.forEach((D) => {
51
- const { css: b, ..._ } = D, l = Object.entries(_).reduce((S, [u, N]) => `${S}.${u}-${N}`, e), h = J(b, l);
53
+ const { css: b, ..._ } = D, l = Object.entries(_).reduce((S, [p, N]) => `${S}.${p}-${N}`, e), h = J(b, l);
52
54
  o.push(h);
53
55
  }), c;
54
56
  if (n.startsWith("@")) {
@@ -59,35 +61,34 @@ const Dt = (t, e) => {
59
61
  }`;
60
62
  return o.push(b), c;
61
63
  }
62
- const j = p.includes("&") ? n.replace("&", e) : n.startsWith(":") ? `${e}${n}` : `${e} ${n}`, F = J(r, j);
64
+ const C = u.includes("&") ? n.replace("&", e) : n.startsWith(":") ? `${e}${n}` : `${e} ${n}`, F = J(r, C);
63
65
  return o.push(F), c;
64
66
  }
65
- const g = n.startsWith("-") ? n : M(n), d = (j, F = ";") => c = `${c}${j}${F}`, m = (j) => d(`${g}:${j}`);
66
- if (typeof r == "number") return m(r);
67
+ if (typeof r == "number") return d(r);
67
68
  if (typeof r != "string")
68
69
  if ("toString" in r) r = r.toString();
69
70
  else return c;
70
71
  const { modifiers: $ } = {}, E = function* () {
71
72
  yield ft(r), yield Dt(r, $);
72
73
  }();
73
- for (const { result: j, additionalCss: F = [] } of E)
74
- r = j, F.forEach((D) => {
74
+ for (const { result: C, additionalCss: F = [] } of E)
75
+ r = C, F.forEach((D) => {
75
76
  const b = J(D, "");
76
- d(b, "");
77
+ g(b, "");
77
78
  });
78
- return m(r);
79
+ return d(r);
79
80
  }, "");
80
81
  return i ? e ? [`${e} { ${i} }`, ...o].join(`
81
82
  `) : i : o.join(`
82
83
  `);
83
- }, ut = (t, e = []) => {
84
+ }, pt = (t, e = []) => {
84
85
  if (!t) return "";
85
86
  const s = [], o = {};
86
87
  if (Object.entries(t).forEach(([i, a]) => {
87
88
  if (typeof a == "object") {
88
89
  if (!a) return;
89
- const c = i.trim(), p = ut(a, [...e, c]);
90
- s.push(p);
90
+ const c = i.trim(), u = pt(a, [...e, c]);
91
+ s.push(u);
91
92
  } else
92
93
  o[i] = a;
93
94
  }), Object.keys(o).length) {
@@ -96,9 +97,9 @@ const Dt = (t, e) => {
96
97
  }
97
98
  return s.join(`
98
99
  `);
99
- }, Et = (t) => t ? Object.entries(t).reduce((e, [s, o]) => (typeof o == "object" && (e[s] = pt(o).map((i) => `"${i}"`).join(" | ")), e), {}) : {}, pt = (t, e = "", s = /* @__PURE__ */ new Set()) => t ? (Object.entries(t).forEach(([o, i]) => {
100
+ }, Et = (t) => t ? Object.entries(t).reduce((e, [s, o]) => (typeof o == "object" && (e[s] = ut(o).map((i) => `"${i}"`).join(" | ")), e), {}) : {}, ut = (t, e = "", s = /* @__PURE__ */ new Set()) => t ? (Object.entries(t).forEach(([o, i]) => {
100
101
  const a = e ? `${e}.${o}` : o;
101
- return typeof i == "object" ? pt(i, a, s) : s.add(e);
102
+ return typeof i == "object" ? ut(i, a, s) : s.add(e);
102
103
  }), [...s]) : [], dt = (t) => {
103
104
  if (!t || t === "/") throw new Error("Could not find package.json file");
104
105
  const e = f(t, "package.json");
@@ -113,7 +114,7 @@ const Dt = (t, e) => {
113
114
  return e.type;
114
115
  };
115
116
  let W;
116
- const mt = async (t) => {
117
+ const gt = async (t) => {
117
118
  if (W) return W;
118
119
  const e = await _t(t);
119
120
  return e === "module" ? W = "esm" : (e === "commonjs" || import.meta.url.endsWith(".cjs")) && (W = "cjs"), W || "esm";
@@ -122,8 +123,8 @@ const mt = async (t) => {
122
123
  format: v.combine(v.colorize(), v.cli()),
123
124
  transports: [new xt.Console({})]
124
125
  });
125
- function gt(t) {
126
- return t ? typeof t != "string" ? gt(String(t)) : t.replace(/[\s-]/g, ".").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g, (e, s) => (s > 0 ? "." : "") + e.toLowerCase()) : "";
126
+ function mt(t) {
127
+ return t ? typeof t != "string" ? mt(String(t)) : t.replace(/[\s-]/g, ".").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g, (e, s) => (s > 0 ? "." : "") + e.toLowerCase()) : "";
127
128
  }
128
129
  const Ot = {
129
130
  /** Set box model to border-box */
@@ -196,7 +197,7 @@ const Ot = {
196
197
  const e = await $t(t), s = (o = e.projects) == null ? void 0 : o.find((a) => t.endsWith(a.dir || ""));
197
198
  return s || ((i = e.projects) == null ? void 0 : i.find((a) => a.dir === e.defaultProject));
198
199
  }, Mt = async (t) => {
199
- const e = await nt(t), s = await A(t), o = f(t, (e == null ? void 0 : e.configDir) || "", "salty.config.ts"), i = f(s, "salty.config.js"), a = await mt(t), c = ht(o);
200
+ const e = await nt(t), s = await A(t), o = f(t, (e == null ? void 0 : e.configDir) || "", "salty.config.ts"), i = f(s, "salty.config.js"), a = await gt(t), c = ht(o);
200
201
  await at.build({
201
202
  entryPoints: [o],
202
203
  minify: !0,
@@ -206,31 +207,31 @@ const Ot = {
206
207
  format: a,
207
208
  external: c
208
209
  });
209
- const p = Date.now(), { config: r } = await import(`${i}?t=${p}`);
210
+ const u = Date.now(), { config: r } = await import(`${i}?t=${u}`);
210
211
  return r;
211
212
  }, Jt = async (t, e) => {
212
213
  var B, K;
213
- const s = await Mt(t), o = { ...s }, i = /* @__PURE__ */ new Set(), a = (C, x = []) => C ? Object.entries(C).flatMap(([R, T]) => {
214
+ const s = await Mt(t), o = { ...s }, i = /* @__PURE__ */ new Set(), a = (j, x = []) => j ? Object.entries(j).flatMap(([R, T]) => {
214
215
  if (!T) return;
215
216
  if (typeof T == "object") return a(T, [...x, R]);
216
- const Q = gt(R), U = M(R), X = [...x, Q].join(".");
217
+ const Q = mt(R), U = M(R), X = [...x, Q].join(".");
217
218
  i.add(`"${X}"`);
218
219
  const Y = [...x.map(M), U].join("-"), { result: St } = ft(T);
219
220
  return `--${Y}: ${St};`;
220
- }) : [], c = (C) => C ? Object.entries(C).flatMap(([x, R]) => {
221
+ }) : [], c = (j) => j ? Object.entries(j).flatMap(([x, R]) => {
221
222
  const T = a(R);
222
223
  return x === "base" ? T.join("") : `${x} { ${T.join("")} }`;
223
- }) : [], p = (C) => C ? Object.entries(C).flatMap(([x, R]) => Object.entries(R).flatMap(([T, Q]) => {
224
+ }) : [], u = (j) => j ? Object.entries(j).flatMap(([x, R]) => Object.entries(R).flatMap(([T, Q]) => {
224
225
  const U = a(Q, [x]), X = `.${x}-${T}, [data-${x}="${T}"]`, Y = U.join("");
225
226
  return `${X} { ${Y} }`;
226
- })) : [], r = (C) => ({ ...C, responsive: void 0, conditional: void 0 }), n = (C) => e.variables.map((x) => C === "static" ? r(x._current) : x._current[C]), g = a(Z(r(s.variables), n("static"))), d = c(Z((B = s.variables) == null ? void 0 : B.responsive, n("responsive"))), m = p(Z((K = s.variables) == null ? void 0 : K.conditional, n("conditional"))), $ = await A(t), P = f($, "css/_variables.css"), E = `:root { ${g.join("")} ${d.join("")} } ${m.join("")}`;
227
+ })) : [], r = (j) => ({ ...j, responsive: void 0, conditional: void 0 }), n = (j) => e.variables.map((x) => j === "static" ? r(x._current) : x._current[j]), m = a(Z(r(s.variables), n("static"))), g = c(Z((B = s.variables) == null ? void 0 : B.responsive, n("responsive"))), d = u(Z((K = s.variables) == null ? void 0 : K.conditional, n("conditional"))), $ = await A(t), P = f($, "css/_variables.css"), E = `:root { ${m.join("")} ${g.join("")} } ${d.join("")}`;
227
228
  k(P, E);
228
- const j = f($, "css/_global.css"), F = Z(s.global, e.globalStyles), D = J(F, "");
229
- k(j, `@layer global { ${D} }`);
229
+ const C = f($, "css/_global.css"), F = Z(s.global, e.globalStyles), D = J(F, "");
230
+ k(C, `@layer global { ${D} }`);
230
231
  const b = f($, "css/_reset.css"), l = s.reset === "none" ? {} : typeof s.reset == "object" ? s.reset : Ot, h = J(l, "");
231
232
  k(b, `@layer reset { ${h} }`);
232
- const S = f($, "css/_templates.css"), u = Z(s.templates, e.templates), N = ut(u), w = Et(u);
233
- k(S, N), o.templates = u;
233
+ const S = f($, "css/_templates.css"), p = Z(s.templates, e.templates), N = pt(p), w = Et(p);
234
+ k(S, N), o.templates = p;
234
235
  const y = f($, "types/css-tokens.d.ts"), I = `
235
236
  // Variable types
236
237
  type VariableTokens = ${[...i].join("|")};
@@ -238,7 +239,7 @@ const Ot = {
238
239
 
239
240
  // Template types
240
241
  type TemplateTokens = {
241
- ${Object.entries(w).map(([C, x]) => `${C}?: ${x}`).join(`
242
+ ${Object.entries(w).map(([j, x]) => `${j}?: ${x}`).join(`
242
243
  `)}
243
244
  }
244
245
  `;
@@ -251,8 +252,8 @@ const Ot = {
251
252
  if (!i.test(t)) return e;
252
253
  const c = i.exec(t);
253
254
  if (c) {
254
- const p = c.at(1);
255
- if (yt.some((n) => p == null ? void 0 : p.includes(n))) return e;
255
+ const u = c.at(1);
256
+ if (yt.some((n) => u == null ? void 0 : u.includes(n))) return e;
256
257
  }
257
258
  return "styled('div',";
258
259
  }), ot = async (t, e, s) => {
@@ -261,7 +262,7 @@ const Ot = {
261
262
  const a = q(e);
262
263
  let c = V(e, "utf8");
263
264
  c = ct(c);
264
- const p = f(s, "js", o + ".js"), r = await nt(t), n = f(t, (r == null ? void 0 : r.configDir) || "", "salty.config.ts"), g = ht(n), d = await mt(t);
265
+ const u = f(s, "js", o + ".js"), r = await nt(t), n = f(t, (r == null ? void 0 : r.configDir) || "", "salty.config.ts"), m = ht(n), g = await gt(t);
265
266
  await at.build({
266
267
  stdin: {
267
268
  contents: c,
@@ -272,26 +273,26 @@ const Ot = {
272
273
  minify: !1,
273
274
  treeShaking: !0,
274
275
  bundle: !0,
275
- outfile: p,
276
- format: d,
276
+ outfile: u,
277
+ format: g,
277
278
  target: ["node20"],
278
279
  keepNames: !0,
279
- external: g,
280
+ external: m,
280
281
  packages: "external",
281
282
  plugins: [
282
283
  {
283
284
  name: "test",
284
285
  setup: (P) => {
285
286
  P.onLoad({ filter: /.*\.css|salty|styles|styled\.ts/ }, (E) => {
286
- const j = V(E.path, "utf8");
287
- return { contents: ct(j), loader: "ts" };
287
+ const C = V(E.path, "utf8");
288
+ return { contents: ct(C), loader: "ts" };
288
289
  });
289
290
  }
290
291
  }
291
292
  ]
292
293
  });
293
- const m = Date.now();
294
- return await import(`${p}?t=${m}`);
294
+ const d = Date.now();
295
+ return await import(`${u}?t=${d}`);
295
296
  }, Rt = async (t) => {
296
297
  const e = await A(t), s = f(e, "cache/config-cache.json"), o = V(s, "utf8");
297
298
  if (!o) throw new Error("Could not find config cache file");
@@ -309,7 +310,7 @@ const Ot = {
309
310
  try {
310
311
  const o = Date.now();
311
312
  e ? tt.info("Generating CSS in production mode! 🔥") : tt.info("Generating CSS in development mode! 🚀");
312
- const i = [], a = [], c = await A(t), p = f(c, "index.css");
313
+ const i = [], a = [], c = await A(t), u = f(c, "index.css");
313
314
  s && (() => {
314
315
  et(c) && wt("rm -rf " + c), z(c, { recursive: !0 }), z(f(c, "css")), z(f(c, "types")), z(f(c, "js")), z(f(c, "cache"));
315
316
  })();
@@ -322,12 +323,12 @@ const Ot = {
322
323
  components: [],
323
324
  classNames: []
324
325
  };
325
- async function g(l) {
326
- const h = ["node_modules", "saltygen"], S = jt(l);
326
+ async function m(l) {
327
+ const h = ["node_modules", "saltygen"], S = Ct(l);
327
328
  if (S.isDirectory()) {
328
- const u = Ct(l);
329
+ const p = jt(l);
329
330
  if (h.some((w) => l.includes(w))) return;
330
- await Promise.all(u.map((w) => g(f(l, w))));
331
+ await Promise.all(p.map((w) => m(f(l, w))));
331
332
  } else if (S.isFile() && st(l)) {
332
333
  const N = await ot(t, l, c);
333
334
  Object.entries(N).forEach(([w, y]) => {
@@ -347,36 +348,36 @@ const Ot = {
347
348
  });
348
349
  }
349
350
  }
350
- await g(t), await Jt(t, n);
351
- const d = await rt(t);
351
+ await m(t), await Jt(t, n);
352
+ const g = await rt(t);
352
353
  for (const l of n.keyframes) {
353
- const { value: h } = l, S = `a_${h.animationName}.css`, u = `css/${S}`, N = f(c, u);
354
+ const { value: h } = l, S = `a_${h.animationName}.css`, p = `css/${S}`, N = f(c, p);
354
355
  i.push(S), k(N, h.css);
355
356
  }
356
- const m = {};
357
+ const d = {};
357
358
  for (const l of n.components) {
358
- const { src: h, name: S } = l, u = l.generator._withBuildContext({
359
+ const { src: h, name: S } = l, p = l.generator._withBuildContext({
359
360
  callerName: S,
360
361
  isProduction: e,
361
- config: d
362
+ config: g
362
363
  });
363
- a[u.priority] || (a[u.priority] = []), a[u.priority].push(u.cssFileName);
364
- const N = `css/${u.cssFileName}`, w = f(c, N);
365
- k(w, u.css), d.importStrategy === "component" && (m[h] ? m[h].push(u.cssFileName) : m[h] = [u.cssFileName]);
364
+ a[p.priority] || (a[p.priority] = []), a[p.priority].push(p.cssFileName);
365
+ const N = `css/${p.cssFileName}`, w = f(c, N);
366
+ k(w, p.css), g.importStrategy === "component" && (d[h] ? d[h].push(p.cssFileName) : d[h] = [p.cssFileName]);
366
367
  }
367
368
  for (const l of n.classNames) {
368
- const { src: h, name: S } = l, u = l.generator._withBuildContext({
369
+ const { src: h, name: S } = l, p = l.generator._withBuildContext({
369
370
  callerName: S,
370
371
  isProduction: e,
371
- config: d
372
+ config: g
372
373
  });
373
- a[0].push(u.cssFileName);
374
- const N = `css/${u.cssFileName}`, w = f(c, N);
375
- k(w, u.css), d.importStrategy === "component" && (m[h] ? m[h].push(u.cssFileName) : m[h] = [u.cssFileName]);
374
+ a[0].push(p.cssFileName);
375
+ const N = `css/${p.cssFileName}`, w = f(c, N);
376
+ k(w, p.css), g.importStrategy === "component" && (d[h] ? d[h].push(p.cssFileName) : d[h] = [p.cssFileName]);
376
377
  }
377
- d.importStrategy === "component" && Object.entries(m).forEach(([l, h]) => {
378
+ g.importStrategy === "component" && Object.entries(d).forEach(([l, h]) => {
378
379
  const S = h.map((G) => `@import url('./${G}');`).join(`
379
- `), u = H(l, 6), N = q(l), w = M(N.name), y = f(c, `css/f_${w}-${u}.css`);
380
+ `), p = H(l, 6), N = q(l), w = M(N.name), y = f(c, `css/f_${w}-${p}.css`);
380
381
  k(y, S);
381
382
  });
382
383
  const $ = i.map((l) => `@import url('./css/${l}');`).join(`
@@ -392,24 +393,24 @@ ${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((l) =
392
393
  }).map((l) => `@import url('./css/${l}');`).join(`
393
394
  `)}
394
395
  ${$}`;
395
- if (d.importStrategy !== "component") {
396
- const l = a.reduce((h, S, u) => {
396
+ if (g.importStrategy !== "component") {
397
+ const l = a.reduce((h, S, p) => {
397
398
  const N = S.reduce((I, L) => {
398
399
  var x;
399
- const B = f(c, "css", L), K = V(B, "utf8"), C = ((x = /.*-([^-]+)-\d+.css/.exec(L)) == null ? void 0 : x.at(1)) || H(B, 6);
400
- return I.includes(C) ? I : `${I}
401
- /*start:${C}*/
400
+ const B = f(c, "css", L), K = V(B, "utf8"), j = ((x = /.*-([^-]+)-\d+.css/.exec(L)) == null ? void 0 : x.at(1)) || H(B, 6);
401
+ return I.includes(j) ? I : `${I}
402
+ /*start:${j}*/
402
403
  ${K}
403
- /*end:${C}*/
404
+ /*end:${j}*/
404
405
  `;
405
- }, ""), w = `l_${u}.css`, y = f(c, "css", w), G = `@layer l${u} { ${N}
406
+ }, ""), w = `l_${p}.css`, y = f(c, "css", w), G = `@layer l${p} { ${N}
406
407
  }`;
407
408
  return k(y, G), `${h}
408
409
  @import url('./css/${w}');`;
409
410
  }, "");
410
411
  F += l;
411
412
  }
412
- k(p, F);
413
+ k(u, F);
413
414
  const b = Date.now() - o, _ = b < 200 ? "🔥" : b < 500 ? "🚀" : b < 1e3 ? "🎉" : b < 2e3 ? "🚗" : b < 5e3 ? "🤔" : "🥴";
414
415
  tt.info(`Generated CSS in ${b}ms! ${_}`);
415
416
  } catch (o) {
@@ -420,48 +421,48 @@ ${K}
420
421
  const s = await A(t);
421
422
  if (st(e)) {
422
423
  const i = [], a = await rt(t), c = await ot(t, e, s);
423
- if (Object.entries(c).forEach(([p, r]) => {
424
+ if (Object.entries(c).forEach(([u, r]) => {
424
425
  if (r.isKeyframes && r.css) {
425
426
  const $ = `css/${`a_${r.animationName}.css`}`, P = f(s, $);
426
427
  k(P, r.css);
427
428
  return;
428
429
  }
429
430
  if (r.isClassName) {
430
- const m = r.factory._withBuildContext({
431
- name: p
431
+ const d = r.factory._withBuildContext({
432
+ name: u
432
433
  });
433
- i[0].push(m.cssFileName);
434
- const $ = `css/${m.cssFileName}`, P = f(s, $);
435
- k(P, m.css);
434
+ i[0].push(d.cssFileName);
435
+ const $ = `css/${d.cssFileName}`, P = f(s, $);
436
+ k(P, d.css);
436
437
  }
437
438
  if (!r.generator) return;
438
439
  const n = r.generator._withBuildContext({
439
- name: p,
440
+ name: u,
440
441
  config: a
441
- }), g = `css/${n.cssFileName}`, d = f(s, g);
442
- k(d, n.css), i[n.priority] || (i[n.priority] = []), i[n.priority].push(n.cssFileName);
442
+ }), m = `css/${n.cssFileName}`, g = f(s, m);
443
+ k(g, n.css), i[n.priority] || (i[n.priority] = []), i[n.priority].push(n.cssFileName);
443
444
  }), a.importStrategy !== "component")
444
- i.forEach((p, r) => {
445
- const n = `l_${r}.css`, g = f(s, "css", n);
446
- let d = V(g, "utf8");
447
- p.forEach((m) => {
448
- var j;
449
- const $ = f(s, "css", m), P = ((j = /.*-([^-]+)-\d+.css/.exec(m)) == null ? void 0 : j.at(1)) || H($, 6);
450
- if (!d.includes(P)) {
445
+ i.forEach((u, r) => {
446
+ const n = `l_${r}.css`, m = f(s, "css", n);
447
+ let g = V(m, "utf8");
448
+ u.forEach((d) => {
449
+ var C;
450
+ const $ = f(s, "css", d), P = ((C = /.*-([^-]+)-\d+.css/.exec(d)) == null ? void 0 : C.at(1)) || H($, 6);
451
+ if (!g.includes(P)) {
451
452
  const F = V($, "utf8"), D = `/*start:${P}*/
452
453
  ${F}
453
454
  /*end:${P}*/
454
455
  `;
455
- d = `${d.replace(/\}$/, "")}
456
+ g = `${g.replace(/\}$/, "")}
456
457
  ${D}
457
458
  }`;
458
459
  }
459
- }), k(g, d);
460
+ }), k(m, g);
460
461
  });
461
462
  else {
462
- const p = i.flat().map((m) => `@import url('./${m}');`).join(`
463
- `), r = H(e, 6), n = q(e), g = M(n.name), d = f(s, `css/f_${g}-${r}.css`);
464
- k(d, p);
463
+ const u = i.flat().map((d) => `@import url('./${d}');`).join(`
464
+ `), r = H(e, 6), n = q(e), m = M(n.name), g = f(s, `css/f_${m}-${r}.css`);
465
+ k(g, u);
465
466
  }
466
467
  }
467
468
  } catch (s) {
@@ -472,35 +473,35 @@ ${D}
472
473
  const o = await A(t);
473
474
  if (st(e)) {
474
475
  const a = V(e, "utf8");
475
- a.replace(/^(?!export\s)const\s.*/gm, (g) => `export ${g}`) !== a && await Ft(e, a);
476
- const p = await rt(t), r = await ot(t, e, o);
476
+ a.replace(/^(?!export\s)const\s.*/gm, (m) => `export ${m}`) !== a && await Ft(e, a);
477
+ const u = await rt(t), r = await ot(t, e, o);
477
478
  let n = a;
478
- if (Object.entries(r).forEach(([g, d]) => {
479
+ if (Object.entries(r).forEach(([m, g]) => {
479
480
  var w;
480
- if (d.isKeyframes || !d.generator) return;
481
- const m = d.generator._withBuildContext({
482
- name: g,
483
- config: p,
481
+ if (g.isKeyframes || !g.generator) return;
482
+ const d = g.generator._withBuildContext({
483
+ name: m,
484
+ config: u,
484
485
  prod: s
485
- }), $ = new RegExp(`\\s${g}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(a);
486
+ }), $ = new RegExp(`\\s${m}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(a);
486
487
  if (!$) return console.error("Could not find the original declaration");
487
- const P = (w = $.at(1)) == null ? void 0 : w.trim(), E = new RegExp(`\\s${g}[=\\s]+styled\\(`, "g").exec(n);
488
+ const P = (w = $.at(1)) == null ? void 0 : w.trim(), E = new RegExp(`\\s${m}[=\\s]+styled\\(`, "g").exec(n);
488
489
  if (!E) return console.error("Could not find the original declaration");
489
- const { index: j } = E;
490
+ const { index: C } = E;
490
491
  let F = !1;
491
492
  const D = setTimeout(() => F = !0, 5e3);
492
493
  let b = 0, _ = !1, l = 0;
493
494
  for (; !_ && !F; ) {
494
- const y = n[j + b];
495
+ const y = n[C + b];
495
496
  y === "(" && l++, y === ")" && l--, l === 0 && y === ")" && (_ = !0), b > n.length && (F = !0), b++;
496
497
  }
497
498
  if (!F) clearTimeout(D);
498
499
  else throw new Error("Failed to find the end of the styled call and timed out");
499
- const h = j + b, S = n.slice(j, h), u = n, N = ` ${g} = styled(${P}, "${m.classNames}", ${JSON.stringify(m.clientProps)});`;
500
- n = n.replace(S, N), u === n && console.error("Minimize file failed to change content", { name: g, tagName: P });
501
- }), p.importStrategy === "component") {
502
- const g = H(e, 6), d = q(e);
503
- n = `import '../../saltygen/css/${`f_${M(d.name)}-${g}.css`}';
500
+ const h = C + b, S = n.slice(C, h), p = n, N = ` ${m} = styled(${P}, "${d.classNames}", ${JSON.stringify(d.clientProps)});`;
501
+ n = n.replace(S, N), p === n && console.error("Minimize file failed to change content", { name: m, tagName: P });
502
+ }), u.importStrategy === "component") {
503
+ const m = H(e, 6), g = q(e);
504
+ n = `import '../../saltygen/css/${`f_${M(g.name)}-${m}.css`}';
504
505
  ${n}`;
505
506
  }
506
507
  return n = n.replace("{ styled }", "{ styledClient as styled }"), n = n.replace("@salty-css/react/styled", "@salty-css/react/styled-client"), n;
package/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("path"),t=require("./index-LHz82WN_.cjs"),y=require("fs/promises"),g=require("fs"),p=async e=>{if(!e||e.includes("node_modules")||e.includes("saltygen"))return!1;if(e.includes("salty.config"))return!0;if(!t.isSaltyFile(e))return!1;const a=await y.readFile(e,"utf-8");return!!/.+define[A-Z]\w+/.test(a)},c=(e,s,l=!1,a=!1)=>{var n,u,i;(u=(n=e.module)==null?void 0:n.rules)==null||u.push({test:t.saltyFileRegExp(),use:[{loader:d.resolve(__dirname,a?"./loader.cjs":"./loader.js"),options:{dir:s}}]}),l||(i=e.plugins)==null||i.push({apply:f=>{let o=!1;f.hooks.watchRun.tapPromise({name:"generateCss"},async()=>{o||(o=!0,await t.generateCss(s),g.watch(s,{recursive:!0},async(h,r)=>{await p(r)?await t.generateCss(s,!1,!1):t.isSaltyFile(r)&&await t.generateFile(s,r)}))})}})};exports.default=c;exports.saltyPlugin=c;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("path"),t=require("./index-BIUzTm7X.cjs"),y=require("fs/promises"),g=require("fs"),p=async e=>{if(!e||e.includes("node_modules")||e.includes("saltygen"))return!1;if(e.includes("salty.config"))return!0;if(!t.isSaltyFile(e))return!1;const a=await y.readFile(e,"utf-8");return!!/.+define[A-Z]\w+/.test(a)},c=(e,s,l=!1,a=!1)=>{var n,u,i;(u=(n=e.module)==null?void 0:n.rules)==null||u.push({test:t.saltyFileRegExp(),use:[{loader:d.resolve(__dirname,a?"./loader.cjs":"./loader.js"),options:{dir:s}}]}),l||(i=e.plugins)==null||i.push({apply:f=>{let o=!1;f.hooks.watchRun.tapPromise({name:"generateCss"},async()=>{o||(o=!0,await t.generateCss(s),g.watch(s,{recursive:!0},async(h,r)=>{await p(r)?await t.generateCss(s,!1,!1):t.isSaltyFile(r)&&await t.generateFile(s,r)}))})}})};exports.default=c;exports.saltyPlugin=c;
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { resolve as d } from "path";
2
- import { i as f, s as p, g as u, a as y } from "./index-BthpPBL_.js";
2
+ import { i as f, s as p, g as u, a as y } from "./index-CVhswdhV.js";
3
3
  import { readFile as g } from "fs/promises";
4
4
  import { watch as m } from "fs";
5
5
  const w = async (s) => {
package/loader.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";const i=require("./index-LHz82WN_.cjs");async function n(){const{dir:e}=this.getOptions(),{resourcePath:t}=this;return await i.generateFile(e,t),await i.minimizeFile(e,t)}module.exports=n;
1
+ "use strict";const i=require("./index-BIUzTm7X.cjs");async function n(){const{dir:e}=this.getOptions(),{resourcePath:t}=this;return await i.generateFile(e,t),await i.minimizeFile(e,t)}module.exports=n;
package/loader.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as e, m as i } from "./index-BthpPBL_.js";
1
+ import { a as e, m as i } from "./index-CVhswdhV.js";
2
2
  async function s() {
3
3
  const { dir: t } = this.getOptions(), { resourcePath: a } = this;
4
4
  return await e(t, a), await i(t, a);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salty-css/webpack",
3
- "version": "0.0.1-alpha.190",
3
+ "version": "0.0.1-alpha.192",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "typings": "./dist/index.d.ts",
@@ -34,7 +34,7 @@
34
34
  }
35
35
  },
36
36
  "dependencies": {
37
- "@salty-css/core": "^0.0.1-alpha.190",
37
+ "@salty-css/core": "^0.0.1-alpha.192",
38
38
  "webpack": ">=5.x"
39
39
  }
40
40
  }