lighthouse-badges 1.5.2 → 1.5.4

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": "lighthouse-badges",
3
- "version": "1.5.2",
3
+ "version": "1.5.4",
4
4
  "description": "🚦Generate gh-badges (shields.io) based on Lighthouse performance.",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -8,14 +8,14 @@
8
8
  },
9
9
  "type": "module",
10
10
  "scripts": {
11
- "app:install": "bun run build && bash scripts/install-global.sh",
11
+ "app:install": "bun run build && scripts/util.sh install",
12
12
  "app:reinstall": "bun run app:uninstall && bun run app:install",
13
- "app:uninstall": "bash scripts/uninstall-global.sh",
14
- "build": "bun run build:prepare && bun run build:compile && bun run build:copy-declarations",
13
+ "app:uninstall": "scripts/util.sh uninstall",
14
+ "build": "bun run build:prepare && bun run build:compile && bun run build:copy-declarations && chmod +x dist/src/index.js",
15
15
  "build:compile": "tsc",
16
16
  "build:copy-declarations": "cp src/*.d.ts dist/src/ 2>/dev/null || true",
17
17
  "build:prepare": "bun run clean && mkdir -p dist && jq '.main = \"src/index.js\" | .bin[\"lighthouse-badges\"] = \"src/index.js\"' package.json > dist/package.json && cp README.md LICENSE.md bun.lock dist/",
18
- "ci:publish": "cd dist && npm publish",
18
+ "ci:publish": "bun run build && cd dist && npm publish",
19
19
  "clean": "rm -rf *.svg *.html coverage dist results",
20
20
  "docker:build": "bun run build && docker build --build-arg VCS_REF=`git rev-parse --short HEAD` --build-arg BUILD_DATE=`date -u +\"%Y-%m-%dT%H:%M:%SZ\"` --build-arg VERSION=latest -t emazzotta/lighthouse-badges .",
21
21
  "docker:system-test:run": "docker run emazzotta/lighthouse-badges /bin/sh -c 'lighthouse-badges -rsu https://google.com && cd /home/lighthouse && EXEC_PATH=/home/chrome/reports bun run system-test:verify'",
@@ -1 +1 @@
1
- {"version":3,"file":"argparser.d.ts","sourceRoot":"","sources":["../../src/argparser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;;wBAmDvB,MAAM,EAAE,KAAG,UAAU;;AAD3C,wBAEE"}
1
+ {"version":3,"file":"argparser.d.ts","sourceRoot":"","sources":["../../src/argparser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;;wBAoDnC,MAAM,EAAE,KAAG,UAAU;;AAD3C,wBAEE"}
package/src/argparser.js CHANGED
@@ -1,43 +1,46 @@
1
1
  import { ArgumentParser } from 'argparse';
2
2
  import packageJson from '../package.json' with { type: 'json' };
3
- const BADGE_STYLES = ['flat', 'flat-square', 'plastic', 'for-the-badge', 'social'];
4
- const createParser = () => {
5
- const parser = new ArgumentParser({
6
- description: 'Generate gh-badges (shields.io) based on lighthouse performance.',
7
- add_help: true,
8
- });
9
- parser.add_argument('-v', '--version', {
10
- action: 'version',
11
- version: packageJson.version,
12
- help: 'Show the version of the tool',
13
- });
14
- parser.add_argument('-s', '--single-badge', {
15
- action: 'store_true',
16
- help: "Output only one single badge averaging all lighthouse categories' scores",
17
- });
18
- parser.add_argument('-b', '--badge-style', {
19
- action: 'store',
20
- choices: BADGE_STYLES,
21
- default: 'flat',
22
- help: 'Define look and feel for the badge',
23
- });
24
- parser.add_argument('-o', '--output-path', {
25
- action: 'store',
26
- help: 'Define output path for artifacts',
27
- });
28
- parser.add_argument('-r', '--save-report', {
29
- action: 'store_true',
30
- help: 'Save lighthouse report as html for every supplied url',
31
- });
32
- const requiredArgs = parser.add_argument_group({ title: 'Required arguments' });
33
- requiredArgs.add_argument('-u', '--url', {
34
- action: 'store',
35
- required: true,
36
- help: 'The lighthouse badge(s) will contain the score(s) of the supplied url',
37
- });
38
- return parser;
39
- };
40
- const parser = createParser();
3
+ const BADGE_STYLES = [
4
+ 'flat',
5
+ 'flat-square',
6
+ 'plastic',
7
+ 'for-the-badge',
8
+ 'social',
9
+ ];
10
+ const parser = new ArgumentParser({
11
+ description: 'Generate gh-badges (shields.io) based on lighthouse performance.',
12
+ add_help: true,
13
+ });
14
+ parser.add_argument('-v', '--version', {
15
+ action: 'version',
16
+ version: packageJson.version,
17
+ help: 'Show the version of the tool',
18
+ });
19
+ parser.add_argument('-s', '--single-badge', {
20
+ action: 'store_true',
21
+ help: "Output only one single badge averaging all lighthouse categories' scores",
22
+ });
23
+ parser.add_argument('-b', '--badge-style', {
24
+ action: 'store',
25
+ choices: [...BADGE_STYLES],
26
+ default: 'flat',
27
+ help: 'Define look and feel for the badge',
28
+ });
29
+ parser.add_argument('-o', '--output-path', {
30
+ action: 'store',
31
+ help: 'Define output path for artifacts',
32
+ });
33
+ parser.add_argument('-r', '--save-report', {
34
+ action: 'store_true',
35
+ help: 'Save lighthouse report as html for every supplied url',
36
+ });
37
+ parser
38
+ .add_argument_group({ title: 'Required arguments' })
39
+ .add_argument('-u', '--url', {
40
+ action: 'store',
41
+ required: true,
42
+ help: 'The lighthouse badge(s) will contain the score(s) of the supplied url',
43
+ });
41
44
  export default {
42
45
  parse_args: (args) => parser.parse_args(args),
43
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"argparser.js","sourceRoot":"","sources":["../../src/argparser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAGhE,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;AAEnF,MAAM,YAAY,GAAG,GAAmB,EAAE;IACxC,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;QAChC,WAAW,EAAE,kEAAkE;QAC/E,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE;QACrC,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,IAAI,EAAE,8BAA8B;KACrC,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE;QAC1C,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,0EAA0E;KACjF,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE;QACzC,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,oCAAoC;KAC3C,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE;QACzC,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,kCAAkC;KACzC,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE;QACzC,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,uDAAuD;KAC9D,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAChF,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE;QACvC,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,uEAAuE;KAC9E,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;AAE9B,eAAe;IACb,UAAU,EAAE,CAAC,IAAe,EAAc,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAA0B;CAC9F,CAAC"}
1
+ {"version":3,"file":"argparser.js","sourceRoot":"","sources":["../../src/argparser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAGhE,MAAM,YAAY,GAA0B;IAC1C,MAAM;IACN,aAAa;IACb,SAAS;IACT,eAAe;IACf,QAAQ;CACT,CAAC;AAEF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;IAChC,WAAW,EAAE,kEAAkE;IAC/E,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE;IACrC,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,WAAW,CAAC,OAAO;IAC5B,IAAI,EAAE,8BAA8B;CACrC,CAAC,CAAC;AAEH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE;IAC1C,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,0EAA0E;CACjF,CAAC,CAAC;AAEH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE;IACzC,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC;IAC1B,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,oCAAoC;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE;IACzC,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,kCAAkC;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE;IACzC,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,uDAAuD;CAC9D,CAAC,CAAC;AAEH,MAAM;KACH,kBAAkB,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;KACnD,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE;IAC3B,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,uEAAuE;CAC9E,CAAC,CAAC;AAEL,eAAe;IACb,UAAU,EAAE,CAAC,IAAe,EAAc,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAA0B;CAC9F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../src/calculations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAYpD,eAAO,MAAM,iBAAiB,GAAI,YAAY,MAAM,KAAG,MAC6B,CAAC;AAOrF,eAAO,MAAM,eAAe,GAAI,SAAS,iBAAiB,EAAE,KAAG,iBAO9D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,SAAS,iBAAiB,EAAE,KAAG,iBAY/D,CAAC"}
1
+ {"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../src/calculations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAcpD,eAAO,MAAM,iBAAiB,GAAI,YAAY,MAAM,KAAG,MACwB,CAAC;AAEhF,eAAO,MAAM,eAAe,GAAI,SAAS,iBAAiB,EAAE,KAAG,iBAO9D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,SAAS,iBAAiB,EAAE,KAAG,iBAG/D,CAAC"}
@@ -5,25 +5,17 @@ const COLOR_THRESHOLDS = [
5
5
  [60, 'yellow'],
6
6
  [40, 'orange'],
7
7
  ];
8
- const POOR_COLOR = 'red';
9
- export const percentageToColor = (percentage) => COLOR_THRESHOLDS.find(([threshold]) => percentage >= threshold)?.[1] ?? POOR_COLOR;
10
- const averageByCategory = (category, metrics) => {
11
- const sum = metrics.reduce((total, metric) => total + (metric[category] ?? 0), 0);
12
- return Math.round(sum / metrics.length);
13
- };
8
+ const sum = (values) => values.reduce((a, b) => a + b, 0);
9
+ const average = (values) => Math.round(sum(values) / values.length);
10
+ export const percentageToColor = (percentage) => COLOR_THRESHOLDS.find(([threshold]) => percentage >= threshold)?.[1] ?? 'red';
14
11
  export const getAverageScore = (metrics) => {
15
12
  const [head] = metrics;
16
13
  if (!head)
17
14
  return {};
18
- return Object.fromEntries(Object.keys(head).map((category) => [category, averageByCategory(category, metrics)]));
15
+ return Object.fromEntries(Object.keys(head).map((category) => [category, average(metrics.map((m) => m[category] ?? 0))]));
19
16
  };
20
17
  export const getSquashedScore = (metrics) => {
21
- const [head] = metrics;
22
- if (!head)
23
- return { lighthouse: 0 };
24
- const totalScore = metrics.reduce((sum, metric) => sum + Object.values(metric).reduce((a, b) => a + b, 0), 0);
25
- const totalCategories = Object.keys(head).length;
26
- const averageScore = totalScore / (metrics.length * totalCategories);
27
- return { lighthouse: Math.round(averageScore) };
18
+ const allScores = metrics.flatMap((m) => Object.values(m));
19
+ return { lighthouse: allScores.length === 0 ? 0 : average(allScores) };
28
20
  };
29
21
  //# sourceMappingURL=calculations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../src/calculations.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAA6C;IACjE,CAAC,EAAE,EAAE,aAAa,CAAC;IACnB,CAAC,EAAE,EAAE,OAAO,CAAC;IACb,CAAC,EAAE,EAAE,aAAa,CAAC;IACnB,CAAC,EAAE,EAAE,QAAQ,CAAC;IACd,CAAC,EAAE,EAAE,QAAQ,CAAC;CACf,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,CAAC;AAEzB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,UAAkB,EAAU,EAAE,CAC9D,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;AAErF,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,OAA4B,EAAU,EAAE;IACnF,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAA4B,EAAqB,EAAE;IACjF,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CACtF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAA4B,EAAqB,EAAE;IAClF,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IAEpC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EACvE,CAAC,CACF,CAAC;IACF,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACjD,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;IAErE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;AAClD,CAAC,CAAC"}
1
+ {"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../src/calculations.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAA6C;IACjE,CAAC,EAAE,EAAE,aAAa,CAAC;IACnB,CAAC,EAAE,EAAE,OAAO,CAAC;IACb,CAAC,EAAE,EAAE,aAAa,CAAC;IACnB,CAAC,EAAE,EAAE,QAAQ,CAAC;IACd,CAAC,EAAE,EAAE,QAAQ,CAAC;CACf,CAAC;AAEF,MAAM,GAAG,GAAG,CAAC,MAAgB,EAAU,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5E,MAAM,OAAO,GAAG,CAAC,MAAgB,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,UAAkB,EAAU,EAAE,CAC9D,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAA4B,EAAqB,EAAE;IACjF,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/F,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAA4B,EAAqB,EAAE;IAClF,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;AACzE,CAAC,CAAC"}
package/src/index.js CHANGED
File without changes
@@ -1,9 +1,9 @@
1
1
  import type { LighthouseMetrics, LighthouseReport, ProcessedLighthouseResult, LighthouseConfig, LighthouseLHR, ParsedArgs, BadgeStyle } from './types.js';
2
- export declare const metricsToSvg: (lighthouseMetrics: LighthouseMetrics, badgeStyle: BadgeStyle, outputPath: string) => Promise<void>;
2
+ export declare const metricsToSvg: (metrics: LighthouseMetrics, badgeStyle: BadgeStyle, outputPath: string) => Promise<void>;
3
3
  export declare const htmlReportsToFile: (htmlReports: LighthouseReport[], outputPath: string) => Promise<void>;
4
- export declare const processRawLighthouseResult: (data: LighthouseLHR, html: string, url: string, shouldSaveReport: boolean) => ProcessedLighthouseResult;
4
+ export declare const processRawLighthouseResult: (lhr: LighthouseLHR, html: string, url: string, shouldSaveReport: boolean) => ProcessedLighthouseResult;
5
5
  type CalculateLighthouseMetricsFn = (url: string, shouldSaveReport: boolean, lighthouseParameters?: LighthouseConfig) => Promise<ProcessedLighthouseResult>;
6
6
  export declare const calculateLighthouseMetrics: CalculateLighthouseMetricsFn;
7
- export declare const processParameters: (parserArgs: ParsedArgs, calculateFn: CalculateLighthouseMetricsFn, lighthouseParameters?: LighthouseConfig) => Promise<void>;
7
+ export declare const processParameters: (args: ParsedArgs, calculateFn: CalculateLighthouseMetricsFn, lighthouseParameters?: LighthouseConfig) => Promise<void>;
8
8
  export {};
9
9
  //# sourceMappingURL=lighthouse-badges.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lighthouse-badges.d.ts","sourceRoot":"","sources":["../../src/lighthouse-badges.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,UAAU,EACX,MAAM,YAAY,CAAC;AAkCpB,eAAO,MAAM,YAAY,GACvB,mBAAmB,iBAAiB,EACpC,YAAY,UAAU,EACtB,YAAY,MAAM,KACjB,OAAO,CAAC,IAAI,CAMd,CAAC;AAYF,eAAO,MAAM,iBAAiB,GAC5B,aAAa,gBAAgB,EAAE,EAC/B,YAAY,MAAM,KACjB,OAAO,CAAC,IAAI,CAOd,CAAC;AAUF,eAAO,MAAM,0BAA0B,GACrC,MAAM,aAAa,EACnB,MAAM,MAAM,EACZ,KAAK,MAAM,EACX,kBAAkB,OAAO,KACxB,yBAGD,CAAC;AAEH,KAAK,4BAA4B,GAAG,CAClC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,OAAO,EACzB,oBAAoB,CAAC,EAAE,gBAAgB,KACpC,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAExC,eAAO,MAAM,0BAA0B,EAAE,4BAkBxC,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,YAAY,UAAU,EACtB,aAAa,4BAA4B,EACzC,uBAAsB,gBAAqB,KAC1C,OAAO,CAAC,IAAI,CAkBd,CAAC"}
1
+ {"version":3,"file":"lighthouse-badges.d.ts","sourceRoot":"","sources":["../../src/lighthouse-badges.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,UAAU,EACX,MAAM,YAAY,CAAC;AA6BpB,eAAO,MAAM,YAAY,GACvB,SAAS,iBAAiB,EAC1B,YAAY,UAAU,EACtB,YAAY,MAAM,KACjB,OAAO,CAAC,IAAI,CAId,CAAC;AAQF,eAAO,MAAM,iBAAiB,GAC5B,aAAa,gBAAgB,EAAE,EAC/B,YAAY,MAAM,KACjB,OAAO,CAAC,IAAI,CAQd,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,KAAK,aAAa,EAClB,MAAM,MAAM,EACZ,KAAK,MAAM,EACX,kBAAkB,OAAO,KACxB,yBAQD,CAAC;AAEH,KAAK,4BAA4B,GAAG,CAClC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,OAAO,EACzB,oBAAoB,CAAC,EAAE,gBAAgB,KACpC,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAExC,eAAO,MAAM,0BAA0B,EAAE,4BAkBxC,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,UAAU,EAChB,aAAa,4BAA4B,EACzC,uBAAsB,gBAAqB,KAC1C,OAAO,CAAC,IAAI,CAWd,CAAC"}
@@ -13,38 +13,33 @@ const CHROME_FLAGS = [
13
13
  '--no-first-run',
14
14
  '--disable-default-apps',
15
15
  ];
16
- const badgeFilePath = (outputPath, metricKey) => path.join(outputPath, `${metricKey.replace(/ /g, '_')}.svg`);
17
- const buildBadgeSvg = (metricKey, score, badgeStyle) => makeBadge({
18
- label: metricKey,
19
- message: `${score}%`,
20
- color: percentageToColor(score),
21
- style: badgeStyle,
22
- });
23
16
  const saveBadge = async (outputPath, metricKey, score, badgeStyle) => {
24
- const filepath = badgeFilePath(outputPath, metricKey);
25
- await fs.writeFile(filepath, buildBadgeSvg(metricKey, score, badgeStyle));
17
+ const filepath = path.join(outputPath, `${metricKey.replace(/ /g, '_')}.svg`);
18
+ const svg = makeBadge({
19
+ label: metricKey,
20
+ message: `${score}%`,
21
+ color: percentageToColor(score),
22
+ style: badgeStyle,
23
+ });
24
+ await fs.writeFile(filepath, svg);
26
25
  process.stdout.write(`Saved svg to ${filepath}\n`);
27
26
  };
28
- export const metricsToSvg = async (lighthouseMetrics, badgeStyle, outputPath) => {
29
- await Promise.all(Object.entries(lighthouseMetrics).map(([metricKey, score]) => saveBadge(outputPath, metricKey, score, badgeStyle)));
27
+ export const metricsToSvg = async (metrics, badgeStyle, outputPath) => {
28
+ await Promise.all(Object.entries(metrics).map(([key, score]) => saveBadge(outputPath, key, score, badgeStyle)));
30
29
  };
31
- const saveHtmlReport = async (outputPath, url, htmlContent) => {
30
+ const saveHtmlReport = async (outputPath, url, html) => {
32
31
  const filepath = path.join(outputPath, `${urlEscaper(url)}.html`);
33
- await fs.writeFile(filepath, htmlContent);
32
+ await fs.writeFile(filepath, html);
34
33
  process.stdout.write(`Saved report to ${filepath}\n`);
35
34
  };
36
35
  export const htmlReportsToFile = async (htmlReports, outputPath) => {
37
- const savePromises = htmlReports.flatMap((report) => Object.entries(report)
38
- .filter((entry) => typeof entry[1] === 'string')
39
- .map(([url, content]) => saveHtmlReport(outputPath, url, content)));
40
- await Promise.all(savePromises);
36
+ await Promise.all(htmlReports.flatMap((report) => Object.entries(report).flatMap(([url, content]) => typeof content === 'string' ? [saveHtmlReport(outputPath, url, content)] : [])));
41
37
  };
42
- const extractLighthouseMetrics = (categories) => Object.fromEntries(Object.entries(categories).map(([category, { score }]) => [
43
- `lighthouse ${category.toLowerCase()}`,
44
- score * 100,
45
- ]));
46
- export const processRawLighthouseResult = (data, html, url, shouldSaveReport) => ({
47
- metrics: extractLighthouseMetrics(data.categories),
38
+ export const processRawLighthouseResult = (lhr, html, url, shouldSaveReport) => ({
39
+ metrics: Object.fromEntries(Object.entries(lhr.categories).map(([category, { score }]) => [
40
+ `lighthouse ${category.toLowerCase()}`,
41
+ score * 100,
42
+ ])),
48
43
  report: { [url]: shouldSaveReport ? html : false },
49
44
  });
50
45
  export const calculateLighthouseMetrics = async (url, shouldSaveReport, lighthouseParameters = {}) => {
@@ -58,16 +53,14 @@ export const calculateLighthouseMetrics = async (url, shouldSaveReport, lighthou
58
53
  await chrome.kill();
59
54
  }
60
55
  };
61
- export const processParameters = async (parserArgs, calculateFn, lighthouseParameters = {}) => {
62
- const outputPath = parserArgs.output_path ?? process.cwd();
56
+ export const processParameters = async (args, calculateFn, lighthouseParameters = {}) => {
57
+ const outputPath = args.output_path ?? process.cwd();
63
58
  await fs.mkdir(outputPath, { recursive: true });
64
- const { metrics, report } = await calculateFn(parserArgs.url, parserArgs.save_report, lighthouseParameters);
65
- const scoreResults = parserArgs.single_badge
66
- ? getSquashedScore([metrics])
67
- : getAverageScore([metrics]);
59
+ const { metrics, report } = await calculateFn(args.url, args.save_report, lighthouseParameters);
60
+ const scores = args.single_badge ? getSquashedScore([metrics]) : getAverageScore([metrics]);
68
61
  await Promise.all([
69
62
  htmlReportsToFile([report], outputPath),
70
- metricsToSvg(scoreResults, parserArgs.badge_style, outputPath),
63
+ metricsToSvg(scores, args.badge_style, outputPath),
71
64
  ]);
72
65
  };
73
66
  //# sourceMappingURL=lighthouse-badges.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lighthouse-badges.js","sourceRoot":"","sources":["../../src/lighthouse-badges.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lighthouse-badges.js","sourceRoot":"","sources":["../../src/lighthouse-badges.ts"],"names":[],"mappings":"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"}
package/src/main.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { calculateLighthouseMetrics, processParameters } from './lighthouse-badges.js';
1
+ import { calculateLighthouseMetrics as defaultCalculate, processParameters as defaultProcess } from './lighthouse-badges.js';
2
2
  import parser from './argparser.js';
3
3
  import type { Spinner } from './types.js';
4
4
  interface Dependencies {
5
- processParameters?: typeof processParameters;
6
- calculateLighthouseMetrics?: typeof calculateLighthouseMetrics;
5
+ processParameters?: typeof defaultProcess;
6
+ calculateLighthouseMetrics?: typeof defaultCalculate;
7
7
  parseArgs?: typeof parser.parse_args;
8
8
  }
9
9
  declare const handleUserInput: (spinner: Spinner, deps?: Dependencies) => Promise<void>;
package/src/main.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,MAAM,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAoB,MAAM,YAAY,CAAC;AAqB5D,UAAU,YAAY;IACpB,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,0BAA0B,CAAC,EAAE,OAAO,0BAA0B,CAAC;IAC/D,SAAS,CAAC,EAAE,OAAO,MAAM,CAAC,UAAU,CAAC;CACtC;AAED,QAAA,MAAM,eAAe,GAAU,SAAS,OAAO,EAAE,OAAM,YAAiB,KAAG,OAAO,CAAC,IAAI,CAmBtF,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,IAAI,gBAAgB,EAC9C,iBAAiB,IAAI,cAAc,EACpC,MAAM,wBAAwB,CAAC;AAChC,OAAO,MAAM,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAoB,MAAM,YAAY,CAAC;AAiB5D,UAAU,YAAY;IACpB,iBAAiB,CAAC,EAAE,OAAO,cAAc,CAAC;IAC1C,0BAA0B,CAAC,EAAE,OAAO,gBAAgB,CAAC;IACrD,SAAS,CAAC,EAAE,OAAO,MAAM,CAAC,UAAU,CAAC;CACtC;AAED,QAAA,MAAM,eAAe,GAAU,SAAS,OAAO,EAAE,OAAM,YAAiB,KAAG,OAAO,CAAC,IAAI,CAiBtF,CAAC;AAEF,eAAe,eAAe,CAAC"}
package/src/main.js CHANGED
@@ -1,30 +1,28 @@
1
1
  import fs from 'fs/promises';
2
- import { calculateLighthouseMetrics, processParameters } from './lighthouse-badges.js';
2
+ import { calculateLighthouseMetrics as defaultCalculate, processParameters as defaultProcess, } from './lighthouse-badges.js';
3
3
  import parser from './argparser.js';
4
- const DEFAULT_LIGHTHOUSE_CONFIG = {
5
- extends: 'lighthouse:default',
6
- };
4
+ const DEFAULT_LIGHTHOUSE_CONFIG = { extends: 'lighthouse:default' };
7
5
  const loadLighthouseConfig = async () => {
8
6
  const configPath = process.env.LIGHTHOUSE_BADGES_CONFIGURATION_PATH;
9
7
  if (!configPath)
10
8
  return DEFAULT_LIGHTHOUSE_CONFIG;
11
- process.stdout.write(` LIGHTHOUSE_BADGES_CONFIGURATION_PATH: ${configPath}\n`);
9
+ process.stdout.write(`LIGHTHOUSE_BADGES_CONFIGURATION_PATH: ${configPath}\n`);
12
10
  try {
13
- const fileContent = await fs.readFile(configPath, 'utf8');
14
- return JSON.parse(fileContent);
11
+ return JSON.parse(await fs.readFile(configPath, 'utf8'));
15
12
  }
16
13
  catch (error) {
17
- const message = error instanceof Error ? error.message : String(error);
18
- throw new Error(`Failed to load Lighthouse configuration from ${configPath}: ${message}`, { cause: error });
14
+ throw new Error(`Failed to load Lighthouse configuration from ${configPath}`, { cause: error });
19
15
  }
20
16
  };
21
17
  const handleUserInput = async (spinner, deps = {}) => {
22
- const { processParameters: processParametersFn = processParameters, calculateLighthouseMetrics: calculateLighthouseMetricsFn = calculateLighthouseMetrics, parseArgs = parser.parse_args, } = deps;
18
+ const parseArgs = deps.parseArgs ?? parser.parse_args;
19
+ const calculate = deps.calculateLighthouseMetrics ?? defaultCalculate;
20
+ const runProcess = deps.processParameters ?? defaultProcess;
23
21
  spinner.start();
24
22
  try {
25
- const parsedArgs = await parseArgs();
23
+ const args = await parseArgs();
26
24
  const lighthouseParameters = await loadLighthouseConfig();
27
- await processParametersFn(parsedArgs, calculateLighthouseMetricsFn, lighthouseParameters);
25
+ await runProcess(args, calculate, lighthouseParameters);
28
26
  }
29
27
  catch (err) {
30
28
  const error = err instanceof Error ? err : new Error(String(err));
package/src/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,MAAM,MAAM,gBAAgB,CAAC;AAGpC,MAAM,yBAAyB,GAAqB;IAClD,OAAO,EAAE,oBAAoB;CAC9B,CAAC;AAEF,MAAM,oBAAoB,GAAG,KAAK,IAA+B,EAAE;IACjE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC;IACpE,IAAI,CAAC,UAAU;QAAE,OAAO,yBAAyB,CAAC;IAElD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,UAAU,IAAI,CAAC,CAAC;IAE/E,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAqB,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,gDAAgD,UAAU,KAAK,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9G,CAAC;AACH,CAAC,CAAC;AAQF,MAAM,eAAe,GAAG,KAAK,EAAE,OAAgB,EAAE,OAAqB,EAAE,EAAiB,EAAE;IACzF,MAAM,EACJ,iBAAiB,EAAE,mBAAmB,GAAG,iBAAiB,EAC1D,0BAA0B,EAAE,4BAA4B,GAAG,0BAA0B,EACrF,SAAS,GAAG,MAAM,CAAC,UAAU,GAC9B,GAAG,IAAI,CAAC;IAET,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,SAAS,EAAE,CAAC;QACrC,MAAM,oBAAoB,GAAG,MAAM,oBAAoB,EAAE,CAAC;QAC1D,MAAM,mBAAmB,CAAC,UAAU,EAAE,4BAA4B,EAAE,oBAAoB,CAAC,CAAC;IAC5F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EACL,0BAA0B,IAAI,gBAAgB,EAC9C,iBAAiB,IAAI,cAAc,GACpC,MAAM,wBAAwB,CAAC;AAChC,OAAO,MAAM,MAAM,gBAAgB,CAAC;AAGpC,MAAM,yBAAyB,GAAqB,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEtF,MAAM,oBAAoB,GAAG,KAAK,IAA+B,EAAE;IACjE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC;IACpE,IAAI,CAAC,UAAU;QAAE,OAAO,yBAAyB,CAAC;IAElD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,UAAU,IAAI,CAAC,CAAC;IAE9E,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAqB,CAAC;IAC/E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAClG,CAAC;AACH,CAAC,CAAC;AAQF,MAAM,eAAe,GAAG,KAAK,EAAE,OAAgB,EAAE,OAAqB,EAAE,EAAiB,EAAE;IACzF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,0BAA0B,IAAI,gBAAgB,CAAC;IACtE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,IAAI,cAAc,CAAC;IAE5D,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;QAC/B,MAAM,oBAAoB,GAAG,MAAM,oBAAoB,EAAE,CAAC;QAC1D,MAAM,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
package/src/types.d.ts CHANGED
@@ -22,18 +22,13 @@ export interface LighthouseConfig {
22
22
  };
23
23
  [key: string]: unknown;
24
24
  }
25
- export type LighthouseCategories = Record<string, {
26
- score: number;
27
- [key: string]: unknown;
28
- }>;
29
25
  export interface LighthouseLHR {
30
- categories: LighthouseCategories;
26
+ categories: Record<string, {
27
+ score: number;
28
+ [key: string]: unknown;
29
+ }>;
31
30
  [key: string]: unknown;
32
31
  }
33
- export interface LighthouseRunnerResult {
34
- report: string;
35
- lhr: LighthouseLHR;
36
- }
37
32
  export interface Spinner {
38
33
  start: () => void;
39
34
  stop: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe,GAAG,QAAQ,CAAC;AAEzF,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;AAE9D,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,CAAC;AAE7F,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,oBAAoB,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,aAAa,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe,GAAG,QAAQ,CAAC;AAEzF,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;AAE9D,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IACtE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB"}