@master/css-compiler 2.0.0-beta.99 → 2.0.0-rc.70

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,6 @@
1
+ import type * as LightningCSS from 'lightningcss';
2
+ export type CSSTransform = typeof LightningCSS.transform;
3
+ export declare function setCSSTransform(transformer: CSSTransform): void;
4
+ export declare function getCSSTransform(): typeof LightningCSS.transform;
5
+ export declare function encodeCSS(source: string): Uint8Array<ArrayBuffer>;
6
+ export declare function decodeCSS(code: Uint8Array): string;
@@ -0,0 +1,18 @@
1
+ let transform;
2
+ function setCSSTransform(transformer) {
3
+ transform = transformer;
4
+ }
5
+ function getCSSTransform() {
6
+ if (!transform) {
7
+ throw new Error('@master/css-compiler requires a CSS transform implementation. Use the default Node entry or initialize the browser entry.');
8
+ }
9
+ return transform;
10
+ }
11
+ function encodeCSS(source) {
12
+ return new TextEncoder().encode(source);
13
+ }
14
+ function decodeCSS(code) {
15
+ return new TextDecoder().decode(code);
16
+ }
17
+
18
+ export { decodeCSS, encodeCSS, getCSSTransform, setCSSTransform };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,46 @@
1
- export { default } from './compiler';
2
- export { default as options } from './options';
3
- export type { Options, Source } from './options';
1
+ import type { MasterCSSManifest } from '@master/css-schema/manifest';
2
+ import { type CompileCSSOptions, type CSSReferenceStatement, type CompileCSSFileOptions, type CompileCSSResult, type ResolvedCSSImportGraph } from './core';
3
+ export * from './core';
4
+ export type { CompileCSSFileOptions, CompileCSSOptions, CompileCSSResult, CSSReferenceStatement, ResolvedCSSImportGraph, StandaloneCSSDirectiveStatement, StandaloneMasterDirectiveStatement } from './core';
5
+ export interface InspectCSSResult {
6
+ hasMasterEntryDirective: boolean;
7
+ hasMasterCSSImport: boolean;
8
+ hasMasterEntry: boolean;
9
+ }
10
+ export interface ResolveCSSImportGraphOptions {
11
+ projectDir?: string;
12
+ expandPackageImports?: boolean;
13
+ onReference?: (reference: CSSReferenceStatement, fromFile: string) => void;
14
+ }
15
+ export type CompileCSSManifestOptions = CompileCSSFileOptions & {
16
+ baseManifest?: MasterCSSManifest;
17
+ };
18
+ export type CompileCSSManifestSourceOptions = CompileCSSOptions & {
19
+ baseManifest?: MasterCSSManifest;
20
+ root?: string;
21
+ };
22
+ export interface CompileCSSManifestResult extends Omit<CompileCSSResult, 'manifestInput'> {
23
+ manifest: MasterCSSManifest;
24
+ directives: CompileCSSResult;
25
+ }
26
+ export interface CompileProjectManifestResult extends CompileCSSManifestResult {
27
+ entries: string[];
28
+ }
29
+ export type CompileCSSManifestJSONResult = CompileCSSManifestResult & {
30
+ json: string;
31
+ directives: CompileCSSResult;
32
+ };
33
+ export declare function resolveMasterCSSPackageEntryFile(importSource: string, fromFile?: string, projectDir?: string): string | undefined;
34
+ export declare function inspectCSS(source: string): InspectCSSResult;
35
+ export declare function resolveCSSImportGraph(file: string, options?: ResolveCSSImportGraphOptions): ResolvedCSSImportGraph;
36
+ export declare function resolveMasterCSSPackageImportGraph(projectDir?: string): ResolvedCSSImportGraph;
37
+ export declare function isMasterCSSPackageStyleFile(id: string, projectDir?: string): boolean;
38
+ export declare function compileCSSFile(file: string, options?: CompileCSSFileOptions): CompileCSSResult;
39
+ export declare function createManifestFromCSSResult(result: CompileCSSResult, options?: CompileCSSManifestSourceOptions): CompileCSSManifestResult;
40
+ export declare function compileCSSManifest(source: string, options?: CompileCSSManifestSourceOptions): CompileCSSManifestResult;
41
+ export declare function compileCSSManifestFile(file: string, options?: CompileCSSManifestOptions): CompileCSSManifestResult;
42
+ export declare function compileProjectManifest(entries: string[], options?: CompileCSSManifestOptions): CompileProjectManifestResult;
43
+ export declare function compileCSSManifestJSON(file: string, options?: CompileCSSManifestOptions): CompileCSSManifestJSONResult;
44
+ export declare function compileProjectManifestJSON(entries: string[], options?: CompileCSSManifestOptions): CompileProjectManifestResult & {
45
+ json: string;
46
+ };
package/dist/index.mjs CHANGED
@@ -1,10 +1,394 @@
1
- import G from"upath";var ge={module:"master.css",config:"master.css.{ts,js,mjs,cjs}",sources:[],include:["**/*.{html,js,jsx,ts,tsx,svelte,astro,vue,md,mdx,pug,php}"],exclude:["**/node_modules/**","**/*.d.ts","**/*.test.*","node_modules","master.css.{js,ts,mjs,cjs}","dist","out","README.md"],fixedClasses:[],ignoredClasses:[]},S=ge;import Xe from"@master/css";import{performance as ae}from"perf_hooks";import{semantics as pe}from"@master/css";function A({content:r},{config:e,classes:t}){r=he(r);let s=[...new Set(Object.keys(e.semantics??pe).concat(Object.keys(t)))],n=r.match(/\S+/g)??[],i=new Set;for(let l of n){i.add(N(l,s));let a=U(l);if(a.size)for(let p of a)i.add(N(p,s))}return[...i].filter(l=>l&&!fe(l,s))}var N=(r,e)=>{let t=r,s=r.match(/(?:calc\(.*\)|\d+(?:%|ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmax|vmin|vw|deg|grad|rad|turn|s)?)x(?:calc\(.*\)|\d+(?:%|ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmax|vmin|vw|deg|grad|rad|turn|s)?)/g);return(s?.length?e.concat(s):e).find(n=>t.startsWith(n))?r=j(r,n=>n.replace(/^[^:@~(]*(?<!@>?)=/,"").replace(/(?:[([{\\:#=.]+|["'`].*)$/,"")):r=j(r,n=>n.replace(/^[^:@~(]*(?:["'`]|(?<!@>?)=)/,"").replace(/(?:[([{\\:#=.]+|["'`].*)$/,"")),t===r||!r?r:N(r,e)},D=r=>r.match(/((?<!\\)["'`])(?:\\\1|(?:(?!\1))[\S\s])*(?<!\\)\1/g),W=(r,e)=>(e?.forEach((t,s)=>{r=r.replace(t,`COMPLETE-STRING--${s}--`)}),r),j=(r,e)=>{let t=D(r);return r=W(r,t),r=e(r),t?.forEach((s,n)=>{r=r.replace(`COMPLETE-STRING--${n}--`,s)}),r},U=r=>{let e=new Set,t=/((?<!\\)["'`])((?:\\\1|(?:(?!\1))[\S\s])*)((?<!\\)\1)/g,s;for(;(s=t.exec(r))!==null;){s.index===t.lastIndex&&t.lastIndex++,e.add(s[2]);let n=U(s[2]);if(n.size)for(let i of n)e.add(i)}return e},he=r=>j(r,e=>e.replace(/\/\*(?:(?!\*\/)[\S\s])*\*\//g,"").replace(/<!--(?:(?!-->)[\S\s])*-->/g,"").replace(/<style[^>]*>(?:(?!<\/style>)[\S\s])*<\/style>/g,"").replace(/import.*from\s*COMPLETE-STRING--\d+--/g,"").replace(/import\s*(?:COMPLETE-STRING--\d+--|\([^;\s]*\))/g,"").replace(/require\([^;\s]*\)/g,"")),fe=(r,e)=>{let t=D(r),s=W(r,t),n=/{(.*)}/,i;for(;(i=n.exec(s))!==null;)return i[1].split(";").find(a=>Y(a,e))!==void 0;return Y(s,e)||de(r)},Y=(r,e)=>!r||!r.match(/(?:\S*\{\S*\})|(?:^[\w\-()]+:\S+)|(?:^[\w-]+\(\S+\))|(?:^[@~]\S+$)/)&&!r.match(/^(?:calc\(.*\)|\d+(?:%|ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmax|vmin|vw|deg|grad|rad|turn|s)?)x(?:calc\(.*\)|\d+(?:%|ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmax|vmin|vw|deg|grad|rad|turn|s)?)$/)&&!e.find(t=>r.startsWith(t))||r.match(/\*\*/)||r.match(/:\[/)||r.match(/\$\{/)||r.match(/\{\{/)||r.match(/\(\{[^}]*\}/)||r.match(/<\w+>|<\/\w+>/)||r.match(/;$/)||r.match(/^\w+:\/\//)||r.match(/^@(?:ts-[^\s]+|charset|import|namespace|media|supports|document|page|font-face|keyframes|counter-style|font-feature-values|property|layer)$/)||r.match(/^~\/.+.\w+$/)||r.match(/function\(|\(.*\)=>/),de=r=>{let e=[],t;for(let s=0;s<r.length;s++)switch(r[s]){case"(":case"[":case"{":e.push(r[s]);break;case")":case"]":case"}":if(t=e.pop(),r[s]===")"&&t!=="("||r[s]==="]"&&t!=="["||r[s]==="}"&&t!=="{")return!0;break}return e.length>0};import er from"fs";import ce from"fast-glob";import L from"minimatch";import rr from"techor";import _ from"node:process";import Ne from"node:os";import J from"node:tty";var me=Object.create,ne=Object.defineProperty,be=Object.getOwnPropertyDescriptor,ve=Object.getOwnPropertyNames,ye=Object.getPrototypeOf,xe=Object.prototype.hasOwnProperty,$e=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Oe=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of ve(e))!xe.call(r,n)&&n!==t&&ne(r,n,{get:()=>e[n],enumerable:!(s=be(e,n))||s.enumerable});return r},we=(r,e,t)=>(t=r!=null?me(ye(r)):{},Oe(e||!r||!r.__esModule?ne(t,"default",{value:r,enumerable:!0}):t,r)),Ce=$e((r,e)=>{"use strict";function t(s){var n=void 0;typeof s=="string"?n=[s]:n=s.raw;for(var i="",l=0;l<n.length;l++)i+=n[l].replace(/\\\n[ \t]*/g,"").replace(/\\`/g,"`"),l<(arguments.length<=1?0:arguments.length-1)&&(i+=arguments.length<=l+1?void 0:arguments[l+1]);var a=i.split(`
2
- `),p=null;return a.forEach(function(u){var f=u.match(/^(\s+)\S+/);if(f){var y=f[1].length;p?p=Math.min(p,y):p=y}}),p!==null&&(i=a.map(function(u){return u[0]===" "?u.slice(p):u}).join(`
3
- `)),i=i.trim(),i.replace(/\\n/g,`
4
- `)}typeof e<"u"&&(e.exports=t)}),m=(r,e)=>{if(!r)throw new Error(e)},Te=r=>{let e={joined:!0,spacerNoNeighbour:" ",spacerNeighbour:"\u2502 ",keyNoNeighbour:"\u2514\u2500 ",keyNeighbour:"\u251C\u2500 ",separator:": ",renderFn:t=>["boolean","string","number"].includes(typeof t)?t:void 0,sortFn:null,breakCircularWith:" (circular ref.)",...r};return m(Object.keys(e).length===9,"Unexpected Option(s) provided"),m(typeof e.joined=="boolean",'Option "joined" has invalid format'),m(typeof e.spacerNoNeighbour=="string",'Option "spacerNoNeighbour" has invalid format'),m(typeof e.spacerNeighbour=="string",'Option "spacerNeighbour" has invalid format'),m(typeof e.keyNoNeighbour=="string",'Option "keyNoNeighbour" has invalid format'),m(typeof e.keyNeighbour=="string",'Option "keyNeighbour" has invalid format'),m(typeof e.separator=="string",'Option "separator" has invalid format'),m(typeof e.renderFn=="function",'Option "renderFn" has invalid format'),m(typeof e.sortFn=="function"||e.sortFn===null,'Option "sortFn" has invalid format'),m(typeof e.breakCircularWith=="string"||e.breakCircularWith===null,'Option "breakCircularWith" has invalid format'),e},ie=(r,e={})=>{let t=Te(e),s=[],n=t.renderFn(r);n!==void 0&&s.push(String(n));let i=u=>t.sortFn===null?u.reverse():u.sort((f,y)=>t.sortFn(y,f)),l=[],a=i(Object.keys(r)).map(u=>[u]),p=[r];for(;a.length!==0;){let u=a.pop(),f=p[u.length-1][u[u.length-1]],y=t.breakCircularWith!==null&&p.includes(f);l[u.length-1]=a.length!==0&&a[a.length-1].length===u.length;let ue=t.renderFn(f);s.push([l.slice(0,u.length-1).map(k=>k?t.spacerNeighbour:t.spacerNoNeighbour).join(""),l[u.length-1]?t.keyNeighbour:t.keyNoNeighbour,u[u.length-1],ue===void 0?"":`${t.separator}${f}`,y?t.breakCircularWith:""].join("")),f instanceof Object&&!Array.isArray(f)&&!y&&(a.push(...i(Object.keys(f)).map(k=>u.concat(k))),p[u.length]=f)}return t.joined===!0?s.join(`
5
- `):s},V=(r=0)=>e=>`\x1B[${e+r}m`,H=(r=0)=>e=>`\x1B[${38+r};5;${e}m`,q=(r=0)=>(e,t,s)=>`\x1B[${38+r};2;${e};${t};${s}m`,c={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},lr=Object.keys(c.modifier),Re=Object.keys(c.color),Ee=Object.keys(c.bgColor),ar=[...Re,...Ee];function ke(){let r=new Map;for(let[e,t]of Object.entries(c)){for(let[s,n]of Object.entries(t))c[s]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},t[s]=c[s],r.set(n[0],n[1]);Object.defineProperty(c,e,{value:t,enumerable:!1})}return Object.defineProperty(c,"codes",{value:r,enumerable:!1}),c.color.close="\x1B[39m",c.bgColor.close="\x1B[49m",c.color.ansi=V(),c.color.ansi256=H(),c.color.ansi16m=q(),c.bgColor.ansi=V(10),c.bgColor.ansi256=H(10),c.bgColor.ansi16m=q(10),Object.defineProperties(c,{rgbToAnsi256:{value(e,t,s){return e===t&&t===s?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(s/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[s]=t;s.length===3&&(s=[...s].map(i=>i+i).join(""));let n=Number.parseInt(s,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>c.rgbToAnsi256(...c.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,s,n;if(e>=232)t=((e-232)*10+8)/255,s=t,n=t;else{e-=16;let a=e%36;t=Math.floor(e/36)/5,s=Math.floor(a/6)/5,n=a%6/5}let i=Math.max(t,s,n)*2;if(i===0)return 30;let l=30+(Math.round(n)<<2|Math.round(s)<<1|Math.round(t));return i===2&&(l+=60),l},enumerable:!1},rgbToAnsi:{value:(e,t,s)=>c.ansi256ToAnsi(c.rgbToAnsi256(e,t,s)),enumerable:!1},hexToAnsi:{value:e=>c.ansi256ToAnsi(c.hexToAnsi256(e)),enumerable:!1}}),c}var Se=ke(),b=Se;function d(r,e=globalThis.Deno?globalThis.Deno.args:_.argv){let t=r.startsWith("-")?"":r.length===1?"-":"--",s=e.indexOf(t+r),n=e.indexOf("--");return s!==-1&&(n===-1||s<n)}var{env:g}=_,T;d("no-color")||d("no-colors")||d("color=false")||d("color=never")?T=0:(d("color")||d("colors")||d("color=true")||d("color=always"))&&(T=1);function je(){if("FORCE_COLOR"in g)return g.FORCE_COLOR==="true"?1:g.FORCE_COLOR==="false"?0:g.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(g.FORCE_COLOR,10),3)}function Ae(r){return r===0?!1:{level:r,hasBasic:!0,has256:r>=2,has16m:r>=3}}function Be(r,{streamIsTTY:e,sniffFlags:t=!0}={}){let s=je();s!==void 0&&(T=s);let n=t?T:s;if(n===0)return 0;if(t){if(d("color=16m")||d("color=full")||d("color=truecolor"))return 3;if(d("color=256"))return 2}if("TF_BUILD"in g&&"AGENT_NAME"in g)return 1;if(r&&!e&&n===void 0)return 0;let i=n||0;if(g.TERM==="dumb")return i;if(_.platform==="win32"){let l=Ne.release().split(".");return Number(l[0])>=10&&Number(l[2])>=10586?Number(l[2])>=14931?3:2:1}if("CI"in g)return"GITHUB_ACTIONS"in g?3:["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(l=>l in g)||g.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in g)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(g.TEAMCITY_VERSION)?1:0;if(g.COLORTERM==="truecolor"||g.TERM==="xterm-kitty")return 3;if("TERM_PROGRAM"in g){let l=Number.parseInt((g.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(g.TERM_PROGRAM){case"iTerm.app":return l>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(g.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(g.TERM)||"COLORTERM"in g?1:i}function K(r,e={}){let t=Be(r,{streamIsTTY:r&&r.isTTY,...e});return Ae(t)}var Me={stdout:K({isTTY:J.isatty(1)}),stderr:K({isTTY:J.isatty(2)})},Pe=Me;function Ie(r,e,t){let s=r.indexOf(e);if(s===-1)return r;let n=e.length,i=0,l="";do l+=r.slice(i,s)+e+t,i=s+n,s=r.indexOf(e,i);while(s!==-1);return l+=r.slice(i),l}function Fe(r,e,t,s){let n=0,i="";do{let l=r[s-1]==="\r";i+=r.slice(n,l?s-1:s)+e+(l?`\r
6
- `:`
7
- `)+t,n=s+1,s=r.indexOf(`
8
- `,n)}while(s!==-1);return i+=r.slice(n),i}var{stdout:z,stderr:Z}=Pe,P=Symbol("GENERATOR"),x=Symbol("STYLER"),w=Symbol("IS_EMPTY"),Q=["ansi","ansi","ansi256","ansi16m"],$=Object.create(null),_e=(r,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let t=z?z.level:0;r.level=e.level===void 0?t:e.level},Ge=r=>{let e=(...t)=>t.join(" ");return _e(e,r),Object.setPrototypeOf(e,C.prototype),e};function C(r){return Ge(r)}Object.setPrototypeOf(C.prototype,Function.prototype);for(let[r,e]of Object.entries(b))$[r]={get(){let t=R(this,F(e.open,e.close,this[x]),this[w]);return Object.defineProperty(this,r,{value:t}),t}};$.visible={get(){let r=R(this,this[x],!0);return Object.defineProperty(this,"visible",{value:r}),r}};var I=(r,e,t,...s)=>r==="rgb"?e==="ansi16m"?b[t].ansi16m(...s):e==="ansi256"?b[t].ansi256(b.rgbToAnsi256(...s)):b[t].ansi(b.rgbToAnsi(...s)):r==="hex"?I("rgb",e,t,...b.hexToRgb(...s)):b[t][r](...s),Le=["rgb","hex","ansi256"];for(let r of Le){$[r]={get(){let{level:t}=this;return function(...s){let n=F(I(r,Q[t],"color",...s),b.color.close,this[x]);return R(this,n,this[w])}}};let e="bg"+r[0].toUpperCase()+r.slice(1);$[e]={get(){let{level:t}=this;return function(...s){let n=F(I(r,Q[t],"bgColor",...s),b.bgColor.close,this[x]);return R(this,n,this[w])}}}}var Ye=Object.defineProperties(()=>{},{...$,level:{enumerable:!0,get(){return this[P].level},set(r){this[P].level=r}}}),F=(r,e,t)=>{let s,n;return t===void 0?(s=r,n=e):(s=t.openAll+r,n=e+t.closeAll),{open:r,close:e,openAll:s,closeAll:n,parent:t}},R=(r,e,t)=>{let s=(...n)=>De(s,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(s,Ye),s[P]=r,s[x]=e,s[w]=t,s},De=(r,e)=>{if(r.level<=0||!e)return r[w]?"":e;let t=r[x];if(t===void 0)return e;let{openAll:s,closeAll:n}=t;if(e.includes("\x1B"))for(;t!==void 0;)e=Ie(e,t.close,t.open),t=t.parent;let i=e.indexOf(`
9
- `);return i!==-1&&(e=Fe(e,n,s,i)),s+e+n};Object.defineProperties(C.prototype,$);var We=C(),pr=C({level:Z?Z.level:0}),o=We;function v(r){return r.split(" ").map(e=>e.replace(/^(\d*\.?\d*)$/g,`${o.blue("$1")}`).replace(/^(\d*\.?\d*)(YB|ZB|EB|PB|TB|GB|MB|KB|B|mb|kb|bit|zs|as|fs|ps|ns|µs|ms|s|m|h|d|m|y)$/g,`${o.cyan("$1")}${o.magenta("$2")}`).replace(/^((?:[0-1]?[0-9]|[2][0-3]):[0-5][0-9]:[0-5][0-9] (?:AM|PM)?)$/g,`${o.dim("$1")}`).replace(/^\[(.*?)\]$/g,`${o.dim("[")}${o.magenta("$1")}${o.dim("]")}`).replace(/^`(.*?)`$/g,`${o.dim("`")}$1${o.dim("`")}`).replace(/^\((.*?)\)$/g,`${o.dim("(")}$1${o.dim(")")}`).replace(/^<(.*?)>$/g,`${o.dim("<")}${o.gray("$1")}${o.dim(">")}`).replace(/->/g,o.dim("\u2192")).replace(/<-/g,o.dim("\u2190")).replace(/^\$t$/g,`${o.dim(new Date().toLocaleTimeString())}`).replace(/^\*\*(.*?)\*\*$/g,`${o.bold.white("$1")}`).replace(/^~~(.*?)~~$/g,`${o.strikethrough("$1")}`).replace(/^__(.*?)__$/g,`${o.underline("$1")}`).replace(/^\.\.(.*?)\.\.$/g,`${o.dim("$1")}`).replace(/^!!(.*?)!!$/g,`${o.yellow("$1")}`).replace(/^\*(.*?)\*$/g,`${o.italic("$1")}`).replace(/^_(.*?)_$/g,`${o.italic("$1")}`).replace(/^\+(.*?)\+$/g,`${o.green("$1")}`).replace(/^-(.*?)-$/g,`${o.red("$1")}`)).join(" ")}function h(r,e){let t="";if(Array.isArray(r))for(let s=0;s<r.length;s++)t+=B(r[s])+B(e[s]);else t=[r,...e].map(s=>B(s)).join(" ");return v(t)}var B=r=>r?Array.isArray(r)?r.map(e=>{switch(typeof e){case"string":return`'${o.yellow(e)}'`;case"number":case"boolean":return o.blue(e);default:return e}}).join(o.gray(", ")):r:"",X=(r,...e)=>{let t=o.green("+")+" "+h(r,e);return console.log(t),t},ee=(r,...e)=>{let t=o.bgRed.bold.white(" \u{1D5EB} ERROR ")+" "+h(r,e);return console.log(t),t},Ue=(r,...e)=>{let t=o.bgYellow.bold.white(" \u26A0\uFE0F CONFLICT ")+" "+o.yellow(h(r,e));return console.log(t),t},Ve=(r,...e)=>{let t=o.green("\u2713 ")+h(r,e);return console.log(t),t},M=(r,...e)=>{let t=o.red("-")+" "+h(r,e);return console.log(t),t},re=(r,...e)=>{let t=o.green("\u25CB ")+h(r,e);return console.log(t),t},te=(r,...e)=>{let t=o.red("\u2717 ")+h(r,e);return console.log(t),t},se=(r,...e)=>{let t=v("$t ")+h(r,e);return console.log(t),t},He=(r,...e)=>{let t=o.green("\u23FA Success ")+h(r,e);return console.log(t),t},qe=(r,...e)=>{let t=o.yellow("\u23FA Warn ")+h(r,e);return console.log(t),t},Je=(r,...e)=>{let t=o.bgGreen.bold.white(" \u2713 PASS ")+" "+h(r,e);return console.log(t),t},Ke=r=>{console.log(ie(oe(JSON.parse(JSON.stringify(r))),{spacerNeighbour:v("..\u2502..")+" ",keyNoNeighbour:v("..\u2514\u2500..")+" ",keyNeighbour:v("..\u251C\u2500..")+" ",separator:v("..:..")+" "}))};function oe(r){for(let e in r){let t=r[e];Array.isArray(t)?r[e]=t.map(s=>v(`**${s}**`)).join(v("..,..")):typeof t=="object"?oe(t):r[e]=v(`**${t}**`)}return r}var ze=(r,...e)=>{let t=o.red("\u23FA Fail ")+h(r,e);return console.log(t),t},Ze=we(Ce());function Qe(r){let{message:e,stack:t}=typeof r=="string"?new Error(r):r,s={};return(0,Ze.default)(t.replace(e,"").replace(/^Error: /,"")).split(`
10
- `).forEach(n=>{s[n.split(" ").map(i=>i.replace(/^\((.+)\)$/,`${o.cyan("$1")}`).replace(/\./g,`${o.dim(".")}`).replace(/^at$/,l=>o.dim(l))).join(" ")]=null}),{message:e.trim().replace(/Error: /g,""),stackTree:s}}var le=(r,...e)=>{if(r instanceof Error){let{message:t,stackTree:s}=Qe(r);return console.log(""),console.log(o.bgRed.bold.white(" \u{1D5EB} ERROR ")+" "+o.bold.red(t)),console.log(ie(s,{spacerNeighbour:o.redBright.dim("\u2502\u2000\u2000"),keyNoNeighbour:o.redBright.dim("\u2514\u2500\u2000"),keyNeighbour:o.redBright.dim("\u251C\u2500 "),separator:o.redBright.dim(":\u2000")})),console.log(""),t}else{let t=h(r,e);return console.log(t),t}};Object.assign(le,{a:X,add:X,d:M,del:M,delete:M,o:re,valid:re,x:te,invalid:te,i:se,info:se,e:ee,error:ee,success:He,fail:ze,warn:qe,pass:Je,conflict:Ue,ok:Ve,tree:Ke,paint:v});var O=le;import tr from"stylelint";var E=class extends rr{constructor(e){super(S,e)}css;extractions=new Set;get resolvedModuleId(){return"\0"+this.options.module}get moduleHMREvent(){return`HMR:${this.options.module}`}async init(){return this.extractions.clear(),console.log(""),this.css=new Xe({config:this.readConfig()}),await this.compile(),this}async compile(){if(this.options.fixedClasses?.length)for(let e of this.options.fixedClasses)this.css.insert(e);return await Promise.all(this.sources.map(async e=>{let t=er.readFileSync(G.resolve(this.options.cwd,e),{encoding:"utf-8"}).toString();await this.insert(e,t)})),this}extract(e,t){if(!e||!t||!this.checkSourcePath(e))return[];let s=[];for(let n of A({content:t,name:e},this.css))this.extractions.has(n)||(this.extractions.add(n),s.push(n));return s}async insert(e,t){let s=this.extract(e,t);if(!s.length)return!1;let n=ae.now(),i=[];await Promise.all(s.map(async a=>{let p=await this.createRules(a);p.length&&(this.css.insertRules(p),i.push(a))}));let l=Math.round((ae.now()-n)*100)/100;if(s.length&&(console.log(""),O`**${G.relative(this.options.cwd,e)}** ..${G.resolve(this.options.cwd,e)}..`,O`[extract] ${s.length} potential`),this.css.rules.length){let a=i.filter(p=>!s.includes(p));a.length&&O`[exclude] ${a.length} unknow ${a}`,O`[compile] +${i.length}+ valid inserted ${o.gray("in")} ${l}ms ${i}`,O`[virtual] ${this.css.rules.length} total ${o.gray("in")} ${this.options.module}`}return this.options.ignoredClasses?.length&&(s=s.filter(a=>{for(let p of this.options.ignoredClasses)if(typeof p=="string"){if(p===a)return!1}else if(p.test(a))return!1;return!0})),!0}async createRules(e){return(await Promise.all(this.css.create(e).map(async t=>(await tr.lint({code:t.text,cache:!1,config:{rules:{"color-no-invalid-hex":!0,"named-grid-areas-no-invalid":!0,"at-rule-no-unknown":!0,"function-no-unknown":!0,"media-feature-name-no-unknown":!0,"property-no-unknown":!0,"selector-pseudo-class-no-unknown":!0,"selector-pseudo-element-no-unknown":!0,"selector-type-no-unknown":!0,"unit-no-unknown":!0}}})).errored?null:t))).filter(t=>t)}get sources(){let{include:e,exclude:t,sources:s}=this.options,n=ce.sync(e,{cwd:this.options.cwd,ignore:t});return s?.length&&n.push(...ce.sync(s,{cwd:this.options.cwd})),n}checkSourcePath(e){let{include:t,exclude:s,sources:n}=this.options;for(let i of n)if(L(e,i))return!0;for(let i of t)if(!L(e,i))return!1;for(let i of s)if(L(e,i))return!1;return!0}get config(){return this.css.config}};export{E as default,S as options};
1
+ import { existsSync, realpathSync, readFileSync } from 'node:fs';
2
+ import { createRequire } from 'node:module';
3
+ import { isAbsolute, resolve, extname, dirname } from 'node:path';
4
+ import { transform } from 'lightningcss';
5
+ import { stringifyMasterCSSManifestJSON } from '@master/css-schema/manifest-json';
6
+ import { createMasterCSSManifest } from './master-css-manifest.mjs';
7
+ import lowerCSSDirectives from './lower-css-directives.mjs';
8
+ import { compileCSS, findCSSReferenceStatements, removeCSSReferenceStatements } from './core.mjs';
9
+ export { maskManagedPatternEntryNames, parseDirectives } from './core.mjs';
10
+ import { removeCSSImportStatements, findCSSImportStatements, replaceCSSImportStatements } from './lexer/imports.mjs';
11
+ import { mergeCSSDirectiveExtractionPolicy, findStandaloneMasterDirectiveStatements, createCSSDirectiveExtractionPolicy } from './lexer/standalone-master.mjs';
12
+ export { collectStandaloneCSSDirectiveExtractionPolicy, findStandaloneCSSDirectiveStatements, removeStandaloneCSSDirectives, removeStandaloneMasterDirectives } from './lexer/standalone-master.mjs';
13
+ import { setCSSTransform } from './css-transform.mjs';
14
+
15
+ setCSSTransform(transform);
16
+ const require$1 = createRequire(import.meta.url);
17
+ const MASTER_CSS_PACKAGE_ID = '@master/css';
18
+ const MASTER_CSS_PACKAGE_IDS = new Set([
19
+ MASTER_CSS_PACKAGE_ID,
20
+ '@master/css-preset'
21
+ ]);
22
+ function isExpandableImportSource(source) {
23
+ return (source.startsWith('./') || source.startsWith('../')) && extname(source) === '.css';
24
+ }
25
+ function readJSONFile(file) {
26
+ return JSON.parse(readFileSync(file, 'utf-8'));
27
+ }
28
+ function findPackageRoot(entryFile, packageName) {
29
+ let directory = dirname(entryFile);
30
+ while(true){
31
+ const packageJSONFile = resolve(directory, 'package.json');
32
+ if (existsSync(packageJSONFile)) {
33
+ try {
34
+ const packageJSON = readJSONFile(packageJSONFile);
35
+ if (packageJSON.name === packageName) {
36
+ return {
37
+ directory,
38
+ packageJSON
39
+ };
40
+ }
41
+ } catch {
42
+ // Keep walking up in case this is not the package root.
43
+ }
44
+ }
45
+ const parentDirectory = dirname(directory);
46
+ if (parentDirectory === directory) return;
47
+ directory = parentDirectory;
48
+ }
49
+ }
50
+ function getPackageStyleEntry(packageJSON) {
51
+ if (typeof packageJSON.style === 'string') return packageJSON.style;
52
+ if (!packageJSON.exports || typeof packageJSON.exports !== 'object') return;
53
+ const rootExport = packageJSON.exports['.'];
54
+ if (!rootExport || typeof rootExport !== 'object') return;
55
+ const styleExport = rootExport.style;
56
+ return typeof styleExport === 'string' ? styleExport : undefined;
57
+ }
58
+ function createProjectRequire(fromFile, projectDir) {
59
+ return createRequire(resolve(projectDir || dirname(fromFile), 'package.json'));
60
+ }
61
+ function resolveMasterCSSPackageEntryFile(importSource, fromFile = process.cwd(), projectDir) {
62
+ if (!MASTER_CSS_PACKAGE_IDS.has(importSource)) return;
63
+ const resolver = createProjectRequire(fromFile, projectDir);
64
+ let packageEntryFile;
65
+ try {
66
+ packageEntryFile = resolver.resolve(importSource);
67
+ } catch {
68
+ packageEntryFile = require$1.resolve(importSource);
69
+ }
70
+ const packageRoot = findPackageRoot(packageEntryFile, importSource);
71
+ if (!packageRoot) return;
72
+ const styleEntry = getPackageStyleEntry(packageRoot.packageJSON);
73
+ if (!styleEntry) return;
74
+ const styleFile = resolve(packageRoot.directory, styleEntry);
75
+ if (!existsSync(styleFile)) {
76
+ throw new Error(`${importSource} CSS style entry was not found: ${styleFile}`);
77
+ }
78
+ return styleFile;
79
+ }
80
+ function inspectCSS(source) {
81
+ const hasMasterEntryDirective = findStandaloneMasterDirectiveStatements(source).some((statement)=>statement.name === '');
82
+ const hasMasterCSSImport = findCSSImportStatements(source).some((statement)=>statement.source === MASTER_CSS_PACKAGE_ID);
83
+ return {
84
+ hasMasterEntryDirective,
85
+ hasMasterCSSImport,
86
+ hasMasterEntry: hasMasterEntryDirective || hasMasterCSSImport
87
+ };
88
+ }
89
+ function resolveCSSImportGraphFile(file, dependencies, dependencySet, stack, options = {}) {
90
+ const absoluteFile = resolve(file);
91
+ if (stack.includes(absoluteFile)) {
92
+ throw new Error(`Circular CSS import: ${[
93
+ ...stack,
94
+ absoluteFile
95
+ ].join(' -> ')}`);
96
+ }
97
+ if (!existsSync(absoluteFile)) {
98
+ throw new Error(`CSS manifest entry file not found: ${absoluteFile}`);
99
+ }
100
+ if (!dependencySet.has(absoluteFile)) {
101
+ dependencySet.add(absoluteFile);
102
+ dependencies.push(absoluteFile);
103
+ }
104
+ const source = readFileSync(absoluteFile, 'utf-8');
105
+ const references = findCSSReferenceStatements(source, absoluteFile);
106
+ for (const reference of references){
107
+ options.onReference?.(reference, absoluteFile);
108
+ }
109
+ const sourceWithoutReferences = removeCSSReferenceStatements(source, absoluteFile);
110
+ const imports = findCSSImportStatements(sourceWithoutReferences, absoluteFile);
111
+ if (!imports.length) return sourceWithoutReferences;
112
+ const preservedImports = [];
113
+ const resolvedSource = replaceCSSImportStatements(sourceWithoutReferences, absoluteFile, (importStatement)=>{
114
+ const importSource = importStatement.source;
115
+ const packageFile = options.expandPackageImports !== false ? resolveMasterCSSPackageEntryFile(importSource, absoluteFile, options.projectDir) : undefined;
116
+ if (packageFile || isExpandableImportSource(importSource)) {
117
+ const importedFile = packageFile || resolve(dirname(absoluteFile), importSource);
118
+ return resolveCSSImportGraphFile(importedFile, dependencies, dependencySet, [
119
+ ...stack,
120
+ absoluteFile
121
+ ], options);
122
+ }
123
+ preservedImports.push(importStatement.statement.trim());
124
+ return '';
125
+ });
126
+ if (!preservedImports.length) return resolvedSource;
127
+ const firstImportStart = imports[0].start;
128
+ const afterImports = resolvedSource.slice(firstImportStart);
129
+ return resolvedSource.slice(0, firstImportStart) + preservedImports.join('\n') + (afterImports ? '\n' : '') + afterImports;
130
+ }
131
+ function resolveCSSImportGraph(file, options = {}) {
132
+ const dependencies = [];
133
+ const references = [];
134
+ const source = resolveCSSImportGraphFile(file, dependencies, new Set(), [], {
135
+ ...options,
136
+ onReference (reference, fromFile) {
137
+ references.push(reference);
138
+ options.onReference?.(reference, fromFile);
139
+ }
140
+ });
141
+ return {
142
+ source,
143
+ dependencies,
144
+ ...references.length ? {
145
+ references
146
+ } : {}
147
+ };
148
+ }
149
+ function resolveMasterCSSPackageImportGraph(projectDir) {
150
+ const entry = resolveMasterCSSPackageEntryFile(MASTER_CSS_PACKAGE_ID, projectDir || process.cwd(), projectDir);
151
+ if (!entry) {
152
+ throw new Error(`Cannot resolve ${MASTER_CSS_PACKAGE_ID} CSS entry.`);
153
+ }
154
+ return resolveCSSImportGraph(entry, {
155
+ projectDir
156
+ });
157
+ }
158
+ function stripRequest(id) {
159
+ return id.replace(/[?#].*$/, '');
160
+ }
161
+ function resolveComparablePath(file) {
162
+ const filename = resolve(file);
163
+ try {
164
+ return realpathSync(filename);
165
+ } catch {
166
+ return filename;
167
+ }
168
+ }
169
+ function isMasterCSSPackageStyleFile(id, projectDir) {
170
+ const filename = resolveComparablePath(stripRequest(id));
171
+ if (extname(filename) !== '.css') return false;
172
+ try {
173
+ return resolveMasterCSSPackageImportGraph(projectDir).dependencies.some((dependency)=>{
174
+ return resolveComparablePath(dependency) === filename;
175
+ });
176
+ } catch {
177
+ return false;
178
+ }
179
+ }
180
+ function compileCSSFile(file, options = {}) {
181
+ const { root, ...compileOptions } = options;
182
+ const absoluteFile = isAbsolute(file) ? file : resolve(root || '', file);
183
+ const graph = resolveCSSImportGraph(absoluteFile, {
184
+ projectDir: root
185
+ });
186
+ const source = compileOptions.preserveNativeCSS === false ? removeCSSImportStatements(graph.source, absoluteFile) : graph.source;
187
+ const result = compileCSS(source, {
188
+ ...compileOptions,
189
+ from: absoluteFile
190
+ });
191
+ return {
192
+ ...result,
193
+ dependencies: graph.dependencies,
194
+ ...graph.references?.length ? {
195
+ references: graph.references
196
+ } : {}
197
+ };
198
+ }
199
+ function addUnique(target, values) {
200
+ if (!values) return;
201
+ for (const value of values){
202
+ if (!target.includes(value)) target.push(value);
203
+ }
204
+ }
205
+ function resolveCSSReferenceFile(reference, options = {}) {
206
+ const fromFile = reference.file ? isAbsolute(reference.file) ? reference.file : resolve(options.root || '', reference.file) : resolve(options.root || process.cwd(), 'master.css');
207
+ const packageFile = resolveMasterCSSPackageEntryFile(reference.source, fromFile, options.root);
208
+ if (packageFile) return packageFile;
209
+ if (isExpandableImportSource(reference.source)) return resolve(dirname(fromFile), reference.source);
210
+ throw new Error(`@reference only supports relative CSS files or Master CSS package entries: ${reference.source}`);
211
+ }
212
+ function normalizeReferenceStack(stack) {
213
+ return (stack || []).map((file)=>resolveComparablePath(file));
214
+ }
215
+ function resolveCSSReferenceContext(references, options = {}) {
216
+ const dependencies = [];
217
+ const warnings = [];
218
+ let manifest = options.baseManifest;
219
+ let hasReferences = false;
220
+ for (const reference of references || []){
221
+ const referenceFile = resolveCSSReferenceFile(reference, options);
222
+ const comparableReferenceFile = resolveComparablePath(referenceFile);
223
+ const stack = normalizeReferenceStack(options.referenceStack);
224
+ if (stack.includes(comparableReferenceFile)) {
225
+ throw new Error(`Circular CSS reference: ${[
226
+ ...options.referenceStack || [],
227
+ referenceFile
228
+ ].join(' -> ')}`);
229
+ }
230
+ const result = compileCSSManifestFileInternal(referenceFile, {
231
+ ...options,
232
+ baseManifest: manifest,
233
+ preserveNativeCSS: false,
234
+ referenceStack: options.referenceStack
235
+ });
236
+ hasReferences = true;
237
+ manifest = result.manifest;
238
+ addUnique(dependencies, result.dependencies);
239
+ addUnique(warnings, result.warnings);
240
+ }
241
+ return {
242
+ dependencies,
243
+ warnings,
244
+ ...hasReferences ? {
245
+ manifest
246
+ } : {}
247
+ };
248
+ }
249
+ function toCompileCSSManifestResult(result, options = {}) {
250
+ const { manifestInput: _directiveManifestInput, ...directiveData } = result;
251
+ const referenceContext = resolveCSSReferenceContext(result.references, options);
252
+ const lowerResult = lowerCSSDirectives(result, {
253
+ baseManifest: options.baseManifest,
254
+ resolutionManifest: referenceContext.manifest,
255
+ onWarning: options.onWarning
256
+ });
257
+ const dependencies = [];
258
+ const warnings = [];
259
+ addUnique(dependencies, result.dependencies);
260
+ addUnique(dependencies, referenceContext.dependencies);
261
+ addUnique(warnings, referenceContext.warnings);
262
+ addUnique(warnings, lowerResult.warnings);
263
+ const generatedCSS = lowerResult.generatedCSS || '';
264
+ const css = [
265
+ result.nativeCSS,
266
+ generatedCSS
267
+ ].filter(Boolean).join('\n');
268
+ return {
269
+ ...directiveData,
270
+ dependencies,
271
+ manifest: lowerResult.manifest,
272
+ warnings,
273
+ generatedCSS,
274
+ css,
275
+ directives: result
276
+ };
277
+ }
278
+ function createManifestFromCSSResult(result, options = {}) {
279
+ return toCompileCSSManifestResult(result, options);
280
+ }
281
+ function compileCSSManifest(source, options = {}) {
282
+ const from = options.from ? stripRequest(options.from) : undefined;
283
+ const fromFile = from ? isAbsolute(from) ? from : resolve(options.root || '', from) : undefined;
284
+ const result = compileCSS(source, {
285
+ ...options,
286
+ ...fromFile ? {
287
+ from: fromFile
288
+ } : {}
289
+ });
290
+ return toCompileCSSManifestResult(result, {
291
+ ...options,
292
+ ...fromFile ? {
293
+ from: fromFile,
294
+ referenceStack: [
295
+ ...options.referenceStack || [],
296
+ fromFile
297
+ ]
298
+ } : {}
299
+ });
300
+ }
301
+ function compileCSSManifestFileInternal(file, options = {}) {
302
+ const absoluteFile = isAbsolute(file) ? file : resolve(options.root || '', file);
303
+ const result = compileCSSFile(file, {
304
+ ...options,
305
+ preserveNativeCSS: options.preserveNativeCSS ?? false
306
+ });
307
+ return toCompileCSSManifestResult(result, {
308
+ ...options,
309
+ from: absoluteFile,
310
+ referenceStack: [
311
+ ...options.referenceStack || [],
312
+ absoluteFile
313
+ ]
314
+ });
315
+ }
316
+ function compileCSSManifestFile(file, options = {}) {
317
+ return compileCSSManifestFileInternal(file, options);
318
+ }
319
+ function compileProjectManifest(entries, options = {}) {
320
+ const dependencies = [];
321
+ let extractionPolicy = createCSSDirectiveExtractionPolicy();
322
+ const classNames = [];
323
+ const nativeClassNames = [];
324
+ const nativeCSS = [];
325
+ const css = [];
326
+ const generatedCSS = [];
327
+ const warnings = [];
328
+ let directives = {
329
+ manifestInput: {},
330
+ extractionPolicy: createCSSDirectiveExtractionPolicy(),
331
+ classNames: [],
332
+ nativeClassNames: [],
333
+ nativeCSS: '',
334
+ css: '',
335
+ generatedCSS: '',
336
+ warnings: [],
337
+ dependencies: []
338
+ };
339
+ let manifest = options.baseManifest;
340
+ for (const entry of entries){
341
+ const result = compileCSSFile(entry, {
342
+ ...options,
343
+ preserveNativeCSS: options.preserveNativeCSS ?? false
344
+ });
345
+ directives = result;
346
+ extractionPolicy = mergeCSSDirectiveExtractionPolicy(extractionPolicy, result.extractionPolicy);
347
+ addUnique(dependencies, result.dependencies);
348
+ addUnique(classNames, result.classNames);
349
+ addUnique(nativeClassNames, result.nativeClassNames);
350
+ addUnique(warnings, result.warnings);
351
+ const manifestResult = toCompileCSSManifestResult(result, {
352
+ ...options,
353
+ baseManifest: manifest,
354
+ from: entry,
355
+ referenceStack: [
356
+ isAbsolute(entry) ? entry : resolve(options.root || '', entry)
357
+ ]
358
+ });
359
+ manifest = manifestResult.manifest;
360
+ addUnique(dependencies, manifestResult.dependencies);
361
+ addUnique(warnings, manifestResult.warnings);
362
+ const entryGeneratedCSS = manifestResult.generatedCSS || '';
363
+ if (result.nativeCSS) nativeCSS.push(result.nativeCSS);
364
+ if (entryGeneratedCSS) generatedCSS.push(entryGeneratedCSS);
365
+ if (manifestResult.css) css.push(manifestResult.css);
366
+ }
367
+ return {
368
+ entries,
369
+ manifest: manifest || createMasterCSSManifest(),
370
+ dependencies,
371
+ extractionPolicy,
372
+ classNames,
373
+ nativeClassNames,
374
+ nativeCSS: nativeCSS.join('\n'),
375
+ css: css.join('\n'),
376
+ generatedCSS: generatedCSS.join('\n'),
377
+ warnings,
378
+ directives
379
+ };
380
+ }
381
+ function toManifestJSONResult(result) {
382
+ return {
383
+ ...result,
384
+ json: stringifyMasterCSSManifestJSON(result.manifest)
385
+ };
386
+ }
387
+ function compileCSSManifestJSON(file, options = {}) {
388
+ return toManifestJSONResult(compileCSSManifestFile(file, options));
389
+ }
390
+ function compileProjectManifestJSON(entries, options = {}) {
391
+ return toManifestJSONResult(compileProjectManifest(entries, options));
392
+ }
393
+
394
+ export { compileCSS, compileCSSFile, compileCSSManifest, compileCSSManifestFile, compileCSSManifestJSON, compileProjectManifest, compileProjectManifestJSON, createCSSDirectiveExtractionPolicy, createManifestFromCSSResult, findCSSReferenceStatements, findStandaloneMasterDirectiveStatements, inspectCSS, isMasterCSSPackageStyleFile, mergeCSSDirectiveExtractionPolicy, removeCSSReferenceStatements, resolveCSSImportGraph, resolveMasterCSSPackageEntryFile, resolveMasterCSSPackageImportGraph, setCSSTransform };
@@ -0,0 +1,13 @@
1
+ import type { Rule } from 'lightningcss';
2
+ export interface CSSImportStatement {
3
+ start: number;
4
+ end: number;
5
+ source: string;
6
+ statement: string;
7
+ rule: Extract<Rule, {
8
+ type: 'import';
9
+ }>;
10
+ }
11
+ export declare function findCSSImportStatements(source: string, filename?: string): CSSImportStatement[];
12
+ export declare function removeCSSImportStatements(source: string, filename?: string): string;
13
+ export declare function replaceCSSImportStatements(source: string, filename: string, getReplacement: (statement: CSSImportStatement) => string | undefined): string;
@@ -0,0 +1,44 @@
1
+ import { getCSSTransform, encodeCSS } from '../css-transform.mjs';
2
+ import { maskManagedPatternEntryNames } from '../core.mjs';
3
+ import { findAtRuleStatementEnd } from './source.mjs';
4
+ import { createSourceLocationResolver, removeSourceRanges, replaceSourceRanges } from '@master/css-lexer';
5
+
6
+ function findCSSImportStatements(source, filename = 'master.css') {
7
+ const statements = [];
8
+ const maskedSource = maskManagedPatternEntryNames(source);
9
+ const resolveLocation = createSourceLocationResolver(maskedSource);
10
+ getCSSTransform()({
11
+ filename,
12
+ code: encodeCSS(maskedSource),
13
+ visitor: {
14
+ Rule: {
15
+ import (rule) {
16
+ const start = resolveLocation(rule.value.loc);
17
+ if (start === -1) return;
18
+ const end = findAtRuleStatementEnd(source, start);
19
+ if (end === -1) return;
20
+ statements.push({
21
+ start,
22
+ end,
23
+ source: rule.value.url,
24
+ statement: source.slice(start, end),
25
+ rule
26
+ });
27
+ }
28
+ }
29
+ }
30
+ });
31
+ return statements;
32
+ }
33
+ function removeCSSImportStatements(source, filename = 'master.css') {
34
+ return removeSourceRanges(source, findCSSImportStatements(source, filename));
35
+ }
36
+ function replaceCSSImportStatements(source, filename, getReplacement) {
37
+ const replacements = findCSSImportStatements(source, filename).map((statement)=>({
38
+ ...statement,
39
+ replacement: getReplacement(statement) ?? statement.statement
40
+ }));
41
+ return replaceSourceRanges(source, replacements);
42
+ }
43
+
44
+ export { findCSSImportStatements, removeCSSImportStatements, replaceCSSImportStatements };
@@ -0,0 +1,3 @@
1
+ import { createSourceLocationResolver, removeSourceRanges, replaceSourceRanges, type SourceRange } from '@master/css-lexer';
2
+ export { createSourceLocationResolver, removeSourceRanges, replaceSourceRanges, type SourceRange };
3
+ export declare function findAtRuleStatementEnd(source: string, start: number): number;
@@ -0,0 +1,9 @@
1
+ import { findCSSStatementEnd } from '@master/css-lexer';
2
+ export { createSourceLocationResolver, removeSourceRanges, replaceSourceRanges } from '@master/css-lexer';
3
+
4
+ function findAtRuleStatementEnd(source, start) {
5
+ const statementEnd = findCSSStatementEnd(source, start);
6
+ return statementEnd.reason === 'semicolon' ? statementEnd.end : -1;
7
+ }
8
+
9
+ export { findAtRuleStatementEnd };
@@ -0,0 +1,21 @@
1
+ import type { CSSDirectiveExtractionPolicy } from '@master/css-schema/css-directives';
2
+ export type StandaloneCSSDirectiveName = 'master' | 'source' | 'safelist' | 'blocklist' | 'preserve';
3
+ export interface StandaloneCSSDirectiveStatement {
4
+ start: number;
5
+ end: number;
6
+ atRuleName: StandaloneCSSDirectiveName;
7
+ name: string;
8
+ statement: string;
9
+ args: string[];
10
+ modifiers: string[];
11
+ }
12
+ export type StandaloneMasterDirectiveStatement = StandaloneCSSDirectiveStatement & {
13
+ atRuleName: 'master';
14
+ };
15
+ export declare function createCSSDirectiveExtractionPolicy(): CSSDirectiveExtractionPolicy;
16
+ export declare function mergeCSSDirectiveExtractionPolicy(...policies: (Partial<CSSDirectiveExtractionPolicy> | undefined)[]): CSSDirectiveExtractionPolicy;
17
+ export declare function findStandaloneCSSDirectiveStatements(source: string, filename?: string): StandaloneCSSDirectiveStatement[];
18
+ export declare function findStandaloneMasterDirectiveStatements(source: string, filename?: string): StandaloneMasterDirectiveStatement[];
19
+ export declare function collectStandaloneCSSDirectiveExtractionPolicy(source: string, filename?: string): CSSDirectiveExtractionPolicy;
20
+ export declare function removeStandaloneCSSDirectives(source: string, filename?: string): string;
21
+ export declare function removeStandaloneMasterDirectives(source: string, filename?: string): string;