ngx-translate-multi-http-loader 18.0.0 → 18.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
@@ -35,8 +35,8 @@ Choose the version corresponding to your Angular version:
|
|
35
35
|
|
36
36
|
| Angular | @ngx-translate/core | ngx-translate-multi-http-loader |
|
37
37
|
| ------- | ------------------- | ------------------------------- |
|
38
|
-
| 16
|
39
|
-
| 15 |
|
38
|
+
| >= 16 | 15.x+ | >= 15.x+ |
|
39
|
+
| 15 | 14.x+ | 9.x+ |
|
40
40
|
| 14 | 14.x+ | 8.x+ |
|
41
41
|
| 13 | 14.x+ | 7.x+ |
|
42
42
|
| 6 | 10.x+ | 1.x+ |
|
@@ -57,7 +57,7 @@ import {AppComponent} from './app';
|
|
57
57
|
|
58
58
|
// AoT requires an exported function for factories
|
59
59
|
export function HttpLoaderFactory(_httpBackend: HttpBackend) {
|
60
|
-
return new MultiTranslateHttpLoader(_httpBackend, ['/assets/i18n/core/', '/assets/i18n/vendors/']);
|
60
|
+
return new MultiTranslateHttpLoader(_httpBackend, ['/assets/i18n/core/', '/assets/i18n/vendors/']); // /i18n/core/ on angular >= v18 with the new public logic
|
61
61
|
}
|
62
62
|
|
63
63
|
@NgModule({
|
@@ -1,8 +1,9 @@
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
2
|
-
import { deepmerge } from 'deepmerge-ts';
|
3
2
|
import { forkJoin, of } from 'rxjs';
|
4
3
|
import { catchError, map } from 'rxjs/operators';
|
5
4
|
export class MultiTranslateHttpLoader {
|
5
|
+
_handler;
|
6
|
+
_resourcesPrefix;
|
6
7
|
constructor(_handler, _resourcesPrefix) {
|
7
8
|
this._handler = _handler;
|
8
9
|
this._resourcesPrefix = _resourcesPrefix;
|
@@ -10,12 +11,12 @@ export class MultiTranslateHttpLoader {
|
|
10
11
|
getTranslation(lang) {
|
11
12
|
const requests = this._resourcesPrefix.map((resource) => {
|
12
13
|
let path;
|
13
|
-
if (resource
|
14
|
-
path = `${resource.prefix}${lang}${resource.suffix || '.json'}`;
|
15
|
-
else
|
14
|
+
if (typeof resource === 'string')
|
16
15
|
path = `${resource}${lang}.json`;
|
16
|
+
else
|
17
|
+
path = `${resource.prefix}${lang}${resource.suffix || '.json'}`;
|
17
18
|
return new HttpClient(this._handler).get(path).pipe(catchError((res) => {
|
18
|
-
if (!resource.optional) {
|
19
|
+
if (typeof resource !== 'string' && !resource.optional) {
|
19
20
|
console.group();
|
20
21
|
console.error('Something went wrong for the following translation file:', path);
|
21
22
|
console.error(res);
|
@@ -24,7 +25,33 @@ export class MultiTranslateHttpLoader {
|
|
24
25
|
return of({});
|
25
26
|
}));
|
26
27
|
});
|
27
|
-
return forkJoin(requests).pipe(map((response) =>
|
28
|
+
return forkJoin(requests).pipe(map((response) => response.reduce((acc, curr) => this.mergeDeep(acc, curr), {})));
|
29
|
+
}
|
30
|
+
// @ToDo: Use it from ngx-translate once it gets exported: https://github.com/rbalet/ngx-translate-multi-http-loader/issues/35
|
31
|
+
isObject(item) {
|
32
|
+
return item && typeof item === 'object' && !Array.isArray(item);
|
33
|
+
}
|
34
|
+
mergeDeep(target, source) {
|
35
|
+
const output = Object.assign({}, target);
|
36
|
+
if (!this.isObject(target)) {
|
37
|
+
return this.mergeDeep({}, source);
|
38
|
+
}
|
39
|
+
if (this.isObject(target) && this.isObject(source)) {
|
40
|
+
Object.keys(source).forEach((key) => {
|
41
|
+
if (this.isObject(source[key])) {
|
42
|
+
if (!(key in target)) {
|
43
|
+
Object.assign(output, { [key]: source[key] });
|
44
|
+
}
|
45
|
+
else {
|
46
|
+
output[key] = this.mergeDeep(target[key], source[key]);
|
47
|
+
}
|
48
|
+
}
|
49
|
+
else {
|
50
|
+
Object.assign(output, { [key]: source[key] });
|
51
|
+
}
|
52
|
+
});
|
53
|
+
}
|
54
|
+
return output;
|
28
55
|
}
|
29
56
|
}
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktaHR0cC1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tdWx0aS1odHRwLWxvYWRlci9zcmMvbGliL211bHRpLWh0dHAtbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUU5RCxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBUWhELE1BQU0sT0FBTyx3QkFBd0I7SUFFekI7SUFDQTtJQUZWLFlBQ1UsUUFBcUIsRUFDckIsZ0JBQW1EO1FBRG5ELGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQztJQUMxRCxDQUFDO0lBRUcsY0FBYyxDQUFDLElBQVk7UUFDaEMsTUFBTSxRQUFRLEdBQThCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqRixJQUFJLElBQVksQ0FBQTtZQUVoQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVE7Z0JBQUUsSUFBSSxHQUFHLEdBQUcsUUFBUSxHQUFHLElBQUksT0FBTyxDQUFBOztnQkFDN0QsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQTtZQUVwRSxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNqRCxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3ZELE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtvQkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDBEQUEwRCxFQUFFLElBQUksQ0FBQyxDQUFBO29CQUMvRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO29CQUNsQixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUE7Z0JBQ3BCLENBQUM7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDZixDQUFDLENBQUMsQ0FDSCxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQ2pGLENBQUE7SUFDSCxDQUFDO0lBRUQsOEhBQThIO0lBQzlILFFBQVEsQ0FBQyxJQUFTO1FBQ2hCLE9BQU8sSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDakUsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFXLEVBQUUsTUFBVztRQUNoQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUV4QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDbkMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDbkQsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDdkMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDO3dCQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtvQkFDL0MsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtvQkFDeEQsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQy9DLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBCYWNrZW5kLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBUcmFuc2xhdGVMb2FkZXIgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvblJlc291cmNlIHtcbiAgcHJlZml4OiBzdHJpbmdcbiAgc3VmZml4Pzogc3RyaW5nXG4gIG9wdGlvbmFsPzogYm9vbGVhblxufVxuXG5leHBvcnQgY2xhc3MgTXVsdGlUcmFuc2xhdGVIdHRwTG9hZGVyIGltcGxlbWVudHMgVHJhbnNsYXRlTG9hZGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaGFuZGxlcjogSHR0cEJhY2tlbmQsXG4gICAgcHJpdmF0ZSBfcmVzb3VyY2VzUHJlZml4OiBzdHJpbmdbXSB8IElUcmFuc2xhdGlvblJlc291cmNlW10sXG4gICkge31cblxuICBwdWJsaWMgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByZXF1ZXN0czogT2JzZXJ2YWJsZTxPYmplY3QgfCB7fT5bXSA9IHRoaXMuX3Jlc291cmNlc1ByZWZpeC5tYXAoKHJlc291cmNlKSA9PiB7XG4gICAgICBsZXQgcGF0aDogc3RyaW5nXG5cbiAgICAgIGlmICh0eXBlb2YgcmVzb3VyY2UgPT09ICdzdHJpbmcnKSBwYXRoID0gYCR7cmVzb3VyY2V9JHtsYW5nfS5qc29uYFxuICAgICAgZWxzZSBwYXRoID0gYCR7cmVzb3VyY2UucHJlZml4fSR7bGFuZ30ke3Jlc291cmNlLnN1ZmZpeCB8fCAnLmpzb24nfWBcblxuICAgICAgcmV0dXJuIG5ldyBIdHRwQ2xpZW50KHRoaXMuX2hhbmRsZXIpLmdldChwYXRoKS5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChyZXMpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlc291cmNlICE9PSAnc3RyaW5nJyAmJiAhcmVzb3VyY2Uub3B0aW9uYWwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXAoKVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignU29tZXRoaW5nIHdlbnQgd3JvbmcgZm9yIHRoZSBmb2xsb3dpbmcgdHJhbnNsYXRpb24gZmlsZTonLCBwYXRoKVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXMpXG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG9mKHt9KVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB9KVxuXG4gICAgcmV0dXJuIGZvcmtKb2luKHJlcXVlc3RzKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZSkgPT4gcmVzcG9uc2UucmVkdWNlKChhY2MsIGN1cnIpID0+IHRoaXMubWVyZ2VEZWVwKGFjYywgY3VyciksIHt9KSksXG4gICAgKVxuICB9XG5cbiAgLy8gQFRvRG86IFVzZSBpdCBmcm9tIG5neC10cmFuc2xhdGUgb25jZSBpdCBnZXRzIGV4cG9ydGVkOiBodHRwczovL2dpdGh1Yi5jb20vcmJhbGV0L25neC10cmFuc2xhdGUtbXVsdGktaHR0cC1sb2FkZXIvaXNzdWVzLzM1XG4gIGlzT2JqZWN0KGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpdGVtICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpdGVtKVxuICB9XG5cbiAgbWVyZ2VEZWVwKHRhcmdldDogYW55LCBzb3VyY2U6IGFueSk6IGFueSB7XG4gICAgY29uc3Qgb3V0cHV0ID0gT2JqZWN0LmFzc2lnbih7fSwgdGFyZ2V0KVxuXG4gICAgaWYgKCF0aGlzLmlzT2JqZWN0KHRhcmdldCkpIHtcbiAgICAgIHJldHVybiB0aGlzLm1lcmdlRGVlcCh7fSwgc291cmNlKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmlzT2JqZWN0KHRhcmdldCkgJiYgdGhpcy5pc09iamVjdChzb3VyY2UpKSB7XG4gICAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goKGtleTogYW55KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzT2JqZWN0KHNvdXJjZVtrZXldKSkge1xuICAgICAgICAgIGlmICghKGtleSBpbiB0YXJnZXQpKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKG91dHB1dCwgeyBba2V5XTogc291cmNlW2tleV0gfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0cHV0W2tleV0gPSB0aGlzLm1lcmdlRGVlcCh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24ob3V0cHV0LCB7IFtrZXldOiBzb3VyY2Vba2V5XSB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0XG4gIH1cbn1cbiJdfQ==
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
2
|
-
import { deepmerge } from 'deepmerge-ts';
|
3
2
|
import { of, forkJoin } from 'rxjs';
|
4
3
|
import { catchError, map } from 'rxjs/operators';
|
5
4
|
|
6
5
|
class MultiTranslateHttpLoader {
|
6
|
+
_handler;
|
7
|
+
_resourcesPrefix;
|
7
8
|
constructor(_handler, _resourcesPrefix) {
|
8
9
|
this._handler = _handler;
|
9
10
|
this._resourcesPrefix = _resourcesPrefix;
|
@@ -11,12 +12,12 @@ class MultiTranslateHttpLoader {
|
|
11
12
|
getTranslation(lang) {
|
12
13
|
const requests = this._resourcesPrefix.map((resource) => {
|
13
14
|
let path;
|
14
|
-
if (resource
|
15
|
-
path = `${resource.prefix}${lang}${resource.suffix || '.json'}`;
|
16
|
-
else
|
15
|
+
if (typeof resource === 'string')
|
17
16
|
path = `${resource}${lang}.json`;
|
17
|
+
else
|
18
|
+
path = `${resource.prefix}${lang}${resource.suffix || '.json'}`;
|
18
19
|
return new HttpClient(this._handler).get(path).pipe(catchError((res) => {
|
19
|
-
if (!resource.optional) {
|
20
|
+
if (typeof resource !== 'string' && !resource.optional) {
|
20
21
|
console.group();
|
21
22
|
console.error('Something went wrong for the following translation file:', path);
|
22
23
|
console.error(res);
|
@@ -25,7 +26,33 @@ class MultiTranslateHttpLoader {
|
|
25
26
|
return of({});
|
26
27
|
}));
|
27
28
|
});
|
28
|
-
return forkJoin(requests).pipe(map((response) =>
|
29
|
+
return forkJoin(requests).pipe(map((response) => response.reduce((acc, curr) => this.mergeDeep(acc, curr), {})));
|
30
|
+
}
|
31
|
+
// @ToDo: Use it from ngx-translate once it gets exported: https://github.com/rbalet/ngx-translate-multi-http-loader/issues/35
|
32
|
+
isObject(item) {
|
33
|
+
return item && typeof item === 'object' && !Array.isArray(item);
|
34
|
+
}
|
35
|
+
mergeDeep(target, source) {
|
36
|
+
const output = Object.assign({}, target);
|
37
|
+
if (!this.isObject(target)) {
|
38
|
+
return this.mergeDeep({}, source);
|
39
|
+
}
|
40
|
+
if (this.isObject(target) && this.isObject(source)) {
|
41
|
+
Object.keys(source).forEach((key) => {
|
42
|
+
if (this.isObject(source[key])) {
|
43
|
+
if (!(key in target)) {
|
44
|
+
Object.assign(output, { [key]: source[key] });
|
45
|
+
}
|
46
|
+
else {
|
47
|
+
output[key] = this.mergeDeep(target[key], source[key]);
|
48
|
+
}
|
49
|
+
}
|
50
|
+
else {
|
51
|
+
Object.assign(output, { [key]: source[key] });
|
52
|
+
}
|
53
|
+
});
|
54
|
+
}
|
55
|
+
return output;
|
29
56
|
}
|
30
57
|
}
|
31
58
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ngx-translate-multi-http-loader.mjs","sources":["../../../projects/multi-http-loader/src/lib/multi-http-loader.ts","../../../projects/multi-http-loader/src/ngx-translate-multi-http-loader.ts"],"sourcesContent":["import { HttpBackend, HttpClient } from '@angular/common/http'\nimport { TranslateLoader } from '@ngx-translate/core'\nimport {
|
1
|
+
{"version":3,"file":"ngx-translate-multi-http-loader.mjs","sources":["../../../projects/multi-http-loader/src/lib/multi-http-loader.ts","../../../projects/multi-http-loader/src/ngx-translate-multi-http-loader.ts"],"sourcesContent":["import { HttpBackend, HttpClient } from '@angular/common/http'\nimport { TranslateLoader } from '@ngx-translate/core'\nimport { forkJoin, Observable, of } from 'rxjs'\nimport { catchError, map } from 'rxjs/operators'\n\nexport interface ITranslationResource {\n prefix: string\n suffix?: string\n optional?: boolean\n}\n\nexport class MultiTranslateHttpLoader implements TranslateLoader {\n constructor(\n private _handler: HttpBackend,\n private _resourcesPrefix: string[] | ITranslationResource[],\n ) {}\n\n public getTranslation(lang: string): Observable<any> {\n const requests: Observable<Object | {}>[] = this._resourcesPrefix.map((resource) => {\n let path: string\n\n if (typeof resource === 'string') path = `${resource}${lang}.json`\n else path = `${resource.prefix}${lang}${resource.suffix || '.json'}`\n\n return new HttpClient(this._handler).get(path).pipe(\n catchError((res) => {\n if (typeof resource !== 'string' && !resource.optional) {\n console.group()\n console.error('Something went wrong for the following translation file:', path)\n console.error(res)\n console.groupEnd()\n }\n return of({})\n }),\n )\n })\n\n return forkJoin(requests).pipe(\n map((response) => response.reduce((acc, curr) => this.mergeDeep(acc, curr), {})),\n )\n }\n\n // @ToDo: Use it from ngx-translate once it gets exported: https://github.com/rbalet/ngx-translate-multi-http-loader/issues/35\n isObject(item: any): boolean {\n return item && typeof item === 'object' && !Array.isArray(item)\n }\n\n mergeDeep(target: any, source: any): any {\n const output = Object.assign({}, target)\n\n if (!this.isObject(target)) {\n return this.mergeDeep({}, source)\n }\n\n if (this.isObject(target) && this.isObject(source)) {\n Object.keys(source).forEach((key: any) => {\n if (this.isObject(source[key])) {\n if (!(key in target)) {\n Object.assign(output, { [key]: source[key] })\n } else {\n output[key] = this.mergeDeep(target[key], source[key])\n }\n } else {\n Object.assign(output, { [key]: source[key] })\n }\n })\n }\n return output\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
@@ -11,4 +11,6 @@ export declare class MultiTranslateHttpLoader implements TranslateLoader {
|
|
11
11
|
private _resourcesPrefix;
|
12
12
|
constructor(_handler: HttpBackend, _resourcesPrefix: string[] | ITranslationResource[]);
|
13
13
|
getTranslation(lang: string): Observable<any>;
|
14
|
+
isObject(item: any): boolean;
|
15
|
+
mergeDeep(target: any, source: any): any;
|
14
16
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "ngx-translate-multi-http-loader",
|
3
|
-
"version": "18.
|
3
|
+
"version": "18.1.1",
|
4
4
|
"license": "MIT",
|
5
5
|
"author": {
|
6
6
|
"name": "Raphaël Balet",
|
@@ -29,7 +29,6 @@
|
|
29
29
|
"@angular/common": ">=13.0.0",
|
30
30
|
"@angular/core": ">=13.0.0",
|
31
31
|
"@ngx-translate/core": ">=15.0.0",
|
32
|
-
"deepmerge-ts": "^7.0.3",
|
33
32
|
"rxjs": "^7.8.1"
|
34
33
|
},
|
35
34
|
"module": "fesm2022/ngx-translate-multi-http-loader.mjs",
|
@@ -46,4 +45,4 @@
|
|
46
45
|
}
|
47
46
|
},
|
48
47
|
"sideEffects": false
|
49
|
-
}
|
48
|
+
}
|