Full Code of emazzotta/lighthouse-badges for AI

master 8e0e2f7bfcc3 cached
31 files
232.7 KB
100.9k tokens
18 symbols
1 requests
Download .txt
Showing preview only (244K chars total). Download the full file or copy to clipboard to get everything.
Repository: emazzotta/lighthouse-badges
Branch: master
Commit: 8e0e2f7bfcc3
Files: 31
Total size: 232.7 KB

Directory structure:
gitextract_i2g25n_w/

├── .dockerignore
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── dependabot.yml
│   └── workflows/
│       └── build.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE.md
├── PULL_REQUEST_TEMPLATE.md
├── README.md
├── __tests__/
│   ├── argparser.test.ts
│   ├── calculations.test.ts
│   ├── lighthouse-badges.test.ts
│   ├── main.test.ts
│   └── util.test.ts
├── assets/
│   └── report/
│       └── emanuelemazzotta.com.json
├── eslint.config.js
├── package.json
├── scripts/
│   └── util.sh
├── src/
│   ├── argparser.ts
│   ├── calculations.ts
│   ├── clui.d.ts
│   ├── index.ts
│   ├── lighthouse-badges.ts
│   ├── main.ts
│   ├── types.ts
│   └── util.ts
└── tsconfig.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .dockerignore
================================================
*
!Dockerfile
!dist
!dist/**


================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

github: [emazzotta]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: "https://www.paypal.me/emanuelemazzotta"



================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve

---

Thanks for reporting an issue for lighthouse-badges, please review the tasks below before submitting the issue.

### Steps to Reproduce

1. TODO
2. TODO
3. TODO

### Expected Behaviour

Describe what should happen

### Actual Behaviour

Describe what happens instead

### Stacktrace

TODO

### Environment Information

- **Operating System**: TODO
- **Lighthouse-Badges Version:** TODO
- **Node Version:** TODO

### Additional Information 

(Please tick where applicable)
- [ ] The issue persists with the npm version
- [ ] The issue persists with the docker version



================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project

---

### Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

### Describe the solution you'd like
A clear and concise description of what you want to happen.

### Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

### Additional context
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: bun
  directory: "/"
  schedule:
    interval: daily
    time: "04:00"
  open-pull-requests-limit: 10


================================================
FILE: .github/workflows/build.yml
================================================
name: Build, Test & Deploy

on:
  push:
    branches:
      - master
  pull_request:

env:
  TAG_PREFIX: emazzotta/lighthouse-badges
  BUN_VERSION: 1.3.12

permissions:
  id-token: write
  contents: read
  packages: write

jobs:
  build-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Setup Bun
        uses: oven-sh/setup-bun@v2
        with:
          bun-version: ${{ env.BUN_VERSION }}

      - name: Cache bun dependencies
        uses: actions/cache@v5
        with:
          path: ~/.bun/install/cache
          key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
          restore-keys: |
            ${{ runner.os }}-bun-

      - name: Install, Lint, Build
        run: |
          bun install --frozen-lockfile
          bun run lint
          bun run build

      - name: Unit & Integration Test
        run: bun run test:coverage

      - name: Upload Coverage to Codecov
        uses: codecov/codecov-action@v6
        with:
          files: coverage/lcov.info
          token: ${{ secrets.CODECOV_TOKEN }}
          fail_ci_if_error: false

      - name: System Test
        run: bun run system-test:light-run

      - name: Upload dist artifact
        uses: actions/upload-artifact@v7
        with:
          name: dist
          path: dist/
          retention-days: 1

  docker-build-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Setup Bun
        uses: oven-sh/setup-bun@v2
        with:
          bun-version: ${{ env.BUN_VERSION }}

      - name: Cache bun dependencies
        uses: actions/cache@v5
        with:
          path: ~/.bun/install/cache
          key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
          restore-keys: |
            ${{ runner.os }}-bun-

      - name: Install and Build
        run: |
          bun install --frozen-lockfile
          bun run build

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v4
        with:
          version: latest

      - name: Docker Build (amd64 for testing)
        uses: docker/build-push-action@v7
        with:
          context: .
          file: ./Dockerfile
          tags: ${{ env.TAG_PREFIX }}:latest
          cache-from: type=gha,scope=linux/amd64
          cache-to: type=gha,mode=max,scope=linux/amd64
          load: true
          platforms: linux/amd64
          provenance: false

      - name: Docker System Test
        run: bun run docker:system-test:run

  docker-deploy:
    runs-on: ubuntu-latest
    needs: [build-test, docker-build-test]
    if: github.ref == 'refs/heads/master'
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Download dist artifact
        uses: actions/download-artifact@v8
        with:
          name: dist
          path: dist/

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v4

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v4
        with:
          version: latest

      - name: Login to DockerHub
        uses: docker/login-action@v4
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Resolve image tags
        run: |
          echo "GIT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
          echo "PACKAGE_VERSION=$(jq -r '.version' package.json)" >> $GITHUB_ENV

      - name: Build and push multi-arch image
        uses: docker/build-push-action@v7
        with:
          context: .
          file: ./Dockerfile
          platforms: linux/amd64,linux/arm64
          push: true
          tags: |
            ${{ env.TAG_PREFIX }}:latest
            ${{ env.TAG_PREFIX }}:${{ env.PACKAGE_VERSION }}
            ${{ env.TAG_PREFIX }}:${{ env.GIT_SHA }}
          cache-from: |
            type=gha,scope=linux/amd64
            type=gha,scope=linux/arm64
          cache-to: |
            type=gha,mode=max,scope=linux/amd64
            type=gha,mode=max,scope=linux/arm64
          provenance: false
          sbom: false

  npm-publish:
    runs-on: ubuntu-latest
    needs: [build-test, docker-build-test]
    if: github.ref == 'refs/heads/master'
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Setup Bun
        uses: oven-sh/setup-bun@v2
        with:
          bun-version: ${{ env.BUN_VERSION }}

      - name: Cache bun dependencies
        uses: actions/cache@v5
        with:
          path: ~/.bun/install/cache
          key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
          restore-keys: |
            ${{ runner.os }}-bun-

      - name: Install
        run: bun install --frozen-lockfile

      - name: Setup Node.js for GitHub Packages
        uses: actions/setup-node@v6
        with:
          node-version: '24'
          registry-url: 'https://npm.pkg.github.com'

      - name: Publish to GitHub Packages
        run: scripts/util.sh publish-if-new "GitHub Packages"
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Rename package for npm.js registry
        run: |
          jq '.name = "lighthouse-badges"' package.json > package.json.tmp
          mv package.json.tmp package.json

      - name: Setup Node.js for npm.js
        uses: actions/setup-node@v6
        with:
          node-version: '24'
          registry-url: 'https://registry.npmjs.org'

      - name: Publish to npm.js Registry
        run: scripts/util.sh publish-if-new "npm.js"


================================================
FILE: .gitignore
================================================
$RECYCLE.BIN
*$py.class
*.DS_Store*
*.a
*.app
*.bak
*.cab
*.class
*.com
*.d
*.dSYM/
*.dat
*.db
*.dmg
*.dylib
*.ear
*.egg
*.egg-info/
*.elf
*.exe
*.gch
*.gz
*.hex
*.hmap
*.i*86
*.ipa
*.iws
*.ko
*.la
*.launch
*.lib
*.lnk
*.lo
*.log
*.log*
*.log.*
*.manifest
*.mo
*.msi
*.msm
*.msp
*.o
*.obj
*.out
*.p12
*.pbxuser
*.pch
*.pid
*.pot
*.py[cod]
*.pyc
*.pydevproject
*.rar
*.sass-cache
*.seed
*.so
*.so.*
*.spec
*.sql
*.su
*.sublime*
*.swp
*.tar
*.tmp
*.war
*.x86_64
*.xccheckout
*.xcuserstate
*node_modules*
*~.nib
.AppleDB
.AppleDesktop
.AppleDouble
.DS_Store
.DocumentRevisions-V100
.LSOverride
.Python
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
._*
.apdisk
.balder_profile
.buildpath
.cache
.classpath
.coverage
.cproject
.eggs
.env
.externalToolBuilders
.factorypath
.fseventsd
.gradle
.grunt
.hypothesis
*.iml
.idea
.idea_modules
.installed.cfg
.ipynb_checkpoints
.loadpath
.lock-wscript
.metadata
.mtj.tmp
.node_repl_history
.npm
.nyc_output
.project
.python-version
.recommenders
.sass-cache
.settings
.springBeans
.target
.tern-project
.texlipse
.tox
.~lock.*
CMakeCache.txt
CMakeFiles
CMakeScripts
CTestTestfile.cmake
CUnit
Desktop.ini
Thumbs.db
__pycache__
backup
coverage
coverage.xml
data
dist
eggs
gen
lib-cov
lib64
logs3
node_modules
nohup.out
nosetests.xml
npm-debug.log*
out
target
testlib
tmp
var
venv
results
/*.svg
/*.html
__test_output__

================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
  address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at hello@mazzotta.me. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [https://contributor-covenant.org/version/1/4][version]

[homepage]: https://contributor-covenant.org
[version]: https://contributor-covenant.org/version/1/4/


================================================
FILE: CONTRIBUTING.md
================================================
# Guide for contributors

* **Would you like to ask a question, discuss feature ideas or noticed a (potential) bug?** Please open an issue here on github.
* **Would you like to contribute code?** Your help is very welcome! This doc covers how to become a contributor and submit code to the project.

## Submitting pull requests

First of all, thanks very much for spending the time to improve the code! 🎉

Please don't submit a pull request until the code is completely ready.

If you're planning to change lots of code, it would be preferable if you submitted several smaller pull requests for independent changes, instead of one big batch with everything in it. Smaller changes are easier to validate and discuss, and it's easier to catch unintended changes with those. 

Please make sure your pull request includes only the changes necessary for your code. Don't submit the lines that have only formatting changes, unless this is required by the linter. Don't submit files that are not important for your particular change.

### Before submitting the request

In order to make it easier for us to develop together and maintain the code easier, here's what would be ideal:

* Make sure the code is passing the style guide checks.
* Please supply automated tests for any new functionality you are adding. With these in place, people who modify the same code in the future can easily ensure that they've not broken something that is important to you. 
* If you are adding or removing command line options, please change the documentation.
* Please run all tests to ensure everything still works as expected.


================================================
FILE: Dockerfile
================================================
FROM oven/bun:alpine

RUN apk --update --no-cache add chromium && \
    mkdir -p /home/lighthouse

ARG BUILD_DATE
ARG VCS_REF
ARG VERSION

LABEL maintainer="hello@mazzotta.me" \
    org.label-schema.build-date=$BUILD_DATE \
    org.label-schema.name="Lighthouse Badges" \
    org.label-schema.description="Generate gh-badges (shields.io) based on lighthouse performance." \
    org.label-schema.url="https://github.com/emazzotta/lighthouse-badges" \
    org.label-schema.vcs-ref=$VCS_REF \
    org.label-schema.vcs-url="https://github.com/emazzotta/lighthouse-badges" \
    org.label-schema.vendor="Emanuele Mazzotta" \
    org.label-schema.version=$VERSION \
    org.label-schema.schema-version="1.0"

WORKDIR /home/lighthouse

COPY dist/package.json dist/bun.lock ./
RUN bun install --frozen-lockfile --production && \
    rm -rf /root/.bun

COPY dist .

RUN BIN_DIR="/usr/local/bin" && \
    mkdir -p "$BIN_DIR" && \
    ln -sf "/home/lighthouse/src/index.js" "$BIN_DIR/lighthouse-badges" && \
    chmod +x "$BIN_DIR/lighthouse-badges"

ENV CHROME_PATH=/usr/bin/chromium-browser

RUN addgroup -S chrome && adduser -S -g chrome chrome \
    && mkdir -p /home/chrome/reports && chown -R chrome:chrome /home/chrome

VOLUME /home/chrome/reports
WORKDIR /home/chrome/reports

USER chrome


================================================
FILE: LICENSE.md
================================================
The MIT License (MIT)

Copyright (c) 2024 Emanuele Mazzotta

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: PULL_REQUEST_TEMPLATE.md
================================================
## Short Description

### Major Changes



================================================
FILE: README.md
================================================
[![Build Status](https://github.com/emazzotta/lighthouse-badges/actions/workflows/build.yml/badge.svg)](https://github.com/emazzotta/lighthouse-badges/actions/workflows/build.yml)
[![NPM downloads](https://img.shields.io/npm/dt/lighthouse-badges?color=blue)](https://www.npmjs.org/package/lighthouse-badges)
[![NPM version](https://img.shields.io/npm/v/lighthouse-badges.svg)](https://www.npmjs.org/package/lighthouse-badges)
[![License](https://img.shields.io/:license-mit-blue.svg?style=flat)](https://emanuelemazzotta.com/mit-license)

# Lighthouse Badges

[![Lighthouse](./assets/img/lighthouse.svg)](https://github.com/GoogleChrome/lighthouse)

This package allows you to easily create Lighthouse badges for all Lighthouse categories.  
Ever wanted to brag about your sites's awesome Lighthouse performance? Then this is the package for you!  

## Examples

### All Badges

[![Lighthouse Accessibility Badge](./assets/img/scores/lighthouse_accessibility.svg)](https://github.com/emazzotta/lighthouse-badges)
[![Lighthouse Best Practices Badge](./assets/img/scores/lighthouse_best-practices.svg)](https://github.com/emazzotta/lighthouse-badges)
[![Lighthouse Performance Badge](./assets/img/scores/lighthouse_performance.svg)](https://github.com/emazzotta/lighthouse-badges)
[![Lighthouse PWA Badge](./assets/img/scores/lighthouse_pwa.svg)](https://github.com/emazzotta/lighthouse-badges)
[![Lighthouse SEO Badge](./assets/img/scores/lighthouse_seo.svg)](https://github.com/emazzotta/lighthouse-badges)

### Single Badge

[![Lighthouse](./assets/img/scores/lighthouse.svg)](https://github.com/emazzotta/lighthouse-badges)

## Usage

### Help

```txt
usage: lighthouse-badges [-h] [-v] [-s] [-b {flat,flat-square,plastic,for-the-badge,social}] [-o OUTPUT_PATH] [-r] -u URL

Generate gh-badges (shields.io) based on lighthouse performance.

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -s, --single-badge    Output only one single badge averaging all lighthouse categories' scores
  -b, --badge-style {flat,flat-square,plastic,for-the-badge,social}
                        Define look and feel for the badge
  -o, --output-path OUTPUT_PATH
                        Define output path for artifacts
  -r, --save-report     Save lighthouse report as html for every supplied url

Required arguments:
  -u URL, --url URL     The lighthouse badge(s) will contain the score(s) of all the supplied url
```

Additionally, you can pass parameters configurations to the lighthouse process directly via environment variable path to the config file:

```bash
# The variable name matters, but the path can be anything
export LIGHTHOUSE_BADGES_CONFIGURATION_PATH="~/.lhb-config.json" 

# "extends": "lighthouse:default" is needed, the rest is optional
cat << EOF >! $LIGHTHOUSE_BADGES_CONFIGURATION_PATH
{
  "extends": "lighthouse:default",
  "settings": {
    "extraHeaders": {
      "Authorization": "Bearer ..."
    },
    "onlyCategories": [
      "performance",
      "pwa"
    ],
    "formFactor": "mobile"
  }
}
EOF

lighthouse-badges --url https://www.youtube.com/
```

See [here](https://github.com/GoogleChrome/lighthouse/blob/main/docs/configuration.md) for more configuration examples in the official lighthouse docs.

### Run

Bun >= 1.0.0 is required.

#### Option 1: bun
```bash
bun install -g lighthouse-badges
lighthouse-badges --url https://www.youtube.com/ -o test_results
```

#### Option 2: bunx
```bash
bunx lighthouse-badges --url https://www.youtube.com/ -o test_results
```

#### Option 3: Docker
```bash
# May alter lighthouse results due to performance differences compared to running directly on host
docker run --rm \
    -v $PWD/test_results:/home/chrome/reports \
    emazzotta/lighthouse-badges \
    /bin/sh -c "lighthouse-badges --url https://www.youtube.com/"
```

### Develop

```bash
bun run start # To run the lighthouse-badges code on google.com
```

## Contributing

See [contribution guideline](./CONTRIBUTING.md)

## Sponsors

Sponsored by [JetBrains](https://www.jetbrains.com/?from=Lighthouse-Badges)

<a href="https://www.jetbrains.com/?from=Lighthouse-Badges">
  <img alt="Jetbrains Logo" src="./assets/img/jetbrains.svg" height="100">
</a>

## Author

[Emanuele Mazzotta](mailto:hello@mazzotta.me)


================================================
FILE: __tests__/argparser.test.ts
================================================
import { describe, it, expect } from 'bun:test';
import parser from '../src/argparser';

describe('test argparser', () => {
  const baseUrl = 'https://emanuelemazzotta.com';

  it('should return expected default values', () => {
    const actualArgs = parser.parse_args(['--url', baseUrl]);
    expect(actualArgs.single_badge).toBe(false);
    expect(actualArgs.badge_style).toBe('flat');
    expect(actualArgs.save_report).toBe(false);
    expect(actualArgs.url).toStrictEqual(baseUrl);
  });

  it('should overwrite values', () => {
    const actualArgs = parser.parse_args([
      '--single-badge',
      '--save-report',
      '--badge-style', 'flat-square',
      '--url', baseUrl,
    ]);

    expect(actualArgs.single_badge).toBe(true);
    expect(actualArgs.badge_style).toBe('flat-square');
    expect(actualArgs.save_report).toBe(true);
    expect(actualArgs.url).toStrictEqual(baseUrl);
  });
});



================================================
FILE: __tests__/calculations.test.ts
================================================
import { describe, it, expect } from 'bun:test';
import { getAverageScore, getSquashedScore, percentageToColor } from '../src/calculations';

describe('calculations', () => {
  describe('percentageToColor', () => {
    it('should return brightgreen for very high number', () => {
      expect(percentageToColor(97)).toBe('brightgreen');
    });

    it('should return green for high number', () => {
      expect(percentageToColor(92)).toBe('green');
    });

    it('should return yellowgreen for medium high number', () => {
      expect(percentageToColor(85)).toBe('yellowgreen');
    });

    it('should return yellow for medium number', () => {
      expect(percentageToColor(62)).toBe('yellow');
    });

    it('should return orange for low number', () => {
      expect(percentageToColor(45)).toBe('orange');
    });

    it('should return red for very low number', () => {
      expect(percentageToColor(23)).toBe('red');
    });
  });

  describe('getAverageScore', () => {
    it('should calculate the expected average', () => {
      const expectedResult = {
        'lighthouse accessibility': 60,
        'lighthouse performance': 51,
      };
      const input = [
        { 'lighthouse accessibility': 100, 'lighthouse performance': 52 },
        { 'lighthouse accessibility': 20, 'lighthouse performance': 50 },
      ];
      const actualResult = getAverageScore(input);
      expect(expectedResult).toStrictEqual(actualResult);
    });

    it('should round the expected average correctly', () => {
      const expectedResult = {
        'lighthouse accessibility': 99,
        'lighthouse performance': 99,
        'lighthouse progressive web app': 99,
        'lighthouse best practices': 99,
      };
      const input = [
        {
          'lighthouse accessibility': 100,
          'lighthouse performance': 100,
          'lighthouse progressive web app': 100,
          'lighthouse best practices': 100,
        },
        {
          'lighthouse accessibility': 98.9,
          'lighthouse performance': 98.9,
          'lighthouse progressive web app': 98.9,
          'lighthouse best practices': 98.9,
        },
      ];
      const actualResult = getAverageScore(input);
      expect(expectedResult).toStrictEqual(actualResult);
    });

    it('should return empty object for empty input', () => {
      const result = getAverageScore([]);
      expect(result).toStrictEqual({});
    });
  });

  describe('getSquashedScore', () => {
    it('should calculate the expected squashed average', () => {
      const expectedResult = { lighthouse: 50 };
      const input = [
        { 'lighthouse accessibility': 100, 'lighthouse performance': 60 },
        { 'lighthouse accessibility': 20, 'lighthouse performance': 20 },
      ];
      const actualResult = getSquashedScore(input);
      expect(expectedResult).toStrictEqual(actualResult);
    });

    it('should round the expected squashed average correctly', () => {
      const expectedResult = { lighthouse: 83 };
      const input = [
        {
          'lighthouse accessibility': 100,
          'lighthouse performance': 100,
          'lighthouse progressive web app': 55,
          'lighthouse best practices': 75,
        },
      ];
      const actualResult = getSquashedScore(input);
      expect(expectedResult).toStrictEqual(actualResult);
    });

    it('should return zero score for empty input', () => {
      const result = getSquashedScore([]);
      expect(result).toStrictEqual({ lighthouse: 0 });
    });
  });
});


================================================
FILE: __tests__/lighthouse-badges.test.ts
================================================
import { describe, it, expect, beforeEach, afterEach, mock } from 'bun:test';
import fs from 'fs';
import path from 'path';
import {
  htmlReportsToFile,
  metricsToSvg,
  processParameters,
  processRawLighthouseResult,
} from '../src/lighthouse-badges';
import parser from '../src/argparser';
import reportFixture from '../assets/report/emanuelemazzotta.com.json';
import type { LighthouseLHR, LighthouseMetrics, LighthouseReport, ProcessedLighthouseResult, LighthouseConfig } from '../src/types';

// Use a temporary directory for test outputs
const TEST_OUTPUT_DIR = path.join(process.cwd(), '__test_output__');

function cleanupTestFiles() {
  try {
    if (fs.existsSync(TEST_OUTPUT_DIR)) {
      const files = fs.readdirSync(TEST_OUTPUT_DIR);
      for (const file of files) {
        fs.unlinkSync(path.join(TEST_OUTPUT_DIR, file));
      }
      fs.rmdirSync(TEST_OUTPUT_DIR);
    }
  } catch {
    // Ignore cleanup errors
  }
}

function getTestFiles(): string[] {
  try {
    if (fs.existsSync(TEST_OUTPUT_DIR)) {
      return fs.readdirSync(TEST_OUTPUT_DIR);
    }
  } catch {
    // Ignore errors
  }
  return [];
}

describe('test lighthouse badges', () => {
  beforeEach(() => {
    cleanupTestFiles();
    if (!fs.existsSync(TEST_OUTPUT_DIR)) {
      fs.mkdirSync(TEST_OUTPUT_DIR, { recursive: true });
    }
  });

  afterEach(() => {
    cleanupTestFiles();
  });

  describe('the lighthouse command results are processed as expected', () => {
    it('should return correct metrics and no report', async () => {
      const url = 'https://emanuelemazzotta.com';
      const shouldSaveReport = false;
      const result = await processRawLighthouseResult(reportFixture as LighthouseLHR, '', url, shouldSaveReport);
      expect({
        metrics: {
          'lighthouse performance': 98,
          'lighthouse pwa': 85,
          'lighthouse accessibility': 100,
          'lighthouse best-practices': 93,
          'lighthouse seo': 100,
        },
        report: {
          [url]: false,
        },
      }).toStrictEqual(result);
    });

    it('should return correct metrics and a valid report', async () => {
      const expectedHtmlReport = '<html>Fake report</html>';
      const url = 'https://emanuelemazzotta.com';
      const shouldSaveReport = true;
      const result = await processRawLighthouseResult(
        reportFixture as LighthouseLHR,
        expectedHtmlReport,
        url,
        shouldSaveReport,
      );
      expect({
        metrics: {
          'lighthouse performance': 98,
          'lighthouse pwa': 85,
          'lighthouse accessibility': 100,
          'lighthouse best-practices': 93,
          'lighthouse seo': 100,
        },
        report: {
          [url]: expectedHtmlReport,
        },
      }).toStrictEqual(result);
    });
  });

  describe('the html reports are saved correctly', () => {
    it('should save html report', async () => {
      const htmlReports: LighthouseReport[] = [
        { 'https://emanuelemazzotta.com': 'a report' },
        { 'https://emanuelemazzotta.com/cv': 'another report' },
      ];
      await htmlReportsToFile(htmlReports, TEST_OUTPUT_DIR);

      const files = getTestFiles();
      expect(files.length).toBe(2);
      expect(files.some(f => f.includes('emanuelemazzotta_com'))).toBe(true);
      expect(files.some(f => f.includes('emanuelemazzotta_com_cv'))).toBe(true);
    });

    it('should not save html report if toggle is false', async () => {
      const htmlReports: LighthouseReport[] = [
        { 'https://example.com': false },
        { 'https://example2.com': false },
      ];
      await htmlReportsToFile(htmlReports, TEST_OUTPUT_DIR);
      expect(getTestFiles().length).toBe(0);
    });
  });

  describe('the svg files are saved correctly', () => {
    it('should save all svg files', async () => {
      const lighthouseMetrics: LighthouseMetrics = {
        'lighthouse performance': 100,
        'lighthouse pwa': 85,
        'lighthouse accessibility': 100,
        'lighthouse best-practices': 93,
        'lighthouse seo': 100,
      };

      const badgeStyle = 'flat';
      await metricsToSvg(lighthouseMetrics, badgeStyle, TEST_OUTPUT_DIR);

      const files = getTestFiles();
      expect(files.length).toBe(5);
      expect(files.some(f => f.includes('lighthouse_performance'))).toBe(true);
      expect(files.some(f => f.includes('lighthouse_accessibility'))).toBe(true);
    });
  });

  describe('test the main process function', () => {
    it('should create single badge with report', async () => {
      const args = parser.parse_args([
        '--single-badge',
        '--save-report',
        '--url', 'https://example.org',
        '--output-path', TEST_OUTPUT_DIR,
      ]);

      const mockResult = await processRawLighthouseResult(reportFixture as LighthouseLHR, '<html>Fake report</html>', 'https://example.org', args.save_report);
      const calculateLighthouseMetrics = mock(() => Promise.resolve(mockResult));
      await processParameters(args, calculateLighthouseMetrics as (url: string, shouldSaveReport: boolean, lighthouseParameters?: LighthouseConfig) => Promise<ProcessedLighthouseResult>);

      const files = getTestFiles();
      expect(files.length).toBe(2);
      expect(files.some(f => f.includes('lighthouse.svg'))).toBe(true);
      expect(files.some(f => f.includes('example_org.html'))).toBe(true);
    });

    it('should create multiple badges with report', async () => {
      const args = parser.parse_args([
        '--save-report',
        '--url', 'https://example.org',
        '--output-path', TEST_OUTPUT_DIR,
      ]);

      const mockResult = await processRawLighthouseResult(reportFixture as LighthouseLHR, '<html>Fake report</html>', 'https://example.org', args.save_report);
      const calculateLighthouseMetrics = mock(() => Promise.resolve(mockResult));
      await processParameters(args, calculateLighthouseMetrics as (url: string, shouldSaveReport: boolean, lighthouseParameters?: LighthouseConfig) => Promise<ProcessedLighthouseResult>);

      const files = getTestFiles();
      expect(files.length).toBe(6);
    });

    it('should create single badge without report', async () => {
      const args = parser.parse_args([
        '--single-badge',
        '--url', 'https://example.org',
        '--output-path', TEST_OUTPUT_DIR,
      ]);

      const mockResult = await processRawLighthouseResult(reportFixture as LighthouseLHR, '', 'https://example.org', args.save_report);
      const calculateLighthouseMetrics = mock(() => Promise.resolve(mockResult));
      await processParameters(args, calculateLighthouseMetrics as (url: string, shouldSaveReport: boolean, lighthouseParameters?: LighthouseConfig) => Promise<ProcessedLighthouseResult>);

      const files = getTestFiles();
      expect(files.length).toBe(1);
      expect(files.some(f => f.includes('lighthouse.svg'))).toBe(true);
    });

    it('should create multiple badges without report', async () => {
      const args = parser.parse_args([
        '--url', 'https://example.org',
        '--output-path', TEST_OUTPUT_DIR,
      ]);

      const mockResult = await processRawLighthouseResult(reportFixture as LighthouseLHR, '', 'https://example.org', args.save_report);
      const calculateLighthouseMetrics = mock(() => Promise.resolve(mockResult));
      await processParameters(args, calculateLighthouseMetrics as (url: string, shouldSaveReport: boolean, lighthouseParameters?: LighthouseConfig) => Promise<ProcessedLighthouseResult>);

      const files = getTestFiles();
      expect(files.length).toBe(5);
    });
  });
});



================================================
FILE: __tests__/main.test.ts
================================================
import { describe, it, expect, beforeEach, afterEach, mock } from 'bun:test';
import type { Spinner, ParsedArgs } from '../src/types';
import handleUserInput from '../src/main.js';

describe('test index', () => {
  let stderrOutput = '';
  const spinnerFake: Spinner = { start: () => null, stop: () => null };
  const stderrWrite = process.stderr.write;
  const processExit = process.exit;

  beforeEach(() => {
    process.stderr.write = (x: string | Uint8Array) => {
      stderrOutput += `${x}\n`;
      return true;
    };
    process.exit = (() => {
      // Mock exit
    }) as typeof process.exit;
    stderrOutput = '';
  });

  afterEach(() => {
    process.stderr.write = stderrWrite;
    process.exit = processExit;
  });

  it('should invoke parse args and process parameters', async () => {
    const mockParseArgs = mock(() =>
      Promise.resolve({ url: 'https://example.org', single_badge: false, badge_style: 'flat', save_report: false } as ParsedArgs)
    );
    const mockProcessParameters = mock(() => Promise.resolve());

    await handleUserInput(spinnerFake, {
      parseArgs: mockParseArgs,
      processParameters: mockProcessParameters,
    });

    expect(mockParseArgs).toHaveBeenCalledTimes(1);
    expect(mockProcessParameters).toHaveBeenCalledTimes(1);
    expect(stderrOutput).toBe('');
  });

  it('should handle parse errors gracefully', async () => {
    const mockParseArgs = mock(() =>
      Promise.reject(new Error('the following arguments are required: -u/--url'))
    );

    await handleUserInput(spinnerFake, {
      parseArgs: mockParseArgs,
    });

    expect(stderrOutput.includes('the following arguments are required: -u/--url')).toBe(true);
  });

  it('should handle processing errors gracefully', async () => {
    const mockParseArgs = mock(() =>
      Promise.resolve({ url: 'https://example.org', single_badge: false, badge_style: 'flat', save_report: false } as ParsedArgs)
    );
    const mockProcessParameters = mock(() => Promise.reject(new Error('Async error')));

    await handleUserInput(spinnerFake, {
      parseArgs: mockParseArgs,
      processParameters: mockProcessParameters,
    });

    expect(stderrOutput.includes('Error: Async error')).toBe(true);
  });
});



================================================
FILE: __tests__/util.test.ts
================================================
import { describe, it, expect } from 'bun:test';
import { urlEscaper } from '../src/util';

describe('urlEscaper', () => {
  it('strips the https scheme and replaces non-alphanumerics', () => {
    expect(urlEscaper('https://abcöd%f&/?get=hi')).toBe('abc_d_f___get_hi');
  });

  it('strips the http scheme and replaces non-alphanumerics', () => {
    expect(urlEscaper('http://abcöd%f&/?get=hi')).toBe('abc_d_f___get_hi');
  });

  it('lowercases the result', () => {
    expect(urlEscaper('HTTPS://Example.COM/Path')).toBe('example_com_path');
  });
});


================================================
FILE: assets/report/emanuelemazzotta.com.json
================================================
{
  "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/68.0.3440.106 Safari/537.36",
  "lighthouseVersion": "3.0.3",
  "fetchTime": "2018-09-09T09:31:48.638Z",
  "requestedUrl": "https://emanuelemazzotta.com/",
  "finalUrl": "https://emanuelemazzotta.com/",
  "runWarnings": [],
  "audits": {
    "is-on-https": {
      "id": "is-on-https",
      "title": "Uses HTTPS",
      "description": "All sites should be protected with HTTPS, even ones that don't handle sensitive data. HTTPS prevents intruders from tampering with or passively listening in on the communications between your app and your users, and is a prerequisite for HTTP/2 and many new web platform APIs. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/https).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "displayValue": "",
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "redirects-http": {
      "id": "redirects-http",
      "title": "Redirects HTTP traffic to HTTPS",
      "description": "If you've already set up HTTPS, make sure that you redirect all HTTP traffic to HTTPS. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true
    },
    "service-worker": {
      "id": "service-worker",
      "title": "Registers a service worker",
      "description": "The service worker is the technology that enables your app to use many Progressive Web App features, such as offline, add to homescreen, and push notifications. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true
    },
    "works-offline": {
      "id": "works-offline",
      "title": "Responds with a 200 when offline",
      "description": "If you're building a Progressive Web App, consider using a service worker so that your app can work offline. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "warnings": []
    },
    "viewport": {
      "id": "viewport",
      "title": "Has a `<meta name=\"viewport\">` tag with `width` or `initial-scale`",
      "description": "Add a viewport meta tag to optimize your app for mobile screens. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "warnings": []
    },
    "without-javascript": {
      "id": "without-javascript",
      "title": "Contains some content when JavaScript is not available",
      "description": "Your app should display some content when JavaScript is disabled, even if it's just a warning to the user that JavaScript is required to use the app. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/no-js).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true
    },
    "first-contentful-paint": {
      "id": "first-contentful-paint",
      "title": "First Contentful Paint",
      "description": "First contentful paint marks the time at which the first text/image is painted. [Learn more](https://developers.google.com/web/fundamentals/performance/user-centric-performance-metrics#first_paint_and_first_contentful_paint).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 770.5929999999998,
      "displayValue": [
        "%10d ms",
        770.5929999999998
      ]
    },
    "first-meaningful-paint": {
      "id": "first-meaningful-paint",
      "title": "First Meaningful Paint",
      "description": "First Meaningful Paint measures when the primary content of a page is visible. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 868.0929999999998,
      "displayValue": [
        "%10d ms",
        868.0929999999998
      ]
    },
    "load-fast-enough-for-pwa": {
      "id": "load-fast-enough-for-pwa",
      "title": "Page load is fast enough on 3G",
      "description": "A fast page load over a 3G network ensures a good mobile user experience. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/fast-3g).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": 2815.0849999999996
    },
    "speed-index": {
      "id": "speed-index",
      "title": "Speed Index",
      "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/speed-index).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 770.5929999999998,
      "displayValue": [
        "%10d ms",
        770.5929999999998
      ]
    },
    "screenshot-thumbnails": {
      "id": "screenshot-thumbnails",
      "title": "Screenshot Thumbnails",
      "description": "This is what the load of your site looked like.",
      "score": null,
      "scoreDisplayMode": "informative",
      "rawValue": true,
      "details": {
        "type": "filmstrip",
        "scale": 3000,
        "items": [
          {
            "timing": 300,
            "timestamp": 250040788733,
            "data": "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"
          },
          {
            "timing": 600,
            "timestamp": 250041088733,
            "data": "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"
          },
          {
            "timing": 900,
            "timestamp": 250041388733,
            "data": "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"
          },
          {
            "timing": 1200,
            "timestamp": 250041688733,
            "data": "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"
          },
          {
            "timing": 1500,
            "timestamp": 250041988733,
            "data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRQBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIANUAeAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1ToAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgBKAPnC0+L3j/wAUfEDx1pGneMfh54ZtNB1/+xbSw1vTLie9uV+zW8ok3LfRA5a4KjEf8Hc0Adt4g/al+HXhXXW0rU9XvIZkvJtNe5j0m7ltlvY1Z/sfnJEUNy6KWSAEyOCu1T5iBgCWD9pjwVceGW1hBrxkXVDon9kf8I/e/wBpm/Fv9pa3Fp5XmlhADISFKhQTu4NABqf7TPgbTdN0C7SXWtSl15bw6bp+m6BfXV7M1q4juka3SEyRPE5CssiptOQehoA1fAnx58DfE3VbHT/DGuJq9xfaJH4htzBDIEksnmeFX3lQA3mRuhjJDqVIZRigDH1r9qH4faHYabfS32rXVhe6PB4gN3p+g393Fa6dMkjRXVw0ULCCNhDJ/rNpG0kgAEgAzF/aR0zQdc8fr4jmiGlaRrtho2ippNrLc3epPc6bbXaokcZdppGaaTaI1HyJkjCswAPSfAPj7R/iV4ah1zQ5Lh7KSSWFkvLWS1nhljkaOWKWGVVeN1dGUqyjp3BBoA6KgAoAKACgAoAKACgDwbQfBHxM8A+M/H95pHhzwb4g0rxF4hbW4J9R1+5tLmFWtbaDyzGthKuQbctkPj5u2KAJfHXwO17xLouhWlpc6ektj8RbbxbKZpXANpHe+eyLhDmXZ0HC543DrQBlfET4IeOtY8Qa1f6JqcL6VqXiwa1d6HFr15ohv7UaLa2KJJe2sbTRNHcW5lCIGV1C5IIAABo/A74G+Ivhzc+DJ9YudNlbSLHxPBdJaXVxcZfUtWtr2HZJMu+QLHC6u0jbtxXl8lqAPPfhb+zL8S/glqmleINAm8K61rQ0HUdBu7bULy4ggg83WLi/trmN1t2aXatyyvCRHkgbZO9AEOo/sleL7bw34fsbODRNcuY/Bel+Hb9b3xTrGmW0N3awtE0wjs9ou4XDY8uTym+X74DkAATxD+xZqyXUeoaFJpgfR9b0+70nShql/psE1hFo1rpk8DXEDNcW74gZ43VpcAKr7w7igD3f4D/De6+G3hW/g1GxsrDVtS1KfULqOx1S+1NOdsUW66vGMsrCCGBWbai5UhUAGSAelUAFABQAUAFABQAUAZGl+MNB1zVdT0vTda0/UNT0xkS/srW6SWazZwWQTIpJjLBWI3AZwcUAT2PiDS9Uvb+zs9RtLu70+QRXlvDMryWzlFcLIoOUJR0bBwcMD0IoAvg5oANwIznigBAwPQigCvDqtlcAGK8gkBma3BSVSDKpYMnX7wKsCOo2n0oAs5oAWgAoAKACgAoAKACgAoA+ILTx5J8B/i38XviGuk3Gr6Tqfiq80DVLayDyTzXMel2NxpQChWwrSNe24I25kvoQ27C7QCv8ItI1P4Xat4t8Ka74k1N/EniDx7YQandaVcwWy39/c6CuoXcJuGVWgt2lE21oFEwAjRNpYkAF34dfHXXPGvw98S6QviC01rxxN411Xw14MU67LDbNbQwxS/aJriERtc28ETGQylS0mY1DB5lJAPXvGNvqMmo+D/AWj+KdRl8SW1pY3eu+IptSkhEenxSKskrRIfLa5uykyoNu35Z3J/dBXAOK1/4javZ6DJ4nh8aXkXjVfiQvhiPQTdRLDLanWfs0en/ZWUopksgtz523zsNvEvlHaACj4B0/RF0HTFfVbiJLb4ua9a3H/E5lUwu15qKxo7eZ8rtui25IZjKMZMnIBT8a/G3VNI8U+D9Q0Dxbfy3GqfFA+E7q01O+tizWiXpt7i2isIkKLFGdu24kK3HzxlmIlVaAPrvQ9f03xLYC90rULXVLMySRC5splljLxu0cihlJGVdGUjsysDyCKANCgAoAKACgAoAKAEPT0oAjW2iTeVjRS7b2IUfM3HJ9TwOfagCG80qy1C3ngurS3uYZ8ebHNErrJjGNwPXoOvpQAk2kWNz/AK6zt5uS3zxK3zHGTyOpwPyoAR9F0+UoXsbVyihULQqdoHQDjgCgCQabai++2/Zoftnl+V9o8seZsznbu64zzigBJdNtZ0mWW2hkSbHmq0YIkxjG7PXGO9ACf2VZi4luPssH2iUoZJvLG9ymdhJ6nbk49M8UATwwR26bIo1jXJbai4GSck/Ukk/jQBJQAUAFABQAUAFACE4GaAEZwvU4oAXcP6UAJvGSOePagBc0AGRQAhdRjJxn1oAUMCcc/lQAhdVIBIBPQetAC5oAMjOKADcDQK4tAwoAKAEb7poA8kOg65Z6l4g1O3j8VjVVunvkkXVYJ7W/ghmR47a3tpZxFAZYC1vkxxDO+R3LiOUy49jS66mhr3w7v9c+EK6Nqd/qkniSK3kuWutG1u809pNQZHLFJY51dYTLI2yJn2KoRdoCKAa2JW+hxktr8YbTwX4m0HSIZIG0rQrmDw9r097bXOqX95DHHFamZZd8RaWSG4ldpD924gBKuJQi1LtEr6m3xtuPE2n6dpz6ja6FLcSRXutXMulPNHbPez/vIoljx50cC25RmDJ5chDxySktGajtGx1nxM07xL4kbw1qdvp3iBdMhsLi4udB0zVFsrwX58h7dZWiuoVkCot1GyC5MReVCVkADxmpCSOV1Xwf8ZZ/iPPPo/iOKw0J7fWhGur2/wButYhI2nfZY444riBw5KXrLJIz+WGdAFDKKlt2LXLdFnxnJ8VtS+L1rcaDp2taV4Xs9IngheW604Wk9+LoMklwhkeT7M8cSqWRPOVJTsCMXw43e4tL6nb6hceJ7rx/4O1WDSNVj0SbRb6HUrL7Tbg2d1LNYNAZ087Y7Rol0N0Zkx8wBO/mtiUlY5mzuPiza+LtViuIYdR0l50ms5Xmt4WhRrm8jaNFUHeiwxadIxk+cfabllZ2VIAtbGloPc4Ur8fvEfhfUYtTtL7S55IVTTrax1HTzdpI5d5TfTR+Uo2bI0h+zY+WRhKHI80K7FaC2Pb/AIfL4osba2tvEst3qd1dWiXc91KLVY7KfagktQIghK5JZTtfpJuf/Vg2tjOSXQ7amSFABQAh6GgDweT9oPXNL0nX9UvNA0ZtI0zXLnRvt02sGzClL7yhLMHhZI4Y7YmV5PMLFoyFjwwIhSvfQ1cVoZ+qftZR6TrGiaXLpujnUNXjkmhtZtWntZrWE29zcQz3UUtoGgiEdspmY5aETISh3KGObyGqafUt+Ef2n5vFGjaHetpGh2r6rrs2iQBNdmlhuTBetbTvbTCzCzNt2TRxnY0ieaflWFmp83kLkXU6L4W/HG58d6hZWOsaFa6DcX1q11bCDUzdB8QWlxs+aGM7vLvoTgA8pKOihnN9yHFJnN+I/wBpN9D+JA8Px/YHt9NuZU1w3HDQRM2LbYI3eaOZz5axxTW4F006mCQgDcrsvlizM8cftU6noGm+H5dN0vwzrN7ql7YJHYaL4h+3Xk9vNqX2YywRNDCjxPHtCTvKkYll2ksFUyl/IHFdzuYvi6V8U6bpuqX+i6HLrOkaXeaTBM00h1C4kln+2QWxcRGcJGsHKxhoxMskqBWVad2SooyrX9ou71TxNb6NZeHbFJrqxkurdL7WlilMsSXK3FuUWJwXt7q1eCfy2kEfmwt82/aFdsfJFdRum/HXXoLjQrLVNE0j+0NW1jUdNTy9SljiVbbUTaqiEwsZZzHul2fLlYJn+UKQpdofLE6j4ZfGmy+Imo3GlXOk33hjXUtxqMOl6quya5sHb9zcx9mBVo/MQfNC7hHwSCXe5LikeYeAP2o9d8ST+FodV8PWGiz61pOl3CDUr9LITTz7WkMJVpwwnWX/AESFiskjWd8HKeVkl2Uop9TrP+F4+J7eTWVl8LaOsOjWtnNqF9ca68EMbXFsZN4/0ZgsEbgeZKxBSIPJtYrsYbsSop9Tqvgh8S/+Fo+Chq8s+ly3LX1/EP7IufPt2givriCCRH4Lq8cKkSYAflgADgNO5LVj0KmIRiQpwMnHAoA8at/2mfCwudaTWPN0VNMv7jT5J5VaRZHjlvFBRVXewKWEzbyojMh8hHlmR0TNST0NnTa6mvffF7wnr2qW+heUutadfxXFpeYtJLhYJxLZQG1niCNtYnUIw4fGwB94AWQoyeWSM1f2kfhR4YW0s4/ENjZQ3d0kMC2tu7RNLO27dujQrtJdWeUnYvnRl2UyLuLoOWW51vinxtc2HgSHxD4btLHWJbtrP7FFqd5JYQSpPLHGrPKIZHTAk3f6ticYwM5DaItd2Oc1X4oeKNKGmXF14Y0iyttYSK201L3XnguDfvD5nkzQtbArGu2UF4zJIAm7ytu4xlzTk8xbX4oeIZF8MSP4MW1N5d3VpqkNxfSLPamK8jtTNaxi3/0mBi5mEr+T+4Akx820K4uW63Kvjf8AaR8L+DPCfjXXUlOoReGLdHmTy5Yle5mhSaC3LlDsLie2AbBGZgOqkUNjUG7HWt49tDozXItp5JRYPfHbbTi1cJHG5C3DRhefNQLnBba4C5jcLSsS4u9jI0b43eHru18PtqmoadpN/r3lPp9kl4t0ZEnb/RsyR5XdIhT7pZAzYV3GGZXTY3BxO50PVLXxBo1jqVnI8lpeQpcwSPG0bFHUMpKsAynDDhgCO4p2RDLohUevfv6nJosIDApOeQfUGm9QHhentSSsAtMBOtAHLat8LvCuu2Isr/Rba5sxLPObd8mNnnZ2mLLnDb/NmVsg5SaVD8sjqysiuZjW+Fvhm4urC6u9Itbu7sbme7gneJVKySzrcOSEChszRxS/MD+8hjf76KwXKg5mVLv4LeC9RlWW80Rb2ZJUuUmuriWWRLhEVI7lWZyRcIqgLOD5i5OGG45OVD55HULoVktnHatCZYI3ikVZpGkIePaUbLEnIKKc9yMnJJp2IKU3grRbjWX1WSy33jskjEyv5ZkQALL5ednmBVC+ZjftG3O3ilZDu0arWMD3cdy0YM8aMivnkKxBI/Eqv5VQXOIuPgN4Cu9Kv9Mn8N20umagQbyyeSQwXO2JIU8xN219iRxhMg7PLQptKgieVFc8u5vw+AtAgvJLpdNjadrQ2IaRmcR25CBo4wSRGrCKLcExu8tN2dq4dkTdsyNe+DfhTxBY3dnPpvk2t0bgywW8rxxhrgv9pkjQHbFLKJpw00YWU+fIQ4LElWRXMzsoYvKQjczZJOWJJ5qiCSgAoAKACgAoA8Puf2jrrQbd9e8R6Dpuk+CE1fWNKfVIdYkub2MWDXgeY2gthuUrYSuVjkdkUg4IVyoB2mmfGzwrrF8tlBc38N011FZFb/SL20SO4li82KGR5YVWORkKEI5BzJEMZkQMAM1v46eD/DL3KarqM1oLY3KSXH2C5a2aS3tzcTxxziLy5HWJZG2KSx8qUAFo3CgGbJ+0b4QTXH0zbrIlhsNQ1G6Mmi3cT20dmlrJKHheIS5KXsJTCEN8yg7sKQDvtD8RWPiFLo2Ujs1rMbeeKWF4ZIpAqttZHAYfK6MMjkMpGQQaANOgAoAKACgAoAKACgAoAKACgDxyX9mHwm3g/wAe6bDYafa+IPF0Os2914ni02EagI9QlmkKtKAHcR+cFAZuREvSgDW8UfC3VNU1TUL2HV/7Q02fULfXf+EevQIo5L+2jhFtH9qVWaO3ElvDMVEbP5q53mMtEwBiXn7M2kXWsajLDdwabp9zc3WowNZ6VbHUrS9uFl82SO9kV22CSVp1XZuWQ7S7Q/uAAaOqfBbUvEWoLqWteJxqGoS6bqekXEZ0uFrMWt7HbK6RQSmQDa9nFJiUyqxedSu10WMA3vh74C1XwZIfP1qK4tZvNebTbOzNvZQNstooEtImkkNvEkdu5MYZg0k8j8ZCgA7mgAoAKACgAoAKACgAoAKAEJwM0AGaAE3CgB1ACA5oAM84oAWgAoATIzjvQAE4oAAc0ALQAUAFABQA1zhSfagDy7xD4T17T/CuvweGY2h1m4lvp4JEe2t3MsjTTW7K6w7SqzSBiJEJJZi7S/MssFpok1zw34tvfiloepxXMQ8OWtq1td28c6x3MpLMd6t5RbaWWAsiyR52DJYKFdu72GnG250nhey1yy1nVH1J3ltp3zCGuVmVP3s5yqiFNg8prdcbiMq3GQ0sxG/UltdCpp+i6npujTwC3JmGo3dxmKYIzwTXzTEI21iG8piMfLk8Bl++o1cEcD4t+G/j/wAYeG/CNu2q/ZLn+xLqLX1a6+aS/fTzbwugEflELJLKzYRUOFOxiqqGth3R2b6N4rs5NOa0vftf2fU3kuEnm4m03MoWEEg5lXdE24hSwjCtIcszRYd0TnTvE0v2mVpPLdi3+ji4Y5kEhMTLMNqrGF2hl8jsd3m87jUB2v8AhW8u/FVhq1jEu5UktbyZ9kcv2ZwhKxOqiXdviiyPMReCSGIUAsF11OY8TeGfHSWvjO90m6m/tG9sGg07y76MstyhvDA6hoAqr+9tAVYlcoxbcFdrk1Fo9jobrRvFafZXs7kLOl3bPM7zMInQS/6XtjJfaGj+4p34J2hYj+8q0xya2sd6OnPWmZi0AFABQAh6UAcTLqGvyeI9PMERh0iTVWt2iWF2kaBLW5LSSs3CI0yxBAo6KhLnzdiSXpoYV5rnizSrnRr2T7fc2FxbaVbXlpHp/mPDcSXDCWYFQGA2/JKNrhQyP+6VJGZagkmY+veLfiAulW1rFPCmtNqllYb7LwrfGKTfeDzJt7yFUhWBJg4J/h3CVPNip6g0kb2kax48i8SzW19NZ3um2944urmPRJYFaFbO1YCDNwzEtNJPghZVwrqWDIA5qCSZmW/j/wAc6xrF7Z22nw6XCdSvLG3nu9AvZRBFA24XEuXiEglXaiCIlSX3+YdjRAuS0ibxT4j8eW3jq/sNMjjh0630aXUINRl0ie5td5mjAhkSOTdJKqQzkeW4Y/aU/dfJllqmXZGro/jqXxNpmtWEOoNdauJETZpFiYLjTYpriS1VmE7MsjQyQXDM+AGEJxH0DO9xNWINL8aeItSn1GI7LFrRhpQjm8PXRzeBolN0HE2GtyZMrGOSvzGQKrELVCsjvtD1B9V0eyvJIJLWW4hSVoJkKPGWGdrK3II6YPNWSX6ACgAoAKACgBr/AHG4zx0oA4aDxfd6d4xsNJ1W90+X+2Xu2063ghkiuEEDLuBBZhINrZaT92FIUbSZBtlNFtFHRvjhoOv+BdK8XQW2oto2oztDA7W4JUrLJGS+1iqAGJiN5BJZEUGV1jLvqHLoO1L4q7vC93qmhaVeSywarYaUkes2s+mrK1xcW8ZZRJHvCqLgfNsxuVgM4NDFbU2dJ8f2+p6otillOkuyJpd1xbN5DuJ90bhZSd8b20iMF3DcRgsFcpF7By3JdJ8c2eqeIb3R0tryK8tZfKmMkQ8tWEEEzDepK5C3MIwTliW2hlRit6XBqx05QEYIyPemSIsKKAADx3JJP50AOxS3AAAOlMBaACgAoAKACgBDwDQBy2ueOdJ8PXCQXVtdO08FzdFbOze6dlgkjR/3cStIzFpVwFU8A9DgFXRXLcy9M+MnhLUtIfUYLwzsb26sha2UZvLqaS3kMbskVv5juuNkmQCRG6MwXOKLonlL0nxG0SwuL60+ya0v2Lr5Hh++eOTDhP3TLCVlOWziMsdoZ/uqWBdBymDL8QtE1fVPBur2Wlarq0er391pljfafdR/ZlKLOWklQzqHRkt5XUhHOAMAMQKTKSsbl38TfD9lf6lZM13Pc6fcJa3EdpptxORKyeYEXZGfMYJhmCbtoILYyMu9h2ZFr3xf8OaBoOoavLcvPZafeW9ndSRJhYzLOkPmBmwrxozncyFseXIoy6FaZNi5e/EnRNNlAunukheeS2juo7OWaBpE2hkMkasiMXYRKrlWeQFFDMMFX7BynPz/AB+8M2tl4hu7i21qztdDMf2ye80i4t41VhCd250AyonUlDiQhSyoy7SVfuDizpbD4haPf6pYWC/b7a5v4zJbC+0y6tVkILgx7pY1US4jd/KJ3lFL7dvzU73Fax01MAoAKACgAoARhuUjJGe4oAzIPDWnW96l4kBN0jTMk0js7R+awaQKWJwrMASo4+UccCpsUnbQ5G0+AXgSxtba2g0JUt7dneOI3MzKGcSB2wXPzN5pyep2RAnEUe05Q5joNb+H3h7xJeLd6npVveXKxCBZZF+YRiRJQmR2Ekcbj3RT1Ao5QuVNN+FfhrR/DOjeH7GxktNK0cyGwihu5le3LxSxMVkD787J5QDuyCwIwQCCwXL+k+B9H0S4uZ7S2dJri/fU5ZJJ5JC1w0QiL5djgeWAoUfKABgCiwXM3TPhvZWlvc213dXeo2j3UV1DDcTttgMVwbmILg9FkIAxjKRxqwbaSxYLhrnwl8L+ItGs9MvdPkFtZv5tvJa3c1tPG+9XLiaJ1k3F1Vy27JZQxywBppW1C4+9+FnhvU9C1zR7yymu9P1u5N3qCT3s8jTSEIud5csoCxooVSFAUAAAUNXC5dv/AAHomqeIbPXbmzZ9YsyhhvEmkjddocAfKwBBEjggjDA4IIAoSsJu50FMQUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAf/9k="
          },
          {
            "timing": 1800,
            "timestamp": 250042288733,
            "data": "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"
          },
          {
            "timing": 2100,
            "timestamp": 250042588733,
            "data": "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"
          },
          {
            "timing": 2400,
            "timestamp": 250042888733,
            "data": "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"
          },
          {
            "timing": 2700,
            "timestamp": 250043188733,
            "data": "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"
          },
          {
            "timing": 3000,
            "timestamp": 250043488733,
            "data": "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"
          }
        ]
      }
    },
    "estimated-input-latency": {
      "id": "estimated-input-latency",
      "title": "Estimated Input Latency",
      "description": "The score above is an estimate of how long your app takes to respond to user input, in milliseconds, during the busiest 5s window of page load. If your latency is higher than 50 ms, users may perceive your app as laggy. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 12.8,
      "displayValue": [
        "%d ms",
        12.8
      ]
    },
    "errors-in-console": {
      "id": "errors-in-console",
      "title": "No browser errors logged to the console",
      "description": "Errors logged to the console indicate unresolved problems. They can come from network request failures and other browser concerns.",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": 0,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "time-to-first-byte": {
      "id": "time-to-first-byte",
      "title": "Keep server response times low (TTFB)",
      "description": "Time To First Byte identifies the time at which your server sends a response. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/ttfb).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": 22.64500000000001,
      "displayValue": "",
      "details": {
        "type": "opportunity",
        "overallSavingsMs": -577.355,
        "headings": [],
        "items": []
      }
    },
    "first-cpu-idle": {
      "id": "first-cpu-idle",
      "title": "First CPU Idle",
      "description": "First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-interactive).",
      "score": 0.96,
      "scoreDisplayMode": "numeric",
      "rawValue": 2815.0849999999996,
      "displayValue": [
        "%10d ms",
        2815.0849999999996
      ]
    },
    "interactive": {
      "id": "interactive",
      "title": "Time to Interactive",
      "description": "Interactive marks the time at which the page is fully interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive).",
      "score": 0.97,
      "scoreDisplayMode": "numeric",
      "rawValue": 2815.0849999999996,
      "displayValue": [
        "%10d ms",
        2815.0849999999996
      ]
    },
    "user-timings": {
      "id": "user-timings",
      "title": "User Timing marks and measures",
      "description": "Consider instrumenting your app with the User Timing API to create custom, real-world measurements of key user experiences. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/user-timing).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "critical-request-chains": {
      "id": "critical-request-chains",
      "title": "Critical Request Chains",
      "description": "The Critical Request Chains below show you what resources are issued with a high priority. Consider reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true,
      "displayValue": "",
      "details": {
        "type": "criticalrequestchain",
        "header": {
          "type": "text",
          "text": "View critical network waterfall:"
        },
        "chains": {
          "C84E02E57AAAA78D66F271D97F1DC375": {
            "request": {
              "url": "https://emanuelemazzotta.com/",
              "startTime": 250040.489529,
              "endTime": 250040.607074,
              "responseReceivedTime": 250040.604051,
              "transferSize": 2468
            },
            "children": {}
          }
        },
        "longestChain": {
          "duration": 117.54499998642132,
          "length": 1,
          "transferSize": 2468
        }
      }
    },
    "redirects": {
      "id": "redirects",
      "title": "Avoid multiple page redirects",
      "description": "Redirects introduce additional delays before the page can be loaded. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 0,
      "displayValue": [
        "%d ms",
        0
      ],
      "details": {
        "type": "table",
        "headings": [],
        "items": [],
        "summary": {
          "wastedMs": 0
        }
      }
    },
    "webapp-install-banner": {
      "id": "webapp-install-banner",
      "title": "User will not be prompted to Install the Web App",
      "description": "Browsers can proactively prompt users to add your app to their homescreen, which can lead to higher engagement. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/install-prompt).",
      "score": 0,
      "scoreDisplayMode": "binary",
      "rawValue": false,
      "explanation": "Failures: Service worker does not successfully serve the manifest's start_url,\nTimed out waiting for fetched start_url.",
      "details": {
        "items": [
          {
            "failures": [
              "Service worker does not successfully serve the manifest's start_url",
              "Timed out waiting for fetched start_url"
            ],
            "isParseFailure": false,
            "hasStartUrl": true,
            "hasIconsAtLeast192px": true,
            "hasIconsAtLeast512px": false,
            "hasPWADisplayValue": true,
            "hasBackgroundColor": true,
            "hasThemeColor": true,
            "hasShortName": true,
            "shortNameLength": true,
            "hasName": true
          }
        ]
      }
    },
    "splash-screen": {
      "id": "splash-screen",
      "title": "Is not configured for a custom splash screen",
      "description": "A themed splash screen ensures a high-quality experience when users launch your app from their homescreens. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen).",
      "score": 0,
      "scoreDisplayMode": "binary",
      "rawValue": false,
      "explanation": "Failures: Manifest does not have icons at least 512px.",
      "details": {
        "items": [
          {
            "failures": [
              "Manifest does not have icons at least 512px"
            ],
            "isParseFailure": false,
            "hasStartUrl": true,
            "hasIconsAtLeast192px": true,
            "hasIconsAtLeast512px": false,
            "hasPWADisplayValue": true,
            "hasBackgroundColor": true,
            "hasThemeColor": true,
            "hasShortName": true,
            "shortNameLength": true,
            "hasName": true
          }
        ]
      }
    },
    "themed-omnibox": {
      "id": "themed-omnibox",
      "title": "Address bar matches brand colors",
      "description": "The browser address bar can be themed to match your site. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/address-bar).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "items": [
          {
            "failures": [],
            "themeColor": "#A50104",
            "isParseFailure": false,
            "hasStartUrl": true,
            "hasIconsAtLeast192px": true,
            "hasIconsAtLeast512px": false,
            "hasPWADisplayValue": true,
            "hasBackgroundColor": true,
            "hasThemeColor": true,
            "hasShortName": true,
            "shortNameLength": true,
            "hasName": true
          }
        ]
      }
    },
    "manifest-short-name-length": {
      "id": "manifest-short-name-length",
      "title": "The `short_name` won't be truncated on the homescreen",
      "description": "Make your app's `short_name` fewer than 12 characters to ensure that it's not truncated on homescreens. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/manifest-short_name-is-not-truncated).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true
    },
    "content-width": {
      "id": "content-width",
      "title": "Content is sized correctly for the viewport",
      "description": "If the width of your app's content doesn't match the width of the viewport, your app might not be optimized for mobile screens. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "explanation": ""
    },
    "image-aspect-ratio": {
      "id": "image-aspect-ratio",
      "title": "Displays images with correct aspect ratio",
      "description": "Image display dimensions should match natural aspect ratio. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/aspect-ratio).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "warnings": [],
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "deprecations": {
      "id": "deprecations",
      "title": "Avoids deprecated APIs",
      "description": "Deprecated APIs will eventually be removed from the browser. [Learn more](https://www.chromestatus.com/features#deprecated).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "displayValue": "",
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "mainthread-work-breakdown": {
      "id": "mainthread-work-breakdown",
      "title": "Minimizes main thread work",
      "description": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this.",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 803.792,
      "displayValue": [
        "%10d ms",
        803.792
      ],
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "groupLabel",
            "itemType": "text",
            "text": "Category"
          },
          {
            "key": "duration",
            "itemType": "ms",
            "granularity": 1,
            "text": "Time Spent"
          }
        ],
        "items": [
          {
            "group": "styleLayout",
            "groupLabel": "Style & Layout",
            "duration": 391.028
          },
          {
            "group": "scriptEvaluation",
            "groupLabel": "Script Evaluation",
            "duration": 214.23200000000003
          },
          {
            "group": "other",
            "groupLabel": "Other",
            "duration": 179.85600000000008
          },
          {
            "group": "parseHTML",
            "groupLabel": "Parse HTML & CSS",
            "duration": 8.335999999999999
          },
          {
            "group": "scriptParseCompile",
            "groupLabel": "Script Parsing & Compilation",
            "duration": 5.892
          },
          {
            "group": "paintCompositeRender",
            "groupLabel": "Rendering",
            "duration": 4.448
          }
        ]
      }
    },
    "bootup-time": {
      "id": "bootup-time",
      "title": "JavaScript boot-up time",
      "description": "Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/bootup).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 190.136,
      "displayValue": [
        "%10d ms",
        190.136
      ],
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "itemType": "url",
            "text": "URL"
          },
          {
            "key": "total",
            "granularity": 1,
            "itemType": "ms",
            "text": "Total"
          },
          {
            "key": "scripting",
            "granularity": 1,
            "itemType": "ms",
            "text": "Script Evaluation"
          },
          {
            "key": "scriptParseCompile",
            "granularity": 1,
            "itemType": "ms",
            "text": "Script Parsing & Compilation"
          }
        ],
        "items": [
          {
            "url": "https://www.google-analytics.com/analytics.js",
            "total": 136.196,
            "scripting": 134.14,
            "scriptParseCompile": 2.056
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=UA-28740874-1",
            "total": 53.94,
            "scripting": 51.912,
            "scriptParseCompile": 2.028
          }
        ],
        "summary": {
          "wastedMs": 190.136
        }
      }
    },
    "uses-rel-preload": {
      "id": "uses-rel-preload",
      "title": "Preload key requests",
      "description": "Consider using <link rel=preload> to prioritize fetching late-discovered resources sooner. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/preload).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 0,
      "displayValue": [
        "Potential savings of %10d ms",
        0
      ],
      "details": {
        "type": "opportunity",
        "headings": [],
        "items": [],
        "overallSavingsMs": 0
      }
    },
    "uses-rel-preconnect": {
      "id": "uses-rel-preconnect",
      "title": "Avoid multiple, costly round trips to any origin",
      "description": "Consider adding preconnect or dns-prefetch resource hints to establish early connections to important third-party origins. [Learn more](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect).",
      "score": 0.82,
      "scoreDisplayMode": "numeric",
      "rawValue": 220.52000000715256,
      "displayValue": [
        "Potential savings of %10d ms",
        220.52000000715256
      ],
      "details": {
        "type": "opportunity",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "Origin"
          },
          {
            "key": "wastedMs",
            "valueType": "timespanMs",
            "label": "Potential Savings"
          }
        ],
        "items": [
          {
            "url": "https://www.google-analytics.com",
            "wastedMs": 220.52000000715256
          }
        ],
        "overallSavingsMs": 220.52000000715256
      }
    },
    "font-display": {
      "id": "font-display",
      "title": "All text remains visible during webfont loads",
      "description": "Leverage the font-display CSS feature to ensure text is user-visible while webfonts are loading. [Learn more](https://developers.google.com/web/updates/2016/02/font-display).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "network-requests": {
      "id": "network-requests",
      "title": "Network Requests",
      "description": "Lists the network requests that were made during page load.",
      "score": null,
      "scoreDisplayMode": "informative",
      "rawValue": 4,
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "itemType": "url",
            "text": "URL"
          },
          {
            "key": "startTime",
            "itemType": "ms",
            "granularity": 1,
            "text": "Start Time"
          },
          {
            "key": "endTime",
            "itemType": "ms",
            "granularity": 1,
            "text": "End Time"
          },
          {
            "key": "transferSize",
            "itemType": "bytes",
            "displayUnit": "kb",
            "granularity": 1,
            "text": "Transfer Size"
          },
          {
            "key": "statusCode",
            "itemType": "text",
            "text": "Status Code"
          },
          {
            "key": "mimeType",
            "itemType": "text",
            "text": "MIME Type"
          },
          {
            "key": "resourceType",
            "itemType": "text",
            "text": "Resource Type"
          }
        ],
        "items": [
          {
            "url": "https://emanuelemazzotta.com/",
            "startTime": 0,
            "endTime": 117.54499998642132,
            "transferSize": 2468,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "Document"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=UA-28740874-1",
            "startTime": 131.65599998319522,
            "endTime": 319.93099997635,
            "transferSize": 26003,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script"
          },
          {
            "url": "https://www.google-analytics.com/analytics.js",
            "startTime": 337.8499999816995,
            "endTime": 410.4010000010021,
            "transferSize": 14667,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script"
          },
          {
            "url": "https://www.google-analytics.com/r/collect?v=1&_v=j68&a=143759676&t=pageview&_s=1&dl=https%3A%2F%2Femanuelemazzotta.com%2F&ul=en-us&de=UTF-8&dt=Emanuele%20Mazzotta%20-%20Software%20Engineer&sd=24-bit&sr=412x732&vp=412x732&je=0&_u=IEBAAUAB~&jid=129511976&gjid=30143490&cid=1607040886.1536485510&tid=UA-28740874-1&_gid=1881346217.1536485510&_r=1&gtm=u8o&z=284877343",
            "startTime": 454.48499999474734,
            "endTime": 479.62199998437427,
            "transferSize": 199,
            "statusCode": 200,
            "mimeType": "image/gif",
            "resourceType": "Image"
          }
        ]
      }
    },
    "metrics": {
      "id": "metrics",
      "title": "Metrics",
      "description": "Collects all available metrics.",
      "score": null,
      "scoreDisplayMode": "informative",
      "rawValue": 2815.0849999999996,
      "details": {
        "items": [
          {
            "firstContentfulPaint": 771,
            "firstMeaningfulPaint": 868,
            "firstCPUIdle": 2815,
            "interactive": 2815,
            "speedIndex": 771,
            "estimatedInputLatency": 13,
            "observedNavigationStart": 0,
            "observedNavigationStartTs": 250040488733,
            "observedFirstPaint": 249,
            "observedFirstPaintTs": 250040737294,
            "observedFirstContentfulPaint": 249,
            "observedFirstContentfulPaintTs": 250040737305,
            "observedFirstMeaningfulPaint": 249,
            "observedFirstMeaningfulPaintTs": 250040737307,
            "observedTraceEnd": 1400,
            "observedTraceEndTs": 250041888550,
            "observedLoad": 330,
            "observedLoadTs": 250040819024,
            "observedDomContentLoaded": 134,
            "observedDomContentLoadedTs": 250040623073,
            "observedFirstVisualChange": 254,
            "observedFirstVisualChangeTs": 250040742733,
            "observedLastVisualChange": 254,
            "observedLastVisualChangeTs": 250040742733,
            "observedSpeedIndex": 254,
            "observedSpeedIndexTs": 250040743137
          }
        ]
      }
    },
    "pwa-cross-browser": {
      "id": "pwa-cross-browser",
      "title": "Site works cross-browser",
      "description": "To reach the most number of users, sites should work across every major browser. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser).",
      "score": null,
      "scoreDisplayMode": "manual",
      "rawValue": false
    },
    "pwa-page-transitions": {
      "id": "pwa-page-transitions",
      "title": "Page transitions don't feel like they block on the network",
      "description": "Transitions should feel snappy as you tap around, even on a slow network, a key to perceived performance. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network).",
      "score": null,
      "scoreDisplayMode": "manual",
      "rawValue": false
    },
    "pwa-each-page-has-url": {
      "id": "pwa-each-page-has-url",
      "title": "Each page has a URL",
      "description": "Ensure individual pages are deep linkable via the URLs and that URLs are unique for the purpose of shareability on social media. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url).",
      "score": null,
      "scoreDisplayMode": "manual",
      "rawValue": false
    },
    "accesskeys": {
      "id": "accesskeys",
      "title": "`[accesskey]` values are unique",
      "description": "Access keys let users quickly focus a part of the page. For proper navigation, each access key must be unique. [Learn more](https://dequeuniversity.com/rules/axe/2.2/accesskeys?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "aria-allowed-attr": {
      "id": "aria-allowed-attr",
      "title": "`[aria-*]` attributes match their roles",
      "description": "Each ARIA `role` supports a specific subset of `aria-*` attributes. Mismatching these invalidates the `aria-*` attributes. [Learn more](https://dequeuniversity.com/rules/axe/2.2/aria-allowed-attr?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "aria-required-attr": {
      "id": "aria-required-attr",
      "title": "`[role]`s have all required `[aria-*]` attributes",
      "description": "Some ARIA roles have required attributes that describe the state of the element to screen readers. [Learn more](https://dequeuniversity.com/rules/axe/2.2/aria-required-attr?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "aria-required-children": {
      "id": "aria-required-children",
      "title": "Elements with `[role]` that require specific children `[role]`s, are present",
      "description": "Some ARIA parent roles must contain specific child roles to perform their intended accessibility functions. [Learn more](https://dequeuniversity.com/rules/axe/2.2/aria-required-children?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "aria-required-parent": {
      "id": "aria-required-parent",
      "title": "`[role]`s are contained by their required parent element",
      "description": "Some ARIA child roles must be contained by specific parent roles to properly perform their intended accessibility functions. [Learn more](https://dequeuniversity.com/rules/axe/2.2/aria-required-parent?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "aria-roles": {
      "id": "aria-roles",
      "title": "`[role]` values are valid",
      "description": "ARIA roles must have valid values in order to perform their intended accessibility functions. [Learn more](https://dequeuniversity.com/rules/axe/2.2/aria-roles?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "aria-valid-attr-value": {
      "id": "aria-valid-attr-value",
      "title": "`[aria-*]` attributes have valid values",
      "description": "Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid values. [Learn more](https://dequeuniversity.com/rules/axe/2.2/aria-valid-attr-value?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "aria-valid-attr": {
      "id": "aria-valid-attr",
      "title": "`[aria-*]` attributes are valid and not misspelled",
      "description": "Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid names. [Learn more](https://dequeuniversity.com/rules/axe/2.2/aria-valid-attr?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "audio-caption": {
      "id": "audio-caption",
      "title": "`<audio>` elements contain a `<track>` element with `[kind=\"captions\"]`",
      "description": "Captions make audio elements usable for deaf or hearing-impaired users, providing critical information such as who is talking, what they're saying, and other non-speech information. [Learn more](https://dequeuniversity.com/rules/axe/2.2/audio-caption?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "button-name": {
      "id": "button-name",
      "title": "Buttons have an accessible name",
      "description": "When a button doesn't have an accessible name, screen readers announce it as \"button\", making it unusable for users who rely on screen readers. [Learn more](https://dequeuniversity.com/rules/axe/2.2/button-name?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "bypass": {
      "id": "bypass",
      "title": "The page contains a heading, skip link, or landmark region",
      "description": "Adding ways to bypass repetitive content lets keyboard users navigate the page more efficiently. [Learn more](https://dequeuniversity.com/rules/axe/2.2/bypass?application=lighthouse).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "color-contrast": {
      "id": "color-contrast",
      "title": "Background and foreground colors have a sufficient contrast ratio",
      "description": "Low-contrast text is difficult or impossible for many users to read. [Learn more](https://dequeuniversity.com/rules/axe/2.2/color-contrast?application=lighthouse).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "definition-list": {
      "id": "definition-list",
      "title": "`<dl>`'s contain only properly-ordered `<dt>` and `<dd>` groups, `<script>` or `<template>` elements.",
      "description": "When definition lists are not properly marked up, screen readers may produce confusing or inaccurate output. [Learn more](https://dequeuniversity.com/rules/axe/2.2/definition-list?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "dlitem": {
      "id": "dlitem",
      "title": "Definition list items are wrapped in `<dl>` elements",
      "description": "Definition list items (`<dt>` and `<dd>`) must be wrapped in a parent `<dl>` element to ensure that screen readers can properly announce them. [Learn more](https://dequeuniversity.com/rules/axe/2.2/dlitem?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "document-title": {
      "id": "document-title",
      "title": "Document has a `<title>` element",
      "description": "The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/title).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "duplicate-id": {
      "id": "duplicate-id",
      "title": "`[id]` attributes on the page are unique",
      "description": "The value of an id attribute must be unique to prevent other instances from being overlooked by assistive technologies. [Learn more](https://dequeuniversity.com/rules/axe/2.2/duplicate-id?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "frame-title": {
      "id": "frame-title",
      "title": "`<frame>` or `<iframe>` elements have a title",
      "description": "Screen reader users rely on frame titles to describe the contents of frames. [Learn more](https://dequeuniversity.com/rules/axe/2.2/frame-title?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "html-has-lang": {
      "id": "html-has-lang",
      "title": "`<html>` element has a `[lang]` attribute",
      "description": "If a page doesn't specify a lang attribute, a screen reader assumes that the page is in the default language that the user chose when setting up the screen reader. If the page isn't actually in the default language, then the screen reader might not announce the page's text correctly. [Learn more](https://dequeuniversity.com/rules/axe/2.2/html-lang?application=lighthouse).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "html-lang-valid": {
      "id": "html-lang-valid",
      "title": "`<html>` element has a valid value for its `[lang]` attribute",
      "description": "Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) helps screen readers announce text properly. [Learn more](https://dequeuniversity.com/rules/axe/2.2/valid-lang?application=lighthouse).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "image-alt": {
      "id": "image-alt",
      "title": "Image elements have `[alt]` attributes",
      "description": "Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute. [Learn more](https://dequeuniversity.com/rules/axe/2.2/image-alt?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "input-image-alt": {
      "id": "input-image-alt",
      "title": "`<input type=\"image\">` elements have `[alt]` text",
      "description": "When an image is being used as an `<input>` button, providing alternative text can help screen reader users understand the purpose of the button. [Learn more](https://dequeuniversity.com/rules/axe/2.2/input-image-alt?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "label": {
      "id": "label",
      "title": "Form elements have associated labels",
      "description": "Labels ensure that form controls are announced properly by assistive technologies, like screen readers. [Learn more](https://dequeuniversity.com/rules/axe/2.2/label?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "layout-table": {
      "id": "layout-table",
      "title": "Presentational `<table>` elements avoid using `<th>`, `<caption>` or the `[summary]` attribute.",
      "description": "A table being used for layout purposes should not include data elements, such as the th or caption elements or the summary attribute, because this can create a confusing experience for screen reader users. [Learn more](https://dequeuniversity.com/rules/axe/2.2/layout-table?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "link-name": {
      "id": "link-name",
      "title": "Links have a discernible name",
      "description": "Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the navigation experience for screen reader users. [Learn more](https://dequeuniversity.com/rules/axe/2.2/link-name?application=lighthouse).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "list": {
      "id": "list",
      "title": "Lists contain only `<li>` elements and script supporting elements (`<script>` and `<template>`).",
      "description": "Screen readers have a specific way of announcing lists. Ensuring proper list structure aids screen reader output. [Learn more](https://dequeuniversity.com/rules/axe/2.2/list?application=lighthouse).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "listitem": {
      "id": "listitem",
      "title": "List items (`<li>`) are contained within `<ul>` or `<ol>` parent elements",
      "description": "Screen readers require list items (`<li>`) to be contained within a parent `<ul>` or `<ol>` to be announced properly. [Learn more](https://dequeuniversity.com/rules/axe/2.2/listitem?application=lighthouse).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "meta-refresh": {
      "id": "meta-refresh",
      "title": "The document does not use `<meta http-equiv=\"refresh\">`",
      "description": "Users do not expect a page to refresh automatically, and doing so will move focus back to the top of the page. This may create a frustrating or confusing experience. [Learn more](https://dequeuniversity.com/rules/axe/2.2/meta-refresh?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "meta-viewport": {
      "id": "meta-viewport",
      "title": "`[user-scalable=\"no\"]` is not used in the `<meta name=\"viewport\">` element and the `[maximum-scale]` attribute is not less than 5.",
      "description": "Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the contents of a web page. [Learn more](https://dequeuniversity.com/rules/axe/2.2/meta-viewport?application=lighthouse).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "object-alt": {
      "id": "object-alt",
      "title": "`<object>` elements have `[alt]` text",
      "description": "Screen readers cannot translate non-text content. Adding alt text to `<object>` elements helps screen readers convey meaning to users. [Learn more](https://dequeuniversity.com/rules/axe/2.2/object-alt?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "tabindex": {
      "id": "tabindex",
      "title": "No element has a `[tabindex]` value greater than 0",
      "description": "A value greater than 0 implies an explicit navigation ordering. Although technically valid, this often creates frustrating experiences for users who rely on assistive technologies. [Learn more](https://dequeuniversity.com/rules/axe/2.2/tabindex?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "td-headers-attr": {
      "id": "td-headers-attr",
      "title": "Cells in a `<table>` element that use the `[headers]` attribute only refer to other cells of that same table.",
      "description": "Screen readers have features to make navigating tables easier. Ensuring `<td>` cells using the `[headers]` attribute only refer to other cells in the same table may improve the experience for screen reader users. [Learn more](https://dequeuniversity.com/rules/axe/2.2/td-headers-attr?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "th-has-data-cells": {
      "id": "th-has-data-cells",
      "title": "`<th>` elements and elements with `[role=\"columnheader\"/\"rowheader\"]` have data cells they describe.",
      "description": "Screen readers have features to make navigating tables easier. Ensuring table headers always refer to some set of cells may improve the experience for screen reader users. [Learn more](https://dequeuniversity.com/rules/axe/2.2/th-has-data-cells?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "valid-lang": {
      "id": "valid-lang",
      "title": "`[lang]` attributes have a valid value",
      "description": "Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) on elements helps ensure that text is pronounced correctly by a screen reader. [Learn more](https://dequeuniversity.com/rules/axe/2.2/valid-lang?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "video-caption": {
      "id": "video-caption",
      "title": "`<video>` elements contain a `<track>` element with `[kind=\"captions\"]`",
      "description": "When a video provides a caption it is easier for deaf and hearing impaired users to access its information. [Learn more](https://dequeuniversity.com/rules/axe/2.2/video-caption?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "video-description": {
      "id": "video-description",
      "title": "`<video>` elements contain a `<track>` element with `[kind=\"description\"]`",
      "description": "Audio descriptions provide relevant information for videos that dialogue cannot, such as facial expressions and scenes. [Learn more](https://dequeuniversity.com/rules/axe/2.2/video-description?application=lighthouse).",
      "score": null,
      "scoreDisplayMode": "not-applicable",
      "rawValue": true
    },
    "custom-controls-labels": {
      "id": "custom-controls-labels",
      "title": "Custom controls have associated labels",
      "description": "Custom interactive controls have associated labels, provided by aria-label or aria-labelledby. [Learn more](https://developers.google.com/web/fundamentals/accessibility/how-to-review#try_it_with_a_screen_reader).",
      "score": null,
      "scoreDisplayMode": "manual",
      "rawValue": false
    },
    "custom-controls-roles": {
      "id": "custom-controls-roles",
      "title": "Custom controls have ARIA roles",
      "description": "Custom interactive controls have appropriate ARIA roles. [Learn more](https://developers.google.com/web/fundamentals/accessibility/how-to-review#try_it_with_a_screen_reader).",
      "score": null,
      "scoreDisplayMode": "manual",
      "rawValue": false
    },
    "focus-traps": {
      "id": "focus-traps",
      "title": "User focus is not accidentally trapped in a region",
      "description": "A user can tab into and out of any control or region without accidentally trapping their focus. [Learn more](https://developers.google.com/web/fundamentals/accessibility/how-to-review#start_with_the_keyboard).",
      "score": null,
      "scoreDisplayMode": "manual",
      "rawValue": false
    },
    "focusable-controls": {
      "id": "focusable-controls",
      "title": "Interactive controls are keyboard focusable",
      "description": "Custom interactive controls are keyboard focusable and display a focus indicator. [Learn more](https://developers.google.com/web/fundamentals/accessibility/how-to-review#start_with_the_keyboard).",
      "score": null,
      "scoreDisplayMode": "manual",
      "rawValue": false
    },
    "heading-levels": {
      "id": "heading-levels",
      "title": "Headings don't skip levels",
      "description": "Headings are used to create an outline for the page and heading levels are not skipped. [Learn more](https://developers.google.com/web/fundamentals/accessibility/how-to-review#take_advantage_of_headings_and_landmarks).",
      "score": null,
      "scoreDisplayMode": "manual",
      "rawValue": false
    },
    "logical-tab-order": {
      "id": "logical-tab-order",
      "title": "The page has a logical tab order",
      "description": "Tabbing through the page follows the visual layout. Users cannot focus elements that are offscreen. [Learn more](https://developers.google.com/web/fundamentals/accessibility/how-to-review#start_with_the_keyboard).",
      "score": null,
      "scoreDisplayMode": "manual",
      "rawValue": false
    },
    "managed-focus": {
      "id": "managed-focus",
      "title": "The user's focus is directed to new content added to the page",
      "description": "If new content, such as a dialog, is added to the page, the user's focus is directed to it. [Learn more](https://developers.google.com/web/fundamentals/accessibility/how-to-review#start_with_the_keyboard).",
      "score": null,
      "scoreDisplayMode": "manual",
      "rawValue": false
    },
    "offscreen-content-hidden": {
      "id": "offscreen-content-hidden",
      "title": "Offscreen content is hidden from assistive technology",
      "description": "Offscreen content is hidden with display: none or aria-hidden=true. [Learn more](https://developers.google.com/web/fundamentals/accessibility/how-to-review#try_it_with_a_screen_reader).",
      "score": null,
      "scoreDisplayMode": "manual",
      "rawValue": false
    },
    "use-landmarks": {
      "id": "use-landmarks",
      "title": "HTML5 landmark elements are used to improve navigation",
      "description": "Landmark elements (<main>, <nav>, etc.) are used to improve the keyboard navigation of the page for assistive technology. [Learn more](https://developers.google.com/web/fundamentals/accessibility/how-to-review#take_advantage_of_headings_and_landmarks).",
      "score": null,
      "scoreDisplayMode": "manual",
      "rawValue": false
    },
    "visual-order-follows-dom": {
      "id": "visual-order-follows-dom",
      "title": "Visual order on the page follows DOM order",
      "description": "DOM order matches the visual order, improving navigation for assistive technology. [Learn more](https://developers.google.com/web/fundamentals/accessibility/how-to-review#try_it_with_a_screen_reader).",
      "score": null,
      "scoreDisplayMode": "manual",
      "rawValue": false
    },
    "uses-long-cache-ttl": {
      "id": "uses-long-cache-ttl",
      "title": "Uses efficient cache policy on static assets",
      "description": "A long cache lifetime can speed up repeat visits to your page. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/cache-policy).",
      "score": 0.87,
      "scoreDisplayMode": "numeric",
      "rawValue": 34240.43125,
      "displayValue": "2 assets found",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "itemType": "url",
            "text": "URL"
          },
          {
            "key": "cacheLifetimeMs",
            "itemType": "ms",
            "text": "Cache TTL",
            "displayUnit": "duration"
          },
          {
            "key": "totalBytes",
            "itemType": "bytes",
            "text": "Size (KB)",
            "displayUnit": "kb",
            "granularity": 1
          }
        ],
        "items": [
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=UA-28740874-1",
            "cacheControl": {
              "private": true,
              "max-age": 900
            },
            "cacheLifetimeMs": 900000,
            "cacheHitProbability": 0.10625000000000001,
            "totalBytes": 26003,
            "wastedBytes": 23240.18125
          },
          {
            "url": "https://www.google-analytics.com/analytics.js",
            "cacheControl": {
              "public": true,
              "max-age": 7200
            },
            "cacheLifetimeMs": 7200000,
            "cacheHitProbability": 0.25,
            "totalBytes": 14667,
            "wastedBytes": 11000.25
          }
        ],
        "summary": {
          "wastedBytes": 34240.43125
        }
      }
    },
    "total-byte-weight": {
      "id": "total-byte-weight",
      "title": "Avoids enormous network payloads",
      "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/network-payloads).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 43337,
      "displayValue": [
        "Total size was %d KB",
        42.3212890625
      ],
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "itemType": "url",
            "text": "URL"
          },
          {
            "key": "totalBytes",
            "itemType": "bytes",
            "displayUnit": "kb",
            "granularity": 1,
            "text": "Total Size"
          },
          {
            "key": "totalMs",
            "itemType": "ms",
            "text": "Transfer Time"
          }
        ],
        "items": [
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=UA-28740874-1",
            "totalBytes": 26003,
            "totalMs": 16.873719142199565
          },
          {
            "url": "https://www.google-analytics.com/analytics.js",
            "totalBytes": 14667,
            "totalMs": 9.517626376135102
          },
          {
            "url": "https://emanuelemazzotta.com/",
            "totalBytes": 2468,
            "totalMs": 1.601520549280796
          },
          {
            "url": "https://www.google-analytics.com/r/collect?v=1&_v=j68&a=143759676&t=pageview&_s=1&dl=https%3A%2F%2Femanuelemazzotta.com%2F&ul=en-us&de=UTF-8&dt=Emanuele%20Mazzotta%20-%20Software%20Engineer&sd=24-bit&sr=412x732&vp=412x732&je=0&_u=IEBAAUAB~&jid=129511976&gjid=30143490&cid=1607040886.1536485510&tid=UA-28740874-1&_gid=1881346217.1536485510&_r=1&gtm=u8o&z=284877343",
            "totalBytes": 199,
            "totalMs": 0.1291339502864175
          }
        ]
      }
    },
    "offscreen-images": {
      "id": "offscreen-images",
      "title": "Defer offscreen images",
      "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 0,
      "displayValue": "",
      "warnings": [],
      "details": {
        "type": "opportunity",
        "headings": [],
        "items": [],
        "overallSavingsMs": 0,
        "overallSavingsBytes": 0
      }
    },
    "render-blocking-resources": {
      "id": "render-blocking-resources",
      "title": "Eliminate render-blocking resources",
      "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 0,
      "displayValue": "",
      "details": {
        "type": "opportunity",
        "headings": [],
        "items": [],
        "overallSavingsMs": 0
      }
    },
    "unminified-css": {
      "id": "unminified-css",
      "title": "Minify CSS",
      "description": "Minifying CSS files can reduce network payload sizes. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/minify-css).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 0,
      "displayValue": "",
      "details": {
        "type": "opportunity",
        "headings": [],
        "items": [],
        "overallSavingsMs": 0,
        "overallSavingsBytes": 0
      }
    },
    "unminified-javascript": {
      "id": "unminified-javascript",
      "title": "Minify JavaScript",
      "description": "Minifying JavaScript files can reduce payload sizes and script parse time. [Learn more](https://developers.google.com/speed/docs/insights/MinifyResources).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 0,
      "displayValue": "",
      "warnings": [],
      "details": {
        "type": "opportunity",
        "headings": [],
        "items": [],
        "overallSavingsMs": 0,
        "overallSavingsBytes": 0
      }
    },
    "unused-css-rules": {
      "id": "unused-css-rules",
      "title": "Defer unused CSS",
      "description": "Remove unused rules from stylesheets to reduce unnecessary bytes consumed by network activity. [Learn more](https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 0,
      "displayValue": "",
      "details": {
        "type": "opportunity",
        "headings": [],
        "items": [],
        "overallSavingsMs": 0,
        "overallSavingsBytes": 0
      }
    },
    "uses-webp-images": {
      "id": "uses-webp-images",
      "title": "Serve images in next-gen formats",
      "description": "Image formats like JPEG 2000, JPEG XR, and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/webp).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 0,
      "displayValue": "",
      "warnings": [],
      "details": {
        "type": "opportunity",
        "headings": [],
        "items": [],
        "overallSavingsMs": 0,
        "overallSavingsBytes": 0
      }
    },
    "uses-optimized-images": {
      "id": "uses-optimized-images",
      "title": "Efficiently encode images",
      "description": "Optimized images load faster and consume less cellular data. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/optimize-images).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 0,
      "displayValue": "",
      "warnings": [],
      "details": {
        "type": "opportunity",
        "headings": [],
        "items": [],
        "overallSavingsMs": 0,
        "overallSavingsBytes": 0
      }
    },
    "uses-text-compression": {
      "id": "uses-text-compression",
      "title": "Enable text compression",
      "description": "Text-based responses should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 0,
      "displayValue": "",
      "details": {
        "type": "opportunity",
        "headings": [],
        "items": [],
        "overallSavingsMs": 0,
        "overallSavingsBytes": 0
      }
    },
    "uses-responsive-images": {
      "id": "uses-responsive-images",
      "title": "Properly size images",
      "description": "Serve images that are appropriately-sized to save cellular data and improve load time. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/oversized-images).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 0,
      "displayValue": "",
      "warnings": [],
      "details": {
        "type": "opportunity",
        "headings": [],
        "items": [],
        "overallSavingsMs": 0,
        "overallSavingsBytes": 0
      }
    },
    "efficient-animated-content": {
      "id": "efficient-animated-content",
      "title": "Use video formats for animated content",
      "description": "Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save network bytes. [Learn more](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 0,
      "displayValue": "",
      "details": {
        "type": "opportunity",
        "headings": [],
        "items": [],
        "overallSavingsMs": 0,
        "overallSavingsBytes": 0
      }
    },
    "appcache-manifest": {
      "id": "appcache-manifest",
      "title": "Avoids Application Cache",
      "description": "Application Cache is deprecated. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/appcache).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "displayValue": ""
    },
    "doctype": {
      "id": "doctype",
      "title": "Page has the HTML doctype",
      "description": "Specifying a doctype prevents the browser from switching to quirks-mode.Read more on the [MDN Web Docs page](https://developer.mozilla.org/en-US/docs/Glossary/Doctype)",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true
    },
    "dom-size": {
      "id": "dom-size",
      "title": "Avoids an excessive DOM size",
      "description": "Browser engineers recommend pages contain fewer than ~1,500 DOM nodes. The sweet spot is a tree depth < 32 elements and fewer than 60 children/parent element. A large DOM can increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn more](https://developers.google.com/web/tools/lighthouse/audits/dom-size).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "rawValue": 44,
      "displayValue": [
        "%d nodes",
        44
      ],
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "totalNodes",
            "itemType": "text",
            "text": "Total DOM Nodes"
          },
          {
            "key": "depth",
            "itemType": "text",
            "text": "Maximum DOM Depth"
          },
          {
            "key": "width",
            "itemType": "text",
            "text": "Maximum Children"
          }
        ],
        "items": [
          {
            "totalNodes": "44",
            "depth": "6",
            "width": "17"
          },
          {
            "totalNodes": "",
            "depth": {
              "type": "code",
              "value": "<a rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://squido.ch\">"
            },
            "width": {
              "type": "code",
              "value": "<head>"
            }
          }
        ]
      }
    },
    "external-anchors-use-rel-noopener": {
      "id": "external-anchors-use-rel-noopener",
      "title": "Links to cross-origin destinations are safe",
      "description": "Add `rel=\"noopener\"` or `rel=\"noreferrer\"` to any external links to improve performance and prevent security vulnerabilities. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/noopener).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "warnings": [],
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "geolocation-on-start": {
      "id": "geolocation-on-start",
      "title": "Avoids requesting the geolocation permission on page load",
      "description": "Users are mistrustful of or confused by sites that request their location without context. Consider tying the request to user gestures instead. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/geolocation-on-load).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "no-document-write": {
      "id": "no-document-write",
      "title": "Avoids `document.write()`",
      "description": "For users on slow connections, external scripts dynamically injected via `document.write()` can delay page load by tens of seconds. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/document-write).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "no-vulnerable-libraries": {
      "id": "no-vulnerable-libraries",
      "title": "Avoids front-end JavaScript libraries with known security vulnerabilities",
      "description": "Some third-party scripts may contain known security vulnerabilities that are easily identified and exploited by attackers. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/vulnerabilities).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true
    },
    "no-websql": {
      "id": "no-websql",
      "title": "Avoids WebSQL DB",
      "description": "Web SQL is deprecated. Consider using IndexedDB instead. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/web-sql).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "displayValue": ""
    },
    "notification-on-start": {
      "id": "notification-on-start",
      "title": "Avoids requesting the notification permission on page load",
      "description": "Users are mistrustful of or confused by sites that request to send notifications without context. Consider tying the request to user gestures instead. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/notifications-on-load).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "password-inputs-can-be-pasted-into": {
      "id": "password-inputs-can-be-pasted-into",
      "title": "Allows users to paste into password fields",
      "description": "Preventing password pasting undermines good security policy. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/password-pasting).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "rawValue": true,
      "details": {
        "type": "table",
        "headings": [],
        "items": []
      }
    },
    "uses-http2": {
      "id": "uses-http2",
      "title": "Does not use HTTP/2 for all of its resources",
      "description": "HTTP/2 offers many benefits over HTTP/1.1, including binary headers, multiplexing, and server push. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/http2
Download .txt
gitextract_i2g25n_w/

├── .dockerignore
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── dependabot.yml
│   └── workflows/
│       └── build.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE.md
├── PULL_REQUEST_TEMPLATE.md
├── README.md
├── __tests__/
│   ├── argparser.test.ts
│   ├── calculations.test.ts
│   ├── lighthouse-badges.test.ts
│   ├── main.test.ts
│   └── util.test.ts
├── assets/
│   └── report/
│       └── emanuelemazzotta.com.json
├── eslint.config.js
├── package.json
├── scripts/
│   └── util.sh
├── src/
│   ├── argparser.ts
│   ├── calculations.ts
│   ├── clui.d.ts
│   ├── index.ts
│   ├── lighthouse-badges.ts
│   ├── main.ts
│   ├── types.ts
│   └── util.ts
└── tsconfig.json
Download .txt
SYMBOL INDEX (18 symbols across 7 files)

FILE: __tests__/lighthouse-badges.test.ts
  constant TEST_OUTPUT_DIR (line 15) | const TEST_OUTPUT_DIR = path.join(process.cwd(), '__test_output__');
  function cleanupTestFiles (line 17) | function cleanupTestFiles() {
  function getTestFiles (line 31) | function getTestFiles(): string[] {

FILE: src/argparser.ts
  constant BADGE_STYLES (line 5) | const BADGE_STYLES: readonly BadgeStyle[] = [

FILE: src/calculations.ts
  constant COLOR_THRESHOLDS (line 3) | const COLOR_THRESHOLDS: ReadonlyArray<readonly [number, string]> = [

FILE: src/clui.d.ts
  class Spinner (line 2) | class Spinner {

FILE: src/lighthouse-badges.ts
  constant CHROME_FLAGS (line 17) | const CHROME_FLAGS = [
  type CalculateLighthouseMetricsFn (line 88) | type CalculateLighthouseMetricsFn = (

FILE: src/main.ts
  constant DEFAULT_LIGHTHOUSE_CONFIG (line 9) | const DEFAULT_LIGHTHOUSE_CONFIG: LighthouseConfig = { extends: 'lighthou...
  type Dependencies (line 24) | interface Dependencies {

FILE: src/types.ts
  type BadgeStyle (line 1) | type BadgeStyle = 'flat' | 'flat-square' | 'plastic' | 'for-the-badge' |...
  type ParsedArgs (line 3) | interface ParsedArgs {
  type LighthouseMetrics (line 11) | type LighthouseMetrics = Record<string, number>;
  type LighthouseReport (line 13) | type LighthouseReport = Record<string, string | false>;
  type ProcessedLighthouseResult (line 15) | interface ProcessedLighthouseResult {
  type LighthouseConfig (line 20) | interface LighthouseConfig {
  type LighthouseLHR (line 31) | interface LighthouseLHR {
  type Spinner (line 36) | interface Spinner {
Condensed preview — 31 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (250K chars).
[
  {
    "path": ".dockerignore",
    "chars": 29,
    "preview": "*\n!Dockerfile\n!dist\n!dist/**\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 615,
    "preview": "# These are supported funding model platforms\n\ngithub: [emazzotta]\npatreon: # Replace with a single Patreon username\nope"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 637,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\n\n---\n\nThanks for reporting an issue for lighthouse-badges"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 560,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\n\n---\n\n### Is your feature request related to a problem"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 143,
    "preview": "version: 2\nupdates:\n- package-ecosystem: bun\n  directory: \"/\"\n  schedule:\n    interval: daily\n    time: \"04:00\"\n  open-p"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 5553,
    "preview": "name: Build, Test & Deploy\n\non:\n  push:\n    branches:\n      - master\n  pull_request:\n\nenv:\n  TAG_PREFIX: emazzotta/light"
  },
  {
    "path": ".gitignore",
    "chars": 1366,
    "preview": "$RECYCLE.BIN\n*$py.class\n*.DS_Store*\n*.a\n*.app\n*.bak\n*.cab\n*.class\n*.com\n*.d\n*.dSYM/\n*.dat\n*.db\n*.dmg\n*.dylib\n*.ear\n*.egg"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 3228,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1608,
    "preview": "# Guide for contributors\n\n* **Would you like to ask a question, discuss feature ideas or noticed a (potential) bug?** Pl"
  },
  {
    "path": "Dockerfile",
    "chars": 1286,
    "preview": "FROM oven/bun:alpine\n\nRUN apk --update --no-cache add chromium && \\\n    mkdir -p /home/lighthouse\n\nARG BUILD_DATE\nARG VC"
  },
  {
    "path": "LICENSE.md",
    "chars": 1084,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2024 Emanuele Mazzotta\n\nPermission is hereby granted, free of charge, to any person"
  },
  {
    "path": "PULL_REQUEST_TEMPLATE.md",
    "chars": 41,
    "preview": "## Short Description\n\n### Major Changes\n\n"
  },
  {
    "path": "README.md",
    "chars": 4328,
    "preview": "[![Build Status](https://github.com/emazzotta/lighthouse-badges/actions/workflows/build.yml/badge.svg)](https://github.c"
  },
  {
    "path": "__tests__/argparser.test.ts",
    "chars": 909,
    "preview": "import { describe, it, expect } from 'bun:test';\nimport parser from '../src/argparser';\n\ndescribe('test argparser', () ="
  },
  {
    "path": "__tests__/calculations.test.ts",
    "chars": 3523,
    "preview": "import { describe, it, expect } from 'bun:test';\nimport { getAverageScore, getSquashedScore, percentageToColor } from '."
  },
  {
    "path": "__tests__/lighthouse-badges.test.ts",
    "chars": 7608,
    "preview": "import { describe, it, expect, beforeEach, afterEach, mock } from 'bun:test';\nimport fs from 'fs';\nimport path from 'pat"
  },
  {
    "path": "__tests__/main.test.ts",
    "chars": 2237,
    "preview": "import { describe, it, expect, beforeEach, afterEach, mock } from 'bun:test';\nimport type { Spinner, ParsedArgs } from '"
  },
  {
    "path": "__tests__/util.test.ts",
    "chars": 556,
    "preview": "import { describe, it, expect } from 'bun:test';\nimport { urlEscaper } from '../src/util';\n\ndescribe('urlEscaper', () =>"
  },
  {
    "path": "assets/report/emanuelemazzotta.com.json",
    "chars": 186689,
    "preview": "{\n  \"userAgent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/"
  },
  {
    "path": "eslint.config.js",
    "chars": 1281,
    "preview": "import eslint from '@eslint/js';\nimport tseslint from '@typescript-eslint/eslint-plugin';\nimport tsparser from '@typescr"
  },
  {
    "path": "package.json",
    "chars": 3460,
    "preview": "{\n  \"name\": \"@emazzotta/lighthouse-badges\",\n  \"version\": \"1.5.4\",\n  \"description\": \"🚦Generate gh-badges (shields.io) bas"
  },
  {
    "path": "scripts/util.sh",
    "chars": 1563,
    "preview": "#!/bin/bash\nset -euo pipefail\n\nreadonly PACKAGE_NAMES=(\"@emazzotta/lighthouse-badges\" \"lighthouse-badges\")\n\nPROJECT_ROOT"
  },
  {
    "path": "src/argparser.ts",
    "chars": 1487,
    "preview": "import { ArgumentParser } from 'argparse';\nimport packageJson from '../package.json' with { type: 'json' };\nimport type "
  },
  {
    "path": "src/calculations.ts",
    "chars": 1040,
    "preview": "import type { LighthouseMetrics } from './types.js';\n\nconst COLOR_THRESHOLDS: ReadonlyArray<readonly [number, string]> ="
  },
  {
    "path": "src/clui.d.ts",
    "chars": 145,
    "preview": "declare module 'clui' {\n  export class Spinner {\n    constructor(message: string, frames: string[]);\n    start(): void;\n"
  },
  {
    "path": "src/index.ts",
    "chars": 222,
    "preview": "#!/usr/bin/env node\n\nimport handleUserInput from './main.js';\nimport CLI from 'clui';\n\nconst spinner = new CLI.Spinner('"
  },
  {
    "path": "src/lighthouse-badges.ts",
    "chars": 3684,
    "preview": "import path from 'path';\nimport fs from 'fs/promises';\nimport { makeBadge } from 'badge-maker';\nimport lighthouse from '"
  },
  {
    "path": "src/main.ts",
    "chars": 1712,
    "preview": "import fs from 'fs/promises';\nimport {\n  calculateLighthouseMetrics as defaultCalculate,\n  processParameters as defaultP"
  },
  {
    "path": "src/types.ts",
    "chars": 903,
    "preview": "export type BadgeStyle = 'flat' | 'flat-square' | 'plastic' | 'for-the-badge' | 'social';\n\nexport interface ParsedArgs {"
  },
  {
    "path": "src/util.ts",
    "chars": 143,
    "preview": "export const urlEscaper = (url: string): string =>\n  url\n    .toLowerCase()\n    .replace(/(^\\w+:|^)\\/\\//, '')\n    .repla"
  },
  {
    "path": "tsconfig.json",
    "chars": 659,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"module\": \"ESNext\",\n    \"lib\": [\"ES2022\"],\n    \"moduleResolution\": "
  }
]

About this extraction

This page contains the full source code of the emazzotta/lighthouse-badges GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 31 files (232.7 KB), approximately 100.9k tokens, and a symbol index with 18 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!