Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-27 04:59 UTC

nhsuk / nhsuk-prototype-kit-package

Rapidly create HTML prototypes of NHS services

JavaScriptMIT★ 2 Sterne⑂ 3 Forksseit Okt. 2025Auf GitHub ansehen ↗

nhsuk/nhsuk-prototype-kit-package erreicht einen Gesundheitsindex von 69 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (93/100) ab, am schwächsten bei Community & Adoption (40/100). Zuletzt vor 5 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

69
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

69
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

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

Eigentümerschaft

NHS.UKOrganisation
203 Follower11 öffentliche Reposseit Apr. 2016

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

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlicht
npmnhsuk-prototype-kit8.3.13.31326vor 6 Tagen

Metriken nach Kategorie

Vitalität

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

93Exzellent · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 5 Tagen
23.5/36Commit-Rhythmus — 34/52 Wochen mit Commits
18/18Commit-Volumen — 285 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year285
human_commit_share0,39
days_since_last_push5
active_weeks_last_year34

Release-Disziplin

100Exzellent
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 25 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 6 Tagen
27/27Release-Rhythmus — ein Release etwa alle 18,6 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count25
latest_release_tagv8.3.1
releases_from_tagsnein
days_since_latest_release6
mean_days_between_releases18,6
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

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

40Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
0/60Stars — 2 Stars
2.5/25Forks — 3 Forks
0/15Watcher — 2 Watcher
Verwendete Eingangsdaten
forks3
stars2
watchers2
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
18/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingja
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein
Wie die Bewertung erfolgt
46.9/80Downloads pro Monat — 3.313 Downloads/Monat über npm
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packagesnhsuk-prototype-kit
dependents
ecosystemsnpm
total_downloads
monthly_downloads3.313
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

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

63Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
5.9/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 74 % der Commits
4.1/13.5Breite der Beitragenden — 3 Beitragende
6/10OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6
Verwendete Eingangsdaten
bus_factor1
contributors_sampled3
top_contributor_share0,74
Wie die Bewertung erfolgt
32.3/46.8Issue-Lösungsquote — 69 % der Issues geschlossen
35.5/38.3PR-Annahme — 283/305 entschiedene PRs gemergt
7.5/15OpenSSF Scorecard: Code-Review — Found 4/7 approved changesets -- score normalized to 5
Verwendete Eingangsdaten
merged_prs283
open_issues18
closed_issues40
issue_closed_ratio0,69
closed_unmerged_prs22
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
16.6/25Reichweite des Inhabers — 203 Follower von nhsuk
19.9/25Kontohistorie — 11 öffentliche Repos, Kontoalter ca. 10 Jahre
Verwendete Eingangsdaten
followers203
owner_typeOrganization
is_verified
owner_loginnhsuk
public_repos11
account_age_days3.744

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf npm
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 6 Tagen
20/20Versionshistorie — 26 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesnhsuk-prototype-kit
ecosystemsnpm
any_deprecatednein
min_days_since_publish6

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

82Gut · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 3 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration — eslint.config.js
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — http://prototype-kit.service-manual.nhs.uk
10/10Repository-Beschreibung
0/10Topics
0/10Wiki
Verwendete Eingangsdaten
topics
has_wikinein
homepagehttp://prototype-kit.service-manual.nhs.uk
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

63Mittel · 16 % des Gesamtindex
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
3.8/7.5Code-Review — Found 4/7 approved changesets -- score normalized to 5
1.5/2.5Contributors — project has 2 contributing companies or organizations -- score normalized to 6
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
7.5/7.5Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
1.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
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 — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 13 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate5,8
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): signed_releases. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
8.4/25Indirekte Abhängigkeiten ohne bekannte Advisories — 2 betroffen: brace-expansion 1.1.16 (high 7.5), immutable 3.8.3 (high 7.5)
40/40Keine offenen Advisories — kein Advisory ist länger als 90 Tage öffentlich
Verwendete Eingangsdaten
sourceosv
advisories3
affected_packages2
assessed_packages331
unassessed_packages0
affected_by_severityhigh 2
direct_affected_packages0
Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von npm:nhsuk-prototype-kit@8.3.1 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 331 Paketen. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

60Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 39 von 39 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share1
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration — eslint.config.js
11/11Statische Typprüfung — tsconfig.json
10/10Reproduzierbare Umgebung — lockfile
2/10Belegte Agentenpraxis — 1 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
8/8Automatisierte Wartung — 61 der letzten 100 Commits sind automatisierte Abhängigkeits-Updates
3/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilespackage-lock.json
has_dockerfilenein
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_configja
typecheck_configstsconfig.json
agent_commit_share0,01
toolchain_manifests
dependency_bot_commit_share0,61
Wie die Bewertung erfolgt
27/45Typprüfbarer Code — JavaScript mit Typprüfungs-Konfiguration (tsconfig.json)
55/55Handhabbare Dateigrößen — 0/76 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageJavaScript
largest_source_bytes11.893
source_files_sampled76
oversized_source_files0

Eckdaten

2GitHub-Sterne
3Mitwirkende
285Commits, letzte 12 Monate
5Tage seit letztem Push
25Releases
1Bus-Faktor
18offene Issues
npmPaket-Ökosysteme

Warnungen zur Datenerhebung

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

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 3 ⇿
0Sterne
3Forks
21Releases

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

12233312025-102026-012026-05
Major 1Minor 2Patch 3
OpenSSF Scorecard 5.8 / 10
5.8Gesamtwert

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

10Binary-Artifactsno binaries found in the repo
3Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
5Code-ReviewFound 4/7 approved changesets -- score normalized to 5
6Contributorsproject has 2 contributing companies or organizations -- score normalized to 6
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
3Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 3
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities13 existing vulnerabilities detected
Direkte Abhängigkeiten 18
RegistryPaketVersionsvorgabeManifest
npm@inquirer/prompts^8.5.2package.json
npmbody-parser^2.3.0package.json
npmbrowser-sync^3.0.4package.json
npmcookie-parser^1.4.7package.json
npmesbuild^0.28.1package.json
npmesbuild-clean-plugin^2.0.0package.json
npmesbuild-sass-plugin^3.7.0package.json
npmexpress-flash^0.0.2package.json
npmexpress-session^1.19.0package.json
npmhttp-proxy-node16^1.0.6package.json
npmnodemon^3.1.14package.json
npmportscanner^2.2.0package.json
npmsass-embedded^1.100.0package.json
npmwait-on^9.0.10package.json
npmexpress^5.2.1testapp/package.json
npmnhsuk-frontend^10.5.2testapp/package.json
npmnhsuk-prototype-kit*testapp/package.json
npmnunjucks^3.2.4testapp/package.json
Alle Abhängigkeiten 589

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

