Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 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 зірки⑂ 52 форкиз черв. 2020 р.Переглянути на GitHub ↗
ТипБібліотекаІнструмент командного рядкаяк це визначено

GovTechSG/oobee має індекс здоров’я 81 зі 100, що відповідає смузі «Відмінний». Найвищий показник — Vitality (89/100), найнижчий — Engineering Quality (58/100). Останнє оновлення було 1 день тому. Більшість нещодавньої роботи виконує один учасник.

81
загалом / 100
Відмінний

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє зважене середнє, відкаліброване за розподілом публічного реєстру, тож діапазони мають перцентильний зміст; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 34 («У зоні ризику»).

81
Винятковий93-100Верхній щабель реєстру (≈ топ-5%); відповідає практично всім перевіреним критеріям
Відмінний80-92Сильний за всіма напрямами; незначні прогалини
Добрий65-79Здоровий; прогалини обмежені та керовані
Помірний50-64Прийнятний, але з помітними прогалинами; рекомендовано перевірку
Слабкий35-49Суттєві недоліки в кількох сферах
У зоні ризику20-34Суттєві слабкі місця; впровадження потребує обережності
Критичний1-19Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Зважений загальний бал 69 калібровано до 81 за шкалою опублікованого індексу (калібрування реєстру 2026-08-02).

Власність

312 підписників171 публічний репозиторійз трав. 2015 р.

За цим репозиторієм стоїть організація — спільна, підзвітна опіка, здатна пережити будь-якого окремого мейнтейнера.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікація
npm@govtechsg/oobee0.11.359 435499 днів тому

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

89Відмінний · 21% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 1 дн. тому
24.2/36Ритм комітів — 35/52 тижнів із комітами
18/18Обсяг комітів — 265 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year265
human_commit_share0,82
days_since_last_push1
active_weeks_last_year35
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 98 релізів
36/36Свіжість релізів — останній реліз 1 дн. тому
27/27Ритм релізів — реліз кожні ~14,2 дн.
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Використані вхідні дані
releases_count98
latest_release_tag0.11.6
releases_from_tagsні
days_since_latest_release1
mean_days_between_releases14,2

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

67Добрий · 17% загального індексу
Як обчислюється оцінка
35.9/60Зірки — 164 зірок
14.2/25Форки — 52 форків
3.9/15Спостерігачі — 6 спостерігачів
Використані вхідні дані
forks52
stars164
watchers6
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
0/18Настанови CONTRIBUTING
13.5/13.5Кодекс поведінки
0/7.2Шаблон issue
6.3/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
readme_badges
has_contributingні
has_issue_templateні
has_code_of_conductтак
readme_badge_services
has_pull_request_templateтак
Як обчислюється оцінка
63.7/80Щомісячні завантаження — 59 435 завантажень/місяць у npm
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packages@govtechsg/oobee
dependents
ecosystemsnpm
total_downloads
monthly_downloads59 435
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

65Добрий · 23% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
8.3/22.5Розподіл комітів — головний контриб’ютор — автор 63% комітів
13.5/13.5Широта контриб’юторів — 29 контриб’юторів
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Використані вхідні дані
bus_factor1
contributors_sampled29
top_contributor_share0,633
Як обчислюється оцінка
31.1/42Вирішення issue — закрито 74% issue
25.6/30Прийняття PR — злито 642/751 вирішених PR
0/13Newcomer PR acceptance — за 30 дн. не вирішено жодного PR від новачка
0/15OpenSSF Scorecard: Code-Review — Found 0/26 approved changesets -- score normalized to 0
Використані вхідні дані
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
Виключено з оцінювання (немає даних або не застосовно): newcomer_pr_acceptance. Залишкові ваги перенормовано.
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
17.9/25Охоплення власника — 312 підписників у GovTechSG
25/25Послужний список — 171 публічних репозиторіїв, вік облікового запису ~11 р.
Використані вхідні дані
followers312
owner_typeOrganization
is_verified
owner_loginGovTechSG
public_repos171
account_age_days4 097

Супровід пакетів

100Винятковий
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у npm
35/35Свіжість публікацій — остання публікація 9 дн. тому
20/20Історія версій — 49 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packages@govtechsg/oobee
ecosystemsnpm
any_deprecatedні
min_days_since_publish9

Інженерна якість

Чи наявні базові інженерні практики та документація?

