@acorex/core 19.7.0-next.1 → 19.7.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/fesm2022/acorex-core-format.mjs +1 -1
- package/fesm2022/acorex-core-storage.mjs +1 -1
- package/fesm2022/acorex-core-translation.mjs +18 -17
- package/fesm2022/acorex-core-translation.mjs.map +1 -1
- package/fesm2022/acorex-core-utils.mjs +1 -1
- package/fesm2022/acorex-core-validation.mjs +1 -1
- package/package.json +1 -1
- package/translation/lib/translation.module.d.ts +1 -1
- package/translation/lib/translator.directive.d.ts +1 -1
- package/translation/lib/translator.pipe.d.ts +1 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { Injector, Injectable, inject, Pipe,
|
2
|
+
import { Injector, Injectable, inject, Pipe, Inject, NgModule } from '@angular/core';
|
3
3
|
import { AXEventService } from '@acorex/core/events';
|
4
4
|
import { Subject, filter, startWith, switchMap, of } from 'rxjs';
|
5
5
|
import { defaults, padStart, isInteger, get } from 'lodash-es';
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { isPlatformBrowser, DOCUMENT } from '@angular/common';
|
2
2
|
import * as i0 from '@angular/core';
|
3
|
-
import { PLATFORM_ID,
|
3
|
+
import { PLATFORM_ID, Inject, Injectable, InjectionToken } from '@angular/core';
|
4
4
|
import { isBrowser } from '@acorex/core/platform';
|
5
5
|
import CryptoJS from 'crypto-es';
|
6
6
|
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, inject, Injectable, Directive, Pipe, provideAppInitializer, NgModule } from '@angular/core';
|
3
3
|
import { AXEventTypes, AXEventService } from '@acorex/core/events';
|
4
4
|
import { set, get } from 'lodash-es';
|
5
|
-
import { of, BehaviorSubject, forkJoin, tap, catchError, finalize, shareReplay,
|
5
|
+
import { of, BehaviorSubject, forkJoin, tap, catchError, finalize, shareReplay, startWith, map, distinctUntilChanged, switchMap, firstValueFrom } from 'rxjs';
|
6
6
|
|
7
7
|
const AX_TRANSLATION_CONFIG = new InjectionToken('AX_TRANSLATION_CONFIG', {
|
8
8
|
providedIn: 'root',
|
@@ -119,8 +119,10 @@ class AXTranslationService {
|
|
119
119
|
}
|
120
120
|
translateKey(key, lang, scope, params) {
|
121
121
|
// Trigger async preloading without blocking execution
|
122
|
-
this.loadLanguagesAndScopes([lang], [scope]).subscribe({
|
123
|
-
error: (err) =>
|
122
|
+
this.loadLanguagesAndScopes([lang], [scope]).pipe(startWith()).subscribe({
|
123
|
+
error: (err) => {
|
124
|
+
this.handleError(`Error preloading translations for ${lang}, ${scope}`, err);
|
125
|
+
},
|
124
126
|
});
|
125
127
|
// Retrieve the translation from the cache or fallback to the key
|
126
128
|
let translation = this.getTranslationFromCache(lang, scope, key);
|
@@ -177,7 +179,10 @@ class AXTranslationService {
|
|
177
179
|
//#region Async Translation Methods
|
178
180
|
translateText(text, contextLang, contextScope, params) {
|
179
181
|
if (!this.isExpression(text)) {
|
180
|
-
return
|
182
|
+
return this.loadLanguagesAndScopes([contextLang], [contextScope]).pipe(map(() => this.translateKey(text, contextLang, contextScope, params)), catchError((error) => {
|
183
|
+
this.handleError(`Error during translation:`, error);
|
184
|
+
return of(text); // Fallback to the original text
|
185
|
+
}));
|
181
186
|
}
|
182
187
|
const matches = this.decodeExpression(text);
|
183
188
|
// Extract unique languages and scopes for batch loading
|
@@ -266,14 +271,11 @@ class AXTranslatorDirective {
|
|
266
271
|
});
|
267
272
|
}
|
268
273
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXTranslatorDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: AXTranslationService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
269
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.3", type: AXTranslatorDirective, isStandalone:
|
274
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.3", type: AXTranslatorDirective, isStandalone: true, selector: "[translate]", ngImport: i0 }); }
|
270
275
|
}
|
271
276
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXTranslatorDirective, decorators: [{
|
272
277
|
type: Directive,
|
273
|
-
args: [{
|
274
|
-
selector: '[translate]',
|
275
|
-
standalone: false
|
276
|
-
}]
|
278
|
+
args: [{ selector: '[translate]' }]
|
277
279
|
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: AXTranslationService }] });
|
278
280
|
|
279
281
|
class AXTranslatorPipe {
|
@@ -287,13 +289,13 @@ class AXTranslatorPipe {
|
|
287
289
|
return this.service.translate$(key, options);
|
288
290
|
}
|
289
291
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXTranslatorPipe, deps: [{ token: AXTranslationService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
290
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXTranslatorPipe, isStandalone:
|
292
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXTranslatorPipe, isStandalone: true, name: "translate" }); }
|
291
293
|
}
|
292
294
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXTranslatorPipe, decorators: [{
|
293
295
|
type: Pipe,
|
294
296
|
args: [{
|
295
|
-
name: 'translate',
|
296
|
-
|
297
|
+
name: 'translate',
|
298
|
+
pure: true,
|
297
299
|
}]
|
298
300
|
}], ctorParameters: () => [{ type: AXTranslationService }] });
|
299
301
|
|
@@ -304,10 +306,10 @@ function initializeApp(translatorService, config) {
|
|
304
306
|
}
|
305
307
|
class AXTranslationModule {
|
306
308
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
307
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXTranslationModule,
|
309
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXTranslationModule, imports: [AXTranslatorPipe, AXTranslatorDirective], exports: [AXTranslatorPipe, AXTranslatorDirective] }); }
|
308
310
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXTranslationModule, providers: [
|
309
311
|
provideAppInitializer(() => {
|
310
|
-
const initializerFn =
|
312
|
+
const initializerFn = initializeApp(inject(AXTranslationService), inject(AX_TRANSLATION_CONFIG));
|
311
313
|
return initializerFn();
|
312
314
|
}),
|
313
315
|
] }); }
|
@@ -315,12 +317,11 @@ class AXTranslationModule {
|
|
315
317
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXTranslationModule, decorators: [{
|
316
318
|
type: NgModule,
|
317
319
|
args: [{
|
318
|
-
imports: [],
|
320
|
+
imports: [AXTranslatorPipe, AXTranslatorDirective],
|
319
321
|
exports: [AXTranslatorPipe, AXTranslatorDirective],
|
320
|
-
declarations: [AXTranslatorPipe, AXTranslatorDirective],
|
321
322
|
providers: [
|
322
323
|
provideAppInitializer(() => {
|
323
|
-
const initializerFn =
|
324
|
+
const initializerFn = initializeApp(inject(AXTranslationService), inject(AX_TRANSLATION_CONFIG));
|
324
325
|
return initializerFn();
|
325
326
|
}),
|
326
327
|
],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-core-translation.mjs","sources":["../../../../libs/core/translation/src/lib/translation.config.ts","../../../../libs/core/translation/src/lib/translation.loader.ts","../../../../libs/core/translation/src/lib/translation.service.ts","../../../../libs/core/translation/src/lib/translation-scope.resolver.ts","../../../../libs/core/translation/src/lib/translator.directive.ts","../../../../libs/core/translation/src/lib/translator.pipe.ts","../../../../libs/core/translation/src/lib/translation.module.ts","../../../../libs/core/translation/src/acorex-core-translation.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AXTranslateLang, AXTranslateScope } from './translation.types';\n\nexport interface AXTranslationConfig {\n defaultLang: AXTranslateLang;\n defaultScope: AXTranslateScope;\n preloadLangs?: AXTranslateLang[];\n preloadScopes?: AXTranslateLang[];\n availableLangs?: AXTranslateLang[];\n scopeResolverKey: string;\n}\n\nexport const AX_TRANSLATION_CONFIG = new InjectionToken<AXTranslationConfig>('AX_TRANSLATION_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXTranslationDefaultConfig;\n },\n});\n\nexport const AXTranslationDefaultConfig: AXTranslationConfig = {\n defaultLang: 'en',\n defaultScope: 'common',\n scopeResolverKey: 'scope',\n};\n\nexport type AXPartialTranslationConfig = Partial<AXTranslationConfig>;\n\nexport function translationConfig(config: AXPartialTranslationConfig = {}): AXTranslationConfig {\n const result = {\n ...AXTranslationDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AXTranslateLang, AXTranslateScope, AXTranslation } from './translation.types';\n\nexport interface AXTranslationLoaderOptions {\n lang: AXTranslateLang;\n scope?: AXTranslateScope;\n}\n\nexport interface AXTranslationLoader {\n getTranslation(options: AXTranslationLoaderOptions): Observable<AXTranslation>;\n}\n\nexport class AXTranslationLoaderDefault implements AXTranslationLoader {\n getTranslation(options: AXTranslationLoaderOptions): Observable<AXTranslation> {\n return of({});\n }\n}\n\nexport const AX_TRANSLATION_LOADER = new InjectionToken<AXTranslationLoader>('AX_TRANSLATION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXTranslationLoaderDefault();\n },\n});\n","import { AXEventService, AXEventTypes } from '@acorex/core/events';\nimport { Injectable, inject } from '@angular/core';\nimport { get as lodashGet, set as lodashSet } from 'lodash-es';\nimport {\n BehaviorSubject,\n Observable,\n catchError,\n distinctUntilChanged,\n finalize,\n firstValueFrom,\n forkJoin,\n map,\n of,\n shareReplay,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AX_TRANSLATION_LOADER } from './translation.loader';\nimport { AXTranslateHashMap, AXTranslateOptions, AXTranslateParams } from './translation.types';\n\nlet singletonInstance: AXTranslationService;\n\nexport function translateSync(key: string, options?: AXTranslateOptions): string {\n return singletonInstance.translateSync(key, options);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXTranslationService {\n private loader = inject(AX_TRANSLATION_LOADER);\n private config = inject(AX_TRANSLATION_CONFIG);\n\n private eventService = inject(AXEventService);\n\n private translationCache: AXTranslateHashMap<AXTranslateHashMap<string>> = {};\n private ongoingRequests: Map<string, Observable<any>> = new Map();\n\n private activeLang: BehaviorSubject<string> = new BehaviorSubject<string>(this.getDefaultLang());\n langChanges$: Observable<string> = this.activeLang.asObservable();\n\n private expressionCache = new Map<\n string,\n { key: string; scope?: string; lang?: string; fullMatch: string }[]\n >();\n\n public getDefaultLang(): string {\n return this.config.defaultLang;\n }\n\n public getActiveLang(): string {\n return this.activeLang.getValue();\n }\n\n public setActiveLang(lang: string): void {\n if (lang != this.getActiveLang()) {\n this.activeLang.next(lang);\n this.eventService.emitEvent({\n type: AXEventTypes.AXLanguageChanged,\n payload: lang,\n });\n }\n }\n\n /**\n * @ignore\n */\n constructor() {\n singletonInstance = this;\n }\n\n public loadLanguagesAndScopes(languages: string[], scopes: string[]): Observable<unknown> {\n const requests = languages.flatMap((lang) =>\n scopes.map((scope) => {\n // Check if translations are already cached\n if (this.translationCache[lang]?.[scope]) {\n return of(this.translationCache[lang][scope]);\n }\n\n // Use the new method to handle ongoing requests and loading\n return this.fetchTranslationFiles(lang, scope);\n }),\n );\n\n return forkJoin(requests);\n }\n\n private fetchTranslationFiles(lang: string, scope: string): Observable<AXTranslateHashMap<string>> {\n const requestKey = `${lang}_${scope}`;\n\n // Return existing observable if the request is already in progress\n if (this.ongoingRequests.has(requestKey)) {\n return this.ongoingRequests.get(requestKey);\n }\n\n // Load translations if not in cache or ongoing requests\n const translationObservable = this.loader.getTranslation({ lang, scope }).pipe(\n tap((translations) => this.setTranslationCache(lang, scope, translations)),\n catchError((error) => {\n this.handleError(`Error loading translations for lang: ${lang}, scope: ${scope}`, error);\n return of(null);\n }),\n finalize(() => {\n this.eventService.emitEvent({\n type: AXEventTypes.AXLanguageLoaded,\n payload: lang,\n });\n this.ongoingRequests.delete(requestKey);\n }),\n shareReplay(1),\n );\n\n this.ongoingRequests.set(requestKey, translationObservable);\n return translationObservable;\n }\n\n //#region Helpers Methods\n\n /**\n * Set translation data into cache\n */\n private setTranslationCache(lang: string, scope: string, translations: AXTranslateHashMap<string>): void {\n lodashSet(this.translationCache, `${lang}.${scope}`, translations);\n }\n\n /**\n * Get the translation from the cache or fallback to loading\n */\n private getTranslationFromCache(lang: string, scope: string, key: string): string {\n return lodashGet(this.translationCache, `${lang}.${scope}.${key}`, key) as string;\n }\n\n public isLangAvailable(lang: string, scope: string = null): boolean {\n return !this.translationCache[lang] && (!scope || !this.translationCache[lang][scope]);\n }\n\n private translateKey(key: string, lang: string, scope: string, params?: AXTranslateParams): string {\n // Trigger async preloading without blocking execution\n this.loadLanguagesAndScopes([lang], [scope]).subscribe({\n error: (err) => this.handleError(`Error preloading translations for ${lang}, ${scope}`, err),\n });\n\n // Retrieve the translation from the cache or fallback to the key\n let translation: string = this.getTranslationFromCache(lang, scope, key);\n\n // Replace params like {{ name }}\n if (params && typeof translation === 'string') {\n Object.keys(params).forEach((paramKey) => {\n translation = translation.replace(\n new RegExp(`{{\\\\s*${paramKey}\\\\s*}}`, 'g'),\n params[paramKey] as string,\n );\n });\n }\n\n return translation || key;\n }\n\n private isExpression = (value: string) => value.includes('t(');\n\n private decodeExpression(\n expression: string,\n ): { key: string; scope?: string; lang?: string; fullMatch: string }[] {\n if (this.expressionCache.has(expression)) {\n return this.expressionCache.get(expression);\n }\n\n const regex = /t\\([\"']([^\"']+)[\"']\\s*(?:,\\s*(\\{.*?\\}))?\\)/g;\n const matches: { key: string; scope?: string; lang?: string; fullMatch: string }[] = [];\n let match;\n\n while ((match = regex.exec(expression)) !== null) {\n const key = match[1];\n const rawOptions = match[2];\n\n if (!rawOptions) {\n matches.push({ key, scope: null, lang: null, fullMatch: match[0] });\n continue;\n }\n\n try {\n const jsonString = rawOptions\n .replace(/(['\"])?([a-zA-Z0-9_]+)(['\"])?\\s*:/g, '\"$2\":') // Ensure keys are quoted\n .replace(/'/g, '\"'); // Replace single quotes with double quotes\n const options = JSON.parse(jsonString);\n\n matches.push({\n key,\n scope: options.scope || null,\n lang: options.lang || null,\n fullMatch: match[0],\n });\n } catch (error) {\n this.handleError(`Failed to parse options for key \"${key}\":`, error);\n matches.push({ key, scope: null, lang: null, fullMatch: match[0] });\n }\n }\n\n this.expressionCache.set(expression, matches);\n return matches;\n }\n\n private handleError(message: string, error: any): void {\n console.error(message, error);\n this.eventService.emitEvent({\n type: 'error',\n payload: { message, error },\n });\n }\n\n //#endregion\n\n //#region Async Translation Methods\n\n private translateText(\n text: string,\n contextLang: string,\n contextScope: string,\n params?: AXTranslateParams,\n ): Observable<string> {\n if (!this.isExpression(text)) {\n return of(this.translateKey(text, contextLang, contextScope, params));\n }\n const matches = this.decodeExpression(text);\n\n // Extract unique languages and scopes for batch loading\n const langScopeSet = new Set(\n matches.map(({ lang, scope }) => `${lang || contextLang}_${scope || contextScope}`),\n );\n\n const langs = Array.from(new Set(Array.from(langScopeSet).map((pair) => pair.split('_')[0])));\n const scopes = Array.from(new Set(Array.from(langScopeSet).map((pair) => pair.split('_')[1])));\n\n // Load all required languages and scopes\n return this.loadLanguagesAndScopes(langs, scopes).pipe(\n map(() => {\n // Resolve translations after loading\n const translations = matches.reduce(\n (acc, { key, scope, lang, fullMatch }) => {\n const resolvedScope = scope || contextScope;\n const resolvedLang = lang || contextLang;\n\n acc[fullMatch] = this.translateKey(key, resolvedLang, resolvedScope, params);\n return acc;\n },\n {} as Record<string, string>,\n );\n\n // Replace all matches in the text with their resolved translations\n return matches.reduce(\n (result, { fullMatch }) =>\n result.replace(\n new RegExp(fullMatch.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g'),\n translations[fullMatch],\n ),\n text,\n );\n }),\n catchError((error) => {\n this.handleError(`Error during translation:`, error);\n return of(text); // Fallback to the original text\n }),\n );\n }\n\n public translate$(text: string, options?: AXTranslateOptions): Observable<string> {\n if (options?.lang) {\n return this.translateText(\n text,\n options.lang,\n options?.scope ?? this.config.defaultScope,\n options?.params,\n );\n }\n return this.langChanges$.pipe(\n startWith(this.getActiveLang()),\n distinctUntilChanged(),\n switchMap((lang) => {\n return this.translateText(text, lang, options?.scope ?? this.config.defaultScope, options?.params);\n }),\n );\n }\n\n public async translateAsync(text: string, options?: AXTranslateOptions): Promise<string> {\n return firstValueFrom(this.translate$(text, options));\n }\n\n //#endregion\n\n //#region Sync Translation Methods\n\n public translateSync(text: string, options?: AXTranslateOptions) {\n if (this.isExpression(text)) {\n return this.translateTextSync(\n text,\n options?.lang ?? this.getActiveLang(),\n options?.scope ?? this.config.defaultScope,\n );\n } else {\n return this.translateKey(\n text,\n options?.lang ?? this.getActiveLang(),\n options?.scope ?? this.config.defaultScope,\n );\n }\n }\n\n private translateTextSync(\n text: string,\n contextLang: string,\n contextScope: string,\n params?: AXTranslateParams,\n ): string {\n const matches = this.decodeExpression(text);\n\n const translations = matches.reduce(\n (acc, { key, scope, lang, fullMatch }) => {\n const resolvedScope = scope || contextScope;\n const resolvedLang = lang || contextLang;\n\n // Cache translation to avoid redundant processing\n if (!acc[fullMatch]) {\n acc[fullMatch] = this.translateKey(key, resolvedLang, resolvedScope, params);\n }\n return acc;\n },\n {} as Record<string, string>,\n );\n\n // Replace all matches in one go\n return matches.reduce(\n (result, { fullMatch }) => result.replace(fullMatch, translations[fullMatch]),\n text,\n );\n }\n\n //#endregion\n}\n","import { inject } from '@angular/core';\nimport { ResolveFn } from '@angular/router';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationService } from './translation.service';\n\nexport const loadTranslationScope: ResolveFn<unknown> = (route, state) => {\n const translatorService = inject(AXTranslationService);\n const config = inject(AX_TRANSLATION_CONFIG);\n const scopeValue = route.data[config.scopeResolverKey];\n const scopes = Array.isArray(scopeValue) ? scopeValue : [scopeValue];\n return translatorService.loadLanguagesAndScopes([translatorService.getActiveLang()], scopes);\n};\n","import { Directive, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { AXTranslationService } from './translation.service';\nimport { AXTranslateOptions } from './translation.types';\n\n@Directive({\n selector: '[translate]',\n standalone: false\n})\nexport class AXTranslatorDirective implements OnInit {\n constructor(\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef,\n private translationService: AXTranslationService,\n ) {}\n\n ngOnInit() {\n this.viewContainer.clear();\n this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: (key: string, options?: AXTranslateOptions) => {\n return this.translationService.translate$(key, options);\n },\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AXTranslationService } from './translation.service';\nimport { AXTranslateOptions } from './translation.types';\n\n@Pipe({\n name: 'translate', pure: true,\n standalone: false\n}) // The pipe can now be pure\nexport class AXTranslatorPipe implements PipeTransform {\n constructor(private service: AXTranslationService) {}\n\n transform(key: string, options?: AXTranslateOptions): Observable<string> {\n if (!key) {\n return of(''); // Return an empty observable if the key is not provided\n }\n return this.service.translate$(key, options);\n }\n}\n","import { NgModule, inject, provideAppInitializer } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AXTranslationConfig, AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationService } from './translation.service';\nimport { AXTranslatorDirective } from './translator.directive';\nimport { AXTranslatorPipe } from './translator.pipe';\n\nfunction initializeApp(translatorService: AXTranslationService, config: AXTranslationConfig) {\n return (): Observable<any> => {\n return translatorService.loadLanguagesAndScopes(\n config.preloadLangs ?? [config.defaultLang],\n config.preloadScopes ?? [config.defaultScope],\n );\n };\n}\n\n@NgModule({\n imports: [],\n exports: [AXTranslatorPipe, AXTranslatorDirective],\n declarations: [AXTranslatorPipe, AXTranslatorDirective],\n providers: [\n provideAppInitializer(() => {\n const initializerFn = (initializeApp)(inject(AXTranslationService), inject(AX_TRANSLATION_CONFIG));\n return initializerFn();\n }),\n ],\n})\nexport class AXTranslationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["lodashSet","lodashGet","i1.AXTranslationService"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-core-translation.mjs","sources":["../../../../libs/core/translation/src/lib/translation.config.ts","../../../../libs/core/translation/src/lib/translation.loader.ts","../../../../libs/core/translation/src/lib/translation.service.ts","../../../../libs/core/translation/src/lib/translation-scope.resolver.ts","../../../../libs/core/translation/src/lib/translator.directive.ts","../../../../libs/core/translation/src/lib/translator.pipe.ts","../../../../libs/core/translation/src/lib/translation.module.ts","../../../../libs/core/translation/src/acorex-core-translation.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AXTranslateLang, AXTranslateScope } from './translation.types';\n\nexport interface AXTranslationConfig {\n defaultLang: AXTranslateLang;\n defaultScope: AXTranslateScope;\n preloadLangs?: AXTranslateLang[];\n preloadScopes?: AXTranslateLang[];\n availableLangs?: AXTranslateLang[];\n scopeResolverKey: string;\n}\n\nexport const AX_TRANSLATION_CONFIG = new InjectionToken<AXTranslationConfig>('AX_TRANSLATION_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXTranslationDefaultConfig;\n },\n});\n\nexport const AXTranslationDefaultConfig: AXTranslationConfig = {\n defaultLang: 'en',\n defaultScope: 'common',\n scopeResolverKey: 'scope',\n};\n\nexport type AXPartialTranslationConfig = Partial<AXTranslationConfig>;\n\nexport function translationConfig(config: AXPartialTranslationConfig = {}): AXTranslationConfig {\n const result = {\n ...AXTranslationDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AXTranslateLang, AXTranslateScope, AXTranslation } from './translation.types';\n\nexport interface AXTranslationLoaderOptions {\n lang: AXTranslateLang;\n scope?: AXTranslateScope;\n}\n\nexport interface AXTranslationLoader {\n getTranslation(options: AXTranslationLoaderOptions): Observable<AXTranslation>;\n}\n\nexport class AXTranslationLoaderDefault implements AXTranslationLoader {\n getTranslation(options: AXTranslationLoaderOptions): Observable<AXTranslation> {\n return of({});\n }\n}\n\nexport const AX_TRANSLATION_LOADER = new InjectionToken<AXTranslationLoader>('AX_TRANSLATION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXTranslationLoaderDefault();\n },\n});\n","import { AXEventService, AXEventTypes } from '@acorex/core/events';\nimport { Injectable, inject } from '@angular/core';\nimport { get as lodashGet, set as lodashSet } from 'lodash-es';\nimport {\n BehaviorSubject,\n Observable,\n catchError,\n distinctUntilChanged,\n finalize,\n firstValueFrom,\n forkJoin,\n map,\n of,\n shareReplay,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AX_TRANSLATION_LOADER } from './translation.loader';\nimport { AXTranslateHashMap, AXTranslateOptions, AXTranslateParams } from './translation.types';\n\nlet singletonInstance: AXTranslationService;\n\nexport function translateSync(key: string, options?: AXTranslateOptions): string {\n return singletonInstance.translateSync(key, options);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXTranslationService {\n private loader = inject(AX_TRANSLATION_LOADER);\n private config = inject(AX_TRANSLATION_CONFIG);\n\n private eventService = inject(AXEventService);\n\n private translationCache: AXTranslateHashMap<AXTranslateHashMap<string>> = {};\n private ongoingRequests: Map<string, Observable<any>> = new Map();\n\n private activeLang: BehaviorSubject<string> = new BehaviorSubject<string>(this.getDefaultLang());\n langChanges$: Observable<string> = this.activeLang.asObservable();\n\n private expressionCache = new Map<\n string,\n { key: string; scope?: string; lang?: string; fullMatch: string }[]\n >();\n\n public getDefaultLang(): string {\n return this.config.defaultLang;\n }\n\n public getActiveLang(): string {\n return this.activeLang.getValue();\n }\n\n public setActiveLang(lang: string): void {\n if (lang != this.getActiveLang()) {\n this.activeLang.next(lang);\n this.eventService.emitEvent({\n type: AXEventTypes.AXLanguageChanged,\n payload: lang,\n });\n }\n }\n\n /**\n * @ignore\n */\n constructor() {\n singletonInstance = this;\n }\n\n public loadLanguagesAndScopes(languages: string[], scopes: string[]): Observable<unknown> {\n const requests = languages.flatMap((lang) =>\n scopes.map((scope) => {\n // Check if translations are already cached\n if (this.translationCache[lang]?.[scope]) {\n return of(this.translationCache[lang][scope]);\n }\n\n // Use the new method to handle ongoing requests and loading\n return this.fetchTranslationFiles(lang, scope);\n }),\n );\n\n return forkJoin(requests);\n }\n\n private fetchTranslationFiles(lang: string, scope: string): Observable<AXTranslateHashMap<string>> {\n const requestKey = `${lang}_${scope}`;\n\n // Return existing observable if the request is already in progress\n if (this.ongoingRequests.has(requestKey)) {\n return this.ongoingRequests.get(requestKey);\n }\n\n // Load translations if not in cache or ongoing requests\n const translationObservable = this.loader.getTranslation({ lang, scope }).pipe(\n tap((translations) => this.setTranslationCache(lang, scope, translations)),\n catchError((error) => {\n this.handleError(`Error loading translations for lang: ${lang}, scope: ${scope}`, error);\n return of(null);\n }),\n finalize(() => {\n this.eventService.emitEvent({\n type: AXEventTypes.AXLanguageLoaded,\n payload: lang,\n });\n this.ongoingRequests.delete(requestKey);\n }),\n shareReplay(1),\n );\n\n this.ongoingRequests.set(requestKey, translationObservable);\n return translationObservable;\n }\n\n //#region Helpers Methods\n\n /**\n * Set translation data into cache\n */\n private setTranslationCache(lang: string, scope: string, translations: AXTranslateHashMap<string>): void {\n lodashSet(this.translationCache, `${lang}.${scope}`, translations);\n }\n\n /**\n * Get the translation from the cache or fallback to loading\n */\n private getTranslationFromCache(lang: string, scope: string, key: string): string {\n return lodashGet(this.translationCache, `${lang}.${scope}.${key}`, key) as string;\n }\n\n public isLangAvailable(lang: string, scope: string = null): boolean {\n return !this.translationCache[lang] && (!scope || !this.translationCache[lang][scope]);\n }\n\n private translateKey(key: string, lang: string, scope: string, params?: AXTranslateParams): string {\n // Trigger async preloading without blocking execution\n this.loadLanguagesAndScopes([lang], [scope]).pipe(startWith()).subscribe({\n error: (err) => {\n this.handleError(`Error preloading translations for ${lang}, ${scope}`, err)\n },\n });\n\n // Retrieve the translation from the cache or fallback to the key\n let translation: string = this.getTranslationFromCache(lang, scope, key);\n\n // Replace params like {{ name }}\n if (params && typeof translation === 'string') {\n Object.keys(params).forEach((paramKey) => {\n translation = translation.replace(\n new RegExp(`{{\\\\s*${paramKey}\\\\s*}}`, 'g'),\n params[paramKey] as string,\n );\n });\n }\n\n return translation || key;\n }\n\n private isExpression = (value: string) => value.includes('t(');\n\n private decodeExpression(\n expression: string,\n ): { key: string; scope?: string; lang?: string; fullMatch: string }[] {\n if (this.expressionCache.has(expression)) {\n return this.expressionCache.get(expression);\n }\n\n const regex = /t\\([\"']([^\"']+)[\"']\\s*(?:,\\s*(\\{.*?\\}))?\\)/g;\n const matches: { key: string; scope?: string; lang?: string; fullMatch: string }[] = [];\n let match;\n\n while ((match = regex.exec(expression)) !== null) {\n const key = match[1];\n const rawOptions = match[2];\n\n if (!rawOptions) {\n matches.push({ key, scope: null, lang: null, fullMatch: match[0] });\n continue;\n }\n\n try {\n const jsonString = rawOptions\n .replace(/(['\"])?([a-zA-Z0-9_]+)(['\"])?\\s*:/g, '\"$2\":') // Ensure keys are quoted\n .replace(/'/g, '\"'); // Replace single quotes with double quotes\n const options = JSON.parse(jsonString);\n\n matches.push({\n key,\n scope: options.scope || null,\n lang: options.lang || null,\n fullMatch: match[0],\n });\n } catch (error) {\n this.handleError(`Failed to parse options for key \"${key}\":`, error);\n matches.push({ key, scope: null, lang: null, fullMatch: match[0] });\n }\n }\n\n this.expressionCache.set(expression, matches);\n return matches;\n }\n\n private handleError(message: string, error: any): void {\n console.error(message, error);\n this.eventService.emitEvent({\n type: 'error',\n payload: { message, error },\n });\n }\n\n //#endregion\n\n //#region Async Translation Methods\n\n private translateText(\n text: string,\n contextLang: string,\n contextScope: string,\n params?: AXTranslateParams,\n ): Observable<string> {\n\n if (!this.isExpression(text)) {\n return this.loadLanguagesAndScopes([contextLang], [contextScope]).pipe(\n map(() => this.translateKey(text, contextLang, contextScope, params)),\n catchError((error) => {\n this.handleError(`Error during translation:`, error);\n return of(text); // Fallback to the original text\n })\n );\n }\n\n\n\n\n const matches = this.decodeExpression(text);\n\n // Extract unique languages and scopes for batch loading\n const langScopeSet = new Set(\n matches.map(({ lang, scope }) => `${lang || contextLang}_${scope || contextScope}`),\n );\n\n const langs = Array.from(new Set(Array.from(langScopeSet).map((pair) => pair.split('_')[0])));\n const scopes = Array.from(new Set(Array.from(langScopeSet).map((pair) => pair.split('_')[1])));\n\n // Load all required languages and scopes\n return this.loadLanguagesAndScopes(langs, scopes).pipe(\n map(() => {\n // Resolve translations after loading\n const translations = matches.reduce(\n (acc, { key, scope, lang, fullMatch }) => {\n const resolvedScope = scope || contextScope;\n const resolvedLang = lang || contextLang;\n\n acc[fullMatch] = this.translateKey(key, resolvedLang, resolvedScope, params);\n return acc;\n },\n {} as Record<string, string>,\n );\n\n // Replace all matches in the text with their resolved translations\n return matches.reduce(\n (result, { fullMatch }) =>\n result.replace(\n new RegExp(fullMatch.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g'),\n translations[fullMatch],\n ),\n text,\n );\n }),\n catchError((error) => {\n this.handleError(`Error during translation:`, error);\n return of(text); // Fallback to the original text\n }),\n );\n }\n\n public translate$(text: string, options?: AXTranslateOptions): Observable<string> {\n if (options?.lang) {\n return this.translateText(\n text,\n options.lang,\n options?.scope ?? this.config.defaultScope,\n options?.params,\n );\n }\n return this.langChanges$.pipe(\n startWith(this.getActiveLang()),\n distinctUntilChanged(),\n switchMap((lang) => {\n return this.translateText(text, lang, options?.scope ?? this.config.defaultScope, options?.params);\n }),\n );\n }\n\n public async translateAsync(text: string, options?: AXTranslateOptions): Promise<string> {\n return firstValueFrom(this.translate$(text, options));\n }\n\n //#endregion\n\n //#region Sync Translation Methods\n\n public translateSync(text: string, options?: AXTranslateOptions) {\n if (this.isExpression(text)) {\n return this.translateTextSync(\n text,\n options?.lang ?? this.getActiveLang(),\n options?.scope ?? this.config.defaultScope,\n );\n } else {\n return this.translateKey(\n text,\n options?.lang ?? this.getActiveLang(),\n options?.scope ?? this.config.defaultScope,\n );\n }\n }\n\n private translateTextSync(\n text: string,\n contextLang: string,\n contextScope: string,\n params?: AXTranslateParams,\n ): string {\n const matches = this.decodeExpression(text);\n\n const translations = matches.reduce(\n (acc, { key, scope, lang, fullMatch }) => {\n const resolvedScope = scope || contextScope;\n const resolvedLang = lang || contextLang;\n\n // Cache translation to avoid redundant processing\n if (!acc[fullMatch]) {\n acc[fullMatch] = this.translateKey(key, resolvedLang, resolvedScope, params);\n }\n return acc;\n },\n {} as Record<string, string>,\n );\n\n // Replace all matches in one go\n return matches.reduce(\n (result, { fullMatch }) => result.replace(fullMatch, translations[fullMatch]),\n text,\n );\n }\n\n //#endregion\n}\n","import { inject } from '@angular/core';\nimport { ResolveFn } from '@angular/router';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationService } from './translation.service';\n\nexport const loadTranslationScope: ResolveFn<unknown> = (route, state) => {\n const translatorService = inject(AXTranslationService);\n const config = inject(AX_TRANSLATION_CONFIG);\n const scopeValue = route.data[config.scopeResolverKey];\n const scopes = Array.isArray(scopeValue) ? scopeValue : [scopeValue];\n return translatorService.loadLanguagesAndScopes([translatorService.getActiveLang()], scopes);\n};\n","import { Directive, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { AXTranslationService } from './translation.service';\nimport { AXTranslateOptions } from './translation.types';\n\n@Directive({ selector: '[translate]' })\nexport class AXTranslatorDirective implements OnInit {\n constructor(\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef,\n private translationService: AXTranslationService,\n ) {}\n\n ngOnInit() {\n this.viewContainer.clear();\n this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: (key: string, options?: AXTranslateOptions) => {\n return this.translationService.translate$(key, options);\n },\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AXTranslationService } from './translation.service';\nimport { AXTranslateOptions } from './translation.types';\n\n@Pipe({\n name: 'translate',\n pure: true,\n}) // The pipe can now be pure\nexport class AXTranslatorPipe implements PipeTransform {\n constructor(private service: AXTranslationService) {}\n\n transform(key: string, options?: AXTranslateOptions): Observable<string> {\n if (!key) {\n return of(''); // Return an empty observable if the key is not provided\n }\n return this.service.translate$(key, options);\n }\n}\n","import { NgModule, inject, provideAppInitializer } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AXTranslationConfig, AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationService } from './translation.service';\nimport { AXTranslatorDirective } from './translator.directive';\nimport { AXTranslatorPipe } from './translator.pipe';\n\nfunction initializeApp(translatorService: AXTranslationService, config: AXTranslationConfig) {\n return (): Observable<any> => {\n return translatorService.loadLanguagesAndScopes(config.preloadLangs ?? [config.defaultLang], config.preloadScopes ?? [config.defaultScope]);\n };\n}\n\n@NgModule({\n imports: [AXTranslatorPipe, AXTranslatorDirective],\n exports: [AXTranslatorPipe, AXTranslatorDirective],\n providers: [\n provideAppInitializer(() => {\n const initializerFn = initializeApp(inject(AXTranslationService), inject(AX_TRANSLATION_CONFIG));\n return initializerFn();\n }),\n ],\n})\nexport class AXTranslationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["lodashSet","lodashGet","i1.AXTranslationService"],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { Injectable, inject, PLATFORM_ID,
|
2
|
+
import { Injectable, inject, PLATFORM_ID, HostListener, Input, Directive, NgModule } from '@angular/core';
|
3
3
|
import { Subject, takeUntil } from 'rxjs';
|
4
4
|
import tinycolor from 'tinycolor2';
|
5
5
|
import tinygradient from 'tinygradient-es';
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { Injectable, inject, InjectionToken, Injector,
|
2
|
+
import { Injectable, inject, InjectionToken, Injector, Inject, NgModule } from '@angular/core';
|
3
3
|
import * as i1 from '@acorex/core/translation';
|
4
4
|
import { AXTranslationService } from '@acorex/core/translation';
|
5
5
|
import { isString, isEmpty, isBoolean, isNull, isUndefined, isNumber, isArray, find, isEqual, merge } from 'lodash-es';
|
package/package.json
CHANGED
@@ -3,6 +3,6 @@ import * as i1 from "./translator.pipe";
|
|
3
3
|
import * as i2 from "./translator.directive";
|
4
4
|
export declare class AXTranslationModule {
|
5
5
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXTranslationModule, never>;
|
6
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<AXTranslationModule, [typeof i1.AXTranslatorPipe, typeof i2.AXTranslatorDirective],
|
6
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AXTranslationModule, never, [typeof i1.AXTranslatorPipe, typeof i2.AXTranslatorDirective], [typeof i1.AXTranslatorPipe, typeof i2.AXTranslatorDirective]>;
|
7
7
|
static ɵinj: i0.ɵɵInjectorDeclaration<AXTranslationModule>;
|
8
8
|
}
|
@@ -8,5 +8,5 @@ export declare class AXTranslatorDirective implements OnInit {
|
|
8
8
|
constructor(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, translationService: AXTranslationService);
|
9
9
|
ngOnInit(): void;
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXTranslatorDirective, never>;
|
11
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<AXTranslatorDirective, "[translate]", never, {}, {}, never, never,
|
11
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<AXTranslatorDirective, "[translate]", never, {}, {}, never, never, true, never>;
|
12
12
|
}
|
@@ -8,5 +8,5 @@ export declare class AXTranslatorPipe implements PipeTransform {
|
|
8
8
|
constructor(service: AXTranslationService);
|
9
9
|
transform(key: string, options?: AXTranslateOptions): Observable<string>;
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXTranslatorPipe, never>;
|
11
|
-
static ɵpipe: i0.ɵɵPipeDeclaration<AXTranslatorPipe, "translate",
|
11
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<AXTranslatorPipe, "translate", true>;
|
12
12
|
}
|