From 8ad344225abd6c6c8ce854d372c785f207c19333 Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Tue, 30 Jan 2024 15:02:48 +0000 Subject: [PATCH 01/23] First pass at CSV upload (technical prototype) --- app/assets/sass/application.scss | 5 + app/routes.js | 13 + app/views/TDR-3731/csv-checks.html | 52 ++++ app/views/TDR-3731/csv-results-errors.html | 265 ++++++++++++++++++ app/views/TDR-3731/csv-results.html | 53 ++++ app/views/TDR-3731/file-checks-results.html | 70 +++++ app/views/TDR-3731/how-to-enter-metadata.html | 45 +++ app/views/TDR-3731/upload-checks.html | 62 ++++ app/views/TDR-3731/upload-csv.html | 51 ++++ .../TDR-3731/upload-records-results.html | 48 ++++ 10 files changed, 664 insertions(+) create mode 100644 app/views/TDR-3731/csv-checks.html create mode 100644 app/views/TDR-3731/csv-results-errors.html create mode 100644 app/views/TDR-3731/csv-results.html create mode 100644 app/views/TDR-3731/file-checks-results.html create mode 100644 app/views/TDR-3731/how-to-enter-metadata.html create mode 100644 app/views/TDR-3731/upload-checks.html create mode 100644 app/views/TDR-3731/upload-csv.html create mode 100644 app/views/TDR-3731/upload-records-results.html diff --git a/app/assets/sass/application.scss b/app/assets/sass/application.scss index d52dca20..4396d771 100644 --- a/app/assets/sass/application.scss +++ b/app/assets/sass/application.scss @@ -119,6 +119,11 @@ width: 100%; } +.hidden { + visibility: hidden; + height:0; +} + .showBanner { animation: showBlock 0s 10s forwards; visibility: hidden; diff --git a/app/routes.js b/app/routes.js index 36c8a25e..125f4c64 100644 --- a/app/routes.js +++ b/app/routes.js @@ -137,6 +137,19 @@ const populateWithClosureData = (req, res) => { // Add your routes here +router.post( + "/TDR-3731/metadata-route", + function(req, res){ + + const route = req.session.data['metadata-route'] + if (route == "csv"){ + res.redirect("/TDR-3731/upload-csv") + } else { + // response.redirect("/ineligible-country") + } + + }) + router.get( "/metadata/descriptive-metadata/confirm-delete-metadata", function (req, res) { diff --git a/app/views/TDR-3731/csv-checks.html b/app/views/TDR-3731/csv-checks.html new file mode 100644 index 00000000..d3ef6527 --- /dev/null +++ b/app/views/TDR-3731/csv-checks.html @@ -0,0 +1,52 @@ +{% extends "layouts/main.html" %} + +{% block pageTitle %} + Checking your CSV +{% endblock %} + +{% block content %} + +
+
+ + Consignment: MOCK-TDR-1294 +

+ Checking your metadata CSV +

+ +

Please wait while we check your CSV against the uploaded records. This may take a few minutes.

+ + + + + +
+ + + +{% endblock %} diff --git a/app/views/TDR-3731/csv-results-errors.html b/app/views/TDR-3731/csv-results-errors.html new file mode 100644 index 00000000..c1e1b784 --- /dev/null +++ b/app/views/TDR-3731/csv-results-errors.html @@ -0,0 +1,265 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/summary-list/macro.njk" import govukSummaryList %} + +{% block pageTitle %} + Results of CSV checks - Errors found +{% endblock %} + +{% block beforeContent %} + {# Consignment: MOCK-TDR-1294 #} +{% endblock %} + +{% block content %} + +
+
+ + Consignment: MOCK-TDR-1294 +

+ CSV upload results +

+ + {{ govukSummaryList({ + rows: [ + { + key: { text: "Status" }, + value: { html: "Errors found" } + }, + { + key: { text: "File name" }, + value: { html: "transfer-metadata-23.09.11.csv" } + }, + { + key: { text: "Records in this consigment" }, + value: { text: "1200" } + }, + { + key: { text: "Rows found in CSV" }, + value: { text: "1198" } + }, + { + key: { text: "Errors found" }, + value: { text: "5" } + } + ] + }) }} + +

There were issues with your upload. Download the CSV below containing more details on the issues.

+

Once you have fixed the issues re-upload the CSV.

+ + +{# +

+ Errors found in your CSV upload +

+ + {{ govukSummaryList({ + card: { + title: { + html: "#1 Record with missing row" + } + }, + rows: [ + { + key: { + text: "Error" + }, + value: { + text: "An uploaded record does not have a matching row in the CSV" + } + }, + { + key: { + text: "Record name" + }, + value: { + html: "Fresh.png" + } + }, + { + key: { + text: "Full path" + }, + value: { + html: "/Cake Basics/Rising agents/Fresh.png" + } + }, + { + key: { + text: "How to fix" + }, + value: { + html: "Add a row to your CSV for this record or use the metadata CSV template." + } + } + ] + }) }} + + {{ govukSummaryList({ + card: { + title: { + html: "#2 Record with missing row" + } + }, + rows: [ + { + key: { + text: "Error" + }, + value: { + text: "An uploaded record does not have a matching row in the CSV" + } + }, + { + key: { + text: "Record name" + }, + value: { + html: "Red velvet.xlsx" + } + }, + { + key: { + text: "Full path" + }, + value: { + html: "/Cupcakes/Red velvet.xlsx" + } + }, + { + key: { + text: "How to fix" + }, + value: { + html: "Add a row to your CSV for this record or use the metadata CSV template." + } + } + ] + }) }} + + + {{ govukSummaryList({ + card: { + title: { + html: "#3 Column not recognised" + } + }, + rows: [ + { + key: { + text: "Error" + }, + value: { + html: "We found a column (Internal reference) that isn't recognised." + } + }, + { + key: { + text: "How to fix" + }, + value: { + html: "Remove the column (Internal reference) or contact a Transfer Advisor." + } + } + ] + }) }} + + {{ govukSummaryList({ + card: { + title: { + html: "#4 Duplicate column" + } + }, + rows: [ + { + key: { + text: "Error" + }, + value: { + html: "We found multiple columns with the same name: Description." + } + }, + { + key: { + text: "How to fix" + }, + value: { + html: "Ensure there is a only one Description column." + } + } + ] + }) }} + + {{ govukSummaryList({ + card: { + title: { + html: "#5 Data provided for Closure Start Date not recognised" + } + }, + rows: [ + { + key: { + text: "Error" + }, + value: { + text: "The data provided for Closure Start date was not recognised or is malformed." + } + }, + { + key: { + text: "Record name" + }, + value: { + html: "Fresh.png" + } + }, + { + key: { + text: "Full path" + }, + value: { + html: "/Cake Basics/Rising agents/Fresh.png" + } + }, + { + key: { + text: "Data found" + }, + value: { + html: "12/13/2009" + } + }, + { + key: { + text: "Format required" + }, + value: { + html: "Date in format: DD/MM/YYYY" + } + }, + { + key: { + text: "Cell location (column and row)" + }, + value: { + html: "E259" + } + }, + { + key: { + text: "How to fix" + }, + value: { + html: "Provide a date in the expected format." + } + } + ] + }) }} #} + +
+
+ +{% endblock %} diff --git a/app/views/TDR-3731/csv-results.html b/app/views/TDR-3731/csv-results.html new file mode 100644 index 00000000..435b52ff --- /dev/null +++ b/app/views/TDR-3731/csv-results.html @@ -0,0 +1,53 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/summary-list/macro.njk" import govukSummaryList %} + +{% block pageTitle %} + Results of CSV checks +{% endblock %} + +{% block beforeContent %} + {# Consignment: MOCK-TDR-1294 #} +{% endblock %} + +{% block content %} + +
+
+ + Consignment: MOCK-TDR-1294 +

+ Results of your CSV checks +

+ +

Your CSV has been successfully uploaded and the metadata has been imported.

+ {{ govukSummaryList({ + rows: [ + { + key: { text: "Status" }, + value: { html: "Imported" } + }, + { + key: { text: "File name" }, + value: { html: "transfer-metadata-23.09.11.csv" } + }, + { + key: { text: "Rows with matching records" }, + value: { text: "1200" } + }, + { + key: { text: "Errors found" }, + value: { text: "0" } + } + ] + + }) }} + + +
+
+ +{% endblock %} diff --git a/app/views/TDR-3731/file-checks-results.html b/app/views/TDR-3731/file-checks-results.html new file mode 100644 index 00000000..24715bfa --- /dev/null +++ b/app/views/TDR-3731/file-checks-results.html @@ -0,0 +1,70 @@ +{% extends "layouts/main.html" %} + +{% block pageTitle %} + Results of checks +{% endblock %} + +{% block content %} + +
+
+ + Step 4 of 7 +

+ Results of your record checks +

+ + +
+ + + Warning + Now that your records have been uploaded you can proceed with the transfer. In the next step you will be given the opportunity to add metadata to your records before transferring them. +
+ + {# #} + + Next + + +
+ +
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ +{% endblock %} diff --git a/app/views/TDR-3731/how-to-enter-metadata.html b/app/views/TDR-3731/how-to-enter-metadata.html new file mode 100644 index 00000000..ab6ee0ab --- /dev/null +++ b/app/views/TDR-3731/how-to-enter-metadata.html @@ -0,0 +1,45 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/radios/macro.njk" import govukRadios %} + +{% block pageTitle %} + How would you like to enter record metadata? +{% endblock %} + +{% block content %} +
+ {{ govukRadios({ + name: "metadata-route", + fieldset: { + legend: { + text: "How would you like to enter record metadata?", + isPageHeading: true, + classes: "govuk-fieldset__legend--l" + } + }, + hint: { + text: "" + }, + items: [ + { + value: "website", + text: "Manually enter", + hint: { + text: "Select records and enter metadata through forms on this website" + } + }, + { + value: "csv", + text: "Upload a CSV", + hint: { + text: "Populate a CSV with metadata in a specific format and upload" + } + } + ] + }) }} + + {{ govukButton({ + text: "Continue" + }) }} +
+ +{% endblock %} diff --git a/app/views/TDR-3731/upload-checks.html b/app/views/TDR-3731/upload-checks.html new file mode 100644 index 00000000..923de160 --- /dev/null +++ b/app/views/TDR-3731/upload-checks.html @@ -0,0 +1,62 @@ +{% extends "layouts/main.html" %} + +{% block pageTitle %} + Checking records +{% endblock %} + +{% block content %} + +
+
+ + Consignment: MOCK-TDR-1294 +

+ Checking your records +

+ +

Please wait while your records are being checked. This may take a few minutes.

+

The following checks are now being performed:

+
    +
  • Anti-virus scanning
  • +
  • Identifying file formats
  • +
  • Validating data integrity
  • +
+ +

For more information on these checks, please see our + FAQ (opens in new tab) for this service. +

+ + + + + +
+ + + +{% endblock %} diff --git a/app/views/TDR-3731/upload-csv.html b/app/views/TDR-3731/upload-csv.html new file mode 100644 index 00000000..db18db5b --- /dev/null +++ b/app/views/TDR-3731/upload-csv.html @@ -0,0 +1,51 @@ +{% from "govuk/components/warning-text/macro.njk" import govukWarningText %} +{% from "govuk/components/file-upload/macro.njk" import govukFileUpload %} + +{% extends "layouts/main.html" %} + +{% block pageTitle %} + Upload a completed transfer metadata CSV - MOCK-TDR-1294 - Transfer Digital Records +{% endblock %} + +{% block beforeContent %} + How would you like to enter metadata? +{% endblock %} + +{% block content %} + +
+
+ + Consignment: MOCK-TDR-1294 +

Upload a CSV with record metadata

+ + {% if data['csv-upload-status'] == "failed" %} + {{ govukWarningText({ + text: "Uploading a new or amended CSV will overwrite any metadata imported from a previous CSV.", + iconFallbackText: "Warning" + }) }} + {% endif %} + +

Upload a metadata CSV with a row for every record in your consignment. The CSV must contain specific populated columns for a successful upload.

+

For more information on the CSV structure and content, visit the metadata guidance page.

+ + {{ govukFileUpload({ + id: "file-upload-1", + name: "fileUpload", + label: { + text: "Select a CSV", + classes: "govuk-!-font-weight-bold" + } + }) }} + + + + +
+
+ +{% endblock %} diff --git a/app/views/TDR-3731/upload-records-results.html b/app/views/TDR-3731/upload-records-results.html new file mode 100644 index 00000000..a4c1eefe --- /dev/null +++ b/app/views/TDR-3731/upload-records-results.html @@ -0,0 +1,48 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/summary-list/macro.njk" import govukSummaryList %} + +{% block pageTitle %} + Results of your record checks +{% endblock %} + +{% block beforeContent %} + {# Consignment: MOCK-TDR-1294 #} +{% endblock %} + +{% block content %} + +
+
+ + Consignment: MOCK-TDR-1294 +

+ Results of your record checks +

+

Your records have been successfully uploaded.

+ {{ govukSummaryList({ + rows: [ + { + key: { text: "Status" }, + value: { html: "Uploaded" } + }, + { + key: { text: "Uploaded directory" }, + value: { text: "Recipes and Ingredients" } + }, + { + key: { text: "Errors found" }, + value: { text: "0" } + } + ] + }) }} + + + +
+
+ +{% endblock %} From 01df6a14eb05006d36a0fb0e1f6fa36b7b3b44b3 Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Wed, 14 Feb 2024 13:49:43 +0000 Subject: [PATCH 02/23] Updates for implementation and content work --- app/assets/sass/application.scss | 3 + app/views/TDR-3731/csv-checks.html | 2 +- app/views/TDR-3731/csv-results.html | 6 +- app/views/TDR-3731/file-checks-results.html | 70 --------------- app/views/TDR-3731/how-to-enter-metadata.html | 88 ++++++++++++------- app/views/TDR-3731/upload-checks.html | 2 +- app/views/TDR-3731/upload-csv.html | 46 +++++++++- .../TDR-3731/upload-records-results.html | 2 +- 8 files changed, 107 insertions(+), 112 deletions(-) delete mode 100644 app/views/TDR-3731/file-checks-results.html diff --git a/app/assets/sass/application.scss b/app/assets/sass/application.scss index 4396d771..2b51d9b2 100644 --- a/app/assets/sass/application.scss +++ b/app/assets/sass/application.scss @@ -495,3 +495,6 @@ text-align: center; } +.govuk-list--inline-pre pre { + display: inline; +} diff --git a/app/views/TDR-3731/csv-checks.html b/app/views/TDR-3731/csv-checks.html index d3ef6527..dd67ff60 100644 --- a/app/views/TDR-3731/csv-checks.html +++ b/app/views/TDR-3731/csv-checks.html @@ -9,7 +9,7 @@
- Consignment: MOCK-TDR-1294 + Step 5 of 7

Checking your metadata CSV

diff --git a/app/views/TDR-3731/csv-results.html b/app/views/TDR-3731/csv-results.html index 435b52ff..fabbf7f7 100644 --- a/app/views/TDR-3731/csv-results.html +++ b/app/views/TDR-3731/csv-results.html @@ -14,7 +14,7 @@
- Consignment: MOCK-TDR-1294 + Step 5 of 7

Results of your CSV checks

@@ -42,8 +42,8 @@

}) }} diff --git a/app/views/TDR-3731/file-checks-results.html b/app/views/TDR-3731/file-checks-results.html deleted file mode 100644 index 24715bfa..00000000 --- a/app/views/TDR-3731/file-checks-results.html +++ /dev/null @@ -1,70 +0,0 @@ -{% extends "layouts/main.html" %} - -{% block pageTitle %} - Results of checks -{% endblock %} - -{% block content %} - -
-
- - Step 4 of 7 -

