From cc9550aca23e64cde6c72edf9fa9a8d67e977a7c Mon Sep 17 00:00:00 2001 From: erdemcaygor Date: Mon, 12 May 2025 18:32:12 +0300 Subject: [PATCH] refactoring --- .../apps/dev-app/src/app/app.config.server.ts | 31 ++++- npm/ng-packs/apps/dev-app/src/server.ts | 6 +- .../core/locale/src/utils/register-locale.ts | 113 ++++++++++-------- .../src/lib/handlers/lazy-style.handler.ts | 8 +- 4 files changed, 100 insertions(+), 58 deletions(-) diff --git a/npm/ng-packs/apps/dev-app/src/app/app.config.server.ts b/npm/ng-packs/apps/dev-app/src/app/app.config.server.ts index b4d57c9423..feb21ffae0 100644 --- a/npm/ng-packs/apps/dev-app/src/app/app.config.server.ts +++ b/npm/ng-packs/apps/dev-app/src/app/app.config.server.ts @@ -1,11 +1,38 @@ import { mergeApplicationConfig, ApplicationConfig } from '@angular/core'; import { provideServerRendering } from '@angular/platform-server'; import { appConfig } from './app.config'; +import { provideAbpCore, withOptions } from '@abp/ng.core'; +import { environment } from '../environments/environment'; +import { registerLocale, safeRegisterLocale } from '@abp/ng.core/locale'; +import { provideAbpOAuth } from '@abp/ng.oauth'; +import { provideAbpThemeShared } from '@abp/ng.theme.shared'; +import { provideSettingManagementConfig } from '@abp/ng.setting-management/config'; +import { provideAccountConfig } from '@abp/ng.account/config'; +import { provideIdentityConfig } from '@abp/ng.identity/config'; +import { provideTenantManagementConfig } from '@abp/ng.tenant-management/config'; +import { provideFeatureManagementConfig } from '@abp/ng.feature-management'; +import { APP_ROUTE_PROVIDER } from './route.provider'; const serverConfig: ApplicationConfig = { providers: [ - provideServerRendering() - ] + provideAbpCore( + withOptions({ + environment, + registerLocaleFn: safeRegisterLocale(), + sendNullsAsQueryParam: false, + skipGetAppConfiguration: false, + }), + ), + APP_ROUTE_PROVIDER, + provideAbpOAuth(), + provideAbpThemeShared(), + provideSettingManagementConfig(), + provideAccountConfig(), + provideIdentityConfig(), + provideTenantManagementConfig(), + provideFeatureManagementConfig(), + provideServerRendering(), + ], }; export const config = mergeApplicationConfig(appConfig, serverConfig); diff --git a/npm/ng-packs/apps/dev-app/src/server.ts b/npm/ng-packs/apps/dev-app/src/server.ts index a76ced34f0..7f3851faf9 100644 --- a/npm/ng-packs/apps/dev-app/src/server.ts +++ b/npm/ng-packs/apps/dev-app/src/server.ts @@ -1,6 +1,8 @@ -process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; +import { environment } from './environments/environment'; +if (environment.production === false) { + process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; +} import 'zone.js/node'; - import { APP_BASE_HREF } from '@angular/common'; import { CommonEngine } from '@angular/ssr/node'; import express from 'express'; diff --git a/npm/ng-packs/packages/core/locale/src/utils/register-locale.ts b/npm/ng-packs/packages/core/locale/src/utils/register-locale.ts index 1f061b5ada..e6accdeb8c 100644 --- a/npm/ng-packs/packages/core/locale/src/utils/register-locale.ts +++ b/npm/ng-packs/packages/core/locale/src/utils/register-locale.ts @@ -1,5 +1,6 @@ import { differentLocales } from '@abp/ng.core'; -import { isDevMode } from '@angular/core'; +import { inject, isDevMode, PLATFORM_ID } from '@angular/core'; +import { isPlatformBrowser } from '@angular/common'; export interface LocaleErrorHandlerData { resolve: any; @@ -15,72 +16,70 @@ export interface RegisterLocaleData { errorHandlerFn?: (data: LocaleErrorHandlerData) => any; } - function loadLocale(locale: string) { // hard coded list works with esbuild. Source https://github.com/angular/angular-cli/issues/26904#issuecomment-1903596563 const list = { - 'ar': () => import('@angular/common/locales/ar'), - 'cs': () => import('@angular/common/locales/cs'), - 'en': () => import('@angular/common/locales/en'), - 'en-GB': () => import('@angular/common/locales/en-GB'), - 'es': () => import('@angular/common/locales/es'), - 'de': () => import('@angular/common/locales/de'), - 'fi': () => import('@angular/common/locales/fi'), - 'fr': () => import('@angular/common/locales/fr'), - 'hi': () => import('@angular/common/locales/hi'), - 'hu': () => import('@angular/common/locales/hu'), - 'is': () => import('@angular/common/locales/is'), - 'it': () => import('@angular/common/locales/it'), - 'pt': () => import('@angular/common/locales/pt'), - 'tr': () => import('@angular/common/locales/tr'), - 'ru': () => import('@angular/common/locales/ru'), - 'ro': () => import('@angular/common/locales/ro'), - 'sk': () => import('@angular/common/locales/sk'), - 'sl': () => import('@angular/common/locales/sl'), - 'zh-Hans': () => import('@angular/common/locales/zh-Hans'), - 'zh-Hant': () => import('@angular/common/locales/zh-Hant') - } + ar: () => import('@angular/common/locales/ar'), + cs: () => import('@angular/common/locales/cs'), + en: () => import('@angular/common/locales/en'), + 'en-GB': () => import('@angular/common/locales/en-GB'), + es: () => import('@angular/common/locales/es'), + de: () => import('@angular/common/locales/de'), + fi: () => import('@angular/common/locales/fi'), + fr: () => import('@angular/common/locales/fr'), + hi: () => import('@angular/common/locales/hi'), + hu: () => import('@angular/common/locales/hu'), + is: () => import('@angular/common/locales/is'), + it: () => import('@angular/common/locales/it'), + pt: () => import('@angular/common/locales/pt'), + tr: () => import('@angular/common/locales/tr'), + ru: () => import('@angular/common/locales/ru'), + ro: () => import('@angular/common/locales/ro'), + sk: () => import('@angular/common/locales/sk'), + sl: () => import('@angular/common/locales/sl'), + 'zh-Hans': () => import('@angular/common/locales/zh-Hans'), + 'zh-Hant': () => import('@angular/common/locales/zh-Hant'), + }; return list[locale](); } export function registerLocaleForEsBuild( { - cultureNameLocaleFileMap = {}, - errorHandlerFn = defaultLocalErrorHandlerFn, + cultureNameLocaleFileMap = {}, + errorHandlerFn = defaultLocalErrorHandlerFn, } = {} as RegisterLocaleData, ) { return (locale: string): Promise => { - localeMap = { ...differentLocales, ...cultureNameLocaleFileMap }; - const l = localeMap[locale] || locale; - const localeSupportList = "ar|cs|en|en-GB|es|de|fi|fr|hi|hu|is|it|pt|tr|ru|ro|sk|sl|zh-Hans|zh-Hant".split("|"); + localeMap = { ...differentLocales, ...cultureNameLocaleFileMap }; + const l = localeMap[locale] || locale; + const localeSupportList = + 'ar|cs|en|en-GB|es|de|fi|fr|hi|hu|is|it|pt|tr|ru|ro|sk|sl|zh-Hans|zh-Hant'.split('|'); - if (localeSupportList.indexOf(l) == -1) { - return; - } - return new Promise((resolve, reject) => { - return loadLocale(l) - .then(val => { - let module = val; - while (module.default) { - module = module.default; - } - resolve({ default: module }); - }) - .catch(error => { - errorHandlerFn({ - resolve, - reject, - error, - locale, - }); - }); - }); + if (localeSupportList.indexOf(l) == -1) { + return; + } + return new Promise((resolve, reject) => { + return loadLocale(l) + .then(val => { + let module = val; + while (module.default) { + module = module.default; + } + resolve({ default: module }); + }) + .catch(error => { + errorHandlerFn({ + resolve, + reject, + error, + locale, + }); + }); + }); }; } - - export function registerLocale( { cultureNameLocaleFileMap = {}, @@ -118,6 +117,18 @@ export function registerLocale( }; } +export function safeRegisterLocale(): (locale: string) => Promise { + return (locale: string) => { + const platformId = inject(PLATFORM_ID); + if (!isPlatformBrowser(platformId)) { + return Promise.resolve({ default: null }); + } + + // sadece tarayıcıda gerçek locale yükle + return registerLocale()(locale); + }; +} + const extraLocales = {} as { [key: string]: any }; export function storeLocaleData(data: any, localeId: string) { extraLocales[localeId] = data; diff --git a/npm/ng-packs/packages/theme-basic/src/lib/handlers/lazy-style.handler.ts b/npm/ng-packs/packages/theme-basic/src/lib/handlers/lazy-style.handler.ts index 02d9f69817..d302b87f58 100644 --- a/npm/ng-packs/packages/theme-basic/src/lib/handlers/lazy-style.handler.ts +++ b/npm/ng-packs/packages/theme-basic/src/lib/handlers/lazy-style.handler.ts @@ -1,11 +1,13 @@ import { LazyLoadService, LOADING_STRATEGY } from '@abp/ng.core'; import { DocumentDirHandlerService, LocaleDirection } from '@abp/ng.theme.shared'; -import { Injectable, Injector } from '@angular/core'; +import { inject, Injectable, Injector } from '@angular/core'; import { LAZY_STYLES } from '../tokens/lazy-styles.token'; +import { DOCUMENT } from '@angular/common'; export const BOOTSTRAP = 'bootstrap-{{dir}}.min.css'; @Injectable() export class LazyStyleHandler { + private document = inject(DOCUMENT); private lazyLoad!: LazyLoadService; private styles!: string[]; private _dir: LocaleDirection = 'ltr'; @@ -32,7 +34,7 @@ export class LazyStyleHandler { private getHrefFromLink(link: HTMLLinkElement | null | undefined): string { if (!link) return ''; - const a = document.createElement('a'); + const a = this.document.createElement('a'); a.href = link.href; return a.pathname.replace(/^\//, ''); } @@ -40,7 +42,7 @@ export class LazyStyleHandler { private getLoadedBootstrap(): LoadedStyle { const href = createLazyStyleHref(BOOTSTRAP, this.dir); const selector = `[href*="${href.replace(/\.css$/, '')}"]`; - const link = document.querySelector(selector); + const link = this.document.querySelector(selector); return { href, link }; }