Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 2.5.0 · 2026-08-01 19:04 UTC

GovTechSG / oobee

Oobee (formerly known as Purple A11y) is a customisable, automated web accessibility testing tool that allows software development teams to find and fix accessibility problems to improve persons with disabilities (PWDs) access to digital services.

EJSMIT★ 164 Sterne⑂ 52 Forksseit Juni 2020Auf GitHub ansehen ↗
ArtBibliothekKommandozeilenwerkzeugwie das ermittelt wird

GovTechSG/oobee erreicht einen Gesundheitsindex von 81 von 100 und liegt damit im Bereich Exzellent. Am stärksten schneidet es bei Vitality (89/100) ab, am schwächsten bei Engineering Quality (58/100). Zuletzt vor 1 Tag aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

81
gesamt / 100
Exzellent

Software-Gesundheitsindex

Metriken werden auf einer standardisierten Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr gewichtetes Mittel, kalibriert auf die Verteilung des öffentlichen Registers, sodass die Stufen Perzentilbedeutung tragen; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze Gefährdet von 34.

81
Außergewöhnlich93-100Die Spitzengruppe des Registers (≈ obere 5 %); erfüllt im Wesentlichen alle geprüften Kriterien
Exzellent80-92Durchgehend stark; geringfügige Lücken
Gut65-79Gesund; Lücken sind begrenzt und beherrschbar
Mittel50-64Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Schwach35-49Wesentliche Schwächen in mehreren Bereichen
Gefährdet20-34Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-19Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Der gewichtete Gesamtwert 69 wird auf der veröffentlichten Indexskala auf 81 kalibriert (Register-Kalibrierung 2026-08-02).

Eigentümerschaft

312 Follower171 öffentliche Reposseit Mai 2015

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlicht
npm@govtechsg/oobee0.11.359.43549vor 9 Tagen

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

89Exzellent · 21 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 1 Tagen
24.2/36Commit-Rhythmus — 35/52 Wochen mit Commits
18/18Commit-Volumen — 265 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year265
human_commit_share0,82
days_since_last_push1
active_weeks_last_year35
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 98 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 1 Tagen
27/27Release-Rhythmus — ein Release etwa alle 14,2 Tage
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Verwendete Eingangsdaten
releases_count98
latest_release_tag0.11.6
releases_from_tagsnein
days_since_latest_release1
mean_days_between_releases14,2

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

67Gut · 17 % des Gesamtindex
Wie die Bewertung erfolgt
35.9/60Stars — 164 Stars
14.2/25Forks — 52 Forks
3.9/15Watcher — 6 Watcher
Verwendete Eingangsdaten
forks52
stars164
watchers6
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
0/18CONTRIBUTING-Leitfaden
13.5/13.5Verhaltenskodex
0/7.2Issue-Vorlage
6.3/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
readme_badges
has_contributingnein
has_issue_templatenein
has_code_of_conductja
readme_badge_services
has_pull_request_templateja
Wie die Bewertung erfolgt
63.7/80Downloads pro Monat — 59.435 Downloads/Monat über npm
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packages@govtechsg/oobee
dependents
ecosystemsnpm
total_downloads
monthly_downloads59.435
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

65Gut · 23 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
8.3/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 63 % der Commits
13.5/13.5Breite der Beitragenden — 29 Beitragende
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Verwendete Eingangsdaten
bus_factor1
contributors_sampled29
top_contributor_share0,633
Wie die Bewertung erfolgt
31.1/42Issue-Lösungsquote — 74 % der Issues geschlossen
25.6/30PR-Annahme — 642/751 entschiedene PRs gemergt
0/13Newcomer PR acceptance — kein PR eines Erstbeitragenden in 30 Tagen entschieden
0/15OpenSSF Scorecard: Code-Review — Found 0/26 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs642
open_issues13
closed_issues37
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio0,74
closed_unmerged_prs109
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): newcomer_pr_acceptance. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
17.9/25Reichweite des Inhabers — 312 Follower von GovTechSG
25/25Kontohistorie — 171 öffentliche Repos, Kontoalter ca. 11 Jahre
Verwendete Eingangsdaten
followers312
owner_typeOrganization
is_verified
owner_loginGovTechSG
public_repos171
account_age_days4.097

Paketpflege

100Außergewöhnlich
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf npm
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 9 Tagen
20/20Versionshistorie — 49 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packages@govtechsg/oobee
ecosystemsnpm
any_deprecatednein
min_days_since_publish9

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

58Mittel · 19 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 5 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration — eslint.config.js
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 17 merged PRs checked by a CI test -- score normalized to 0
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
0/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
10/10Repository-Beschreibung
0/10Topics
10/10Wiki
Verwendete Eingangsdaten
topics
has_wikija
homepage
has_readmeja
has_docs_dirnein
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

64Mittel · 16 % des Gesamtindex
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — keine Daten
0/2.5CI-Tests — 0 out of 17 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/26 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
7.5/7.5Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate5,5
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): branch_protection. Die verbleibenden Gewichte wurden renormalisiert.

Abhängigkeits-Advisories

100Außergewöhnlich
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
25/25Indirekte Abhängigkeiten ohne bekannte Advisories — keine indirekte Abhängigkeit trägt ein bekanntes Advisory
0/40Keine offenen Advisories — kein Advisory trägt ein Veröffentlichungsdatum
Verwendete Eingangsdaten
sourceosv
advisories0
affected_packages0
assessed_packages500
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Keine offenen Advisories. Die verbleibenden Gewichte wurden renormalisiert. Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von npm:@govtechsg/oobee@0.11.3 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 500 Paketen. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Trägt ein bewusst kleines Gewicht (4 %): Agenten-Tooling ist ein echtes Pflegesignal, doch ein Repository ohne jedes Signal kann weiterhin 100/100 erreichen.

73Gut · 4 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — AGENTS.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 69 von 82 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,841
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes40.971
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration — eslint.config.js
11/11Statische Typprüfung — examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json
10/10Reproduzierbare Umgebung — Dockerfile, lockfile
10/10Belegte Agentenpraxis — 48 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
8/8Automatisierte Wartung — 7 der letzten 100 Commits sind automatisierte Abhängigkeits-Updates
1/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilespackage-lock.json
has_dockerfileja
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_configja
typecheck_configsexamples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json
agent_commit_share0,48
toolchain_manifests
dependency_bot_commit_share0,07
Wie die Bewertung erfolgt
27/45Typprüfbarer Code — EJS mit Typprüfungs-Konfiguration (examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json)
52.3/55Handhabbare Dateigrößen — 4/82 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageEJS
largest_source_bytes1.456.005
source_files_sampled82
oversized_source_files4
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalnein
api_schema_files

Eckdaten

164GitHub-Sterne
29Mitwirkende
265Commits, letzte 12 Monate
1Tage seit letztem Push
98Releases
1Bus-Faktor
13offene Issues
npmPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 52 ⇿
0Sterne
52Forks
96Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

010203040504822020-092023-082026-07
Major 0Minor 2Patch 93

Jeder Punkt umfasst 6 Tage.

OpenSSF Scorecard 5.5 / 10
5.5Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-08-01 19:03 UTC

10Binary-Artifactsno binaries found in the repo
k. A.Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
0CI-Tests0 out of 17 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/26 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
1Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 1
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Direkte Abhängigkeiten 39
RegistryPaketVersionsvorgabeManifest
npm@aws-sdk/client-s3^3.1049.0package.json
npm@json2csv/node^7.0.3package.json
npm@napi-rs/canvas^0.1.53package.json
npm@sentry/node^10.58.0package.json
npm@types/aws-sdk^0.0.42package.json
npmaxe-core^4.11.4package.json
npmaxios^1.8.2package.json
npmbase64-stream^1.0.0package.json
npmcheerio^1.0.0-rc.12package.json
npmcrawlee^3.17.0package.json
npmejs^3.1.9package.json
npmfile-type^21.3.3package.json
npmfs-extra^11.2.0package.json
npmglob^13.0.6package.json
npmhttps^1.0.0package.json
npminquirer^9.2.12package.json
npmjsdom^29.0.0package.json
npmjszip^3.10.1package.json
npmlodash^4.18.1package.json
npmmime^4.0.7package.json
npmmime-types^2.1.35package.json
npmminimatch^10.2.4package.json
npmpdfjs-distgithub:veraPDF/pdfjs-dist#v4.4.168-taggedPdf-0.1.20package.json
npmplaywright^1.61.1package.json
npmprettier^3.1.0package.json
npmprint-message^3.0.1package.json
npmsafe-regex^2.1.1package.json
npmtext-readability^1.1.0package.json
npmtldts^7.0.27package.json
npmtypescript^5.4.5package.json
npmurl^0.11.3package.json
npmuuid^14.0.0package.json
npmvalidator^13.11.0package.json
npmwhich^4.0.0package.json
npmwinston^3.11.0package.json
npmws^8.21.1package.json
npmxml2js^0.6.2package.json
npmxpath-to-css^1.2.0package.json
npmyargs^17.7.2package.json
Alle Abhängigkeiten 941

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 46 direkte und 895 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