- Results of your record checks -

- - -
- - - Warning - Now that your records have been uploaded you can proceed with the transfer. In the next step you will be given the opportunity to add metadata to your records before transferring them. -
- - {# #} - - Next - - -
- -
-
- - - Consignment reference - - -
- MOCK-123-TDR -
-
-
-
- -{% endblock %} diff --git a/app/views/TDR-3731/how-to-enter-metadata.html b/app/views/TDR-3731/how-to-enter-metadata.html index ab6ee0ab..ae4c76ae 100644 --- a/app/views/TDR-3731/how-to-enter-metadata.html +++ b/app/views/TDR-3731/how-to-enter-metadata.html @@ -5,41 +5,63 @@ How would you like to enter record metadata? {% endblock %} +{% block beforeContent %} + Results of your record checks +{% endblock %} + {% block content %} -
- {{ govukRadios({ - name: "metadata-route", - fieldset: { - legend: { - text: "How would you like to enter record metadata?", - isPageHeading: true, - classes: "govuk-fieldset__legend--l" - } - }, - hint: { - text: "" - }, - items: [ - { - value: "website", - text: "Manually enter", - hint: { - text: "Select records and enter metadata through forms on this website" - } - }, - { - value: "csv", - text: "Upload a CSV", + +
+
+ + + {{ govukRadios({ + name: "metadata-route", + fieldset: { + legend: { + text: "How would you like to enter record metadata?", + isPageHeading: true, + classes: "govuk-fieldset__legend--l" + } + }, hint: { - text: "Populate a CSV with metadata in a specific format and upload" - } - } - ] - }) }} + text: "" + }, + items: [ + { + value: "website", + text: "Select records and add metadata", + hint: { + text: "Better for small amounts of metadata" + } + }, + { + value: "csv", + text: "Add metadata to a CSV and upload", + hint: { + text: "Better for large amounts of metadata" + } + } + ] + }) }} - {{ govukButton({ - text: "Continue" - }) }} - + {{ govukButton({ + text: "Continue" + }) }} + +
+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
{% endblock %} diff --git a/app/views/TDR-3731/upload-checks.html b/app/views/TDR-3731/upload-checks.html index 923de160..c666ccdf 100644 --- a/app/views/TDR-3731/upload-checks.html +++ b/app/views/TDR-3731/upload-checks.html @@ -9,7 +9,7 @@
- Consignment: MOCK-TDR-1294 + Step 4 of 7

Checking your records

diff --git a/app/views/TDR-3731/upload-csv.html b/app/views/TDR-3731/upload-csv.html index db18db5b..2a00c027 100644 --- a/app/views/TDR-3731/upload-csv.html +++ b/app/views/TDR-3731/upload-csv.html @@ -16,7 +16,7 @@
- Consignment: MOCK-TDR-1294 + Step 5 of 7

Upload a CSV with record metadata

{% if data['csv-upload-status'] == "failed" %} @@ -26,8 +26,36 @@

Upload a CSV with record metadata

}) }} {% endif %} -

Upload a metadata CSV with a row for every record in your consignment. The CSV must contain specific populated columns for a successful upload.

-

For more information on the CSV structure and content, visit the metadata guidance page.

+

In your CSV include a row for the column titles and one row for every record that requires metadata.

+
+ + + What column titles should I use? + + +
+

Other than the two mandatory titles, only include those necessary for your metadata

+
    +
  • indentifier (mandatory)
  • +
  • file_name (mandatory)
  • +
  • description
  • +
  • end_date
  • +
  • foi_exemption_asserted
  • +
  • closure_period
  • +
  • closure_start_date
  • +
  • title_public
  • +
  • title_alternate
  • +
  • description_public
  • +
  • description_alternate
  • + {#
  • date of the record - Date format as follows:
    DD/MM/YYYY
  • +
  • foi exemption code - One or more comma separated, for example
    22, 27(1), 24
  • +
  • closure period - Years as a number, for example
    80
  • +
  • closure start date - Date format as follows:
    DD/MM/YYYY
  • #} +
+
+
+ + {#

For more information on the CSV structure and content, visit the metadata guidance page.

#} {{ govukFileUpload({ id: "file-upload-1", @@ -46,6 +74,18 @@

Upload a CSV with record metadata

+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
{% endblock %} diff --git a/app/views/TDR-3731/upload-records-results.html b/app/views/TDR-3731/upload-records-results.html index a4c1eefe..7fb4507c 100644 --- a/app/views/TDR-3731/upload-records-results.html +++ b/app/views/TDR-3731/upload-records-results.html @@ -14,7 +14,7 @@
- Consignment: MOCK-TDR-1294 + Step 4 of 7

Results of your record checks

From 04838a880e0d567bab3a7487cf9cca14d1f75278 Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Thu, 15 Feb 2024 09:37:39 +0000 Subject: [PATCH 03/23] Minor copy changes --- app/views/TDR-3731/upload-csv.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/TDR-3731/upload-csv.html b/app/views/TDR-3731/upload-csv.html index 2a00c027..17a9ea6d 100644 --- a/app/views/TDR-3731/upload-csv.html +++ b/app/views/TDR-3731/upload-csv.html @@ -26,7 +26,7 @@

Upload a CSV with record metadata

}) }} {% endif %} -

In your CSV include a row for the column titles and one row for every record that requires metadata.

+

In your CSV, include a row for the column titles and one row for every record that requires metadata.

@@ -34,9 +34,9 @@

Upload a CSV with record metadata

-

Other than the two mandatory titles, only include those necessary for your metadata

+

Other than the two mandatory columns, only include those necessary for your metadata

    -
  • indentifier (mandatory)
  • +
  • identifier (mandatory)
  • file_name (mandatory)
  • description
  • end_date
  • From f84aa2be0b9bb1da6029d3aedcfbb3b63ccebbbd Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Thu, 15 Feb 2024 09:55:57 +0000 Subject: [PATCH 04/23] Minor copy change --- app/views/TDR-3731/upload-csv.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/TDR-3731/upload-csv.html b/app/views/TDR-3731/upload-csv.html index 17a9ea6d..a141598b 100644 --- a/app/views/TDR-3731/upload-csv.html +++ b/app/views/TDR-3731/upload-csv.html @@ -26,7 +26,7 @@

    Upload a CSV with record metadata

    }) }} {% endif %} -

    In your CSV, include a row for the column titles and one row for every record that requires metadata.

    +

    In your CSV, include a header row for the column titles and one row for every record that requires metadata.

    From c7ba89e0ff863e5c4e605adcbb7fef56e704c42d Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Fri, 16 Feb 2024 09:09:06 +0000 Subject: [PATCH 05/23] Removed CSV where possible --- app/views/TDR-3731/csv-checks.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/TDR-3731/csv-checks.html b/app/views/TDR-3731/csv-checks.html index dd67ff60..bae9b184 100644 --- a/app/views/TDR-3731/csv-checks.html +++ b/app/views/TDR-3731/csv-checks.html @@ -1,7 +1,7 @@ {% extends "layouts/main.html" %} {% block pageTitle %} - Checking your CSV + Checking your metadata {% endblock %} {% block content %} @@ -11,10 +11,10 @@ Step 5 of 7

    - Checking your metadata CSV + Checking your metadata

    -

    Please wait while we check your CSV against the uploaded records. This may take a few minutes.

    +

    Please wait while we check your metadata against the uploaded records. This may take a few minutes.

-
- - {#

For more information on the CSV structure and content, visit the metadata guidance page.

#} + #} {{ govukFileUpload({ id: "file-upload-1", From 4da0a5db4417332767e19b3bed207a3082502070 Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Fri, 16 Feb 2024 11:47:07 +0000 Subject: [PATCH 08/23] Copy edits --- app/views/TDR-3731/csv-results.html | 4 ---- app/views/TDR-3731/upload-csv.html | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/views/TDR-3731/csv-results.html b/app/views/TDR-3731/csv-results.html index 1d10d1f9..da29afb2 100644 --- a/app/views/TDR-3731/csv-results.html +++ b/app/views/TDR-3731/csv-results.html @@ -30,10 +30,6 @@

key: { text: "File name" }, value: { html: "transfer-metadata-23.09.11.csv" } }, - { - key: { text: "Rows with matching records" }, - value: { text: "1200" } - }, { key: { text: "Errors found" }, value: { text: "0" } diff --git a/app/views/TDR-3731/upload-csv.html b/app/views/TDR-3731/upload-csv.html index 2f3627b5..2802c23f 100644 --- a/app/views/TDR-3731/upload-csv.html +++ b/app/views/TDR-3731/upload-csv.html @@ -17,7 +17,7 @@
Step 5 of 7 -

Upload a CSV with record metadata

+

Upload a metadata CSV

{% if data['csv-upload-status'] == "failed" %} {{ govukWarningText({ From 83e721d2f98ef097f8ec4fac5f129520d358d786 Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Fri, 16 Feb 2024 15:21:36 +0000 Subject: [PATCH 09/23] Pairing back results page features. --- app/views/TDR-3731/csv-results-errors.html | 11 ++++++++++- app/views/TDR-3731/csv-results.html | 8 -------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/views/TDR-3731/csv-results-errors.html b/app/views/TDR-3731/csv-results-errors.html index 3e472f6e..714c0b21 100644 --- a/app/views/TDR-3731/csv-results-errors.html +++ b/app/views/TDR-3731/csv-results-errors.html @@ -22,6 +22,15 @@

Your uploaded metadata file contains some errors.

{{ govukSummaryList({ + rows: [ + { + key: { text: "Status" }, + value: { html: "Errors found" } + } + ] + }) }} + + {# {{ govukSummaryList({ rows: [ { key: { text: "Status" }, @@ -48,7 +57,7 @@

value: { text: "5" } } ] - }) }} + }) }} #}

There are issues with your CSV upload. Download the CSV for more details about the issues.

Once you have addressed the issues, upload the revised CSV.

diff --git a/app/views/TDR-3731/csv-results.html b/app/views/TDR-3731/csv-results.html index da29afb2..e2bc471d 100644 --- a/app/views/TDR-3731/csv-results.html +++ b/app/views/TDR-3731/csv-results.html @@ -25,14 +25,6 @@

{ key: { text: "Status" }, value: { html: "Imported" } - }, - { - key: { text: "File name" }, - value: { html: "transfer-metadata-23.09.11.csv" } - }, - { - key: { text: "Errors found" }, - value: { text: "0" } } ] From af19e28ea6add78863f172dc9063f126318a2b9d Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Fri, 16 Feb 2024 16:49:51 +0000 Subject: [PATCH 10/23] Adding a option to bypass metadata --- app/views/TDR-3731/how-to-enter-metadata.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/views/TDR-3731/how-to-enter-metadata.html b/app/views/TDR-3731/how-to-enter-metadata.html index ae4c76ae..8e465956 100644 --- a/app/views/TDR-3731/how-to-enter-metadata.html +++ b/app/views/TDR-3731/how-to-enter-metadata.html @@ -41,6 +41,13 @@ hint: { text: "Better for large amounts of metadata" } + }, + { + value: "none", + text: "I don't have any metadata", + hint: { + text: "" + } } ] }) }} From 0ac4985ca1fd714b642930edec9df25b50a16803 Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Mon, 19 Feb 2024 10:33:25 +0000 Subject: [PATCH 11/23] Missing copy --- app/views/TDR-3731/csv-results-errors.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/TDR-3731/csv-results-errors.html b/app/views/TDR-3731/csv-results-errors.html index 714c0b21..3c889bfb 100644 --- a/app/views/TDR-3731/csv-results-errors.html +++ b/app/views/TDR-3731/csv-results-errors.html @@ -62,7 +62,7 @@

