diff --git a/.gitignore b/.gitignore
index 09313c97c..2094b1bdb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,4 +6,4 @@
.data
/node_modules
-/assets
+/public
diff --git a/app.js b/app.js
new file mode 100644
index 000000000..9eab6dfb6
--- /dev/null
+++ b/app.js
@@ -0,0 +1,57 @@
+import sessionInDatabase from 'connect-pg-simple'
+import express from 'express'
+import session from 'express-session'
+import NHSPrototypeKit from 'nhsuk-prototype-kit'
+import { Pool } from 'pg'
+
+import sessionDataDefaults from './app/data.js'
+import filters from './app/filters.js'
+import globals from './app/globals.js'
+import routes from './app/routes.js'
+
+const { DATABASE_URL, NODE_ENV } = process.env
+
+const app = express()
+
+if (DATABASE_URL) {
+ app.use(
+ session({
+ cookie: {
+ maxAge: 1000 * 60 * 60 * 4, // 4 hours
+ secure: process.env.NODE_ENV === 'production'
+ },
+ resave: false,
+ saveUninitialized: false,
+ secret: 'manage-vaccinations-in-schools-prototype',
+ store: new (sessionInDatabase(session))({
+ pool: new Pool({
+ connectionString: DATABASE_URL,
+ ssl: NODE_ENV === 'production' ? { rejectUnauthorized: false } : false
+ })
+ })
+ })
+ )
+}
+
+const prototype = await NHSPrototypeKit.init({
+ serviceName: 'Manage vaccinations in schools',
+ app,
+ buildOptions: {
+ entryPoints: [
+ 'app/assets/stylesheets/*.scss',
+ 'app/assets/javascripts/*.js'
+ ]
+ },
+ viewsPath: ['app/views', 'node_modules/nhsuk-decorated-components'],
+ routes,
+ filters,
+ sessionDataDefaults
+})
+
+prototype.app.set('view engine', 'njk')
+
+for (const [key, value] of Object.entries(globals())) {
+ prototype.nunjucks?.addGlobal(key, value)
+}
+
+prototype.start(2000)
diff --git a/app.json b/app.json
deleted file mode 100644
index e37a3c463..000000000
--- a/app.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "env": {
- "USE_AUTH": {
- "description": "Enable or disable password protection on production.",
- "value": "true"
- },
- "USE_AUTO_STORE_DATA": {
- "description": "Automatically store form data and send to all views",
- "value": "true"
- },
- "USE_DATABASE_SESSION_STORE": {
- "description": "Enable PostgreSQL session store.",
- "value": "true"
- },
- "USE_HTTPS": {
- "description": "Force HTTP to redirect to HTTPS on production",
- "value": "true"
- }
- },
- "addons": ["heroku-postgresql:essential-0"]
-}
diff --git a/app/controllers/home.js b/app/controllers/home.js
index e5a303c95..244737ab4 100644
--- a/app/controllers/home.js
+++ b/app/controllers/home.js
@@ -22,10 +22,10 @@ export const homeController = {
)
}
- response.render('views/dashboard')
+ response.render('dashboard')
},
start(request, response) {
- response.render('views/start')
+ response.render('start')
}
}
diff --git a/app/filters.js b/app/filters.js
index 7856df88b..c2c11137e 100644
--- a/app/filters.js
+++ b/app/filters.js
@@ -16,7 +16,7 @@ import {
* @returns {object} Filters
*/
export default (env) => {
- const filters = {}
+ const filters = prototypeFilters
/**
* Remove border from last summary row
diff --git a/app/globals.js b/app/globals.js
index 671dbd1c3..20d4e67b4 100644
--- a/app/globals.js
+++ b/app/globals.js
@@ -1,4 +1,5 @@
import _ from 'lodash'
+import { decorate } from 'nhsuk-decorated-components'
import { healthQuestions } from './datasets/health-questions.js'
import {
@@ -23,6 +24,8 @@ import {
export default () => {
const globals = {}
+ globals.decorate = decorate
+
/**
* Get boolean form field items
*
diff --git a/app/views/_layouts/default.njk b/app/views/_layouts/default.njk
index 5df220f82..14ede41af 100644
--- a/app/views/_layouts/default.njk
+++ b/app/views/_layouts/default.njk
@@ -1,4 +1,4 @@
-{% extends "rig/default.njk" %}
+{% extends "prototype-kit-template.njk" %}
{#- App macros -#}
{% from "_macros/action-list.njk" import appActionList %}
@@ -20,8 +20,8 @@
{% set assetsName = assetsName | default("application") %}
-
-
+
+
{% endblock %}
{% block header %}
@@ -129,7 +129,7 @@
}, {
text: "Clear session data",
href: "/clear-session-data"
- } if useAutoStoreData, {
+ }, {
text: "Design history",
href: "https://design-history.prevention-services.nhs.uk/manage-vaccinations-in-schools/"
}]
diff --git a/lib/create-data.js b/lib/create-data.js
index 50c7954ae..adc0adaef 100644
--- a/lib/create-data.js
+++ b/lib/create-data.js
@@ -2,7 +2,6 @@ import process from 'node:process'
import { faker } from '@faker-js/faker'
import { isSameDay } from 'date-fns'
-import 'dotenv/config'
import clinicsData from '../app/datasets/clinics.js'
import programmesData from '../app/datasets/programmes.js'
diff --git a/package-lock.json b/package-lock.json
index a0f69b18e..653966c16 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,16 +11,19 @@
"license": "MIT",
"dependencies": {
"@faker-js/faker": "^10.0.0",
+ "@x-govuk/govuk-prototype-filters": "^2.1.0",
"@x-govuk/govuk-prototype-wizard": "^0.4.0",
"accessible-autocomplete": "^3.0.1",
+ "connect-pg-simple": "^10.0.0",
"countries-and-timezones": "^3.8.0",
"date-fns": "^4.0.0",
- "dotenv": "^17.0.0",
"express-flash": "^0.0.2",
"i18n": "^0.15.1",
"json-as-xlsx": "^2.5.6",
"lodash": "^4.17.21",
- "nhsuk-prototype-rig": "^0.8.0",
+ "nhsuk-decorated-components": "^0.4.0",
+ "nhsuk-frontend": "^10.2",
+ "nhsuk-prototype-kit": "^8.0.1",
"response-time": "^2.3.3"
},
"devDependencies": {
@@ -39,6 +42,7 @@
"version": "7.29.0",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
"integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-validator-identifier": "^7.28.5",
@@ -53,6 +57,7 @@
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -62,8 +67,7 @@
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.11.0.tgz",
"integrity": "sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==",
- "license": "(Apache-2.0 AND BSD-3-Clause)",
- "peer": true
+ "license": "(Apache-2.0 AND BSD-3-Clause)"
},
"node_modules/@cacheable/memory": {
"version": "2.0.7",
@@ -849,6 +853,54 @@
"npm": ">=10"
}
},
+ "node_modules/@hapi/address": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/@hapi/address/-/address-5.1.1.tgz",
+ "integrity": "sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/hoek": "^11.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@hapi/formula": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-3.0.2.tgz",
+ "integrity": "sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@hapi/hoek": {
+ "version": "11.0.7",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz",
+ "integrity": "sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@hapi/pinpoint": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz",
+ "integrity": "sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@hapi/tlds": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/@hapi/tlds/-/tlds-1.1.6.tgz",
+ "integrity": "sha512-xdi7A/4NZokvV0ewovme3aUO5kQhW9pQ2YD1hRqZGhhSi5rBv4usHYidVocXSi9eihYsznZxLtAiEYYUL6VBGw==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@hapi/topo": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz",
+ "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/hoek": "^11.0.2"
+ }
+ },
"node_modules/@humanfs/core": {
"version": "0.19.1",
"resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@@ -922,13 +974,13 @@
}
},
"node_modules/@inquirer/checkbox": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.0.6.tgz",
- "integrity": "sha512-qLZ1gOpsqsieB5k98GQ9bWYggvMsCXTc7HUwhEQpTsxFQYGthqR9UysCwqB7L9h47THYdXhJegnYb1IqURMjng==",
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.0.7.tgz",
+ "integrity": "sha512-OGJykc3mpe4kiNXwXlDlP4MFqZso5QOoXJaJrmTJI+Y+gq68wxTyCUIFv34qgwZTHnGGeqwUKGOi4oxptTe+ZQ==",
"license": "MIT",
"dependencies": {
"@inquirer/ansi": "^2.0.3",
- "@inquirer/core": "^11.1.3",
+ "@inquirer/core": "^11.1.4",
"@inquirer/figures": "^2.0.3",
"@inquirer/type": "^4.0.3"
},
@@ -945,12 +997,12 @@
}
},
"node_modules/@inquirer/confirm": {
- "version": "6.0.6",
- "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.6.tgz",
- "integrity": "sha512-9ZkrGYiWnOKQPc3xfLIORE3lZW1qvtgRoJcoqopr5zssBn7yk4yONmzGynEOjc16FnUXzkAejj/I29BbfcoUfQ==",
+ "version": "6.0.7",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.7.tgz",
+ "integrity": "sha512-lKdNloHLnGoBUUwprxKFd+SpkAnyQTBrZACFPtxDq9GiLICD2t+CaeJ1Ku4goZsGPyBIFc2YYpmDSJLEXoc16g==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^11.1.3",
+ "@inquirer/core": "^11.1.4",
"@inquirer/type": "^4.0.3"
},
"engines": {
@@ -966,9 +1018,9 @@
}
},
"node_modules/@inquirer/core": {
- "version": "11.1.3",
- "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.3.tgz",
- "integrity": "sha512-TBAGPDGvpwFSQ4nkawQzq5/X7DhElANjvKeUtcjpVnBIfuH/OEu4M+79R3+bGPtwxST4DOIGRtF933mUH2bRVw==",
+ "version": "11.1.4",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.4.tgz",
+ "integrity": "sha512-1HvwyASF0tE/7W8geTTn0ydiWb463pq4SBIpaWcVabTrw55+CiRmytV9eZoqt3ohchsPw4Vv60jfNiI6YljVUg==",
"license": "MIT",
"dependencies": {
"@inquirer/ansi": "^2.0.3",
@@ -992,12 +1044,12 @@
}
},
"node_modules/@inquirer/editor": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.0.6.tgz",
- "integrity": "sha512-dxTi/TB29NaW18u0pQl3B140695izGUMzr340a4Yhxll3oa0/iwxl6C88sX9LDUPFaaM4FDASEMnLm8XVk2VVg==",
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.0.7.tgz",
+ "integrity": "sha512-d36tisyvmxH7H+LICTeTofrKmJ+R1jAYV8q0VTYh96cm8mP2BdGh9TAIqbCGcciX8/dr0fJW+VJq3jAnco5xfg==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^11.1.3",
+ "@inquirer/core": "^11.1.4",
"@inquirer/external-editor": "^2.0.3",
"@inquirer/type": "^4.0.3"
},
@@ -1014,12 +1066,12 @@
}
},
"node_modules/@inquirer/expand": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.6.tgz",
- "integrity": "sha512-HmgMzFdMk/gmPXfuFy4xgWkyIVbdH81otQkrFbhklFZcGauwDFD1EbgmZdgmYCN5pWhSEnYIadg1kysLgPIYag==",
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.7.tgz",
+ "integrity": "sha512-h2RRFzDdeXOXLrJOUAaHzyR1HbiZlrl/NxorOAgNrzhiSThbwEFVOf88lJzbF5WXGrQ2RwqK2h0xAE7eo8QP5w==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^11.1.3",
+ "@inquirer/core": "^11.1.4",
"@inquirer/type": "^4.0.3"
},
"engines": {
@@ -1065,12 +1117,12 @@
}
},
"node_modules/@inquirer/input": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.6.tgz",
- "integrity": "sha512-RZsJcjMJA3QNI9q9OiAi1fAom+Pb8on6alJB1Teh5jjKaiG5C79P69cG955ZRfgPdxTmI4uyhf33+94Xj7xWig==",
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.7.tgz",
+ "integrity": "sha512-b+eKk/eUvKLQ6c+rDu9u4I1+twdjOfrEaw9NURDpCrWYJTWL1/JQEudZi0AeqXDGcn0tMdhlfpEfjcqr33B/qw==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^11.1.3",
+ "@inquirer/core": "^11.1.4",
"@inquirer/type": "^4.0.3"
},
"engines": {
@@ -1086,12 +1138,12 @@
}
},
"node_modules/@inquirer/number": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.6.tgz",
- "integrity": "sha512-owMkAY+gR0BggomDTL+Z22x/yfE4ocFrmNyJacOiaDVA/d+iL4IWyk7Ds7JEuDMxuhHFB46Dubdxg1uiD7GlCA==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.7.tgz",
+ "integrity": "sha512-/l5KxcLFFexzOwh8DcVOI7zgVQCwcBt/9yHWtvMdYvaYLMK5J31BSR/fO3Z9WauA21qwAkDGRvYNHIG4vR6JwA==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^11.1.3",
+ "@inquirer/core": "^11.1.4",
"@inquirer/type": "^4.0.3"
},
"engines": {
@@ -1107,13 +1159,13 @@
}
},
"node_modules/@inquirer/password": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.6.tgz",
- "integrity": "sha512-c4BT4SB79iYwPhtGVBSvrlTnn4oFSYnwocafmktpay8RK75T2c2+fLlR0i1Cxw0QOhdy/YULdmpHoy1sOrPzvA==",
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.7.tgz",
+ "integrity": "sha512-h3Rgzb8nFMxgK6X5246MtwTX/rXs5Z58DbeuUKI6W5dQ+CZusEunNeT7rosdB+Upn79BkfZJO0AaiH8MIi9v1A==",
"license": "MIT",
"dependencies": {
"@inquirer/ansi": "^2.0.3",
- "@inquirer/core": "^11.1.3",
+ "@inquirer/core": "^11.1.4",
"@inquirer/type": "^4.0.3"
},
"engines": {
@@ -1158,12 +1210,12 @@
}
},
"node_modules/@inquirer/rawlist": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.2.tgz",
- "integrity": "sha512-ld2EhLlf3fsBv7QfxR31NdBecGdS6eeFFZ+Nx88ApjtifeCEc9TNrw8x5tGe+gd6HG1ERczOb4B/bMojiGIp1g==",
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.3.tgz",
+ "integrity": "sha512-EuvV6N/T3xDmRVihAOqfnbmtHGdu26TocRKANvcX/7nLLD8QO0c22Dtlc5C15+V433d9v0E0SSyqywdNCIXfLg==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^11.1.3",
+ "@inquirer/core": "^11.1.4",
"@inquirer/type": "^4.0.3"
},
"engines": {
@@ -1179,12 +1231,12 @@
}
},
"node_modules/@inquirer/search": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.2.tgz",
- "integrity": "sha512-kdGbbbWYKldWxpxodKYPmFl/ctBi3DjWlA4LX48jXtqJ7NEeoEKlyFTbE4xNEFcGDi15tvaxRLzCV4A53zqYIw==",
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.3.tgz",
+ "integrity": "sha512-6BE8MqVMakEiLDRtrwj9fbx6AYhuj7McW3GOkOoEiQ5Qkh6v6f5HCoYNqSRE4j6nT+u+73518iUQPE+mZYlAjA==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^11.1.3",
+ "@inquirer/core": "^11.1.4",
"@inquirer/figures": "^2.0.3",
"@inquirer/type": "^4.0.3"
},
@@ -1201,13 +1253,13 @@
}
},
"node_modules/@inquirer/select": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.0.6.tgz",
- "integrity": "sha512-9DyVbNCo4q0C3CkGd6zW0SW3NQuuk4Hy0NSbP6zErz2YNWF4EHHJCRzcV34/CDQLraeAQXbHYlMofuUrs6BBZQ==",
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.0.7.tgz",
+ "integrity": "sha512-1JUJIR+Z2PsvwP6VWty7aE0aCPaT2cy2c4Vp3LPhL2Pi3+aXewAld/AyJ/CW9XWx1JbKxmdElfvls/G/7jG7ZQ==",
"license": "MIT",
"dependencies": {
"@inquirer/ansi": "^2.0.3",
- "@inquirer/core": "^11.1.3",
+ "@inquirer/core": "^11.1.4",
"@inquirer/figures": "^2.0.3",
"@inquirer/type": "^4.0.3"
},
@@ -1638,6 +1690,12 @@
"integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
"license": "MIT"
},
+ "node_modules/@standard-schema/spec": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
+ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
+ "license": "MIT"
+ },
"node_modules/@stylistic/eslint-plugin": {
"version": "2.13.0",
"resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.13.0.tgz",
@@ -1706,12 +1764,12 @@
}
},
"node_modules/@types/node": {
- "version": "25.2.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz",
- "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==",
+ "version": "25.3.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz",
+ "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==",
"license": "MIT",
"dependencies": {
- "undici-types": "~7.16.0"
+ "undici-types": "~7.18.0"
}
},
"node_modules/@types/unist": {
@@ -2047,13 +2105,15 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz",
"integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==",
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/accepts": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
"integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"mime-types": "^3.0.0",
"negotiator": "^1.0.0"
@@ -2062,15 +2122,6 @@
"node": ">= 0.6"
}
},
- "node_modules/accepts/node_modules/negotiator": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
- "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/accessible-autocomplete": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/accessible-autocomplete/-/accessible-autocomplete-3.0.1.tgz",
@@ -2109,9 +2160,9 @@
}
},
"node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+ "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2188,6 +2239,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
"license": "Python-2.0"
},
"node_modules/array-buffer-byte-length": {
@@ -2364,7 +2416,8 @@
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/astral-regex": {
"version": "2.0.0",
@@ -2404,6 +2457,12 @@
"node": ">= 0.4"
}
},
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
+ },
"node_modules/available-typed-arrays": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
@@ -2420,6 +2479,17 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/axios": {
+ "version": "1.13.5",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz",
+ "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.15.11",
+ "form-data": "^4.0.5",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -2676,6 +2746,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -2781,18 +2852,6 @@
"node": ">= 12"
}
},
- "node_modules/client-sessions": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/client-sessions/-/client-sessions-0.8.0.tgz",
- "integrity": "sha512-XERL6B5cJYGEaAigTADRr8NrUhkGmIUdrlHBzRM62uZEtFben5QYbaOxgWX79wFbCIvABhgZCWch1glw2fcyiQ==",
- "license": "MPL-2.0",
- "dependencies": {
- "cookies": "^0.7.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/cliui": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
@@ -2836,14 +2895,26 @@
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz",
"integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==",
+ "license": "MIT"
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"license": "MIT",
- "peer": true
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
},
"node_modules/commander": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
"integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">= 6"
}
@@ -2858,51 +2929,6 @@
"node": ">= 12.0.0"
}
},
- "node_modules/compressible": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
- "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
- "license": "MIT",
- "dependencies": {
- "mime-db": ">= 1.43.0 < 2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/compression": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz",
- "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==",
- "license": "MIT",
- "dependencies": {
- "bytes": "3.1.2",
- "compressible": "~2.0.18",
- "debug": "2.6.9",
- "negotiator": "~0.6.4",
- "on-headers": "~1.1.0",
- "safe-buffer": "5.2.1",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/compression/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/compression/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "license": "MIT"
- },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -2973,6 +2999,7 @@
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz",
"integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=18"
},
@@ -3018,19 +3045,6 @@
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
"license": "MIT"
},
- "node_modules/cookies": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.3.tgz",
- "integrity": "sha512-+gixgxYSgQLTaTIilDHAdlNPZDENDQernEMiIcZpYYP14zgHsCt4Ce1FEjFtcp6GefhozebB6orvhAAWx/IS0A==",
- "license": "MIT",
- "dependencies": {
- "depd": "~1.1.2",
- "keygrip": "~1.0.3"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/cors": {
"version": "2.8.6",
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz",
@@ -3052,6 +3066,7 @@
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
"integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"env-paths": "^2.2.1",
@@ -3088,6 +3103,7 @@
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
@@ -3259,6 +3275,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@@ -3325,18 +3350,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/dotenv": {
- "version": "17.3.1",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz",
- "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://dotenvx.com"
- }
- },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -3497,6 +3510,7 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -3506,6 +3520,7 @@
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
"integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"is-arrayish": "^0.2.1"
@@ -3642,7 +3657,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -4147,19 +4161,25 @@
}
},
"node_modules/eslint-plugin-react/node_modules/resolve": {
- "version": "2.0.0-next.5",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
- "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "version": "2.0.0-next.6",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz",
+ "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "is-core-module": "^2.13.0",
+ "es-errors": "^1.3.0",
+ "is-core-module": "^2.16.1",
+ "node-exports-info": "^1.6.0",
+ "object-keys": "^1.1.1",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
"bin": {
"resolve": "bin/resolve"
},
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -4278,6 +4298,7 @@
"resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz",
"integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"accepts": "^2.0.0",
"body-parser": "^2.2.1",
@@ -4327,24 +4348,6 @@
"node": ">= 0.8.0"
}
},
- "node_modules/express-rate-limit": {
- "version": "8.2.1",
- "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz",
- "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==",
- "license": "MIT",
- "dependencies": {
- "ip-address": "10.0.1"
- },
- "engines": {
- "node": ">= 16"
- },
- "funding": {
- "url": "https://github.com/sponsors/express-rate-limit"
- },
- "peerDependencies": {
- "express": ">= 4.11"
- }
- },
"node_modules/express-session": {
"version": "1.19.0",
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.19.0.tgz",
@@ -4403,6 +4406,7 @@
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
"integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=6.6.0"
}
@@ -4412,6 +4416,7 @@
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">= 0.8"
}
@@ -4421,6 +4426,7 @@
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz",
"integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"debug": "^4.4.0",
"encodeurl": "^2.0.0",
@@ -4442,6 +4448,7 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
"integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">= 0.8"
}
@@ -4451,6 +4458,7 @@
"resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
"integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"debug": "^4.4.3",
"encodeurl": "^2.0.0",
@@ -4477,6 +4485,7 @@
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz",
"integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"encodeurl": "^2.0.0",
"escape-html": "^1.0.3",
@@ -4792,11 +4801,49 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/form-data": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/form-data/node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/form-data/node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">= 0.6"
}
@@ -9441,7 +9488,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
@@ -9550,6 +9596,20 @@
"node": ">=8.0.0"
}
},
+ "node_modules/http-proxy-node16": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/http-proxy-node16/-/http-proxy-node16-1.0.6.tgz",
+ "integrity": "sha512-RLtYkbmbLmh+To4lmqLpiEitu0igXb/j1SOW8F6w/esXsapGT5dSShMF9vg7shtxGJSXaWiFE3wYWCoLOuiibg==",
+ "license": "MIT",
+ "dependencies": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
"node_modules/i18n": {
"version": "0.15.3",
"resolved": "https://registry.npmjs.org/i18n/-/i18n-0.15.3.tgz",
@@ -9615,6 +9675,7 @@
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
"integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"parent-module": "^1.0.0",
@@ -9665,20 +9726,12 @@
"node": ">= 0.4"
}
},
- "node_modules/ip-address": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz",
- "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==",
- "license": "MIT",
- "engines": {
- "node": ">= 12"
- }
- },
"node_modules/ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">= 0.10"
}
@@ -9731,6 +9784,7 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true,
"license": "MIT"
},
"node_modules/is-async-function": {
@@ -10024,7 +10078,8 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/is-regex": {
"version": "1.2.1",
@@ -10191,6 +10246,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
"license": "ISC"
},
"node_modules/iterator.prototype": {
@@ -10211,16 +10267,36 @@
"node": ">= 0.4"
}
},
+ "node_modules/joi": {
+ "version": "18.0.2",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-18.0.2.tgz",
+ "integrity": "sha512-RuCOQMIt78LWnktPoeBL0GErkNaJPTBGcYuyaBvUOQSpcpcLfWrHPPihYdOGbV5pam9VTWbeoF7TsGiHugcjGA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/address": "^5.1.1",
+ "@hapi/formula": "^3.0.2",
+ "@hapi/hoek": "^11.0.7",
+ "@hapi/pinpoint": "^2.0.1",
+ "@hapi/tlds": "^1.1.1",
+ "@hapi/topo": "^6.0.2",
+ "@standard-schema/spec": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true,
"license": "MIT"
},
"node_modules/js-yaml": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
"integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
@@ -10259,6 +10335,7 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true,
"license": "MIT"
},
"node_modules/json-schema-traverse": {
@@ -10313,15 +10390,6 @@
"node": ">=4.0"
}
},
- "node_modules/keygrip": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.0.3.tgz",
- "integrity": "sha512-/PpesirAIfaklxUzp4Yb7xBper9MwP6hNRA6BGGUFCgbJ+BM5CKBtsoxinNXkLHAr+GXS1/lSlF2rP7cv5Fl+g==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -10372,6 +10440,7 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true,
"license": "MIT"
},
"node_modules/locate-path": {
@@ -10458,9 +10527,9 @@
"license": "Unicode-DFS-2016"
},
"node_modules/marked": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/marked/-/marked-17.0.2.tgz",
- "integrity": "sha512-s5HZGFQea7Huv5zZcAGhJLT3qLpAfnY7v7GWkICUr0+Wd5TFEtdlRR2XUL5Gg+RH7u2Df595ifrxR03mBaw7gA==",
+ "version": "17.0.3",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-17.0.3.tgz",
+ "integrity": "sha512-jt1v2ObpyOKR8p4XaUJVk3YWRJ5n+i4+rjQopxvV32rSndTJXvIzuUdWWIy/1pFQMkQmvTXawzDNqOH/CUmx6A==",
"license": "MIT",
"bin": {
"marked": "bin/marked.js"
@@ -10573,6 +10642,7 @@
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
"integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=18"
},
@@ -10689,7 +10759,6 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -10758,10 +10827,11 @@
"license": "MIT"
},
"node_modules/negotiator": {
- "version": "0.6.4",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
- "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">= 0.6"
}
@@ -10807,9 +10877,9 @@
}
},
"node_modules/nhsuk-decorated-components": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/nhsuk-decorated-components/-/nhsuk-decorated-components-0.6.0.tgz",
- "integrity": "sha512-CCNXCTEM5enzQ9Hbp6wV0lj1U4+Tv7HPtmj5KTPHGV00thGqzjUZtRhA2lYwFv8MLQZlZaw+P+Aybz4HQ+G6Zg==",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/nhsuk-decorated-components/-/nhsuk-decorated-components-0.4.0.tgz",
+ "integrity": "sha512-RrqaabeltIiuzBY2SXiBNZ5hUKO303HMBXciwjOHt3Ru2zM0oCTHpkspuzWtH2dycJFHlmkBpj72yP4SkNP0+A==",
"license": "MIT",
"dependencies": {
"lodash": "^4.17.21"
@@ -10827,39 +10897,38 @@
"node": "^20.9.0 || ^22.11.0 || ^24.11.0"
}
},
- "node_modules/nhsuk-prototype-rig": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/nhsuk-prototype-rig/-/nhsuk-prototype-rig-0.8.0.tgz",
- "integrity": "sha512-BZhR/Exjvhid88CsfhynU4QuxYfENFaMYFQj3TrnvfU7w2RJUILsssEfsoTBr6H3/8rxkrYnZ2z3csowHVR1Tg==",
+ "node_modules/nhsuk-prototype-kit": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/nhsuk-prototype-kit/-/nhsuk-prototype-kit-8.0.1.tgz",
+ "integrity": "sha512-F5kQRzMznSzeP5Ct2zUkcTlbieOP47fBQrfe161I6WkMKnDAYZg8Yo6CuAoL+g0Mfxy27MuN7MrNUVuJ+ulIMg==",
"license": "MIT",
+ "workspaces": [
+ ".",
+ "testapp"
+ ],
"dependencies": {
- "@inquirer/prompts": "^8.0.1",
- "@x-govuk/govuk-prototype-filters": "^2.0.0",
- "browser-sync": "^3.0.0",
- "client-sessions": "^0.8.0",
- "compression": "^1.7.4",
- "connect-pg-simple": "^10.0.0",
- "cookie-parser": "^1.4.6",
- "cosmiconfig": "^9.0.0",
- "dotenv": "^17.0.0",
- "esbuild": "^0.27.0",
+ "@inquirer/prompts": "^8.2.0",
+ "body-parser": "^2.2.1",
+ "browser-sync": "^3.0.4",
+ "cookie-parser": "^1.4.7",
+ "esbuild": "^0.27.2",
"esbuild-sass-plugin": "^3.3.1",
- "express": "^5.1.0",
- "express-rate-limit": "^8.0.0",
- "express-session": "^1.13.0",
- "lodash": "^4.17.21",
- "nhsuk-decorated-components": "^0.6.0",
- "nhsuk-frontend": "^10.3.0",
- "nodemon": "^3.1.7",
- "nunjucks": "^3.2.1",
+ "express-flash": "^0.0.2",
+ "express-session": "^1.19.0",
+ "http-proxy-node16": "^1.0.6",
+ "nodemon": "^3.1.11",
"portscanner": "^2.2.0",
- "validate.js": "^0.13.1"
- },
- "bin": {
- "nhsuk-prototype-rig": "bin/cli.js"
+ "sass-embedded": "^1.97.3",
+ "wait-on": "^9.0.3"
},
"engines": {
- "node": ">=22"
+ "node": "^22.16.0 || ^24.11.0",
+ "npm": "^11.6.1"
+ },
+ "peerDependencies": {
+ "express": "^5.2.0",
+ "nhsuk-frontend": "^10.3.0",
+ "nunjucks": "^3.2.4"
}
},
"node_modules/node-addon-api": {
@@ -10869,16 +10938,35 @@
"license": "MIT",
"optional": true
},
+ "node_modules/node-exports-info": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz",
+ "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array.prototype.flatmap": "^1.3.3",
+ "es-errors": "^1.3.0",
+ "object.entries": "^1.1.9",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/nodemon": {
- "version": "3.1.11",
- "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.11.tgz",
- "integrity": "sha512-is96t8F/1//UHAjNPHpbsNY46ELPpftGUoSVNXwUfMk/qdjSylYrWSu1XavVTBOn526kFiOR733ATgNBCQyH0g==",
+ "version": "3.1.13",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.13.tgz",
+ "integrity": "sha512-nPN6L7A9cTA3BnJ3zZIibH5FiDh3GbmibeS17bl5YEU1IRO2mcfvR0ZJXH3ndoeKItjUcaX81FSKc/Kq/IiG6g==",
"license": "MIT",
"dependencies": {
"chokidar": "^3.5.2",
"debug": "^4",
"ignore-by-default": "^1.0.1",
- "minimatch": "^3.1.2",
+ "minimatch": "^10.2.1",
"pstree.remy": "^1.1.8",
"semver": "^7.5.3",
"simple-update-notifier": "^2.0.0",
@@ -10897,6 +10985,27 @@
"url": "https://opencollective.com/nodemon"
}
},
+ "node_modules/nodemon/node_modules/balanced-match": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz",
+ "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==",
+ "license": "MIT",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/nodemon/node_modules/brace-expansion": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz",
+ "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
"node_modules/nodemon/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -10906,6 +11015,21 @@
"node": ">=4"
}
},
+ "node_modules/nodemon/node_modules/minimatch": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz",
+ "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/nodemon/node_modules/semver": {
"version": "7.7.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
@@ -10944,6 +11068,7 @@
"resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz",
"integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==",
"license": "BSD-2-Clause",
+ "peer": true,
"dependencies": {
"a-sync-waterfall": "^1.0.0",
"asap": "^2.0.3",
@@ -11111,6 +11236,7 @@
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"license": "ISC",
+ "peer": true,
"dependencies": {
"wrappy": "1"
}
@@ -11199,6 +11325,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"callsites": "^3.0.0"
@@ -11240,6 +11367,7 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.0.0",
@@ -11284,6 +11412,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -11300,6 +11429,7 @@
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
"integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
"license": "MIT",
+ "peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
@@ -11327,14 +11457,14 @@
}
},
"node_modules/pg": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/pg/-/pg-8.18.0.tgz",
- "integrity": "sha512-xqrUDL1b9MbkydY/s+VZ6v+xiMUmOUk7SS9d/1kpyQxoJ6U9AO1oIJyUWVZojbfe5Cc/oluutcgFG4L9RDP1iQ==",
+ "version": "8.16.3",
+ "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz",
+ "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==",
"license": "MIT",
"dependencies": {
- "pg-connection-string": "^2.11.0",
- "pg-pool": "^3.11.0",
- "pg-protocol": "^1.11.0",
+ "pg-connection-string": "^2.9.1",
+ "pg-pool": "^3.10.1",
+ "pg-protocol": "^1.10.3",
"pg-types": "2.2.0",
"pgpass": "1.0.5"
},
@@ -11342,7 +11472,7 @@
"node": ">= 16.0.0"
},
"optionalDependencies": {
- "pg-cloudflare": "^1.3.0"
+ "pg-cloudflare": "^1.2.7"
},
"peerDependencies": {
"pg-native": ">=3.0.1"
@@ -11354,16 +11484,16 @@
}
},
"node_modules/pg-cloudflare": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz",
- "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==",
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.7.tgz",
+ "integrity": "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==",
"license": "MIT",
"optional": true
},
"node_modules/pg-connection-string": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.11.0.tgz",
- "integrity": "sha512-kecgoJwhOpxYU21rZjULrmrBJ698U2RxXofKVzOn5UDj61BPj/qMb7diYUR1nLScCDbrztQFl1TaQZT0t1EtzQ==",
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz",
+ "integrity": "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==",
"license": "MIT"
},
"node_modules/pg-int8": {
@@ -11376,18 +11506,18 @@
}
},
"node_modules/pg-pool": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.11.0.tgz",
- "integrity": "sha512-MJYfvHwtGp870aeusDh+hg9apvOe2zmpZJpyt+BMtzUWlVqbhFmMK6bOBXLBUPd7iRtIF9fZplDc7KrPN3PN7w==",
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.1.tgz",
+ "integrity": "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==",
"license": "MIT",
"peerDependencies": {
"pg": ">=8.0"
}
},
"node_modules/pg-protocol": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.11.0.tgz",
- "integrity": "sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==",
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz",
+ "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==",
"license": "MIT"
},
"node_modules/pg-types": {
@@ -11419,6 +11549,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
"license": "ISC"
},
"node_modules/picomatch": {
@@ -11605,9 +11736,9 @@
}
},
"node_modules/postgres-bytea": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz",
- "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
+ "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -11677,6 +11808,7 @@
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
@@ -11685,6 +11817,12 @@
"node": ">= 0.10"
}
},
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
+ },
"node_modules/pstree.remy": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
@@ -11919,6 +12057,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=4"
@@ -11999,6 +12138,7 @@
"resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
"integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"debug": "^4.4.0",
"depd": "^2.0.0",
@@ -12015,6 +12155,7 @@
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">= 0.8"
}
@@ -12054,7 +12195,6 @@
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"tslib": "^2.1.0"
}
@@ -12171,7 +12311,6 @@
"resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.97.3.tgz",
"integrity": "sha512-eKzFy13Nk+IRHhlAwP3sfuv+PzOrvzUkwJK2hdoCKYcWGSdmwFpeGpWmyewdw8EgBnsKaSBtgf/0b2K635ecSA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@bufbuild/protobuf": "^2.5.0",
"colorjs.io": "^0.5.0",
@@ -12220,7 +12359,6 @@
],
"license": "MIT",
"optional": true,
- "peer": true,
"dependencies": {
"sass": "1.97.3"
}
@@ -12237,7 +12375,6 @@
"os": [
"android"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12254,7 +12391,6 @@
"os": [
"android"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12271,7 +12407,6 @@
"os": [
"android"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12288,7 +12423,6 @@
"os": [
"android"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12305,7 +12439,6 @@
"os": [
"darwin"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12322,7 +12455,6 @@
"os": [
"darwin"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12339,7 +12471,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12356,7 +12487,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12373,7 +12503,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12390,7 +12519,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12407,7 +12535,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12424,7 +12551,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12441,7 +12567,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12458,7 +12583,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12475,7 +12599,6 @@
"!linux",
"!win32"
],
- "peer": true,
"dependencies": {
"sass": "1.97.3"
}
@@ -12492,7 +12615,6 @@
"os": [
"win32"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12509,7 +12631,6 @@
"os": [
"win32"
],
- "peer": true,
"engines": {
"node": ">=14.0.0"
}
@@ -12518,15 +12639,13 @@
"version": "5.1.4",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz",
"integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/sass-embedded/node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"license": "MIT",
- "peer": true,
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -12575,6 +12694,7 @@
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -12813,6 +12933,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
@@ -12825,6 +12946,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -13632,7 +13754,6 @@
"resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz",
"integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"sync-message-port": "^1.0.0"
},
@@ -13645,7 +13766,6 @@
"resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.2.0.tgz",
"integrity": "sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=16.0.0"
}
@@ -13805,8 +13925,7 @@
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "license": "0BSD",
- "peer": true
+ "license": "0BSD"
},
"node_modules/type-check": {
"version": "0.4.0",
@@ -13917,7 +14036,7 @@
"version": "5.9.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
- "devOptional": true,
+ "dev": true,
"license": "Apache-2.0",
"peer": true,
"bin": {
@@ -14016,9 +14135,9 @@
"license": "MIT"
},
"node_modules/undici-types": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
- "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
+ "version": "7.18.2",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
+ "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
"license": "MIT"
},
"node_modules/unist-util-stringify-position": {
@@ -14079,18 +14198,11 @@
"node": ">= 0.4.0"
}
},
- "node_modules/validate.js": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/validate.js/-/validate.js-0.13.1.tgz",
- "integrity": "sha512-PnFM3xiZ+kYmLyTiMgTYmU7ZHkjBZz2/+F0DaALc/uUtVzdCt1wAosvYJ5hFQi/hz8O4zb52FQhHZRC+uVkJ+g==",
- "license": "MIT"
- },
"node_modules/varint": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz",
"integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/vary": {
"version": "1.1.2",
@@ -14101,10 +14213,30 @@
"node": ">= 0.8"
}
},
+ "node_modules/wait-on": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-9.0.4.tgz",
+ "integrity": "sha512-k8qrgfwrPVJXTeFY8tl6BxVHiclK11u72DVKhpybHfUL/K6KM4bdyK9EhIVYGytB5MJe/3lq4Tf0hrjM+pvJZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "axios": "^1.13.5",
+ "joi": "^18.0.2",
+ "lodash": "^4.17.23",
+ "minimist": "^1.2.8",
+ "rxjs": "^7.8.2"
+ },
+ "bin": {
+ "wait-on": "bin/wait-on"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
"license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
@@ -14236,7 +14368,8 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "license": "ISC"
+ "license": "ISC",
+ "peer": true
},
"node_modules/write-file-atomic": {
"version": "5.0.1",
diff --git a/package.json b/package.json
index 616149dde..0e714531d 100644
--- a/package.json
+++ b/package.json
@@ -1,14 +1,17 @@
{
"name": "manage-vaccinations-in-schools-prototype",
"version": "2.0.0",
+ "private": true,
"description": "Manage vaccinations in schools prototype",
"keywords": [
"nhsuk",
"prototype"
],
"license": "MIT",
+ "type": "module",
+ "main": "app.js",
"scripts": {
- "create-data": "node lib/create-data.js",
+ "create-data": "node --env-file-if-exists=.env lib/create-data.js",
"lint:prettier": "prettier . --check",
"lint:prettier:fix": "prettier . --write",
"lint:js": "eslint '**/*.js'",
@@ -18,21 +21,24 @@
"lint": "npm run lint:prettier && npm run lint:js && npm run lint:css",
"lint:fix": "npm run lint:prettier:fix && npm run lint:js:fix && npm run lint:css:fix",
"build": "bin/build.sh",
- "start": "nhsuk-prototype-rig",
+ "start": "node .",
"postinstall": "npm run create-data"
},
"dependencies": {
"@faker-js/faker": "^10.0.0",
+ "@x-govuk/govuk-prototype-filters": "^2.1.0",
"@x-govuk/govuk-prototype-wizard": "^0.4.0",
"accessible-autocomplete": "^3.0.1",
+ "connect-pg-simple": "^10.0.0",
"countries-and-timezones": "^3.8.0",
"date-fns": "^4.0.0",
- "dotenv": "^17.0.0",
"express-flash": "^0.0.2",
"i18n": "^0.15.1",
"json-as-xlsx": "^2.5.6",
"lodash": "^4.17.21",
- "nhsuk-prototype-rig": "^0.8.0",
+ "nhsuk-decorated-components": "^0.4.0",
+ "nhsuk-frontend": "^10.2",
+ "nhsuk-prototype-kit": "^8.0.1",
"response-time": "^2.3.3"
},
"devDependencies": {
@@ -45,15 +51,5 @@
},
"engines": {
"node": "^22.21"
- },
- "private": true,
- "type": "module",
- "prototype": {
- "nunjucksPaths": [
- "./node_modules/govuk-frontend/dist",
- "./node_modules/@x-govuk/govuk-prototype-components/src"
- ],
- "serviceName": "Manage vaccinations in schools",
- "templateExtension": "njk"
}
}