@salty-css/core 0.0.1-alpha.227 → 0.0.1-alpha.229

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.
@@ -0,0 +1,38 @@
1
+ "use strict";const Pe=require("esbuild"),ke=require("child_process"),D=require("./dash-case-BJEkFEGQ.cjs"),c=require("path"),r=require("fs"),de=require("fs/promises"),U=require("./parse-styles-3N79AOBO.cjs"),L=require("winston"),R=require("./css/merge.cjs"),xe=require("./define-templates-Cunsb_Tr.cjs"),se=require("typescript");var ne=typeof document<"u"?document.currentScript:null;function De(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 me=De(Pe),ye=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 ye(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 U.parseAndJoinStyles(n,`.${o}, .${i}`);s.push(a)}return s.join(`
2
+ `)},_e=e=>e?Object.entries(e).reduce((t,[s,n])=>(typeof n=="function"?t[s]="any":typeof n=="object"&&(t[s]=ge(n).map(o=>`"${o}"`).join(" | ")),t),{}):{},ge=(e,t="",s=new Set)=>e?(Object.entries(e).forEach(([n,o])=>{const i=t?`${t}.${n}`:n;return typeof o=="object"?ge(o,i,s):s.add(t)}),[...s]):[],he=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:he(c.join(e,".."))},Te=async e=>{const t=he(e);return await de.readFile(t,"utf-8").then(JSON.parse).catch(()=>{})},Oe=async e=>{const t=await Te(e);if(t)return t.type};let z;const Se=async e=>{if(z)return z;const t=await Oe(e);return t==="module"?z="esm":(t==="commonjs"||(typeof document>"u"?require("url").pathToFileURL(__filename).href:ne&&ne.tagName.toUpperCase()==="SCRIPT"&&ne.src||new URL("index-q4N-TRZZ.cjs",document.baseURI).href).endsWith(".cjs"))&&(z="cjs"),z||"esm"},A=L.createLogger({level:"debug",format:L.format.combine(L.format.colorize(),L.format.cli()),transports:[new L.transports.Console({})]}),ve=e=>{A.error(e)};function je(e){return e?typeof e!="string"?je(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 Ee={"*, *::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"}},Ve=(e,t)=>new Promise((s,n)=>{const o=setTimeout(()=>{n(new Error("Timeout"))},100),i=se.createSourceFile("temp.ts",e,se.ScriptTarget.Latest,!0);function a(d){if(se.isVariableDeclaration(d)&&d.name.getText()===t){const g=d.getStart(),m=d.getEnd();clearTimeout(o),s([g,m])}d.forEachChild(a)}a(i)}),v={externalModules:[],rcFile:void 0,destDir:void 0},be=e=>{if(v.externalModules.length>0)return v.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 v.externalModules=n,n},J=async e=>{if(v.destDir)return v.destDir;const t=await ie(e),s=c.join(e,(t==null?void 0:t.saltygenDir)||"saltygen");return v.destDir=s,s},oe=["salty","css","styles","styled"],we=(e=[])=>new RegExp(`\\.(${[...oe,...e].join("|")})\\.`),X=(e,t=[])=>we(t).test(e),$e=async e=>{if(v.rcFile)return v.rcFile;if(e==="/")throw new Error("Could not find .saltyrc.json file");const t=c.join(e,".saltyrc.json"),s=await de.readFile(t,"utf-8").then(JSON.parse).catch(()=>{});return s?(v.rcFile=s,s):$e(c.join(e,".."))},ie=async e=>{var n,o;const t=await $e(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))},Me=async e=>{const t=await ie(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 Se(e),a=be(n);await me.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}},Fe=async(e,t)=>{var le,fe;const s=await J(e),n={mediaQueries:[],globalStyles:[],variables:[],templates:[]};await Promise.all([...t].map(async j=>{const{contents:w,outputFilePath:O}=await G(e,j,s);Object.entries(w).forEach(([k,_])=>{_.isMedia?n.mediaQueries.push([k,_]):_.isGlobalDefine?n.globalStyles.push(_):_.isDefineVariables?n.variables.push(_):_.isDefineTemplates&&n.templates.push(_._setPath(`${k};;${O}`))})}));const{config:o,path:i}=await Me(e),a={...o},d=new Set,g=(j,w=[])=>j?Object.entries(j).flatMap(([O,k])=>{if(!k)return;if(typeof k=="object")return g(k,[...w,O]);const _=je(O),ee=D.dashCase(O),te=[...w,_].join(".");d.add(`"${te}"`);const Z=[...w.map(D.dashCase),ee].join("-"),ue=U.parseVariableTokens(k);return ue?`--${Z}: ${ue.transformed};`:`--${Z}: ${k};`}):[],m=j=>j?Object.entries(j).flatMap(([w,O])=>{const k=g(O);return w==="base"?k.join(""):`${w} { ${k.join("")} }`}):[],l=j=>j?Object.entries(j).flatMap(([w,O])=>Object.entries(O).flatMap(([k,_])=>{const ee=g(_,[w]),te=`.${w}-${k}, [data-${w}="${k}"]`,Z=ee.join("");return`${te} { ${Z} }`})):[],h=j=>({...j,responsive:void 0,conditional:void 0}),p=j=>n.variables.map(w=>j==="static"?h(w._current):w._current[j]),S=R.mergeObjects(h(o.variables),p("static")),y=g(S),F=R.mergeObjects((le=o.variables)==null?void 0:le.responsive,p("responsive")),P=m(F),x=R.mergeObjects((fe=o.variables)==null?void 0:fe.conditional,p("conditional")),E=l(x),V=c.join(s,"css/_variables.css"),re=`:root { ${y.join("")} ${P.join("")} } ${E.join("")}`;r.writeFileSync(V,re),a.staticVariables=S;const M=c.join(s,"css/_global.css"),Y=R.mergeObjects(o.global,n.globalStyles),u=await U.parseAndJoinStyles(Y,"");r.writeFileSync(M,`@layer global { ${u} }`);const b=c.join(s,"css/_reset.css"),f=o.reset==="none"?{}:typeof o.reset=="object"?o.reset:Ee,C=await U.parseAndJoinStyles(f,"");r.writeFileSync(b,`@layer reset { ${C} }`);const N=c.join(s,"css/_templates.css"),T=R.mergeObjects(o.templates,n.templates),q=await ye(T),H=_e(T);r.writeFileSync(N,`@layer templates { ${q} }`),a.templates=T;const W=o.templates?[xe.defineTemplates(o.templates)._setPath(`config;;${i}`)]:[],K=R.mergeFactories(n.templates,W);a.templatePaths=Object.fromEntries(Object.entries(K).map(([j,w])=>[j,w._path]));const{mediaQueries:B}=n;a.mediaQueries=Object.fromEntries(B.map(([j,w])=>[`@${j}`,w]));const I=B.map(([j])=>`'@${j}'`).join(" | "),Q=c.join(s,"types/css-tokens.d.ts"),Ce=`
3
+ // Variable types
4
+ type VariableTokens = ${[...d].join("|")};
5
+ type PropertyValueToken = \`{\${VariableTokens}}\`;
6
+
7
+ // Template types
8
+ type TemplateTokens = {
9
+ ${Object.entries(H).map(([j,w])=>`${j}?: ${w}`).join(`
10
+ `)}
11
+ }
12
+
13
+ // Media query types
14
+ type MediaQueryKeys = ${I||"''"};
15
+ `;r.writeFileSync(Q,Ce);const Ne=c.join(s,"cache/config-cache.json");r.writeFileSync(Ne,JSON.stringify(a,null,2))},pe=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(oe.some(m=>d==null?void 0:d.includes(m)))return t}return"styled('div',"}),Re=(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}},G=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=pe(a),a=Re(a,e);const d=c.join(s,"js",n+".js"),g=await ie(e),m=c.join(e,(g==null?void 0:g.configDir)||"","salty.config.ts"),l=be(m),h=await Se(e);await me.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 P=r.readFileSync(F.path,"utf8");return{contents:pe(P),loader:"ts"}})}}]});const p=Date.now();return{contents:await import(`${d}?t=${p}`),outputFilePath:d}},Je=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)},ae=async e=>{const t=await Je(e),s=await J(e),n=c.join(s,"salty.config.js"),o=Date.now(),{config:i}=await import(`${n}?t=${o}`);return R.mergeObjects(i,t)},ce=()=>{try{return process.env.NODE_ENV==="production"}catch{return!1}},ze=async(e,t=ce(),s=!0)=>{try{const n=Date.now();t?A.info("Generating CSS in production mode! 🔥"):A.info("Generating CSS in development mode! 🚀");const o=[],i=[],a=await J(e),d=c.join(a,"index.css");s&&(()=>{r.existsSync(a)&&ke.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 b=["node_modules","saltygen"],$=r.statSync(u);if($.isDirectory()){const f=r.readdirSync(u);if(b.some(N=>u.includes(N)))return;await Promise.all(f.map(N=>h(c.join(u,N))))}else if($.isFile()&&X(u)){m.add(u);const C=r.readFileSync(u,"utf8");/define[\w\d]+\(/.test(C)&&l.add(u)}}await h(e),await Fe(e,l);const p={keyframes:[],components:[],classNames:[]};await Promise.all([...m].map(async u=>{const{contents:b}=await G(e,u,a);for(let[$,f]of Object.entries(b))f instanceof Promise&&(f=await f),f.isKeyframes?p.keyframes.push({value:f,src:u,name:$}):f.isClassName?p.classNames.push({...f,src:u,name:$}):f.generator&&p.components.push({...f,src:u,name:$})}));const S=await ae(e);for(const u of p.keyframes){const{value:b}=u,$=`a_${b.animationName}.css`,f=`css/${$}`,C=c.join(a,f);o.push($),r.writeFileSync(C,b.css)}const y={};for(const u of p.components){const{src:b,name:$}=u;y[b]||(y[b]=[]);const f=u.generator._withBuildContext({callerName:$,isProduction:t,config:S});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),S.importStrategy==="component"&&y[b].push(f.cssFileName)}for(const u of p.classNames){const{src:b,name:$}=u;y[b]||(y[b]=[]);const f=u.generator._withBuildContext({callerName:$,isProduction:t,config:S}),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),S.importStrategy==="component"&&y[b].push(f.cssFileName)}S.importStrategy==="component"&&Object.entries(y).forEach(([u,b])=>{const $=b.map(q=>`@import url('./${q}');`).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,$||"/* 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(S.importStrategy!=="component"){const u=i.reduce((b,$,f)=>{const C=$.reduce((H,W)=>{var Q;const K=c.join(a,"css",W),B=r.readFileSync(K,"utf8"),I=((Q=/.*-([^-]+)-\d+.css/.exec(W))==null?void 0:Q.at(1))||D.toHash(K,6);return H.includes(I)?H:`${H}
26
+ /*start:${I}-${W}*/
27
+ ${B}
28
+ /*end:${I}*/
29
+ `},""),N=`l_${f}.css`,T=c.join(a,"css",N),q=`@layer l${f} { ${C}
30
+ }`;return r.writeFileSync(T,q),`${b}
31
+ @import url('./css/${N}');`},"");V+=u}r.writeFileSync(d,V);const M=Date.now()-n,Y=M<200?"🔥":M<500?"🚀":M<1e3?"🎉":M<2e3?"🚗":M<5e3?"🤔":"🥴";A.info(`Generated CSS in ${M}ms! ${Y}`)}catch(n){console.error(n)}},qe=async(e,t,s=ce())=>{try{const n=await J(e);if(X(t)){const i=[],a=await ae(e),{contents:d}=await G(e,t,n);for(const[g,m]of Object.entries(d)){if(m.isKeyframes&&m.css){const F=`css/${`a_${m.animationName}.css`}`,P=c.join(n,F);r.writeFileSync(P,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 P=`css/${y.cssFileName}`,x=c.join(n,P);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}`,S=c.join(n,p);r.writeFileSync(S,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(S=>{var x;const y=c.join(n,"css",S),F=((x=/.*-([^-]+)-\d+.css/.exec(S))==null?void 0:x.at(1))||D.toHash(y,6);if(!p.includes(F)){const E=r.readFileSync(y,"utf8"),V=`/*start:${F}-${S}*/
32
+ ${E}
33
+ /*end:${F}*/
34
+ `;p=`${p.replace(/\}$/,"")}
35
+ ${V}
36
+ }`}}),r.writeFileSync(h,p)});else{const g=i.flat().map(S=>`@import url('./${S}');`).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)}},He=async(e,t,s=ce())=>{var n,o;try{const i=await J(e);if(X(t)){const d=r.readFileSync(t,"utf8"),g=await ae(e),{contents:m}=await G(e,t,i);let l=d;for(const[h,p]of Object.entries(m)){if(p.isKeyframes||!p.generator)continue;const S=p.generator._withBuildContext({callerName:h,isProduction:s,config:g}),[y,F]=await Ve(l,h),P=l.slice(y,F);if(p.isClassName){const x=l,E=` ${h} = className("${S.classNames}")`;l=l.replace(P,E),x===l&&console.error("Minimize file failed to change content",{name:h})}if(P.includes("styled")){const x=(o=(n=/styled\(([^,]+),/.exec(P))==null?void 0:n.at(1))==null?void 0:o.trim(),E=l,V=` ${h} = styled(${x}, "${S.classNames}", ${JSON.stringify(S.clientProps)})`;l=l.replace(P,V),E===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=G;exports.generateConfigStyles=Fe;exports.generateCss=ze;exports.generateFile=qe;exports.isSaltyFile=X;exports.logError=ve;exports.logger=A;exports.minimizeFile=He;exports.saltyFileExtensions=oe;exports.saltyFileRegExp=we;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salty-css/core",
3
- "version": "0.0.1-alpha.227",
3
+ "version": "0.0.1-alpha.229",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "typings": "./dist/index.d.ts",
@@ -35,6 +35,7 @@
35
35
  "esbuild": ">=0.21.x",
36
36
  "ora": ">=8.x",
37
37
  "react": ">=18.x || >=19.x",
38
+ "typescript": ">=5.x",
38
39
  "winston": ">=3.x"
39
40
  },
40
41
  "exports": {
package/server/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("fs/promises"),s=require("../index-CxycFYRY.cjs"),i=async e=>{if(!e||e.includes("node_modules")||e.includes("saltygen"))return!1;if(e.includes("salty.config"))return!0;if(!s.isSaltyFile(e))return!1;const t=await r.readFile(e,"utf-8");return!!/.+define[A-Z]\w+/.test(t)};exports.checkShouldRestart=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("fs/promises"),r=require("../index-q4N-TRZZ.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 e=await s.readFile(t,"utf-8");return!!/.+define[A-Z]\w+/.test(e)};exports.checkShouldRestart=i;
package/server/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { readFile as r } from "fs/promises";
2
- import { i as e } from "../index-BdGwX7CP.js";
2
+ import { i as e } from "../index-CuYozIxT.js";
3
3
  const f = async (t) => {
4
4
  if (!t || t.includes("node_modules") || t.includes("saltygen")) return !1;
5
5
  if (t.includes("salty.config")) return !0;