RegistryPaketVersionBeziehung
npm@inquirer/prompts8.5.2direkt
npmbody-parser2.3.0direkt
npmbrowser-sync3.0.4direkt
npmcookie-parser1.4.7direkt
npmesbuild0.28.1direkt
npmesbuild-clean-plugin2.0.0direkt
npmesbuild-sass-plugin3.7.0direkt
npmexpress5.2.1direkt
npmexpress^5.2.1direkt
npmexpress-flash0.0.2direkt
npmexpress-session1.19.0direkt
npmhttp-proxy-node161.0.6direkt
npmnhsuk-frontend10.5.2direkt
npmnhsuk-frontend^10.5.2direkt
npmnhsuk-prototype-kit*direkt
npmnodemon3.1.14direkt
npmnunjucks3.2.4direkt
npmnunjucks^3.2.4direkt
npmportscanner2.2.0direkt
npmsass-embedded1.100.0direkt
npmwait-on9.0.10direkt
npm@babel/code-frame7.29.7indirekt
npm@babel/generator7.29.7indirekt
npm@babel/helper-globals7.29.7indirekt
npm@babel/helper-string-parser7.29.7indirekt
npm@babel/helper-validator-identifier7.29.7indirekt
npm@babel/parser7.29.7indirekt
npm@babel/template7.29.7indirekt
npm@babel/traverse7.29.7indirekt
npm@babel/types7.29.7indirekt
npm@bufbuild/protobuf2.11.0indirekt
npm@es-joy/jsdoccomment0.88.0indirekt
npm@es-joy/resolve.exports1.2.0indirekt
npm@esbuild/aix-ppc640.28.1indirekt
npm@esbuild/android-arm0.28.1indirekt
npm@esbuild/android-arm640.28.1indirekt
npm@esbuild/android-x640.28.1indirekt
npm@esbuild/darwin-arm640.28.1indirekt
npm@esbuild/darwin-x640.28.1indirekt
npm@esbuild/freebsd-arm640.28.1indirekt
npm@esbuild/freebsd-x640.28.1indirekt
npm@esbuild/linux-arm0.28.1indirekt
npm@esbuild/linux-arm640.28.1indirekt
npm@esbuild/linux-ia320.28.1indirekt
npm@esbuild/linux-loong640.28.1indirekt
npm@esbuild/linux-mips64el0.28.1indirekt
npm@esbuild/linux-ppc640.28.1indirekt
npm@esbuild/linux-riscv640.28.1indirekt
npm@esbuild/linux-s390x0.28.1indirekt
npm@esbuild/linux-x640.28.1indirekt
npm@esbuild/netbsd-arm640.28.1indirekt
npm@esbuild/netbsd-x640.28.1indirekt
npm@esbuild/openbsd-arm640.28.1indirekt
npm@esbuild/openbsd-x640.28.1indirekt
npm@esbuild/openharmony-arm640.28.1indirekt
npm@esbuild/sunos-x640.28.1indirekt
npm@esbuild/win32-arm640.28.1indirekt
npm@esbuild/win32-ia320.28.1indirekt
npm@esbuild/win32-x640.28.1indirekt
npm@eslint-community/eslint-utils4.9.1indirekt
npm@eslint-community/regexpp4.12.2indirekt
npm@eslint/config-array0.23.5indirekt
npm@eslint/config-helpers0.6.0indirekt
npm@eslint/core1.2.1indirekt
npm@eslint/js10.0.1indirekt
npm@eslint/markdown8.0.3indirekt
npm@eslint/object-schema3.0.5indirekt
npm@eslint/plugin-kit0.7.2indirekt
npm@hapi/address5.1.1indirekt
npm@hapi/formula3.0.2indirekt
npm@hapi/hoek11.0.7indirekt
npm@hapi/pinpoint2.0.1indirekt
npm@hapi/tlds1.1.6indirekt
npm@hapi/topo6.0.2indirekt
npm@humanfs/core0.19.1indirekt
npm@humanfs/node0.16.7indirekt
npm@humanwhocodes/module-importer1.0.1indirekt
npm@humanwhocodes/retry0.4.3indirekt
npm@inquirer/ansi2.0.7indirekt
npm@inquirer/checkbox5.2.1indirekt
npm@inquirer/confirm6.1.1indirekt
npm@inquirer/core11.2.1indirekt
npm@inquirer/editor5.2.2indirekt
npm@inquirer/expand5.1.1indirekt
npm@inquirer/external-editor3.0.3indirekt
npm@inquirer/figures2.0.7indirekt
npm@inquirer/input5.1.2indirekt
npm@inquirer/number4.1.1indirekt
npm@inquirer/password5.1.1indirekt
npm@inquirer/rawlist5.3.1indirekt
npm@inquirer/search4.2.1indirekt
npm@inquirer/select5.2.1indirekt
npm@inquirer/type4.0.7indirekt
npm@jridgewell/gen-mapping0.3.13indirekt
npm@jridgewell/resolve-uri3.1.2indirekt
npm@jridgewell/sourcemap-codec1.5.5indirekt
npm@jridgewell/trace-mapping0.3.31indirekt
npm@noble/hashes1.8.0indirekt
npm@nodelib/fs.scandir2.1.5indirekt
npm@nodelib/fs.stat2.0.5indirekt
npm@nodelib/fs.walk1.2.8indirekt
npm@paralleldrive/cuid22.3.1indirekt
npm@parcel/watcher2.5.4indirekt
npm@parcel/watcher-android-arm642.5.4indirekt
npm@parcel/watcher-darwin-arm642.5.4indirekt
npm@parcel/watcher-darwin-x642.5.4indirekt
npm@parcel/watcher-freebsd-x642.5.4indirekt
npm@parcel/watcher-linux-arm-glibc2.5.4indirekt
npm@parcel/watcher-linux-arm-musl2.5.4indirekt
npm@parcel/watcher-linux-arm64-glibc2.5.4indirekt
npm@parcel/watcher-linux-arm64-musl2.5.4indirekt
npm@parcel/watcher-linux-x64-glibc2.5.4indirekt
npm@parcel/watcher-linux-x64-musl2.5.4indirekt
npm@parcel/watcher-win32-arm642.5.4indirekt
npm@parcel/watcher-win32-ia322.5.4indirekt
npm@parcel/watcher-win32-x642.5.4indirekt
npm@sindresorhus/base621.0.0indirekt
npm@sindresorhus/merge-streams2.3.0indirekt
npm@socket.io/component-emitter3.1.2indirekt
npm@standard-schema/spec1.1.0indirekt
npm@trivago/prettier-plugin-sort-imports6.0.2indirekt
npm@types/body-parser1.19.6indirekt
npm@types/browser-sync2.29.1indirekt
npm@types/connect3.4.38indirekt
npm@types/cookie-parser1.4.10indirekt
npm@types/cors2.8.19indirekt
npm@types/debug4.1.12indirekt
npm@types/esrecurse4.3.1indirekt
npm@types/estree1.0.9indirekt
npm@types/express5.0.6indirekt
npm@types/express-flash0.0.5indirekt
npm@types/express-serve-static-core5.1.1indirekt
npm@types/express-session1.19.0indirekt
npm@types/hast3.0.4indirekt
npm@types/http-errors2.0.5indirekt
npm@types/json-schema7.0.15indirekt
npm@types/katex0.16.8indirekt
npm@types/mdast4.0.4indirekt
npm@types/micromatch2.3.35indirekt
npm@types/ms2.1.0indirekt
npm@types/node25.0.3indirekt
npm@types/nunjucks3.2.6indirekt
npm@types/parse-glob3.0.32indirekt
npm@types/portscanner2.1.4indirekt
npm@types/qs6.14.0indirekt
npm@types/range-parser1.2.7indirekt
npm@types/send1.2.1indirekt
npm@types/serve-static2.2.0indirekt
npm@types/unist3.0.3indirekt
npm@types/wait-on5.3.4indirekt
npm@types/ws8.18.1indirekt
npm@typescript-eslint/eslint-plugin8.64.0indirekt
npm@typescript-eslint/parser8.64.0indirekt
npm@typescript-eslint/project-service8.64.0indirekt
npm@typescript-eslint/scope-manager8.64.0indirekt
npm@typescript-eslint/tsconfig-utils8.64.0indirekt
npm@typescript-eslint/type-utils8.64.0indirekt
npm@typescript-eslint/types8.64.0indirekt
npm@typescript-eslint/typescript-estree8.64.0indirekt
npm@typescript-eslint/utils8.64.0indirekt
npm@typescript-eslint/visitor-keys8.64.0indirekt
npma-sync-waterfall1.0.1indirekt
npmaccepts1.3.8indirekt
npmaccepts2.0.0indirekt
npmacorn8.16.0indirekt
npmacorn-jsx5.3.2indirekt
npmajv6.15.0indirekt
npmansi-regex5.0.1indirekt
npmansi-styles4.3.0indirekt
npmanymatch3.1.3indirekt
npmare-docs-informative0.0.2indirekt
npmasap2.0.6indirekt
npmasync2.6.4indirekt
npmasync-each-series0.1.1indirekt
npmasynckit0.4.0indirekt
npmaxios1.16.0indirekt
npmbalanced-match1.0.2indirekt
npmbalanced-match4.0.4indirekt
npmbase64id2.0.0indirekt
npmbatch0.6.1indirekt
npmbinary-extensions2.3.0indirekt
npmbrace-expansion1.1.16indirekt
npmbrace-expansion2.1.2indirekt
npmbrace-expansion5.0.7indirekt
npmbraces3.0.3indirekt
npmbrowser-sync-client3.0.4indirekt
npmbrowser-sync-ui3.0.4indirekt
npmbs-recipes1.3.4indirekt
npmbytes3.1.2indirekt
npmcall-bind-apply-helpers1.0.2indirekt
npmcall-bound1.0.4indirekt
npmccount2.0.1indirekt
npmchalk4.1.2indirekt
npmcharacter-entities2.0.2indirekt
npmchardet2.1.1indirekt
npmchokidar3.6.0indirekt
npmchokidar5.0.0indirekt
npmcli-width4.1.0indirekt
npmcliui8.0.1indirekt
npmcolor-convert2.0.1indirekt
npmcolor-name1.1.4indirekt
npmcolorjs.io0.5.2indirekt
npmcombined-stream1.0.8indirekt
npmcommander2.20.3indirekt
npmcommander5.1.0indirekt
npmcommander8.3.0indirekt
npmcomment-parser1.4.7indirekt
npmcomponent-emitter1.3.1indirekt
npmconcat-map0.0.1indirekt
npmconnect3.6.6indirekt
npmconnect-flash0.1.1indirekt
npmconnect-history-api-fallback1.6.0indirekt
npmcontent-disposition1.0.1indirekt
npmcontent-type1.0.5indirekt
npmcontent-type2.0.0indirekt
npmcookie0.7.2indirekt
npmcookie-signature1.0.6indirekt
npmcookie-signature1.0.7indirekt
npmcookie-signature1.2.2indirekt
npmcookiejar2.1.4indirekt
npmcors2.8.5indirekt
npmcross-spawn7.0.6indirekt
npmdebug2.6.9indirekt
npmdebug4.3.7indirekt
npmdebug4.4.3indirekt
npmdecode-named-character-reference1.2.0indirekt
npmdeep-is0.1.4indirekt
npmdel8.0.1indirekt
npmdelayed-stream1.0.0indirekt
npmdepd1.1.2indirekt
npmdepd2.0.0indirekt
npmdequal2.0.3indirekt
npmdestroy1.2.0indirekt
npmdetect-libc2.1.2indirekt
npmdev-ip1.0.1indirekt
npmdevlop1.1.0indirekt
npmdezalgo1.0.4indirekt
npmdunder-proto1.0.1indirekt
npmeasy-extender2.3.4indirekt
npmeazy-logger4.1.0indirekt
npmee-first1.1.1indirekt
npmemoji-regex8.0.0indirekt
npmencodeurl1.0.2indirekt
npmencodeurl2.0.0indirekt
npmengine.io6.6.9indirekt
npmengine.io-client6.6.6indirekt
npmengine.io-parser5.2.3indirekt
npmenhanced-resolve5.18.4indirekt
npmes-define-property1.0.1indirekt
npmes-errors1.3.0indirekt
npmes-object-atoms1.1.1indirekt
npmes-set-tostringtag2.1.0indirekt
npmescalade3.2.0indirekt
npmescape-html1.0.3indirekt
npmescape-string-regexp4.0.0indirekt
npmescape-string-regexp5.0.0indirekt
npmeslint10.7.0indirekt
npmeslint-compat-utils0.5.1indirekt
npmeslint-config-prettier10.1.8indirekt
npmeslint-plugin-es-x10.0.0indirekt
npmeslint-plugin-es-x7.8.0indirekt
npmeslint-plugin-jsdoc63.0.13indirekt
npmeslint-plugin-n18.2.2indirekt
npmeslint-plugin-node-import1.2.0indirekt
npmeslint-plugin-promise7.3.0indirekt
npmeslint-scope9.1.2indirekt
npmeslint-type-tracer0.5.2indirekt
npmeslint-visitor-keys3.4.3indirekt
npmeslint-visitor-keys5.0.1indirekt
npmespree11.2.0indirekt
npmesquery1.7.0indirekt
npmesrecurse4.3.0indirekt
npmestraverse5.3.0indirekt
npmesutils2.0.3indirekt
npmetag1.8.1indirekt
npmeventemitter34.0.7indirekt
npmfast-deep-equal3.1.3indirekt
npmfast-glob3.3.3indirekt
npmfast-json-stable-stringify2.1.0indirekt
npmfast-levenshtein2.0.6indirekt
npmfast-safe-stringify2.1.1indirekt
npmfast-string-truncated-width3.0.3indirekt
npmfast-string-width3.0.2indirekt
npmfast-wrap-ansi0.2.2indirekt
npmfastq1.20.1indirekt
npmfault2.0.1indirekt
npmfdir6.5.0indirekt
npmfile-entry-cache8.0.0indirekt
npmfill-range7.1.1indirekt
npmfinalhandler1.1.0indirekt
npmfinalhandler2.1.1indirekt
npmfind-up5.0.0indirekt
npmflat-cache4.0.1indirekt
npmflatted3.4.2indirekt
npmfollow-redirects1.16.0indirekt
npmform-data4.0.6indirekt
npmformat0.2.2indirekt
npmformidable3.5.4indirekt
npmforwarded0.2.0indirekt
npmfresh0.5.2indirekt
npmfresh2.0.0indirekt
npmfs-extra3.0.1indirekt
npmfsevents2.3.3indirekt
npmfunction-bind1.1.2indirekt
npmget-caller-file2.0.5indirekt
npmget-intrinsic1.3.0indirekt
npmget-proto1.0.1indirekt
npmget-tsconfig4.13.0indirekt
npmgithub-slugger2.0.0indirekt
npmglob-parent5.1.2indirekt
npmglob-parent6.0.2indirekt
npmglobals15.15.0indirekt
npmglobals17.7.0indirekt
npmglobby14.1.0indirekt
npmglobrex0.1.2indirekt
npmgopd1.2.0indirekt
npmgraceful-fs4.2.11indirekt
npmhas-flag3.0.0indirekt
npmhas-flag4.0.0indirekt
npmhas-symbols1.1.0indirekt
npmhas-tostringtag1.0.2indirekt
npmhasown2.0.4indirekt
npmhtml-entities2.6.0indirekt
npmhttp-errors1.6.3indirekt
npmhttp-errors2.0.1indirekt
npmhttp-proxy1.18.1indirekt
npmiconv-lite0.4.24indirekt
npmiconv-lite0.7.2indirekt
npmignore5.3.2indirekt
npmignore7.0.5indirekt
npmignore7.0.6indirekt
npmignore-by-default1.0.1indirekt
npmimmutable3.8.3indirekt
npmimmutable5.1.5indirekt
npmimurmurhash0.1.4indirekt
npminherits2.0.3indirekt
npminherits2.0.4indirekt
npmipaddr.js1.9.1indirekt
npmis-binary-path2.1.0indirekt
npmis-core-module2.16.1indirekt
npmis-extglob2.1.1indirekt
npmis-fullwidth-code-point3.0.0indirekt
npmis-glob4.0.3indirekt
npmis-number7.0.0indirekt
npmis-number-like1.0.8indirekt
npmis-path-cwd3.0.0indirekt
npmis-path-inside4.0.0indirekt
npmis-promise4.0.0indirekt
npmis-wsl1.1.0indirekt
npmisexe2.0.0indirekt
npmjavascript-natural-sort0.7.1indirekt
npmjoi18.2.1indirekt
npmjs-tokens4.0.0indirekt
npmjsdoc-type-pratt-parser7.2.0indirekt
npmjsesc3.1.0indirekt
npmjson-buffer3.0.1indirekt
npmjson-schema-traverse0.4.1indirekt
npmjson-stable-stringify-without-jsonify1.0.1indirekt
npmjsonfile3.0.1indirekt
npmkatex0.16.45indirekt
npmkeyv4.5.4indirekt
npmlevn0.4.1indirekt
npmlimiter1.1.5indirekt
npmlocate-path6.0.0indirekt
npmlodash4.18.1indirekt
npmlodash-es4.18.1indirekt
npmlodash.isfinite3.3.2indirekt
npmlongest-streak3.1.0indirekt
npmmarkdown-table3.0.4indirekt
npmmath-intrinsics1.1.0indirekt
npmmdast-util-find-and-replace3.0.2indirekt
npmmdast-util-from-markdown2.0.2indirekt
npmmdast-util-frontmatter2.0.1indirekt
npmmdast-util-gfm3.1.0indirekt
npmmdast-util-gfm-autolink-literal2.0.1indirekt
npmmdast-util-gfm-footnote2.1.0indirekt
npmmdast-util-gfm-strikethrough2.0.0indirekt
npmmdast-util-gfm-table2.0.0indirekt
npmmdast-util-gfm-task-list-item2.0.0indirekt
npmmdast-util-math3.0.0indirekt
npmmdast-util-phrasing4.1.0indirekt
npmmdast-util-to-markdown2.1.2indirekt
npmmdast-util-to-string4.0.0indirekt
npmmedia-typer1.1.0indirekt
npmmerge-descriptors2.0.0indirekt
npmmerge21.4.1indirekt
npmmethods1.1.2indirekt
npmmicromark4.0.2indirekt
npmmicromark-core-commonmark2.0.3indirekt
npmmicromark-extension-frontmatter2.0.0indirekt
npmmicromark-extension-gfm3.0.0indirekt
npmmicromark-extension-gfm-autolink-literal2.1.0indirekt
npmmicromark-extension-gfm-footnote2.1.0indirekt
npmmicromark-extension-gfm-strikethrough2.1.0indirekt
npmmicromark-extension-gfm-table2.1.1indirekt
npmmicromark-extension-gfm-tagfilter2.0.0indirekt
npmmicromark-extension-gfm-task-list-item2.1.0indirekt
npmmicromark-extension-math3.1.0indirekt
npmmicromark-factory-destination2.0.1indirekt
npmmicromark-factory-label2.0.1indirekt
npmmicromark-factory-space2.0.1indirekt
npmmicromark-factory-title2.0.1indirekt
npmmicromark-factory-whitespace2.0.1indirekt
npmmicromark-util-character2.1.1indirekt
npmmicromark-util-chunked2.0.1indirekt
npmmicromark-util-classify-character2.0.1indirekt
npmmicromark-util-combine-extensions2.0.1indirekt
npmmicromark-util-decode-numeric-character-reference2.0.2indirekt
npmmicromark-util-decode-string2.0.1indirekt
npmmicromark-util-encode2.0.1indirekt
npmmicromark-util-html-tag-name2.0.1indirekt
npmmicromark-util-normalize-identifier2.0.1indirekt
npmmicromark-util-resolve-all2.0.1indirekt
npmmicromark-util-sanitize-uri2.0.1indirekt
npmmicromark-util-subtokenize2.1.0indirekt
npmmicromark-util-symbol2.0.1indirekt
npmmicromark-util-types2.0.2indirekt
npmmicromatch4.0.8indirekt
npmmime1.6.0indirekt
npmmime2.6.0indirekt
npmmime-db1.52.0indirekt
npmmime-db1.54.0indirekt
npmmime-types2.1.35indirekt
npmmime-types3.0.2indirekt
npmminimatch10.2.4indirekt
npmminimatch10.2.5indirekt
npmminimatch3.1.5indirekt
npmminimatch9.0.9indirekt
npmminimist1.2.8indirekt
npmmitt1.2.0indirekt
npmms2.0.0indirekt
npmms2.1.3indirekt
npmmute-stream3.0.0indirekt
npmnatural-compare1.4.0indirekt
npmnegotiator0.6.3indirekt
npmnegotiator1.0.0indirekt
npmnode-addon-api7.1.1indirekt
npmnormalize-path3.0.0indirekt
npmobject-assign4.1.1indirekt
npmobject-deep-merge2.0.1indirekt
npmobject-inspect1.13.4indirekt
npmon-finished2.3.0indirekt
npmon-finished2.4.1indirekt
npmon-headers1.1.0indirekt
npmonce1.4.0indirekt
npmopn5.3.0indirekt
npmoptionator0.9.4indirekt
npmp-limit3.1.0indirekt
npmp-locate5.0.0indirekt
npmp-map7.0.4indirekt
npmparse-imports-exports0.2.4indirekt
npmparse-statements1.0.11indirekt
npmparseurl1.3.3indirekt
npmpath-exists4.0.0indirekt
npmpath-key3.1.1indirekt
npmpath-parse1.0.7indirekt
npmpath-to-regexp8.4.2indirekt
npmpath-type6.0.0indirekt
npmpicocolors1.1.1indirekt
npmpicomatch2.3.2indirekt
npmpicomatch4.0.4indirekt
npmpicomatch4.0.5indirekt
npmprelude-ls1.2.1indirekt
npmpresentable-error0.0.1indirekt
npmprettier3.9.5indirekt
npmproxy-addr2.0.7indirekt
npmproxy-from-env2.1.0indirekt
npmpstree.remy1.1.8indirekt
npmpunycode2.3.1indirekt
npmqs6.15.2indirekt
npmqueue-microtask1.2.3indirekt
npmrandom-bytes1.0.0indirekt
npmrange-parser1.2.1indirekt
npmraw-body2.5.3indirekt
npmraw-body3.0.2indirekt
npmreaddirp3.6.0indirekt
npmreaddirp5.0.0indirekt
npmrequire-directory2.1.1indirekt
npmrequires-port1.0.0indirekt
npmreserved-identifiers1.2.0indirekt
npmresolve1.22.11indirekt
npmresolve-pkg-maps1.0.0indirekt
npmresp-modifier6.0.2indirekt
npmreusify1.1.0indirekt
npmrouter2.2.0indirekt
npmrun-parallel1.2.0indirekt
npmrx4.1.0indirekt
npmrxjs7.8.2indirekt
npmsafe-buffer5.2.1indirekt
npmsafer-buffer2.1.2indirekt
npmsass1.100.0indirekt
npmsass-embedded-all-unknown1.100.0indirekt
npmsass-embedded-android-arm1.100.0indirekt
npmsass-embedded-android-arm641.100.0indirekt
npmsass-embedded-android-riscv641.100.0indirekt
npmsass-embedded-android-x641.100.0indirekt
npmsass-embedded-darwin-arm641.100.0indirekt
npmsass-embedded-darwin-x641.100.0indirekt
npmsass-embedded-linux-arm1.100.0indirekt
npmsass-embedded-linux-arm641.100.0indirekt
npmsass-embedded-linux-musl-arm1.100.0indirekt
npmsass-embedded-linux-musl-arm641.100.0indirekt
npmsass-embedded-linux-musl-riscv641.100.0indirekt
npmsass-embedded-linux-musl-x641.100.0indirekt
npmsass-embedded-linux-riscv641.100.0indirekt
npmsass-embedded-linux-x641.100.0indirekt
npmsass-embedded-unknown-all1.100.0indirekt
npmsass-embedded-win32-arm641.100.0indirekt
npmsass-embedded-win32-x641.100.0indirekt
npmsemver7.8.5indirekt
npmsend0.19.2indirekt
npmsend1.2.1indirekt
npmserve-index1.9.1indirekt
npmserve-static1.16.3indirekt
npmserve-static2.2.1indirekt
npmserver-destroy1.0.1indirekt
npmsetprototypeof1.1.0indirekt
npmsetprototypeof1.2.0indirekt
npmshebang-command2.0.0indirekt
npmshebang-regex3.0.0indirekt
npmside-channel1.1.0indirekt
npmside-channel-list1.0.0indirekt
npmside-channel-map1.0.1indirekt
npmside-channel-weakmap1.0.2indirekt
npmsignal-exit4.1.0indirekt
npmsimple-update-notifier2.0.0indirekt
npmslash5.1.0indirekt
npmsocket.io4.8.1indirekt
npmsocket.io-adapter2.5.8indirekt
npmsocket.io-client4.8.1indirekt
npmsocket.io-parser4.2.6indirekt
npmsource-map-js1.2.1indirekt
npmspdx-exceptions2.5.0indirekt
npmspdx-expression-parse4.0.0indirekt
npmspdx-license-ids3.0.22indirekt
npmstatuses1.3.1indirekt
npmstatuses1.5.0indirekt
npmstatuses2.0.2indirekt
npmstream-throttle0.1.3indirekt
npmstring-width4.2.3indirekt
npmstrip-ansi6.0.1indirekt
npmsuperagent10.3.0indirekt
npmsupertest7.2.2indirekt
npmsupports-color5.5.0indirekt
npmsupports-color7.2.0indirekt
npmsupports-color8.1.1indirekt
npmsupports-preserve-symlinks-flag1.0.0indirekt
npmsync-child-process1.0.2indirekt
npmsync-message-port1.1.3indirekt
npmtapable2.3.0indirekt
npmtinyglobby0.2.17indirekt
npmto-regex-range5.0.1indirekt
npmto-valid-identifier1.0.0indirekt
npmtoidentifier1.0.1indirekt
npmtouch3.1.1indirekt
npmts-api-utils2.5.0indirekt
npmtslib2.8.1indirekt
npmtype-check0.4.0indirekt
npmtype-is2.1.0indirekt
npmtyped-query-selector2.12.2indirekt
npmtypescript6.0.3indirekt
npmtypescript-eslint8.64.0indirekt
npmua-parser-js1.0.41indirekt
npmuid-safe2.1.5indirekt
npmundefsafe2.0.5indirekt
npmundici-types7.16.0indirekt
npmunicorn-magic0.3.0indirekt
npmunist-util-is6.0.1indirekt
npmunist-util-remove-position5.0.0indirekt
npmunist-util-stringify-position4.0.0indirekt
npmunist-util-visit5.0.0indirekt
npmunist-util-visit-parents6.0.2indirekt
npmuniversalify0.1.2indirekt
npmunpipe1.0.0indirekt
npmuri-js4.4.1indirekt
npmutils-merge1.0.1indirekt
npmvarint6.0.0indirekt
npmvary1.1.2indirekt
npmwhich2.0.2indirekt
npmword-wrap1.2.5indirekt
npmwrap-ansi7.0.0indirekt
npmwrappy1.0.2indirekt
npmws8.21.1indirekt
npmxmlhttprequest-ssl2.1.2indirekt
npmy18n5.0.8indirekt
npmyargs17.7.2indirekt
npmyargs-parser21.1.1indirekt
npmyocto-queue0.1.0indirekt
npmzwitch2.0.4indirekt
Abhängigkeits-Advisories 2

