@salty-css/core 0.0.1-alpha.130 → 0.0.1-alpha.132
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/bin/main.cjs +1 -1
- package/bin/main.js +1 -1
- package/compiler/index.cjs +1 -1
- package/compiler/index.js +2 -2
- package/generator/index.cjs +1 -1
- package/generator/index.js +1 -1
- package/index-BKhQ2XRr.js +310 -0
- package/index-Bl6Ocgz0.cjs +21 -0
- package/package.json +1 -1
- package/parse-templates-DdYSw-iq.cjs +8 -0
- package/parse-templates-DnLWJ7Hc.js +100 -0
- package/index-BrNi5uoh.cjs +0 -21
- package/index-XN7f6bdr.js +0 -305
- package/parse-templates-BuKrl3n7.js +0 -100
- package/parse-templates-DIOn-gO_.cjs +0 -8
package/bin/main.cjs
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const te=require("commander"),G=require("fs"),s=require("fs/promises"),n=require("path"),ne=require("ejs"),t=require("../index-
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const te=require("commander"),G=require("fs"),s=require("fs/promises"),n=require("path"),ne=require("ejs"),t=require("../index-Bl6Ocgz0.cjs"),ie=require("../pascal-case-iWoaJWwT.cjs"),se=require("child_process"),oe=require("ora");var z=typeof document<"u"?document.currentScript:null;const X=y=>new Promise((C,P)=>{se.exec(y,F=>{if(F)return P(F);C()})}),I=async(...y)=>{const C=y.map(b=>b.replace("-D","").split("@").slice(0,-1).join("@").trim()).join(", "),P=oe(`Installing packages: ${C}`).start(),F=y.join(" ");await X(`npm install ${F}`),P.succeed(`Installed packages: ${C}`)},ae=()=>G.existsSync(n.join(process.cwd(),"node_modules",".bin","prettier"));async function S(y){try{if(!ae())return;await X(`./node_modules/.bin/prettier --write "${y}"`),t.logger.info(`Formatted ${y} with Prettier`)}catch(C){t.logger.error(`Error formatting ${y} with Prettier:`,C)}}async function re(){const y=new te.Command;y.name("salty-css").description("Salty-CSS CLI tool to help with annoying configuration tasks.");const C={"salty.config.ts":Promise.resolve().then(()=>require("../salty.config-Dk6ZcCxI.cjs")),"saltygen/index.css":Promise.resolve().then(()=>require("../index-84Wroia-.cjs")),"react/react-styled-file.ts":Promise.resolve().then(()=>require("../react-styled-file-Dkubsz-U.cjs")),"react/react-vanilla-file.ts":Promise.resolve().then(()=>require("../react-vanilla-file-CG_WJLam.cjs"))},P=async(i,a)=>{const{default:l}=await C[i],u=ne.render(l,a);return{fileName:i,content:u}},F=async()=>{const i=n.join(process.cwd(),".saltyrc.json");return await s.readFile(i,"utf-8").then(JSON.parse).catch(()=>({}))},b=n.join(process.cwd(),"package.json"),N=async(i=b)=>{const a=await s.readFile(i,"utf-8").then(JSON.parse).catch(()=>{});if(!a)throw"Could not read package.json file!";return a},Y=async(i,a=b)=>{typeof i=="object"&&(i=JSON.stringify(i,null,2)),await s.writeFile(a,i)},B=async()=>{const i=new URL("../package.json",typeof document>"u"?require("url").pathToFileURL(__filename).href:z&&z.tagName.toUpperCase()==="SCRIPT"&&z.src||new URL("bin/main.cjs",document.baseURI).href);return N(i)},V=await(async()=>(await F()).defaultProject)(),$=await B(),D={core:`@salty-css/core@${$.version}`,react:`@salty-css/react@${$.version}`,eslintConfigCore:`@salty-css/eslint-config-core@${$.version}`,vite:`@salty-css/vite@${$.version}`,next:`@salty-css/next@${$.version}`},R=i=>{const a=i==="."?"":i,l=process.cwd();return n.join(l,a)};y.command("init [directory]").description("Initialize a new Salty-CSS project.").option("-d, --dir <dir>","Project directory to initialize the project in.").option("--css-file <css-file>","Existing CSS file where to import the generated CSS. Path must be relative to the given project directory.").option("--skip-install","Skip installing dependencies.").action(async function(i="."){if(!await N().catch(()=>{}))return t.logError("Salty CSS project must be initialized in a directory with a package.json file.");t.logger.info("Initializing a new Salty-CSS project!");const{dir:l=i,cssFile:u,skipInstall:p}=this.opts();if(!l)return t.logError("Project directory must be provided. Add it as the first argument after init command or use the --dir option.");p||await I(D.core,D.react);const f=process.cwd(),r=R(l),T=await Promise.all([P("salty.config.ts"),P("saltygen/index.css")]);await s.mkdir(r,{recursive:!0});const m=T.map(async({fileName:e,content:g})=>{const c=n.join(r,e);if(await s.readFile(c,"utf-8").catch(()=>{})!==void 0){t.logger.debug("File already exists: "+c);return}const k=e.split("/").slice(0,-1).join("/");k&&await s.mkdir(n.join(r,k),{recursive:!0}),t.logger.info("Creating file: "+c),await s.writeFile(c,g),await S(c)});await Promise.all(m);const w=n.relative(f,r)||".",h=n.join(f,".saltyrc.json"),d=await s.readFile(h,"utf-8").catch(()=>{});if(d===void 0){t.logger.info("Creating file: "+h);const g=JSON.stringify({$schema:"./node_modules/@salty-css/core/.saltyrc.schema.json",info:"This file is used to define projects and their configurations for Salty CSS cli. Do not delete, modify or add this file to .gitignore.",defaultProject:w,projects:[{dir:w,framework:"react"}]},null,2);await s.writeFile(h,g),await S(h)}else{const e=JSON.parse(d),g=(e==null?void 0:e.projects)||[];if(g.findIndex(o=>o.dir===w)===-1){g.push({dir:w,framework:"react"}),e.projects=[...g];const o=JSON.stringify(e,null,2);o!==d&&(t.logger.info("Edit file: "+h),await s.writeFile(h,o),await S(h))}}const j=n.join(f,".gitignore"),U=await s.readFile(j,"utf-8").catch(()=>{});U!==void 0&&(U.includes("saltygen")||(t.logger.info("Edit file: "+j),await s.writeFile(j,U+`
|
2
2
|
|
3
3
|
# Salty-CSS
|
4
4
|
saltygen
|
package/bin/main.js
CHANGED
@@ -3,7 +3,7 @@ import { existsSync as K } from "fs";
|
|
3
3
|
import { mkdir as q, readFile as C, writeFile as w } from "fs/promises";
|
4
4
|
import { join as i, relative as z, parse as re, format as ee } from "path";
|
5
5
|
import { render as ce } from "ejs";
|
6
|
-
import { l as t, a as h, g as te } from "../index-
|
6
|
+
import { l as t, a as h, g as te } from "../index-BKhQ2XRr.js";
|
7
7
|
import { p as le } from "../pascal-case-BQpR5PdN.js";
|
8
8
|
import { exec as de } from "child_process";
|
9
9
|
import fe from "ora";
|
package/compiler/index.cjs
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("esbuild");require("child_process");require("../dash-case-BJEkFEGQ.cjs");require("path");require("fs");require("fs/promises");require("../parse-templates-
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("esbuild");require("child_process");require("../dash-case-BJEkFEGQ.cjs");require("path");require("fs");require("fs/promises");require("../parse-templates-DdYSw-iq.cjs");const e=require("../index-Bl6Ocgz0.cjs");exports.compileSaltyFile=e.compileSaltyFile;exports.generateConfigStyles=e.generateConfigStyles;exports.generateCss=e.generateCss;exports.generateFile=e.generateFile;exports.isSaltyFile=e.isSaltyFile;exports.minimizeFile=e.minimizeFile;exports.saltyFileExtensions=e.saltyFileExtensions;exports.saltyFileRegExp=e.saltyFileRegExp;
|
package/compiler/index.js
CHANGED
@@ -4,8 +4,8 @@ import "../dash-case-DBThphLm.js";
|
|
4
4
|
import "path";
|
5
5
|
import "fs";
|
6
6
|
import "fs/promises";
|
7
|
-
import "../parse-templates-
|
8
|
-
import { d as p, c as n, g, e as F, i as y, m as x, s as S, b as c } from "../index-
|
7
|
+
import "../parse-templates-DnLWJ7Hc.js";
|
8
|
+
import { d as p, c as n, g, e as F, i as y, m as x, s as S, b as c } from "../index-BKhQ2XRr.js";
|
9
9
|
export {
|
10
10
|
p as compileSaltyFile,
|
11
11
|
n as generateConfigStyles,
|
package/generator/index.cjs
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";var y=Object.defineProperty;var f=(a,t,s)=>t in a?y(a,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):a[t]=s;var c=(a,t,s)=>f(a,typeof t!="symbol"?t+"":t,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../dash-case-BJEkFEGQ.cjs"),u=require("../parse-templates-
|
1
|
+
"use strict";var y=Object.defineProperty;var f=(a,t,s)=>t in a?y(a,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):a[t]=s;var c=(a,t,s)=>f(a,typeof t!="symbol"?t+"":t,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../dash-case-BJEkFEGQ.cjs"),u=require("../parse-templates-DdYSw-iq.cjs");class N{constructor(t,s){c(this,"_isProd");c(this,"_callerName");c(this,"_context");this.tagName=t,this.params=s}get hash(){return d.toHash(this.params.base||this.params)}get priority(){var t;return typeof this.tagName=="function"||typeof this.tagName=="object"?(((t=this.tagName.generator)==null?void 0:t.priority)||0)+1:0}get classNames(){const t=[this.hash],{className:s}=this.params;return s&&t.push(s),t.join(" ")}get cssClassName(){return this.hash}get cssDisplayNameVar(){return`--${this.hash}-display-name: ${this._callerName};`}get cssFileName(){return this._callerName?`c_${d.dashCase(this._callerName)}-${this.hash}-${this.priority}.css`:`${this.hash}-${this.priority}.css`}get templateKeys(){var t;return(t=this._context)!=null&&t.config.templates?u.getTemplateKeys(this._context.config.templates):[]}get css(){var n;const{base:t={},variants:s={},compoundVariants:i=[]}=this.params,r={...t,variants:s,compoundVariants:i};return u.parseStyles(r,`.${this.cssClassName}`,this.priority,(n=this._context)==null?void 0:n.config)}get props(){const{element:t,variants:s={},compoundVariants:i=[],defaultVariants:r={},defaultProps:n={},passProps:g}=this.params,h=new Set([]),p=e=>{const o=r[e];o!==void 0?h.add(`${e}=${String(o)}`):h.add(e)};Object.keys(s).forEach(p),i.map(e=>Object.keys(e).forEach(p));const l=new Set([]);if(this.params.base){const e=JSON.stringify(this.params.base).match(/\{props\.([\w\d]+)\}/gi);e&&e.forEach(o=>{const m=o.replace(/\{props\.([\w\d]+)\}/gi,"$1");m&&l.add(m)})}return{element:t,variantKeys:[...h],propValueKeys:[...l],passProps:g,defaultProps:n,attr:{"data-component-name":this._isProd?void 0:this._callerName}}}_withBuildContext(t){this._context=t;const{name:s,config:i,prod:r}=t;return this._isProd=r,this._callerName=s,this}}exports.StyleComponentGenerator=N;
|
package/generator/index.js
CHANGED
@@ -2,7 +2,7 @@ var u = Object.defineProperty;
|
|
2
2
|
var f = (a, t, s) => t in a ? u(a, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : a[t] = s;
|
3
3
|
var c = (a, t, s) => f(a, typeof t != "symbol" ? t + "" : t, s);
|
4
4
|
import { t as g, d as y } from "../dash-case-DBThphLm.js";
|
5
|
-
import { g as N, p as _ } from "../parse-templates-
|
5
|
+
import { g as N, p as _ } from "../parse-templates-DnLWJ7Hc.js";
|
6
6
|
class v {
|
7
7
|
constructor(t, s) {
|
8
8
|
c(this, "_isProd");
|
@@ -0,0 +1,310 @@
|
|
1
|
+
import * as X from "esbuild";
|
2
|
+
import { execSync as ct } from "child_process";
|
3
|
+
import { t as H, d as R } from "./dash-case-DBThphLm.js";
|
4
|
+
import { join as o, parse as I } from "path";
|
5
|
+
import { existsSync as K, writeFileSync as $, mkdirSync as O, readFileSync as J, statSync as it, readdirSync as lt } from "fs";
|
6
|
+
import { readFile as pt, writeFile as ft } from "fs/promises";
|
7
|
+
import { p as U, a as dt, b as gt, c as ut } from "./parse-templates-DnLWJ7Hc.js";
|
8
|
+
import { createLogger as mt, format as A, transports as yt } from "winston";
|
9
|
+
const Y = (t) => {
|
10
|
+
if (!t || t === "/") throw new Error("Could not find package.json file");
|
11
|
+
const e = o(t, "package.json");
|
12
|
+
return K(e) ? e : Y(o(t, ".."));
|
13
|
+
}, ht = async (t) => {
|
14
|
+
const e = Y(t);
|
15
|
+
return await pt(e, "utf-8").then(JSON.parse).catch(() => {
|
16
|
+
});
|
17
|
+
}, bt = async (t) => {
|
18
|
+
const e = await ht(t);
|
19
|
+
if (e)
|
20
|
+
return e.type;
|
21
|
+
};
|
22
|
+
let _;
|
23
|
+
const Q = async (t) => {
|
24
|
+
if (_) return _;
|
25
|
+
const e = await bt(t);
|
26
|
+
return e === "module" ? _ = "esm" : (e === "commonjs" || import.meta.url.endsWith(".cjs")) && (_ = "cjs"), _ || "esm";
|
27
|
+
}, z = mt({
|
28
|
+
level: "debug",
|
29
|
+
format: A.combine(A.colorize(), A.cli()),
|
30
|
+
transports: [new yt.Console({})]
|
31
|
+
}), Mt = (t) => {
|
32
|
+
z.error(t);
|
33
|
+
};
|
34
|
+
function tt(t) {
|
35
|
+
return t ? typeof t != "string" ? tt(String(t)) : t.replace(/[\s-]/g, ".").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g, (e, r) => (r > 0 ? "." : "") + e.toLowerCase()) : "";
|
36
|
+
}
|
37
|
+
const $t = {
|
38
|
+
/** Set box model to border-box */
|
39
|
+
"*, *::before, *::after": {
|
40
|
+
boxSizing: "border-box"
|
41
|
+
},
|
42
|
+
/** Remove default margin and padding */
|
43
|
+
"*": {
|
44
|
+
margin: 0
|
45
|
+
},
|
46
|
+
/** Remove adjust font properties */
|
47
|
+
html: {
|
48
|
+
lineHeight: 1.15,
|
49
|
+
textSizeAdjust: "100%",
|
50
|
+
WebkitFontSmoothing: "antialiased"
|
51
|
+
},
|
52
|
+
/** Make media elements responsive */
|
53
|
+
"img, picture, video, canvas, svg": {
|
54
|
+
display: "block",
|
55
|
+
maxWidth: "100%"
|
56
|
+
},
|
57
|
+
/** Avoid overflow of text */
|
58
|
+
"p, h1, h2, h3, h4, h5, h6": {
|
59
|
+
overflowWrap: "break-word"
|
60
|
+
},
|
61
|
+
/** Improve text wrapping */
|
62
|
+
p: {
|
63
|
+
textWrap: "pretty"
|
64
|
+
},
|
65
|
+
"h1, h2, h3, h4, h5, h6": {
|
66
|
+
textWrap: "balance"
|
67
|
+
},
|
68
|
+
/** Improve button line height */
|
69
|
+
button: {
|
70
|
+
lineHeight: "1em"
|
71
|
+
},
|
72
|
+
/** Improve form elements */
|
73
|
+
"input, optgroup, select, textarea": {
|
74
|
+
fontFamily: "inherit",
|
75
|
+
fontSize: "100%",
|
76
|
+
lineHeight: "1.15em"
|
77
|
+
}
|
78
|
+
}, B = {
|
79
|
+
externalModules: []
|
80
|
+
}, et = (t) => {
|
81
|
+
if (B.externalModules.length > 0) return B.externalModules;
|
82
|
+
const e = o(t, "salty.config.ts"), a = J(e, "utf8").match(/externalModules:\s?\[(.*)\]/);
|
83
|
+
if (!a) return [];
|
84
|
+
const i = a[1].split(",").map((s) => s.replace(/['"`]/g, "").trim());
|
85
|
+
return B.externalModules = i, i;
|
86
|
+
}, W = (t) => o(t, "./saltygen"), wt = ["salty", "css", "styles", "styled"], St = (t = []) => new RegExp(`\\.(${[...wt, ...t].join("|")})\\.`), Z = (t, e = []) => St(e).test(t), Ft = async (t) => {
|
87
|
+
const e = W(t), r = o(t, "salty.config.ts"), a = o(e, "salty.config.js"), i = await Q(t), s = et(t);
|
88
|
+
await X.build({
|
89
|
+
entryPoints: [r],
|
90
|
+
minify: !0,
|
91
|
+
treeShaking: !0,
|
92
|
+
bundle: !0,
|
93
|
+
outfile: a,
|
94
|
+
format: i,
|
95
|
+
external: s
|
96
|
+
});
|
97
|
+
const y = Date.now(), { config: h } = await import(`${a}?t=${y}`);
|
98
|
+
return h;
|
99
|
+
}, xt = async (t) => {
|
100
|
+
const e = await Ft(t), r = /* @__PURE__ */ new Set(), a = (l, f = []) => l ? Object.entries(l).flatMap(([b, d]) => {
|
101
|
+
if (!d) return;
|
102
|
+
if (typeof d == "object") return a(d, [...f, b]);
|
103
|
+
const V = tt(b), v = R(b), D = [...f, V].join(".");
|
104
|
+
r.add(`"${D}"`);
|
105
|
+
const j = [...f.map(R), v].join("-"), { result: k } = ut(d);
|
106
|
+
return `--${j}: ${k};`;
|
107
|
+
}) : [], i = (l) => l ? Object.entries(l).flatMap(([f, b]) => {
|
108
|
+
const d = a(b);
|
109
|
+
return f === "base" ? d.join("") : `${f} { ${d.join("")} }`;
|
110
|
+
}) : [], s = (l) => l ? Object.entries(l).flatMap(([f, b]) => Object.entries(b).flatMap(([d, V]) => {
|
111
|
+
const v = a(V, [f]), D = `.${f}-${d}, [data-${f}="${d}"]`, j = v.join("");
|
112
|
+
return `${D} { ${j} }`;
|
113
|
+
})) : [], y = a(e.variables), h = i(e.responsiveVariables), F = s(e.conditionalVariables), n = W(t), p = o(n, "css/_variables.css"), w = `:root { ${y.join("")} ${h.join("")} } ${F.join("")}`;
|
114
|
+
$(p, w);
|
115
|
+
const x = o(n, "css/_global.css"), u = U(e.global, "");
|
116
|
+
$(x, `@layer global { ${u} }`);
|
117
|
+
const S = o(n, "css/_reset.css"), g = e.reset === "none" ? {} : typeof e.reset == "object" ? e.reset : $t, C = U(g, "");
|
118
|
+
$(S, `@layer reset { ${C} }`);
|
119
|
+
const c = o(n, "css/_templates.css"), m = dt(e.templates), N = gt(e.templates);
|
120
|
+
$(c, m);
|
121
|
+
const P = o(n, "types/css-tokens.d.ts"), M = `
|
122
|
+
// Variable types
|
123
|
+
type VariableTokens = ${[...r].join("|")};
|
124
|
+
type PropertyValueToken = \`{\${VariableTokens}}\`;
|
125
|
+
|
126
|
+
// Template types
|
127
|
+
type TemplateTokens = {
|
128
|
+
${Object.entries(N).map(([l, f]) => `${l}?: ${f}`).join(`
|
129
|
+
`)}
|
130
|
+
}
|
131
|
+
`;
|
132
|
+
$(P, M);
|
133
|
+
}, G = async (t, e, r) => {
|
134
|
+
const a = H(e), i = o(r, "./temp");
|
135
|
+
K(i) || O(i);
|
136
|
+
const s = I(e);
|
137
|
+
let y = J(e, "utf8");
|
138
|
+
y = y.replace(/styled\([^"'`{,]+,/g, "styled('div',");
|
139
|
+
const h = o(r, "js", a + ".js"), F = et(t), n = await Q(t);
|
140
|
+
await X.build({
|
141
|
+
stdin: {
|
142
|
+
contents: y,
|
143
|
+
sourcefile: s.base,
|
144
|
+
resolveDir: s.dir,
|
145
|
+
loader: "tsx"
|
146
|
+
},
|
147
|
+
minify: !1,
|
148
|
+
treeShaking: !0,
|
149
|
+
bundle: !0,
|
150
|
+
outfile: h,
|
151
|
+
format: n,
|
152
|
+
target: ["node20"],
|
153
|
+
keepNames: !0,
|
154
|
+
external: F,
|
155
|
+
packages: "external"
|
156
|
+
});
|
157
|
+
const p = Date.now();
|
158
|
+
return await import(`${h}?t=${p}`);
|
159
|
+
}, L = async (t) => {
|
160
|
+
const e = W(t), r = o(e, "salty.config.js"), a = Date.now(), { config: i } = await import(`${r}?t=${a}`);
|
161
|
+
return i;
|
162
|
+
}, st = () => {
|
163
|
+
try {
|
164
|
+
return process.env.NODE_ENV === "production";
|
165
|
+
} catch {
|
166
|
+
return !1;
|
167
|
+
}
|
168
|
+
}, _t = async (t, e = st()) => {
|
169
|
+
try {
|
170
|
+
const r = Date.now();
|
171
|
+
e ? z.info("Generating CSS in production mode! 🔥") : z.info("Generating CSS in development mode! 🚀");
|
172
|
+
const a = [], i = [], s = W(t), y = o(s, "index.css");
|
173
|
+
(() => {
|
174
|
+
K(s) && ct("rm -rf " + s), O(s), O(o(s, "css")), O(o(s, "types"));
|
175
|
+
})(), await xt(t);
|
176
|
+
const F = await L(t);
|
177
|
+
async function n(c, m) {
|
178
|
+
const N = ["node_modules", "saltygen"], P = it(c);
|
179
|
+
if (P.isDirectory()) {
|
180
|
+
const E = lt(c);
|
181
|
+
if (N.some((l) => c.includes(l))) return;
|
182
|
+
await Promise.all(E.map((l) => n(o(c, l), o(m, l))));
|
183
|
+
} else if (P.isFile() && Z(c)) {
|
184
|
+
const M = await G(t, c, s), l = [];
|
185
|
+
Object.entries(M).forEach(([D, j]) => {
|
186
|
+
if (j.isKeyframes && j.css) {
|
187
|
+
const q = `a_${j.animationName}.css`, at = `css/${q}`, rt = o(s, at);
|
188
|
+
a.push(q), $(rt, j.css);
|
189
|
+
return;
|
190
|
+
}
|
191
|
+
if (!j.generator) return;
|
192
|
+
const k = j.generator._withBuildContext({
|
193
|
+
name: D,
|
194
|
+
config: F,
|
195
|
+
prod: e
|
196
|
+
});
|
197
|
+
i[k.priority] || (i[k.priority] = []), i[k.priority].push(k.cssFileName), l.push(k.cssFileName);
|
198
|
+
const nt = `css/${k.cssFileName}`, ot = o(s, nt);
|
199
|
+
$(ot, k.css);
|
200
|
+
});
|
201
|
+
const f = l.map((D) => `@import url('./${D}');`).join(`
|
202
|
+
`), b = H(c, 6), d = I(c), V = R(d.name), v = o(s, `css/f_${V}-${b}.css`);
|
203
|
+
$(v, f);
|
204
|
+
}
|
205
|
+
}
|
206
|
+
await n(t, s);
|
207
|
+
const p = a.map((c) => `@import url('./css/${c}');`).join(`
|
208
|
+
`);
|
209
|
+
let S = `@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
|
210
|
+
|
211
|
+
${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((c) => {
|
212
|
+
try {
|
213
|
+
return J(o(s, "css", c), "utf8").length > 0;
|
214
|
+
} catch {
|
215
|
+
return !1;
|
216
|
+
}
|
217
|
+
}).map((c) => `@import url('./css/${c}');`).join(`
|
218
|
+
`)}
|
219
|
+
${p}`;
|
220
|
+
if (F.importStrategy !== "component") {
|
221
|
+
const c = i.flat().map((m) => `@import url('./css/${m}');`).join(`
|
222
|
+
`);
|
223
|
+
S += c;
|
224
|
+
}
|
225
|
+
$(y, S);
|
226
|
+
const g = Date.now() - r, C = g < 200 ? "🔥" : g < 500 ? "🚀" : g < 1e3 ? "🎉" : g < 2e3 ? "🚗" : g < 5e3 ? "🤔" : "🥴";
|
227
|
+
z.info(`Generated CSS in ${g}ms! ${C}`);
|
228
|
+
} catch (r) {
|
229
|
+
console.error(r);
|
230
|
+
}
|
231
|
+
}, Et = async (t, e) => {
|
232
|
+
try {
|
233
|
+
const r = [], a = o(t, "./saltygen"), i = o(a, "index.css");
|
234
|
+
if (Z(e)) {
|
235
|
+
const y = await L(t), h = await G(t, e, a);
|
236
|
+
Object.entries(h).forEach(([x, u]) => {
|
237
|
+
if (u.isKeyframes && u.css) {
|
238
|
+
const c = `css/${`a_${u.animationName}.css`}`, m = o(a, c);
|
239
|
+
$(m, u.css);
|
240
|
+
return;
|
241
|
+
}
|
242
|
+
if (!u.generator) return;
|
243
|
+
const S = u.generator._withBuildContext({
|
244
|
+
name: x,
|
245
|
+
config: y
|
246
|
+
}), T = `css/${S.cssFileName}`, g = o(a, T);
|
247
|
+
r.push(S.cssFileName), $(g, S.css);
|
248
|
+
});
|
249
|
+
const F = J(i, "utf8").split(`
|
250
|
+
`), n = r.map((x) => `@import url('../saltygen/css/${x}');`), w = [.../* @__PURE__ */ new Set([...F, ...n])].join(`
|
251
|
+
`);
|
252
|
+
$(i, w);
|
253
|
+
}
|
254
|
+
} catch (r) {
|
255
|
+
console.error(r);
|
256
|
+
}
|
257
|
+
}, Vt = async (t, e, r = st()) => {
|
258
|
+
try {
|
259
|
+
const a = o(t, "./saltygen");
|
260
|
+
if (Z(e)) {
|
261
|
+
const s = J(e, "utf8");
|
262
|
+
s.replace(/^(?!export\s)const\s.*/gm, (p) => `export ${p}`) !== s && await ft(e, s);
|
263
|
+
const h = await L(t), F = await G(t, e, a);
|
264
|
+
let n = s;
|
265
|
+
if (Object.entries(F).forEach(([p, w]) => {
|
266
|
+
var b;
|
267
|
+
if (w.isKeyframes || !w.generator) return;
|
268
|
+
const x = w.generator._withBuildContext({
|
269
|
+
name: p,
|
270
|
+
config: h,
|
271
|
+
prod: r
|
272
|
+
}), u = new RegExp(`\\s${p}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(s);
|
273
|
+
if (!u) return console.error("Could not find the original declaration");
|
274
|
+
const S = (b = u.at(1)) == null ? void 0 : b.trim(), T = new RegExp(`\\s${p}[=\\s]+styled\\(`, "g").exec(n);
|
275
|
+
if (!T) return console.error("Could not find the original declaration");
|
276
|
+
const { index: g } = T;
|
277
|
+
let C = !1;
|
278
|
+
const c = setTimeout(() => C = !0, 5e3);
|
279
|
+
let m = 0, N = !1, P = 0;
|
280
|
+
for (; !N && !C; ) {
|
281
|
+
const d = n[g + m];
|
282
|
+
d === "(" && P++, d === ")" && P--, P === 0 && d === ")" && (N = !0), m > n.length && (C = !0), m++;
|
283
|
+
}
|
284
|
+
if (!C) clearTimeout(c);
|
285
|
+
else throw new Error("Failed to find the end of the styled call and timed out");
|
286
|
+
const E = g + m, M = n.slice(g, E), l = n, f = ` ${p} = styled(${S}, "${x.classNames}", ${JSON.stringify(x.props)});`;
|
287
|
+
n = n.replace(M, f), l === n && console.error("Minimize file failed to change content", { name: p, tagName: S });
|
288
|
+
}), h.importStrategy === "component") {
|
289
|
+
const p = H(e, 6), w = I(e);
|
290
|
+
n = `import '../../saltygen/css/${`f_${R(w.name)}-${p}.css`}';
|
291
|
+
${n}`;
|
292
|
+
}
|
293
|
+
return n = n.replace("{ styled }", "{ styledClient as styled }"), n = n.replace("@salty-css/react/styled", "@salty-css/react/styled-client"), n;
|
294
|
+
}
|
295
|
+
} catch (a) {
|
296
|
+
console.error("Error in minimizeFile:", a);
|
297
|
+
}
|
298
|
+
};
|
299
|
+
export {
|
300
|
+
Mt as a,
|
301
|
+
St as b,
|
302
|
+
xt as c,
|
303
|
+
G as d,
|
304
|
+
Et as e,
|
305
|
+
_t as g,
|
306
|
+
Z as i,
|
307
|
+
z as l,
|
308
|
+
Vt as m,
|
309
|
+
wt as s
|
310
|
+
};
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";const ce=require("esbuild"),ae=require("child_process"),D=require("./dash-case-BJEkFEGQ.cjs"),s=require("path"),c=require("fs"),Z=require("fs/promises"),R=require("./parse-templates-DdYSw-iq.cjs"),z=require("winston");var I=typeof document<"u"?document.currentScript:null;function le(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const G=le(ce),L=e=>{if(!e||e==="/")throw new Error("Could not find package.json file");const t=s.join(e,"package.json");return c.existsSync(t)?t:L(s.join(e,".."))},pe=async e=>{const t=L(e);return await Z.readFile(t,"utf-8").then(JSON.parse).catch(()=>{})},de=async e=>{const t=await pe(e);if(t)return t.type};let M;const U=async e=>{if(M)return M;const t=await de(e);return t==="module"?M="esm":(t==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:I&&I.tagName.toUpperCase()==="SCRIPT"&&I.src||new URL("index-Bl6Ocgz0.cjs",document.baseURI).href).endsWith(".cjs"))&&(M="cjs"),M||"esm"},J=z.createLogger({level:"debug",format:z.format.combine(z.format.colorize(),z.format.cli()),transports:[new z.transports.Console({})]}),ue=e=>{J.error(e)};function X(e){return e?typeof e!="string"?X(String(e)):e.replace(/[\s-]/g,".").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g,(t,n)=>(n>0?".":"")+t.toLowerCase()):""}const fe={"*, *::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"},button:{lineHeight:"1em"},"input, optgroup, select, textarea":{fontFamily:"inherit",fontSize:"100%",lineHeight:"1.15em"}},A={externalModules:[]},Y=e=>{if(A.externalModules.length>0)return A.externalModules;const t=s.join(e,"salty.config.ts"),o=c.readFileSync(t,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!o)return[];const l=o[1].split(",").map(i=>i.replace(/['"`]/g,"").trim());return A.externalModules=l,l},q=e=>s.join(e,"./saltygen"),Q=["salty","css","styles","styled"],ee=(e=[])=>new RegExp(`\\.(${[...Q,...e].join("|")})\\.`),W=(e,t=[])=>ee(t).test(e),ge=async e=>{const t=q(e),n=s.join(e,"salty.config.ts"),o=s.join(t,"salty.config.js"),l=await U(e),i=Y(e);await G.build({entryPoints:[n],minify:!0,treeShaking:!0,bundle:!0,outfile:o,format:l,external:i});const h=Date.now(),{config:S}=await import(`${o}?t=${h}`);return S},te=async e=>{const t=await ge(e),n=new Set,o=(p,u=[])=>p?Object.entries(p).flatMap(([b,f])=>{if(!f)return;if(typeof f=="object")return o(f,[...u,b]);const V=X(b),v=D.dashCase(b),T=[...u,V].join(".");n.add(`"${T}"`);const C=[...u.map(D.dashCase),v].join("-"),{result:k}=R.parseValueTokens(f);return`--${C}: ${k};`}):[],l=p=>p?Object.entries(p).flatMap(([u,b])=>{const f=o(b);return u==="base"?f.join(""):`${u} { ${f.join("")} }`}):[],i=p=>p?Object.entries(p).flatMap(([u,b])=>Object.entries(b).flatMap(([f,V])=>{const v=o(V,[u]),T=`.${u}-${f}, [data-${u}="${f}"]`,C=v.join("");return`${T} { ${C} }`})):[],h=o(t.variables),S=l(t.responsiveVariables),w=i(t.conditionalVariables),r=q(e),d=s.join(r,"css/_variables.css"),j=`:root { ${h.join("")} ${S.join("")} } ${w.join("")}`;c.writeFileSync(d,j);const $=s.join(r,"css/_global.css"),y=R.parseStyles(t.global,"");c.writeFileSync($,`@layer global { ${y} }`);const F=s.join(r,"css/_reset.css"),g=t.reset==="none"?{}:typeof t.reset=="object"?t.reset:fe,x=R.parseStyles(g,"");c.writeFileSync(F,`@layer reset { ${x} }`);const a=s.join(r,"css/_templates.css"),m=R.parseTemplates(t.templates),_=R.getTemplateTypes(t.templates);c.writeFileSync(a,m);const P=s.join(r,"types/css-tokens.d.ts"),E=`
|
2
|
+
// Variable types
|
3
|
+
type VariableTokens = ${[...n].join("|")};
|
4
|
+
type PropertyValueToken = \`{\${VariableTokens}}\`;
|
5
|
+
|
6
|
+
// Template types
|
7
|
+
type TemplateTokens = {
|
8
|
+
${Object.entries(_).map(([p,u])=>`${p}?: ${u}`).join(`
|
9
|
+
`)}
|
10
|
+
}
|
11
|
+
`;c.writeFileSync(P,E)},H=async(e,t,n)=>{const o=D.toHash(t),l=s.join(n,"./temp");c.existsSync(l)||c.mkdirSync(l);const i=s.parse(t);let h=c.readFileSync(t,"utf8");h=h.replace(/styled\([^"'`{,]+,/g,"styled('div',");const S=s.join(n,"js",o+".js"),w=Y(e),r=await U(e);await G.build({stdin:{contents:h,sourcefile:i.base,resolveDir:i.dir,loader:"tsx"},minify:!1,treeShaking:!0,bundle:!0,outfile:S,format:r,target:["node20"],keepNames:!0,external:w,packages:"external"});const d=Date.now();return await import(`${S}?t=${d}`)},B=async e=>{const t=q(e),n=s.join(t,"salty.config.js"),o=Date.now(),{config:l}=await import(`${n}?t=${o}`);return l},se=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},ye=async(e,t=se())=>{try{const n=Date.now();t?J.info("Generating CSS in production mode! 🔥"):J.info("Generating CSS in development mode! 🚀");const o=[],l=[],i=q(e),h=s.join(i,"index.css");(()=>{c.existsSync(i)&&ae.execSync("rm -rf "+i),c.mkdirSync(i),c.mkdirSync(s.join(i,"css")),c.mkdirSync(s.join(i,"types"))})(),await te(e);const w=await B(e);async function r(a,m){const _=["node_modules","saltygen"],P=c.statSync(a);if(P.isDirectory()){const O=c.readdirSync(a);if(_.some(p=>a.includes(p)))return;await Promise.all(O.map(p=>r(s.join(a,p),s.join(m,p))))}else if(P.isFile()&&W(a)){const E=await H(e,a,i),p=[];Object.entries(E).forEach(([T,C])=>{if(C.isKeyframes&&C.css){const K=`a_${C.animationName}.css`,ie=`css/${K}`,re=s.join(i,ie);o.push(K),c.writeFileSync(re,C.css);return}if(!C.generator)return;const k=C.generator._withBuildContext({name:T,config:w,prod:t});l[k.priority]||(l[k.priority]=[]),l[k.priority].push(k.cssFileName),p.push(k.cssFileName);const ne=`css/${k.cssFileName}`,oe=s.join(i,ne);c.writeFileSync(oe,k.css)});const u=p.map(T=>`@import url('./${T}');`).join(`
|
12
|
+
`),b=D.toHash(a,6),f=s.parse(a),V=D.dashCase(f.name),v=s.join(i,`css/f_${V}-${b}.css`);c.writeFileSync(v,u)}}await r(e,i);const d=o.map(a=>`@import url('./css/${a}');`).join(`
|
13
|
+
`);let F=`@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
|
14
|
+
|
15
|
+
${["_variables.css","_reset.css","_global.css","_templates.css"].filter(a=>{try{return c.readFileSync(s.join(i,"css",a),"utf8").length>0}catch{return!1}}).map(a=>`@import url('./css/${a}');`).join(`
|
16
|
+
`)}
|
17
|
+
${d}`;if(w.importStrategy!=="component"){const a=l.flat().map(m=>`@import url('./css/${m}');`).join(`
|
18
|
+
`);F+=a}c.writeFileSync(h,F);const g=Date.now()-n,x=g<200?"🔥":g<500?"🚀":g<1e3?"🎉":g<2e3?"🚗":g<5e3?"🤔":"🥴";J.info(`Generated CSS in ${g}ms! ${x}`)}catch(n){console.error(n)}},me=async(e,t)=>{try{const n=[],o=s.join(e,"./saltygen"),l=s.join(o,"index.css");if(W(t)){const h=await B(e),S=await H(e,t,o);Object.entries(S).forEach(([$,y])=>{if(y.isKeyframes&&y.css){const a=`css/${`a_${y.animationName}.css`}`,m=s.join(o,a);c.writeFileSync(m,y.css);return}if(!y.generator)return;const F=y.generator._withBuildContext({name:$,config:h}),N=`css/${F.cssFileName}`,g=s.join(o,N);n.push(F.cssFileName),c.writeFileSync(g,F.css)});const w=c.readFileSync(l,"utf8").split(`
|
19
|
+
`),r=n.map($=>`@import url('../saltygen/css/${$}');`),j=[...new Set([...w,...r])].join(`
|
20
|
+
`);c.writeFileSync(l,j)}}catch(n){console.error(n)}},he=async(e,t,n=se())=>{try{const o=s.join(e,"./saltygen");if(W(t)){const i=c.readFileSync(t,"utf8");i.replace(/^(?!export\s)const\s.*/gm,d=>`export ${d}`)!==i&&await Z.writeFile(t,i);const S=await B(e),w=await H(e,t,o);let r=i;if(Object.entries(w).forEach(([d,j])=>{var b;if(j.isKeyframes||!j.generator)return;const $=j.generator._withBuildContext({name:d,config:S,prod:n}),y=new RegExp(`\\s${d}[=\\s]+[^()]+styled\\(([^,]+),`,"g").exec(i);if(!y)return console.error("Could not find the original declaration");const F=(b=y.at(1))==null?void 0:b.trim(),N=new RegExp(`\\s${d}[=\\s]+styled\\(`,"g").exec(r);if(!N)return console.error("Could not find the original declaration");const{index:g}=N;let x=!1;const a=setTimeout(()=>x=!0,5e3);let m=0,_=!1,P=0;for(;!_&&!x;){const f=r[g+m];f==="("&&P++,f===")"&&P--,P===0&&f===")"&&(_=!0),m>r.length&&(x=!0),m++}if(!x)clearTimeout(a);else throw new Error("Failed to find the end of the styled call and timed out");const O=g+m,E=r.slice(g,O),p=r,u=` ${d} = styled(${F}, "${$.classNames}", ${JSON.stringify($.props)});`;r=r.replace(E,u),p===r&&console.error("Minimize file failed to change content",{name:d,tagName:F})}),S.importStrategy==="component"){const d=D.toHash(t,6),j=s.parse(t);r=`import '../../saltygen/css/${`f_${D.dashCase(j.name)}-${d}.css`}';
|
21
|
+
${r}`}return r=r.replace("{ styled }","{ styledClient as styled }"),r=r.replace("@salty-css/react/styled","@salty-css/react/styled-client"),r}}catch(o){console.error("Error in minimizeFile:",o)}};exports.compileSaltyFile=H;exports.generateConfigStyles=te;exports.generateCss=ye;exports.generateFile=me;exports.isSaltyFile=W;exports.logError=ue;exports.logger=J;exports.minimizeFile=he;exports.saltyFileExtensions=Q;exports.saltyFileRegExp=ee;
|
package/package.json
CHANGED
@@ -0,0 +1,8 @@
|
|
1
|
+
"use strict";const T=require("./dash-case-BJEkFEGQ.cjs"),N=(t,s)=>{if(typeof t!="string")return{result:t};if(!s)return{result:t};const n=[];return Object.values(s).forEach(e=>{const{pattern:o,transform:i}=e;t=t.replace(o,d=>{const{value:p,css:j}=i(d);return j&&n.push(j),p})}),{result:t,additionalCss:n}},E=t=>typeof t!="string"?{result:t}:/\{[^{}]+\}/g.test(t)?{result:t.replace(/\{([^{}]+)\}/g,(...e)=>`var(--${T.dashCase(e[1].replaceAll(".","-"))})`)}:{result:t},a=(t,s,n,e)=>{if(!t)return"";const o=[],i=Object.entries(t).reduce((p,[j,r])=>{const c=j.trim();if(typeof r=="function"&&(r=r()),typeof r=="object"){if(!r)return p;if(c==="variants")return Object.entries(r).forEach(([f,u])=>{u&&Object.entries(u).forEach(([l,m])=>{if(!m)return;const y=`${s}.${f}-${l}`,b=a(m,y,n,e);o.push(b)})}),p;if(c==="defaultVariants")return p;if(c==="compoundVariants")return r.forEach(f=>{const{css:u,...l}=f,m=Object.entries(l).reduce((b,[q,K])=>`${b}.${q}-${K}`,s),y=a(u,m,n,e);o.push(y)}),p;if(c.startsWith("@")){const f=a(r,s,n,e),u=`${c} {
|
2
|
+
${f.replace(`
|
3
|
+
`,`
|
4
|
+
`)}
|
5
|
+
}`;return o.push(u),p}const $=j.includes("&")?c.replace("&",s):c.startsWith(":")?`${s}${c}`:`${s} ${c}`,h=a(r,$,n,e);return o.push(h),p}if(e!=null&&e.templates&&e.templates[c]){const h=r.split(".").reduce((f,u)=>f[u],e.templates[c]);if(h){const f=a(h,"");return`${p}${f}`}return console.warn(`Template "${c}" with path of "${r}" was not found in config!`),p}const k=c.startsWith("-")?c:T.dashCase(c),O=($,h=";")=>p=`${p}${$}${h}`,S=$=>O(`${k}:${$}`);if(typeof r=="number")return S(r);if(typeof r!="string")if("toString"in r)r=r.toString();else return p;const{modifiers:w}=e||{},W=function*(){yield E(r),yield N(r,w)}();for(const{result:$,additionalCss:h=[]}of W)r=$,h.forEach(f=>{const u=a(f,"");O(u,"")});return S(r)},"");if(!i)return o.join(`
|
6
|
+
`);if(!s)return i;let d="";return n!==void 0?d=`@layer l${n} { ${s} { ${i} } }`:d=`${s} { ${i} }`,[d,...o].join(`
|
7
|
+
`)},V=(t,s=[])=>{if(!t)return"";const n=[],e={};if(Object.entries(t).forEach(([o,i])=>{if(typeof i=="object"){if(!i)return;const d=o.trim(),p=V(i,[...s,d]);n.push(p)}else e[o]=i}),Object.keys(e).length){const o=s.map(T.dashCase).join("-"),i=a(e,`.${o}`);n.push(i)}return n.join(`
|
8
|
+
`)},P=t=>Object.keys(t),_=t=>Object.entries(t).reduce((s,[n,e])=>(typeof e=="object"&&(s[n]=g(e).map(o=>`"${o}"`).join(" | ")),s),{}),g=(t,s="",n=new Set)=>t?(Object.entries(t).forEach(([e,o])=>{const i=s?`${s}.${e}`:e;return typeof o=="object"?g(o,i,n):n.add(s)}),[...n]):[];exports.getTemplateKeys=P;exports.getTemplateTypes=_;exports.parseStyles=a;exports.parseTemplates=V;exports.parseValueTokens=E;
|
@@ -0,0 +1,100 @@
|
|
1
|
+
import { d as O } from "./dash-case-DBThphLm.js";
|
2
|
+
const N = (t, r) => {
|
3
|
+
if (typeof t != "string") return { result: t };
|
4
|
+
if (!r) return { result: t };
|
5
|
+
const n = [];
|
6
|
+
return Object.values(r).forEach((e) => {
|
7
|
+
const { pattern: o, transform: i } = e;
|
8
|
+
t = t.replace(o, (d) => {
|
9
|
+
const { value: c, css: j } = i(d);
|
10
|
+
return j && n.push(j), c;
|
11
|
+
});
|
12
|
+
}), { result: t, additionalCss: n };
|
13
|
+
}, P = (t) => typeof t != "string" ? { result: t } : /\{[^{}]+\}/g.test(t) ? { result: t.replace(/\{([^{}]+)\}/g, (...e) => `var(--${O(e[1].replaceAll(".", "-"))})`) } : { result: t }, a = (t, r, n, e) => {
|
14
|
+
if (!t) return "";
|
15
|
+
const o = [], i = Object.entries(t).reduce((c, [j, s]) => {
|
16
|
+
const p = j.trim();
|
17
|
+
if (typeof s == "function" && (s = s()), typeof s == "object") {
|
18
|
+
if (!s) return c;
|
19
|
+
if (p === "variants")
|
20
|
+
return Object.entries(s).forEach(([f, u]) => {
|
21
|
+
u && Object.entries(u).forEach(([m, b]) => {
|
22
|
+
if (!b) return;
|
23
|
+
const y = `${r}.${f}-${m}`, l = a(b, y, n, e);
|
24
|
+
o.push(l);
|
25
|
+
});
|
26
|
+
}), c;
|
27
|
+
if (p === "defaultVariants")
|
28
|
+
return c;
|
29
|
+
if (p === "compoundVariants")
|
30
|
+
return s.forEach((f) => {
|
31
|
+
const { css: u, ...m } = f, b = Object.entries(m).reduce((l, [w, W]) => `${l}.${w}-${W}`, r), y = a(u, b, n, e);
|
32
|
+
o.push(y);
|
33
|
+
}), c;
|
34
|
+
if (p.startsWith("@")) {
|
35
|
+
const f = a(s, r, n, e), u = `${p} {
|
36
|
+
${f.replace(`
|
37
|
+
`, `
|
38
|
+
`)}
|
39
|
+
}`;
|
40
|
+
return o.push(u), c;
|
41
|
+
}
|
42
|
+
const $ = j.includes("&") ? p.replace("&", r) : p.startsWith(":") ? `${r}${p}` : `${r} ${p}`, h = a(s, $, n, e);
|
43
|
+
return o.push(h), c;
|
44
|
+
}
|
45
|
+
if (e != null && e.templates && e.templates[p]) {
|
46
|
+
const h = s.split(".").reduce((f, u) => f[u], e.templates[p]);
|
47
|
+
if (h) {
|
48
|
+
const f = a(h, "");
|
49
|
+
return `${c}${f}`;
|
50
|
+
}
|
51
|
+
return console.warn(`Template "${p}" with path of "${s}" was not found in config!`), c;
|
52
|
+
}
|
53
|
+
const V = p.startsWith("-") ? p : O(p), T = ($, h = ";") => c = `${c}${$}${h}`, E = ($) => T(`${V}:${$}`);
|
54
|
+
if (typeof s == "number") return E(s);
|
55
|
+
if (typeof s != "string")
|
56
|
+
if ("toString" in s) s = s.toString();
|
57
|
+
else return c;
|
58
|
+
const { modifiers: g } = e || {}, k = function* () {
|
59
|
+
yield P(s), yield N(s, g);
|
60
|
+
}();
|
61
|
+
for (const { result: $, additionalCss: h = [] } of k)
|
62
|
+
s = $, h.forEach((f) => {
|
63
|
+
const u = a(f, "");
|
64
|
+
T(u, "");
|
65
|
+
});
|
66
|
+
return E(s);
|
67
|
+
}, "");
|
68
|
+
if (!i) return o.join(`
|
69
|
+
`);
|
70
|
+
if (!r) return i;
|
71
|
+
let d = "";
|
72
|
+
return n !== void 0 ? d = `@layer l${n} { ${r} { ${i} } }` : d = `${r} { ${i} }`, [d, ...o].join(`
|
73
|
+
`);
|
74
|
+
}, _ = (t, r = []) => {
|
75
|
+
if (!t) return "";
|
76
|
+
const n = [], e = {};
|
77
|
+
if (Object.entries(t).forEach(([o, i]) => {
|
78
|
+
if (typeof i == "object") {
|
79
|
+
if (!i) return;
|
80
|
+
const d = o.trim(), c = _(i, [...r, d]);
|
81
|
+
n.push(c);
|
82
|
+
} else
|
83
|
+
e[o] = i;
|
84
|
+
}), Object.keys(e).length) {
|
85
|
+
const o = r.map(O).join("-"), i = a(e, `.${o}`);
|
86
|
+
n.push(i);
|
87
|
+
}
|
88
|
+
return n.join(`
|
89
|
+
`);
|
90
|
+
}, A = (t) => Object.keys(t), K = (t) => Object.entries(t).reduce((r, [n, e]) => (typeof e == "object" && (r[n] = S(e).map((o) => `"${o}"`).join(" | ")), r), {}), S = (t, r = "", n = /* @__PURE__ */ new Set()) => t ? (Object.entries(t).forEach(([e, o]) => {
|
91
|
+
const i = r ? `${r}.${e}` : e;
|
92
|
+
return typeof o == "object" ? S(o, i, n) : n.add(r);
|
93
|
+
}), [...n]) : [];
|
94
|
+
export {
|
95
|
+
_ as a,
|
96
|
+
K as b,
|
97
|
+
P as c,
|
98
|
+
A as g,
|
99
|
+
a as p
|
100
|
+
};
|
package/index-BrNi5uoh.cjs
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
"use strict";const ae=require("esbuild"),ce=require("child_process"),D=require("./dash-case-BJEkFEGQ.cjs"),s=require("path"),a=require("fs"),G=require("fs/promises"),R=require("./parse-templates-DIOn-gO_.cjs"),z=require("winston");var I=typeof document<"u"?document.currentScript:null;function le(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const K=le(ae),L=e=>{if(!e||e==="/")throw new Error("Could not find package.json file");const t=s.join(e,"package.json");return a.existsSync(t)?t:L(s.join(e,".."))},pe=async e=>{const t=L(e);return await G.readFile(t,"utf-8").then(JSON.parse).catch(()=>{})},ue=async e=>{const t=await pe(e);if(t)return t.type};let E;const U=async e=>{if(E)return E;const t=await ue(e);return t==="module"?E="esm":(t==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:I&&I.tagName.toUpperCase()==="SCRIPT"&&I.src||new URL("index-BrNi5uoh.cjs",document.baseURI).href).endsWith(".cjs"))&&(E="cjs"),E||"esm"},J=z.createLogger({level:"debug",format:z.format.combine(z.format.colorize(),z.format.cli()),transports:[new z.transports.Console({})]}),de=e=>{J.error(e)};function X(e){return e?typeof e!="string"?X(String(e)):e.replace(/[\s-]/g,".").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g,(t,n)=>(n>0?".":"")+t.toLowerCase()):""}const fe={"*, *::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"},button:{lineHeight:"1em"},"input, optgroup, select, textarea":{fontFamily:"inherit",fontSize:"100%",lineHeight:"1.15em"}},A={externalModules:[]},Y=e=>{if(A.externalModules.length>0)return A.externalModules;const t=s.join(e,"salty.config.ts"),o=a.readFileSync(t,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!o)return[];const p=o[1].split(",").map(r=>r.replace(/['"`]/g,"").trim());return A.externalModules=p,p},q=e=>s.join(e,"./saltygen"),Q=["salty","css","styles","styled"],ee=(e=[])=>new RegExp(`\\.(${[...Q,...e].join("|")})\\.`),W=(e,t=[])=>ee(t).test(e),ge=async e=>{const t=q(e),n=s.join(e,"salty.config.ts"),o=s.join(t,"salty.config.js"),p=await U(e),r=Y(e);await K.build({entryPoints:[n],minify:!0,treeShaking:!0,bundle:!0,outfile:o,format:p,external:r});const y=Date.now(),{config:m}=await import(`${o}?t=${y}`);return m},te=async e=>{const t=await ge(e),n=new Set,o=(l,d=[])=>l?Object.entries(l).flatMap(([h,f])=>{if(!f)return;if(typeof f=="object")return o(f,[...d,h]);const O=X(h),V=D.dashCase(h),P=[...d,O].join(".");n.add(`"${P}"`);const $=[...d.map(D.dashCase),V].join("-"),{result:x}=R.parseValueTokens(f);return`--${$}: ${x};`}):[],p=l=>l?Object.entries(l).flatMap(([d,h])=>{const f=o(h);return d==="base"?f.join(""):`${d} { ${f.join("")} }`}):[],r=l=>l?Object.entries(l).flatMap(([d,h])=>Object.entries(h).flatMap(([f,O])=>{const V=o(O,[d]),P=`.${d}-${f}, [data-${d}="${f}"]`,$=V.join("");return`${P} { ${$} }`})):[],y=o(t.variables),m=p(t.responsiveVariables),F=r(t.conditionalVariables),i=q(e),u=s.join(i,"css/_variables.css"),S=`:root { ${y.join("")} ${m.join("")} } ${F.join("")}`;a.writeFileSync(u,S);const w=s.join(i,"css/_global.css"),C=R.parseStyles(t.global,"");a.writeFileSync(w,`@layer global { ${C} }`);const b=s.join(i,"css/_reset.css"),g=t.reset==="none"?{}:typeof t.reset=="object"?t.reset:fe,k=R.parseStyles(g,"");a.writeFileSync(b,`@layer reset { ${k} }`);const c=s.join(i,"css/_templates.css"),j=R.parseTemplates(t.templates),N=R.getTemplateTypes(t.templates);a.writeFileSync(c,j);const T=s.join(i,"types/css-tokens.d.ts"),v=`
|
2
|
-
// Variable types
|
3
|
-
type VariableTokens = ${[...n].join("|")};
|
4
|
-
type PropertyValueToken = \`{\${VariableTokens}}\`;
|
5
|
-
|
6
|
-
// Template types
|
7
|
-
type TemplateTokens = {
|
8
|
-
${Object.entries(N).map(([l,d])=>`${l}?: ${d}`).join(`
|
9
|
-
`)}
|
10
|
-
}
|
11
|
-
`;a.writeFileSync(T,v)},H=async(e,t,n)=>{const o=D.toHash(t),p=s.join(n,"./temp");a.existsSync(p)||a.mkdirSync(p);const r=s.parse(t);let y=a.readFileSync(t,"utf8");y=y.replace(/styled\([^"'`{,]+,/g,"styled('div',");const m=s.join(n,"js",o+".js"),F=Y(e),i=await U(e);await K.build({stdin:{contents:y,sourcefile:r.base,resolveDir:r.dir,loader:"tsx"},minify:!1,treeShaking:!0,bundle:!0,outfile:m,format:i,target:["node20"],keepNames:!0,external:F,packages:"external"});const u=Date.now();return await import(`${m}?t=${u}`)},B=async e=>{const t=q(e),n=s.join(t,"salty.config.js"),{config:o}=await import(n);return o},se=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},ye=async(e,t=se())=>{try{const n=Date.now();t?J.info("Generating CSS in production mode! 🔥"):J.info("Generating CSS in development mode! 🚀");const o=[],p=[],r=q(e),y=s.join(r,"index.css");(()=>{a.existsSync(r)&&ce.execSync("rm -rf "+r),a.mkdirSync(r),a.mkdirSync(s.join(r,"css")),a.mkdirSync(s.join(r,"types"))})(),await te(e);const F=await B(e);async function i(c,j){const N=["node_modules","saltygen"],T=a.statSync(c);if(T.isDirectory()){const M=a.readdirSync(c);if(N.some(l=>c.includes(l)))return;await Promise.all(M.map(l=>i(s.join(c,l),s.join(j,l))))}else if(T.isFile()&&W(c)){const v=await H(e,c,r),l=[];Object.entries(v).forEach(([P,$])=>{if($.isKeyframes&&$.css){const Z=`a_${$.animationName}.css`,re=`css/${Z}`,ie=s.join(r,re);o.push(Z),a.writeFileSync(ie,$.css);return}if(!$.generator)return;const x=$.generator._withBuildContext({name:P,config:F,prod:t});p[x.priority]||(p[x.priority]=[]),p[x.priority].push(x.cssFileName),l.push(x.cssFileName);const ne=`css/${x.cssFileName}`,oe=s.join(r,ne);a.writeFileSync(oe,x.css)});const d=l.map(P=>`@import url('./${P}');`).join(`
|
12
|
-
`),h=D.toHash(c,6),f=s.parse(c),O=D.dashCase(f.name),V=s.join(r,`css/f_${O}-${h}.css`);a.writeFileSync(V,d)}}await i(e,r);const u=o.map(c=>`@import url('./css/${c}');`).join(`
|
13
|
-
`);let b=`@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
|
14
|
-
|
15
|
-
${["_variables.css","_reset.css","_global.css","_templates.css"].filter(c=>{try{return a.readFileSync(s.join(r,"css",c),"utf8").length>0}catch{return!1}}).map(c=>`@import url('./css/${c}');`).join(`
|
16
|
-
`)}
|
17
|
-
${u}`;if(F.importStrategy!=="component"){const c=p.flat().map(j=>`@import url('./css/${j}');`).join(`
|
18
|
-
`);b+=c}a.writeFileSync(y,b);const g=Date.now()-n,k=g<200?"🔥":g<500?"🚀":g<1e3?"🎉":g<2e3?"🚗":g<5e3?"🤔":"🥴";J.info(`Generated CSS in ${g}ms! ${k}`)}catch(n){console.error(n)}},me=async(e,t)=>{try{const n=[],o=s.join(e,"./saltygen"),p=s.join(o,"index.css");if(W(t)){const y=await B(e),m=await H(e,t,o);Object.entries(m).forEach(([w,C])=>{if(!C.generator)return;const b=C.generator._withBuildContext({name:w,config:y}),_=`css/${b.cssFileName}`,g=s.join(o,_);n.push(b.cssFileName),a.writeFileSync(g,b.css)});const F=a.readFileSync(p,"utf8").split(`
|
19
|
-
`),i=n.map(w=>`@import url('../saltygen/css/${w}');`),S=[...new Set([...F,...i])].join(`
|
20
|
-
`);a.writeFileSync(p,S)}}catch(n){console.error(n)}},he=async(e,t,n=se())=>{try{const o=s.join(e,"./saltygen");if(W(t)){const r=a.readFileSync(t,"utf8");r.replace(/^(?!export\s)const\s.*/gm,u=>`export ${u}`)!==r&&await G.writeFile(t,r);const m=await B(e),F=await H(e,t,o);let i=r;if(Object.entries(F).forEach(([u,S])=>{var h;if(S.isKeyframes||!S.generator)return;const w=S.generator._withBuildContext({name:u,config:m,prod:n}),C=new RegExp(`\\s${u}[=\\s]+[^()]+styled\\(([^,]+),`,"g").exec(r);if(!C)return console.error("Could not find the original declaration");const b=(h=C.at(1))==null?void 0:h.trim(),_=new RegExp(`\\s${u}[=\\s]+styled\\(`,"g").exec(i);if(!_)return console.error("Could not find the original declaration");const{index:g}=_;let k=!1;const c=setTimeout(()=>k=!0,5e3);let j=0,N=!1,T=0;for(;!N&&!k;){const f=i[g+j];f==="("&&T++,f===")"&&T--,T===0&&f===")"&&(N=!0),j>i.length&&(k=!0),j++}if(!k)clearTimeout(c);else throw new Error("Failed to find the end of the styled call and timed out");const M=g+j,v=i.slice(g,M),l=i,d=` ${u} = styled(${b}, "${w.classNames}", ${JSON.stringify(w.props)});`;i=i.replace(v,d),l===i&&console.error("Minimize file failed to change content",{name:u,tagName:b})}),m.importStrategy==="component"){const u=D.toHash(t,6),S=s.parse(t);i=`import '../../saltygen/css/${`f_${D.dashCase(S.name)}-${u}.css`}';
|
21
|
-
${i}`}return i=i.replace("{ styled }","{ styledClient as styled }"),i=i.replace("@salty-css/react/styled","@salty-css/react/styled-client"),i}}catch(o){console.error("Error in minimizeFile:",o)}};exports.compileSaltyFile=H;exports.generateConfigStyles=te;exports.generateCss=ye;exports.generateFile=me;exports.isSaltyFile=W;exports.logError=de;exports.logger=J;exports.minimizeFile=he;exports.saltyFileExtensions=Q;exports.saltyFileRegExp=ee;
|
package/index-XN7f6bdr.js
DELETED
@@ -1,305 +0,0 @@
|
|
1
|
-
import * as X from "esbuild";
|
2
|
-
import { execSync as ce } from "child_process";
|
3
|
-
import { t as H, d as R } from "./dash-case-DBThphLm.js";
|
4
|
-
import { join as o, parse as I } from "path";
|
5
|
-
import { existsSync as Z, writeFileSync as S, mkdirSync as O, readFileSync as J, statSync as ie, readdirSync as le } from "fs";
|
6
|
-
import { readFile as pe, writeFile as fe } from "fs/promises";
|
7
|
-
import { p as U, a as de, b as ue, c as ge } from "./parse-templates-BuKrl3n7.js";
|
8
|
-
import { createLogger as me, format as A, transports as ye } from "winston";
|
9
|
-
const Y = (e) => {
|
10
|
-
if (!e || e === "/") throw new Error("Could not find package.json file");
|
11
|
-
const t = o(e, "package.json");
|
12
|
-
return Z(t) ? t : Y(o(e, ".."));
|
13
|
-
}, he = async (e) => {
|
14
|
-
const t = Y(e);
|
15
|
-
return await pe(t, "utf-8").then(JSON.parse).catch(() => {
|
16
|
-
});
|
17
|
-
}, be = async (e) => {
|
18
|
-
const t = await he(e);
|
19
|
-
if (t)
|
20
|
-
return t.type;
|
21
|
-
};
|
22
|
-
let v;
|
23
|
-
const Q = async (e) => {
|
24
|
-
if (v) return v;
|
25
|
-
const t = await be(e);
|
26
|
-
return t === "module" ? v = "esm" : (t === "commonjs" || import.meta.url.endsWith(".cjs")) && (v = "cjs"), v || "esm";
|
27
|
-
}, z = me({
|
28
|
-
level: "debug",
|
29
|
-
format: A.combine(A.colorize(), A.cli()),
|
30
|
-
transports: [new ye.Console({})]
|
31
|
-
}), Me = (e) => {
|
32
|
-
z.error(e);
|
33
|
-
};
|
34
|
-
function ee(e) {
|
35
|
-
return e ? typeof e != "string" ? ee(String(e)) : e.replace(/[\s-]/g, ".").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g, (t, a) => (a > 0 ? "." : "") + t.toLowerCase()) : "";
|
36
|
-
}
|
37
|
-
const $e = {
|
38
|
-
/** Set box model to border-box */
|
39
|
-
"*, *::before, *::after": {
|
40
|
-
boxSizing: "border-box"
|
41
|
-
},
|
42
|
-
/** Remove default margin and padding */
|
43
|
-
"*": {
|
44
|
-
margin: 0
|
45
|
-
},
|
46
|
-
/** Remove adjust font properties */
|
47
|
-
html: {
|
48
|
-
lineHeight: 1.15,
|
49
|
-
textSizeAdjust: "100%",
|
50
|
-
WebkitFontSmoothing: "antialiased"
|
51
|
-
},
|
52
|
-
/** Make media elements responsive */
|
53
|
-
"img, picture, video, canvas, svg": {
|
54
|
-
display: "block",
|
55
|
-
maxWidth: "100%"
|
56
|
-
},
|
57
|
-
/** Avoid overflow of text */
|
58
|
-
"p, h1, h2, h3, h4, h5, h6": {
|
59
|
-
overflowWrap: "break-word"
|
60
|
-
},
|
61
|
-
/** Improve text wrapping */
|
62
|
-
p: {
|
63
|
-
textWrap: "pretty"
|
64
|
-
},
|
65
|
-
"h1, h2, h3, h4, h5, h6": {
|
66
|
-
textWrap: "balance"
|
67
|
-
},
|
68
|
-
/** Improve button line height */
|
69
|
-
button: {
|
70
|
-
lineHeight: "1em"
|
71
|
-
},
|
72
|
-
/** Improve form elements */
|
73
|
-
"input, optgroup, select, textarea": {
|
74
|
-
fontFamily: "inherit",
|
75
|
-
fontSize: "100%",
|
76
|
-
lineHeight: "1.15em"
|
77
|
-
}
|
78
|
-
}, B = {
|
79
|
-
externalModules: []
|
80
|
-
}, te = (e) => {
|
81
|
-
if (B.externalModules.length > 0) return B.externalModules;
|
82
|
-
const t = o(e, "salty.config.ts"), r = J(t, "utf8").match(/externalModules:\s?\[(.*)\]/);
|
83
|
-
if (!r) return [];
|
84
|
-
const l = r[1].split(",").map((s) => s.replace(/['"`]/g, "").trim());
|
85
|
-
return B.externalModules = l, l;
|
86
|
-
}, W = (e) => o(e, "./saltygen"), Se = ["salty", "css", "styles", "styled"], we = (e = []) => new RegExp(`\\.(${[...Se, ...e].join("|")})\\.`), G = (e, t = []) => we(t).test(e), Fe = async (e) => {
|
87
|
-
const t = W(e), a = o(e, "salty.config.ts"), r = o(t, "salty.config.js"), l = await Q(e), s = te(e);
|
88
|
-
await X.build({
|
89
|
-
entryPoints: [a],
|
90
|
-
minify: !0,
|
91
|
-
treeShaking: !0,
|
92
|
-
bundle: !0,
|
93
|
-
outfile: r,
|
94
|
-
format: l,
|
95
|
-
external: s
|
96
|
-
});
|
97
|
-
const g = Date.now(), { config: m } = await import(`${r}?t=${g}`);
|
98
|
-
return m;
|
99
|
-
}, xe = async (e) => {
|
100
|
-
const t = await Fe(e), a = /* @__PURE__ */ new Set(), r = (i, f = []) => i ? Object.entries(i).flatMap(([y, d]) => {
|
101
|
-
if (!d) return;
|
102
|
-
if (typeof d == "object") return r(d, [...f, y]);
|
103
|
-
const V = ee(y), _ = R(y), D = [...f, V].join(".");
|
104
|
-
a.add(`"${D}"`);
|
105
|
-
const x = [...f.map(R), _].join("-"), { result: C } = ge(d);
|
106
|
-
return `--${x}: ${C};`;
|
107
|
-
}) : [], l = (i) => i ? Object.entries(i).flatMap(([f, y]) => {
|
108
|
-
const d = r(y);
|
109
|
-
return f === "base" ? d.join("") : `${f} { ${d.join("")} }`;
|
110
|
-
}) : [], s = (i) => i ? Object.entries(i).flatMap(([f, y]) => Object.entries(y).flatMap(([d, V]) => {
|
111
|
-
const _ = r(V, [f]), D = `.${f}-${d}, [data-${f}="${d}"]`, x = _.join("");
|
112
|
-
return `${D} { ${x} }`;
|
113
|
-
})) : [], g = r(t.variables), m = l(t.responsiveVariables), w = s(t.conditionalVariables), n = W(e), p = o(n, "css/_variables.css"), h = `:root { ${g.join("")} ${m.join("")} } ${w.join("")}`;
|
114
|
-
S(p, h);
|
115
|
-
const F = o(n, "css/_global.css"), j = U(t.global, "");
|
116
|
-
S(F, `@layer global { ${j} }`);
|
117
|
-
const b = o(n, "css/_reset.css"), u = t.reset === "none" ? {} : typeof t.reset == "object" ? t.reset : $e, k = U(u, "");
|
118
|
-
S(b, `@layer reset { ${k} }`);
|
119
|
-
const c = o(n, "css/_templates.css"), $ = de(t.templates), N = ue(t.templates);
|
120
|
-
S(c, $);
|
121
|
-
const T = o(n, "types/css-tokens.d.ts"), M = `
|
122
|
-
// Variable types
|
123
|
-
type VariableTokens = ${[...a].join("|")};
|
124
|
-
type PropertyValueToken = \`{\${VariableTokens}}\`;
|
125
|
-
|
126
|
-
// Template types
|
127
|
-
type TemplateTokens = {
|
128
|
-
${Object.entries(N).map(([i, f]) => `${i}?: ${f}`).join(`
|
129
|
-
`)}
|
130
|
-
}
|
131
|
-
`;
|
132
|
-
S(T, M);
|
133
|
-
}, K = async (e, t, a) => {
|
134
|
-
const r = H(t), l = o(a, "./temp");
|
135
|
-
Z(l) || O(l);
|
136
|
-
const s = I(t);
|
137
|
-
let g = J(t, "utf8");
|
138
|
-
g = g.replace(/styled\([^"'`{,]+,/g, "styled('div',");
|
139
|
-
const m = o(a, "js", r + ".js"), w = te(e), n = await Q(e);
|
140
|
-
await X.build({
|
141
|
-
stdin: {
|
142
|
-
contents: g,
|
143
|
-
sourcefile: s.base,
|
144
|
-
resolveDir: s.dir,
|
145
|
-
loader: "tsx"
|
146
|
-
},
|
147
|
-
minify: !1,
|
148
|
-
treeShaking: !0,
|
149
|
-
bundle: !0,
|
150
|
-
outfile: m,
|
151
|
-
format: n,
|
152
|
-
target: ["node20"],
|
153
|
-
keepNames: !0,
|
154
|
-
external: w,
|
155
|
-
packages: "external"
|
156
|
-
});
|
157
|
-
const p = Date.now();
|
158
|
-
return await import(`${m}?t=${p}`);
|
159
|
-
}, L = async (e) => {
|
160
|
-
const t = W(e), a = o(t, "salty.config.js"), { config: r } = await import(a);
|
161
|
-
return r;
|
162
|
-
}, se = () => {
|
163
|
-
try {
|
164
|
-
return process.env.NODE_ENV === "production";
|
165
|
-
} catch {
|
166
|
-
return !1;
|
167
|
-
}
|
168
|
-
}, ve = async (e, t = se()) => {
|
169
|
-
try {
|
170
|
-
const a = Date.now();
|
171
|
-
t ? z.info("Generating CSS in production mode! 🔥") : z.info("Generating CSS in development mode! 🚀");
|
172
|
-
const r = [], l = [], s = W(e), g = o(s, "index.css");
|
173
|
-
(() => {
|
174
|
-
Z(s) && ce("rm -rf " + s), O(s), O(o(s, "css")), O(o(s, "types"));
|
175
|
-
})(), await xe(e);
|
176
|
-
const w = await L(e);
|
177
|
-
async function n(c, $) {
|
178
|
-
const N = ["node_modules", "saltygen"], T = ie(c);
|
179
|
-
if (T.isDirectory()) {
|
180
|
-
const E = le(c);
|
181
|
-
if (N.some((i) => c.includes(i))) return;
|
182
|
-
await Promise.all(E.map((i) => n(o(c, i), o($, i))));
|
183
|
-
} else if (T.isFile() && G(c)) {
|
184
|
-
const M = await K(e, c, s), i = [];
|
185
|
-
Object.entries(M).forEach(([D, x]) => {
|
186
|
-
if (x.isKeyframes && x.css) {
|
187
|
-
const q = `a_${x.animationName}.css`, re = `css/${q}`, ae = o(s, re);
|
188
|
-
r.push(q), S(ae, x.css);
|
189
|
-
return;
|
190
|
-
}
|
191
|
-
if (!x.generator) return;
|
192
|
-
const C = x.generator._withBuildContext({
|
193
|
-
name: D,
|
194
|
-
config: w,
|
195
|
-
prod: t
|
196
|
-
});
|
197
|
-
l[C.priority] || (l[C.priority] = []), l[C.priority].push(C.cssFileName), i.push(C.cssFileName);
|
198
|
-
const ne = `css/${C.cssFileName}`, oe = o(s, ne);
|
199
|
-
S(oe, C.css);
|
200
|
-
});
|
201
|
-
const f = i.map((D) => `@import url('./${D}');`).join(`
|
202
|
-
`), y = H(c, 6), d = I(c), V = R(d.name), _ = o(s, `css/f_${V}-${y}.css`);
|
203
|
-
S(_, f);
|
204
|
-
}
|
205
|
-
}
|
206
|
-
await n(e, s);
|
207
|
-
const p = r.map((c) => `@import url('./css/${c}');`).join(`
|
208
|
-
`);
|
209
|
-
let b = `@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
|
210
|
-
|
211
|
-
${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((c) => {
|
212
|
-
try {
|
213
|
-
return J(o(s, "css", c), "utf8").length > 0;
|
214
|
-
} catch {
|
215
|
-
return !1;
|
216
|
-
}
|
217
|
-
}).map((c) => `@import url('./css/${c}');`).join(`
|
218
|
-
`)}
|
219
|
-
${p}`;
|
220
|
-
if (w.importStrategy !== "component") {
|
221
|
-
const c = l.flat().map(($) => `@import url('./css/${$}');`).join(`
|
222
|
-
`);
|
223
|
-
b += c;
|
224
|
-
}
|
225
|
-
S(g, b);
|
226
|
-
const u = Date.now() - a, k = u < 200 ? "🔥" : u < 500 ? "🚀" : u < 1e3 ? "🎉" : u < 2e3 ? "🚗" : u < 5e3 ? "🤔" : "🥴";
|
227
|
-
z.info(`Generated CSS in ${u}ms! ${k}`);
|
228
|
-
} catch (a) {
|
229
|
-
console.error(a);
|
230
|
-
}
|
231
|
-
}, Ee = async (e, t) => {
|
232
|
-
try {
|
233
|
-
const a = [], r = o(e, "./saltygen"), l = o(r, "index.css");
|
234
|
-
if (G(t)) {
|
235
|
-
const g = await L(e), m = await K(e, t, r);
|
236
|
-
Object.entries(m).forEach(([F, j]) => {
|
237
|
-
if (!j.generator) return;
|
238
|
-
const b = j.generator._withBuildContext({
|
239
|
-
name: F,
|
240
|
-
config: g
|
241
|
-
}), P = `css/${b.cssFileName}`, u = o(r, P);
|
242
|
-
a.push(b.cssFileName), S(u, b.css);
|
243
|
-
});
|
244
|
-
const w = J(l, "utf8").split(`
|
245
|
-
`), n = a.map((F) => `@import url('../saltygen/css/${F}');`), h = [.../* @__PURE__ */ new Set([...w, ...n])].join(`
|
246
|
-
`);
|
247
|
-
S(l, h);
|
248
|
-
}
|
249
|
-
} catch (a) {
|
250
|
-
console.error(a);
|
251
|
-
}
|
252
|
-
}, Ve = async (e, t, a = se()) => {
|
253
|
-
try {
|
254
|
-
const r = o(e, "./saltygen");
|
255
|
-
if (G(t)) {
|
256
|
-
const s = J(t, "utf8");
|
257
|
-
s.replace(/^(?!export\s)const\s.*/gm, (p) => `export ${p}`) !== s && await fe(t, s);
|
258
|
-
const m = await L(e), w = await K(e, t, r);
|
259
|
-
let n = s;
|
260
|
-
if (Object.entries(w).forEach(([p, h]) => {
|
261
|
-
var y;
|
262
|
-
if (h.isKeyframes || !h.generator) return;
|
263
|
-
const F = h.generator._withBuildContext({
|
264
|
-
name: p,
|
265
|
-
config: m,
|
266
|
-
prod: a
|
267
|
-
}), j = new RegExp(`\\s${p}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(s);
|
268
|
-
if (!j) return console.error("Could not find the original declaration");
|
269
|
-
const b = (y = j.at(1)) == null ? void 0 : y.trim(), P = new RegExp(`\\s${p}[=\\s]+styled\\(`, "g").exec(n);
|
270
|
-
if (!P) return console.error("Could not find the original declaration");
|
271
|
-
const { index: u } = P;
|
272
|
-
let k = !1;
|
273
|
-
const c = setTimeout(() => k = !0, 5e3);
|
274
|
-
let $ = 0, N = !1, T = 0;
|
275
|
-
for (; !N && !k; ) {
|
276
|
-
const d = n[u + $];
|
277
|
-
d === "(" && T++, d === ")" && T--, T === 0 && d === ")" && (N = !0), $ > n.length && (k = !0), $++;
|
278
|
-
}
|
279
|
-
if (!k) clearTimeout(c);
|
280
|
-
else throw new Error("Failed to find the end of the styled call and timed out");
|
281
|
-
const E = u + $, M = n.slice(u, E), i = n, f = ` ${p} = styled(${b}, "${F.classNames}", ${JSON.stringify(F.props)});`;
|
282
|
-
n = n.replace(M, f), i === n && console.error("Minimize file failed to change content", { name: p, tagName: b });
|
283
|
-
}), m.importStrategy === "component") {
|
284
|
-
const p = H(t, 6), h = I(t);
|
285
|
-
n = `import '../../saltygen/css/${`f_${R(h.name)}-${p}.css`}';
|
286
|
-
${n}`;
|
287
|
-
}
|
288
|
-
return n = n.replace("{ styled }", "{ styledClient as styled }"), n = n.replace("@salty-css/react/styled", "@salty-css/react/styled-client"), n;
|
289
|
-
}
|
290
|
-
} catch (r) {
|
291
|
-
console.error("Error in minimizeFile:", r);
|
292
|
-
}
|
293
|
-
};
|
294
|
-
export {
|
295
|
-
Me as a,
|
296
|
-
we as b,
|
297
|
-
xe as c,
|
298
|
-
K as d,
|
299
|
-
Ee as e,
|
300
|
-
ve as g,
|
301
|
-
G as i,
|
302
|
-
z as l,
|
303
|
-
Ve as m,
|
304
|
-
Se as s
|
305
|
-
};
|
@@ -1,100 +0,0 @@
|
|
1
|
-
import { d as O } from "./dash-case-DBThphLm.js";
|
2
|
-
const N = (t, e) => {
|
3
|
-
if (typeof t != "string") return { result: t };
|
4
|
-
if (!e) return { result: t };
|
5
|
-
const s = [];
|
6
|
-
return Object.values(e).forEach((n) => {
|
7
|
-
const { pattern: o, transform: i } = n;
|
8
|
-
t = t.replace(o, (d) => {
|
9
|
-
const { value: c, css: j } = i(d);
|
10
|
-
return j && s.push(j), c;
|
11
|
-
});
|
12
|
-
}), { result: t, additionalCss: s };
|
13
|
-
}, P = (t) => typeof t != "string" ? { result: t } : /\{[^{}]+\}/g.test(t) ? { result: t.replace(/\{([^{}]+)\}/g, (...n) => `var(--${O(n[1].replaceAll(".", "-"))})`) } : { result: t }, a = (t, e, s, n) => {
|
14
|
-
if (!t) return "";
|
15
|
-
const o = [], i = Object.entries(t).reduce((c, [j, r]) => {
|
16
|
-
const f = j.trim();
|
17
|
-
if (typeof r == "function" && (r = r()), typeof r == "object") {
|
18
|
-
if (!r) return c;
|
19
|
-
if (f === "variants")
|
20
|
-
return Object.entries(r).forEach(([p, u]) => {
|
21
|
-
u && Object.entries(u).forEach(([m, b]) => {
|
22
|
-
if (!b) return;
|
23
|
-
const y = `${e}.${p}-${m}`, l = a(b, y, s);
|
24
|
-
o.push(l);
|
25
|
-
});
|
26
|
-
}), c;
|
27
|
-
if (f === "defaultVariants")
|
28
|
-
return c;
|
29
|
-
if (f === "compoundVariants")
|
30
|
-
return r.forEach((p) => {
|
31
|
-
const { css: u, ...m } = p, b = Object.entries(m).reduce((l, [w, W]) => `${l}.${w}-${W}`, e), y = a(u, b, s);
|
32
|
-
o.push(y);
|
33
|
-
}), c;
|
34
|
-
if (f.startsWith("@")) {
|
35
|
-
const p = a(r, e, s), u = `${f} {
|
36
|
-
${p.replace(`
|
37
|
-
`, `
|
38
|
-
`)}
|
39
|
-
}`;
|
40
|
-
return o.push(u), c;
|
41
|
-
}
|
42
|
-
const $ = j.includes("&") ? f.replace("&", e) : f.startsWith(":") ? `${e}${f}` : `${e} ${f}`, h = a(r, $, s);
|
43
|
-
return o.push(h), c;
|
44
|
-
}
|
45
|
-
if (n != null && n.templates && n.templates[f]) {
|
46
|
-
const h = r.split(".").reduce((p, u) => p[u], n.templates[f]);
|
47
|
-
if (h) {
|
48
|
-
const p = a(h, "");
|
49
|
-
return `${c}${p}`;
|
50
|
-
}
|
51
|
-
return console.warn(`Template "${f}" with path of "${r}" was not found in config!`), c;
|
52
|
-
}
|
53
|
-
const S = f.startsWith("-") ? f : O(f), g = ($, h = ";") => c = `${c}${$}${h}`, T = ($) => g(`${S}:${$}`);
|
54
|
-
if (typeof r == "number") return T(r);
|
55
|
-
if (typeof r != "string")
|
56
|
-
if ("toString" in r) r = r.toString();
|
57
|
-
else return c;
|
58
|
-
const { modifiers: V } = n || {}, k = function* () {
|
59
|
-
yield P(r), yield N(r, V);
|
60
|
-
}();
|
61
|
-
for (const { result: $, additionalCss: h = [] } of k)
|
62
|
-
r = $, h.forEach((p) => {
|
63
|
-
const u = a(p, "");
|
64
|
-
g(u, "");
|
65
|
-
});
|
66
|
-
return T(r);
|
67
|
-
}, "");
|
68
|
-
if (!i) return o.join(`
|
69
|
-
`);
|
70
|
-
if (!e) return i;
|
71
|
-
let d = "";
|
72
|
-
return s !== void 0 ? d = `@layer l${s} { ${e} { ${i} } }` : d = `${e} { ${i} }`, [d, ...o].join(`
|
73
|
-
`);
|
74
|
-
}, _ = (t, e = []) => {
|
75
|
-
if (!t) return "";
|
76
|
-
const s = [], n = {};
|
77
|
-
if (Object.entries(t).forEach(([o, i]) => {
|
78
|
-
if (typeof i == "object") {
|
79
|
-
if (!i) return;
|
80
|
-
const d = o.trim(), c = _(i, [...e, d]);
|
81
|
-
s.push(c);
|
82
|
-
} else
|
83
|
-
n[o] = i;
|
84
|
-
}), Object.keys(n).length) {
|
85
|
-
const o = e.map(O).join("-"), i = a(n, `.${o}`);
|
86
|
-
s.push(i);
|
87
|
-
}
|
88
|
-
return s.join(`
|
89
|
-
`);
|
90
|
-
}, A = (t) => Object.keys(t), K = (t) => Object.entries(t).reduce((e, [s, n]) => (typeof n == "object" && (e[s] = E(n).map((o) => `"${o}"`).join(" | ")), e), {}), E = (t, e = "", s = /* @__PURE__ */ new Set()) => t ? (Object.entries(t).forEach(([n, o]) => {
|
91
|
-
const i = e ? `${e}.${n}` : n;
|
92
|
-
return typeof o == "object" ? E(o, i, s) : s.add(e);
|
93
|
-
}), [...s]) : [];
|
94
|
-
export {
|
95
|
-
_ as a,
|
96
|
-
K as b,
|
97
|
-
P as c,
|
98
|
-
A as g,
|
99
|
-
a as p
|
100
|
-
};
|
@@ -1,8 +0,0 @@
|
|
1
|
-
"use strict";const T=require("./dash-case-BJEkFEGQ.cjs"),N=(t,e)=>{if(typeof t!="string")return{result:t};if(!e)return{result:t};const r=[];return Object.values(e).forEach(n=>{const{pattern:o,transform:i}=n;t=t.replace(o,d=>{const{value:c,css:j}=i(d);return j&&r.push(j),c})}),{result:t,additionalCss:r}},S=t=>typeof t!="string"?{result:t}:/\{[^{}]+\}/g.test(t)?{result:t.replace(/\{([^{}]+)\}/g,(...n)=>`var(--${T.dashCase(n[1].replaceAll(".","-"))})`)}:{result:t},a=(t,e,r,n)=>{if(!t)return"";const o=[],i=Object.entries(t).reduce((c,[j,s])=>{const p=j.trim();if(typeof s=="function"&&(s=s()),typeof s=="object"){if(!s)return c;if(p==="variants")return Object.entries(s).forEach(([f,u])=>{u&&Object.entries(u).forEach(([l,m])=>{if(!m)return;const y=`${e}.${f}-${l}`,b=a(m,y,r);o.push(b)})}),c;if(p==="defaultVariants")return c;if(p==="compoundVariants")return s.forEach(f=>{const{css:u,...l}=f,m=Object.entries(l).reduce((b,[q,K])=>`${b}.${q}-${K}`,e),y=a(u,m,r);o.push(y)}),c;if(p.startsWith("@")){const f=a(s,e,r),u=`${p} {
|
2
|
-
${f.replace(`
|
3
|
-
`,`
|
4
|
-
`)}
|
5
|
-
}`;return o.push(u),c}const $=j.includes("&")?p.replace("&",e):p.startsWith(":")?`${e}${p}`:`${e} ${p}`,h=a(s,$,r);return o.push(h),c}if(n!=null&&n.templates&&n.templates[p]){const h=s.split(".").reduce((f,u)=>f[u],n.templates[p]);if(h){const f=a(h,"");return`${c}${f}`}return console.warn(`Template "${p}" with path of "${s}" was not found in config!`),c}const k=p.startsWith("-")?p:T.dashCase(p),O=($,h=";")=>c=`${c}${$}${h}`,g=$=>O(`${k}:${$}`);if(typeof s=="number")return g(s);if(typeof s!="string")if("toString"in s)s=s.toString();else return c;const{modifiers:w}=n||{},W=function*(){yield S(s),yield N(s,w)}();for(const{result:$,additionalCss:h=[]}of W)s=$,h.forEach(f=>{const u=a(f,"");O(u,"")});return g(s)},"");if(!i)return o.join(`
|
6
|
-
`);if(!e)return i;let d="";return r!==void 0?d=`@layer l${r} { ${e} { ${i} } }`:d=`${e} { ${i} }`,[d,...o].join(`
|
7
|
-
`)},E=(t,e=[])=>{if(!t)return"";const r=[],n={};if(Object.entries(t).forEach(([o,i])=>{if(typeof i=="object"){if(!i)return;const d=o.trim(),c=E(i,[...e,d]);r.push(c)}else n[o]=i}),Object.keys(n).length){const o=e.map(T.dashCase).join("-"),i=a(n,`.${o}`);r.push(i)}return r.join(`
|
8
|
-
`)},P=t=>Object.keys(t),_=t=>Object.entries(t).reduce((e,[r,n])=>(typeof n=="object"&&(e[r]=V(n).map(o=>`"${o}"`).join(" | ")),e),{}),V=(t,e="",r=new Set)=>t?(Object.entries(t).forEach(([n,o])=>{const i=e?`${e}.${n}`:n;return typeof o=="object"?V(o,i,r):r.add(e)}),[...r]):[];exports.getTemplateKeys=P;exports.getTemplateTypes=_;exports.parseStyles=a;exports.parseTemplates=E;exports.parseValueTokens=S;
|