58Помірний · 19% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 5 процес(ів) CI
24/24Наявні тести
16/16Конфігурація лінтера — eslint.config.js
0/9.6Pre-commit-хуки
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 17 merged PRs checked by a CI test -- score normalized to 0
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configтак
has_precommit_configні

Документація

50Помірний
Як обчислюється оцінка
30/30README
0/25Каталог документації
0/15Сайт документації / домашня сторінка
10/10Опис репозиторію
0/10Теми
10/10Wiki
Використані вхідні дані
topics
has_wikiтак
homepage
has_readmeтак
has_docs_dirні
has_descriptionтак

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

64Помірний · 16% загального індексу

Стан безпеки

55Помірний
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — немає даних
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.5Ліцензія — 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
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate5,5
Виключено з оцінювання (немає даних або не застосовно): branch_protection. Залишкові ваги перенормовано.
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
25/25Непрямі залежності без відомих сповіщень — жодна непряма залежність не має відомих сповіщень
0/40Немає задавнених сповіщень — жодне сповіщення не має дати публікації
Використані вхідні дані
sourceosv
advisories0
affected_packages0
assessed_packages500
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Виключено з оцінювання (немає даних або не застосовно): Немає задавнених сповіщень. Залишкові ваги перенормовано. Звірено з runtime-замиканням залежностей npm:@govtechsg/oobee@0.11.3 — тим, що тягне за собою встановлення опублікованого пакета, — 500 пакетів. Досяжність не аналізується.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Має свідомо малу вагу (4%): агентний інструментарій — реальний сигнал супроводу, але репозиторій без нього все одно може отримати 100/100.

73Добрий · 4% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — AGENTS.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 69 з 82 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,841
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes40 971
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — eslint.config.js
11/11Статична перевірка типів — examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json
10/10Відтворюване середовище — Dockerfile, lockfile
10/10Підтверджена практика роботи з агентами — 48 з останніх 100 комітів створено агентом або з його зазначенням
8/8Автоматизоване супроводження — 7 з останніх 100 комітів — автоматичні оновлення залежностей
1/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
Використані вхідні дані
has_nixні
has_testsтак
lockfilespackage-lock.json
has_dockerfileтак
typed_languageні
bootstrap_files
has_devcontainerні
has_linter_configтак
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
Як обчислюється оцінка
27/45Типізований код — EJS з конфігурацією перевірки типів (examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json)
52.3/55Керовані розміри файлів — 4/82 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageEJS
largest_source_bytes1 456 005
source_files_sampled82
oversized_source_files4
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — examples
Використані вхідні дані
example_dirsexamples
has_mcp_signalні
api_schema_files

Ключові факти

164зірок GitHub
29контриб'юторів
265комітів за останні 12 місяців
1днів від останнього пушу
98релізів
1бас-фактор
13відкритих issue
npmпакетних екосистем

Попередження щодо збору даних

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

Докладніше

Історія зірок і форків 0 ★ / 52 ⇿
0Зірки
52Форки
96Релізи

Коли додано кожну зірку й форк — зібрано з GitHub і згруповано за днями. Кумулятивне зростання розміщено просто над денними додаваннями, з яких воно складається, тож їх видно одне проти одного: рівномірне органічне накопичення виглядає зовсім інакше, ніж різкий короткочасний сплеск. Там, де цю різницю можна виміряти, її подано як автентичність росту.

010203040504822020-092023-082026-07
Мажорні 0Мінорні 2Патчі 93

Кожна точка охоплює 6 днів.

OpenSSF Scorecard 5.5 / 10
5.5сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-08-01 19:03 UTC

10Binary-Artifactsno binaries found in the repo
н/д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
Прямі залежності 39
РеєстрПакетОбмеження версіїМаніфест
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
Усі залежності 941

Повний розв'язаний набір залежностей із графа залежностей GitHub: 46 прямих і 895 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

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

Встановлення npm:@govtechsg/oobee@0.11.3 тягне 500 пакетів, прямих і транзитивних: 0 мають відомі сповіщення, з них 0 — прямі залежності.

Жодне відоме сповіщення не стосується оцінених залежностей.

Сповіщення означає, що версія, записана в графі залежностей, потрапляє в уражений діапазон. Досяжність не аналізується, а граф містить піниї розробки й тестування — знахідка може стосуватися інструментів, а не поставленого коду.

Звіт у форматі JSON машиночитний
{
  "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"
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v2.5.0, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистикаnpm.