From 37e7fa446d3e9053215c042373ccf572dd6bef1f Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 7 Feb 2025 22:08:32 +0000
Subject: [PATCH 01/41] Update dependency eslint to v9.20.0 (#195)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [eslint](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint)) | [`9.19.0` ->
`9.20.0`](https://renovatebot.com/diffs/npm/eslint/9.19.0/9.20.0) |
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Release Notes
eslint/eslint (eslint)
###
[`v9.20.0`](https://redirect.github.com/eslint/eslint/compare/v9.19.0...7e78b50dacc3faeacfb8c8dc6ad3359971395d1d)
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.19.0...7e78b50dacc3faeacfb8c8dc6ad3359971395d1d)
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 29 +++++++++++++++++++++--------
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index a18480f..a4f283f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3628,9 +3628,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "9.19.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz",
- "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==",
+ "version": "9.20.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz",
+ "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9866,18 +9866,18 @@
}
},
"node_modules/eslint": {
- "version": "9.19.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz",
- "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==",
+ "version": "9.20.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.0.tgz",
+ "integrity": "sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.12.1",
"@eslint/config-array": "^0.19.0",
- "@eslint/core": "^0.10.0",
+ "@eslint/core": "^0.11.0",
"@eslint/eslintrc": "^3.2.0",
- "@eslint/js": "9.19.0",
+ "@eslint/js": "9.20.0",
"@eslint/plugin-kit": "^0.2.5",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
@@ -10028,6 +10028,19 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint/node_modules/@eslint/core": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz",
+ "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
"node_modules/eslint/node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
From 666b0049c33eecae05909dbbf34dfdc9c6ebb876 Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Fri, 7 Feb 2025 22:11:30 +0000
Subject: [PATCH 02/41] [no ci] Release v0.120.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index a4f283f..828af14 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.119.0",
+ "version": "0.120.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.119.0",
+ "version": "0.120.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index d565e3c..5c977e0 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.119.0",
+ "version": "0.120.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From 2dcc2dbf0f8979352e09a60b9d0e7016da00ce04 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 9 Feb 2025 17:30:50 +0000
Subject: [PATCH 03/41] Update dependency prettier to v3.5.0 (#196)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [prettier](https://prettier.io)
([source](https://redirect.github.com/prettier/prettier)) | [`3.4.2` ->
`3.5.0`](https://renovatebot.com/diffs/npm/prettier/3.4.2/3.5.0) |
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Release Notes
prettier/prettier (prettier)
###
[`v3.5.0`](https://redirect.github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#350)
[Compare
Source](https://redirect.github.com/prettier/prettier/compare/3.4.2...3.5.0)
[diff](https://redirect.github.com/prettier/prettier/compare/3.4.2...3.5.0)
π [Release Notes](https://prettier.io/blog/2025/02/09/3.5.0.html)
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 828af14..f52b332 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16742,9 +16742,9 @@
}
},
"node_modules/prettier": {
- "version": "3.4.2",
- "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.4.2.tgz",
- "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.0.tgz",
+ "integrity": "sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==",
"dev": true,
"license": "MIT",
"bin": {
From e076588d1b445f34423f89daa7836631b28969ec Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Sun, 9 Feb 2025 17:33:44 +0000
Subject: [PATCH 04/41] [no ci] Release v0.121.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index f52b332..f90053e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.120.0",
+ "version": "0.121.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.120.0",
+ "version": "0.121.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 5c977e0..287555c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.120.0",
+ "version": "0.121.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From 3b54795d26f7f7534151bfd105e7234cb9f1c972 Mon Sep 17 00:00:00 2001
From: Grzegorz Krajniak
Date: Mon, 10 Feb 2025 09:58:53 +0100
Subject: [PATCH 05/41] feat: remove hypespace wording and error node order
(#197)
Remove hypespace wording.
Set order to 1000 for the error node, so that it never gets first in the
luigi error node list.
---------
Co-authored-by: Grzegorz Krajniak
---
projects/lib/src/lib/i18n/de.xliff | 8 ++++----
projects/lib/src/lib/i18n/en.xliff | 10 +++++-----
.../common-global-luigi-nodes.service.spec.ts | 1 +
.../luigi-nodes/common-global-luigi-nodes.service.ts | 1 +
.../services/luigi-nodes/nodes-processing.service.ts | 2 +-
5 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/projects/lib/src/lib/i18n/de.xliff b/projects/lib/src/lib/i18n/de.xliff
index ecc7709..2f4a1a9 100644
--- a/projects/lib/src/lib/i18n/de.xliff
+++ b/projects/lib/src/lib/i18n/de.xliff
@@ -228,7 +228,7 @@
- PrΓΌfe, ob die URL korrekt ist oder benutze die Suche im Hyperspace Portal. Falls dieses Problem weiterhin auftritt, lege einen Issue an.
+ PrΓΌfe, ob die URL korrekt ist oder benutze die Suche im Portal. Falls dieses Problem weiterhin auftritt, lege einen Issue an.
@@ -266,12 +266,12 @@
- Installiere Hyperspace Portal Chrome Erweiterung, damit du dir alle UIs in Hyperspace Portal anschauen kannst.
+ Installiere Portal Chrome Erweiterung, damit du dir alle UIs in Portal anschauen kannst.
- Benutze Google Chrome mit der Hyperspace Portal Chrome Erweiterung, damit du dir alle UIs in Hyperspace Portal anschauen kannst.
Sie kΓΆnnen es auch in einem neuen Tab ΓΆffnen.
+ Benutze Google Chrome mit der Portal Chrome Erweiterung, damit du dir alle UIs in Portal anschauen kannst.
Sie kΓΆnnen es auch in einem neuen Tab ΓΆffnen.
@@ -281,7 +281,7 @@
- Stellen Sie eine Verbindung zum Unternehmensnetzwerk her, um diese Seite direkt in Hyperspace Portal anzuzeigen.
+ Stellen Sie eine Verbindung zum Unternehmensnetzwerk her, um diese Seite direkt in Portal anzuzeigen.
diff --git a/projects/lib/src/lib/i18n/en.xliff b/projects/lib/src/lib/i18n/en.xliff
index df81f6b..7edf1a7 100644
--- a/projects/lib/src/lib/i18n/en.xliff
+++ b/projects/lib/src/lib/i18n/en.xliff
@@ -228,7 +228,7 @@
- Check if the URL is correct or search in Hyperspace Portal. If this problem persists, create an issue.
+ Check if the URL is correct or search in the Portal. If this problem persists, create an issue.
@@ -271,17 +271,17 @@
- Once you install the Hyperspace Portal Chrome extension, you can view all extension UIs without leaving Hyperspace Portal.
+ Once you install the Portal Chrome extension, you can view all extension UIs without leaving the Portal.
- Once you update the Hyperspace Portal browser extension, you can view all extension UIs without leaving Hyperspace Portal. You are running version '{currentVersion}', you require version '{requiredVersion}'
+ Once you update the Portal browser extension, you can view all extension UIs without leaving the Portal. You are running version '{currentVersion}', you require version '{requiredVersion}'
- Use Google Chrome with the Hyperspace Portal Chrome extension, to view this content here.
You can also open it in a new tab.
+ Use Google Chrome with the Portal Chrome extension, to view this content here.
You can also open it in a new tab.
@@ -291,7 +291,7 @@
- Connect to the corporate network to view this extension UI directly in Hyperspace Portal.
+ Connect to the corporate network to view this extension UI directly in the Portal.
diff --git a/projects/lib/src/lib/services/luigi-nodes/common-global-luigi-nodes.service.spec.ts b/projects/lib/src/lib/services/luigi-nodes/common-global-luigi-nodes.service.spec.ts
index 5619454..3292cc7 100644
--- a/projects/lib/src/lib/services/luigi-nodes/common-global-luigi-nodes.service.spec.ts
+++ b/projects/lib/src/lib/services/luigi-nodes/common-global-luigi-nodes.service.spec.ts
@@ -41,6 +41,7 @@ describe('CommonGlobalLuigiNodesService', () => {
{
pathSegment: 'error',
label: 'Content not found',
+ order: '1000',
hideFromNav: true,
children: [
{
diff --git a/projects/lib/src/lib/services/luigi-nodes/common-global-luigi-nodes.service.ts b/projects/lib/src/lib/services/luigi-nodes/common-global-luigi-nodes.service.ts
index 2a4a945..0a2bd38 100644
--- a/projects/lib/src/lib/services/luigi-nodes/common-global-luigi-nodes.service.ts
+++ b/projects/lib/src/lib/services/luigi-nodes/common-global-luigi-nodes.service.ts
@@ -19,6 +19,7 @@ export class CommonGlobalLuigiNodesService {
{
pathSegment: 'error',
label: 'Content not found',
+ order: '1000',
hideFromNav: true,
children: [
{
diff --git a/projects/lib/src/lib/services/luigi-nodes/nodes-processing.service.ts b/projects/lib/src/lib/services/luigi-nodes/nodes-processing.service.ts
index a6e66f8..c54746c 100644
--- a/projects/lib/src/lib/services/luigi-nodes/nodes-processing.service.ts
+++ b/projects/lib/src/lib/services/luigi-nodes/nodes-processing.service.ts
@@ -4,7 +4,7 @@ import {
LUIGI_NODES_ACCESS_HANDLING_SERVICE_INJECTION_TOKEN,
LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN,
} from '../../injection-tokens';
-import { ClientEnvironment, LuigiNode, PortalConfig } from '../../models';
+import { LuigiNode } from '../../models';
import { EntityType } from '../../models/entity';
import { matchesJMESPath } from '../../utilities';
import { ConfigService } from '../portal';
From 9c476f2eb71f56d1cacbcb81d95573cecdd5a618 Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Mon, 10 Feb 2025 09:02:55 +0000
Subject: [PATCH 06/41] [no ci] Release v0.122.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index f90053e..332e800 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.121.0",
+ "version": "0.122.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.121.0",
+ "version": "0.122.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 287555c..9bbfde1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.121.0",
+ "version": "0.122.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From 8a510b8f9bc9880ef4346da5b786c0920948c301 Mon Sep 17 00:00:00 2001
From: Grzegorz Krajniak
Date: Tue, 11 Feb 2025 10:00:15 +0100
Subject: [PATCH 07/41] Feat/remove hypespace wording (#198)
Remove hyperspace and dxp naming
---------
Co-authored-by: Grzegorz Krajniak
---
.../lib/services/luigi-config/user-settings-config.service.ts | 4 ++--
projects/lib/src/lib/utilities/jmespath.spec.ts | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/projects/lib/src/lib/services/luigi-config/user-settings-config.service.ts b/projects/lib/src/lib/services/luigi-config/user-settings-config.service.ts
index cf4b537..e721df7 100644
--- a/projects/lib/src/lib/services/luigi-config/user-settings-config.service.ts
+++ b/projects/lib/src/lib/services/luigi-config/user-settings-config.service.ts
@@ -164,7 +164,7 @@ export class UserSettingsConfigService {
sublabel: await this.getSelectedThemeDisplayName(),
icon: 'palette',
title: 'USERSETTINGSDIALOG__APPEARANCE',
- viewUrl: '/settings-theming#dxp_disable_loading_indicator',
+ viewUrl: '/settings-theming#disable_loading_indicator',
settings: {},
};
}
@@ -179,7 +179,7 @@ export class UserSettingsConfigService {
? 'local-development-settings-icon-active'
: '',
title: 'LOCAL_DEVELOPMENT_SETTINGS_DIALOG_TITLE',
- viewUrl: '/development-settings#dxp_disable_loading_indicator',
+ viewUrl: '/development-settings#disable_loading_indicator',
};
}
diff --git a/projects/lib/src/lib/utilities/jmespath.spec.ts b/projects/lib/src/lib/utilities/jmespath.spec.ts
index 02703d1..855d8a3 100644
--- a/projects/lib/src/lib/utilities/jmespath.spec.ts
+++ b/projects/lib/src/lib/utilities/jmespath.spec.ts
@@ -40,7 +40,7 @@ describe('matchesJMESPath', () => {
{
entityContext: { component: { tags: null } },
},
- 'contains(entityContext.component.tags, "hyperspace-template")'
+ 'contains(entityContext.component.tags, "template")'
)
).toEqual(false);
expect(console.warn).toHaveBeenCalled();
From 47773ace9dabb508c9ee395961bde037a86f73ea Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Tue, 11 Feb 2025 09:03:32 +0000
Subject: [PATCH 08/41] [no ci] Release v0.123.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 332e800..fa25885 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.122.0",
+ "version": "0.123.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.122.0",
+ "version": "0.123.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 9bbfde1..845477f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.122.0",
+ "version": "0.123.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From 8f8e06ff45574493ebcaeef1402541eed1d2580a Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 11 Feb 2025 09:08:45 +0000
Subject: [PATCH 09/41] Update typescript-eslint monorepo to v8.24.0 (#199)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin)
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin))
| [`8.23.0` ->
`8.24.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/8.23.0/8.24.0)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
|
[@typescript-eslint/parser](https://typescript-eslint.io/packages/parser)
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser))
| [`8.23.0` ->
`8.24.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.23.0/8.24.0)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Release Notes
typescript-eslint/typescript-eslint
(@typescript-eslint/eslint-plugin)
###
[`v8.24.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8240-2025-02-10)
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.23.0...v8.24.0)
##### π Features
- **eslint-plugin:** \[no-unnecessary-condition] make
`allowConstantLoopConditions` more granular
([#10639](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10639))
##### π©Ή Fixes
- **eslint-plugin:** \[no-misused-spread] correct and elaborate string
spread report message
([#10751](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10751))
- **eslint-plugin:** \[restrict-plus-operands] report adding bigints to
strings when `allowNumberAndString` is `false`
([#10737](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10737))
##### β€οΈ Thank You
- Josh Goldberg β¨
- noah
- Ronen Amiel
You can read about our [versioning
strategy](https://main--typescript-eslint.netlify.app/users/versioning)
and
[releases](https://main--typescript-eslint.netlify.app/users/releases)
on our website.
typescript-eslint/typescript-eslint
(@typescript-eslint/parser)
###
[`v8.24.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8240-2025-02-10)
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.23.0...v8.24.0)
This was a version bump only for parser to align it with other projects,
there were no code changes.
You can read about our [versioning
strategy](https://main--typescript-eslint.netlify.app/users/versioning)
and
[releases](https://main--typescript-eslint.netlify.app/users/releases)
on our website.
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about these
updates again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 84 +++++++++++++++++++++++------------------------
1 file changed, 42 insertions(+), 42 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index fa25885..d3bb7d8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6717,17 +6717,17 @@
"license": "MIT"
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.23.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.23.0.tgz",
- "integrity": "sha512-vBz65tJgRrA1Q5gWlRfvoH+w943dq9K1p1yDBY2pc+a1nbBLZp7fB9+Hk8DaALUbzjqlMfgaqlVPT1REJdkt/w==",
+ "version": "8.24.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz",
+ "integrity": "sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.23.0",
- "@typescript-eslint/type-utils": "8.23.0",
- "@typescript-eslint/utils": "8.23.0",
- "@typescript-eslint/visitor-keys": "8.23.0",
+ "@typescript-eslint/scope-manager": "8.24.0",
+ "@typescript-eslint/type-utils": "8.24.0",
+ "@typescript-eslint/utils": "8.24.0",
+ "@typescript-eslint/visitor-keys": "8.24.0",
"graphemer": "^1.4.0",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
@@ -6757,16 +6757,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.23.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.23.0.tgz",
- "integrity": "sha512-h2lUByouOXFAlMec2mILeELUbME5SZRN/7R9Cw2RD2lRQQY08MWMM+PmVVKKJNK1aIwqTo9t/0CvOxwPbRIE2Q==",
+ "version": "8.24.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.0.tgz",
+ "integrity": "sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.23.0",
- "@typescript-eslint/types": "8.23.0",
- "@typescript-eslint/typescript-estree": "8.23.0",
- "@typescript-eslint/visitor-keys": "8.23.0",
+ "@typescript-eslint/scope-manager": "8.24.0",
+ "@typescript-eslint/types": "8.24.0",
+ "@typescript-eslint/typescript-estree": "8.24.0",
+ "@typescript-eslint/visitor-keys": "8.24.0",
"debug": "^4.3.4"
},
"engines": {
@@ -6782,14 +6782,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.23.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.23.0.tgz",
- "integrity": "sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==",
+ "version": "8.24.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz",
+ "integrity": "sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.23.0",
- "@typescript-eslint/visitor-keys": "8.23.0"
+ "@typescript-eslint/types": "8.24.0",
+ "@typescript-eslint/visitor-keys": "8.24.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -6800,14 +6800,14 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.23.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.23.0.tgz",
- "integrity": "sha512-iIuLdYpQWZKbiH+RkCGc6iu+VwscP5rCtQ1lyQ7TYuKLrcZoeJVpcLiG8DliXVkUxirW/PWlmS+d6yD51L9jvA==",
+ "version": "8.24.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz",
+ "integrity": "sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "8.23.0",
- "@typescript-eslint/utils": "8.23.0",
+ "@typescript-eslint/typescript-estree": "8.24.0",
+ "@typescript-eslint/utils": "8.24.0",
"debug": "^4.3.4",
"ts-api-utils": "^2.0.1"
},
@@ -6824,9 +6824,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.23.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.23.0.tgz",
- "integrity": "sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==",
+ "version": "8.24.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.0.tgz",
+ "integrity": "sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6838,14 +6838,14 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.23.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.23.0.tgz",
- "integrity": "sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==",
+ "version": "8.24.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz",
+ "integrity": "sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.23.0",
- "@typescript-eslint/visitor-keys": "8.23.0",
+ "@typescript-eslint/types": "8.24.0",
+ "@typescript-eslint/visitor-keys": "8.24.0",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@@ -6865,16 +6865,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.23.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.23.0.tgz",
- "integrity": "sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==",
+ "version": "8.24.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.0.tgz",
+ "integrity": "sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "8.23.0",
- "@typescript-eslint/types": "8.23.0",
- "@typescript-eslint/typescript-estree": "8.23.0"
+ "@typescript-eslint/scope-manager": "8.24.0",
+ "@typescript-eslint/types": "8.24.0",
+ "@typescript-eslint/typescript-estree": "8.24.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -6889,13 +6889,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.23.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.23.0.tgz",
- "integrity": "sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==",
+ "version": "8.24.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz",
+ "integrity": "sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.23.0",
+ "@typescript-eslint/types": "8.24.0",
"eslint-visitor-keys": "^4.2.0"
},
"engines": {
From 64faaf12fcec493bd95df7f784103317b046a9f0 Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Tue, 11 Feb 2025 09:12:19 +0000
Subject: [PATCH 10/41] [no ci] Release v0.124.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index d3bb7d8..95673b3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.123.0",
+ "version": "0.124.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.123.0",
+ "version": "0.124.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 845477f..4e4abb7 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.123.0",
+ "version": "0.124.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From 1d9633678ea1d2c5f2d5adb1bc08f181b19180e5 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 11 Feb 2025 20:25:47 +0000
Subject: [PATCH 11/41] Update dependency eslint to v9.20.1 (#200)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [eslint](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint)) | [`9.20.0` ->
`9.20.1`](https://renovatebot.com/diffs/npm/eslint/9.20.0/9.20.1) |
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Release Notes
eslint/eslint (eslint)
###
[`v9.20.1`](https://redirect.github.com/eslint/eslint/compare/v9.20.0...07b2ffd3c597780eba6297d7735114beb5d0af4a)
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.20.0...v9.20.1)
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 95673b3..1456ca1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9866,9 +9866,9 @@
}
},
"node_modules/eslint": {
- "version": "9.20.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.0.tgz",
- "integrity": "sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA==",
+ "version": "9.20.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz",
+ "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==",
"dev": true,
"license": "MIT",
"dependencies": {
From 81ee05c25867eaa16d9d8f40b42ad2b3d259d0f0 Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Tue, 11 Feb 2025 20:28:51 +0000
Subject: [PATCH 12/41] [no ci] Release v0.125.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 1456ca1..5f203d5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.124.0",
+ "version": "0.125.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.124.0",
+ "version": "0.125.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 4e4abb7..cbedabe 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.124.0",
+ "version": "0.125.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From 8d7a6e4256359799186ea6ea4c7722b174b07ff7 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 13 Feb 2025 06:07:17 +0000
Subject: [PATCH 13/41] Update dependency @types/node to v22.13.2 (#203)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node))
| [`22.13.1` ->
`22.13.2`](https://renovatebot.com/diffs/npm/@types%2fnode/22.13.1/22.13.2)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 5f203d5..105009a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6571,9 +6571,9 @@
}
},
"node_modules/@types/node": {
- "version": "22.13.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz",
- "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==",
+ "version": "22.13.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.2.tgz",
+ "integrity": "sha512-Z+r8y3XL9ZpI2EY52YYygAFmo2/oWfNSj4BCpAXE2McAexDk8VcnBMGC9Djn9gTKt4d2T/hhXqmPzo4hfIXtTg==",
"dev": true,
"license": "MIT",
"dependencies": {
From 716918910f25584e99a6135f9bebac1779c84477 Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Thu, 13 Feb 2025 06:10:21 +0000
Subject: [PATCH 14/41] [no ci] Release v0.126.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 105009a..5e20dc6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.125.0",
+ "version": "0.126.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.125.0",
+ "version": "0.126.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index cbedabe..5e368cb 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.125.0",
+ "version": "0.126.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From 6a2e102abe816958c494e4443d0276b29a157aad Mon Sep 17 00:00:00 2001
From: Grzegorz Krajniak
Date: Thu, 13 Feb 2025 16:46:25 +0100
Subject: [PATCH 15/41] feat: refactor the way static setting is set (#204)
Refactor `StaticSettingsConfigService` interface.
Now the injected with the token
`LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN ` service is
trated as a custom luigi static settings privider, adding to the default
setting or eventually overriding the defaults.
---------
Co-authored-by: Grzegorz Krajniak
---
projects/lib/src/lib/portal-providers.spec.ts | 3 +-
.../lifecycle-hooks-config.service.spec.ts | 4 +-
.../lifecycle-hooks-config.service.ts | 23 ++---
.../luigi-breadcrumb-config.service.ts | 2 +-
.../luigi-config/luigi-config.service.spec.ts | 46 +++++++---
.../luigi-config/luigi-config.service.ts | 22 ++---
.../luigi-config/navigation-config.service.ts | 3 +-
.../static-settings-config.service.spec.ts | 85 +++++++++++++++----
.../static-settings-config.service.ts | 26 ++++--
9 files changed, 144 insertions(+), 70 deletions(-)
diff --git a/projects/lib/src/lib/portal-providers.spec.ts b/projects/lib/src/lib/portal-providers.spec.ts
index 3952223..5892ee4 100644
--- a/projects/lib/src/lib/portal-providers.spec.ts
+++ b/projects/lib/src/lib/portal-providers.spec.ts
@@ -9,6 +9,7 @@ import {
GlobalSearchConfigService,
LocalConfigurationServiceImpl,
LuigiAuthEventsCallbacksService,
+ LuigiBreadcrumb,
LuigiBreadcrumbConfigService,
LuigiExtendedGlobalContextConfigService,
NodeAccessHandlingService,
@@ -190,7 +191,7 @@ describe('Provide Portal', () => {
class CustomLuigiBreadcrumbConfigService
implements LuigiBreadcrumbConfigService
{
- getBreadcrumbsConfig(): services.LuigiBreadcrumb {
+ getBreadcrumbsConfig(): Promise {
throw new Error('Method not implemented.');
}
}
diff --git a/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.spec.ts b/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.spec.ts
index 68f7a31..7d1ccfe 100644
--- a/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.spec.ts
+++ b/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.spec.ts
@@ -126,8 +126,8 @@ describe('LifecycleHooksConfigService', () => {
it('should handle error when retrieving Luigi navigation nodes', async () => {
const error = new Error('Test error');
luigiNodesServiceMock.retrieveChildrenByEntity.mockRejectedValue(error);
- staticSettingsConfigServiceMock.getInitialStaticSettingsConfig.mockReturnValue(
- { header: { title: 'Test App' } }
+ staticSettingsConfigServiceMock.getStaticSettingsConfig.mockResolvedValue(
+ { header: { title: 'Test App', logo: 'assets/logo.png' } }
);
console.error = jest.fn();
diff --git a/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts b/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts
index f3f4e14..1c50b64 100644
--- a/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts
+++ b/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts
@@ -6,12 +6,9 @@ import { LuigiNodesService } from '../luigi-nodes/luigi-nodes.service';
import { GlobalSearchConfigService } from './global-search-config.service';
import { NavigationConfigService } from './navigation-config.service';
import { RoutingConfigService } from './routing-config.service';
-import { StaticSettingsConfigService } from './static-settings-config.service';
+import { StaticSettingsConfigServiceImpl } from './static-settings-config.service';
import { UserSettingsConfigService } from './user-settings-config.service';
-import {
- LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN,
- LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN,
-} from '../../injection-tokens';
+import { LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';
import { LuigiNode, ClientEnvironment } from '../../models';
import { localDevelopmentSettingsLocalStorage } from '../storage-service';
@@ -24,8 +21,7 @@ export class LifecycleHooksConfigService {
private routingConfigService: RoutingConfigService,
private navigationConfigService: NavigationConfigService,
private userSettingsConfigService: UserSettingsConfigService,
- @Inject(LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN)
- private staticSettingsConfigService: StaticSettingsConfigService,
+ private staticSettingsConfigService: StaticSettingsConfigServiceImpl,
@Optional()
@Inject(LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN)
private globalSearchConfigService: GlobalSearchConfigService
@@ -42,7 +38,7 @@ export class LifecycleHooksConfigService {
await this.luigiNodesService.retrieveChildrenByEntity();
} catch (e) {
console.error(`Error retrieving Luigi navigation nodes`, e);
- this.openErrorDialog();
+ await this.openErrorDialog();
return;
}
@@ -53,8 +49,6 @@ export class LifecycleHooksConfigService {
childrenByEntity,
envConfig
),
- settings:
- await this.staticSettingsConfigService.getStaticSettingsConfig(),
routing: this.routingConfigService.getRoutingConfig(),
userSettings:
await this.userSettingsConfigService.getUserSettings(
@@ -73,11 +67,10 @@ export class LifecycleHooksConfigService {
};
}
- private openErrorDialog() {
- const appTitle =
- this.staticSettingsConfigService.getInitialStaticSettingsConfig()[
- 'header'
- ].title;
+ private async openErrorDialog() {
+ const appTitle = (
+ await this.staticSettingsConfigService.getStaticSettingsConfig()
+ ).header.title;
this.luigiCoreService.showAlert({
text: $localize`There was an error loading the ${appTitle}`,
type: 'error',
diff --git a/projects/lib/src/lib/services/luigi-config/luigi-breadcrumb-config.service.ts b/projects/lib/src/lib/services/luigi-config/luigi-breadcrumb-config.service.ts
index 476cbb6..225b199 100644
--- a/projects/lib/src/lib/services/luigi-config/luigi-breadcrumb-config.service.ts
+++ b/projects/lib/src/lib/services/luigi-config/luigi-breadcrumb-config.service.ts
@@ -18,5 +18,5 @@ export interface LuigiBreadcrumb {
}
export interface LuigiBreadcrumbConfigService {
- getBreadcrumbsConfig(): LuigiBreadcrumb;
+ getBreadcrumbsConfig(): Promise;
}
diff --git a/projects/lib/src/lib/services/luigi-config/luigi-config.service.spec.ts b/projects/lib/src/lib/services/luigi-config/luigi-config.service.spec.ts
index c81c2c6..9c3df5f 100644
--- a/projects/lib/src/lib/services/luigi-config/luigi-config.service.spec.ts
+++ b/projects/lib/src/lib/services/luigi-config/luigi-config.service.spec.ts
@@ -1,9 +1,13 @@
+import { TestBed } from '@angular/core/testing';
import { LuigiConfigService } from './luigi-config.service';
import { EnvConfigService } from '../portal';
import { AuthConfigService } from './auth-config.service';
import { ClientEnvironment } from '../../models';
import { RoutingConfigService } from './routing-config.service';
-import { StaticSettingsConfigService } from './static-settings-config.service';
+import {
+ StaticSettingsConfigService,
+ StaticSettingsConfigServiceImpl,
+} from './static-settings-config.service';
import { CustomMessageListenersService } from './custom-message-listeners.service';
import { LifecycleHooksConfigService } from './lifecycle-hooks-config.service';
@@ -26,7 +30,7 @@ describe('LuigiConfigService', () => {
} as any;
staticSettingsConfigServiceMock = {
- getInitialStaticSettingsConfig: jest.fn(),
+ getStaticSettingsConfig: jest.fn(),
} as any;
customMessageListenersMock = {
@@ -42,14 +46,28 @@ describe('LuigiConfigService', () => {
getLifecycleHooksConfig: jest.fn(),
} as any;
- service = new LuigiConfigService(
- envConfigServiceMock,
- authConfigServiceMock,
- customMessageListenersMock,
- routingConfigServiceMock,
- lifecycleHooksConfigServiceMock,
- staticSettingsConfigServiceMock
- );
+ TestBed.configureTestingModule({
+ providers: [
+ LuigiConfigService,
+ { provide: EnvConfigService, useValue: envConfigServiceMock },
+ { provide: AuthConfigService, useValue: authConfigServiceMock },
+ {
+ provide: CustomMessageListenersService,
+ useValue: customMessageListenersMock,
+ },
+ { provide: RoutingConfigService, useValue: routingConfigServiceMock },
+ {
+ provide: LifecycleHooksConfigService,
+ useValue: lifecycleHooksConfigServiceMock,
+ },
+ {
+ provide: StaticSettingsConfigServiceImpl,
+ useValue: staticSettingsConfigServiceMock,
+ },
+ ],
+ });
+
+ service = TestBed.inject(LuigiConfigService);
});
it('should be created', () => {
@@ -69,6 +87,10 @@ describe('LuigiConfigService', () => {
} as any;
const mockStaticSettings = {
+ header: {
+ title: 'title',
+ logo: 'https://example.com/oauth',
+ },
filed: 'filed',
};
@@ -92,7 +114,7 @@ describe('LuigiConfigService', () => {
lifecycleHooksConfigServiceMock.getLifecycleHooksConfig.mockReturnValue(
mockLifecycleHooks
);
- staticSettingsConfigServiceMock.getInitialStaticSettingsConfig.mockReturnValue(
+ staticSettingsConfigServiceMock.getStaticSettingsConfig.mockResolvedValue(
mockStaticSettings
);
customMessageListenersMock.getMessageListeners.mockReturnValue(
@@ -108,7 +130,7 @@ describe('LuigiConfigService', () => {
// Assert
expect(envConfigServiceMock.getEnvConfig).toHaveBeenCalled();
expect(
- staticSettingsConfigServiceMock.getInitialStaticSettingsConfig
+ staticSettingsConfigServiceMock.getStaticSettingsConfig
).toHaveBeenCalled();
expect(authConfigServiceMock.getAuthConfig).toHaveBeenCalledWith(
mockEnvConfig.oauthServerUrl,
diff --git a/projects/lib/src/lib/services/luigi-config/luigi-config.service.ts b/projects/lib/src/lib/services/luigi-config/luigi-config.service.ts
index 5372590..8227ac4 100644
--- a/projects/lib/src/lib/services/luigi-config/luigi-config.service.ts
+++ b/projects/lib/src/lib/services/luigi-config/luigi-config.service.ts
@@ -1,10 +1,9 @@
-import { Inject, Injectable } from '@angular/core';
-import { LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';
+import { Injectable, inject } from '@angular/core';
import { ClientEnvironment, LuigiConfig } from '../../models';
import { AuthConfigService } from './auth-config.service';
import { EnvConfigService } from '../portal';
import { RoutingConfigService } from './routing-config.service';
-import { StaticSettingsConfigService } from './static-settings-config.service';
+import { StaticSettingsConfigServiceImpl } from './static-settings-config.service';
import { CustomMessageListenersService } from './custom-message-listeners.service';
import { LifecycleHooksConfigService } from './lifecycle-hooks-config.service';
@@ -12,15 +11,12 @@ import { LifecycleHooksConfigService } from './lifecycle-hooks-config.service';
providedIn: 'root',
})
export class LuigiConfigService {
- constructor(
- private envConfigService: EnvConfigService,
- private authConfigService: AuthConfigService,
- private customMessageListenersService: CustomMessageListenersService,
- private routingConfigService: RoutingConfigService,
- private lifecycleHooksConfigService: LifecycleHooksConfigService,
- @Inject(LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN)
- private staticSettingsConfigService: StaticSettingsConfigService
- ) {}
+ private envConfigService = inject(EnvConfigService);
+ private authConfigService = inject(AuthConfigService);
+ private customMessageListenersService = inject(CustomMessageListenersService);
+ private routingConfigService = inject(RoutingConfigService);
+ private lifecycleHooksConfigService = inject(LifecycleHooksConfigService);
+ private staticSettingsConfigService = inject(StaticSettingsConfigServiceImpl);
public async getLuigiConfiguration(): Promise {
const envConfig: ClientEnvironment =
@@ -33,7 +29,7 @@ export class LuigiConfigService {
routing: this.routingConfigService.getInitialRoutingConfig(),
communication: this.customMessageListenersService.getMessageListeners(),
settings:
- this.staticSettingsConfigService.getInitialStaticSettingsConfig(),
+ await this.staticSettingsConfigService.getStaticSettingsConfig(),
lifecycleHooks:
this.lifecycleHooksConfigService.getLifecycleHooksConfig(envConfig),
};
diff --git a/projects/lib/src/lib/services/luigi-config/navigation-config.service.ts b/projects/lib/src/lib/services/luigi-config/navigation-config.service.ts
index 89da8cd..6e8e5bf 100644
--- a/projects/lib/src/lib/services/luigi-config/navigation-config.service.ts
+++ b/projects/lib/src/lib/services/luigi-config/navigation-config.service.ts
@@ -68,7 +68,8 @@ export class NavigationConfigService {
nodeChangeHook: function (prevNode, nextNode) {
this.nodeChangeHookConfigService.nodeChangeHook(prevNode, nextNode);
}.bind(this),
- breadcrumbs: this.luigiBreadcrumbConfigService?.getBreadcrumbsConfig(),
+ breadcrumbs:
+ await this.luigiBreadcrumbConfigService?.getBreadcrumbsConfig(),
};
}
diff --git a/projects/lib/src/lib/services/luigi-config/static-settings-config.service.spec.ts b/projects/lib/src/lib/services/luigi-config/static-settings-config.service.spec.ts
index f8bb536..d6b3873 100644
--- a/projects/lib/src/lib/services/luigi-config/static-settings-config.service.spec.ts
+++ b/projects/lib/src/lib/services/luigi-config/static-settings-config.service.spec.ts
@@ -2,25 +2,38 @@ import { provideHttpClient } from '@angular/common/http';
import { TestBed } from '@angular/core/testing';
import { mock } from 'jest-mock-extended';
import { IframeService } from './iframe.service';
-import { StaticSettingsConfigServiceImpl } from './static-settings-config.service';
+import {
+ StaticSettingsConfigService,
+ StaticSettingsConfigServiceImpl,
+} from './static-settings-config.service';
import { I18nService } from '../i18n.service';
+import { LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';
describe('StaticSettingsConfigServiceImpl', () => {
let service: StaticSettingsConfigServiceImpl;
- let iframeService: jest.Mocked;
- let i18nService: jest.Mocked;
+ let iframeServiceMock: jest.Mocked;
+ let i18nServiceMock: jest.Mocked;
+ let customStaticSettingsConfigServiceMock: jest.Mocked;
+
let interceptFunction;
beforeEach(() => {
- iframeService = mock();
- i18nService = mock();
+ iframeServiceMock = mock();
+ i18nServiceMock = mock();
+ customStaticSettingsConfigServiceMock = mock();
interceptFunction = () => {};
- iframeService.iFrameCreationInterceptor.mockReturnValue(interceptFunction);
+ iframeServiceMock.iFrameCreationInterceptor.mockReturnValue(
+ interceptFunction
+ );
TestBed.configureTestingModule({
providers: [
provideHttpClient(),
- { provide: IframeService, useValue: iframeService },
- { provide: I18nService, useValue: i18nService },
+ { provide: IframeService, useValue: iframeServiceMock },
+ { provide: I18nService, useValue: i18nServiceMock },
+ {
+ provide: LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN,
+ useValue: customStaticSettingsConfigServiceMock,
+ },
StaticSettingsConfigServiceImpl,
],
});
@@ -34,9 +47,9 @@ describe('StaticSettingsConfigServiceImpl', () => {
expect(service).toBeTruthy();
});
- describe('getInitialStaticSettingsConfig', () => {
- it('should return the correct configuration with MFP logo', () => {
- const config = service.getInitialStaticSettingsConfig();
+ describe('getStaticSettingsConfig', () => {
+ it('should return the correct configuration with MFP logo', async () => {
+ const config = await service.getStaticSettingsConfig();
expect(config).toEqual({
header: {
@@ -56,16 +69,52 @@ describe('StaticSettingsConfigServiceImpl', () => {
hideAutomatically: true,
},
iframeCreationInterceptor: interceptFunction,
- customTranslationImplementation: i18nService,
+ customTranslationImplementation: i18nServiceMock,
});
});
- });
- describe('getStaticSettingsConfig', () => {
- it('should return the same configuration as getInitialStaticSettingsConfig', () => {
- const initialConfig = service.getInitialStaticSettingsConfig();
- const staticConfig = service.getStaticSettingsConfig();
- expect(staticConfig).toEqual(initialConfig);
+ it('should merge and override default config with custom settings', async () => {
+ const customConfig = {
+ header: {
+ title: 'Custom Portal Title',
+ logo: 'assets/custom-logo.svg',
+ favicon: 'assets/custom-favicon.ico',
+ },
+ experimental: {
+ btpToolLayout: false,
+ customFeature: true,
+ },
+ additionalSetting: 'value',
+ };
+
+ customStaticSettingsConfigServiceMock.getStaticSettingsConfig.mockResolvedValue(
+ customConfig
+ );
+
+ const config = await service.getStaticSettingsConfig();
+
+ expect(config).toEqual({
+ header: {
+ title: 'Custom Portal Title',
+ logo: 'assets/custom-logo.svg',
+ favicon: 'assets/custom-favicon.ico',
+ },
+ experimental: {
+ btpToolLayout: false,
+ customFeature: true,
+ },
+ btpToolLayout: true,
+ responsiveNavigation: 'Fiori3',
+ featureToggles: {
+ queryStringParam: 'ft',
+ },
+ appLoadingIndicator: {
+ hideAutomatically: true,
+ },
+ iframeCreationInterceptor: interceptFunction,
+ customTranslationImplementation: i18nServiceMock,
+ additionalSetting: 'value',
+ });
});
});
});
diff --git a/projects/lib/src/lib/services/luigi-config/static-settings-config.service.ts b/projects/lib/src/lib/services/luigi-config/static-settings-config.service.ts
index 3f6bfdd..c9dba80 100644
--- a/projects/lib/src/lib/services/luigi-config/static-settings-config.service.ts
+++ b/projects/lib/src/lib/services/luigi-config/static-settings-config.service.ts
@@ -1,10 +1,18 @@
import { inject, Injectable } from '@angular/core';
+import { LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';
import { I18nService } from '../i18n.service';
import { IframeService } from './iframe.service';
export interface StaticSettingsConfigService {
- getInitialStaticSettingsConfig(): Record;
- getStaticSettingsConfig(): Record;
+ getStaticSettingsConfig(): Promise;
+}
+
+export interface LuigiStaticSettings extends Record {
+ header: {
+ title: string;
+ logo: string;
+ favicon?: string;
+ };
}
@Injectable({
@@ -13,10 +21,17 @@ export interface StaticSettingsConfigService {
export class StaticSettingsConfigServiceImpl
implements StaticSettingsConfigService
{
+ private customStaticSettingsConfigService =
+ inject(
+ LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN as any,
+ {
+ optional: true,
+ }
+ );
private i18nService = inject(I18nService);
private iframeService = inject(IframeService);
- getInitialStaticSettingsConfig() {
+ async getStaticSettingsConfig(): Promise {
const logo = 'assets/images/mfp_mark.svg';
return {
@@ -38,10 +53,7 @@ export class StaticSettingsConfigServiceImpl
},
iframeCreationInterceptor: this.iframeService.iFrameCreationInterceptor(),
customTranslationImplementation: this.i18nService,
+ ...(await this.customStaticSettingsConfigService?.getStaticSettingsConfig()),
};
}
-
- getStaticSettingsConfig() {
- return this.getInitialStaticSettingsConfig();
- }
}
From 320aa868b2cb3dd6edb9fb4ec19d596b46cf8b0e Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Thu, 13 Feb 2025 15:49:44 +0000
Subject: [PATCH 16/41] [no ci] Release v0.127.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 5e20dc6..e13665d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.126.0",
+ "version": "0.127.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.126.0",
+ "version": "0.127.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 5e368cb..89684f6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.126.0",
+ "version": "0.127.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From e3c2a17e6cd0f70bc727840d7fc35788948b52fa Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 13 Feb 2025 15:53:38 +0000
Subject: [PATCH 17/41] Update dependency prettier to v3.5.1 (#205)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [prettier](https://prettier.io)
([source](https://redirect.github.com/prettier/prettier)) | [`3.5.0` ->
`3.5.1`](https://renovatebot.com/diffs/npm/prettier/3.5.0/3.5.1) |
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Release Notes
prettier/prettier (prettier)
###
[`v3.5.1`](https://redirect.github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#351)
[Compare
Source](https://redirect.github.com/prettier/prettier/compare/3.5.0...3.5.1)
[diff](https://redirect.github.com/prettier/prettier/compare/3.5.0...3.5.1)
##### Fix CLI crash when cache for old version exists
([#17100](https://redirect.github.com/prettier/prettier/pull/17100)
by [@sosukesuzuki](https://redirect.github.com/sosukesuzuki))
Prettier 3.5 uses a different cache format than previous versions,
Prettier 3.5.0 crashes when reading existing cache file, Prettier 3.5.1
fixed the problem.
##### Support dockercompose and github-actions-workflow in VSCode
([#17101](https://redirect.github.com/prettier/prettier/pull/17101)
by [@remcohaszing](https://redirect.github.com/remcohaszing))
Prettier now supports the `dockercompose` and `github-actions-workflow`
languages in Visual Studio Code.
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index e13665d..eb48b8f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16742,9 +16742,9 @@
}
},
"node_modules/prettier": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.0.tgz",
- "integrity": "sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz",
+ "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==",
"dev": true,
"license": "MIT",
"bin": {
From 3fd7f20b15cd0b9912a5d610f04aab9fd15e1fdb Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Thu, 13 Feb 2025 15:56:53 +0000
Subject: [PATCH 18/41] [no ci] Release v0.128.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index eb48b8f..9437321 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.127.0",
+ "version": "0.128.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.127.0",
+ "version": "0.128.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 89684f6..c9b76cc 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.127.0",
+ "version": "0.128.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From accf13ae5a91157aab60fb64308c795c31fe214c Mon Sep 17 00:00:00 2001
From: Grzegorz Krajniak
Date: Thu, 13 Feb 2025 17:35:41 +0100
Subject: [PATCH 19/41] Feat: refactor the way static setting is set (#206)
Updating the way custon static setting is now passed to the library.
---------
Co-authored-by: Grzegorz Krajniak
---
projects/lib/src/lib/portal-providers.spec.ts | 129 ++++--------------
projects/lib/src/lib/portal-providers.ts | 13 +-
2 files changed, 35 insertions(+), 107 deletions(-)
diff --git a/projects/lib/src/lib/portal-providers.spec.ts b/projects/lib/src/lib/portal-providers.spec.ts
index 5892ee4..7a9fdf4 100644
--- a/projects/lib/src/lib/portal-providers.spec.ts
+++ b/projects/lib/src/lib/portal-providers.spec.ts
@@ -14,13 +14,13 @@ import {
LuigiExtendedGlobalContextConfigService,
NodeAccessHandlingService,
NodeChangeHookConfigService,
- StaticSettingsConfigServiceImpl,
+ StaticSettingsConfigService,
ThemingService,
UserProfileConfigService,
} from './services';
import * as services from './services';
import { Context } from '@luigi-project/client';
-import { LuigiNode, PortalConfig, ClientEnvironment } from './models';
+import { LuigiNode } from './models';
class MockCustomListener1 implements CustomMessageListener {
messageId(): string {
@@ -106,11 +106,6 @@ describe('Provide Portal', () => {
const providersArg = mockMakeEnvironmentProviders.mock.calls[0][0];
- expect(providersArg).toContainEqual({
- provide: tokens.LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN,
- useClass: StaticSettingsConfigServiceImpl,
- });
-
expect(providersArg).toContainEqual({
provide: tokens.LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN,
useClass: LocalConfigurationServiceImpl,
@@ -123,92 +118,19 @@ describe('Provide Portal', () => {
});
it('should set custom services when provided', () => {
- class CustomAuthEventsService implements LuigiAuthEventsCallbacksService {
- onAuthSuccessful: (settings: any, authData: any) => void;
- onAuthError: (settings: any, err: any) => void;
- onAuthExpired: (settings: any) => void;
- onLogout: (settings: any) => void;
- onAuthExpireSoon: (settings: any) => void;
- onAuthConfigError: (settings: any, err: any) => void;
- }
-
- class CustomNodeAccessService implements NodeAccessHandlingService {
- nodeAccessHandling(ctx: Context, node: LuigiNode): Promise {
- throw new Error('Method not implemented.');
- }
- }
-
- class CustomNodeChangeHookService implements NodeChangeHookConfigService {
- nodeChangeHook(prevNode: LuigiNode, nextNode: LuigiNode) {
- throw new Error('Method not implemented.');
- }
- }
-
- class CustomThemingService implements ThemingService {
- applyTheme(id: string, reset?: boolean): void {
- throw new Error('Method not implemented.');
- }
- getDefaultThemeId(): string {
- throw new Error('Method not implemented.');
- }
- getAvailableThemes(): services.Theme[] {
- throw new Error('Method not implemented.');
- }
- }
-
- class CustomGlobalSearchConfigService implements GlobalSearchConfigService {
- getGlobalSearchConfig() {
- return null;
- }
- }
-
- class CustomAppSwitcherConfigService implements AppSwitcherConfigService {
- getAppSwitcher(luigiNodes: LuigiNode[]) {
- throw new Error('Method not implemented.');
- }
- }
-
- class CustomLuigiExtendedGlobalContextConfigService
- implements LuigiExtendedGlobalContextConfigService
- {
- createLuigiExtendedGlobalContext(): Promise> {
- throw new Error('Method not implemented.');
- }
- }
-
- class CustomCustomGlobalNodesService implements CustomGlobalNodesService {
- getCustomGlobalNodes(): Promise {
- throw new Error('Method not implemented.');
- }
- }
-
- class CustomUserProfileConfigService implements UserProfileConfigService {
- getProfile(): Promise {
- throw new Error('Method not implemented.');
- }
- }
-
- class CustomLuigiBreadcrumbConfigService
- implements LuigiBreadcrumbConfigService
- {
- getBreadcrumbsConfig(): Promise {
- throw new Error('Method not implemented.');
- }
- }
-
const options: PortalOptions = {
- luigiAuthEventsCallbacksService: CustomAuthEventsService,
- nodeAccessHandlingService: CustomNodeAccessService,
- nodeChangeHookConfigService: CustomNodeChangeHookService,
- globalSearchConfigService: CustomGlobalSearchConfigService,
- appSwitcherConfigService: CustomAppSwitcherConfigService,
- luigiExtendedGlobalContextConfigService:
- CustomLuigiExtendedGlobalContextConfigService,
- customGlobalNodesService: CustomCustomGlobalNodesService,
- userProfileConfigService: CustomUserProfileConfigService,
- luigiBreadcrumbConfigService: CustomLuigiBreadcrumbConfigService,
+ luigiAuthEventsCallbacksService: {} as any,
+ staticSettingsConfigService: {} as any,
+ nodeAccessHandlingService: {} as any,
+ nodeChangeHookConfigService: {} as any,
+ globalSearchConfigService: {} as any,
+ appSwitcherConfigService: {} as any,
+ luigiExtendedGlobalContextConfigService: {} as any,
+ customGlobalNodesService: {} as any,
+ userProfileConfigService: {} as any,
+ luigiBreadcrumbConfigService: {} as any,
+ themingService: {} as any,
errorComponentConfig: { '404': {} } as any,
- themingService: CustomThemingService,
};
providePortal(options);
@@ -220,55 +142,60 @@ describe('Provide Portal', () => {
useValue: { '404': {} },
});
+ expect(providersArg).toContainEqual({
+ provide: tokens.LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN,
+ useClass: {},
+ });
+
expect(providersArg).toContainEqual({
provide: tokens.LUIGI_BREADCRUMB_CONFIG_SERVICE_INJECTION_TOKEN,
- useClass: CustomLuigiBreadcrumbConfigService,
+ useClass: {},
});
expect(providersArg).toContainEqual({
provide: tokens.LUIGI_USER_PROFILE_CONFIG_SERVICE_INJECTION_TOKEN,
- useClass: CustomUserProfileConfigService,
+ useClass: {},
});
expect(providersArg).toContainEqual({
provide: tokens.LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN,
- useClass: CustomCustomGlobalNodesService,
+ useClass: {},
});
expect(providersArg).toContainEqual({
provide:
tokens.LUIGI_EXTENDED_GLOBAL_CONTEXT_CONFIG_SERVICE_INJECTION_TOKEN,
- useClass: CustomLuigiExtendedGlobalContextConfigService,
+ useClass: {},
});
expect(providersArg).toContainEqual({
provide: tokens.LUIGI_APP_SWITCHER_CONFIG_SERVICE_INJECTION_TOKEN,
- useClass: CustomAppSwitcherConfigService,
+ useClass: {},
});
expect(providersArg).toContainEqual({
provide: tokens.THEMING_SERVICE,
- useClass: CustomThemingService,
+ useClass: {},
});
expect(providersArg).toContainEqual({
provide: tokens.LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN,
- useClass: CustomGlobalSearchConfigService,
+ useClass: {},
});
expect(providersArg).toContainEqual({
provide: tokens.LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN,
- useClass: CustomAuthEventsService,
+ useClass: {},
});
expect(providersArg).toContainEqual({
provide: tokens.LUIGI_NODES_ACCESS_HANDLING_SERVICE_INJECTION_TOKEN,
- useClass: CustomNodeAccessService,
+ useClass: {},
});
expect(providersArg).toContainEqual({
provide: tokens.LUIGI_NODE_CHANGE_HOOK_SERVICE_INJECTION_TOKEN,
- useClass: CustomNodeChangeHookService,
+ useClass: {},
});
});
diff --git a/projects/lib/src/lib/portal-providers.ts b/projects/lib/src/lib/portal-providers.ts
index 1d03f7a..5e684b8 100644
--- a/projects/lib/src/lib/portal-providers.ts
+++ b/projects/lib/src/lib/portal-providers.ts
@@ -44,7 +44,6 @@ import {
NodeChangeHookConfigService,
NodeChangeHookConfigServiceImpl,
StaticSettingsConfigService,
- StaticSettingsConfigServiceImpl,
UserProfileConfigService,
UserSettingsConfigService,
LocalConfigurationServiceImpl,
@@ -116,11 +115,6 @@ export function providePortal(
useClass:
options.nodeChangeHookConfigService || NodeChangeHookConfigServiceImpl,
},
- {
- provide: LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN,
- useClass:
- options.staticSettingsConfigService || StaticSettingsConfigServiceImpl,
- },
{
provide: LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN,
useClass:
@@ -144,6 +138,13 @@ const addOptionalProviders = (
})
);
+ if (options.staticSettingsConfigService) {
+ providers.push({
+ provide: LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN,
+ useClass: options.staticSettingsConfigService,
+ });
+ }
+
if (options.luigiAuthEventsCallbacksService) {
providers.push({
provide: LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN,
From 73e425924d6eb450b2be67c2fc859feee30b60f3 Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Thu, 13 Feb 2025 16:38:56 +0000
Subject: [PATCH 20/41] [no ci] Release v0.129.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 9437321..65face3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.128.0",
+ "version": "0.129.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.128.0",
+ "version": "0.129.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index c9b76cc..5ba6965 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.128.0",
+ "version": "0.129.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From 8b251cbbe45da9f22dde11d0f0b6c166bbbc56b5 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 14 Feb 2025 02:44:45 +0000
Subject: [PATCH 21/41] Update dependency @types/node to v22.13.4 (#207)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node))
| [`22.13.2` ->
`22.13.4`](https://renovatebot.com/diffs/npm/@types%2fnode/22.13.2/22.13.4)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 65face3..eb39700 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6571,9 +6571,9 @@
}
},
"node_modules/@types/node": {
- "version": "22.13.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.2.tgz",
- "integrity": "sha512-Z+r8y3XL9ZpI2EY52YYygAFmo2/oWfNSj4BCpAXE2McAexDk8VcnBMGC9Djn9gTKt4d2T/hhXqmPzo4hfIXtTg==",
+ "version": "22.13.4",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz",
+ "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==",
"dev": true,
"license": "MIT",
"dependencies": {
From c7031b3ff16df9da26fa1e3ae02ad0c2fa7a6f75 Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Fri, 14 Feb 2025 02:47:58 +0000
Subject: [PATCH 22/41] [no ci] Release v0.130.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index eb39700..c4937ce 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.129.0",
+ "version": "0.130.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.129.0",
+ "version": "0.130.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 5ba6965..45fab0d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.129.0",
+ "version": "0.130.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From 9a9613b356c414e60ee8c045a8092e7890078156 Mon Sep 17 00:00:00 2001
From: Grzegorz Krajniak
Date: Fri, 14 Feb 2025 17:17:49 +0100
Subject: [PATCH 23/41] bug: fix setting luigi config settings (#208)
Fix setting luigi config settings.
Co-authored-by: Grzegorz Krajniak
---
.../services/luigi-config/lifecycle-hooks-config.service.ts | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts b/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts
index 1c50b64..37597f3 100644
--- a/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts
+++ b/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts
@@ -37,7 +37,7 @@ export class LifecycleHooksConfigService {
childrenByEntity =
await this.luigiNodesService.retrieveChildrenByEntity();
} catch (e) {
- console.error(`Error retrieving Luigi navigation nodes`, e);
+ console.error('Error retrieving Luigi navigation nodes', e);
await this.openErrorDialog();
return;
}
@@ -50,6 +50,8 @@ export class LifecycleHooksConfigService {
envConfig
),
routing: this.routingConfigService.getRoutingConfig(),
+ settings:
+ await this.staticSettingsConfigService.getStaticSettingsConfig(),
userSettings:
await this.userSettingsConfigService.getUserSettings(
childrenByEntity
From 23f5f0e6ee82ebb0b291fa47af9516bd5cf462ec Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Fri, 14 Feb 2025 16:21:14 +0000
Subject: [PATCH 24/41] [no ci] Release v0.131.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index c4937ce..dfd193d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.130.0",
+ "version": "0.131.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.130.0",
+ "version": "0.131.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 45fab0d..032877a 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.130.0",
+ "version": "0.131.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From 807be8091f6e89020ac7c2b7b31a51aa75e03939 Mon Sep 17 00:00:00 2001
From: Grzegorz Krajniak
Date: Mon, 17 Feb 2025 13:55:53 +0100
Subject: [PATCH 25/41] feat: make local development work with webcomponents,
plus sorting fix (#201)
* make local development work with webcomponents,
* nodes sorting fix
the webcomponents are a global nodes, so on a global/home level we have
`retrieveChildrenByEntity`
global: [...]
home: [],
whatever.entity.i.am.in::compound: [...]
so the same way we treat them here
```
const nodesToAdd = localLuigiNodes.filter((n) => {
const entity = n.entityType?.includes('::compound')
? 'global'
: n.entityType || 'home';
return currentEntities.includes(entity);
});
```
afterwards we grab them from the global context:
```
const additionalChildren = childrenByEntity[newEntityPath + '::compound'] || [];
```
Co-authored-by: Grzegorz Krajniak
---
.../local-configuration.service.spec.ts | 17 +++++++++
.../local-configuration.service.ts | 38 ++++++-------------
.../luigi-nodes/node-sorting.service.spec.ts | 8 ++++
.../luigi-nodes/node-sorting.service.ts | 7 +++-
4 files changed, 41 insertions(+), 29 deletions(-)
diff --git a/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.spec.ts b/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.spec.ts
index 514931d..ead3d20 100644
--- a/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.spec.ts
+++ b/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.spec.ts
@@ -87,6 +87,23 @@ describe('LocalConfigurationServiceImpl', () => {
getLocalNodesSpy = jest.spyOn(service, 'getLocalNodes');
});
+ it('should return compound nodes with global nodes', async () => {
+ const localNode = {
+ pathSegment: '/path',
+ entityType: 'typeA.typeB::compound',
+ label: 'C',
+ context: {},
+ };
+
+ getLocalNodesSpy.mockResolvedValue([localNode]);
+ const localNodes = await service.replaceServerNodesWithLocalOnes(
+ serverLuigiNodesTest,
+ ['global', 'home']
+ );
+
+ expect(localNodes).toContain(localNode);
+ });
+
it('should return modified nodes', async () => {
const localNode = {
pathSegment: '/path',
diff --git a/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.ts b/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.ts
index 4464dfb..84e0afb 100644
--- a/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.ts
+++ b/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.ts
@@ -83,20 +83,14 @@ export class LocalConfigurationServiceImpl
);
console.debug(
- `Found '${serverLuigiNodes.length}' server nodes. Found '${
- localLuigiNodes.length
- }' local luigi nodes. The entities of the server node are:${[
- ...new Set(
- serverLuigiNodes.map((n) =>
- this.stripCompoundFromEntity(n.entityType)
- )
- ),
- ].join(',')}
- The entities of local nodes are: ${[
- ...new Set(
- localLuigiNodes.map((n) => this.stripCompoundFromEntity(n.entityType))
- ),
- ].join(',')}`
+ `Found '${serverLuigiNodes.length}' server nodes.
+ Found '${localLuigiNodes.length}' local luigi nodes.
+ The entities of the server node are: [${[
+ ...new Set(serverLuigiNodes.map((n) => n.entityType)),
+ ].join(',')}]
+ The entities of local nodes are: [${[
+ ...new Set(localLuigiNodes.map((n) => n.entityType)),
+ ].join(',')}]`
);
const filteredServerNodes = serverLuigiNodes.filter(
@@ -111,8 +105,9 @@ export class LocalConfigurationServiceImpl
);
const nodesToAdd = localLuigiNodes.filter((n) => {
- let entity = this.stripCompoundFromEntity(n.entityType);
- entity = entity || 'home';
+ const entity = n.entityType?.includes('::compound')
+ ? 'global'
+ : n.entityType || 'home';
return currentEntities.includes(entity);
});
@@ -131,16 +126,6 @@ export class LocalConfigurationServiceImpl
return filteredServerNodes.concat(nodesToAdd);
}
- private stripCompoundFromEntity(entity: string): string {
- if (!entity) {
- return entity;
- }
-
- // also strip the first segemnt of the entity, to get the actual entity.
- // then strip ::.* for the root compound views
- return entity.replace(/\..*::.*/, '').replace(/::.*/, '');
- }
-
private extendContextOfLocalNodes(
localLuigiNodes: LuigiNode[],
serverLuigiNodes: LuigiNode[]
@@ -173,7 +158,6 @@ export class LocalConfigurationServiceImpl
private async getLocalConfigurations(
localDevelopmentSettings: LocalDevelopmentSettings
): Promise {
-
const initialConfigurations = localDevelopmentSettings.configs
.filter((config) => config.data)
.map((config) => config.data);
diff --git a/projects/lib/src/lib/services/luigi-nodes/node-sorting.service.spec.ts b/projects/lib/src/lib/services/luigi-nodes/node-sorting.service.spec.ts
index 1e8d646..bbca19c 100644
--- a/projects/lib/src/lib/services/luigi-nodes/node-sorting.service.spec.ts
+++ b/projects/lib/src/lib/services/luigi-nodes/node-sorting.service.spec.ts
@@ -160,6 +160,10 @@ describe('NodeSortingService', () => {
{
label: '3',
},
+ {
+ label: 'last-one',
+ order: '1000',
+ },
{
label: '4',
order: '2',
@@ -209,6 +213,10 @@ describe('NodeSortingService', () => {
label: '3',
order: '999',
},
+ {
+ label: 'last-one',
+ order: '1000',
+ },
]);
});
diff --git a/projects/lib/src/lib/services/luigi-nodes/node-sorting.service.ts b/projects/lib/src/lib/services/luigi-nodes/node-sorting.service.ts
index 2208b41..53f7b31 100644
--- a/projects/lib/src/lib/services/luigi-nodes/node-sorting.service.ts
+++ b/projects/lib/src/lib/services/luigi-nodes/node-sorting.service.ts
@@ -17,9 +17,12 @@ export class NodeSortingService {
a.order = a.dxpOrder || a.order || '999';
b.order = b.dxpOrder || b.order || '999';
- if (a.order < b.order) {
+ const orderA = isNaN(parseFloat(a?.order)) ? 999 : parseFloat(a.order);
+ const orderB = isNaN(parseFloat(b?.order)) ? 999 : parseFloat(b.order);
+
+ if (orderA < orderB) {
return -1;
- } else if (a.order > b.order) {
+ } else if (orderA > orderB) {
return 1;
}
From c2ff6c148f0e01f5eeb7be0afa7e3243255748da Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Mon, 17 Feb 2025 12:59:00 +0000
Subject: [PATCH 26/41] [no ci] Release v0.132.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index dfd193d..754956d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.131.0",
+ "version": "0.132.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.131.0",
+ "version": "0.132.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 032877a..51bcc2f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.131.0",
+ "version": "0.132.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From 54e89aa2b2d52784d2576de6065dfb09f8b3d08d Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 17 Feb 2025 19:25:29 +0000
Subject: [PATCH 27/41] Update typescript-eslint monorepo to v8.24.1 (#211)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin)
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin))
| [`8.24.0` ->
`8.24.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/8.24.0/8.24.1)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
|
[@typescript-eslint/parser](https://typescript-eslint.io/packages/parser)
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser))
| [`8.24.0` ->
`8.24.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.24.0/8.24.1)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Release Notes
typescript-eslint/typescript-eslint
(@typescript-eslint/eslint-plugin)
###
[`v8.24.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8241-2025-02-17)
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.24.0...v8.24.1)
##### π©Ή Fixes
- **eslint-plugin:** \[class-methods-use-this] check `accessor` methods
with a function initializer
([#10796](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10796))
- **eslint-plugin:** \[no-misused-promises] don't report on `static`
`accessor` properties
([#10814](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10814))
- **eslint-plugin:** \[no-deprecated] don't report on deprecated
`accessor` property declaration
([#10813](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10813))
- **eslint-plugin:** \[explicit-member-accessibility] check `accessor`
class properties for missing accessibility modifier
([#10805](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10805))
- **eslint-plugin:** \[explicit-module-boundary-types] check `accessor`
class properties with a function initializer
([#10804](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10804))
- **eslint-plugin:** \[prefer-return-this-type] check `accessor`
properties with a function initializer
([#10794](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10794))
- **eslint-plugin:** \[consistent-generic-constructors] check `accessor`
class properties
([#10789](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10789))
- **eslint-plugin:** \[no-unsafe-assignment] report on an `any` value
assigned as an initializer of an `accessor` property
([#10785](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10785))
- **eslint-plugin:** \[no-unnecessary-template-expression] ignore enum
and enum members
([#10782](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10782))
- **eslint-plugin:** \[no-inferrable-types] handle accessor
([#10780](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10780))
##### β€οΈ Thank You
- Ronen Amiel
- YeonJuan
You can read about our [versioning
strategy](https://main--typescript-eslint.netlify.app/users/versioning)
and
[releases](https://main--typescript-eslint.netlify.app/users/releases)
on our website.
typescript-eslint/typescript-eslint
(@typescript-eslint/parser)
###
[`v8.24.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8241-2025-02-17)
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.24.0...v8.24.1)
This was a version bump only for parser to align it with other projects,
there were no code changes.
You can read about our [versioning
strategy](https://main--typescript-eslint.netlify.app/users/versioning)
and
[releases](https://main--typescript-eslint.netlify.app/users/releases)
on our website.
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about these
updates again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 84 +++++++++++++++++++++++------------------------
1 file changed, 42 insertions(+), 42 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 754956d..c40f6c5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6717,17 +6717,17 @@
"license": "MIT"
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.24.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz",
- "integrity": "sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==",
+ "version": "8.24.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.1.tgz",
+ "integrity": "sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.24.0",
- "@typescript-eslint/type-utils": "8.24.0",
- "@typescript-eslint/utils": "8.24.0",
- "@typescript-eslint/visitor-keys": "8.24.0",
+ "@typescript-eslint/scope-manager": "8.24.1",
+ "@typescript-eslint/type-utils": "8.24.1",
+ "@typescript-eslint/utils": "8.24.1",
+ "@typescript-eslint/visitor-keys": "8.24.1",
"graphemer": "^1.4.0",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
@@ -6757,16 +6757,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.24.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.0.tgz",
- "integrity": "sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==",
+ "version": "8.24.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.1.tgz",
+ "integrity": "sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.24.0",
- "@typescript-eslint/types": "8.24.0",
- "@typescript-eslint/typescript-estree": "8.24.0",
- "@typescript-eslint/visitor-keys": "8.24.0",
+ "@typescript-eslint/scope-manager": "8.24.1",
+ "@typescript-eslint/types": "8.24.1",
+ "@typescript-eslint/typescript-estree": "8.24.1",
+ "@typescript-eslint/visitor-keys": "8.24.1",
"debug": "^4.3.4"
},
"engines": {
@@ -6782,14 +6782,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.24.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz",
- "integrity": "sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==",
+ "version": "8.24.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz",
+ "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.24.0",
- "@typescript-eslint/visitor-keys": "8.24.0"
+ "@typescript-eslint/types": "8.24.1",
+ "@typescript-eslint/visitor-keys": "8.24.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -6800,14 +6800,14 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.24.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz",
- "integrity": "sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==",
+ "version": "8.24.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz",
+ "integrity": "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "8.24.0",
- "@typescript-eslint/utils": "8.24.0",
+ "@typescript-eslint/typescript-estree": "8.24.1",
+ "@typescript-eslint/utils": "8.24.1",
"debug": "^4.3.4",
"ts-api-utils": "^2.0.1"
},
@@ -6824,9 +6824,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.24.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.0.tgz",
- "integrity": "sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==",
+ "version": "8.24.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz",
+ "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6838,14 +6838,14 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.24.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz",
- "integrity": "sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==",
+ "version": "8.24.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz",
+ "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.24.0",
- "@typescript-eslint/visitor-keys": "8.24.0",
+ "@typescript-eslint/types": "8.24.1",
+ "@typescript-eslint/visitor-keys": "8.24.1",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@@ -6865,16 +6865,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.24.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.0.tgz",
- "integrity": "sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==",
+ "version": "8.24.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz",
+ "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "8.24.0",
- "@typescript-eslint/types": "8.24.0",
- "@typescript-eslint/typescript-estree": "8.24.0"
+ "@typescript-eslint/scope-manager": "8.24.1",
+ "@typescript-eslint/types": "8.24.1",
+ "@typescript-eslint/typescript-estree": "8.24.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -6889,13 +6889,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.24.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz",
- "integrity": "sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==",
+ "version": "8.24.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz",
+ "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.24.0",
+ "@typescript-eslint/types": "8.24.1",
"eslint-visitor-keys": "^4.2.0"
},
"engines": {
From 15a7ab7703bb5c8c229f18c674fb4b89c19ab978 Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Mon, 17 Feb 2025 19:28:43 +0000
Subject: [PATCH 28/41] [no ci] Release v0.133.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index c40f6c5..48f6491 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.132.0",
+ "version": "0.133.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.132.0",
+ "version": "0.133.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 51bcc2f..cb74794 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.132.0",
+ "version": "0.133.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From c882a52d546678ad445b8ddfce5215e502059bcf Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 18 Feb 2025 14:54:06 +0000
Subject: [PATCH 29/41] Update dependency @openmfp/config-prettier to ^0.6.0
(#212)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| @openmfp/config-prettier | [`^0.5.0` ->
`^0.6.0`](https://renovatebot.com/diffs/npm/@openmfp%2fconfig-prettier/0.5.0/0.6.0)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 139 +++++++++++++++++++++++++++++++++++-----------
package.json | 2 +-
2 files changed, 109 insertions(+), 32 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 48f6491..41d5c5a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -28,7 +28,7 @@
"@fundamental-ngx/cdk": "^0.53.2",
"@fundamental-ngx/core": "^0.53.2",
"@fundamental-ngx/i18n": "^0.53.2",
- "@openmfp/config-prettier": "^0.5.0",
+ "@openmfp/config-prettier": "^0.6.0",
"@openmfp/eslint-config-typescript": "^0.19.0",
"@types/jest": "29.5.14",
"@types/jmespath": "0.15.2",
@@ -1306,13 +1306,13 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.26.3",
- "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.3.tgz",
- "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz",
+ "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.26.3"
+ "@babel/types": "^7.26.9"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -2731,32 +2731,32 @@
}
},
"node_modules/@babel/template": {
- "version": "7.25.9",
- "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.25.9.tgz",
- "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz",
+ "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.25.9",
- "@babel/parser": "^7.25.9",
- "@babel/types": "^7.25.9"
+ "@babel/code-frame": "^7.26.2",
+ "@babel/parser": "^7.26.9",
+ "@babel/types": "^7.26.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.26.4",
- "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.26.4.tgz",
- "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz",
+ "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.26.2",
- "@babel/generator": "^7.26.3",
- "@babel/parser": "^7.26.3",
- "@babel/template": "^7.25.9",
- "@babel/types": "^7.26.3",
+ "@babel/generator": "^7.26.9",
+ "@babel/parser": "^7.26.9",
+ "@babel/template": "^7.26.9",
+ "@babel/types": "^7.26.9",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -2765,14 +2765,14 @@
}
},
"node_modules/@babel/traverse/node_modules/@babel/generator": {
- "version": "7.26.3",
- "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.26.3.tgz",
- "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz",
+ "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.26.3",
- "@babel/types": "^7.26.3",
+ "@babel/parser": "^7.26.9",
+ "@babel/types": "^7.26.9",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^3.0.2"
@@ -2783,7 +2783,7 @@
},
"node_modules/@babel/traverse/node_modules/jsesc": {
"version": "3.1.0",
- "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
"integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
"dev": true,
"license": "MIT",
@@ -2795,9 +2795,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.26.3",
- "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.3.tgz",
- "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz",
+ "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5390,12 +5390,13 @@
}
},
"node_modules/@openmfp/config-prettier": {
- "version": "0.5.0",
- "resolved": "https://npm.pkg.github.com/download/@openmfp/config-prettier/0.5.0/28e7d3357f7ff0da0024156c3c14d0e044777c96",
- "integrity": "sha512-QbNBA7StHj4cmHl2qbroii5XMgSk7AkNtl+CxTJgEE4sqZic2xH0wD3BMeKAqXPL0yipR7JGCcyye+51dOySOA==",
+ "version": "0.6.0",
+ "resolved": "https://npm.pkg.github.com/download/@openmfp/config-prettier/0.6.0/ef5cac5f7603fb934d98e3e0b2d5a16e49134bf0",
+ "integrity": "sha512-DdEhEq/hD0qtijBLXiWholpPZ0MNl+YrIvpJxxigTP7mQThd03Cl4ck8OMv7EJ1ZDnUqi96gS8rkGeRq42kPBQ==",
"dev": true,
"peerDependencies": {
- "prettier": "^3.2.0"
+ "@trivago/prettier-plugin-sort-imports": "^5.2.2",
+ "prettier": "^3.5.0"
}
},
"node_modules/@openmfp/eslint-config-typescript": {
@@ -6270,6 +6271,74 @@
"node": ">= 10"
}
},
+ "node_modules/@trivago/prettier-plugin-sort-imports": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-5.2.2.tgz",
+ "integrity": "sha512-fYDQA9e6yTNmA13TLVSA+WMQRc5Bn/c0EUBditUHNfMMxN7M82c38b1kEggVE3pLpZ0FwkwJkUEKMiOi52JXFA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@babel/generator": "^7.26.5",
+ "@babel/parser": "^7.26.7",
+ "@babel/traverse": "^7.26.7",
+ "@babel/types": "^7.26.7",
+ "javascript-natural-sort": "^0.7.1",
+ "lodash": "^4.17.21"
+ },
+ "engines": {
+ "node": ">18.12"
+ },
+ "peerDependencies": {
+ "@vue/compiler-sfc": "3.x",
+ "prettier": "2.x - 3.x",
+ "prettier-plugin-svelte": "3.x",
+ "svelte": "4.x || 5.x"
+ },
+ "peerDependenciesMeta": {
+ "@vue/compiler-sfc": {
+ "optional": true
+ },
+ "prettier-plugin-svelte": {
+ "optional": true
+ },
+ "svelte": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/generator": {
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz",
+ "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.26.9",
+ "@babel/types": "^7.26.9",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/@tsconfig/node10": {
"version": "1.0.11",
"resolved": "https://registry.npmmirror.com/@tsconfig/node10/-/node10-1.0.11.tgz",
@@ -12841,6 +12910,14 @@
"node": "*"
}
},
+ "node_modules/javascript-natural-sort": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz",
+ "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/jest": {
"version": "29.7.0",
"resolved": "https://registry.npmmirror.com/jest/-/jest-29.7.0.tgz",
diff --git a/package.json b/package.json
index cb74794..50b8ff4 100644
--- a/package.json
+++ b/package.json
@@ -59,7 +59,7 @@
"@fundamental-ngx/cdk": "^0.53.2",
"@fundamental-ngx/core": "^0.53.2",
"@fundamental-ngx/i18n": "^0.53.2",
- "@openmfp/config-prettier": "^0.5.0",
+ "@openmfp/config-prettier": "^0.6.0",
"@openmfp/eslint-config-typescript": "^0.19.0",
"@types/jest": "29.5.14",
"@types/jmespath": "0.15.2",
From 570a09f8d49747d85bd3bc45762089e5801d82b1 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 18 Feb 2025 18:41:31 +0000
Subject: [PATCH 30/41] Update dependency @openmfp/config-prettier to ^0.7.0
(#213)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| @openmfp/config-prettier | [`^0.6.0` ->
`^0.7.0`](https://renovatebot.com/diffs/npm/@openmfp%2fconfig-prettier/0.6.0/0.7.0)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 8 ++++----
package.json | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 41d5c5a..7b33e15 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -28,7 +28,7 @@
"@fundamental-ngx/cdk": "^0.53.2",
"@fundamental-ngx/core": "^0.53.2",
"@fundamental-ngx/i18n": "^0.53.2",
- "@openmfp/config-prettier": "^0.6.0",
+ "@openmfp/config-prettier": "^0.7.0",
"@openmfp/eslint-config-typescript": "^0.19.0",
"@types/jest": "29.5.14",
"@types/jmespath": "0.15.2",
@@ -5390,9 +5390,9 @@
}
},
"node_modules/@openmfp/config-prettier": {
- "version": "0.6.0",
- "resolved": "https://npm.pkg.github.com/download/@openmfp/config-prettier/0.6.0/ef5cac5f7603fb934d98e3e0b2d5a16e49134bf0",
- "integrity": "sha512-DdEhEq/hD0qtijBLXiWholpPZ0MNl+YrIvpJxxigTP7mQThd03Cl4ck8OMv7EJ1ZDnUqi96gS8rkGeRq42kPBQ==",
+ "version": "0.7.0",
+ "resolved": "https://npm.pkg.github.com/download/@openmfp/config-prettier/0.7.0/98d9986ab18bc798aebf4654710c9f0637fd8143",
+ "integrity": "sha512-totbmPliZQIbn6SKJ5Wo5MYbQkoYGVtJ5Amq8+MA3DLomIthnuBWbUU/IMx6Wq423vzwnT2XMrYoEkEYu3kBwA==",
"dev": true,
"peerDependencies": {
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
diff --git a/package.json b/package.json
index 50b8ff4..591f234 100644
--- a/package.json
+++ b/package.json
@@ -59,7 +59,7 @@
"@fundamental-ngx/cdk": "^0.53.2",
"@fundamental-ngx/core": "^0.53.2",
"@fundamental-ngx/i18n": "^0.53.2",
- "@openmfp/config-prettier": "^0.6.0",
+ "@openmfp/config-prettier": "^0.7.0",
"@openmfp/eslint-config-typescript": "^0.19.0",
"@types/jest": "29.5.14",
"@types/jmespath": "0.15.2",
From ecaff1954038e80dbfdad36a8712cf663a4f4fea Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 20 Feb 2025 09:38:44 +0100
Subject: [PATCH 31/41] Update dependency @luigi-project/plugin-auth-oauth2 to
v2.20.0 (#214)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@luigi-project/plugin-auth-oauth2](https://redirect.github.com/SAP/luigi)
| [`2.19.2` ->
`2.20.0`](https://renovatebot.com/diffs/npm/@luigi-project%2fplugin-auth-oauth2/2.19.2/2.20.0)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Release Notes
SAP/luigi (@luigi-project/plugin-auth-oauth2)
###
[`v2.20.0`](https://redirect.github.com/SAP/luigi/blob/HEAD/CHANGELOG.md#v2200-2025-02-18)
[Compare
Source](https://redirect.github.com/SAP/luigi/compare/v2.19.2...v2.20.0)
##### :rocket: Added
- [#4144](https://redirect.github.com/SAP/luigi/pull/4144)
Angular 19 support for client-support-angular library
([@walmazacn](https://redirect.github.com/walmazacn))
- [#4137](https://redirect.github.com/SAP/luigi/pull/4137)
Appswitcher enhancements
([@hardl](https://redirect.github.com/hardl))
##### :bug: Fixed
- [#4149](https://redirect.github.com/SAP/luigi/pull/4149) Filter
out empty nav groups
([@hardl](https://redirect.github.com/hardl))
- [#4148](https://redirect.github.com/SAP/luigi/pull/4148) Fix:
Wrong backgroundColor for profile initials
([@JohannesDoberer](https://redirect.github.com/JohannesDoberer))
- [#4140](https://redirect.github.com/SAP/luigi/pull/4140)
Accessibility tab order
([@JohannesDoberer](https://redirect.github.com/JohannesDoberer))
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
β» **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 7b33e15..7921afb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -68,7 +68,6 @@
"@fundamental-ngx/i18n": "^0.53.2",
"@luigi-project/client": "^2.19.2",
"@luigi-project/client-support-angular": "^2.19.2",
- "@luigi-project/plugin-auth-oauth2": "^2.19.2",
"apollo-angular": "^7.0.0",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
@@ -4935,9 +4934,9 @@
}
},
"node_modules/@luigi-project/plugin-auth-oauth2": {
- "version": "2.19.2",
- "resolved": "https://registry.npmjs.org/@luigi-project/plugin-auth-oauth2/-/plugin-auth-oauth2-2.19.2.tgz",
- "integrity": "sha512-yN2CVvC+TtzauN7RO6RkjC6T0kNNWZEBfcnlwHBq+jfqWKf0Zdnkf/Mk3TeBQqauTAeGjR3U2M1wunnihGImRg==",
+ "version": "2.20.0",
+ "resolved": "https://registry.npmjs.org/@luigi-project/plugin-auth-oauth2/-/plugin-auth-oauth2-2.20.0.tgz",
+ "integrity": "sha512-TKOGFjvPLU7pOAge8Ru/wbbF2iv+9nELvnbHtOFI13rXOFssC59np+OiIKrRnSJk4fN5GxKZhge/8aRL61TfsA==",
"license": "Apache-2.0"
},
"node_modules/@luigi-project/testing-utilities": {
From c9adca10f63a2c277b838f9268612b8bdebf6ba7 Mon Sep 17 00:00:00 2001
From: Tino Butz
Date: Thu, 20 Feb 2025 10:05:22 +0100
Subject: [PATCH 32/41] Preparing for open source release (#215)
---
.github/workflows/licenses.yml | 18 ------------------
.reuse/dep5 | 9 ---------
README.md | 6 +++++-
REUSE.toml | 9 +++++++++
4 files changed, 14 insertions(+), 28 deletions(-)
delete mode 100644 .github/workflows/licenses.yml
delete mode 100644 .reuse/dep5
create mode 100644 REUSE.toml
diff --git a/.github/workflows/licenses.yml b/.github/workflows/licenses.yml
deleted file mode 100644
index 54f033b..0000000
--- a/.github/workflows/licenses.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-name: "Update License Metadata"
-
-on:
- push:
- branches: [ "main" ]
- schedule:
- - cron: '32 16 * * 0'
-
-jobs:
- license:
- concurrency:
- group: license-${{ github.ref }}
- cancel-in-progress: true
- permissions:
- contents: write
- pull-requests: write
- uses: openmfp/gha/.github/workflows/job-license-metadata.yml@main
- secrets: inherit
\ No newline at end of file
diff --git a/.reuse/dep5 b/.reuse/dep5
deleted file mode 100644
index f314629..0000000
--- a/.reuse/dep5
+++ /dev/null
@@ -1,9 +0,0 @@
-Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Upstream-Name: portal-ui-lib
-Upstream-Contact:
-Source: https://github.com/openmfp/portal-ui-lib
-
-Files: *
-Copyright: 2024 SAP SE or an SAP affiliate company and openMFP contributors and portal-ui-lib contributors.
-License: Apache-2.0
-
diff --git a/README.md b/README.md
index 55ccd47..618633b 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,9 @@
# Portal UI Library
+
+[](https://api.reuse.software/info/github.com/openmfp/portal-ui-lib)
+
This library helps you to set up your angular project consuming [Luigi](https://luigi-project.io/) configuration.
Main features of this library are:
@@ -635,5 +639,5 @@ Please refer to the [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) file in this reposi
## Licensing
-Copyright 2024 SAP SE or an SAP affiliate company and openMFP contributors. Please see our [LICENSE](LICENSE) for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available [via the REUSE tool](https://api.reuse.software/info/github.com/openmfp/portal-ui-lib).
+Copyright 2025 SAP SE or an SAP affiliate company and openMFP contributors. Please see our [LICENSE](LICENSE) for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available [via the REUSE tool](https://api.reuse.software/info/github.com/openmfp/portal-ui-lib).
diff --git a/REUSE.toml b/REUSE.toml
new file mode 100644
index 0000000..1bf6b68
--- /dev/null
+++ b/REUSE.toml
@@ -0,0 +1,9 @@
+version = 1
+SPDX-PackageName = "portal-ui-lib"
+SPDX-PackageDownloadLocation = "https://github.com/openmfp/portal-ui-lib"
+
+[[annotations]]
+path = "**"
+precedence = "aggregate"
+SPDX-FileCopyrightText = "2025 SAP SE or an SAP affiliate company and openMFP contributors and portal contributors."
+SPDX-License-Identifier = "Apache-2.0"
\ No newline at end of file
From 68d90de4d0c74bda094e03e785c6f4d89d8ec043 Mon Sep 17 00:00:00 2001
From: Grzegorz Krajniak
Date: Thu, 20 Feb 2025 11:30:58 +0100
Subject: [PATCH 33/41] docs: update (#216)
Correct docs regarding `entityType`
---------
Co-authored-by: Grzegorz Krajniak
---
docs/readme-nodes-configuration.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/docs/readme-nodes-configuration.md b/docs/readme-nodes-configuration.md
index 6793e2b..4fc383e 100644
--- a/docs/readme-nodes-configuration.md
+++ b/docs/readme-nodes-configuration.md
@@ -10,8 +10,8 @@ To create a micro frontend that is displayed in the portal, you need to create a
This file is picked up by the deployed portal server at runtime therefore the file needs to be reachable from the domain the portal server is deployed on.
The registration to the portal happens through the portals Extension mechanism.
-Technically an Extension is a Custom Resource Definition of Kuberenetes.
-Its a dedicated resource in the Kuberentes cluster and this resource contains the URL to the `content-configuration.json` file of your application.
+Technically an Extension is a Custom Resource Definition of Kubernetes.
+It is a dedicated resource in the Kubernetes cluster and this resource contains the URL to the `content-configuration.json` file of your application.
## The Content Configuration File Contents
@@ -289,7 +289,7 @@ Further Portal specific parameters are supported on node level:
The following section explains Portal-specific parameters related to entity types:
-- **entityType** - defines the location within the Portal navigation tree under which this node will be added. Currently, there are three **entityTypes** predefined in Portal: "global", "project" and "project.component". The **entityType** correlates with a particular route in Portal, so it defines the base route to which your micro frontends pathSegment is added.
+- **entityType** - defines the location within the Portal navigation tree under which this node will be added. Currently, there is an **entityType** predefined in Portal: "global". The **entityType** correlates with a particular route in Portal, so it defines the base route to which your micro frontends pathSegment is added.
- Example ("global"): If the [pathSegment](https://docs.luigi-project.io/docs/navigation-configuration/?section=pathsegment) of the child node is `overview` and **entityType** is `global`, the node is shown in Portal's global navigation and the resulting route will be `/overview`.
- Example ("project"): A project has a dynamic URL part. If the child **pathSegment** is "overview" and the **entityType** is "project", the URL will be `/project/123ProjectId/overview`.
> NOTE: The **projectId** is available in the Luigi context object and can be retrieved by the micro frontend using the [initListener](https://docs.luigi-project.io/docs/luigi-client-api/?section=addinitlistener) / [contextUpdateListener](https://docs.luigi-project.io/docs/luigi-client-api/?section=addcontextupdatelistener).
@@ -338,7 +338,7 @@ The following section explains Portal-specific parameters related to entity type
```
Unlike the static example, here **dynamicFetchId** and **contextKey** are defined, so additional nodes will be fetched from the extension manager for this entity type.
- For example, a route `/projects/123ProjectId/sample/123someId` will result in a request to extension manager with the following data:
+ For example, a route `/projects/123ProjectId/sample/123someId` will result in a request with the following data:
- Entity Type: `sample` - dynamicFetchId
- Entity Id: `123sampleId` - this value is retrieved from the node **context** object, specified by the `contextKey` property.
From 48e11c39208fdc7b6b54d7a5962a4b91c4fbaa60 Mon Sep 17 00:00:00 2001
From: Grzegorz Krajniak
Date: Fri, 21 Feb 2025 11:28:57 +0100
Subject: [PATCH 34/41] feat: local nodes validation feedback (#217)
Display local nodes validation feedback result errors.
* In case of having validation errors with the contnent configuration
the user will receive feedback in form of a luigi alert
* Renaming LocalNodesConfigService - > LocalNodesService
Co-authored-by: Grzegorz Krajniak
---
projects/lib/src/lib/models/luigi.ts | 10 +++-
projects/lib/src/lib/models/node-transform.ts | 16 +++++++
.../lifecycle-hooks-config.service.spec.ts | 6 +--
.../lifecycle-hooks-config.service.ts | 33 ++++++-------
.../static-settings-config.service.ts | 9 +---
.../lib/services/luigi-core.service.spec.ts | 6 ++-
.../local-configuration.service.spec.ts | 37 +++++++++------
.../local-configuration.service.ts | 47 +++++++++++++++----
.../nodes-processing.service.spec.ts | 2 +-
projects/lib/src/lib/services/portal/index.ts | 2 +-
...ce.spec.ts => local-nodes.service.spec.ts} | 8 ++--
...nfig.service.ts => local-nodes.service.ts} | 15 +++---
12 files changed, 122 insertions(+), 69 deletions(-)
create mode 100644 projects/lib/src/lib/models/node-transform.ts
rename projects/lib/src/lib/services/portal/{local-nodes-config.service.spec.ts => local-nodes.service.spec.ts} (90%)
rename projects/lib/src/lib/services/portal/{local-nodes-config.service.ts => local-nodes.service.ts} (63%)
diff --git a/projects/lib/src/lib/models/luigi.ts b/projects/lib/src/lib/models/luigi.ts
index cd011af..b250ecb 100644
--- a/projects/lib/src/lib/models/luigi.ts
+++ b/projects/lib/src/lib/models/luigi.ts
@@ -20,10 +20,18 @@ export interface LuigiNavigationConfig {
breadcrumbs?: any;
}
+export interface LuigiStaticSettings extends Record {
+ header: {
+ title: string;
+ logo: string;
+ favicon?: string;
+ };
+}
+
export interface LuigiConfig {
auth?: any;
routing?: any;
- settings?: any;
+ settings?: LuigiStaticSettings;
lifecycleHooks?: any;
navigation?: LuigiNavigationConfig;
userSettings?: any;
diff --git a/projects/lib/src/lib/models/node-transform.ts b/projects/lib/src/lib/models/node-transform.ts
new file mode 100644
index 0000000..670c131
--- /dev/null
+++ b/projects/lib/src/lib/models/node-transform.ts
@@ -0,0 +1,16 @@
+import { LuigiNode } from './luigi';
+
+export interface ValidationError {
+ message: string;
+}
+
+export interface ValidationResult {
+ parsedConfiguration?: string;
+ validationErrors?: ValidationError[];
+ url: string;
+}
+
+export interface TransformResult {
+ nodes?: LuigiNode[];
+ errors?: ValidationResult[];
+}
diff --git a/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.spec.ts b/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.spec.ts
index 7d1ccfe..ac7743f 100644
--- a/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.spec.ts
+++ b/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.spec.ts
@@ -126,9 +126,9 @@ describe('LifecycleHooksConfigService', () => {
it('should handle error when retrieving Luigi navigation nodes', async () => {
const error = new Error('Test error');
luigiNodesServiceMock.retrieveChildrenByEntity.mockRejectedValue(error);
- staticSettingsConfigServiceMock.getStaticSettingsConfig.mockResolvedValue(
- { header: { title: 'Test App', logo: 'assets/logo.png' } }
- );
+ luigiCoreServiceMock.getConfig.mockReturnValue({
+ settings: { header: { title: 'Test App', logo: 'assets/logo.png' } },
+ });
console.error = jest.fn();
const config = service.getLifecycleHooksConfig({} as any);
diff --git a/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts b/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts
index 37597f3..5b656e0 100644
--- a/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts
+++ b/projects/lib/src/lib/services/luigi-config/lifecycle-hooks-config.service.ts
@@ -1,4 +1,4 @@
-import { Inject, Injectable, Optional } from '@angular/core';
+import { inject, Injectable } from '@angular/core';
import { $localize } from '@angular/localize/init';
import { I18nService } from '../i18n.service';
import { LuigiCoreService } from '../luigi-core.service';
@@ -14,18 +14,17 @@ import { localDevelopmentSettingsLocalStorage } from '../storage-service';
@Injectable({ providedIn: 'root' })
export class LifecycleHooksConfigService {
- constructor(
- private i18nService: I18nService,
- private luigiNodesService: LuigiNodesService,
- private luigiCoreService: LuigiCoreService,
- private routingConfigService: RoutingConfigService,
- private navigationConfigService: NavigationConfigService,
- private userSettingsConfigService: UserSettingsConfigService,
- private staticSettingsConfigService: StaticSettingsConfigServiceImpl,
- @Optional()
- @Inject(LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN)
- private globalSearchConfigService: GlobalSearchConfigService
- ) {}
+ private i18nService = inject(I18nService);
+ private luigiNodesService = inject(LuigiNodesService);
+ private luigiCoreService = inject(LuigiCoreService);
+ private routingConfigService = inject(RoutingConfigService);
+ private navigationConfigService = inject(NavigationConfigService);
+ private userSettingsConfigService = inject(UserSettingsConfigService);
+ private staticSettingsConfigService = inject(StaticSettingsConfigServiceImpl);
+ private globalSearchConfigService = inject(
+ LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN as any,
+ { optional: true }
+ );
getLifecycleHooksConfig(envConfig: ClientEnvironment) {
return {
@@ -38,7 +37,7 @@ export class LifecycleHooksConfigService {
await this.luigiNodesService.retrieveChildrenByEntity();
} catch (e) {
console.error('Error retrieving Luigi navigation nodes', e);
- await this.openErrorDialog();
+ this.openErrorDialog();
return;
}
@@ -69,10 +68,8 @@ export class LifecycleHooksConfigService {
};
}
- private async openErrorDialog() {
- const appTitle = (
- await this.staticSettingsConfigService.getStaticSettingsConfig()
- ).header.title;
+ private openErrorDialog() {
+ const appTitle = this.luigiCoreService.getConfig().settings.header.title;
this.luigiCoreService.showAlert({
text: $localize`There was an error loading the ${appTitle}`,
type: 'error',
diff --git a/projects/lib/src/lib/services/luigi-config/static-settings-config.service.ts b/projects/lib/src/lib/services/luigi-config/static-settings-config.service.ts
index c9dba80..c9232ae 100644
--- a/projects/lib/src/lib/services/luigi-config/static-settings-config.service.ts
+++ b/projects/lib/src/lib/services/luigi-config/static-settings-config.service.ts
@@ -1,5 +1,6 @@
import { inject, Injectable } from '@angular/core';
import { LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';
+import { LuigiStaticSettings } from '../../models';
import { I18nService } from '../i18n.service';
import { IframeService } from './iframe.service';
@@ -7,14 +8,6 @@ export interface StaticSettingsConfigService {
getStaticSettingsConfig(): Promise;
}
-export interface LuigiStaticSettings extends Record {
- header: {
- title: string;
- logo: string;
- favicon?: string;
- };
-}
-
@Injectable({
providedIn: 'root',
})
diff --git a/projects/lib/src/lib/services/luigi-core.service.spec.ts b/projects/lib/src/lib/services/luigi-core.service.spec.ts
index 2996eee..f326ad4 100644
--- a/projects/lib/src/lib/services/luigi-core.service.spec.ts
+++ b/projects/lib/src/lib/services/luigi-core.service.spec.ts
@@ -39,7 +39,7 @@ const luigiMock = {
(globalThis as any).Luigi = luigiMock;
import { TestBed } from '@angular/core/testing';
-import { AuthData } from '../models';
+import { AuthData, LuigiConfig } from '../models';
import { LuigiCoreService } from './luigi-core.service';
describe('LuigiCoreService', () => {
@@ -81,7 +81,9 @@ describe('LuigiCoreService', () => {
});
it('should call setConfig with correct config', () => {
- const config = { settings: 'value' };
+ const config: LuigiConfig = {
+ settings: { header: { title: 'title', logo: 'logo' } },
+ };
service.setConfig(config);
expect(luigiMock.setConfig).toHaveBeenCalledWith(config);
});
diff --git a/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.spec.ts b/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.spec.ts
index ead3d20..90b1c7e 100644
--- a/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.spec.ts
+++ b/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.spec.ts
@@ -5,22 +5,22 @@ import { of } from 'rxjs';
import { LocalConfigurationServiceImpl } from './local-configuration.service';
import { ContentConfiguration, LuigiNode } from '../../models';
import { LuigiCoreService } from '../luigi-core.service';
-import { LocalNodesConfigService } from '../portal';
+import { LocalNodesService } from '../portal';
import { localDevelopmentSettingsLocalStorage } from '../storage-service';
describe('LocalConfigurationServiceImpl', () => {
let service: LocalConfigurationServiceImpl;
let luigiCoreService: LuigiCoreService;
let httpClient: HttpClient;
- let luigiDataConfigServiceMock: MockProxy;
+ let luigiDataConfigServiceMock: MockProxy;
beforeEach(() => {
localDevelopmentSettingsLocalStorage.read = jest.fn();
- luigiDataConfigServiceMock = mock();
+ luigiDataConfigServiceMock = mock();
TestBed.configureTestingModule({
providers: [
{
- provide: LocalNodesConfigService,
+ provide: LocalNodesService,
useValue: luigiDataConfigServiceMock,
},
provideHttpClient(),
@@ -56,7 +56,9 @@ describe('LocalConfigurationServiceImpl', () => {
],
});
luigiDataConfigServiceMock.getLuigiNodesFromConfigurations.mockImplementation(
- async (conf: ContentConfiguration[]) => conf.map((c) => ({}))
+ async (conf: ContentConfiguration[]) => {
+ return { nodes: conf.map((c) => ({})) };
+ }
);
httpClient.get = jest.fn().mockReturnValue(of({}));
@@ -156,14 +158,9 @@ describe('LocalConfigurationServiceImpl', () => {
});
describe('getNodes', () => {
- let getLuigiDataFromConfigurationsSpy;
let i18nSpy;
beforeEach(() => {
- getLuigiDataFromConfigurationsSpy = jest.spyOn(
- luigiDataConfigServiceMock,
- 'getLuigiNodesFromConfigurations'
- );
i18nSpy = jest.spyOn(luigiCoreService, 'i18n');
i18nSpy.mockReturnValue({
getCurrentLocale: () => {
@@ -174,7 +171,9 @@ describe('LocalConfigurationServiceImpl', () => {
it('should return the nodes for a dev environment if the request is successful', async () => {
const luigiNodeMock = mock();
- getLuigiDataFromConfigurationsSpy.mockResolvedValue([luigiNodeMock]);
+ luigiDataConfigServiceMock.getLuigiNodesFromConfigurations.mockResolvedValue(
+ { nodes: [luigiNodeMock] }
+ );
localDevelopmentSettingsLocalStorage.read = jest.fn().mockReturnValue({
isActive: true,
@@ -197,7 +196,9 @@ describe('LocalConfigurationServiceImpl', () => {
it('should apply the serviceProviderConfig to the nodes', async () => {
const luigiNodeMock: LuigiNode = { viewUrl: 'https://sap.com/test' };
- getLuigiDataFromConfigurationsSpy.mockResolvedValue([luigiNodeMock]);
+ luigiDataConfigServiceMock.getLuigiNodesFromConfigurations.mockResolvedValue(
+ { nodes: [luigiNodeMock] }
+ );
localDevelopmentSettingsLocalStorage.read = jest.fn().mockReturnValue({
isActive: true,
@@ -224,7 +225,9 @@ describe('LocalConfigurationServiceImpl', () => {
it('should return empty array if the local settings is not active', async () => {
const luigiNodeMock: LuigiNode = { viewUrl: 'https://sap.com/test' };
- getLuigiDataFromConfigurationsSpy.mockResolvedValue([luigiNodeMock]);
+ luigiDataConfigServiceMock.getLuigiNodesFromConfigurations.mockResolvedValue(
+ { nodes: [luigiNodeMock] }
+ );
localDevelopmentSettingsLocalStorage.read = jest.fn().mockReturnValue({
isActive: false,
@@ -248,7 +251,9 @@ describe('LocalConfigurationServiceImpl', () => {
});
it('should return an empty array for a dev environment if the request fails', async () => {
- getLuigiDataFromConfigurationsSpy.mockResolvedValue([]);
+ luigiDataConfigServiceMock.getLuigiNodesFromConfigurations.mockResolvedValue(
+ { nodes: [] }
+ );
const localNodes = await service.getLocalNodes();
@@ -256,7 +261,9 @@ describe('LocalConfigurationServiceImpl', () => {
});
it('should return an empty array for a dev environment if the request fails', async () => {
- getLuigiDataFromConfigurationsSpy.mockRejectedValue();
+ luigiDataConfigServiceMock.getLuigiNodesFromConfigurations.mockRejectedValue(
+ null
+ );
localDevelopmentSettingsLocalStorage.read = jest.fn().mockReturnValue({
isActive: true,
});
diff --git a/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.ts b/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.ts
index 84e0afb..e3cd59d 100644
--- a/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.ts
+++ b/projects/lib/src/lib/services/luigi-nodes/local-configuration.service.ts
@@ -1,12 +1,15 @@
import { inject, Injectable } from '@angular/core';
+import { DialogService } from '@fundamental-ngx/core/dialog';
import { merge } from 'lodash';
import {
ContentConfiguration,
LuigiNode,
LocalDevelopmentSettings,
} from '../../models';
+import { ValidationResult } from '../../models/node-transform';
+import { LuigiCoreService } from '../luigi-core.service';
import { localDevelopmentSettingsLocalStorage } from '../storage-service';
-import { LocalNodesConfigService } from '../portal';
+import { LocalNodesService } from '../portal';
import { HttpClient } from '@angular/common/http';
import { lastValueFrom } from 'rxjs';
@@ -25,7 +28,9 @@ export class LocalConfigurationServiceImpl
implements LocalConfigurationService
{
private http = inject(HttpClient);
- private luigiConfigService = inject(LocalNodesConfigService);
+ private luigiConfigService = inject(LocalNodesService);
+ private luigiCoreService = inject(LuigiCoreService);
+ private dialogService = inject(DialogService);
private cachedLocalNodes: LuigiNode[];
public async getLocalNodes(): Promise {
@@ -44,26 +49,52 @@ export class LocalConfigurationServiceImpl
const configurations = await this.getLocalConfigurations(
localDevelopmentSettings
);
- const luigiNodes =
- await this.luigiConfigService.getLuigiNodesFromConfigurations(
+ const result =
+ (await this.luigiConfigService.getLuigiNodesFromConfigurations(
configurations
- );
+ )) || {};
+
+ if (result.errors) {
+ this.alertErrors(result.errors);
+ }
- (luigiNodes || []).forEach((node) => {
+ (result.nodes || []).forEach((node) => {
node.context = {
...node.context,
serviceProviderConfig: localDevelopmentSettings.serviceProviderConfig,
};
});
- this.cachedLocalNodes = luigiNodes;
- return luigiNodes;
+ return (this.cachedLocalNodes = result.nodes || []);
} catch (e) {
console.warn(`Failed to retrieve local luigi config.`, e);
return [];
}
}
+ private alertErrors(errors: ValidationResult[]) {
+ const message = errors
+ .map((e) => {
+ return `For configuration with url:
+ ${e.url}
+ ${(e.validationErrors || [])
+ .map((v) => v.message)
+ .slice(0, -1)
+ .join('
')}`;
+ })
+ .join('
');
+ this.luigiCoreService.showAlert({
+ text: `
+ Your local development configuration contains error(s).
+ You will not be able to see you local changes and local development results unless you correct the data and reload the page.
+ Please see below the detailed information:
+
+ ${message}
+ `,
+ type: 'error',
+ });
+ }
+
public async replaceServerNodesWithLocalOnes(
serverLuigiNodes: LuigiNode[],
currentEntities: string[]
diff --git a/projects/lib/src/lib/services/luigi-nodes/nodes-processing.service.spec.ts b/projects/lib/src/lib/services/luigi-nodes/nodes-processing.service.spec.ts
index 9721e84..6f55345 100644
--- a/projects/lib/src/lib/services/luigi-nodes/nodes-processing.service.spec.ts
+++ b/projects/lib/src/lib/services/luigi-nodes/nodes-processing.service.spec.ts
@@ -315,7 +315,7 @@ describe('NodesProcessingService', () => {
},
},
],
- compound: {}
+ compound: {},
};
const childrenByEntity = {
diff --git a/projects/lib/src/lib/services/portal/index.ts b/projects/lib/src/lib/services/portal/index.ts
index 4c6b56c..e5828aa 100644
--- a/projects/lib/src/lib/services/portal/index.ts
+++ b/projects/lib/src/lib/services/portal/index.ts
@@ -1,4 +1,4 @@
export * from './config.service';
export * from './auth.service';
export * from './env-config.service';
-export * from './local-nodes-config.service';
+export * from './local-nodes.service';
diff --git a/projects/lib/src/lib/services/portal/local-nodes-config.service.spec.ts b/projects/lib/src/lib/services/portal/local-nodes.service.spec.ts
similarity index 90%
rename from projects/lib/src/lib/services/portal/local-nodes-config.service.spec.ts
rename to projects/lib/src/lib/services/portal/local-nodes.service.spec.ts
index c54d8d7..716427e 100644
--- a/projects/lib/src/lib/services/portal/local-nodes-config.service.spec.ts
+++ b/projects/lib/src/lib/services/portal/local-nodes.service.spec.ts
@@ -1,6 +1,6 @@
import { provideHttpClient } from '@angular/common/http';
import { TestBed } from '@angular/core/testing';
-import { LocalNodesConfigService } from './local-nodes-config.service';
+import { LocalNodesService } from './local-nodes.service';
import {
HttpTestingController,
provideHttpClientTesting,
@@ -8,8 +8,8 @@ import {
import { RouterModule } from '@angular/router';
import { LuigiCoreService } from '../luigi-core.service';
-describe('LocalNodesConfigService', () => {
- let service: LocalNodesConfigService;
+describe('LocalNodesService', () => {
+ let service: LocalNodesService;
let httpTestingController: HttpTestingController;
let luigiCoreService: LuigiCoreService;
let i18nSpy;
@@ -25,7 +25,7 @@ describe('LocalNodesConfigService', () => {
});
httpTestingController = TestBed.inject(HttpTestingController);
- service = TestBed.inject(LocalNodesConfigService);
+ service = TestBed.inject(LocalNodesService);
luigiCoreService = TestBed.inject(LuigiCoreService);
i18nSpy = jest.spyOn(luigiCoreService, 'i18n');
diff --git a/projects/lib/src/lib/services/portal/local-nodes-config.service.ts b/projects/lib/src/lib/services/portal/local-nodes.service.ts
similarity index 63%
rename from projects/lib/src/lib/services/portal/local-nodes-config.service.ts
rename to projects/lib/src/lib/services/portal/local-nodes.service.ts
index ce47b9b..7fdff54 100644
--- a/projects/lib/src/lib/services/portal/local-nodes-config.service.ts
+++ b/projects/lib/src/lib/services/portal/local-nodes.service.ts
@@ -1,28 +1,27 @@
import { HttpClient } from '@angular/common/http';
import { ContentConfiguration, LuigiNode } from '../../models';
import { lastValueFrom } from 'rxjs';
-import { Injectable } from '@angular/core';
+import { inject, Injectable } from '@angular/core';
+import { TransformResult } from '../../models/node-transform';
import { LuigiCoreService } from '../luigi-core.service';
@Injectable({
providedIn: 'root',
})
-export class LocalNodesConfigService {
- constructor(
- private http: HttpClient,
- private luigiCoreService: LuigiCoreService
- ) {}
+export class LocalNodesService {
+ private http = inject(HttpClient);
+ private luigiCoreService = inject(LuigiCoreService);
async getLuigiNodesFromConfigurations(
contentConfigurations: ContentConfiguration[]
- ): Promise {
+ ): Promise {
if (contentConfigurations.length === 0) {
return null;
}
const language = this.luigiCoreService.i18n().getCurrentLocale();
return await lastValueFrom(
- this.http.post(`/rest/localnodes`, {
+ this.http.post(`/rest/localnodes`, {
language,
contentConfigurations,
})
From 5d0880bb441b7158ee44b807e90d292cd5dbdf3f Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Fri, 21 Feb 2025 11:04:31 +0000
Subject: [PATCH 35/41] [no ci] Release 0.134.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 7921afb..6b700e2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.133.0",
+ "version": "0.134.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.133.0",
+ "version": "0.134.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 591f234..41dda9a 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.133.0",
+ "version": "0.134.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From 9974d43170c7d8ebc70cb3740bbdcd26093eeff1 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 21 Feb 2025 21:59:13 +0000
Subject: [PATCH 36/41] Update dependency @types/node to v22.13.5 (#220)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node))
| [`22.13.4` ->
`22.13.5`](https://renovatebot.com/diffs/npm/@types%2fnode/22.13.4/22.13.5)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 6b700e2..a09313a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -68,6 +68,7 @@
"@fundamental-ngx/i18n": "^0.53.2",
"@luigi-project/client": "^2.19.2",
"@luigi-project/client-support-angular": "^2.19.2",
+ "@luigi-project/plugin-auth-oauth2": "^2.19.2",
"apollo-angular": "^7.0.0",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
@@ -6639,9 +6640,9 @@
}
},
"node_modules/@types/node": {
- "version": "22.13.4",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz",
- "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==",
+ "version": "22.13.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz",
+ "integrity": "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==",
"dev": true,
"license": "MIT",
"dependencies": {
From 72b2f4fe1713ec0c939149e6f3de6fb70778c4f5 Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Fri, 21 Feb 2025 22:01:47 +0000
Subject: [PATCH 37/41] [no ci] Release 0.135.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index a09313a..1b5c543 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.134.0",
+ "version": "0.135.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.134.0",
+ "version": "0.135.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 41dda9a..1145d90 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.134.0",
+ "version": "0.135.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From b271ba81d7ea49f47454b3665709ee63c795d735 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 21 Feb 2025 22:05:10 +0000
Subject: [PATCH 38/41] Update dependency eslint to v9.21.0 (#221)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [eslint](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint)) | [`9.20.1` ->
`9.21.0`](https://renovatebot.com/diffs/npm/eslint/9.20.1/9.21.0) |
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Release Notes
eslint/eslint (eslint)
###
[`v9.21.0`](https://redirect.github.com/eslint/eslint/compare/v9.20.1...ecd0ede7fd2ccbb4c0daf0e4732e97ea0f49db1b)
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.20.1...ecd0ede7fd2ccbb4c0daf0e4732e97ea0f49db1b)
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 77 ++++++++++++++++++++---------------------------
1 file changed, 32 insertions(+), 45 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 1b5c543..4b36ab3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3481,13 +3481,13 @@
}
},
"node_modules/@eslint/config-array": {
- "version": "0.19.1",
- "resolved": "https://registry.npmmirror.com/@eslint/config-array/-/config-array-0.19.1.tgz",
- "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==",
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz",
+ "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@eslint/object-schema": "^2.1.5",
+ "@eslint/object-schema": "^2.1.6",
"debug": "^4.3.1",
"minimatch": "^3.1.2"
},
@@ -3520,9 +3520,9 @@
}
},
"node_modules/@eslint/core": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz",
- "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==",
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
+ "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -3533,9 +3533,9 @@
}
},
"node_modules/@eslint/eslintrc": {
- "version": "3.2.0",
- "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz",
- "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz",
+ "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3628,9 +3628,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "9.20.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz",
- "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==",
+ "version": "9.21.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz",
+ "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3638,9 +3638,9 @@
}
},
"node_modules/@eslint/object-schema": {
- "version": "2.1.5",
- "resolved": "https://registry.npmmirror.com/@eslint/object-schema/-/object-schema-2.1.5.tgz",
- "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==",
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
+ "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -3648,13 +3648,13 @@
}
},
"node_modules/@eslint/plugin-kit": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz",
- "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==",
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz",
+ "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@eslint/core": "^0.10.0",
+ "@eslint/core": "^0.12.0",
"levn": "^0.4.1"
},
"engines": {
@@ -3860,9 +3860,9 @@
}
},
"node_modules/@humanwhocodes/retry": {
- "version": "0.4.1",
- "resolved": "https://registry.npmmirror.com/@humanwhocodes/retry/-/retry-0.4.1.tgz",
- "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==",
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz",
+ "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -9935,22 +9935,22 @@
}
},
"node_modules/eslint": {
- "version": "9.20.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz",
- "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==",
+ "version": "9.21.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz",
+ "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.12.1",
- "@eslint/config-array": "^0.19.0",
- "@eslint/core": "^0.11.0",
- "@eslint/eslintrc": "^3.2.0",
- "@eslint/js": "9.20.0",
- "@eslint/plugin-kit": "^0.2.5",
+ "@eslint/config-array": "^0.19.2",
+ "@eslint/core": "^0.12.0",
+ "@eslint/eslintrc": "^3.3.0",
+ "@eslint/js": "9.21.0",
+ "@eslint/plugin-kit": "^0.2.7",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
- "@humanwhocodes/retry": "^0.4.1",
+ "@humanwhocodes/retry": "^0.4.2",
"@types/estree": "^1.0.6",
"@types/json-schema": "^7.0.15",
"ajv": "^6.12.4",
@@ -10097,19 +10097,6 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/@eslint/core": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz",
- "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@types/json-schema": "^7.0.15"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
"node_modules/eslint/node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
From a348eab01e6a37f51e64b13d01196c6010cabf6f Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Fri, 21 Feb 2025 22:08:07 +0000
Subject: [PATCH 39/41] [no ci] Release 0.136.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 4b36ab3..c9c8ba2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.135.0",
+ "version": "0.136.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.135.0",
+ "version": "0.136.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 1145d90..837c2ad 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.135.0",
+ "version": "0.136.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",
From 34378772068715959891413638ea877b0c24ddd2 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 22 Feb 2025 07:12:28 +0000
Subject: [PATCH 40/41] Update dependency prettier to v3.5.2 (#222)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [prettier](https://prettier.io)
([source](https://redirect.github.com/prettier/prettier)) | [`3.5.1` ->
`3.5.2`](https://renovatebot.com/diffs/npm/prettier/3.5.1/3.5.2) |
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Release Notes
prettier/prettier (prettier)
###
[`v3.5.2`](https://redirect.github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#352)
[Compare
Source](https://redirect.github.com/prettier/prettier/compare/3.5.1...3.5.2)
[diff](https://redirect.github.com/prettier/prettier/compare/3.5.1...3.5.2)
##### Remove `module-sync` condition
([#17156](https://redirect.github.com/prettier/prettier/pull/17156)
by [@fisker](https://redirect.github.com/fisker))
In Prettier 3.5.0, [we added `module-sync` condition to
`package.json`](https://prettier.io/blog/2025/02/09/3.5.0#use-esm-entrypoint-for-requireesm-16958-by-tats-u),
so that `require("prettier")` can use ESM version, but turns out it
doesn't work if CommonJS and ESM plugins both imports builtin plugins.
To solve this problem, we decide simply remove the `module-sync`
condition, so `require("prettier")` will still use the CommonJS version,
we'll revisit until `require(ESM)` feature is more stable.
---
### Configuration
π
**Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/openmfp/portal-ui-lib).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package-lock.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index c9c8ba2..ad8046d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16806,9 +16806,9 @@
}
},
"node_modules/prettier": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz",
- "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==",
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz",
+ "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==",
"dev": true,
"license": "MIT",
"bin": {
From bd430b1f29d4c160b1352de9f9a704889c12927d Mon Sep 17 00:00:00 2001
From: OpenMFP Technical User
Date: Sat, 22 Feb 2025 07:15:31 +0000
Subject: [PATCH 41/41] [no ci] Release 0.137.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index ad8046d..8e82c10 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.136.0",
+ "version": "0.137.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openmfp/portal-ui-lib",
- "version": "0.136.0",
+ "version": "0.137.0",
"dependencies": {
"@luigi-project/plugin-auth-oauth2": "^2.18.1",
"jwt-decode": "4.0.0",
diff --git a/package.json b/package.json
index 837c2ad..f09c599 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openmfp/portal-ui-lib",
- "version": "0.136.0",
+ "version": "0.137.0",
"scripts": {
"ng": "ng",
"xliff2json": "node xliff2json.js",