There are issues with your CSV upload. Download the CSV for more details about the issues.

Once you have addressed the issues, upload the revised CSV.

From 63cfdb562aa809ffd6839600dc4c584c883b7407 Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Wed, 28 Feb 2024 15:56:14 +0000 Subject: [PATCH 12/23] Error page --- .../TDR-3731/how-to-enter-metadata-error.html | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 app/views/TDR-3731/how-to-enter-metadata-error.html diff --git a/app/views/TDR-3731/how-to-enter-metadata-error.html b/app/views/TDR-3731/how-to-enter-metadata-error.html new file mode 100644 index 00000000..ce55382a --- /dev/null +++ b/app/views/TDR-3731/how-to-enter-metadata-error.html @@ -0,0 +1,87 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/radios/macro.njk" import govukRadios %} +{% from "govuk/components/error-summary/macro.njk" import govukErrorSummary %} + +{% block pageTitle %} + How would you like to enter record metadata? +{% endblock %} + +{% block beforeContent %} + Results of your record checks +{% endblock %} + +{% block content %} + +
+
+ + {{ govukErrorSummary({ + titleText: "There is a problem", + errorList: [ + { + text: "Choose a way of entering metadata", + href: "#metadata-route-hint" + } + ] + }) }} +
+ {{ govukRadios({ + name: "metadata-route", + fieldset: { + legend: { + text: "How would you like to enter record metadata?", + isPageHeading: true, + classes: "govuk-fieldset__legend--l" + } + }, + hint: { + text: "" + }, + items: [ + { + value: "website", + text: "Select records and add metadata", + hint: { + text: "Better for small amounts of metadata" + } + }, + { + value: "csv", + text: "Add metadata to a CSV and upload", + hint: { + text: "Better for large amounts of metadata" + } + }, + { + value: "none", + text: "I don't have any metadata", + hint: { + text: "" + } + } + ], + errorMessage: { + text: "Choose a way of entering metadata" + } + }) }} + + {{ govukButton({ + text: "Continue" + }) }} +
+
+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ +{% endblock %} From f890effa738a172fa80c3950ace798160b172382 Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Tue, 5 Mar 2024 15:51:21 +0000 Subject: [PATCH 13/23] New pages for errors --- app/routes.js | 4 +- app/views/TUX-12/csv-checks.html | 52 +++++++++++++ app/views/TUX-12/csv-results-failed.html | 52 +++++++++++++ app/views/TUX-12/how-to-enter-metadata.html | 74 ++++++++++++++++++ app/views/TUX-12/upload-checks.html | 62 +++++++++++++++ app/views/TUX-12/upload-csv-error.html | 79 ++++++++++++++++++++ app/views/TUX-12/upload-csv.html | 64 ++++++++++++++++ app/views/TUX-12/upload-records-results.html | 48 ++++++++++++ 8 files changed, 433 insertions(+), 2 deletions(-) create mode 100644 app/views/TUX-12/csv-checks.html create mode 100644 app/views/TUX-12/csv-results-failed.html create mode 100644 app/views/TUX-12/how-to-enter-metadata.html create mode 100644 app/views/TUX-12/upload-checks.html create mode 100644 app/views/TUX-12/upload-csv-error.html create mode 100644 app/views/TUX-12/upload-csv.html create mode 100644 app/views/TUX-12/upload-records-results.html diff --git a/app/routes.js b/app/routes.js index 125f4c64..1eccb59b 100644 --- a/app/routes.js +++ b/app/routes.js @@ -138,12 +138,12 @@ const populateWithClosureData = (req, res) => { // Add your routes here router.post( - "/TDR-3731/metadata-route", + "/:ticketId/metadata-route", function(req, res){ const route = req.session.data['metadata-route'] if (route == "csv"){ - res.redirect("/TDR-3731/upload-csv") + res.redirect(`/${req.params.ticketId}/upload-csv`) } else { // response.redirect("/ineligible-country") } diff --git a/app/views/TUX-12/csv-checks.html b/app/views/TUX-12/csv-checks.html new file mode 100644 index 00000000..d6c68d2d --- /dev/null +++ b/app/views/TUX-12/csv-checks.html @@ -0,0 +1,52 @@ +{% extends "layouts/main.html" %} + +{% block pageTitle %} + Checking your metadata +{% endblock %} + +{% block content %} + +
+
+ + Step 5 of 7 +

+ Checking your metadata +

+ +

Please wait while we check your metadata against the uploaded records. This may take a few minutes.

+ + + + + +
+ + + +{% endblock %} diff --git a/app/views/TUX-12/csv-results-failed.html b/app/views/TUX-12/csv-results-failed.html new file mode 100644 index 00000000..ab58b2d4 --- /dev/null +++ b/app/views/TUX-12/csv-results-failed.html @@ -0,0 +1,52 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/summary-list/macro.njk" import govukSummaryList %} + +{% block pageTitle %} + Results of your metadata checks - Failed +{% endblock %} + +{% block content %} + +
+
+ + Step 5 of 7 +

+ Results of your metadata checks +

+ + {{ govukSummaryList({ + rows: [ + { + key: { text: "Status" }, + value: { html: "Failed" } + }, + { + key: { text: "Details" }, + value: { html: "The uploaded file contained a virus" } + } + ] + }) }} + +

If you can fix the problem yourself try to upload again.

+

If the problem persists or you're not sure how to progress contact tdr@nationalarchives.gov.uk.

+
+ Re-upload +
+ +
+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ +{% endblock %} diff --git a/app/views/TUX-12/how-to-enter-metadata.html b/app/views/TUX-12/how-to-enter-metadata.html new file mode 100644 index 00000000..363e0fad --- /dev/null +++ b/app/views/TUX-12/how-to-enter-metadata.html @@ -0,0 +1,74 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/radios/macro.njk" import govukRadios %} + +{% block pageTitle %} + How would you like to enter record metadata? +{% endblock %} + +{% block beforeContent %} + Results of your record checks +{% endblock %} + +{% block content %} + +
+
+ +
+ {{ govukRadios({ + name: "metadata-route", + fieldset: { + legend: { + text: "How would you like to enter record metadata?", + isPageHeading: true, + classes: "govuk-fieldset__legend--l" + } + }, + hint: { + text: "" + }, + items: [ + { + value: "website", + text: "Select records and add metadata", + hint: { + text: "Better for small amounts of metadata" + } + }, + { + value: "csv", + text: "Add metadata to a CSV and upload", + hint: { + text: "Better for large amounts of metadata" + } + }, + { + value: "none", + text: "I don't have any metadata", + hint: { + text: "" + } + } + ] + }) }} + + {{ govukButton({ + text: "Continue" + }) }} +
+
+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ +{% endblock %} diff --git a/app/views/TUX-12/upload-checks.html b/app/views/TUX-12/upload-checks.html new file mode 100644 index 00000000..c666ccdf --- /dev/null +++ b/app/views/TUX-12/upload-checks.html @@ -0,0 +1,62 @@ +{% extends "layouts/main.html" %} + +{% block pageTitle %} + Checking records +{% endblock %} + +{% block content %} + +
+
+ + Step 4 of 7 +

+ Checking your records +

+ +

Please wait while your records are being checked. This may take a few minutes.

+

The following checks are now being performed:

+
    +
  • Anti-virus scanning
  • +
  • Identifying file formats
  • +
  • Validating data integrity
  • +
+ +

For more information on these checks, please see our + FAQ (opens in new tab) for this service. +

+ + + + + +
+ + + +{% endblock %} diff --git a/app/views/TUX-12/upload-csv-error.html b/app/views/TUX-12/upload-csv-error.html new file mode 100644 index 00000000..c6a11ba0 --- /dev/null +++ b/app/views/TUX-12/upload-csv-error.html @@ -0,0 +1,79 @@ +{% from "govuk/components/warning-text/macro.njk" import govukWarningText %} +{% from "govuk/components/file-upload/macro.njk" import govukFileUpload %} +{% from "govuk/components/error-summary/macro.njk" import govukErrorSummary %} + + +{% extends "layouts/main.html" %} + +{% block pageTitle %} + Upload a completed transfer metadata CSV - MOCK-TDR-1294 - Transfer Digital Records +{% endblock %} + +{% block beforeContent %} + How would you like to enter metadata? +{% endblock %} + +{% block content %} +{{ govukErrorSummary({ + titleText: "There is a problem", + errorList: [ + { + text: "The file selected was not a CSV", + href: "#file-upload" + } + ] +}) }} +
+
+ + Step 5 of 7 +

Upload a metadata CSV

+ + {% if data['csv-upload-status'] == "failed" %} + {{ govukWarningText({ + text: "Uploading a new or amended CSV will overwrite any metadata imported from a previous CSV.", + iconFallbackText: "Warning" + }) }} + {% endif %} + +

In your CSV, include a header row for the column titles and one row for every record that requires metadata.

+ + + {{ govukFileUpload({ + id: "file-upload", + name: "fileUpload", + label: { + text: "Select a CSV", + classes: "govuk-!-font-weight-bold" + }, + errorMessage: { + text: "The file selected was not a CSV" + }, + attributes: { + accept: "text/csv" + } + }) }} + + + + +
+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ +{% endblock %} diff --git a/app/views/TUX-12/upload-csv.html b/app/views/TUX-12/upload-csv.html new file mode 100644 index 00000000..e509a5b7 --- /dev/null +++ b/app/views/TUX-12/upload-csv.html @@ -0,0 +1,64 @@ +{% from "govuk/components/warning-text/macro.njk" import govukWarningText %} +{% from "govuk/components/file-upload/macro.njk" import govukFileUpload %} + +{% extends "layouts/main.html" %} + +{% block pageTitle %} + Upload a completed transfer metadata CSV - MOCK-TDR-1294 - Transfer Digital Records +{% endblock %} + +{% block beforeContent %} + How would you like to enter metadata? +{% endblock %} + +{% block content %} + +
+
+ + Step 5 of 7 +

Upload a metadata CSV

+ + {% if data['csv-upload-status'] == "failed" %} + {{ govukWarningText({ + text: "Uploading a new or amended CSV will overwrite any metadata imported from a previous CSV.", + iconFallbackText: "Warning" + }) }} + {% endif %} + +

In your CSV, include a header row for the column titles and one row for every record that requires metadata.

+ + {{ govukFileUpload({ + id: "file-upload-1", + name: "fileUpload", + label: { + text: "Select a CSV", + classes: "govuk-!-font-weight-bold" + }, + attributes: { + accept: "text/csv" + } + }) }} + + + +
+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ +{% endblock %} diff --git a/app/views/TUX-12/upload-records-results.html b/app/views/TUX-12/upload-records-results.html new file mode 100644 index 00000000..7fb4507c --- /dev/null +++ b/app/views/TUX-12/upload-records-results.html @@ -0,0 +1,48 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/summary-list/macro.njk" import govukSummaryList %} + +{% block pageTitle %} + Results of your record checks +{% endblock %} + +{% block beforeContent %} + {# Consignment: MOCK-TDR-1294 #} +{% endblock %} + +{% block content %} + +
+
+ + Step 4 of 7 +

+ Results of your record checks +

+

Your records have been successfully uploaded.

+ {{ govukSummaryList({ + rows: [ + { + key: { text: "Status" }, + value: { html: "Uploaded" } + }, + { + key: { text: "Uploaded directory" }, + value: { text: "Recipes and Ingredients" } + }, + { + key: { text: "Errors found" }, + value: { text: "0" } + } + ] + }) }} + + + +
+
+ +{% endblock %} From b366e5203d1c08ee96fc5f6f1ac200cef2a91315 Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Wed, 6 Mar 2024 13:47:12 +0000 Subject: [PATCH 14/23] Completing journey so we can use back btn in prototype --- app/views/TDR-3731/csv-checks.html | 14 ++++ app/views/TDR-3731/csv-results.html | 15 +++- app/views/TDR-3731/download-metadata.html | 35 +++++++++ app/views/TDR-3731/summary.html | 93 +++++++++++++++++++++++ 4 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 app/views/TDR-3731/download-metadata.html create mode 100644 app/views/TDR-3731/summary.html diff --git a/app/views/TDR-3731/csv-checks.html b/app/views/TDR-3731/csv-checks.html index bae9b184..643a37e8 100644 --- a/app/views/TDR-3731/csv-checks.html +++ b/app/views/TDR-3731/csv-checks.html @@ -39,6 +39,20 @@

+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+

+ + +{% endblock %} diff --git a/app/views/TUX-24/csv-results-errors.html b/app/views/TUX-24/csv-results-errors.html new file mode 100644 index 00000000..3c889bfb --- /dev/null +++ b/app/views/TUX-24/csv-results-errors.html @@ -0,0 +1,280 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/summary-list/macro.njk" import govukSummaryList %} + +{% block pageTitle %} + Results of CSV checks - Errors found +{% endblock %} + +{% block beforeContent %} + {# Consignment: MOCK-TDR-1294 #} +{% endblock %} + +{% block content %} + +
+
+ + Step 5 of 7 +

+ Results of your metadata checks +

+ +

Your uploaded metadata file contains some errors.

+ + {{ govukSummaryList({ + rows: [ + { + key: { text: "Status" }, + value: { html: "Errors found" } + } + ] + }) }} + + {# {{ govukSummaryList({ + rows: [ + { + key: { text: "Status" }, + value: { html: "Errors found" } + }, + { + key: { text: "File name" }, + value: { html: "transfer-metadata-23.09.11.csv" } + }, + { + key: { text: "Records in this consigment" }, + value: { text: "1200" } + }, + { + key: { text: "Records without associated row in metadata CSV" }, + value: { text: "2" } + }, + { + key: { text: "Rows with no associated record in upload" }, + value: { text: "5" } + }, + { + key: { text: "Other errors found" }, + value: { text: "5" } + } + ] + }) }} #} + +

There are issues with your CSV upload. Download the CSV for more details about the issues.

+

Once you have addressed the issues, upload the revised CSV.

+ + +{# +

+ Errors found in your CSV upload +

+ + {{ govukSummaryList({ + card: { + title: { + html: "#1 Record with missing row" + } + }, + rows: [ + { + key: { + text: "Error" + }, + value: { + text: "An uploaded record does not have a matching row in the CSV" + } + }, + { + key: { + text: "Record name" + }, + value: { + html: "Fresh.png" + } + }, + { + key: { + text: "Full path" + }, + value: { + html: "/Cake Basics/Rising agents/Fresh.png" + } + }, + { + key: { + text: "How to fix" + }, + value: { + html: "Add a row to your CSV for this record or use the metadata CSV template." + } + } + ] + }) }} + + {{ govukSummaryList({ + card: { + title: { + html: "#2 Record with missing row" + } + }, + rows: [ + { + key: { + text: "Error" + }, + value: { + text: "An uploaded record does not have a matching row in the CSV" + } + }, + { + key: { + text: "Record name" + }, + value: { + html: "Red velvet.xlsx" + } + }, + { + key: { + text: "Full path" + }, + value: { + html: "/Cupcakes/Red velvet.xlsx" + } + }, + { + key: { + text: "How to fix" + }, + value: { + html: "Add a row to your CSV for this record or use the metadata CSV template." + } + } + ] + }) }} + + + {{ govukSummaryList({ + card: { + title: { + html: "#3 Column not recognised" + } + }, + rows: [ + { + key: { + text: "Error" + }, + value: { + html: "We found a column (Internal reference) that isn't recognised." + } + }, + { + key: { + text: "How to fix" + }, + value: { + html: "Remove the column (Internal reference) or contact a Transfer Advisor." + } + } + ] + }) }} + + {{ govukSummaryList({ + card: { + title: { + html: "#4 Duplicate column" + } + }, + rows: [ + { + key: { + text: "Error" + }, + value: { + html: "We found multiple columns with the same name: Description." + } + }, + { + key: { + text: "How to fix" + }, + value: { + html: "Ensure there is a only one Description column." + } + } + ] + }) }} + + {{ govukSummaryList({ + card: { + title: { + html: "#5 Data provided for Closure Start Date not recognised" + } + }, + rows: [ + { + key: { + text: "Error" + }, + value: { + text: "The data provided for Closure Start date was not recognised or is malformed." + } + }, + { + key: { + text: "Record name" + }, + value: { + html: "Fresh.png" + } + }, + { + key: { + text: "Full path" + }, + value: { + html: "/Cake Basics/Rising agents/Fresh.png" + } + }, + { + key: { + text: "Data found" + }, + value: { + html: "12/13/2009" + } + }, + { + key: { + text: "Format required" + }, + value: { + html: "Date in format: DD/MM/YYYY" + } + }, + { + key: { + text: "Cell location (column and row)" + }, + value: { + html: "E259" + } + }, + { + key: { + text: "How to fix" + }, + value: { + html: "Provide a date in the expected format." + } + } + ] + }) }} #} + +
+
+ +{% endblock %} diff --git a/app/views/TUX-24/csv-results.html b/app/views/TUX-24/csv-results.html new file mode 100644 index 00000000..17173e9e --- /dev/null +++ b/app/views/TUX-24/csv-results.html @@ -0,0 +1,58 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/summary-list/macro.njk" import govukSummaryList %} + +{% block pageTitle %} + Results of CSV checks +{% endblock %} + +{% block beforeContent %} + {# Consignment: MOCK-TDR-1294 #} +{% endblock %} + +{% block content %} + +
+
+ + Step 5 of 7 +

+ Results of your metadata checks +

+ +

Your CSV has been successfully uploaded and the metadata has been imported.

+ {{ govukSummaryList({ + rows: [ + { + key: { text: "Status" }, + value: { html: "Imported" } + }, + { + key: { text: "Closed records" }, + value: { html: "11" if data.hasClosedRecords else "0" } + } + ] + + }) }} + + +
+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ + +{% endblock %} diff --git a/app/views/TUX-24/download-metadata.html b/app/views/TUX-24/download-metadata.html new file mode 100644 index 00000000..65ae088a --- /dev/null +++ b/app/views/TUX-24/download-metadata.html @@ -0,0 +1,35 @@ +{% extends "layouts/main.html" %} + +{% block pageTitle %} + Download and review metadata +{% endblock %} + +{% block content %} +
+
+ + Step 6 of 7 +

Download and review metadata

+ {% include "../banner-leave-return.html" %} + +

You can review the metadata added to your records by downloading the CSV file. If you would like to add or amend the metadata, return to the previous step.

+ +
+ + +
+
+{% endblock %} diff --git a/app/views/TUX-24/end-confirmation.html b/app/views/TUX-24/end-confirmation.html new file mode 100644 index 00000000..cb61d935 --- /dev/null +++ b/app/views/TUX-24/end-confirmation.html @@ -0,0 +1,44 @@ +{% extends "layouts/main.html" %} + +{% block pageTitle %} + Transfer complete +{% endblock %} + +{% block content %} + +
+
+ +
+

Transfer complete

+
+ Your records have now been transferred to The National Archives. +
+
+ Consignment reference: MOCK-123-TDR +
+
+ +

+ Your records are not yet preserved so you must not delete the original records. +

+ +

+ Download a CSV of your records and metadata. +

+ +

What happens next

+

We will contact you via email within 90 days. If you do not receive an email, contact tdr@nationalarchives.gov.uk.

+ +

+ What did you think of this service? (opens in new tab) +

+ + + Return to homepage + + +
+
+ +{% endblock %} diff --git a/app/views/TUX-24/how-to-enter-metadata-error.html b/app/views/TUX-24/how-to-enter-metadata-error.html new file mode 100644 index 00000000..ce55382a --- /dev/null +++ b/app/views/TUX-24/how-to-enter-metadata-error.html @@ -0,0 +1,87 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/radios/macro.njk" import govukRadios %} +{% from "govuk/components/error-summary/macro.njk" import govukErrorSummary %} + +{% block pageTitle %} + How would you like to enter record metadata? +{% endblock %} + +{% block beforeContent %} + Results of your record checks +{% endblock %} + +{% block content %} + +
+
+ + {{ govukErrorSummary({ + titleText: "There is a problem", + errorList: [ + { + text: "Choose a way of entering metadata", + href: "#metadata-route-hint" + } + ] + }) }} +
+ {{ govukRadios({ + name: "metadata-route", + fieldset: { + legend: { + text: "How would you like to enter record metadata?", + isPageHeading: true, + classes: "govuk-fieldset__legend--l" + } + }, + hint: { + text: "" + }, + items: [ + { + value: "website", + text: "Select records and add metadata", + hint: { + text: "Better for small amounts of metadata" + } + }, + { + value: "csv", + text: "Add metadata to a CSV and upload", + hint: { + text: "Better for large amounts of metadata" + } + }, + { + value: "none", + text: "I don't have any metadata", + hint: { + text: "" + } + } + ], + errorMessage: { + text: "Choose a way of entering metadata" + } + }) }} + + {{ govukButton({ + text: "Continue" + }) }} +
+
+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ +{% endblock %} diff --git a/app/views/TUX-24/how-to-enter-metadata.html b/app/views/TUX-24/how-to-enter-metadata.html new file mode 100644 index 00000000..363e0fad --- /dev/null +++ b/app/views/TUX-24/how-to-enter-metadata.html @@ -0,0 +1,74 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/radios/macro.njk" import govukRadios %} + +{% block pageTitle %} + How would you like to enter record metadata? +{% endblock %} + +{% block beforeContent %} + Results of your record checks +{% endblock %} + +{% block content %} + +
+
+ +
+ {{ govukRadios({ + name: "metadata-route", + fieldset: { + legend: { + text: "How would you like to enter record metadata?", + isPageHeading: true, + classes: "govuk-fieldset__legend--l" + } + }, + hint: { + text: "" + }, + items: [ + { + value: "website", + text: "Select records and add metadata", + hint: { + text: "Better for small amounts of metadata" + } + }, + { + value: "csv", + text: "Add metadata to a CSV and upload", + hint: { + text: "Better for large amounts of metadata" + } + }, + { + value: "none", + text: "I don't have any metadata", + hint: { + text: "" + } + } + ] + }) }} + + {{ govukButton({ + text: "Continue" + }) }} +
+
+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ +{% endblock %} diff --git a/app/views/TUX-24/index.html b/app/views/TUX-24/index.html new file mode 100644 index 00000000..20877e65 --- /dev/null +++ b/app/views/TUX-24/index.html @@ -0,0 +1,59 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/radios/macro.njk" import govukRadios %} +{% from "govuk/components/notification-banner/macro.njk" import govukNotificationBanner %} + + +{% block pageTitle %} + Prototype journey selection +{% endblock %} + + +{% block content %} + +{% set html %} +

+ This is not part of the user journey +

+

Use this to start determine the prototype route.

+{% endset %} + +{{ govukNotificationBanner({ + html: html, + type: "warning" +}) }} + +
+
+ +
+ {{ govukRadios({ + name: "has-closed-records", + fieldset: { + legend: { + text: "Would you like to simulate a user journey with or without closed records?", + isPageHeading: true, + classes: "govuk-fieldset__legend--l" + } + }, + hint: { + text: "" + }, + items: [ + { + value: "true", + text: "With closed records" + }, + { + value: "false", + text: "Without closed records" + } + ] + }) }} + + {{ govukButton({ + text: "Start journey" + }) }} +
+
+ +{% endblock %} diff --git a/app/views/TUX-24/summary.html b/app/views/TUX-24/summary.html new file mode 100644 index 00000000..3561324e --- /dev/null +++ b/app/views/TUX-24/summary.html @@ -0,0 +1,93 @@ +{% extends "layouts/main.html" %} + +{% block pageTitle %} + Transfer summary +{% endblock %} + +{% block content %} +
+
+ + Step 7 of 7 +

Confirm transfer

+ {% include "../banner-leave-return.html" %} + +

Here is a summary of the records you have uploaded.

+ +
+
+
+ Series reference +
+
+ TEST123 +
+
+
+
+ Consignment reference +
+
+ MOCK-123-TDR +
+
+
+
+ Transferring body +
+
+ Test Department +
+
+
+
+ Files uploaded for transfer +
+
+ 1200 files uploaded +
+
+
+ +
+ +
+
+
+
+ + +
+
+ +
+
+ +
+ + Back + + +
+ {# + #} + +
+ +
+
+{% endblock %} diff --git a/app/views/TUX-24/upload-checks.html b/app/views/TUX-24/upload-checks.html new file mode 100644 index 00000000..115137fd --- /dev/null +++ b/app/views/TUX-24/upload-checks.html @@ -0,0 +1,62 @@ +{% extends "layouts/main.html" %} + +{% block pageTitle %} + Checking records +{% endblock %} + +{% block content %} + +
+
+ + Step 4 of 7 +

+ Checking your records +

+ +

Please wait while your records are being checked. This may take a few minutes.

+

The following checks are now being performed:

+
    +
  • Anti-virus scanning
  • +
  • Identifying file formats
  • +
  • Validating data integrity
  • +
+ +

For more information on these checks, please see our + FAQ (opens in new tab) for this service. +

+ + + + + +
+ + + +{% endblock %} diff --git a/app/views/TUX-24/upload-csv.html b/app/views/TUX-24/upload-csv.html new file mode 100644 index 00000000..48fb5132 --- /dev/null +++ b/app/views/TUX-24/upload-csv.html @@ -0,0 +1,90 @@ +{% from "govuk/components/warning-text/macro.njk" import govukWarningText %} +{% from "govuk/components/file-upload/macro.njk" import govukFileUpload %} + +{% extends "layouts/main.html" %} + +{% block pageTitle %} + Upload a completed transfer metadata CSV - MOCK-TDR-1294 - Transfer Digital Records +{% endblock %} + +{% block beforeContent %} + How would you like to enter metadata? +{% endblock %} + +{% block content %} + +
+
+ + Step 5 of 7 +

Upload a metadata CSV

+ +

In your CSV, include a header row for the column titles and one row for every record that requires metadata.

+ + {# {% if data['csv-upload-status'] == "failed" or data['csv-re-upload'] == "true" %} + {{ govukWarningText({ + text: "Uploading a new or amended metadata file will overwrite all metadata previously imported.", + iconFallbackText: "Warning" + }) }} + {% endif %} #} + + {#
+ + + What column titles should I use? + + +
+

Other than the two mandatory columns, only include those necessary for your metadata

+
    +
  • identifier (mandatory)
  • +
  • file_name (mandatory)
  • +
  • description
  • +
  • end_date
  • +
  • foi_exemption_asserted
  • +
  • closure_period
  • +
  • closure_start_date
  • +
  • title_public
  • +
  • title_alternate
  • +
  • description_public
  • +
  • description_alternate
  • + +
+
+
#} + + {{ govukFileUpload({ + id: "file-upload-1", + name: "fileUpload", + label: { + text: "Select a CSV", + classes: "govuk-!-font-weight-bold" + } + }) }} + + + + +
+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ +{% endblock %} diff --git a/app/views/TUX-24/upload-records-results.html b/app/views/TUX-24/upload-records-results.html new file mode 100644 index 00000000..7fb4507c --- /dev/null +++ b/app/views/TUX-24/upload-records-results.html @@ -0,0 +1,48 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/summary-list/macro.njk" import govukSummaryList %} + +{% block pageTitle %} + Results of your record checks +{% endblock %} + +{% block beforeContent %} + {# Consignment: MOCK-TDR-1294 #} +{% endblock %} + +{% block content %} + +
+
+ + Step 4 of 7 +

+ Results of your record checks +

+

Your records have been successfully uploaded.

+ {{ govukSummaryList({ + rows: [ + { + key: { text: "Status" }, + value: { html: "Uploaded" } + }, + { + key: { text: "Uploaded directory" }, + value: { text: "Recipes and Ingredients" } + }, + { + key: { text: "Errors found" }, + value: { text: "0" } + } + ] + }) }} + + + +
+
+ +{% endblock %} From c62d55c4622f3c7a219baab92c32e731fc13f56a Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Wed, 13 Mar 2024 12:50:00 +0000 Subject: [PATCH 17/23] Version 2 --- app/routes.js | 11 ++ app/views/TUX-24/confirm-no-closure.html | 3 - app/views/TUX-24/csv-checks.html | 2 +- .../TUX-24/csv-results-confirm-status.html | 103 ++++++++++++++++++ app/views/TUX-24/upload-checks.html | 1 - 5 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 app/views/TUX-24/csv-results-confirm-status.html diff --git a/app/routes.js b/app/routes.js index 1eccb59b..df18a29e 100644 --- a/app/routes.js +++ b/app/routes.js @@ -137,6 +137,17 @@ const populateWithClosureData = (req, res) => { // Add your routes here + +router.get( + "/:ticketId/has-closed-records", + function(req, res){ + + // req.session.data[req.params.ticketId] = req.session.data[req.params.ticketId] || []; + req.session.data['hasClosedRecords'] = req.session.data["has-closed-records"] == "true" + + res.redirect(`/${req.params.ticketId}/upload-checks`) + }) + router.post( "/:ticketId/metadata-route", function(req, res){ diff --git a/app/views/TUX-24/confirm-no-closure.html b/app/views/TUX-24/confirm-no-closure.html index dfe416e4..87911c60 100644 --- a/app/views/TUX-24/confirm-no-closure.html +++ b/app/views/TUX-24/confirm-no-closure.html @@ -39,9 +39,6 @@

text: "Re-upload metadata" }) }} - {# #} - - {# #}

diff --git a/app/views/TUX-24/csv-checks.html b/app/views/TUX-24/csv-checks.html index c0eabb8a..9b511182 100644 --- a/app/views/TUX-24/csv-checks.html +++ b/app/views/TUX-24/csv-checks.html @@ -33,7 +33,7 @@

diff --git a/app/views/TUX-24/csv-results-confirm-status.html b/app/views/TUX-24/csv-results-confirm-status.html new file mode 100644 index 00000000..8b9bb820 --- /dev/null +++ b/app/views/TUX-24/csv-results-confirm-status.html @@ -0,0 +1,103 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/summary-list/macro.njk" import govukSummaryList %} + +{% block pageTitle %} + Results of CSV checks +{% endblock %} + +{% block beforeContent %} + {# Consignment: MOCK-TDR-1294 #} +{% endblock %} + +{% block content %} + +
+
+ + Step 5 of 7 +

+ Results of your metadata checks +

+ +

Your CSV has been successfully uploaded and the metadata has been imported.

+ {{ govukSummaryList({ + + rows: [ + { + key: { text: "Status" }, + value: { html: "Imported" } + }, + { + key: { text: "Closed records" }, + value: { html: "11" if data.hasClosedRecords else "0" } + } + ] + + }) }} + +
+ + {% if data.hasClosedRecords %} +

+ We found closed records in your metadata +

+ {{ govukCheckboxes({ + name: "confirm-closure-status", + fieldset: { + legend: { + text: "Has this closure been agreed with the Advisory Council and/or The National Archives?", + classes: "" + } + }, + items: [ + { + value: "yes", + text: "Yes, this closure has been agreed" + } + ] + }) }} +

If the answer is no, you cannot proceed and should consult the Access Team or contact tdr@nationalarchives.gov.uk.

+ {% else %} +

+ We found no closed records in your metadata +

+

The metadata you provided contained no information about closed records.

+

If there are closed records in the consignment you must re-upload a CSV with closed record metadata for each record.

+
+
+ + + {{ govukButton({ + text: "Re-upload metadata" + }) }} + +
+
+

If this is correct and there are no closed records in the consignment continue to the next step.

+ + {% endif %} + +
+ {{ govukButton({ + text: "Continue", + href : "./download-metadata" + }) }} +
+ +
+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ + +{% endblock %} diff --git a/app/views/TUX-24/upload-checks.html b/app/views/TUX-24/upload-checks.html index 115137fd..68d7813c 100644 --- a/app/views/TUX-24/upload-checks.html +++ b/app/views/TUX-24/upload-checks.html @@ -8,7 +8,6 @@
- Step 4 of 7

Checking your records From 51e675b07579ec5db4136eb149ff2ebaeaac1dd9 Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Thu, 14 Mar 2024 16:03:00 +0000 Subject: [PATCH 18/23] Wrong link --- app/views/TUX-24/confirm-no-closure.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/TUX-24/confirm-no-closure.html b/app/views/TUX-24/confirm-no-closure.html index 87911c60..474c692f 100644 --- a/app/views/TUX-24/confirm-no-closure.html +++ b/app/views/TUX-24/confirm-no-closure.html @@ -25,7 +25,7 @@

{{ govukButton({ text: "Continue", - href : "./confirm-closure" + href : "./download-metadata" }) }}
From 16d817839b80eef07c7ecbb440ec58011f4ae017 Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Mon, 25 Mar 2024 12:10:41 +0000 Subject: [PATCH 19/23] Added attachment component. Updated download page. --- app/assets/sass/_da-attachment.scss | 75 +++++++++++++++++++++++++ app/assets/sass/application.scss | 1 + app/views/TUX-24/download-metadata.html | 69 +++++++++++++++++------ app/views/TUX-24/index.html | 2 +- 4 files changed, 130 insertions(+), 17 deletions(-) create mode 100644 app/assets/sass/_da-attachment.scss diff --git a/app/assets/sass/_da-attachment.scss b/app/assets/sass/_da-attachment.scss new file mode 100644 index 00000000..fd01224a --- /dev/null +++ b/app/assets/sass/_da-attachment.scss @@ -0,0 +1,75 @@ +$thumbnail-width: 70px; +$thumbnail-height: 100px; +$thumbnail-border-width: 5px; +$thumbnail-background: govuk-colour("white"); +$thumbnail-border-colour: rgba(11, 12, 12, .1); +$thumbnail-shadow-colour: rgba(11, 12, 12, .4); +$thumbnail-shadow-width: 0 2px 2px; +$thumbnail-icon-border-colour: govuk-colour("mid-grey"); + +.da-attachment { + @include govuk-font(19); + @include govuk-clearfix; + position: relative; + + .govuk-details { + margin: govuk-spacing(3) 0; + } +} + +.da-attachment__thumbnail-image { + display: block; + width: auto; // for IE8 + max-width: $thumbnail-width; + height: $thumbnail-height; + border: $thumbnail-border-colour; // for IE9 & IE10 + outline: $thumbnail-border-width solid $thumbnail-border-colour; + background: $thumbnail-background; + box-shadow: $thumbnail-shadow-width $thumbnail-shadow-colour; + fill: $thumbnail-icon-border-colour; + stroke: $thumbnail-icon-border-colour; +} + + +.da-attachment__thumbnail { + position: relative; + width: auto; + margin-right: govuk-spacing(5); + margin-bottom: govuk-spacing(3); + padding: $thumbnail-border-width; + float: left; +} + +.da-attachment__details { + padding-left: $thumbnail-width + $thumbnail-border-width * 2 + govuk-spacing(5); +} + +.da-attachment__title { + @include govuk-font($size: 27); + margin: 0 0 govuk-spacing(3); +} + +.da-attachment__link { + line-height: 1.29; +} + +.da-attachment__metadata { + @include govuk-font($size: 19); + margin: 0 0 govuk-spacing(3); + color: $govuk-secondary-text-colour; + + &:last-of-type { + margin-bottom: 0; + } + + .da-attachment__attribute { + // From the Design System + // Automatic wrapping for unbreakable text (e.g. URLs) + word-wrap: break-word; // Fallback for older browsers only + overflow-wrap: break-word; + } +} + +.da-attachment__metadata--compact { + margin-bottom: 0; +} diff --git a/app/assets/sass/application.scss b/app/assets/sass/application.scss index 2b51d9b2..5cc62589 100644 --- a/app/assets/sass/application.scss +++ b/app/assets/sass/application.scss @@ -4,6 +4,7 @@ // // Add extra styles here +@import './da-attachment.scss'; @import 'node_modules/@nationalarchives/tdr-components/components/multi-select-search/_index'; @import 'node_modules/@nationalarchives/tdr-components/components/nested-navigation/_index'; @import './prototype-history.scss'; diff --git a/app/views/TUX-24/download-metadata.html b/app/views/TUX-24/download-metadata.html index 65ae088a..edc154cf 100644 --- a/app/views/TUX-24/download-metadata.html +++ b/app/views/TUX-24/download-metadata.html @@ -9,24 +9,61 @@
Step 6 of 7 -

Download and review metadata

- {% include "../banner-leave-return.html" %} - -

You can review the metadata added to your records by downloading the CSV file. If you would like to add or amend the metadata, return to the previous step.

- -
+

Review metadata

+ + {{ govukSummaryList({ + rows: [ + { + key: { text: "Status" }, + value: { html: "Imported" } + }, + { + key: { text: "Records uploaded" }, + value: { html: "20" } + }, + { + key: { text: "Closed records" }, + value: { html: "11" if data.hasClosedRecords else "0" } + } + ] + + }) }} + +

You can review the metadata added to your records by downloading the metadata.

+ +
+ +
+

+ + Metadata + +

+ + +
+
+ +

If you need to add, remove or change any metadata you can amend and re-upload.

+ diff --git a/app/views/TUX-24/index.html b/app/views/TUX-24/index.html index 20877e65..8bf5bf97 100644 --- a/app/views/TUX-24/index.html +++ b/app/views/TUX-24/index.html @@ -14,7 +14,7 @@

This is not part of the user journey

-

Use this to start determine the prototype route.

+

Use this to determine the prototype route.

{% endset %} {{ govukNotificationBanner({ From 39a459b1af0eb3261f38d8862ff1ccf29091bea2 Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Mon, 25 Mar 2024 12:10:53 +0000 Subject: [PATCH 20/23] Changed title --- app/views/TUX-24/download-metadata.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/TUX-24/download-metadata.html b/app/views/TUX-24/download-metadata.html index edc154cf..5ab22db6 100644 --- a/app/views/TUX-24/download-metadata.html +++ b/app/views/TUX-24/download-metadata.html @@ -1,7 +1,7 @@ {% extends "layouts/main.html" %} {% block pageTitle %} - Download and review metadata + Review metadata {% endblock %} {% block content %} From e48d02759d7e08d47fd70c35c5b4486586104c6d Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Mon, 25 Mar 2024 14:08:31 +0000 Subject: [PATCH 21/23] Updates to review and confirm status journey --- app/views/TUX-24/confirm-closure-error.html | 88 +++++++++++++++++++++ app/views/TUX-24/confirm-closure.html | 18 +++-- app/views/TUX-24/csv-checks.html | 2 +- app/views/TUX-24/download-metadata.html | 14 +++- app/views/TUX-24/summary.html | 13 ++- 5 files changed, 124 insertions(+), 11 deletions(-) create mode 100644 app/views/TUX-24/confirm-closure-error.html diff --git a/app/views/TUX-24/confirm-closure-error.html b/app/views/TUX-24/confirm-closure-error.html new file mode 100644 index 00000000..07e75dc7 --- /dev/null +++ b/app/views/TUX-24/confirm-closure-error.html @@ -0,0 +1,88 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/summary-list/macro.njk" import govukSummaryList %} + + +{% block pageTitle %} + We found no closed record metadata +{% endblock %} + +{% block beforeContent %} + {% if data.version == "3"%} + Review metadata + {% else %} + Results of your record checks + {% endif %} +{% endblock %} + +{% block content %} +
+
+ {{ govukErrorSummary({ + titleText: "There is a problem", + errorList: [ + { + text: "You must agree to the statement to continue.", + href: "#confirmClosureStatus" + } + ] + }) }} +
+
+
+
+ +

+ We found closed records in your metadata +

+ +

The metadata you provided contained information about closed records.

+ + {{ govukCheckboxes({ + name: "confirmClosureStatus", + id: "confirmClosureStatus", + fieldset: { + legend: { + text: "Has this closure been agreed with the Advisory Council and/or The National Archives?", + classes: "govuk-fieldset__legend--m" + } + }, + errorMessage: { + html: "You must agree to the statement to continue. If closure has not been agreed you should contact tdr@nationalarchives.gov.uk." + }, + items: [ + { + value: "yes", + text: "Yes, this closure has been agreed", + checked: true if data['confirmClosureStatus'] == true + } + ] + }) }} + +

If the answer is no, you cannot proceed and should contact tdr@nationalarchives.gov.uk providing the consignment reference: MOCK-123-TDR.

+ +

You can return to this transfer at any time from the View transfers page.

+
+ {{ govukButton({ + text: "Continue", + href : ("./summary" if data.version == "3" else "./download-metadata") + }) }} +
+ +
+ +
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ + +{% endblock %} diff --git a/app/views/TUX-24/confirm-closure.html b/app/views/TUX-24/confirm-closure.html index 86827636..93b9906c 100644 --- a/app/views/TUX-24/confirm-closure.html +++ b/app/views/TUX-24/confirm-closure.html @@ -6,7 +6,11 @@ {% endblock %} {% block beforeContent %} - {# Consignment: MOCK-TDR-1294 #} + {% if data.version == "3"%} + Review metadata + {% else %} + Results of your record checks + {% endif %} {% endblock %} {% block content %} @@ -21,7 +25,7 @@

The metadata you provided contained information about closed records.

{{ govukCheckboxes({ - name: "confirm-closure-status", + name: "confirmClosureStatus", fieldset: { legend: { text: "Has this closure been agreed with the Advisory Council and/or The National Archives?", @@ -31,17 +35,21 @@

items: [ { value: "yes", - text: "Yes, this closure has been agreed" + text: "Yes, this closure has been agreed", + checked: true if data['confirmClosureStatus'] == true } ] }) }} -

If the answer is no, you cannot proceed and should consult the Access Team or contact tdr@nationalarchives.gov.uk.

+

If the answer is no, you cannot proceed and should contact tdr@nationalarchives.gov.uk providing the consignment reference: MOCK-123-TDR.

+ +

You can return to this transfer at any time from the View transfers page.

+
{{ govukButton({ text: "Continue", - href : "./download-metadata" + href : ("./summary" if data.version == "3" else "./download-metadata") }) }}
diff --git a/app/views/TUX-24/csv-checks.html b/app/views/TUX-24/csv-checks.html index 9b511182..cc1530f5 100644 --- a/app/views/TUX-24/csv-checks.html +++ b/app/views/TUX-24/csv-checks.html @@ -33,7 +33,7 @@

diff --git a/app/views/TUX-24/download-metadata.html b/app/views/TUX-24/download-metadata.html index 5ab22db6..2a7f8e30 100644 --- a/app/views/TUX-24/download-metadata.html +++ b/app/views/TUX-24/download-metadata.html @@ -59,7 +59,7 @@

If you need to add, remove or change any metadata you can amend and re-upload.

+
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
{% endblock %} diff --git a/app/views/TUX-24/summary.html b/app/views/TUX-24/summary.html index 3561324e..7cf63115 100644 --- a/app/views/TUX-24/summary.html +++ b/app/views/TUX-24/summary.html @@ -4,13 +4,21 @@ Transfer summary {% endblock %} +{% block beforeContent %} + {% if data.version == "3"%} + We found closed records in your metadata + {% else %} + Review metadata + {% endif %} +{% endblock %} + {% block content %}
Step 7 of 7

Confirm transfer

- {% include "../banner-leave-return.html" %} + {# {% include "../banner-leave-return.html" %} #}

Here is a summary of the records you have uploaded.

@@ -66,9 +74,6 @@

Confirm transfer

- - Back - From de2e1ac1cc7e722531af363cf749bb4945a93ad8 Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Wed, 27 Mar 2024 14:22:15 +0000 Subject: [PATCH 22/23] Confirm closure version 2 --- app/routes.js | 16 + app/views/TUX-24/confirm-closure-no-1.html | 58 + app/views/TUX-24/confirm-closure-v2.html | 100 ++ app/views/TUX-24/confirm-closure.html | 2 +- package-lock.json | 1147 +++++++++----------- 5 files changed, 677 insertions(+), 646 deletions(-) create mode 100644 app/views/TUX-24/confirm-closure-no-1.html create mode 100644 app/views/TUX-24/confirm-closure-v2.html diff --git a/app/routes.js b/app/routes.js index df18a29e..5f05c368 100644 --- a/app/routes.js +++ b/app/routes.js @@ -138,6 +138,22 @@ const populateWithClosureData = (req, res) => { // Add your routes here +/* + * When confirm closure has a radio button that redirects user to + * an info page if they select 'no' which provides further info + */ +router.post( + "/:ticketId/confirm-closure-v2", + function(req, res){ + if(req.session.data["confirmClosureStatus"] == "no-1"){ + res.redirect(`/${req.params.ticketId}/confirm-closure-no-1`) + } else if(req.session.data["confirmClosureStatus"] == "no-2"){ + res.redirect(`/${req.params.ticketId}/confirm-closure-no-2`); + } else { + res.redirect(`/${req.params.ticketId}/${req.session.data["confirmClosureStatus"]}`); + } + }) + router.get( "/:ticketId/has-closed-records", function(req, res){ diff --git a/app/views/TUX-24/confirm-closure-no-1.html b/app/views/TUX-24/confirm-closure-no-1.html new file mode 100644 index 00000000..88f3257f --- /dev/null +++ b/app/views/TUX-24/confirm-closure-no-1.html @@ -0,0 +1,58 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/summary-list/macro.njk" import govukSummaryList %} + +{% block pageTitle %} + We found no closed record metadata +{% endblock %} + + +{% block content %} + +
+
+ +

+ Contact your transfer advisor +

+ +

The metadata you provided contained information about closed records but you haven't had agreement from The Advisory Council and/or The National Archives.

+ +

+ If you have started the closure application process +

+ +

If you have started the closure application process and are waiting for an outcome you can return to this transfer from the View transfers page at any time. All you records and metadata are saved.

+ +

+ If you have not started the closure application process +

+ +

If you have not started the closure application process you should contact tdr@nationalarchives.gov.uk providing the consignment reference: MOCK-123-TDR.

+ +

You can return to this transfer at any time from the View transfers page.

+ +
+ {{ govukButton({ + text: "Continue", + href: "" + }) }} +
+ +
+ +
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ + +{% endblock %} diff --git a/app/views/TUX-24/confirm-closure-v2.html b/app/views/TUX-24/confirm-closure-v2.html new file mode 100644 index 00000000..dec8be4a --- /dev/null +++ b/app/views/TUX-24/confirm-closure-v2.html @@ -0,0 +1,100 @@ +{% extends "layouts/main.html" %} +{% from "govuk/components/summary-list/macro.njk" import govukSummaryList %} + +{% block pageTitle %} + We found no closed record metadata +{% endblock %} + +{% block beforeContent %} + {% if data.version == "3"%} + Review metadata + {% else %} + Results of your record checks + {% endif %} +{% endblock %} + +{% block content %} + +
+
+ +

+ We found closed records in your metadata +

+ +

The metadata you provided contained information about closed records.

+ + {# {{ govukCheckboxes({ + name: "confirmClosureStatus", + fieldset: { + legend: { + text: "Has this closure been agreed with the Advisory Council and/or The National Archives?", + classes: "govuk-fieldset__legend--m" + } + }, + items: [ + { + value: "yes", + text: "Yes, this closure has been agreed", + checked: true if data['confirmClosureStatus'] == true + } + ] + }) }} + +
+ {{ govukButton({ + text: "Continue", + href : ("./summary" if data.version == "3" else "./download-metadata") + }) }} +
+ #} + +
+ {{ govukRadios({ + name: "confirmClosureStatus", + fieldset: { + legend: { + text: "Has this closure been agreed with the Advisory Council and/or The National Archives?", + classes: "govuk-fieldset__legend--s" + } + }, + items: [ + { + value: "no-1", + text: "No" + }, + { + value: ("summary" if data.version == "3" else "download-metadata"), + text: "Yes, this closure has been agreed" + } + ] + }) }} + + {#

If the answer is no, you cannot proceed and should contact tdr@nationalarchives.gov.uk providing the consignment reference: MOCK-123-TDR.

+ +

You can return to this transfer at any time from the View transfers page.

#} + +
+ {{ govukButton({ + text: "Continue" + }) }} +
+
+
+ +
+
+ + + Consignment reference + + +
+ MOCK-123-TDR +
+
+
+
+ + +{% endblock %} diff --git a/app/views/TUX-24/confirm-closure.html b/app/views/TUX-24/confirm-closure.html index 93b9906c..4519e368 100644 --- a/app/views/TUX-24/confirm-closure.html +++ b/app/views/TUX-24/confirm-closure.html @@ -29,7 +29,7 @@

fieldset: { legend: { text: "Has this closure been agreed with the Advisory Council and/or The National Archives?", - classes: "govuk-fieldset__legend--m" + classes: "govuk-fieldset__legend--s" } }, items: [ diff --git a/package-lock.json b/package-lock.json index 740d37cd..d486f006 100644 --- a/package-lock.json +++ b/package-lock.json @@ -797,9 +797,9 @@ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" }, "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dependencies": { "@types/node": "*" } @@ -1289,17 +1289,6 @@ "safer-buffer": "~2.1.0" } }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -1380,16 +1369,22 @@ "node": ">= 6" } }, - "node_modules/bagpipe": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/bagpipe/-/bagpipe-0.3.5.tgz", - "integrity": "sha512-42sAlmPDKes1nLm/aly+0VdaopSU9br+jkRELedhQxI5uXHgtk47I83Mpmf4zoNTRMASdLFtUkimlu/Z9zQ8+g==" + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/bare-events": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", + "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", + "optional": true + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -1464,11 +1459,6 @@ "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", "dev": true }, - "node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, "node_modules/body-parser": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", @@ -1513,12 +1503,12 @@ } }, "node_modules/browser-sync": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.29.3.tgz", - "integrity": "sha512-NiM38O6XU84+MN+gzspVmXV2fTOoe+jBqIBx3IBdhZrdeURr6ZgznJr/p+hQ+KzkKEiGH/GcC4SQFSL0jV49bg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.2.tgz", + "integrity": "sha512-PC9c7aWJFVR4IFySrJxOqLwB9ENn3/TaXCXtAa0SzLwocLN3qMjN+IatbjvtCX92BjNXsY6YWg9Eb7F3Wy255g==", "dependencies": { - "browser-sync-client": "^2.29.3", - "browser-sync-ui": "^2.29.3", + "browser-sync-client": "^3.0.2", + "browser-sync-ui": "^3.0.2", "bs-recipes": "1.3.4", "chalk": "4.1.2", "chokidar": "^3.5.1", @@ -1532,7 +1522,6 @@ "fs-extra": "3.0.1", "http-proxy": "^1.18.1", "immutable": "^3", - "localtunnel": "^2.0.1", "micromatch": "^4.0.2", "opn": "5.3.0", "portscanner": "2.2.0", @@ -1555,9 +1544,9 @@ } }, "node_modules/browser-sync-client": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.29.3.tgz", - "integrity": "sha512-4tK5JKCl7v/3aLbmCBMzpufiYLsB1+UI+7tUXCCp5qF0AllHy/jAqYu6k7hUF3hYtlClKpxExWaR+rH+ny07wQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.2.tgz", + "integrity": "sha512-tBWdfn9L0wd2Pjuz/NWHtNEKthVb1Y67vg8/qyGNtCqetNz5lkDkFnrsx5UhPNPYUO8vci50IWC/BhYaQskDiQ==", "dependencies": { "etag": "1.8.1", "fresh": "0.5.2", @@ -1568,9 +1557,9 @@ } }, "node_modules/browser-sync-ui": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.29.3.tgz", - "integrity": "sha512-kBYOIQjU/D/3kYtUIJtj82e797Egk1FB2broqItkr3i4eF1qiHbFCG6srksu9gWhfmuM/TNG76jMfzAdxEPakg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.2.tgz", + "integrity": "sha512-V3FwWAI+abVbFLTyJjXJlCMBwjc3GXf/BPGfwO2fMFACWbIGW9/4SrBOFYEOOtqzCjQE0Di+U3VIb7eES4omNA==", "dependencies": { "async-each-series": "0.1.1", "chalk": "4.1.2", @@ -1766,15 +1755,9 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1787,6 +1770,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -1844,9 +1830,9 @@ } }, "node_modules/cli-spinners": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", - "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "engines": { "node": ">=6" }, @@ -2108,9 +2094,9 @@ } }, "node_modules/csrf-csrf": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/csrf-csrf/-/csrf-csrf-2.2.4.tgz", - "integrity": "sha512-LuhBmy5RfRmEfeqeYqgaAuS1eDpVtKZB/Eiec9xiKQLBynJxrGVRdM2yRT/YMl1Njo/yKh2L9AYsIwSlTPnx2A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/csrf-csrf/-/csrf-csrf-2.3.0.tgz", + "integrity": "sha512-bUVpFobukoKdE2h0VNTgRmPelVnsGcnVavUOCYLFBnl6ss98bW7hPFWsQyuHMVdYK2NGRlQvthUEb4iX5nUb1w==", "dependencies": { "http-errors": "^2.0.0" } @@ -2243,11 +2229,14 @@ "dev": true }, "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, "node_modules/easy-extender": { @@ -2324,9 +2313,9 @@ } }, "node_modules/engine.io": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", - "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", + "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -2336,21 +2325,21 @@ "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", + "engine.io-parser": "~5.2.1", "ws": "~8.11.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/engine.io-client": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz", - "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", + "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", + "engine.io-parser": "~5.2.1", "ws": "~8.11.0", "xmlhttprequest-ssl": "~2.0.0" } @@ -2397,9 +2386,9 @@ } }, "node_modules/engine.io-parser": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", - "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", "engines": { "node": ">=10.0.0" } @@ -2704,12 +2693,12 @@ } }, "node_modules/express-session": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", - "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.0.tgz", + "integrity": "sha512-m93QLWr0ju+rOwApSsyso838LQwgfs44QtOP/WBiwtAgPIo/SAh1a5c6nn2BR6mFNZehTpqKDESzP+fRHVbxwQ==", "dependencies": { - "cookie": "0.4.2", - "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "cookie-signature": "1.0.7", "debug": "2.6.9", "depd": "~2.0.0", "on-headers": "~1.0.2", @@ -2722,13 +2711,18 @@ } }, "node_modules/express-session/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } }, + "node_modules/express-session/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==" + }, "node_modules/express/node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -2910,6 +2904,11 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, "node_modules/fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -3121,9 +3120,9 @@ "dev": true }, "node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -3364,41 +3363,50 @@ } }, "node_modules/govuk-prototype-kit": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/govuk-prototype-kit/-/govuk-prototype-kit-13.7.0.tgz", - "integrity": "sha512-54sXTo5acjGsDLhCFXneXtlq+Kl4kIOCxzZk2F5EsWP9orJIb3AjaOcDOtRYnmqGAnQQ0n95QOEm4x7AkrzdKQ==", + "version": "13.16.1", + "resolved": "https://registry.npmjs.org/govuk-prototype-kit/-/govuk-prototype-kit-13.16.1.tgz", + "integrity": "sha512-mwqtDMM4we0GCk1HGmFZ0FEtJAncvdDJQHD6To9nK3xnwJ5J1qLhs4iR/pi4hbJlImYsyQK6u+LnMOTRHNAA8w==", "dependencies": { "ansi-colors": "^4.1.3", - "body-parser": "^1.20.1", - "browser-sync": "^2.27.11", - "chokidar": "^3.5.3", + "body-parser": "^1.20.2", + "browser-sync": "^3.0.2", + "chokidar": "^3.6.0", "cookie-parser": "^1.4.6", "cross-spawn": "^7.0.3", - "csrf-csrf": "^2.2.4", + "csrf-csrf": "^2.3.0", "del": "^6.1.1", - "dotenv": "^16.0.3", + "dotenv": "^16.4.5", "express": "^4.18.2", - "express-session": "^1.17.3", - "fs-extra": "^11.1.0", - "govuk-frontend": "^4.5.0", - "inquirer": "^8.2.0", + "express-session": "^1.18.0", + "fs-extra": "^11.2.0", + "govuk-frontend": "5.2.0", + "inquirer": "^8.2.6", "lodash": "^4.17.21", - "marked": "^4.2.5", - "nodemon": "^2.0.20", - "nunjucks": "^3.2.3", + "marked": "^4.3.0", + "nodemon": "^3.0.3", + "nunjucks": "^3.2.4", "portscanner": "^2.2.0", "require-dir": "^1.2.0", - "sass": "^1.57.1", - "session-file-store": "^1.5.0", + "sass": "^1.71.1", "sync-request": "^6.1.0", + "tar-stream": "^3.1.7", "universal-analytics": "^0.5.3", - "uuid": "^9.0.0" + "uuid": "^9.0.1", + "zlib": "^1.0.5" }, "bin": { "govuk-prototype-kit": "bin/cli" }, "engines": { - "node": "^16.x || >= 18.x" + "node": "^16.x || ^18.x || >= 20.x" + } + }, + "node_modules/govuk-prototype-kit/node_modules/govuk-frontend": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/govuk-frontend/-/govuk-frontend-5.2.0.tgz", + "integrity": "sha512-beD3wztHpkKz6JUpPwnwop1ejb4rTFMPLCutKLCIDmUS4BPpW59ggVUfctsRqHd2Zjw9wxljdRdeIJ8AZFyyTw==", + "engines": { + "node": ">= 4.2.0" } }, "node_modules/govuk-prototype-kit/node_modules/marked": { @@ -3412,6 +3420,16 @@ "node": ">= 12" } }, + "node_modules/govuk-prototype-kit/node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -3730,14 +3748,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -3761,9 +3771,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/inquirer": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", - "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -3779,12 +3789,25 @@ "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6", - "wrap-ansi": "^7.0.0" + "wrap-ansi": "^6.0.1" }, "engines": { "node": ">=12.0.0" } }, + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -4124,7 +4147,8 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true }, "node_modules/is-unicode-supported": { "version": "0.1.0", @@ -4369,17 +4393,6 @@ "node": ">=0.10.0" } }, - "node_modules/kruptein": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/kruptein/-/kruptein-2.2.3.tgz", - "integrity": "sha512-BTwprBPTzkFT9oTugxKd3WnWrX630MqUDsnmBuoa98eQs12oD4n4TeI0GbpdGcYn/73Xueg2rfnw+oK4dovnJg==", - "dependencies": { - "asn1.js": "^5.4.1" - }, - "engines": { - "node": ">6" - } - }, "node_modules/limiter": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", @@ -4444,87 +4457,6 @@ "node": ">=6.11.5" } }, - "node_modules/localtunnel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", - "dependencies": { - "axios": "0.21.4", - "debug": "4.3.2", - "openurl": "1.1.1", - "yargs": "17.1.1" - }, - "bin": { - "lt": "bin/lt.js" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/localtunnel/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/localtunnel/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/localtunnel/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/localtunnel/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/localtunnel/node_modules/yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/localtunnel/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -4601,7 +4533,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -4780,11 +4711,6 @@ "dom-walk": "^0.1.0" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4885,17 +4811,17 @@ "dev": true }, "node_modules/nodemon": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", - "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz", + "integrity": "sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==", "dependencies": { "chokidar": "^3.5.2", - "debug": "^3.2.7", + "debug": "^4", "ignore-by-default": "^1.0.1", "minimatch": "^3.1.2", "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", "supports-color": "^5.5.0", "touch": "^3.1.0", "undefsafe": "^2.0.5" @@ -4904,7 +4830,7 @@ "nodemon": "bin/nodemon.js" }, "engines": { - "node": ">=8.10.0" + "node": ">=10" }, "funding": { "type": "opencollective", @@ -4912,11 +4838,19 @@ } }, "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/nodemon/node_modules/has-flag": { @@ -4928,9 +4862,23 @@ } }, "node_modules/nodemon/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nodemon/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/nodemon/node_modules/supports-color": { "version": "5.5.0", @@ -5262,11 +5210,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==" - }, "node_modules/opn": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", @@ -5783,6 +5726,11 @@ } ] }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, "node_modules/random-bytes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", @@ -6089,14 +6037,6 @@ "node": ">=8" } }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "engines": { - "node": ">= 4" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -6202,9 +6142,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.62.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz", - "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==", + "version": "1.72.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.72.0.tgz", + "integrity": "sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -6218,9 +6158,9 @@ } }, "node_modules/sass/node_modules/immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==" + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" }, "node_modules/sax": { "version": "1.2.4", @@ -6426,51 +6366,6 @@ "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==" }, - "node_modules/session-file-store": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/session-file-store/-/session-file-store-1.5.0.tgz", - "integrity": "sha512-60IZaJNzyu2tIeHutkYE8RiXVx3KRvacOxfLr2Mj92SIsRIroDsH0IlUUR6fJAjoTW4RQISbaOApa2IZpIwFdQ==", - "dependencies": { - "bagpipe": "^0.3.5", - "fs-extra": "^8.0.1", - "kruptein": "^2.0.4", - "object-assign": "^4.1.1", - "retry": "^0.12.0", - "write-file-atomic": "3.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/session-file-store/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/session-file-store/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/session-file-store/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -6535,22 +6430,28 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", "dependencies": { - "semver": "~7.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8.10.0" + "node": ">=10" } }, "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/slash": { @@ -6562,29 +6463,52 @@ } }, "node_modules/socket.io": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", - "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", + "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.4.1", + "engine.io": "~6.5.2", "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.1" + "socket.io-parser": "~4.2.4" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz", + "integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==", "dependencies": { + "debug": "~4.3.4", "ws": "~8.11.0" } }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-adapter/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/socket.io-adapter/node_modules/ws": { "version": "8.11.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", @@ -6606,14 +6530,14 @@ } }, "node_modules/socket.io-client": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.1.tgz", - "integrity": "sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.4.0", - "socket.io-parser": "~4.2.1" + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" }, "engines": { "node": ">=10.0.0" @@ -6641,9 +6565,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/socket.io-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", - "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -6704,9 +6628,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -6827,6 +6751,18 @@ "node": ">= 0.8" } }, + "node_modules/streamx": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -7241,9 +7177,9 @@ } }, "node_modules/tslib": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", - "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/tunnel-agent": { "version": "0.6.0", @@ -7305,14 +7241,6 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", @@ -7327,9 +7255,9 @@ } }, "node_modules/ua-parser-js": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", - "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", "funding": [ { "type": "opencollective", @@ -7338,6 +7266,10 @@ { "type": "paypal", "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" } ], "engines": { @@ -7427,9 +7359,9 @@ } }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } @@ -7516,9 +7448,13 @@ } }, "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -7798,17 +7734,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "node_modules/ws": { "version": "8.13.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", @@ -7898,8 +7823,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { "version": "17.7.2", @@ -7935,6 +7859,15 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } + }, + "node_modules/zlib": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zlib/-/zlib-1.0.5.tgz", + "integrity": "sha512-40fpE2II+Cd3k8HWTWONfeKE2jL+P42iWJ1zzps5W51qcTsOUKM5Q5m2PFb0CLxlmFAaUuUdJGc3OfZy947v0w==", + "hasInstallScript": true, + "engines": { + "node": ">=0.2.0" + } } }, "dependencies": { @@ -8539,9 +8472,9 @@ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" }, "@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "requires": { "@types/node": "*" } @@ -8952,17 +8885,6 @@ "safer-buffer": "~2.1.0" } }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -9027,16 +8949,22 @@ } } }, - "bagpipe": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/bagpipe/-/bagpipe-0.3.5.tgz", - "integrity": "sha512-42sAlmPDKes1nLm/aly+0VdaopSU9br+jkRELedhQxI5uXHgtk47I83Mpmf4zoNTRMASdLFtUkimlu/Z9zQ8+g==" + "b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "bare-events": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", + "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", + "optional": true + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -9088,11 +9016,6 @@ "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", "dev": true }, - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, "body-parser": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", @@ -9130,12 +9053,12 @@ } }, "browser-sync": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.29.3.tgz", - "integrity": "sha512-NiM38O6XU84+MN+gzspVmXV2fTOoe+jBqIBx3IBdhZrdeURr6ZgznJr/p+hQ+KzkKEiGH/GcC4SQFSL0jV49bg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.2.tgz", + "integrity": "sha512-PC9c7aWJFVR4IFySrJxOqLwB9ENn3/TaXCXtAa0SzLwocLN3qMjN+IatbjvtCX92BjNXsY6YWg9Eb7F3Wy255g==", "requires": { - "browser-sync-client": "^2.29.3", - "browser-sync-ui": "^2.29.3", + "browser-sync-client": "^3.0.2", + "browser-sync-ui": "^3.0.2", "bs-recipes": "1.3.4", "chalk": "4.1.2", "chokidar": "^3.5.1", @@ -9149,7 +9072,6 @@ "fs-extra": "3.0.1", "http-proxy": "^1.18.1", "immutable": "^3", - "localtunnel": "^2.0.1", "micromatch": "^4.0.2", "opn": "5.3.0", "portscanner": "2.2.0", @@ -9191,9 +9113,9 @@ } }, "browser-sync-client": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.29.3.tgz", - "integrity": "sha512-4tK5JKCl7v/3aLbmCBMzpufiYLsB1+UI+7tUXCCp5qF0AllHy/jAqYu6k7hUF3hYtlClKpxExWaR+rH+ny07wQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.2.tgz", + "integrity": "sha512-tBWdfn9L0wd2Pjuz/NWHtNEKthVb1Y67vg8/qyGNtCqetNz5lkDkFnrsx5UhPNPYUO8vci50IWC/BhYaQskDiQ==", "requires": { "etag": "1.8.1", "fresh": "0.5.2", @@ -9201,9 +9123,9 @@ } }, "browser-sync-ui": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.29.3.tgz", - "integrity": "sha512-kBYOIQjU/D/3kYtUIJtj82e797Egk1FB2broqItkr3i4eF1qiHbFCG6srksu9gWhfmuM/TNG76jMfzAdxEPakg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.2.tgz", + "integrity": "sha512-V3FwWAI+abVbFLTyJjXJlCMBwjc3GXf/BPGfwO2fMFACWbIGW9/4SrBOFYEOOtqzCjQE0Di+U3VIb7eES4omNA==", "requires": { "async-each-series": "0.1.1", "chalk": "4.1.2", @@ -9308,9 +9230,9 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -9365,9 +9287,9 @@ } }, "cli-spinners": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", - "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==" + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==" }, "cli-width": { "version": "3.0.0", @@ -9571,9 +9493,9 @@ } }, "csrf-csrf": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/csrf-csrf/-/csrf-csrf-2.2.4.tgz", - "integrity": "sha512-LuhBmy5RfRmEfeqeYqgaAuS1eDpVtKZB/Eiec9xiKQLBynJxrGVRdM2yRT/YMl1Njo/yKh2L9AYsIwSlTPnx2A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/csrf-csrf/-/csrf-csrf-2.3.0.tgz", + "integrity": "sha512-bUVpFobukoKdE2h0VNTgRmPelVnsGcnVavUOCYLFBnl6ss98bW7hPFWsQyuHMVdYK2NGRlQvthUEb4iX5nUb1w==", "requires": { "http-errors": "^2.0.0" } @@ -9669,9 +9591,9 @@ "dev": true }, "dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==" }, "easy-extender": { "version": "2.3.4", @@ -9738,9 +9660,9 @@ } }, "engine.io": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", - "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", + "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", "requires": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -9750,7 +9672,7 @@ "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", + "engine.io-parser": "~5.2.1", "ws": "~8.11.0" }, "dependencies": { @@ -9776,13 +9698,13 @@ } }, "engine.io-client": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz", - "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", + "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", + "engine.io-parser": "~5.2.1", "ws": "~8.11.0", "xmlhttprequest-ssl": "~2.0.0" }, @@ -9809,9 +9731,9 @@ } }, "engine.io-parser": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", - "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==" + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==" }, "enhanced-resolve": { "version": "5.14.0", @@ -10110,12 +10032,12 @@ } }, "express-session": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", - "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.0.tgz", + "integrity": "sha512-m93QLWr0ju+rOwApSsyso838LQwgfs44QtOP/WBiwtAgPIo/SAh1a5c6nn2BR6mFNZehTpqKDESzP+fRHVbxwQ==", "requires": { - "cookie": "0.4.2", - "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "cookie-signature": "1.0.7", "debug": "2.6.9", "depd": "~2.0.0", "on-headers": "~1.0.2", @@ -10125,9 +10047,14 @@ }, "dependencies": { "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" + }, + "cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==" } } }, @@ -10188,6 +10115,11 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, "fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -10342,9 +10274,9 @@ "dev": true }, "fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -10518,41 +10450,57 @@ "integrity": "sha512-pLJVHVvfsTmNDBH/YBCMyuqSMCQmOrNQXoThdcAzhXJVbuaWnGc1URvjOR7EJeZyOm101fHDjzTkTvpEy6zfiw==" }, "govuk-prototype-kit": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/govuk-prototype-kit/-/govuk-prototype-kit-13.7.0.tgz", - "integrity": "sha512-54sXTo5acjGsDLhCFXneXtlq+Kl4kIOCxzZk2F5EsWP9orJIb3AjaOcDOtRYnmqGAnQQ0n95QOEm4x7AkrzdKQ==", + "version": "13.16.1", + "resolved": "https://registry.npmjs.org/govuk-prototype-kit/-/govuk-prototype-kit-13.16.1.tgz", + "integrity": "sha512-mwqtDMM4we0GCk1HGmFZ0FEtJAncvdDJQHD6To9nK3xnwJ5J1qLhs4iR/pi4hbJlImYsyQK6u+LnMOTRHNAA8w==", "requires": { "ansi-colors": "^4.1.3", - "body-parser": "^1.20.1", - "browser-sync": "^2.27.11", - "chokidar": "^3.5.3", + "body-parser": "^1.20.2", + "browser-sync": "^3.0.2", + "chokidar": "^3.6.0", "cookie-parser": "^1.4.6", "cross-spawn": "^7.0.3", - "csrf-csrf": "^2.2.4", + "csrf-csrf": "^2.3.0", "del": "^6.1.1", - "dotenv": "^16.0.3", + "dotenv": "^16.4.5", "express": "^4.18.2", - "express-session": "^1.17.3", - "fs-extra": "^11.1.0", - "govuk-frontend": "^4.5.0", - "inquirer": "^8.2.0", + "express-session": "^1.18.0", + "fs-extra": "^11.2.0", + "govuk-frontend": "5.2.0", + "inquirer": "^8.2.6", "lodash": "^4.17.21", - "marked": "^4.2.5", - "nodemon": "^2.0.20", - "nunjucks": "^3.2.3", + "marked": "^4.3.0", + "nodemon": "^3.0.3", + "nunjucks": "^3.2.4", "portscanner": "^2.2.0", "require-dir": "^1.2.0", - "sass": "^1.57.1", - "session-file-store": "^1.5.0", + "sass": "^1.71.1", "sync-request": "^6.1.0", + "tar-stream": "^3.1.7", "universal-analytics": "^0.5.3", - "uuid": "^9.0.0" + "uuid": "^9.0.1", + "zlib": "^1.0.5" }, "dependencies": { + "govuk-frontend": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/govuk-frontend/-/govuk-frontend-5.2.0.tgz", + "integrity": "sha512-beD3wztHpkKz6JUpPwnwop1ejb4rTFMPLCutKLCIDmUS4BPpW59ggVUfctsRqHd2Zjw9wxljdRdeIJ8AZFyyTw==" + }, "marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==" + }, + "tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "requires": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } } } }, @@ -10781,11 +10729,6 @@ "resolve-cwd": "^3.0.0" } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -10806,9 +10749,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "inquirer": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", - "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", "requires": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -10824,7 +10767,19 @@ "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6", - "wrap-ansi": "^7.0.0" + "wrap-ansi": "^6.0.1" + }, + "dependencies": { + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } } }, "internal-slot": { @@ -11058,7 +11013,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true }, "is-unicode-supported": { "version": "0.1.0", @@ -11268,14 +11224,6 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, - "kruptein": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/kruptein/-/kruptein-2.2.3.tgz", - "integrity": "sha512-BTwprBPTzkFT9oTugxKd3WnWrX630MqUDsnmBuoa98eQs12oD4n4TeI0GbpdGcYn/73Xueg2rfnw+oK4dovnJg==", - "requires": { - "asn1.js": "^5.4.1" - } - }, "limiter": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", @@ -11333,69 +11281,6 @@ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true }, - "localtunnel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", - "requires": { - "axios": "0.21.4", - "debug": "4.3.2", - "openurl": "1.1.1", - "yargs": "17.1.1" - }, - "dependencies": { - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - } - } - }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -11463,7 +11348,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -11599,11 +11483,6 @@ "dom-walk": "^0.1.0" } }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -11681,28 +11560,28 @@ "dev": true }, "nodemon": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", - "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz", + "integrity": "sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==", "requires": { "chokidar": "^3.5.2", - "debug": "^3.2.7", + "debug": "^4", "ignore-by-default": "^1.0.1", "minimatch": "^3.1.2", "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", "supports-color": "^5.5.0", "touch": "^3.1.0", "undefsafe": "^2.0.5" }, "dependencies": { "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "has-flag": { @@ -11711,9 +11590,17 @@ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "requires": { + "lru-cache": "^6.0.0" + } }, "supports-color": { "version": "5.5.0", @@ -11960,11 +11847,6 @@ "mimic-fn": "^2.1.0" } }, - "openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==" - }, "opn": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", @@ -12342,6 +12224,11 @@ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, + "queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, "random-bytes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", @@ -12573,11 +12460,6 @@ "signal-exit": "^3.0.2" } }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -12639,9 +12521,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { - "version": "1.62.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz", - "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==", + "version": "1.72.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.72.0.tgz", + "integrity": "sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==", "requires": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -12649,9 +12531,9 @@ }, "dependencies": { "immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==" + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" } } }, @@ -12820,44 +12702,6 @@ "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==" }, - "session-file-store": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/session-file-store/-/session-file-store-1.5.0.tgz", - "integrity": "sha512-60IZaJNzyu2tIeHutkYE8RiXVx3KRvacOxfLr2Mj92SIsRIroDsH0IlUUR6fJAjoTW4RQISbaOApa2IZpIwFdQ==", - "requires": { - "bagpipe": "^0.3.5", - "fs-extra": "^8.0.1", - "kruptein": "^2.0.4", - "object-assign": "^4.1.1", - "retry": "^0.12.0", - "write-file-atomic": "3.0.3" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - } - } - }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -12907,17 +12751,20 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", "requires": { - "semver": "~7.0.0" + "semver": "^7.5.3" }, "dependencies": { "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -12927,16 +12774,17 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, "socket.io": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", - "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", + "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.4.1", + "engine.io": "~6.5.2", "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.1" + "socket.io-parser": "~4.2.4" }, "dependencies": { "debug": { @@ -12955,13 +12803,27 @@ } }, "socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz", + "integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==", "requires": { + "debug": "~4.3.4", "ws": "~8.11.0" }, "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "ws": { "version": "8.11.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", @@ -12971,14 +12833,14 @@ } }, "socket.io-client": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.1.tgz", - "integrity": "sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.4.0", - "socket.io-parser": "~4.2.1" + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" }, "dependencies": { "debug": { @@ -12997,9 +12859,9 @@ } }, "socket.io-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", - "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -13027,9 +12889,9 @@ "dev": true }, "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" }, "source-map-support": { "version": "0.5.21", @@ -13126,6 +12988,16 @@ "stream-to": "~0.2.0" } }, + "streamx": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", + "requires": { + "bare-events": "^2.2.0", + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -13429,9 +13301,9 @@ } }, "tslib": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", - "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "tunnel-agent": { "version": "0.6.0", @@ -13478,14 +13350,6 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, "typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", @@ -13493,9 +13357,9 @@ "dev": true }, "ua-parser-js": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", - "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==" + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==" }, "uid-safe": { "version": "2.1.5", @@ -13562,9 +13426,9 @@ } }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" }, "unpipe": { "version": "1.0.0", @@ -13619,9 +13483,9 @@ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" }, "validate-npm-package-license": { "version": "3.0.4", @@ -13824,17 +13688,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "ws": { "version": "8.13.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", @@ -13895,8 +13748,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { "version": "17.7.2", @@ -13926,6 +13778,11 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } + }, + "zlib": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zlib/-/zlib-1.0.5.tgz", + "integrity": "sha512-40fpE2II+Cd3k8HWTWONfeKE2jL+P42iWJ1zzps5W51qcTsOUKM5Q5m2PFb0CLxlmFAaUuUdJGc3OfZy947v0w==" } } } From e1151a7c02b3d83bde63174f92b90981bf4d153b Mon Sep 17 00:00:00 2001 From: Gareth Foote Date: Wed, 27 Mar 2024 14:33:55 +0000 Subject: [PATCH 23/23] Correct link --- app/views/TUX-24/confirm-closure-error.html | 2 +- app/views/TUX-24/confirm-closure-no-1.html | 2 +- app/views/TUX-24/confirm-closure.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/TUX-24/confirm-closure-error.html b/app/views/TUX-24/confirm-closure-error.html index 07e75dc7..bce9d023 100644 --- a/app/views/TUX-24/confirm-closure-error.html +++ b/app/views/TUX-24/confirm-closure-error.html @@ -60,7 +60,7 @@

