mage-obsidian 2.7.2 → 2.8.0

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.
@@ -1,5 +1,5 @@
1
1
  import { readFileSync, writeFileSync } from "node:fs";
2
- import { extractCritical } from "../core/criticalCss.js";
2
+ import { extractCritical, mergeDocuments, classCoverage } from "../core/criticalCss.js";
3
3
  // Internal bin the PHP `mage-obsidian:frontend:critical-css` command shells out
4
4
  // to: it takes the rendered page HTML and the built stylesheet and writes the
5
5
  // critical CSS. Kept argv-only (no commander) because it is machine-invoked.
@@ -7,16 +7,35 @@ function arg(name) {
7
7
  const i = process.argv.indexOf(name);
8
8
  return i > -1 ? process.argv[i + 1] : undefined;
9
9
  }
10
- const htmlFile = arg("--html");
10
+ function args(name) {
11
+ const found = [];
12
+ process.argv.forEach((value, i) => {
13
+ if (value === name && process.argv[i + 1] !== undefined) {
14
+ found.push(process.argv[i + 1]);
15
+ }
16
+ });
17
+ return found;
18
+ }
19
+ const htmlFiles = args("--html");
11
20
  const cssFile = arg("--css");
12
21
  const outFile = arg("--out");
13
- if (!htmlFile || !cssFile || !outFile) {
14
- console.error("usage: criticalCss --html <file> --css <file> --out <file>");
22
+ const minCoverage = Number(arg("--min-coverage") ?? "0");
23
+ if (htmlFiles.length === 0 || !cssFile || !outFile) {
24
+ console.error("usage: criticalCss --html <file> [--html <file>…] --css <file> --out <file> [--min-coverage <0..1>]");
15
25
  process.exit(1);
16
26
  }
17
- const html = readFileSync(htmlFile, "utf8");
27
+ const htmls = htmlFiles.map((file) => readFileSync(file, "utf8"));
18
28
  const css = readFileSync(cssFile, "utf8");
19
- const critical = await extractCritical({ html, css });
29
+ const critical = await extractCritical({ html: htmls, css });
20
30
  writeFileSync(outFile, critical);
21
- console.log(`critical: ${critical.length} bytes -> ${outFile}`);
31
+ const coverage = classCoverage(mergeDocuments(htmls), css, critical);
32
+ console.log(`critical: ${critical.length} bytes -> ${outFile} ` +
33
+ `(coverage ${(coverage.ratio * 100).toFixed(1)}%, ${coverage.covered}/${coverage.total} classes)`);
34
+ if (coverage.ratio < minCoverage) {
35
+ console.error(`critical CSS covers ${(coverage.ratio * 100).toFixed(1)}% of the styled classes, ` +
36
+ `below the required ${(minCoverage * 100).toFixed(1)}%. Missing: ` +
37
+ coverage.missing.slice(0, 20).join(", ") +
38
+ (coverage.missing.length > 20 ? `, and ${coverage.missing.length - 20} more` : ""));
39
+ process.exit(2);
40
+ }
22
41
  //# sourceMappingURL=criticalCss.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"criticalCss.js","sourceRoot":"","sources":["../../src/cli/criticalCss.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,gFAAgF;AAChF,8EAA8E;AAC9E,6EAA6E;AAC7E,SAAS,GAAG,CAAC,IAAY;IACrB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC;AAED,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AAE7B,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1C,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AACtD,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACjC,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,aAAa,OAAO,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"criticalCss.js","sourceRoot":"","sources":["../../src/cli/criticalCss.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,16 @@
1
1
  export declare function extractFontFaces(css: string): string;
2
+ export declare function mergeDocuments(htmls: string[]): string;
3
+ export declare function classesInHtml(html: string): Set<string>;
4
+ export declare function classesInCss(css: string): Set<string>;
5
+ export interface CoverageReport {
6
+ total: number;
7
+ covered: number;
8
+ ratio: number;
9
+ missing: string[];
10
+ }
11
+ export declare function classCoverage(html: string, css: string, critical: string): CoverageReport;
2
12
  export interface ExtractCriticalOptions {
3
- html: string;
13
+ html: string | string[];
4
14
  css: string;
5
15
  }
6
16
  export declare function extractCritical({ html, css }: ExtractCriticalOptions): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"criticalCss.d.ts","sourceRoot":"","sources":["../../src/core/criticalCss.ts"],"names":[],"mappings":"AA2BA,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACf;AASD,wBAAsB,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B5F;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"criticalCss.d.ts","sourceRoot":"","sources":["../../src/core/criticalCss.ts"],"names":[],"mappings":"AA+BA,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAUtD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAUvD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAMrD;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,CAYzF;AAED,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;CACf;AASD,wBAAsB,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA2B5F;AAED,eAAe,eAAe,CAAC"}
@@ -6,6 +6,10 @@ const BeastiesClass = Beasties;
6
6
  const FONT_FACE_RE = /@font-face\s*\{[^}]*\}/g;
