@code-pushup/lighthouse-plugin 0.99.0 → 0.100.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-pushup/lighthouse-plugin",
3
- "version": "0.99.0",
3
+ "version": "0.100.1",
4
4
  "license": "MIT",
5
5
  "description": "Code PushUp plugin for measuring web performance and quality with Lighthouse 🔥",
6
6
  "homepage": "https://github.com/code-pushup/cli/tree/main/packages/plugin-lighthouse#readme",
@@ -36,8 +36,8 @@
36
36
  },
37
37
  "type": "module",
38
38
  "dependencies": {
39
- "@code-pushup/models": "0.99.0",
40
- "@code-pushup/utils": "0.99.0",
39
+ "@code-pushup/models": "0.100.1",
40
+ "@code-pushup/utils": "0.100.1",
41
41
  "ansis": "^3.3.0",
42
42
  "chrome-launcher": "^1.1.1",
43
43
  "lighthouse": "^12.0.0",
@@ -1,5 +1,6 @@
1
1
  export declare const DEFAULT_CHROME_FLAGS: string[];
2
2
  export declare const LIGHTHOUSE_PLUGIN_SLUG = "lighthouse";
3
+ export declare const LIGHTHOUSE_PLUGIN_TITLE = "Lighthouse";
3
4
  export declare const LIGHTHOUSE_OUTPUT_PATH: string;
4
5
  export declare const LIGHTHOUSE_GROUP_SLUGS: readonly ["performance", "accessibility", "best-practices", "seo"];
5
6
  export declare const SINGLE_URL_THRESHOLD = 1;
@@ -4,6 +4,7 @@ import { DEFAULT_PERSIST_OUTPUT_DIR } from '@code-pushup/models';
4
4
  // headless is needed to pass CI on Linux and Windows (locally it works without headless too)
5
5
  export const DEFAULT_CHROME_FLAGS = [...DEFAULT_FLAGS, '--headless'];
6
6
  export const LIGHTHOUSE_PLUGIN_SLUG = 'lighthouse';
7
+ export const LIGHTHOUSE_PLUGIN_TITLE = 'Lighthouse';
7
8
  export const LIGHTHOUSE_OUTPUT_PATH = path.join(DEFAULT_PERSIST_OUTPUT_DIR, LIGHTHOUSE_PLUGIN_SLUG);
8
9
  export const LIGHTHOUSE_GROUP_SLUGS = [
9
10
  'performance',
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,6FAA6F;AAC7F,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,aAAa,EAAE,YAAY,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAC;AACnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAC7C,0BAA0B,EAC1B,sBAAsB,CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa;IACb,eAAe;IACf,gBAAgB;IAChB,KAAK;CACG,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,6FAA6F;AAC7F,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,aAAa,EAAE,YAAY,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAC;AACnD,MAAM,CAAC,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAEpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAC7C,0BAA0B,EAC1B,sBAAsB,CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa;IACb,eAAe;IACf,gBAAgB;IAChB,KAAK;CACG,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const formatMetaLog: (message: string) => string;
@@ -0,0 +1,4 @@
1
+ import { pluginMetaLogFormatter } from '@code-pushup/utils';
2
+ import { LIGHTHOUSE_PLUGIN_TITLE } from './constants.js';
3
+ export const formatMetaLog = pluginMetaLogFormatter(LIGHTHOUSE_PLUGIN_TITLE);
4
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/lib/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,sBAAsB,CAAC,uBAAuB,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from 'node:module';
2
2
  import { normalizeUrlInput } from '@code-pushup/utils';
3
- import { LIGHTHOUSE_PLUGIN_SLUG } from './constants.js';
3
+ import { LIGHTHOUSE_PLUGIN_SLUG, LIGHTHOUSE_PLUGIN_TITLE, } from './constants.js';
4
4
  import { normalizeFlags } from './normalize-flags.js';
5
5
  import { processAuditsAndGroups } from './processing.js';
6
6
  import { createRunnerFunction } from './runner/runner.js';
@@ -15,10 +15,10 @@ export function lighthousePlugin(urls, flags) {
15
15
  const packageJson = createRequire(import.meta.url)('../../package.json');
16
16
  return {
17
17
  slug: LIGHTHOUSE_PLUGIN_SLUG,
18
+ title: LIGHTHOUSE_PLUGIN_TITLE,
19
+ icon: 'lighthouse',
18
20
  packageName: packageJson.name,
19
21
  version: packageJson.version,
20
- title: 'Lighthouse',
21
- icon: 'lighthouse',
22
22
  audits,
23
23
  groups,
24
24
  runner: createRunnerFunction(normalizedUrls, {
@@ -1 +1 @@
1
- {"version":3,"file":"lighthouse-plugin.js","sourceRoot":"","sources":["../../../src/lib/lighthouse-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,UAAU,gBAAgB,CAC9B,IAAgB,EAChB,KAAyB;IAEzB,MAAM,EACJ,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,GAAG,aAAa,EACjB,GAAG,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAEhC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAElE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,sBAAsB,CAAC,cAAc,EAAE;QAChE,UAAU;QACV,UAAU;QACV,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAChD,oBAAoB,CACkB,CAAC;IAEzC,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,WAAW,CAAC,IAAI;QAC7B,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,YAAY;QAClB,MAAM;QACN,MAAM;QACN,MAAM,EAAE,oBAAoB,CAAC,cAAc,EAAE;YAC3C,UAAU;YACV,UAAU;YACV,cAAc;YACd,GAAG,aAAa;SACjB,CAAC;QACF,OAAO;QACP,GAAG,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,CAAC;KACtC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"lighthouse-plugin.js","sourceRoot":"","sources":["../../../src/lib/lighthouse-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,UAAU,gBAAgB,CAC9B,IAAgB,EAChB,KAAyB;IAEzB,MAAM,EACJ,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,GAAG,aAAa,EACjB,GAAG,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAEhC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAElE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,sBAAsB,CAAC,cAAc,EAAE;QAChE,UAAU;QACV,UAAU;QACV,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAChD,oBAAoB,CACkB,CAAC;IAEzC,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,WAAW,CAAC,IAAI;QAC7B,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,MAAM;QACN,MAAM;QACN,MAAM,EAAE,oBAAoB,CAAC,cAAc,EAAE;YAC3C,UAAU;YACV,UAAU;YACV,cAAc;YACd,GAAG,aAAa;SACjB,CAAC;QACF,OAAO;QACP,GAAG,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,CAAC;KACtC,CAAC;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
+ import type { Audit, Group } from '@code-pushup/models';
1
2
  import { type FilterOptions } from './utils.js';
2
3
  export declare function expandOptionsForUrls(options: FilterOptions, urlCount: number): FilterOptions;
3
4
  export declare function processAuditsAndGroups(urls: string[], options: FilterOptions): {
4
- audits: import("packages/models/dist/src/index.js").Audit[];
5
- groups: import("packages/models/dist/src/index.js").Group[];
5
+ audits: Audit[];
6
+ groups: Group[];
6
7
  };
@@ -1,21 +1,52 @@
1
- import { addIndex, expandAuditsForUrls, expandGroupsForUrls, shouldExpandForUrls, } from '@code-pushup/utils';
1
+ import { addIndex, expandAuditsForUrls, expandGroupsForUrls, logger, objectFromEntries, objectToEntries, pluralizeToken, shouldExpandForUrls, } from '@code-pushup/utils';
2
+ import { formatMetaLog } from './format.js';
2
3
  import { LIGHTHOUSE_GROUPS, LIGHTHOUSE_NAVIGATION_AUDITS, } from './runner/constants.js';
3
4
  import { markSkippedAuditsAndGroups } from './utils.js';
4
5
  export function expandOptionsForUrls(options, urlCount) {
5
- return Object.fromEntries(Object.entries(options).map(([key, value]) => [
6
+ return objectFromEntries(objectToEntries(options).map(([key, value = []]) => [
6
7
  key,
7
- Array.isArray(value)
8
- ? value.flatMap(slug => Array.from({ length: urlCount }, (_, i) => addIndex(slug, i)))
9
- : value,
8
+ value.flatMap(slug => Array.from({ length: urlCount }, (_, i) => addIndex(slug, i))),
10
9
  ]));
11
10
  }
12
11
  export function processAuditsAndGroups(urls, options) {
12
+ logTotal();
13
13
  if (!shouldExpandForUrls(urls.length)) {
14
- return markSkippedAuditsAndGroups(LIGHTHOUSE_NAVIGATION_AUDITS, LIGHTHOUSE_GROUPS, options);
14
+ const marked = markSkippedAuditsAndGroups(LIGHTHOUSE_NAVIGATION_AUDITS, LIGHTHOUSE_GROUPS, options);
15
+ logSkipped(marked);
16
+ return marked;
15
17
  }
16
18
  const expandedAudits = expandAuditsForUrls(LIGHTHOUSE_NAVIGATION_AUDITS, urls);
17
19
  const expandedGroups = expandGroupsForUrls(LIGHTHOUSE_GROUPS, urls);
18
20
  const expandedOptions = expandOptionsForUrls(options, urls.length);
19
- return markSkippedAuditsAndGroups(expandedAudits, expandedGroups, expandedOptions);
21
+ logExpanded(expandedAudits, expandedGroups, urls);
22
+ const marked = markSkippedAuditsAndGroups(expandedAudits, expandedGroups, expandedOptions);
23
+ logSkipped(marked);
24
+ return marked;
25
+ }
26
+ function logTotal() {
27
+ logger.info(formatMetaLog(`Created ${pluralizeToken('group', LIGHTHOUSE_GROUPS.length)} and ${pluralizeToken('audit', LIGHTHOUSE_NAVIGATION_AUDITS.length)} from Lighthouse's categories and navigation audits`));
28
+ }
29
+ function logExpanded(expandedAudits, expandedGroups, urls) {
30
+ logger.info(formatMetaLog(`Expanded audits (${LIGHTHOUSE_NAVIGATION_AUDITS.length} → ${expandedAudits.length}) and groups (${LIGHTHOUSE_GROUPS.length} → ${expandedGroups.length}) for ${pluralizeToken('URL', urls.length)}`));
31
+ }
32
+ function logSkipped(marked) {
33
+ const { audits, groups } = marked;
34
+ const formattedCounts = [
35
+ { name: 'audit', items: audits },
36
+ { name: 'group', items: groups },
37
+ ]
38
+ .map(({ name, items }) => {
39
+ const skipped = items.filter(({ isSkipped }) => isSkipped);
40
+ if (skipped.length === 0) {
41
+ return '';
42
+ }
43
+ return `${skipped.length} out of ${pluralizeToken(name, items.length)}`;
44
+ })
45
+ .filter(Boolean)
46
+ .join(' and ');
47
+ if (!formattedCounts) {
48
+ return;
49
+ }
50
+ logger.info(formatMetaLog(`Skipping ${formattedCounts}`));
20
51
  }
21
52
  //# sourceMappingURL=processing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processing.js","sourceRoot":"","sources":["../../../src/lib/processing.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAsB,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE5E,MAAM,UAAU,oBAAoB,CAClC,OAAsB,EACtB,QAAgB;IAEhB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QAC5C,GAAG;QACH,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAClB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CACnB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAC9D;YACH,CAAC,CAAC,KAAK;KACV,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAc,EAAE,OAAsB;IAC3E,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,OAAO,0BAA0B,CAC/B,4BAA4B,EAC5B,iBAAiB,EACjB,OAAO,CACR,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,mBAAmB,CACxC,4BAA4B,EAC5B,IAAI,CACL,CAAC;IACF,MAAM,cAAc,GAAG,mBAAmB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACpE,MAAM,eAAe,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnE,OAAO,0BAA0B,CAC/B,cAAc,EACd,cAAc,EACd,eAAe,CAChB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"processing.js","sourceRoot":"","sources":["../../../src/lib/processing.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAsB,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE5E,MAAM,UAAU,oBAAoB,CAClC,OAAsB,EACtB,QAAgB;IAEhB,OAAO,iBAAiB,CACtB,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,GAAG;QACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CACnB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAC9D;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAc,EAAE,OAAsB;IAC3E,QAAQ,EAAE,CAAC;IACX,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,0BAA0B,CACvC,4BAA4B,EAC5B,iBAAiB,EACjB,OAAO,CACR,CAAC;QACF,UAAU,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,cAAc,GAAG,mBAAmB,CACxC,4BAA4B,EAC5B,IAAI,CACL,CAAC;IACF,MAAM,cAAc,GAAG,mBAAmB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACpE,MAAM,eAAe,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnE,WAAW,CAAC,cAAc,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,0BAA0B,CACvC,cAAc,EACd,cAAc,EACd,eAAe,CAChB,CAAC;IACF,UAAU,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,CAAC,IAAI,CACT,aAAa,CACX,WAAW,cAAc,CAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,QAAQ,cAAc,CAAC,OAAO,EAAE,4BAA4B,CAAC,MAAM,CAAC,qDAAqD,CACtL,CACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,cAAuB,EACvB,cAAuB,EACvB,IAAc;IAEd,MAAM,CAAC,IAAI,CACT,aAAa,CACX,oBAAoB,4BAA4B,CAAC,MAAM,MAAM,cAAc,CAAC,MAAM,iBAAiB,iBAAiB,CAAC,MAAM,MAAM,cAAc,CAAC,MAAM,SAAS,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CACpM,CACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAA4C;IAC9D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAElC,MAAM,eAAe,GAAG;QACtB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;QAChC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;KACjC;SACE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,WAAW,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1E,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,OAAO,CAAC,CAAC;IAEjB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,eAAe,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC"}
@@ -1,50 +1,84 @@
1
+ import ansis from 'ansis';
1
2
  import { runLighthouse } from 'lighthouse/cli/run.js';
2
3
  import path from 'node:path';
3
- import { addIndex, ensureDirectoryExists, formatAsciiLink, logger, shouldExpandForUrls, stringifyError, } from '@code-pushup/utils';
4
+ import { addIndex, asyncSequential, ensureDirectoryExists, formatAsciiTable, formatReportScore, logger, shouldExpandForUrls, stringifyError, } from '@code-pushup/utils';
4
5
  import { DEFAULT_CLI_FLAGS } from './constants.js';
5
- import { enrichFlags, getConfig, normalizeAuditOutputs, toAuditOutputs, withLocalTmpDir, } from './utils.js';
6
+ import { enrichFlags, filterAuditOutputs, getConfig, toAuditOutputs, withLocalTmpDir, } from './utils.js';
6
7
  export function createRunnerFunction(urls, flags = DEFAULT_CLI_FLAGS) {
7
8
  return withLocalTmpDir(async () => {
8
9
  const config = await getConfig(flags);
9
10
  const normalizationFlags = enrichFlags(flags);
10
- const isSingleUrl = !shouldExpandForUrls(urls.length);
11
- const allResults = await urls.reduce(async (prev, url, index) => {
12
- const acc = await prev;
13
- try {
14
- const enrichedFlags = isSingleUrl
15
- ? normalizationFlags
16
- : enrichFlags(flags, index + 1);
17
- const auditOutputs = await runLighthouseForUrl(url, enrichedFlags, config);
18
- const processedOutputs = isSingleUrl
19
- ? auditOutputs
20
- : auditOutputs.map(audit => ({
21
- ...audit,
22
- slug: addIndex(audit.slug, index),
23
- }));
24
- return [...acc, ...processedOutputs];
25
- }
26
- catch (error) {
27
- logger.warn(stringifyError(error));
28
- return acc;
29
- }
30
- }, Promise.resolve([]));
31
- if (allResults.length === 0) {
11
+ const urlsCount = urls.length;
12
+ const isSingleUrl = !shouldExpandForUrls(urlsCount);
13
+ const allResults = await asyncSequential(urls, (url, urlIndex) => {
14
+ const enrichedFlags = isSingleUrl
15
+ ? normalizationFlags
16
+ : enrichFlags(flags, urlIndex + 1);
17
+ const step = { urlIndex, urlsCount };
18
+ return runLighthouseForUrl(url, enrichedFlags, config, step);
19
+ });
20
+ const collectedResults = allResults.filter(res => res != null);
21
+ if (collectedResults.length === 0) {
32
22
  throw new Error(isSingleUrl
33
23
  ? 'Lighthouse did not produce a result.'
34
24
  : 'Lighthouse failed to produce results for all URLs.');
35
25
  }
36
- return normalizeAuditOutputs(allResults, normalizationFlags);
26
+ logResultsForAllUrls(collectedResults);
27
+ const auditOutputs = collectedResults.flatMap(res => res.auditOutputs);
28
+ return filterAuditOutputs(auditOutputs, normalizationFlags);
37
29
  });
38
30
  }
39
- async function runLighthouseForUrl(url, flags, config) {
40
- if (flags.outputPath) {
41
- await ensureDirectoryExists(path.dirname(flags.outputPath));
31
+ async function runLighthouseForUrl(url, flags, config, step) {
32
+ const { urlIndex, urlsCount } = step;
33
+ const prefix = ansis.gray(`[${step.urlIndex + 1}/${step.urlsCount}]`);
34
+ try {
35
+ if (flags.outputPath) {
36
+ await ensureDirectoryExists(path.dirname(flags.outputPath));
37
+ }
38
+ const lhr = await logger.task(`${prefix} Running lighthouse on ${url}`, async () => {
39
+ const runnerResult = await runLighthouse(url, flags, config);
40
+ if (runnerResult == null) {
41
+ throw new Error('Lighthouse did not produce a result');
42
+ }
43
+ return {
44
+ message: `${prefix} Completed lighthouse run on ${url}`,
45
+ result: runnerResult.lhr,
46
+ };
47
+ });
48
+ const auditOutputs = toAuditOutputs(Object.values(lhr.audits), flags);
49
+ if (shouldExpandForUrls(urlsCount)) {
50
+ return {
51
+ url,
52
+ lhr,
53
+ auditOutputs: auditOutputs.map(audit => ({
54
+ ...audit,
55
+ slug: addIndex(audit.slug, urlIndex),
56
+ })),
57
+ };
58
+ }
59
+ return { url, lhr, auditOutputs };
42
60
  }
43
- const runnerResult = await runLighthouse(url, flags, config);
44
- if (runnerResult == null) {
45
- throw new Error(`Lighthouse did not produce a result for URL: ${formatAsciiLink(url)}`);
61
+ catch (error) {
62
+ logger.warn(`Lighthouse run failed for ${url} - ${stringifyError(error)}`);
63
+ return null;
46
64
  }
47
- const { lhr } = runnerResult;
48
- return toAuditOutputs(Object.values(lhr.audits), flags);
65
+ }
66
+ function logResultsForAllUrls(results) {
67
+ const categoryNames = Object.fromEntries(results
68
+ .flatMap(res => Object.values(res.lhr.categories))
69
+ .map(category => [category.id, category.title]));
70
+ logger.info(formatAsciiTable({
71
+ columns: [
72
+ { key: 'url', label: 'URL', align: 'left' },
73
+ ...Object.entries(categoryNames).map(([key, label]) => ({ key, label, align: 'right' })),
74
+ ],
75
+ rows: results.map(({ url, lhr }) => ({
76
+ url,
77
+ ...Object.fromEntries(Object.values(lhr.categories).map(category => [
78
+ category.id,
79
+ category.score == null ? '-' : formatReportScore(category.score),
80
+ ])),
81
+ })),
82
+ }));
49
83
  }
50
84
  //# sourceMappingURL=runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../src/lib/runner/runner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,eAAe,EACf,MAAM,EACN,mBAAmB,EACnB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EACL,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,oBAAoB,CAClC,IAAc,EACd,QAA4B,iBAAiB;IAE7C,OAAO,eAAe,CAAC,KAAK,IAA2B,EAAE;QACvD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,kBAAkB,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YAC9D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,WAAW;oBAC/B,CAAC,CAAC,kBAAkB;oBACpB,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBAElC,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAC5C,GAAG,EACH,aAAa,EACb,MAAM,CACP,CAAC;gBAEF,MAAM,gBAAgB,GAAG,WAAW;oBAClC,CAAC,CAAC,YAAY;oBACd,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACzB,GAAG,KAAK;wBACR,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;qBAClC,CAAC,CAAC,CAAC;gBAER,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,gBAAgB,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnC,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC,EAAE,OAAO,CAAC,OAAO,CAAe,EAAE,CAAC,CAAC,CAAC;QAEtC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,WAAW;gBACT,CAAC,CAAC,sCAAsC;gBACxC,CAAC,CAAC,oDAAoD,CACzD,CAAC;QACJ,CAAC;QACD,OAAO,qBAAqB,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,GAAW,EACX,KAAwB,EACxB,MAA0B;IAE1B,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,YAAY,GAAY,MAAM,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAEtE,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,gDAAgD,eAAe,CAAC,GAAG,CAAC,EAAE,CACvE,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,YAA4B,CAAC;IAE7C,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../src/lib/runner/runner.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import type { Result } from 'lighthouse/types/lhr/audit-result';
3
3
  import type { AuditOutputs } from '@code-pushup/models';
4
4
  import type { LighthouseOptions } from '../types.js';
5
5
  import type { LighthouseCliFlags } from './types.js';
6
- export declare function normalizeAuditOutputs(auditOutputs: AuditOutputs, flags?: LighthouseOptions): AuditOutputs;
6
+ export declare function filterAuditOutputs(auditOutputs: AuditOutputs, flags?: LighthouseOptions): AuditOutputs;
7
7
  export declare class LighthouseAuditParsingError extends Error {
8
8
  constructor(slug: string, error: unknown);
9
9
  }
@@ -8,13 +8,13 @@ import path from 'node:path';
8
8
  import { formatReportScore, importModule, logger, pluginWorkDir, readJsonFile, stringifyError, } from '@code-pushup/utils';
9
9
  import { LIGHTHOUSE_PLUGIN_SLUG } from '../constants.js';
10
10
  import { logUnsupportedDetails, toAuditDetails } from './details/details.js';
11
- export function normalizeAuditOutputs(auditOutputs, flags = { skipAudits: [] }) {
11
+ export function filterAuditOutputs(auditOutputs, flags = { skipAudits: [] }) {
12
12
  const toSkip = new Set(flags.skipAudits ?? []);
13
13
  return auditOutputs.filter(({ slug }) => !toSkip.has(slug));
14
14
  }
15
15
  export class LighthouseAuditParsingError extends Error {
16
16
  constructor(slug, error) {
17
- super(`\nAudit ${ansis.bold(slug)} failed parsing details: \n${stringifyError(error)}`);
17
+ super(`Failed to parse ${ansis.bold(slug)} audit's details - ${stringifyError(error)}`);
18
18
  }
19
19
  }
20
20
  function formatBaseAuditOutput(lhrAudit) {
@@ -69,31 +69,40 @@ export function determineAndSetLogLevel({ verbose, quiet, } = {}) {
69
69
  return logLevel;
70
70
  }
71
71
  export async function getConfig(options = {}) {
72
- const { configPath: filepath, preset } = options;
73
- if (filepath != null) {
74
- if (filepath.endsWith('.json')) {
75
- // Resolve the config file path relative to where cli was called.
76
- return readJsonFile(filepath);
77
- }
78
- else if (/\.(ts|js|mjs)$/.test(filepath)) {
79
- return importModule({ filepath, format: 'esm' });
72
+ const { configPath, preset } = options;
73
+ if (configPath != null) {
74
+ // Resolve the config file path relative to where cli was called.
75
+ return logger.task(`Loading lighthouse config from ${configPath}`, async () => {
76
+ const message = `Loaded lighthouse config from ${configPath}`;
77
+ if (configPath.endsWith('.json')) {
78
+ return { message, result: await readJsonFile(configPath) };
79
+ }
80
+ if (/\.(ts|js|mjs)$/.test(configPath)) {
81
+ return {
82
+ message,
83
+ result: await importModule({
84
+ filepath: configPath,
85
+ format: 'esm',
86
+ }),
87
+ };
88
+ }
89
+ throw new Error(`Unknown Lighthouse config file extension in ${configPath}`);
90
+ });
91
+ }
92
+ if (preset != null) {
93
+ const supportedPresets = {
94
+ desktop: desktopConfig,
95
+ perf: perfConfig,
96
+ experimental: experimentalConfig,
97
+ };
98
+ // in reality, the preset could be a string not included in the type definition
99
+ const config = supportedPresets[preset];
100
+ if (config) {
101
+ logger.info(`Loaded config from ${ansis.bold(preset)} preset`);
102
+ return config;
80
103
  }
81
104
  else {
82
- logger.warn(`Format of file ${filepath} not supported`);
83
- }
84
- }
85
- else if (preset != null) {
86
- switch (preset) {
87
- case 'desktop':
88
- return desktopConfig;
89
- case 'perf':
90
- return perfConfig;
91
- case 'experimental':
92
- return experimentalConfig;
93
- default:
94
- // as preset is a string literal the default case here is normally caught by TS and not possible to happen. Now in reality it can happen and preset could be a string not included in the literal.
95
- // Therefore, we have to use `as string`. Otherwise, it will consider preset as type never
96
- logger.warn(`Preset "${preset}" is not supported`);
105
+ logger.warn(`Preset "${preset}" is not supported`);
97
106
  }
98
107
  }
99
108
  return undefined;
@@ -124,14 +133,17 @@ export function withLocalTmpDir(fn) {
124
133
  }
125
134
  return async () => {
126
135
  const originalTmpDir = process.env['TEMP'];
136
+ const localPath = path.join(pluginWorkDir(LIGHTHOUSE_PLUGIN_SLUG), 'tmp');
127
137
  // eslint-disable-next-line functional/immutable-data
128
- process.env['TEMP'] = path.join(pluginWorkDir(LIGHTHOUSE_PLUGIN_SLUG), 'tmp');
138
+ process.env['TEMP'] = localPath;
139
+ logger.debug(`Temporarily overwriting TEMP environment variable with ${localPath} to prevent permissions error on cleanup`);
129
140
  try {
130
141
  return await fn();
131
142
  }
132
143
  finally {
133
144
  // eslint-disable-next-line functional/immutable-data
134
145
  process.env['TEMP'] = originalTmpDir;
146
+ logger.debug(`Restored TEMP environment variable to original value ${originalTmpDir}`);
135
147
  }
136
148
  };
137
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/lib/runner/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/lib/runner/utils.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,7 @@ import type { LighthouseCliFlags } from './runner/types.js';
3
3
  import type { LighthouseGroupSlug } from './types.js';
4
4
  export declare function lighthouseGroupRef(groupSlug: LighthouseGroupSlug, weight?: number): CategoryRef;
5
5
  export declare function lighthouseAuditRef(auditSlug: string, weight?: number): CategoryRef;
6
- export declare class AuditsNotImplementedError extends Error {
7
- constructor(auditSlugs: string[]);
8
- }
9
6
  export declare function validateAudits(audits: Audit[], onlyAudits: string[]): boolean;
10
- export declare class CategoriesNotImplementedError extends Error {
11
- constructor(categorySlugs: string[]);
12
- }
13
7
  export declare function validateOnlyCategories(groups: Group[], onlyCategories: string | string[]): boolean;
14
8
  export type FilterOptions = Partial<Pick<LighthouseCliFlags, 'onlyAudits' | 'onlyCategories' | 'skipAudits'>>;
15
9
  export declare function markSkippedAuditsAndGroups(audits: Audit[], groups: Group[], options?: FilterOptions): {
package/src/lib/utils.js CHANGED
@@ -16,27 +16,23 @@ export function lighthouseAuditRef(auditSlug, weight = 1) {
16
16
  weight,
17
17
  };
18
18
  }
19
- export class AuditsNotImplementedError extends Error {
20
- constructor(auditSlugs) {
21
- super(`audits: "${auditSlugs.join(', ')}" not implemented`);
19
+ class NotImplementedError extends Error {
20
+ constructor(plural, slugs) {
21
+ const formattedSlugs = slugs.map(slug => `"${slug}"`).join(', ');
22
+ super(`${plural} not implemented: ${formattedSlugs}`);
22
23
  }
23
24
  }
24
25
  export function validateAudits(audits, onlyAudits) {
25
26
  const missingAudtis = toArray(onlyAudits).filter(slug => !audits.some(audit => audit.slug === slug));
26
27
  if (missingAudtis.length > 0) {
27
- throw new AuditsNotImplementedError(missingAudtis);
28
+ throw new NotImplementedError('Audits', missingAudtis);
28
29
  }
29
30
  return true;
30
31
  }
31
- export class CategoriesNotImplementedError extends Error {
32
- constructor(categorySlugs) {
33
- super(`categories: "${categorySlugs.join(', ')}" not implemented`);
34
- }
35
- }
36
32
  export function validateOnlyCategories(groups, onlyCategories) {
37
33
  const missingCategories = toArray(onlyCategories).filter(slug => groups.every(group => group.slug !== slug));
38
34
  if (missingCategories.length > 0) {
39
- throw new CategoriesNotImplementedError(missingCategories);
35
+ throw new NotImplementedError('Categories', missingCategories);
40
36
  }
41
37
  return true;
42
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAIhF,MAAM,UAAU,kBAAkB,CAChC,SAA8B,EAC9B,MAAM,GAAG,CAAC;IAEV,OAAO;QACL,MAAM,EAAE,sBAAsB;QAC9B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,OAAO;QACb,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,MAAM,GAAG,CAAC;IAC9D,OAAO;QACL,MAAM,EAAE,sBAAsB;QAC9B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,OAAO;QACb,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAY,UAAoB;QAC9B,KAAK,CAAC,YAAY,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC9D,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,MAAe,EAAE,UAAoB;IAClE,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAC9C,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CACnD,CAAC;IACF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,yBAAyB,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IACtD,YAAY,aAAuB;QACjC,KAAK,CAAC,gBAAgB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACrE,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAe,EACf,cAAiC;IAEjC,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAC9D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAC3C,CAAC;IACF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAMD,kDAAkD;AAClD,MAAM,UAAU,0BAA0B,CACxC,MAAe,EACf,MAAe,EACf,OAAuB;IAKvB,MAAM,EACJ,UAAU,GAAG,EAAE,EACf,UAAU,GAAG,EAAE,EACf,cAAc,GAAG,EAAE,GACpB,GAAG,OAAO,IAAI,EAAE,CAAC;IAElB,IACE,cAAc,CAAC,MAAM,KAAK,CAAC;QAC3B,UAAU,CAAC,MAAM,KAAK,CAAC;QACvB,UAAU,CAAC,MAAM,KAAK,CAAC,EACvB,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,sBAAsB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnD,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACnC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAE3C,MAAM,YAAY,GAAY,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjD,GAAG,KAAK;QACR,SAAS,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;KACxE,CAAC,CAAC,CAAC;IAEJ,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAClC,YAAY;SACT,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;SACjC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CACrD,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxC,GAAG,KAAK;QACR,SAAS,EACP,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1D,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzD,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC3E,CAAC,CAAC,CAAC;IAEJ,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnD,GAAG,KAAK;QACR,SAAS,EACP,KAAK,CAAC,SAAS;YACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CACrB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CACvE;KACJ,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,iBAAiB;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,sBAAsB,CAAC,QAAQ,CAAC,KAA4B,CAAC,CAC9D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}