@igo2/core
Version:
85 lines • 12.2 kB
JavaScript
import { HttpBackend } from '@angular/common/http';
import { APP_INITIALIZER, importProvidersFrom, makeEnvironmentProviders } from '@angular/core';
import { ConfigService } from '@igo2/core/config';
import { MissingTranslationHandler, TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { first } from 'rxjs';
import { catchError, timeout } from 'rxjs/operators';
import { LanguageLoader, LanguageLoaderWithAsyncConfig } from './language.loader';
import { LanguageService } from './language.service';
import { IgoMissingTranslationHandler } from './missing-translation.guard';
// 5 seconds
const TIMEOUT_DURATION = 5000;
export var TranslationFeatureKind;
(function (TranslationFeatureKind) {
TranslationFeatureKind[TranslationFeatureKind["Translation"] = 0] = "Translation";
})(TranslationFeatureKind || (TranslationFeatureKind = {}));
/**
* Make sure you only call this method in the root module of your application, most of the time called AppModule.
*/
export function provideTranslation(featureConfig) {
return makeEnvironmentProviders([
...featureConfig.providers,
{
provide: APP_INITIALIZER,
useFactory: (languageService) => () => {
return languageService.translate.currentLoader.isLoaded$?.pipe(timeout(TIMEOUT_DURATION), first((isLoaded) => isLoaded === true), catchError((error) => {
error.message += ` - Request timed out for language loader after: ${TIMEOUT_DURATION}`;
throw error;
}));
},
deps: [LanguageService],
multi: true
}
]);
}
export function withStaticConfig(options, defaultLanguage) {
const loader = {
provide: TranslateLoader,
useFactory: (http) => languageLoaderWithStatic(http, options),
deps: [HttpBackend]
};
return {
kind: TranslationFeatureKind.Translation,
providers: [
importProvidersFrom(TranslateModule.forRoot(setTranslationConfig(loader, defaultLanguage)))
]
};
}
export function withAsyncConfig(defaultLanguage) {
const loader = {
provide: TranslateLoader,
useFactory: languageLoaderWithAsync,
deps: [HttpBackend, ConfigService]
};
return {
kind: TranslationFeatureKind.Translation,
providers: [
importProvidersFrom(TranslateModule.forRoot(setTranslationConfig(loader, defaultLanguage)))
]
};
}
export const setTranslationConfig = (loader, defaultLanguage) => ({
defaultLanguage: defaultLanguage,
loader: loader ?? DEFAULT_LANGUAGE_LOADER,
missingTranslationHandler: {
provide: MissingTranslationHandler,
useClass: IgoMissingTranslationHandler
}
});
function languageLoaderWithStatic(http, options) {
return new LanguageLoader(http, options);
}
export const LANGUAGE_LOADER = {
provide: TranslateLoader,
useFactory: languageLoaderWithAsync,
deps: [HttpBackend, ConfigService]
};
function languageLoaderWithAsync(http, config) {
return new LanguageLoaderWithAsyncConfig(http, config, undefined, undefined);
}
export const DEFAULT_LANGUAGE_LOADER = {
provide: TranslateLoader,
useFactory: languageLoaderWithAsync,
deps: [HttpBackend, ConfigService]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2xhbmd1YWdlL3NyYy9zaGFyZWQvbGFuZ3VhZ2UucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFDTCxlQUFlLEVBR2YsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN6QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixlQUFlLEVBQ2YsZUFBZSxFQUVoQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLDZCQUE2QixFQUM5QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRSxZQUFZO0FBQ1osTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFPOUIsTUFBTSxDQUFOLElBQVksc0JBRVg7QUFGRCxXQUFZLHNCQUFzQjtJQUNoQyxpRkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFGVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBRWpDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLGFBQXFFO0lBRXJFLE9BQU8sd0JBQXdCLENBQUM7UUFDOUIsR0FBRyxhQUFhLENBQUMsU0FBUztRQUMxQjtZQUNFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFVBQVUs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bnRlbnQiOlsiaW1wb3J0IHsgSHR0cEJhY2tlbmQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBBUFBfSU5JVElBTElaRVIsXG4gIEVudmlyb25tZW50UHJvdmlkZXJzLFxuICBQcm92aWRlcixcbiAgaW1wb3J0UHJvdmlkZXJzRnJvbSxcbiAgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuXG5pbXBvcnQge1xuICBNaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyLFxuICBUcmFuc2xhdGVMb2FkZXIsXG4gIFRyYW5zbGF0ZU1vZHVsZSxcbiAgVHJhbnNsYXRlTW9kdWxlQ29uZmlnXG59IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRpbWVvdXQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExhbmd1YWdlTG9hZGVyQmFzZSwgTGFuZ3VhZ2VPcHRpb25zIH0gZnJvbSAnLi9sYW5ndWFnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgTGFuZ3VhZ2VMb2FkZXIsXG4gIExhbmd1YWdlTG9hZGVyV2l0aEFzeW5jQ29uZmlnXG59IGZyb20gJy4vbGFuZ3VhZ2UubG9hZGVyJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJy4vbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBJZ29NaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyIH0gZnJvbSAnLi9taXNzaW5nLXRyYW5zbGF0aW9uLmd1YXJkJztcblxuLy8gNSBzZWNvbmRzXG5jb25zdCBUSU1FT1VUX0RVUkFUSU9OID0gNTAwMDtcblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xhdGlvbkZlYXR1cmU8S2luZFQgZXh0ZW5kcyBUcmFuc2xhdGlvbkZlYXR1cmVLaW5kPiB7XG4gIGtpbmQ6IEtpbmRUO1xuICBwcm92aWRlcnM6IChQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzKVtdO1xufVxuXG5leHBvcnQgZW51bSBUcmFuc2xhdGlvbkZlYXR1cmVLaW5kIHtcbiAgVHJhbnNsYXRpb24gPSAwXG59XG5cbi8qKlxuICogTWFrZSBzdXJlIHlvdSBvbmx5IGNhbGwgdGhpcyBtZXRob2QgaW4gdGhlIHJvb3QgbW9kdWxlIG9mIHlvdXIgYXBwbGljYXRpb24sIG1vc3Qgb2YgdGhlIHRpbWUgY2FsbGVkIEFwcE1vZHVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVUcmFuc2xhdGlvbihcbiAgZmVhdHVyZUNvbmZpZzogVHJhbnNsYXRpb25GZWF0dXJlPFRyYW5zbGF0aW9uRmVhdHVyZUtpbmQuVHJhbnNsYXRpb24+XG4pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIC4uLmZlYXR1cmVDb25maWcucHJvdmlkZXJzLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgIHVzZUZhY3Rvcnk6IChsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkgPT4gKCkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuY3VycmVudExvYWRlciBhcyBMYW5ndWFnZUxvYWRlckJhc2VcbiAgICAgICAgKS5pc0xvYWRlZCQ/LnBpcGUoXG4gICAgICAgICAgdGltZW91dChUSU1FT1VUX0RVUkFUSU9OKSxcbiAgICAgICAgICBmaXJzdCgoaXNMb2FkZWQpID0+IGlzTG9hZGVkID09PSB0cnVlKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSArPSBgIC0gUmVxdWVzdCB0aW1lZCBvdXQgZm9yIGxhbmd1YWdlIGxvYWRlciBhZnRlcjogJHtUSU1FT1VUX0RVUkFUSU9OfWA7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGRlcHM6IFtMYW5ndWFnZVNlcnZpY2VdLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFN0YXRpY0NvbmZpZyhcbiAgb3B0aW9uczogTGFuZ3VhZ2VPcHRpb25zLFxuICBkZWZhdWx0TGFuZ3VhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IFRyYW5zbGF0aW9uRmVhdHVyZTxUcmFuc2xhdGlvbkZlYXR1cmVLaW5kLlRyYW5zbGF0aW9uPiB7XG4gIGNvbnN0IGxvYWRlcjogUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogVHJhbnNsYXRlTG9hZGVyLFxuICAgIHVzZUZhY3Rvcnk6IChodHRwOiBIdHRwQmFja2VuZCkgPT4gbGFuZ3VhZ2VMb2FkZXJXaXRoU3RhdGljKGh0dHAsIG9wdGlvbnMpLFxuICAgIGRlcHM6IFtIdHRwQmFja2VuZF1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBUcmFuc2xhdGlvbkZlYXR1cmVLaW5kLlRyYW5zbGF0aW9uLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgaW1wb3J0UHJvdmlkZXJzRnJvbShcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3Qoc2V0VHJhbnNsYXRpb25Db25maWcobG9hZGVyLCBkZWZhdWx0TGFuZ3VhZ2UpKVxuICAgICAgKVxuICAgIF1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBc3luY0NvbmZpZyhcbiAgZGVmYXVsdExhbmd1YWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBUcmFuc2xhdGlvbkZlYXR1cmU8VHJhbnNsYXRpb25GZWF0dXJlS2luZC5UcmFuc2xhdGlvbj4ge1xuICBjb25zdCBsb2FkZXI6IFByb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcbiAgICB1c2VGYWN0b3J5OiBsYW5ndWFnZUxvYWRlcldpdGhBc3luYyxcbiAgICBkZXBzOiBbSHR0cEJhY2tlbmQsIENvbmZpZ1NlcnZpY2VdXG4gIH07XG4gIHJldHVybiB7XG4gICAga2luZDogVHJhbnNsYXRpb25GZWF0dXJlS2luZC5UcmFuc2xhdGlvbixcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgIGltcG9ydFByb3ZpZGVyc0Zyb20oXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JSb290KHNldFRyYW5zbGF0aW9uQ29uZmlnKGxvYWRlciwgZGVmYXVsdExhbmd1YWdlKSlcbiAgICAgIClcbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBzZXRUcmFuc2xhdGlvbkNvbmZpZyA9IChcbiAgbG9hZGVyPzogUHJvdmlkZXIsXG4gIGRlZmF1bHRMYW5ndWFnZT86IHN0cmluZ1xuKTogVHJhbnNsYXRlTW9kdWxlQ29uZmlnID0+ICh7XG4gIGRlZmF1bHRMYW5ndWFnZTogZGVmYXVsdExhbmd1YWdlLFxuICBsb2FkZXI6IGxvYWRlciA/PyBERUZBVUxUX0xBTkdVQUdFX0xPQURFUixcbiAgbWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlcjoge1xuICAgIHByb3ZpZGU6IE1pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXIsXG4gICAgdXNlQ2xhc3M6IElnb01pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXJcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGxhbmd1YWdlTG9hZGVyV2l0aFN0YXRpYyhcbiAgaHR0cDogSHR0cEJhY2tlbmQsXG4gIG9wdGlvbnM/OiBMYW5ndWFnZU9wdGlvbnNcbikge1xuICByZXR1cm4gbmV3IExhbmd1YWdlTG9hZGVyKGh0dHAsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgY29uc3QgTEFOR1VBR0VfTE9BREVSOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogVHJhbnNsYXRlTG9hZGVyLFxuICB1c2VGYWN0b3J5OiBsYW5ndWFnZUxvYWRlcldpdGhBc3luYyxcbiAgZGVwczogW0h0dHBCYWNrZW5kLCBDb25maWdTZXJ2aWNlXVxufTtcblxuZnVuY3Rpb24gbGFuZ3VhZ2VMb2FkZXJXaXRoQXN5bmMoaHR0cDogSHR0cEJhY2tlbmQsIGNvbmZpZz86IENvbmZpZ1NlcnZpY2UpIHtcbiAgcmV0dXJuIG5ldyBMYW5ndWFnZUxvYWRlcldpdGhBc3luY0NvbmZpZyhodHRwLCBjb25maWcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFOR1VBR0VfTE9BREVSOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogVHJhbnNsYXRlTG9hZGVyLFxuICB1c2VGYWN0b3J5OiBsYW5ndWFnZUxvYWRlcldpdGhBc3luYyxcbiAgZGVwczogW0h0dHBCYWNrZW5kLCBDb25maWdTZXJ2aWNlXVxufTtcbiJdfQ==