From b1f253ec6f33f90b58b2d788f22cf33e3928c40b Mon Sep 17 00:00:00 2001 From: Frankie Moran Date: Wed, 25 Feb 2026 09:43:36 +0000 Subject: [PATCH 1/6] chore(docs): update README for local library development instructions and clarify usage of yarn pack:local chore(deps): update local package references in package.json and yarn.lock for common libraries fix(tsconfig): correct paths for common node library type definitions --- README.md | 48 ++++++++++++++++++++------------- package.json | 8 +++--- tsconfig.server.json | 4 +-- yarn.lock | 64 +++++++++++++++++++++++++++++--------------- 4 files changed, 79 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index b3a4377cfd..798af29fcb 100644 --- a/README.md +++ b/README.md @@ -65,10 +65,10 @@ Clone the [opal-frontend-common-ui-lib](https://github.com/hmcts/opal-frontend-c ```bash yarn -yarn build +yarn pack:local ``` -This is required if you want to develop the frontend against the local version of the UI library using `yarn dev:local-lib:ssr`. +This is required if you want to develop the frontend against the local version of the UI library using `yarn dev:local-lib:ssr`. It generates a local `.tgz` package in the repository root. #### 3. Clone opal-frontend-common-node-lib @@ -76,10 +76,10 @@ Clone the [opal-frontend-common-node-lib](https://github.com/hmcts/opal-frontend ```bash yarn -yarn build +yarn pack:local ``` -This is required if you want to develop the frontend against the local version of the Node library using `yarn dev:local-lib:ssr`. +This is required if you want to develop the frontend against the local version of the Node library using `yarn dev:local-lib:ssr`. It generates a local `.tgz` package in the repository root. #### 4. Development server @@ -95,14 +95,14 @@ There are two ways to run the Angular SSR application depending on whether you a - To use **local** versions of the libraries: - First, ensure you've built the libraries locally and set the environment variables: + First, ensure you've run `yarn pack:local` in both libraries and set the environment variables: ```bash - export COMMON_UI_LIB_PATH="[INSERT PATH TO COMMON UI LIB DIST FOLDER]" - export COMMON_NODE_LIB_PATH="[INSERT PATH TO COMMON NODE LIB DIST FOLDER]" + export COMMON_UI_LIB_PATH="[INSERT PATH TO COMMON UI LIB REPOSITORY ROOT]" + export COMMON_NODE_LIB_PATH="[INSERT PATH TO COMMON NODE LIB REPOSITORY ROOT]" ``` - **Ensure you've built both libraries and exported the environment variables before running this command.** + **Ensure you've run `yarn pack:local` in both libraries and exported the environment variables before running this command.** Then run: @@ -110,7 +110,7 @@ There are two ways to run the Angular SSR application depending on whether you a yarn dev:local-lib:ssr ``` - This will import the local builds and start the SSR dev server with those versions. + This will install local `.tgz` packages and start the SSR dev server with those versions. The application's home page will be available at **http://localhost:4200**. @@ -132,14 +132,14 @@ There are two options depending on whether you're working with local or publishe - To build and serve the application using **local** libraries: - First, ensure you've built both common libraries and set the environment variables: + First, ensure you've run `yarn pack:local` in both common libraries and set the environment variables: ```bash - export COMMON_UI_LIB_PATH="[INSERT PATH TO COMMON UI LIB DIST FOLDER]" - export COMMON_NODE_LIB_PATH="[INSERT PATH TO COMMON NODE LIB DIST FOLDER]" + export COMMON_UI_LIB_PATH="[INSERT PATH TO COMMON UI LIB REPOSITORY ROOT]" + export COMMON_NODE_LIB_PATH="[INSERT PATH TO COMMON NODE LIB REPOSITORY ROOT]" ``` - **Ensure you've built both libraries and exported the environment variables before running this command.** + **Ensure you've run `yarn pack:local` in both libraries and exported the environment variables before running this command.** Then run: @@ -148,7 +148,7 @@ There are two options depending on whether you're working with local or publishe ``` This will: - - Import the local builds of the common libraries + - Install local `.tgz` packages for the common libraries - Build the application for production - Serve it on **http://localhost:4000** @@ -281,12 +281,12 @@ This project supports switching between local and published versions of the `opa ### Switching to Local Versions -First, ensure you've built the libraries locally and exported the paths to the built `dist` folders: +First, ensure you've run `yarn pack:local` in both library repos and exported the repository root paths (where the `.tgz` files are created): ```bash # In your shell config file (.zshrc, .bash_profile, etc.) export COMMON_UI_LIB_PATH="[INSERT PATH TO COMMON UI LIB FOLDER]" -export COMMON_NODE_LIB_PATH="[INSERT PATH TO COMMON NODE LIB DIST FOLDER]" +export COMMON_NODE_LIB_PATH="[INSERT PATH TO COMMON NODE LIB FOLDER]" ``` Then, run the following scripts: @@ -296,21 +296,33 @@ yarn import:local:common-ui-lib yarn import:local:common-node-lib ``` -These commands will remove the published versions and install the local builds from the paths you specified. +These commands will remove the published versions and install local `.tgz` packages from each configured path. ### Switching to Published Versions -To reinstall the published packages **at the exact versions declared in `package.json`** (not the latest): +If you have installed local `.tgz` packages and want to return to npm-published packages, first ensure your `package.json` dependencies are semver values (not `file:` tarball paths), then reinstall. + +```bash +yarn add @hmcts/opal-frontend-common@ @hmcts/opal-frontend-common-node@ +yarn install +``` + +You can also use: ```bash yarn import:published:common-ui-lib yarn import:published:common-node-lib ``` +These scripts read the target version from package.json. +If package.json still contains `file:...tgz` values, they will reinstall local tarballs rather than npm-published versions. + This is useful when you're no longer working on the libraries directly or want to verify against the published versions that your project is pinned to. **Note:** Version upgrades should come via Renovate PRs. These commands do **not** upgrade to the latest; they reinstall the exact versions specified in `package.json`. For extra safety in CI, consider using `yarn install --immutable` to prevent lockfile drift. +**Platform note:** `import:*` scripts use Unix shell commands (`rm`, `ls`, `grep`) and are intended for macOS/Linux environments. + ## Angular code scaffolding Run `yarn ng generate component component-name` to generate a new component. You can also use `yarn ng generate directive|pipe|service|class|guard|interface|enum|module`. diff --git a/package.json b/package.json index 462521331f..edcfb408a4 100644 --- a/package.json +++ b/package.json @@ -62,8 +62,8 @@ "build:ssr": "ng build --configuration production && ng run opal-frontend:server", "build:serve:ssr": "yarn run build:ssr && yarn run serve:ssr", "build:serve:local-lib:ssr": "yarn run import:local:common-ui-lib && yarn run import:local:common-node-lib && yarn run build:ssr && yarn run serve:ssr", - "import:local:common-ui-lib": "yarn remove @hmcts/opal-frontend-common && rm -rf .angular/cache && yarn add @hmcts/opal-frontend-common@file:$COMMON_UI_LIB_PATH", - "import:local:common-node-lib": "yarn remove @hmcts/opal-frontend-common-node && rm -rf .angular/cache && yarn add @hmcts/opal-frontend-common-node@file:$COMMON_NODE_LIB_PATH", + "import:local:common-ui-lib": "yarn remove @hmcts/opal-frontend-common && rm -rf .angular/cache && yarn add @hmcts/opal-frontend-common@file:$COMMON_UI_LIB_PATH/$(ls $COMMON_UI_LIB_PATH | grep .tgz | tail -1)", + "import:local:common-node-lib": "yarn remove @hmcts/opal-frontend-common-node && rm -rf .angular/cache && yarn add @hmcts/opal-frontend-common-node@file:$COMMON_NODE_LIB_PATH/$(ls $COMMON_NODE_LIB_PATH | grep .tgz | tail -1)", "import:published:common-ui-lib": "yarn remove @hmcts/opal-frontend-common && rm -rf .angular/cache && VERSION=$(node -p \"require('./package.json').dependencies['@hmcts/opal-frontend-common']\") && yarn add @hmcts/opal-frontend-common@\"$VERSION\"", "import:published:common-node-lib": "yarn remove @hmcts/opal-frontend-common-node && rm -rf .angular/cache && VERSION=$(node -p \"require('./package.json').dependencies['@hmcts/opal-frontend-common-node']\") && yarn add @hmcts/opal-frontend-common-node@\"$VERSION\"", "prerender": "ng run opal-frontend:prerender", @@ -97,8 +97,8 @@ "@hmcts/info-provider": "^1.1.0", "@hmcts/nodejs-healthcheck": "^1.8.5", "@hmcts/nodejs-logging": "^4.0.4", - "@hmcts/opal-frontend-common": "^0.0.62", - "@hmcts/opal-frontend-common-node": "^0.0.24", + "@hmcts/opal-frontend-common": "file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.62.tgz", + "@hmcts/opal-frontend-common-node": "file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-node-lib/hmcts-opal-frontend-common-node-0.0.26.tgz", "@hmcts/properties-volume": "^1.1.0", "@microsoft/applicationinsights-web": "^3.3.5", "@ministryofjustice/frontend": "^8.0.0", diff --git a/tsconfig.server.json b/tsconfig.server.json index 4f5f031516..14c9bb57f0 100644 --- a/tsconfig.server.json +++ b/tsconfig.server.json @@ -7,8 +7,8 @@ }, "files": [ "src/main.server.ts", - "node_modules/@hmcts/opal-frontend-common-node/global.d.ts", - "node_modules/@hmcts/opal-frontend-common-node/session.d.ts", + "node_modules/@hmcts/opal-frontend-common-node/dist/global.d.ts", + "node_modules/@hmcts/opal-frontend-common-node/dist/session.d.ts", "server.ts" ] } diff --git a/yarn.lock b/yarn.lock index a0b80475cb..69d60e7b02 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1116,11 +1116,11 @@ __metadata: linkType: hard "@azure/msal-browser@npm:^5.0.0": - version: 5.0.2 - resolution: "@azure/msal-browser@npm:5.0.2" + version: 5.3.0 + resolution: "@azure/msal-browser@npm:5.3.0" dependencies: - "@azure/msal-common": "npm:16.0.2" - checksum: 10/37fe3fe83f5ff675813ead18f4a9666b2872ab8dd4b29a363a39c75c3f15040b180076565575dc4637f998f7cd29eba513455ef5d26f5a70c9efd15d3ff27294 + "@azure/msal-common": "npm:16.1.0" + checksum: 10/32da5c485abdd0d873456c02a4df0ba8ead52c67e99373c58280f5fba90a62b75363b170bba2993b5df3b2485724c538c4b8cac981fec19ac5c5f424766b065c languageName: node linkType: hard @@ -1131,10 +1131,10 @@ __metadata: languageName: node linkType: hard -"@azure/msal-common@npm:16.0.2": - version: 16.0.2 - resolution: "@azure/msal-common@npm:16.0.2" - checksum: 10/a3505f2c3e3ebbc4f0169a6f0979543a193878173932ececc97ece4a040e3090d832397eb3ff12a804eb1161f8d4021eda313bb891149a806f27a6da9e386e88 +"@azure/msal-common@npm:16.1.0": + version: 16.1.0 + resolution: "@azure/msal-common@npm:16.1.0" + checksum: 10/8fbe03c3d03a6e72733781165610ae7b6ce0cf3bcbd050e5ac79b62531b42bd76d27b35e6052b32baabd3f44ba03805f69491fd8fcde092c0ec261e36bdce0db languageName: node linkType: hard @@ -3733,9 +3733,9 @@ __metadata: languageName: node linkType: hard -"@hmcts/opal-frontend-common-node@npm:^0.0.24": - version: 0.0.24 - resolution: "@hmcts/opal-frontend-common-node@npm:0.0.24" +"@hmcts/opal-frontend-common-node@file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-node-lib/hmcts-opal-frontend-common-node-0.0.26.tgz::locator=opal-frontend%40workspace%3A.": + version: 0.0.26 + resolution: "@hmcts/opal-frontend-common-node@file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-node-lib/hmcts-opal-frontend-common-node-0.0.26.tgz#/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-node-lib/hmcts-opal-frontend-common-node-0.0.26.tgz::hash=f81c50&locator=opal-frontend%40workspace%3A." dependencies: "@azure/msal-browser": "npm:^5.0.0" "@hmcts/info-provider": "npm:^1.1.0" @@ -3754,23 +3754,38 @@ __metadata: helmet: "npm:^8.0.0" http-proxy-middleware: "npm:^3.0.0" luxon: "npm:^3.4.3" - prettier: "npm:^3.0.3" redis: "npm:^5.0.0" session-file-store: "npm:^1.5.0" xml2js: "npm:^0.6.2" - checksum: 10/364e133f36bad8a6aa1661fedec4b6011c2b5b3ed72e95994fd29a888e8acab5d394286283cbaa1fc3e12c1ca25aa3ebeff04801a7960285f944e5202bb61d18 + checksum: 10/2cd5baf15d2a6e1ec2a2759ca3201880c62a5534e87d245dc92606a38d697aa5fc7596a46479220e749faad79245f73dba79e8d9d2f497f0d383e34790fccde7 languageName: node linkType: hard -"@hmcts/opal-frontend-common@npm:^0.0.62": +"@hmcts/opal-frontend-common@file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.62.tgz::locator=opal-frontend%40workspace%3A.": version: 0.0.62 - resolution: "@hmcts/opal-frontend-common@npm:0.0.62" + resolution: "@hmcts/opal-frontend-common@file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.62.tgz#/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.62.tgz::hash=591d99&locator=opal-frontend%40workspace%3A." dependencies: + "@microsoft/applicationinsights-web": "npm:^3.3.6" + "@ministryofjustice/frontend": "npm:^8.0.0" + accessible-autocomplete: "npm:^3.0.1" + fast-sort: "npm:^3.4.1" + govuk-frontend: "npm:^6.0.0" + home-office-kit: "npm:^1.2.0" + launchdarkly-js-client-sdk: "npm:^3.5.0" + luxon: "npm:^3.5.0" tslib: "npm:^2.3.0" peerDependencies: "@angular/common": ^18.2.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 "@angular/core": ^18.2.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 - checksum: 10/274ec0aada97a9721186db6b626efda1851d7f4bfccc70fc9e55c082b1dfc84e965abbc912b0ba8f436eb70043cf539e6540070fbe692b703c31a764765eb12d + "@angular/forms": ^18.2.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 + "@angular/platform-browser": ^18.2.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 + "@angular/router": ^18.2.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 + "@ngrx/signals": ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 + rxjs: ^7.8.0 + peerDependenciesMeta: + "@ngrx/signals": + optional: true + checksum: 10/440d3382a3ac6795b86b290417542fee911f392e4544f96a29d4f9865987691d76b5c9644535869c971056106d484e99ca86229a5cc34fcf6515be57d8784111 languageName: node linkType: hard @@ -4687,7 +4702,7 @@ __metadata: languageName: node linkType: hard -"@microsoft/applicationinsights-web@npm:^3.3.5": +"@microsoft/applicationinsights-web@npm:^3.3.5, @microsoft/applicationinsights-web@npm:^3.3.6": version: 3.3.11 resolution: "@microsoft/applicationinsights-web@npm:3.3.11" dependencies: @@ -6907,7 +6922,7 @@ __metadata: languageName: node linkType: hard -"accessible-autocomplete@npm:^3.0.0": +"accessible-autocomplete@npm:^3.0.0, accessible-autocomplete@npm:^3.0.1": version: 3.0.1 resolution: "accessible-autocomplete@npm:3.0.1" peerDependencies: @@ -11297,6 +11312,13 @@ __metadata: languageName: node linkType: hard +"govuk-frontend@npm:^6.0.0": + version: 6.0.0 + resolution: "govuk-frontend@npm:6.0.0" + checksum: 10/0fd60531ac3dfcdd4d5e374568d9e2c1f0ed4564fda3547833983f54b5671b3d3c1d7636e9bf5439a6759129492abbdc8387dc8999b4e7479caf95719ed68f2b + languageName: node + linkType: hard + "graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" @@ -12798,7 +12820,7 @@ __metadata: languageName: node linkType: hard -"launchdarkly-js-client-sdk@npm:^3.1.4": +"launchdarkly-js-client-sdk@npm:^3.1.4, launchdarkly-js-client-sdk@npm:^3.5.0": version: 3.9.0 resolution: "launchdarkly-js-client-sdk@npm:3.9.0" dependencies: @@ -14481,8 +14503,8 @@ __metadata: "@hmcts/info-provider": "npm:^1.1.0" "@hmcts/nodejs-healthcheck": "npm:^1.8.5" "@hmcts/nodejs-logging": "npm:^4.0.4" - "@hmcts/opal-frontend-common": "npm:^0.0.62" - "@hmcts/opal-frontend-common-node": "npm:^0.0.24" + "@hmcts/opal-frontend-common": "file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.62.tgz" + "@hmcts/opal-frontend-common-node": "file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-node-lib/hmcts-opal-frontend-common-node-0.0.26.tgz" "@hmcts/properties-volume": "npm:^1.1.0" "@microsoft/applicationinsights-web": "npm:^3.3.5" "@ministryofjustice/frontend": "npm:^8.0.0" From b1b25944d42666e1083b021d3342fe2afa660c43 Mon Sep 17 00:00:00 2001 From: Frankie Moran Date: Wed, 25 Feb 2026 10:08:18 +0000 Subject: [PATCH 2/6] chore(deps): update @hmcts/opal-frontend-common to version 0.0.64 --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index edcfb408a4..9dbfca4ec2 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "@hmcts/info-provider": "^1.1.0", "@hmcts/nodejs-healthcheck": "^1.8.5", "@hmcts/nodejs-logging": "^4.0.4", - "@hmcts/opal-frontend-common": "file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.62.tgz", + "@hmcts/opal-frontend-common": "file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.64.tgz", "@hmcts/opal-frontend-common-node": "file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-node-lib/hmcts-opal-frontend-common-node-0.0.26.tgz", "@hmcts/properties-volume": "^1.1.0", "@microsoft/applicationinsights-web": "^3.3.5", diff --git a/yarn.lock b/yarn.lock index 69d60e7b02..39f9906e25 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3761,9 +3761,9 @@ __metadata: languageName: node linkType: hard -"@hmcts/opal-frontend-common@file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.62.tgz::locator=opal-frontend%40workspace%3A.": - version: 0.0.62 - resolution: "@hmcts/opal-frontend-common@file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.62.tgz#/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.62.tgz::hash=591d99&locator=opal-frontend%40workspace%3A." +"@hmcts/opal-frontend-common@file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.64.tgz::locator=opal-frontend%40workspace%3A.": + version: 0.0.64 + resolution: "@hmcts/opal-frontend-common@file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.64.tgz#/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.64.tgz::hash=6ba6d1&locator=opal-frontend%40workspace%3A." dependencies: "@microsoft/applicationinsights-web": "npm:^3.3.6" "@ministryofjustice/frontend": "npm:^8.0.0" @@ -3785,7 +3785,7 @@ __metadata: peerDependenciesMeta: "@ngrx/signals": optional: true - checksum: 10/440d3382a3ac6795b86b290417542fee911f392e4544f96a29d4f9865987691d76b5c9644535869c971056106d484e99ca86229a5cc34fcf6515be57d8784111 + checksum: 10/85c6f3b8a957dc1b8ec1025aac5ef1ea84c21a6be130eefd0552db4e79533f6e5edef3d29090d5d80ecc7584b33847a3a535f11969545c74d17cc15e14fd5016 languageName: node linkType: hard @@ -14503,7 +14503,7 @@ __metadata: "@hmcts/info-provider": "npm:^1.1.0" "@hmcts/nodejs-healthcheck": "npm:^1.8.5" "@hmcts/nodejs-logging": "npm:^4.0.4" - "@hmcts/opal-frontend-common": "file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.62.tgz" + "@hmcts/opal-frontend-common": "file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.64.tgz" "@hmcts/opal-frontend-common-node": "file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-node-lib/hmcts-opal-frontend-common-node-0.0.26.tgz" "@hmcts/properties-volume": "npm:^1.1.0" "@microsoft/applicationinsights-web": "npm:^3.3.5" From e1add6f6f4db56dc21f718d944e0a1ab849e3fac Mon Sep 17 00:00:00 2001 From: Frankie Moran Date: Thu, 26 Feb 2026 16:20:10 +0000 Subject: [PATCH 3/6] chore(deps): update @ministryofjustice/frontend to v9.0.0 and govuk-frontend to v6.0.0; switch from @import to @use in styles --- package.json | 4 ++-- src/styles.scss | 2 +- yarn.lock | 27 ++++++++++----------------- 3 files changed, 13 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index aa2d952504..ae73e654d8 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "@hmcts/opal-frontend-common-node": "file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-node-lib/hmcts-opal-frontend-common-node-0.0.26.tgz", "@hmcts/properties-volume": "^1.1.0", "@microsoft/applicationinsights-web": "^3.3.5", - "@ministryofjustice/frontend": "^8.0.0", + "@ministryofjustice/frontend": "^9.0.0", "@ngrx/signals": "^21.0.0", "accessible-autocomplete": "^3.0.0", "applicationinsights": "~2.9.6", @@ -115,7 +115,7 @@ "express": "^5.0.0", "express-session": "^1.17.3", "fast-sort": "^3.4.1", - "govuk-frontend": "^5.0.0", + "govuk-frontend": "^6.0.0", "helmet": "^8.0.0", "home-office-kit": "^1.2.0", "http-proxy-middleware": "^3.0.0", diff --git a/src/styles.scss b/src/styles.scss index 9706b28fa1..eaaeb48885 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -1 +1 @@ -@import '../node_modules/@hmcts/opal-frontend-common/styles/styles.scss'; +@use '../node_modules/@hmcts/opal-frontend-common/styles/styles.scss'; diff --git a/yarn.lock b/yarn.lock index 3a45c36523..3f5e4e8152 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3763,10 +3763,10 @@ __metadata: "@hmcts/opal-frontend-common@file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.64.tgz::locator=opal-frontend%40workspace%3A.": version: 0.0.64 - resolution: "@hmcts/opal-frontend-common@file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.64.tgz#/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.64.tgz::hash=6ba6d1&locator=opal-frontend%40workspace%3A." + resolution: "@hmcts/opal-frontend-common@file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.64.tgz#/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-ui-lib/hmcts-opal-frontend-common-0.0.64.tgz::hash=6676c0&locator=opal-frontend%40workspace%3A." dependencies: "@microsoft/applicationinsights-web": "npm:^3.3.6" - "@ministryofjustice/frontend": "npm:^8.0.0" + "@ministryofjustice/frontend": "npm:^9.0.0" accessible-autocomplete: "npm:^3.0.1" fast-sort: "npm:^3.4.1" govuk-frontend: "npm:^6.0.0" @@ -3785,7 +3785,7 @@ __metadata: peerDependenciesMeta: "@ngrx/signals": optional: true - checksum: 10/85c6f3b8a957dc1b8ec1025aac5ef1ea84c21a6be130eefd0552db4e79533f6e5edef3d29090d5d80ecc7584b33847a3a535f11969545c74d17cc15e14fd5016 + checksum: 10/98db6e301776b235ca9b93a3c1f30338e140d4b382723c5ce82a378e6d9c164e3cfbb3e2ba020a4964f12030c95c189cc9d77b1fe2dec0332cd1c2f035f75003 languageName: node linkType: hard @@ -4732,13 +4732,13 @@ __metadata: languageName: node linkType: hard -"@ministryofjustice/frontend@npm:^8.0.0": - version: 8.0.1 - resolution: "@ministryofjustice/frontend@npm:8.0.1" +"@ministryofjustice/frontend@npm:^9.0.0": + version: 9.0.0 + resolution: "@ministryofjustice/frontend@npm:9.0.0" peerDependencies: - govuk-frontend: ^5.11.2 + govuk-frontend: ^6.0.0 moment: 2.30.1 - checksum: 10/412d29fbde8b903a7db992ab7a9eeeb5d31bd8355b26f47e0d3e9974a1a1ea3fbd12e2d082d21edc2a052c5aa0bda93929a73a1f820a602279f0fda6e71efe56 + checksum: 10/91402390dcbf26558684be9200c9b2ae47c77267fd074ae889bd907ec94e3c29072f40d1aebed8aae3cd2ae771806f8e90d57f03dcaf7de0f4fb470f3219a9a1 languageName: node linkType: hard @@ -11305,13 +11305,6 @@ __metadata: languageName: node linkType: hard -"govuk-frontend@npm:^5.0.0": - version: 5.14.0 - resolution: "govuk-frontend@npm:5.14.0" - checksum: 10/be321340f49306e3dada63c67888b7947e36d60dce839c9d7f0c97932cda26a848c1fc664d48bb1d85494b7d28a3e99b2df6391dfc1bcbab905f529a2faa6788 - languageName: node - linkType: hard - "govuk-frontend@npm:^6.0.0": version: 6.0.0 resolution: "govuk-frontend@npm:6.0.0" @@ -14507,7 +14500,7 @@ __metadata: "@hmcts/opal-frontend-common-node": "file:/Users/iamfrankiemoran/Documents/GitHub/opal-frontend-common-node-lib/hmcts-opal-frontend-common-node-0.0.26.tgz" "@hmcts/properties-volume": "npm:^1.1.0" "@microsoft/applicationinsights-web": "npm:^3.3.5" - "@ministryofjustice/frontend": "npm:^8.0.0" + "@ministryofjustice/frontend": "npm:^9.0.0" "@ngrx/signals": "npm:^21.0.0" "@types/config": "npm:^3.3.3" "@types/cookie-parser": "npm:^1.4.6" @@ -14541,7 +14534,7 @@ __metadata: express: "npm:^5.0.0" express-session: "npm:^1.17.3" fast-sort: "npm:^3.4.1" - govuk-frontend: "npm:^5.0.0" + govuk-frontend: "npm:^6.0.0" helmet: "npm:^8.0.0" home-office-kit: "npm:^1.2.0" http-proxy-middleware: "npm:^3.0.0" From 21509dea987a2a3314ce274f7eab60acb061ea81 Mon Sep 17 00:00:00 2001 From: Frankie Moran Date: Wed, 1 Apr 2026 13:39:58 +0100 Subject: [PATCH 4/6] (bump) library versions --- package.json | 4 ++-- yarn.lock | 43 +++++++++++++++++++++++++++++-------------- 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 16fc52da43..04c4975cfe 100644 --- a/package.json +++ b/package.json @@ -118,8 +118,8 @@ "@hmcts/info-provider": "^1.1.0", "@hmcts/nodejs-healthcheck": "^1.8.5", "@hmcts/nodejs-logging": "^4.0.4", - "@hmcts/opal-frontend-common": "^0.0.66", - "@hmcts/opal-frontend-common-node": "^0.0.27", + "@hmcts/opal-frontend-common": "^0.0.68", + "@hmcts/opal-frontend-common-node": "^0.0.28", "@hmcts/properties-volume": "^1.1.0", "@hmcts/zephyr-automation-nodejs": "0.0.6", "@microsoft/applicationinsights-web": "^3.3.5", diff --git a/yarn.lock b/yarn.lock index 01c33cad7b..69e707516d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3885,9 +3885,9 @@ __metadata: languageName: node linkType: hard -"@hmcts/opal-frontend-common-node@npm:^0.0.27": - version: 0.0.27 - resolution: "@hmcts/opal-frontend-common-node@npm:0.0.27" +"@hmcts/opal-frontend-common-node@npm:^0.0.28": + version: 0.0.28 + resolution: "@hmcts/opal-frontend-common-node@npm:0.0.28" dependencies: "@azure/msal-browser": "npm:^5.0.0" "@hmcts/info-provider": "npm:^1.1.0" @@ -3906,23 +3906,38 @@ __metadata: helmet: "npm:^8.0.0" http-proxy-middleware: "npm:^3.0.0" luxon: "npm:^3.4.3" - prettier: "npm:^3.0.3" redis: "npm:^5.0.0" session-file-store: "npm:^1.5.0" xml2js: "npm:^0.6.2" - checksum: 10/ce5e1ea609e7e3cb054eebd024d6d7e8f3752d8dd1f00c39d8922d08cfa7c6178e2e24da54de95a254136a1d8aeaf17b8587c58062b1888db3ff7cf2b3825080 + checksum: 10/609ffec48043c11c20f52c5f6923e909b7752dea36649a1cbeb7234c1e15461df5ffc0644687492c713ab86f7ec4b560b849468367dba48010676280eee1e504 languageName: node linkType: hard -"@hmcts/opal-frontend-common@npm:^0.0.66": - version: 0.0.66 - resolution: "@hmcts/opal-frontend-common@npm:0.0.66" +"@hmcts/opal-frontend-common@npm:^0.0.68": + version: 0.0.68 + resolution: "@hmcts/opal-frontend-common@npm:0.0.68" dependencies: + "@microsoft/applicationinsights-web": "npm:^3.3.6" + "@ministryofjustice/frontend": "npm:^9.0.0" + accessible-autocomplete: "npm:^3.0.1" + fast-sort: "npm:^3.4.1" + govuk-frontend: "npm:^6.0.0" + home-office-kit: "npm:^1.2.0" + launchdarkly-js-client-sdk: "npm:^3.5.0" + luxon: "npm:^3.5.0" tslib: "npm:^2.3.0" peerDependencies: "@angular/common": ^18.2.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 "@angular/core": ^18.2.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 - checksum: 10/67d2973154c672470ea7a59a3bda2980dd17ff03f2afa0cdd0d19ba2533657b1b1109531147a6f6171ae4b806ffa7528e8729f80266e1152b641478d4f6fd58b + "@angular/forms": ^18.2.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 + "@angular/platform-browser": ^18.2.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 + "@angular/router": ^18.2.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 + "@ngrx/signals": ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 + rxjs: ^7.8.0 + peerDependenciesMeta: + "@ngrx/signals": + optional: true + checksum: 10/c4eb321363b8e4da1e70d3059d9f0be32e1519e34c0db490b855e9f40e28379380953e5cc6f40e60dbf69e3235e07ce000390b41afde3e2e937af3e2e482d760 languageName: node linkType: hard @@ -4897,7 +4912,7 @@ __metadata: languageName: node linkType: hard -"@microsoft/applicationinsights-web@npm:^3.3.5": +"@microsoft/applicationinsights-web@npm:^3.3.5, @microsoft/applicationinsights-web@npm:^3.3.6": version: 3.3.11 resolution: "@microsoft/applicationinsights-web@npm:3.3.11" dependencies: @@ -7242,7 +7257,7 @@ __metadata: languageName: node linkType: hard -"accessible-autocomplete@npm:^3.0.0": +"accessible-autocomplete@npm:^3.0.0, accessible-autocomplete@npm:^3.0.1": version: 3.0.1 resolution: "accessible-autocomplete@npm:3.0.1" peerDependencies: @@ -13171,7 +13186,7 @@ __metadata: languageName: node linkType: hard -"launchdarkly-js-client-sdk@npm:^3.1.4": +"launchdarkly-js-client-sdk@npm:^3.1.4, launchdarkly-js-client-sdk@npm:^3.5.0": version: 3.9.0 resolution: "launchdarkly-js-client-sdk@npm:3.9.0" dependencies: @@ -14907,8 +14922,8 @@ __metadata: "@hmcts/info-provider": "npm:^1.1.0" "@hmcts/nodejs-healthcheck": "npm:^1.8.5" "@hmcts/nodejs-logging": "npm:^4.0.4" - "@hmcts/opal-frontend-common": "npm:^0.0.66" - "@hmcts/opal-frontend-common-node": "npm:^0.0.27" + "@hmcts/opal-frontend-common": "npm:^0.0.68" + "@hmcts/opal-frontend-common-node": "npm:^0.0.28" "@hmcts/properties-volume": "npm:^1.1.0" "@hmcts/zephyr-automation-nodejs": "npm:0.0.6" "@microsoft/applicationinsights-web": "npm:^3.3.5" From 7688f875637621ecfd3e4f2b0127ff1418c150ca Mon Sep 17 00:00:00 2001 From: Frankie Moran Date: Wed, 1 Apr 2026 13:46:13 +0100 Subject: [PATCH 5/6] (update): known issues --- yarn-audit-known-issues | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/yarn-audit-known-issues b/yarn-audit-known-issues index 485768801c..460080a8d2 100644 --- a/yarn-audit-known-issues +++ b/yarn-audit-known-issues @@ -1,7 +1,12 @@ +{"value":"@angular/compiler","children":{"ID":1114735,"Issue":"Angular vulnerable to XSS in i18n attribute bindings","URL":"https://github.com/advisories/GHSA-g93w-mfhg-p222","Severity":"high","Vulnerable Versions":">=21.0.0-next.0 <21.2.4","Tree Versions":["21.1.5"],"Dependents":["opal-frontend@workspace:."]}} +{"value":"@angular/core","children":{"ID":1113590,"Issue":"Angular i18n vulnerable to Cross-Site Scripting","URL":"https://github.com/advisories/GHSA-prjf-86w9-mfqv","Severity":"high","Vulnerable Versions":">=21.0.0-next.0 <=21.1.5","Tree Versions":["21.1.5"],"Dependents":["opal-frontend@workspace:."]}} +{"value":"@angular/core","children":{"ID":1114738,"Issue":"Angular vulnerable to XSS in i18n attribute bindings","URL":"https://github.com/advisories/GHSA-g93w-mfhg-p222","Severity":"high","Vulnerable Versions":">=21.0.0-next.0 <21.2.4","Tree Versions":["21.1.5"],"Dependents":["opal-frontend@workspace:."]}} {"value":"@angular/ssr","children":{"ID":1113509,"Issue":"Angular SSR is vulnerable to SSRF and Header Injection via request handling pipeline","URL":"https://github.com/advisories/GHSA-x288-3778-4hhx","Severity":"critical","Vulnerable Versions":">=21.0.0-next.0 <21.1.5","Tree Versions":["21.1.4"],"Dependents":["opal-frontend@workspace:."]}} {"value":"@angular/ssr","children":{"ID":1113513,"Issue":"Angular SSR has an Open Redirect via X-Forwarded-Prefix","URL":"https://github.com/advisories/GHSA-xh43-g2fq-wjrj","Severity":"moderate","Vulnerable Versions":">=21.0.0-next.0 <21.1.5","Tree Versions":["21.1.4"],"Dependents":["opal-frontend@workspace:."]}} {"value":"@angular/ssr","children":{"ID":1115534,"Issue":"Protocol-Relative URL Injection via Single Backslash Bypass in Angular SSR","URL":"https://github.com/advisories/GHSA-vfx2-hv2g-xj5f","Severity":"moderate","Vulnerable Versions":">=21.0.0-next.0 <21.2.3","Tree Versions":["21.1.4"],"Dependents":["opal-frontend@workspace:."]}} {"value":"ajv","children":{"ID":1113715,"Issue":"ajv has ReDoS when using `$data` option","URL":"https://github.com/advisories/GHSA-2g4f-4pwh-qvx6","Severity":"moderate","Vulnerable Versions":">=7.0.0-alpha.0 <8.18.0","Tree Versions":["8.17.1"],"Dependents":["schema-utils@npm:4.3.3"]}} +{"value":"bn.js","children":{"ID":1113442,"Issue":"bn.js affected by an infinite loop","URL":"https://github.com/advisories/GHSA-378v-28hj-76wf","Severity":"moderate","Vulnerable Versions":"<4.12.3","Tree Versions":["4.12.0"],"Dependents":["asn1.js@npm:5.4.1"]}} +{"value":"brace-expansion","children":{"ID":1115543,"Issue":"brace-expansion: Zero-step sequence causes process hang and memory exhaustion","URL":"https://github.com/advisories/GHSA-f886-m6hf-6m8v","Severity":"moderate","Vulnerable Versions":">=4.0.0 <5.0.5","Tree Versions":["5.0.3"],"Dependents":["minimatch@npm:3.1.2"]}} {"value":"minimatch","children":{"ID":1113459,"Issue":"minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern","URL":"https://github.com/advisories/GHSA-3ppc-4f35-3m26","Severity":"high","Vulnerable Versions":"<3.1.3","Tree Versions":["3.1.2"],"Dependents":["find-cypress-specs@npm:1.47.2"]}} {"value":"minimatch","children":{"ID":1113465,"Issue":"minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern","URL":"https://github.com/advisories/GHSA-3ppc-4f35-3m26","Severity":"high","Vulnerable Versions":">=9.0.0 <9.0.6","Tree Versions":["9.0.5"],"Dependents":["mocha@npm:11.7.5"]}} {"value":"minimatch","children":{"ID":1113538,"Issue":"minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments","URL":"https://github.com/advisories/GHSA-7r86-cg39-jmmj","Severity":"high","Vulnerable Versions":"<3.1.3","Tree Versions":["3.1.2"],"Dependents":["find-cypress-specs@npm:1.47.2"]}} @@ -18,9 +23,12 @@ {"value":"picomatch","children":{"ID":1115554,"Issue":"Picomatch has a ReDoS vulnerability via extglob quantifiers","URL":"https://github.com/advisories/GHSA-c2c7-rcm5-vvqj","Severity":"high","Vulnerable Versions":">=4.0.0 <4.0.4","Tree Versions":["4.0.2"],"Dependents":["tinyglobby@npm:0.2.10"]}} {"value":"serialize-javascript","children":{"ID":1113686,"Issue":"Serialize JavaScript is Vulnerable to RCE via RegExp.flags and Date.prototype.toISOString()","URL":"https://github.com/advisories/GHSA-5c6j-r48x-rmvq","Severity":"high","Vulnerable Versions":"<=7.0.2","Tree Versions":["6.0.2"],"Dependents":["mocha@npm:11.7.5"]}} {"value":"serialize-javascript","children":{"ID":1115723,"Issue":"Serialize JavaScript has CPU Exhaustion Denial of Service via crafted array-like objects","URL":"https://github.com/advisories/GHSA-qj8w-gfj5-8c6v","Severity":"moderate","Vulnerable Versions":"<7.0.5","Tree Versions":["6.0.2"],"Dependents":["mocha@npm:11.7.5"]}} +{"value":"tar","children":{"ID":1114200,"Issue":"tar has Hardlink Path Traversal via Drive-Relative Linkpath","URL":"https://github.com/advisories/GHSA-qffp-2rhf-9h96","Severity":"high","Vulnerable Versions":"<=7.5.9","Tree Versions":["7.5.9"],"Dependents":["node-gyp@npm:10.2.0"]}} +{"value":"tar","children":{"ID":1114302,"Issue":"node-tar Symlink Path Traversal via Drive-Relative Linkpath","URL":"https://github.com/advisories/GHSA-9ppj-qmqm-q256","Severity":"high","Vulnerable Versions":"<=7.5.10","Tree Versions":["7.5.9"],"Dependents":["node-gyp@npm:10.2.0"]}} {"value":"undici","children":{"ID":1114591,"Issue":"Undici: Malicious WebSocket 64-bit length overflows parser and crashes the client","URL":"https://github.com/advisories/GHSA-f269-vfmq-vjvj","Severity":"high","Vulnerable Versions":">=7.0.0 <7.24.0","Tree Versions":["7.22.0"],"Dependents":["@actions/http-client@npm:2.2.3"]}} {"value":"undici","children":{"ID":1114593,"Issue":"Undici has an HTTP Request/Response Smuggling issue","URL":"https://github.com/advisories/GHSA-2mjp-6q6p-2qxm","Severity":"moderate","Vulnerable Versions":">=7.0.0 <7.24.0","Tree Versions":["7.22.0"],"Dependents":["@actions/http-client@npm:2.2.3"]}} {"value":"undici","children":{"ID":1114637,"Issue":"Undici has Unbounded Memory Consumption in WebSocket permessage-deflate Decompression","URL":"https://github.com/advisories/GHSA-vrm6-8vpv-qv8q","Severity":"high","Vulnerable Versions":">=7.0.0 <7.24.0","Tree Versions":["7.22.0"],"Dependents":["@actions/http-client@npm:2.2.3"]}} {"value":"undici","children":{"ID":1114639,"Issue":"Undici has Unhandled Exception in WebSocket Client Due to Invalid server_max_window_bits Validation","URL":"https://github.com/advisories/GHSA-v9p9-hfj2-hcw8","Severity":"high","Vulnerable Versions":">=7.0.0 <7.24.0","Tree Versions":["7.22.0"],"Dependents":["@actions/http-client@npm:2.2.3"]}} {"value":"undici","children":{"ID":1114641,"Issue":"Undici has CRLF Injection in undici via `upgrade` option","URL":"https://github.com/advisories/GHSA-4992-7rv2-5pvq","Severity":"moderate","Vulnerable Versions":">=7.0.0 <7.24.0","Tree Versions":["7.22.0"],"Dependents":["@actions/http-client@npm:2.2.3"]}} {"value":"undici","children":{"ID":1114643,"Issue":"Undici has Unbounded Memory Consumption in its DeduplicationHandler via Response Buffering that leads to DoS","URL":"https://github.com/advisories/GHSA-phc3-fgpg-7m6h","Severity":"moderate","Vulnerable Versions":">=7.17.0 <7.24.0","Tree Versions":["7.22.0"],"Dependents":["@actions/http-client@npm:2.2.3"]}} +{"value":"yaml","children":{"ID":1115556,"Issue":"yaml is vulnerable to Stack Overflow via deeply nested YAML collections","URL":"https://github.com/advisories/GHSA-48c2-rrv3-qjmp","Severity":"moderate","Vulnerable Versions":">=2.0.0 <2.8.3","Tree Versions":["2.4.5"],"Dependents":["@cucumber/cucumber@npm:12.2.0"]}} From b03bc0694f0b12bfa72643434d1ca11c26a770d1 Mon Sep 17 00:00:00 2001 From: Frankie Moran Date: Fri, 3 Apr 2026 10:30:49 +0100 Subject: [PATCH 6/6] bump common-ui-lib version --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 04c4975cfe..acdd204aea 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "@hmcts/info-provider": "^1.1.0", "@hmcts/nodejs-healthcheck": "^1.8.5", "@hmcts/nodejs-logging": "^4.0.4", - "@hmcts/opal-frontend-common": "^0.0.68", + "@hmcts/opal-frontend-common": "^0.0.69", "@hmcts/opal-frontend-common-node": "^0.0.28", "@hmcts/properties-volume": "^1.1.0", "@hmcts/zephyr-automation-nodejs": "0.0.6", diff --git a/yarn.lock b/yarn.lock index 69e707516d..d0cb841c85 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3913,9 +3913,9 @@ __metadata: languageName: node linkType: hard -"@hmcts/opal-frontend-common@npm:^0.0.68": - version: 0.0.68 - resolution: "@hmcts/opal-frontend-common@npm:0.0.68" +"@hmcts/opal-frontend-common@npm:^0.0.69": + version: 0.0.69 + resolution: "@hmcts/opal-frontend-common@npm:0.0.69" dependencies: "@microsoft/applicationinsights-web": "npm:^3.3.6" "@ministryofjustice/frontend": "npm:^9.0.0" @@ -3937,7 +3937,7 @@ __metadata: peerDependenciesMeta: "@ngrx/signals": optional: true - checksum: 10/c4eb321363b8e4da1e70d3059d9f0be32e1519e34c0db490b855e9f40e28379380953e5cc6f40e60dbf69e3235e07ce000390b41afde3e2e937af3e2e482d760 + checksum: 10/92d4440a9fb82714d4d838c992896703ff12ddb681cbc1c9c614371d1de568d5dd01a20211b70d78d7b2f4774b5613c19fce592538c0894b1b9f49d06c3a25bb languageName: node linkType: hard @@ -14922,7 +14922,7 @@ __metadata: "@hmcts/info-provider": "npm:^1.1.0" "@hmcts/nodejs-healthcheck": "npm:^1.8.5" "@hmcts/nodejs-logging": "npm:^4.0.4" - "@hmcts/opal-frontend-common": "npm:^0.0.68" + "@hmcts/opal-frontend-common": "npm:^0.0.69" "@hmcts/opal-frontend-common-node": "npm:^0.0.28" "@hmcts/properties-volume": "npm:^1.1.0" "@hmcts/zephyr-automation-nodejs": "npm:0.0.6"