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