@salty-css/core 0.0.1-alpha.132 → 0.0.1-alpha.134
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 +26 -26
- package/generator/parse-styles.d.ts +1 -1
- package/index-quuC8yrT.cjs +21 -0
- package/index-vfptqI3j.js +318 -0
- package/package.json +1 -1
- package/parse-templates-CgZo0YA1.js +97 -0
- package/parse-templates-DD4hQEpv.cjs +8 -0
- package/index-BKhQ2XRr.js +0 -310
- package/index-Bl6Ocgz0.cjs +0 -21
- package/parse-templates-DdYSw-iq.cjs +0 -8
- package/parse-templates-DnLWJ7Hc.js +0 -100
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-quuC8yrT.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-vfptqI3j.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-DD4hQEpv.cjs");const e=require("../index-quuC8yrT.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-CgZo0YA1.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-vfptqI3j.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
|
1
|
+
"use strict";var f=Object.defineProperty;var y=(a,s,t)=>s in a?f(a,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[s]=t;var c=(a,s,t)=>y(a,typeof s!="symbol"?s+"":s,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../dash-case-BJEkFEGQ.cjs"),g=require("../parse-templates-DD4hQEpv.cjs");class N{constructor(s,t){c(this,"_isProd");c(this,"_callerName");c(this,"_context");this.tagName=s,this.params=t}get hash(){return u.toHash(this.params.base||this.params)}get priority(){var s;return typeof this.tagName=="function"||typeof this.tagName=="object"?(((s=this.tagName.generator)==null?void 0:s.priority)||0)+1:0}get classNames(){const s=[this.hash],{className:t}=this.params;return t&&s.push(t),s.join(" ")}get cssClassName(){return this.hash}get cssDisplayNameVar(){return`--${this.hash}-display-name: ${this._callerName};`}get cssFileName(){return this._callerName?`c_${u.dashCase(this._callerName)}-${this.hash}-${this.priority}.css`:`${this.hash}-${this.priority}.css`}get templateKeys(){var s;return(s=this._context)!=null&&s.config.templates?g.getTemplateKeys(this._context.config.templates):[]}get css(){var n;const{base:s={},variants:t={},compoundVariants:i=[]}=this.params,r={...s,variants:t,compoundVariants:i};return g.parseStyles(r,`.${this.cssClassName}`,(n=this._context)==null?void 0:n.config)}get props(){const{element:s,variants:t={},compoundVariants:i=[],defaultVariants:r={},defaultProps:p={},passProps:n}=this.params,h=new Set([]),l=e=>{const o=r[e];o!==void 0?h.add(`${e}=${String(o)}`):h.add(e)};Object.keys(t).forEach(l),i.map(e=>Object.keys(e).forEach(l));const m=new Set([]);if(this.params.base){const e=JSON.stringify(this.params.base).match(/\{props\.([\w\d]+)\}/gi);e&&e.forEach(o=>{const d=o.replace(/\{props\.([\w\d]+)\}/gi,"$1");d&&m.add(d)})}return{element:s,variantKeys:[...h],propValueKeys:[...m],passProps:n,defaultProps:p,attr:{"data-component-name":this._isProd?void 0:this._callerName}}}_withBuildContext(s){this._context=s;const{name:t,config:i,prod:r}=s;return this._isProd=r,this._callerName=t,this}}exports.StyleComponentGenerator=N;
|
package/generator/index.js
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
var u = Object.defineProperty;
|
2
|
-
var f = (a,
|
3
|
-
var c = (a,
|
2
|
+
var f = (a, s, t) => s in a ? u(a, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : a[s] = t;
|
3
|
+
var c = (a, s, t) => f(a, typeof s != "symbol" ? s + "" : s, t);
|
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-CgZo0YA1.js";
|
6
6
|
class v {
|
7
|
-
constructor(
|
7
|
+
constructor(s, t) {
|
8
8
|
c(this, "_isProd");
|
9
9
|
c(this, "_callerName");
|
10
10
|
c(this, "_context");
|
11
|
-
this.tagName =
|
11
|
+
this.tagName = s, this.params = t;
|
12
12
|
}
|
13
13
|
get hash() {
|
14
14
|
return g(this.params.base || this.params);
|
15
15
|
}
|
16
16
|
get priority() {
|
17
|
-
var
|
18
|
-
return typeof this.tagName == "function" || typeof this.tagName == "object" ? (((
|
17
|
+
var s;
|
18
|
+
return typeof this.tagName == "function" || typeof this.tagName == "object" ? (((s = this.tagName.generator) == null ? void 0 : s.priority) || 0) + 1 : 0;
|
19
19
|
}
|
20
20
|
get classNames() {
|
21
|
-
const
|
22
|
-
return
|
21
|
+
const s = [this.hash], { className: t } = this.params;
|
22
|
+
return t && s.push(t), s.join(" ");
|
23
23
|
}
|
24
24
|
get cssClassName() {
|
25
25
|
return this.hash;
|
@@ -31,43 +31,43 @@ class v {
|
|
31
31
|
return this._callerName ? `c_${y(this._callerName)}-${this.hash}-${this.priority}.css` : `${this.hash}-${this.priority}.css`;
|
32
32
|
}
|
33
33
|
get templateKeys() {
|
34
|
-
var
|
35
|
-
return (
|
34
|
+
var s;
|
35
|
+
return (s = this._context) != null && s.config.templates ? N(this._context.config.templates) : [];
|
36
36
|
}
|
37
37
|
get css() {
|
38
38
|
var n;
|
39
|
-
const { base:
|
40
|
-
return _(r, `.${this.cssClassName}`,
|
39
|
+
const { base: s = {}, variants: t = {}, compoundVariants: i = [] } = this.params, r = { ...s, variants: t, compoundVariants: i };
|
40
|
+
return _(r, `.${this.cssClassName}`, (n = this._context) == null ? void 0 : n.config);
|
41
41
|
}
|
42
42
|
get props() {
|
43
|
-
const { element:
|
43
|
+
const { element: s, variants: t = {}, compoundVariants: i = [], defaultVariants: r = {}, defaultProps: p = {}, passProps: n } = this.params, h = /* @__PURE__ */ new Set([]), m = (e) => {
|
44
44
|
const o = r[e];
|
45
45
|
o !== void 0 ? h.add(`${e}=${String(o)}`) : h.add(e);
|
46
46
|
};
|
47
|
-
Object.keys(
|
48
|
-
const
|
47
|
+
Object.keys(t).forEach(m), i.map((e) => Object.keys(e).forEach(m));
|
48
|
+
const l = /* @__PURE__ */ new Set([]);
|
49
49
|
if (this.params.base) {
|
50
50
|
const e = JSON.stringify(this.params.base).match(/\{props\.([\w\d]+)\}/gi);
|
51
51
|
e && e.forEach((o) => {
|
52
|
-
const
|
53
|
-
|
52
|
+
const d = o.replace(/\{props\.([\w\d]+)\}/gi, "$1");
|
53
|
+
d && l.add(d);
|
54
54
|
});
|
55
55
|
}
|
56
56
|
return {
|
57
|
-
element:
|
57
|
+
element: s,
|
58
58
|
variantKeys: [...h],
|
59
|
-
propValueKeys: [...
|
60
|
-
passProps:
|
61
|
-
defaultProps:
|
59
|
+
propValueKeys: [...l],
|
60
|
+
passProps: n,
|
61
|
+
defaultProps: p,
|
62
62
|
attr: {
|
63
63
|
"data-component-name": this._isProd ? void 0 : this._callerName
|
64
64
|
}
|
65
65
|
};
|
66
66
|
}
|
67
|
-
_withBuildContext(
|
68
|
-
this._context =
|
69
|
-
const { name:
|
70
|
-
return this._isProd = r, this._callerName =
|
67
|
+
_withBuildContext(s) {
|
68
|
+
this._context = s;
|
69
|
+
const { name: t, config: i, prod: r } = s;
|
70
|
+
return this._isProd = r, this._callerName = t, this;
|
71
71
|
}
|
72
72
|
}
|
73
73
|
export {
|
@@ -1,2 +1,2 @@
|
|
1
1
|
import { SaltyConfig } from '../config/config-types';
|
2
|
-
export declare const parseStyles: <T extends object>(styles: T, currentClass: string,
|
2
|
+
export declare const parseStyles: <T extends object>(styles: T, currentClass: string, config?: SaltyConfig | undefined) => string;
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";const ce=require("esbuild"),ae=require("child_process"),E=require("./dash-case-BJEkFEGQ.cjs"),s=require("path"),c=require("fs"),Z=require("fs/promises"),R=require("./parse-templates-DD4hQEpv.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(()=>{})},ue=async e=>{const t=await pe(e);if(t)return t.type};let O;const U=async e=>{if(O)return O;const t=await ue(e);return t==="module"?O="esm":(t==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:I&&I.tagName.toUpperCase()==="SCRIPT"&&I.src||new URL("index-quuC8yrT.cjs",document.baseURI).href).endsWith(".cjs"))&&(O="cjs"),O||"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"},a:{color:"currentColor"},button:{lineHeight:"1em",color:"currentColor"},"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 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),ye=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 G.build({entryPoints:[n],minify:!0,treeShaking:!0,bundle:!0,outfile:o,format:p,external:r});const h=Date.now(),{config:S}=await import(`${o}?t=${h}`);return S},te=async e=>{const t=await ye(e),n=new Set,o=(l,d=[])=>l?Object.entries(l).flatMap(([b,f])=>{if(!f)return;if(typeof f=="object")return o(f,[...d,b]);const V=X(b),v=E.dashCase(b),_=[...d,V].join(".");n.add(`"${_}"`);const x=[...d.map(E.dashCase),v].join("-"),{result:P}=R.parseValueTokens(f);return`--${x}: ${P};`}):[],p=l=>l?Object.entries(l).flatMap(([d,b])=>{const f=o(b);return d==="base"?f.join(""):`${d} { ${f.join("")} }`}):[],r=l=>l?Object.entries(l).flatMap(([d,b])=>Object.entries(b).flatMap(([f,V])=>{const v=o(V,[d]),_=`.${d}-${f}, [data-${d}="${f}"]`,x=v.join("");return`${_} { ${x} }`})):[],h=o(t.variables),S=p(t.responsiveVariables),w=r(t.conditionalVariables),i=q(e),u=s.join(i,"css/_variables.css"),j=`:root { ${h.join("")} ${S.join("")} } ${w.join("")}`;c.writeFileSync(u,j);const $=s.join(i,"css/_global.css"),g=R.parseStyles(t.global,"");c.writeFileSync($,`@layer global { ${g} }`);const F=s.join(i,"css/_reset.css"),y=t.reset==="none"?{}:typeof t.reset=="object"?t.reset:fe,k=R.parseStyles(y,"");c.writeFileSync(F,`@layer reset { ${k} }`);const a=s.join(i,"css/_templates.css"),m=R.parseTemplates(t.templates),T=R.getTemplateTypes(t.templates);c.writeFileSync(a,m);const C=s.join(i,"types/css-tokens.d.ts"),D=`
|
2
|
+
// Variable types
|
3
|
+
type VariableTokens = ${[...n].join("|")};
|
4
|
+
type PropertyValueToken = \`{\${VariableTokens}}\`;
|
5
|
+
|
6
|
+
// Template types
|
7
|
+
type TemplateTokens = {
|
8
|
+
${Object.entries(T).map(([l,d])=>`${l}?: ${d}`).join(`
|
9
|
+
`)}
|
10
|
+
}
|
11
|
+
`;c.writeFileSync(C,D)},H=async(e,t,n)=>{const o=E.toHash(t),p=s.join(n,"./temp");c.existsSync(p)||c.mkdirSync(p);const r=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),i=await U(e);await G.build({stdin:{contents:h,sourcefile:r.base,resolveDir:r.dir,loader:"tsx"},minify:!1,treeShaking:!0,bundle:!0,outfile:S,format:i,target:["node20"],keepNames:!0,external:w,packages:"external"});const u=Date.now();return await import(`${S}?t=${u}`)},B=async e=>{const t=q(e),n=s.join(t,"salty.config.js"),o=Date.now(),{config:p}=await import(`${n}?t=${o}`);return p},se=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},ge=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),h=s.join(r,"index.css");(()=>{c.existsSync(r)&&ae.execSync("rm -rf "+r),c.mkdirSync(r),c.mkdirSync(s.join(r,"css")),c.mkdirSync(s.join(r,"types"))})(),await te(e);const w=await B(e);async function i(a,m){const T=["node_modules","saltygen"],C=c.statSync(a);if(C.isDirectory()){const N=c.readdirSync(a);if(T.some(l=>a.includes(l)))return;await Promise.all(N.map(l=>i(s.join(a,l),s.join(m,l))))}else if(C.isFile()&&W(a)){const D=await H(e,a,r),l=[];Object.entries(D).forEach(([_,x])=>{if(x.isKeyframes&&x.css){const K=`a_${x.animationName}.css`,re=`css/${K}`,ie=s.join(r,re);o.push(K),c.writeFileSync(ie,x.css);return}if(!x.generator)return;const P=x.generator._withBuildContext({name:_,config:w,prod:t});p[P.priority]||(p[P.priority]=[]),p[P.priority].push(P.cssFileName),l.push(P.cssFileName);const ne=`css/${P.cssFileName}`,oe=s.join(r,ne);c.writeFileSync(oe,P.css)});const d=l.map(_=>`@import url('./${_}');`).join(`
|
12
|
+
`),b=E.toHash(a,6),f=s.parse(a),V=E.dashCase(f.name),v=s.join(r,`css/f_${V}-${b}.css`);c.writeFileSync(v,d)}}await i(e,r);const u=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(r,"css",a),"utf8").length>0}catch{return!1}}).map(a=>`@import url('./css/${a}');`).join(`
|
16
|
+
`)}
|
17
|
+
${u}`;if(w.importStrategy!=="component"){const a=p.reduce((m,T,C)=>{const N=T.reduce((D,l)=>D+`@import url('./css/${l}') layer(l${C});`,"");return`${m}
|
18
|
+
${N}`},"");F+=a}c.writeFileSync(h,F);const y=Date.now()-n,k=y<200?"🔥":y<500?"🚀":y<1e3?"🎉":y<2e3?"🚗":y<5e3?"🤔":"🥴";J.info(`Generated CSS in ${y}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 h=await B(e),S=await H(e,t,o);Object.entries(S).forEach(([$,g])=>{if(g.isKeyframes&&g.css){const a=`css/${`a_${g.animationName}.css`}`,m=s.join(o,a);c.writeFileSync(m,g.css);return}if(!g.generator)return;const F=g.generator._withBuildContext({name:$,config:h}),M=`css/${F.cssFileName}`,y=s.join(o,M);n.push(F.cssFileName),c.writeFileSync(y,F.css)});const w=c.readFileSync(p,"utf8").split(`
|
19
|
+
`),i=n.map($=>`@import url('../saltygen/css/${$}');`),j=[...new Set([...w,...i])].join(`
|
20
|
+
`);c.writeFileSync(p,j)}}catch(n){console.error(n)}},he=async(e,t,n=se())=>{try{const o=s.join(e,"./saltygen");if(W(t)){const r=c.readFileSync(t,"utf8");r.replace(/^(?!export\s)const\s.*/gm,u=>`export ${u}`)!==r&&await Z.writeFile(t,r);const S=await B(e),w=await H(e,t,o);let i=r;if(Object.entries(w).forEach(([u,j])=>{var b;if(j.isKeyframes||!j.generator)return;const $=j.generator._withBuildContext({name:u,config:S,prod:n}),g=new RegExp(`\\s${u}[=\\s]+[^()]+styled\\(([^,]+),`,"g").exec(r);if(!g)return console.error("Could not find the original declaration");const F=(b=g.at(1))==null?void 0:b.trim(),M=new RegExp(`\\s${u}[=\\s]+styled\\(`,"g").exec(i);if(!M)return console.error("Could not find the original declaration");const{index:y}=M;let k=!1;const a=setTimeout(()=>k=!0,5e3);let m=0,T=!1,C=0;for(;!T&&!k;){const f=i[y+m];f==="("&&C++,f===")"&&C--,C===0&&f===")"&&(T=!0),m>i.length&&(k=!0),m++}if(!k)clearTimeout(a);else throw new Error("Failed to find the end of the styled call and timed out");const N=y+m,D=i.slice(y,N),l=i,d=` ${u} = styled(${F}, "${$.classNames}", ${JSON.stringify($.props)});`;i=i.replace(D,d),l===i&&console.error("Minimize file failed to change content",{name:u,tagName:F})}),S.importStrategy==="component"){const u=E.toHash(t,6),j=s.parse(t);i=`import '../../saltygen/css/${`f_${E.dashCase(j.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=ge;exports.generateFile=me;exports.isSaltyFile=W;exports.logError=de;exports.logger=J;exports.minimizeFile=he;exports.saltyFileExtensions=Q;exports.saltyFileRegExp=ee;
|
@@ -0,0 +1,318 @@
|
|
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 K, writeFileSync as $, 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-CgZo0YA1.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 K(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 E;
|
23
|
+
const Q = async (e) => {
|
24
|
+
if (E) return E;
|
25
|
+
const t = await be(e);
|
26
|
+
return t === "module" ? E = "esm" : (t === "commonjs" || import.meta.url.endsWith(".cjs")) && (E = "cjs"), E || "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 link color */
|
69
|
+
a: {
|
70
|
+
color: "currentColor"
|
71
|
+
},
|
72
|
+
/** Improve button line height */
|
73
|
+
button: {
|
74
|
+
lineHeight: "1em",
|
75
|
+
color: "currentColor"
|
76
|
+
},
|
77
|
+
/** Improve form elements */
|
78
|
+
"input, optgroup, select, textarea": {
|
79
|
+
fontFamily: "inherit",
|
80
|
+
fontSize: "100%",
|
81
|
+
lineHeight: "1.15em"
|
82
|
+
}
|
83
|
+
}, B = {
|
84
|
+
externalModules: []
|
85
|
+
}, te = (e) => {
|
86
|
+
if (B.externalModules.length > 0) return B.externalModules;
|
87
|
+
const t = o(e, "salty.config.ts"), r = J(t, "utf8").match(/externalModules:\s?\[(.*)\]/);
|
88
|
+
if (!r) return [];
|
89
|
+
const l = r[1].split(",").map((s) => s.replace(/['"`]/g, "").trim());
|
90
|
+
return B.externalModules = l, l;
|
91
|
+
}, W = (e) => o(e, "./saltygen"), we = ["salty", "css", "styles", "styled"], Se = (e = []) => new RegExp(`\\.(${[...we, ...e].join("|")})\\.`), Z = (e, t = []) => Se(t).test(e), Fe = async (e) => {
|
92
|
+
const t = W(e), a = o(e, "salty.config.ts"), r = o(t, "salty.config.js"), l = await Q(e), s = te(e);
|
93
|
+
await X.build({
|
94
|
+
entryPoints: [a],
|
95
|
+
minify: !0,
|
96
|
+
treeShaking: !0,
|
97
|
+
bundle: !0,
|
98
|
+
outfile: r,
|
99
|
+
format: l,
|
100
|
+
external: s
|
101
|
+
});
|
102
|
+
const y = Date.now(), { config: h } = await import(`${r}?t=${y}`);
|
103
|
+
return h;
|
104
|
+
}, xe = async (e) => {
|
105
|
+
const t = await Fe(e), a = /* @__PURE__ */ new Set(), r = (i, f = []) => i ? Object.entries(i).flatMap(([b, d]) => {
|
106
|
+
if (!d) return;
|
107
|
+
if (typeof d == "object") return r(d, [...f, b]);
|
108
|
+
const V = ee(b), v = R(b), M = [...f, V].join(".");
|
109
|
+
a.add(`"${M}"`);
|
110
|
+
const j = [...f.map(R), v].join("-"), { result: P } = ge(d);
|
111
|
+
return `--${j}: ${P};`;
|
112
|
+
}) : [], l = (i) => i ? Object.entries(i).flatMap(([f, b]) => {
|
113
|
+
const d = r(b);
|
114
|
+
return f === "base" ? d.join("") : `${f} { ${d.join("")} }`;
|
115
|
+
}) : [], s = (i) => i ? Object.entries(i).flatMap(([f, b]) => Object.entries(b).flatMap(([d, V]) => {
|
116
|
+
const v = r(V, [f]), M = `.${f}-${d}, [data-${f}="${d}"]`, j = v.join("");
|
117
|
+
return `${M} { ${j} }`;
|
118
|
+
})) : [], y = r(t.variables), h = l(t.responsiveVariables), F = s(t.conditionalVariables), n = W(e), p = o(n, "css/_variables.css"), w = `:root { ${y.join("")} ${h.join("")} } ${F.join("")}`;
|
119
|
+
$(p, w);
|
120
|
+
const x = o(n, "css/_global.css"), g = U(t.global, "");
|
121
|
+
$(x, `@layer global { ${g} }`);
|
122
|
+
const S = o(n, "css/_reset.css"), u = t.reset === "none" ? {} : typeof t.reset == "object" ? t.reset : $e, k = U(u, "");
|
123
|
+
$(S, `@layer reset { ${k} }`);
|
124
|
+
const c = o(n, "css/_templates.css"), m = de(t.templates), D = ue(t.templates);
|
125
|
+
$(c, m);
|
126
|
+
const C = o(n, "types/css-tokens.d.ts"), T = `
|
127
|
+
// Variable types
|
128
|
+
type VariableTokens = ${[...a].join("|")};
|
129
|
+
type PropertyValueToken = \`{\${VariableTokens}}\`;
|
130
|
+
|
131
|
+
// Template types
|
132
|
+
type TemplateTokens = {
|
133
|
+
${Object.entries(D).map(([i, f]) => `${i}?: ${f}`).join(`
|
134
|
+
`)}
|
135
|
+
}
|
136
|
+
`;
|
137
|
+
$(C, T);
|
138
|
+
}, G = async (e, t, a) => {
|
139
|
+
const r = H(t), l = o(a, "./temp");
|
140
|
+
K(l) || O(l);
|
141
|
+
const s = I(t);
|
142
|
+
let y = J(t, "utf8");
|
143
|
+
y = y.replace(/styled\([^"'`{,]+,/g, "styled('div',");
|
144
|
+
const h = o(a, "js", r + ".js"), F = te(e), n = await Q(e);
|
145
|
+
await X.build({
|
146
|
+
stdin: {
|
147
|
+
contents: y,
|
148
|
+
sourcefile: s.base,
|
149
|
+
resolveDir: s.dir,
|
150
|
+
loader: "tsx"
|
151
|
+
},
|
152
|
+
minify: !1,
|
153
|
+
treeShaking: !0,
|
154
|
+
bundle: !0,
|
155
|
+
outfile: h,
|
156
|
+
format: n,
|
157
|
+
target: ["node20"],
|
158
|
+
keepNames: !0,
|
159
|
+
external: F,
|
160
|
+
packages: "external"
|
161
|
+
});
|
162
|
+
const p = Date.now();
|
163
|
+
return await import(`${h}?t=${p}`);
|
164
|
+
}, L = async (e) => {
|
165
|
+
const t = W(e), a = o(t, "salty.config.js"), r = Date.now(), { config: l } = await import(`${a}?t=${r}`);
|
166
|
+
return l;
|
167
|
+
}, se = () => {
|
168
|
+
try {
|
169
|
+
return process.env.NODE_ENV === "production";
|
170
|
+
} catch {
|
171
|
+
return !1;
|
172
|
+
}
|
173
|
+
}, _e = async (e, t = se()) => {
|
174
|
+
try {
|
175
|
+
const a = Date.now();
|
176
|
+
t ? z.info("Generating CSS in production mode! 🔥") : z.info("Generating CSS in development mode! 🚀");
|
177
|
+
const r = [], l = [], s = W(e), y = o(s, "index.css");
|
178
|
+
(() => {
|
179
|
+
K(s) && ce("rm -rf " + s), O(s), O(o(s, "css")), O(o(s, "types"));
|
180
|
+
})(), await xe(e);
|
181
|
+
const F = await L(e);
|
182
|
+
async function n(c, m) {
|
183
|
+
const D = ["node_modules", "saltygen"], C = ie(c);
|
184
|
+
if (C.isDirectory()) {
|
185
|
+
const N = le(c);
|
186
|
+
if (D.some((i) => c.includes(i))) return;
|
187
|
+
await Promise.all(N.map((i) => n(o(c, i), o(m, i))));
|
188
|
+
} else if (C.isFile() && Z(c)) {
|
189
|
+
const T = await G(e, c, s), i = [];
|
190
|
+
Object.entries(T).forEach(([M, j]) => {
|
191
|
+
if (j.isKeyframes && j.css) {
|
192
|
+
const q = `a_${j.animationName}.css`, re = `css/${q}`, ae = o(s, re);
|
193
|
+
r.push(q), $(ae, j.css);
|
194
|
+
return;
|
195
|
+
}
|
196
|
+
if (!j.generator) return;
|
197
|
+
const P = j.generator._withBuildContext({
|
198
|
+
name: M,
|
199
|
+
config: F,
|
200
|
+
prod: t
|
201
|
+
});
|
202
|
+
l[P.priority] || (l[P.priority] = []), l[P.priority].push(P.cssFileName), i.push(P.cssFileName);
|
203
|
+
const ne = `css/${P.cssFileName}`, oe = o(s, ne);
|
204
|
+
$(oe, P.css);
|
205
|
+
});
|
206
|
+
const f = i.map((M) => `@import url('./${M}');`).join(`
|
207
|
+
`), b = H(c, 6), d = I(c), V = R(d.name), v = o(s, `css/f_${V}-${b}.css`);
|
208
|
+
$(v, f);
|
209
|
+
}
|
210
|
+
}
|
211
|
+
await n(e, s);
|
212
|
+
const p = r.map((c) => `@import url('./css/${c}');`).join(`
|
213
|
+
`);
|
214
|
+
let S = `@layer reset, global, l0, l1, l2, l3, l4, l5, l6, l7, l8;
|
215
|
+
|
216
|
+
${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((c) => {
|
217
|
+
try {
|
218
|
+
return J(o(s, "css", c), "utf8").length > 0;
|
219
|
+
} catch {
|
220
|
+
return !1;
|
221
|
+
}
|
222
|
+
}).map((c) => `@import url('./css/${c}');`).join(`
|
223
|
+
`)}
|
224
|
+
${p}`;
|
225
|
+
if (F.importStrategy !== "component") {
|
226
|
+
const c = l.reduce((m, D, C) => {
|
227
|
+
const N = D.reduce((T, i) => T + `@import url('./css/${i}') layer(l${C});`, "");
|
228
|
+
return `${m}
|
229
|
+
${N}`;
|
230
|
+
}, "");
|
231
|
+
S += c;
|
232
|
+
}
|
233
|
+
$(y, S);
|
234
|
+
const u = Date.now() - a, k = u < 200 ? "🔥" : u < 500 ? "🚀" : u < 1e3 ? "🎉" : u < 2e3 ? "🚗" : u < 5e3 ? "🤔" : "🥴";
|
235
|
+
z.info(`Generated CSS in ${u}ms! ${k}`);
|
236
|
+
} catch (a) {
|
237
|
+
console.error(a);
|
238
|
+
}
|
239
|
+
}, Ee = async (e, t) => {
|
240
|
+
try {
|
241
|
+
const a = [], r = o(e, "./saltygen"), l = o(r, "index.css");
|
242
|
+
if (Z(t)) {
|
243
|
+
const y = await L(e), h = await G(e, t, r);
|
244
|
+
Object.entries(h).forEach(([x, g]) => {
|
245
|
+
if (g.isKeyframes && g.css) {
|
246
|
+
const c = `css/${`a_${g.animationName}.css`}`, m = o(r, c);
|
247
|
+
$(m, g.css);
|
248
|
+
return;
|
249
|
+
}
|
250
|
+
if (!g.generator) return;
|
251
|
+
const S = g.generator._withBuildContext({
|
252
|
+
name: x,
|
253
|
+
config: y
|
254
|
+
}), _ = `css/${S.cssFileName}`, u = o(r, _);
|
255
|
+
a.push(S.cssFileName), $(u, S.css);
|
256
|
+
});
|
257
|
+
const F = J(l, "utf8").split(`
|
258
|
+
`), n = a.map((x) => `@import url('../saltygen/css/${x}');`), w = [.../* @__PURE__ */ new Set([...F, ...n])].join(`
|
259
|
+
`);
|
260
|
+
$(l, w);
|
261
|
+
}
|
262
|
+
} catch (a) {
|
263
|
+
console.error(a);
|
264
|
+
}
|
265
|
+
}, Ve = async (e, t, a = se()) => {
|
266
|
+
try {
|
267
|
+
const r = o(e, "./saltygen");
|
268
|
+
if (Z(t)) {
|
269
|
+
const s = J(t, "utf8");
|
270
|
+
s.replace(/^(?!export\s)const\s.*/gm, (p) => `export ${p}`) !== s && await fe(t, s);
|
271
|
+
const h = await L(e), F = await G(e, t, r);
|
272
|
+
let n = s;
|
273
|
+
if (Object.entries(F).forEach(([p, w]) => {
|
274
|
+
var b;
|
275
|
+
if (w.isKeyframes || !w.generator) return;
|
276
|
+
const x = w.generator._withBuildContext({
|
277
|
+
name: p,
|
278
|
+
config: h,
|
279
|
+
prod: a
|
280
|
+
}), g = new RegExp(`\\s${p}[=\\s]+[^()]+styled\\(([^,]+),`, "g").exec(s);
|
281
|
+
if (!g) return console.error("Could not find the original declaration");
|
282
|
+
const S = (b = g.at(1)) == null ? void 0 : b.trim(), _ = new RegExp(`\\s${p}[=\\s]+styled\\(`, "g").exec(n);
|
283
|
+
if (!_) return console.error("Could not find the original declaration");
|
284
|
+
const { index: u } = _;
|
285
|
+
let k = !1;
|
286
|
+
const c = setTimeout(() => k = !0, 5e3);
|
287
|
+
let m = 0, D = !1, C = 0;
|
288
|
+
for (; !D && !k; ) {
|
289
|
+
const d = n[u + m];
|
290
|
+
d === "(" && C++, d === ")" && C--, C === 0 && d === ")" && (D = !0), m > n.length && (k = !0), m++;
|
291
|
+
}
|
292
|
+
if (!k) clearTimeout(c);
|
293
|
+
else throw new Error("Failed to find the end of the styled call and timed out");
|
294
|
+
const N = u + m, T = n.slice(u, N), i = n, f = ` ${p} = styled(${S}, "${x.classNames}", ${JSON.stringify(x.props)});`;
|
295
|
+
n = n.replace(T, f), i === n && console.error("Minimize file failed to change content", { name: p, tagName: S });
|
296
|
+
}), h.importStrategy === "component") {
|
297
|
+
const p = H(t, 6), w = I(t);
|
298
|
+
n = `import '../../saltygen/css/${`f_${R(w.name)}-${p}.css`}';
|
299
|
+
${n}`;
|
300
|
+
}
|
301
|
+
return n = n.replace("{ styled }", "{ styledClient as styled }"), n = n.replace("@salty-css/react/styled", "@salty-css/react/styled-client"), n;
|
302
|
+
}
|
303
|
+
} catch (r) {
|
304
|
+
console.error("Error in minimizeFile:", r);
|
305
|
+
}
|
306
|
+
};
|
307
|
+
export {
|
308
|
+
Me as a,
|
309
|
+
Se as b,
|
310
|
+
xe as c,
|
311
|
+
G as d,
|
312
|
+
Ee as e,
|
313
|
+
_e as g,
|
314
|
+
Z as i,
|
315
|
+
z as l,
|
316
|
+
Ve as m,
|
317
|
+
we as s
|
318
|
+
};
|
package/package.json
CHANGED
@@ -0,0 +1,97 @@
|
|
1
|
+
import { d as l } from "./dash-case-DBThphLm.js";
|
2
|
+
const W = (t, s) => {
|
3
|
+
if (typeof t != "string") return { result: t };
|
4
|
+
if (!s) return { result: t };
|
5
|
+
const r = [];
|
6
|
+
return Object.values(s).forEach((n) => {
|
7
|
+
const { pattern: o, transform: p } = n;
|
8
|
+
t = t.replace(o, (i) => {
|
9
|
+
const { value: d, css: e } = p(i);
|
10
|
+
return e && r.push(e), d;
|
11
|
+
});
|
12
|
+
}), { result: t, additionalCss: r };
|
13
|
+
}, N = (t) => typeof t != "string" ? { result: t } : /\{[^{}]+\}/g.test(t) ? { result: t.replace(/\{([^{}]+)\}/g, (...n) => `var(--${l(n[1].replaceAll(".", "-"))})`) } : { result: t }, a = (t, s, r) => {
|
14
|
+
if (!t) return "";
|
15
|
+
const n = [], o = Object.entries(t).reduce((i, [d, e]) => {
|
16
|
+
const c = d.trim();
|
17
|
+
if (typeof e == "function" && (e = e()), typeof e == "object") {
|
18
|
+
if (!e) return i;
|
19
|
+
if (c === "variants")
|
20
|
+
return Object.entries(e).forEach(([f, u]) => {
|
21
|
+
u && Object.entries(u).forEach(([y, j]) => {
|
22
|
+
if (!j) return;
|
23
|
+
const b = `${s}.${f}-${y}`, m = a(j, b, r);
|
24
|
+
n.push(m);
|
25
|
+
});
|
26
|
+
}), i;
|
27
|
+
if (c === "defaultVariants")
|
28
|
+
return i;
|
29
|
+
if (c === "compoundVariants")
|
30
|
+
return e.forEach((f) => {
|
31
|
+
const { css: u, ...y } = f, j = Object.entries(y).reduce((m, [k, w]) => `${m}.${k}-${w}`, s), b = a(u, j, r);
|
32
|
+
n.push(b);
|
33
|
+
}), i;
|
34
|
+
if (c.startsWith("@")) {
|
35
|
+
const f = a(e, s, r), u = `${c} {
|
36
|
+
${f.replace(`
|
37
|
+
`, `
|
38
|
+
`)}
|
39
|
+
}`;
|
40
|
+
return n.push(u), i;
|
41
|
+
}
|
42
|
+
const $ = d.includes("&") ? c.replace("&", s) : c.startsWith(":") ? `${s}${c}` : `${s} ${c}`, h = a(e, $, r);
|
43
|
+
return n.push(h), i;
|
44
|
+
}
|
45
|
+
if (r != null && r.templates && r.templates[c]) {
|
46
|
+
const h = e.split(".").reduce((f, u) => f[u], r.templates[c]);
|
47
|
+
if (h) {
|
48
|
+
const f = a(h, "");
|
49
|
+
return `${i}${f}`;
|
50
|
+
}
|
51
|
+
return console.warn(`Template "${c}" with path of "${e}" was not found in config!`), i;
|
52
|
+
}
|
53
|
+
const S = c.startsWith("-") ? c : l(c), O = ($, h = ";") => i = `${i}${$}${h}`, T = ($) => O(`${S}:${$}`);
|
54
|
+
if (typeof e == "number") return T(e);
|
55
|
+
if (typeof e != "string")
|
56
|
+
if ("toString" in e) e = e.toString();
|
57
|
+
else return i;
|
58
|
+
const { modifiers: V } = r || {}, g = function* () {
|
59
|
+
yield N(e), yield W(e, V);
|
60
|
+
}();
|
61
|
+
for (const { result: $, additionalCss: h = [] } of g)
|
62
|
+
e = $, h.forEach((f) => {
|
63
|
+
const u = a(f, "");
|
64
|
+
O(u, "");
|
65
|
+
});
|
66
|
+
return T(e);
|
67
|
+
}, "");
|
68
|
+
return o ? s ? [`${s} { ${o} }`, ...n].join(`
|
69
|
+
`) : o : n.join(`
|
70
|
+
`);
|
71
|
+
}, P = (t, s = []) => {
|
72
|
+
if (!t) return "";
|
73
|
+
const r = [], n = {};
|
74
|
+
if (Object.entries(t).forEach(([o, p]) => {
|
75
|
+
if (typeof p == "object") {
|
76
|
+
if (!p) return;
|
77
|
+
const i = o.trim(), d = P(p, [...s, i]);
|
78
|
+
r.push(d);
|
79
|
+
} else
|
80
|
+
n[o] = p;
|
81
|
+
}), Object.keys(n).length) {
|
82
|
+
const o = s.map(l).join("-"), p = a(n, `.${o}`);
|
83
|
+
r.push(p);
|
84
|
+
}
|
85
|
+
return r.join(`
|
86
|
+
`);
|
87
|
+
}, x = (t) => Object.keys(t), A = (t) => Object.entries(t).reduce((s, [r, n]) => (typeof n == "object" && (s[r] = E(n).map((o) => `"${o}"`).join(" | ")), s), {}), E = (t, s = "", r = /* @__PURE__ */ new Set()) => t ? (Object.entries(t).forEach(([n, o]) => {
|
88
|
+
const p = s ? `${s}.${n}` : n;
|
89
|
+
return typeof o == "object" ? E(o, p, r) : r.add(s);
|
90
|
+
}), [...r]) : [];
|
91
|
+
export {
|
92
|
+
P as a,
|
93
|
+
A as b,
|
94
|
+
N as c,
|
95
|
+
x as g,
|
96
|
+
a as p
|
97
|
+
};
|
@@ -0,0 +1,8 @@
|
|
1
|
+
"use strict";const b=require("./dash-case-BJEkFEGQ.cjs"),K=(t,s)=>{if(typeof t!="string")return{result:t};if(!s)return{result:t};const e=[];return Object.values(s).forEach(n=>{const{pattern:o,transform:p}=n;t=t.replace(o,i=>{const{value:d,css:r}=p(i);return r&&e.push(r),d})}),{result:t,additionalCss:e}},S=t=>typeof t!="string"?{result:t}:/\{[^{}]+\}/g.test(t)?{result:t.replace(/\{([^{}]+)\}/g,(...n)=>`var(--${b.dashCase(n[1].replaceAll(".","-"))})`)}:{result:t},h=(t,s,e)=>{if(!t)return"";const n=[],o=Object.entries(t).reduce((i,[d,r])=>{const c=d.trim();if(typeof r=="function"&&(r=r()),typeof r=="object"){if(!r)return i;if(c==="variants")return Object.entries(r).forEach(([f,u])=>{u&&Object.entries(u).forEach(([l,y])=>{if(!y)return;const j=`${s}.${f}-${l}`,m=h(y,j,e);n.push(m)})}),i;if(c==="defaultVariants")return i;if(c==="compoundVariants")return r.forEach(f=>{const{css:u,...l}=f,y=Object.entries(l).reduce((m,[W,q])=>`${m}.${W}-${q}`,s),j=h(u,y,e);n.push(j)}),i;if(c.startsWith("@")){const f=h(r,s,e),u=`${c} {
|
2
|
+
${f.replace(`
|
3
|
+
`,`
|
4
|
+
`)}
|
5
|
+
}`;return n.push(u),i}const a=d.includes("&")?c.replace("&",s):c.startsWith(":")?`${s}${c}`:`${s} ${c}`,$=h(r,a,e);return n.push($),i}if(e!=null&&e.templates&&e.templates[c]){const $=r.split(".").reduce((f,u)=>f[u],e.templates[c]);if($){const f=h($,"");return`${i}${f}`}return console.warn(`Template "${c}" with path of "${r}" was not found in config!`),i}const g=c.startsWith("-")?c:b.dashCase(c),T=(a,$=";")=>i=`${i}${a}${$}`,O=a=>T(`${g}:${a}`);if(typeof r=="number")return O(r);if(typeof r!="string")if("toString"in r)r=r.toString();else return i;const{modifiers:k}=e||{},w=function*(){yield S(r),yield K(r,k)}();for(const{result:a,additionalCss:$=[]}of w)r=a,$.forEach(f=>{const u=h(f,"");T(u,"")});return O(r)},"");return o?s?[`${s} { ${o} }`,...n].join(`
|
6
|
+
`):o:n.join(`
|
7
|
+
`)},E=(t,s=[])=>{if(!t)return"";const e=[],n={};if(Object.entries(t).forEach(([o,p])=>{if(typeof p=="object"){if(!p)return;const i=o.trim(),d=E(p,[...s,i]);e.push(d)}else n[o]=p}),Object.keys(n).length){const o=s.map(b.dashCase).join("-"),p=h(n,`.${o}`);e.push(p)}return e.join(`
|
8
|
+
`)},N=t=>Object.keys(t),P=t=>Object.entries(t).reduce((s,[e,n])=>(typeof n=="object"&&(s[e]=V(n).map(o=>`"${o}"`).join(" | ")),s),{}),V=(t,s="",e=new Set)=>t?(Object.entries(t).forEach(([n,o])=>{const p=s?`${s}.${n}`:n;return typeof o=="object"?V(o,p,e):e.add(s)}),[...e]):[];exports.getTemplateKeys=N;exports.getTemplateTypes=P;exports.parseStyles=h;exports.parseTemplates=E;exports.parseValueTokens=S;
|
package/index-BKhQ2XRr.js
DELETED
@@ -1,310 +0,0 @@
|
|
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
|
-
};
|
package/index-Bl6Ocgz0.cjs
DELETED
@@ -1,21 +0,0 @@
|
|
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;
|
@@ -1,8 +0,0 @@
|
|
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;
|
@@ -1,100 +0,0 @@
|
|
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
|
-
};
|