@salty-css/vite 0.0.1-alpha.234 → 0.0.1-alpha.235
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 +19 -19
- package/index.js +109 -109
- package/package.json +2 -2
package/index.cjs
CHANGED
@@ -1,42 +1,42 @@
|
|
1
|
-
"use strict";var Rt=Object.defineProperty;var Mt=(e,
|
2
|
-
`);if(!w.trim())return Array.from(o);const m=
|
1
|
+
"use strict";var Rt=Object.defineProperty;var Mt=(t,e,s)=>e in t?Rt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var nt=(t,e,s)=>Mt(t,typeof e!="symbol"?e+"":e,s);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const vt=require("esbuild"),zt=require("child_process"),c=require("path"),f=require("fs"),dt=require("fs/promises"),Z=require("winston"),lt=require("typescript");var ft=typeof document<"u"?document.currentScript:null;function Jt(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 jt=Jt(vt),bt=t=>String.fromCharCode(t+(t>25?39:97)),Wt=(t,e)=>{let s="",n;for(n=Math.abs(t);n>52;n=n/52|0)s=bt(n%52)+s;return s=bt(n%52)+s,s.length<e?s=s.padStart(e,"a"):s.length>e&&(s=s.slice(-e)),s},At=(t,e)=>{let s=e.length;for(;s;)t=t*33^e.charCodeAt(--s);return t},W=(t,e=5)=>{const s=At(5381,JSON.stringify(t))>>>0;return Wt(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 qt=t=>e=>{if(typeof e!="string"||!t)return;let s=e;const n=[];return Object.values(t).forEach(o=>{const{pattern:r,transform:i}=o;s=s.replace(r,y=>{const{value:g,css:h}=i(y);return h&&n.push(h),g})}),{transformed:s,additionalCss:n}},Ft=t=>e=>typeof e!="string"||!/\{[^{}]+\}/g.test(e)?void 0:{transformed:e.replace(/\{([^{}]+)\}/g,(...o)=>`var(--${v(o[1].replaceAll(".","-"))})`)},It=Ft(),Ht=["top","right","bottom","left","min-width",/.*width.*/,/^[^line]*height.*/,/padding.*/,/margin.*/,/border.*/,/inset.*/,/.*radius.*/,/.*spacing.*/,/.*gap.*/,/.*indent.*/,/.*offset.*/,/.*size.*/,/.*thickness.*/,/.*font-size.*/],Lt=(t,e,s)=>Ht.some(o=>typeof o=="string"?o===t:o.test(t))?`${e}px`:`${e}`,Gt=["Webkit","Moz","ms","O"],Kt=t=>t.startsWith("-")?t:Gt.some(e=>t.startsWith(e))?`-${v(t)}`:v(t),ot=async(t,e="",s,n=!1)=>{if(!t)throw new Error("No styles provided to parseStyles function!");const o=new Set,r=Object.entries(t),i=async([p,d])=>{const $=p.trim(),P=Kt($),x=(R,k=";")=>`${P}:${R}${k}`,E={scope:e,config:s};if(typeof d=="function")return i([p,d(E)]);if(d instanceof Promise)return i([p,await d]);if(typeof d=="object"){if(!d)return;if(d.isColor)return x(d.toString());if($==="defaultVariants")return;if($==="variants"){const D=Object.entries(d);for(const[a,b]of D){if(!b)return;const C=Object.entries(b);for(const[l,j]of C){if(!j)return;const N=`${e}.${a}-${l}`;(await ot(j,N,s)).forEach(J=>o.add(J))}}return}if($==="compoundVariants"){for(const D of d){const{css:a,...b}=D,C=Object.entries(b).reduce((j,[N,O])=>`${j}.${N}-${O}`,e);(await ot(a,C,s)).forEach(j=>o.add(j))}return}if($.startsWith("@")){const D=$,a=await B(d,e,s),b=`${D} { ${a} }`;o.add(b);return}const R=p.includes("&")?$.replace("&",e):$.startsWith(":")?`${e}${$}`:`${e} ${$}`;(await ot(d,R,s)).forEach(D=>o.add(D));return}if(typeof d=="number"){const R=Lt(P,d);return x(R)}if(typeof d!="string")if("toString"in d)d=d.toString();else throw new Error(`Invalid value type for property ${P}`);return x(d)},y=r.map(i),{modifiers:g}={},h=[Ft(),qt(g)],w=(await Promise.all(y).then(p=>Promise.all(p.map(d=>h.reduce(async($,P)=>{const x=await $;if(!x)return x;const E=await P(x);if(!E)return x;const{transformed:R,additionalCss:k}=E;let D="";if(k)for(const a of k)D+=await B(a,"");return`${D}${R}`},Promise.resolve(d)))))).filter(p=>p!==void 0).join(`
|
2
|
+
`);if(!w.trim())return Array.from(o);const m=e?`${e} {
|
3
3
|
${w}
|
4
|
-
}`:w;return o.has(m)?Array.from(o):[m,...o]},B=async(e,
|
5
|
-
`),Ct=async(e
|
6
|
-
`)},
|
4
|
+
}`:w;return o.has(m)?Array.from(o):[m,...o]},B=async(t,e,s,n=!1)=>(await ot(t,e,s,n)).join(`
|
5
|
+
`),Ct=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 i=o.trim(),y=await Ct(r,[...e,i]);s.push(y)}else n[o]=r;if(Object.keys(n).length){const o=e.map(v).join("-"),r="t_"+W(o,4),i=await B(n,`.${o}, .${r}`);s.push(i)}return s.join(`
|
6
|
+
`)},Ut=t=>t?Object.entries(t).reduce((e,[s,n])=>(typeof n=="function"?e[s]="any":typeof n=="object"&&(e[s]=Pt(n).map(o=>`"${o}"`).join(" | ")),e),{}):{},Pt=(t,e="",s=new Set)=>t?(Object.entries(t).forEach(([n,o])=>{const r=e?`${e}.${n}`:n;return typeof o=="object"?Pt(o,r,s):s.add(e)}),[...s]):[],Nt=t=>{if(!t||t==="/")throw new Error("Could not find package.json file");const e=c.join(t,"package.json");return f.existsSync(e)?e:Nt(c.join(t,".."))},Qt=async t=>{const e=Nt(t);return await dt.readFile(e,"utf-8").then(JSON.parse).catch(()=>{})},Zt=async t=>{const e=await Qt(t);if(e)return e.type};let I;const _t=async t=>{if(I)return I;const e=await Zt(t);return e==="module"?I="esm":(e==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:ft&&ft.tagName.toUpperCase()==="SCRIPT"&&ft.src||new URL("index.cjs",document.baseURI).href).endsWith(".cjs"))&&(I="cjs"),I||"esm"},ut=Z.createLogger({level:"debug",format:Z.format.combine(Z.format.colorize(),Z.format.cli()),transports:[new Z.transports.Console({})]});function xt(t){return t?typeof t!="string"?xt(String(t)):t.replace(/[^\d\w]/g,"."):""}const Bt={"*, *::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"}},H=(...t)=>t.flat().reduce((e,s)=>s!=null&&s._current?{...e,...s._current}:{...e,...s},{}),Xt=(...t)=>t.flat().reduce((e,s)=>({...e,...s._children}),{});class Yt{constructor(e){nt(this,"_path");this.params=e}get _current(){return this.params.template}get isDefineTemplate(){return!0}_setPath(e){return this._path=e,this}}class te{constructor(e){nt(this,"_path");nt(this,"templates",[]);this.params=e,Object.entries(e).forEach(([s,n])=>{this.templates.push(new Yt({name:s,template:n}))})}get _current(){return this.params}get _children(){return Object.fromEntries(this.templates.map(e=>[e.params.name,e]))}get isDefineTemplates(){return!0}_setPath(e){return this._path=e,this.templates.forEach(s=>s._setPath(e)),this}}const ee=t=>new te(t),se=(t,e)=>new Promise((s,n)=>{const o=setTimeout(()=>{n(new Error("Timeout"))},100),r=lt.createSourceFile("temp.ts",t,lt.ScriptTarget.Latest,!0);function i(y){if(lt.isVariableDeclaration(y)&&y.name.getText()===e){const g=y.getStart(),h=y.getEnd();clearTimeout(o),s([g,h])}y.forEachChild(i)}i(r)}),z={externalModules:[],rcFile:void 0,destDir:void 0},Tt=t=>{if(z.externalModules.length>0)return z.externalModules;const s=f.readFileSync(t,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!s)return[];const n=s[1].split(",").map(o=>o.replace(/['"`]/g,"").trim());return z.externalModules=n,n},A=async t=>{if(z.destDir)return z.destDir;const e=await pt(t),s=c.join(t,(e==null?void 0:e.saltygenDir)||"saltygen");return z.destDir=s,s},kt=["salty","css","styles","styled"],ne=(t=[])=>new RegExp(`\\.(${[...kt,...t].join("|")})\\.`),L=(t,e=[])=>ne(e).test(t),Dt=async t=>{if(z.rcFile)return z.rcFile;if(t==="/")throw new Error("Could not find .saltyrc.json file");const e=c.join(t,".saltyrc.json"),s=await dt.readFile(e,"utf-8").then(JSON.parse).catch(()=>{});return s?(z.rcFile=s,s):Dt(c.join(t,".."))},pt=async t=>{var n,o;const e=await Dt(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))},oe=async t=>{const e=await pt(t),s=await A(t),n=c.join(t,(e==null?void 0:e.configDir)||"","salty.config.ts"),o=c.join(s,"salty.config.js"),r=await _t(t),i=Tt(n);await jt.build({entryPoints:[n],minify:!0,treeShaking:!0,bundle:!0,outfile:o,format:r,external:i});const y=Date.now(),{config:g}=await import(`${o}?t=${y}`);return{config:g,path:o}},re=async(t,e)=>{var ht,gt;const s=await A(t),n={mediaQueries:[],globalStyles:[],variables:[],templates:[]};await Promise.all([...e].map(async F=>{const{contents:_,outputFilePath:Q}=await rt(t,F,s);Object.entries(_).forEach(([M,T])=>{T.isMedia?n.mediaQueries.push([M,T]):T.isGlobalDefine?n.globalStyles.push(T):T.isDefineVariables?n.variables.push(T):T.isDefineTemplates&&n.templates.push(T._setPath(`${M};;${Q}`))})}));const{config:o,path:r}=await oe(t),i={...o},y=new Set,g=async(F,_=[])=>{if(!F)return[];const Q=Object.entries(F).map(async([T,q])=>{const et=async V=>{if(!V)return;if(V instanceof Promise)return await et(await V);if(typeof V=="function")return await et(await V());if(typeof V=="object")return await g(V,[..._,T]);const it=xt(T),at=v(T),ct=[..._,it].join(".");y.add(`"${ct}"`);const st=[..._.map(v),at].join("-"),wt=It(V);return wt?`--${st}: ${wt.transformed};`:`--${st}: ${V};`};return await et(q)});return(await Promise.all(Q)).flat()},h=async F=>{if(!F)return[];const _=Object.entries(F).map(async([M,T])=>{const q=await g(T);return M==="base"?q.join(""):`${M} { ${q.join("")} }`});return(await Promise.all(_)).flat()},u=async F=>{if(!F)return[];const _=Object.entries(F).map(async([M,T])=>{const q=Object.entries(T).map(async([V,it])=>{const at=await g(it,[M]),ct=`.${M}-${V}, [data-${M}="${V}"]`,st=at.join("");return`${ct} { ${st} }`});return(await Promise.all(q)).flat()});return(await Promise.all(_)).flat()},w=F=>({...F,responsive:void 0,conditional:void 0}),m=F=>n.variables.map(_=>F==="static"?w(_._current):_._current[F]),S=H(w(o.variables),m("static")),p=await g(S),d=H((ht=o.variables)==null?void 0:ht.responsive,m("responsive")),$=await h(d),P=H((gt=o.variables)==null?void 0:gt.conditional,m("conditional")),x=await u(P),E=c.join(s,"css/_variables.css"),R=`:root { ${p.join("")} ${$.join("")} } ${x.join("")}`;f.writeFileSync(E,R),i.staticVariables=S;const k=c.join(s,"css/_global.css"),D=H(o.global,n.globalStyles),a=await B(D,"");f.writeFileSync(k,`@layer global { ${a} }`);const b=c.join(s,"css/_reset.css"),l=o.reset==="none"?{}:typeof o.reset=="object"?o.reset:Bt,j=await B(l,"");f.writeFileSync(b,`@layer reset { ${j} }`);const N=c.join(s,"css/_templates.css"),O=H(o.templates,n.templates),J=await Ct(O),G=Ut(O);f.writeFileSync(N,`@layer templates { ${J} }`),i.templates=O;const K=o.templates?[ee(o.templates)._setPath(`config;;${r}`)]:[],X=Xt(n.templates,K);i.templatePaths=Object.fromEntries(Object.entries(X).map(([F,_])=>[F,_._path]));const{mediaQueries:Y}=n;i.mediaQueries=Object.fromEntries(Y.map(([F,_])=>[`@${F}`,_]));const U=Y.map(([F])=>`'@${F}'`).join(" | "),tt=c.join(s,"types/css-tokens.d.ts"),Et=`
|
7
7
|
// Variable types
|
8
8
|
type VariableTokens = ${[...y].join("|")};
|
9
9
|
type PropertyValueToken = \`{\${VariableTokens}}\`;
|
10
10
|
|
11
11
|
// Template types
|
12
12
|
type TemplateTokens = {
|
13
|
-
${Object.entries(
|
13
|
+
${Object.entries(G).map(([F,_])=>`${F}?: ${_}`).join(`
|
14
14
|
`)}
|
15
15
|
}
|
16
16
|
|
17
17
|
// Media query types
|
18
|
-
type MediaQueryKeys = ${
|
19
|
-
`;f.writeFileSync(tt,Et);const Vt=c.join(s,"cache/config-cache.json");f.writeFileSync(Vt,JSON.stringify(i,null,2))},$t=
|
18
|
+
type MediaQueryKeys = ${U||"''"};
|
19
|
+
`;f.writeFileSync(tt,Et);const Vt=c.join(s,"cache/config-cache.json");f.writeFileSync(Vt,JSON.stringify(i,null,2))},$t=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 i=o.exec(t);if(i){const y=i.at(1);if(kt.some(h=>y==null?void 0:y.includes(h)))return e}return"styled('div',"}),ie=(t,e)=>{try{const s=f.readFileSync(c.join(e,"saltygen/cache/config-cache.json"),"utf8");return s?`globalThis.saltyConfig = ${s};
|
20
20
|
|
21
|
-
${
|
21
|
+
${t}`:`globalThis.saltyConfig = {};
|
22
22
|
|
23
|
-
${
|
24
|
-
`),l=
|
23
|
+
${t}`}catch{return t}},rt=async(t,e,s)=>{const n=W(e),o=c.join(s,"./temp");f.existsSync(o)||f.mkdirSync(o);const r=c.parse(e);let i=f.readFileSync(e,"utf8");i=$t(i),i=ie(i,t);const y=c.join(s,"js",n+".js"),g=await pt(t),h=c.join(t,(g==null?void 0:g.configDir)||"","salty.config.ts"),u=Tt(h),w=await _t(t);await jt.build({stdin:{contents:i,sourcefile:r.base,resolveDir:r.dir,loader:"tsx"},minify:!1,treeShaking:!0,bundle:!0,outfile:y,format:w,target:["node20"],keepNames:!0,external:u,packages:"external",plugins:[{name:"test",setup:p=>{p.onLoad({filter:/.*\.css|salty|styles|styled\.ts/},d=>{const $=f.readFileSync(d.path,"utf8");return{contents:$t($),loader:"ts"}})}}]});const m=Date.now();return{contents:await import(`${y}?t=${m}`),outputFilePath:y}},ae=async t=>{const e=await A(t),s=c.join(e,"cache/config-cache.json"),n=f.readFileSync(s,"utf8");if(!n)throw new Error("Could not find config cache file");return JSON.parse(n)},mt=async t=>{const e=await ae(t),s=await A(t),n=c.join(s,"salty.config.js"),o=Date.now(),{config:r}=await import(`${n}?t=${o}`);return H(r,e)},yt=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},ce=async(t,e=yt(),s=!0)=>{try{const n=Date.now();e?ut.info("Generating CSS in production mode! 🔥"):ut.info("Generating CSS in development mode! 🚀");const o=[],r=[],i=await A(t),y=c.join(i,"index.css");s&&(()=>{f.existsSync(i)&&zt.execSync("rm -rf "+i),f.mkdirSync(i,{recursive:!0}),f.mkdirSync(c.join(i,"css")),f.mkdirSync(c.join(i,"types")),f.mkdirSync(c.join(i,"js")),f.mkdirSync(c.join(i,"cache"))})();const h=new Set,u=new Set;async function w(a){const b=["node_modules","saltygen"],C=f.statSync(a);if(C.isDirectory()){const l=f.readdirSync(a);if(b.some(N=>a.includes(N)))return;await Promise.all(l.map(N=>w(c.join(a,N))))}else if(C.isFile()&&L(a)){h.add(a);const j=f.readFileSync(a,"utf8");/define[\w\d]+\(/.test(j)&&u.add(a)}}await w(t),await re(t,u);const m={keyframes:[],components:[],classNames:[]};await Promise.all([...h].map(async a=>{const{contents:b}=await rt(t,a,i);for(let[C,l]of Object.entries(b))l instanceof Promise&&(l=await l),l.isKeyframes?m.keyframes.push({value:l,src:a,name:C}):l.isClassName?m.classNames.push({...l,src:a,name:C}):l.generator&&m.components.push({...l,src:a,name:C})}));const S=await mt(t);for(const a of m.keyframes){const{value:b}=a,C=`a_${b.animationName}.css`,l=`css/${C}`,j=c.join(i,l);o.push(C),f.writeFileSync(j,b.css)}const p={};for(const a of m.components){const{src:b,name:C}=a;p[b]||(p[b]=[]);const l=a.generator._withBuildContext({callerName:C,isProduction:e,config:S});r[l.priority]||(r[l.priority]=[]);const j=await l.css;if(!j)continue;r[l.priority].push(l.cssFileName);const N=`css/${l.cssFileName}`,O=c.join(i,N);f.writeFileSync(O,j),S.importStrategy==="component"&&p[b].push(l.cssFileName)}for(const a of m.classNames){const{src:b,name:C}=a;p[b]||(p[b]=[]);const l=a.generator._withBuildContext({callerName:C,isProduction:e,config:S}),j=await l.css;if(!j)continue;r[l.priority]||(r[l.priority]=[]),r[l.priority].push(l.cssFileName);const N=`css/${l.cssFileName}`,O=c.join(i,N);f.writeFileSync(O,j),S.importStrategy==="component"&&p[b].push(l.cssFileName)}S.importStrategy==="component"&&Object.entries(p).forEach(([a,b])=>{const C=b.map(J=>`@import url('./${J}');`).join(`
|
24
|
+
`),l=W(a,6),j=c.parse(a),N=v(j.name),O=c.join(i,`css/f_${N}-${l}.css`);f.writeFileSync(O,C||"/* Empty file */")});const d=o.map(a=>`@import url('./css/${a}');`).join(`
|
25
25
|
`);let E=`@layer reset, global, templates, l0, l1, l2, l3, l4, l5, l6, l7, l8;
|
26
26
|
|
27
27
|
${["_variables.css","_reset.css","_global.css","_templates.css"].filter(a=>{try{return f.readFileSync(c.join(i,"css",a),"utf8").length>0}catch{return!1}}).map(a=>`@import url('./css/${a}');`).join(`
|
28
28
|
`)}
|
29
|
-
${d}`;if(S.importStrategy!=="component"){const a=r.reduce((b,C,l)=>{const j=C.reduce((
|
30
|
-
/*start:${
|
29
|
+
${d}`;if(S.importStrategy!=="component"){const a=r.reduce((b,C,l)=>{const j=C.reduce((G,K)=>{var tt;const X=c.join(i,"css",K),Y=f.readFileSync(X,"utf8"),U=((tt=/.*-([^-]+)-\d+.css/.exec(K))==null?void 0:tt.at(1))||W(X,6);return G.includes(U)?G:`${G}
|
30
|
+
/*start:${U}-${K}*/
|
31
31
|
${Y}
|
32
|
-
/*end:${
|
33
|
-
`},""),N=`l_${l}.css`,O=c.join(i,"css",N),
|
34
|
-
}`;return f.writeFileSync(O,
|
35
|
-
@import url('./css/${N}');`},"");E+=a}f.writeFileSync(y,E);const k=Date.now()-n,D=k<200?"🔥":k<500?"🚀":k<1e3?"🎉":k<2e3?"🚗":k<5e3?"🤔":"🥴";ut.info(`Generated CSS in ${k}ms! ${D}`)}catch(n){console.error(n)}},le=async(e,
|
32
|
+
/*end:${U}*/
|
33
|
+
`},""),N=`l_${l}.css`,O=c.join(i,"css",N),J=`@layer l${l} { ${j}
|
34
|
+
}`;return f.writeFileSync(O,J),`${b}
|
35
|
+
@import url('./css/${N}');`},"");E+=a}f.writeFileSync(y,E);const k=Date.now()-n,D=k<200?"🔥":k<500?"🚀":k<1e3?"🎉":k<2e3?"🚗":k<5e3?"🤔":"🥴";ut.info(`Generated CSS in ${k}ms! ${D}`)}catch(n){console.error(n)}},le=async(t,e,s=yt())=>{try{const n=await A(t);if(L(e)){const r=[],i=await mt(t),{contents:y}=await rt(t,e,n);for(const[g,h]of Object.entries(y)){if(h.isKeyframes&&h.css){const d=`css/${`a_${h.animationName}.css`}`,$=c.join(n,d);f.writeFileSync($,await h.css);return}if(h.isClassName){const p=h.generator._withBuildContext({callerName:g,isProduction:s,config:i}),d=await p.css;if(!d)continue;r[p.priority]||(r[p.priority]=[]),r[p.priority].push(p.cssFileName);const $=`css/${p.cssFileName}`,P=c.join(n,$);f.writeFileSync(P,d)}if(!h.generator)return;const u=h.generator._withBuildContext({callerName:g,isProduction:s,config:i}),w=await u.css;if(!w)continue;const m=`css/${u.cssFileName}`,S=c.join(n,m);f.writeFileSync(S,w),r[u.priority]||(r[u.priority]=[]),r[u.priority].push(u.cssFileName)}if(i.importStrategy!=="component")r.forEach((g,h)=>{const u=`l_${h}.css`,w=c.join(n,"css",u);let m=f.readFileSync(w,"utf8");g.forEach(S=>{var P;const p=c.join(n,"css",S),d=((P=/.*-([^-]+)-\d+.css/.exec(S))==null?void 0:P.at(1))||W(p,6);if(!m.includes(d)){const x=f.readFileSync(p,"utf8"),E=`/*start:${d}-${S}*/
|
36
36
|
${x}
|
37
37
|
/*end:${d}*/
|
38
38
|
`;m=`${m.replace(/\}$/,"")}
|
39
39
|
${E}
|
40
40
|
}`}}),f.writeFileSync(w,m)});else{const g=r.flat().map(S=>`@import url('./${S}');`).join(`
|
41
|
-
`),h=
|
42
|
-
${u}`}return u=u.replace("@salty-css/react/class-name","@salty-css/react/class-name-client"),u=u.replace("{ styled }","{ styledClient as styled }"),u=u.replace("@salty-css/react/styled","@salty-css/react/styled-client"),u}}catch(r){console.error("Error in minimizeFile:",r)}},St=async
|
41
|
+
`),h=W(e,6),u=c.parse(e),w=v(u.name),m=c.join(n,`css/f_${w}-${h}.css`);f.writeFileSync(m,g||"/* Empty file */")}}}catch(n){console.error(n)}},fe=async(t,e,s=yt())=>{var n,o;try{const r=await A(t);if(L(e)){const y=f.readFileSync(e,"utf8"),g=await mt(t),{contents:h}=await rt(t,e,r);let u=y;for(const[w,m]of Object.entries(h)){if(m.isKeyframes||!m.generator)continue;const S=m.generator._withBuildContext({callerName:w,isProduction:s,config:g}),[p,d]=await se(u,w),$=u.slice(p,d);if(m.isClassName){const P=u,x=` ${w} = className("${S.classNames}")`;u=u.replace($,x),P===u&&console.error("Minimize file failed to change content",{name:w})}if($.includes("styled")){const P=(o=(n=/styled\(([^,]+),/.exec($))==null?void 0:n.at(1))==null?void 0:o.trim(),x=u,E=` ${w} = styled(${P}, "${S.classNames}", ${JSON.stringify(S.clientProps)})`;u=u.replace($,E),x===u&&console.error("Minimize file failed to change content",{name:w,tagName:P})}}if(g.importStrategy==="component"){const w=W(e,6),m=c.parse(e);u=`import '../../saltygen/css/${`f_${v(m.name)}-${w}.css`}';
|
42
|
+
${u}`}return u=u.replace("@salty-css/react/class-name","@salty-css/react/class-name-client"),u=u.replace("{ styled }","{ styledClient as styled }"),u=u.replace("@salty-css/react/styled","@salty-css/react/styled-client"),u}}catch(r){console.error("Error in minimizeFile:",r)}},St=async t=>{if(!t||t.includes("node_modules")||t.includes("saltygen"))return!1;if(t.includes("salty.config"))return!0;if(!L(t))return!1;const n=await dt.readFile(t,"utf-8");return!!/.+define[A-Z]\w+/.test(n)},Ot=t=>({name:"stylegen",buildStart:()=>ce(t),load:async e=>{if(L(e))return await fe(t,e)},handleHotUpdate:async({file:e,server:s})=>{await St(e)&&s.restart()},watchChange:{handler:async e=>{L(e)&&(await St(e)||await le(t,e))}}});exports.default=Ot;exports.saltyPlugin=Ot;
|
package/index.js
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
var vt = Object.defineProperty;
|
2
|
-
var
|
3
|
-
var ot = (e, t, s) =>
|
2
|
+
var Jt = (e, t, s) => t in e ? vt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s;
|
3
|
+
var ot = (e, t, s) => Jt(e, typeof t != "symbol" ? t + "" : t, s);
|
4
4
|
import * as Pt from "esbuild";
|
5
|
-
import { execSync as
|
5
|
+
import { execSync as zt } from "child_process";
|
6
6
|
import { join as u, parse as at } from "path";
|
7
|
-
import { existsSync as mt, mkdirSync as
|
7
|
+
import { existsSync as mt, mkdirSync as K, statSync as Wt, readdirSync as At, readFileSync as M, writeFileSync as x } from "fs";
|
8
8
|
import { readFile as ht } from "fs/promises";
|
9
|
-
import { createLogger as
|
9
|
+
import { createLogger as Ht, format as ut, transports as It } from "winston";
|
10
10
|
import pt from "typescript";
|
11
|
-
const
|
11
|
+
const Ct = (e) => String.fromCharCode(e + (e > 25 ? 39 : 97)), Gt = (e, t) => {
|
12
12
|
let s = "", n;
|
13
|
-
for (n = Math.abs(e); n > 52; n = n / 52 | 0) s =
|
14
|
-
return s =
|
15
|
-
},
|
13
|
+
for (n = Math.abs(e); n > 52; n = n / 52 | 0) s = Ct(n % 52) + s;
|
14
|
+
return s = Ct(n % 52) + s, s.length < t ? s = s.padStart(t, "a") : s.length > t && (s = s.slice(-t)), s;
|
15
|
+
}, Kt = (e, t) => {
|
16
16
|
let s = t.length;
|
17
17
|
for (; s; ) e = e * 33 ^ t.charCodeAt(--s);
|
18
18
|
return e;
|
19
|
-
},
|
20
|
-
const s =
|
21
|
-
return
|
19
|
+
}, A = (e, t = 5) => {
|
20
|
+
const s = Kt(5381, JSON.stringify(e)) >>> 0;
|
21
|
+
return Gt(s, t);
|
22
22
|
};
|
23
|
-
function
|
24
|
-
return e ? typeof e != "string" ?
|
23
|
+
function J(e) {
|
24
|
+
return e ? typeof e != "string" ? J(String(e)) : e.replace(/[\s.]/g, "-").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g, (t, s) => (s > 0 ? "-" : "") + t.toLowerCase()) : "";
|
25
25
|
}
|
26
|
-
const
|
26
|
+
const Lt = (e) => (t) => {
|
27
27
|
if (typeof t != "string" || !e) return;
|
28
28
|
let s = t;
|
29
29
|
const n = [];
|
@@ -34,7 +34,7 @@ const Kt = (e) => (t) => {
|
|
34
34
|
return h && n.push(h), y;
|
35
35
|
});
|
36
36
|
}), { transformed: s, additionalCss: n };
|
37
|
-
}, Nt = (e) => (t) => typeof t != "string" || !/\{[^{}]+\}/g.test(t) ? void 0 : { transformed: t.replace(/\{([^{}]+)\}/g, (...o) => `var(--${
|
37
|
+
}, Nt = (e) => (t) => typeof t != "string" || !/\{[^{}]+\}/g.test(t) ? void 0 : { transformed: t.replace(/\{([^{}]+)\}/g, (...o) => `var(--${J(o[1].replaceAll(".", "-"))})`) }, Qt = Nt(), Zt = [
|
38
38
|
"top",
|
39
39
|
"right",
|
40
40
|
"bottom",
|
@@ -55,7 +55,7 @@ const Kt = (e) => (t) => {
|
|
55
55
|
/.*size.*/,
|
56
56
|
/.*thickness.*/,
|
57
57
|
/.*font-size.*/
|
58
|
-
], Bt = (e, t, s) =>
|
58
|
+
], Bt = (e, t, s) => Zt.some((o) => typeof o == "string" ? o === e : o.test(e)) ? `${t}px` : `${t}`, Ut = ["Webkit", "Moz", "ms", "O"], qt = (e) => e.startsWith("-") ? e : Ut.some((t) => e.startsWith(t)) ? `-${J(e)}` : J(e), rt = async (e, t = "", s, n = !1) => {
|
59
59
|
if (!e) throw new Error("No styles provided to parseStyles function!");
|
60
60
|
const o = /* @__PURE__ */ new Set(), r = Object.entries(e), a = async ([p, f]) => {
|
61
61
|
const $ = p.trim(), F = qt($), _ = (R, D = ";") => `${F}:${R}${D}`, O = { scope: t, config: s };
|
@@ -70,18 +70,18 @@ const Kt = (e) => (t) => {
|
|
70
70
|
for (const [i, w] of k) {
|
71
71
|
if (!w) return;
|
72
72
|
const j = Object.entries(w);
|
73
|
-
for (const [c,
|
74
|
-
if (!
|
73
|
+
for (const [c, S] of j) {
|
74
|
+
if (!S) return;
|
75
75
|
const P = `${t}.${i}-${c}`;
|
76
|
-
(await rt(
|
76
|
+
(await rt(S, P, s)).forEach((W) => o.add(W));
|
77
77
|
}
|
78
78
|
}
|
79
79
|
return;
|
80
80
|
}
|
81
81
|
if ($ === "compoundVariants") {
|
82
82
|
for (const k of f) {
|
83
|
-
const { css: i, ...w } = k, j = Object.entries(w).reduce((
|
84
|
-
(await rt(i, j, s)).forEach((
|
83
|
+
const { css: i, ...w } = k, j = Object.entries(w).reduce((S, [P, E]) => `${S}.${P}-${E}`, t);
|
84
|
+
(await rt(i, j, s)).forEach((S) => o.add(S));
|
85
85
|
}
|
86
86
|
return;
|
87
87
|
}
|
@@ -102,7 +102,7 @@ const Kt = (e) => (t) => {
|
|
102
102
|
if ("toString" in f) f = f.toString();
|
103
103
|
else throw new Error(`Invalid value type for property ${F}`);
|
104
104
|
return _(f);
|
105
|
-
}, m = r.map(a), { modifiers: y } = {}, h = [Nt(),
|
105
|
+
}, m = r.map(a), { modifiers: y } = {}, h = [Nt(), Lt(y)], g = (await Promise.all(m).then((p) => Promise.all(
|
106
106
|
p.map((f) => h.reduce(async ($, F) => {
|
107
107
|
const _ = await $;
|
108
108
|
if (!_) return _;
|
@@ -133,7 +133,7 @@ const Kt = (e) => (t) => {
|
|
133
133
|
} else
|
134
134
|
n[o] = r;
|
135
135
|
if (Object.keys(n).length) {
|
136
|
-
const o = t.map(
|
136
|
+
const o = t.map(J).join("-"), r = "t_" + A(o, 4), a = await X(n, `.${o}, .${r}`);
|
137
137
|
s.push(a);
|
138
138
|
}
|
139
139
|
return s.join(`
|
@@ -154,18 +154,18 @@ const Kt = (e) => (t) => {
|
|
154
154
|
if (t)
|
155
155
|
return t.type;
|
156
156
|
};
|
157
|
-
let
|
157
|
+
let G;
|
158
158
|
const Dt = async (e) => {
|
159
|
-
if (
|
159
|
+
if (G) return G;
|
160
160
|
const t = await te(e);
|
161
|
-
return t === "module" ?
|
162
|
-
}, dt =
|
161
|
+
return t === "module" ? G = "esm" : (t === "commonjs" || import.meta.url.endsWith(".cjs")) && (G = "cjs"), G || "esm";
|
162
|
+
}, dt = Ht({
|
163
163
|
level: "debug",
|
164
164
|
format: ut.combine(ut.colorize(), ut.cli()),
|
165
|
-
transports: [new
|
165
|
+
transports: [new It.Console({})]
|
166
166
|
});
|
167
167
|
function kt(e) {
|
168
|
-
return e ? typeof e != "string" ? kt(String(e)) : e.replace(/[\
|
168
|
+
return e ? typeof e != "string" ? kt(String(e)) : e.replace(/[^\d\w]/g, ".") : "";
|
169
169
|
}
|
170
170
|
const ee = {
|
171
171
|
/** Set box model to border-box */
|
@@ -213,7 +213,7 @@ const ee = {
|
|
213
213
|
fontSize: "100%",
|
214
214
|
lineHeight: "1.15em"
|
215
215
|
}
|
216
|
-
},
|
216
|
+
}, L = (...e) => e.flat().reduce((t, s) => s != null && s._current ? { ...t, ...s._current } : { ...t, ...s }, {}), se = (...e) => e.flat().reduce((t, s) => ({ ...t, ...s._children }), {});
|
217
217
|
class ne {
|
218
218
|
constructor(t) {
|
219
219
|
ot(this, "_path");
|
@@ -269,32 +269,32 @@ const re = (e) => new oe(e), ae = (e, t) => new Promise((s, n) => {
|
|
269
269
|
m.forEachChild(a);
|
270
270
|
}
|
271
271
|
a(r);
|
272
|
-
}),
|
272
|
+
}), z = {
|
273
273
|
externalModules: [],
|
274
274
|
rcFile: void 0,
|
275
275
|
destDir: void 0
|
276
276
|
}, Et = (e) => {
|
277
|
-
if (
|
277
|
+
if (z.externalModules.length > 0) return z.externalModules;
|
278
278
|
const s = M(e, "utf8").match(/externalModules:\s?\[(.*)\]/);
|
279
279
|
if (!s) return [];
|
280
280
|
const n = s[1].split(",").map((o) => o.replace(/['"`]/g, "").trim());
|
281
|
-
return
|
282
|
-
},
|
283
|
-
if (
|
281
|
+
return z.externalModules = n, n;
|
282
|
+
}, H = async (e) => {
|
283
|
+
if (z.destDir) return z.destDir;
|
284
284
|
const t = await yt(e), s = u(e, (t == null ? void 0 : t.saltygenDir) || "saltygen");
|
285
|
-
return
|
286
|
-
}, Ot = ["salty", "css", "styles", "styled"], ie = (e = []) => new RegExp(`\\.(${[...Ot, ...e].join("|")})\\.`),
|
287
|
-
if (
|
285
|
+
return z.destDir = s, s;
|
286
|
+
}, Ot = ["salty", "css", "styles", "styled"], ie = (e = []) => new RegExp(`\\.(${[...Ot, ...e].join("|")})\\.`), Q = (e, t = []) => ie(t).test(e), Vt = async (e) => {
|
287
|
+
if (z.rcFile) return z.rcFile;
|
288
288
|
if (e === "/") throw new Error("Could not find .saltyrc.json file");
|
289
289
|
const t = u(e, ".saltyrc.json"), s = await ht(t, "utf-8").then(JSON.parse).catch(() => {
|
290
290
|
});
|
291
|
-
return s ? (
|
291
|
+
return s ? (z.rcFile = s, s) : Vt(u(e, ".."));
|
292
292
|
}, yt = async (e) => {
|
293
293
|
var n, o;
|
294
294
|
const t = await Vt(e), s = (n = t.projects) == null ? void 0 : n.find((r) => e.endsWith(r.dir || ""));
|
295
295
|
return s || ((o = t.projects) == null ? void 0 : o.find((r) => r.dir === t.defaultProject));
|
296
296
|
}, ce = async (e) => {
|
297
|
-
const t = await yt(e), s = await
|
297
|
+
const t = await yt(e), s = await H(e), n = u(e, (t == null ? void 0 : t.configDir) || "", "salty.config.ts"), o = u(s, "salty.config.js"), r = await Dt(e), a = Et(n);
|
298
298
|
await Pt.build({
|
299
299
|
entryPoints: [n],
|
300
300
|
minify: !0,
|
@@ -308,73 +308,73 @@ const re = (e) => new oe(e), ae = (e, t) => new Promise((s, n) => {
|
|
308
308
|
return { config: y, path: o };
|
309
309
|
}, le = async (e, t) => {
|
310
310
|
var $t, bt;
|
311
|
-
const s = await
|
311
|
+
const s = await H(e), n = {
|
312
312
|
mediaQueries: [],
|
313
313
|
globalStyles: [],
|
314
314
|
variables: [],
|
315
315
|
templates: []
|
316
316
|
};
|
317
317
|
await Promise.all(
|
318
|
-
[...t].map(async (
|
319
|
-
const { contents: N, outputFilePath: q } = await it(e,
|
318
|
+
[...t].map(async (C) => {
|
319
|
+
const { contents: N, outputFilePath: q } = await it(e, C, s);
|
320
320
|
Object.entries(N).forEach(([v, T]) => {
|
321
321
|
T.isMedia ? n.mediaQueries.push([v, T]) : T.isGlobalDefine ? n.globalStyles.push(T) : T.isDefineVariables ? n.variables.push(T) : T.isDefineTemplates && n.templates.push(T._setPath(`${v};;${q}`));
|
322
322
|
});
|
323
323
|
})
|
324
324
|
);
|
325
|
-
const { config: o, path: r } = await ce(e), a = { ...o }, m = /* @__PURE__ */ new Set(), y = async (
|
326
|
-
if (!
|
327
|
-
const q = Object.entries(
|
325
|
+
const { config: o, path: r } = await ce(e), a = { ...o }, m = /* @__PURE__ */ new Set(), y = async (C, N = []) => {
|
326
|
+
if (!C) return [];
|
327
|
+
const q = Object.entries(C).map(async ([T, I]) => {
|
328
328
|
const st = async (V) => {
|
329
329
|
if (!V) return;
|
330
330
|
if (V instanceof Promise) return await st(await V);
|
331
331
|
if (typeof V == "function") return await st(await V());
|
332
332
|
if (typeof V == "object") return await y(V, [...N, T]);
|
333
|
-
const ct = kt(T), lt =
|
333
|
+
const ct = kt(T), lt = J(T), ft = [...N, ct].join(".");
|
334
334
|
m.add(`"${ft}"`);
|
335
|
-
const nt = [...N.map(
|
336
|
-
return
|
335
|
+
const nt = [...N.map(J), lt].join("-"), St = Qt(V);
|
336
|
+
return St ? `--${nt}: ${St.transformed};` : `--${nt}: ${V};`;
|
337
337
|
};
|
338
|
-
return await st(
|
338
|
+
return await st(I);
|
339
339
|
});
|
340
340
|
return (await Promise.all(q)).flat();
|
341
|
-
}, h = async (
|
342
|
-
if (!
|
343
|
-
const N = Object.entries(
|
344
|
-
const
|
345
|
-
return v === "base" ?
|
341
|
+
}, h = async (C) => {
|
342
|
+
if (!C) return [];
|
343
|
+
const N = Object.entries(C).map(async ([v, T]) => {
|
344
|
+
const I = await y(T);
|
345
|
+
return v === "base" ? I.join("") : `${v} { ${I.join("")} }`;
|
346
346
|
});
|
347
347
|
return (await Promise.all(N)).flat();
|
348
|
-
}, l = async (
|
349
|
-
if (!
|
350
|
-
const N = Object.entries(
|
351
|
-
const
|
348
|
+
}, l = async (C) => {
|
349
|
+
if (!C) return [];
|
350
|
+
const N = Object.entries(C).map(async ([v, T]) => {
|
351
|
+
const I = Object.entries(T).map(async ([V, ct]) => {
|
352
352
|
const lt = await y(ct, [v]), ft = `.${v}-${V}, [data-${v}="${V}"]`, nt = lt.join("");
|
353
353
|
return `${ft} { ${nt} }`;
|
354
354
|
});
|
355
|
-
return (await Promise.all(
|
355
|
+
return (await Promise.all(I)).flat();
|
356
356
|
});
|
357
357
|
return (await Promise.all(N)).flat();
|
358
|
-
}, g = (
|
358
|
+
}, g = (C) => ({ ...C, responsive: void 0, conditional: void 0 }), d = (C) => n.variables.map((N) => C === "static" ? g(N._current) : N._current[C]), b = L(g(o.variables), d("static")), p = await y(b), f = L(($t = o.variables) == null ? void 0 : $t.responsive, d("responsive")), $ = await h(f), F = L((bt = o.variables) == null ? void 0 : bt.conditional, d("conditional")), _ = await l(F), O = u(s, "css/_variables.css"), R = `:root { ${p.join("")} ${$.join("")} } ${_.join("")}`;
|
359
359
|
x(O, R), a.staticVariables = b;
|
360
|
-
const D = u(s, "css/_global.css"), k =
|
360
|
+
const D = u(s, "css/_global.css"), k = L(o.global, n.globalStyles), i = await X(k, "");
|
361
361
|
x(D, `@layer global { ${i} }`);
|
362
|
-
const w = u(s, "css/_reset.css"), c = o.reset === "none" ? {} : typeof o.reset == "object" ? o.reset : ee,
|
363
|
-
x(w, `@layer reset { ${
|
364
|
-
const P = u(s, "css/_templates.css"), E =
|
365
|
-
x(P, `@layer templates { ${
|
362
|
+
const w = u(s, "css/_reset.css"), c = o.reset === "none" ? {} : typeof o.reset == "object" ? o.reset : ee, S = await X(c, "");
|
363
|
+
x(w, `@layer reset { ${S} }`);
|
364
|
+
const P = u(s, "css/_templates.css"), E = L(o.templates, n.templates), W = await _t(E), Z = Xt(E);
|
365
|
+
x(P, `@layer templates { ${W} }`), a.templates = E;
|
366
366
|
const B = o.templates ? [re(o.templates)._setPath(`config;;${r}`)] : [], Y = se(n.templates, B);
|
367
|
-
a.templatePaths = Object.fromEntries(Object.entries(Y).map(([
|
367
|
+
a.templatePaths = Object.fromEntries(Object.entries(Y).map(([C, N]) => [C, N._path]));
|
368
368
|
const { mediaQueries: tt } = n;
|
369
|
-
a.mediaQueries = Object.fromEntries(tt.map(([
|
370
|
-
const U = tt.map(([
|
369
|
+
a.mediaQueries = Object.fromEntries(tt.map(([C, N]) => [`@${C}`, N]));
|
370
|
+
const U = tt.map(([C]) => `'@${C}'`).join(" | "), et = u(s, "types/css-tokens.d.ts"), Mt = `
|
371
371
|
// Variable types
|
372
372
|
type VariableTokens = ${[...m].join("|")};
|
373
373
|
type PropertyValueToken = \`{\${VariableTokens}}\`;
|
374
374
|
|
375
375
|
// Template types
|
376
376
|
type TemplateTokens = {
|
377
|
-
${Object.entries(
|
377
|
+
${Object.entries(Z).map(([C, N]) => `${C}?: ${N}`).join(`
|
378
378
|
`)}
|
379
379
|
}
|
380
380
|
|
@@ -406,8 +406,8 @@ ${e}`;
|
|
406
406
|
return e;
|
407
407
|
}
|
408
408
|
}, it = async (e, t, s) => {
|
409
|
-
const n =
|
410
|
-
mt(o) ||
|
409
|
+
const n = A(t), o = u(s, "./temp");
|
410
|
+
mt(o) || K(o);
|
411
411
|
const r = at(t);
|
412
412
|
let a = M(t, "utf8");
|
413
413
|
a = jt(a), a = fe(a, e);
|
@@ -443,12 +443,12 @@ ${e}`;
|
|
443
443
|
const d = Date.now();
|
444
444
|
return { contents: await import(`${m}?t=${d}`), outputFilePath: m };
|
445
445
|
}, ue = async (e) => {
|
446
|
-
const t = await
|
446
|
+
const t = await H(e), s = u(t, "cache/config-cache.json"), n = M(s, "utf8");
|
447
447
|
if (!n) throw new Error("Could not find config cache file");
|
448
448
|
return JSON.parse(n);
|
449
449
|
}, gt = async (e) => {
|
450
|
-
const t = await ue(e), s = await
|
451
|
-
return
|
450
|
+
const t = await ue(e), s = await H(e), n = u(s, "salty.config.js"), o = Date.now(), { config: r } = await import(`${n}?t=${o}`);
|
451
|
+
return L(r, t);
|
452
452
|
}, wt = () => {
|
453
453
|
try {
|
454
454
|
return process.env.NODE_ENV === "production";
|
@@ -459,21 +459,21 @@ ${e}`;
|
|
459
459
|
try {
|
460
460
|
const n = Date.now();
|
461
461
|
t ? dt.info("Generating CSS in production mode! 🔥") : dt.info("Generating CSS in development mode! 🚀");
|
462
|
-
const o = [], r = [], a = await
|
462
|
+
const o = [], r = [], a = await H(e), m = u(a, "index.css");
|
463
463
|
s && (() => {
|
464
|
-
mt(a) &&
|
464
|
+
mt(a) && zt("rm -rf " + a), K(a, { recursive: !0 }), K(u(a, "css")), K(u(a, "types")), K(u(a, "js")), K(u(a, "cache"));
|
465
465
|
})();
|
466
466
|
const h = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Set();
|
467
467
|
async function g(i) {
|
468
|
-
const w = ["node_modules", "saltygen"], j =
|
468
|
+
const w = ["node_modules", "saltygen"], j = Wt(i);
|
469
469
|
if (j.isDirectory()) {
|
470
|
-
const c =
|
470
|
+
const c = At(i);
|
471
471
|
if (w.some((P) => i.includes(P))) return;
|
472
472
|
await Promise.all(c.map((P) => g(u(i, P))));
|
473
|
-
} else if (j.isFile() &&
|
473
|
+
} else if (j.isFile() && Q(i)) {
|
474
474
|
h.add(i);
|
475
|
-
const
|
476
|
-
/define[\w\d]+\(/.test(
|
475
|
+
const S = M(i, "utf8");
|
476
|
+
/define[\w\d]+\(/.test(S) && l.add(i);
|
477
477
|
}
|
478
478
|
}
|
479
479
|
await g(e), await le(e, l);
|
@@ -503,8 +503,8 @@ ${e}`;
|
|
503
503
|
);
|
504
504
|
const b = await gt(e);
|
505
505
|
for (const i of d.keyframes) {
|
506
|
-
const { value: w } = i, j = `a_${w.animationName}.css`, c = `css/${j}`,
|
507
|
-
o.push(j), x(
|
506
|
+
const { value: w } = i, j = `a_${w.animationName}.css`, c = `css/${j}`, S = u(a, c);
|
507
|
+
o.push(j), x(S, w.css);
|
508
508
|
}
|
509
509
|
const p = {};
|
510
510
|
for (const i of d.components) {
|
@@ -516,11 +516,11 @@ ${e}`;
|
|
516
516
|
config: b
|
517
517
|
});
|
518
518
|
r[c.priority] || (r[c.priority] = []);
|
519
|
-
const
|
520
|
-
if (!
|
519
|
+
const S = await c.css;
|
520
|
+
if (!S) continue;
|
521
521
|
r[c.priority].push(c.cssFileName);
|
522
522
|
const P = `css/${c.cssFileName}`, E = u(a, P);
|
523
|
-
x(E,
|
523
|
+
x(E, S), b.importStrategy === "component" && p[w].push(c.cssFileName);
|
524
524
|
}
|
525
525
|
for (const i of d.classNames) {
|
526
526
|
const { src: w, name: j } = i;
|
@@ -529,15 +529,15 @@ ${e}`;
|
|
529
529
|
callerName: j,
|
530
530
|
isProduction: t,
|
531
531
|
config: b
|
532
|
-
}),
|
533
|
-
if (!
|
532
|
+
}), S = await c.css;
|
533
|
+
if (!S) continue;
|
534
534
|
r[c.priority] || (r[c.priority] = []), r[c.priority].push(c.cssFileName);
|
535
535
|
const P = `css/${c.cssFileName}`, E = u(a, P);
|
536
|
-
x(E,
|
536
|
+
x(E, S), b.importStrategy === "component" && p[w].push(c.cssFileName);
|
537
537
|
}
|
538
538
|
b.importStrategy === "component" && Object.entries(p).forEach(([i, w]) => {
|
539
|
-
const j = w.map((
|
540
|
-
`), c =
|
539
|
+
const j = w.map((W) => `@import url('./${W}');`).join(`
|
540
|
+
`), c = A(i, 6), S = at(i), P = J(S.name), E = u(a, `css/f_${P}-${c}.css`);
|
541
541
|
x(E, j || "/* Empty file */");
|
542
542
|
});
|
543
543
|
const f = o.map((i) => `@import url('./css/${i}');`).join(`
|
@@ -555,17 +555,17 @@ ${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((i) =
|
|
555
555
|
${f}`;
|
556
556
|
if (b.importStrategy !== "component") {
|
557
557
|
const i = r.reduce((w, j, c) => {
|
558
|
-
const
|
558
|
+
const S = j.reduce((Z, B) => {
|
559
559
|
var et;
|
560
|
-
const Y = u(a, "css", B), tt = M(Y, "utf8"), U = ((et = /.*-([^-]+)-\d+.css/.exec(B)) == null ? void 0 : et.at(1)) ||
|
561
|
-
return
|
560
|
+
const Y = u(a, "css", B), tt = M(Y, "utf8"), U = ((et = /.*-([^-]+)-\d+.css/.exec(B)) == null ? void 0 : et.at(1)) || A(Y, 6);
|
561
|
+
return Z.includes(U) ? Z : `${Z}
|
562
562
|
/*start:${U}-${B}*/
|
563
563
|
${tt}
|
564
564
|
/*end:${U}*/
|
565
565
|
`;
|
566
|
-
}, ""), P = `l_${c}.css`, E = u(a, "css", P),
|
566
|
+
}, ""), P = `l_${c}.css`, E = u(a, "css", P), W = `@layer l${c} { ${S}
|
567
567
|
}`;
|
568
|
-
return x(E,
|
568
|
+
return x(E, W), `${w}
|
569
569
|
@import url('./css/${P}');`;
|
570
570
|
}, "");
|
571
571
|
O += i;
|
@@ -578,8 +578,8 @@ ${tt}
|
|
578
578
|
}
|
579
579
|
}, de = async (e, t, s = wt()) => {
|
580
580
|
try {
|
581
|
-
const n = await
|
582
|
-
if (
|
581
|
+
const n = await H(e);
|
582
|
+
if (Q(t)) {
|
583
583
|
const r = [], a = await gt(e), { contents: m } = await it(e, t, n);
|
584
584
|
for (const [y, h] of Object.entries(m)) {
|
585
585
|
if (h.isKeyframes && h.css) {
|
@@ -614,7 +614,7 @@ ${tt}
|
|
614
614
|
let d = M(g, "utf8");
|
615
615
|
y.forEach((b) => {
|
616
616
|
var F;
|
617
|
-
const p = u(n, "css", b), f = ((F = /.*-([^-]+)-\d+.css/.exec(b)) == null ? void 0 : F.at(1)) ||
|
617
|
+
const p = u(n, "css", b), f = ((F = /.*-([^-]+)-\d+.css/.exec(b)) == null ? void 0 : F.at(1)) || A(p, 6);
|
618
618
|
if (!d.includes(f)) {
|
619
619
|
const _ = M(p, "utf8"), O = `/*start:${f}-${b}*/
|
620
620
|
${_}
|
@@ -628,7 +628,7 @@ ${O}
|
|
628
628
|
});
|
629
629
|
else {
|
630
630
|
const y = r.flat().map((b) => `@import url('./${b}');`).join(`
|
631
|
-
`), h =
|
631
|
+
`), h = A(t, 6), l = at(t), g = J(l.name), d = u(n, `css/f_${g}-${h}.css`);
|
632
632
|
x(d, y || "/* Empty file */");
|
633
633
|
}
|
634
634
|
}
|
@@ -638,8 +638,8 @@ ${O}
|
|
638
638
|
}, me = async (e, t, s = wt()) => {
|
639
639
|
var n, o;
|
640
640
|
try {
|
641
|
-
const r = await
|
642
|
-
if (
|
641
|
+
const r = await H(e);
|
642
|
+
if (Q(t)) {
|
643
643
|
const m = M(t, "utf8"), y = await gt(e), { contents: h } = await it(e, t, r);
|
644
644
|
let l = m;
|
645
645
|
for (const [g, d] of Object.entries(h)) {
|
@@ -659,8 +659,8 @@ ${O}
|
|
659
659
|
}
|
660
660
|
}
|
661
661
|
if (y.importStrategy === "component") {
|
662
|
-
const g =
|
663
|
-
l = `import '../../saltygen/css/${`f_${
|
662
|
+
const g = A(t, 6), d = at(t);
|
663
|
+
l = `import '../../saltygen/css/${`f_${J(d.name)}-${g}.css`}';
|
664
664
|
${l}`;
|
665
665
|
}
|
666
666
|
return l = l.replace("@salty-css/react/class-name", "@salty-css/react/class-name-client"), l = l.replace("{ styled }", "{ styledClient as styled }"), l = l.replace("@salty-css/react/styled", "@salty-css/react/styled-client"), l;
|
@@ -671,14 +671,14 @@ ${l}`;
|
|
671
671
|
}, Ft = async (e) => {
|
672
672
|
if (!e || e.includes("node_modules") || e.includes("saltygen")) return !1;
|
673
673
|
if (e.includes("salty.config")) return !0;
|
674
|
-
if (!
|
674
|
+
if (!Q(e)) return !1;
|
675
675
|
const n = await ht(e, "utf-8");
|
676
676
|
return !!/.+define[A-Z]\w+/.test(n);
|
677
677
|
}, je = (e) => ({
|
678
678
|
name: "stylegen",
|
679
679
|
buildStart: () => pe(e),
|
680
680
|
load: async (t) => {
|
681
|
-
if (
|
681
|
+
if (Q(t))
|
682
682
|
return await me(e, t);
|
683
683
|
},
|
684
684
|
handleHotUpdate: async ({ file: t, server: s }) => {
|
@@ -686,7 +686,7 @@ ${l}`;
|
|
686
686
|
},
|
687
687
|
watchChange: {
|
688
688
|
handler: async (t) => {
|
689
|
-
|
689
|
+
Q(t) && (await Ft(t) || await de(e, t));
|
690
690
|
}
|
691
691
|
}
|
692
692
|
});
|
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.235",
|
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.235"
|
38
38
|
}
|
39
39
|
}
|