@salty-css/core 0.0.1-alpha.233 → 0.0.1-alpha.235

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/main.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const te=require("commander"),A=require("fs"),s=require("fs/promises"),n=require("path"),ne=require("ejs"),e=require("../index-AIl-HgpW.cjs"),ie=require("../pascal-case-iWoaJWwT.cjs"),se=require("child_process"),oe=require("ora"),ae=require("../should-restart-lhNr1-w7.cjs");var G=typeof document<"u"?document.currentScript:null;const X=y=>new Promise((C,P)=>{se.exec(y,x=>{if(x)return P(x);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(),x=y.join(" ");await X(`npm install ${x}`),P.succeed(`Installed packages: ${C}`)},re=()=>A.existsSync(n.join(process.cwd(),"node_modules",".bin","prettier"));async function S(y){try{if(!re())return;await X(`./node_modules/.bin/prettier --write "${y}"`),e.logger.info(`Formatted ${y} with Prettier`)}catch(C){e.logger.error(`Error formatting ${y} with Prettier:`,C)}}async function ce(){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:f}=await C[i],d=ne.render(f,a);return{fileName:i,content:d}},x=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:G&&G.tagName.toUpperCase()==="SCRIPT"&&G.src||new URL("bin/main.cjs",document.baseURI).href);return N(i)},V=await(async()=>(await x()).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}`},H=i=>{const a=i==="."?"":i,f=process.cwd();return n.join(f,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 e.logError("Salty CSS project must be initialized in a directory with a package.json file.");e.logger.info("Initializing a new Salty-CSS project!");const{dir:f=i,cssFile:d,skipInstall:p}=this.opts();if(!f)return e.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 c=process.cwd(),r=H(f),q=await Promise.all([P("salty.config.ts"),P("saltygen/index.css")]);await s.mkdir(r,{recursive:!0});const m=q.map(async({fileName:t,content:u})=>{const l=n.join(r,t);if(await s.readFile(l,"utf-8").catch(()=>{})!==void 0){e.logger.debug("File already exists: "+l);return}const k=t.split("/").slice(0,-1).join("/");k&&await s.mkdir(n.join(r,k),{recursive:!0}),e.logger.info("Creating file: "+l),await s.writeFile(l,u),await S(l)});await Promise.all(m);const w=n.relative(c,r)||".",h=n.join(c,".saltyrc.json"),g=await s.readFile(h,"utf-8").catch(()=>{});if(g===void 0){e.logger.info("Creating file: "+h);const u=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,u),await S(h)}else{const t=JSON.parse(g),u=(t==null?void 0:t.projects)||[];if(u.findIndex(o=>o.dir===w)===-1){u.push({dir:w,framework:"react"}),t.projects=[...u];const o=JSON.stringify(t,null,2);o!==g&&(e.logger.info("Edit file: "+h),await s.writeFile(h,o),await S(h))}}const j=n.join(c,".gitignore"),T=await s.readFile(j,"utf-8").catch(()=>{});T!==void 0&&(T.includes("saltygen")||(e.logger.info("Edit file: "+j),await s.writeFile(j,T+`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const te=require("commander"),A=require("fs"),s=require("fs/promises"),n=require("path"),ne=require("ejs"),e=require("../index-BBffxkVO.cjs"),ie=require("../pascal-case-iWoaJWwT.cjs"),se=require("child_process"),oe=require("ora"),ae=require("../should-restart-Rq0dgdA1.cjs");var G=typeof document<"u"?document.currentScript:null;const X=y=>new Promise((C,P)=>{se.exec(y,x=>{if(x)return P(x);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(),x=y.join(" ");await X(`npm install ${x}`),P.succeed(`Installed packages: ${C}`)},re=()=>A.existsSync(n.join(process.cwd(),"node_modules",".bin","prettier"));async function S(y){try{if(!re())return;await X(`./node_modules/.bin/prettier --write "${y}"`),e.logger.info(`Formatted ${y} with Prettier`)}catch(C){e.logger.error(`Error formatting ${y} with Prettier:`,C)}}async function ce(){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:f}=await C[i],d=ne.render(f,a);return{fileName:i,content:d}},x=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:G&&G.tagName.toUpperCase()==="SCRIPT"&&G.src||new URL("bin/main.cjs",document.baseURI).href);return N(i)},V=await(async()=>(await x()).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}`},H=i=>{const a=i==="."?"":i,f=process.cwd();return n.join(f,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 e.logError("Salty CSS project must be initialized in a directory with a package.json file.");e.logger.info("Initializing a new Salty-CSS project!");const{dir:f=i,cssFile:d,skipInstall:p}=this.opts();if(!f)return e.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 c=process.cwd(),r=H(f),q=await Promise.all([P("salty.config.ts"),P("saltygen/index.css")]);await s.mkdir(r,{recursive:!0});const m=q.map(async({fileName:t,content:u})=>{const l=n.join(r,t);if(await s.readFile(l,"utf-8").catch(()=>{})!==void 0){e.logger.debug("File already exists: "+l);return}const k=t.split("/").slice(0,-1).join("/");k&&await s.mkdir(n.join(r,k),{recursive:!0}),e.logger.info("Creating file: "+l),await s.writeFile(l,u),await S(l)});await Promise.all(m);const w=n.relative(c,r)||".",h=n.join(c,".saltyrc.json"),g=await s.readFile(h,"utf-8").catch(()=>{});if(g===void 0){e.logger.info("Creating file: "+h);const u=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,u),await S(h)}else{const t=JSON.parse(g),u=(t==null?void 0:t.projects)||[];if(u.findIndex(o=>o.dir===w)===-1){u.push({dir:w,framework:"react"}),t.projects=[...u];const o=JSON.stringify(t,null,2);o!==g&&(e.logger.info("Edit file: "+h),await s.writeFile(h,o),await S(h))}}const j=n.join(c,".gitignore"),T=await s.readFile(j,"utf-8").catch(()=>{});T!==void 0&&(T.includes("saltygen")||(e.logger.info("Edit file: "+j),await s.writeFile(j,T+`
2
2
 
3
3
  # Salty-CSS
4
4
  saltygen
package/bin/main.js CHANGED
@@ -3,11 +3,11 @@ import { existsSync as Q, watch as re } from "fs";
3
3
  import { mkdir as q, readFile as S, writeFile as C } from "fs/promises";
4
4
  import { join as a, relative as z, parse as ce, format as te } from "path";
5
5
  import { render as le } from "ejs";
6
- import { l as t, a as h, g as K, i as de, b as fe } from "../index-D6UVbPah.js";
6
+ import { l as t, a as h, g as K, i as de, b as fe } from "../index-CplHXohq.js";
7
7
  import { p as pe } from "../pascal-case-BQpR5PdN.js";
8
8
  import { exec as ue } from "child_process";
9
9
  import ge from "ora";
