@teacss/config 0.5.0 → 0.5.2
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/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire as e}from"node:module";import*as t from"node:fs";import n,{existsSync as r,readFileSync as i,realpathSync as a}from"node:fs";import{dirname as o,extname as s,isAbsolute as c,join as l,relative as u,resolve as d,sep as f}from"node:path";import p from"node:process";import{consola as m}from"consola";import{expandClassGroups as h,resolveConfig as g,splitClassTokens as _}from"@teacss/core";import{glob as v}from"tinyglobby";import{Buffer as y}from"node:buffer";import{readFile as b,stat as ee}from"node:fs/promises";import{fileURLToPath as te,pathToFileURL as x}from"node:url";const ne=[`100`,`150`,`200`,`300`,`400`,`500`,`600`,`700`,`800`,`850`,`900`,`950`],re=new Set(ne);function ie(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}function S(e){return Object.keys(e).filter(t=>{if(t===`modes`||t===`defaultMode`||t===`themes`)return!1;let n=e[t];return typeof n!=`object`||!n?!1:t===`colors`||Object.values(n).every(e=>e==null||typeof e==`string`||typeof e==`number`||Array.isArray(e))})}function C(e){return e.map(e=>({key:e,prefix:e===`colors`||e===`semanticColors`?`color`:ie(e),twoLevel:e===`colors`,semanticColor:e===`semanticColors`})).sort((e,t)=>t.prefix.length-e.prefix.length)}function w(e,t,n){Object.defineProperty(e,t,{value:n,configurable:!0,enumerable:!0,writable:!0})}function T(e,t){let n=Object.hasOwn(e,t)?e[t]:void 0;if(typeof n==`object`&&n&&!Array.isArray(n))return n;let r={};return w(e,t,r),r}function E(e,t){let n=t.filter(t=>e===t.prefix||e.startsWith(`${t.prefix}-`)),r=n.find(e=>e.key===`colors`),i=n.find(e=>e.semanticColor);if(r&&i){let t=e===`color`?``:e.slice(6),n=t.lastIndexOf(`-`),a=n>0?t.slice(0,n):``,o=n>0?t.slice(n+1):``;return a&&re.has(o)?{ok:!0,nsKey:r.key,twoLevel:!0,rest:t,colorName:a,step:o}:a&&/^\d+$/.test(o)?{ok:!1,reason:`illegal-color-step`}:t?{ok:!0,nsKey:i.key,twoLevel:!1,rest:t}:{ok:!1,reason:`unknown-prefix`}}let a=n[0];if(!a)return{ok:!1,reason:`unknown-prefix`};let o=e===a.prefix?``:e.slice(a.prefix.length+1);if(a.twoLevel){let e=o.lastIndexOf(`-`),t=e>0?o.slice(0,e):``,n=e>0?o.slice(e+1):``;return!t||!re.has(n)?{ok:!1,reason:`illegal-color-step`}:{ok:!0,nsKey:a.key,twoLevel:!0,rest:o,colorName:t,step:n}}return{ok:!0,nsKey:a.key,twoLevel:!1,rest:o}}function D(e,t){if(typeof e==`object`&&e&&Object.hasOwn(e,t))return e[t]}function O(e,t){for(let n of t){let t=D(n,e.nsKey);if((e.twoLevel?D(D(t,e.colorName),e.step):D(t,e.rest||`DEFAULT`))!=null)return!0}return!1}function k(e,t,n){let r=C(t),i={},a=[],o=[],s=e=>{let t=E(e.startsWith(`--`)?e.slice(2):e,r);return t.ok||a.push(e),t},c=(e,t,n)=>{let r=T(e,t.nsKey);t.twoLevel?w(T(r,t.colorName),t.step,n):w(r,t.rest||`DEFAULT`,n)};for(let t of e){if(t.theme)continue;let e=t.mode?T(T(i,`modes`),t.mode):i;for(let{property:n,value:r}of t.declarations){let t=s(n);t.ok&&c(e,t,r)}}let l=n?[n,i]:void 0;for(let t of e){if(!t.theme)continue;let e=T(T(i,`themes`),t.theme),n=t.mode?T(T(e,`modes`),t.mode):e;for(let{property:e,value:r}of t.declarations){let t=s(e);if(t.ok){if(l&&!O(t,l)){o.push(e);continue}c(n,t,r)}}}return{theme:i,unknown:a,undeclared:o}}const ae=/[A-Za-z0-9-]/,oe=/[\w-]/;function A(e,t,n){let r=e.indexOf(`*/`,t+2);return r<0||r>=n?n:r+2}function j(e,t,n){let r=e[t];for(let i=t+1;i<n;i++)if(e[i]===`\\`)i++;else if(e[i]===r)return i+1;return n}function M(e,t,n){let r=``;for(let i=t;i<n;i++)if(e[i]===`/`&&e[i+1]===`*`)i=A(e,i,n)-1,r+=` `;else if(e[i]===`"`||e[i]===`'`){let t=j(e,i,n);r+=e.slice(i,t),i=t-1}else r+=e[i];return r.trim()}function se(e,t){let n=[],r=t.startsWith(`@`)?t.slice(1):t;for(let t of N(e)){if(t.name!==r||t.terminator!==`;`)continue;let e=t.prelude[0];if(e!==`"`&&e!==`'`)continue;let i=j(t.prelude,0,t.prelude.length);i!==t.prelude.length||i<=1||t.prelude[i-1]!==e||n.push(t.prelude.slice(1,i-1))}return n}function ce(e,t){let n=t.startsWith(`@`)?t.slice(1):t;return N(e).some(e=>e.name===n)}function le(e,t){for(let n=t;n<e.length;n++)if(e[n]===`/`&&e[n+1]===`*`)n=A(e,n,e.length)-1;else if(e[n]===`"`||e[n]===`'`)n=j(e,n,e.length)-1;else if(e[n]===`{`)return n;else if(e[n]===`;`||e[n]===`}`)return-1;return-1}function ue(e,t){let n=1;for(let r=t+1;r<e.length;r++)if(e[r]===`/`&&e[r+1]===`*`)r=A(e,r,e.length)-1;else if(e[r]===`"`||e[r]===`'`)r=j(e,r,e.length)-1;else if(e[r]===`{`)n++;else if(e[r]===`}`&&--n===0)return r;return-1}function N(e){let t=[],n=0;for(let r=0;r<e.length;r++){if(e[r]===`/`&&e[r+1]===`*`){r=A(e,r,e.length)-1;continue}if(e[r]===`"`||e[r]===`'`){r=j(e,r,e.length)-1;continue}if(e[r]===`{`){n++;continue}if(e[r]===`}`){n=Math.max(0,n-1);continue}if(n!==0||e[r]!==`@`)continue;let i=r,a=i+1;for(;oe.test(e[a]??``);)a++;if(a===i+1)continue;let o=e.slice(i+1,a),s=[],c=!1;for(let n=a;n<e.length;n++){let l=e[n];if(l===`/`&&e[n+1]===`*`)n=A(e,n,e.length)-1;else if(l===`"`||l===`'`)n=j(e,n,e.length)-1;else if(l===`(`)s.push(`)`);else if(l===`[`)s.push(`]`);else if(l===s.at(-1))s.pop();else if(s.length===0&&l===`;`){t.push({name:o,prelude:M(e,a,n),start:i,end:n+1,terminator:`;`}),r=n,c=!0;break}else if(s.length===0&&l===`{`){let s=ue(e,n);s>=0&&(t.push({name:o,prelude:M(e,a,n),start:i,end:s+1,terminator:`block`}),r=s,c=!0);break}}if(!c&&M(e,a,e.length)===``){t.push({name:o,prelude:``,start:i,end:e.length,terminator:`eof`});break}}return t}function de(e,t,n){let r=[];for(let i=t;i<n;i++){let t=e[i];if(t===`/`&&e[i+1]===`*`)i=A(e,i,n)-1;else if(t===`"`||t===`'`)i=j(e,i,n)-1;else if(t===`(`)r.push(`)`);else if(t===`[`)r.push(`]`);else if(t===`{`)r.push(`}`);else if(t===r.at(-1))r.pop();else if(t===`;`&&r.length===0)return i}return n}function fe(e,t,n){let r=[];for(let i=t;i<n;){for(;i<n;)if(/\s/.test(e[i]))i++;else if(e[i]===`/`&&e[i+1]===`*`)i=A(e,i,n);else break;let t=de(e,i,n);if(e[i]!==`-`||e[i+1]!==`-`){i=t+1;continue}let a=i+2;for(;a<n&&ae.test(e[a]);)a++;if(a===i+2){i=t+1;continue}let o=a;for(;o<n;)if(/\s/.test(e[o]))o++;else if(e[o]===`/`&&e[o+1]===`*`)o=A(e,o,n);else break;if(e[o]!==`:`){i=t+1;continue}let s=o+1,c=e.slice(s,t),l=c.trim(),u=s+c.length-c.trimStart().length,d=u+l.length;r.push({property:e.slice(i,a),value:l,start:i,end:a,colon:o,valueStart:u,valueEnd:d}),i=t+1}return r}function P(e){let t=[];for(let n of N(e)){if(n.name!==`custom`||n.terminator!==`block`)continue;let r=le(e,n.start+7);if(r<0)continue;let i=n.end-1;t.push({mode:n.prelude||void 0,declarations:fe(e,r+1,i),start:n.start,open:r,close:i})}return t}function pe(e){let t=e,n=/^url\(\s*([^)]*?)\s*\)$/i.exec(t);if(n)t=n[1];else if(/^url\(/i.test(t))return;let r=t[0];if(r===`"`||r===`'`){if(t.length<2||t[t.length-1]!==r)return;let e=t.slice(1,-1);return e.includes(r)?void 0:e}return n?t:void 0}function me(e){return!(!e||e.startsWith(`//`)||/^[a-z][\w+.-]*:/i.test(e))}function he(e){return e.split(`\\`).join(`/`)}function ge(e,t,n,r){if(!me(e)||c(e)||!r&&!e.startsWith(`./`)&&!e.startsWith(`../`))return e;let i=he(u(n,d(t,e)));return i.startsWith(`.`)?i:`./${i}`}function _e(e,t){if(t.length===0)return e;t.sort((e,t)=>e.start-t.start);let n=``,r=0;for(let i of t)n+=e.slice(r,i.start)+i.replacement,r=i.end;return n+e.slice(r)}function ve(e,t,n){if(t===n)return e;let r=[];for(let i of N(e)){if(i.terminator!==`;`||i.name!==`preset`&&i.name!==`source`)continue;let a=i.prelude[0];if(a!==`"`&&a!==`'`||i.prelude[i.prelude.length-1]!==a)continue;let o=i.prelude.slice(1,-1).trim(),s=i.name===`source`&&o.startsWith(`!`),c=s?o.slice(1):o,l=ge(c,t,n,i.name===`source`);if(l===c)continue;let u=e.slice(i.start,i.end).replace(i.prelude,`${a}${s?`!`:``}${l}${a}`);r.push({start:i.start,end:i.end,replacement:u})}return _e(e,r)}function F(e,n,r,i,a){if(a>32)return e;let s=[];for(let c of N(e)){if(c.name!==`import`||c.terminator!==`;`)continue;let e=pe(c.prelude);if(e===void 0||!me(e))continue;let l=d(n,e),u;try{u=t.statSync(l)}catch{continue}if(!u.isFile())continue;if(r.has(l)){s.push({start:c.start,end:c.end,replacement:``});continue}r.add(l),i.push(l);let f=o(l),p=F(t.readFileSync(l,`utf8`),f,r,i,a+1);p=ve(p,f,n),s.push({start:c.start,end:c.end,replacement:p})}return _e(e,s)}function ye(e,t,n){if(!e.includes(`@import`))return{css:e,files:[]};let r=[];return{css:F(e,t,new Set(n?[d(t,n)]:[]),r,0),files:r}}const be=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function I(e){if(!e)return{kind:`base`};let t=e.split(/\s+/);if(t[0]!==`theme`)return{kind:`mode`,mode:e};let n=t[1];return!n||!be.test(n)||n===`dark`||n===`light`?{kind:`invalid`}:t.length===2?{kind:`theme`,theme:n}:t.length===3&&t[2]===`dark`?{kind:`theme`,theme:n,mode:`dark`}:{kind:`invalid`}}function xe(e){let t,n=0,r=null;for(let i=0;i<e.length;i++){let a=e[i];if(r)a===`\\`?i++:a===r&&(r=null);else if(a===`"`||a===`'`)r=a;else if(a===`/`&&e[i+1]===`*`){let r=e.indexOf(`*/`,i+2),a=r<0?e.length:r+2;(t??=[]).push(e.slice(n,i),` `),n=a,i=a-1}}return t?`${t.join(``)}${e.slice(n)}`:e}function Se(e){let t=e[0];if(t===`"`||t===`'`)for(let n=1;n<e.length;n++){let r=e[n];if(r===`\\`)n++;else if(r===t)return n===e.length-1?e.slice(1,n):void 0}}function L(e){let t=N(e),n=[],r=[],i=[],a=[],o=!1,s=!1;for(let e of t){if(e.name===`custom`&&e.terminator===`block`?o=!0:e.name===`teacss`&&e.prelude===``&&e.terminator!==`block`&&(s=!0),e.terminator!==`;`)continue;if(e.name===`shortcut`){let t=e.prelude.search(/\s/);if(t<=0)continue;let n=e.prelude.slice(0,t);if(!/^[A-Za-z_][\w-]*$/.test(n))continue;let r=Se(e.prelude.slice(t).trimStart())?.trim();r&&i.push({name:n,expansion:r});continue}if(e.name!==`preset`&&e.name!==`source`&&e.name!==`safelist`)continue;let t=Se(e.prelude)?.trim();if(!t)continue;if(e.name===`preset`){n.push(t);continue}if(e.name===`safelist`){a.push(t);continue}let c=t.startsWith(`!`),l=c?t.slice(1):t;l&&r.push({glob:l,exclude:c})}return{presets:n,sources:r,custom:o?P(e).flatMap(({mode:e,declarations:t})=>{let n=I(e);return n.kind===`invalid`?[]:[{mode:n.kind===`base`?void 0:n.mode,...n.kind===`theme`?{theme:n.theme}:{},declarations:t.map(({property:e,value:t})=>({property:e,value:xe(t).trim()}))}]}):[],shortcuts:i,safelist:a,hasTeacss:s}}let Ce;function we(){return Ce??=import(`jiti`).then(({createJiti:e})=>({createJiti:e,transformer:e(import.meta.url,{fsCache:!1,interopDefault:!0,moduleCache:!1})}))}const R=new Map,z=new WeakMap,Te=16777216,B=new Map;let V=0;const Ee={icons:`@teacss/preset-icons`,shortcuts:`@teacss/preset-shortcuts`,standard:`@teacss/preset-standard`};function De(t,n){try{return n.resolve(t)}catch(r){let i;try{i=n.resolve(`teacss/package.json`)}catch{throw r}return e(i).resolve(t)}}function Oe(t,n){if(t.startsWith(`.`)||c(t))return d(n,t);let r=e(d(n,`_`)),i=Object.hasOwn(Ee,t)?Ee[t]:void 0;return i?De(i,r):r.resolve(t)}function H(e){return e.startsWith(`.`)||c(e)}function U(e){try{return a(e)}catch{return d(e)}}function W(e,t){let n=o(e),i=[];for(;;){if(t.has(n)){let e=t.get(n);for(let n of i)t.set(n,e);return e}if(i.push(n),r(d(n,`package.json`))){for(let e of i)t.set(e,n);return n}let e=o(n);if(e===n){for(let e of i)t.set(e,void 0);return}n=e}}function ke(e,t){let n=u(t,e);return n===``||!c(n)&&n!==`..`&&!n.startsWith(`..${f}`)}function G(e,t,n){let r=W(e,n);return t.packageRoot===void 0?r===void 0&&ke(e,t.fallbackRoot):r===t.packageRoot}function K(e,t,n,r,i){if(!e||n.has(e)||(n.add(e),!c(e.filename)))return;let a=U(e.filename);if(G(a,r,i)){t.add(a);for(let a of e.children)K(a,t,n,r,i)}}function Ae(e){if(!e||typeof e!=`object`)return;let t,n,r;try{t=Reflect.get(e,`path`),n=Reflect.get(e,`url`),r=Reflect.get(e,`message`)}catch{return}if(typeof t==`string`&&c(t))return U(t);if(typeof n==`string`&&n.startsWith(`file:`))return U(te(n));if(typeof r!=`string`)return;let i=/Cannot find module ['"]([^'"]+)['"] from ['"]([^'"]+)['"]/.exec(r),a=/Cannot find module ['"]([^'"]+)['"][\s\S]*?Require stack:\s*\n- ([^\n]+)/.exec(r),s=i??a;if(!s)return;let l=s[1],u=s[2];if(l&&u&&(l.startsWith(`.`)||c(l)))return U(c(l)?l:d(o(u),l))}async function je(e,t){let n=R.get(e)??Promise.resolve(),r,i=new Promise(e=>{r=e}),a=n.then(()=>i);R.set(e,a),await n;try{return{evaluation:t()}}finally{r(),R.get(e)===a&&R.delete(e)}}function Me(e){return()=>({visitor:{AwaitExpression(t){t.getFunctionParent()||(e.hasTopLevelAwait=!0)},CallExpression(t){t.node.callee?.type===`Identifier`&&t.node.callee.name===`jitiImport`&&(e.hasDynamicImport=!0);let n=t.node.arguments?.[0];if(t.node.callee?.type!==`Identifier`||t.node.callee.name!==`require`)return;let r=n?.type===`StringLiteral`&&typeof n.value==`string`;r&&e.dependencies.add(n.value),typeof t.node.start==`number`&&(r?t.getFunctionParent()?e.hasNestedRequire=!0:e.hasTopLevelRequire=!0:e.hasNonLiteralRequire=!0)},ForOfStatement(t){t.node.await&&!t.getFunctionParent()&&(e.hasTopLevelAwait=!0)}}})}function q(e,t,n){if(e.hasDynamicImport)throw Error(`Dynamic imports are not supported in local preset modules: "${t}". Use static imports so TeaCSS can track and reload the complete graph.`);if(e.hasNonLiteralRequire)throw Error(`CommonJS require() specifiers must be string literals in local preset modules: "${t}".`);if(e.hasNestedRequire)throw Error(`CommonJS require() is only supported at module top level in local preset modules: "${t}".`);if(e.hasTopLevelRequire&&e.hasTopLevelAwait)throw Error(`CommonJS require() cannot be combined with top-level await in a local preset module: "${t}". Use a static import instead.`);if(t!==n&&e.hasTopLevelAwait)throw Error(`Top-level await is only supported in the local preset entry module: "${t}".`)}const J=Symbol(`uncacheable transform option`);function Y(e,t=new Set){if(e===null)return`n`;if(typeof e==`string`)return`s${JSON.stringify(e)}`;if(typeof e==`boolean`)return e?`b1`:`b0`;if(typeof e==`number`)return Number.isNaN(e)?`dNaN`:e===1/0?`dInfinity`:e===-1/0?`d-Infinity`:Object.is(e,-0)?`d-0`:`d${JSON.stringify(e)}`;if(e===void 0)return`u`;if(typeof e!=`object`||t.has(e))throw J;t.add(e);try{if(Array.isArray(e)){for(let t of Reflect.ownKeys(e)){if(t===`length`)continue;if(typeof t!=`string`)throw J;let n=Number(t),r=Object.getOwnPropertyDescriptor(e,t);if(!Number.isSafeInteger(n)||n<0||String(n)!==t||n>=e.length||!r?.enumerable||!(`value`in r))throw J}let n=Array.from({length:e.length},(n,r)=>{let i=Object.getOwnPropertyDescriptor(e,String(r));return i&&`value`in i?Y(i.value,t):`h`});return`a${e.length}[${n.join(`,`)}]`}if(Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)throw J;return`o{${Reflect.ownKeys(e).map(t=>{if(typeof t!=`string`)throw J;let n=Object.getOwnPropertyDescriptor(e,t);if(!n?.enumerable||!(`value`in n))throw J;return[t,n.value]}).sort(([e],[t])=>e.localeCompare(t)).map(([e,n])=>`${JSON.stringify(e)}:${Y(n,t)}`).join(`,`)}}`}finally{t.delete(e)}}function Ne(e,t){return{...t,async:!1,interopDefault:t.interopDefault??!0,jsx:t.jsx??e.options.jsx,retainLines:t.retainLines??e.options.transformOptions?.retainLines}}function Pe(e){if(!(e&&Object.getPrototypeOf(e)===Object.prototype&&Reflect.ownKeys(e).length===0))return e}function Fe(e){try{return Y({babel:Pe(e.babel),interopDefault:e.interopDefault,jsx:e.jsx,retainLines:e.retainLines,ts:e.ts})}catch{return}}function Ie(e,t,n,r){let i=y.byteLength(e)+y.byteLength(t)+y.byteLength(n);for(let e of r.dependencies)i+=y.byteLength(e);return i}function Le(e,t){let n=B.get(e);n&&(V-=n.bytes,B.delete(e));let r=Ie(e,t.source,t.code,t.facts);if(!(r>Te))for(B.set(e,{...t,bytes:r}),V+=r;B.size>256||V>Te;){let e=B.keys().next();if(e.done)break;let t=B.get(e.value);B.delete(e.value),t&&(V-=t.bytes)}}function Re(e){return{...e,dependencies:Array.from(e.dependencies)}}function ze(e,t,n,r,i,a){let o=t.filename?U(t.filename):n,s=Ne(e,t),c=Fe(s),l=c===void 0?void 0:`${o}\0${c}`,u=l===void 0?void 0:B.get(l);if(l!==void 0&&u?.source===s.source)return B.delete(l),B.set(l,u),G(o,r,i)&&q(u.facts,o,n),{code:u.code,dependencies:u.facts.dependencies};let d=c===void 0?void 0:{filename:o,mode:c,source:s.source},f=d===void 0?void 0:a?.read(d);if(l!==void 0&&f){let e={...f.facts,dependencies:new Set(f.facts.dependencies)};return Le(l,{code:f.code,facts:e,source:s.source}),G(o,r,i)&&q(e,o,n),{code:f.code,dependencies:e.dependencies}}let p={dependencies:new Set,hasDynamicImport:!1,hasNestedRequire:!1,hasNonLiteralRequire:!1,hasTopLevelAwait:!1,hasTopLevelRequire:!1},m=Me(p),h=Error.prepareStackTrace,g=Error.stackTraceLimit;try{let t=e.transform({...s,babel:{...s.babel,plugins:[...Array.isArray(s.babel?.plugins)?s.babel.plugins:[],m]}});return l!==void 0&&Le(l,{code:t,facts:p,source:s.source}),G(o,r,i)&&q(p,o,n),d!==void 0&&a?.write(d,{code:t,facts:Re(p)}),{code:t,dependencies:p.dependencies}}finally{Error.prepareStackTrace=h,Error.stackTraceLimit=g}}const Be=/\.[cm]?[jt]sx?$/;function X(e,t,n){let r=U(c(n)?n:d(o(t),n));if(s(r))return[r];let i=Array.from(new Set([``,...e.options.extensions??[],`.json`])),a=[r,d(r,`index`)].flatMap(e=>i.map(t=>`${e}${t}`));return a.push(d(r,`package.json`)),a}function Ve(t,n,r){if(r.startsWith(`node:`))return[];try{let i=H(r)?t.esmResolve(r,{parentURL:x(n).href,try:!0}):e(n).resolve(r);if(!i)return H(r)?X(t,n,r):[];let a=i.startsWith(`file:`)?te(i):i;return c(a)?[U(a)]:[]}catch{return H(r)?X(t,n,r):[]}}async function He(e,t,n,r,i,a,o){let c=[e],l;for(let u=0;u<c.length;u++){let d=c[u];if(!d||!Be.test(s(d)))continue;let f;try{f=await b(d,`utf8`)}catch(e){if(e.code===`ENOENT`)continue;throw e}d===e&&(l=f);let{dependencies:p}=ze(n,{source:f,filename:d,async:d===e,ts:/\.[cm]?tsx?$/.test(d)},e,r,i,o);for(let e of p)for(let n of Ve(t,d,e))!a.has(n)&&G(n,r,i)&&(a.add(n),c.push(n))}return l}async function Ue(e,t){try{let{createPresetTransformDiskCache:n}=await import(`./presetTransformDiskCache-BNUNLsPo.js`);return n(e,import.meta.url,t)}catch{return}}function Z(e,t){if(!e||typeof e!=`object`)return;let n=z.get(e)??[];z.set(e,Array.from(new Set([...n,...t])))}function Q(e){return e&&typeof e==`object`?[...z.get(e)??[]]:[]}async function We(t,n,r){let i=U(t),a=e(i),s=Object.create(null),c=new Set([i]),l=new Map,u={packageRoot:W(i,l),fallbackRoot:o(i)},[{createJiti:d,transformer:f},p]=await Promise.all([we(),Ue(i,r)]),m=d(i,{fsCache:!1,interopDefault:!0,moduleCache:!1,tryNative:!1,transform:e=>{let{code:t}=ze(f,e,i,u,l,p);return{code:t}}}),h=()=>{let e=new Set;for(let t of Object.values(s))K(t,c,e,u,l);for(let t of c)K(a.cache[t],c,e,u,l)};try{let e=await He(i,m,f,u,l,c,p)??await b(i,`utf8`),{evaluation:t}=await je(u.packageRoot??u.fallbackRoot,()=>{for(let e of c)delete a.cache[e];return m.evalModule(e,{async:!0,cache:s,filename:i,forceTranspile:!0})}),r=await t,o=r?.__esModule?r.default:r;if(o==null)throw Error(`@preset "${n}" has no default export (expected a Preset or preset factory)`);let d=typeof o==`function`?await o():o;return h(),{preset:d,sources:Array.from(c)}}catch(e){h();let t=Ae(e);throw Z(e,t&&G(t,u,l)?[...c,t]:Array.from(c)),e}}async function Ge(e){let t=await ee(e),n=x(e);return n.searchParams.set(`version`,`${t.mtimeMs}:${t.ctimeMs}:${t.size}:${t.ino}`),(await import(n.href)).default}async function Ke(e,t){let n=[],r=new Set,i={protectedSlotsByDirectory:new Map};for(let a of e){let e;try{e=Oe(a,t);let o;if(H(a)){let t=await We(e,a,i);for(let e of t.sources)r.add(e);n.push(t.preset);continue}if(r.add(U(e)),o=await Ge(e),o==null)throw Error(`@preset "${a}" has no default export (expected a Preset or preset factory)`);n.push(typeof o==`function`?await o():o)}catch(t){throw Z(t,e!==void 0&&H(a)?[...r,U(e)]:r),t}}return{presets:n,sources:Array.from(r)}}async function qe(e,t){return(await Ke(e,t)).presets}async function Je(e,t,n){let r=e.filter(e=>!e.exclude).map(e=>e.glob);if(r.length===0)return{shortcuts:[],safelist:[],files:[]};let a=e.filter(e=>e.exclude).map(e=>e.glob),o=await v(r,{cwd:t,absolute:!0,ignore:a,expandDirectories:!1}),s=new Set(n),c=o.filter(e=>e.endsWith(`.css`)&&!s.has(e)).sort(),l=[],u=[];for(let e of c){let t;try{t=i(e,`utf8`)}catch(e){if(e.code===`ENOENT`)continue;throw e}if(!t.includes(`@shortcut`)&&!t.includes(`@safelist`))continue;let n=L(t);l.push(...n.shortcuts),u.push(...n.safelist)}return{shortcuts:l,safelist:u,files:c}}async function Ye(e,t,n){let r=ye(e,t,n),i=L(r.css),[a,o]=await Promise.all([i.presets.length?Ke(i.presets,t):{presets:[],sources:[]},Je(i.sources,t,r.files)]).catch(e=>{throw Z(e,r.files),e}),s=a.presets,c=await g({presets:s}).catch(e=>{throw Z(e,[...r.files,...o.files,...a.sources]),e}),l=S(c.theme),{theme:u,unknown:d,undeclared:f}=k(i.custom,l,c.theme),p=[...i.sources.filter(e=>!e.exclude).map(e=>e.glob),...i.sources.filter(e=>e.exclude).map(e=>`!${e.glob}`)],m=[...o.shortcuts,...i.shortcuts],v=Object.fromEntries(m.map(({name:e,expansion:t})=>[e,t])),y=[...new Set([...o.safelist,...i.safelist].flatMap(e=>_(h(e))))],b=[...new Set(i.custom.map(e=>e.theme).filter(e=>!!e))];return{config:{presets:s,theme:u,...i.sources.length?{content:{filesystem:p}}:{},...m.length?{shortcuts:v}:{},...y.length?{safelist:y}:{},...b.length?{autocomplete:{templates:[`theme-(${b.join(`|`)})`]}}:{}},unknown:d,undeclared:f,hasTeacss:r.files.length===0?i.hasTeacss:L(e).hasTeacss,sources:[...r.files,...o.files,...a.sources]}}const Xe=ne.join(` `);function $(e,t){switch(t){case`unknown-prefix`:return`@custom var "${e}" matches no theme namespace — not registered (emitted as a plain :root var).`;case`illegal-color-step`:return`@custom var "${e}" has an illegal color step — palette steps are ${Xe}.`;case`undeclared-theme-variable`:return`@custom theme var "${e}" overrides no declared base value — not registered. Declare it in the preset theme or a base @custom block first.`;case`invalid-theme-prelude`:return`@custom prelude "${e}" is not a theme declaration — use \`@custom theme <name> {}\` or \`@custom theme <name> dark {}\` with a kebab-case name (\`dark\`/\`light\` reserved). The block registers nothing.`}}function Ze(e,t,n){let r=C(t),i=[],a=P(e),o=n?[n,k(a.filter(e=>I(e.mode).kind===`base`).map(e=>({declarations:e.declarations})),t).theme]:void 0;for(let e of a){let t=I(e.mode);if(t.kind===`invalid`){i.push({property:e.mode,start:e.start,end:e.open,reason:`invalid-theme-prelude`,message:$(e.mode,`invalid-theme-prelude`)});continue}for(let n of e.declarations){let{property:e,start:a,end:s}=n,c=E(e.slice(2),r);if(!c.ok){i.push({property:e,start:a,end:s,reason:c.reason,message:$(e,c.reason)});continue}t.kind===`theme`&&o&&!O(c,o)&&i.push({property:e,start:a,end:s,reason:`undeclared-theme-variable`,message:$(e,`undeclared-theme-variable`)})}}return i}const Qe=Object.freeze([`package.json`,`index.css`,`src/index.css`]),[$e,...et]=Qe;function tt(e){let t=e instanceof Error?`${e.name}:${e.message}`:`${typeof e}:${String(e)}`,r=Array.from(new Set(Q(e))).sort().map(e=>{try{let t=n.statSync(e);return`${e}:${t.mtimeMs}:${t.ctimeMs}:${t.size}:${t.ino}`}catch(t){let n=t.code;return`${e}:${n===`ENOENT`?`missing`:`unreadable:${n??String(t)}`}`}});return JSON.stringify([t,r])}function nt(e,t){let n={...e};for(let e of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(t,e)?.enumerable)continue;let r=Reflect.get(t,e);r!==void 0&&Object.defineProperty(n,e,{value:r,configurable:!0,enumerable:!0,writable:!0})}return n}function rt(e){try{let t=n.readFileSync(e,`utf8`);return t.includes(`@teacss`)?N(t).some(e=>e.name===`teacss`&&e.prelude===``&&e.terminator!==`block`):!1}catch(e){if(e.code===`ENOENT`)return!1;throw e}}function it(e){try{let t=JSON.parse(n.readFileSync(l(e,$e),`utf8`))?.teacss?.entry;return typeof t==`string`?t:void 0}catch(e){if(e.code===`ENOENT`)return;throw e}}function at(e){let t=it(e);if(t){let r=d(e,t);if(n.existsSync(r)&&n.statSync(r).isFile())return r}for(let t of et){let r=l(e,t);if(n.existsSync(r)&&n.statSync(r).isFile()&&rt(r))return r}}async function ot(e=p.cwd(),t=e,r={}){if(typeof t!=`string`)return{config:nt(r,t),sources:[]};let i=d(e,t),a=n.existsSync(i)&&n.statSync(i).isFile()?i:at(i);if(!a)return{config:{...r},sources:[]};let s;try{s=await Ye(n.readFileSync(a,`utf8`),o(a),a)}catch(e){throw Z(e,[a]),e}let{config:c}=s,l=nt(r,c);return c.presets?.length||(r.presets?.length?l.presets=r.presets:m.warn(`[@teacss/config] "${a}" declares no @preset — no utilities will be generated. Add one, e.g. \`@preset "standard";\``)),{config:l,sources:Array.from(new Set([a,...s.sources]))}}function st(){let e=new Map,t=new Map,n=new Map,r=new Map,i=new WeakMap,a=new WeakMap,o=new WeakMap,s=new WeakMap,c=(e,n)=>e?t.get(e):n?a.get(n):void 0,l=(e,t)=>e?n.get(e):t?o.get(t):void 0,u=async(e,t)=>{for(;;){let n=c(e,t),r=l(e,t);if(!r)return;let i=await r;if(c(e,t)===n)return i}};return(c=p.cwd(),l=c,f={})=>{let h=typeof l==`string`?d(c,l):void 0,g=typeof l==`object`&&l?l:void 0,_=h?(t.get(h)??0)+1:g?(a.get(g)??0)+1:0;h?t.set(h,_):g&&a.set(g,_);let v=ot(c,l,f).then(n=>(h&&t.get(h)===_?(e.set(h,n),r.delete(h)):g&&a.get(g)===_&&(i.set(g,n),s.delete(g)),n),async n=>{let o=h?t.get(h)===_:!g||a.get(g)===_;if(!o){let e=await u(h,g);if(e)return e}let c=h?e.get(h):g?i.get(g):void 0;if(!c)throw n;if(o){let e=tt(n);e!==(h?r.get(h):g?s.get(g):void 0)&&(m.error(`[@teacss/config] Error resolving config from the CSS entry:`,n),h?r.set(h,e):g&&s.set(g,e));let t=Array.from(new Set([...c.sources,...Q(n)]));return t.length===c.sources.length?c:{...c,sources:t}}return c});return h?n.set(h,v):g&&o.set(g,v),v}}export{C as buildNamespaces,E as classifyCustomVar,st as createRecoveryConfigLoader,k as customToTheme,Ze as diagnoseCustom,Qe as entryDiscoveryFiles,at as findEntry,Q as getConfigSourcesFromError,O as hasBaseThemeValue,ce as hasTopLevelDirective,ot as loadConfig,I as parseCustomPrelude,L as parseEntry,Ye as resolveEntryConfig,qe as resolvePresets,S as scaleThemeKeys,P as scanCustomBlocks,se as scanQuotedDirectives,N as scanTopLevelAtRules};
|
|
1
|
+
import{createRequire as e}from"node:module";import*as t from"node:fs";import n,{existsSync as r,readFileSync as i,realpathSync as a}from"node:fs";import{dirname as o,extname as s,isAbsolute as c,join as l,relative as u,resolve as d,sep as f}from"node:path";import p from"node:process";import{consola as m}from"consola";import{expandClassGroups as h,resolveConfig as g,splitClassTokens as _}from"@teacss/core";import{glob as v}from"tinyglobby";import{Buffer as y}from"node:buffer";import{readFile as b,stat as ee}from"node:fs/promises";import{fileURLToPath as te,pathToFileURL as x}from"node:url";const ne=[`100`,`150`,`200`,`300`,`400`,`500`,`600`,`700`,`800`,`850`,`900`,`950`],re=new Set(ne);function ie(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}function S(e){return Object.keys(e).filter(t=>{if(t===`modes`||t===`defaultMode`||t===`themes`)return!1;let n=e[t];return typeof n!=`object`||!n?!1:t===`colors`||Object.values(n).every(e=>e==null||typeof e==`string`||typeof e==`number`||Array.isArray(e))})}function C(e){return e.map(e=>({key:e,prefix:e===`colors`||e===`semanticColors`?`color`:ie(e),twoLevel:e===`colors`,semanticColor:e===`semanticColors`})).sort((e,t)=>t.prefix.length-e.prefix.length)}function w(e,t,n){Object.defineProperty(e,t,{value:n,configurable:!0,enumerable:!0,writable:!0})}function T(e,t){let n=Object.hasOwn(e,t)?e[t]:void 0;if(typeof n==`object`&&n&&!Array.isArray(n))return n;let r={};return w(e,t,r),r}function E(e,t){let n=t.filter(t=>e===t.prefix||e.startsWith(`${t.prefix}-`)),r=n.find(e=>e.key===`colors`),i=n.find(e=>e.semanticColor);if(r&&i){let t=e===`color`?``:e.slice(6),n=t.lastIndexOf(`-`),a=n>0?t.slice(0,n):``,o=n>0?t.slice(n+1):``;return a&&re.has(o)?{ok:!0,nsKey:r.key,twoLevel:!0,rest:t,colorName:a,step:o}:a&&/^\d+$/.test(o)?{ok:!1,reason:`illegal-color-step`}:t?{ok:!0,nsKey:i.key,twoLevel:!1,rest:t}:{ok:!1,reason:`unknown-prefix`}}let a=n[0];if(!a)return{ok:!1,reason:`unknown-prefix`};let o=e===a.prefix?``:e.slice(a.prefix.length+1);if(a.twoLevel){let e=o.lastIndexOf(`-`),t=e>0?o.slice(0,e):``,n=e>0?o.slice(e+1):``;return!t||!re.has(n)?{ok:!1,reason:`illegal-color-step`}:{ok:!0,nsKey:a.key,twoLevel:!0,rest:o,colorName:t,step:n}}return{ok:!0,nsKey:a.key,twoLevel:!1,rest:o}}function D(e,t){if(typeof e==`object`&&e&&Object.hasOwn(e,t))return e[t]}function O(e,t){for(let n of t){let t=D(n,e.nsKey);if((e.twoLevel?D(D(t,e.colorName),e.step):D(t,e.rest||`DEFAULT`))!=null)return!0}return!1}function k(e,t,n){let r=C(t),i={},a=[],o=[],s=e=>{let t=E(e.startsWith(`--`)?e.slice(2):e,r);return t.ok||a.push(e),t},c=(e,t,n)=>{let r=T(e,t.nsKey);t.twoLevel?w(T(r,t.colorName),t.step,n):w(r,t.rest||`DEFAULT`,n)};for(let t of e){if(t.theme)continue;let e=t.mode?T(T(i,`modes`),t.mode):i;for(let{property:n,value:r}of t.declarations){let t=s(n);t.ok&&c(e,t,r)}}let l=n?[n,i]:void 0;for(let t of e){if(!t.theme)continue;let e=T(T(i,`themes`),t.theme),n=t.mode?T(T(e,`modes`),t.mode):e;for(let{property:e,value:r}of t.declarations){let t=s(e);if(t.ok){if(l&&!O(t,l)){o.push(e);continue}c(n,t,r)}}}return{theme:i,unknown:a,undeclared:o}}const ae=/[A-Za-z0-9-]/,oe=/[\w-]/;function A(e,t,n){let r=e.indexOf(`*/`,t+2);return r<0||r>=n?n:r+2}function j(e,t,n){let r=e[t];for(let i=t+1;i<n;i++)if(e[i]===`\\`)i++;else if(e[i]===r)return i+1;return n}function M(e,t,n){let r=``;for(let i=t;i<n;i++)if(e[i]===`/`&&e[i+1]===`*`)i=A(e,i,n)-1,r+=` `;else if(e[i]===`"`||e[i]===`'`){let t=j(e,i,n);r+=e.slice(i,t),i=t-1}else r+=e[i];return r.trim()}function se(e,t){let n=[],r=t.startsWith(`@`)?t.slice(1):t;for(let t of N(e)){if(t.name!==r||t.terminator!==`;`)continue;let e=t.prelude[0];if(e!==`"`&&e!==`'`)continue;let i=j(t.prelude,0,t.prelude.length);i!==t.prelude.length||i<=1||t.prelude[i-1]!==e||n.push(t.prelude.slice(1,i-1))}return n}function ce(e,t){let n=t.startsWith(`@`)?t.slice(1):t;return N(e).some(e=>e.name===n)}function le(e,t){for(let n=t;n<e.length;n++)if(e[n]===`/`&&e[n+1]===`*`)n=A(e,n,e.length)-1;else if(e[n]===`"`||e[n]===`'`)n=j(e,n,e.length)-1;else if(e[n]===`{`)return n;else if(e[n]===`;`||e[n]===`}`)return-1;return-1}function ue(e,t){let n=1;for(let r=t+1;r<e.length;r++)if(e[r]===`/`&&e[r+1]===`*`)r=A(e,r,e.length)-1;else if(e[r]===`"`||e[r]===`'`)r=j(e,r,e.length)-1;else if(e[r]===`{`)n++;else if(e[r]===`}`&&--n===0)return r;return-1}function N(e){let t=[],n=0;for(let r=0;r<e.length;r++){if(e[r]===`/`&&e[r+1]===`*`){r=A(e,r,e.length)-1;continue}if(e[r]===`"`||e[r]===`'`){r=j(e,r,e.length)-1;continue}if(e[r]===`{`){n++;continue}if(e[r]===`}`){n=Math.max(0,n-1);continue}if(n!==0||e[r]!==`@`)continue;let i=r,a=i+1;for(;oe.test(e[a]??``);)a++;if(a===i+1)continue;let o=e.slice(i+1,a),s=[],c=!1;for(let n=a;n<e.length;n++){let l=e[n];if(l===`/`&&e[n+1]===`*`)n=A(e,n,e.length)-1;else if(l===`"`||l===`'`)n=j(e,n,e.length)-1;else if(l===`(`)s.push(`)`);else if(l===`[`)s.push(`]`);else if(l===s.at(-1))s.pop();else if(s.length===0&&l===`;`){t.push({name:o,prelude:M(e,a,n),start:i,end:n+1,terminator:`;`}),r=n,c=!0;break}else if(s.length===0&&l===`{`){let s=ue(e,n);s>=0&&(t.push({name:o,prelude:M(e,a,n),start:i,end:s+1,terminator:`block`}),r=s,c=!0);break}}if(!c&&M(e,a,e.length)===``){t.push({name:o,prelude:``,start:i,end:e.length,terminator:`eof`});break}}return t}function de(e,t,n){let r=[];for(let i=t;i<n;i++){let t=e[i];if(t===`/`&&e[i+1]===`*`)i=A(e,i,n)-1;else if(t===`"`||t===`'`)i=j(e,i,n)-1;else if(t===`(`)r.push(`)`);else if(t===`[`)r.push(`]`);else if(t===`{`)r.push(`}`);else if(t===r.at(-1))r.pop();else if(t===`;`&&r.length===0)return i}return n}function fe(e,t,n){let r=[];for(let i=t;i<n;){for(;i<n;)if(/\s/.test(e[i]))i++;else if(e[i]===`/`&&e[i+1]===`*`)i=A(e,i,n);else break;let t=de(e,i,n);if(e[i]!==`-`||e[i+1]!==`-`){i=t+1;continue}let a=i+2;for(;a<n&&ae.test(e[a]);)a++;if(a===i+2){i=t+1;continue}let o=a;for(;o<n;)if(/\s/.test(e[o]))o++;else if(e[o]===`/`&&e[o+1]===`*`)o=A(e,o,n);else break;if(e[o]!==`:`){i=t+1;continue}let s=o+1,c=e.slice(s,t),l=c.trim(),u=s+c.length-c.trimStart().length,d=u+l.length;r.push({property:e.slice(i,a),value:l,start:i,end:a,colon:o,valueStart:u,valueEnd:d}),i=t+1}return r}function P(e){let t=[];for(let n of N(e)){if(n.name!==`custom`||n.terminator!==`block`)continue;let r=le(e,n.start+7);if(r<0)continue;let i=n.end-1;t.push({mode:n.prelude||void 0,declarations:fe(e,r+1,i),start:n.start,open:r,close:i})}return t}function pe(e){let t=e,n=/^url\(\s*([^)]*?)\s*\)$/i.exec(t);if(n)t=n[1];else if(/^url\(/i.test(t))return;let r=t[0];if(r===`"`||r===`'`){if(t.length<2||t[t.length-1]!==r)return;let e=t.slice(1,-1);return e.includes(r)?void 0:e}return n?t:void 0}function me(e){return!(!e||e.startsWith(`//`)||/^[a-z][\w+.-]*:/i.test(e))}function he(e){return e.split(`\\`).join(`/`)}function ge(e,t,n,r){if(!me(e)||c(e)||!r&&!e.startsWith(`./`)&&!e.startsWith(`../`))return e;let i=he(u(n,d(t,e)));return i.startsWith(`.`)?i:`./${i}`}function _e(e,t){if(t.length===0)return e;t.sort((e,t)=>e.start-t.start);let n=``,r=0;for(let i of t)n+=e.slice(r,i.start)+i.replacement,r=i.end;return n+e.slice(r)}function ve(e,t,n){if(t===n)return e;let r=[];for(let i of N(e)){if(i.terminator!==`;`||i.name!==`preset`&&i.name!==`source`)continue;let a=i.prelude[0];if(a!==`"`&&a!==`'`||i.prelude[i.prelude.length-1]!==a)continue;let o=i.prelude.slice(1,-1).trim(),s=i.name===`source`&&o.startsWith(`!`),c=s?o.slice(1):o,l=ge(c,t,n,i.name===`source`);if(l===c)continue;let u=e.slice(i.start,i.end).replace(i.prelude,`${a}${s?`!`:``}${l}${a}`);r.push({start:i.start,end:i.end,replacement:u})}return _e(e,r)}function F(e,n,r,i,a){if(a>32)return e;let s=[];for(let c of N(e)){if(c.name!==`import`||c.terminator!==`;`)continue;let e=pe(c.prelude);if(e===void 0||!me(e))continue;let l=d(n,e),u;try{u=t.statSync(l)}catch{continue}if(!u.isFile())continue;if(r.has(l)){s.push({start:c.start,end:c.end,replacement:``});continue}r.add(l),i.push(l);let f=o(l),p=F(t.readFileSync(l,`utf8`),f,r,i,a+1);p=ve(p,f,n),s.push({start:c.start,end:c.end,replacement:p})}return _e(e,s)}function ye(e,t,n){if(!e.includes(`@import`))return{css:e,files:[]};let r=[];return{css:F(e,t,new Set(n?[d(t,n)]:[]),r,0),files:r}}const be=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function I(e){if(!e)return{kind:`base`};let t=e.split(/\s+/);if(t[0]!==`theme`)return{kind:`mode`,mode:e};let n=t[1];return!n||!be.test(n)||n===`dark`||n===`light`?{kind:`invalid`}:t.length===2?{kind:`theme`,theme:n}:t.length===3&&t[2]===`dark`?{kind:`theme`,theme:n,mode:`dark`}:{kind:`invalid`}}function xe(e){let t,n=0,r=null;for(let i=0;i<e.length;i++){let a=e[i];if(r)a===`\\`?i++:a===r&&(r=null);else if(a===`"`||a===`'`)r=a;else if(a===`/`&&e[i+1]===`*`){let r=e.indexOf(`*/`,i+2),a=r<0?e.length:r+2;(t??=[]).push(e.slice(n,i),` `),n=a,i=a-1}}return t?`${t.join(``)}${e.slice(n)}`:e}function Se(e){let t=e[0];if(t===`"`||t===`'`)for(let n=1;n<e.length;n++){let r=e[n];if(r===`\\`)n++;else if(r===t)return n===e.length-1?e.slice(1,n):void 0}}function L(e){let t=N(e),n=[],r=[],i=[],a=[],o=!1,s=!1;for(let e of t){if(e.name===`custom`&&e.terminator===`block`?o=!0:e.name===`teacss`&&e.prelude===``&&e.terminator!==`block`&&(s=!0),e.terminator!==`;`)continue;if(e.name===`shortcut`){let t=e.prelude.search(/\s/);if(t<=0)continue;let n=e.prelude.slice(0,t);if(!/^[A-Za-z_][\w-]*$/.test(n))continue;let r=Se(e.prelude.slice(t).trimStart())?.trim();r&&i.push({name:n,expansion:r});continue}if(e.name!==`preset`&&e.name!==`source`&&e.name!==`safelist`)continue;let t=Se(e.prelude)?.trim();if(!t)continue;if(e.name===`preset`){n.push(t);continue}if(e.name===`safelist`){a.push(t);continue}let c=t.startsWith(`!`),l=c?t.slice(1):t;l&&r.push({glob:l,exclude:c})}return{presets:n,sources:r,custom:o?P(e).flatMap(({mode:e,declarations:t})=>{let n=I(e);return n.kind===`invalid`?[]:[{mode:n.kind===`base`?void 0:n.mode,...n.kind===`theme`?{theme:n.theme}:{},declarations:t.map(({property:e,value:t})=>({property:e,value:xe(t).trim()}))}]}):[],shortcuts:i,safelist:a,hasTeacss:s}}let Ce;function we(){return Ce??=import(`jiti`).then(({createJiti:e})=>({createJiti:e,transformer:e(import.meta.url,{fsCache:!1,interopDefault:!0,moduleCache:!1})}))}const R=new Map,z=new WeakMap,Te=16777216,B=new Map;let V=0;const Ee={icons:`@teacss/preset-icons`,official:`@teacss/preset-official`,standard:`@teacss/preset-standard`};function De(t,n){try{return n.resolve(t)}catch(r){let i;try{i=n.resolve(`teacss/package.json`)}catch{throw r}return e(i).resolve(t)}}function Oe(t,n){if(t.startsWith(`.`)||c(t))return d(n,t);let r=e(d(n,`_`)),i=Object.hasOwn(Ee,t)?Ee[t]:void 0;return i?De(i,r):r.resolve(t)}function H(e){return e.startsWith(`.`)||c(e)}function U(e){try{return a(e)}catch{return d(e)}}function W(e,t){let n=o(e),i=[];for(;;){if(t.has(n)){let e=t.get(n);for(let n of i)t.set(n,e);return e}if(i.push(n),r(d(n,`package.json`))){for(let e of i)t.set(e,n);return n}let e=o(n);if(e===n){for(let e of i)t.set(e,void 0);return}n=e}}function ke(e,t){let n=u(t,e);return n===``||!c(n)&&n!==`..`&&!n.startsWith(`..${f}`)}function G(e,t,n){let r=W(e,n);return t.packageRoot===void 0?r===void 0&&ke(e,t.fallbackRoot):r===t.packageRoot}function K(e,t,n,r,i){if(!e||n.has(e)||(n.add(e),!c(e.filename)))return;let a=U(e.filename);if(G(a,r,i)){t.add(a);for(let a of e.children)K(a,t,n,r,i)}}function Ae(e){if(!e||typeof e!=`object`)return;let t,n,r;try{t=Reflect.get(e,`path`),n=Reflect.get(e,`url`),r=Reflect.get(e,`message`)}catch{return}if(typeof t==`string`&&c(t))return U(t);if(typeof n==`string`&&n.startsWith(`file:`))return U(te(n));if(typeof r!=`string`)return;let i=/Cannot find module ['"]([^'"]+)['"] from ['"]([^'"]+)['"]/.exec(r),a=/Cannot find module ['"]([^'"]+)['"][\s\S]*?Require stack:\s*\n- ([^\n]+)/.exec(r),s=i??a;if(!s)return;let l=s[1],u=s[2];if(l&&u&&(l.startsWith(`.`)||c(l)))return U(c(l)?l:d(o(u),l))}async function je(e,t){let n=R.get(e)??Promise.resolve(),r,i=new Promise(e=>{r=e}),a=n.then(()=>i);R.set(e,a),await n;try{return{evaluation:t()}}finally{r(),R.get(e)===a&&R.delete(e)}}function Me(e){return()=>({visitor:{AwaitExpression(t){t.getFunctionParent()||(e.hasTopLevelAwait=!0)},CallExpression(t){t.node.callee?.type===`Identifier`&&t.node.callee.name===`jitiImport`&&(e.hasDynamicImport=!0);let n=t.node.arguments?.[0];if(t.node.callee?.type!==`Identifier`||t.node.callee.name!==`require`)return;let r=n?.type===`StringLiteral`&&typeof n.value==`string`;r&&e.dependencies.add(n.value),typeof t.node.start==`number`&&(r?t.getFunctionParent()?e.hasNestedRequire=!0:e.hasTopLevelRequire=!0:e.hasNonLiteralRequire=!0)},ForOfStatement(t){t.node.await&&!t.getFunctionParent()&&(e.hasTopLevelAwait=!0)}}})}function q(e,t,n){if(e.hasDynamicImport)throw Error(`Dynamic imports are not supported in local preset modules: "${t}". Use static imports so TeaCSS can track and reload the complete graph.`);if(e.hasNonLiteralRequire)throw Error(`CommonJS require() specifiers must be string literals in local preset modules: "${t}".`);if(e.hasNestedRequire)throw Error(`CommonJS require() is only supported at module top level in local preset modules: "${t}".`);if(e.hasTopLevelRequire&&e.hasTopLevelAwait)throw Error(`CommonJS require() cannot be combined with top-level await in a local preset module: "${t}". Use a static import instead.`);if(t!==n&&e.hasTopLevelAwait)throw Error(`Top-level await is only supported in the local preset entry module: "${t}".`)}const J=Symbol(`uncacheable transform option`);function Y(e,t=new Set){if(e===null)return`n`;if(typeof e==`string`)return`s${JSON.stringify(e)}`;if(typeof e==`boolean`)return e?`b1`:`b0`;if(typeof e==`number`)return Number.isNaN(e)?`dNaN`:e===1/0?`dInfinity`:e===-1/0?`d-Infinity`:Object.is(e,-0)?`d-0`:`d${JSON.stringify(e)}`;if(e===void 0)return`u`;if(typeof e!=`object`||t.has(e))throw J;t.add(e);try{if(Array.isArray(e)){for(let t of Reflect.ownKeys(e)){if(t===`length`)continue;if(typeof t!=`string`)throw J;let n=Number(t),r=Object.getOwnPropertyDescriptor(e,t);if(!Number.isSafeInteger(n)||n<0||String(n)!==t||n>=e.length||!r?.enumerable||!(`value`in r))throw J}let n=Array.from({length:e.length},(n,r)=>{let i=Object.getOwnPropertyDescriptor(e,String(r));return i&&`value`in i?Y(i.value,t):`h`});return`a${e.length}[${n.join(`,`)}]`}if(Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)throw J;return`o{${Reflect.ownKeys(e).map(t=>{if(typeof t!=`string`)throw J;let n=Object.getOwnPropertyDescriptor(e,t);if(!n?.enumerable||!(`value`in n))throw J;return[t,n.value]}).sort(([e],[t])=>e.localeCompare(t)).map(([e,n])=>`${JSON.stringify(e)}:${Y(n,t)}`).join(`,`)}}`}finally{t.delete(e)}}function Ne(e,t){return{...t,async:!1,interopDefault:t.interopDefault??!0,jsx:t.jsx??e.options.jsx,retainLines:t.retainLines??e.options.transformOptions?.retainLines}}function Pe(e){if(!(e&&Object.getPrototypeOf(e)===Object.prototype&&Reflect.ownKeys(e).length===0))return e}function Fe(e){try{return Y({babel:Pe(e.babel),interopDefault:e.interopDefault,jsx:e.jsx,retainLines:e.retainLines,ts:e.ts})}catch{return}}function Ie(e,t,n,r){let i=y.byteLength(e)+y.byteLength(t)+y.byteLength(n);for(let e of r.dependencies)i+=y.byteLength(e);return i}function Le(e,t){let n=B.get(e);n&&(V-=n.bytes,B.delete(e));let r=Ie(e,t.source,t.code,t.facts);if(!(r>Te))for(B.set(e,{...t,bytes:r}),V+=r;B.size>256||V>Te;){let e=B.keys().next();if(e.done)break;let t=B.get(e.value);B.delete(e.value),t&&(V-=t.bytes)}}function Re(e){return{...e,dependencies:Array.from(e.dependencies)}}function ze(e,t,n,r,i,a){let o=t.filename?U(t.filename):n,s=Ne(e,t),c=Fe(s),l=c===void 0?void 0:`${o}\0${c}`,u=l===void 0?void 0:B.get(l);if(l!==void 0&&u?.source===s.source)return B.delete(l),B.set(l,u),G(o,r,i)&&q(u.facts,o,n),{code:u.code,dependencies:u.facts.dependencies};let d=c===void 0?void 0:{filename:o,mode:c,source:s.source},f=d===void 0?void 0:a?.read(d);if(l!==void 0&&f){let e={...f.facts,dependencies:new Set(f.facts.dependencies)};return Le(l,{code:f.code,facts:e,source:s.source}),G(o,r,i)&&q(e,o,n),{code:f.code,dependencies:e.dependencies}}let p={dependencies:new Set,hasDynamicImport:!1,hasNestedRequire:!1,hasNonLiteralRequire:!1,hasTopLevelAwait:!1,hasTopLevelRequire:!1},m=Me(p),h=Error.prepareStackTrace,g=Error.stackTraceLimit;try{let t=e.transform({...s,babel:{...s.babel,plugins:[...Array.isArray(s.babel?.plugins)?s.babel.plugins:[],m]}});return l!==void 0&&Le(l,{code:t,facts:p,source:s.source}),G(o,r,i)&&q(p,o,n),d!==void 0&&a?.write(d,{code:t,facts:Re(p)}),{code:t,dependencies:p.dependencies}}finally{Error.prepareStackTrace=h,Error.stackTraceLimit=g}}const Be=/\.[cm]?[jt]sx?$/;function X(e,t,n){let r=U(c(n)?n:d(o(t),n));if(s(r))return[r];let i=Array.from(new Set([``,...e.options.extensions??[],`.json`])),a=[r,d(r,`index`)].flatMap(e=>i.map(t=>`${e}${t}`));return a.push(d(r,`package.json`)),a}function Ve(t,n,r){if(r.startsWith(`node:`))return[];try{let i=H(r)?t.esmResolve(r,{parentURL:x(n).href,try:!0}):e(n).resolve(r);if(!i)return H(r)?X(t,n,r):[];let a=i.startsWith(`file:`)?te(i):i;return c(a)?[U(a)]:[]}catch{return H(r)?X(t,n,r):[]}}async function He(e,t,n,r,i,a,o){let c=[e],l;for(let u=0;u<c.length;u++){let d=c[u];if(!d||!Be.test(s(d)))continue;let f;try{f=await b(d,`utf8`)}catch(e){if(e.code===`ENOENT`)continue;throw e}d===e&&(l=f);let{dependencies:p}=ze(n,{source:f,filename:d,async:d===e,ts:/\.[cm]?tsx?$/.test(d)},e,r,i,o);for(let e of p)for(let n of Ve(t,d,e))!a.has(n)&&G(n,r,i)&&(a.add(n),c.push(n))}return l}async function Ue(e,t){try{let{createPresetTransformDiskCache:n}=await import(`./presetTransformDiskCache-BNUNLsPo.js`);return n(e,import.meta.url,t)}catch{return}}function Z(e,t){if(!e||typeof e!=`object`)return;let n=z.get(e)??[];z.set(e,Array.from(new Set([...n,...t])))}function Q(e){return e&&typeof e==`object`?[...z.get(e)??[]]:[]}async function We(t,n,r){let i=U(t),a=e(i),s=Object.create(null),c=new Set([i]),l=new Map,u={packageRoot:W(i,l),fallbackRoot:o(i)},[{createJiti:d,transformer:f},p]=await Promise.all([we(),Ue(i,r)]),m=d(i,{fsCache:!1,interopDefault:!0,moduleCache:!1,tryNative:!1,transform:e=>{let{code:t}=ze(f,e,i,u,l,p);return{code:t}}}),h=()=>{let e=new Set;for(let t of Object.values(s))K(t,c,e,u,l);for(let t of c)K(a.cache[t],c,e,u,l)};try{let e=await He(i,m,f,u,l,c,p)??await b(i,`utf8`),{evaluation:t}=await je(u.packageRoot??u.fallbackRoot,()=>{for(let e of c)delete a.cache[e];return m.evalModule(e,{async:!0,cache:s,filename:i,forceTranspile:!0})}),r=await t,o=r?.__esModule?r.default:r;if(o==null)throw Error(`@preset "${n}" has no default export (expected a Preset or preset factory)`);let d=typeof o==`function`?await o():o;return h(),{preset:d,sources:Array.from(c)}}catch(e){h();let t=Ae(e);throw Z(e,t&&G(t,u,l)?[...c,t]:Array.from(c)),e}}async function Ge(e){let t=await ee(e),n=x(e);return n.searchParams.set(`version`,`${t.mtimeMs}:${t.ctimeMs}:${t.size}:${t.ino}`),(await import(n.href)).default}async function Ke(e,t){let n=[],r=new Set,i={protectedSlotsByDirectory:new Map};for(let a of e){let e;try{e=Oe(a,t);let o;if(H(a)){let t=await We(e,a,i);for(let e of t.sources)r.add(e);n.push(t.preset);continue}if(r.add(U(e)),o=await Ge(e),o==null)throw Error(`@preset "${a}" has no default export (expected a Preset or preset factory)`);n.push(typeof o==`function`?await o():o)}catch(t){throw Z(t,e!==void 0&&H(a)?[...r,U(e)]:r),t}}return{presets:n,sources:Array.from(r)}}async function qe(e,t){return(await Ke(e,t)).presets}async function Je(e,t,n){let r=e.filter(e=>!e.exclude).map(e=>e.glob);if(r.length===0)return{shortcuts:[],safelist:[],files:[]};let a=e.filter(e=>e.exclude).map(e=>e.glob),o=await v(r,{cwd:t,absolute:!0,ignore:a,expandDirectories:!1}),s=new Set(n),c=o.filter(e=>e.endsWith(`.css`)&&!s.has(e)).sort(),l=[],u=[];for(let e of c){let t;try{t=i(e,`utf8`)}catch(e){if(e.code===`ENOENT`)continue;throw e}if(!t.includes(`@shortcut`)&&!t.includes(`@safelist`))continue;let n=L(t);l.push(...n.shortcuts),u.push(...n.safelist)}return{shortcuts:l,safelist:u,files:c}}async function Ye(e,t,n){let r=ye(e,t,n),i=L(r.css),[a,o]=await Promise.all([i.presets.length?Ke(i.presets,t):{presets:[],sources:[]},Je(i.sources,t,r.files)]).catch(e=>{throw Z(e,r.files),e}),s=a.presets,c=await g({presets:s}).catch(e=>{throw Z(e,[...r.files,...o.files,...a.sources]),e}),l=S(c.theme),{theme:u,unknown:d,undeclared:f}=k(i.custom,l,c.theme),p=[...i.sources.filter(e=>!e.exclude).map(e=>e.glob),...i.sources.filter(e=>e.exclude).map(e=>`!${e.glob}`)],m=[...o.shortcuts,...i.shortcuts],v=Object.fromEntries(m.map(({name:e,expansion:t})=>[e,t])),y=[...new Set([...o.safelist,...i.safelist].flatMap(e=>_(h(e))))],b=[...new Set(i.custom.map(e=>e.theme).filter(e=>!!e))];return{config:{presets:s,theme:u,...i.sources.length?{content:{filesystem:p}}:{},...m.length?{shortcuts:v}:{},...y.length?{safelist:y}:{},...b.length?{autocomplete:{templates:[`theme-(${b.join(`|`)})`]}}:{}},unknown:d,undeclared:f,hasTeacss:r.files.length===0?i.hasTeacss:L(e).hasTeacss,sources:[...r.files,...o.files,...a.sources]}}const Xe=ne.join(` `);function $(e,t){switch(t){case`unknown-prefix`:return`@custom var "${e}" matches no theme namespace — not registered (emitted as a plain :root var).`;case`illegal-color-step`:return`@custom var "${e}" has an illegal color step — palette steps are ${Xe}.`;case`undeclared-theme-variable`:return`@custom theme var "${e}" overrides no declared base value — not registered. Declare it in the preset theme or a base @custom block first.`;case`invalid-theme-prelude`:return`@custom prelude "${e}" is not a theme declaration — use \`@custom theme <name> {}\` or \`@custom theme <name> dark {}\` with a kebab-case name (\`dark\`/\`light\` reserved). The block registers nothing.`}}function Ze(e,t,n){let r=C(t),i=[],a=P(e),o=n?[n,k(a.filter(e=>I(e.mode).kind===`base`).map(e=>({declarations:e.declarations})),t).theme]:void 0;for(let e of a){let t=I(e.mode);if(t.kind===`invalid`){i.push({property:e.mode,start:e.start,end:e.open,reason:`invalid-theme-prelude`,message:$(e.mode,`invalid-theme-prelude`)});continue}for(let n of e.declarations){let{property:e,start:a,end:s}=n,c=E(e.slice(2),r);if(!c.ok){i.push({property:e,start:a,end:s,reason:c.reason,message:$(e,c.reason)});continue}t.kind===`theme`&&o&&!O(c,o)&&i.push({property:e,start:a,end:s,reason:`undeclared-theme-variable`,message:$(e,`undeclared-theme-variable`)})}}return i}const Qe=Object.freeze([`package.json`,`index.css`,`src/index.css`]),[$e,...et]=Qe;function tt(e){let t=e instanceof Error?`${e.name}:${e.message}`:`${typeof e}:${String(e)}`,r=Array.from(new Set(Q(e))).sort().map(e=>{try{let t=n.statSync(e);return`${e}:${t.mtimeMs}:${t.ctimeMs}:${t.size}:${t.ino}`}catch(t){let n=t.code;return`${e}:${n===`ENOENT`?`missing`:`unreadable:${n??String(t)}`}`}});return JSON.stringify([t,r])}function nt(e,t){let n={...e};for(let e of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(t,e)?.enumerable)continue;let r=Reflect.get(t,e);r!==void 0&&Object.defineProperty(n,e,{value:r,configurable:!0,enumerable:!0,writable:!0})}return n}function rt(e){try{let t=n.readFileSync(e,`utf8`);return t.includes(`@teacss`)?N(t).some(e=>e.name===`teacss`&&e.prelude===``&&e.terminator!==`block`):!1}catch(e){if(e.code===`ENOENT`)return!1;throw e}}function it(e){try{let t=JSON.parse(n.readFileSync(l(e,$e),`utf8`))?.teacss?.entry;return typeof t==`string`?t:void 0}catch(e){if(e.code===`ENOENT`)return;throw e}}function at(e){let t=it(e);if(t){let r=d(e,t);if(n.existsSync(r)&&n.statSync(r).isFile())return r}for(let t of et){let r=l(e,t);if(n.existsSync(r)&&n.statSync(r).isFile()&&rt(r))return r}}async function ot(e=p.cwd(),t=e,r={}){if(typeof t!=`string`)return{config:nt(r,t),sources:[]};let i=d(e,t),a=n.existsSync(i)&&n.statSync(i).isFile()?i:at(i);if(!a)return{config:{...r},sources:[]};let s;try{s=await Ye(n.readFileSync(a,`utf8`),o(a),a)}catch(e){throw Z(e,[a]),e}let{config:c}=s,l=nt(r,c);return c.presets?.length||(r.presets?.length?l.presets=r.presets:m.warn(`[@teacss/config] "${a}" declares no @preset — no utilities will be generated. Add one, e.g. \`@preset "standard";\``)),{config:l,sources:Array.from(new Set([a,...s.sources]))}}function st(){let e=new Map,t=new Map,n=new Map,r=new Map,i=new WeakMap,a=new WeakMap,o=new WeakMap,s=new WeakMap,c=(e,n)=>e?t.get(e):n?a.get(n):void 0,l=(e,t)=>e?n.get(e):t?o.get(t):void 0,u=async(e,t)=>{for(;;){let n=c(e,t),r=l(e,t);if(!r)return;let i=await r;if(c(e,t)===n)return i}};return(c=p.cwd(),l=c,f={})=>{let h=typeof l==`string`?d(c,l):void 0,g=typeof l==`object`&&l?l:void 0,_=h?(t.get(h)??0)+1:g?(a.get(g)??0)+1:0;h?t.set(h,_):g&&a.set(g,_);let v=ot(c,l,f).then(n=>(h&&t.get(h)===_?(e.set(h,n),r.delete(h)):g&&a.get(g)===_&&(i.set(g,n),s.delete(g)),n),async n=>{let o=h?t.get(h)===_:!g||a.get(g)===_;if(!o){let e=await u(h,g);if(e)return e}let c=h?e.get(h):g?i.get(g):void 0;if(!c)throw n;if(o){let e=tt(n);e!==(h?r.get(h):g?s.get(g):void 0)&&(m.error(`[@teacss/config] Error resolving config from the CSS entry:`,n),h?r.set(h,e):g&&s.set(g,e));let t=Array.from(new Set([...c.sources,...Q(n)]));return t.length===c.sources.length?c:{...c,sources:t}}return c});return h?n.set(h,v):g&&o.set(g,v),v}}export{C as buildNamespaces,E as classifyCustomVar,st as createRecoveryConfigLoader,k as customToTheme,Ze as diagnoseCustom,Qe as entryDiscoveryFiles,at as findEntry,Q as getConfigSourcesFromError,O as hasBaseThemeValue,ce as hasTopLevelDirective,ot as loadConfig,I as parseCustomPrelude,L as parseEntry,Ye as resolveEntryConfig,qe as resolvePresets,S as scaleThemeKeys,P as scanCustomBlocks,se as scanQuotedDirectives,N as scanTopLevelAtRules};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teacss/config",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "TeaCSS config loader — discovers the CSS entry and resolves its directives into a config (no teacss.config file).",
|
|
5
5
|
"homepage": "https://css.teasim.com",
|
|
6
6
|
"funding": "https://github.com/sponsors/billgo",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dev": "tsdown --watch"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@teacss/core": "0.5.
|
|
25
|
+
"@teacss/core": "0.5.2",
|
|
26
26
|
"consola": "^3.4.2",
|
|
27
27
|
"jiti": "^2.7.0",
|
|
28
28
|
"tinyglobby": "^0.2.17"
|