From 01c3bfec1a950145ea0e1cd6fd39b3041e6c1dee Mon Sep 17 00:00:00 2001 From: "scott.fullerton1" Date: Tue, 17 Mar 2026 10:34:20 +0000 Subject: [PATCH 01/11] CCM-14974: Added 4 new events to the failure report --- .../dl/scripts/sql/reports/daily_report.sql | 15 ++- .../report-generator.component.spec.ts | 36 +++++ tests/playwright/helpers/event-builders.ts | 90 +++++++++++++ tests/playwright/helpers/report-helpers.ts | 124 ++++++++++++++---- 4 files changed, 239 insertions(+), 26 deletions(-) diff --git a/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql b/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql index f965dbf7..50d536c1 100644 --- a/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql +++ b/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql @@ -7,12 +7,20 @@ WITH vars AS ( e.time, CASE WHEN e.type LIKE '%.item.dequeued.%' - OR e.type LIKE '%.queue.digital.letter.read.%' THEN 'Digital' - WHEN e.type LIKE '%.print.letter.transitioned.%' THEN 'Print' ELSE NULL + OR e.type LIKE '%.queue.digital.letter.read.%' + OR e.type LIKE '%.pdm.resource.submission.rejected.%' + OR e.type LIKE '%.pdm.resource.retries.exceeded.%' + OR e.type LIKE '%.messages.request.rejected.%' THEN 'Digital' + WHEN e.type LIKE '%.print.letter.transitioned.%' + OR e.type LIKE '%.print.file.quarantined.%' THEN 'Print' ELSE NULL END as communicationtype, CASE WHEN e.type LIKE '%.item.dequeued.%' THEN 'Unread' WHEN e.type LIKE '%.queue.digital.letter.read.%' THEN 'Read' + WHEN e.type LIKE '%.pdm.resource.submission.rejected.%' THEN 'Failed' + WHEN e.type LIKE '%.pdm.resource.retries.exceeded.%' THEN 'Failed' + WHEN e.type LIKE '%.messages.request.rejected.%' THEN 'Failed' + WHEN e.type LIKE '%.print.file.quarantined.%' THEN 'Failed' WHEN e.letterstatus = 'RETURNED' THEN 'Returned' WHEN e.letterstatus = 'FAILED' THEN 'Failed' WHEN e.letterstatus = 'DISPATCHED' THEN 'Dispatched' @@ -31,11 +39,12 @@ WITH vars AS ( ORDER BY te.time DESC, CASE -- Digital Priority Order + WHEN te.communicationtype = 'Digital' AND te.status = 'Failed' THEN 3 WHEN te.status = 'Read' THEN 2 WHEN te.status = 'Unread' THEN 1 -- Print Priority Order WHEN te.status = 'Returned' THEN 4 - WHEN te.status = 'Failed' THEN 3 + WHEN te.communicationtype = 'Print' AND te.status = 'Failed' THEN 3 WHEN te.status = 'Dispatched' THEN 2 WHEN te.status = 'Rejected' THEN 1 ELSE 0 END DESC diff --git a/tests/playwright/digital-letters-component-tests/report-generator.component.spec.ts b/tests/playwright/digital-letters-component-tests/report-generator.component.spec.ts index c89ecae5..6fc3e2f7 100644 --- a/tests/playwright/digital-letters-component-tests/report-generator.component.spec.ts +++ b/tests/playwright/digital-letters-component-tests/report-generator.component.spec.ts @@ -43,6 +43,34 @@ const scenarios = [ 'Read', senderId, ), + new ReportScenario( + 'component-test-pdm-resource-submission-rejected', + CommunicationType.Digital, + [EventStatus.DigitalPDMResourceSubmissionRejected], + 'Failed', + senderId, + ), + new ReportScenario( + 'component-test-pdm-resource-retries-exceeded', + CommunicationType.Digital, + [EventStatus.DigitalPDMResourceRetriesExceeded], + 'Failed', + senderId, + ), + new ReportScenario( + 'component-test-message-request-rejected', + CommunicationType.Digital, + [EventStatus.DigitalMessageRequestRejected], + 'Failed', + senderId, + ), + new ReportScenario( + 'component-test-digital-failed-priority', + CommunicationType.Digital, + [EventStatus.Unread, EventStatus.DigitalPDMResourceSubmissionRejected], + 'Failed', + senderId, + ), // Scenarios for communication type Print where there is a single event per message reference. new ReportScenario( 'component-test-rejected', @@ -72,6 +100,14 @@ const scenarios = [ 'Dispatched', senderId, ), + // Scenario for new Print failure event: FileQuarantined + new ReportScenario( + 'component-test-file-quarantined', + CommunicationType.Print, + [EventStatus.PrintFileQuarantined], + 'Failed', + senderId, + ), // multiple events for the same message reference, should take the one with highest priority status (returned > failed > dispatched > rejected) new ReportScenario( 'component-test-rejected-pending', diff --git a/tests/playwright/helpers/event-builders.ts b/tests/playwright/helpers/event-builders.ts index 50f29e30..a1de458f 100644 --- a/tests/playwright/helpers/event-builders.ts +++ b/tests/playwright/helpers/event-builders.ts @@ -1,6 +1,10 @@ import { DigitalLetterRead, + FileQuarantined, ItemDequeued, + MessageRequestRejected, + PDMResourceRetriesExceeded, + PDMResourceSubmissionRejected, PrintLetterTransitioned, } from 'digital-letters-events'; @@ -83,3 +87,89 @@ export function buildPrintLetterTransitionedEvent( }, } as PrintLetterTransitioned; } + +export function buildPDMResourceSubmissionRejectedEvent( + eventId: string, + time: string, + messageReference: string, + senderId: string, +): PDMResourceSubmissionRejected { + const baseEvent = buildBaseEvent('pdm', time); + return { + ...baseEvent, + id: eventId, + type: 'uk.nhs.notify.digital.letters.pdm.resource.submission.rejected.v1', + dataschema: + 'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-pdm-resource-submission-rejected-data.schema.json', + data: { + messageReference, + senderId, + }, + } as PDMResourceSubmissionRejected; +} + +export function buildPDMResourceRetriesExceededEvent( + eventId: string, + time: string, + messageReference: string, + senderId: string, +): PDMResourceRetriesExceeded { + const baseEvent = buildBaseEvent('pdm', time); + return { + ...baseEvent, + id: eventId, + type: 'uk.nhs.notify.digital.letters.pdm.resource.retries.exceeded.v1', + dataschema: + 'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-pdm-resource-retries-exceeded-data.schema.json', + data: { + messageReference, + senderId, + resourceId: `resource-${eventId}`, + retryCount: 5, + }, + } as PDMResourceRetriesExceeded; +} + +export function buildMessageRequestRejectedEvent( + eventId: string, + time: string, + messageReference: string, + senderId: string, +): MessageRequestRejected { + const baseEvent = buildBaseEvent('messages', time); + return { + ...baseEvent, + id: eventId, + type: 'uk.nhs.notify.digital.letters.messages.request.rejected.v1', + dataschema: + 'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-message-request-rejected-data.schema.json', + data: { + messageReference, + senderId, + messageUri: `https://example.com/messages/${eventId}`, + failureCode: 'VALIDATION_ERROR', + }, + } as MessageRequestRejected; +} + +export function buildFileQuarantinedEvent( + eventId: string, + time: string, + messageReference: string, + senderId: string, +): FileQuarantined { + const baseEvent = buildBaseEvent('print', time); + return { + ...baseEvent, + id: eventId, + type: 'uk.nhs.notify.digital.letters.print.file.quarantined.v1', + dataschema: + 'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-print-file-quarantined-data.schema.json', + data: { + messageReference, + senderId, + letterUri: `s3://bucket/letters/${eventId}.pdf`, + createdAt: time, + }, + } as FileQuarantined; +} diff --git a/tests/playwright/helpers/report-helpers.ts b/tests/playwright/helpers/report-helpers.ts index f1a9f17c..b837c1a3 100644 --- a/tests/playwright/helpers/report-helpers.ts +++ b/tests/playwright/helpers/report-helpers.ts @@ -11,9 +11,13 @@ import { v4 as uuidv4 } from 'uuid'; import { DigitalLetterRead, + FileQuarantined, GenerateReport, ItemDequeued, MESHInboxMessageDownloaded, + MessageRequestRejected, + PDMResourceRetriesExceeded, + PDMResourceSubmissionRejected, PrintLetterTransitioned, } from 'digital-letters-events'; import generateReportValidator from 'digital-letters-events/GenerateReport.js'; @@ -21,6 +25,10 @@ import digitalLetterReadValidator from 'digital-letters-events/DigitalLetterRead import messageDownloadedValidator from 'digital-letters-events/MESHInboxMessageDownloaded.js'; import itemDequeuedValidator from 'digital-letters-events/ItemDequeued.js'; import printLetterTransitionedValidator from 'digital-letters-events/PrintLetterTransitioned.js'; +import pdmResourceSubmissionRejectedValidator from 'digital-letters-events/PDMResourceSubmissionRejected.js'; +import pdmResourceRetriesExceededValidator from 'digital-letters-events/PDMResourceRetriesExceeded.js'; +import messageRequestRejectedValidator from 'digital-letters-events/MessageRequestRejected.js'; +import fileQuarantinedValidator from 'digital-letters-events/FileQuarantined.js'; import { QueryExecutionState, getQueryState, @@ -31,7 +39,11 @@ import eventPublisher from 'helpers/event-bus-helpers'; import expectToPassEventually from 'helpers/expectations'; import { buildDigitalLetterReadEvent, + buildFileQuarantinedEvent, buildItemDequeuedEvent, + buildMessageRequestRejectedEvent, + buildPDMResourceRetriesExceededEvent, + buildPDMResourceSubmissionRejectedEvent, buildPrintLetterTransitionedEvent, } from 'helpers/event-builders'; import { existsInS3 } from 'helpers/s3-helpers'; @@ -51,6 +63,10 @@ export enum EventStatus { Failed = 'FAILED', Returned = 'RETURNED', Pending = 'PENDING', + DigitalPDMResourceSubmissionRejected = 'PDMResourceSubmissionRejected', + DigitalPDMResourceRetriesExceeded = 'PDMResourceRetriesExceeded', + DigitalMessageRequestRejected = 'MessageRequestRejected', + PrintFileQuarantined = 'FileQuarantined', } /** * Utility class to proof the SQL logic to determine which status should be reported for a given message reference, @@ -105,48 +121,110 @@ export function publishEventForScenario(scenario: ReportScenario) { for (const status of scenario.eventStatuses) { switch (scenario.communicationType) { case CommunicationType.Digital: { - if (EventStatus.Read === status) { - eventPublisher.sendEvents( + switch (status) { + case EventStatus.Read: { + eventPublisher.sendEvents( + [ + buildDigitalLetterReadEvent( + uuidv4(), + scenario.time, + scenario.messageReference, + scenario.senderId, + ), + ], + digitalLetterReadValidator, + ); + break; + } + case EventStatus.Unread: { + eventPublisher.sendEvents( + [ + buildItemDequeuedEvent( + uuidv4(), + scenario.time, + scenario.messageReference, + scenario.senderId, + ), + ], + itemDequeuedValidator, + ); + break; + } + case EventStatus.DigitalPDMResourceSubmissionRejected: { + eventPublisher.sendEvents( + [ + buildPDMResourceSubmissionRejectedEvent( + uuidv4(), + scenario.time, + scenario.messageReference, + scenario.senderId, + ), + ], + pdmResourceSubmissionRejectedValidator, + ); + break; + } + case EventStatus.DigitalPDMResourceRetriesExceeded: { + eventPublisher.sendEvents( + [ + buildPDMResourceRetriesExceededEvent( + uuidv4(), + scenario.time, + scenario.messageReference, + scenario.senderId, + ), + ], + pdmResourceRetriesExceededValidator, + ); + break; + } + case EventStatus.DigitalMessageRequestRejected: { + eventPublisher.sendEvents( + [ + buildMessageRequestRejectedEvent( + uuidv4(), + scenario.time, + scenario.messageReference, + scenario.senderId, + ), + ], + messageRequestRejectedValidator, + ); + break; + } + default: + } + break; + } + case CommunicationType.Print: { + if (EventStatus.PrintFileQuarantined === status) { + eventPublisher.sendEvents( [ - buildDigitalLetterReadEvent( + buildFileQuarantinedEvent( uuidv4(), scenario.time, scenario.messageReference, scenario.senderId, ), ], - digitalLetterReadValidator, + fileQuarantinedValidator, ); - } else if (EventStatus.Unread === status) { - eventPublisher.sendEvents( + } else { + eventPublisher.sendEvents( [ - buildItemDequeuedEvent( + buildPrintLetterTransitionedEvent( uuidv4(), scenario.time, scenario.messageReference, + status, scenario.senderId, ), ], - itemDequeuedValidator, + printLetterTransitionedValidator, ); } break; } - case CommunicationType.Print: { - eventPublisher.sendEvents( - [ - buildPrintLetterTransitionedEvent( - uuidv4(), - scenario.time, - scenario.messageReference, - status, - scenario.senderId, - ), - ], - printLetterTransitionedValidator, - ); - break; - } default: { throw new Error( `Unknown communication type: ${scenario.communicationType}`, From eaf48ac478d92aa0ae5da503d2e6ebf27994a3fd Mon Sep 17 00:00:00 2001 From: "scott.fullerton1" Date: Tue, 17 Mar 2026 10:57:07 +0000 Subject: [PATCH 02/11] CCM-14974: Trivy fix --- src/eventcatalog/package-lock.json | 12 ++++++------ src/eventcatalog/package.json | 4 +++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/eventcatalog/package-lock.json b/src/eventcatalog/package-lock.json index d87ce17e..ab162221 100644 --- a/src/eventcatalog/package-lock.json +++ b/src/eventcatalog/package-lock.json @@ -12203,9 +12203,9 @@ "license": "Apache-2.0" }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", + "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", "license": "ISC" }, "node_modules/flattie": { @@ -23619,9 +23619,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.22.0.tgz", - "integrity": "sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.24.4.tgz", + "integrity": "sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w==", "license": "MIT", "engines": { "node": ">=20.18.1" diff --git a/src/eventcatalog/package.json b/src/eventcatalog/package.json index 4e7ad91c..ffe087ca 100644 --- a/src/eventcatalog/package.json +++ b/src/eventcatalog/package.json @@ -7,9 +7,11 @@ }, "name": "digital-letters", "overrides": { + "flatted": "^3.4.0", "minimatch": "^10.2.4", "svgo": "^4.0.1", - "underscore": "^1.13.8" + "underscore": "^1.13.8", + "undici": "^7.24.0" }, "private": true, "scripts": { From 52f3773504a9b5dd3f0943a3d3875d58166a66df Mon Sep 17 00:00:00 2001 From: "scott.fullerton1" Date: Tue, 17 Mar 2026 11:01:49 +0000 Subject: [PATCH 03/11] CCM-14974: Trivy fix --- docs/adr/assets/ADR-003/examples/python/requirements.txt | 2 +- package-lock.json | 4 +++- package.json | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/adr/assets/ADR-003/examples/python/requirements.txt b/docs/adr/assets/ADR-003/examples/python/requirements.txt index b7e317b4..2217ba55 100644 --- a/docs/adr/assets/ADR-003/examples/python/requirements.txt +++ b/docs/adr/assets/ADR-003/examples/python/requirements.txt @@ -1,2 +1,2 @@ -PyJWT==2.8.0 +PyJWT==2.12.0 requests==2.32.4 diff --git a/package-lock.json b/package-lock.json index 3bc163f8..e4f5c4d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13664,7 +13664,9 @@ } }, "node_modules/flatted": { - "version": "3.3.3", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", + "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", "dev": true, "license": "ISC" }, diff --git a/package.json b/package.json index ca8080a4..a0317eb6 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "overrides": { "brace-expansion": "^5.0.2", "fast-xml-parser": "^5.3.7", + "flatted": "^3.4.0", "minimatch": "^10.2.4", "pretty-format": { "react-is": "^19.0.0" From 27f1f1cb16752ee2e98843efa3202add31b6097d Mon Sep 17 00:00:00 2001 From: "scott.fullerton1" Date: Tue, 17 Mar 2026 13:02:21 +0000 Subject: [PATCH 04/11] CCM-14974: Fix non-null status --- .../terraform/components/dl/scripts/sql/reports/daily_report.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql b/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql index 50d536c1..7aa0d36f 100644 --- a/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql +++ b/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql @@ -55,6 +55,7 @@ WITH vars AS ( te.status FROM "translated_events" AS te where te.status IS NOT NULL + AND te.communicationtype IS NOT NULL ) SELECT oe.messagereference as "Message Reference", oe.time as "Time", From 6b6e4a7e04205a14b9c3170cc6835ba872a99612 Mon Sep 17 00:00:00 2001 From: "scott.fullerton1" Date: Wed, 18 Mar 2026 10:48:58 +0000 Subject: [PATCH 05/11] CCM-14974: Update sql --- .../terraform/components/dl/scripts/sql/reports/daily_report.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql b/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql index 7aa0d36f..c384cfc1 100644 --- a/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql +++ b/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql @@ -32,6 +32,7 @@ WITH vars AS ( AND e.__year = year(v.dt) AND e.__month = month(v.dt) AND e.__day = day(v.dt) + AND e.type NOT LIKE '%.mesh.%' ), "ordered_events" AS ( SELECT ROW_NUMBER() OVER ( From bf50c4d307b530cda7845c0baab52a794e90a1a1 Mon Sep 17 00:00:00 2001 From: "scott.fullerton1" Date: Wed, 18 Mar 2026 11:02:25 +0000 Subject: [PATCH 06/11] CCM-14974: Trivy ignore --- .trivyignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.trivyignore b/.trivyignore index 41e4d77c..b7342fa6 100644 --- a/.trivyignore +++ b/.trivyignore @@ -3,3 +3,4 @@ CVE-2024-49761 # https://avd.aquasec.com/nvd/cve-2024-49761 ## latest Jekyll Web CVE-2024-47220 # https://avd.aquasec.com/nvd/cve-2024-47220 ## latest lint_roller (1.1.0) installs old version of rexml CVE-2024-7254 # https://avd.aquasec.com/nvd/cve-2024-7254 ## latest Jekyll Webpack (0.2.7) installs old version of google-protobuf CVE-2026-1615 # https://avd.aquasec.com/nvd/cve-2026-1615 ## jsonpath: Arbitrary Code Execution via unsafe JSON Path expression evaluation - Not fixed yet. +CVE-2026-33036 # https://avd.aquasec.com/nvd/cve-2026-33036 ## fast-xml-parser: Temporary Ignore From d27e0b9914525bf5c78e2b898805bd4deb76dbe0 Mon Sep 17 00:00:00 2001 From: "scott.fullerton1" Date: Wed, 18 Mar 2026 13:19:50 +0000 Subject: [PATCH 07/11] CCM-14974: Update test to remove pdm check --- .../report-generator.component.spec.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/playwright/digital-letters-component-tests/report-generator.component.spec.ts b/tests/playwright/digital-letters-component-tests/report-generator.component.spec.ts index 6fc3e2f7..5b6b1b13 100644 --- a/tests/playwright/digital-letters-component-tests/report-generator.component.spec.ts +++ b/tests/playwright/digital-letters-component-tests/report-generator.component.spec.ts @@ -10,7 +10,6 @@ import { prerequisiteAssertFirehoseEventsInS3, prerequisiteTriggerAndAssertGlueTableRefresh, publishEventForScenario, - publishEventNotInReports, publishGenerateReport, } from 'helpers/report-helpers'; @@ -175,7 +174,6 @@ test.describe('Digital Letters - Report Generator', () => { for (const scenario of scenarios) publishEventForScenario(scenario); // At this stage we published all the events used for test data. - await publishEventNotInReports(senderId); // Asserts step 1.2 await prerequisiteAssertFirehoseEventsInS3(senderId); // Asserts step 2.1 From 7b0d39091916479044aa454834542f9a9199ed54 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Mar 2026 23:37:08 +0000 Subject: [PATCH 08/11] Bump h3 from 1.15.5 to 1.15.8 in /src/eventcatalog Bumps [h3](https://github.com/h3js/h3) from 1.15.5 to 1.15.8. - [Release notes](https://github.com/h3js/h3/releases) - [Changelog](https://github.com/h3js/h3/blob/main/CHANGELOG.md) - [Commits](https://github.com/h3js/h3/compare/v1.15.5...v1.15.8) --- updated-dependencies: - dependency-name: h3 dependency-version: 1.15.8 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- src/eventcatalog/package-lock.json | 48 +++++++----------------------- 1 file changed, 11 insertions(+), 37 deletions(-) diff --git a/src/eventcatalog/package-lock.json b/src/eventcatalog/package-lock.json index 6ca1bd37..965f9ac9 100644 --- a/src/eventcatalog/package-lock.json +++ b/src/eventcatalog/package-lock.json @@ -1107,7 +1107,6 @@ "resolved": "https://registry.npmjs.org/@auth/core/-/core-0.37.4.tgz", "integrity": "sha512-HOXJwXWXQRhbBDHlMU0K/6FT1v+wjtzdKhsNg0ZN7/gne6XPsIrjZ4daMcFnbq0Z/vsAbYBinQhhua0d77v7qw==", "license": "ISC", - "peer": true, "dependencies": { "@panva/hkdf": "^1.2.1", "jose": "^5.9.6", @@ -1160,7 +1159,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -1476,7 +1474,8 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/@cfworker/json-schema/-/json-schema-4.1.1.tgz", "integrity": "sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@chevrotain/cst-dts-gen": { "version": "11.1.1", @@ -1630,7 +1629,6 @@ "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.1.tgz", "integrity": "sha512-Fa6xkSiuGKc8XC8Cn96T+TQHYj4ZZ7RdFmXA3i9xe/3hLHfwPZdM+dqfX0Cp0zQklBKhVD8Yzc8LS45rkqcwpQ==", "license": "MIT", - "peer": true, "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.23.0", @@ -1667,7 +1665,6 @@ "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.4.tgz", "integrity": "sha512-8y7xqG/hpB53l25CIoit9/ngxdfoG+fx+V3SHBrinnhOtLvKHRyAJJuHzkWrR4YXXLX8eXBsejgAAxHUOdW1yw==", "license": "MIT", - "peer": true, "dependencies": { "@marijn/find-cluster-break": "^1.0.0" } @@ -1677,7 +1674,6 @@ "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.39.15.tgz", "integrity": "sha512-aCWjgweIIXLBHh7bY6cACvXuyrZ0xGafjQ2VInjp4RM4gMfscK5uESiNdrH0pE+e1lZr2B4ONGsjchl2KsKZzg==", "license": "MIT", - "peer": true, "dependencies": { "@codemirror/state": "^6.5.0", "crelt": "^1.0.6", @@ -1769,7 +1765,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" }, @@ -1808,7 +1803,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" } @@ -3688,6 +3682,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "license": "MIT", + "peer": true, "engines": { "node": ">=10" }, @@ -3700,6 +3695,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "license": "MIT", + "peer": true, "engines": { "node": ">=10" }, @@ -3712,6 +3708,7 @@ "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", "license": "MIT", + "peer": true, "dependencies": { "eventemitter3": "^4.0.4", "p-timeout": "^3.2.0" @@ -3728,6 +3725,7 @@ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "license": "MIT", + "peer": true, "dependencies": { "p-finally": "^1.0.0" }, @@ -3998,7 +3996,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=8.0.0" } @@ -7992,7 +7989,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -8053,7 +8049,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -8313,7 +8308,6 @@ "resolved": "https://registry.npmjs.org/astro/-/astro-5.17.3.tgz", "integrity": "sha512-69dcfPe8LsHzklwj+hl+vunWUbpMB6pmg35mACjetxbJeUNNys90JaBM8ZiwsPK689SAj/4Zqb1ayaANls9/MA==", "license": "MIT", - "peer": true, "dependencies": { "@astrojs/compiler": "^2.13.0", "@astrojs/internal-helpers": "0.7.5", @@ -9411,7 +9405,6 @@ "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", "license": "MIT", - "peer": true, "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", @@ -9618,7 +9611,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -9820,7 +9812,6 @@ "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.1.tgz", "integrity": "sha512-f0yv5CPKaFxfsPTBzX7vGuim4oIC1/gcS7LUGdBSwl2dU6+FON6LVUksdOo1qJjoUvXNn45urgh8C+0a24pACQ==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@chevrotain/cst-dts-gen": "11.1.1", "@chevrotain/gast": "11.1.1", @@ -10481,7 +10472,6 @@ "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10" } @@ -10891,7 +10881,6 @@ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -11107,6 +11096,7 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -12225,7 +12215,6 @@ "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.8.0.tgz", "integrity": "sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==", "license": "MIT", - "peer": true, "dependencies": { "tabbable": "^6.4.0" } @@ -12450,7 +12439,6 @@ "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz", "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=10" } @@ -12746,9 +12734,9 @@ "license": "ISC" }, "node_modules/h3": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.5.tgz", - "integrity": "sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.8.tgz", + "integrity": "sha512-iOH6Vl8mGd9nNfu9C0IZ+GuOAfJHcyf3VriQxWaSWIB76Fg4BnFuk4cxBxjmQSSxJS664+pgjP6e7VBnUzFfcg==", "license": "MIT", "dependencies": { "cookie-es": "^1.2.2", @@ -14278,7 +14266,6 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "license": "MIT", - "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -14409,7 +14396,6 @@ "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz", "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", "license": "MIT", - "peer": true, "engines": { "node": ">= 10.16.0" } @@ -17624,7 +17610,6 @@ "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.3.tgz", "integrity": "sha512-wN5ZSgJQIC+CHJut9xaKWsknLxaFBwCPwPkGTSUYrTiHORWvpT8RxGk849HPnpUAQ+/9BPRqYb80jTpearrHzQ==", "license": "MIT", - "peer": true, "dependencies": { "@braintree/sanitize-url": "^7.1.1", "@iconify/utils": "^3.0.1", @@ -19355,6 +19340,7 @@ "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", "license": "MIT", + "peer": true, "bin": { "mustache": "bin/mustache" } @@ -19753,7 +19739,6 @@ "resolved": "https://registry.npmjs.org/openai/-/openai-4.104.0.tgz", "integrity": "sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", @@ -20307,7 +20292,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -20474,7 +20458,6 @@ "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.3.tgz", "integrity": "sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==", "license": "MIT", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -20494,7 +20477,6 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -20758,7 +20740,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -20771,7 +20752,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -21975,7 +21955,6 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -23142,7 +23121,6 @@ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", "license": "MIT", - "peer": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -23561,7 +23539,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -24115,7 +24092,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", @@ -24903,7 +24879,6 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.28.tgz", "integrity": "sha512-BRdrNfeoccSoIZeIhyPBfvWSLFP4q8J3u8Ju8Ug5vu3LdD+yTM13Sg4sKtljxozbnuMu1NB1X5HBHRYUzFocKg==", "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.28", "@vue/compiler-sfc": "3.5.28", @@ -25488,7 +25463,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } From 1936436656e333737e7f33418bf915fff52c28ef Mon Sep 17 00:00:00 2001 From: "scott.fullerton1" Date: Thu, 19 Mar 2026 11:07:23 +0000 Subject: [PATCH 09/11] CCM-14974: Update package lock --- .trivyignore | 1 - .../dl/scripts/sql/reports/daily_report.sql | 3 +- package-lock.json | 39 ++++++++++++------- package.json | 1 - src/eventcatalog/package-lock.json | 6 +-- src/eventcatalog/package.json | 5 +-- 6 files changed, 32 insertions(+), 23 deletions(-) diff --git a/.trivyignore b/.trivyignore index b7342fa6..41e4d77c 100644 --- a/.trivyignore +++ b/.trivyignore @@ -3,4 +3,3 @@ CVE-2024-49761 # https://avd.aquasec.com/nvd/cve-2024-49761 ## latest Jekyll Web CVE-2024-47220 # https://avd.aquasec.com/nvd/cve-2024-47220 ## latest lint_roller (1.1.0) installs old version of rexml CVE-2024-7254 # https://avd.aquasec.com/nvd/cve-2024-7254 ## latest Jekyll Webpack (0.2.7) installs old version of google-protobuf CVE-2026-1615 # https://avd.aquasec.com/nvd/cve-2026-1615 ## jsonpath: Arbitrary Code Execution via unsafe JSON Path expression evaluation - Not fixed yet. -CVE-2026-33036 # https://avd.aquasec.com/nvd/cve-2026-33036 ## fast-xml-parser: Temporary Ignore diff --git a/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql b/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql index c384cfc1..b5fbd356 100644 --- a/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql +++ b/infrastructure/terraform/components/dl/scripts/sql/reports/daily_report.sql @@ -32,7 +32,6 @@ WITH vars AS ( AND e.__year = year(v.dt) AND e.__month = month(v.dt) AND e.__day = day(v.dt) - AND e.type NOT LIKE '%.mesh.%' ), "ordered_events" AS ( SELECT ROW_NUMBER() OVER ( @@ -55,7 +54,7 @@ WITH vars AS ( te.communicationtype, te.status FROM "translated_events" AS te - where te.status IS NOT NULL + WHERE te.status IS NOT NULL AND te.communicationtype IS NOT NULL ) SELECT oe.messagereference as "Message Reference", diff --git a/package-lock.json b/package-lock.json index e4f5c4d6..a2a9303e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6601,13 +6601,13 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.8.tgz", - "integrity": "sha512-Ql8elcUdYCha83Ol7NznBsgN5GVZnv3vUd86fEc6waU6oUdY0T1O9NODkEEOS/Uaogr87avDrUC6DSeM4oXjZg==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.10.tgz", + "integrity": "sha512-OnejAIVD+CxzyAUrVic7lG+3QRltyja9LoNqCE/1YVs8ichoTbJlVSaZ9iSMcnHLyzrSNtvaOGjSDRP+d/ouFA==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.13.0", - "fast-xml-parser": "5.3.6", + "fast-xml-parser": "5.4.1", "tslib": "^2.6.2" }, "engines": { @@ -13555,10 +13555,22 @@ ], "license": "BSD-3-Clause" }, + "node_modules/fast-xml-builder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.0.0.tgz", + "integrity": "sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/fast-xml-parser": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.6.tgz", - "integrity": "sha512-QNI3sAvSvaOiaMl8FYU4trnEzCwiRr8XMWgAHzlrWpTSj+QaCSvOf1h82OEP1s4hiAXhnbXSyFWCf4ldZzZRVA==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.4.1.tgz", + "integrity": "sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==", "funding": [ { "type": "github", @@ -13567,6 +13579,7 @@ ], "license": "MIT", "dependencies": { + "fast-xml-builder": "^1.0.0", "strnum": "^2.1.2" }, "bin": { @@ -13664,9 +13677,9 @@ } }, "node_modules/flatted": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", - "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, @@ -20368,9 +20381,9 @@ } }, "node_modules/strnum": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", - "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.0.tgz", + "integrity": "sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==", "funding": [ { "type": "github", diff --git a/package.json b/package.json index a0317eb6..ca8080a4 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,6 @@ "overrides": { "brace-expansion": "^5.0.2", "fast-xml-parser": "^5.3.7", - "flatted": "^3.4.0", "minimatch": "^10.2.4", "pretty-format": { "react-is": "^19.0.0" diff --git a/src/eventcatalog/package-lock.json b/src/eventcatalog/package-lock.json index ab162221..98725870 100644 --- a/src/eventcatalog/package-lock.json +++ b/src/eventcatalog/package-lock.json @@ -12203,9 +12203,9 @@ "license": "Apache-2.0" }, "node_modules/flatted": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", - "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "license": "ISC" }, "node_modules/flattie": { diff --git a/src/eventcatalog/package.json b/src/eventcatalog/package.json index ffe087ca..565ce2ef 100644 --- a/src/eventcatalog/package.json +++ b/src/eventcatalog/package.json @@ -7,11 +7,10 @@ }, "name": "digital-letters", "overrides": { - "flatted": "^3.4.0", + "fast-xml-parser": "^5.5.6", "minimatch": "^10.2.4", "svgo": "^4.0.1", - "underscore": "^1.13.8", - "undici": "^7.24.0" + "underscore": "^1.13.8" }, "private": true, "scripts": { From 53cb1b9f1b6179b375ce90db0a84923283516272 Mon Sep 17 00:00:00 2001 From: simonlabarere Date: Wed, 18 Mar 2026 11:57:18 +0000 Subject: [PATCH 10/11] CCM-14961: Fix trivy vulnerabilities --- package-lock.json | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index a2a9303e..0c31e097 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13556,21 +13556,24 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-builder": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.0.0.tgz", - "integrity": "sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", + "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" } ], - "license": "MIT" + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.1.3" + } }, "node_modules/fast-xml-parser": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.4.1.tgz", - "integrity": "sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==", + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.6.tgz", + "integrity": "sha512-3+fdZyBRVg29n4rXP0joHthhcHdPUHaIC16cuyyd1iLsuaO6Vea36MPrxgAzbZna8lhvZeRL8Bc9GP56/J9xEw==", "funding": [ { "type": "github", @@ -13579,7 +13582,8 @@ ], "license": "MIT", "dependencies": { - "fast-xml-builder": "^1.0.0", + "fast-xml-builder": "^1.1.4", + "path-expression-matcher": "^1.1.3", "strnum": "^2.1.2" }, "bin": { @@ -19181,6 +19185,21 @@ "node": ">=8" } }, + "node_modules/path-expression-matcher": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.1.3.tgz", + "integrity": "sha512-qdVgY8KXmVdJZRSS1JdEPOKPdTiEK/pi0RkcT2sw1RhXxohdujUlJFPuS1TSkevZ9vzd3ZlL7ULl1MHGTApKzQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "dev": true, From ffbc2eedd9ca4188fc082f8463d6d26797266e63 Mon Sep 17 00:00:00 2001 From: "scott.fullerton1" Date: Fri, 20 Mar 2026 11:03:52 +0000 Subject: [PATCH 11/11] CCM-14974: Readd test and change it to message skipped --- .../report-generator.component.spec.ts | 3 ++ tests/playwright/helpers/report-helpers.ts | 28 +++++++++---------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/tests/playwright/digital-letters-component-tests/report-generator.component.spec.ts b/tests/playwright/digital-letters-component-tests/report-generator.component.spec.ts index 5b6b1b13..8a9676b0 100644 --- a/tests/playwright/digital-letters-component-tests/report-generator.component.spec.ts +++ b/tests/playwright/digital-letters-component-tests/report-generator.component.spec.ts @@ -10,6 +10,7 @@ import { prerequisiteAssertFirehoseEventsInS3, prerequisiteTriggerAndAssertGlueTableRefresh, publishEventForScenario, + publishEventNotInReports, publishGenerateReport, } from 'helpers/report-helpers'; @@ -173,6 +174,8 @@ test.describe('Digital Letters - Report Generator', () => { console.log(`Using senderId: ${senderId}`); for (const scenario of scenarios) publishEventForScenario(scenario); + // Publish an event that should not appear in the report + await publishEventNotInReports(senderId); // At this stage we published all the events used for test data. // Asserts step 1.2 await prerequisiteAssertFirehoseEventsInS3(senderId); diff --git a/tests/playwright/helpers/report-helpers.ts b/tests/playwright/helpers/report-helpers.ts index b837c1a3..c20e84ee 100644 --- a/tests/playwright/helpers/report-helpers.ts +++ b/tests/playwright/helpers/report-helpers.ts @@ -14,16 +14,16 @@ import { FileQuarantined, GenerateReport, ItemDequeued, - MESHInboxMessageDownloaded, MessageRequestRejected, + MessageRequestSkipped, PDMResourceRetriesExceeded, PDMResourceSubmissionRejected, PrintLetterTransitioned, } from 'digital-letters-events'; import generateReportValidator from 'digital-letters-events/GenerateReport.js'; import digitalLetterReadValidator from 'digital-letters-events/DigitalLetterRead.js'; -import messageDownloadedValidator from 'digital-letters-events/MESHInboxMessageDownloaded.js'; import itemDequeuedValidator from 'digital-letters-events/ItemDequeued.js'; +import messageRequestSkippedValidator from 'digital-letters-events/MessageRequestSkipped.js'; import printLetterTransitionedValidator from 'digital-letters-events/PrintLetterTransitioned.js'; import pdmResourceSubmissionRejectedValidator from 'digital-letters-events/PDMResourceSubmissionRejected.js'; import pdmResourceRetriesExceededValidator from 'digital-letters-events/PDMResourceRetriesExceeded.js'; @@ -272,35 +272,33 @@ export async function publishGenerateReport( * Publishes an event which should not be included in the report, to prove that only the expected events are included in the report. */ export async function publishEventNotInReports(senderId: string) { - const downloadedEventId = uuidv4(); - const downloadedEventTime = new Date().toISOString(); - await eventPublisher.sendEvents( + const skippedEventId = uuidv4(); + const skippedEventTime = new Date().toISOString(); + await eventPublisher.sendEvents( [ { - id: downloadedEventId, + id: skippedEventId, specversion: '1.0', source: - '/nhs/england/notify/production/primary/data-plane/digitalletters/mesh', + '/nhs/england/notify/production/primary/data-plane/digitalletters/messages', subject: 'customer/920fca11-596a-4eca-9c47-99f624614658/recipient/769acdd4-6a47-496f-999f-76a6fd2c3959', - type: 'uk.nhs.notify.digital.letters.mesh.inbox.message.downloaded.v1', - time: downloadedEventTime, - recordedtime: downloadedEventTime, + type: 'uk.nhs.notify.digital.letters.messages.request.skipped.v1', + time: skippedEventTime, + recordedtime: skippedEventTime, severitynumber: 2, traceparent: '00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01', datacontenttype: 'application/json', dataschema: - 'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-mesh-inbox-message-downloaded-data.schema.json', + 'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-message-request-skipped-data.schema.json', severitytext: 'INFO', data: { - meshMessageId: '12345', - messageUri: `https://example.com/ttl/resource/${downloadedEventId}`, - messageReference: 'component-test-messageDownloaded', + messageReference: 'component-test-messageSkipped', senderId, }, }, ], - messageDownloadedValidator, + messageRequestSkippedValidator, ); }