Die Installation von npm:nhsuk-prototype-kit@8.3.1 zieht 331 Pakete nach sich, direkt und transitiv: 2 tragen bekannte Advisories, davon 0 direkte Abhängigkeiten.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
brace-expansion1.1.16indirekthoch15.0.8
immutable3.8.3indirekthoch25.1.8

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

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 1726,
      "has_wiki": false,
      "homepage": "http://prototype-kit.service-manual.nhs.uk",
      "languages": {
        "HTML": 10096,
        "SCSS": 256,
        "Nunjucks": 1555,
        "JavaScript": 130295
      },
      "pushed_at": "2026-07-21T16:32:51Z",
      "created_at": "2025-10-20T10:28:16Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-21T16:35:35Z",
      "description": "Rapidly create HTML prototypes of NHS services",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript"
      ]
    },
    "owner": {
      "blog": "https://www.nhs.uk",
      "name": "NHS.UK",
      "type": "Organization",
      "login": "nhsuk",
      "company": null,
      "location": "United Kingdom",
      "followers": 203,
      "avatar_url": "https://avatars.githubusercontent.com/u/18658529?v=4",
      "created_at": "2016-04-25T11:08:55Z",
      "is_verified": null,
      "public_repos": 11,
      "account_age_days": 3744
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v8.3.1",
          "kind": "patch",
          "published_at": "2026-07-20T16:10:55Z"
        },
        {
          "tag": "v8.3.0",
          "kind": "minor",
          "published_at": "2026-06-04T11:43:53Z"
        },
        {
          "tag": "v8.2.3",
          "kind": "patch",
          "published_at": "2026-05-08T07:49:01Z"
        },
        {
          "tag": "v8.2.2",
          "kind": "patch",
          "published_at": "2026-05-07T16:34:14Z"
        },
        {
          "tag": "v8.2.1",
          "kind": "patch",
          "published_at": "2026-05-05T18:52:13Z"
        },
        {
          "tag": "v8.2.0",
          "kind": "minor",
          "published_at": "2026-04-14T11:47:36Z"
        },
        {
          "tag": "v8.1.0",
          "kind": "minor",
          "published_at": "2026-03-18T16:45:30Z"
        },
        {
          "tag": "v8.0.2",
          "kind": "patch",
          "published_at": "2026-02-23T16:45:46Z"
        },
        {
          "tag": "v8.0.1",
          "kind": "patch",
          "published_at": "2026-02-06T13:08:56Z"
        },
        {
          "tag": "v8.0.0",
          "kind": "major",
          "published_at": "2026-02-03T13:02:03Z"
        },
        {
          "tag": "v8.0.0-beta.10",
          "kind": "prerelease",
          "published_at": "2026-02-02T11:54:12Z"
        },
        {
          "tag": "v8.0.0-beta.9",
          "kind": "prerelease",
          "published_at": "2026-01-29T12:20:48Z"
        },
        {
          "tag": "v8.0.0-beta.8",
          "kind": "prerelease",
          "published_at": "2026-01-28T15:34:17Z"
        },
        {
          "tag": "v8.0.0-beta.7",
          "kind": "prerelease",
          "published_at": "2026-01-23T12:19:53Z"
        },
        {
          "tag": "v8.0.0-beta.6",
          "kind": "prerelease",
          "published_at": "2026-01-15T10:19:12Z"
        },
        {
          "tag": "v8.0.0-beta.5",
          "kind": "prerelease",
          "published_at": "2026-01-09T16:15:37Z"
        },
        {
          "tag": "v8.0.0-beta.4",
          "kind": "prerelease",
          "published_at": "2025-12-22T15:26:18Z"
        },
        {
          "tag": "v8.0.0-beta.3",
          "kind": "prerelease",
          "published_at": "2025-12-22T15:02:21Z"
        },
        {
          "tag": "v8.0.0-beta.2",
          "kind": "prerelease",
          "published_at": "2025-12-22T13:39:52Z"
        },
        {
          "tag": "v8.0.0-beta.1",
          "kind": "prerelease",
          "published_at": "2025-12-16T13:28:36Z"
        },
        {
          "tag": "v8.0.0-internal.5",
          "kind": "prerelease",
          "published_at": "2025-12-12T22:37:49Z"
        },
        {
          "tag": "v8.0.0-internal.4",
          "kind": "prerelease",
          "published_at": "2025-11-29T23:29:50Z"
        },
        {
          "tag": "v8.0.0-internal.3",
          "kind": "prerelease",
          "published_at": "2025-11-21T18:11:39Z"
        },
        {
          "tag": "v8.0.0-internal.2",
          "kind": "prerelease",
          "published_at": "2025-11-17T22:12:22Z"
        },
        {
          "tag": "v8.0.0-internal.1",
          "kind": "prerelease",
          "published_at": "2025-11-11T23:11:34Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "58a446fcab64640d1c8ba1772e98217b359105ed",
          "body": "Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion)\nfrom 1.1.14 to 1.1.16.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/juliangruber/brace-expansion/releases\">brace-expansion's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v1.1.15</h2>\n<ul\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 brace-expansion from 1.1.14 to 1.1.16 (#368)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T16:32:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e0a3bd9c3dbbeea2030cde3f64919db54e392089",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0\nto 7.0.1.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/actions/checkout/releases\">actions/checkout's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v7.0.1</h2>\n<h2>What's Changed</h2>\n<ul>\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\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 actions/checkout from 7.0.0 to 7.0.1 (#365)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T08:57:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "44ffad05637cf85336c8c85f96113cf0b1b3d493",
          "body": "Bumps the lint group with 2 updates:\n[eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n)\nand\n[typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).\n\nUpdates `eslint-plugin-n` from 18.2.1 to 18.2.2\n<details>\n<summary>Releas\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 the lint group with 2 updates (#367)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-21T08:57:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c66ff025159e80b94df26dfa13589cdb90171162",
          "body": "Dependency updates and security fixes.",
          "is_bot": false,
          "headline": "Release 8.3.1 (#363)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-07-20T16:09:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c2d7166339cc220cfdf4eadfb51473e453c4b3f",
          "body": "Fixes some security issues.",
          "is_bot": false,
          "headline": "Update dependency (#362)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-07-20T16:00:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db26176f29b3d2beab6defc057250e811cced384",
          "body": "Bumps the lint group with 4 updates:\n[eslint-plugin-es-x](https://github.com/eslint-community/eslint-plugin-es-x),\n[eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc),\n[prettier](https://github.com/prettier/prettier) and\n[typescript-eslint](https://github.com/typescript-eslint/typesc\n[…]\ns>\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Colin Rotherham <work@colinr.com>",
          "is_bot": true,
          "headline": "Bump the lint group with 4 updates (#360)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T15:53:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "55745e17c88a4b4a6e190ff7c77d137bd1fbdaf2",
          "body": "Bumps the lint group with 4 updates:\n[@eslint/markdown](https://github.com/eslint/markdown),\n[eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc),\n[prettier](https://github.com/prettier/prettier) and\n[typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 the lint group with 4 updates (#359)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-07T11:55:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1564e34b9c2317261f91d84592521e17a27580a2",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3\nto 7.0.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/actions/checkout/releases\">actions/checkout's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v7.0.0</h2>\n<h2>What's Changed</h2>\n<ul>\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\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 actions/checkout from 6.0.3 to 7.0.0 (#355)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-01T22:22:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "380447066df07a434db6fe493e787d6a5d72ca7f",
          "body": "Bumps the lint group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n|\n[eslint-plugin-es-x](https://github.com/eslint-community/eslint-plugin-es-x)\n| `9.6.0` | `9.7.0` |\n| [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) |\n`63.0.2` | `63.0.9` |\n| [e\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 the lint group across 1 directory with 5 updates (#358)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-30T09:25:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "40d8b9239b7871c68235ef618c51169c7d93bbfb",
          "body": "Bumps the application group with 1 update:\n[body-parser](https://github.com/expressjs/body-parser).\n\nUpdates `body-parser` from 2.2.2 to 2.3.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/expressjs/body-parser/releases\">body-parser's\nreleases</a>.</em></\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 body-parser from 2.2.2 to 2.3.0 in the application group (#356)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-23T15:08:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b8eb851cbb3a9cbaad07d271f3897e28cd67b932",
          "body": "Bumps [form-data](https://github.com/form-data/form-data) from 4.0.5 to\n4.0.6.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/form-data/form-data/blob/master/CHANGELOG.md\">form-data's\nchangelog</a>.</em></p>\n<blockquote>\n<h2><a\nhref=\"https://github.com/form-da\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 form-data from 4.0.5 to 4.0.6 (#352)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-17T11:28:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "023c58af61fb9beb5ea6b3c75e35351fe8a360b6",
          "body": "Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.1 to 4.2.0.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md\">js-yaml's\nchangelog</a>.</em></p>\n<blockquote>\n<h2>[4.2.0] - 2026-06-01</h2>\n<h3>Added</h3>\n<ul>\n<li\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 js-yaml from 4.1.1 to 4.2.0 (#353)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-17T11:27:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0b5a4bc1531754444525b8e83707cf1bef571cf2",
          "body": "Bumps the lint group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n|\n[eslint-import-resolver-typescript](https://github.com/import-js/eslint-import-resolver-typescript)\n| `4.4.4` | `4.4.5` |\n| [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) |\n`63\n[…]\nypescript-eslint\">compare\nview</a></li>\n</ul>\n</details>\n<br />\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 the lint group across 1 directory with 5 updates (#350)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-17T11:27:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a0fa0dd7bad580a07f216508d238848619e224da",
          "body": "…351)\n\nBumps the application group with 1 update:\n[nhsuk-frontend](https://github.com/nhsuk/nhsuk-frontend).\n\nUpdates `nhsuk-frontend` from 10.5.1 to 10.5.2\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/nhsuk/nhsuk-frontend/releases\">nhsuk-frontend's\nrele\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 nhsuk-frontend from 10.5.1 to 10.5.2 in the application group (#…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-16T12:25:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4f44bd22b78685bc0eedbec7636619b816a151df",
          "body": "Bumps the tools group with 1 update:\n[@inquirer/prompts](https://github.com/SBoudrias/Inquirer.js).\n\nUpdates `@inquirer/prompts` from 8.5.1 to 8.5.2\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/SBoudrias/Inquirer.js/releases\">@​inquirer/prompts's\nrelease\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 @inquirer/prompts from 8.5.1 to 8.5.2 in the tools group (#348)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T08:56:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3da8989619c501b17cb8f47664c5884f580f6b5f",
          "body": "Bumps [esbuild](https://github.com/evanw/esbuild) from 0.28.0 to 0.28.1.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/evanw/esbuild/releases\">esbuild's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v0.28.1</h2>\n<ul>\n<li>\n<p>Disallow <code>\\</code> in local dev\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 esbuild from 0.28.0 to 0.28.1 (#349)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T08:56:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5efc4e48ae03931423eeff45463cd14f5898ba96",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2\nto 6.0.3.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/actions/checkout/releases\">actions/checkout's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v6.0.3</h2>\n<h2>What's Changed</h2>\n<ul>\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\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 actions/checkout from 6.0.2 to 6.0.3 (#346)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-09T17:44:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a8ecf6d6139425c32a47bccdc0e8c1118828b141",
          "body": null,
          "is_bot": false,
          "headline": "Release 8.3.0 (#345)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-06-04T11:22:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bbba472a59cc15f6254b36f533e701c539630980",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to\n6.0.2.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/actions/checkout/releases\">actions/checkout's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v6.0.2</h2>\n<h2>What's Changed</h2>\n<ul>\n<li\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\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 actions/checkout from 6 to 6.0.2 (#342)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-04T11:01:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5b294221fded928b828438763ba1cfd1b9c3be0e",
          "body": "Bumps the tools group with 1 update:\n[@inquirer/prompts](https://github.com/SBoudrias/Inquirer.js).\n\nUpdates `@inquirer/prompts` from 8.4.3 to 8.5.1\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/SBoudrias/Inquirer.js/releases\">@​inquirer/prompts's\nrelease\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 @inquirer/prompts from 8.4.3 to 8.5.1 in the tools group (#343)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-04T11:01:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "71f6b62d9db70c70c4229ff5cbad11c7552fa6d2",
          "body": "Bumps [sass-embedded](https://github.com/sass/embedded-host-node) from\n1.99.0 to 1.100.0.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/sass/embedded-host-node/blob/main/CHANGELOG.md\">sass-embedded's\nchangelog</a>.</em></p>\n<blockquote>\n<h2>1.100.0</h2>\n<ul>\n\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\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 sass-embedded from 1.99.0 to 1.100.0 (#344)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-04T11:01:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d6d91e1c219cafd31db5e738a7d72e2899e731e8",
          "body": "Switching to the new `template-with-imports.njk` template from NHS\nfrontend 10.5.0 means we don’t have to import all the components\nourselves.\n\nThis also imports the new **Search input** component, and will import\nany future new components without needing a release of the NHS prototype\nkit.\n\n---------\n\nCo-authored-by: Colin Rotherham <work@colinr.com>",
          "is_bot": false,
          "headline": "Use NHS frontend 10.5.0 and new template with imports (#340)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-06-04T08:25:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27d161cffc2a71f33b097384818161fda0ae4c15",
          "body": "Bumps the lint group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n|\n[@eslint/compat](https://github.com/eslint/rewrite/tree/HEAD/packages/compat)\n| `2.0.5` | `2.1.0` |\n| [@eslint/markdown](https://github.com/eslint/markdown) | `8.0.1` |\n`8.0.2` |\n| [eslint-plugin-j\n[…]\n--\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Frankie Roberto <frankie@frankieroberto.com>",
          "is_bot": true,
          "headline": "Bump the lint group across 1 directory with 6 updates (#339)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-03T21:11:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "03cc52a7ea03cbc1d6b2eb606badce0c4654514a",
          "body": "This is the result of running `npm audit fix`.",
          "is_bot": false,
          "headline": "Dependency updates (#341)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-06-03T20:55:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d75057c7c43945808922eb529583f351200a231f",
          "body": "This PR moves the error message from `<pre>` back into regular HTML.\n\nI've also added the contact support message (copied from the 404 page).\n\nSee changes in\nhttps://github.com/nhsuk/nhsuk-prototype-kit-package/pull/326\n\n## Before\n\nThe error message HTML is rendered (escaped) in a code component:\n\n<\n[…]\nlt=\"Screenshot 2026-06-03 at 10 22 36\"\nsrc=\"https://github.com/user-attachments/assets/803ed2de-5c98-407a-a2d4-cf7635978101\"\n/>\n\n---------\n\nCo-authored-by: Frankie Roberto <frankie@frankieroberto.com>",
          "is_bot": false,
          "headline": "Fix error message rendering (#332)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-06-03T10:03:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "80068fb1dacaecc6242a63d878173b1b607fd08e",
          "body": "Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion)\nfrom 5.0.5 to 5.0.6.\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a\nhref=\"https://github.com/juliangruber/brace-expansion/commit/46317b5d8779c151d24f65c9c139cd076f91a1c3\"><code>46317b5</code></a>\n5.0.6</li>\n<li><a\nhref=\"https\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 brace-expansion from 5.0.5 to 5.0.6 (#335)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-01T15:55:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bfd75ab48cebb425df258c43b07e56d308f77587",
          "body": "Bumps the tools group with 1 update:\n[@inquirer/prompts](https://github.com/SBoudrias/Inquirer.js).\n\nUpdates `@inquirer/prompts` from 8.4.2 to 8.4.3\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/SBoudrias/Inquirer.js/releases\">@​inquirer/prompts's\nrelease\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 @inquirer/prompts from 8.4.2 to 8.4.3 in the tools group (#336)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-01T12:20:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "946fe34eb4f5252ae7f5c7b191f41fff1fcff75f",
          "body": "Bumps [wait-on](https://github.com/jeffbski/wait-on) from 9.0.5 to\n9.0.10.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/jeffbski/wait-on/releases\">wait-on's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v9.0.10</h2>\n<p>Cleaned up unnecessary files from npm pub\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\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 wait-on from 9.0.5 to 9.0.10 (#337)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-01T12:20:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ffe397687f253766295a4879b1312a3634d63d49",
          "body": "Bumps [qs](https://github.com/ljharb/qs) from 6.14.2 to 6.15.2.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/ljharb/qs/blob/main/CHANGELOG.md\">qs's\nchangelog</a>.</em></p>\n<blockquote>\n<h2><strong>6.15.2</strong></h2>\n<ul>\n<li>[Fix] <code>stringify</code>: s\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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.14.2 to 6.15.2 (#338)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-01T12:13:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e33afb881275ed8a64131c30239a73c237ca56e0",
          "body": null,
          "is_bot": false,
          "headline": "Update version number and changelog for release (#329)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-05-08T07:48:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e3e26bbe3d8f0150b8ba72978731deca7098718",
          "body": "This PR fixes a bug in the last release\n\nSince\n[v8.2.2](https://github.com/nhsuk/nhsuk-prototype-kit-package/releases/tag/v8.2.2)\nwe only render `*.html` and `*.njk` file types\n\nBut previously the [Nunjucks view engine for\nExpress](https://github.com/mozilla/nunjucks/blob/master/nunjucks/src/express\n[…]\nole\nFailed to lookup view engine \".ico\"\n```\n\n<img width=\"1052\" height=\"906\" alt=\"Error 500 requesting ico file\"\nsrc=\"https://github.com/user-attachments/assets/0f47da94-3047-4549-9968-ef7659dbc6d2\"\n/>",
          "is_bot": false,
          "headline": "Fix 404 handling for unknown file types (#328)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-05-08T07:13:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b2ee144d98c0f9b65954f18bc6bb99f82dd54eab",
          "body": null,
          "is_bot": false,
          "headline": "Update version number and changelog for release (#327)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-05-07T16:31:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cab7fe06f013768021c19af464c9addc2096e7bf",
          "body": "This PR replaces `<pre>` code blocks with the NHS.UK frontend code\ncomponent\n\n<br>\n\n<img width=\"2276\" height=\"2170\" alt=\"Error page with code component\"\nsrc=\"https://github.com/user-attachments/assets/c4bad01d-db0c-4d76-8f95-589922b1baa8\"\n/>",
          "is_bot": false,
          "headline": "Use code component on error page (#326)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-05-07T15:31:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "006fc99f07106ef1354c91d43fb8641ea4a55a9c",
          "body": "This PR proposes the standard way we avoid component clashes in NHS.UK\nfrontend\n\nIt might be why we've struggled to override components with the same\nname\n\n## Before\n\n```njk\n{%- from \"action-link/macro.njk\" import actionLink %}\n{%- from \"back-link/macro.njk\" import backLink %}\n```\n\n## After\n\n```njk\n{%- from \"nhsuk/components/action-link/macro.njk\" import actionLink %}\n{%- from \"nhsuk/components/back-link/macro.njk\" import backLink %}\n```",
          "is_bot": false,
          "headline": "Avoid NHS.UK frontend component conflicts (#325)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-05-07T15:18:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27082f58fac842e38545e64b8680697d8b7bf019",
          "body": "This PR moves the auto routing functionality to the Nunjucks renderer\n\nCloses https://github.com/nhsuk/nhsuk-prototype-kit-package/issues/256",
          "is_bot": false,
          "headline": "Fix custom routes to Nunjucks views (#260)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-05-07T13:45:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb3ae1ced18a8e0b04e92b98d7ae71e0ae12c1c7",
          "body": "Closes https://github.com/nhsuk/nhsuk-prototype-kit-package/issues/323",
          "is_bot": false,
          "headline": "Make sure internal views use admin layout (#324)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-05-07T07:31:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "59fcd2c4e2b0f5a5925616082c91920dc16a0820",
          "body": null,
          "is_bot": false,
          "headline": "Patch release with dependency updates and security fixes (#322)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-05-05T16:40:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d7496724ada434de49eac9fa9e3a5cd5164e1cf",
          "body": "…n (#321)\n\nThis PR adds a test to configure nunjucks search paths with custom\n`viewsPath` option",
          "is_bot": false,
          "headline": "Add test for Nunjucks search paths including custom `viewsPath` optio…",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-05-05T15:31:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "224f47c2fce603af2894e4fba768b6ed8101b0a1",
          "body": "Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.9.3\nto 6.0.3.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/microsoft/TypeScript/releases\">typescript's\nreleases</a>.</em></p>\n<blockquote>\n<h2>TypeScript 6.0.3</h2>\n<p>For release notes, \n[…]\n/v5.9.3...v6.0.3\">compare\nview</a></li>\n</ul>\n</details>\n<br />\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 typescript from 5.9.3 to 6.0.3 (#311)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-05T14:37:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "13ea1034b43f990c43923b345e2e7034160b653c",
          "body": "Bumps the lint group with 2 updates in the / directory:\n[eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise)\nand\n[typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).\n\nUpdates `eslint-plugin-promise` from 7.2.1\n[…]\nypescript-eslint\">compare\nview</a></li>\n</ul>\n</details>\n<br />\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 the lint group across 1 directory with 2 updates (#318)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-05T14:24:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6597d12de1f263a9fffcc1b625ddc7ee20c8c0f7",
          "body": "Bumps [axios](https://github.com/axios/axios) from 1.15.0 to 1.16.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/axios/axios/releases\">axios's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v1.16.0 — May 2, 2026</h2>\n<p>This release adds support for the QUERY \n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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.0 to 1.16.0 (#320)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-05T14:21:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4054f40beba4e718408cd161e0bf21000395605f",
          "body": "Bumps\n[@types/express-session](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/express-session)\nfrom 1.18.2 to 1.19.0.\n<details>\n<summary>Commits</summary>\n<ul>\n<li>See full diff in <a\nhref=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/express-session\">com\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\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 @types/express-session from 1.18.2 to 1.19.0 (#319)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-05T11:19:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7b1e14be389c77d25944c5df76e6f321a8769912",
          "body": "This helps people know how they can report potential vulnerabilities.",
          "is_bot": false,
          "headline": "Add a SECURITY.md (#314)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-05-01T07:02:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9eb40e8b164bcd4fffe50deaaaa9ed35b2bbc67",
          "body": "Bumps\n[typed-query-selector](https://github.com/g-plane/typed-query-selector)\nfrom 2.12.1 to 2.12.2.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/g-plane/typed-query-selector/blob/main/CHANGELOG.md\">typed-query-selector's\nchangelog</a>.</em></p>\n<blockquote>\n[…]\n2.12.1...v2.12.2\">compare\nview</a></li>\n</ul>\n</details>\n<br />\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 typed-query-selector from 2.12.1 to 2.12.2 (#317)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-29T15:38:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2b510157c1d29be2badb1f1dbba71fd38c37fbd3",
          "body": "Bumps [sass-embedded](https://github.com/sass/embedded-host-node) from\n1.98.0 to 1.99.0.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/sass/embedded-host-node/blob/main/CHANGELOG.md\">sass-embedded's\nchangelog</a>.</em></p>\n<blockquote>\n<h2>1.99.0</h2>\n<ul>\n<l\n[…]\n/1.98.0...1.99.0\">compare\nview</a></li>\n</ul>\n</details>\n<br />\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 sass-embedded from 1.98.0 to 1.99.0 (#312)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-29T15:36:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b8c50994cfd3dc31b3823b667669a5fa6235bf1c",
          "body": "Bumps the lint group with 1 update:\n[typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).\n\nUpdates `typescript-eslint` from 8.58.2 to 8.59.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/typescri\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 typescript-eslint from 8.58.2 to 8.59.0 in the lint group (#316)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-29T15:33:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0e12b887292b8f4d3b2f0afd28416ef063fe1044",
          "body": "…1 directory (#310)\n\nBumps the tools group with 1 update in the / directory:\n[@inquirer/prompts](https://github.com/SBoudrias/Inquirer.js).\n\nUpdates `@inquirer/prompts` from 8.3.2 to 8.4.2\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/SBoudrias/Inquirer.j\n[…]\ner/prompts@8.4.2\">compare\nview</a></li>\n</ul>\n</details>\n<br />\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 @inquirer/prompts from 8.3.2 to 8.4.2 in the tools group across …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-29T07:14:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a7560eb48c388828a8d4265ac54d5e7207d4cc17",
          "body": "Bumps [actions/setup-node](https://github.com/actions/setup-node) from\n6.3.0 to 6.4.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/actions/setup-node/releases\">actions/setup-node's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v6.4.0</h2>\n<h2>What's Changed</\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\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 actions/setup-node from 6.3.0 to 6.4.0 (#315)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-28T21:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b4626d323ca868bd3465d6c249c81d74c4adbc03",
          "body": "Bumps [wait-on](https://github.com/jeffbski/wait-on) from 9.0.4 to\n9.0.5.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/jeffbski/wait-on/releases\">wait-on's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v9.0.5</h2>\n<p>Update minor dependencies and npm audit fix\n[…]\n/v9.0.4...v9.0.5\">compare\nview</a></li>\n</ul>\n</details>\n<br />\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 wait-on from 9.0.4 to 9.0.5 (#313)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-21T13:37:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1efb4c84f07265329d851585ab6e5744237f989d",
          "body": "Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6\nto 6.3.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/actions/setup-node/releases\">actions/setup-node's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v6.3.0</h2>\n<h2>What's Changed</h2>\n\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\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 actions/setup-node from 6 to 6.3.0 (#308)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-21T08:58:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "37bf7e1135e3d6d9f33e01b1023e4344fa53140d",
          "body": "Bumps the lint group with 7 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n|\n[@eslint/compat](https://github.com/eslint/rewrite/tree/HEAD/packages/compat)\n| `2.0.3` | `2.0.5` |\n| [@eslint/markdown](https://github.com/eslint/markdown) | `7.5.1` |\n`8.0.1` |\n|\n[eslint-plugin-es-x](https://github\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 the lint group with 7 updates (#309)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-21T08:57:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "121545bc1d8d4196aac725ef81bd126f8d0fb970",
          "body": null,
          "is_bot": false,
          "headline": "Update version number and changelog for release (#306)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-04-14T11:42:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7cdf53695a61021538525429be7d6e3b39f9c9e7",
          "body": "This bumps the minimum NHS.UK frontend version to 10.4.\n\nThis allows us to use the new `width` param on the password page.\n\nAs this is a backwards-compatible change, there should be no impact on\nusers.",
          "is_bot": false,
          "headline": "Updates for nhsuk frontend 10.4 (#307)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-04-14T10:38:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "173649b36bbde6d201473ca710d6b4234cc018b3",
          "body": "Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion)\nfrom 1.1.12 to 1.1.14.\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a\nhref=\"https://github.com/juliangruber/brace-expansion/commit/10c05fcf3699b1a29ef5e611c011af3d3c97e6e3\"><code>10c05fc</code></a>\n1.1.14</li>\n<li><a\nhref=\"ht\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 brace-expansion from 1.1.12 to 1.1.14 (#305)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-14T10:19:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "559491bdac6844e512d4613fb63e715e91a14762",
          "body": "Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from\n8.3.0 to 8.4.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/pillarjs/path-to-regexp/releases\">path-to-regexp's\nreleases</a>.</em></p>\n<blockquote>\n<h2>8.4.0</h2>\n<p><strong>Importan\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 path-to-regexp from 8.3.0 to 8.4.0 (#299)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-14T09:56:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "709300e0d68fdcb416f0ba787c24f3ad5031434e",
          "body": "Bumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/lodash/lodash/releases\">lodash's\nreleases</a>.</em></p>\n<blockquote>\n<h2>4.18.1</h2>\n<h2>Bugs</h2>\n<p>Fixes a <code>ReferenceError</code\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 lodash from 4.17.23 to 4.18.1 (#301)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-14T09:46:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "409945a368452e56d16a94f7b3c662910d9a875b",
          "body": "This makes sure that postcodes are formatted as uppercase, with a space\nbetween the first part and the second part, for improved readability.\n\nExample:\n\n```njk\n{{ \"wc1a2aa\" | formatPostcode }}\n```\n\ndisplays as\n\n> WC1A 1AA\n\nAnything which doesn't match the UK postcode format is left untouched.\n\n---------\n\nCo-authored-by: Colin Rotherham <work@colinr.com>",
          "is_bot": false,
          "headline": "Add filter for formatting postcodes (#248)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-04-14T09:41:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41dc80ce6f8faa26ea86d61be88ae8c0f3304bee",
          "body": "Bumps [axios](https://github.com/axios/axios) from 1.13.5 to 1.15.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/axios/axios/releases\">axios's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v1.15.0</h2>\n<p>This release delivers two critical security patches, a\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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.13.5 to 1.15.0 (#302)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-14T09:41:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1865d8ac4f689f64d1f869ac94b4ab1ad33eb4b7",
          "body": "Bumps\n[follow-redirects](https://github.com/follow-redirects/follow-redirects)\nfrom 1.15.11 to 1.16.0.\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a\nhref=\"https://github.com/follow-redirects/follow-redirects/commit/0c23a223067201c368035e82954c11eb2578a33b\"><code>0c23a22</code></a>\nRelease version\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 follow-redirects from 1.15.11 to 1.16.0 (#303)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-14T09:34:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4f258504e8f9a3affd7c59bdefc74ebac1276079",
          "body": "Bumps the build group with 2 updates in the / directory:\n[esbuild](https://github.com/evanw/esbuild) and\n[esbuild-sass-plugin](https://github.com/glromeo/esbuild-sass-plugin).\n\nUpdates `esbuild` from 0.27.3 to 0.27.4\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://git\n[…]\nn/commits/v3.7.0\">compare\nview</a></li>\n</ul>\n</details>\n<br />\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 the build group across 1 directory with 2 updates (#278)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-14T09:24:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "80e4846f12fa77117481e9dafc3044969743fcec",
          "body": "Bumps and [picomatch](https://github.com/micromatch/picomatch). These\ndependencies needed to be updated together.\nUpdates `picomatch` from 2.3.1 to 2.3.2\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/micromatch/picomatch/releases\">picomatch's\nreleases</a>\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 picomatch (#297)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-07T12:12:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c58bc6c2079f3e6556dd4f91ce5acc086d696e8f",
          "body": "…300)\n\nBumps the application group with 1 update:\n[nhsuk-frontend](https://github.com/nhsuk/nhsuk-frontend).\n\nUpdates `nhsuk-frontend` from 10.4.1 to 10.4.2\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/nhsuk/nhsuk-frontend/releases\">nhsuk-frontend's\nrele\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 nhsuk-frontend from 10.4.1 to 10.4.2 in the application group (#…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-07T12:10:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "54d056efa1bcefdc346a88114195c06f8bd8866a",
          "body": "Bumps the tools group with 1 update:\n[@inquirer/prompts](https://github.com/SBoudrias/Inquirer.js).\n\nUpdates `@inquirer/prompts` from 8.3.0 to 8.3.2\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/SBoudrias/Inquirer.js/releases\"><code>@​inquirer/prompts</co\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 @inquirer/prompts from 8.3.0 to 8.3.2 in the tools group (#296)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-24T10:44:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "43b8345c981892eb1bb5e8b1da054675a65295da",
          "body": "…294)\n\nBumps the application group with 1 update:\n[nhsuk-frontend](https://github.com/nhsuk/nhsuk-frontend).\n\nUpdates `nhsuk-frontend` from 10.4.0 to 10.4.1\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/nhsuk/nhsuk-frontend/releases\">nhsuk-frontend's\nrele\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 nhsuk-frontend from 10.4.0 to 10.4.1 in the application group (#…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-24T10:43:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5c182e35c97a15c1c144f02bbb45f6f62690a48e",
          "body": "Bumps the lint group with 1 update:\n[typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).\n\nUpdates `typescript-eslint` from 8.57.0 to 8.57.1\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/typescri\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 typescript-eslint from 8.57.0 to 8.57.1 in the lint group (#295)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-24T10:41:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "790a02a58fdfb37ad27a3b01bdd884a058f9de17",
          "body": "Bumps [flatted](https://github.com/WebReflection/flatted) from 3.3.3 to\n3.4.2.\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a\nhref=\"https://github.com/WebReflection/flatted/commit/3bf09091c3562e17a0647bc06710dd6097079cf7\"><code>3bf0909</code></a>\n3.4.2</li>\n<li><a\nhref=\"https://github.com/WebRefle\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 flatted from 3.3.3 to 3.4.2 (#290)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-21T18:37:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "80edfa85308fce0acbc06418ffcad5474fc04f0f",
          "body": "This increases the `parameterLimit` from the default (1000) to 10,000 -\nto enable longer forms (say with 1000+ checkboxes) to work, if needed.\n\nAvoids the need for this horrendous hack:\nhttps://github.com/NHSDigital/record-a-vaccination-prototype/pull/702",
          "is_bot": false,
          "headline": "Increase parameter limit for body-parser (#285)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-03-19T15:19:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9131c0984c03eabe52ffbbbe1eddc43b4a7599ae",
          "body": "This PR avoids port 6000 and those outside the allowed 1024-49151 range\n\nCloses https://github.com/nhsuk/nhsuk-prototype-kit-package/issues/277\n\n---------\n\nCo-authored-by: Frankie Roberto <frankie@frankieroberto.com>",
          "is_bot": false,
          "headline": "Avoid using 6000 port number (#286)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-03-19T15:18:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1eeacb5ca6ae925e97df3dcbababe209b99ce1c",
          "body": "Forgot to add this before.",
          "is_bot": false,
          "headline": "Add MIT licence (#287)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-03-19T14:34:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d9cb67de49e5501a2be310e6dd1cb5396884be76",
          "body": "Bumps [socket.io-parser](https://github.com/socketio/socket.io) from\n4.2.4 to 4.2.6.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/socketio/socket.io/releases\">socket.io-parser's\nreleases</a>.</em></p>\n<blockquote>\n<h2>socket.io-parser@4.2.6</h2>\n<p>This \n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 socket.io-parser from 4.2.4 to 4.2.6 (#284)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-19T10:51:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4b7233874af2b013386a18fd7dd7c311bc722801",
          "body": null,
          "is_bot": false,
          "headline": "Release 8.1 (#283)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-03-18T16:36:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "316662bcfa2032488156be51c030927ed01c99ba",
          "body": "This updates the NHS frontend version specified in the package-lock to\n10.4, but keeps the minimum version in peerDependencies as `10.3`.\n\nAlso adds it to `devDependencies`.",
          "is_bot": false,
          "headline": "Update NHS frontend (#282)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-03-18T16:24:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1baeb9c650500fde30cff43ce6573abcba0c8468",
          "body": "Bumps [sass-embedded](https://github.com/sass/embedded-host-node) from\n1.97.3 to 1.98.0.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/sass/embedded-host-node/blob/main/CHANGELOG.md\">sass-embedded's\nchangelog</a>.</em></p>\n<blockquote>\n<h2>1.98.0</h2>\n<h3>Com\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\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 sass-embedded from 1.97.3 to 1.98.0 (#280)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-18T15:51:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4a56b0e77c737fdc5276cdf26cb17a2d75abdf7f",
          "body": "This adds a `formatDate` filter which can be used with either the\n`dateInput` component, like this:\n\n```njk\n{{ data.dateOfBirth | formatDate }}\n``` \n\nwhich displays as:\n\n> 7 January 1985\n\nor you can use it with ISO formatted date strings, for example if you\nuse those in your session date defaults:\n\n\n[…]\nthan having to use `isoDateFromDateInput` filter\nfirst.\n\nResolves #56\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>\nCo-authored-by: Colin Rotherham <work@colinr.com>",
          "is_bot": false,
          "headline": "Add date filter (#274)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-03-18T15:50:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7d560d9aced945f8fbf2c74984794ea1b11b2b2e",
          "body": "This was blocking me from having a page with a lot (2800) of checkboxes\non it, with a 'select all' checkbox.\n\n(Which is possibly not a great design idea, but is our current extreme\ncase, where most users would see 20-50).\n\nSee https://github.com/expressjs/body-parser?tab=readme-ov-file#limit",
          "is_bot": false,
          "headline": "Increase the bodyParser limit to 2mb (from 100kb) (#281)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-03-18T14:24:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a173ca4e860540264c11f4ef46cee6cdc1a591c",
          "body": "Bumps the lint group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n|\n[@eslint/compat](https://github.com/eslint/rewrite/tree/HEAD/packages/compat)\n| `2.0.2` | `2.0.3` |\n| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) |\n`9.39.3` | `9.39.4` |\n| [eslint](https://gi\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 the lint group with 5 updates (#279)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-17T17:36:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6337f2d8927ddcb729f29073248edda8ddd6cd50",
          "body": "Bumps the lint group with 1 update:\n[globals](https://github.com/sindresorhus/globals).\n\nUpdates `globals` from 17.3.0 to 17.4.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/sindresorhus/globals/releases\">globals's\nreleases</a>.</em></p>\n<blockquote>\n<h2\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 globals from 17.3.0 to 17.4.0 in the lint group (#276)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-12T16:20:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bae9acafc5d65ebfe25bd0ed19a1b46a506bdab2",
          "body": "Bumps and [immutable](https://github.com/immutable-js/immutable-js).\nThese dependencies needed to be updated together.\nUpdates `immutable` from 3.8.2 to 3.8.3\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/immutable-js/immutable-js/releases\">immutable's\nre\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 immutable (#275)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-11T15:11:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "687725b5db6ec5afdf6edf30c3de59fd4ea52e9d",
          "body": "This PR deduplicates the esbuild plugin list\n\nIt's now possible to add your own Sass plugin, ignoring the default one\n\n```patch\n  const prototype = await NHSPrototypeKit.init({\n    serviceName: config.serviceName,\n    buildOptions: {\n-     entryPoints\n+     entryPoints,\n+     plugins: [\n+       sassPlugin({\n+         // … options\n+       })\n+     ]\n    },\n    viewsPath\n  })\n```",
          "is_bot": false,
          "headline": "Allow custom Sass plugin to override default (#269)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-03-05T09:03:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e297f73fe2c1a9dd99618ea3f3ee4baf9f038d10",
          "body": "Bumps\n[typed-query-selector](https://github.com/g-plane/typed-query-selector)\nfrom 2.12.0 to 2.12.1.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/g-plane/typed-query-selector/blob/main/CHANGELOG.md\">typed-query-selector's\nchangelog</a>.</em></p>\n<blockquote>\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\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 typed-query-selector from 2.12.0 to 2.12.1 (#273)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-03T16:22:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c25bcd7a52807883292b4ded854d6a7b80e8159c",
          "body": "Bumps the tools group with 1 update:\n[@inquirer/prompts](https://github.com/SBoudrias/Inquirer.js).\n\nUpdates `@inquirer/prompts` from 8.2.1 to 8.3.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/SBoudrias/Inquirer.js/releases\"><code>@​inquirer/prompts</co\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 @inquirer/prompts from 8.2.1 to 8.3.0 in the tools group (#271)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-03T16:22:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4c2bfda55565ec036c900d80b2d8944ec9313e4d",
          "body": "This PR adds lots more tests for Express settings\n\nFor example, these settings didn't live in `lib/express-settings`\n\n```mjs\napp.set('nunjucksEnv', …)\napp.set('port', …)\n```\n\nPlus I've added `app.set('views', …)` because we can't guarantee a\ncustom Express app will set it",
          "is_bot": false,
          "headline": "Add tests for all Express settings (#267)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-03-03T16:21:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "165dc5a438f28e558b04e52a8f9e43e7badaa26e",
          "body": "Bumps [nodemon](https://github.com/remy/nodemon) from 3.1.13 to 3.1.14.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/remy/nodemon/releases\">nodemon's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v3.1.14</h2>\n<h2><a\nhref=\"https://github.com/remy/nodemon/compar\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\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 nodemon from 3.1.13 to 3.1.14 (#272)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-03T09:18:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2642923d70e751ff941a6ca5171cb29f1ab61cc3",
          "body": "Bumps the lint group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) |\n`9.39.2` | `9.39.3` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.2` | `9.39.3` |\n|\n[eslint-plugin-es-x](https://github.com/eslint-commu\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 the lint group with 5 updates (#270)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-03T09:17:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b0a5048b0fa652903e85dec6fb4cb065fa283fdd",
          "body": "Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.1.2 to\n3.1.5.\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a\nhref=\"https://github.com/isaacs/minimatch/commit/7bba97888a27a6162983056bcce2a6e28f668712\"><code>7bba978</code></a>\n3.1.5</li>\n<li><a\nhref=\"https://github.com/isaacs/minimatch\n[…]\n/nhsuk/nhsuk-prototype-kit-package/network/alerts).\n\n</details>\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 minimatch from 3.1.2 to 3.1.5 (#268)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-26T13:10:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "46c161f5aa8c312cff337981f14d876fe2cbfaf6",
          "body": "This PR adds a missing Nunjucks `globals` option to work alongside\n`filters`",
          "is_bot": false,
          "headline": "Add new Nunjucks `globals` option (#218)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-02-26T12:06:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69d3f372b4ef454ec3d1626146557140f76d0d6f",
          "body": "This PR adds support for an (optional) Express `session` option for\ncustom session stores\n\nThis change unblocks\nhttps://github.com/nhsuk/manage-vaccinations-in-schools-prototype/pull/178\nand uses:\n\n* `req.session.regenerate()` during session reset\n* `req.session.save()` after session reset\n\n```mjs\nconst prototype = await NHSPrototypeKit.init({\n  session: expressSession({\n    secret: 'Shhh'\n  })\n})\n```\n\nWe should test this feature with various asynchronous session stores",
          "is_bot": false,
          "headline": "Add new Express `session` option (#220)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-02-26T12:03:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "589418cf3afd4e6b68f5efebb979837e9fcb2682",
          "body": "This PR fixes Sass and Nunjucks imports that require `node_modules` (or\nits parent) to close:\n\n* https://github.com/x-govuk/govuk-prototype-components/issues/287\n\nIn the v7.x kit the Sass plugin's `loadPaths` could be manually updated\nto fix this, but not in v8.x\n\n## Sass imports\n\nFor example, the f\n[…]\nis now fixed:\n\n```njk\n{% from \"govuk-frontend/dist/govuk/components/accordion/macro.njk\" import govukAccordion %}\n```\n\nUsers no longer need to manipulate `viewsPath` to include paths to\n`node_modules`",
          "is_bot": false,
          "headline": "Fix imports via `node_modules/` like GOV.UK Frontend (#240)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-02-25T16:43:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5322e730a3b64180a93ffd9bdc7bbd050dfdd9b2",
          "body": "Bumps [nodemon](https://github.com/remy/nodemon) from 3.1.11 to 3.1.13.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/remy/nodemon/releases\">nodemon's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v3.1.13</h2>\n<h2><a\nhref=\"https://github.com/remy/nodemon/compar\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\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 nodemon from 3.1.11 to 3.1.13 (#263)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-24T10:20:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aca9eebe2308a21bf48cd8d892a041f3f74a2fb7",
          "body": "Bumps the lint group with 4 updates:\n[eslint-plugin-es-x](https://github.com/eslint-community/eslint-plugin-es-x),\n[eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc),\n[eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n)\nand\n[typescript-eslint](https://github.com/ty\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 the lint group with 4 updates (#261)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-24T10:19:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7530554bd8207ac14331debb6d222d2c3ce15a86",
          "body": "Bumps the tools group with 1 update:\n[@inquirer/prompts](https://github.com/SBoudrias/Inquirer.js).\n\nUpdates `@inquirer/prompts` from 8.2.0 to 8.2.1\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/SBoudrias/Inquirer.js/releases\"><code>@​inquirer/prompts</co\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 @inquirer/prompts from 8.2.0 to 8.2.1 in the tools group (#262)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-24T10:18:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c2486202fbba5557e53bf4f9cdb5aa1142c8b6b7",
          "body": null,
          "is_bot": false,
          "headline": "Bump version number for patch release (#259)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-02-23T16:39:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "28a7a35883861476553893f916b016c77809f895",
          "body": "This PR adds a new locals to migrate the `{{ version }}` number from\n\n```\nprototypeKitVersion\nnhsukFrontendVersion\n```\n\nUnblocks https://github.com/nhsuk/nhsuk-prototype-kit-package/issues/239\n\n<img width=\"819\" height=\"219\" alt=\"Version numbers displayed in test\napp\"\nsrc=\"https://github.com/user-att\n[…]\nonJS static properties\n\n```cjs\nconst NHSPrototypeKit = require('nhsuk-prototype-kit')\n\nconst { config } = NHSPrototypeKit\n\nconfig.prototypeKitVersion\nconfig.nhsukFrontendVersion\nconfig.searchPaths\n```",
          "is_bot": false,
          "headline": "Support version number via `prototypeKitVersion` local etc (#230)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-02-23T15:22:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a987a00db45de2ccef6c76654e9d52c84fc9b12e",
          "body": "This PR fixes a few minor HTML title issues\n\n* Password page `errors | length` now supported for \"Error:\" prefix\n* Trimmed spaces in `{% block pageTitle %}` to clean up `<title>`\n* Prefer `set pageName` rather than overwrite `block pageTitle`\n\nReopened from\nhttps://github.com/nhsuk/nhsuk-prototype-kit-package/pull/252",
          "is_bot": false,
          "headline": "Update password page to use `errors` page title check (#258)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-02-23T12:33:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1fb0d7ba7541baaed938028132dfa08aa3f2d2eb",
          "body": "This PR adds support for NHS.UK frontend v11.x previews and pre-releases\n\nUse the npm `semver` CLI to test the **package.json** version\n\n```console\nnpx semver v11.0.0-preview-sortable-table --range \"^10.3.1 || >=11.0.0-preview || >=11.0.0-internal || >=11.0.0-beta\"\n```\n\n## Installation error\n\nHere's\n[…]\n\nnpm error Fix the upstream dependency conflict, or retry\nnpm error this command with --force or --legacy-peer-deps\nnpm error to accept an incorrect (and potentially broken) dependency resolution.\n```",
          "is_bot": false,
          "headline": "Support NHS.UK frontend v11.x previews and pre-releases (#249)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-02-23T11:41:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "88793cf19712b5d2f0ff99cbc6d80c9c21dc94d0",
          "body": "Quick PR to move all tests to use Node.js mocks\n\nI've also replaced Express and Nunjucks instances in tests to use\n`normaliseOptions()` as real prototypes would",
          "is_bot": false,
          "headline": "Prefer Node.js test mocks (#250)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-02-23T11:40:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d976442c1bfcc1b645441b5c968f10b88f754aa",
          "body": "Header wasn't linking to the root page as I expected - in my case I\nwanted this to check if the error related to the specific page I was on\nor all pages.\n\nAlso updates the error pages to use heading-l by default.",
          "is_bot": false,
          "headline": "Fix error page headings and header link (#255)",
          "author_name": "Ed Horsford",
          "author_login": "edwardhorsford",
          "committed_at": "2026-02-20T15:43:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85e9fb25fbfa86a8f31e797178b028e34a17e2d6",
          "body": "This PR adds a top-level `npm start` → `npm start --workspace testapp`\nfor Heroku\n\nThis change won't affect the published npm package as it's not a life\ncycle script\n\n<br>\n\n> ### [Life Cycle\nScripts](https://docs.npmjs.com/cli/v10/using-npm/scripts/#life-cycle-scripts)\n>\n>There are some special life\n[…]\nin certain\nsituations. These scripts happen in addition to the `pre<event>`,\n`post<event>`, and `<event>` scripts.\n>\n>* `prepare`, `prepublish`, `prepublishOnly`, `prepack`, `postpack`,\n`dependencies`",
          "is_bot": false,
          "headline": "Enable Heroku review app (#254)",
          "author_name": "Colin Rotherham",
          "author_login": "colinrotherham",
          "committed_at": "2026-02-19T16:28:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f044acf33acfd75486c8aa272ea15fe865e0f79d",
          "body": "Extracted from #212 for a quick merge.\n\nCo-authored-by: Colin Rotherham <work@colinr.com>",
          "is_bot": false,
          "headline": "Add code formatting to filter examples (#247)",
          "author_name": "Frankie Roberto",
          "author_login": "frankieroberto",
          "committed_at": "2026-02-18T13:27:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "114fc42075af2ee6d198eac74ed3cb07c318efe2",
          "body": "Dependabot will resolve any conflicts with this PR as long as you don't\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n<details>\n<summary>Dependabot commands and options</sum\n[…]\n of the specified dependency and ignore\nconditions\n\n\n</details>\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 the lint group across 1 directory with 3 updates (#245)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-18T12:20:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 25,
      "commits_last_year": 285,
      "latest_release_at": "2026-07-20T16:10:55Z",
      "latest_release_tag": "v8.3.1",
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 34,
      "days_since_latest_release": 6,
      "mean_days_between_releases": 18.6
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "nhsuk-prototype-kit",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/nhsuk-prototype-kit",
          "is_deprecated": false,
          "latest_version": "8.3.1",
          "repository_url": "https://github.com/nhsuk/nhsuk-prototype-kit-package",
          "versions_count": 26,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 3313,
          "first_published_at": "2025-11-11T18:45:45.960000Z",
          "latest_published_at": "2026-07-20T16:11:30.338000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        }
      ]
    },
    "popularity": {
      "forks": 3,
      "stars": 2,
      "watchers": 2,
      "fork_history": {
        "days": [
          {
            "date": "2025-10-29",
            "count": 1
          },
          {
            "date": "2026-05-05",
            "count": 1
          },
          {
            "date": "2026-05-06",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 3,
        "total_forks": 3
      },
      "star_history": null,
      "open_issues_and_prs": 23
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 11893,
      "source_files_sampled": 76,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "package.json",
        "testapp/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.16",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-mh99-v99m-4gvg"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 1,
            "oldest_advisory_days": 2
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "3.8.3",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-v56q-mh7h-f735",
              "GHSA-xvcm-6775-5m9r"
            ],
            "fixed_version": "5.1.8",
            "advisory_count": 2,
            "oldest_advisory_days": 5
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 2
        },
        "advisory_count": 3,
        "affected_count": 2,
        "assessed_count": 331,
        "malicious_count": 0,
        "assessed_package": "npm:nhsuk-prototype-kit@8.3.1",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@inquirer/prompts",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.5.2"
        },
        {
          "name": "body-parser",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.3.0"
        },
        {
          "name": "browser-sync",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.4"
        },
        {
          "name": "cookie-parser",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.4.7"
        },
        {
          "name": "esbuild",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.28.1"
        },
        {
          "name": "esbuild-clean-plugin",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.0"
        },
        {
          "name": "esbuild-sass-plugin",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.7.0"
        },
        {
          "name": "express-flash",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.0.2"
        },
        {
          "name": "express-session",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.19.0"
        },
        {
          "name": "http-proxy-node16",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.6"
        },
        {
          "name": "nodemon",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.14"
        },
        {
          "name": "portscanner",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.2.0"
        },
        {
          "name": "sass-embedded",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.100.0"
        },
        {
          "name": "wait-on",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.0.10"
        },
        {
          "name": "express",
          "manifest": "testapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.1"
        },
        {
          "name": "nhsuk-frontend",
          "manifest": "testapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.5.2"
        },
        {
          "name": "nhsuk-prototype-kit",
          "manifest": "testapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "*"
        },
        {
          "name": "nunjucks",
          "manifest": "testapp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.2.4"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@inquirer/prompts",
            "direct": true,
            "version": "8.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "body-parser",
            "direct": true,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "browser-sync",
            "direct": true,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-parser",
            "direct": true,
            "version": "1.4.7",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": true,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild-clean-plugin",
            "direct": true,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild-sass-plugin",
            "direct": true,
            "version": "3.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "express",
            "direct": true,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "express",
            "direct": true,
            "version": "^5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "express-flash",
            "direct": true,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "express-session",
            "direct": true,
            "version": "1.19.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy-node16",
            "direct": true,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "nhsuk-frontend",
            "direct": true,
            "version": "10.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "nhsuk-frontend",
            "direct": true,
            "version": "^10.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "nhsuk-prototype-kit",
            "direct": true,
            "version": "*",
            "ecosystem": "npm"
          },
          {
            "name": "nodemon",
            "direct": true,
            "version": "3.1.14",
            "ecosystem": "npm"
          },
          {
            "name": "nunjucks",
            "direct": true,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "nunjucks",
            "direct": true,
            "version": "^3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "portscanner",
            "direct": true,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded",
            "direct": true,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "wait-on",
            "direct": true,
            "version": "9.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "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/parser",
            "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": "@bufbuild/protobuf",
            "direct": false,
            "version": "2.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@es-joy/jsdoccomment",
            "direct": false,
            "version": "0.88.0",
            "ecosystem": "npm"
          },
          {
            "name": "@es-joy/resolve.exports",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.28.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.23.5",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-helpers",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/core",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/markdown",
            "direct": false,
            "version": "8.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/object-schema",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/plugin-kit",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "@hapi/address",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@hapi/formula",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@hapi/hoek",
            "direct": false,
            "version": "11.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@hapi/pinpoint",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@hapi/tlds",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@hapi/topo",
            "direct": false,
            "version": "6.0.2",
            "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/ansi",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/checkbox",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/confirm",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/core",
            "direct": false,
            "version": "11.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/editor",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/expand",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/external-editor",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/figures",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/input",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/number",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/password",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/rawlist",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/search",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/select",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/type",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "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": "@noble/hashes",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.scandir",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.stat",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.walk",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@paralleldrive/cuid2",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-android-arm64",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-darwin-arm64",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-darwin-x64",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-freebsd-x64",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm-glibc",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm-musl",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm64-glibc",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm64-musl",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-x64-glibc",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-x64-musl",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-arm64",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-ia32",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-x64",
            "direct": false,
            "version": "2.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/base62",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/merge-streams",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@socket.io/component-emitter",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/spec",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@trivago/prettier-plugin-sort-imports",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/body-parser",
            "direct": false,
            "version": "1.19.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/browser-sync",
            "direct": false,
            "version": "2.29.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/connect",
            "direct": false,
            "version": "3.4.38",
            "ecosystem": "npm"
          },
          {
            "name": "@types/cookie-parser",
            "direct": false,
            "version": "1.4.10",
            "ecosystem": "npm"
          },
          {
            "name": "@types/cors",
            "direct": false,
            "version": "2.8.19",
            "ecosystem": "npm"
          },
          {
            "name": "@types/debug",
            "direct": false,
            "version": "4.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@types/esrecurse",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/express",
            "direct": false,
            "version": "5.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/express-flash",
            "direct": false,
            "version": "0.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/express-serve-static-core",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/express-session",
            "direct": false,
            "version": "1.19.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hast",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/http-errors",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/katex",
            "direct": false,
            "version": "0.16.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/micromatch",
            "direct": false,
            "version": "2.3.35",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ms",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "25.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/nunjucks",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/parse-glob",
            "direct": false,
            "version": "3.0.32",
            "ecosystem": "npm"
          },
          {
            "name": "@types/portscanner",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/qs",
            "direct": false,
            "version": "6.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/range-parser",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/send",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/serve-static",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/wait-on",
            "direct": false,
            "version": "5.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ws",
            "direct": false,
            "version": "8.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/project-service",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/tsconfig-utils",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "a-sync-waterfall",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "are-docs-informative",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "asap",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "async",
            "direct": false,
            "version": "2.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "async-each-series",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "asynckit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "axios",
            "direct": false,
            "version": "1.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "base64id",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "batch",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browser-sync-client",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "browser-sync-ui",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "bs-recipes",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.1.2",
            "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": "ccount",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "chardet",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "5.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": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "colorjs.io",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "combined-stream",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "2.20.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "comment-parser",
            "direct": false,
            "version": "1.4.7",
            "ecosystem": "npm"
          },
          {
            "name": "component-emitter",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "connect",
            "direct": false,
            "version": "3.6.6",
            "ecosystem": "npm"
          },
          {
            "name": "connect-flash",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "connect-history-api-fallback",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-signature",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-signature",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-signature",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "cookiejar",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "cors",
            "direct": false,
            "version": "2.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "2.6.9",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decode-named-character-reference",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "del",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "delayed-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "destroy",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "dev-ip",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dezalgo",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "easy-extender",
            "direct": false,
            "version": "2.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "eazy-logger",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ee-first",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "engine.io",
            "direct": false,
            "version": "6.6.9",
            "ecosystem": "npm"
          },
          {
            "name": "engine.io-client",
            "direct": false,
            "version": "6.6.6",
            "ecosystem": "npm"
          },
          {
            "name": "engine.io-parser",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "enhanced-resolve",
            "direct": false,
            "version": "5.18.4",
            "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": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-html",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "10.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-compat-utils",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-config-prettier",
            "direct": false,
            "version": "10.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-es-x",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-es-x",
            "direct": false,
            "version": "7.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-jsdoc",
            "direct": false,
            "version": "63.0.13",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-n",
            "direct": false,
            "version": "18.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-node-import",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-promise",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "9.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-type-tracer",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "11.2.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": "etag",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "eventemitter3",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.3",
            "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-safe-stringify",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-string-truncated-width",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-string-width",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-wrap-ansi",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.20.1",
            "ecosystem": "npm"
          },
          {
            "name": "fault",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "finalhandler",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "finalhandler",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "follow-redirects",
            "direct": false,
            "version": "1.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "format",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "formidable",
            "direct": false,
            "version": "3.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "forwarded",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fresh",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "fresh",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.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-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-tsconfig",
            "direct": false,
            "version": "4.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "github-slugger",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "15.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "17.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "14.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "globrex",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.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": "hasown",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "html-entities",
            "direct": false,
            "version": "2.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "1.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy",
            "direct": false,
            "version": "1.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.4.24",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "7.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "ignore-by-default",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "3.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "5.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ipaddr.js",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-binary-path",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number-like",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-cwd",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-promise",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-wsl",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "javascript-natural-sort",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "joi",
            "direct": false,
            "version": "18.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsdoc-type-pratt-parser",
            "direct": false,
            "version": "7.2.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-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": "jsonfile",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "katex",
            "direct": false,
            "version": "0.16.45",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "limiter",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash-es",
            "direct": false,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isfinite",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "longest-streak",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-table",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-find-and-replace",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-from-markdown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-frontmatter",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-autolink-literal",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-footnote",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-strikethrough",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-table",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-task-list-item",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-math",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-phrasing",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-markdown",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "media-typer",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-descriptors",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "methods",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-core-commonmark",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-frontmatter",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-autolink-literal",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-footnote",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-strikethrough",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-table",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-tagfilter",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-task-list-item",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-math",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-destination",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-label",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-space",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-title",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-whitespace",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-character",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-chunked",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-classify-character",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-combine-extensions",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-decode-numeric-character-reference",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-decode-string",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-encode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-html-tag-name",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-normalize-identifier",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-resolve-all",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-sanitize-uri",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-subtokenize",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-symbol",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-types",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime",
            "direct": false,
            "version": "2.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.54.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "10.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "10.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "9.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "mitt",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mute-stream",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-addon-api",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-deep-merge",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "on-finished",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "on-finished",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "on-headers",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "opn",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-map",
            "direct": false,
            "version": "7.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "parse-imports-exports",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "parse-statements",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "parseurl",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.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-to-regexp",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "6.0.0",
            "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": "picomatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "presentable-error",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": false,
            "version": "3.9.5",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-addr",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-from-env",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "pstree.remy",
            "direct": false,
            "version": "1.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.15.2",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "random-bytes",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "range-parser",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "raw-body",
            "direct": false,
            "version": "2.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "raw-body",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "requires-port",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "reserved-identifiers",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.11",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-pkg-maps",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resp-modifier",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "router",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "rx",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rxjs",
            "direct": false,
            "version": "7.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "sass",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-all-unknown",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-arm",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-riscv64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-darwin-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-darwin-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-arm",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-arm",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-riscv64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-riscv64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-unknown-all",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-win32-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-win32-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "send",
            "direct": false,
            "version": "0.19.2",
            "ecosystem": "npm"
          },
          {
            "name": "send",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "serve-index",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "1.16.3",
            "ecosystem": "npm"
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "server-destroy",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.2.0",
            "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": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "simple-update-notifier",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "socket.io",
            "direct": false,
            "version": "4.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "socket.io-adapter",
            "direct": false,
            "version": "2.5.8",
            "ecosystem": "npm"
          },
          {
            "name": "socket.io-client",
            "direct": false,
            "version": "4.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "socket.io-parser",
            "direct": false,
            "version": "4.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-exceptions",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-expression-parse",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-license-ids",
            "direct": false,
            "version": "3.0.22",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "stream-throttle",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "superagent",
            "direct": false,
            "version": "10.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "supertest",
            "direct": false,
            "version": "7.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "5.5.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": "sync-child-process",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "sync-message-port",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "tapable",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "to-valid-identifier",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "toidentifier",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "touch",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ts-api-utils",
            "direct": false,
            "version": "2.5.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-is",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "typed-query-selector",
            "direct": false,
            "version": "2.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript-eslint",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "ua-parser-js",
            "direct": false,
            "version": "1.0.41",
            "ecosystem": "npm"
          },
          {
            "name": "uid-safe",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "undefsafe",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "unicorn-magic",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-remove-position",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-parents",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "unpipe",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "utils-merge",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "varint",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.21.1",
            "ecosystem": "npm"
          },
          {
            "name": "xmlhttprequest-ssl",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.2",
            "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": "zwitch",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 589,
        "direct_count": 21,
        "indirect_count": 568
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 5,
        "merged_prs": 283,
        "open_issues": 18,
        "closed_ratio": 0.69,
        "closed_issues": 40,
        "closed_unmerged_prs": 22
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "frankieroberto",
          "commits": 128,
          "avatar_url": "https://avatars.githubusercontent.com/u/30665?v=4"
        },
        {
          "type": "User",
          "login": "colinrotherham",
          "commits": 44,
          "avatar_url": "https://avatars.githubusercontent.com/u/415517?v=4"
        },
        {
          "type": "User",
          "login": "edwardhorsford",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/2204224?v=4"
        }
      ],
      "contributors_sampled": 3,
      "top_contributor_share": 0.74
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "code-style-checks.yml",
        "publish.yml",
        "tests.yml"
      ],
      "has_docs_dir": true,
      "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": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
            "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": 5,
            "reason": "Found 4/7 approved changesets -- score normalized to 5",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 6,
            "reason": "project has 2 contributing companies or organizations -- score normalized to 6",
            "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": 3,
            "reason": "dependency not pinned by hash detected -- score normalized to 3",
            "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": null,
            "reason": "no releases found",
            "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": 0,
            "reason": "13 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "58a446fcab64640d1c8ba1772e98217b359105ed",
        "ran_at": "2026-07-27T04:59:24Z",
        "aggregate_score": 5.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-25T17:52:31Z",
      "oldest_open_prs": [
        {
          "number": 212,
          "created_at": "2026-01-30T16:58:18Z",
          "last_comment_at": "2026-04-14T10:06:24Z",
          "last_comment_author": "colinrotherham"
        },
        {
          "number": 264,
          "created_at": "2026-02-24T10:24:38Z",
          "last_comment_at": "2026-02-26T13:13:25Z",
          "last_comment_author": "colinrotherham"
        },
        {
          "number": 265,
          "created_at": "2026-02-25T14:07:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 364,
          "created_at": "2026-07-20T18:23:19Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 366,
          "created_at": "2026-07-21T08:53:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-21T16:32:48Z",
      "ci_last_conclusion": "FAILURE",
      "oldest_open_issues": [
        {
          "number": 221,
          "created_at": "2020-10-14T15:55:37Z",
          "last_comment_at": "2021-03-18T12:18:24Z",
          "last_comment_author": "joelanman"
        },
        {
          "number": 223,
          "created_at": "2024-11-19T11:08:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 222,
          "created_at": "2025-01-26T14:55:32Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 59,
          "created_at": "2025-09-28T09:09:06Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 182,
          "created_at": "2026-01-13T16:11:41Z",
          "last_comment_at": "2026-01-23T14:37:37Z",
          "last_comment_author": "frankieroberto"
        },
        {
          "number": 169,
          "created_at": "2026-01-15T13:03:23Z",
          "last_comment_at": "2026-01-23T12:48:15Z",
          "last_comment_author": "frankieroberto"
        },
        {
          "number": 214,
          "created_at": "2026-02-02T11:31:58Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 215,
          "created_at": "2026-02-02T11:49:16Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 219,
          "created_at": "2026-02-03T14:34:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 251,
          "created_at": "2026-02-18T16:39:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 288,
          "created_at": "2026-03-21T14:01:09Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 289,
          "created_at": "2026-03-21T14:04:18Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 291,
          "created_at": "2026-03-23T16:56:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 292,
          "created_at": "2026-03-23T16:57:05Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 293,
          "created_at": "2026-03-23T16:58:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 304,
          "created_at": "2026-04-14T09:56:14Z",
          "last_comment_at": "2026-04-14T10:26:34Z",
          "last_comment_author": "edwardhorsford"
        },
        {
          "number": 330,
          "created_at": "2026-05-08T08:49:03Z",
          "last_comment_at": "2026-05-08T08:50:01Z",
          "last_comment_author": "frankieroberto"
        },
        {
          "number": 331,
          "created_at": "2026-05-08T08:56:00Z",
          "last_comment_at": "2026-05-08T08:56:58Z",
          "last_comment_author": "frankieroberto"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/nhsuk/nhsuk-prototype-kit-package",
    "host": "github.com",
    "name": "nhsuk-prototype-kit-package",
    "owner": "nhsuk"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 69,
      "inputs": {
        "security": 63,
        "vitality": 93,
        "community": 40,
        "governance": 63,
        "engineering": 82
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 93,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 88,
            "inputs": {
              "commits_last_year": 285,
              "human_commit_share": 0.39,
              "days_since_last_push": 5,
              "active_weeks_last_year": 34
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "34/52 weeks with commits",
                "points": 23.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 34
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "285 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 285
                    }
                  }
                ],
                "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": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 25,
              "latest_release_tag": "v8.3.1",
              "releases_from_tags": false,
              "days_since_latest_release": 6,
              "mean_days_between_releases": 18.6
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "25 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 25
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~18.6 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 18.6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "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": 6,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 6 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 40,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 2,
            "inputs": {
              "forks": 3,
              "stars": 2,
              "watchers": 2,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "2 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "3 forks",
                "points": 2.5,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "2 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "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": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "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": 59,
            "inputs": {
              "packages": [
                "nhsuk-prototype-kit"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 3313
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "3,313 downloads/month across npm",
                "points": 46.9,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 3313,
                      "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": "moderate",
        "name": "Sustainability & Governance",
        "value": 63,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 3,
              "top_contributor_share": 0.74
            },
            "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 74% of commits",
                "points": 5.9,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 74
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "3 contributors",
                "points": 4.1,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "merged_prs": 283,
              "open_issues": 18,
              "closed_issues": 40,
              "issue_closed_ratio": 0.69,
              "closed_unmerged_prs": 22
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "69% of issues closed",
                "points": 32.3,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 69
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "283/305 decided PRs merged",
                "points": 35.5,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 283,
                      "decided": 305
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 4/7 approved changesets -- score normalized to 5",
                "points": 7.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "followers": 203,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "nhsuk",
              "public_repos": 11,
              "account_age_days": 3744
            },
            "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": "203 followers of nhsuk",
                "points": 16.6,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 203,
                      "login": "nhsuk"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "11 public repos, account ~10 yr old",
                "points": 19.9,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 11
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 10
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "nhsuk-prototype-kit"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 6
            },
            "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 6 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "26 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 26
                    }
                  }
                ],
                "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": "good",
        "name": "Engineering Quality",
        "value": 82,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "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": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "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": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "http://prototype-kit.service-manual.nhs.uk",
              "has_readme": true,
              "has_docs_dir": true,
              "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": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "http://prototype-kit.service-manual.nhs.uk",
                "points": 15,
                "status": "met",
                "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 63,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 58,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 5.8
            },
            "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": "branch protection is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "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 4/7 approved changesets -- score normalized to 5",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 1.5,
                "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 3",
                "points": 1.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": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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": "13 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "good",
            "name": "Dependency advisories",
            "note": "Matched the npm:nhsuk-prototype-kit@8.3.1 runtime dependency closure — what installing the published package pulls in — 331 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:nhsuk-prototype-kit@8.3.1",
                  "assessed": 331
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 83,
            "inputs": {
              "source": "osv",
              "advisories": 3,
              "affected_packages": 2,
              "assessed_packages": 331,
              "unassessed_packages": 0,
              "affected_by_severity": "high 2",
              "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": "2 affected: brace-expansion 1.1.16 (high 7.5), immutable 3.8.3 (high 7.5)",
                "points": 8.4,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 2,
                      "packages": "brace-expansion 1.1.16 (high 7.5), immutable 3.8.3 (high 7.5)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "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": 331,
              "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": "excellent",
            "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"
              ],
              "review_only_matches": 0,
              "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": "moderate",
        "name": "AI Readiness",
        "value": 60,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "39 of 39 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 39,
                      "sampled": 39
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 67,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "tsconfig.json"
              ],
              "agent_commit_share": 0.01,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.61
            },
            "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": "tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "1 of the last 100 commits agent-authored or agent-credited",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 1,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "61 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 61,
                      "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 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 11893,
              "source_files_sampled": 76,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript with type-check config (tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "tsconfig.json",
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/76 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 76,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T04:59:47.147944Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/n/nhsuk/nhsuk-prototype-kit-package.svg",
  "full_name": "nhsuk/nhsuk-prototype-kit-package",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikennpm.