ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
82 lines • 15 kB
JavaScript
import { LOCATION_INITIALIZED } from '@angular/common';
import { Injector } from '@angular/core';
import { MAT_RIPPLE_GLOBAL_OPTIONS } from '@angular/material/core';
import { Router } from '@angular/router';
import { combineLatest } from 'rxjs';
import { AppConfig, O_INPUTS_OPTIONS } from '../config/app-config';
import { appConfigFactory } from '../services/app-config.provider';
import { ComponentStateServiceProvider, ExportDataServiceProvider, OntimizeAuthServiceProvider, OntimizeExportServiceProvider, OntimizeServiceProvider, O_MAT_ERROR_OPTIONS, OntimizeLocalStorageServiceProvider } from '../services/factories';
import { LocalStorageService } from '../services/local-storage.service';
import { NavigationService } from '../services/navigation.service';
import { OntimizeMatIconRegistry } from '../services/ontimize-icon-registry.service';
import { OntimizeServiceResponseAdapter } from '../services/ontimize/ontimize-service-response.adapter';
import { ORemoteConfigurationService } from '../services/remote-config.service';
import { Error403Component } from '../shared/components/error403/o-error-403.component';
import { Codes } from '../util/codes';
import { Util } from '../util/util';
function addPermissionsRouteGuard(injector) {
const route = injector.get(Router);
const exists403 = route.config.find(r => r.path === Codes.FORBIDDEN_ROUTE);
if (!exists403) {
route.config.push({ path: Codes.FORBIDDEN_ROUTE, component: Error403Component });
}
}
export function appInitializerFactory(injector, config, oTranslate) {
return () => new Promise((resolve) => {
const observableArray = [];
const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve(null));
locationInitialized.then(() => {
const storedLang = oTranslate.getStoredLanguage();
const configLang = config['locale'];
const browserLang = oTranslate.getBrowserLang();
let userLang = Util.isDefined(config['defaultLocale']) ? config['defaultLocale'] : 'en';
let defaultLang = Util.isDefined(config['defaultLocale']) ? config['defaultLocale'] : 'en';
if (storedLang) {
userLang = storedLang;
}
else if (configLang) {
userLang = configLang;
defaultLang = configLang;
}
else if (browserLang) {
userLang = browserLang;
defaultLang = browserLang;
}
oTranslate.setDefaultLang(defaultLang);
const locales = new Set(config.applicationLocales || []);
locales.add('en');
locales.add(userLang);
if (!config.applicationLocales) {
config.applicationLocales = [...locales];
}
if (config.uuid == null || config.uuid === '') {
console.error('Your app must have an \'uuid\' property defined on your app.config file. Otherwise, your application will not work correctly.');
alert('Your app must have an \'uuid\' property defined on your app.config file. Otherwise, your application will not work correctly.');
}
injector.get(NavigationService).initialize();
injector.get(OntimizeMatIconRegistry).initialize();
injector.get(LocalStorageService).setBackwardCompatibility();
addPermissionsRouteGuard(injector);
observableArray.push(oTranslate.setAppLang(userLang));
const remoteConfigService = injector.get(ORemoteConfigurationService);
observableArray.push(remoteConfigService.initialize());
combineLatest(observableArray).subscribe(() => {
resolve();
});
});
});
}
export const ONTIMIZE_PROVIDERS = [
{ provide: AppConfig, useFactory: appConfigFactory, deps: [Injector] },
OntimizeServiceProvider,
OntimizeServiceResponseAdapter,
OntimizeAuthServiceProvider,
ComponentStateServiceProvider,
ExportDataServiceProvider,
OntimizeExportServiceProvider,
OntimizeLocalStorageServiceProvider,
{ provide: MAT_RIPPLE_GLOBAL_OPTIONS, useValue: { disabled: true } },
{ provide: O_MAT_ERROR_OPTIONS, useValue: {} },
{ provide: O_INPUTS_OPTIONS, useValue: {} }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29uZmlnL28tcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSx5QkFBeUIsRUFBRSwyQkFBMkIsRUFBRSw2QkFBNkIsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hQLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7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fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0b3IsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfUklQUExFX0dMT0JBTF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBcHBDb25maWcsIE9fSU5QVVRTX09QVElPTlMgfSBmcm9tICcuLi9jb25maWcvYXBwLWNvbmZpZyc7XG5pbXBvcnQgeyBhcHBDb25maWdGYWN0b3J5IH0gZnJvbSAnLi4vc2VydmljZXMvYXBwLWNvbmZpZy5wcm92aWRlcic7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlciwgRXhwb3J0RGF0YVNlcnZpY2VQcm92aWRlciwgT250aW1pemVBdXRoU2VydmljZVByb3ZpZGVyLCBPbnRpbWl6ZUV4cG9ydFNlcnZpY2VQcm92aWRlciwgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIsIE9fTUFUX0VSUk9SX09QVElPTlMsIE9udGltaXplTG9jYWxTdG9yYWdlU2VydmljZVByb3ZpZGVyIH0gZnJvbSAnLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVNYXRJY29uUmVnaXN0cnkgfSBmcm9tICcuLi9zZXJ2aWNlcy9vbnRpbWl6ZS1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyIH0gZnJvbSAnLi4vc2VydmljZXMvb250aW1pemUvb250aW1pemUtc2VydmljZS1yZXNwb25zZS5hZGFwdGVyJztcbmltcG9ydCB7IE9SZW1vdGVDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlbW90ZS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBPVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS9vLXRyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9yNDAzQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL2NvbXBvbmVudHMvZXJyb3I0MDMvby1lcnJvci00MDMuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uL3R5cGVzL2NvbmZpZy50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcblxuZnVuY3Rpb24gYWRkUGVybWlzc2lvbnNSb3V0ZUd1YXJkKGluamVjdG9yOiBJbmplY3Rvcikge1xuICBjb25zdCByb3V0ZSA9IGluamVjdG9yLmdldChSb3V0ZXIpO1xuICBjb25zdCBleGlzdHM0MDMgPSByb3V0ZS5jb25maWcuZmluZChyID0+IHIucGF0aCA9PT0gQ29kZXMuRk9SQklEREVOX1JPVVRFKTtcbiAgaWYgKCFleGlzdHM0MDMpIHtcbiAgICByb3V0ZS5jb25maWcucHVzaCh7IHBhdGg6IENvZGVzLkZPUkJJRERFTl9ST1VURSwgY29tcG9uZW50OiBFcnJvcjQwM0NvbXBvbmVudCB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwSW5pdGlhbGl6ZXJGYWN0b3J5KGluamVjdG9yOiBJbmplY3RvciwgY29uZmlnOiBDb25maWcsIG9UcmFuc2xhdGU6IE9UcmFuc2xhdGVTZXJ2aWNlKSB7XG4gIHJldHVybiAoKSA9PiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlOiBhbnkpID0+IHtcbiAgICBjb25zdCBvYnNlcnZhYmxlQXJyYXkgPSBbXTtcbiAgICBjb25zdCBsb2NhdGlvbkluaXRpYWxpemVkID0gaW5qZWN0b3IuZ2V0KExPQ0FUSU9OX0lOSVRJQUxJWkVELCBQcm9taXNlLnJlc29sdmUobnVsbCkpO1xuICAgIGxvY2F0aW9uSW5pdGlhbGl6ZWQudGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBzdG9yZWRMYW5nID0gb1RyYW5zbGF0ZS5nZXRTdG9yZWRMYW5ndWFnZSgpO1xuICAgICAgY29uc3QgY29uZmlnTGFuZyA9IGNvbmZpZ1snbG9jYWxlJ107XG4gICAgICBjb25zdCBicm93c2VyTGFuZyA9IG9UcmFuc2xhdGUuZ2V0QnJvd3NlckxhbmcoKTtcbiAgICAgIGxldCB1c2VyTGFuZyA9IFV0aWwuaXNEZWZpbmVkKGNvbmZpZ1snZGVmYXVsdExvY2FsZSddKSA/IGNvbmZpZ1snZGVmYXVsdExvY2FsZSddIDogJ2VuJztcbiAgICAgIGxldCBkZWZhdWx0TGFuZyA9IFV0aWwuaXNEZWZpbmVkKGNvbmZpZ1snZGVmYXVsdExvY2FsZSddKSA/IGNvbmZpZ1snZGVmYXVsdExvY2FsZSddIDogJ2VuJztcbiAgICAgIGlmIChzdG9yZWRMYW5nKSB7XG4gICAgICAgIHVzZXJMYW5nID0gc3RvcmVkTGFuZztcbiAgICAgIH0gZWxzZSBpZiAoY29uZmlnTGFuZykge1xuICAgICAgICB1c2VyTGFuZyA9IGNvbmZpZ0xhbmc7XG4gICAgICAgIGRlZmF1bHRMYW5nID0gY29uZmlnTGFuZztcbiAgICAgIH0gZWxzZSBpZiAoYnJvd3NlckxhbmcpIHtcbiAgICAgICAgdXNlckxhbmcgPSBicm93c2VyTGFuZztcbiAgICAgICAgZGVmYXVsdExhbmcgPSBicm93c2VyTGFuZztcbiAgICAgIH1cbiAgICAgIG9UcmFuc2xhdGUuc2V0RGVmYXVsdExhbmcoZGVmYXVsdExhbmcpO1xuXG4gICAgICBjb25zdCBsb2NhbGVzID0gbmV3IFNldChjb25maWcuYXBwbGljYXRpb25Mb2NhbGVzIHx8IFtdKTtcbiAgICAgIGxvY2FsZXMuYWRkKCdlbicpO1xuICAgICAgbG9jYWxlcy5hZGQodXNlckxhbmcpO1xuXG4gICAgICAvLyBpbml0aWFsaXplIGF2YWlsYWJsZSBsb2NhbGVzIGFycmF5IGlmIG5lZWRlZFxuICAgICAgaWYgKCFjb25maWcuYXBwbGljYXRpb25Mb2NhbGVzKSB7XG4gICAgICAgIGNvbmZpZy5hcHBsaWNhdGlvbkxvY2FsZXMgPSBbLi4ubG9jYWxlc107XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcudXVpZCA9PSBudWxsIHx8IGNvbmZpZy51dWlkID09PSAnJykge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdZb3VyIGFwcCBtdXN0IGhhdmUgYW4gXFwndXVpZFxcJyBwcm9wZXJ0eSBkZWZpbmVkIG9uIHlvdXIgYXBwLmNvbmZpZyBmaWxlLiBPdGhlcndpc2UsIHlvdXIgYXBwbGljYXRpb24gd2lsbCBub3Qgd29yayBjb3JyZWN0bHkuJyk7XG4gICAgICAgIGFsZXJ0KCdZb3VyIGFwcCBtdXN0IGhhdmUgYW4gXFwndXVpZFxcJyBwcm9wZXJ0eSBkZWZpbmVkIG9uIHlvdXIgYXBwLmNvbmZpZyBmaWxlLiBPdGhlcndpc2UsIHlvdXIgYXBwbGljYXRpb24gd2lsbCBub3Qgd29yayBjb3JyZWN0bHkuJyk7XG4gICAgICB9XG4gICAgICBpbmplY3Rvci5nZXQoTmF2aWdhdGlvblNlcnZpY2UpLmluaXRpYWxpemUoKTtcbiAgICAgIGluamVjdG9yLmdldChPbnRpbWl6ZU1hdEljb25SZWdpc3RyeSkuaW5pdGlhbGl6ZSgpO1xuICAgICAgaW5qZWN0b3IuZ2V0KExvY2FsU3RvcmFnZVNlcnZpY2UpLnNldEJhY2t3YXJkQ29tcGF0aWJpbGl0eSgpO1xuICAgICAgYWRkUGVybWlzc2lvbnNSb3V0ZUd1YXJkKGluamVjdG9yKTtcbiAgICAgIG9ic2VydmFibGVBcnJheS5wdXNoKG9UcmFuc2xhdGUuc2V0QXBwTGFuZyh1c2VyTGFuZykpO1xuICAgICAgY29uc3QgcmVtb3RlQ29uZmlnU2VydmljZSA9IGluamVjdG9yLmdldChPUmVtb3RlQ29uZmlndXJhdGlvblNlcnZpY2UpO1xuICAgICAgb2JzZXJ2YWJsZUFycmF5LnB1c2gocmVtb3RlQ29uZmlnU2VydmljZS5pbml0aWFsaXplKCkpO1xuICAgICAgY29tYmluZUxhdGVzdChvYnNlcnZhYmxlQXJyYXkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IE9OVElNSVpFX1BST1ZJREVSUzogUHJvdmlkZXJbXSA9IFtcbiAgeyBwcm92aWRlOiBBcHBDb25maWcsIHVzZUZhY3Rvcnk6IGFwcENvbmZpZ0ZhY3RvcnksIGRlcHM6IFtJbmplY3Rvcl0gfSxcbiAgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIsXG4gIE9udGltaXplU2VydmljZVJlc3BvbnNlQWRhcHRlcixcbiAgT250aW1pemVBdXRoU2VydmljZVByb3ZpZGVyLFxuICBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlcixcbiAgRXhwb3J0RGF0YVNlcnZpY2VQcm92aWRlcixcbiAgT250aW1pemVFeHBvcnRTZXJ2aWNlUHJvdmlkZXIsXG4gIE9udGltaXplTG9jYWxTdG9yYWdlU2VydmljZVByb3ZpZGVyLFxuICAvLyBkaXNhYmxlZCBnbG9iYWwgcmlwcGxlXG4gIHsgcHJvdmlkZTogTUFUX1JJUFBMRV9HTE9CQUxfT1BUSU9OUywgdXNlVmFsdWU6IHsgZGlzYWJsZWQ6IHRydWUgfSB9LFxuICB7IHByb3ZpZGU6IE9fTUFUX0VSUk9SX09QVElPTlMsIHVzZVZhbHVlOiB7fSB9LFxuICB7IHByb3ZpZGU6IE9fSU5QVVRTX09QVElPTlMsIHVzZVZhbHVlOiB7fSB9XG5dO1xuIl19