@salty-css/vite 0.0.1-alpha.207 → 0.0.1-alpha.208
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.
- package/index.cjs +21 -19
- package/index.js +224 -222
- package/package.json +2 -2
package/index.cjs
CHANGED
@@ -1,40 +1,42 @@
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const kt=require("esbuild"),_t=require("child_process"),
|
2
|
-
`);if(!
|
3
|
-
|
4
|
-
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const kt=require("esbuild"),_t=require("child_process"),f=require("path"),d=require("fs"),tt=require("fs/promises"),B=require("winston");var rt=typeof document<"u"?document.currentScript:null;function Dt(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 gt=Dt(kt),pt=t=>String.fromCharCode(t+(t>25?39:97)),Ot=(t,e)=>{let s="",n;for(n=Math.abs(t);n>52;n=n/52|0)s=pt(n%52)+s;return s=pt(n%52)+s,s.length<e?s=s.padStart(e,"a"):s.length>e&&(s=s.slice(-e)),s},Tt=(t,e)=>{let s=e.length;for(;s;)t=t*33^e.charCodeAt(--s);return t},v=(t,e=5)=>{const s=Tt(5381,JSON.stringify(t))>>>0;return Ot(s,e)};function V(t){return t?typeof t!="string"?V(String(t)):t.replace(/[\s.]/g,"-").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g,(e,s)=>(s>0?"-":"")+e.toLowerCase()):""}const Et=t=>e=>{if(typeof e!="string"||!t)return;let s=e;const n=[];return Object.values(t).forEach(o=>{const{pattern:r,transform:a}=o;s=s.replace(r,g=>{const{value:C,css:u}=a(g);return u&&n.push(u),C})}),{transformed:s,additionalCss:n}},ht=t=>e=>typeof e!="string"||!/\{[^{}]+\}/g.test(e)?void 0:{transformed:e.replace(/\{([^{}]+)\}/g,(...o)=>`var(--${V(o[1].replaceAll(".","-"))})`)},Mt=ht(),Rt=["top","right","bottom","left","min-width",/.*width.*/,/^[^line]*height.*/,/padding.*/,/margin.*/,/border.*/,/inset.*/,/.*radius.*/,/.*spacing.*/,/.*gap.*/,/.*indent.*/,/.*offset.*/,/.*size.*/,/.*thickness.*/,/.*font-size.*/],Vt=(t,e,s)=>Rt.some(o=>typeof o=="string"?o===t:o.test(t))?`${e}px`:`${e}`,At=["Webkit","Moz","ms","O"],Jt=t=>t.startsWith("-")?t:At.some(e=>t.startsWith(e))?`-${V(t)}`:V(t),Y=async(t,e="",s,n=!1)=>{if(!t)throw new Error("No styles provided to parseStyles function!");const o=new Set,a=Object.entries(t).map(async([m,i])=>{const y=m.trim(),k=Jt(y),N=(_,E=";")=>`${k}:${_}${E}`;if(typeof i=="function"&&(i=i({scope:e,config:s})),i instanceof Promise&&(i=await i),typeof i=="object"){if(!i)return;if(i.isColor)return N(i.toString());if(y==="defaultVariants")return;if(y==="variants"){const j=Object.entries(i);for(const[D,c]of j){if(!c)return;const h=Object.entries(c);for(const[b,l]of h){if(!l)return;const S=`${e}.${D}-${b}`;(await Y(l,S,s)).forEach(M=>o.add(M))}}return}if(y==="compoundVariants"){for(const j of i){const{css:D,...c}=j,h=Object.entries(c).reduce((l,[S,x])=>`${l}.${S}-${x}`,e);(await Y(D,h,s)).forEach(l=>o.add(l))}return}if(y.startsWith("@")){const j=y,D=await G(i,e,s),c=`${j} { ${D} }`;o.add(c);return}const _=m.includes("&")?y.replace("&",e):y.startsWith(":")?`${e}${y}`:`${e} ${y}`;(await Y(i,_,s)).forEach(j=>o.add(j));return}if(typeof i=="number"){const _=Vt(k,i);return N(_)}if(typeof i!="string")if("toString"in i)i=i.toString();else throw new Error(`Invalid value type for property ${k}`);return N(i)}),{modifiers:g}={},C=[ht(),Et(g)],p=(await Promise.all(a).then(m=>Promise.all(m.map(i=>C.reduce(async(y,k)=>{const N=await y;if(!N)return N;const R=await k(N);if(!R)return N;const{transformed:_,additionalCss:E}=R;let j="";if(E)for(const D of E)j+=await G(D,"");return`${j}${_}`},Promise.resolve(i)))))).filter(m=>m!==void 0).join(`
|
2
|
+
`);if(!p.trim())return Array.from(o);const w=e?`${e} {
|
3
|
+
${p}
|
4
|
+
}`:p;return o.has(w)?Array.from(o):[w,...o]},G=async(t,e,s,n=!1)=>(await Y(t,e,s,n)).join(`
|
5
|
+
`),wt=async(t,e=[])=>{if(!t)return"";const s=[],n={};for(const[o,r]of Object.entries(t))if(typeof r!="function")if(r&&typeof r=="object"){const a=o.trim(),g=await wt(r,[...e,a]);s.push(g)}else n[o]=r;if(Object.keys(n).length){const o=e.map(V).join("-"),r="t_"+v(o,4),a=await G(n,`.${o}, .${r}`);s.push(a)}return s.join(`
|
6
|
+
`)},vt=t=>t?Object.entries(t).reduce((e,[s,n])=>(typeof n=="function"?e[s]="any":typeof n=="object"&&(e[s]=$t(n).map(o=>`"${o}"`).join(" | ")),e),{}):{},$t=(t,e="",s=new Set)=>t?(Object.entries(t).forEach(([n,o])=>{const r=e?`${e}.${n}`:n;return typeof o=="object"?$t(o,r,s):s.add(e)}),[...s]):[],bt=t=>{if(!t||t==="/")throw new Error("Could not find package.json file");const e=f.join(t,"package.json");return d.existsSync(e)?e:bt(f.join(t,".."))},zt=async t=>{const e=bt(t);return await tt.readFile(e,"utf-8").then(JSON.parse).catch(()=>{})},Wt=async t=>{const e=await zt(t);if(e)return e.type};let I;const St=async t=>{if(I)return I;const e=await Wt(t);return e==="module"?I="esm":(e==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:rt&&rt.tagName.toUpperCase()==="SCRIPT"&&rt.src||new URL("index.cjs",document.baseURI).href).endsWith(".cjs"))&&(I="cjs"),I||"esm"},it=B.createLogger({level:"debug",format:B.format.combine(B.format.colorize(),B.format.cli()),transports:[new B.transports.Console({})]});function jt(t){return t?typeof t!="string"?jt(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 It={"*, *::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"}},Z=(...t)=>t.flat().reduce((e,s)=>s!=null&&s._current?{...e,...s._current}:{...e,...s},{}),Zt=(...t)=>t.flat().reduce((e,s)=>({...e,...s._children}),{}),J={externalModules:[],rcFile:void 0,destDir:void 0},Ft=t=>{if(J.externalModules.length>0)return J.externalModules;const s=d.readFileSync(t,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!s)return[];const n=s[1].split(",").map(o=>o.replace(/['"`]/g,"").trim());return J.externalModules=n,n},z=async t=>{if(J.destDir)return J.destDir;const e=await at(t),s=f.join(t,(e==null?void 0:e.saltygenDir)||"saltygen");return J.destDir=s,s},Ct=["salty","css","styles","styled"],qt=(t=[])=>new RegExp(`\\.(${[...Ct,...t].join("|")})\\.`),q=(t,e=[])=>qt(e).test(t),Nt=async t=>{if(J.rcFile)return J.rcFile;if(t==="/")throw new Error("Could not find .saltyrc.json file");const e=f.join(t,".saltyrc.json"),s=await tt.readFile(e,"utf-8").then(JSON.parse).catch(()=>{});return s?(J.rcFile=s,s):Nt(f.join(t,".."))},at=async t=>{var n,o;const e=await Nt(t),s=(n=e.projects)==null?void 0:n.find(r=>t.endsWith(r.dir||""));return s||((o=e.projects)==null?void 0:o.find(r=>r.dir===e.defaultProject))},Ht=async t=>{const e=await at(t),s=await z(t),n=f.join(t,(e==null?void 0:e.configDir)||"","salty.config.ts"),o=f.join(s,"salty.config.js"),r=await St(t),a=Ft(n);await gt.build({entryPoints:[n],minify:!0,treeShaking:!0,bundle:!0,outfile:o,format:r,external:a});const g=Date.now(),{config:C}=await import(`${o}?t=${g}`);return C},Lt=async(t,e)=>{var ft,ut;const s=await z(t),n={mediaQueries:[],globalStyles:[],variables:[],templates:[]};await Promise.all([...e].map(async F=>{const{contents:P,outputFilePath:A}=await et(t,F,s);Object.entries(P).forEach(([O,T])=>{T.isMedia?n.mediaQueries.push([O,T]):T.isGlobalDefine?n.globalStyles.push(T):T.isDefineVariables?n.variables.push(T):T.isDefineTemplates&&n.templates.push(T._setPath(A))})}));const o=await Ht(t),r={...o},a=new Set,g=(F,P=[])=>F?Object.entries(F).flatMap(([A,O])=>{if(!O)return;if(typeof O=="object")return g(O,[...P,A]);const T=jt(A),nt=V(A),ot=[...P,T].join(".");a.add(`"${ot}"`);const X=[...P.map(V),nt].join("-"),dt=Mt(O);return dt?`--${X}: ${dt.transformed};`:`--${X}: ${O};`}):[],C=F=>F?Object.entries(F).flatMap(([P,A])=>{const O=g(A);return P==="base"?O.join(""):`${P} { ${O.join("")} }`}):[],u=F=>F?Object.entries(F).flatMap(([P,A])=>Object.entries(A).flatMap(([O,T])=>{const nt=g(T,[P]),ot=`.${P}-${O}, [data-${P}="${O}"]`,X=nt.join("");return`${ot} { ${X} }`})):[],p=F=>({...F,responsive:void 0,conditional:void 0}),w=F=>n.variables.map(P=>F==="static"?p(P._current):P._current[F]),$=Z(p(o.variables),w("static")),m=g($),i=Z((ft=o.variables)==null?void 0:ft.responsive,w("responsive")),y=C(i),k=Z((ut=o.variables)==null?void 0:ut.conditional,w("conditional")),N=u(k),R=f.join(s,"css/_variables.css"),_=`:root { ${m.join("")} ${y.join("")} } ${N.join("")}`;d.writeFileSync(R,_),r.staticVariables=$;const E=f.join(s,"css/_global.css"),j=Z(o.global,n.globalStyles),D=await G(j,"");d.writeFileSync(E,`@layer global { ${D} }`);const c=f.join(s,"css/_reset.css"),b=o.reset==="none"?{}:typeof o.reset=="object"?o.reset:It,l=await G(b,"");d.writeFileSync(c,`@layer reset { ${l} }`);const S=f.join(s,"css/_templates.css"),x=Z(o.templates,n.templates),M=await wt(x),H=vt(x);d.writeFileSync(S,`@layer templates { ${M} }`),r.templates=x;const L=Zt(n.templates);r.templatePaths=Object.fromEntries(Object.entries(L).map(([F,P])=>[F,P._path]));const{mediaQueries:W}=n;r.mediaQueries=Object.fromEntries(W.map(([F,P])=>[`@${F}`,P]));const K=W.map(([F])=>`'@${F}'`).join(" | "),st=f.join(s,"types/css-tokens.d.ts"),Q=`
|
5
7
|
// Variable types
|
6
8
|
type VariableTokens = ${[...a].join("|")};
|
7
9
|
type PropertyValueToken = \`{\${VariableTokens}}\`;
|
8
10
|
|
9
11
|
// Template types
|
10
12
|
type TemplateTokens = {
|
11
|
-
${Object.entries(H).map(([
|
13
|
+
${Object.entries(H).map(([F,P])=>`${F}?: ${P}`).join(`
|
12
14
|
`)}
|
13
15
|
}
|
14
16
|
|
15
17
|
// Media query types
|
16
18
|
type MediaQueryKeys = ${K||"''"};
|
17
|
-
`;d.writeFileSync(st,Q);const xt=
|
19
|
+
`;d.writeFileSync(st,Q);const xt=f.join(s,"cache/config-cache.json");d.writeFileSync(xt,JSON.stringify(r,null,2))},yt=t=>t.replace(/styled\(([^"'`{,]+),/g,(e,s)=>{if(/^['"`]/.test(s))return e;const o=new RegExp(`import[^;]*${s}[,\\s{][^;]*from\\s?([^{};]+);`);if(!o.test(t))return e;const a=o.exec(t);if(a){const g=a.at(1);if(Ct.some(u=>g==null?void 0:g.includes(u)))return e}return"styled('div',"}),Bt=(t,e)=>{try{const s=d.readFileSync(f.join(e,"saltygen/cache/config-cache.json"),"utf8");return s?`globalThis.saltyConfig = ${s};
|
18
20
|
|
19
21
|
${t}`:`globalThis.saltyConfig = {};
|
20
22
|
|
21
|
-
${t}`}catch{return t}},et=async(t,e,s)=>{const n=
|
22
|
-
`),
|
23
|
+
${t}`}catch{return t}},et=async(t,e,s)=>{const n=v(e),o=f.join(s,"./temp");d.existsSync(o)||d.mkdirSync(o);const r=f.parse(e);let a=d.readFileSync(e,"utf8");a=yt(a),a=Bt(a,t);const g=f.join(s,"js",n+".js"),C=await at(t),u=f.join(t,(C==null?void 0:C.configDir)||"","salty.config.ts"),p=Ft(u),w=await St(t);await gt.build({stdin:{contents:a,sourcefile:r.base,resolveDir:r.dir,loader:"tsx"},minify:!1,treeShaking:!0,bundle:!0,outfile:g,format:w,target:["node20"],keepNames:!0,external:p,packages:"external",plugins:[{name:"test",setup:i=>{i.onLoad({filter:/.*\.css|salty|styles|styled\.ts/},y=>{const k=d.readFileSync(y.path,"utf8");return{contents:yt(k),loader:"ts"}})}}]});const $=Date.now();return{contents:await import(`${g}?t=${$}`),outputFilePath:g}},Gt=async t=>{const e=await z(t),s=f.join(e,"cache/config-cache.json"),n=d.readFileSync(s,"utf8");if(!n)throw new Error("Could not find config cache file");return JSON.parse(n)},ct=async t=>{const e=await Gt(t),s=await z(t),n=f.join(s,"salty.config.js"),o=Date.now(),{config:r}=await import(`${n}?t=${o}`);return Z(r,e)},lt=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},Kt=async(t,e=lt(),s=!0)=>{try{const n=Date.now();e?it.info("Generating CSS in production mode! 🔥"):it.info("Generating CSS in development mode! 🚀");const o=[],r=[],a=await z(t),g=f.join(a,"index.css");s&&(()=>{d.existsSync(a)&&_t.execSync("rm -rf "+a),d.mkdirSync(a,{recursive:!0}),d.mkdirSync(f.join(a,"css")),d.mkdirSync(f.join(a,"types")),d.mkdirSync(f.join(a,"js")),d.mkdirSync(f.join(a,"cache"))})();const u=new Set,p=new Set;async function w(c){const h=["node_modules","saltygen"],b=d.statSync(c);if(b.isDirectory()){const l=d.readdirSync(c);if(h.some(x=>c.includes(x)))return;await Promise.all(l.map(x=>w(f.join(c,x))))}else if(b.isFile()&&q(c)){u.add(c);const S=d.readFileSync(c,"utf8");/define[\w\d]+\(/.test(S)&&p.add(c)}}await w(t),await Lt(t,p);const $={keyframes:[],components:[],classNames:[]};await Promise.all([...u].map(async c=>{const{contents:h}=await et(t,c,a);Object.entries(h).forEach(([b,l])=>{l.isKeyframes?$.keyframes.push({value:l,src:c,name:b}):l.isClassName?$.classNames.push({...l,src:c,name:b}):l.generator&&$.components.push({...l,src:c,name:b})})}));const m=await ct(t);for(const c of $.keyframes){const{value:h}=c,b=`a_${h.animationName}.css`,l=`css/${b}`,S=f.join(a,l);o.push(b),d.writeFileSync(S,h.css)}const i={};for(const c of $.components){const{src:h,name:b}=c,l=c.generator._withBuildContext({callerName:b,isProduction:e,config:m});r[l.priority]||(r[l.priority]=[]);const S=await l.css;if(!S)continue;r[l.priority].push(l.cssFileName);const x=`css/${l.cssFileName}`,M=f.join(a,x);d.writeFileSync(M,S),m.importStrategy==="component"&&(i[h]?i[h].push(l.cssFileName):i[h]=[l.cssFileName])}for(const c of $.classNames){const{src:h,name:b}=c,l=c.generator._withBuildContext({callerName:b,isProduction:e,config:m}),S=await l.css;if(!S)continue;r[0].push(l.cssFileName);const x=`css/${l.cssFileName}`,M=f.join(a,x);d.writeFileSync(M,S),m.importStrategy==="component"&&(i[h]?i[h].push(l.cssFileName):i[h]=[l.cssFileName])}m.importStrategy==="component"&&Object.entries(i).forEach(([c,h])=>{const b=h.map(H=>`@import url('./${H}');`).join(`
|
24
|
+
`),l=v(c,6),S=f.parse(c),x=V(S.name),M=f.join(a,`css/f_${x}-${l}.css`);d.writeFileSync(M,b)});const y=o.map(c=>`@import url('./css/${c}');`).join(`
|
23
25
|
`);let _=`@layer reset, global, templates, l0, l1, l2, l3, l4, l5, l6, l7, l8;
|
24
26
|
|
25
|
-
${["_variables.css","_reset.css","_global.css","_templates.css"].filter(
|
27
|
+
${["_variables.css","_reset.css","_global.css","_templates.css"].filter(c=>{try{return d.readFileSync(f.join(a,"css",c),"utf8").length>0}catch{return!1}}).map(c=>`@import url('./css/${c}');`).join(`
|
26
28
|
`)}
|
27
|
-
${
|
29
|
+
${y}`;if(m.importStrategy!=="component"){const c=r.reduce((h,b,l)=>{const S=b.reduce((L,W)=>{var Q;const K=f.join(a,"css",W),st=d.readFileSync(K,"utf8"),U=((Q=/.*-([^-]+)-\d+.css/.exec(W))==null?void 0:Q.at(1))||v(K,6);return L.includes(U)?L:`${L}
|
28
30
|
/*start:${U}-${W}*/
|
29
31
|
${st}
|
30
32
|
/*end:${U}*/
|
31
|
-
`},""),x=`l_${
|
32
|
-
}`;return d.writeFileSync(
|
33
|
-
@import url('./css/${x}');`},"");_+=
|
34
|
-
${
|
35
|
-
/*end:${
|
36
|
-
|
33
|
+
`},""),x=`l_${l}.css`,M=f.join(a,"css",x),H=`@layer l${l} { ${S}
|
34
|
+
}`;return d.writeFileSync(M,H),`${h}
|
35
|
+
@import url('./css/${x}');`},"");_+=c}d.writeFileSync(g,_);const j=Date.now()-n,D=j<200?"🔥":j<500?"🚀":j<1e3?"🎉":j<2e3?"🚗":j<5e3?"🤔":"🥴";it.info(`Generated CSS in ${j}ms! ${D}`)}catch(n){console.error(n)}},Ut=async(t,e,s=lt())=>{try{const n=await z(t);if(q(e)){const r=[],a=await ct(t),{contents:g}=await et(t,e,n);for(const[C,u]of Object.entries(g)){if(u.isKeyframes&&u.css){const y=`css/${`a_${u.animationName}.css`}`,k=f.join(n,y);d.writeFileSync(k,await u.css);return}if(u.isClassName){const i=u.generator._withBuildContext({callerName:C,isProduction:s,config:a}),y=await i.css;if(!y)continue;r[0].push(i.cssFileName);const k=`css/${i.cssFileName}`,N=f.join(n,k);d.writeFileSync(N,y)}if(!u.generator)return;const p=u.generator._withBuildContext({callerName:C,isProduction:s,config:a}),w=await p.css;if(!w)continue;const $=`css/${p.cssFileName}`,m=f.join(n,$);d.writeFileSync(m,w),r[p.priority]||(r[p.priority]=[]),r[p.priority].push(p.cssFileName)}if(a.importStrategy!=="component")r.forEach((C,u)=>{const p=`l_${u}.css`,w=f.join(n,"css",p);let $=d.readFileSync(w,"utf8");C.forEach(m=>{var N;const i=f.join(n,"css",m),y=((N=/.*-([^-]+)-\d+.css/.exec(m))==null?void 0:N.at(1))||v(i,6);if(!$.includes(y)){const R=d.readFileSync(i,"utf8"),_=`/*start:${y}-${m}*/
|
36
|
+
${R}
|
37
|
+
/*end:${y}*/
|
38
|
+
`;$=`${$.replace(/\}$/,"")}
|
37
39
|
${_}
|
38
|
-
}`}}),d.writeFileSync(
|
39
|
-
`),
|
40
|
-
${
|
40
|
+
}`}}),d.writeFileSync(w,$)});else{const C=r.flat().map(m=>`@import url('./${m}');`).join(`
|
41
|
+
`),u=v(e,6),p=f.parse(e),w=V(p.name),$=f.join(n,`css/f_${w}-${u}.css`);d.writeFileSync($,C)}}}catch(n){console.error(n)}},Qt=async(t,e,s=lt())=>{try{const n=await z(t);if(q(e)){const r=d.readFileSync(e,"utf8");r.replace(/^(?!export\s)const\s.*/gm,p=>`export ${p}`)!==r&&await tt.writeFile(e,r);const g=await ct(t),{contents:C}=await et(t,e,n);let u=r;if(Object.entries(C).forEach(([p,w])=>{var l;if(w.isKeyframes||!w.generator)return;const $=w.generator._withBuildContext({callerName:p,isProduction:s,config:g}),m=new RegExp(`\\s${p}[=\\s]+[^()]+styled\\(([^,]+),`,"g").exec(r);if(!m)return console.error("Could not find the original declaration");const i=(l=m.at(1))==null?void 0:l.trim(),y=new RegExp(`\\s${p}[=\\s]+styled\\(`,"g").exec(u);if(!y)return console.error("Could not find the original declaration");const{index:k}=y;let N=!1;const R=setTimeout(()=>N=!0,5e3);let _=0,E=!1,j=0;for(;!E&&!N;){const S=u[k+_];S==="("&&j++,S===")"&&j--,j===0&&S===")"&&(E=!0),_>u.length&&(N=!0),_++}if(!N)clearTimeout(R);else throw new Error("Failed to find the end of the styled call and timed out");const D=k+_,c=u.slice(k,D),h=u,b=` ${p} = styled(${i}, "${$.classNames}", ${JSON.stringify($.clientProps)});`;u=u.replace(c,b),h===u&&console.error("Minimize file failed to change content",{name:p,tagName:i})}),g.importStrategy==="component"){const p=v(e,6),w=f.parse(e);u=`import '../../saltygen/css/${`f_${V(w.name)}-${p}.css`}';
|
42
|
+
${u}`}return u=u.replace("{ styled }","{ styledClient as styled }"),u=u.replace("@salty-css/react/styled","@salty-css/react/styled-client"),u}}catch(n){console.error("Error in minimizeFile:",n)}},mt=async t=>{if(!t||t.includes("node_modules")||t.includes("saltygen"))return!1;if(t.includes("salty.config"))return!0;if(!q(t))return!1;const n=await tt.readFile(t,"utf-8");return!!/.+define[A-Z]\w+/.test(n)},Pt=t=>({name:"stylegen",buildStart:()=>Kt(t),load:async e=>{if(q(e))return await Qt(t,e)},handleHotUpdate:async({file:e,server:s})=>{await mt(e)&&await s.restart()},watchChange:{handler:async e=>{q(e)&&(await mt(e)||await Ut(t,e))}}});exports.default=Pt;exports.saltyPlugin=Pt;
|
package/index.js
CHANGED
@@ -4,33 +4,33 @@ import { join as u, parse as et } from "path";
|
|
4
4
|
import { existsSync as ct, mkdirSync as I, statSync as Et, readdirSync as Tt, readFileSync as M, writeFileSync as D } from "fs";
|
5
5
|
import { readFile as lt, writeFile as Ot } from "fs/promises";
|
6
6
|
import { createLogger as Vt, format as it, transports as Mt } from "winston";
|
7
|
-
const
|
7
|
+
const gt = (t) => String.fromCharCode(t + (t > 25 ? 39 : 97)), Rt = (t, e) => {
|
8
8
|
let s = "", n;
|
9
|
-
for (n = Math.abs(t); n > 52; n = n / 52 | 0) s =
|
10
|
-
return s =
|
11
|
-
},
|
9
|
+
for (n = Math.abs(t); n > 52; n = n / 52 | 0) s = gt(n % 52) + s;
|
10
|
+
return s = gt(n % 52) + s, s.length < e ? s = s.padStart(e, "a") : s.length > e && (s = s.slice(-e)), s;
|
11
|
+
}, At = (t, e) => {
|
12
12
|
let s = e.length;
|
13
13
|
for (; s; ) t = t * 33 ^ e.charCodeAt(--s);
|
14
14
|
return t;
|
15
15
|
}, z = (t, e = 5) => {
|
16
|
-
const s =
|
16
|
+
const s = At(5381, JSON.stringify(t)) >>> 0;
|
17
17
|
return Rt(s, e);
|
18
18
|
};
|
19
|
-
function
|
20
|
-
return t ? typeof t != "string" ?
|
19
|
+
function A(t) {
|
20
|
+
return t ? typeof t != "string" ? A(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
|
22
|
+
const Jt = (t) => (e) => {
|
23
23
|
if (typeof e != "string" || !t) return;
|
24
24
|
let s = e;
|
25
25
|
const n = [];
|
26
26
|
return Object.values(t).forEach((o) => {
|
27
27
|
const { pattern: r, transform: a } = o;
|
28
28
|
s = s.replace(r, (h) => {
|
29
|
-
const { value:
|
30
|
-
return
|
29
|
+
const { value: j, css: f } = a(h);
|
30
|
+
return f && n.push(f), j;
|
31
31
|
});
|
32
32
|
}), { transformed: s, additionalCss: n };
|
33
|
-
}, bt = (t) => (e) => typeof e != "string" || !/\{[^{}]+\}/g.test(e) ? void 0 : { transformed: e.replace(/\{([^{}]+)\}/g, (...o) => `var(--${
|
33
|
+
}, bt = (t) => (e) => typeof e != "string" || !/\{[^{}]+\}/g.test(e) ? void 0 : { transformed: e.replace(/\{([^{}]+)\}/g, (...o) => `var(--${A(o[1].replaceAll(".", "-"))})`) }, Wt = bt(), zt = [
|
34
34
|
"top",
|
35
35
|
"right",
|
36
36
|
"bottom",
|
@@ -51,70 +51,72 @@ const At = (t) => (e) => {
|
|
51
51
|
/.*size.*/,
|
52
52
|
/.*thickness.*/,
|
53
53
|
/.*font-size.*/
|
54
|
-
], vt = (t, e, s) => zt.some((o) => typeof o == "string" ? o === t : o.test(t)) ? `${e}px` : `${e}`, Zt = ["Webkit", "Moz", "ms", "O"], Ht = (t) => t.startsWith("-") ? t : Zt.some((e) => t.startsWith(e)) ? `-${
|
54
|
+
], vt = (t, e, s) => zt.some((o) => typeof o == "string" ? o === t : o.test(t)) ? `${e}px` : `${e}`, Zt = ["Webkit", "Moz", "ms", "O"], Ht = (t) => t.startsWith("-") ? t : Zt.some((e) => t.startsWith(e)) ? `-${A(t)}` : A(t), tt = async (t, e = "", s, n = !1) => {
|
55
55
|
if (!t) throw new Error("No styles provided to parseStyles function!");
|
56
56
|
const o = /* @__PURE__ */ new Set(), a = Object.entries(t).map(async ([m, i]) => {
|
57
|
-
const
|
57
|
+
const p = m.trim(), P = Ht(p), F = (k, O = ";") => `${P}:${k}${O}`;
|
58
58
|
if (typeof i == "function" && (i = i({ scope: e, config: s })), i instanceof Promise && (i = await i), typeof i == "object") {
|
59
59
|
if (!i) return;
|
60
|
-
if (i.isColor) return
|
61
|
-
if (
|
62
|
-
if (
|
63
|
-
const
|
64
|
-
for (const [
|
65
|
-
if (!
|
66
|
-
const
|
67
|
-
for (const [
|
68
|
-
if (!
|
69
|
-
const
|
70
|
-
(await tt(
|
60
|
+
if (i.isColor) return F(i.toString());
|
61
|
+
if (p === "defaultVariants") return;
|
62
|
+
if (p === "variants") {
|
63
|
+
const C = Object.entries(i);
|
64
|
+
for (const [_, c] of C) {
|
65
|
+
if (!c) return;
|
66
|
+
const g = Object.entries(c);
|
67
|
+
for (const [w, l] of g) {
|
68
|
+
if (!l) return;
|
69
|
+
const b = `${e}.${_}-${w}`;
|
70
|
+
(await tt(l, b, s)).forEach((V) => o.add(V));
|
71
71
|
}
|
72
72
|
}
|
73
73
|
return;
|
74
74
|
}
|
75
|
-
if (
|
76
|
-
for (const
|
77
|
-
const { css:
|
78
|
-
(await tt(
|
75
|
+
if (p === "compoundVariants") {
|
76
|
+
for (const C of i) {
|
77
|
+
const { css: _, ...c } = C, g = Object.entries(c).reduce((l, [b, x]) => `${l}.${b}-${x}`, e);
|
78
|
+
(await tt(_, g, s)).forEach((l) => o.add(l));
|
79
79
|
}
|
80
80
|
return;
|
81
81
|
}
|
82
|
-
if (
|
83
|
-
const
|
84
|
-
o.add(
|
82
|
+
if (p.startsWith("@")) {
|
83
|
+
const C = p, _ = await Q(i, e, s), c = `${C} { ${_} }`;
|
84
|
+
o.add(c);
|
85
85
|
return;
|
86
86
|
}
|
87
|
-
const
|
88
|
-
(await tt(i,
|
87
|
+
const k = m.includes("&") ? p.replace("&", e) : p.startsWith(":") ? `${e}${p}` : `${e} ${p}`;
|
88
|
+
(await tt(i, k, s)).forEach((C) => o.add(C));
|
89
89
|
return;
|
90
90
|
}
|
91
91
|
if (typeof i == "number") {
|
92
|
-
const
|
93
|
-
return
|
92
|
+
const k = vt(P, i);
|
93
|
+
return F(k);
|
94
94
|
}
|
95
95
|
if (typeof i != "string")
|
96
96
|
if ("toString" in i) i = i.toString();
|
97
|
-
else throw new Error(`Invalid value type for property ${
|
98
|
-
return
|
99
|
-
}), { modifiers: h } = {},
|
100
|
-
m.map((i) =>
|
101
|
-
const
|
102
|
-
if (!
|
103
|
-
const
|
104
|
-
if (!
|
105
|
-
const { transformed:
|
106
|
-
let
|
107
|
-
if (
|
108
|
-
for (const
|
109
|
-
|
110
|
-
return `${
|
97
|
+
else throw new Error(`Invalid value type for property ${P}`);
|
98
|
+
return F(i);
|
99
|
+
}), { modifiers: h } = {}, j = [bt(), Jt(h)], d = (await Promise.all(a).then((m) => Promise.all(
|
100
|
+
m.map((i) => j.reduce(async (p, P) => {
|
101
|
+
const F = await p;
|
102
|
+
if (!F) return F;
|
103
|
+
const R = await P(F);
|
104
|
+
if (!R) return F;
|
105
|
+
const { transformed: k, additionalCss: O } = R;
|
106
|
+
let C = "";
|
107
|
+
if (O)
|
108
|
+
for (const _ of O)
|
109
|
+
C += await Q(_, "");
|
110
|
+
return `${C}${k}`;
|
111
111
|
}, Promise.resolve(i)))
|
112
|
-
))).join(`
|
113
|
-
`);
|
114
|
-
if (!
|
115
|
-
const
|
116
|
-
|
117
|
-
}
|
112
|
+
))).filter((m) => m !== void 0).join(`
|
113
|
+
`);
|
114
|
+
if (!d.trim()) return Array.from(o);
|
115
|
+
const y = e ? `${e} {
|
116
|
+
${d}
|
117
|
+
}` : d;
|
118
|
+
return o.has(y) ? Array.from(o) : [y, ...o];
|
119
|
+
}, Q = async (t, e, s, n = !1) => (await tt(t, e, s, n)).join(`
|
118
120
|
`), Ct = async (t, e = []) => {
|
119
121
|
if (!t) return "";
|
120
122
|
const s = [], n = {};
|
@@ -125,7 +127,7 @@ const At = (t) => (e) => {
|
|
125
127
|
} else
|
126
128
|
n[o] = r;
|
127
129
|
if (Object.keys(n).length) {
|
128
|
-
const o = e.map(
|
130
|
+
const o = e.map(A).join("-"), r = "t_" + z(o, 4), a = await Q(n, `.${o}, .${r}`);
|
129
131
|
s.push(a);
|
130
132
|
}
|
131
133
|
return s.join(`
|
@@ -240,8 +242,8 @@ const Kt = {
|
|
240
242
|
format: r,
|
241
243
|
external: a
|
242
244
|
});
|
243
|
-
const h = Date.now(), { config:
|
244
|
-
return
|
245
|
+
const h = Date.now(), { config: j } = await import(`${o}?t=${h}`);
|
246
|
+
return j;
|
245
247
|
}, qt = async (t, e) => {
|
246
248
|
var pt, mt;
|
247
249
|
const s = await v(t), n = {
|
@@ -251,46 +253,46 @@ const Kt = {
|
|
251
253
|
templates: []
|
252
254
|
};
|
253
255
|
await Promise.all(
|
254
|
-
[...e].map(async (
|
255
|
-
const { contents:
|
256
|
-
Object.entries(
|
257
|
-
|
256
|
+
[...e].map(async (S) => {
|
257
|
+
const { contents: N, outputFilePath: J } = await st(t, S, s);
|
258
|
+
Object.entries(N).forEach(([E, T]) => {
|
259
|
+
T.isMedia ? n.mediaQueries.push([E, T]) : T.isGlobalDefine ? n.globalStyles.push(T) : T.isDefineVariables ? n.variables.push(T) : T.isDefineTemplates && n.templates.push(T._setPath(J));
|
258
260
|
});
|
259
261
|
})
|
260
262
|
);
|
261
|
-
const o = await Ut(t), r = { ...o }, a = /* @__PURE__ */ new Set(), h = (
|
262
|
-
if (!
|
263
|
-
if (typeof
|
264
|
-
const
|
263
|
+
const o = await Ut(t), r = { ...o }, a = /* @__PURE__ */ new Set(), h = (S, N = []) => S ? Object.entries(S).flatMap(([J, E]) => {
|
264
|
+
if (!E) return;
|
265
|
+
if (typeof E == "object") return h(E, [...N, J]);
|
266
|
+
const T = Nt(J), ot = A(J), rt = [...N, T].join(".");
|
265
267
|
a.add(`"${rt}"`);
|
266
|
-
const Y = [...
|
267
|
-
return
|
268
|
-
}) : [],
|
269
|
-
const
|
270
|
-
return
|
271
|
-
}) : [],
|
272
|
-
const ot = h(
|
268
|
+
const Y = [...N.map(A), ot].join("-"), ht = Wt(E);
|
269
|
+
return ht ? `--${Y}: ${ht.transformed};` : `--${Y}: ${E};`;
|
270
|
+
}) : [], j = (S) => S ? Object.entries(S).flatMap(([N, J]) => {
|
271
|
+
const E = h(J);
|
272
|
+
return N === "base" ? E.join("") : `${N} { ${E.join("")} }`;
|
273
|
+
}) : [], f = (S) => S ? Object.entries(S).flatMap(([N, J]) => Object.entries(J).flatMap(([E, T]) => {
|
274
|
+
const ot = h(T, [N]), rt = `.${N}-${E}, [data-${N}="${E}"]`, Y = ot.join("");
|
273
275
|
return `${rt} { ${Y} }`;
|
274
|
-
})) : [],
|
275
|
-
D(
|
276
|
-
const
|
277
|
-
D(
|
278
|
-
const
|
279
|
-
D(
|
280
|
-
const b = u(s, "css/_templates.css"), x = B(o.templates, n.templates),
|
281
|
-
D(b, `@layer templates { ${
|
276
|
+
})) : [], d = (S) => ({ ...S, responsive: void 0, conditional: void 0 }), y = (S) => n.variables.map((N) => S === "static" ? d(N._current) : N._current[S]), $ = B(d(o.variables), y("static")), m = h($), i = B((pt = o.variables) == null ? void 0 : pt.responsive, y("responsive")), p = j(i), P = B((mt = o.variables) == null ? void 0 : mt.conditional, y("conditional")), F = f(P), R = u(s, "css/_variables.css"), k = `:root { ${m.join("")} ${p.join("")} } ${F.join("")}`;
|
277
|
+
D(R, k), r.staticVariables = $;
|
278
|
+
const O = u(s, "css/_global.css"), C = B(o.global, n.globalStyles), _ = await Q(C, "");
|
279
|
+
D(O, `@layer global { ${_} }`);
|
280
|
+
const c = u(s, "css/_reset.css"), w = o.reset === "none" ? {} : typeof o.reset == "object" ? o.reset : Kt, l = await Q(w, "");
|
281
|
+
D(c, `@layer reset { ${l} }`);
|
282
|
+
const b = u(s, "css/_templates.css"), x = B(o.templates, n.templates), V = await Ct(x), K = It(x);
|
283
|
+
D(b, `@layer templates { ${V} }`), r.templates = x;
|
282
284
|
const L = Lt(n.templates);
|
283
|
-
r.templatePaths = Object.fromEntries(Object.entries(L).map(([
|
285
|
+
r.templatePaths = Object.fromEntries(Object.entries(L).map(([S, N]) => [S, N._path]));
|
284
286
|
const { mediaQueries: Z } = n;
|
285
|
-
r.mediaQueries = Object.fromEntries(Z.map(([
|
286
|
-
const U = Z.map(([
|
287
|
+
r.mediaQueries = Object.fromEntries(Z.map(([S, N]) => [`@${S}`, N]));
|
288
|
+
const U = Z.map(([S]) => `'@${S}'`).join(" | "), nt = u(s, "types/css-tokens.d.ts"), X = `
|
287
289
|
// Variable types
|
288
290
|
type VariableTokens = ${[...a].join("|")};
|
289
291
|
type PropertyValueToken = \`{\${VariableTokens}}\`;
|
290
292
|
|
291
293
|
// Template types
|
292
294
|
type TemplateTokens = {
|
293
|
-
${Object.entries(K).map(([
|
295
|
+
${Object.entries(K).map(([S, N]) => `${S}?: ${N}`).join(`
|
294
296
|
`)}
|
295
297
|
}
|
296
298
|
|
@@ -307,7 +309,7 @@ const Kt = {
|
|
307
309
|
const a = o.exec(t);
|
308
310
|
if (a) {
|
309
311
|
const h = a.at(1);
|
310
|
-
if (Pt.some((
|
312
|
+
if (Pt.some((f) => h == null ? void 0 : h.includes(f))) return e;
|
311
313
|
}
|
312
314
|
return "styled('div',";
|
313
315
|
}), Xt = (t, e) => {
|
@@ -327,7 +329,7 @@ ${t}`;
|
|
327
329
|
const r = et(e);
|
328
330
|
let a = M(e, "utf8");
|
329
331
|
a = yt(a), a = Xt(a, t);
|
330
|
-
const h = u(s, "js", n + ".js"),
|
332
|
+
const h = u(s, "js", n + ".js"), j = await ft(t), f = u(t, (j == null ? void 0 : j.configDir) || "", "salty.config.ts"), d = xt(f), y = await Ft(t);
|
331
333
|
await wt.build({
|
332
334
|
stdin: {
|
333
335
|
contents: a,
|
@@ -339,25 +341,25 @@ ${t}`;
|
|
339
341
|
treeShaking: !0,
|
340
342
|
bundle: !0,
|
341
343
|
outfile: h,
|
342
|
-
format:
|
344
|
+
format: y,
|
343
345
|
target: ["node20"],
|
344
346
|
keepNames: !0,
|
345
|
-
external:
|
347
|
+
external: d,
|
346
348
|
packages: "external",
|
347
349
|
plugins: [
|
348
350
|
{
|
349
351
|
name: "test",
|
350
|
-
setup: (
|
351
|
-
|
352
|
-
const
|
353
|
-
return { contents: yt(
|
352
|
+
setup: (i) => {
|
353
|
+
i.onLoad({ filter: /.*\.css|salty|styles|styled\.ts/ }, (p) => {
|
354
|
+
const P = M(p.path, "utf8");
|
355
|
+
return { contents: yt(P), loader: "ts" };
|
354
356
|
});
|
355
357
|
}
|
356
358
|
}
|
357
359
|
]
|
358
360
|
});
|
359
|
-
const
|
360
|
-
return { contents: await import(`${h}?t=${
|
361
|
+
const $ = Date.now();
|
362
|
+
return { contents: await import(`${h}?t=${$}`), outputFilePath: h };
|
361
363
|
}, Yt = async (t) => {
|
362
364
|
const e = await v(t), s = u(e, "cache/config-cache.json"), n = M(s, "utf8");
|
363
365
|
if (!n) throw new Error("Could not find config cache file");
|
@@ -379,96 +381,96 @@ ${t}`;
|
|
379
381
|
s && (() => {
|
380
382
|
ct(a) && _t("rm -rf " + a), I(a, { recursive: !0 }), I(u(a, "css")), I(u(a, "types")), I(u(a, "js")), I(u(a, "cache"));
|
381
383
|
})();
|
382
|
-
const
|
383
|
-
async function
|
384
|
-
const
|
385
|
-
if (
|
386
|
-
const
|
387
|
-
if (
|
388
|
-
await Promise.all(
|
389
|
-
} else if (
|
390
|
-
|
391
|
-
const b = M(
|
392
|
-
/define[\w\d]+\(/.test(b) &&
|
384
|
+
const f = /* @__PURE__ */ new Set(), d = /* @__PURE__ */ new Set();
|
385
|
+
async function y(c) {
|
386
|
+
const g = ["node_modules", "saltygen"], w = Et(c);
|
387
|
+
if (w.isDirectory()) {
|
388
|
+
const l = Tt(c);
|
389
|
+
if (g.some((x) => c.includes(x))) return;
|
390
|
+
await Promise.all(l.map((x) => y(u(c, x))));
|
391
|
+
} else if (w.isFile() && G(c)) {
|
392
|
+
f.add(c);
|
393
|
+
const b = M(c, "utf8");
|
394
|
+
/define[\w\d]+\(/.test(b) && d.add(c);
|
393
395
|
}
|
394
396
|
}
|
395
|
-
await
|
396
|
-
const
|
397
|
+
await y(t), await qt(t, d);
|
398
|
+
const $ = {
|
397
399
|
keyframes: [],
|
398
400
|
components: [],
|
399
401
|
classNames: []
|
400
402
|
};
|
401
403
|
await Promise.all(
|
402
|
-
[...
|
403
|
-
const { contents:
|
404
|
-
Object.entries(
|
405
|
-
|
406
|
-
value:
|
407
|
-
src:
|
408
|
-
name:
|
409
|
-
}) :
|
410
|
-
...
|
411
|
-
src:
|
412
|
-
name:
|
413
|
-
}) :
|
414
|
-
...
|
415
|
-
src:
|
416
|
-
name:
|
404
|
+
[...f].map(async (c) => {
|
405
|
+
const { contents: g } = await st(t, c, a);
|
406
|
+
Object.entries(g).forEach(([w, l]) => {
|
407
|
+
l.isKeyframes ? $.keyframes.push({
|
408
|
+
value: l,
|
409
|
+
src: c,
|
410
|
+
name: w
|
411
|
+
}) : l.isClassName ? $.classNames.push({
|
412
|
+
...l,
|
413
|
+
src: c,
|
414
|
+
name: w
|
415
|
+
}) : l.generator && $.components.push({
|
416
|
+
...l,
|
417
|
+
src: c,
|
418
|
+
name: w
|
417
419
|
});
|
418
420
|
});
|
419
421
|
})
|
420
422
|
);
|
421
|
-
const
|
422
|
-
for (const
|
423
|
-
const { value:
|
424
|
-
o.push(
|
423
|
+
const m = await ut(t);
|
424
|
+
for (const c of $.keyframes) {
|
425
|
+
const { value: g } = c, w = `a_${g.animationName}.css`, l = `css/${w}`, b = u(a, l);
|
426
|
+
o.push(w), D(b, g.css);
|
425
427
|
}
|
426
|
-
const
|
427
|
-
for (const
|
428
|
-
const { src:
|
429
|
-
callerName:
|
428
|
+
const i = {};
|
429
|
+
for (const c of $.components) {
|
430
|
+
const { src: g, name: w } = c, l = c.generator._withBuildContext({
|
431
|
+
callerName: w,
|
430
432
|
isProduction: e,
|
431
|
-
config:
|
433
|
+
config: m
|
432
434
|
});
|
433
|
-
r[
|
434
|
-
const b = await
|
435
|
+
r[l.priority] || (r[l.priority] = []);
|
436
|
+
const b = await l.css;
|
435
437
|
if (!b) continue;
|
436
|
-
r[
|
437
|
-
const x = `css/${
|
438
|
-
D(
|
438
|
+
r[l.priority].push(l.cssFileName);
|
439
|
+
const x = `css/${l.cssFileName}`, V = u(a, x);
|
440
|
+
D(V, b), m.importStrategy === "component" && (i[g] ? i[g].push(l.cssFileName) : i[g] = [l.cssFileName]);
|
439
441
|
}
|
440
|
-
for (const
|
441
|
-
const { src:
|
442
|
-
callerName:
|
442
|
+
for (const c of $.classNames) {
|
443
|
+
const { src: g, name: w } = c, l = c.generator._withBuildContext({
|
444
|
+
callerName: w,
|
443
445
|
isProduction: e,
|
444
|
-
config:
|
445
|
-
}), b = await
|
446
|
+
config: m
|
447
|
+
}), b = await l.css;
|
446
448
|
if (!b) continue;
|
447
|
-
r[0].push(
|
448
|
-
const x = `css/${
|
449
|
-
D(
|
449
|
+
r[0].push(l.cssFileName);
|
450
|
+
const x = `css/${l.cssFileName}`, V = u(a, x);
|
451
|
+
D(V, b), m.importStrategy === "component" && (i[g] ? i[g].push(l.cssFileName) : i[g] = [l.cssFileName]);
|
450
452
|
}
|
451
|
-
|
452
|
-
const
|
453
|
-
`),
|
454
|
-
D(
|
453
|
+
m.importStrategy === "component" && Object.entries(i).forEach(([c, g]) => {
|
454
|
+
const w = g.map((K) => `@import url('./${K}');`).join(`
|
455
|
+
`), l = z(c, 6), b = et(c), x = A(b.name), V = u(a, `css/f_${x}-${l}.css`);
|
456
|
+
D(V, w);
|
455
457
|
});
|
456
|
-
const
|
458
|
+
const p = o.map((c) => `@import url('./css/${c}');`).join(`
|
457
459
|
`);
|
458
460
|
let k = `@layer reset, global, templates, l0, l1, l2, l3, l4, l5, l6, l7, l8;
|
459
461
|
|
460
|
-
${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((
|
462
|
+
${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((c) => {
|
461
463
|
try {
|
462
|
-
return M(u(a, "css",
|
464
|
+
return M(u(a, "css", c), "utf8").length > 0;
|
463
465
|
} catch {
|
464
466
|
return !1;
|
465
467
|
}
|
466
|
-
}).map((
|
468
|
+
}).map((c) => `@import url('./css/${c}');`).join(`
|
467
469
|
`)}
|
468
|
-
${
|
469
|
-
if (
|
470
|
-
const
|
471
|
-
const b =
|
470
|
+
${p}`;
|
471
|
+
if (m.importStrategy !== "component") {
|
472
|
+
const c = r.reduce((g, w, l) => {
|
473
|
+
const b = w.reduce((L, Z) => {
|
472
474
|
var X;
|
473
475
|
const U = u(a, "css", Z), nt = M(U, "utf8"), q = ((X = /.*-([^-]+)-\d+.css/.exec(Z)) == null ? void 0 : X.at(1)) || z(U, 6);
|
474
476
|
return L.includes(q) ? L : `${L}
|
@@ -476,16 +478,16 @@ ${w}`;
|
|
476
478
|
${nt}
|
477
479
|
/*end:${q}*/
|
478
480
|
`;
|
479
|
-
}, ""), x = `l_${
|
481
|
+
}, ""), x = `l_${l}.css`, V = u(a, "css", x), K = `@layer l${l} { ${b}
|
480
482
|
}`;
|
481
|
-
return D(
|
483
|
+
return D(V, K), `${g}
|
482
484
|
@import url('./css/${x}');`;
|
483
485
|
}, "");
|
484
|
-
k +=
|
486
|
+
k += c;
|
485
487
|
}
|
486
488
|
D(h, k);
|
487
|
-
const
|
488
|
-
at.info(`Generated CSS in ${
|
489
|
+
const C = Date.now() - n, _ = C < 200 ? "🔥" : C < 500 ? "🚀" : C < 1e3 ? "🎉" : C < 2e3 ? "🚗" : C < 5e3 ? "🤔" : "🥴";
|
490
|
+
at.info(`Generated CSS in ${C}ms! ${_}`);
|
489
491
|
} catch (n) {
|
490
492
|
console.error(n);
|
491
493
|
}
|
@@ -494,55 +496,55 @@ ${nt}
|
|
494
496
|
const n = await v(t);
|
495
497
|
if (G(e)) {
|
496
498
|
const r = [], a = await ut(t), { contents: h } = await st(t, e, n);
|
497
|
-
for (const [
|
498
|
-
if (
|
499
|
-
const
|
500
|
-
D(
|
499
|
+
for (const [j, f] of Object.entries(h)) {
|
500
|
+
if (f.isKeyframes && f.css) {
|
501
|
+
const p = `css/${`a_${f.animationName}.css`}`, P = u(n, p);
|
502
|
+
D(P, await f.css);
|
501
503
|
return;
|
502
504
|
}
|
503
|
-
if (
|
504
|
-
const
|
505
|
-
callerName:
|
505
|
+
if (f.isClassName) {
|
506
|
+
const i = f.generator._withBuildContext({
|
507
|
+
callerName: j,
|
506
508
|
isProduction: s,
|
507
509
|
config: a
|
508
|
-
}),
|
509
|
-
if (!
|
510
|
-
r[0].push(
|
511
|
-
const
|
512
|
-
D(
|
510
|
+
}), p = await i.css;
|
511
|
+
if (!p) continue;
|
512
|
+
r[0].push(i.cssFileName);
|
513
|
+
const P = `css/${i.cssFileName}`, F = u(n, P);
|
514
|
+
D(F, p);
|
513
515
|
}
|
514
|
-
if (!
|
515
|
-
const
|
516
|
-
callerName:
|
516
|
+
if (!f.generator) return;
|
517
|
+
const d = f.generator._withBuildContext({
|
518
|
+
callerName: j,
|
517
519
|
isProduction: s,
|
518
520
|
config: a
|
519
|
-
}),
|
520
|
-
if (
|
521
|
-
const
|
522
|
-
D(
|
521
|
+
}), y = await d.css;
|
522
|
+
if (!y) continue;
|
523
|
+
const $ = `css/${d.cssFileName}`, m = u(n, $);
|
524
|
+
D(m, y), r[d.priority] || (r[d.priority] = []), r[d.priority].push(d.cssFileName);
|
523
525
|
}
|
524
526
|
if (a.importStrategy !== "component")
|
525
|
-
r.forEach((
|
526
|
-
const
|
527
|
-
let
|
528
|
-
|
529
|
-
var
|
530
|
-
const
|
531
|
-
if (
|
532
|
-
const
|
533
|
-
${
|
534
|
-
/*end:${
|
527
|
+
r.forEach((j, f) => {
|
528
|
+
const d = `l_${f}.css`, y = u(n, "css", d);
|
529
|
+
let $ = M(y, "utf8");
|
530
|
+
j.forEach((m) => {
|
531
|
+
var F;
|
532
|
+
const i = u(n, "css", m), p = ((F = /.*-([^-]+)-\d+.css/.exec(m)) == null ? void 0 : F.at(1)) || z(i, 6);
|
533
|
+
if (!$.includes(p)) {
|
534
|
+
const R = M(i, "utf8"), k = `/*start:${p}-${m}*/
|
535
|
+
${R}
|
536
|
+
/*end:${p}*/
|
535
537
|
`;
|
536
|
-
|
538
|
+
$ = `${$.replace(/\}$/, "")}
|
537
539
|
${k}
|
538
540
|
}`;
|
539
541
|
}
|
540
|
-
}), D(
|
542
|
+
}), D(y, $);
|
541
543
|
});
|
542
544
|
else {
|
543
|
-
const
|
544
|
-
`),
|
545
|
-
D(
|
545
|
+
const j = r.flat().map((m) => `@import url('./${m}');`).join(`
|
546
|
+
`), f = z(e, 6), d = et(e), y = A(d.name), $ = u(n, `css/f_${y}-${f}.css`);
|
547
|
+
D($, j);
|
546
548
|
}
|
547
549
|
}
|
548
550
|
} catch (n) {
|
@@ -553,38 +555,38 @@ ${k}
|
|
553
555
|
const n = await v(t);
|
554
556
|
if (G(e)) {
|
555
557
|
const r = M(e, "utf8");
|
556
|
-
r.replace(/^(?!export\s)const\s.*/gm, (
|
557
|
-
const h = await ut(t), { contents:
|
558
|
-
let
|
559
|
-
if (Object.entries(
|
560
|
-
var
|
561
|
-
if (
|
562
|
-
const
|
563
|
-
callerName:
|
558
|
+
r.replace(/^(?!export\s)const\s.*/gm, (d) => `export ${d}`) !== r && await Ot(e, r);
|
559
|
+
const h = await ut(t), { contents: j } = await st(t, e, n);
|
560
|
+
let f = r;
|
561
|
+
if (Object.entries(j).forEach(([d, y]) => {
|
562
|
+
var l;
|
563
|
+
if (y.isKeyframes || !y.generator) return;
|
564
|
+
const $ = y.generator._withBuildContext({
|
565
|
+
callerName: d,
|
564
566
|
isProduction: s,
|
565
567
|
config: h
|
566
|
-
}),
|
567
|
-
if (!
|
568
|
-
const
|
569
|
-
if (!
|
570
|
-
const { index:
|
571
|
-
let
|
572
|
-
const
|
573
|
-
let k = 0,
|
574
|
-
for (; !
|
575
|
-
const b =
|
576
|
-
b === "(" &&
|
568
|
+
}), m = new RegExp(`\\s${d}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(r);
|
569
|
+
if (!m) return console.error("Could not find the original declaration");
|
570
|
+
const i = (l = m.at(1)) == null ? void 0 : l.trim(), p = new RegExp(`\\s${d}[=\\s]+styled\\(`, "g").exec(f);
|
571
|
+
if (!p) return console.error("Could not find the original declaration");
|
572
|
+
const { index: P } = p;
|
573
|
+
let F = !1;
|
574
|
+
const R = setTimeout(() => F = !0, 5e3);
|
575
|
+
let k = 0, O = !1, C = 0;
|
576
|
+
for (; !O && !F; ) {
|
577
|
+
const b = f[P + k];
|
578
|
+
b === "(" && C++, b === ")" && C--, C === 0 && b === ")" && (O = !0), k > f.length && (F = !0), k++;
|
577
579
|
}
|
578
|
-
if (!
|
580
|
+
if (!F) clearTimeout(R);
|
579
581
|
else throw new Error("Failed to find the end of the styled call and timed out");
|
580
|
-
const
|
581
|
-
|
582
|
+
const _ = P + k, c = f.slice(P, _), g = f, w = ` ${d} = styled(${i}, "${$.classNames}", ${JSON.stringify($.clientProps)});`;
|
583
|
+
f = f.replace(c, w), g === f && console.error("Minimize file failed to change content", { name: d, tagName: i });
|
582
584
|
}), h.importStrategy === "component") {
|
583
|
-
const
|
584
|
-
|
585
|
-
${
|
585
|
+
const d = z(e, 6), y = et(e);
|
586
|
+
f = `import '../../saltygen/css/${`f_${A(y.name)}-${d}.css`}';
|
587
|
+
${f}`;
|
586
588
|
}
|
587
|
-
return
|
589
|
+
return f = f.replace("{ styled }", "{ styledClient as styled }"), f = f.replace("@salty-css/react/styled", "@salty-css/react/styled-client"), f;
|
588
590
|
}
|
589
591
|
} catch (n) {
|
590
592
|
console.error("Error in minimizeFile:", n);
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@salty-css/vite",
|
3
|
-
"version": "0.0.1-alpha.
|
3
|
+
"version": "0.0.1-alpha.208",
|
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.
|
37
|
+
"@salty-css/core": "^0.0.1-alpha.208"
|
38
38
|
}
|
39
39
|
}
|