If the answer is no, you cannot proceed and should contact tdr@nationalarchives.gov.uk providing the consignment reference: MOCK-123-TDR.

-

You can return to this transfer at any time from the View transfers page.

+

You can return to this transfer at any time from the View transfers page.

{{ govukButton({ text: "Continue", diff --git a/app/views/TUX-24/confirm-closure-no-1.html b/app/views/TUX-24/confirm-closure-no-1.html index 88f3257f..dec28499 100644 --- a/app/views/TUX-24/confirm-closure-no-1.html +++ b/app/views/TUX-24/confirm-closure-no-1.html @@ -29,7 +29,7 @@

If you have not started the closure application process you should contact tdr@nationalarchives.gov.uk providing the consignment reference: MOCK-123-TDR.

-

You can return to this transfer at any time from the View transfers page.

+

You can return to this transfer at any time from the View transfers page.

{{ govukButton({ diff --git a/app/views/TUX-24/confirm-closure.html b/app/views/TUX-24/confirm-closure.html index 4519e368..0036a28c 100644 --- a/app/views/TUX-24/confirm-closure.html +++ b/app/views/TUX-24/confirm-closure.html @@ -43,7 +43,7 @@

If the answer is no, you cannot proceed and should contact tdr@nationalarchives.gov.uk providing the consignment reference: MOCK-123-TDR.

-

You can return to this transfer at any time from the View transfers page.

+

You can return to this transfer at any time from the View transfers page.