10
- import { c as ye } from "../should-restart-0ZMFyli-.js";
10
+ import { c as ye } from "../should-restart-DgG-4Ee4.js";
11
11
  const ne = (g) => new Promise((P, x) => {
12
12
  ue(g, ($) => {
13
13
  if ($) return x($);
@@ -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-styles-3N79AOBO.cjs");const e=require("../index-AIl-HgpW.cjs");require("../css/merge.cjs");require("../define-templates-Cunsb_Tr.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;
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-styles-3N79AOBO.cjs");const e=require("../index-BBffxkVO.cjs");require("../css/merge.cjs");require("../define-templates-Cunsb_Tr.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
@@ -5,7 +5,7 @@ import "path";
5
5
  import "fs";
6
6
  import "fs/promises";
7
7
  import "../parse-styles-Bo7fQ_SV.js";
8
- import { e as g, d as F, g as y, b as x, i as S, m as c, s as f, c as C } from "../index-D6UVbPah.js";
8
+ import { e as g, d as F, g as y, b as x, i as S, m as c, s as f, c as C } from "../index-CplHXohq.js";
9
9
  import "../css/merge.js";
10
10
  import "../define-templates-4A2yHcMF.js";
11
11
  export {
@@ -0,0 +1,38 @@
1
+ "use strict";const _e=require("esbuild"),Te=require("child_process"),D=require("./dash-case-BJEkFEGQ.cjs"),c=require("path"),r=require("fs"),he=require("fs/promises"),ee=require("./parse-styles-3N79AOBO.cjs"),L=require("winston"),M=require("./css/merge.cjs"),Oe=require("./define-templates-Cunsb_Tr.cjs"),ae=require("typescript");var ce=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 we=Ee(_e),Se=async(e,t=[])=>{if(!e)return"";const s=[],n={};for(const[o,i]of Object.entries(e))if(typeof i!="function")if(i&&typeof i=="object"){const a=o.trim(),d=await Se(i,[...t,a]);s.push(d)}else n[o]=i;if(Object.keys(n).length){const o=t.map(D.dashCase).join("-"),i="t_"+D.toHash(o,4),a=await ee.parseAndJoinStyles(n,`.${o}, .${i}`);s.push(a)}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]=je(n).map(o=>`"${o}"`).join(" | ")),t),{}):{},je=(e,t="",s=new Set)=>e?(Object.entries(e).forEach(([n,o])=>{const i=t?`${t}.${n}`:n;return typeof o=="object"?je(o,i,s):s.add(t)}),[...s]):[],be=e=>{if(!e||e==="/")throw new Error("Could not find package.json file");const t=c.join(e,"package.json");return r.existsSync(t)?t:be(c.join(e,".."))},Ve=async e=>{const t=be(e);return await he.readFile(t,"utf-8").then(JSON.parse).catch(()=>{})},Re=async e=>{const t=await Ve(e);if(t)return t.type};let q;const $e=async e=>{if(q)return q;const t=await Re(e);return t==="module"?q="esm":(t==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:ce&&ce.tagName.toUpperCase()==="SCRIPT"&&ce.src||new URL("index-BBffxkVO.cjs",document.baseURI).href).endsWith(".cjs"))&&(q="cjs"),q||"esm"},B=L.createLogger({level:"debug",format:L.format.combine(L.format.colorize(),L.format.cli()),transports:[new L.transports.Console({})]}),Me=e=>{B.error(e)};function Fe(e){return e?typeof e!="string"?Fe(String(e)):e.replace(/[^\d\w]/g,"."):""}const Je={"*, *::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"}},ze=(e,t)=>new Promise((s,n)=>{const o=setTimeout(()=>{n(new Error("Timeout"))},100),i=ae.createSourceFile("temp.ts",e,ae.ScriptTarget.Latest,!0);function a(d){if(ae.isVariableDeclaration(d)&&d.name.getText()===t){const g=d.getStart(),m=d.getEnd();clearTimeout(o),s([g,m])}d.forEachChild(a)}a(i)}),E={externalModules:[],rcFile:void 0,destDir:void 0},Ce=e=>{if(E.externalModules.length>0)return E.externalModules;const s=r.readFileSync(e,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!s)return[];const n=s[1].split(",").map(o=>o.replace(/['"`]/g,"").trim());return E.externalModules=n,n},J=async e=>{if(E.destDir)return E.destDir;const t=await le(e),s=c.join(e,(t==null?void 0:t.saltygenDir)||"saltygen");return E.destDir=s,s},re=["salty","css","styles","styled"],Pe=(e=[])=>new RegExp(`\\.(${[...re,...e].join("|")})\\.`),te=(e,t=[])=>Pe(t).test(e),Ne=async e=>{if(E.rcFile)return E.rcFile;if(e==="/")throw new Error("Could not find .saltyrc.json file");const t=c.join(e,".saltyrc.json"),s=await he.readFile(t,"utf-8").then(JSON.parse).catch(()=>{});return s?(E.rcFile=s,s):Ne(c.join(e,".."))},le=async e=>{var n,o;const t=await Ne(e),s=(n=t.projects)==null?void 0:n.find(i=>e.endsWith(i.dir||""));return s||((o=t.projects)==null?void 0:o.find(i=>i.dir===t.defaultProject))},qe=async e=>{const t=await le(e),s=await J(e),n=c.join(e,(t==null?void 0:t.configDir)||"","salty.config.ts"),o=c.join(s,"salty.config.js"),i=await $e(e),a=Ce(n);await we.build({entryPoints:[n],minify:!0,treeShaking:!0,bundle:!0,outfile:o,format:i,external:a});const d=Date.now(),{config:g}=await import(`${o}?t=${d}`);return{config:g,path:o}},ke=async(e,t)=>{var de,me;const s=await J(e),n={mediaQueries:[],globalStyles:[],variables:[],templates:[]};await Promise.all([...t].map(async S=>{const{contents:$,outputFilePath:K}=await Q(e,S,s);Object.entries($).forEach(([O,P])=>{P.isMedia?n.mediaQueries.push([O,P]):P.isGlobalDefine?n.globalStyles.push(P):P.isDefineVariables?n.variables.push(P):P.isDefineTemplates&&n.templates.push(P._setPath(`${O};;${K}`))})}));const{config:o,path:i}=await qe(e),a={...o},d=new Set,g=async(S,$=[])=>{if(!S)return[];const K=Object.entries(S).map(async([P,z])=>{const Y=async _=>{if(!_)return;if(_ instanceof Promise)return await Y(await _);if(typeof _=="function")return await Y(await _());if(typeof _=="object")return await g(_,[...$,P]);const ne=Fe(P),oe=D.dashCase(P),ie=[...$,ne].join(".");d.add(`"${ie}"`);const Z=[...$.map(D.dashCase),oe].join("-"),ye=ee.parseVariableTokens(_);return ye?`--${Z}: ${ye.transformed};`:`--${Z}: ${_};`};return await Y(z)});return(await Promise.all(K)).flat()},m=async S=>{if(!S)return[];const $=Object.entries(S).map(async([O,P])=>{const z=await g(P);return O==="base"?z.join(""):`${O} { ${z.join("")} }`});return(await Promise.all($)).flat()},l=async S=>{if(!S)return[];const $=Object.entries(S).map(async([O,P])=>{const z=Object.entries(P).map(async([_,ne])=>{const oe=await g(ne,[O]),ie=`.${O}-${_}, [data-${O}="${_}"]`,Z=oe.join("");return`${ie} { ${Z} }`});return(await Promise.all(z)).flat()});return(await Promise.all($)).flat()},h=S=>({...S,responsive:void 0,conditional:void 0}),p=S=>n.variables.map($=>S==="static"?h($._current):$._current[S]),w=M.mergeObjects(h(o.variables),p("static")),y=await g(w),F=M.mergeObjects((de=o.variables)==null?void 0:de.responsive,p("responsive")),k=await m(F),x=M.mergeObjects((me=o.variables)==null?void 0:me.conditional,p("conditional")),v=await l(x),V=c.join(s,"css/_variables.css"),pe=`:root { ${y.join("")} ${k.join("")} } ${v.join("")}`;r.writeFileSync(V,pe),a.staticVariables=w;const R=c.join(s,"css/_global.css"),se=M.mergeObjects(o.global,n.globalStyles),u=await ee.parseAndJoinStyles(se,"");r.writeFileSync(R,`@layer global { ${u} }`);const j=c.join(s,"css/_reset.css"),f=o.reset==="none"?{}:typeof o.reset=="object"?o.reset:Je,C=await ee.parseAndJoinStyles(f,"");r.writeFileSync(j,`@layer reset { ${C} }`);const N=c.join(s,"css/_templates.css"),T=M.mergeObjects(o.templates,n.templates),H=await Se(T),W=ve(T);r.writeFileSync(N,`@layer templates { ${H} }`),a.templates=T;const I=o.templates?[Oe.defineTemplates(o.templates)._setPath(`config;;${i}`)]:[],U=M.mergeFactories(n.templates,I);a.templatePaths=Object.fromEntries(Object.entries(U).map(([S,$])=>[S,$._path]));const{mediaQueries:A}=n;a.mediaQueries=Object.fromEntries(A.map(([S,$])=>[`@${S}`,$]));const G=A.map(([S])=>`'@${S}'`).join(" | "),X=c.join(s,"types/css-tokens.d.ts"),xe=`
3
+ // Variable types
4
+ type VariableTokens = ${[...d].join("|")};
5
+ type PropertyValueToken = \`{\${VariableTokens}}\`;
6
+
7
+ // Template types
8
+ type TemplateTokens = {
9
+ ${Object.entries(W).map(([S,$])=>`${S}?: ${$}`).join(`
10
+ `)}
11
+ }
12
+
13
+ // Media query types
14
+ type MediaQueryKeys = ${G||"''"};
15
+ `;r.writeFileSync(X,xe);const De=c.join(s,"cache/config-cache.json");r.writeFileSync(De,JSON.stringify(a,null,2))},ge=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 a=o.exec(e);if(a){const d=a.at(1);if(re.some(m=>d==null?void 0:d.includes(m)))return t}return"styled('div',"}),He=(e,t)=>{try{const s=r.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}},Q=async(e,t,s)=>{const n=D.toHash(t),o=c.join(s,"./temp");r.existsSync(o)||r.mkdirSync(o);const i=c.parse(t);let a=r.readFileSync(t,"utf8");a=ge(a),a=He(a,e);const d=c.join(s,"js",n+".js"),g=await le(e),m=c.join(e,(g==null?void 0:g.configDir)||"","salty.config.ts"),l=Ce(m),h=await $e(e);await we.build({stdin:{contents:a,sourcefile:i.base,resolveDir:i.dir,loader:"tsx"},minify:!1,treeShaking:!0,bundle:!0,outfile:d,format:h,target:["node20"],keepNames:!0,external:l,packages:"external",plugins:[{name:"test",setup:y=>{y.onLoad({filter:/.*\.css|salty|styles|styled\.ts/},F=>{const k=r.readFileSync(F.path,"utf8");return{contents:ge(k),loader:"ts"}})}}]});const p=Date.now();return{contents:await import(`${d}?t=${p}`),outputFilePath:d}},We=async e=>{const t=await J(e),s=c.join(t,"cache/config-cache.json"),n=r.readFileSync(s,"utf8");if(!n)throw new Error("Could not find config cache file");return JSON.parse(n)},fe=async e=>{const t=await We(e),s=await J(e),n=c.join(s,"salty.config.js"),o=Date.now(),{config:i}=await import(`${n}?t=${o}`);return M.mergeObjects(i,t)},ue=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},Ie=async(e,t=ue(),s=!0)=>{try{const n=Date.now();t?B.info("Generating CSS in production mode! 🔥"):B.info("Generating CSS in development mode! 🚀");const o=[],i=[],a=await J(e),d=c.join(a,"index.css");s&&(()=>{r.existsSync(a)&&Te.execSync("rm -rf "+a),r.mkdirSync(a,{recursive:!0}),r.mkdirSync(c.join(a,"css")),r.mkdirSync(c.join(a,"types")),r.mkdirSync(c.join(a,"js")),r.mkdirSync(c.join(a,"cache"))})();const m=new Set,l=new Set;async function h(u){const j=["node_modules","saltygen"],b=r.statSync(u);if(b.isDirectory()){const f=r.readdirSync(u);if(j.some(N=>u.includes(N)))return;await Promise.all(f.map(N=>h(c.join(u,N))))}else if(b.isFile()&&te(u)){m.add(u);const C=r.readFileSync(u,"utf8");/define[\w\d]+\(/.test(C)&&l.add(u)}}await h(e),await ke(e,l);const p={keyframes:[],components:[],classNames:[]};await Promise.all([...m].map(async u=>{const{contents:j}=await Q(e,u,a);for(let[b,f]of Object.entries(j))f instanceof Promise&&(f=await f),f.isKeyframes?p.keyframes.push({value:f,src:u,name:b}):f.isClassName?p.classNames.push({...f,src:u,name:b}):f.generator&&p.components.push({...f,src:u,name:b})}));const w=await fe(e);for(const u of p.keyframes){const{value:j}=u,b=`a_${j.animationName}.css`,f=`css/${b}`,C=c.join(a,f);o.push(b),r.writeFileSync(C,j.css)}const y={};for(const u of p.components){const{src:j,name:b}=u;y[j]||(y[j]=[]);const f=u.generator._withBuildContext({callerName:b,isProduction:t,config:w});i[f.priority]||(i[f.priority]=[]);const C=await f.css;if(!C)continue;i[f.priority].push(f.cssFileName);const N=`css/${f.cssFileName}`,T=c.join(a,N);r.writeFileSync(T,C),w.importStrategy==="component"&&y[j].push(f.cssFileName)}for(const u of p.classNames){const{src:j,name:b}=u;y[j]||(y[j]=[]);const f=u.generator._withBuildContext({callerName:b,isProduction:t,config:w}),C=await f.css;if(!C)continue;i[f.priority]||(i[f.priority]=[]),i[f.priority].push(f.cssFileName);const N=`css/${f.cssFileName}`,T=c.join(a,N);r.writeFileSync(T,C),w.importStrategy==="component"&&y[j].push(f.cssFileName)}w.importStrategy==="component"&&Object.entries(y).forEach(([u,j])=>{const b=j.map(H=>`@import url('./${H}');`).join(`
20
+ `),f=D.toHash(u,6),C=c.parse(u),N=D.dashCase(C.name),T=c.join(a,`css/f_${N}-${f}.css`);r.writeFileSync(T,b||"/* Empty file */")});const F=o.map(u=>`@import url('./css/${u}');`).join(`
21
+ `);let V=`@layer reset, global, templates, l0, l1, l2, l3, l4, l5, l6, l7, l8;
22
+
23
+ ${["_variables.css","_reset.css","_global.css","_templates.css"].filter(u=>{try{return r.readFileSync(c.join(a,"css",u),"utf8").length>0}catch{return!1}}).map(u=>`@import url('./css/${u}');`).join(`
24
+ `)}
25
+ ${F}`;if(w.importStrategy!=="component"){const u=i.reduce((j,b,f)=>{const C=b.reduce((W,I)=>{var X;const U=c.join(a,"css",I),A=r.readFileSync(U,"utf8"),G=((X=/.*-([^-]+)-\d+.css/.exec(I))==null?void 0:X.at(1))||D.toHash(U,6);return W.includes(G)?W:`${W}
26
+ /*start:${G}-${I}*/
27
+ ${A}
28
+ /*end:${G}*/
29
+ `},""),N=`l_${f}.css`,T=c.join(a,"css",N),H=`@layer l${f} { ${C}
30
+ }`;return r.writeFileSync(T,H),`${j}
31
+ @import url('./css/${N}');`},"");V+=u}r.writeFileSync(d,V);const R=Date.now()-n,se=R<200?"🔥":R<500?"🚀":R<1e3?"🎉":R<2e3?"🚗":R<5e3?"🤔":"🥴";B.info(`Generated CSS in ${R}ms! ${se}`)}catch(n){console.error(n)}},Ge=async(e,t,s=ue())=>{try{const n=await J(e);if(te(t)){const i=[],a=await fe(e),{contents:d}=await Q(e,t,n);for(const[g,m]of Object.entries(d)){if(m.isKeyframes&&m.css){const F=`css/${`a_${m.animationName}.css`}`,k=c.join(n,F);r.writeFileSync(k,await m.css);return}if(m.isClassName){const y=m.generator._withBuildContext({callerName:g,isProduction:s,config:a}),F=await y.css;if(!F)continue;i[y.priority]||(i[y.priority]=[]),i[y.priority].push(y.cssFileName);const k=`css/${y.cssFileName}`,x=c.join(n,k);r.writeFileSync(x,F)}if(!m.generator)return;const l=m.generator._withBuildContext({callerName:g,isProduction:s,config:a}),h=await l.css;if(!h)continue;const p=`css/${l.cssFileName}`,w=c.join(n,p);r.writeFileSync(w,h),i[l.priority]||(i[l.priority]=[]),i[l.priority].push(l.cssFileName)}if(a.importStrategy!=="component")i.forEach((g,m)=>{const l=`l_${m}.css`,h=c.join(n,"css",l);let p=r.readFileSync(h,"utf8");g.forEach(w=>{var x;const y=c.join(n,"css",w),F=((x=/.*-([^-]+)-\d+.css/.exec(w))==null?void 0:x.at(1))||D.toHash(y,6);if(!p.includes(F)){const v=r.readFileSync(y,"utf8"),V=`/*start:${F}-${w}*/
32
+ ${v}
33
+ /*end:${F}*/
34
+ `;p=`${p.replace(/\}$/,"")}
35
+ ${V}
36
+ }`}}),r.writeFileSync(h,p)});else{const g=i.flat().map(w=>`@import url('./${w}');`).join(`
37
+ `),m=D.toHash(t,6),l=c.parse(t),h=D.dashCase(l.name),p=c.join(n,`css/f_${h}-${m}.css`);r.writeFileSync(p,g||"/* Empty file */")}}}catch(n){console.error(n)}},Ke=async(e,t,s=ue())=>{var n,o;try{const i=await J(e);if(te(t)){const d=r.readFileSync(t,"utf8"),g=await fe(e),{contents:m}=await Q(e,t,i);let l=d;for(const[h,p]of Object.entries(m)){if(p.isKeyframes||!p.generator)continue;const w=p.generator._withBuildContext({callerName:h,isProduction:s,config:g}),[y,F]=await ze(l,h),k=l.slice(y,F);if(p.isClassName){const x=l,v=` ${h} = className("${w.classNames}")`;l=l.replace(k,v),x===l&&console.error("Minimize file failed to change content",{name:h})}if(k.includes("styled")){const x=(o=(n=/styled\(([^,]+),/.exec(k))==null?void 0:n.at(1))==null?void 0:o.trim(),v=l,V=` ${h} = styled(${x}, "${w.classNames}", ${JSON.stringify(w.clientProps)})`;l=l.replace(k,V),v===l&&console.error("Minimize file failed to change content",{name:h,tagName:x})}}if(g.importStrategy==="component"){const h=D.toHash(t,6),p=c.parse(t);l=`import '../../saltygen/css/${`f_${D.dashCase(p.name)}-${h}.css`}';
38
+ ${l}`}return l=l.replace("@salty-css/react/class-name","@salty-css/react/class-name-client"),l=l.replace("{ styled }","{ styledClient as styled }"),l=l.replace("@salty-css/react/styled","@salty-css/react/styled-client"),l}}catch(i){console.error("Error in minimizeFile:",i)}};exports.compileSaltyFile=Q;exports.generateConfigStyles=ke;exports.generateCss=Ie;exports.generateFile=Ge;exports.isSaltyFile=te;exports.logError=Me;exports.logger=B;exports.minimizeFile=Ke;exports.saltyFileExtensions=re;exports.saltyFileRegExp=Pe;
@@ -53,7 +53,7 @@ const Pt = async (t) => {
53
53
  tt.error(t);
54
54
  };
55
55
  function Nt(t) {
56
- return t ? typeof t != "string" ? Nt(String(t)) : t.replace(/[\s-]/g, ".").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g, (e, s) => (s > 0 ? "." : "") + e.toLowerCase()) : "";
56
+ return t ? typeof t != "string" ? Nt(String(t)) : t.replace(/[^\d\w]/g, ".") : "";
57
57
  }
58
58
  const It = {
59
59
  /** Set box model to border-box */
@@ -127,7 +127,7 @@ const It = {
127
127
  if (E.destDir) return E.destDir;
128
128
  const e = await pt(t), s = c(t, (e == null ? void 0 : e.saltygenDir) || "saltygen");
129
129
  return E.destDir = s, s;
130
- }, Dt = ["salty", "css", "styles", "styled"], Lt = (t = []) => new RegExp(`\\.(${[...Dt, ...t].join("|")})\\.`), ut = (t, e = []) => Lt(e).test(t), kt = async (t) => {
130
+ }, Dt = ["salty", "css", "styles", "styled"], Bt = (t = []) => new RegExp(`\\.(${[...Dt, ...t].join("|")})\\.`), ut = (t, e = []) => Bt(e).test(t), kt = async (t) => {
131
131
  if (E.rcFile) return E.rcFile;
132
132
  if (t === "/") throw new Error("Could not find .saltyrc.json file");
133
133
  const e = c(t, ".saltyrc.json"), s = await St(e, "utf-8").then(JSON.parse).catch(() => {
@@ -137,7 +137,7 @@ const It = {
137
137
  var n, o;
138
138
  const e = await kt(t), s = (n = e.projects) == null ? void 0 : n.find((a) => t.endsWith(a.dir || ""));
139
139
  return s || ((o = e.projects) == null ? void 0 : o.find((a) => a.dir === e.defaultProject));
140
- }, At = async (t) => {
140
+ }, Lt = async (t) => {
141
141
  const e = await pt(t), s = await J(t), n = c(t, (e == null ? void 0 : e.configDir) || "", "salty.config.ts"), o = c(s, "salty.config.js"), a = await Pt(t), i = xt(n);
142
142
  await bt.build({
143
143
  entryPoints: [n],
@@ -150,7 +150,7 @@ const It = {
150
150
  });
151
151
  const p = Date.now(), { config: y } = await import(`${o}?t=${p}`);
152
152
  return { config: y, path: o };
153
- }, Bt = async (t, e) => {
153
+ }, Qt = async (t, e) => {
154
154
  var gt, ht;
155
155
  const s = await J(t), n = {
156
156
  mediaQueries: [],
@@ -160,28 +160,28 @@ const It = {
160
160
  };
161
161
  await Promise.all(
162
162
  [...e].map(async (w) => {
163
- const { contents: S, outputFilePath: Q } = await st(t, w, s);
163
+ const { contents: S, outputFilePath: q } = await st(t, w, s);
164
164
  Object.entries(S).forEach(([V, P]) => {
165
- P.isMedia ? n.mediaQueries.push([V, P]) : P.isGlobalDefine ? n.globalStyles.push(P) : P.isDefineVariables ? n.variables.push(P) : P.isDefineTemplates && n.templates.push(P._setPath(`${V};;${Q}`));
165
+ P.isMedia ? n.mediaQueries.push([V, P]) : P.isGlobalDefine ? n.globalStyles.push(P) : P.isDefineVariables ? n.variables.push(P) : P.isDefineTemplates && n.templates.push(P._setPath(`${V};;${q}`));
166
166
  });
167
167
  })
168
168
  );
169
- const { config: o, path: a } = await At(t), i = { ...o }, p = /* @__PURE__ */ new Set(), y = async (w, S = []) => {
169
+ const { config: o, path: a } = await Lt(t), i = { ...o }, p = /* @__PURE__ */ new Set(), y = async (w, S = []) => {
170
170
  if (!w) return [];
171
- const Q = Object.entries(w).map(async ([P, z]) => {
172
- const X = async (k) => {
171
+ const q = Object.entries(w).map(async ([P, z]) => {
172
+ const Y = async (k) => {
173
173
  if (!k) return;
174
- if (k instanceof Promise) return await X(await k);
175
- if (typeof k == "function") return await X(await k());
174
+ if (k instanceof Promise) return await Y(await k);
175
+ if (typeof k == "function") return await Y(await k());
176
176
  if (typeof k == "object") return await y(k, [...S, P]);
177
177
  const ot = Nt(P), at = I(P), it = [...S, ot].join(".");
178
178
  p.add(`"${it}"`);
179
- const Y = [...S.map(I), at].join("-"), wt = Ot(k);
180
- return wt ? `--${Y}: ${wt.transformed};` : `--${Y}: ${k};`;
179
+ const Z = [...S.map(I), at].join("-"), wt = Ot(k);
180
+ return wt ? `--${Z}: ${wt.transformed};` : `--${Z}: ${k};`;
181
181
  };
182
- return await X(z);
182
+ return await Y(z);
183
183
  });
184
- return (await Promise.all(Q)).flat();
184
+ return (await Promise.all(q)).flat();
185
185
  }, m = async (w) => {
186
186
  if (!w) return [];
187
187
  const S = Object.entries(w).map(async ([V, P]) => {
@@ -193,8 +193,8 @@ const It = {
193
193
  if (!w) return [];
194
194
  const S = Object.entries(w).map(async ([V, P]) => {
195
195
  const z = Object.entries(P).map(async ([k, ot]) => {
196
- const at = await y(ot, [V]), it = `.${V}-${k}, [data-${V}="${k}"]`, Y = at.join("");
197
- return `${it} { ${Y} }`;
196
+ const at = await y(ot, [V]), it = `.${V}-${k}, [data-${V}="${k}"]`, Z = at.join("");
197
+ return `${it} { ${Z} }`;
198
198
  });
199
199
  return (await Promise.all(z)).flat();
200
200
  });
@@ -205,27 +205,27 @@ const It = {
205
205
  C(M, `@layer global { ${f} }`);
206
206
  const $ = c(s, "css/_reset.css"), l = o.reset === "none" ? {} : typeof o.reset == "object" ? o.reset : It, F = await lt(l, "");
207
207
  C($, `@layer reset { ${F} }`);
208
- const N = c(s, "css/_templates.css"), T = H(o.templates, n.templates), K = await Ct(T), L = Wt(T);
208
+ const N = c(s, "css/_templates.css"), T = H(o.templates, n.templates), K = await Ct(T), B = Wt(T);
209
209
  C(N, `@layer templates { ${K} }`), i.templates = T;
210
- const A = o.templates ? [zt(o.templates)._setPath(`config;;${a}`)] : [], Z = Jt(n.templates, A);
211
- i.templatePaths = Object.fromEntries(Object.entries(Z).map(([w, S]) => [w, S._path]));
212
- const { mediaQueries: q } = n;
213
- i.mediaQueries = Object.fromEntries(q.map(([w, S]) => [`@${w}`, S]));
214
- const B = q.map(([w]) => `'@${w}'`).join(" | "), U = c(s, "types/css-tokens.d.ts"), Tt = `
210
+ const L = o.templates ? [zt(o.templates)._setPath(`config;;${a}`)] : [], A = Jt(n.templates, L);
211
+ i.templatePaths = Object.fromEntries(Object.entries(A).map(([w, S]) => [w, S._path]));
212
+ const { mediaQueries: U } = n;
213
+ i.mediaQueries = Object.fromEntries(U.map(([w, S]) => [`@${w}`, S]));
214
+ const Q = U.map(([w]) => `'@${w}'`).join(" | "), X = c(s, "types/css-tokens.d.ts"), Tt = `
215
215
  // Variable types
216
216
  type VariableTokens = ${[...p].join("|")};
217
217
  type PropertyValueToken = \`{\${VariableTokens}}\`;
218
218
 
219
219
  // Template types
220
220
  type TemplateTokens = {
221
- ${Object.entries(L).map(([w, S]) => `${w}?: ${S}`).join(`
221
+ ${Object.entries(B).map(([w, S]) => `${w}?: ${S}`).join(`
222
222
  `)}
223
223
  }
224
224
 
225
225
  // Media query types
226
- type MediaQueryKeys = ${B || "''"};
226
+ type MediaQueryKeys = ${Q || "''"};
227
227
  `;
228
- C(U, Tt);
228
+ C(X, Tt);
229
229
  const _t = c(s, "cache/config-cache.json");
230
230
  C(_t, JSON.stringify(i, null, 2));
231
231
  }, $t = (t) => t.replace(/styled\(([^"'`{,]+),/g, (e, s) => {
@@ -238,7 +238,7 @@ const It = {
238
238
  if (Dt.some((m) => p == null ? void 0 : p.includes(m))) return e;
239
239
  }
240
240
  return "styled('div',";
241
- }), Qt = (t, e) => {
241
+ }), qt = (t, e) => {
242
242
  try {
243
243
  const s = _(c(e, "saltygen/cache/config-cache.json"), "utf8");
244
244
  return s ? `globalThis.saltyConfig = ${s};
@@ -254,7 +254,7 @@ ${t}`;
254
254
  ft(o) || G(o);
255
255
  const a = et(e);
256
256
  let i = _(e, "utf8");
257
- i = $t(i), i = Qt(i, t);
257
+ i = $t(i), i = qt(i, t);
258
258
  const p = c(s, "js", n + ".js"), y = await pt(t), m = c(t, (y == null ? void 0 : y.configDir) || "", "salty.config.ts"), r = xt(m), g = await Pt(t);
259
259
  await bt.build({
260
260
  stdin: {
@@ -286,12 +286,12 @@ ${t}`;
286
286
  });
287
287
  const u = Date.now();
288
288
  return { contents: await import(`${p}?t=${u}`), outputFilePath: p };
289
- }, Zt = async (t) => {
289
+ }, At = async (t) => {
290
290
  const e = await J(t), s = c(e, "cache/config-cache.json"), n = _(s, "utf8");
291
291
  if (!n) throw new Error("Could not find config cache file");
292
292
  return JSON.parse(n);
293
293
  }, mt = async (t) => {
294
- const e = await Zt(t), s = await J(t), n = c(s, "salty.config.js"), o = Date.now(), { config: a } = await import(`${n}?t=${o}`);
294
+ const e = await At(t), s = await J(t), n = c(s, "salty.config.js"), o = Date.now(), { config: a } = await import(`${n}?t=${o}`);
295
295
  return H(a, e);
296
296
  }, dt = () => {
297
297
  try {
@@ -320,7 +320,7 @@ ${t}`;
320
320
  /define[\w\d]+\(/.test(F) && r.add(f);
321
321
  }
322
322
  }
323
- await g(t), await Bt(t, r);
323
+ await g(t), await Qt(t, r);
324
324
  const u = {
325
325
  keyframes: [],
326
326
  components: [],
@@ -399,13 +399,13 @@ ${["_variables.css", "_reset.css", "_global.css", "_templates.css"].filter((f) =
399
399
  ${j}`;
400
400
  if (h.importStrategy !== "component") {
401
401
  const f = a.reduce(($, b, l) => {
402
- const F = b.reduce((L, A) => {
403
- var U;
404
- const Z = c(i, "css", A), q = _(Z, "utf8"), B = ((U = /.*-([^-]+)-\d+.css/.exec(A)) == null ? void 0 : U.at(1)) || R(Z, 6);
405
- return L.includes(B) ? L : `${L}
406
- /*start:${B}-${A}*/
407
- ${q}
408
- /*end:${B}*/
402
+ const F = b.reduce((B, L) => {
403
+ var X;
404
+ const A = c(i, "css", L), U = _(A, "utf8"), Q = ((X = /.*-([^-]+)-\d+.css/.exec(L)) == null ? void 0 : X.at(1)) || R(A, 6);
405
+ return B.includes(Q) ? B : `${B}
406
+ /*start:${Q}-${L}*/
407
+ ${U}
408
+ /*end:${Q}*/
409
409
  `;
410
410
  }, ""), N = `l_${l}.css`, T = c(i, "css", N), K = `@layer l${l} { ${F}
411
411
  }`;
@@ -516,8 +516,8 @@ ${r}`;
516
516
  export {
517
517
  ce as a,
518
518
  le as b,
519
- Lt as c,
520
- Bt as d,
519
+ Bt as c,
520
+ Qt as d,
521
521
  st as e,
522
522
  re as g,
523
523
  ut as i,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salty-css/core",
3
- "version": "0.0.1-alpha.233",
3
+ "version": "0.0.1-alpha.235",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "typings": "./dist/index.d.ts",
package/server/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../should-restart-lhNr1-w7.cjs");exports.checkShouldRestart=e.checkShouldRestart;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../should-restart-Rq0dgdA1.cjs");exports.checkShouldRestart=e.checkShouldRestart;
package/server/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { c as o } from "../should-restart-0ZMFyli-.js";
1
+ import { c as o } from "../should-restart-DgG-4Ee4.js";
2
2
  export {
3
3
  o as checkShouldRestart
4
4
  };
@@ -1,5 +1,5 @@
1
1
  import { readFile as r } from "fs/promises";
2
- import { i as e } from "./index-D6UVbPah.js";
2
+ import { i as e } from "./index-CplHXohq.js";
3
3
  const c = async (t) => {
4
4
  if (!t || t.includes("node_modules") || t.includes("saltygen")) return !1;
5
5
  if (t.includes("salty.config")) return !0;
@@ -1 +1 @@
1
- "use strict";const e=require("fs/promises"),r=require("./index-AIl-HgpW.cjs"),i=async t=>{if(!t||t.includes("node_modules")||t.includes("saltygen"))return!1;if(t.includes("salty.config"))return!0;if(!r.isSaltyFile(t))return!1;const s=await e.readFile(t,"utf-8");return!!/.+define[A-Z]\w+/.test(s)};exports.checkShouldRestart=i;
1
+ "use strict";const e=require("fs/promises"),r=require("./index-BBffxkVO.cjs"),i=async t=>{if(!t||t.includes("node_modules")||t.includes("saltygen"))return!1;if(t.includes("salty.config"))return!0;if(!r.isSaltyFile(t))return!1;const s=await e.readFile(t,"utf-8");return!!/.+define[A-Z]\w+/.test(s)};exports.checkShouldRestart=i;
@@ -1,38 +0,0 @@
1
- "use strict";const _e=require("esbuild"),Te=require("child_process"),D=require("./dash-case-BJEkFEGQ.cjs"),r=require("path"),c=require("fs"),he=require("fs/promises"),ee=require("./parse-styles-3N79AOBO.cjs"),G=require("winston"),M=require("./css/merge.cjs"),Oe=require("./define-templates-Cunsb_Tr.cjs"),ae=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 we=Ee(_e),Se=async(e,t=[])=>{if(!e)return"";const s=[],n={};for(const[o,i]of Object.entries(e))if(typeof i!="function")if(i&&typeof i=="object"){const a=o.trim(),d=await Se(i,[...t,a]);s.push(d)}else n[o]=i;if(Object.keys(n).length){const o=t.map(D.dashCase).join("-"),i="t_"+D.toHash(o,4),a=await ee.parseAndJoinStyles(n,`.${o}, .${i}`);s.push(a)}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]=je(n).map(o=>`"${o}"`).join(" | ")),t),{}):{},je=(e,t="",s=new Set)=>e?(Object.entries(e).forEach(([n,o])=>{const i=t?`${t}.${n}`:n;return typeof o=="object"?je(o,i,s):s.add(t)}),[...s]):[],be=e=>{if(!e||e==="/")throw new Error("Could not find package.json file");const t=r.join(e,"package.json");return c.existsSync(t)?t:be(r.join(e,".."))},Ve=async e=>{const t=be(e);return await he.readFile(t,"utf-8").then(JSON.parse).catch(()=>{})},Re=async e=>{const t=await Ve(e);if(t)return t.type};let q;const $e=async e=>{if(q)return q;const t=await Re(e);return t==="module"?q="esm":(t==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:re&&re.tagName.toUpperCase()==="SCRIPT"&&re.src||new URL("index-AIl-HgpW.cjs",document.baseURI).href).endsWith(".cjs"))&&(q="cjs"),q||"esm"},K=G.createLogger({level:"debug",format:G.format.combine(G.format.colorize(),G.format.cli()),transports:[new G.transports.Console({})]}),Me=e=>{K.error(e)};function Fe(e){return e?typeof e!="string"?Fe(String(e)):e.replace(/[\s-]/g,".").replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g,(t,s)=>(s>0?".":"")+t.toLowerCase()):""}const Je={"*, *::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"}},ze=(e,t)=>new Promise((s,n)=>{const o=setTimeout(()=>{n(new Error("Timeout"))},100),i=ae.createSourceFile("temp.ts",e,ae.ScriptTarget.Latest,!0);function a(d){if(ae.isVariableDeclaration(d)&&d.name.getText()===t){const g=d.getStart(),m=d.getEnd();clearTimeout(o),s([g,m])}d.forEachChild(a)}a(i)}),E={externalModules:[],rcFile:void 0,destDir:void 0},Ce=e=>{if(E.externalModules.length>0)return E.externalModules;const s=c.readFileSync(e,"utf8").match(/externalModules:\s?\[(.*)\]/);if(!s)return[];const n=s[1].split(",").map(o=>o.replace(/['"`]/g,"").trim());return E.externalModules=n,n},J=async e=>{if(E.destDir)return E.destDir;const t=await le(e),s=r.join(e,(t==null?void 0:t.saltygenDir)||"saltygen");return E.destDir=s,s},ce=["salty","css","styles","styled"],Pe=(e=[])=>new RegExp(`\\.(${[...ce,...e].join("|")})\\.`),te=(e,t=[])=>Pe(t).test(e),Ne=async e=>{if(E.rcFile)return E.rcFile;if(e==="/")throw new Error("Could not find .saltyrc.json file");const t=r.join(e,".saltyrc.json"),s=await he.readFile(t,"utf-8").then(JSON.parse).catch(()=>{});return s?(E.rcFile=s,s):Ne(r.join(e,".."))},le=async e=>{var n,o;const t=await Ne(e),s=(n=t.projects)==null?void 0:n.find(i=>e.endsWith(i.dir||""));return s||((o=t.projects)==null?void 0:o.find(i=>i.dir===t.defaultProject))},qe=async e=>{const t=await le(e),s=await J(e),n=r.join(e,(t==null?void 0:t.configDir)||"","salty.config.ts"),o=r.join(s,"salty.config.js"),i=await $e(e),a=Ce(n);await we.build({entryPoints:[n],minify:!0,treeShaking:!0,bundle:!0,outfile:o,format:i,external:a});const d=Date.now(),{config:g}=await import(`${o}?t=${d}`);return{config:g,path:o}},ke=async(e,t)=>{var de,me;const s=await J(e),n={mediaQueries:[],globalStyles:[],variables:[],templates:[]};await Promise.all([...t].map(async S=>{const{contents:$,outputFilePath:A}=await B(e,S,s);Object.entries($).forEach(([O,P])=>{P.isMedia?n.mediaQueries.push([O,P]):P.isGlobalDefine?n.globalStyles.push(P):P.isDefineVariables?n.variables.push(P):P.isDefineTemplates&&n.templates.push(P._setPath(`${O};;${A}`))})}));const{config:o,path:i}=await qe(e),a={...o},d=new Set,g=async(S,$=[])=>{if(!S)return[];const A=Object.entries(S).map(async([P,z])=>{const X=async _=>{if(!_)return;if(_ instanceof Promise)return await X(await _);if(typeof _=="function")return await X(await _());if(typeof _=="object")return await g(_,[...$,P]);const ne=Fe(P),oe=D.dashCase(P),ie=[...$,ne].join(".");d.add(`"${ie}"`);const Y=[...$.map(D.dashCase),oe].join("-"),ye=ee.parseVariableTokens(_);return ye?`--${Y}: ${ye.transformed};`:`--${Y}: ${_};`};return await X(z)});return(await Promise.all(A)).flat()},m=async S=>{if(!S)return[];const $=Object.entries(S).map(async([O,P])=>{const z=await g(P);return O==="base"?z.join(""):`${O} { ${z.join("")} }`});return(await Promise.all($)).flat()},l=async S=>{if(!S)return[];const $=Object.entries(S).map(async([O,P])=>{const z=Object.entries(P).map(async([_,ne])=>{const oe=await g(ne,[O]),ie=`.${O}-${_}, [data-${O}="${_}"]`,Y=oe.join("");return`${ie} { ${Y} }`});return(await Promise.all(z)).flat()});return(await Promise.all($)).flat()},h=S=>({...S,responsive:void 0,conditional:void 0}),p=S=>n.variables.map($=>S==="static"?h($._current):$._current[S]),w=M.mergeObjects(h(o.variables),p("static")),y=await g(w),F=M.mergeObjects((de=o.variables)==null?void 0:de.responsive,p("responsive")),k=await m(F),x=M.mergeObjects((me=o.variables)==null?void 0:me.conditional,p("conditional")),v=await l(x),V=r.join(s,"css/_variables.css"),pe=`:root { ${y.join("")} ${k.join("")} } ${v.join("")}`;c.writeFileSync(V,pe),a.staticVariables=w;const R=r.join(s,"css/_global.css"),se=M.mergeObjects(o.global,n.globalStyles),u=await ee.parseAndJoinStyles(se,"");c.writeFileSync(R,`@layer global { ${u} }`);const j=r.join(s,"css/_reset.css"),f=o.reset==="none"?{}:typeof o.reset=="object"?o.reset:Je,C=await ee.parseAndJoinStyles(f,"");c.writeFileSync(j,`@layer reset { ${C} }`);const N=r.join(s,"css/_templates.css"),T=M.mergeObjects(o.templates,n.templates),H=await Se(T),W=ve(T);c.writeFileSync(N,`@layer templates { ${H} }`),a.templates=T;const I=o.templates?[Oe.defineTemplates(o.templates)._setPath(`config;;${i}`)]:[],Q=M.mergeFactories(n.templates,I);a.templatePaths=Object.fromEntries(Object.entries(Q).map(([S,$])=>[S,$._path]));const{mediaQueries:Z}=n;a.mediaQueries=Object.fromEntries(Z.map(([S,$])=>[`@${S}`,$]));const L=Z.map(([S])=>`'@${S}'`).join(" | "),U=r.join(s,"types/css-tokens.d.ts"),xe=`
3
- // Variable types
4
- type VariableTokens = ${[...d].join("|")};
5
- type PropertyValueToken = \`{\${VariableTokens}}\`;
6
-
7
- // Template types
8
- type TemplateTokens = {
9
- ${Object.entries(W).map(([S,$])=>`${S}?: ${$}`).join(`
10
- `)}
11
- }
12
-
13
- // Media query types
14
- type MediaQueryKeys = ${L||"''"};
15
- `;c.writeFileSync(U,xe);const De=r.join(s,"cache/config-cache.json");c.writeFileSync(De,JSON.stringify(a,null,2))},ge=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 a=o.exec(e);if(a){const d=a.at(1);if(ce.some(m=>d==null?void 0:d.includes(m)))return t}return"styled('div',"}),He=(e,t)=>{try{const s=c.readFileSync(r.join(t,"saltygen/cache/config-cache.json"),"utf8");return s?`globalThis.saltyConfig = ${s};
16
-
17
- ${e}`:`globalThis.saltyConfig = {};
18
-
19
- ${e}`}catch{return e}},B=async(e,t,s)=>{const n=D.toHash(t),o=r.join(s,"./temp");c.existsSync(o)||c.mkdirSync(o);const i=r.parse(t);let a=c.readFileSync(t,"utf8");a=ge(a),a=He(a,e);const d=r.join(s,"js",n+".js"),g=await le(e),m=r.join(e,(g==null?void 0:g.configDir)||"","salty.config.ts"),l=Ce(m),h=await $e(e);await we.build({stdin:{contents:a,sourcefile:i.base,resolveDir:i.dir,loader:"tsx"},minify:!1,treeShaking:!0,bundle:!0,outfile:d,format:h,target:["node20"],keepNames:!0,external:l,packages:"external",plugins:[{name:"test",setup:y=>{y.onLoad({filter:/.*\.css|salty|styles|styled\.ts/},F=>{const k=c.readFileSync(F.path,"utf8");return{contents:ge(k),loader:"ts"}})}}]});const p=Date.now();return{contents:await import(`${d}?t=${p}`),outputFilePath:d}},We=async e=>{const t=await J(e),s=r.join(t,"cache/config-cache.json"),n=c.readFileSync(s,"utf8");if(!n)throw new Error("Could not find config cache file");return JSON.parse(n)},fe=async e=>{const t=await We(e),s=await J(e),n=r.join(s,"salty.config.js"),o=Date.now(),{config:i}=await import(`${n}?t=${o}`);return M.mergeObjects(i,t)},ue=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},Ie=async(e,t=ue(),s=!0)=>{try{const n=Date.now();t?K.info("Generating CSS in production mode! 🔥"):K.info("Generating CSS in development mode! 🚀");const o=[],i=[],a=await J(e),d=r.join(a,"index.css");s&&(()=>{c.existsSync(a)&&Te.execSync("rm -rf "+a),c.mkdirSync(a,{recursive:!0}),c.mkdirSync(r.join(a,"css")),c.mkdirSync(r.join(a,"types")),c.mkdirSync(r.join(a,"js")),c.mkdirSync(r.join(a,"cache"))})();const m=new Set,l=new Set;async function h(u){const j=["node_modules","saltygen"],b=c.statSync(u);if(b.isDirectory()){const f=c.readdirSync(u);if(j.some(N=>u.includes(N)))return;await Promise.all(f.map(N=>h(r.join(u,N))))}else if(b.isFile()&&te(u)){m.add(u);const C=c.readFileSync(u,"utf8");/define[\w\d]+\(/.test(C)&&l.add(u)}}await h(e),await ke(e,l);const p={keyframes:[],components:[],classNames:[]};await Promise.all([...m].map(async u=>{const{contents:j}=await B(e,u,a);for(let[b,f]of Object.entries(j))f instanceof Promise&&(f=await f),f.isKeyframes?p.keyframes.push({value:f,src:u,name:b}):f.isClassName?p.classNames.push({...f,src:u,name:b}):f.generator&&p.components.push({...f,src:u,name:b})}));const w=await fe(e);for(const u of p.keyframes){const{value:j}=u,b=`a_${j.animationName}.css`,f=`css/${b}`,C=r.join(a,f);o.push(b),c.writeFileSync(C,j.css)}const y={};for(const u of p.components){const{src:j,name:b}=u;y[j]||(y[j]=[]);const f=u.generator._withBuildContext({callerName:b,isProduction:t,config:w});i[f.priority]||(i[f.priority]=[]);const C=await f.css;if(!C)continue;i[f.priority].push(f.cssFileName);const N=`css/${f.cssFileName}`,T=r.join(a,N);c.writeFileSync(T,C),w.importStrategy==="component"&&y[j].push(f.cssFileName)}for(const u of p.classNames){const{src:j,name:b}=u;y[j]||(y[j]=[]);const f=u.generator._withBuildContext({callerName:b,isProduction:t,config:w}),C=await f.css;if(!C)continue;i[f.priority]||(i[f.priority]=[]),i[f.priority].push(f.cssFileName);const N=`css/${f.cssFileName}`,T=r.join(a,N);c.writeFileSync(T,C),w.importStrategy==="component"&&y[j].push(f.cssFileName)}w.importStrategy==="component"&&Object.entries(y).forEach(([u,j])=>{const b=j.map(H=>`@import url('./${H}');`).join(`
20
- `),f=D.toHash(u,6),C=r.parse(u),N=D.dashCase(C.name),T=r.join(a,`css/f_${N}-${f}.css`);c.writeFileSync(T,b||"/* Empty file */")});const F=o.map(u=>`@import url('./css/${u}');`).join(`
21
- `);let V=`@layer reset, global, templates, l0, l1, l2, l3, l4, l5, l6, l7, l8;
22
-
23
- ${["_variables.css","_reset.css","_global.css","_templates.css"].filter(u=>{try{return c.readFileSync(r.join(a,"css",u),"utf8").length>0}catch{return!1}}).map(u=>`@import url('./css/${u}');`).join(`
24
- `)}
25
- ${F}`;if(w.importStrategy!=="component"){const u=i.reduce((j,b,f)=>{const C=b.reduce((W,I)=>{var U;const Q=r.join(a,"css",I),Z=c.readFileSync(Q,"utf8"),L=((U=/.*-([^-]+)-\d+.css/.exec(I))==null?void 0:U.at(1))||D.toHash(Q,6);return W.includes(L)?W:`${W}
26
- /*start:${L}-${I}*/
27
- ${Z}
28
- /*end:${L}*/
29
- `},""),N=`l_${f}.css`,T=r.join(a,"css",N),H=`@layer l${f} { ${C}
30
- }`;return c.writeFileSync(T,H),`${j}
31
- @import url('./css/${N}');`},"");V+=u}c.writeFileSync(d,V);const R=Date.now()-n,se=R<200?"🔥":R<500?"🚀":R<1e3?"🎉":R<2e3?"🚗":R<5e3?"🤔":"🥴";K.info(`Generated CSS in ${R}ms! ${se}`)}catch(n){console.error(n)}},Le=async(e,t,s=ue())=>{try{const n=await J(e);if(te(t)){const i=[],a=await fe(e),{contents:d}=await B(e,t,n);for(const[g,m]of Object.entries(d)){if(m.isKeyframes&&m.css){const F=`css/${`a_${m.animationName}.css`}`,k=r.join(n,F);c.writeFileSync(k,await m.css);return}if(m.isClassName){const y=m.generator._withBuildContext({callerName:g,isProduction:s,config:a}),F=await y.css;if(!F)continue;i[y.priority]||(i[y.priority]=[]),i[y.priority].push(y.cssFileName);const k=`css/${y.cssFileName}`,x=r.join(n,k);c.writeFileSync(x,F)}if(!m.generator)return;const l=m.generator._withBuildContext({callerName:g,isProduction:s,config:a}),h=await l.css;if(!h)continue;const p=`css/${l.cssFileName}`,w=r.join(n,p);c.writeFileSync(w,h),i[l.priority]||(i[l.priority]=[]),i[l.priority].push(l.cssFileName)}if(a.importStrategy!=="component")i.forEach((g,m)=>{const l=`l_${m}.css`,h=r.join(n,"css",l);let p=c.readFileSync(h,"utf8");g.forEach(w=>{var x;const y=r.join(n,"css",w),F=((x=/.*-([^-]+)-\d+.css/.exec(w))==null?void 0:x.at(1))||D.toHash(y,6);if(!p.includes(F)){const v=c.readFileSync(y,"utf8"),V=`/*start:${F}-${w}*/
32
- ${v}
33
- /*end:${F}*/
34
- `;p=`${p.replace(/\}$/,"")}
35
- ${V}
36
- }`}}),c.writeFileSync(h,p)});else{const g=i.flat().map(w=>`@import url('./${w}');`).join(`
37
- `),m=D.toHash(t,6),l=r.parse(t),h=D.dashCase(l.name),p=r.join(n,`css/f_${h}-${m}.css`);c.writeFileSync(p,g||"/* Empty file */")}}}catch(n){console.error(n)}},Ae=async(e,t,s=ue())=>{var n,o;try{const i=await J(e);if(te(t)){const d=c.readFileSync(t,"utf8"),g=await fe(e),{contents:m}=await B(e,t,i);let l=d;for(const[h,p]of Object.entries(m)){if(p.isKeyframes||!p.generator)continue;const w=p.generator._withBuildContext({callerName:h,isProduction:s,config:g}),[y,F]=await ze(l,h),k=l.slice(y,F);if(p.isClassName){const x=l,v=` ${h} = className("${w.classNames}")`;l=l.replace(k,v),x===l&&console.error("Minimize file failed to change content",{name:h})}if(k.includes("styled")){const x=(o=(n=/styled\(([^,]+),/.exec(k))==null?void 0:n.at(1))==null?void 0:o.trim(),v=l,V=` ${h} = styled(${x}, "${w.classNames}", ${JSON.stringify(w.clientProps)})`;l=l.replace(k,V),v===l&&console.error("Minimize file failed to change content",{name:h,tagName:x})}}if(g.importStrategy==="component"){const h=D.toHash(t,6),p=r.parse(t);l=`import '../../saltygen/css/${`f_${D.dashCase(p.name)}-${h}.css`}';
38
- ${l}`}return l=l.replace("@salty-css/react/class-name","@salty-css/react/class-name-client"),l=l.replace("{ styled }","{ styledClient as styled }"),l=l.replace("@salty-css/react/styled","@salty-css/react/styled-client"),l}}catch(i){console.error("Error in minimizeFile:",i)}};exports.compileSaltyFile=B;exports.generateConfigStyles=ke;exports.generateCss=Ie;exports.generateFile=Le;exports.isSaltyFile=te;exports.logError=Me;exports.logger=K;exports.minimizeFile=Ae;exports.saltyFileExtensions=ce;exports.saltyFileRegExp=Pe;