7
7
  const STYLE_RE = /<style[^>]*>([\s\S]*?)<\/style>/i;
8
8
  const SHEET_LINK_RE = /<link\b[^>]*\bhref="[^"]*\.css"[^>]*>/i;
9
+ const BODY_RE = /<body\b[^>]*>([\s\S]*)<\/body>/i;
10
+ const BODY_CLOSE_RE = /<\/body>/i;
11
+ const CLASS_ATTR_RE = /\bclass\s*=\s*("([^"]*)"|'([^']*)')/gi;
12
+ const CSS_CLASS_RE = /\.((?:[A-Za-z0-9_-]|\\[^\n])+)/g;
9
13
  // Pull the @font-face blocks out of a stylesheet verbatim. They must live in the
10
14
  // inlined critical CSS so the families are declared before the deferred sheet
11
15
  // loads — Beasties drops them from the critical subset (inlineFonts is off so it
@@ -13,6 +17,48 @@ const SHEET_LINK_RE = /<link\b[^>]*\bhref="[^"]*\.css"[^>]*>/i;
13
17
  export function extractFontFaces(css) {
14
18
  return (css.match(FONT_FACE_RE) ?? []).join("");
15
19
  }
20
+ export function mergeDocuments(htmls) {
21
+ const docs = htmls.filter((html) => html.trim() !== "");
22
+ if (docs.length <= 1) {
23
+ return docs[0] ?? "";
24
+ }
25
+ const [shell, ...rest] = docs;
26
+ const extra = rest.map((html) => BODY_RE.exec(html)?.[1] ?? html).join("\n");
27
+ return BODY_CLOSE_RE.test(shell)
28
+ ? shell.replace(BODY_CLOSE_RE, () => `${extra}</body>`)
29
+ : `${shell}\n${extra}`;
30
+ }
31
+ export function classesInHtml(html) {
32
+ const found = new Set();
33
+ for (const match of html.matchAll(CLASS_ATTR_RE)) {
34
+ for (const name of (match[2] ?? match[3] ?? "").split(/\s+/)) {
35
+ if (name !== "") {
36
+ found.add(name);
37
+ }
38
+ }
39
+ }
40
+ return found;
41
+ }
42
+ export function classesInCss(css) {
43
+ const found = new Set();
44
+ for (const match of css.matchAll(CSS_CLASS_RE)) {
45
+ found.add(match[1].replace(/\\(.)/g, "$1"));
46
+ }
47
+ return found;
48
+ }
49
+ export function classCoverage(html, css, critical) {
50
+ const styled = classesInCss(css);
51
+ const inCritical = classesInCss(critical);
52
+ const used = [...classesInHtml(html)].filter((name) => styled.has(name));
53
+ const missing = used.filter((name) => !inCritical.has(name)).sort();
54
+ const covered = used.length - missing.length;
55
+ return {
56
+ total: used.length,
57
+ covered,
58
+ ratio: used.length === 0 ? 1 : covered / used.length,
59
+ missing,
60
+ };
61
+ }
16
62
  // Run Beasties over the real rendered HTML against the full stylesheet and
17
63
  // return the critical CSS it would inline. The PHP side does the actual inlining
18
64
  // and sheet-deferring, so we only need the text; @font-face is prepended because