RegistryPaketVersionBeziehung
npm@aws-sdk/client-s33.1049.0direkt
npm@json2csv/node7.0.6direkt
npm@napi-rs/canvas0.1.97direkt
npm@sentry/node10.58.0direkt
npm@types/aws-sdk0.0.42direkt
npmaxe-core4.11.4direkt
npmaxios1.18.1direkt
npmbase64-stream1.0.0direkt
npmcheerio1.0.0-rc.12direkt
npmcheerio1.2.0direkt
npmcrawlee3.17.0direkt
npmejs3.1.10direkt
npmfile-type21.3.3direkt
npmfs-extra11.3.4direkt
npmglob13.0.6direkt
npmhttps1.0.0direkt
npminquirer8.2.7direkt
npminquirer9.3.8direkt
npmjsdom26.1.0direkt
npmjsdom29.0.0direkt
npmjszip3.10.1direkt
npmlodash4.18.1direkt
npmmime4.1.0direkt
npmmime-types2.1.35direkt
npmminimatch10.2.4direkt
npmpdfjs-dist4.4.168direkt
npmplaywright1.61.1direkt
npmplaywright^1.55.0direkt
npmprettier3.8.1direkt
npmprint-message3.0.1direkt
npmsafe-regex2.1.1direkt
npmtext-readability1.1.1direkt
npmtldts6.1.86direkt
npmtldts7.0.27direkt
npmtypescript5.9.3direkt
npmtypescript^5.9.3direkt
npmurl0.11.4direkt
npmuuid14.0.0direkt
npmvalidator13.15.26direkt
npmwhich2.0.2direkt
npmwhich4.0.0direkt
npmwinston3.19.0direkt
npmws8.21.1direkt
npmxml2js0.6.2direkt
npmxpath-to-css1.2.0direkt
npmyargs17.7.2direkt
npm@apify/consts2.53.3indirekt
npm@apify/datastructures2.0.6indirekt
npm@apify/log2.5.41indirekt
npm@apify/ps-tree1.2.0indirekt
npm@apify/pseudo_url2.0.82indirekt
npm@apify/timeout0.3.5indirekt
npm@apify/utilities2.34.1indirekt
npm@asamuzakjp/css-color3.2.0indirekt
npm@asamuzakjp/css-color5.0.1indirekt
npm@asamuzakjp/dom-selector7.0.3indirekt
npm@asamuzakjp/nwsapi2.3.9indirekt
npm@aws-crypto/crc325.2.0indirekt
npm@aws-crypto/crc32c5.2.0indirekt
npm@aws-crypto/sha1-browser5.2.0indirekt
npm@aws-crypto/sha256-browser5.2.0indirekt
npm@aws-crypto/sha256-js5.2.0indirekt
npm@aws-crypto/supports-web-crypto5.2.0indirekt
npm@aws-crypto/util5.2.0indirekt
npm@aws-sdk/core3.974.12indirekt
npm@aws-sdk/crc64-nvme3.972.8indirekt
npm@aws-sdk/credential-provider-env3.972.38indirekt
npm@aws-sdk/credential-provider-http3.972.40indirekt
npm@aws-sdk/credential-provider-ini3.972.42indirekt
npm@aws-sdk/credential-provider-login3.972.42indirekt
npm@aws-sdk/credential-provider-node3.972.43indirekt
npm@aws-sdk/credential-provider-process3.972.38indirekt
npm@aws-sdk/credential-provider-sso3.972.42indirekt
npm@aws-sdk/credential-provider-web-identity3.972.42indirekt
npm@aws-sdk/middleware-bucket-endpoint3.972.14indirekt
npm@aws-sdk/middleware-expect-continue3.972.12indirekt
npm@aws-sdk/middleware-flexible-checksums3.974.20indirekt
npm@aws-sdk/middleware-location-constraint3.972.10indirekt
npm@aws-sdk/middleware-sdk-s33.972.41indirekt
npm@aws-sdk/middleware-ssec3.972.10indirekt
npm@aws-sdk/nested-clients3.997.10indirekt
npm@aws-sdk/signature-v4-multi-region3.996.27indirekt
npm@aws-sdk/token-providers3.1049.0indirekt
npm@aws-sdk/types3.973.8indirekt
npm@aws-sdk/util-locate-window3.965.5indirekt
npm@aws-sdk/xml-builder3.972.24indirekt
npm@aws/lambda-invoke-store0.2.4indirekt
npm@babel/code-frame7.29.7indirekt
npm@babel/compat-data7.29.7indirekt
npm@babel/core7.29.7indirekt
npm@babel/generator7.29.7indirekt
npm@babel/helper-compilation-targets7.29.7indirekt
npm@babel/helper-globals7.29.7indirekt
npm@babel/helper-module-imports7.29.7indirekt
npm@babel/helper-module-transforms7.29.7indirekt
npm@babel/helper-plugin-utils7.29.7indirekt
npm@babel/helper-string-parser7.29.7indirekt
npm@babel/helper-validator-identifier7.29.7indirekt
npm@babel/helper-validator-option7.29.7indirekt
npm@babel/helpers7.29.7indirekt
npm@babel/parser7.29.7indirekt
npm@babel/plugin-syntax-async-generators7.8.4indirekt
npm@babel/plugin-syntax-bigint7.8.3indirekt
npm@babel/plugin-syntax-class-properties7.12.13indirekt
npm@babel/plugin-syntax-class-static-block7.14.5indirekt
npm@babel/plugin-syntax-import-attributes7.29.7indirekt
npm@babel/plugin-syntax-import-meta7.10.4indirekt
npm@babel/plugin-syntax-json-strings7.8.3indirekt
npm@babel/plugin-syntax-jsx7.29.7indirekt
npm@babel/plugin-syntax-logical-assignment-operators7.10.4indirekt
npm@babel/plugin-syntax-nullish-coalescing-operator7.8.3indirekt
npm@babel/plugin-syntax-numeric-separator7.10.4indirekt
npm@babel/plugin-syntax-object-rest-spread7.8.3indirekt
npm@babel/plugin-syntax-optional-catch-binding7.8.3indirekt
npm@babel/plugin-syntax-optional-chaining7.8.3indirekt
npm@babel/plugin-syntax-private-property-in-object7.14.5indirekt
npm@babel/plugin-syntax-top-level-await7.14.5indirekt
npm@babel/plugin-syntax-typescript7.29.7indirekt
npm@babel/template7.29.7indirekt
npm@babel/traverse7.29.7indirekt
npm@babel/types7.29.7indirekt
npm@bcoe/v8-coverage0.2.3indirekt
npm@borewit/text-codec0.2.2indirekt
npm@bramus/specificity2.4.2indirekt
npm@colors/colors1.6.0indirekt
npm@crawlee/basic3.17.0indirekt
npm@crawlee/browser3.17.0indirekt
npm@crawlee/browser-pool3.17.0indirekt
npm@crawlee/cheerio3.17.0indirekt
npm@crawlee/cli3.17.0indirekt
npm@crawlee/core3.17.0indirekt
npm@crawlee/http3.17.0indirekt
npm@crawlee/jsdom3.17.0indirekt
npm@crawlee/linkedom3.17.0indirekt
npm@crawlee/memory-storage3.17.0indirekt
npm@crawlee/playwright3.17.0indirekt
npm@crawlee/puppeteer3.17.0indirekt
npm@crawlee/templates3.17.0indirekt
npm@crawlee/types3.17.0indirekt
npm@crawlee/utils3.17.0indirekt
npm@csstools/color-helpers5.1.0indirekt
npm@csstools/color-helpers6.0.2indirekt
npm@csstools/css-calc2.1.4indirekt
npm@csstools/css-calc3.1.1indirekt
npm@csstools/css-color-parser3.1.0indirekt
npm@csstools/css-color-parser4.0.2indirekt
npm@csstools/css-parser-algorithms3.0.5indirekt
npm@csstools/css-parser-algorithms4.0.0indirekt
npm@csstools/css-syntax-patches-for-csstree1.1.1indirekt
npm@csstools/css-tokenizer3.0.4indirekt
npm@csstools/css-tokenizer4.0.0indirekt
npm@dabh/diagnostics2.0.8indirekt
npm@emnapi/core1.10.0indirekt
npm@emnapi/runtime1.10.0indirekt
npm@emnapi/wasi-threads1.2.1indirekt
npm@eslint-community/eslint-utils4.9.1indirekt
npm@eslint-community/regexpp4.12.2indirekt
npm@eslint/config-array0.21.2indirekt
npm@eslint/config-helpers0.4.2indirekt
npm@eslint/core0.17.0indirekt
npm@eslint/eslintrc3.3.5indirekt
npm@eslint/js9.39.4indirekt
npm@eslint/object-schema2.1.7indirekt
npm@eslint/plugin-kit0.4.1indirekt
npm@exodus/bytes1.15.0indirekt
npm@govtechsg/oobee^0.10.69indirekt
npm@humanfs/core0.19.1indirekt
npm@humanfs/node0.16.7indirekt
npm@humanwhocodes/module-importer1.0.1indirekt
npm@humanwhocodes/retry0.4.3indirekt
npm@inquirer/external-editor1.0.3indirekt
npm@inquirer/figures1.0.15indirekt
npm@isaacs/fs-minipass4.0.1indirekt
npm@istanbuljs/load-nyc-config1.1.0indirekt
npm@istanbuljs/schema0.1.6indirekt
npm@jest/console30.4.1indirekt
npm@jest/core30.4.2indirekt
npm@jest/diff-sequences30.4.0indirekt
npm@jest/environment30.4.1indirekt
npm@jest/expect30.4.1indirekt
npm@jest/expect-utils30.4.1indirekt
npm@jest/fake-timers30.4.1indirekt
npm@jest/get-type30.1.0indirekt
npm@jest/globals30.4.1indirekt
npm@jest/pattern30.4.0indirekt
npm@jest/reporters30.4.1indirekt
npm@jest/schemas30.4.1indirekt
npm@jest/snapshot-utils30.4.1indirekt
npm@jest/source-map30.0.1indirekt
npm@jest/test-result30.4.1indirekt
npm@jest/test-sequencer30.4.1indirekt
npm@jest/transform30.4.1indirekt
npm@jest/types30.4.1indirekt
npm@jridgewell/gen-mapping0.3.13indirekt
npm@jridgewell/remapping2.3.5indirekt
npm@jridgewell/resolve-uri3.1.2indirekt
npm@jridgewell/sourcemap-codec1.5.5indirekt
npm@jridgewell/trace-mapping0.3.31indirekt
npm@json2csv/formatters7.0.6indirekt
npm@json2csv/plainjs7.0.6indirekt
npm@keyv/serialize1.1.1indirekt
npm@mapbox/node-pre-gyp1.0.11indirekt
npm@napi-rs/canvas-android-arm640.1.97indirekt
npm@napi-rs/canvas-darwin-arm640.1.97indirekt
npm@napi-rs/canvas-darwin-x640.1.97indirekt
npm@napi-rs/canvas-linux-arm-gnueabihf0.1.97indirekt
npm@napi-rs/canvas-linux-arm64-gnu0.1.53indirekt
npm@napi-rs/canvas-linux-arm64-gnu0.1.97indirekt
npm@napi-rs/canvas-linux-arm64-musl0.1.53indirekt
npm@napi-rs/canvas-linux-arm64-musl0.1.97indirekt
npm@napi-rs/canvas-linux-riscv64-gnu0.1.97indirekt
npm@napi-rs/canvas-linux-x64-gnu0.1.53indirekt
npm@napi-rs/canvas-linux-x64-gnu0.1.97indirekt
npm@napi-rs/canvas-linux-x64-musl0.1.53indirekt
npm@napi-rs/canvas-linux-x64-musl0.1.97indirekt
npm@napi-rs/canvas-win32-arm64-msvc0.1.97indirekt
npm@napi-rs/canvas-win32-x64-msvc0.1.53indirekt
npm@napi-rs/canvas-win32-x64-msvc0.1.97indirekt
npm@napi-rs/wasm-runtime1.1.5indirekt
npm@nodable/entities2.1.0indirekt
npm@opentelemetry/api1.9.1indirekt
npm@opentelemetry/api-logs0.214.0indirekt
npm@opentelemetry/core2.8.0indirekt
npm@opentelemetry/instrumentation0.214.0indirekt
npm@opentelemetry/resources2.8.0indirekt
npm@opentelemetry/sdk-trace-base2.8.0indirekt
npm@opentelemetry/semantic-conventions1.41.1indirekt
npm@pkgr/core0.2.9indirekt
npm@rtsao/scc1.1.0indirekt
npm@sapphire/async-queue1.5.5indirekt
npm@sapphire/shapeshift3.9.7indirekt
npm@sec-ant/readable-stream0.4.1indirekt
npm@sentry/core10.58.0indirekt
npm@sentry/node-core10.58.0indirekt
npm@sentry/opentelemetry10.58.0indirekt
npm@sentry/server-utils10.58.0indirekt
npm@sinclair/typebox0.34.49indirekt
npm@sindresorhus/is4.6.0indirekt
npm@sindresorhus/is5.6.0indirekt
npm@sindresorhus/is7.2.0indirekt
npm@sinonjs/commons3.0.1indirekt
npm@sinonjs/fake-timers15.4.0indirekt
npm@smithy/core3.24.3indirekt
npm@smithy/credential-provider-imds4.3.3indirekt
npm@smithy/fetch-http-handler5.4.3indirekt
npm@smithy/is-array-buffer2.2.0indirekt
npm@smithy/node-http-handler4.7.3indirekt
npm@smithy/signature-v45.4.3indirekt
npm@smithy/types4.14.2indirekt
npm@smithy/util-buffer-from2.2.0indirekt
npm@smithy/util-utf82.3.0indirekt
npm@so-ric/colorspace1.1.6indirekt
npm@streamparser/json0.0.20indirekt
npm@tokenizer/inflate0.4.1indirekt
npm@tokenizer/token0.3.0indirekt
npm@tybys/wasm-util0.10.2indirekt
npm@types/babel__core7.20.5indirekt
npm@types/babel__generator7.27.0indirekt
npm@types/babel__template7.4.4indirekt
npm@types/babel__traverse7.28.0indirekt
npm@types/base64-stream1.0.5indirekt
npm@types/content-type1.1.9indirekt
npm@types/eslint9.6.1indirekt
npm@types/eslint__js8.42.3indirekt
npm@types/estree1.0.8indirekt
npm@types/fs-extra11.0.4indirekt
npm@types/http-cache-semantics4.2.0indirekt
npm@types/inquirer9.0.9indirekt
npm@types/istanbul-lib-coverage2.0.6indirekt
npm@types/istanbul-lib-report3.0.3indirekt
npm@types/istanbul-reports3.0.4indirekt
npm@types/jest^30.0.0indirekt
npm@types/jsdom21.1.7indirekt
npm@types/json-schema7.0.15indirekt
npm@types/json50.0.29indirekt
npm@types/jsonfile6.1.4indirekt
npm@types/lodash4.17.24indirekt
npm@types/mime3.0.4indirekt
npm@types/mime-types2.1.4indirekt
npm@types/node25.5.0indirekt
npm@types/pluralize0.0.29indirekt
npm@types/safe-regex1.1.6indirekt
npm@types/sax1.2.7indirekt
npm@types/stack-utils2.0.3indirekt
npm@types/through0.0.33indirekt
npm@types/tough-cookie4.0.5indirekt
npm@types/triple-beam1.3.5indirekt
npm@types/validator13.15.10indirekt
npm@types/which3.0.4indirekt
npm@types/xml2js0.4.14indirekt
npm@types/yargs17.0.35indirekt
npm@types/yargs-parser21.0.3indirekt
npm@typescript-eslint/eslint-plugin8.57.1indirekt
npm@typescript-eslint/parser8.57.1indirekt
npm@typescript-eslint/project-service8.57.1indirekt
npm@typescript-eslint/scope-manager8.57.1indirekt
npm@typescript-eslint/tsconfig-utils8.57.1indirekt
npm@typescript-eslint/type-utils8.57.1indirekt
npm@typescript-eslint/types8.57.1indirekt
npm@typescript-eslint/typescript-estree8.57.1indirekt
npm@typescript-eslint/utils8.57.1indirekt
npm@typescript-eslint/visitor-keys8.57.1indirekt
npm@ungap/structured-clone1.3.1indirekt
npm@unrs/resolver-binding-android-arm-eabi1.12.2indirekt
npm@unrs/resolver-binding-android-arm641.12.2indirekt
npm@unrs/resolver-binding-darwin-arm641.12.2indirekt
npm@unrs/resolver-binding-darwin-x641.12.2indirekt
npm@unrs/resolver-binding-freebsd-x641.12.2indirekt
npm@unrs/resolver-binding-linux-arm-gnueabihf1.12.2indirekt
npm@unrs/resolver-binding-linux-arm-musleabihf1.12.2indirekt
npm@unrs/resolver-binding-linux-arm64-gnu1.12.2indirekt
npm@unrs/resolver-binding-linux-arm64-musl1.12.2indirekt
npm@unrs/resolver-binding-linux-loong64-gnu1.12.2indirekt
npm@unrs/resolver-binding-linux-loong64-musl1.12.2indirekt
npm@unrs/resolver-binding-linux-ppc64-gnu1.12.2indirekt
npm@unrs/resolver-binding-linux-riscv64-gnu1.12.2indirekt
npm@unrs/resolver-binding-linux-riscv64-musl1.12.2indirekt
npm@unrs/resolver-binding-linux-s390x-gnu1.12.2indirekt
npm@unrs/resolver-binding-linux-x64-gnu1.12.2indirekt
npm@unrs/resolver-binding-linux-x64-musl1.12.2indirekt
npm@unrs/resolver-binding-openharmony-arm641.12.2indirekt
npm@unrs/resolver-binding-wasm32-wasi1.12.2indirekt
npm@unrs/resolver-binding-win32-arm64-msvc1.12.2indirekt
npm@unrs/resolver-binding-win32-ia32-msvc1.12.2indirekt
npm@unrs/resolver-binding-win32-x64-msvc1.12.2indirekt
npm@vladfrangu/async_event_emitter2.4.7indirekt
npmabbrev1.1.1indirekt
npmabort-controller3.0.0indirekt
npmacorn8.16.0indirekt
npmacorn-import-attributes1.9.5indirekt
npmacorn-jsx5.3.2indirekt
npmadm-zip0.6.0indirekt
npmagent-base6.0.2indirekt
npmagent-base7.1.4indirekt
npmajv6.14.0indirekt
npmansi-colors4.1.3indirekt
npmansi-escapes4.3.2indirekt
npmansi-regex5.0.1indirekt
npmansi-styles2.2.1indirekt
npmansi-styles4.3.0indirekt
npmansi-styles5.2.0indirekt
npmanymatch3.1.3indirekt
npmaproba2.1.0indirekt
npmare-we-there-yet2.0.0indirekt
npmargparse2.0.1indirekt
npmarray-buffer-byte-length1.0.2indirekt
npmarray-includes3.1.9indirekt
npmarray.prototype.findlastindex1.2.6indirekt
npmarray.prototype.flat1.3.3indirekt
npmarray.prototype.flatmap1.3.3indirekt
npmarraybuffer.prototype.slice1.0.4indirekt
npmasync3.2.6indirekt
npmasync-function1.0.0indirekt
npmasynckit0.4.0indirekt
npmavailable-typed-arrays1.0.7indirekt
npmbabel-jest30.4.1indirekt
npmbabel-plugin-istanbul7.0.1indirekt
npmbabel-plugin-jest-hoist30.4.0indirekt
npmbabel-preset-current-node-syntax1.2.0indirekt
npmbabel-preset-jest30.4.0indirekt
npmbalanced-match4.0.4indirekt
npmbase64-js1.5.1indirekt
npmbaseline-browser-mapping2.10.8indirekt
npmbidi-js1.0.3indirekt
npmbl4.1.0indirekt
npmboolbase1.0.0indirekt
npmbowser2.14.1indirekt
npmbrace-expansion5.0.8indirekt
npmbrowserify-zlib0.2.0indirekt
npmbrowserslist4.28.1indirekt
npmbser2.1.1indirekt
npmbuffer5.7.1indirekt
npmbuffer6.0.3indirekt
npmbuffer-from1.1.2indirekt
npmbyte-counter0.1.0indirekt
npmcacheable-lookup7.0.0indirekt
npmcacheable-request13.0.19indirekt
npmcall-bind1.0.8indirekt
npmcall-bind-apply-helpers1.0.2indirekt
npmcall-bound1.0.4indirekt
npmcallsites3.1.0indirekt
npmcallsites4.2.0indirekt
npmcamelcase5.3.1indirekt
npmcamelcase6.3.0indirekt
npmcaniuse-lite1.0.30001780indirekt
npmcanvas2.11.2indirekt
npmchalk1.1.3indirekt
npmchalk4.1.2indirekt
npmchar-regex1.0.2indirekt
npmchardet2.1.1indirekt
npmcheerio-select2.1.0indirekt
npmchownr3.0.0indirekt
npmci-info4.4.0indirekt
npmcjs-module-lexer2.2.0indirekt
npmcli-cursor3.1.0indirekt
npmcli-spinners2.9.2indirekt
npmcli-width3.0.0indirekt
npmcli-width4.1.0indirekt
npmcliui8.0.1indirekt
npmclone1.0.4indirekt
npmco4.6.0indirekt
npmcollect-v8-coverage1.0.3indirekt
npmcolor5.0.3indirekt
npmcolor-convert2.0.1indirekt
npmcolor-convert3.1.3indirekt
npmcolor-name1.1.4indirekt
npmcolor-name2.1.0indirekt
npmcolor-string2.1.4indirekt
npmcolor-support1.1.3indirekt
npmcombined-stream1.0.8indirekt
npmcommander14.0.3indirekt
npmconfusing-browser-globals1.0.11indirekt
npmconsole-control-strings1.1.0indirekt
npmcontent-type1.0.5indirekt
npmconvert-source-map2.0.0indirekt
npmcore-util-is1.0.3indirekt
npmcross-spawn7.0.6indirekt
npmcss-select5.2.2indirekt
npmcss-tree3.2.1indirekt
npmcss-what6.2.2indirekt
npmcssom0.5.0indirekt
npmcssstyle4.6.0indirekt
npmcsv-stringify6.8.1indirekt
npmcypress^13.0.0indirekt
npmcypress^15.3.0indirekt
npmdata-urls5.0.0indirekt
npmdata-urls7.0.0indirekt
npmdata-view-buffer1.0.2indirekt
npmdata-view-byte-length1.0.2indirekt
npmdata-view-byte-offset1.0.1indirekt
npmdebug3.2.7indirekt
npmdebug4.4.3indirekt
npmdecimal.js10.6.0indirekt
npmdecompress-response10.0.0indirekt
npmdecompress-response4.2.1indirekt
npmdedent1.7.2indirekt
npmdeep-is0.1.4indirekt
npmdeepmerge4.3.1indirekt
npmdefaults1.0.4indirekt
npmdefine-data-property1.1.4indirekt
npmdefine-properties1.2.1indirekt
npmdelayed-stream1.0.0indirekt
npmdelegates1.0.0indirekt
npmdetect-libc2.1.2indirekt
npmdetect-newline3.1.0indirekt
npmdevtools-protocol0.0.1656784indirekt
npmdoctrine2.1.0indirekt
npmdom-serializer2.0.0indirekt
npmdomelementtype2.3.0indirekt
npmdomhandler5.0.3indirekt
npmdomutils3.2.2indirekt
npmdot-prop6.0.1indirekt
npmdot-prop7.2.0indirekt
npmdunder-proto1.0.1indirekt
npmduplexer0.1.2indirekt
npmelectron-to-chromium1.5.321indirekt
npmemittery0.13.1indirekt
npmemoji-regex8.0.0indirekt
npmenabled2.0.0indirekt
npmencoding-sniffer0.2.1indirekt
npmentities4.5.0indirekt
npmentities6.0.1indirekt
npmentities7.0.1indirekt
npmerror-ex1.3.4indirekt
npmes-abstract1.24.1indirekt
npmes-define-property1.0.1indirekt
npmes-errors1.3.0indirekt
npmes-object-atoms1.1.1indirekt
npmes-set-tostringtag2.1.0indirekt
npmes-shim-unscopables1.1.0indirekt
npmes-to-primitive1.3.0indirekt
npmescalade3.2.0indirekt
npmescape-string-regexp1.0.5indirekt
npmescape-string-regexp2.0.0indirekt
npmescape-string-regexp4.0.0indirekt
npmeslint9.39.4indirekt
npmeslint-config-airbnb-base15.0.0indirekt
npmeslint-config-prettier8.10.2indirekt
npmeslint-import-resolver-node0.3.9indirekt
npmeslint-module-utils2.12.1indirekt
npmeslint-plugin-import2.32.0indirekt
npmeslint-plugin-prettier5.5.5indirekt
npmeslint-scope8.4.0indirekt
npmeslint-visitor-keys3.4.3indirekt
npmeslint-visitor-keys4.2.1indirekt
npmeslint-visitor-keys5.0.1indirekt
npmespree10.4.0indirekt
npmesquery1.7.0indirekt
npmesrecurse4.3.0indirekt
npmestraverse5.3.0indirekt
npmesutils2.0.3indirekt
npmevent-stream3.3.4indirekt
npmevent-target-shim5.0.1indirekt
npmevents3.3.0indirekt
npmexeca5.1.1indirekt
npmexit-x0.2.2indirekt
npmexpect30.4.1indirekt
npmfast-deep-equal3.1.3indirekt
npmfast-diff1.3.0indirekt
npmfast-json-stable-stringify2.1.0indirekt
npmfast-levenshtein2.0.6indirekt
npmfast-xml-builder1.2.0indirekt
npmfast-xml-parser5.8.0indirekt
npmfb-watchman2.0.2indirekt
npmfdir6.5.0indirekt
npmfecha4.2.3indirekt
npmfiglet1.11.0indirekt
npmfigures3.2.0indirekt
npmfile-entry-cache8.0.0indirekt
npmfilelist1.0.6indirekt
npmfind-up4.1.0indirekt
npmfind-up5.0.0indirekt
npmfingerprint-generator2.1.82indirekt
npmfingerprint-injector2.1.82indirekt
npmflat-cache4.0.1indirekt
npmflatted3.4.2indirekt
npmfn.name1.1.0indirekt
npmfollow-redirects1.16.0indirekt
npmfor-each0.3.5indirekt
npmform-data4.0.6indirekt
npmform-data-encoder4.1.0indirekt
npmfrom0.1.7indirekt
npmfsevents2.3.2indirekt
npmfsevents2.3.3indirekt
npmfunction-bind1.1.2indirekt
npmfunction.prototype.name1.1.8indirekt
npmfunctions-have-names1.2.3indirekt
npmgauge3.0.2indirekt
npmgenerative-bayesian-network2.1.83indirekt
npmgenerator-function2.0.1indirekt
npmgensync1.0.0-beta.2indirekt
npmget-caller-file2.0.5indirekt
npmget-intrinsic1.3.0indirekt
npmget-package-type0.1.0indirekt
npmget-proto1.0.1indirekt
npmget-stream6.0.1indirekt
npmget-stream9.0.1indirekt
npmget-symbol-description1.1.0indirekt
npmglob-parent6.0.2indirekt
npmglobals14.0.0indirekt
npmglobals15.15.0indirekt
npmglobalthis1.0.4indirekt
npmgopd1.2.0indirekt
npmgot14.6.6indirekt
npmgot-scraping4.2.1indirekt
npmgraceful-fs4.2.11indirekt
npmhas-ansi2.0.0indirekt
npmhas-bigints1.1.0indirekt
npmhas-flag4.0.0indirekt
npmhas-property-descriptors1.0.2indirekt
npmhas-proto1.2.0indirekt
npmhas-symbols1.1.0indirekt
npmhas-tostringtag1.0.2indirekt
npmhas-unicode2.0.1indirekt
npmhasown2.0.2indirekt
npmhasown2.0.4indirekt
npmheader-generator2.1.82indirekt
npmhtml-encoding-sniffer4.0.0indirekt
npmhtml-encoding-sniffer6.0.0indirekt
npmhtml-escaper2.0.2indirekt
npmhtml-escaper3.0.3indirekt
npmhtmlparser210.1.0indirekt
npmhtmlparser28.0.2indirekt
npmhtmlparser29.1.0indirekt
npmhttp-cache-semantics4.2.0indirekt
npmhttp-proxy-agent7.0.2indirekt
npmhttp2-wrapper2.2.1indirekt
npmhttps-proxy-agent5.0.1indirekt
npmhttps-proxy-agent7.0.6indirekt
npmhuman-signals2.1.0indirekt
npmiconv-lite0.6.3indirekt
npmiconv-lite0.7.2indirekt
npmidcac-playwright0.2.0indirekt
npmieee7541.2.1indirekt
npmignore5.3.2indirekt
npmignore7.0.5indirekt
npmimmediate3.0.6indirekt
npmimport-fresh3.3.1indirekt
npmimport-in-the-middle3.0.2indirekt
npmimport-local3.2.0indirekt
npmimurmurhash0.1.4indirekt
npminherits2.0.4indirekt
npminternal-slot1.1.0indirekt
npmip-address10.2.0indirekt
npmis-any-array3.0.0indirekt
npmis-array-buffer3.0.5indirekt
npmis-arrayish0.2.1indirekt
npmis-async-function2.1.1indirekt
npmis-bigint1.1.0indirekt
npmis-boolean-object1.2.2indirekt
npmis-callable1.2.7indirekt
npmis-core-module2.16.1indirekt
npmis-data-view1.0.2indirekt
npmis-date-object1.1.0indirekt
npmis-extglob2.1.1indirekt
npmis-finalizationregistry1.1.1indirekt
npmis-fullwidth-code-point3.0.0indirekt
npmis-generator-fn2.1.0indirekt
npmis-generator-function1.1.2indirekt
npmis-glob4.0.3indirekt
npmis-interactive1.0.0indirekt
npmis-map2.0.3indirekt
npmis-negative-zero2.0.3indirekt
npmis-number-object1.1.1indirekt
npmis-obj2.0.0indirekt
npmis-potential-custom-element-name1.0.1indirekt
npmis-regex1.2.1indirekt
npmis-set2.0.3indirekt
npmis-shared-array-buffer1.0.4indirekt
npmis-stream2.0.1indirekt
npmis-stream4.0.1indirekt
npmis-string1.1.1indirekt
npmis-symbol1.1.1indirekt
npmis-typed-array1.1.15indirekt
npmis-unicode-supported0.1.0indirekt
npmis-weakmap2.0.2indirekt
npmis-weakref1.1.1indirekt
npmis-weakset2.0.4indirekt
npmisarray1.0.0indirekt
npmisarray2.0.5indirekt
npmisexe2.0.0indirekt
npmisexe3.1.5indirekt
npmistanbul-lib-coverage3.2.2indirekt
npmistanbul-lib-instrument6.0.3indirekt
npmistanbul-lib-report3.0.1indirekt
npmistanbul-lib-source-maps5.0.6indirekt
npmistanbul-reports3.2.0indirekt
npmjake10.9.4indirekt
npmjest30.4.2indirekt
npmjest-changed-files30.4.1indirekt
npmjest-circus30.4.2indirekt
npmjest-cli30.4.2indirekt
npmjest-config30.4.2indirekt
npmjest-diff30.4.1indirekt
npmjest-docblock30.4.0indirekt
npmjest-each30.4.1indirekt
npmjest-environment-node30.4.1indirekt
npmjest-haste-map30.4.1indirekt
npmjest-leak-detector30.4.1indirekt
npmjest-matcher-utils30.4.1indirekt
npmjest-message-util30.4.1indirekt
npmjest-mock30.4.1indirekt
npmjest-pnp-resolver1.2.3indirekt
npmjest-regex-util30.4.0indirekt
npmjest-resolve30.4.1indirekt
npmjest-resolve-dependencies30.4.2indirekt
npmjest-runner30.4.2indirekt
npmjest-runtime30.4.2indirekt
npmjest-snapshot30.4.1indirekt
npmjest-util30.4.1indirekt
npmjest-validate30.4.1indirekt
npmjest-watcher30.4.1indirekt
npmjest-worker30.4.1indirekt
npmjquery3.7.1indirekt
npmjs-tokens4.0.0indirekt
npmjs-yaml4.3.0indirekt
npmjsesc3.1.0indirekt
npmjson-buffer3.0.1indirekt
npmjson-parse-even-better-errors2.3.1indirekt
npmjson-schema-traverse0.4.1indirekt
npmjson-stable-stringify-without-jsonify1.0.1indirekt
npmjson52.2.3indirekt
npmjsonfile6.2.0indirekt
npmkeyv4.5.4indirekt
npmkeyv5.6.0indirekt
npmkleur3.0.3indirekt
npmkuler2.0.0indirekt
npmleven3.1.0indirekt
npmlevn0.4.1indirekt
npmlie3.3.0indirekt
npmlines-and-columns1.2.4indirekt
npmlinkedom0.18.12indirekt
npmlocate-path5.0.0indirekt
npmlocate-path6.0.0indirekt
npmlodash.isequal4.5.0indirekt
npmlodash.merge4.6.2indirekt
npmlog-symbols4.1.0indirekt
npmlogform2.7.0indirekt
npmlowercase-keys3.0.0indirekt
npmlru-cache10.4.3indirekt
npmlru-cache11.2.7indirekt
npmlru-cache5.1.1indirekt
npmmake-dir3.1.0indirekt
npmmake-dir4.0.0indirekt
npmmakeerror1.0.12indirekt
npmmap-stream0.1.0indirekt
npmmath-intrinsics1.1.0indirekt
npmmdn-data2.27.1indirekt
npmmerge-stream2.0.0indirekt
npmmime-db1.52.0indirekt
npmmimic-fn2.1.0indirekt
npmmimic-response2.1.0indirekt
npmmimic-response4.0.0indirekt
npmminimist1.2.8indirekt
npmminipass7.1.3indirekt
npmminizlib3.1.0indirekt
npmml-array-max2.0.0indirekt
npmml-array-min2.0.0indirekt
npmml-array-rescale2.0.0indirekt
npmml-logistic-regression2.0.0indirekt
npmml-matrix6.13.0indirekt
npmmodule-details-from-path1.0.4indirekt
npmms2.1.3indirekt
npmmute-stream0.0.8indirekt
npmmute-stream1.0.0indirekt
npmnan2.26.1indirekt
npmnanoid3.3.15indirekt
npmnapi-postinstall0.3.4indirekt
npmnatural-compare1.4.0indirekt
npmnode-fetch2.7.0indirekt
npmnode-int640.4.0indirekt
npmnode-releases2.0.36indirekt
npmnopt5.0.0indirekt
npmnormalize-path3.0.0indirekt
npmnormalize-strings1.1.1indirekt
npmnormalize-url8.1.1indirekt
npmnpm-run-path4.0.1indirekt
npmnpmlog5.0.1indirekt
npmnth-check2.1.1indirekt
npmnwsapi2.2.24indirekt
npmobject-assign4.1.1indirekt
npmobject-inspect1.13.4indirekt
npmobject-keys1.1.1indirekt
npmobject.assign4.1.7indirekt
npmobject.entries1.1.9indirekt
npmobject.fromentries2.0.8indirekt
npmobject.groupby1.0.3indirekt
npmobject.values1.2.1indirekt
npmonce1.4.0indirekt
npmone-time1.0.0indirekt
npmonetime5.1.2indirekt
npmoptionator0.9.4indirekt
npmora5.4.1indirekt
npmow0.28.2indirekt
npmow1.1.1indirekt
npmown-keys1.0.1indirekt
npmp-cancelable4.0.1indirekt
npmp-limit2.3.0indirekt
npmp-limit3.1.0indirekt
npmp-locate4.1.0indirekt
npmp-locate5.0.0indirekt
npmp-try2.2.0indirekt
npmpako1.0.11indirekt
npmparent-module1.0.1indirekt
npmparent-require1.0.0indirekt
npmparse-json5.2.0indirekt
npmparse57.3.0indirekt
npmparse58.0.0indirekt
npmparse5-htmlparser2-tree-adapter7.1.0indirekt
npmparse5-parser-stream7.1.2indirekt
npmpath-exists4.0.0indirekt
npmpath-expression-matcher1.5.0indirekt
npmpath-key3.1.1indirekt
npmpath-parse1.0.7indirekt
npmpath-scurry2.0.2indirekt
npmpath2d0.2.2indirekt
npmpause-stream0.0.11indirekt
npmpicocolors1.1.1indirekt
npmpicomatch2.3.2indirekt
npmpicomatch4.0.4indirekt
npmpirates4.0.7indirekt
npmpkg-dir4.2.0indirekt
npmplaywright-core1.61.1indirekt
npmpluralize8.0.0indirekt
npmpossible-typed-array-names1.1.0indirekt
npmprelude-ls1.2.1indirekt
npmprettier-linter-helpers1.0.1indirekt
npmpretty-format30.4.1indirekt
npmprocess0.11.10indirekt
npmprocess-nextick-args2.0.1indirekt
npmproper-lockfile4.1.2indirekt
npmproxy-chain2.7.1indirekt
npmproxy-from-env2.1.0indirekt
npmpunycode1.4.1indirekt
npmpunycode2.3.1indirekt
npmpure-rand7.0.1indirekt
npmqs6.15.2indirekt
npmquick-lru5.1.1indirekt
npmquick-lru7.3.0indirekt
npmreact-is18.3.1indirekt
npmreact-is19.2.7indirekt
npmreadable-stream2.3.8indirekt
npmreadable-stream3.6.2indirekt
npmreadable-stream4.7.0indirekt
npmreflect.getprototypeof1.0.10indirekt
npmregexp-tree0.1.27indirekt
npmregexp.prototype.flags1.5.4indirekt
npmrequire-directory2.1.1indirekt
npmrequire-from-string2.0.2indirekt
npmrequire-in-the-middle8.0.1indirekt
npmresolve1.22.11indirekt
npmresolve-alpn1.2.1indirekt
npmresolve-cwd3.0.0indirekt
npmresolve-from4.0.0indirekt
npmresolve-from5.0.0indirekt
npmresponselike4.0.2indirekt
npmrestore-cursor3.1.0indirekt
npmretry0.12.0indirekt
npmrimraf3.0.2indirekt
npmrobots-parser3.0.1indirekt
npmrrweb-cssom0.8.0indirekt
npmrun-async2.4.1indirekt
npmrun-async3.0.0indirekt
npmrxjs7.8.2indirekt
npmsafe-array-concat1.1.3indirekt
npmsafe-buffer5.1.2indirekt
npmsafe-buffer5.2.1indirekt
npmsafe-push-apply1.0.0indirekt
npmsafe-regex-test1.1.0indirekt
npmsafe-stable-stringify2.5.0indirekt
npmsafer-buffer2.1.2indirekt
npmsax1.6.0indirekt
npmsaxes6.0.0indirekt
npmsemver6.3.1indirekt
npmsemver7.7.4indirekt
npmset-blocking2.0.0indirekt
npmset-function-length1.2.2indirekt
npmset-function-name2.0.2indirekt
npmset-proto1.0.0indirekt
npmsetimmediate1.0.5indirekt
npmshebang-command2.0.0indirekt
npmshebang-regex3.0.0indirekt
npmside-channel1.1.0indirekt
npmside-channel-list1.0.0indirekt
npmside-channel-map1.0.1indirekt
npmside-channel-weakmap1.0.2indirekt
npmsignal-exit3.0.7indirekt
npmsignal-exit4.1.0indirekt
npmsimple-concat1.0.1indirekt
npmsimple-get3.1.1indirekt
npmslash3.0.0indirekt
npmsmart-buffer4.2.0indirekt
npmsocks2.8.9indirekt
npmsocks-proxy-agent8.0.5indirekt
npmsource-map0.6.1indirekt
npmsource-map-js1.2.1indirekt
npmsource-map-support0.5.13indirekt
npmsplit0.3.3indirekt
npmstack-trace0.0.10indirekt
npmstack-utils2.0.6indirekt
npmstop-iteration-iterator1.1.0indirekt
npmstream-chain2.2.5indirekt
npmstream-combiner0.0.4indirekt
npmstream-json1.9.1indirekt
npmstring-comparison1.3.0indirekt
npmstring-length4.0.2indirekt
npmstring-width4.2.3indirekt
npmstring.prototype.trim1.2.10indirekt
npmstring.prototype.trimend1.0.9indirekt
npmstring.prototype.trimstart1.0.8indirekt
npmstring_decoder1.1.1indirekt
npmstring_decoder1.3.0indirekt
npmstrip-ansi3.0.1indirekt
npmstrip-ansi6.0.1indirekt
npmstrip-bom3.0.0indirekt
npmstrip-bom4.0.0indirekt
npmstrip-final-newline2.0.0indirekt
npmstrip-json-comments3.1.1indirekt
npmstrnum2.3.0indirekt
npmstrtok310.3.4indirekt
npmsupports-color2.0.0indirekt
npmsupports-color7.2.0indirekt
npmsupports-color8.1.1indirekt
npmsupports-preserve-symlinks-flag1.0.0indirekt
npmsyllable5.0.1indirekt
npmsymbol-tree3.2.4indirekt
npmsynckit0.11.12indirekt
npmtar7.5.22indirekt
npmtest-exclude6.0.0indirekt
npmtext-hex1.0.0indirekt
npmthrough2.3.8indirekt
npmtiny-typed-emitter2.1.0indirekt
npmtinyglobby0.2.15indirekt
npmtldts-core6.1.86indirekt
npmtldts-core7.0.27indirekt
npmtmpl1.0.5indirekt
npmtoken-types6.1.2indirekt
npmtough-cookie5.1.2indirekt
npmtr460.0.3indirekt
npmtr465.1.1indirekt
npmtr466.0.0indirekt
npmtriple-beam1.4.1indirekt
npmts-api-utils2.4.0indirekt
npmtsconfig-paths3.15.0indirekt
npmtslib2.8.1indirekt
npmtype-check0.4.0indirekt
npmtype-detect4.0.8indirekt
npmtype-fest0.21.3indirekt
npmtype-fest2.19.0indirekt
npmtype-fest4.41.0indirekt
npmtyped-array-buffer1.0.3indirekt
npmtyped-array-byte-length1.0.3indirekt
npmtyped-array-byte-offset1.0.4indirekt
npmtyped-array-length1.0.7indirekt
npmtypescript-eslint8.57.1indirekt
npmuhyphen0.2.0indirekt
npmuint8array-extras1.5.0indirekt
npmunbox-primitive1.1.0indirekt
npmundici7.28.0indirekt
npmundici-types7.18.2indirekt
npmuniversalify2.0.1indirekt
npmunrs-resolver1.12.2indirekt
npmupdate-browserslist-db1.2.3indirekt
npmuri-js4.4.1indirekt
npmutil-deprecate1.0.2indirekt
npmv8-to-istanbul9.3.0indirekt
npmvali-date1.0.0indirekt
npmw3c-xmlserializer5.0.0indirekt
npmwalker1.0.8indirekt
npmwcwidth1.0.1indirekt
npmwebidl-conversions3.0.1indirekt
npmwebidl-conversions7.0.0indirekt
npmwebidl-conversions8.0.1indirekt
npmwhatwg-encoding3.1.1indirekt
npmwhatwg-mimetype4.0.0indirekt
npmwhatwg-mimetype5.0.0indirekt
npmwhatwg-url14.2.0indirekt
npmwhatwg-url16.0.1indirekt
npmwhatwg-url5.0.0indirekt
npmwhich-boxed-primitive1.1.1indirekt
npmwhich-builtin-type1.2.1indirekt
npmwhich-collection1.0.2indirekt
npmwhich-typed-array1.1.20indirekt
npmwide-align1.1.5indirekt
npmwinston-transport4.9.0indirekt
npmword-wrap1.2.5indirekt
npmwrap-ansi6.2.0indirekt
npmwrap-ansi7.0.0indirekt
npmwrappy1.0.2indirekt
npmwrite-file-atomic5.0.1indirekt
npmxml-name-validator5.0.0indirekt
npmxml-naming0.1.0indirekt
npmxmlbuilder11.0.1indirekt
npmxmlchars2.2.0indirekt
npmy18n5.0.8indirekt
npmyallist3.1.1indirekt
npmyallist5.0.0indirekt
npmyargonaut1.1.4indirekt
npmyargs-parser21.1.1indirekt
npmyocto-queue0.1.0indirekt
npmyoctocolors-cjs2.1.3indirekt
Abhängigkeits-Advisories 0

