diff --git a/libs/anglify/src/factories/settings.factory.ts b/libs/anglify/src/factories/settings.factory.ts index 401c3064..1082f52d 100644 --- a/libs/anglify/src/factories/settings.factory.ts +++ b/libs/anglify/src/factories/settings.factory.ts @@ -1,4 +1,5 @@ import { inject, InjectFlags, InjectionToken, Provider } from '@angular/core'; +import { deepmerge } from 'deepmerge-ts'; /** * @@ -12,7 +13,7 @@ export function createSettingsProvider(name: string, defaultValues: T, settin provide: name, useFactory: () => { const overwrittenSettings = inject>(settingsToken, InjectFlags.Optional); - return { ...defaultValues, ...overwrittenSettings }; + return deepmerge(defaultValues, overwrittenSettings ?? {}); }, }; } diff --git a/package-lock.json b/package-lock.json index 8a2d7f39..eeebbae4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,10 +19,10 @@ "@ngneat/until-destroy": "^9.2.0", "@nrwl/angular": "^14.1.4", "common-tags": "^1.8.2", + "deepmerge-ts": "^4.0.3", "ngx-highlightjs": "^6.1.2", "ngx-markdown": "^13.1.0", "rxjs": "^7.5.5", - "ts-deepmerge": "^2.0.1", "tslib": "^2.4.0", "zone.js": "^0.11.5" }, @@ -9381,6 +9381,25 @@ "node": ">=0.10.0" } }, + "node_modules/deepmerge-ts": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.0.3.tgz", + "integrity": "sha512-kRBBqKdfhdZ+LEBkyE0Y7Yu7Lm277HOKpVmpecaEzzD3Krne9uO13Wqi7sNJ9S4FDmCgwjiWj8UhXo5OgjOIwg==", + "dependencies": { + "is-plain-object": "^5.0.0" + }, + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/deepmerge-ts/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -21647,11 +21666,6 @@ "node": ">=8" } }, - "node_modules/ts-deepmerge": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-2.0.1.tgz", - "integrity": "sha512-2RpGIE0YVW6blKY756MP74czemC9x4XThhNCxq0A14Owm3ac8tZvigPbpZyZZQSyfOc7Qba5kG5xKBq74ihZfA==" - }, "node_modules/ts-jest": { "version": "28.0.2", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.2.tgz", @@ -29671,6 +29685,21 @@ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" }, + "deepmerge-ts": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.0.3.tgz", + "integrity": "sha512-kRBBqKdfhdZ+LEBkyE0Y7Yu7Lm277HOKpVmpecaEzzD3Krne9uO13Wqi7sNJ9S4FDmCgwjiWj8UhXo5OgjOIwg==", + "requires": { + "is-plain-object": "^5.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + } + } + }, "default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -38942,11 +38971,6 @@ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, - "ts-deepmerge": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-2.0.1.tgz", - "integrity": "sha512-2RpGIE0YVW6blKY756MP74czemC9x4XThhNCxq0A14Owm3ac8tZvigPbpZyZZQSyfOc7Qba5kG5xKBq74ihZfA==" - }, "ts-jest": { "version": "28.0.2", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.2.tgz", diff --git a/package.json b/package.json index 77e947dc..fbeed19f 100644 --- a/package.json +++ b/package.json @@ -27,10 +27,10 @@ "@ngneat/until-destroy": "^9.2.0", "@nrwl/angular": "^14.1.4", "common-tags": "^1.8.2", + "deepmerge-ts": "^4.0.3", "ngx-highlightjs": "^6.1.2", "ngx-markdown": "^13.1.0", "rxjs": "^7.5.5", - "ts-deepmerge": "^2.0.1", "tslib": "^2.4.0", "zone.js": "^0.11.5" },