ngx-atomic-i18n 0.1.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.
@@ -0,0 +1,165 @@
1
+ import { computed, effect, Inject, inject, Injectable } from "@angular/core";
2
+ import { BUILD_VERSION, PAGE_TRANSLATION_ROOT, TRANSLATION_CONFIG, TRANSLATION_LOADER, TRANSLATION_NAMESPACE } from "./translate.token";
3
+ import { detectBuildVersion, toObservable } from "./translate.util";
4
+ import { TranslationCoreService } from "./translation-core.service";
5
+ import * as i0 from "@angular/core";
6
+ export class TranslationService {
7
+ namespaceInput;
8
+ /** Shared translation configuration resolved from the host application. */
9
+ config = inject(TRANSLATION_CONFIG);
10
+ parent = inject(TranslationService, { skipSelf: true, optional: true });
11
+ isPageRoot = inject(PAGE_TRANSLATION_ROOT, { self: true, optional: true }) ?? false;
12
+ /** Core translation engine that handles lookups and formatter lifecycle. */
13
+ core = inject(TranslationCoreService);
14
+ /** Loader implementation responsible for fetching translation payloads. */
15
+ loader = inject(TRANSLATION_LOADER);
16
+ /** Optional build fingerprint for cache busting injected at runtime. */
17
+ injectedVersion = inject(BUILD_VERSION, { optional: true });
18
+ /** Flag used to guard debug logging output. */
19
+ debugEnabled = !!this.config.debug;
20
+ /** Observable mirror of the language signal for consumers outside of signals. */
21
+ onLangChange = toObservable(this.lang);
22
+ /** Namespace currently owned by this service instance. */
23
+ namespace = '';
24
+ get lang() {
25
+ return computed(() => this.core.lang());
26
+ }
27
+ get currentLang() {
28
+ return this.core.currentLang;
29
+ }
30
+ get supportedLangs() {
31
+ return this.config.supportedLangs;
32
+ }
33
+ /** Build version identifier used to scope namespace caches. */
34
+ buildVersion = this.injectedVersion ?? detectBuildVersion();
35
+ /** Composes the unique key used to store namespace resources per lang and build. */
36
+ get getNskey() {
37
+ const version = this.buildVersion;
38
+ return version ? `${this.lang()}:${this.namespace}:${version}` : `${this.lang()}:${this.namespace}`;
39
+ }
40
+ /** Signal that flips to true when the namespace resources are available. */
41
+ get readySignal() {
42
+ return this.core.readySignal(this.namespace, this.buildVersion ?? undefined);
43
+ }
44
+ /** Convenience boolean wrapper around the readiness signal. */
45
+ get ready() {
46
+ return this.core.readySignal(this.namespace, this.buildVersion ?? undefined)();
47
+ }
48
+ constructor(namespaceInput) {
49
+ this.namespaceInput = namespaceInput;
50
+ this.namespace = namespaceInput;
51
+ effect(() => {
52
+ const nsKey = this.getNskey;
53
+ if (!this.ready) {
54
+ this.info(`Namespace "${this.namespace}" is not ready. Loading for "${this.lang()}" using key "${nsKey}".`);
55
+ this.core.load(nsKey, () => this.loader.load(this.config.i18nRoots, this.namespace, this.lang()));
56
+ }
57
+ });
58
+ }
59
+ /** Switches the active language and triggers downstream refresh logic. */
60
+ setLang(lang) {
61
+ this.info(`setLang called with "${lang}".`);
62
+ this.core.setLang(lang);
63
+ }
64
+ /**
65
+ * Resolves the translation for `key`, formatting with the provided params
66
+ * and falling back to configured behaviors when a translation is missing.
67
+ */
68
+ t(key, params = {}) {
69
+ const nsKey = this.getNskey;
70
+ const missingResult = this.getMissingTranslation(key);
71
+ if (!this.ready) {
72
+ this.warn(`Namespace "${this.namespace}" is not ready.`);
73
+ return '';
74
+ }
75
+ const formatResult = this.core.getAndCreateFormatter(nsKey, key);
76
+ if (formatResult)
77
+ return formatResult.format(params);
78
+ if (this.config.enablePageFallback && !this.isPageRoot && this.parent) {
79
+ return this.parent.t(key, params);
80
+ }
81
+ const fallback = this.core.findFallbackFormatter(key, [], this.buildVersion ?? undefined);
82
+ if (fallback) {
83
+ this.info(`Resolved key "${key}" via fallback namespace while rendering "${this.namespace}".`);
84
+ return fallback.format(params);
85
+ }
86
+ this.warn(`Missing translation for key "${key}" in namespace "${this.namespace}". Returning fallback value.`);
87
+ return missingResult;
88
+ }
89
+ /** Determines the fallback string or error when a translation entry is missing. */
90
+ getMissingTranslation(key) {
91
+ const forceMode = this.config.missingTranslationBehavior ?? 'show-key';
92
+ switch (forceMode) {
93
+ case 'throw-error':
94
+ throw new Error(`[i18n] Missing translation: ${key} in ${this.namespace}`);
95
+ case 'empty':
96
+ this.warn(`Missing translation returned an empty string for key "${key}" in namespace "${this.namespace}".`);
97
+ return '';
98
+ case 'show-key':
99
+ if (key) {
100
+ this.warn(`Showing key "${key}" because no translation was found in namespace "${this.namespace}".`);
101
+ }
102
+ return key ?? '';
103
+ default: return forceMode;
104
+ }
105
+ }
106
+ /** Pass-through helpers that delegate resource management to the core service. */
107
+ addResourceBundle(...p) {
108
+ return this.core.addResourceBundle(...p);
109
+ }
110
+ addResources(...p) {
111
+ return this.core.addResources(...p);
112
+ }
113
+ addResource(...p) {
114
+ return this.core.addResource(...p);
115
+ }
116
+ hasResourceBundle(...p) {
117
+ return this.core.hasResourceBundle(...p);
118
+ }
119
+ getResource(...p) {
120
+ return this.core.getResource(...p);
121
+ }
122
+ getResourceBundle(...p) {
123
+ return this.core.getResourceBundle(...p);
124
+ }
125
+ getAllBundle() {
126
+ return this.core.getAllBundle();
127
+ }
128
+ removeResourceBundle(...p) {
129
+ return this.core.removeResourceBundle(...p);
130
+ }
131
+ preloadNamespaces(...p) {
132
+ return this.core.preloadNamespaces(...p);
133
+ }
134
+ /** Emits debug info when verbose logging is enabled. */
135
+ info(message, ...details) {
136
+ if (!this.debugEnabled)
137
+ return;
138
+ if (details.length) {
139
+ console.info(`[ngx-atomic-i18n] ${message}`, ...details);
140
+ }
141
+ else {
142
+ console.info(`[ngx-atomic-i18n] ${message}`);
143
+ }
144
+ }
145
+ /** Emits debug warnings when verbose logging is enabled. */
146
+ warn(message, ...details) {
147
+ if (!this.debugEnabled)
148
+ return;
149
+ if (details.length) {
150
+ console.warn(`[ngx-atomic-i18n] ${message}`, ...details);
151
+ }
152
+ else {
153
+ console.warn(`[ngx-atomic-i18n] ${message}`);
154
+ }
155
+ }
156
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationService, deps: [{ token: TRANSLATION_NAMESPACE }], target: i0.ɵɵFactoryTarget.Injectable });
157
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationService });
158
+ }
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationService, decorators: [{
160
+ type: Injectable
161
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
162
+ type: Inject,
163
+ args: [TRANSLATION_NAMESPACE]
164
+ }] }] });
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1hdG9taWMtaTE4bi9zcmMvbGliL3RyYW5zbGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXhJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHcEUsTUFBTSxPQUFPLGtCQUFrQjtJQWtEb0I7SUFqRGpELDJFQUEyRTtJQUMxRCxNQUFNLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDcEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEUsVUFBVSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3JHLDRFQUE0RTtJQUMzRCxJQUFJLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDdkQsMkVBQTJFO0lBQzFELE1BQU0sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyRCx3RUFBd0U7SUFDdkQsZUFBZSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFB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QUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUMzRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7d0dBL0pVLGtCQUFrQixrQkFrRG5CLHFCQUFxQjs0R0FsRHBCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVTs7MEJBbUROLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGVmZmVjdCwgSW5qZWN0LCBpbmplY3QsIEluamVjdGFibGUsIFNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBCVUlMRF9WRVJTSU9OLCBQQUdFX1RSQU5TTEFUSU9OX1JPT1QsIFRSQU5TTEFUSU9OX0NPTkZJRywgVFJBTlNMQVRJT05fTE9BREVSLCBUUkFOU0xBVElPTl9OQU1FU1BBQ0UgfSBmcm9tIFwiLi90cmFuc2xhdGUudG9rZW5cIjtcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gXCIuL3RyYW5zbGF0ZS50eXBlXCI7XG5pbXBvcnQgeyBkZXRlY3RCdWlsZFZlcnNpb24sIHRvT2JzZXJ2YWJsZSB9IGZyb20gXCIuL3RyYW5zbGF0ZS51dGlsXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGlvbkNvcmVTZXJ2aWNlIH0gZnJvbSBcIi4vdHJhbnNsYXRpb24tY29yZS5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvblNlcnZpY2Uge1xuICAvKiogU2hhcmVkIHRyYW5zbGF0aW9uIGNvbmZpZ3VyYXRpb24gcmVzb2x2ZWQgZnJvbSB0aGUgaG9zdCBhcHBsaWNhdGlvbi4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoVFJBTlNMQVRJT05fQ09ORklHKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnQgPSBpbmplY3QoVHJhbnNsYXRpb25TZXJ2aWNlLCB7IHNraXBTZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc1BhZ2VSb290ID0gaW5qZWN0KFBBR0VfVFJBTlNMQVRJT05fUk9PVCwgeyBzZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSB9KSA/PyBmYWxzZTtcbiAgLyoqIENvcmUgdHJhbnNsYXRpb24gZW5naW5lIHRoYXQgaGFuZGxlcyBsb29rdXBzIGFuZCBmb3JtYXR0ZXIgbGlmZWN5Y2xlLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNvcmUgPSBpbmplY3QoVHJhbnNsYXRpb25Db3JlU2VydmljZSk7XG4gIC8qKiBMb2FkZXIgaW1wbGVtZW50YXRpb24gcmVzcG9uc2libGUgZm9yIGZldGNoaW5nIHRyYW5zbGF0aW9uIHBheWxvYWRzLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRlciA9IGluamVjdChUUkFOU0xBVElPTl9MT0FERVIpO1xuICAvKiogT3B0aW9uYWwgYnVpbGQgZmluZ2VycHJpbnQgZm9yIGNhY2hlIGJ1c3RpbmcgaW5qZWN0ZWQgYXQgcnVudGltZS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RlZFZlcnNpb24gPSBpbmplY3QoQlVJTERfVkVSU0lPTiwgeyBvcHRpb25hbDogdHJ1ZSB9KSBhcyBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAvKiogRmxhZyB1c2VkIHRvIGd1YXJkIGRlYnVnIGxvZ2dpbmcgb3V0cHV0LiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRlYnVnRW5hYmxlZCA9ICEhdGhpcy5jb25maWcuZGVidWc7XG5cbiAgLyoqIE9ic2VydmFibGUgbWlycm9yIG9mIHRoZSBsYW5ndWFnZSBzaWduYWwgZm9yIGNvbnN1bWVycyBvdXRzaWRlIG9mIHNpZ25hbHMuICovXG4gIHJlYWRvbmx5IG9uTGFuZ0NoYW5nZSA9IHRvT2JzZXJ2YWJsZSh0aGlzLmxhbmcpO1xuICAvKiogTmFtZXNwYWNlIGN1cnJlbnRseSBvd25lZCBieSB0aGlzIHNlcnZpY2UgaW5zdGFuY2UuICovXG4gIHByaXZhdGUgbmFtZXNwYWNlID0gJyc7XG5cbiAgZ2V0IGxhbmcoKTogU2lnbmFsPHN0cmluZz4ge1xuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiB0aGlzLmNvcmUubGFuZygpKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50TGFuZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvcmUuY3VycmVudExhbmc7XG4gIH1cbiAgZ2V0IHN1cHBvcnRlZExhbmdzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuc3VwcG9ydGVkTGFuZ3M7XG4gIH1cblxuICAvKiogQnVpbGQgdmVyc2lvbiBpZGVudGlmaWVyIHVzZWQgdG8gc2NvcGUgbmFtZXNwYWNlIGNhY2hlcy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBidWlsZFZlcnNpb246IHN0cmluZyB8IG51bGwgPSB0aGlzLmluamVjdGVkVmVyc2lvbiA/PyBkZXRlY3RCdWlsZFZlcnNpb24oKTtcblxuICAvKiogQ29tcG9zZXMgdGhlIHVuaXF1ZSBrZXkgdXNlZCB0byBzdG9yZSBuYW1lc3BhY2UgcmVzb3VyY2VzIHBlciBsYW5nIGFuZCBidWlsZC4gKi9cbiAgZ2V0IGdldE5za2V5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuYnVpbGRWZXJzaW9uO1xuICAgIHJldHVybiB2ZXJzaW9uID8gYCR7dGhpcy5sYW5nKCl9OiR7dGhpcy5uYW1lc3BhY2V9OiR7dmVyc2lvbn1gIDogYCR7dGhpcy5sYW5nKCl9OiR7dGhpcy5uYW1lc3BhY2V9YDtcbiAgfVxuXG4gIC8qKiBTaWduYWwgdGhhdCBmbGlwcyB0byB0cnVlIHdoZW4gdGhlIG5hbWVzcGFjZSByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZS4gKi9cbiAgZ2V0IHJlYWR5U2lnbmFsKCk6IFNpZ25hbDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY29yZS5yZWFkeVNpZ25hbCh0aGlzLm5hbWVzcGFjZSwgdGhpcy5idWlsZFZlcnNpb24gPz8gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKiBDb252ZW5pZW5jZSBib29sZWFuIHdyYXBwZXIgYXJvdW5kIHRoZSByZWFkaW5lc3Mgc2lnbmFsLiAqL1xuICBnZXQgcmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29yZS5yZWFkeVNpZ25hbCh0aGlzLm5hbWVzcGFjZSwgdGhpcy5idWlsZFZlcnNpb24gPz8gdW5kZWZpbmVkKSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChUUkFOU0xBVElPTl9OQU1FU1BBQ0UpIHB1YmxpYyByZWFkb25seSBuYW1lc3BhY2VJbnB1dDogc3RyaW5nLFxuICApIHtcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZUlucHV0O1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBuc0tleSA9IHRoaXMuZ2V0TnNrZXk7XG4gICAgICBpZiAoIXRoaXMucmVhZHkpIHtcbiAgICAgICAgdGhpcy5pbmZvKGBOYW1lc3BhY2UgXCIke3RoaXMubmFtZXNwYWNlfVwiIGlzIG5vdCByZWFkeS4gTG9hZGluZyBmb3IgXCIke3RoaXMubGFuZygpfVwiIHVzaW5nIGtleSBcIiR7bnNLZXl9XCIuYCk7XG4gICAgICAgIHRoaXMuY29yZS5sb2FkKG5zS2V5LCAoKSA9PiB0aGlzLmxvYWRlci5sb2FkKHRoaXMuY29uZmlnLmkxOG5Sb290cywgdGhpcy5uYW1lc3BhY2UsIHRoaXMubGFuZygpKSk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKiBTd2l0Y2hlcyB0aGUgYWN0aXZlIGxhbmd1YWdlIGFuZCB0cmlnZ2VycyBkb3duc3RyZWFtIHJlZnJlc2ggbG9naWMuICovXG4gIHNldExhbmcobGFuZzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5pbmZvKGBzZXRMYW5nIGNhbGxlZCB3aXRoIFwiJHtsYW5nfVwiLmApO1xuICAgIHRoaXMuY29yZS5zZXRMYW5nKGxhbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSB0cmFuc2xhdGlvbiBmb3IgYGtleWAsIGZvcm1hdHRpbmcgd2l0aCB0aGUgcHJvdmlkZWQgcGFyYW1zXG4gICAqIGFuZCBmYWxsaW5nIGJhY2sgdG8gY29uZmlndXJlZCBiZWhhdmlvcnMgd2hlbiBhIHRyYW5zbGF0aW9uIGlzIG1pc3NpbmcuXG4gICAqL1xuICB0KGtleTogc3RyaW5nLCBwYXJhbXM6IFBhcmFtcyA9IHt9KTogc3RyaW5nIHtcbiAgICBjb25zdCBuc0tleSA9IHRoaXMuZ2V0TnNrZXk7XG4gICAgY29uc3QgbWlzc2luZ1Jlc3VsdCA9IHRoaXMuZ2V0TWlzc2luZ1RyYW5zbGF0aW9uKGtleSk7XG4gICAgaWYgKCF0aGlzLnJlYWR5KSB7XG4gICAgICB0aGlzLndhcm4oYE5hbWVzcGFjZSBcIiR7dGhpcy5uYW1lc3BhY2V9XCIgaXMgbm90IHJlYWR5LmApO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCBmb3JtYXRSZXN1bHQgPSB0aGlzLmNvcmUuZ2V0QW5kQ3JlYXRlRm9ybWF0dGVyKG5zS2V5LCBrZXkpO1xuICAgIGlmIChmb3JtYXRSZXN1bHQpIHJldHVybiBmb3JtYXRSZXN1bHQuZm9ybWF0KHBhcmFtcyk7XG5cbiAgICBpZiAodGhpcy5jb25maWcuZW5hYmxlUGFnZUZhbGxiYWNrICYmICF0aGlzLmlzUGFnZVJvb3QgJiYgdGhpcy5wYXJlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmVudC50KGtleSwgcGFyYW1zKTtcbiAgICB9XG4gICAgY29uc3QgZmFsbGJhY2sgPSB0aGlzLmNvcmUuZmluZEZhbGxiYWNrRm9ybWF0dGVyKGtleSwgW10sIHRoaXMuYnVpbGRWZXJzaW9uID8/IHVuZGVmaW5lZCk7XG4gICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICB0aGlzLmluZm8oYFJlc29sdmVkIGtleSBcIiR7a2V5fVwiIHZpYSBmYWxsYmFjayBuYW1lc3BhY2Ugd2hpbGUgcmVuZGVyaW5nIFwiJHt0aGlzLm5hbWVzcGFjZX1cIi5gKTtcbiAgICAgIHJldHVybiBmYWxsYmFjay5mb3JtYXQocGFyYW1zKTtcbiAgICB9XG4gICAgdGhpcy53YXJuKGBNaXNzaW5nIHRyYW5zbGF0aW9uIGZvciBrZXkgXCIke2tleX1cIiBpbiBuYW1lc3BhY2UgXCIke3RoaXMubmFtZXNwYWNlfVwiLiBSZXR1cm5pbmcgZmFsbGJhY2sgdmFsdWUuYCk7XG4gICAgcmV0dXJuIG1pc3NpbmdSZXN1bHQ7XG4gIH1cblxuICAvKiogRGV0ZXJtaW5lcyB0aGUgZmFsbGJhY2sgc3RyaW5nIG9yIGVycm9yIHdoZW4gYSB0cmFuc2xhdGlvbiBlbnRyeSBpcyBtaXNzaW5nLiAqL1xuICBwcml2YXRlIGdldE1pc3NpbmdUcmFuc2xhdGlvbihrZXk/OiBzdHJpbmcpOiBzdHJpbmcgfCBuZXZlciB7XG4gICAgY29uc3QgZm9yY2VNb2RlID0gdGhpcy5jb25maWcubWlzc2luZ1RyYW5zbGF0aW9uQmVoYXZpb3IgPz8gJ3Nob3cta2V5JztcbiAgICBzd2l0Y2ggKGZvcmNlTW9kZSkge1xuICAgICAgY2FzZSAndGhyb3ctZXJyb3InOlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtpMThuXSBNaXNzaW5nIHRyYW5zbGF0aW9uOiAke2tleX0gaW4gJHt0aGlzLm5hbWVzcGFjZX1gKTtcbiAgICAgIGNhc2UgJ2VtcHR5JzpcbiAgICAgICAgdGhpcy53YXJuKGBNaXNzaW5nIHRyYW5zbGF0aW9uIHJldHVybmVkIGFuIGVtcHR5IHN0cmluZyBmb3Iga2V5IFwiJHtrZXl9XCIgaW4gbmFtZXNwYWNlIFwiJHt0aGlzLm5hbWVzcGFjZX1cIi5gKTtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgY2FzZSAnc2hvdy1rZXknOlxuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgdGhpcy53YXJuKGBTaG93aW5nIGtleSBcIiR7a2V5fVwiIGJlY2F1c2Ugbm8gdHJhbnNsYXRpb24gd2FzIGZvdW5kIGluIG5hbWVzcGFjZSBcIiR7dGhpcy5uYW1lc3BhY2V9XCIuYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleSA/PyAnJztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiBmb3JjZU1vZGU7XG4gICAgfVxuICB9XG5cbiAgLyoqIFBhc3MtdGhyb3VnaCBoZWxwZXJzIHRoYXQgZGVsZWdhdGUgcmVzb3VyY2UgbWFuYWdlbWVudCB0byB0aGUgY29yZSBzZXJ2aWNlLiAqL1xuICBhZGRSZXNvdXJjZUJ1bmRsZSguLi5wOiBQYXJhbWV0ZXJzPFRyYW5zbGF0aW9uQ29yZVNlcnZpY2VbJ2FkZFJlc291cmNlQnVuZGxlJ10+KSB7XG4gICAgcmV0dXJuIHRoaXMuY29yZS5hZGRSZXNvdXJjZUJ1bmRsZSguLi5wKTtcbiAgfVxuICBhZGRSZXNvdXJjZXMoLi4ucDogUGFyYW1ldGVyczxUcmFuc2xhdGlvbkNvcmVTZXJ2aWNlWydhZGRSZXNvdXJjZXMnXT4pIHtcbiAgICByZXR1cm4gdGhpcy5jb3JlLmFkZFJlc291cmNlcyguLi5wKTtcbiAgfVxuICBhZGRSZXNvdXJjZSguLi5wOiBQYXJhbWV0ZXJzPFRyYW5zbGF0aW9uQ29yZVNlcnZpY2VbJ2FkZFJlc291cmNlJ10+KSB7XG4gICAgcmV0dXJuIHRoaXMuY29yZS5hZGRSZXNvdXJjZSguLi5wKTtcbiAgfVxuICBoYXNSZXNvdXJjZUJ1bmRsZSguLi5wOiBQYXJhbWV0ZXJzPFRyYW5zbGF0aW9uQ29yZVNlcnZpY2VbJ2hhc1Jlc291cmNlQnVuZGxlJ10+KSB7XG4gICAgcmV0dXJuIHRoaXMuY29yZS5oYXNSZXNvdXJjZUJ1bmRsZSguLi5wKTtcbiAgfVxuICBnZXRSZXNvdXJjZSguLi5wOiBQYXJhbWV0ZXJzPFRyYW5zbGF0aW9uQ29yZVNlcnZpY2VbJ2dldFJlc291cmNlJ10+KSB7XG4gICAgcmV0dXJuIHRoaXMuY29yZS5nZXRSZXNvdXJjZSguLi5wKTtcbiAgfVxuICBnZXRSZXNvdXJjZUJ1bmRsZSguLi5wOiBQYXJhbWV0ZXJzPFRyYW5zbGF0aW9uQ29yZVNlcnZpY2VbJ2dldFJlc291cmNlQnVuZGxlJ10+KSB7XG4gICAgcmV0dXJuIHRoaXMuY29yZS5nZXRSZXNvdXJjZUJ1bmRsZSguLi5wKTtcbiAgfVxuICBnZXRBbGxCdW5kbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29yZS5nZXRBbGxCdW5kbGUoKTtcbiAgfVxuICByZW1vdmVSZXNvdXJjZUJ1bmRsZSguLi5wOiBQYXJhbWV0ZXJzPFRyYW5zbGF0aW9uQ29yZVNlcnZpY2VbJ3JlbW92ZVJlc291cmNlQnVuZGxlJ10+KSB7XG4gICAgcmV0dXJuIHRoaXMuY29yZS5yZW1vdmVSZXNvdXJjZUJ1bmRsZSguLi5wKTtcbiAgfVxuICBwcmVsb2FkTmFtZXNwYWNlcyguLi5wOiBQYXJhbWV0ZXJzPFRyYW5zbGF0aW9uQ29yZVNlcnZpY2VbJ3ByZWxvYWROYW1lc3BhY2VzJ10+KSB7XG4gICAgcmV0dXJuIHRoaXMuY29yZS5wcmVsb2FkTmFtZXNwYWNlcyguLi5wKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBkZWJ1ZyBpbmZvIHdoZW4gdmVyYm9zZSBsb2dnaW5nIGlzIGVuYWJsZWQuICovXG4gIHByaXZhdGUgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIC4uLmRldGFpbHM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kZWJ1Z0VuYWJsZWQpIHJldHVybjtcbiAgICBpZiAoZGV0YWlscy5sZW5ndGgpIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhgW25neC1hdG9taWMtaTE4bl0gJHttZXNzYWdlfWAsIC4uLmRldGFpbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmluZm8oYFtuZ3gtYXRvbWljLWkxOG5dICR7bWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKiogRW1pdHMgZGVidWcgd2FybmluZ3Mgd2hlbiB2ZXJib3NlIGxvZ2dpbmcgaXMgZW5hYmxlZC4gKi9cbiAgcHJpdmF0ZSB3YXJuKG1lc3NhZ2U6IHN0cmluZywgLi4uZGV0YWlsczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRlYnVnRW5hYmxlZCkgcmV0dXJuO1xuICAgIGlmIChkZXRhaWxzLmxlbmd0aCkge1xuICAgICAgY29uc29sZS53YXJuKGBbbmd4LWF0b21pYy1pMThuXSAke21lc3NhZ2V9YCwgLi4uZGV0YWlscyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihgW25neC1hdG9taWMtaTE4bl0gJHttZXNzYWdlfWApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF0b21pYy1pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF0b21pYy1pMThuL3NyYy9uZ3gtYXRvbWljLWkxOG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,15 @@
1
+ /*
2
+ * Public API Surface of ngx-atomic-i18n
3
+ */
4
+ export * from './lib/translation.service';
5
+ export * from './lib/translation-core.service';
6
+ export * from './lib/translate.pipe';
7
+ export * from './lib/translation.directive';
8
+ export * from './lib/translate.provider';
9
+ export * from './lib/translation.loader.csr';
10
+ export * from './lib/translation.loader.ssr';
11
+ export * from './lib/translate.token';
12
+ export * from './lib/translate.type';
13
+ export * from './lib/translate.util';
14
+ export * from './lib/FIFO.model';
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1hdG9taWMtaTE4bi9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LWF0b21pYy1pMThuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhbnNsYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cmFuc2xhdGlvbi1jb3JlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhbnNsYXRlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhbnNsYXRpb24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyYW5zbGF0ZS5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cmFuc2xhdGlvbi5sb2FkZXIuY3NyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyYW5zbGF0aW9uLmxvYWRlci5zc3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhbnNsYXRlLnRva2VuJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyYW5zbGF0ZS50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyYW5zbGF0ZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL0ZJRk8ubW9kZWwnO1xuIl19