Public record
Software health reportschema 0.27.0 · metrics 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 stars⑂ 52 forkssince Jun 2020View on GitHub ↗
KindLibraryCommand-line toolhow this is determined

GovTechSG/oobee holds a health index of 81 out of 100, placing it in the Excellent band. It scores highest on Vitality (89/100) and lowest on Engineering Quality (58/100). It was last updated 1 day ago. A single contributor accounts for most of its recent work.

81
overall / 100
Excellent

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean, calibrated against the distribution of the public record so bands carry percentile meaning; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At Risk ceiling of 34.

81
Exceptional93-100The record's top tier (≈ top 5%); essentially all checked criteria met
Excellent80-92Strong across the board; minor gaps
Good65-79Healthy; gaps are limited and manageable
Moderate50-64Acceptable with notable gaps; review recommended
Weak35-49Material weaknesses across several areas
At Risk20-34Significant weaknesses; adoption warrants caution
Critical1-19Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

The weighted overall 69 is calibrated to 81 on the published index scale (record calibration 2026-08-02).

Ownership

312 followers171 public repossince May 2015

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publish
npm@govtechsg/oobee0.11.359,435499 days ago

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

89Excellent · 21% of overall
How it's scored
36/36Push recency — last push 1 days ago
24.2/36Commit cadence — 35/52 weeks with commits
18/18Commit volume — 265 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year265
human_commit_share0.82
days_since_last_push1
active_weeks_last_year35
How it's scored
27/27Ships releases — 98 releases published
36/36Release recency — latest release 1 days ago
27/27Release cadence — a release every ~14.2 days
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Inputs used
releases_count98
latest_release_tag0.11.6
releases_from_tagsno
days_since_latest_release1
mean_days_between_releases14.2

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

67Good · 17% of overall
How it's scored
35.9/60Stars — 164 stars
14.2/25Forks — 52 forks
3.9/15Watchers — 6 watchers
Inputs used
forks52
stars164
watchers6
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
0/18CONTRIBUTING guide
13.5/13.5Code of conduct
0/7.2Issue template
6.3/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
readme_badges
has_contributingno
has_issue_templateno
has_code_of_conductyes
readme_badge_services
has_pull_request_templateyes
How it's scored
63.7/80Monthly downloads — 59,435 downloads/month across npm
0/20Registry dependents — not reported by this ecosystem
Inputs used
packages@govtechsg/oobee
dependents
ecosystemsnpm
total_downloads
monthly_downloads59,435
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

65Good · 23% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
8.3/22.5Commit distribution — top contributor authored 63% of commits
13.5/13.5Contributor breadth — 29 contributors
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Inputs used
bus_factor1
contributors_sampled29
top_contributor_share0.633
How it's scored
31.1/42Issue resolution — 74% of issues closed
25.6/30PR acceptance — 642/751 decided PRs merged
0/13Newcomer PR acceptance — no first-time contributor's PR decided in 30d
0/15OpenSSF Scorecard: Code-Review — Found 0/26 approved changesets -- score normalized to 0
Inputs used
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
Excluded from scoring (no data or not applicable): newcomer_pr_acceptance. Remaining weights renormalized.
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
17.9/25Owner reach — 312 followers of GovTechSG
25/25Track record — 171 public repos, account ~11 yr old
Inputs used
followers312
owner_typeOrganization
is_verified
owner_loginGovTechSG
public_repos171
account_age_days4,097

Package maintenance

100Exceptional
How it's scored
25/25Published & resolvable — 1 package(s) on npm
35/35Publish recency — latest publish 9 days ago
20/20Version history — 49 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packages@govtechsg/oobee
ecosystemsnpm
any_deprecatedno
min_days_since_publish9

Engineering Quality

Are baseline engineering and documentation practices in place?

58Moderate · 19% of overall
How it's scored
24/24CI workflows — 5 workflow(s)
24/24Tests present
16/16Linter config — eslint.config.js
0/9.6Pre-commit hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 17 merged PRs checked by a CI test -- score normalized to 0
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configno

Documentation

50Moderate
How it's scored
30/30README
0/25Documentation directory
0/15Documentation / homepage site
10/10Repository description
0/10Topics
10/10Wiki
Inputs used
topics
has_wikiyes
homepage
has_readmeyes
has_docs_dirno
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

64Moderate · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — no data
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.5License — 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
Inputs used
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate5.5
Excluded from scoring (no data or not applicable): branch_protection. Remaining weights renormalized.

Dependency advisories

100Exceptional
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
25/25Indirect dependencies free of known advisories — no indirect dependency carries a known advisory
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories0
affected_packages0
assessed_packages500
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
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.

AI Readiness

How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight (4%): agent tooling is a real maintenance signal, but a repository with none can still reach 100/100.

73Good · 4% of overall
How it's scored
45/45Agent instructions — AGENTS.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 69 of 82 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.841
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes40,971
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config — eslint.config.js
11/11Static type checking — examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json
10/10Reproducible environment — Dockerfile, lockfile
10/10Demonstrated agent practice — 48 of the last 100 commits agent-authored or agent-credited
8/8Automated maintenance — 7 of the last 100 commits are automated dependency updates
1/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
Inputs used
has_nixno
has_testsyes
lockfilespackage-lock.json
has_dockerfileyes
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configyes
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
How it's scored
27/45Type-checkable code — EJS with type-check config (examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json)
52.3/55Manageable file sizes — 4/82 source files over 60KB
Inputs used
primary_languageEJS
largest_source_bytes1,456,005
source_files_sampled82
oversized_source_files4
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
0/20MCP server
40/40Runnable examples — examples
Inputs used
example_dirsexamples
has_mcp_signalno
api_schema_files

Key facts

164GitHub stars
29contributors
265commits, last 12 months
1days since last push
98releases
1bus factor
13open issues
npmpackage ecosystems

Data collection warnings

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

More detail

Star and fork history 0 ★ / 52 ⇿
0Stars
52Forks
96Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

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

Each point covers 6 days.

OpenSSF Scorecard 5.5 / 10
5.5aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-08-01 19:03 UTC

10Binary-Artifactsno binaries found in the repo
n/aBranch-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
Direct dependencies 39
RegistryPackageVersion constraintManifest
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
All dependencies 941

Full resolved dependency set from the GitHub dependency graph: 46 direct and 895 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

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

Installing npm:@govtechsg/oobee@0.11.3 pulls in 500 packages, direct and transitive: 0 carry known advisories, of which 0 are direct dependencies.

No known advisories affect the assessed dependencies.

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "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"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v2.5.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsnpm.