@salty-css/vite 0.0.1-alpha.207 → 0.0.1-alpha.209
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 +226 -220
- 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"),l=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},Et=(t,e)=>{let s=e.length;for(;s;)t=t*33^e.charCodeAt(--s);return t},v=(t,e=5)=>{const s=Et(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 Tt=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:f}=a(g);return f&&n.push(f),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),P=(_,T=";")=>`${k}:${_}${T}`;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 P(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,u]of h){if(!u)return;const S=`${e}.${D}-${b}`;(await Y(u,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((u,[S,N])=>`${u}.${S}-${N}`,e);(await Y(D,h,s)).forEach(u=>o.add(u))}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 P(_)}if(typeof i!="string")if("toString"in i)i=i.toString();else throw new Error(`Invalid value type for property ${k}`);return P(i)}),{modifiers:g}={},C=[ht(),Tt(g)],p=(await Promise.all(a).then(m=>Promise.all(m.map(i=>C.reduce(async(y,k)=>{const P=await y;if(!P)return P;const R=await k(P);if(!R)return P;const{transformed:_,additionalCss:T}=R;let j="";if(T)for(const D of T)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=l.join(t,"package.json");return d.existsSync(e)?e:bt(l.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=l.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),Pt=async t=>{if(J.rcFile)return J.rcFile;if(t==="/")throw new Error("Could not find .saltyrc.json file");const e=l.join(t,".saltyrc.json"),s=await tt.readFile(e,"utf-8").then(JSON.parse).catch(()=>{});return s?(J.rcFile=s,s):Pt(l.join(t,".."))},at=async t=>{var n,o;const e=await Pt(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=l.join(t,(e==null?void 0:e.configDir)||"","salty.config.ts"),o=l.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:x,outputFilePath:A}=await et(t,F,s);Object.entries(x).forEach(([O,E])=>{E.isMedia?n.mediaQueries.push([O,E]):E.isGlobalDefine?n.globalStyles.push(E):E.isDefineVariables?n.variables.push(E):E.isDefineTemplates&&n.templates.push(E._setPath(A))})}));const o=await Ht(t),r={...o},a=new Set,g=(F,x=[])=>F?Object.entries(F).flatMap(([A,O])=>{if(!O)return;if(typeof O=="object")return g(O,[...x,A]);const E=jt(A),nt=V(A),ot=[...x,E].join(".");a.add(`"${ot}"`);const X=[...x.map(V),nt].join("-"),dt=Mt(O);return dt?`--${X}: ${dt.transformed};`:`--${X}: ${O};`}):[],C=F=>F?Object.entries(F).flatMap(([x,A])=>{const O=g(A);return x==="base"?O.join(""):`${x} { ${O.join("")} }`}):[],f=F=>F?Object.entries(F).flatMap(([x,A])=>Object.entries(A).flatMap(([O,E])=>{const nt=g(E,[x]),ot=`.${x}-${O}, [data-${x}="${O}"]`,X=nt.join("");return`${ot} { ${X} }`})):[],p=F=>({...F,responsive:void 0,conditional:void 0}),w=F=>n.variables.map(x=>F==="static"?p(x._current):x._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")),P=f(k),R=l.join(s,"css/_variables.css"),_=`:root { ${m.join("")} ${y.join("")} } ${P.join("")}`;d.writeFileSync(R,_),r.staticVariables=$;const T=l.join(s,"css/_global.css"),j=Z(o.global,n.globalStyles),D=await G(j,"");d.writeFileSync(T,`@layer global { ${D} }`);const c=l.join(s,"css/_reset.css"),b=o.reset==="none"?{}:typeof o.reset=="object"?o.reset:It,u=await G(b,"");d.writeFileSync(c,`@layer reset { ${u} }`);const S=l.join(s,"css/_templates.css"),N=Z(o.templates,n.templates),M=await wt(N),H=vt(N);d.writeFileSync(S,`@layer templates { ${M} }`),r.templates=N;const L=Zt(n.templates);r.templatePaths=Object.fromEntries(Object.entries(L).map(([F,x])=>[F,x._path]));const{mediaQueries:W}=n;r.mediaQueries=Object.fromEntries(W.map(([F,x])=>[`@${F}`,x]));const K=W.map(([F])=>`'@${F}'`).join(" | "),st=l.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,x])=>`${F}?: ${x}`).join(`
|
12
14
|
`)}
|
13
15
|
}
|
14
16
|
|
15
17
|
// Media query types
|
16
18
|
type MediaQueryKeys = ${K||"''"};
|
17
|
-
`;d.writeFileSync(st,Q);const
|
19
|
+
`;d.writeFileSync(st,Q);const Nt=l.join(s,"cache/config-cache.json");d.writeFileSync(Nt,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(f=>g==null?void 0:g.includes(f)))return e}return"styled('div',"}),Bt=(t,e)=>{try{const s=d.readFileSync(l.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
|
-
`),u=
|
23
|
+
${t}`}catch{return t}},et=async(t,e,s)=>{const n=v(e),o=l.join(s,"./temp");d.existsSync(o)||d.mkdirSync(o);const r=l.parse(e);let a=d.readFileSync(e,"utf8");a=yt(a),a=Bt(a,t);const g=l.join(s,"js",n+".js"),C=await at(t),f=l.join(t,(C==null?void 0:C.configDir)||"","salty.config.ts"),p=Ft(f),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=l.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=l.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=l.join(a,"index.css");s&&(()=>{d.existsSync(a)&&_t.execSync("rm -rf "+a),d.mkdirSync(a,{recursive:!0}),d.mkdirSync(l.join(a,"css")),d.mkdirSync(l.join(a,"types")),d.mkdirSync(l.join(a,"js")),d.mkdirSync(l.join(a,"cache"))})();const f=new Set,p=new Set;async function w(c){const h=["node_modules","saltygen"],b=d.statSync(c);if(b.isDirectory()){const u=d.readdirSync(c);if(h.some(N=>c.includes(N)))return;await Promise.all(u.map(N=>w(l.join(c,N))))}else if(b.isFile()&&q(c)){f.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([...f].map(async c=>{const{contents:h}=await et(t,c,a);Object.entries(h).forEach(([b,u])=>{u.isKeyframes?$.keyframes.push({value:u,src:c,name:b}):u.isClassName?$.classNames.push({...u,src:c,name:b}):u.generator&&$.components.push({...u,src:c,name:b})})}));const m=await ct(t);for(const c of $.keyframes){const{value:h}=c,b=`a_${h.animationName}.css`,u=`css/${b}`,S=l.join(a,u);o.push(b),d.writeFileSync(S,h.css)}const i={};for(const c of $.components){const{src:h,name:b}=c;i[h]||(i[h]=[]);const u=c.generator._withBuildContext({callerName:b,isProduction:e,config:m});r[u.priority]||(r[u.priority]=[]);const S=await u.css;if(!S)continue;r[u.priority].push(u.cssFileName);const N=`css/${u.cssFileName}`,M=l.join(a,N);d.writeFileSync(M,S),m.importStrategy==="component"&&i[h].push(u.cssFileName)}for(const c of $.classNames){const{src:h,name:b}=c;i[h]||(i[h]=[]);const u=c.generator._withBuildContext({callerName:b,isProduction:e,config:m}),S=await u.css;if(!S)continue;r[0].push(u.cssFileName);const N=`css/${u.cssFileName}`,M=l.join(a,N);d.writeFileSync(M,S),m.importStrategy==="component"&&i[h].push(u.cssFileName)}m.importStrategy==="component"&&Object.entries(i).forEach(([c,h])=>{const b=h.map(H=>`@import url('./${H}');`).join(`
|
24
|
+
`),u=v(c,6),S=l.parse(c),N=V(S.name),M=l.join(a,`css/f_${N}-${u}.css`);d.writeFileSync(M,b||"/* Empty file */")});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(l.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,u)=>{const S=b.reduce((L,W)=>{var Q;const K=l.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
|
-
`},""),
|
32
|
-
}`;return d.writeFileSync(
|
33
|
-
@import url('./css/${
|
34
|
-
${
|
35
|
-
/*end:${
|
36
|
-
|
33
|
+
`},""),N=`l_${u}.css`,M=l.join(a,"css",N),H=`@layer l${u} { ${S}
|
34
|
+
}`;return d.writeFileSync(M,H),`${h}
|
35
|
+
@import url('./css/${N}');`},"");_+=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,f]of Object.entries(g)){if(f.isKeyframes&&f.css){const y=`css/${`a_${f.animationName}.css`}`,k=l.join(n,y);d.writeFileSync(k,await f.css);return}if(f.isClassName){const i=f.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}`,P=l.join(n,k);d.writeFileSync(P,y)}if(!f.generator)return;const p=f.generator._withBuildContext({callerName:C,isProduction:s,config:a}),w=await p.css;if(!w)continue;const $=`css/${p.cssFileName}`,m=l.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,f)=>{const p=`l_${f}.css`,w=l.join(n,"css",p);let $=d.readFileSync(w,"utf8");C.forEach(m=>{var P;const i=l.join(n,"css",m),y=((P=/.*-([^-]+)-\d+.css/.exec(m))==null?void 0:P.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
|
+
`),f=v(e,6),p=l.parse(e),w=V(p.name),$=l.join(n,`css/f_${w}-${f}.css`);d.writeFileSync($,C||"/* Empty file */")}}}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 f=r;if(Object.entries(C).forEach(([p,w])=>{var u;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=(u=m.at(1))==null?void 0:u.trim(),y=new RegExp(`\\s${p}[=\\s]+styled\\(`,"g").exec(f);if(!y)return console.error("Could not find the original declaration");const{index:k}=y;let P=!1;const R=setTimeout(()=>P=!0,5e3);let _=0,T=!1,j=0;for(;!T&&!P;){const S=f[k+_];S==="("&&j++,S===")"&&j--,j===0&&S===")"&&(T=!0),_>f.length&&(P=!0),_++}if(!P)clearTimeout(R);else throw new Error("Failed to find the end of the styled call and timed out");const D=k+_,c=f.slice(k,D),h=f,b=` ${p} = styled(${i}, "${$.classNames}", ${JSON.stringify($.clientProps)});`;f=f.replace(c,b),h===f&&console.error("Minimize file failed to change content",{name:p,tagName:i})}),g.importStrategy==="component"){const p=v(e,6),w=l.parse(e);f=`import '../../saltygen/css/${`f_${V(w.name)}-${p}.css`}';
|
42
|
+
${f}`}return f=f.replace("{ styled }","{ styledClient as styled }"),f=f.replace("@salty-css/react/styled","@salty-css/react/styled-client"),f}}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)},xt=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=xt;exports.saltyPlugin=xt;
|
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 yt = (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 = yt(n % 52) + s;
|
10
|
+
return s = yt(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: l } = a(h);
|
30
|
+
return l && n.push(l), 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 y = Object.entries(c);
|
67
|
+
for (const [w, f] of y) {
|
68
|
+
if (!f) return;
|
69
|
+
const b = `${e}.${_}-${w}`;
|
70
|
+
(await tt(f, 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, y = Object.entries(c).reduce((f, [b, N]) => `${f}.${b}-${N}`, e);
|
78
|
+
(await tt(_, y, s)).forEach((f) => o.add(f));
|
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 g = e ? `${e} {
|
116
|
+
${d}
|
117
|
+
}` : d;
|
118
|
+
return o.has(g) ? Array.from(o) : [g, ...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(`
|
@@ -156,8 +158,8 @@ const Ft = async (t) => {
|
|
156
158
|
format: it.combine(it.colorize(), it.cli()),
|
157
159
|
transports: [new Mt.Console({})]
|
158
160
|
});
|
159
|
-
function
|
160
|
-
return t ? typeof t != "string" ?
|
161
|
+
function xt(t) {
|
162
|
+
return t ? typeof t != "string" ? xt(String(t)) : t.replace(/[\s-]/g, ".").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g, (e, s) => (s > 0 ? "." : "") + e.toLowerCase()) : "";
|
161
163
|
}
|
162
164
|
const Kt = {
|
163
165
|
/** Set box model to border-box */
|
@@ -209,7 +211,7 @@ const Kt = {
|
|
209
211
|
externalModules: [],
|
210
212
|
rcFile: void 0,
|
211
213
|
destDir: void 0
|
212
|
-
},
|
214
|
+
}, Nt = (t) => {
|
213
215
|
if (W.externalModules.length > 0) return W.externalModules;
|
214
216
|
const s = M(t, "utf8").match(/externalModules:\s?\[(.*)\]/);
|
215
217
|
if (!s) return [];
|
@@ -230,7 +232,7 @@ const Kt = {
|
|
230
232
|
const e = await kt(t), s = (n = e.projects) == null ? void 0 : n.find((r) => t.endsWith(r.dir || ""));
|
231
233
|
return s || ((o = e.projects) == null ? void 0 : o.find((r) => r.dir === e.defaultProject));
|
232
234
|
}, Ut = async (t) => {
|
233
|
-
const e = await ft(t), s = await v(t), n = u(t, (e == null ? void 0 : e.configDir) || "", "salty.config.ts"), o = u(s, "salty.config.js"), r = await Ft(t), a =
|
235
|
+
const e = await ft(t), s = await v(t), n = u(t, (e == null ? void 0 : e.configDir) || "", "salty.config.ts"), o = u(s, "salty.config.js"), r = await Ft(t), a = Nt(n);
|
234
236
|
await wt.build({
|
235
237
|
entryPoints: [n],
|
236
238
|
minify: !0,
|
@@ -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: x, outputFilePath: J } = await st(t, S, s);
|
258
|
+
Object.entries(x).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, x = []) => S ? Object.entries(S).flatMap(([J, E]) => {
|
264
|
+
if (!E) return;
|
265
|
+
if (typeof E == "object") return h(E, [...x, J]);
|
266
|
+
const T = xt(J), ot = A(J), rt = [...x, 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 = [...x.map(A), ot].join("-"), ht = Wt(E);
|
269
|
+
return ht ? `--${Y}: ${ht.transformed};` : `--${Y}: ${E};`;
|
270
|
+
}) : [], j = (S) => S ? Object.entries(S).flatMap(([x, J]) => {
|
271
|
+
const E = h(J);
|
272
|
+
return x === "base" ? E.join("") : `${x} { ${E.join("")} }`;
|
273
|
+
}) : [], l = (S) => S ? Object.entries(S).flatMap(([x, J]) => Object.entries(J).flatMap(([E, T]) => {
|
274
|
+
const ot = h(T, [x]), rt = `.${x}-${E}, [data-${x}="${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"),
|
281
|
-
D(b, `@layer templates { ${
|
276
|
+
})) : [], d = (S) => ({ ...S, responsive: void 0, conditional: void 0 }), g = (S) => n.variables.map((x) => S === "static" ? d(x._current) : x._current[S]), $ = B(d(o.variables), g("static")), m = h($), i = B((pt = o.variables) == null ? void 0 : pt.responsive, g("responsive")), p = j(i), P = B((mt = o.variables) == null ? void 0 : mt.conditional, g("conditional")), F = l(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, f = await Q(w, "");
|
281
|
+
D(c, `@layer reset { ${f} }`);
|
282
|
+
const b = u(s, "css/_templates.css"), N = B(o.templates, n.templates), V = await Ct(N), K = It(N);
|
283
|
+
D(b, `@layer templates { ${V} }`), r.templates = N;
|
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, x]) => [S, x._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, x]) => [`@${S}`, x]));
|
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, x]) => `${S}?: ${x}`).join(`
|
294
296
|
`)}
|
295
297
|
}
|
296
298
|
|
@@ -300,14 +302,14 @@ const Kt = {
|
|
300
302
|
D(nt, X);
|
301
303
|
const Dt = u(s, "cache/config-cache.json");
|
302
304
|
D(Dt, JSON.stringify(r, null, 2));
|
303
|
-
},
|
305
|
+
}, gt = (t) => t.replace(/styled\(([^"'`{,]+),/g, (e, s) => {
|
304
306
|
if (/^['"`]/.test(s)) return e;
|
305
307
|
const o = new RegExp(`import[^;]*${s}[,\\s{][^;]*from\\s?([^{};]+);`);
|
306
308
|
if (!o.test(t)) return e;
|
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((l) => h == null ? void 0 : h.includes(l))) return e;
|
311
313
|
}
|
312
314
|
return "styled('div',";
|
313
315
|
}), Xt = (t, e) => {
|
@@ -326,8 +328,8 @@ ${t}`;
|
|
326
328
|
ct(o) || I(o);
|
327
329
|
const r = et(e);
|
328
330
|
let a = M(e, "utf8");
|
329
|
-
a =
|
330
|
-
const h = u(s, "js", n + ".js"),
|
331
|
+
a = gt(a), a = Xt(a, t);
|
332
|
+
const h = u(s, "js", n + ".js"), j = await ft(t), l = u(t, (j == null ? void 0 : j.configDir) || "", "salty.config.ts"), d = Nt(l), g = 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: g,
|
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:
|
352
|
+
setup: (i) => {
|
353
|
+
i.onLoad({ filter: /.*\.css|salty|styles|styled\.ts/ }, (p) => {
|
354
|
+
const P = M(p.path, "utf8");
|
355
|
+
return { contents: gt(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,100 @@ ${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 y = ["node_modules", "saltygen"],
|
385
|
-
if (
|
386
|
-
const f = Tt(
|
387
|
-
if (y.some((
|
388
|
-
await Promise.all(f.map((
|
389
|
-
} else if (
|
390
|
-
|
391
|
-
const b = M(
|
392
|
-
/define[\w\d]+\(/.test(b) &&
|
384
|
+
const l = /* @__PURE__ */ new Set(), d = /* @__PURE__ */ new Set();
|
385
|
+
async function g(c) {
|
386
|
+
const y = ["node_modules", "saltygen"], w = Et(c);
|
387
|
+
if (w.isDirectory()) {
|
388
|
+
const f = Tt(c);
|
389
|
+
if (y.some((N) => c.includes(N))) return;
|
390
|
+
await Promise.all(f.map((N) => g(u(c, N))));
|
391
|
+
} else if (w.isFile() && G(c)) {
|
392
|
+
l.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 g(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: y } = await st(t,
|
404
|
-
Object.entries(y).forEach(([
|
405
|
-
f.isKeyframes ?
|
404
|
+
[...l].map(async (c) => {
|
405
|
+
const { contents: y } = await st(t, c, a);
|
406
|
+
Object.entries(y).forEach(([w, f]) => {
|
407
|
+
f.isKeyframes ? $.keyframes.push({
|
406
408
|
value: f,
|
407
|
-
src:
|
408
|
-
name:
|
409
|
-
}) : f.isClassName ?
|
409
|
+
src: c,
|
410
|
+
name: w
|
411
|
+
}) : f.isClassName ? $.classNames.push({
|
410
412
|
...f,
|
411
|
-
src:
|
412
|
-
name:
|
413
|
-
}) : f.generator &&
|
413
|
+
src: c,
|
414
|
+
name: w
|
415
|
+
}) : f.generator && $.components.push({
|
414
416
|
...f,
|
415
|
-
src:
|
416
|
-
name:
|
417
|
+
src: c,
|
418
|
+
name: w
|
417
419
|
});
|
418
420
|
});
|
419
421
|
})
|
420
422
|
);
|
421
|
-
const
|
422
|
-
for (const
|
423
|
-
const { value: y } =
|
424
|
-
o.push(
|
423
|
+
const m = await ut(t);
|
424
|
+
for (const c of $.keyframes) {
|
425
|
+
const { value: y } = c, w = `a_${y.animationName}.css`, f = `css/${w}`, b = u(a, f);
|
426
|
+
o.push(w), D(b, y.css);
|
425
427
|
}
|
426
|
-
const
|
427
|
-
for (const
|
428
|
-
const { src: y, name:
|
429
|
-
|
428
|
+
const i = {};
|
429
|
+
for (const c of $.components) {
|
430
|
+
const { src: y, name: w } = c;
|
431
|
+
i[y] || (i[y] = []);
|
432
|
+
const f = c.generator._withBuildContext({
|
433
|
+
callerName: w,
|
430
434
|
isProduction: e,
|
431
|
-
config:
|
435
|
+
config: m
|
432
436
|
});
|
433
437
|
r[f.priority] || (r[f.priority] = []);
|
434
438
|
const b = await f.css;
|
435
439
|
if (!b) continue;
|
436
440
|
r[f.priority].push(f.cssFileName);
|
437
|
-
const
|
438
|
-
D(
|
441
|
+
const N = `css/${f.cssFileName}`, V = u(a, N);
|
442
|
+
D(V, b), m.importStrategy === "component" && i[y].push(f.cssFileName);
|
439
443
|
}
|
440
|
-
for (const
|
441
|
-
const { src: y, name:
|
442
|
-
|
444
|
+
for (const c of $.classNames) {
|
445
|
+
const { src: y, name: w } = c;
|
446
|
+
i[y] || (i[y] = []);
|
447
|
+
const f = c.generator._withBuildContext({
|
448
|
+
callerName: w,
|
443
449
|
isProduction: e,
|
444
|
-
config:
|
450
|
+
config: m
|
445
451
|
}), b = await f.css;
|
446
452
|
if (!b) continue;
|
447
453
|
r[0].push(f.cssFileName);
|
448
|
-
const
|
449
|
-
D(
|
454
|
+
const N = `css/${f.cssFileName}`, V = u(a, N);
|
455
|
+
D(V, b), m.importStrategy === "component" && i[y].push(f.cssFileName);
|
450
456
|
}
|
451
|
-
|
452
|
-
const
|
453
|
-
`), f = z(
|
454
|
-
D(
|
457
|
+
m.importStrategy === "component" && Object.entries(i).forEach(([c, y]) => {
|
458
|
+
const w = y.map((K) => `@import url('./${K}');`).join(`
|
459
|
+
`), f = z(c, 6), b = et(c), N = A(b.name), V = u(a, `css/f_${N}-${f}.css`);
|
460
|
+
D(V, w || "/* Empty file */");
|
455
461
|
});
|
456
|
-
const
|
462
|
+
const p = o.map((c) => `@import url('./css/${c}');`).join(`
|
457
463
|
`);
|
458
464
|
let k = `@layer reset, global, templates, l0, l1, l2, l3, l4, l5, l6, l7, l8;
|
459
465
|
|
460
|
-
${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((
|
466
|
+
${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((c) => {
|
461
467
|
try {
|
462
|
-
return M(u(a, "css",
|
468
|
+
return M(u(a, "css", c), "utf8").length > 0;
|
463
469
|
} catch {
|
464
470
|
return !1;
|
465
471
|
}
|
466
|
-
}).map((
|
472
|
+
}).map((c) => `@import url('./css/${c}');`).join(`
|
467
473
|
`)}
|
468
|
-
${
|
469
|
-
if (
|
470
|
-
const
|
471
|
-
const b =
|
474
|
+
${p}`;
|
475
|
+
if (m.importStrategy !== "component") {
|
476
|
+
const c = r.reduce((y, w, f) => {
|
477
|
+
const b = w.reduce((L, Z) => {
|
472
478
|
var X;
|
473
479
|
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
480
|
return L.includes(q) ? L : `${L}
|
@@ -476,16 +482,16 @@ ${w}`;
|
|
476
482
|
${nt}
|
477
483
|
/*end:${q}*/
|
478
484
|
`;
|
479
|
-
}, ""),
|
485
|
+
}, ""), N = `l_${f}.css`, V = u(a, "css", N), K = `@layer l${f} { ${b}
|
480
486
|
}`;
|
481
|
-
return D(
|
482
|
-
@import url('./css/${
|
487
|
+
return D(V, K), `${y}
|
488
|
+
@import url('./css/${N}');`;
|
483
489
|
}, "");
|
484
|
-
k +=
|
490
|
+
k += c;
|
485
491
|
}
|
486
492
|
D(h, k);
|
487
|
-
const
|
488
|
-
at.info(`Generated CSS in ${
|
493
|
+
const C = Date.now() - n, _ = C < 200 ? "🔥" : C < 500 ? "🚀" : C < 1e3 ? "🎉" : C < 2e3 ? "🚗" : C < 5e3 ? "🤔" : "🥴";
|
494
|
+
at.info(`Generated CSS in ${C}ms! ${_}`);
|
489
495
|
} catch (n) {
|
490
496
|
console.error(n);
|
491
497
|
}
|
@@ -494,55 +500,55 @@ ${nt}
|
|
494
500
|
const n = await v(t);
|
495
501
|
if (G(e)) {
|
496
502
|
const r = [], a = await ut(t), { contents: h } = await st(t, e, n);
|
497
|
-
for (const [
|
498
|
-
if (
|
499
|
-
const
|
500
|
-
D(
|
503
|
+
for (const [j, l] of Object.entries(h)) {
|
504
|
+
if (l.isKeyframes && l.css) {
|
505
|
+
const p = `css/${`a_${l.animationName}.css`}`, P = u(n, p);
|
506
|
+
D(P, await l.css);
|
501
507
|
return;
|
502
508
|
}
|
503
|
-
if (
|
504
|
-
const
|
505
|
-
callerName:
|
509
|
+
if (l.isClassName) {
|
510
|
+
const i = l.generator._withBuildContext({
|
511
|
+
callerName: j,
|
506
512
|
isProduction: s,
|
507
513
|
config: a
|
508
|
-
}),
|
509
|
-
if (!
|
510
|
-
r[0].push(
|
511
|
-
const
|
512
|
-
D(
|
514
|
+
}), p = await i.css;
|
515
|
+
if (!p) continue;
|
516
|
+
r[0].push(i.cssFileName);
|
517
|
+
const P = `css/${i.cssFileName}`, F = u(n, P);
|
518
|
+
D(F, p);
|
513
519
|
}
|
514
|
-
if (!
|
515
|
-
const
|
516
|
-
callerName:
|
520
|
+
if (!l.generator) return;
|
521
|
+
const d = l.generator._withBuildContext({
|
522
|
+
callerName: j,
|
517
523
|
isProduction: s,
|
518
524
|
config: a
|
519
|
-
}),
|
520
|
-
if (
|
521
|
-
const
|
522
|
-
D(
|
525
|
+
}), g = await d.css;
|
526
|
+
if (!g) continue;
|
527
|
+
const $ = `css/${d.cssFileName}`, m = u(n, $);
|
528
|
+
D(m, g), r[d.priority] || (r[d.priority] = []), r[d.priority].push(d.cssFileName);
|
523
529
|
}
|
524
530
|
if (a.importStrategy !== "component")
|
525
|
-
r.forEach((
|
526
|
-
const
|
527
|
-
let
|
528
|
-
|
529
|
-
var
|
530
|
-
const
|
531
|
-
if (
|
532
|
-
const
|
533
|
-
${
|
534
|
-
/*end:${
|
531
|
+
r.forEach((j, l) => {
|
532
|
+
const d = `l_${l}.css`, g = u(n, "css", d);
|
533
|
+
let $ = M(g, "utf8");
|
534
|
+
j.forEach((m) => {
|
535
|
+
var F;
|
536
|
+
const i = u(n, "css", m), p = ((F = /.*-([^-]+)-\d+.css/.exec(m)) == null ? void 0 : F.at(1)) || z(i, 6);
|
537
|
+
if (!$.includes(p)) {
|
538
|
+
const R = M(i, "utf8"), k = `/*start:${p}-${m}*/
|
539
|
+
${R}
|
540
|
+
/*end:${p}*/
|
535
541
|
`;
|
536
|
-
|
542
|
+
$ = `${$.replace(/\}$/, "")}
|
537
543
|
${k}
|
538
544
|
}`;
|
539
545
|
}
|
540
|
-
}), D(
|
546
|
+
}), D(g, $);
|
541
547
|
});
|
542
548
|
else {
|
543
|
-
const
|
544
|
-
`),
|
545
|
-
D(
|
549
|
+
const j = r.flat().map((m) => `@import url('./${m}');`).join(`
|
550
|
+
`), l = z(e, 6), d = et(e), g = A(d.name), $ = u(n, `css/f_${g}-${l}.css`);
|
551
|
+
D($, j || "/* Empty file */");
|
546
552
|
}
|
547
553
|
}
|
548
554
|
} catch (n) {
|
@@ -553,38 +559,38 @@ ${k}
|
|
553
559
|
const n = await v(t);
|
554
560
|
if (G(e)) {
|
555
561
|
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(
|
562
|
+
r.replace(/^(?!export\s)const\s.*/gm, (d) => `export ${d}`) !== r && await Ot(e, r);
|
563
|
+
const h = await ut(t), { contents: j } = await st(t, e, n);
|
564
|
+
let l = r;
|
565
|
+
if (Object.entries(j).forEach(([d, g]) => {
|
560
566
|
var f;
|
561
|
-
if (
|
562
|
-
const
|
563
|
-
callerName:
|
567
|
+
if (g.isKeyframes || !g.generator) return;
|
568
|
+
const $ = g.generator._withBuildContext({
|
569
|
+
callerName: d,
|
564
570
|
isProduction: s,
|
565
571
|
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 === "(" &&
|
572
|
+
}), m = new RegExp(`\\s${d}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(r);
|
573
|
+
if (!m) return console.error("Could not find the original declaration");
|
574
|
+
const i = (f = m.at(1)) == null ? void 0 : f.trim(), p = new RegExp(`\\s${d}[=\\s]+styled\\(`, "g").exec(l);
|
575
|
+
if (!p) return console.error("Could not find the original declaration");
|
576
|
+
const { index: P } = p;
|
577
|
+
let F = !1;
|
578
|
+
const R = setTimeout(() => F = !0, 5e3);
|
579
|
+
let k = 0, O = !1, C = 0;
|
580
|
+
for (; !O && !F; ) {
|
581
|
+
const b = l[P + k];
|
582
|
+
b === "(" && C++, b === ")" && C--, C === 0 && b === ")" && (O = !0), k > l.length && (F = !0), k++;
|
577
583
|
}
|
578
|
-
if (!
|
584
|
+
if (!F) clearTimeout(R);
|
579
585
|
else throw new Error("Failed to find the end of the styled call and timed out");
|
580
|
-
const
|
581
|
-
|
586
|
+
const _ = P + k, c = l.slice(P, _), y = l, w = ` ${d} = styled(${i}, "${$.classNames}", ${JSON.stringify($.clientProps)});`;
|
587
|
+
l = l.replace(c, w), y === l && console.error("Minimize file failed to change content", { name: d, tagName: i });
|
582
588
|
}), h.importStrategy === "component") {
|
583
|
-
const
|
584
|
-
|
585
|
-
${
|
589
|
+
const d = z(e, 6), g = et(e);
|
590
|
+
l = `import '../../saltygen/css/${`f_${A(g.name)}-${d}.css`}';
|
591
|
+
${l}`;
|
586
592
|
}
|
587
|
-
return
|
593
|
+
return l = l.replace("{ styled }", "{ styledClient as styled }"), l = l.replace("@salty-css/react/styled", "@salty-css/react/styled-client"), l;
|
588
594
|
}
|
589
595
|
} catch (n) {
|
590
596
|
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.209",
|
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.209"
|
38
38
|
}
|
39
39
|
}
|