@@ -21,6 +67,7 @@ export function extractFontFaces(css) {
21
67
  // Beasties resolves <link> hrefs from disk, so the sheet is written to a temp
22
68
  // dir and the page's stylesheet link is repointed at it.
23
69
  export async function extractCritical({ html, css }) {
70
+ const merged = mergeDocuments(Array.isArray(html) ? html : [html]);
24
71
  const dir = mkdtempSync(join(tmpdir(), "mo-critical-"));
25
72
  try {
26
73
  const sheet = "sheet.css";
@@ -28,7 +75,7 @@ export async function extractCritical({ html, css }) {
28
75
  // Strip any already-inlined critical <style> (a re-run sees the prior
29
76
  // output in the page) and repoint the sheet link so Beasties extracts
30
77
  // afresh from the full stylesheet only.
31
- const wired = html
78
+ const wired = merged
32
79
  .replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi, "")
33
80
  .replace(SHEET_LINK_RE, `<link rel="stylesheet" href="${sheet}">`);
34
81
  const beasties = new BeastiesClass({
@@ -1 +1 @@
1
- {"version":3,"file":"criticalCss.js","sourceRoot":"","sources":["../../src/core/criticalCss.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAcjC,MAAM,aAAa,GAAG,QAAmC,CAAC;AAE1D,MAAM,YAAY,GAAG,yBAAyB,CAAC;AAC/C,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AACpD,MAAM,aAAa,GAAG,wCAAwC,CAAC;AAE/D,iFAAiF;AACjF,8EAA8E;AAC9E,iFAAiF;AACjF,sDAAsD;AACtD,MAAM,UAAU,gBAAgB,CAAC,GAAW;IACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC;AAOD,2EAA2E;AAC3E,iFAAiF;AACjF,iFAAiF;AACjF,iDAAiD;AACjD,EAAE;AACF,8EAA8E;AAC9E,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAA0B;IACvE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,WAAW,CAAC;QAC1B,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QACrC,sEAAsE;QACtE,sEAAsE;QACtE,wCAAwC;QACxC,MAAM,KAAK,GAAG,IAAI;aACb,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC;aAChD,OAAO,CAAC,aAAa,EAAE,gCAAgC,KAAK,IAAI,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC;YAC/B,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,KAAK;YAClB,gBAAgB,EAAE,KAAK;YACvB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;YAAS,CAAC;QACP,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;AACL,CAAC;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"criticalCss.js","sourceRoot":"","sources":["../../src/core/criticalCss.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAcjC,MAAM,aAAa,GAAG,QAAmC,CAAC;AAE1D,MAAM,YAAY,GAAG,yBAAyB,CAAC;AAC/C,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AACpD,MAAM,aAAa,GAAG,wCAAwC,CAAC;AAC/D,MAAM,OAAO,GAAG,iCAAiC,CAAC;AAClD,MAAM,aAAa,GAAG,WAAW,CAAC;AAClC,MAAM,aAAa,GAAG,uCAAuC,CAAC;AAC9D,MAAM,YAAY,GAAG,iCAAiC,CAAC;AAEvD,iFAAiF;AACjF,8EAA8E;AAC9E,iFAAiF;AACjF,sDAAsD;AACtD,MAAM,UAAU,gBAAgB,CAAC,GAAW;IACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAe;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC;QACvD,CAAC,CAAC,GAAG,KAAK,KAAK,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;gBACd,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AASD,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,GAAW,EAAE,QAAgB;IACrE,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7C,OAAO;QACH,KAAK,EAAE,IAAI,CAAC,MAAM;QAClB,OAAO;QACP,KAAK,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM;QACpD,OAAO;KACV,CAAC;AACN,CAAC;AAOD,2EAA2E;AAC3E,iFAAiF;AACjF,iFAAiF;AACjF,iDAAiD;AACjD,EAAE;AACF,8EAA8E;AAC9E,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAA0B;IACvE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,WAAW,CAAC;QAC1B,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QACrC,sEAAsE;QACtE,sEAAsE;QACtE,wCAAwC;QACxC,MAAM,KAAK,GAAG,MAAM;aACf,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC;aAChD,OAAO,CAAC,aAAa,EAAE,gCAAgC,KAAK,IAAI,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC;YAC/B,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,KAAK;YAClB,gBAAgB,EAAE,KAAK;YACvB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;YAAS,CAAC;QACP,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;AACL,CAAC;AAED,eAAe,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mage-obsidian",
3
- "version": "2.7.2",
3
+ "version": "2.8.0",
4
4
  "description": "The MageObsidian JS build engine for Magento 2 frontends: theme inheritance resolution, precompilation and JS interceptors for Vite builds.",
5
5
  "homepage": "https://mage-obsidian.jeanmarcos.dev/",
6
6
  "bugs": {