Die Installation von npm:@govtechsg/oobee@0.11.3 zieht 500 Pakete nach sich, direkt und transitiv: 0 tragen bekannte Advisories, davon 0 direkte Abhängigkeiten.

Keine bekannten Advisories betreffen die bewerteten Abhängigkeiten.

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 165825,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "EJS": 18636434,
        "HTML": 71192,
        "Shell": 5140,
        "Mustache": 96141,
        "Batchfile": 942,
        "Dockerfile": 3535,
        "JavaScript": 1474657,
        "PowerShell": 5157,
        "TypeScript": 873988
      },
      "pushed_at": "2026-07-31T05:47:13Z",
      "created_at": "2020-06-25T09:57:44Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-31T05:47:28Z",
      "description": "Oobee (formerly known as Purple A11y) is a customisable, automated web accessibility testing tool that allows software development teams to find and fix accessibility problems to improve persons with disabilities (PWDs) access to digital services.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "EJS",
      "significant_languages": [
        "EJS"
      ]
    },
    "owner": {
      "blog": "https://www.tech.gov.sg/",
      "name": "Government Technology Agency of Singapore (GovTech Singapore)",
      "type": "Organization",
      "login": "GovTechSG",
      "company": null,
      "location": "Singapore",
      "followers": 312,
      "avatar_url": "https://avatars.githubusercontent.com/u/12439141?v=4",
      "created_at": "2015-05-14T03:32:23Z",
      "is_verified": null,
      "public_repos": 171,
      "account_age_days": 4097
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "0.11.6",
          "kind": "patch",
          "published_at": "2026-07-31T03:50:31Z"
        },
        {
          "tag": "0.11.5",
          "kind": "patch",
          "published_at": "2026-07-24T09:53:36Z"
        },
        {
          "tag": "0.11.1",
          "kind": "patch",
          "published_at": "2026-07-13T11:40:07Z"
        },
        {
          "tag": "0.10.97",
          "kind": "patch",
          "published_at": "2026-07-07T08:28:42Z"
        },
        {
          "tag": "0.10.94",
          "kind": "patch",
          "published_at": "2026-06-18T08:32:43Z"
        },
        {
          "tag": "0.10.91",
          "kind": "patch",
          "published_at": "2026-06-05T11:47:08Z"
        },
        {
          "tag": "0.10.89",
          "kind": "patch",
          "published_at": "2026-05-28T15:21:37Z"
        },
        {
          "tag": "0.10.87",
          "kind": "patch",
          "published_at": "2026-05-21T05:38:02Z"
        },
        {
          "tag": "0.10.86",
          "kind": "patch",
          "published_at": "2026-04-21T06:47:33Z"
        },
        {
          "tag": "0.10.85",
          "kind": "patch",
          "published_at": "2026-03-25T07:36:56Z"
        },
        {
          "tag": "0.10.84",
          "kind": "patch",
          "published_at": "2026-03-18T09:27:48Z"
        },
        {
          "tag": "0.10.83",
          "kind": "patch",
          "published_at": "2026-03-05T06:34:14Z"
        },
        {
          "tag": "0.10.77",
          "kind": "patch",
          "published_at": "2026-02-03T10:01:51Z"
        },
        {
          "tag": "0.10.76",
          "kind": "patch",
          "published_at": "2026-01-27T11:43:18Z"
        },
        {
          "tag": "0.10.74",
          "kind": "patch",
          "published_at": "2026-01-21T10:17:39Z"
        },
        {
          "tag": "0.10.72",
          "kind": "patch",
          "published_at": "2026-01-09T08:58:30Z"
        },
        {
          "tag": "0.10.70",
          "kind": "patch",
          "published_at": "2025-10-15T07:35:13Z"
        },
        {
          "tag": "0.10.69",
          "kind": "patch",
          "published_at": "2025-10-13T06:16:07Z"
        },
        {
          "tag": "0.10.68",
          "kind": "patch",
          "published_at": "2025-09-16T14:15:12Z"
        },
        {
          "tag": "0.10.67",
          "kind": "patch",
          "published_at": "2025-09-16T08:03:27Z"
        },
        {
          "tag": "0.10.65",
          "kind": "patch",
          "published_at": "2025-08-20T10:24:35Z"
        },
        {
          "tag": "0.10.63",
          "kind": "patch",
          "published_at": "2025-08-12T03:57:30Z"
        },
        {
          "tag": "0.10.61",
          "kind": "patch",
          "published_at": "2025-08-04T12:30:12Z"
        },
        {
          "tag": "0.10.58",
          "kind": "patch",
          "published_at": "2025-07-22T12:30:00Z"
        },
        {
          "tag": "0.10.57",
          "kind": "patch",
          "published_at": "2025-07-21T10:29:34Z"
        },
        {
          "tag": "0.10.51",
          "kind": "patch",
          "published_at": "2025-06-05T10:34:51Z"
        },
        {
          "tag": "0.10.50",
          "kind": "patch",
          "published_at": "2025-05-22T09:18:49Z"
        },
        {
          "tag": "0.10.49",
          "kind": "patch",
          "published_at": "2025-05-19T16:31:28Z"
        },
        {
          "tag": "0.10.45",
          "kind": "patch",
          "published_at": "2025-05-13T13:14:20Z"
        },
        {
          "tag": "0.10.42",
          "kind": "patch",
          "published_at": "2025-04-22T04:06:38Z"
        },
        {
          "tag": "0.10.39",
          "kind": "patch",
          "published_at": "2025-03-14T08:05:38Z"
        },
        {
          "tag": "0.10.36",
          "kind": "patch",
          "published_at": "2025-02-28T11:37:30Z"
        },
        {
          "tag": "0.10.34",
          "kind": "patch",
          "published_at": "2025-02-21T06:16:45Z"
        },
        {
          "tag": "0.10.33",
          "kind": "patch",
          "published_at": "2025-02-18T02:19:32Z"
        },
        {
          "tag": "0.10.28",
          "kind": "patch",
          "published_at": "2025-02-07T09:59:33Z"
        },
        {
          "tag": "0.10.27",
          "kind": "patch",
          "published_at": "2025-02-05T15:40:36Z"
        },
        {
          "tag": "0.10.25",
          "kind": "patch",
          "published_at": "2025-01-24T15:03:11Z"
        },
        {
          "tag": "0.10.24",
          "kind": "patch",
          "published_at": "2025-01-17T13:30:45Z"
        },
        {
          "tag": "0.10.21",
          "kind": "patch",
          "published_at": "2024-12-30T02:31:31Z"
        },
        {
          "tag": "0.10.20",
          "kind": "patch",
          "published_at": "2024-12-10T06:12:41Z"
        },
        {
          "tag": "0.10.18",
          "kind": "patch",
          "published_at": "2024-11-13T08:49:44Z"
        },
        {
          "tag": "0.10.17",
          "kind": "patch",
          "published_at": "2024-10-25T03:38:01Z"
        },
        {
          "tag": "0.10.16",
          "kind": "patch",
          "published_at": "2024-10-14T09:53:09Z"
        },
        {
          "tag": "0.10.15",
          "kind": "patch",
          "published_at": "2024-09-11T05:01:49Z"
        },
        {
          "tag": "0.10.14",
          "kind": "patch",
          "published_at": "2024-08-30T13:36:32Z"
        },
        {
          "tag": "0.10.10",
          "kind": "patch",
          "published_at": "2024-08-22T12:15:35Z"
        },
        {
          "tag": "0.10.7",
          "kind": "patch",
          "published_at": "2024-07-16T05:34:13Z"
        },
        {
          "tag": "0.10.5",
          "kind": "patch",
          "published_at": "2024-06-21T09:27:17Z"
        },
        {
          "tag": "0.10.4",
          "kind": "patch",
          "published_at": "2024-06-20T09:02:42Z"
        },
        {
          "tag": "0.10.2",
          "kind": "patch",
          "published_at": "2024-06-19T10:43:07Z"
        },
        {
          "tag": "0.10.1",
          "kind": "patch",
          "published_at": "2024-06-14T08:20:22Z"
        },
        {
          "tag": "0.10.0",
          "kind": "minor",
          "published_at": "2024-06-06T12:11:04Z"
        },
        {
          "tag": "0.9.59",
          "kind": "patch",
          "published_at": "2024-05-26T04:19:09Z"
        },
        {
          "tag": "0.9.54",
          "kind": "patch",
          "published_at": "2024-05-22T14:12:56Z"
        },
        {
          "tag": "cache",
          "kind": "other",
          "published_at": "2024-05-22T13:58:44Z"
        },
        {
          "tag": "0.9.52",
          "kind": "patch",
          "published_at": "2024-05-13T09:24:51Z"
        },
        {
          "tag": "0.9.51",
          "kind": "patch",
          "published_at": "2024-05-08T10:47:07Z"
        },
        {
          "tag": "0.9.50",
          "kind": "patch",
          "published_at": "2024-04-26T09:49:29Z"
        },
        {
          "tag": "0.9.48",
          "kind": "patch",
          "published_at": "2024-04-02T07:00:34Z"
        },
        {
          "tag": "0.9.47",
          "kind": "patch",
          "published_at": "2024-03-15T07:14:34Z"
        },
        {
          "tag": "0.9.46",
          "kind": "patch",
          "published_at": "2024-02-26T14:50:08Z"
        },
        {
          "tag": "0.9.45",
          "kind": "patch",
          "published_at": "2024-02-07T10:06:33Z"
        },
        {
          "tag": "0.9.43",
          "kind": "patch",
          "published_at": "2024-01-22T03:02:39Z"
        },
        {
          "tag": "0.9.41",
          "kind": "patch",
          "published_at": "2024-01-03T06:51:43Z"
        },
        {
          "tag": "0.9.40",
          "kind": "patch",
          "published_at": "2023-12-14T07:30:05Z"
        },
        {
          "tag": "0.9.39",
          "kind": "patch",
          "published_at": "2023-12-08T08:35:04Z"
        },
        {
          "tag": "0.9.36",
          "kind": "patch",
          "published_at": "2023-12-04T09:46:23Z"
        },
        {
          "tag": "0.9.35",
          "kind": "patch",
          "published_at": "2023-12-01T07:00:07Z"
        },
        {
          "tag": "0.9.34",
          "kind": "patch",
          "published_at": "2023-11-21T10:01:55Z"
        },
        {
          "tag": "0.9.33",
          "kind": "patch",
          "published_at": "2023-11-20T06:36:11Z"
        },
        {
          "tag": "0.9.32",
          "kind": "patch",
          "published_at": "2023-11-06T09:58:14Z"
        },
        {
          "tag": "0.9.31",
          "kind": "patch",
          "published_at": "2023-11-03T11:45:15Z"
        },
        {
          "tag": "0.9.26",
          "kind": "patch",
          "published_at": "2023-10-19T09:46:41Z"
        },
        {
          "tag": "0.9.25",
          "kind": "patch",
          "published_at": "2023-10-06T08:46:33Z"
        },
        {
          "tag": "0.9.19",
          "kind": "patch",
          "published_at": "2023-09-21T10:08:11Z"
        },
        {
          "tag": "0.9.17",
          "kind": "patch",
          "published_at": "2023-09-08T09:09:22Z"
        },
        {
          "tag": "0.9.14",
          "kind": "patch",
          "published_at": "2023-08-31T08:28:21Z"
        },
        {
          "tag": "0.9.13",
          "kind": "patch",
          "published_at": "2023-08-24T09:43:36Z"
        },
        {
          "tag": "0.9.7",
          "kind": "patch",
          "published_at": "2023-08-15T02:44:25Z"
        },
        {
          "tag": "0.9.4",
          "kind": "patch",
          "published_at": "2023-07-21T11:25:47Z"
        },
        {
          "tag": "0.9.3",
          "kind": "patch",
          "published_at": "2023-07-18T08:34:45Z"
        },
        {
          "tag": "0.9.2",
          "kind": "patch",
          "published_at": "2023-07-14T09:34:44Z"
        },
        {
          "tag": "0.9.1",
          "kind": "patch",
          "published_at": "2023-07-05T00:46:16Z"
        },
        {
          "tag": "0.9.0",
          "kind": "minor",
          "published_at": "2023-06-30T04:21:42Z"
        },
        {
          "tag": "0.0.15",
          "kind": "patch",
          "published_at": "2023-05-24T09:08:11Z"
        },
        {
          "tag": "0.0.14",
          "kind": "patch",
          "published_at": "2023-05-13T10:17:59Z"
        },
        {
          "tag": "0.0.13",
          "kind": "patch",
          "published_at": "2023-05-04T10:43:57Z"
        },
        {
          "tag": "0.0.12",
          "kind": "patch",
          "published_at": "2023-05-02T10:39:31Z"
        },
        {
          "tag": "0.0.11",
          "kind": "patch",
          "published_at": "2023-04-14T15:44:53Z"
        },
        {
          "tag": "0.0.10",
          "kind": "patch",
          "published_at": "2023-04-13T04:07:24Z"
        },
        {
          "tag": "0.0.9",
          "kind": "patch",
          "published_at": "2023-04-04T11:34:49Z"
        },
        {
          "tag": "0.0.8",
          "kind": "patch",
          "published_at": "2023-03-30T10:13:53Z"
        },
        {
          "tag": "0.0.7",
          "kind": "patch",
          "published_at": "2023-03-18T09:40:03Z"
        },
        {
          "tag": "0.0.6",
          "kind": "patch",
          "published_at": "2023-03-15T07:28:24Z"
        },
        {
          "tag": "0.0.5",
          "kind": "patch",
          "published_at": "2023-02-10T14:44:45Z"
        },
        {
          "tag": "0.0.4",
          "kind": "patch",
          "published_at": "2023-01-17T14:48:36Z"
        },
        {
          "tag": "0.0.3",
          "kind": "patch",
          "published_at": "2022-12-19T16:10:47Z"
        },
        {
          "tag": "v0.0.2",
          "kind": "patch",
          "published_at": "2020-10-20T08:38:06Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "0034173737a089071aa1b8ac77c37ffb4cf5ac43",
          "body": "Refactor GitHub Actions workflow to support multi-architecture builds and digest uploads.",
          "is_bot": false,
          "headline": "Enhance docker-push-ghcr workflow for multi-arch support",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-31T05:47:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f431f24fe331fd81823609f6a3de55adf287acc",
          "body": null,
          "is_bot": false,
          "headline": "Disable cache for Docker push in GitHub Actions",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-31T03:49:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c8bd196226638704415e80ca2a5e6e8e9d431a0",
          "body": "…(#808)\n\nFollow-up to #803. After landing the stacked load + stability phases,\none intermittent aria-required-children finding still surfaced in 1 of\n~3700 pages scanned in Docker. Three root causes:\n\n1. `networkidle` was racing the mutation observer in Phase 2 and\n   winning too early. It fires aft\n[…]\ns at the env vars) and debug-log the resolution\nreason on the normal path (so future rare misses are greppable\nwithout another 3700-URL sweep).\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(crawler): harden waitForPageLoaded for Docker/CPU-contended runs …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-31T00:25:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a825ef645c86a29417bbd0e9bbf9af9f4baeb04d",
          "body": "…(#807)\n\nFollow-up to #803. After landing the stacked load + stability phases,\none intermittent aria-required-children finding still surfaced in 1 of\n~3700 pages scanned in Docker. Three root causes:\n\n1. `networkidle` was racing the mutation observer in Phase 2 and\n   winning too early. It fires aft\n[…]\ns at the env vars) and debug-log the resolution\nreason on the normal path (so future rare misses are greppable\nwithout another 3700-URL sweep).\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(crawler): harden waitForPageLoaded for Docker/CPU-contended runs …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-31T00:22:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "918321d2d588c30bd2988e0031926b14fbaad125",
          "body": "…ed runs\"\n\nThis reverts commit e12dc7dc531a7922c9bc9c1eecee3e1e58c12354.",
          "is_bot": false,
          "headline": "Revert \"fix(crawler): harden waitForPageLoaded for Docker/CPU-contend…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-31T00:21:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e12dc7dc531a7922c9bc9c1eecee3e1e58c12354",
          "body": "Follow-up to #803. After landing the stacked load + stability phases,\none intermittent aria-required-children finding still surfaced in 1 of\n~3700 pages scanned in Docker. Three root causes:\n\n1. `networkidle` was racing the mutation observer in Phase 2 and\n   winning too early. It fires after 500ms \n[…]\ns at the env vars) and debug-log the resolution\nreason on the normal path (so future rare misses are greppable\nwithout another 3700-URL sweep).\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(crawler): harden waitForPageLoaded for Docker/CPU-contended runs",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-30T12:47:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "97fb69d35a9eab20b3ee89b451ca8071346a9665",
          "body": null,
          "is_bot": false,
          "headline": "Bump package version",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-30T10:20:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "647d3e9fbb417f98e99c61a3f61544926869a423",
          "body": "* feat: route Chromium via Cloudflare Worker SOCKS5 tunnel\n\nAdds cfProxyWorker that spins up a local SOCKS5 server tunneling each\nconnection to a Cloudflare Worker over WebSocket, activated only when\nCF_WORKER_PROXY is set (optional CF_WORKER_PROXY_AUTH_TOKEN and\nCF_WORKER_PROXY_PORT). proxyService \n[…]\nranges are simply omitted from the response.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n* Feature upstream IP support\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: route Chromium via Cloudflare Worker SOCKS5 tunnel (#805)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-30T10:17:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "55a493a24bccdfdc1707692afc85fce8ff6bbdd8",
          "body": "…804)\n\nThe target-size failure summary was reporting the element's full\nbounding-rect (re-measured from the DOM), which hides the real hit-area\naxe evaluated when the element is partially obscured or has a\nlargest-inner-rect smaller than its bounds. Read width/height from the\ntarget-size check's sto\n[…]\n't record dimensions. When neither\nsource is available, leave axe's original failureSummary in place\nrather than blanking the dimensions field.\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(crawler): use axe's stored sub-rect for target-size enrichment (#…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-30T10:16:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d63d6d6b063ddd9bf02fa3b6a15b0a49495591b5",
          "body": "* fix(crawler): stop rate-controller from ratcheting concurrency to 1\n\nTwo bugs made concurrency collapse quickly on 4xx clusters and never\nrecover:\n\n1. Retried 403 URLs halved concurrency twice. On first failure,\n   failedRequestHandler called onFailure() (halving) then re-enqueued\n   with rateLimi\n[…]\nn:true through onFailure, so\n  the same URL cannot halve concurrency twice.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix/rate controller double halve and recovery (#806)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-30T10:16:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e45b2d765f17bc17e0d41f2b95c2fd0498748100",
          "body": "waitForPageLoaded was returning before the DOM was ready to scan in two\nways: (1) the mutation observer treated repeated attribute mutations on\nthe same element (e.g. a nav dropdown flipping class during init) as a\n\"DOM settled\" signal, and (2) inside a single Promise.race, load almost\nalways beat t\n[…]\nFile all now call\n  waitForPageLoaded() with the default budgets. Local file scans\n  previously skipped this step entirely and are now covered.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(crawler): make waitForPageLoaded actually wait for hydration (#803)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-30T10:10:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9ee6d58b5cf7de399010fbc437d8ff4875b989dd",
          "body": "Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.20 to 7.5.22.\n- [Release notes](https://github.com/isaacs/node-tar/releases)\n- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.20...v7.5.22)\n\n---\nupdated-depend\n[…]\nar\n  dependency-version: 7.5.22\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump tar from 7.5.20 to 7.5.22 (#802)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-27T08:35:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a22899838931935bb9369d7a5ef1c68b99b8b775",
          "body": "Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 5.0.7 to 5.0.8.\n- [Release notes](https://github.com/juliangruber/brace-expansion/releases)\n- [Commits](https://github.com/juliangruber/brace-expansion/compare/v5.0.7...v5.0.8)\n\n---\nupdated-dependencies:\n- dependency-name:\n[…]\nion\n  dependency-version: 5.0.8\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump brace-expansion from 5.0.7 to 5.0.8 (#801)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-27T08:35:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1f81f529da80756313af4ff5d8cec4ed47c3eed4",
          "body": null,
          "is_bot": false,
          "headline": "Routine update to axe-core docs to 4.11",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-24T09:23:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c4c73cc7c1f68f1e3b55b951eb9a2a6981a935a",
          "body": "HTTP_PROXY, HTTPS_PROXY, and ALL_PROXY of the form\n\"scheme://user:pass@host:port\" were passed to Playwright with credentials\nstill embedded in proxy.server, which Playwright rejects. Extract userinfo\ninto separate username/password fields (URL-decoded) so Playwright receives\nproxy auth correctly. Env-var creds (PROXY_USERNAME/PROXY_PASSWORD) still\ntake precedence over URL-embedded creds.",
          "is_bot": false,
          "headline": "fix: parse embedded userinfo from proxy env URLs (#798)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-24T07:31:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65eeec1df1853c6d2e3327741112a4f36a9329a2",
          "body": "* Restore native constructors before running axe\n\nPages that replace built-ins like Set/Map/WeakMap with incomplete\npolyfills cause axe-core to throw `r.has is not a function` from\ninside its minified internals, and also break Playwright's own\nreturn-value serialization (page.evaluate returns undefi\n[…]\neakSet/WeakMap. On clean pages the probe\nreturns immediately, avoiding an unnecessary DOM mutation per scan.\n\n* Bump package version\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Restore native constructors before running axe (#797)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-24T07:19:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c96b9bd72e8a69849c8b204be6a3b73e2f6fbbfc",
          "body": "`docker exec -e OOBEE_VERBOSE=1 GOOGLE_SAFE_BROWSING=1 OOBEE_FAST_CRAWLER=1 oobee-container ...`\nmade docker treat `GOOGLE_SAFE_BROWSING=1` as the container name, failing\nwith \"No such container: GOOGLE_SAFE_BROWSING=1\". Each env var needs its\nown -e flag.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ci): pass each env var with its own -e in docker-test.yml",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T08:01:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0fe17f933f326ec11edb242c6eda94b7a24257a6",
          "body": "…m publish manually (#796)\n\n* fix: unblock Safe Browsing DB warmup in Docker/BuildKit builds\n\nThe build-time warmup was silently timing out because Chrome refused to\nlaunch in the container:\n\n1. `--no-zygote` was passed without `--no-sandbox`. Chrome rejects that\n   combination outright (\"Zygote can\n[…]\nerators explicitly pick which commit's package.json version\n  lands on npm.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: unblock Safe Browsing DB warmup in Docker/BuildKit builds and np…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T07:53:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9375ee629610fc5121eadb13c8a775248ae11319",
          "body": "Chrome refuses to run as root without --no-sandbox (which was intentionally\ndropped from the warmup args), causing the build-time DB download to time\nout silently. Pre-create /data/chrome-profile owned by `purple` in the same\nroot RUN that adds the user, then drop the USER root switch around the\nwar\n[…]\nrmup chown.\n\nAlso remove the CACHEBUST build-arg plumbing: it was masking this bug by\nguaranteeing a fresh (and failing) warmup on every build.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: run Safe Browsing warmup as `purple` user so Chrome will launch",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T07:25:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6a3704f5330a90962d2f0b5cae1a5a9170a5f60f",
          "body": "The Chrome Safe Browsing threat DB was not populating within the previous\n600s budget during Docker image builds, and cached layers on retry meant\nthe warmup step effectively no-op'd in 12s without a fresh DB.\n\n- Raise --timeout to 1200000 ms in the Dockerfile warmup step.\n- Introduce a CACHEBUST AR\n[…]\nall, and build.\n- Pass CACHEBUST=<run_id>-<run_attempt> from the GHCR workflow so retries\n  of a failed build also invalidate the warmup layer.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: bump Safe Browsing warmup to 1200s and bust cache per build",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T07:10:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "34a797d274373806aaf635407d43e854783cc729",
          "body": "…--no-sandbox (#795)\n\n* fix: runCustom window duplication, overlay noise, SB injection, drop --no-sandbox\n\n- runCustom: force headless UA sniffer, wait for persistent-context initial\n  page instead of racing to newPage() (fixes duplicate about:blank window on\n  macOS), close any stray pages that com\n[…]\n Claude Opus 4.7 <noreply@anthropic.com>\n\n* chore: remove pr-description.md\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: runCustom window duplication, overlay noise, SB injection, drop …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T05:58:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2fbd120b2d21b1e30421ff38f67e21186ba5e0af",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.11.1 → v0.11.2 (#794)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-23T05:02:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5fda8370b04fa2da1b885505e0f13bfa7e1592ee",
          "body": "* fix: restore viewport and reset capture entries on failure\n\nEnsure mobile viewport is restored even if screenshot capture throws,\nand always clear capture entries even if manifest write fails so a\nsubsequent scan does not inherit stale entries.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.c\n[…]\n screenshot capture, and expose desktopDom /\nmobileDom in domManifest.json.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Page DOM and Screenshot Capture for UA Testing (#782)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T05:00:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a4249f7de47c85ff699c59e50e6b02691b604cb9",
          "body": "Updated the description for GOOGLE_SAFE_BROWSING to clarify compatibility with browsers.",
          "is_bot": false,
          "headline": "Clarify GOOGLE_SAFE_BROWSING compatibility in README",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T04:38:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44466ca12eff822e869ac9db2aa003cc272e8fbd",
          "body": "Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 5.0.6 to 5.0.7.\n- [Release notes](https://github.com/juliangruber/brace-expansion/releases)\n- [Commits](https://github.com/juliangruber/brace-expansion/compare/v5.0.6...v5.0.7)\n\n---\nupdated-dependencies:\n- dependency-name:\n[…]\nion\n  dependency-version: 5.0.7\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump brace-expansion from 5.0.6 to 5.0.7 (#792)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-23T04:35:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fb0ce80bdee38faf096b81b6224cb6f422733183",
          "body": "feat: add Google Safe Browsing integration to detect phishing/malware URLs\n\nImplements Safe Browsing protection to classify blocked URLs in scan results:\n- Add standalone warmup script for Docker build-time DB download\n- Support both amd64 and arm64 Chrome architectures\n- Pre-populate Safe Browsing \n[…]\ne detection\n- Update README with usage instructions\n\nRequires Google Chrome (not Chromium) on Linux, macOS, and Windows supported.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add Google Safe Browsing protection (Linux, Mac, Windows) (#793)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T04:34:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4e44d6ab0c28b3f040c507bf2604bd94dfea002a",
          "body": "Updated the Node CLI command to use 'intelligent' for scan type and modified log printing to target specific log files.",
          "is_bot": false,
          "headline": "Modify Docker test workflow for CLI and logs",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-13T11:48:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4adb42b5882784c4e5bc25c2befe15eda2d79d2",
          "body": "* feat: add page DOM and screenshot capture via OOBEE_SAVE_DOM and OOBEE_SAVE_PAGE_SCREENSHOT\n\nWhen enabled, saves full-page DOM, desktop viewport screenshot, and mobile\nviewport screenshot to the results directory under page-doms/. A\ndom-manifest.json maps each URL to its hash, file paths, and erro\n[…]\ns detected at any level.\n\nBump version to 0.11.1.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix/403 retry storm (#790)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-13T11:39:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ac8f46208477736aa162b5120e55e83c793fc91d",
          "body": "Clarify hardware requirements for scanning and concurrency settings.",
          "is_bot": false,
          "headline": "Update hardware recommendations for scanning",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-13T08:57:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "366bfbb0e2444d65d2273c7f742b10d640749896",
          "body": "…temap optimization, download/403 handling, unsupported document classification (#789)\n\n* fix: clone cookies from pristine user profile and eagerly clean retired pools\n\nPreviously the first browser in each pool used userDataDirectory\ndirectly, allowing Chrome to modify the cookie database. All subse\n[…]\ny@anthropic.com>\n\n* chore: bump version to 0.11.0\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: cookie clone from pristine profile, pool cleanup, intelligent si…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-13T07:19:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4286ab316fcbf451cf8140bef2a4c364283e4c6a",
          "body": "If cleanup fails on Windows (e.g. locked files), the crawlee and\ncrawlee_rq directories would otherwise be included in the zip artifact.\nSkip any root-level directory starting with \"crawlee\" during zipping.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: exclude crawlee* directories from zip output (#788)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-12T03:41:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a78d1c86be9dcc8db3f1c2763d6cb57576454d3f",
          "body": "* fix: resolve Windows crash from Crawlee lock-file race in intelligent crawl\n\nDataset and RequestQueue were opened with the same absolute path name,\ncausing both to write to the same directory on disk. On Windows,\nproper-lockfile's .lock directories from the sitemap phase could race\nwith the domain\n[…]\nlee_rq cleanup to avoid skipping on prior failure\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix/windows crawlee lock race (#787)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-12T03:34:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fb27a157475207b8444976fe1377ef2ba4db8b8b",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.97 → v0.10.98 (#786)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-09T16:19:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f16746751809427f88b8d8ff67de86bfd5a0eb9",
          "body": "When crawlIntelligentSitemap invokes crawlSitemap and crawlDomain\nsequentially, each phase created a CrawlRateController with the full\nmaxRequestsPerCrawl budget (scannedCount = 0). This allowed the total\npages scanned to far exceed -p (e.g. 6500+ with -p 5000).\n\nFix: when fromCrawlIntelligentSitema\n[…]\n true, initialize the rate\ncontroller with the remaining budget (maxRequestsPerCrawl minus pages\nalready scanned in prior phases).\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: intelligent crawl overshoots page limit (-p) across phases (#785)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-09T16:15:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "35991dc7fe50dfcf37d35fc5ca2a12250df87875",
          "body": "…(#784)\n\n* fix: propagate ruleset parameter to sitemap and intelligent crawlers\n\ncrawlSitemap and crawlIntelligentSitemap were not receiving or passing\nthe ruleset flag to runAxeScript, causing --ruleset options (e.g.\nenable-wcag-aaa) to be silently ignored for non-website scan types.\n\nCo-Authored-B\n[…]\nNavigationHook\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n* Add section on scan consistency\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: propagate ruleset parameter to sitemap and intelligent crawlers …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-09T14:12:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a20dde330f18a68faf012739b0cf8eb8b60e9e4b",
          "body": "…rge crawls (#783)\n\nAfter ~3500+ pages on Windows, the crawler would hang indefinitely due to\nbrowser pool resource exhaustion. Three contributing factors are addressed:\n\n1. Reduce browser retirements by increasing retireBrowserAfterPageCount from\n   100 (default) to 500, and ensure retired browsers\n[…]\nsecutive failure abort threshold, so the crawl aborts\n   gracefully instead of retrying indefinitely when resources are exhausted.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: prevent Windows hang from browser pool resource exhaustion on la…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-09T09:37:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e7b40e57e047b0a7c27981d63b83d25c0031c596",
          "body": "…empty elements (#780)\n\n* Improve isElementTooSmall logic for element visibility\n\nEnhance isElementTooSmall function to check for non-perceivable elements based on dimensions and content.\n\n* Refactor isElementTooSmall function condition\n\nSimplified the condition for non-perceivable elements by removing checks for children and text content.",
          "is_bot": false,
          "headline": "improv: false positive in oobee-accessible-label for non-perceivable …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-09T08:41:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6508bc0185bfb8c43a7a16d3496fde69af0cb21",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.96 → v0.10.97 (#779)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-07T08:25:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38a1bbc1cf6667fe88be4ac9fe493beede1e103c",
          "body": "* fix: clean up browser pool directories and reduce their disk footprint\n\nPool re-launches create sibling directories (oobee-{token}_pool*) that\nwere never deleted by cleanUp(), and copying entire Chrome profiles into\neach pool dir caused gigabytes of waste during large scans. This adds\nglob-based p\n[…]\nresolution doesn't skip subsequent cleanup steps.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix/cleanup browser pool directories (#778)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-07T08:22:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "553b740241662a59bb7e0ac6c5de68df7f7a4be3",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.95 → v0.10.96 (#777)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-07T00:41:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d774972227039263dce343522a5eb5ab33940bb8",
          "body": null,
          "is_bot": false,
          "headline": "Upgrade crawlee and playwright versions (#776)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-07T00:39:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d43b12872e02a19126bb4434b3820dac920f588",
          "body": null,
          "is_bot": false,
          "headline": "Fix typo in Intel-based Mac support note",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-06T11:40:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b8ff8fd19ecda497e437e9d19235a9624910294",
          "body": "Updated macOS requirement from version 12 Monterey to version 15 Sequoia. Added note about discontinuation of support for Intel-based Macs.",
          "is_bot": false,
          "headline": "Update macOS version requirement and add Intel note",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-06T11:39:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e03481ed6004859f0d2277db92a4752c737b0352",
          "body": "…(#775)\n\nOn non-Docker platforms (macOS/Windows), fs.emptyDirSync(TMPDIR) was\nnuking the shared system temp directory, crashing the PDF generation\nstep with \"Maximum number of attempts reached\" when locked files from\nother processes prevented deletion.\n\n- Guard emptyDirSync and rmSync of TMPDIR to o\n[…]\nked files are non-fatal\n- Append process.pid to the Docker TMPDIR path so concurrent scans\n  don't clobber each other's temp files\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: restrict TMPDIR cleanup to Docker and isolate per scan instance …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-06T10:56:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d742cc060aa0d323d8294f315ffeb0e133148ded",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.94 → v0.10.95 (#774)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-06T10:37:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52aba6d0f820b5e62f5d1e198868630adbe1d430",
          "body": "Bumps [undici](https://github.com/nodejs/undici) from 7.24.4 to 7.28.0.\n- [Release notes](https://github.com/nodejs/undici/releases)\n- [Commits](https://github.com/nodejs/undici/compare/v7.24.4...v7.28.0)\n\n---\nupdated-dependencies:\n- dependency-name: undici\n  dependency-version: 7.28.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump undici from 7.24.4 to 7.28.0 (#771)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-06T10:09:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3017147a1839f4c83be938bd00fcf9b462845cac",
          "body": "…773)\n\n* improv: omit passed items from disk writes to reduce storage usage\n\n- mergeAxeResults.ts: skip itemsStore.appendPageItems for 'passed' category\n  in pushResults (both custom flow and standard flow paths)\n- mergeAxeResults.ts: remove 'passed' from buildHtmlGroups loop (no items\n  stored in i\n[…]\n, causing Chrome to crash with SIGTRAP on launch.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "improv: omit passed items from disk writes to reduce storage usage (#…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-06T10:09:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dfc6be34cc052115856b0f747da4fb66e6578163",
          "body": "…ncy (#770)\n\n* Fix redirect-aware entryUrl propagation and localfile URL validation\n\n* Update URL logging in found sitemaps\n\n* Set crawler retries and session rotations for domain and sitemap scans\n\n* Abort sitemap crawl early when no pages succeed and failures accumulate",
          "is_bot": false,
          "headline": "improve: redirect entry URL handling and harden sitemap crawl resilie…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-18T08:09:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "346dd9c6c1ccb800a6105af35c672463f363e2bc",
          "body": "…avior in EJS reports (#769)\n\n- fix scan/about modal accessibility issues and semantics in EJS components/scripts/styles\n- remove unnecessary `!important` usage in scan modal styles\n- correct ARIA roles/relationships for segmented tabs and related panels\n- make WCAG gauge value contrast evaluation d\n[…]\nmodal components/scripts/styles\n- segmented tabs components/scripts\n- `WcagGaugeBar` styles\n- rule modal page accordion builder\n- screenshot lightbox script\n- rule offcanvas accordion region semantics",
          "is_bot": false,
          "headline": "Fix accessibility regressions and custom-flow screenshot/lightbox beh…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-18T06:35:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d838085ac796f7e62c936b066a243d43c4455ce",
          "body": "Added guidelines for URL guard and overlay management in custom flow to prevent infinite reload loops and ensure proper handling of protocols.",
          "is_bot": false,
          "headline": "Enhance URL guard and overlay management instructions",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-18T04:26:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a20e0dfa3cbcbf772241aa445d5ef9b47bb77fb8",
          "body": "… (#768)\n\n- urlGuard: restoreToSafeUrl now checks that the safe/fallback URL is\n  http/https before calling page.goto(). When the entry URL is file://\n  (e.g. scanning a local HTML report), the fallback is also file://, so\n  redirecting created an infinite reload loop.\n\n- urlGuard: skip about: proto\n[…]\nrlayAllowed returns false (e.g. transient\n  file:// or about:blank URL), skip removeOverlayMenu and fall through\n  to addOverlayMenu so the overlay is (re-)injected rather than\n  permanently disabled.",
          "is_bot": false,
          "headline": "fix: url guard infinite redirect and missing overlay on macOS/Windows…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-18T03:05:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c6353fc0933763da213c6634d1394da5ffc6aaaf",
          "body": "…cans (#767)\n\n* fix(crawler): skip empty pre-navigation headers rewrite\n\n* fix(sitemap): apply auth/non-auth headers in crawler launch context\n\n* ## Changes made\n\n### 1. `src/constants/common.ts` — `checkUrlConnectivityWithBrowser`\n**Old:** `extraHTTPHeaders.Accept ||= '...'` — mutated the shared ob\n[…]\nfired | ✅ expected — only fires when `-m` auth headers are passed |\n\n* Resolve page hang / waiting on navigation\n\n* Wait for DOMContentLoaded to fire\n\n* Update AGENTS.md for Playwright header-rewrites",
          "is_bot": false,
          "headline": "Fix: suppress Playwright header-rewrite warning for unauthenticated s…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-18T02:28:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d3efa0b4336e2a5e717927158b754f11fe778a52",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.93 → v0.10.94 (#766)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-17T09:14:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b82a1b26a4e43fdb66c7000af445e3a655bcf7f4",
          "body": "…crawlDomain and crawlSitemap (#762)",
          "is_bot": false,
          "headline": "refactor(crawler): use common preNavigationHooks for auth headers in …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-17T09:13:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ce1ee9d66f4adead19f65481324917980824d13",
          "body": "* This commit fixes multiple accessibility violations in report UI templates by correcting ARIA usage, restoring valid list structure, and preserving keyboard/sort behavior.\n\nWhat was fixed\n\n1. Prioritise issues list semantics and selection behavior\n- Updated PrioritiseIssues.ejs so the priority iss\n[…]\nn place.\n- Accessibility tree semantics are now aligned with WCAG/ARIA expectations and common axe checks.\n\n* Fix <ul> list glitch in priority-issue-item\n\n* Fix underline on hover accessibility issues",
          "is_bot": false,
          "headline": "Fix/report a11y issues (#765)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-17T09:12:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eedf38916704d1180d2b033e0a3604fb4373d0df",
          "body": null,
          "is_bot": false,
          "headline": "Fix sitemap index parsing and skip image sitemaps (#764)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-16T10:38:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f77e8b2096d025aca534160357650e7071390cbf",
          "body": "* fix: handle XSL sitemap fetch without networkidle timeout\n\n* docs: document sitemap XSL stylesheet fetch behavior\n\n* chore: include sitemap URL in sitemap type logs",
          "is_bot": false,
          "headline": "Fix Jetpack/XSL sitemap handling and skip image sitemap feeds (#763)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-16T10:33:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70513487a162fdd4ed827a25bcc2dc2fc3da2e68",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.92 → v0.10.93 (#760)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-16T05:06:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd8c28b5d36de8078df62c43ddb83ac5339da3d8",
          "body": "…SON parsing errors that blocked report artifact generation, and messy console logs during initial connectivity checks (#759)\n\n* fix: pass auth headers safely in custom flow and avoid CORS failures\n\n- Add extraHTTPHeaders support to runCustom (was missing entirely)\n- Extract shared splitAuthHeaders(\n[…]\n headers are missing\n\n* fix(checkUrl): eliminate URL check console ERR_FAILED logs by restoring native layout rendering\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: issues regarding authentication-triggered CORS failures, fatal J…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-16T05:03:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "364d8beeceec96d018ad9911f35d7810f9d6ddaf",
          "body": "…on (#758)\n\nCo-authored-by: Wilson WeeSheng Khoo <wilson.khooweesheng@cognizant.com>",
          "is_bot": false,
          "headline": "chore: upgrade @sentry/node to v10 and refresh scanner fallback versi…",
          "author_name": "Wilson",
          "author_login": "WilsonkwSheng",
          "committed_at": "2026-06-16T03:27:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef5c1bc40187fa935b202186bc05c43ab0a3e607",
          "body": null,
          "is_bot": false,
          "headline": "Update AGENTS.md and README.md with env variables",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-15T11:16:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dadf76793bf802bab22297236ab7d2b2d27afbf6",
          "body": "* fix: use Crawlee dataset.drop() for graceful storage cleanup\n\n* fix: exclude tmp-items from oobee-scan-results.zip\n\nMove createRuleIdJson, itemsStore.cleanup(), and Sentry reporting\nbefore zipResults so that the temporary intermediate files are removed\nfrom the results directory before it gets zip\n[…]\ntems cleanup and zipResults ordering in AGENTS.md\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: use Crawlee dataset.drop() for graceful storage cleanup (#745)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-15T10:57:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f33dca4385be30bff57a1fd87ae2880bd5f9cf52",
          "body": "…#757)\n\n* fix: group additionalScanMetadata by category in Sentry telemetry\n\nStructure ruleIdJson output from createRuleIdJson and\ncreateBasicFormHTMLSnippet by mustFix/goodToFix/needsReview so that\nSentry additionalScanMetadata distinguishes which category each rule\nbelongs to.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n* Additional tagging in Sentry for agency users\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix/sentry scan metadata by category and websiteTag custom variable (…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-15T10:57:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cb1fe4001429a438791b9afe83d6659593df9b10",
          "body": "Co-authored-by: Wilson WeeSheng Khoo <wilson.khooweesheng@cognizant.com>",
          "is_bot": false,
          "headline": "fix(deps): bump lodash to 4.18.1 for security patch (#756)",
          "author_name": "Wilson",
          "author_login": "WilsonkwSheng",
          "committed_at": "2026-06-15T09:06:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d9960fa08f5ba36739aa6c8ddf08408f1d58778f",
          "body": "…ts, automated concurrency recovery (#755)\n\n* fix: use cloned browser profile directly and pass user-agent to crawler contexts\n\nThe domain and sitemap crawlers were creating empty sub-profile directories\nper browser launch, discarding the cloned Chrome profile data. They also\nnever passed process.en\n[…]\nindows locales\n- Update profile cleanup to glob _pool* directories alongside base oobee-{token} dir\n\n* Update AGENTS.md\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: use cloned browser profile and pass user-agent to crawler contex…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-15T09:05:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6e323e90ca344657e9e1eacff928aa4067c5858b",
          "body": "Removed error log file handling logic and simplified error logging.",
          "is_bot": false,
          "headline": "Refactor error logging in utils.ts",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-12T08:55:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d28c5677a33c0001df77a177c81646b48364ee2f",
          "body": "… timing races (#753)\n\nCarousel libraries like slick-slider set aria-hidden=\"true\" on inactive\nslides then apply tabindex=\"-1\" to child links slightly later. The axe\nscan can capture the DOM between these two operations, reporting a\nviolation that doesn't exist in steady state. Add a post-scan\nre-ve\n[…]\ns to the event loop and re-checks the\nlive DOM — if all focusable descendants now have tabindex < 0 the\nviolation is filtered out.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: filter false-positive aria-hidden-focus violations from carousel…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-12T06:55:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "19f846d7472247819284e01242b0cac062171a20",
          "body": "…(#752)\n\nCrawlRateController.claimSlot() was called at the top of the request\nhandler before scanning. If a page was then discarded (redirect, dedup,\nskip), the slot was consumed without producing a scanned page — causing\nfewer pages than maxPages.\n\nMove claimSlot() to the moment of success (right b\n[…]\noperations are synchronous, no race condition is possible.\n\nAlso switches remaining console.log to consoleLogger.info in crawlers.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: claim scan slots at success time to prevent maxPages undershoot …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-12T06:54:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "43e7b679ec91884738e31bf39348ac3f2b73d120",
          "body": "…awl rate control (#750)\n\n* fix: normalize www prefix in isFollowStrategy hostname comparison\n\nSitemaps often list child sitemap URLs without the www prefix (e.g.,\nmom.gov.sg/sitemap.xml) even when the parent sitemap is served from\nwww.mom.gov.sg. The strict hostname comparison rejected these URLs,\n\n[…]\noleLogger.info instead of console.log in crawlers\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: normalize www prefix in hostname comparisons and add adaptive cr…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-12T02:23:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "07755a5ae34d23f32c8c8131b5f9ba2d04eb2981",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.91 → v0.10.92 (#749)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-11T14:04:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "84f34ce0b478b807ee87d38678b0b5747b25c802",
          "body": "Comprehensive reference covering architecture, crawl flow, browser handling, platform differences, environment variables, common pitfalls, and lessons from the last 3 months of bug fixes. \r\n\r\nHelps AI agents understand Oobee's intricacies when making changes.",
          "is_bot": false,
          "headline": "docs: add AGENTS.md developer guide for AI agents",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-11T14:04:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3761c42f74c5ef62b68604d371d3db63b02b0921",
          "body": "…/Docker environments (#748)\n\n* fix: apply modified User-Agent during sitemap discovery in headless mode\n\nThe intelligent crawl's sitemap detection (robots.txt fetch and sitemap\npath probing) was using the raw Chromium User-Agent which contains\n\"HeadlessChrome\" in Docker/Linux. Sites like www.moh.go\n[…]\n will keep processing until enough pages succeed.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: resolve sitemap detection and content fetch failures in headless…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-11T13:44:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "26a185c7aae7a7a24cf67180f38b05e2a2cd149b",
          "body": "…retries (#747)\n\nPreviously, urlsCrawled.error was pushed in the requestHandler catch block\non every failed attempt. Since Crawlee retries requests up to 3 times, this\ncaused duplicate entries for the same URL and false positives for URLs that\neventually succeeded on retry. Errors are now only recorded in\nfailedRequestHandler, which fires exclusively after all retries are exhausted.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: remove duplicate/false-positive error entries caused by request …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-11T13:44:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ea03d963a0c292a960567f6f9e462dc26a10b74e",
          "body": "…(), before axe scanning, screenshot capture, and other operations that can close the page (#746)\n\nRemove the error recovery path that created a new page and re-navigated just to get the title (which also leaked pages since they were never closed)\nEliminates repeated \"Error while getting page title: Target page, context or browser has been closed\" log noise",
          "is_bot": false,
          "headline": "Move page.evaluate(() => document.title) to the start of runAxeScript…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-11T13:42:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd9619aca1a73b9c1e148a8ade94dfba5298d54e",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.90 → v0.10.91 (#744)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-05T10:03:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e32187cf5bce6af8a35eee6c8dc996a65b64b241",
          "body": "…eneration (#743)\n\nOn Windows, Crawlee's async lock-file operations (mkdir .json.lock) can\nfire after the crawl finishes, causing uncaughtException EPERM that kills\nthe process mid-report. This adds a scoped exception handler to suppress\nthose errors, increases the flush delay on Windows, and retries the\ncleanup rm with a fallback to best-effort so report generation always\ncompletes.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: prevent Node crash from Crawlee EPERM on Windows during report g…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-05T10:02:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8cf8f9d937c1b4e320b81a35425ba5040b8c9fc5",
          "body": null,
          "is_bot": false,
          "headline": "Update generateOobeeClientScanner.js",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-04T11:00:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8caaf4adac2eac948121a3fcba8af40ee6175992",
          "body": null,
          "is_bot": false,
          "headline": "Add steps to install dependencies and generate file",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-04T10:58:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "708c041dcd26149531048aa725c7e48e33d25ec8",
          "body": "Removed the step to commit and push the generated client scanner.",
          "is_bot": false,
          "headline": "Remove commit step for generated client scanner",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-04T10:55:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14377281570e69cd7aee28dedae9e09148de2852",
          "body": null,
          "is_bot": false,
          "headline": "Fix tag naming in publish workflow",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-04T10:51:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d02b28bdb9d44bd0a793c98532d8befa013acc1",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.89 → v0.10.90 (#742)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-04T10:32:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4cde54b73db9758bb9c27e88033750a816d8328c",
          "body": "…#741)\n\nRun dist/generateOobeeClientScanner.js after build and commit the\ngenerated bundle back to the repo before tagging and publishing.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: generate and commit oobee-client-scanner.js in publish workflow (…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-04T10:29:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e184e09f757ab45d8513df6ffde23e0c32f8d7b1",
          "body": "Bumps [axios](https://github.com/axios/axios) from 1.15.2 to 1.16.0.\n- [Release notes](https://github.com/axios/axios/releases)\n- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)\n- [Commits](https://github.com/axios/axios/compare/v1.15.2...v1.16.0)\n\n---\nupdated-dependencies:\n- depe\n[…]\nndency-version: 1.16.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump axios from 1.15.2 to 1.16.0 (#738)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-04T10:18:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3c19149732446eabda489147ed635bce681bee0d",
          "body": "Stream page result files sequentially instead of loading all into memory,\nwrite violation items to per-rule JSONL files on disk during accumulation\n(keeping only itemsCount in the in-memory allIssues object), and defer\nhtmlGroups construction to a second pass reading from disk.\n\nThis reduces peak heap from ~3GB to well under 4GB for 1,000-page scans\non ECS containers, preventing OOM during report artifact generation.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: reduce memory usage in mergeAxeResults for large scans (#740)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-04T10:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5d9e6ca914249328d66657755f336b534d4ca804",
          "body": null,
          "is_bot": false,
          "headline": "Add release tag `latest` and build on ghcr likewise (#739)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-02T08:50:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56cef699490b3f3664561d63acc4aa93e945944a",
          "body": "Added DPG Badge to README.md",
          "is_bot": false,
          "headline": "Add DPG Badge to README",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-29T11:02:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ffef20c1cbfc082d336d495759e27c8b4e2714b9",
          "body": "Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump version to 0.10.89",
          "author_name": "younglim",
          "author_login": "younglim",
          "committed_at": "2026-05-28T15:20:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b4dea24ebde090c9b92a96e39b7ec94b162ed29a",
          "body": "For needsReview/incomplete color-contrast results where axe could not\ndetermine foreground or background colors, fall back to the default axe\nmessage instead of showing \"unknown foreground on unknown background\".\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: skip custom contrast message when axe cannot determine colors",
          "author_name": "younglim",
          "author_login": "younglim",
          "committed_at": "2026-05-28T15:19:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "66bc384b78803dc3db4e9fabdd5720136cc11a47",
          "body": "Bumps [qs](https://github.com/ljharb/qs) from 6.15.0 to 6.15.2.\n- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/ljharb/qs/compare/v6.15.0...v6.15.2)\n\n---\nupdated-dependencies:\n- dependency-name: qs\n  dependency-version: 6.15.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump qs from 6.15.0 to 6.15.2 (#737)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-28T15:01:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5274f20e7cb55894402fe0ea8f4d306be6029dc",
          "body": "…sisted fixes (#720)\n\n* feat: augment axe violation messages with actionable context for LLMs\n\nEnriches Details messages for color-contrast, color-contrast-enhanced,\ntarget-size, valid-lang, and oobee-grading-text-contents with additional\ncontext gathered at scan time via Playwright page.evaluate(),\n[…]\nhan raw axe output alone.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n* Bump package version\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: augment axe violation messages with live DOM context for LLM-as…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-28T15:00:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0dab555175e41e73f73c5648195d2d6b077a1542",
          "body": "Docker requires all-lowercase image tags. Use shell parameter expansion\nto lowercase the github.repository variable before building tags.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: lowercase repository name in GHCR image tags",
          "author_name": "younglim",
          "author_login": "younglim",
          "committed_at": "2026-05-28T07:34:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1c76c8dfeed24034b304671072888e22cbf4404c",
          "body": "Add a manually-triggered GitHub Actions workflow that builds the oobee\nbase image for amd64 and arm64, then pushes to ghcr.io with the\nspecified release tag. Remove pinned apt versions from Dockerfile for\ncross-architecture compatibility.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add multi-arch Docker image build and push to GHCR",
          "author_name": "younglim",
          "author_login": "younglim",
          "committed_at": "2026-05-28T07:24:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "32f5a382f351d2186b685080b4316e1676cb4658",
          "body": "…s.txt (#736)\n\nTwo bugs in sanitisePattern/getUrlsFromRobotsTxt:\n\n1. Bare paths (e.g. /subscription/unsubscribe) were converted to a single\n   '/**' glob which does not match the exact URL without a trailing slash.\n   Now emits both the exact-path pattern and a children glob so the page\n   itself an\n[…]\nfix.\n\nsanitisePattern return type changed from string to string[]; call sites\nupdated to spread the result into disallowedUrls / allowedUrls.\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: correctly block exact paths and query-string patterns from robot…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-21T03:41:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4cf309ea3472b8a995d0ea859cfc2a2c33a948be",
          "body": "* fix: allow all URLs from local file sitemaps to be scanned\n\nWhen a local sitemap.xml is passed as the scan target, `crawlSitemap`\nfalls back to using the raw file path (e.g. `/app/sitemaps/foo.xml`) as\n`userUrl`. Inside `getLinksFromSitemap`, `isFollowStrategy` then tries\n`new URL('/app/sitemaps/.\n[…]\n check so redirect destinations\n  that are disallowed are never fetched\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix/local sitemap no pages scanned (#735)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-21T03:31:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "198dda18a7cd5df647e509cc54a156d12995949d",
          "body": "The crawlee folder deletion was deferred via setTimeout (fire-and-forget)\nwhich meant the folder was still present when zipResults ran immediately\nafter, including all crawlee internal JSON files in the output zip.\n\nReplace with an awaited 3-second delay followed by synchronous deletion,\nensuring the folder is removed before zipping starts.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: await crawlee folder cleanup before zipping results (#734)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-20T13:50:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7a4adc7cad8fb68ce3545d2122b29c670e4bd937",
          "body": "URLs like https://example.com and https://example.com/ are the same page\nbut were treated as different entries in the scannedUrlSet, causing\nduplicate scans (especially in intelligent crawls where the sitemap\nphase may list the URL without trailing slash and the domain crawl phase\ndiscovers it with \n[…]\n(the same function crawlee uses\ninternally) for consistent URL normalization in dedup sets. Exposed as\nnormUrl helper in utils.ts.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: normalize URLs for dedup to prevent scanning same page twice (#733)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-20T13:42:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0730de9ee9af23eb5c2ab9115304722341a6271f",
          "body": "…trategy in sitemap/intelligent crawls (#731)\n\n* feat: honour strategy in sitemap and intelligent crawls, skip redirects to external domains\n\n- Add 'ignore' strategy option (maps to EnqueueStrategy.All, no URL filtering)\n- Default strategy to 'ignore' for sitemap-only scans, 'same-domain' for others\n[…]\nl phase to proceed when no duration limit is set.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: skip redirects to external domains and honour domain/hostname s…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-20T07:58:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fba67ac4c6d7dd2909f0f526b86cb0df09439bfb",
          "body": "* fix: prevent OOM in summary.html generation for large scans\n\nThe summary.ejs template was JSON.stringify-ing the entire items object\nincluding all pagesAffected arrays with their individual issue items.\nFor large scans (1000+ pages), this could produce a 2GB+ string that\nexceeds V8's string size l\n[…]\n of scanItems-light temp files after report write\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: prevent OOM in summary.html generation for large scans (#732)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-20T01:46:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "709d66e27efebb00cfbe4546b62fcc487ac1470b",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.86 → v0.10.87 (#730)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-19T05:48:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08df9a1d7da2807305278edcef2ab7a64dd4933d",
          "body": "Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.5.11 to 5.8.0.\n- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)\n- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)\n- [Commits](https://\n[…]\nser\n  dependency-version: 5.7.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fast-xml-parser from 5.5.11 to 5.8.0 (#716)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-19T05:44:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 98,
      "commits_last_year": 265,
      "latest_release_at": "2026-07-31T03:50:31Z",
      "latest_release_tag": "0.11.6",
      "releases_from_tags": false,
      "days_since_last_push": 1,
      "active_weeks_last_year": 35,
      "days_since_latest_release": 1,
      "mean_days_between_releases": 14.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 75,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@govtechsg/oobee",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@govtechsg/oobee",
          "is_deprecated": false,
          "latest_version": "0.11.3",
          "repository_url": "https://github.com/GovTechSG/oobee",
          "versions_count": 49,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 10,
          "monthly_downloads": 59435,
          "first_published_at": "2024-12-12T08:23:12.963000Z",
          "latest_published_at": "2026-07-23T06:02:35.279000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 9
        }
      ]
    },
    "popularity": {
      "forks": 52,
      "stars": 164,
      "watchers": 6,
      "fork_history": {
        "days": [
          {
            "date": "2020-09-21",
            "count": 1
          },
          {
            "date": "2021-03-22",
            "count": 1
          },
          {
            "date": "2021-04-27",
            "count": 1
          },
          {
            "date": "2021-07-05",
            "count": 1
          },
          {
            "date": "2021-07-20",
            "count": 1
          },
          {
            "date": "2021-10-11",
            "count": 1
          },
          {
            "date": "2021-11-05",
            "count": 1
          },
          {
            "date": "2022-01-01",
            "count": 1
          },
          {
            "date": "2022-06-05",
            "count": 1
          },
          {
            "date": "2022-06-15",
            "count": 1
          },
          {
            "date": "2022-06-24",
            "count": 1
          },
          {
            "date": "2022-10-15",
            "count": 1
          },
          {
            "date": "2022-12-12",
            "count": 1
          },
          {
            "date": "2022-12-19",
            "count": 1
          },
          {
            "date": "2023-02-12",
            "count": 1
          },
          {
            "date": "2023-02-23",
            "count": 2
          },
          {
            "date": "2023-04-12",
            "count": 1
          },
          {
            "date": "2023-04-15",
            "count": 1
          },
          {
            "date": "2023-07-23",
            "count": 1
          },
          {
            "date": "2023-09-21",
            "count": 1
          },
          {
            "date": "2023-09-22",
            "count": 1
          },
          {
            "date": "2023-12-28",
            "count": 1
          },
          {
            "date": "2024-01-30",
            "count": 1
          },
          {
            "date": "2024-02-08",
            "count": 1
          },
          {
            "date": "2024-03-19",
            "count": 1
          },
          {
            "date": "2024-04-02",
            "count": 1
          },
          {
            "date": "2024-04-21",
            "count": 1
          },
          {
            "date": "2024-04-22",
            "count": 1
          },
          {
            "date": "2024-05-30",
            "count": 1
          },
          {
            "date": "2024-07-08",
            "count": 1
          },
          {
            "date": "2024-08-06",
            "count": 1
          },
          {
            "date": "2024-08-31",
            "count": 1
          },
          {
            "date": "2024-10-15",
            "count": 1
          },
          {
            "date": "2024-10-18",
            "count": 1
          },
          {
            "date": "2024-12-10",
            "count": 1
          },
          {
            "date": "2025-02-09",
            "count": 1
          },
          {
            "date": "2025-04-19",
            "count": 1
          },
          {
            "date": "2025-07-23",
            "count": 1
          },
          {
            "date": "2025-09-29",
            "count": 1
          },
          {
            "date": "2025-10-31",
            "count": 1
          },
          {
            "date": "2025-11-18",
            "count": 1
          },
          {
            "date": "2025-12-09",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 1
          },
          {
            "date": "2026-04-01",
            "count": 1
          },
          {
            "date": "2026-04-16",
            "count": 1
          },
          {
            "date": "2026-07-23",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 48,
        "total_forks": 52
      },
      "star_history": null,
      "open_issues_and_prs": 20
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "examples/oobee-cypress-integration-ts/tsconfig.json",
        "examples/oobee-playwright-integration-ts/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 1456005,
      "source_files_sampled": 82,
      "oversized_source_files": 4,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 40971
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 500,
        "malicious_count": 0,
        "assessed_package": "npm:@govtechsg/oobee@0.11.3",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@aws-sdk/client-s3",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1049.0"
        },
        {
          "name": "@json2csv/node",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.0.3"
        },
        {
          "name": "@napi-rs/canvas",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.1.53"
        },
        {
          "name": "@sentry/node",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.58.0"
        },
        {
          "name": "@types/aws-sdk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.0.42"
        },
        {
          "name": "axe-core",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.11.4"
        },
        {
          "name": "axios",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.8.2"
        },
        {
          "name": "base64-stream",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.0"
        },
        {
          "name": "cheerio",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.0-rc.12"
        },
        {
          "name": "crawlee",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.17.0"
        },
        {
          "name": "ejs",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.9"
        },
        {
          "name": "file-type",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^21.3.3"
        },
        {
          "name": "fs-extra",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^11.2.0"
        },
        {
          "name": "glob",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.0.6"
        },
        {
          "name": "https",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.0"
        },
        {
          "name": "inquirer",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.2.12"
        },
        {
          "name": "jsdom",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^29.0.0"
        },
        {
          "name": "jszip",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.10.1"
        },
        {
          "name": "lodash",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.18.1"
        },
        {
          "name": "mime",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.7"
        },
        {
          "name": "mime-types",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.35"
        },
        {
          "name": "minimatch",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.2.4"
        },
        {
          "name": "pdfjs-dist",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "github:veraPDF/pdfjs-dist#v4.4.168-taggedPdf-0.1.20"
        },
        {
          "name": "playwright",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.61.1"
        },
        {
          "name": "prettier",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.0"
        },
        {
          "name": "print-message",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.1"
        },
        {
          "name": "safe-regex",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "text-readability",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.0"
        },
        {
          "name": "tldts",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.0.27"
        },
        {
          "name": "typescript",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.4.5"
        },
        {
          "name": "url",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.11.3"
        },
        {
          "name": "uuid",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.0.0"
        },
        {
          "name": "validator",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.11.0"
        },
        {
          "name": "which",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.0"
        },
        {
          "name": "winston",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.11.0"
        },
        {
          "name": "ws",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.21.1"
        },
        {
          "name": "xml2js",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.6.2"
        },
        {
          "name": "xpath-to-css",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.0"
        },
        {
          "name": "yargs",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^17.7.2"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@aws-sdk/client-s3",
            "direct": true,
            "version": "3.1049.0",
            "ecosystem": "npm"
          },
          {
            "name": "@json2csv/node",
            "direct": true,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas",
            "direct": true,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/node",
            "direct": true,
            "version": "10.58.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/aws-sdk",
            "direct": true,
            "version": "0.0.42",
            "ecosystem": "npm"
          },
          {
            "name": "axe-core",
            "direct": true,
            "version": "4.11.4",
            "ecosystem": "npm"
          },
          {
            "name": "axios",
            "direct": true,
            "version": "1.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "base64-stream",
            "direct": true,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio",
            "direct": true,
            "version": "1.0.0-rc.12",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio",
            "direct": true,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "crawlee",
            "direct": true,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "ejs",
            "direct": true,
            "version": "3.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "file-type",
            "direct": true,
            "version": "21.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": true,
            "version": "11.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": true,
            "version": "13.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "https",
            "direct": true,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "inquirer",
            "direct": true,
            "version": "8.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "inquirer",
            "direct": true,
            "version": "9.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": true,
            "version": "26.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": true,
            "version": "29.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jszip",
            "direct": true,
            "version": "3.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": true,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "mime",
            "direct": true,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": true,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": true,
            "version": "10.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "pdfjs-dist",
            "direct": true,
            "version": "4.4.168",
            "ecosystem": "npm"
          },
          {
            "name": "playwright",
            "direct": true,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "playwright",
            "direct": true,
            "version": "^1.55.0",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": true,
            "version": "3.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "print-message",
            "direct": true,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "safe-regex",
            "direct": true,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "text-readability",
            "direct": true,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "tldts",
            "direct": true,
            "version": "6.1.86",
            "ecosystem": "npm"
          },
          {
            "name": "tldts",
            "direct": true,
            "version": "7.0.27",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": true,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": true,
            "version": "^5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "url",
            "direct": true,
            "version": "0.11.4",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": true,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "validator",
            "direct": true,
            "version": "13.15.26",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": true,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": true,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "winston",
            "direct": true,
            "version": "3.19.0",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": true,
            "version": "8.21.1",
            "ecosystem": "npm"
          },
          {
            "name": "xml2js",
            "direct": true,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "xpath-to-css",
            "direct": true,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": true,
            "version": "17.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/consts",
            "direct": false,
            "version": "2.53.3",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/datastructures",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/log",
            "direct": false,
            "version": "2.5.41",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/ps-tree",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/pseudo_url",
            "direct": false,
            "version": "2.0.82",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/timeout",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/utilities",
            "direct": false,
            "version": "2.34.1",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/css-color",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/css-color",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/dom-selector",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/nwsapi",
            "direct": false,
            "version": "2.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/crc32",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/crc32c",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/sha1-browser",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/sha256-browser",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/sha256-js",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/supports-web-crypto",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/util",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/core",
            "direct": false,
            "version": "3.974.12",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/crc64-nvme",
            "direct": false,
            "version": "3.972.8",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-env",
            "direct": false,
            "version": "3.972.38",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-http",
            "direct": false,
            "version": "3.972.40",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-ini",
            "direct": false,
            "version": "3.972.42",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-login",
            "direct": false,
            "version": "3.972.42",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-node",
            "direct": false,
            "version": "3.972.43",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-process",
            "direct": false,
            "version": "3.972.38",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-sso",
            "direct": false,
            "version": "3.972.42",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-web-identity",
            "direct": false,
            "version": "3.972.42",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-bucket-endpoint",
            "direct": false,
            "version": "3.972.14",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-expect-continue",
            "direct": false,
            "version": "3.972.12",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-flexible-checksums",
            "direct": false,
            "version": "3.974.20",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-location-constraint",
            "direct": false,
            "version": "3.972.10",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-sdk-s3",
            "direct": false,
            "version": "3.972.41",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-ssec",
            "direct": false,
            "version": "3.972.10",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/nested-clients",
            "direct": false,
            "version": "3.997.10",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/signature-v4-multi-region",
            "direct": false,
            "version": "3.996.27",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/token-providers",
            "direct": false,
            "version": "3.1049.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/types",
            "direct": false,
            "version": "3.973.8",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/util-locate-window",
            "direct": false,
            "version": "3.965.5",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/xml-builder",
            "direct": false,
            "version": "3.972.24",
            "ecosystem": "npm"
          },
          {
            "name": "@aws/lambda-invoke-store",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-plugin-utils",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-async-generators",
            "direct": false,
            "version": "7.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-bigint",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-class-properties",
            "direct": false,
            "version": "7.12.13",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-class-static-block",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-attributes",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-meta",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-json-strings",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-jsx",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-logical-assignment-operators",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-nullish-coalescing-operator",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-numeric-separator",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-object-rest-spread",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-catch-binding",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-chaining",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-private-property-in-object",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-top-level-await",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-typescript",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@bcoe/v8-coverage",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@borewit/text-codec",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@bramus/specificity",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@colors/colors",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/basic",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/browser",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/browser-pool",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/cheerio",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/cli",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/core",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/http",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/jsdom",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/linkedom",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/memory-storage",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/playwright",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/puppeteer",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/templates",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/types",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/utils",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/color-helpers",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/color-helpers",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-calc",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-calc",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-color-parser",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-color-parser",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-parser-algorithms",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-parser-algorithms",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-syntax-patches-for-csstree",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-tokenizer",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-tokenizer",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@dabh/diagnostics",
            "direct": false,
            "version": "2.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/core",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-array",
            "direct": false,
            "version": "0.21.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-helpers",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/core",
            "direct": false,
            "version": "0.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/eslintrc",
            "direct": false,
            "version": "3.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "9.39.4",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/object-schema",
            "direct": false,
            "version": "2.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/plugin-kit",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@exodus/bytes",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@govtechsg/oobee",
            "direct": false,
            "version": "^0.10.69",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/core",
            "direct": false,
            "version": "0.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/node",
            "direct": false,
            "version": "0.16.7",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/retry",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/external-editor",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/figures",
            "direct": false,
            "version": "1.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@isaacs/fs-minipass",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/load-nyc-config",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/schema",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/console",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/core",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/diff-sequences",
            "direct": false,
            "version": "30.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/environment",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect-utils",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/fake-timers",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/get-type",
            "direct": false,
            "version": "30.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/globals",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/pattern",
            "direct": false,
            "version": "30.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/reporters",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/schemas",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/snapshot-utils",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/source-map",
            "direct": false,
            "version": "30.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-result",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-sequencer",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/transform",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/types",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@json2csv/formatters",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@json2csv/plainjs",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@keyv/serialize",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@mapbox/node-pre-gyp",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-android-arm64",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-darwin-arm64",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-darwin-x64",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-arm-gnueabihf",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-arm64-gnu",
            "direct": false,
            "version": "0.1.53",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-arm64-gnu",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-arm64-musl",
            "direct": false,
            "version": "0.1.53",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-arm64-musl",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-riscv64-gnu",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-x64-gnu",
            "direct": false,
            "version": "0.1.53",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-x64-gnu",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-x64-musl",
            "direct": false,
            "version": "0.1.53",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-x64-musl",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-win32-arm64-msvc",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-win32-x64-msvc",
            "direct": false,
            "version": "0.1.53",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-win32-x64-msvc",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodable/entities",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/api",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/api-logs",
            "direct": false,
            "version": "0.214.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/core",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/instrumentation",
            "direct": false,
            "version": "0.214.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/resources",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/sdk-trace-base",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/semantic-conventions",
            "direct": false,
            "version": "1.41.1",
            "ecosystem": "npm"
          },
          {
            "name": "@pkgr/core",
            "direct": false,
            "version": "0.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "@rtsao/scc",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sapphire/async-queue",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@sapphire/shapeshift",
            "direct": false,
            "version": "3.9.7",
            "ecosystem": "npm"
          },
          {
            "name": "@sec-ant/readable-stream",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/core",
            "direct": false,
            "version": "10.58.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/node-core",
            "direct": false,
            "version": "10.58.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/opentelemetry",
            "direct": false,
            "version": "10.58.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/server-utils",
            "direct": false,
            "version": "10.58.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sinclair/typebox",
            "direct": false,
            "version": "0.34.49",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/is",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/is",
            "direct": false,
            "version": "5.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/is",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/commons",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/fake-timers",
            "direct": false,
            "version": "15.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/core",
            "direct": false,
            "version": "3.24.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/credential-provider-imds",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/fetch-http-handler",
            "direct": false,
            "version": "5.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/is-array-buffer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/node-http-handler",
            "direct": false,
            "version": "4.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/signature-v4",
            "direct": false,
            "version": "5.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/types",
            "direct": false,
            "version": "4.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/util-buffer-from",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/util-utf8",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@so-ric/colorspace",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@streamparser/json",
            "direct": false,
            "version": "0.0.20",
            "ecosystem": "npm"
          },
          {
            "name": "@tokenizer/inflate",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tokenizer/token",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__core",
            "direct": false,
            "version": "7.20.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__generator",
            "direct": false,
            "version": "7.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__template",
            "direct": false,
            "version": "7.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__traverse",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/base64-stream",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/content-type",
            "direct": false,
            "version": "1.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/eslint",
            "direct": false,
            "version": "9.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/eslint__js",
            "direct": false,
            "version": "8.42.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/fs-extra",
            "direct": false,
            "version": "11.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/http-cache-semantics",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/inquirer",
            "direct": false,
            "version": "9.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-coverage",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-report",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-reports",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jest",
            "direct": false,
            "version": "^30.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jsdom",
            "direct": false,
            "version": "21.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json5",
            "direct": false,
            "version": "0.0.29",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jsonfile",
            "direct": false,
            "version": "6.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/lodash",
            "direct": false,
            "version": "4.17.24",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mime",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mime-types",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "25.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/pluralize",
            "direct": false,
            "version": "0.0.29",
            "ecosystem": "npm"
          },
          {
            "name": "@types/safe-regex",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/sax",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/stack-utils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/through",
            "direct": false,
            "version": "0.0.33",
            "ecosystem": "npm"
          },
          {
            "name": "@types/tough-cookie",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/triple-beam",
            "direct": false,
            "version": "1.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/validator",
            "direct": false,
            "version": "13.15.10",
            "ecosystem": "npm"
          },
          {
            "name": "@types/which",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/xml2js",
            "direct": false,
            "version": "0.4.14",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs",
            "direct": false,
            "version": "17.0.35",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs-parser",
            "direct": false,
            "version": "21.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/project-service",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/tsconfig-utils",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-android-arm-eabi",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-android-arm64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-darwin-arm64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-darwin-x64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-freebsd-x64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm-musleabihf",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-loong64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-loong64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-riscv64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-riscv64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-x64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-x64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-openharmony-arm64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-wasm32-wasi",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-ia32-msvc",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-x64-msvc",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vladfrangu/async_event_emitter",
            "direct": false,
            "version": "2.4.7",
            "ecosystem": "npm"
          },
          {
            "name": "abbrev",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "abort-controller",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-import-attributes",
            "direct": false,
            "version": "1.9.5",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "adm-zip",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-colors",
            "direct": false,
            "version": "4.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-escapes",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "aproba",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "are-we-there-yet",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-buffer-byte-length",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "array-includes",
            "direct": false,
            "version": "3.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.findlastindex",
            "direct": false,
            "version": "1.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.flat",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.flatmap",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "arraybuffer.prototype.slice",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "async",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "async-function",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "asynckit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "available-typed-arrays",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "babel-jest",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-istanbul",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-jest-hoist",
            "direct": false,
            "version": "30.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-current-node-syntax",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-jest",
            "direct": false,
            "version": "30.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.8",
            "ecosystem": "npm"
          },
          {
            "name": "bidi-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "bl",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "bowser",
            "direct": false,
            "version": "2.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "browserify-zlib",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "bser",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "5.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "byte-counter",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cacheable-lookup",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cacheable-request",
            "direct": false,
            "version": "13.0.19",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind-apply-helpers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bound",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001780",
            "ecosystem": "npm"
          },
          {
            "name": "canvas",
            "direct": false,
            "version": "2.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "char-regex",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "chardet",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio-select",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "chownr",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "cjs-module-lexer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-cursor",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-spinners",
            "direct": false,
            "version": "2.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "cli-width",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-width",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "clone",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "co",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "collect-v8-coverage",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "color",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-string",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "color-support",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "combined-stream",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "14.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "confusing-browser-globals",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "console-control-strings",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "css-select",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "css-what",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "cssom",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "cssstyle",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "csv-stringify",
            "direct": false,
            "version": "6.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "cypress",
            "direct": false,
            "version": "^13.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cypress",
            "direct": false,
            "version": "^15.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "data-urls",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "data-urls",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "data-view-buffer",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "data-view-byte-length",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "data-view-byte-offset",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "3.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decimal.js",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "decompress-response",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "decompress-response",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "dedent",
            "direct": false,
            "version": "1.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "deepmerge",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "defaults",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-data-property",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-properties",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "delayed-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "delegates",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "detect-newline",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "devtools-protocol",
            "direct": false,
            "version": "0.0.1656784",
            "ecosystem": "npm"
          },
          {
            "name": "doctrine",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "dot-prop",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dot-prop",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "duplexer",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.321",
            "ecosystem": "npm"
          },
          {
            "name": "emittery",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "enabled",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "encoding-sniffer",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "es-abstract",
            "direct": false,
            "version": "1.24.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-set-tostringtag",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-shim-unscopables",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-to-primitive",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "9.39.4",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-config-airbnb-base",
            "direct": false,
            "version": "15.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-config-prettier",
            "direct": false,
            "version": "8.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-import-resolver-node",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-module-utils",
            "direct": false,
            "version": "2.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-import",
            "direct": false,
            "version": "2.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-prettier",
            "direct": false,
            "version": "5.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "8.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "10.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "event-stream",
            "direct": false,
            "version": "3.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "event-target-shim",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "events",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "exit-x",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "expect",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-diff",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fast-xml-builder",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-xml-parser",
            "direct": false,
            "version": "5.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "fb-watchman",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fecha",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "figlet",
            "direct": false,
            "version": "1.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "figures",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "filelist",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fingerprint-generator",
            "direct": false,
            "version": "2.1.82",
            "ecosystem": "npm"
          },
          {
            "name": "fingerprint-injector",
            "direct": false,
            "version": "2.1.82",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "fn.name",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "follow-redirects",
            "direct": false,
            "version": "1.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "for-each",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "form-data-encoder",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "from",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "function.prototype.name",
            "direct": false,
            "version": "1.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "functions-have-names",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "gauge",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "generative-bayesian-network",
            "direct": false,
            "version": "2.1.83",
            "ecosystem": "npm"
          },
          {
            "name": "generator-function",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-package-type",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-symbol-description",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "15.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "globalthis",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "got",
            "direct": false,
            "version": "14.6.6",
            "ecosystem": "npm"
          },
          {
            "name": "got-scraping",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "has-ansi",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-bigints",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-property-descriptors",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-proto",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-tostringtag",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-unicode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "header-generator",
            "direct": false,
            "version": "2.1.82",
            "ecosystem": "npm"
          },
          {
            "name": "html-encoding-sniffer",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-encoding-sniffer",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "10.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "9.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-cache-semantics",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy-agent",
            "direct": false,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "http2-wrapper",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "idcac-playwright",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "7.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "immediate",
            "direct": false,
            "version": "3.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-in-the-middle",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "import-local",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "internal-slot",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ip-address",
            "direct": false,
            "version": "10.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-any-array",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-array-buffer",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-async-function",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-bigint",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-boolean-object",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-callable",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-data-view",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-date-object",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-finalizationregistry",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-generator-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-generator-function",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-interactive",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-map",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-negative-zero",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-number-object",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-obj",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-potential-custom-element-name",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-regex",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-set",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-shared-array-buffer",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-string",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-symbol",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-typed-array",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-weakmap",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-weakref",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-weakset",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-coverage",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-report",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-source-maps",
            "direct": false,
            "version": "5.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-reports",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "jake",
            "direct": false,
            "version": "10.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "jest",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-changed-files",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-circus",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-cli",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-config",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-diff",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-docblock",
            "direct": false,
            "version": "30.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-each",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-environment-node",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-haste-map",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-leak-detector",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-matcher-utils",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-message-util",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-mock",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-pnp-resolver",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-regex-util",
            "direct": false,
            "version": "30.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve-dependencies",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runner",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runtime",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-snapshot",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-util",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-validate",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-watcher",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": false,
            "version": "3.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "5.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "kuler",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "leven",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "lie",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "linkedom",
            "direct": false,
            "version": "0.18.12",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isequal",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "logform",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "lowercase-keys",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "10.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "11.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "makeerror",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "map-stream",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-response",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-response",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "minizlib",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ml-array-max",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ml-array-min",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ml-array-rescale",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ml-logistic-regression",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ml-matrix",
            "direct": false,
            "version": "6.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "module-details-from-path",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mute-stream",
            "direct": false,
            "version": "0.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mute-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "nan",
            "direct": false,
            "version": "2.26.1",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.15",
            "ecosystem": "npm"
          },
          {
            "name": "napi-postinstall",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-int64",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.36",
            "ecosystem": "npm"
          },
          {
            "name": "nopt",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-strings",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-url",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npmlog",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "nth-check",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "nwsapi",
            "direct": false,
            "version": "2.2.24",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "object-keys",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object.assign",
            "direct": false,
            "version": "4.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "object.entries",
            "direct": false,
            "version": "1.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "object.fromentries",
            "direct": false,
            "version": "2.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "object.groupby",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "object.values",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "one-time",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "ora",
            "direct": false,
            "version": "5.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "ow",
            "direct": false,
            "version": "0.28.2",
            "ecosystem": "npm"
          },
          {
            "name": "ow",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "own-keys",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-cancelable",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pako",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parent-require",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5-htmlparser2-tree-adapter",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5-parser-stream",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-expression-matcher",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-scurry",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "path2d",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "pause-stream",
            "direct": false,
            "version": "0.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "pirates",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-dir",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "playwright-core",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "pluralize",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "possible-typed-array-names",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "prettier-linter-helpers",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-format",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "process",
            "direct": false,
            "version": "0.11.10",
            "ecosystem": "npm"
          },
          {
            "name": "process-nextick-args",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "proper-lockfile",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-chain",
            "direct": false,
            "version": "2.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-from-env",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pure-rand",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.15.2",
            "ecosystem": "npm"
          },
          {
            "name": "quick-lru",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "quick-lru",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "18.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "19.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "reflect.getprototypeof",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "regexp-tree",
            "direct": false,
            "version": "0.1.27",
            "ecosystem": "npm"
          },
          {
            "name": "regexp.prototype.flags",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "require-in-the-middle",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.11",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-alpn",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-cwd",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "responselike",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "restore-cursor",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "retry",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "robots-parser",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rrweb-cssom",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "run-async",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "run-async",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rxjs",
            "direct": false,
            "version": "7.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-array-concat",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safe-push-apply",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-regex-test",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-stable-stringify",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "sax",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "saxes",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "set-blocking",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-length",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-name",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "set-proto",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "setimmediate",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-weakmap",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "simple-concat",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "simple-get",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "smart-buffer",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "socks",
            "direct": false,
            "version": "2.8.9",
            "ecosystem": "npm"
          },
          {
            "name": "socks-proxy-agent",
            "direct": false,
            "version": "8.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.13",
            "ecosystem": "npm"
          },
          {
            "name": "split",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "stack-trace",
            "direct": false,
            "version": "0.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "stack-utils",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "stop-iteration-iterator",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "stream-chain",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "stream-combiner",
            "direct": false,
            "version": "0.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "stream-json",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "string-comparison",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "string-length",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trim",
            "direct": false,
            "version": "1.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trimend",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trimstart",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strnum",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "strtok3",
            "direct": false,
            "version": "10.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "syllable",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "symbol-tree",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "synckit",
            "direct": false,
            "version": "0.11.12",
            "ecosystem": "npm"
          },
          {
            "name": "tar",
            "direct": false,
            "version": "7.5.22",
            "ecosystem": "npm"
          },
          {
            "name": "test-exclude",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "text-hex",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "through",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "tiny-typed-emitter",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.15",
            "ecosystem": "npm"
          },
          {
            "name": "tldts-core",
            "direct": false,
            "version": "6.1.86",
            "ecosystem": "npm"
          },
          {
            "name": "tldts-core",
            "direct": false,
            "version": "7.0.27",
            "ecosystem": "npm"
          },
          {
            "name": "tmpl",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "token-types",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "tough-cookie",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "triple-beam",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "ts-api-utils",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "tsconfig-paths",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-detect",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "2.19.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "4.41.0",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-buffer",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-byte-length",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-byte-offset",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-length",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "typescript-eslint",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "uhyphen",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "uint8array-extras",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "unbox-primitive",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unrs-resolver",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "v8-to-istanbul",
            "direct": false,
            "version": "9.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "vali-date",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-xmlserializer",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "walker",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-encoding",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "14.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "16.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "which-boxed-primitive",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-builtin-type",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-collection",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which-typed-array",
            "direct": false,
            "version": "1.1.20",
            "ecosystem": "npm"
          },
          {
            "name": "wide-align",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "winston-transport",
            "direct": false,
            "version": "4.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "xml-name-validator",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "xml-naming",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "xmlbuilder",
            "direct": false,
            "version": "11.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "xmlchars",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargonaut",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "yoctocolors-cjs",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 941,
        "direct_count": 46,
        "indirect_count": 895
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 7,
        "merged_prs": 642,
        "open_issues": 13,
        "closed_ratio": 0.74,
        "closed_issues": 37,
        "closed_unmerged_prs": 109
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "younglim",
          "commits": 670,
          "avatar_url": "https://avatars.githubusercontent.com/u/2021525?v=4"
        },
        {
          "type": "User",
          "login": "CKodes",
          "commits": 77,
          "avatar_url": "https://avatars.githubusercontent.com/u/78678795?v=4"
        },
        {
          "type": "User",
          "login": "WilsonkwSheng",
          "commits": 34,
          "avatar_url": "https://avatars.githubusercontent.com/u/30139121?v=4"
        },
        {
          "type": "User",
          "login": "greyguy21",
          "commits": 32,
          "avatar_url": "https://avatars.githubusercontent.com/u/62389546?v=4"
        },
        {
          "type": "User",
          "login": "khoodehui",
          "commits": 31,
          "avatar_url": "https://avatars.githubusercontent.com/u/67047571?v=4"
        },
        {
          "type": "User",
          "login": "joshualwf",
          "commits": 29,
          "avatar_url": "https://avatars.githubusercontent.com/u/105707762?v=4"
        },
        {
          "type": "User",
          "login": "jodichoo",
          "commits": 28,
          "avatar_url": "https://avatars.githubusercontent.com/u/77408309?v=4"
        },
        {
          "type": "User",
          "login": "Thumster",
          "commits": 26,
          "avatar_url": "https://avatars.githubusercontent.com/u/50561219?v=4"
        },
        {
          "type": "User",
          "login": "shioju",
          "commits": 26,
          "avatar_url": "https://avatars.githubusercontent.com/u/4652591?v=4"
        },
        {
          "type": "User",
          "login": "angyonghaseyo",
          "commits": 25,
          "avatar_url": "https://avatars.githubusercontent.com/u/89739997?v=4"
        }
      ],
      "contributors_sampled": 29,
      "top_contributor_share": 0.633
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "bump-package-version.yml",
        "docker-push-ghcr.yml",
        "docker-test.yml",
        "image.yml",
        "publish.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        "eslint.config.js"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 0,
            "reason": "0 out of 17 merged PRs checked by a CI test -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/26 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 1,
            "reason": "dependency not pinned by hash detected -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "0034173737a089071aa1b8ac77c37ffb4cf5ac43",
        "ran_at": "2026-08-01T19:03:37Z",
        "aggregate_score": 5.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-31T05:54:49Z",
      "oldest_open_prs": [
        {
          "number": 587,
          "created_at": "2025-10-31T04:37:04Z",
          "last_comment_at": "2026-02-03T09:44:32Z",
          "last_comment_author": "younglim"
        },
        {
          "number": 601,
          "created_at": "2025-12-09T01:27:09Z",
          "last_comment_at": "2025-12-09T12:36:09Z",
          "last_comment_author": "mgifford"
        },
        {
          "number": 680,
          "created_at": "2026-03-12T09:15:38Z",
          "last_comment_at": "2026-03-12T09:51:25Z",
          "last_comment_author": "younglim"
        },
        {
          "number": 717,
          "created_at": "2026-04-28T09:19:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 751,
          "created_at": "2026-06-12T02:29:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 772,
          "created_at": "2026-06-24T07:52:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 800,
          "created_at": "2026-07-27T01:07:17Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-31T00:25:35Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 7,
          "created_at": "2020-09-04T13:16:15Z",
          "last_comment_at": "2021-12-14T01:37:58Z",
          "last_comment_author": "mgifford"
        },
        {
          "number": 14,
          "created_at": "2020-09-24T17:29:30Z",
          "last_comment_at": "2024-10-14T09:57:41Z",
          "last_comment_author": "younglim"
        },
        {
          "number": 19,
          "created_at": "2021-01-25T14:02:34Z",
          "last_comment_at": "2023-07-25T19:09:37Z",
          "last_comment_author": "brianteeman"
        },
        {
          "number": 44,
          "created_at": "2021-11-30T20:57:06Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 52,
          "created_at": "2022-02-18T02:24:59Z",
          "last_comment_at": "2024-01-18T17:11:54Z",
          "last_comment_author": "jcrain23"
        },
        {
          "number": 217,
          "created_at": "2023-10-26T16:02:52Z",
          "last_comment_at": "2024-03-14T15:58:44Z",
          "last_comment_author": "brianteeman"
        },
        {
          "number": 240,
          "created_at": "2023-11-27T13:03:28Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 241,
          "created_at": "2023-11-27T13:05:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 255,
          "created_at": "2024-01-05T17:24:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 256,
          "created_at": "2024-01-06T13:47:24Z",
          "last_comment_at": "2024-01-08T17:30:58Z",
          "last_comment_author": "mgifford"
        },
        {
          "number": 257,
          "created_at": "2024-01-06T14:01:20Z",
          "last_comment_at": "2024-01-08T17:52:33Z",
          "last_comment_author": "mgifford"
        },
        {
          "number": 263,
          "created_at": "2024-01-19T20:17:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 380,
          "created_at": "2024-07-03T14:18:43Z",
          "last_comment_at": "2024-07-18T07:56:03Z",
          "last_comment_author": "younglim"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/GovTechSG/oobee",
    "host": "github.com",
    "name": "oobee",
    "owner": "GovTechSG"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "excellent",
      "name": "Overall health",
      "note": "The weighted overall 69 is calibrated to 81 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 69,
            "calibrated": 81,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 81,
      "inputs": {
        "security": 64,
        "vitality": 89,
        "community": 67,
        "governance": 65,
        "calibration": "2026-08-02",
        "engineering": 58,
        "ai_readiness": 73,
        "weighted_overall_raw": 69
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 89,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 88,
            "inputs": {
              "commits_last_year": 265,
              "human_commit_share": 0.82,
              "days_since_last_push": 1,
              "active_weeks_last_year": 35
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "35/52 weeks with commits",
                "points": 24.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 35
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "265 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 265
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 98,
              "latest_release_tag": "0.11.6",
              "releases_from_tags": false,
              "days_since_latest_release": 1,
              "mean_days_between_releases": 14.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "98 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 98
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~14.2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 14.2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "exceptional",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 4,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 4 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 67,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "forks": 52,
              "stars": 164,
              "watchers": 6,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "164 stars",
                "points": 35.9,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 164
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "52 forks",
                "points": 14.2,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 52
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "6 watchers",
                "points": 3.9,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": null,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "readme_badge_services": [],
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "excellent",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 80,
            "inputs": {
              "packages": [
                "@govtechsg/oobee"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 59435
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "59,435 downloads/month across npm",
                "points": 63.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 59435,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 65,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 34,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 29,
              "top_contributor_share": 0.633
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 63% of commits",
                "points": 8.3,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 63
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "29 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 29
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 65,
            "inputs": {
              "merged_prs": 642,
              "open_issues": 13,
              "closed_issues": 37,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": 0.74,
              "closed_unmerged_prs": 109,
              "first_time_authors_30d": null,
              "first_time_prs_merged_30d": null,
              "first_time_prs_decided_30d": null
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "74% of issues closed",
                "points": 31.1,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 74
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "642/751 decided PRs merged",
                "points": 25.6,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 642,
                      "decided": 751
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/26 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "followers": 312,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "GovTechSG",
              "public_repos": 171,
              "account_age_days": 4097
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "312 followers of GovTechSG",
                "points": 17.9,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 312,
                      "login": "GovTechSG"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "171 public repos, account ~11 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 171
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 11
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "exceptional",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@govtechsg/oobee"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 9
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 9 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 9
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "49 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 49
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 58,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "5 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": "eslint.config.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "0 out of 17 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 64,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 55,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 5.5
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 17 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/26 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 1",
                "points": 0.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "exceptional",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:@govtechsg/oobee@0.11.3 runtime dependency closure — what installing the published package pulls in — 500 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:@govtechsg/oobee@0.11.3",
                  "assessed": 500
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 500,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "exceptional",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 500,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "exceptional",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 4
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 73,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.841,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 40971
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "69 of 82 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 69,
                      "sampled": 82
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "examples/oobee-cypress-integration-ts/tsconfig.json",
                "examples/oobee-playwright-integration-ts/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.48,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.07
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "eslint.config.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "48 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 48,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "7 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 7,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 1",
                "points": 1,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 79,
            "inputs": {
              "primary_language": "EJS",
              "largest_source_bytes": 1456005,
              "source_files_sampled": 82,
              "oversized_source_files": 4
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "EJS with type-check config (examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json",
                      "language": "EJS"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "4/82 source files over 60KB",
                "points": 52.3,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 82,
                      "oversized": 4
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "weak",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "top": [
        "library",
        "application"
      ],
      "labels": [
        "library",
        "cli"
      ],
      "scores": {
        "cli": 4,
        "library": 6
      },
      "primary": "library",
      "evidence": [
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:npm",
          "weight": 6
        },
        {
          "tier": "dependencies",
          "label": "cli",
          "source": "dep:yargs",
          "weight": 4
        }
      ],
      "artifacts": [],
      "confidence": "medium",
      "host_extension": false,
      "runs_as_process": true,
      "consumed_by_code": true
    },
    "metrics_version": "2.5.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-08-01T19:04:02.694606Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/GovTechSG/oobee.svg",
  "full_name": "GovTechSG/oobee",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v2.5.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikennpm.