ngx-translate-multi-http-loader 9.2.1 → 9.3.0

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
@@ -83,12 +83,14 @@ Instead of an array of `string[]`,
83
83
  you may pass a list of parameters:
84
84
  - `prefix: string = '/assets/i18n/'`
85
85
  - `suffix: string = '.json'`
86
+ - `optional: boolean = true`
86
87
 
87
88
  ```typescript
88
89
  export function HttpLoaderFactory(_httpBackend: HttpBackend) {
89
90
  return new MultiTranslateHttpLoader(_httpBackend, [
90
91
  {prefix: './assets/i18n/core/', suffix: '.json'},
91
92
  {prefix: './assets/i18n/vendors/'}, // , "suffix: '.json'" being the default value
93
+ {prefix: './assets/i18n/non-existent/', optional: true}, // Wont create any log
92
94
  ]);
93
95
  }
94
96
  ```
@@ -15,12 +15,16 @@ export class MultiTranslateHttpLoader {
15
15
  else
16
16
  path = `${resource}${lang}.json`;
17
17
  return new HttpClient(this._handler).get(path).pipe(catchError((res) => {
18
- console.error('Something went wrong for the following translation file:', path);
19
- console.error(res.message);
18
+ if (!resource.optional) {
19
+ console.group();
20
+ console.error('Something went wrong for the following translation file:', path);
21
+ console.error(res.message);
22
+ console.groupEnd();
23
+ }
20
24
  return of({});
21
25
  }));
22
26
  });
23
27
  return forkJoin(requests).pipe(map((response) => deepmerge(...response)));
24
28
  }
25
29
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktaHR0cC1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tdWx0aS1odHRwLWxvYWRlci9zcmMvbGliL211bHRpLWh0dHAtbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUU5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFPaEQsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUNVLFFBQXFCLEVBQ3JCLGdCQUFtRDtRQURuRCxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUM7SUFDMUQsQ0FBQztJQUVHLGNBQWMsQ0FBQyxJQUFZO1FBQ2hDLE1BQU0sUUFBUSxHQUE4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDakYsSUFBSSxJQUFZLENBQUE7WUFDaEIsSUFBSSxRQUFRLENBQUMsTUFBTTtnQkFBRSxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFBOztnQkFDL0UsSUFBSSxHQUFHLEdBQUcsUUFBUSxHQUFHLElBQUksT0FBTyxDQUFBO1lBRXJDLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2pELFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLDBEQUEwRCxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUMvRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtnQkFDMUIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDZixDQUFDLENBQUMsQ0FDSCxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDM0UsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEJhY2tlbmQsIEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcclxuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcclxuaW1wb3J0IHsgZGVlcG1lcmdlIH0gZnJvbSAnZGVlcG1lcmdlLXRzJ1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9uUmVzb3VyY2Uge1xyXG4gIHByZWZpeDogc3RyaW5nXHJcbiAgc3VmZml4Pzogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNdWx0aVRyYW5zbGF0ZUh0dHBMb2FkZXIgaW1wbGVtZW50cyBUcmFuc2xhdGVMb2FkZXIge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfaGFuZGxlcjogSHR0cEJhY2tlbmQsXHJcbiAgICBwcml2YXRlIF9yZXNvdXJjZXNQcmVmaXg6IHN0cmluZ1tdIHwgSVRyYW5zbGF0aW9uUmVzb3VyY2VbXSxcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBnZXRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcmVxdWVzdHM6IE9ic2VydmFibGU8T2JqZWN0IHwge30+W10gPSB0aGlzLl9yZXNvdXJjZXNQcmVmaXgubWFwKChyZXNvdXJjZSkgPT4ge1xyXG4gICAgICBsZXQgcGF0aDogc3RyaW5nXHJcbiAgICAgIGlmIChyZXNvdXJjZS5wcmVmaXgpIHBhdGggPSBgJHtyZXNvdXJjZS5wcmVmaXh9JHtsYW5nfSR7cmVzb3VyY2Uuc3VmZml4IHx8ICcuanNvbid9YFxyXG4gICAgICBlbHNlIHBhdGggPSBgJHtyZXNvdXJjZX0ke2xhbmd9Lmpzb25gXHJcblxyXG4gICAgICByZXR1cm4gbmV3IEh0dHBDbGllbnQodGhpcy5faGFuZGxlcikuZ2V0KHBhdGgpLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcigocmVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdTb21ldGhpbmcgd2VudCB3cm9uZyBmb3IgdGhlIGZvbGxvd2luZyB0cmFuc2xhdGlvbiBmaWxlOicsIHBhdGgpXHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcy5tZXNzYWdlKVxyXG4gICAgICAgICAgcmV0dXJuIG9mKHt9KVxyXG4gICAgICAgIH0pLFxyXG4gICAgICApXHJcbiAgICB9KVxyXG5cclxuICAgIHJldHVybiBmb3JrSm9pbihyZXF1ZXN0cykucGlwZShtYXAoKHJlc3BvbnNlKSA9PiBkZWVwbWVyZ2UoLi4ucmVzcG9uc2UpKSlcclxuICB9XHJcbn1cclxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktaHR0cC1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tdWx0aS1odHRwLWxvYWRlci9zcmMvbGliL211bHRpLWh0dHAtbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUU5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFRaEQsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUNVLFFBQXFCLEVBQ3JCLGdCQUFtRDtRQURuRCxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUM7SUFDMUQsQ0FBQztJQUVHLGNBQWMsQ0FBQyxJQUFZO1FBQ2hDLE1BQU0sUUFBUSxHQUE4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDakYsSUFBSSxJQUFZLENBQUE7WUFDaEIsSUFBSSxRQUFRLENBQUMsTUFBTTtnQkFBRSxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFBOztnQkFDL0UsSUFBSSxHQUFHLEdBQUcsUUFBUSxHQUFHLElBQUksT0FBTyxDQUFBO1lBRXJDLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2pELFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtvQkFDdEIsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO29CQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsMERBQTBELEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQy9FLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUMxQixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUE7aUJBQ25CO2dCQUNELE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ2YsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUYsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBCYWNrZW5kLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxvYWRlciB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXHJcbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJ2RlZXBtZXJnZS10cydcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvblJlc291cmNlIHtcclxuICBwcmVmaXg6IHN0cmluZ1xyXG4gIHN1ZmZpeD86IHN0cmluZ1xyXG4gIG9wdGlvbmFsPzogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTXVsdGlUcmFuc2xhdGVIdHRwTG9hZGVyIGltcGxlbWVudHMgVHJhbnNsYXRlTG9hZGVyIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2hhbmRsZXI6IEh0dHBCYWNrZW5kLFxyXG4gICAgcHJpdmF0ZSBfcmVzb3VyY2VzUHJlZml4OiBzdHJpbmdbXSB8IElUcmFuc2xhdGlvblJlc291cmNlW10sXHJcbiAgKSB7fVxyXG5cclxuICBwdWJsaWMgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHJlcXVlc3RzOiBPYnNlcnZhYmxlPE9iamVjdCB8IHt9PltdID0gdGhpcy5fcmVzb3VyY2VzUHJlZml4Lm1hcCgocmVzb3VyY2UpID0+IHtcclxuICAgICAgbGV0IHBhdGg6IHN0cmluZ1xyXG4gICAgICBpZiAocmVzb3VyY2UucHJlZml4KSBwYXRoID0gYCR7cmVzb3VyY2UucHJlZml4fSR7bGFuZ30ke3Jlc291cmNlLnN1ZmZpeCB8fCAnLmpzb24nfWBcclxuICAgICAgZWxzZSBwYXRoID0gYCR7cmVzb3VyY2V9JHtsYW5nfS5qc29uYFxyXG5cclxuICAgICAgcmV0dXJuIG5ldyBIdHRwQ2xpZW50KHRoaXMuX2hhbmRsZXIpLmdldChwYXRoKS5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKCFyZXNvdXJjZS5vcHRpb25hbCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwKClcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignU29tZXRoaW5nIHdlbnQgd3JvbmcgZm9yIHRoZSBmb2xsb3dpbmcgdHJhbnNsYXRpb24gZmlsZTonLCBwYXRoKVxyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcy5tZXNzYWdlKVxyXG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBvZih7fSlcclxuICAgICAgICB9KSxcclxuICAgICAgKVxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gZm9ya0pvaW4ocmVxdWVzdHMpLnBpcGUobWFwKChyZXNwb25zZSkgPT4gZGVlcG1lcmdlKC4uLnJlc3BvbnNlKSkpXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -16,8 +16,12 @@ class MultiTranslateHttpLoader {
16
16
  else
17
17
  path = `${resource}${lang}.json`;
18
18
  return new HttpClient(this._handler).get(path).pipe(catchError((res) => {
19
- console.error('Something went wrong for the following translation file:', path);
20
- console.error(res.message);
19
+ if (!resource.optional) {
20
+ console.group();
21
+ console.error('Something went wrong for the following translation file:', path);
22
+ console.error(res.message);
23
+ console.groupEnd();
24
+ }
21
25
  return of({});
22
26
  }));
23
27
  });
@@ -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'\r\nimport { TranslateLoader } from '@ngx-translate/core'\r\nimport { deepmerge } from 'deepmerge-ts'\r\nimport { forkJoin, Observable, of } from 'rxjs'\r\nimport { catchError, map } from 'rxjs/operators'\r\n\r\nexport interface ITranslationResource {\r\n prefix: string\r\n suffix?: string\r\n}\r\n\r\nexport class MultiTranslateHttpLoader implements TranslateLoader {\r\n constructor(\r\n private _handler: HttpBackend,\r\n private _resourcesPrefix: string[] | ITranslationResource[],\r\n ) {}\r\n\r\n public getTranslation(lang: string): Observable<any> {\r\n const requests: Observable<Object | {}>[] = this._resourcesPrefix.map((resource) => {\r\n let path: string\r\n if (resource.prefix) path = `${resource.prefix}${lang}${resource.suffix || '.json'}`\r\n else path = `${resource}${lang}.json`\r\n\r\n return new HttpClient(this._handler).get(path).pipe(\r\n catchError((res) => {\r\n console.error('Something went wrong for the following translation file:', path)\r\n console.error(res.message)\r\n return of({})\r\n }),\r\n )\r\n })\r\n\r\n return forkJoin(requests).pipe(map((response) => deepmerge(...response)))\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAWa,wBAAwB,CAAA;IACnC,WACU,CAAA,QAAqB,EACrB,gBAAmD,EAAA;AADnD,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;AACrB,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAmC;KACzD;AAEG,IAAA,cAAc,CAAC,IAAY,EAAA;QAChC,MAAM,QAAQ,GAA8B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;AACjF,YAAA,IAAI,IAAY,CAAA;YAChB,IAAI,QAAQ,CAAC,MAAM;AAAE,gBAAA,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAG,EAAA,IAAI,CAAG,EAAA,QAAQ,CAAC,MAAM,IAAI,OAAO,EAAE,CAAA;;AAC/E,gBAAA,IAAI,GAAG,CAAG,EAAA,QAAQ,CAAG,EAAA,IAAI,OAAO,CAAA;YAErC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CACjD,UAAU,CAAC,CAAC,GAAG,KAAI;AACjB,gBAAA,OAAO,CAAC,KAAK,CAAC,0DAA0D,EAAE,IAAI,CAAC,CAAA;AAC/E,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAC1B,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;aACd,CAAC,CACH,CAAA;AACH,SAAC,CAAC,CAAA;QAEF,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;KAC1E;AACF;;AClCD;;AAEG;;;;"}
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'\r\nimport { TranslateLoader } from '@ngx-translate/core'\r\nimport { deepmerge } from 'deepmerge-ts'\r\nimport { forkJoin, Observable, of } from 'rxjs'\r\nimport { catchError, map } from 'rxjs/operators'\r\n\r\nexport interface ITranslationResource {\r\n prefix: string\r\n suffix?: string\r\n optional?: boolean\r\n}\r\n\r\nexport class MultiTranslateHttpLoader implements TranslateLoader {\r\n constructor(\r\n private _handler: HttpBackend,\r\n private _resourcesPrefix: string[] | ITranslationResource[],\r\n ) {}\r\n\r\n public getTranslation(lang: string): Observable<any> {\r\n const requests: Observable<Object | {}>[] = this._resourcesPrefix.map((resource) => {\r\n let path: string\r\n if (resource.prefix) path = `${resource.prefix}${lang}${resource.suffix || '.json'}`\r\n else path = `${resource}${lang}.json`\r\n\r\n return new HttpClient(this._handler).get(path).pipe(\r\n catchError((res) => {\r\n if (!resource.optional) {\r\n console.group()\r\n console.error('Something went wrong for the following translation file:', path)\r\n console.error(res.message)\r\n console.groupEnd()\r\n }\r\n return of({})\r\n }),\r\n )\r\n })\r\n\r\n return forkJoin(requests).pipe(map((response) => deepmerge(...response)))\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAYa,wBAAwB,CAAA;IACnC,WACU,CAAA,QAAqB,EACrB,gBAAmD,EAAA;AADnD,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;AACrB,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAmC;KACzD;AAEG,IAAA,cAAc,CAAC,IAAY,EAAA;QAChC,MAAM,QAAQ,GAA8B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;AACjF,YAAA,IAAI,IAAY,CAAA;YAChB,IAAI,QAAQ,CAAC,MAAM;AAAE,gBAAA,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAG,EAAA,IAAI,CAAG,EAAA,QAAQ,CAAC,MAAM,IAAI,OAAO,EAAE,CAAA;;AAC/E,gBAAA,IAAI,GAAG,CAAG,EAAA,QAAQ,CAAG,EAAA,IAAI,OAAO,CAAA;YAErC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CACjD,UAAU,CAAC,CAAC,GAAG,KAAI;AACjB,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;oBACtB,OAAO,CAAC,KAAK,EAAE,CAAA;AACf,oBAAA,OAAO,CAAC,KAAK,CAAC,0DAA0D,EAAE,IAAI,CAAC,CAAA;AAC/E,oBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;oBAC1B,OAAO,CAAC,QAAQ,EAAE,CAAA;AACnB,iBAAA;AACD,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;aACd,CAAC,CACH,CAAA;AACH,SAAC,CAAC,CAAA;QAEF,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;KAC1E;AACF;;ACvCD;;AAEG;;;;"}
@@ -16,8 +16,12 @@ class MultiTranslateHttpLoader {
16
16
  else
17
17
  path = `${resource}${lang}.json`;
18
18
  return new HttpClient(this._handler).get(path).pipe(catchError((res) => {
19
- console.error('Something went wrong for the following translation file:', path);
20
- console.error(res.message);
19
+ if (!resource.optional) {
20
+ console.group();
21
+ console.error('Something went wrong for the following translation file:', path);
22
+ console.error(res.message);
23
+ console.groupEnd();
24
+ }
21
25
  return of({});
22
26
  }));
23
27
  });
@@ -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'\r\nimport { TranslateLoader } from '@ngx-translate/core'\r\nimport { deepmerge } from 'deepmerge-ts'\r\nimport { forkJoin, Observable, of } from 'rxjs'\r\nimport { catchError, map } from 'rxjs/operators'\r\n\r\nexport interface ITranslationResource {\r\n prefix: string\r\n suffix?: string\r\n}\r\n\r\nexport class MultiTranslateHttpLoader implements TranslateLoader {\r\n constructor(\r\n private _handler: HttpBackend,\r\n private _resourcesPrefix: string[] | ITranslationResource[],\r\n ) {}\r\n\r\n public getTranslation(lang: string): Observable<any> {\r\n const requests: Observable<Object | {}>[] = this._resourcesPrefix.map((resource) => {\r\n let path: string\r\n if (resource.prefix) path = `${resource.prefix}${lang}${resource.suffix || '.json'}`\r\n else path = `${resource}${lang}.json`\r\n\r\n return new HttpClient(this._handler).get(path).pipe(\r\n catchError((res) => {\r\n console.error('Something went wrong for the following translation file:', path)\r\n console.error(res.message)\r\n return of({})\r\n }),\r\n )\r\n })\r\n\r\n return forkJoin(requests).pipe(map((response) => deepmerge(...response)))\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAWa,wBAAwB,CAAA;IACnC,WACU,CAAA,QAAqB,EACrB,gBAAmD,EAAA;QADnD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;QACrB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAmC;KACzD;AAEG,IAAA,cAAc,CAAC,IAAY,EAAA;QAChC,MAAM,QAAQ,GAA8B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;AACjF,YAAA,IAAI,IAAY,CAAA;YAChB,IAAI,QAAQ,CAAC,MAAM;AAAE,gBAAA,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAG,EAAA,IAAI,CAAG,EAAA,QAAQ,CAAC,MAAM,IAAI,OAAO,EAAE,CAAA;;AAC/E,gBAAA,IAAI,GAAG,CAAG,EAAA,QAAQ,CAAG,EAAA,IAAI,OAAO,CAAA;YAErC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CACjD,UAAU,CAAC,CAAC,GAAG,KAAI;AACjB,gBAAA,OAAO,CAAC,KAAK,CAAC,0DAA0D,EAAE,IAAI,CAAC,CAAA;AAC/E,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAC1B,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;aACd,CAAC,CACH,CAAA;AACH,SAAC,CAAC,CAAA;QAEF,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;KAC1E;AACF;;AClCD;;AAEG;;;;"}
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'\r\nimport { TranslateLoader } from '@ngx-translate/core'\r\nimport { deepmerge } from 'deepmerge-ts'\r\nimport { forkJoin, Observable, of } from 'rxjs'\r\nimport { catchError, map } from 'rxjs/operators'\r\n\r\nexport interface ITranslationResource {\r\n prefix: string\r\n suffix?: string\r\n optional?: boolean\r\n}\r\n\r\nexport class MultiTranslateHttpLoader implements TranslateLoader {\r\n constructor(\r\n private _handler: HttpBackend,\r\n private _resourcesPrefix: string[] | ITranslationResource[],\r\n ) {}\r\n\r\n public getTranslation(lang: string): Observable<any> {\r\n const requests: Observable<Object | {}>[] = this._resourcesPrefix.map((resource) => {\r\n let path: string\r\n if (resource.prefix) path = `${resource.prefix}${lang}${resource.suffix || '.json'}`\r\n else path = `${resource}${lang}.json`\r\n\r\n return new HttpClient(this._handler).get(path).pipe(\r\n catchError((res) => {\r\n if (!resource.optional) {\r\n console.group()\r\n console.error('Something went wrong for the following translation file:', path)\r\n console.error(res.message)\r\n console.groupEnd()\r\n }\r\n return of({})\r\n }),\r\n )\r\n })\r\n\r\n return forkJoin(requests).pipe(map((response) => deepmerge(...response)))\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAYa,wBAAwB,CAAA;IACnC,WACU,CAAA,QAAqB,EACrB,gBAAmD,EAAA;QADnD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;QACrB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAmC;KACzD;AAEG,IAAA,cAAc,CAAC,IAAY,EAAA;QAChC,MAAM,QAAQ,GAA8B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;AACjF,YAAA,IAAI,IAAY,CAAA;YAChB,IAAI,QAAQ,CAAC,MAAM;AAAE,gBAAA,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAG,EAAA,IAAI,CAAG,EAAA,QAAQ,CAAC,MAAM,IAAI,OAAO,EAAE,CAAA;;AAC/E,gBAAA,IAAI,GAAG,CAAG,EAAA,QAAQ,CAAG,EAAA,IAAI,OAAO,CAAA;YAErC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CACjD,UAAU,CAAC,CAAC,GAAG,KAAI;AACjB,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;oBACtB,OAAO,CAAC,KAAK,EAAE,CAAA;AACf,oBAAA,OAAO,CAAC,KAAK,CAAC,0DAA0D,EAAE,IAAI,CAAC,CAAA;AAC/E,oBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;oBAC1B,OAAO,CAAC,QAAQ,EAAE,CAAA;AACnB,iBAAA;AACD,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;aACd,CAAC,CACH,CAAA;AACH,SAAC,CAAC,CAAA;QAEF,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;KAC1E;AACF;;ACvCD;;AAEG;;;;"}
@@ -4,6 +4,7 @@ import { Observable } from 'rxjs';
4
4
  export interface ITranslationResource {
5
5
  prefix: string;
6
6
  suffix?: string;
7
+ optional?: boolean;
7
8
  }
8
9
  export declare class MultiTranslateHttpLoader implements TranslateLoader {
9
10
  private _handler;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-translate-multi-http-loader",
3
- "version": "9.2.1",
3
+ "version": "9.3.0",
4
4
  "license": "MIT",
5
5
  "author": "Raphael Balet",
6
6
  "maintainers": [