@salty-css/core 0.0.1-alpha.258 → 0.0.1-alpha.259

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-C6aWAT5E.js DELETED
@@ -1,534 +0,0 @@
1
- import * as St from "esbuild";
2
- import { execSync as Vt } from "child_process";
3
- import { d as K, t as J } from "./dash-case-DBThphLm.js";
4
- import { join as r, parse as tt } from "path";
5
- import { existsSync as mt, mkdirSync as H, statSync as Et, readdirSync as Ot, readFileSync as v, writeFileSync as j } from "fs";
6
- import { readFile as Ct } from "fs/promises";
7
- import { p as ft, a as Mt } from "./parse-styles-DzvIRlln.js";
8
- import { createLogger as Rt, transports as Jt, format as rt } from "winston";
9
- import { mergeObjects as I, mergeFactories as zt } from "./css/merge.js";
10
- import { d as Wt } from "./define-templates-4A2yHcMF.js";
11
- import lt from "typescript";
12
- const jt = async (t, e = []) => {
13
- if (!t) return "";
14
- const s = [], n = {};
15
- for (const [o, i] of Object.entries(t))
16
- if (typeof i != "function") if (i && typeof i == "object") {
17
- const a = o.trim(), p = await jt(i, [...e, a]);
18
- s.push(p);
19
- } else
20
- n[o] = i;
21
- if (Object.keys(n).length) {
22
- const o = e.map(K).join("-"), i = "t_" + J(o, 4), a = await ft(n, `.${o}, .${i}`);
23
- s.push(a);
24
- }
25
- return s.join(`
26
- `);
27
- }, Gt = (t) => t ? Object.entries(t).reduce((e, [s, n]) => (typeof n == "function" ? e[s] = "any" : typeof n == "object" && (e[s] = Ft(n).map((o) => `"${o}"`).join(" | ")), e), {}) : {}, Ft = (t, e = "", s = /* @__PURE__ */ new Set()) => t ? (Object.entries(t).forEach(([n, o]) => {
28
- const i = e ? `${e}.${n}` : n;
29
- return typeof o == "object" ? Ft(o, i, s) : s.add(e);
30
- }), [...s]) : [], Pt = (t) => {
31
- if (!t || t === "/") throw new Error("Could not find package.json file");
32
- const e = r(t, "package.json");
33
- return mt(e) ? e : Pt(r(t, ".."));
34
- }, Ht = async (t) => {
35
- const e = Pt(t);
36
- return await Ct(e, "utf-8").then(JSON.parse).catch(() => {
37
- });
38
- }, It = async (t) => {
39
- const e = await Ht(t);
40
- if (e)
41
- return e.type;
42
- };
43
- let G;
44
- const Nt = async (t) => {
45
- if (G) return G;
46
- const e = await It(t);
47
- return e === "module" ? G = "esm" : (e === "commonjs" || import.meta.url.endsWith(".cjs")) && (G = "cjs"), G || "esm";
48
- }, Z = Rt({
49
- level: "debug",
50
- format: rt.combine(rt.colorize(), rt.cli()),
51
- transports: [new Jt.Console({})]
52
- }), ce = (t) => {
53
- Z.error(t);
54
- };
55
- function xt(t) {
56
- return t ? typeof t != "string" ? xt(String(t)) : t.replace(/[^\d\w]/g, ".") : "";
57
- }
58
- const Kt = {
59
- /** Set box model to border-box */
60
- "*, *::before, *::after": {
61
- boxSizing: "border-box"
62
- },
63
- /** Remove default margin and padding */
64
- "*": {
65
- margin: 0
66
- },
67
- /** Remove adjust font properties */
68
- html: {
69
- lineHeight: 1.15,
70
- textSizeAdjust: "100%",
71
- WebkitFontSmoothing: "antialiased"
72
- },
73
- /** Make media elements responsive */
74
- "img, picture, video, canvas, svg": {
75
- display: "block",
76
- maxWidth: "100%"
77
- },
78
- /** Avoid overflow of text */
79
- "p, h1, h2, h3, h4, h5, h6": {
80
- overflowWrap: "break-word"
81
- },
82
- /** Improve text wrapping */
83
- p: {
84
- textWrap: "pretty"
85
- },
86
- "h1, h2, h3, h4, h5, h6": {
87
- textWrap: "balance"
88
- },
89
- /** Improve link color */
90
- a: {
91
- color: "currentColor"
92
- },
93
- /** Improve button line height */
94
- button: {
95
- lineHeight: "1em",
96
- color: "currentColor"
97
- },
98
- /** Improve form elements */
99
- "input, optgroup, select, textarea": {
100
- fontFamily: "inherit",
101
- fontSize: "100%",
102
- lineHeight: "1.15em"
103
- }
104
- }, Qt = (t, e) => new Promise((s, n) => {
105
- const o = setTimeout(() => {
106
- n(new Error("Timeout"));
107
- }, 100), i = lt.createSourceFile("temp.ts", t, lt.ScriptTarget.Latest, !0);
108
- function a(p) {
109
- if (lt.isVariableDeclaration(p) && p.name.getText() === e) {
110
- const w = p.getStart(), u = p.getEnd();
111
- clearTimeout(o), s([w, u]);
112
- }
113
- p.forEachChild(a);
114
- }
115
- a(i);
116
- }), V = {
117
- externalModules: [],
118
- rcFile: void 0,
119
- destDir: void 0
120
- }, Dt = (t) => {
121
- if (V.externalModules.length > 0) return V.externalModules;
122
- const s = v(t, "utf8").match(/externalModules:\s?\[(.*)\]/);
123
- if (!s) return [];
124
- const n = s[1].split(",").map((o) => o.replace(/['"`]/g, "").trim());
125
- return V.externalModules = n, n;
126
- }, z = async (t) => {
127
- if (V.destDir) return V.destDir;
128
- const e = await ut(t), s = r(t, (e == null ? void 0 : e.saltygenDir) || "saltygen");
129
- return V.destDir = s, s;
130
- }, kt = ["salty", "css", "styles", "styled"], Bt = (t = []) => new RegExp(`\\.(${[...kt, ...t].join("|")})\\.`), pt = (t, e = []) => Bt(e).test(t), Tt = async (t) => {
131
- if (V.rcFile) return V.rcFile;
132
- if (t === "/") throw new Error("Could not find .saltyrc.json file");
133
- const e = r(t, ".saltyrc.json"), s = await Ct(e, "utf-8").then(JSON.parse).catch(() => {
134
- });
135
- return s ? (V.rcFile = s, s) : Tt(r(t, ".."));
136
- }, ut = async (t) => {
137
- var n, o;
138
- const e = await Tt(t), s = (n = e.projects) == null ? void 0 : n.find((i) => t.endsWith(i.dir || ""));
139
- return s || ((o = e.projects) == null ? void 0 : o.find((i) => i.dir === e.defaultProject));
140
- }, Lt = async (t) => {
141
- const e = await ut(t), s = await z(t), n = r(t, (e == null ? void 0 : e.configDir) || "", "salty.config.ts"), o = r(s, "salty.config.js"), i = await Nt(t), a = Dt(n);
142
- await St.build({
143
- entryPoints: [n],
144
- minify: !0,
145
- treeShaking: !0,
146
- bundle: !0,
147
- outfile: o,
148
- format: i,
149
- external: a
150
- });
151
- const p = Date.now(), { config: w } = await import(`${o}?t=${p}`);
152
- return { config: w, path: o };
153
- }, qt = async (t, e) => {
154
- var ht, wt;
155
- const s = await z(t), n = {
156
- mediaQueries: [],
157
- globalStyles: [],
158
- variables: [],
159
- templates: []
160
- };
161
- await Promise.all(
162
- [...e].map(async (h) => {
163
- const { contents: S, outputFilePath: q } = await et(t, h, s);
164
- Object.entries(S).forEach(([k, P]) => {
165
- P.isMedia ? n.mediaQueries.push([k, P]) : P.isGlobalDefine ? n.globalStyles.push(P) : P.isDefineVariables ? n.variables.push(P) : P.isDefineTemplates && n.templates.push(P._setPath(`${k};;${q}`));
166
- });
167
- })
168
- );
169
- const { config: o, path: i } = await Lt(t), a = { ...o }, { mediaQueries: p } = n;
170
- a.mediaQueries = Object.fromEntries(p.map(([h, S]) => [`@${h}`, S]));
171
- const w = p.map(([h]) => `'@${h}'`).join(" | "), u = /* @__PURE__ */ new Set(), c = async (h, S = []) => {
172
- if (!h) return [];
173
- const q = Object.entries(h).map(async ([P, R]) => {
174
- const A = async (T) => {
175
- if (!T) return;
176
- if (T instanceof Promise) return await A(await T);
177
- if (typeof T == "function") return await A(await T());
178
- if (typeof T == "object") return await c(T, [...S, P]);
179
- const at = xt(P), it = K(P), ct = [...S, at].join(".");
180
- u.add(`"${ct}"`);
181
- const Y = [...S.map(K), it].join("-"), $t = Mt(T);
182
- return $t ? `--${Y}: ${$t.transformed};` : `--${Y}: ${T};`;
183
- };
184
- return await A(R);
185
- });
186
- return (await Promise.all(q)).flat();
187
- }, y = async (h) => {
188
- if (!h) return [];
189
- const S = Object.entries(h).map(async ([k, P]) => {
190
- const R = await c(P);
191
- return k === "base" ? R.join("") : a.mediaQueries[k] ? `${a.mediaQueries[k]} { ${R.join("")} }` : `${k} { ${R.join("")} }`;
192
- });
193
- return (await Promise.all(S)).flat();
194
- }, d = async (h) => {
195
- if (!h) return [];
196
- const S = Object.entries(h).map(async ([k, P]) => {
197
- const R = Object.entries(P).map(async ([T, at]) => {
198
- const it = await c(at, [k]), ct = `.${k}-${T}, [data-${k}="${T}"]`, Y = it.join("");
199
- return `${ct} { ${Y} }`;
200
- });
201
- return (await Promise.all(R)).flat();
202
- });
203
- return (await Promise.all(S)).flat();
204
- }, g = (h) => ({ ...h, responsive: void 0, conditional: void 0 }), m = (h) => n.variables.map((S) => h === "static" ? g(S._current) : S._current[h]), C = I(g(o.variables), m("static")), x = await c(C), D = I((ht = o.variables) == null ? void 0 : ht.responsive, m("responsive")), E = await y(D), W = I((wt = o.variables) == null ? void 0 : wt.conditional, m("conditional")), U = await d(W), gt = r(s, "css/_variables.css"), O = `:root { ${x.join("")} ${E.join("")} } ${U.join("")}`;
205
- j(gt, O), a.staticVariables = C;
206
- const st = r(s, "css/_global.css"), f = I(o.global, n.globalStyles), $ = await ft(f, "");
207
- j(st, `@layer global { ${$} }`);
208
- const b = r(s, "css/_reset.css"), F = o.reset === "none" ? {} : typeof o.reset == "object" ? o.reset : Kt, N = await ft(F, "");
209
- j(b, `@layer reset { ${N} }`);
210
- const _ = r(s, "css/_templates.css"), M = I(o.templates, n.templates), Q = await jt(M), B = Gt(M);
211
- j(_, `@layer templates { ${Q} }`), a.templates = M;
212
- const X = o.templates ? [Wt(o.templates)._setPath(`config;;${i}`)] : [], nt = zt(n.templates, X);
213
- a.templatePaths = Object.fromEntries(Object.entries(nt).map(([h, S]) => [h, S._path]));
214
- const L = r(s, "types/css-tokens.d.ts"), vt = `
215
- // Variable types
216
- type VariableTokens = ${[...u].join("|")};
217
- type PropertyValueToken = \`{\${VariableTokens}}\`;
218
-
219
- // Template types
220
- type TemplateTokens = {
221
- ${Object.entries(B).map(([h, S]) => `${h}?: ${S}`).join(`
222
- `)}
223
- }
224
-
225
- // Media query types
226
- type MediaQueryKeys = ${w || "''"};
227
- `;
228
- j(L, vt);
229
- const _t = r(s, "cache/config-cache.json");
230
- j(_t, JSON.stringify(a, null, 2));
231
- }, bt = (t) => t.replace(/styled\(([^"'`{,]+),/g, (e, s) => {
232
- if (/^['"`]/.test(s)) return e;
233
- const o = new RegExp(`import[^;]*${s}[,\\s{][^;]*from\\s?([^{};]+);`);
234
- if (!o.test(t)) return e;
235
- const a = o.exec(t);
236
- if (a) {
237
- const p = a.at(1);
238
- if (kt.some((u) => p == null ? void 0 : p.includes(u))) return e;
239
- }
240
- return "styled('div',";
241
- }), At = (t, e) => {
242
- try {
243
- const s = v(r(e, "saltygen/cache/config-cache.json"), "utf8");
244
- return s ? `globalThis.saltyConfig = ${s};
245
-
246
- ${t}` : `globalThis.saltyConfig = {};
247
-
248
- ${t}`;
249
- } catch {
250
- return t;
251
- }
252
- }, et = async (t, e, s) => {
253
- const n = J(e), o = r(s, "./temp");
254
- mt(o) || H(o);
255
- const i = tt(e);
256
- let a = v(e, "utf8");
257
- a = bt(a), a = At(a, t);
258
- const p = r(s, "js", n + ".js"), w = await ut(t), u = r(t, (w == null ? void 0 : w.configDir) || "", "salty.config.ts"), c = Dt(u), y = await Nt(t);
259
- await St.build({
260
- stdin: {
261
- contents: a,
262
- sourcefile: i.base,
263
- resolveDir: i.dir,
264
- loader: "tsx"
265
- },
266
- minify: !1,
267
- treeShaking: !0,
268
- bundle: !0,
269
- outfile: p,
270
- format: y,
271
- target: ["node20"],
272
- keepNames: !0,
273
- external: c,
274
- packages: "external",
275
- plugins: [
276
- {
277
- name: "test",
278
- setup: (m) => {
279
- m.onLoad({ filter: /.*\.css|salty|styles|styled\.ts/ }, (C) => {
280
- const x = v(C.path, "utf8");
281
- return { contents: bt(x), loader: "ts" };
282
- });
283
- }
284
- }
285
- ]
286
- });
287
- const d = Date.now();
288
- return { contents: await import(`${p}?t=${d}`), outputFilePath: p };
289
- }, Ut = async (t) => {
290
- const e = await z(t), s = r(e, "cache/config-cache.json"), n = v(s, "utf8");
291
- if (!n) throw new Error("Could not find config cache file");
292
- return JSON.parse(n);
293
- }, dt = async (t) => {
294
- const e = await Ut(t), s = await z(t), n = r(s, "salty.config.js"), o = Date.now(), { config: i } = await import(`${n}?t=${o}`);
295
- return I(i, e);
296
- }, yt = () => {
297
- try {
298
- return process.env.NODE_ENV === "production";
299
- } catch {
300
- return !1;
301
- }
302
- }, re = async (t, e = yt(), s = !0) => {
303
- try {
304
- const n = Date.now();
305
- e ? Z.info("Generating CSS in production mode! 🔥") : Z.info("Generating CSS in development mode! 🚀");
306
- const o = [], i = [], a = await z(t), p = r(a, "index.css");
307
- s && (() => {
308
- mt(a) && Vt("rm -rf " + a), H(a, { recursive: !0 }), H(r(a, "css")), H(r(a, "types")), H(r(a, "js")), H(r(a, "cache"));
309
- })();
310
- const u = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set();
311
- async function y(f) {
312
- const $ = ["node_modules", "saltygen"], b = Et(f);
313
- if (b.isDirectory()) {
314
- const l = Ot(f);
315
- if ($.some((N) => f.includes(N))) return;
316
- await Promise.all(l.map((N) => y(r(f, N))));
317
- } else if (b.isFile() && pt(f)) {
318
- u.add(f);
319
- const F = v(f, "utf8");
320
- /define[\w\d]+\(/.test(F) && c.add(f);
321
- }
322
- }
323
- await y(t), await qt(t, c);
324
- const d = {
325
- keyframes: [],
326
- components: [],
327
- classNames: []
328
- };
329
- await Promise.all(
330
- [...u].map(async (f) => {
331
- const { contents: $ } = await et(t, f, a);
332
- for (let [b, l] of Object.entries($))
333
- l instanceof Promise && (l = await l), l.isKeyframes ? d.keyframes.push({
334
- value: l,
335
- src: f,
336
- name: b
337
- }) : l.isClassName ? d.classNames.push({
338
- ...l,
339
- src: f,
340
- name: b
341
- }) : l.generator && d.components.push({
342
- ...l,
343
- src: f,
344
- name: b
345
- });
346
- })
347
- );
348
- const g = await dt(t);
349
- for (const f of d.keyframes) {
350
- const { value: $ } = f, b = `a_${$.animationName}.css`, l = `css/${b}`, F = r(a, l);
351
- o.push(b), j(F, $.css);
352
- }
353
- const m = {};
354
- for (const f of d.components) {
355
- const { src: $, name: b } = f;
356
- m[$] || (m[$] = []);
357
- const l = f.generator._withBuildContext({
358
- callerName: b,
359
- isProduction: e,
360
- config: g
361
- });
362
- i[l.priority] || (i[l.priority] = []);
363
- const F = await l.css;
364
- if (!F) continue;
365
- i[l.priority].push(l.cssFileName);
366
- const N = `css/${l.cssFileName}`, _ = r(a, N);
367
- j(_, F), g.importStrategy === "component" && m[$].push(l.cssFileName);
368
- }
369
- for (const f of d.classNames) {
370
- const { src: $, name: b } = f;
371
- m[$] || (m[$] = []);
372
- const l = f.generator._withBuildContext({
373
- callerName: b,
374
- isProduction: e,
375
- config: g
376
- }), F = await l.css;
377
- if (!F) continue;
378
- i[l.priority] || (i[l.priority] = []), i[l.priority].push(l.cssFileName);
379
- const N = `css/${l.cssFileName}`, _ = r(a, N);
380
- j(_, F), g.importStrategy === "component" && m[$].push(l.cssFileName);
381
- }
382
- g.importStrategy === "component" && Object.entries(m).forEach(([f, $]) => {
383
- const b = $.map((M) => `@import url('./${M}');`).join(`
384
- `), l = J(f, 6), F = tt(f), N = K(F.name), _ = r(a, `css/f_${N}-${l}.css`);
385
- j(_, b || "/* Empty file */");
386
- });
387
- const C = o.map((f) => `@import url('./css/${f}');`).join(`
388
- `);
389
- let U = `/*!
390
- * Generated with Salty CSS (https://salty-css.dev)
391
- * Do not edit this file directly
392
- */
393
- @layer reset, global, templates, l0, l1, l2, l3, l4, l5, l6, l7, l8;
394
-
395
- ${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((f) => {
396
- try {
397
- return v(r(a, "css", f), "utf8").length > 0;
398
- } catch {
399
- return !1;
400
- }
401
- }).map((f) => `@import url('./css/${f}');`).join(
402
- `
403
- `
404
- )}
405
- ${C}`;
406
- if (g.importStrategy !== "component") {
407
- const f = i.reduce(($, b, l) => {
408
- const F = b.reduce((Q, B) => {
409
- var ot;
410
- const X = r(a, "css", B), nt = v(X, "utf8"), L = ((ot = /.*-([^-]+)-\d+.css/.exec(B)) == null ? void 0 : ot.at(1)) || J(X, 6);
411
- return Q.includes(L) ? Q : `${Q}
412
- /*start:${L}-${B}*/
413
- ${nt}
414
- /*end:${L}*/
415
- `;
416
- }, ""), N = `l_${l}.css`, _ = r(a, "css", N), M = `@layer l${l} { ${F}
417
- }`;
418
- return j(_, M), `${$}
419
- @import url('./css/${N}');`;
420
- }, "");
421
- U += f;
422
- }
423
- j(p, U);
424
- const O = Date.now() - n, st = O < 200 ? "🔥" : O < 500 ? "🚀" : O < 1e3 ? "🎉" : O < 2e3 ? "🚗" : O < 5e3 ? "🤔" : "🥴";
425
- Z.info(`Generated CSS in ${O}ms! ${st}`);
426
- } catch (n) {
427
- console.error(n);
428
- }
429
- }, le = async (t, e, s = yt()) => {
430
- try {
431
- const n = await z(t);
432
- if (pt(e)) {
433
- const i = [], a = await dt(t), { contents: p } = await et(t, e, n);
434
- for (const [w, u] of Object.entries(p)) {
435
- if (u.isKeyframes && u.css) {
436
- const C = `css/${`a_${u.animationName}.css`}`, x = r(n, C);
437
- j(x, await u.css);
438
- continue;
439
- }
440
- if (u.isClassName) {
441
- const m = u.generator._withBuildContext({
442
- callerName: w,
443
- isProduction: s,
444
- config: a
445
- }), C = await m.css;
446
- if (!C) continue;
447
- i[m.priority] || (i[m.priority] = []), i[m.priority].push(m.cssFileName);
448
- const x = `css/${m.cssFileName}`, D = r(n, x);
449
- j(D, C);
450
- continue;
451
- }
452
- if (!u.generator) continue;
453
- const c = u.generator._withBuildContext({
454
- callerName: w,
455
- isProduction: s,
456
- config: a
457
- }), y = await c.css;
458
- if (!y) continue;
459
- const d = `css/${c.cssFileName}`, g = r(n, d);
460
- j(g, y), i[c.priority] || (i[c.priority] = []), i[c.priority].push(c.cssFileName);
461
- }
462
- if (a.importStrategy !== "component")
463
- i.forEach((w, u) => {
464
- const c = `l_${u}.css`, y = r(n, "css", c);
465
- let d = v(y, "utf8");
466
- w.forEach((g) => {
467
- var D;
468
- const m = r(n, "css", g), C = ((D = /.*-([^-]+)-\d+.css/.exec(g)) == null ? void 0 : D.at(1)) || J(m, 6);
469
- if (!d.includes(C)) {
470
- const E = v(m, "utf8"), W = `/*start:${C}-${g}*/
471
- ${E}
472
- /*end:${C}*/
473
- `;
474
- d = `${d.replace(/\}$/, "")}
475
- ${W}
476
- }`;
477
- }
478
- }), j(y, d);
479
- });
480
- else {
481
- const w = i.flat().map((g) => `@import url('./${g}');`).join(`
482
- `), u = J(e, 6), c = tt(e), y = K(c.name), d = r(n, `css/f_${y}-${u}.css`);
483
- j(d, w || "/* Empty file */");
484
- }
485
- }
486
- } catch (n) {
487
- console.error(n);
488
- }
489
- }, fe = async (t, e, s = yt()) => {
490
- var n, o;
491
- try {
492
- const i = await z(t);
493
- if (pt(e)) {
494
- const p = v(e, "utf8"), w = await dt(t), { contents: u } = await et(t, e, i);
495
- let c = p;
496
- for (const [y, d] of Object.entries(u)) {
497
- if (d.isKeyframes || !d.generator) continue;
498
- const g = d.generator._withBuildContext({
499
- callerName: y,
500
- isProduction: s,
501
- config: w
502
- }), [m, C] = await Qt(c, y), x = c.slice(m, C);
503
- if (d.isClassName) {
504
- const D = c, E = ` ${y} = className("${g.classNames}")`;
505
- c = c.replace(x, E), D === c && console.error("Minimize file failed to change content", { name: y });
506
- }
507
- if (x.includes("styled")) {
508
- const D = (o = (n = /styled\(([^,]+),/.exec(x)) == null ? void 0 : n.at(1)) == null ? void 0 : o.trim(), E = c, W = ` ${y} = styled(${D}, "${g.classNames}", ${JSON.stringify(g.clientProps)})`;
509
- c = c.replace(x, W), E === c && console.error("Minimize file failed to change content", { name: y, tagName: D });
510
- }
511
- }
512
- if (w.importStrategy === "component") {
513
- const y = J(e, 6), d = tt(e);
514
- c = `import '../../saltygen/css/${`f_${K(d.name)}-${y}.css`}';
515
- ${c}`;
516
- }
517
- return c = c.replace("@salty-css/react/class-name", "@salty-css/react/class-name-client"), c = c.replace("{ styled }", "{ styledClient as styled }"), c = c.replace("@salty-css/react/styled", "@salty-css/react/styled-client"), c;
518
- }
519
- } catch (i) {
520
- console.error("Error in minimizeFile:", i);
521
- }
522
- };
523
- export {
524
- ce as a,
525
- le as b,
526
- Bt as c,
527
- qt as d,
528
- et as e,
529
- re as g,
530
- pt as i,
531
- Z as l,
532
- fe as m,
533
- kt as s
534
- };
@@ -1,42 +0,0 @@
1
- "use strict";const Te=require("esbuild"),ve=require("child_process"),D=require("./dash-case-BJEkFEGQ.cjs"),c=require("path"),l=require("fs"),we=require("fs/promises"),Z=require("./parse-styles-BV4RZMzC.cjs"),Q=require("winston"),J=require("./css/merge.cjs"),Oe=require("./define-templates-Cunsb_Tr.cjs"),ce=require("typescript");var re=typeof document<"u"?document.currentScript:null;function Ee(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const s in e)if(s!=="default"){const n=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(t,s,n.get?n:{enumerable:!0,get:()=>e[s]})}}return t.default=e,Object.freeze(t)}const Se=Ee(Te),je=async(e,t=[])=>{if(!e)return"";const s=[],n={};for(const[o,a]of Object.entries(e))if(typeof a!="function")if(a&&typeof a=="object"){const i=o.trim(),m=await je(a,[...t,i]);s.push(m)}else n[o]=a;if(Object.keys(n).length){const o=t.map(D.dashCase).join("-"),a="t_"+D.toHash(o,4),i=await Z.parseAndJoinStyles(n,`.${o}, .${a}`);s.push(i)}return s.join(`
2
- `)},Ve=e=>e?Object.entries(e).reduce((t,[s,n])=>(typeof n=="function"?t[s]="any":typeof n=="object"&&(t[s]=be(n).map(o=>`"${o}"`).join(" | ")),t),{}):{},be=(e,t="",s=new Set)=>e?(Object.entries(e).forEach(([n,o])=>{const a=t?`${t}.${n}`:n;return typeof o=="object"?be(o,a,s):s.add(t)}),[...s]):[],$e=e=>{if(!e||e==="/")throw new Error("Could not find package.json file");const t=c.join(e,"package.json");return l.existsSync(t)?t:$e(c.join(e,".."))},Re=async e=>{const t=$e(e);return await we.readFile(t,"utf-8").then(JSON.parse).catch(()=>{})},Me=async e=>{const t=await Re(e);if(t)return t.type};let H;const Fe=async e=>{if(H)return H;const t=await Me(e);return t==="module"?H="esm":(t==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:re&&re.tagName.toUpperCase()==="SCRIPT"&&re.src||new URL("index-hRLfXvS_.cjs",document.baseURI).href).endsWith(".cjs"))&&(H="cjs"),H||"esm"},B=Q.createLogger({level:"debug",format:Q.format.combine(Q.format.colorize(),Q.format.cli()),transports:[new Q.transports.Console({})]}),Je=e=>{B.error(e)};function Ce(e){return e?typeof e!="string"?Ce(String(e)):e.replace(/[^\d\w]/g,"."):""}const ze={"*, *::before, *::after":{boxSizing:"border-box"},"*":{margin:0},html:{lineHeight:1.15,textSizeAdjust:"100%",WebkitFontSmoothing:"antialiased"},"img, picture, video, canvas, svg":{display:"block",maxWidth:"100%"},"p, h1, h2, h3, h4, h5, h6":{overflowWrap:"break-word"},p:{textWrap:"pretty"},"h1, h2, h3, h4, h5, h6":{textWrap:"balance"},a:{color:"currentColor"},button:{lineHeight:"1em",color:"currentColor"},"input, optgroup, select, textarea":{fontFamily:"inherit",fontSize:"100%",lineHeight:"1.15em"}},qe=(e,t)=>new Promise((s,n)=>{const o=setTimeout(()=>{n(new Error("Timeout"))},100),a=ce.createSourceFile("temp.ts",e,ce.ScriptTarget.Latest,!0);function i(m){if(ce.isVariableDeclaration(m)&&m.name.getText()===t){const S=m.getStart(),d=m.getEnd();clearTimeout(o),s([S,d])}m.forEachChild(i)}i(a)}),O={externalModules:[],rcFile:void 0,destDir:void 0},Pe=e=>{if(O.externalModules.length>0)return O.externalModules;const s=l.readFileSync(e,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!s)return[];const n=s[1].split(",").map(o=>o.replace(/['"`]/g,"").trim());return O.externalModules=n,n},z=async e=>{if(O.destDir)return O.destDir;const t=await fe(e),s=c.join(e,(t==null?void 0:t.saltygenDir)||"saltygen");return O.destDir=s,s},le=["salty","css","styles","styled"],Ne=(e=[])=>new RegExp(`\\.(${[...le,...e].join("|")})\\.`),ee=(e,t=[])=>Ne(t).test(e),xe=async e=>{if(O.rcFile)return O.rcFile;if(e==="/")throw new Error("Could not find .saltyrc.json file");const t=c.join(e,".saltyrc.json"),s=await we.readFile(t,"utf-8").then(JSON.parse).catch(()=>{});return s?(O.rcFile=s,s):xe(c.join(e,".."))},fe=async e=>{var n,o;const t=await xe(e),s=(n=t.projects)==null?void 0:n.find(a=>e.endsWith(a.dir||""));return s||((o=t.projects)==null?void 0:o.find(a=>a.dir===t.defaultProject))},He=async e=>{const t=await fe(e),s=await z(e),n=c.join(e,(t==null?void 0:t.configDir)||"","salty.config.ts"),o=c.join(s,"salty.config.js"),a=await Fe(e),i=Pe(n);await Se.build({entryPoints:[n],minify:!0,treeShaking:!0,bundle:!0,outfile:o,format:a,external:i});const m=Date.now(),{config:S}=await import(`${o}?t=${m}`);return{config:S,path:o}},ke=async(e,t)=>{var de,ye;const s=await z(e),n={mediaQueries:[],globalStyles:[],variables:[],templates:[]};await Promise.all([...t].map(async w=>{const{contents:$,outputFilePath:K}=await U(e,w,s);Object.entries($).forEach(([_,P])=>{P.isMedia?n.mediaQueries.push([_,P]):P.isGlobalDefine?n.globalStyles.push(P):P.isDefineVariables?n.variables.push(P):P.isDefineTemplates&&n.templates.push(P._setPath(`${_};;${K}`))})}));const{config:o,path:a}=await He(e),i={...o},{mediaQueries:m}=n;i.mediaQueries=Object.fromEntries(m.map(([w,$])=>[`@${w}`,$]));const S=m.map(([w])=>`'@${w}'`).join(" | "),d=new Set,r=async(w,$=[])=>{if(!w)return[];const K=Object.entries(w).map(async([P,M])=>{const L=async T=>{if(!T)return;if(T instanceof Promise)return await L(await T);if(typeof T=="function")return await L(await T());if(typeof T=="object")return await r(T,[...$,P]);const oe=Ce(P),ie=D.dashCase(P),ae=[...$,oe].join(".");d.add(`"${ae}"`);const Y=[...$.map(D.dashCase),ie].join("-"),ge=Z.parseVariableTokens(T);return ge?`--${Y}: ${ge.transformed};`:`--${Y}: ${T};`};return await L(M)});return(await Promise.all(K)).flat()},g=async w=>{if(!w)return[];const $=Object.entries(w).map(async([_,P])=>{const M=await r(P);return _==="base"?M.join(""):i.mediaQueries[_]?`${i.mediaQueries[_]} { ${M.join("")} }`:`${_} { ${M.join("")} }`});return(await Promise.all($)).flat()},y=async w=>{if(!w)return[];const $=Object.entries(w).map(async([_,P])=>{const M=Object.entries(P).map(async([T,oe])=>{const ie=await r(oe,[_]),ae=`.${_}-${T}, [data-${_}="${T}"]`,Y=ie.join("");return`${ae} { ${Y} }`});return(await Promise.all(M)).flat()});return(await Promise.all($)).flat()},h=w=>({...w,responsive:void 0,conditional:void 0}),p=w=>n.variables.map($=>w==="static"?h($._current):$._current[w]),F=J.mergeObjects(h(o.variables),p("static")),x=await r(F),k=J.mergeObjects((de=o.variables)==null?void 0:de.responsive,p("responsive")),E=await g(k),q=J.mergeObjects((ye=o.variables)==null?void 0:ye.conditional,p("conditional")),A=await y(q),me=c.join(s,"css/_variables.css"),V=`:root { ${x.join("")} ${E.join("")} } ${A.join("")}`;l.writeFileSync(me,V),i.staticVariables=F;const te=c.join(s,"css/_global.css"),u=J.mergeObjects(o.global,n.globalStyles),j=await Z.parseAndJoinStyles(u,"");l.writeFileSync(te,`@layer global { ${j} }`);const b=c.join(s,"css/_reset.css"),C=o.reset==="none"?{}:typeof o.reset=="object"?o.reset:ze,N=await Z.parseAndJoinStyles(C,"");l.writeFileSync(b,`@layer reset { ${N} }`);const v=c.join(s,"css/_templates.css"),R=J.mergeObjects(o.templates,n.templates),W=await je(R),I=Ve(R);l.writeFileSync(v,`@layer templates { ${W} }`),i.templates=R;const X=o.templates?[Oe.defineTemplates(o.templates)._setPath(`config;;${a}`)]:[],se=J.mergeFactories(n.templates,X);i.templatePaths=Object.fromEntries(Object.entries(se).map(([w,$])=>[w,$._path]));const G=c.join(s,"types/css-tokens.d.ts"),De=`
3
- // Variable types
4
- type VariableTokens = ${[...d].join("|")};
5
- type PropertyValueToken = \`{\${VariableTokens}}\`;
6
-
7
- // Template types
8
- type TemplateTokens = {
9
- ${Object.entries(I).map(([w,$])=>`${w}?: ${$}`).join(`
10
- `)}
11
- }
12
-
13
- // Media query types
14
- type MediaQueryKeys = ${S||"''"};
15
- `;l.writeFileSync(G,De);const _e=c.join(s,"cache/config-cache.json");l.writeFileSync(_e,JSON.stringify(i,null,2))},he=e=>e.replace(/styled\(([^"'`{,]+),/g,(t,s)=>{if(/^['"`]/.test(s))return t;const o=new RegExp(`import[^;]*${s}[,\\s{][^;]*from\\s?([^{};]+);`);if(!o.test(e))return t;const i=o.exec(e);if(i){const m=i.at(1);if(le.some(d=>m==null?void 0:m.includes(d)))return t}return"styled('div',"}),We=(e,t)=>{try{const s=l.readFileSync(c.join(t,"saltygen/cache/config-cache.json"),"utf8");return s?`globalThis.saltyConfig = ${s};
16
-
17
- ${e}`:`globalThis.saltyConfig = {};
18
-
19
- ${e}`}catch{return e}},U=async(e,t,s)=>{const n=D.toHash(t),o=c.join(s,"./temp");l.existsSync(o)||l.mkdirSync(o);const a=c.parse(t);let i=l.readFileSync(t,"utf8");i=he(i),i=We(i,e);const m=c.join(s,"js",n+".js"),S=await fe(e),d=c.join(e,(S==null?void 0:S.configDir)||"","salty.config.ts"),r=Pe(d),g=await Fe(e);await Se.build({stdin:{contents:i,sourcefile:a.base,resolveDir:a.dir,loader:"tsx"},minify:!1,treeShaking:!0,bundle:!0,outfile:m,format:g,target:["node20"],keepNames:!0,external:r,packages:"external",plugins:[{name:"test",setup:p=>{p.onLoad({filter:/.*\.css|salty|styles|styled\.ts/},F=>{const x=l.readFileSync(F.path,"utf8");return{contents:he(x),loader:"ts"}})}}]});const y=Date.now();return{contents:await import(`${m}?t=${y}`),outputFilePath:m}},Ie=async e=>{const t=await z(e),s=c.join(t,"cache/config-cache.json"),n=l.readFileSync(s,"utf8");if(!n)throw new Error("Could not find config cache file");return JSON.parse(n)},ue=async e=>{const t=await Ie(e),s=await z(e),n=c.join(s,"salty.config.js"),o=Date.now(),{config:a}=await import(`${n}?t=${o}`);return J.mergeObjects(a,t)},pe=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},Ge=async(e,t=pe(),s=!0)=>{try{const n=Date.now();t?B.info("Generating CSS in production mode! 🔥"):B.info("Generating CSS in development mode! 🚀");const o=[],a=[],i=await z(e),m=c.join(i,"index.css");s&&(()=>{l.existsSync(i)&&ve.execSync("rm -rf "+i),l.mkdirSync(i,{recursive:!0}),l.mkdirSync(c.join(i,"css")),l.mkdirSync(c.join(i,"types")),l.mkdirSync(c.join(i,"js")),l.mkdirSync(c.join(i,"cache"))})();const d=new Set,r=new Set;async function g(u){const j=["node_modules","saltygen"],b=l.statSync(u);if(b.isDirectory()){const f=l.readdirSync(u);if(j.some(N=>u.includes(N)))return;await Promise.all(f.map(N=>g(c.join(u,N))))}else if(b.isFile()&&ee(u)){d.add(u);const C=l.readFileSync(u,"utf8");/define[\w\d]+\(/.test(C)&&r.add(u)}}await g(e),await ke(e,r);const y={keyframes:[],components:[],classNames:[]};await Promise.all([...d].map(async u=>{const{contents:j}=await U(e,u,i);for(let[b,f]of Object.entries(j))f instanceof Promise&&(f=await f),f.isKeyframes?y.keyframes.push({value:f,src:u,name:b}):f.isClassName?y.classNames.push({...f,src:u,name:b}):f.generator&&y.components.push({...f,src:u,name:b})}));const h=await ue(e);for(const u of y.keyframes){const{value:j}=u,b=`a_${j.animationName}.css`,f=`css/${b}`,C=c.join(i,f);o.push(b),l.writeFileSync(C,j.css)}const p={};for(const u of y.components){const{src:j,name:b}=u;p[j]||(p[j]=[]);const f=u.generator._withBuildContext({callerName:b,isProduction:t,config:h});a[f.priority]||(a[f.priority]=[]);const C=await f.css;if(!C)continue;a[f.priority].push(f.cssFileName);const N=`css/${f.cssFileName}`,v=c.join(i,N);l.writeFileSync(v,C),h.importStrategy==="component"&&p[j].push(f.cssFileName)}for(const u of y.classNames){const{src:j,name:b}=u;p[j]||(p[j]=[]);const f=u.generator._withBuildContext({callerName:b,isProduction:t,config:h}),C=await f.css;if(!C)continue;a[f.priority]||(a[f.priority]=[]),a[f.priority].push(f.cssFileName);const N=`css/${f.cssFileName}`,v=c.join(i,N);l.writeFileSync(v,C),h.importStrategy==="component"&&p[j].push(f.cssFileName)}h.importStrategy==="component"&&Object.entries(p).forEach(([u,j])=>{const b=j.map(R=>`@import url('./${R}');`).join(`
20
- `),f=D.toHash(u,6),C=c.parse(u),N=D.dashCase(C.name),v=c.join(i,`css/f_${N}-${f}.css`);l.writeFileSync(v,b||"/* Empty file */")});const F=o.map(u=>`@import url('./css/${u}');`).join(`
21
- `);let A=`/*!
22
- * Generated with Salty CSS (https://salty-css.dev)
23
- * Do not edit this file directly
24
- */
25
- @layer reset, global, templates, l0, l1, l2, l3, l4, l5, l6, l7, l8;
26
-
27
- ${["_variables.css","_reset.css","_global.css","_templates.css"].filter(u=>{try{return l.readFileSync(c.join(i,"css",u),"utf8").length>0}catch{return!1}}).map(u=>`@import url('./css/${u}');`).join(`
28
- `)}
29
- ${F}`;if(h.importStrategy!=="component"){const u=a.reduce((j,b,f)=>{const C=b.reduce((W,I)=>{var ne;const X=c.join(i,"css",I),se=l.readFileSync(X,"utf8"),G=((ne=/.*-([^-]+)-\d+.css/.exec(I))==null?void 0:ne.at(1))||D.toHash(X,6);return W.includes(G)?W:`${W}
30
- /*start:${G}-${I}*/
31
- ${se}
32
- /*end:${G}*/
33
- `},""),N=`l_${f}.css`,v=c.join(i,"css",N),R=`@layer l${f} { ${C}
34
- }`;return l.writeFileSync(v,R),`${j}
35
- @import url('./css/${N}');`},"");A+=u}l.writeFileSync(m,A);const V=Date.now()-n,te=V<200?"🔥":V<500?"🚀":V<1e3?"🎉":V<2e3?"🚗":V<5e3?"🤔":"🥴";B.info(`Generated CSS in ${V}ms! ${te}`)}catch(n){console.error(n)}},Ke=async(e,t,s=pe())=>{try{const n=await z(e);if(ee(t)){const a=[],i=await ue(e),{contents:m}=await U(e,t,n);for(const[S,d]of Object.entries(m)){if(d.isKeyframes&&d.css){const F=`css/${`a_${d.animationName}.css`}`,x=c.join(n,F);l.writeFileSync(x,await d.css);continue}if(d.isClassName){const p=d.generator._withBuildContext({callerName:S,isProduction:s,config:i}),F=await p.css;if(!F)continue;a[p.priority]||(a[p.priority]=[]),a[p.priority].push(p.cssFileName);const x=`css/${p.cssFileName}`,k=c.join(n,x);l.writeFileSync(k,F);continue}if(!d.generator)continue;const r=d.generator._withBuildContext({callerName:S,isProduction:s,config:i}),g=await r.css;if(!g)continue;const y=`css/${r.cssFileName}`,h=c.join(n,y);l.writeFileSync(h,g),a[r.priority]||(a[r.priority]=[]),a[r.priority].push(r.cssFileName)}if(i.importStrategy!=="component")a.forEach((S,d)=>{const r=`l_${d}.css`,g=c.join(n,"css",r);let y=l.readFileSync(g,"utf8");S.forEach(h=>{var k;const p=c.join(n,"css",h),F=((k=/.*-([^-]+)-\d+.css/.exec(h))==null?void 0:k.at(1))||D.toHash(p,6);if(!y.includes(F)){const E=l.readFileSync(p,"utf8"),q=`/*start:${F}-${h}*/
36
- ${E}
37
- /*end:${F}*/
38
- `;y=`${y.replace(/\}$/,"")}
39
- ${q}
40
- }`}}),l.writeFileSync(g,y)});else{const S=a.flat().map(h=>`@import url('./${h}');`).join(`
41
- `),d=D.toHash(t,6),r=c.parse(t),g=D.dashCase(r.name),y=c.join(n,`css/f_${g}-${d}.css`);l.writeFileSync(y,S||"/* Empty file */")}}}catch(n){console.error(n)}},Le=async(e,t,s=pe())=>{var n,o;try{const a=await z(e);if(ee(t)){const m=l.readFileSync(t,"utf8"),S=await ue(e),{contents:d}=await U(e,t,a);let r=m;for(const[g,y]of Object.entries(d)){if(y.isKeyframes||!y.generator)continue;const h=y.generator._withBuildContext({callerName:g,isProduction:s,config:S}),[p,F]=await qe(r,g),x=r.slice(p,F);if(y.isClassName){const k=r,E=` ${g} = className("${h.classNames}")`;r=r.replace(x,E),k===r&&console.error("Minimize file failed to change content",{name:g})}if(x.includes("styled")){const k=(o=(n=/styled\(([^,]+),/.exec(x))==null?void 0:n.at(1))==null?void 0:o.trim(),E=r,q=` ${g} = styled(${k}, "${h.classNames}", ${JSON.stringify(h.clientProps)})`;r=r.replace(x,q),E===r&&console.error("Minimize file failed to change content",{name:g,tagName:k})}}if(S.importStrategy==="component"){const g=D.toHash(t,6),y=c.parse(t);r=`import '../../saltygen/css/${`f_${D.dashCase(y.name)}-${g}.css`}';
42
- ${r}`}return r=r.replace("@salty-css/react/class-name","@salty-css/react/class-name-client"),r=r.replace("{ styled }","{ styledClient as styled }"),r=r.replace("@salty-css/react/styled","@salty-css/react/styled-client"),r}}catch(a){console.error("Error in minimizeFile:",a)}};exports.compileSaltyFile=U;exports.generateConfigStyles=ke;exports.generateCss=Ge;exports.generateFile=Ke;exports.isSaltyFile=ee;exports.logError=Je;exports.logger=B;exports.minimizeFile=Le;exports.saltyFileExtensions=le;exports.saltyFileRegExp=Ne;
@@ -1,5 +0,0 @@
1
- "use strict";const x=require("./dash-case-BJEkFEGQ.cjs"),q=require("./viewport-clamp-kY8JqYzm.cjs"),I=o=>s=>{if(typeof s!="string"||!o)return;let t=s;const f=[];return Object.values(o).forEach(e=>{const{pattern:m,transform:l}=e;t=t.replace(m,C=>{const{value:S,css:v}=l(C);return v&&f.push(v),S})}),{transformed:t,additionalCss:f}},z=o=>s=>typeof s!="string"||!/\{[^{}]+\}/g.test(s)?void 0:{transformed:s.replace(/\{([^{}]+)\}/g,(...e)=>{const m=x.dashCase(e[1].replaceAll(".","-"));return m.startsWith("-")?`-${m}`:`var(--${m})`})},U=z(),k=["top","right","bottom","left","min-width",/.*width.*/,/^[^line]*height.*/,/padding.*/,/margin.*/,/border.*/,/inset.*/,/.*radius.*/,/.*spacing.*/,/.*gap.*/,/.*indent.*/,/.*offset.*/,/.*size.*/,/.*thickness.*/,/.*font-size.*/],J=(o,s,t)=>{if(k.some(e=>typeof e=="string"?e===o:e.test(o))){const e=(t==null?void 0:t.defaultUnit)||"px";if(e.startsWith("viewport-clamp:"))try{const l=e.split(":")[1];return q.defineViewportClamp({screenSize:parseInt(l)})(Number(s))}catch(l){throw console.error(l),new Error(`Invalid viewport-clamp value: ${e}`)}return`${s}${e}`}return`${s}`},M=["Webkit","Moz","ms","O"],Q=o=>o.startsWith("-")?o:M.some(s=>o.startsWith(s))?`-${x.dashCase(o)}`:x.dashCase(o),y=async(o,s="",t,f=!1)=>{if(!o)throw new Error("No styles provided to parseStyles function!");const e=new Set,m=Object.entries(o),l=async([u,r])=>{var P;const n=u.trim().replace(/^\?+/g,""),b=Q(n),h=(a,c=";")=>`${b}:${a}${c}`,E={scope:s,config:t};if(typeof r=="function")return l([u,r(E)]);if(r instanceof Promise)return l([u,await r]);if(t!=null&&t.templates&&t.templatePaths[n])try{const[a,c]=t.templatePaths[n].split(";;"),i=await import(c),p=c.includes("salty.config"),d=p?i[a].templates:i[a],$=p?d[n]:d.params[n];if(d&&typeof $=="function"){const j=await $(r),[w]=await y(j,"");return w}}catch(a){console.error(`Error loading template "${n}" from path "${t.templatePaths[n]}"`,a);return}if(t!=null&&t.templates&&t.templates[n]){if(f)return;const c=r.split(".").reduce((i,p)=>i[p],t.templates[n]);if(c){const[i]=await y(c,"");return i}console.warn(`Template "${n}" with path of "${r}" was not found in config!`);return}if(typeof r=="object"){if(!r)return;if(r.isColor)return h(r.toString());if(n==="defaultVariants")return;if(n==="variants"){const i=Object.entries(r);for(const[p,d]of i){if(!d)continue;const $=Object.entries(d);for(const[j,w]of $){if(!w)continue;const W=`${s}.${p}-${j}`;(await y(w,W,t)).forEach(N=>e.add(N))}}return}if(n==="compoundVariants"){for(const i of r){const{css:p,...d}=i,$=Object.entries(d).reduce((w,[W,T])=>`${w}.${W}-${T}`,s);(await y(p,$,t)).forEach(w=>e.add(w))}return}if(n.startsWith("@")){const i=((P=t==null?void 0:t.mediaQueries)==null?void 0:P[n])||n,p=await A(r,s,t),d=`${i} { ${p} }`;e.add(d);return}const a=u.includes("&")?n.replaceAll("&",s):n.startsWith(":")?`${s}${n}`:`${s} ${n}`;(await y(r,a,t)).forEach(i=>e.add(i));return}if(typeof r=="number"){const a=J(b,r,t);return h(a)}if(typeof r!="string")if("toString"in r)r=r.toString();else throw new Error(`Invalid value type for property ${b}`);return h(r)},C=m.map(l),{modifiers:S}=t||{},v=[z(),I(S)],V=(await Promise.all(C).then(u=>Promise.all(u.map(r=>v.reduce(async(n,b)=>{const h=await n;if(!h)return h;const E=await b(h);if(!E)return h;const{transformed:P,additionalCss:a}=E;let c="";if(a)for(const i of a)c+=await A(i,"");return`${c}${P}`},Promise.resolve(r)))))).filter(u=>u!==void 0).join(`
2
- `);if(!V.trim())return Array.from(e);const O=s?`${s} {
3
- ${V}
4
- }`:V;return e.has(O)?Array.from(e):[O,...e]},A=async(o,s,t,f=!1)=>(await y(o,s,t,f)).join(`
5
- `);exports.parseAndJoinStyles=A;exports.parseVariableTokens=U;