@magmamath/frontend-config 1.1.2-rc.8 → 1.1.2-rc.9
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.
|
@@ -8,19 +8,27 @@ type TolgeeConfig = {
|
|
|
8
8
|
apiUrl?: string;
|
|
9
9
|
apiKey?: string;
|
|
10
10
|
};
|
|
11
|
+
type TolgeeEnvConfig = {
|
|
12
|
+
cdnHost: string;
|
|
13
|
+
apiUrl?: string;
|
|
14
|
+
apiKey?: string;
|
|
15
|
+
};
|
|
11
16
|
type TranslationManagerOptions = {
|
|
12
|
-
tolgee: TolgeeConfig
|
|
17
|
+
tolgee: Omit<TolgeeConfig, 'cdnHost' | 'apiUrl' | 'apiKey'>;
|
|
13
18
|
i18nOptions?: InitOptions;
|
|
14
19
|
localStorageKey?: string;
|
|
15
20
|
};
|
|
16
21
|
declare class TranslationManager {
|
|
17
|
-
private readonly
|
|
22
|
+
private readonly tolgeeBase;
|
|
23
|
+
private tolgee;
|
|
18
24
|
private readonly i18nOptions;
|
|
19
25
|
private readonly localStorageKey?;
|
|
20
26
|
private initPromise;
|
|
21
27
|
constructor({ tolgee, i18nOptions, localStorageKey }: TranslationManagerOptions);
|
|
28
|
+
readonly setEnvConfig: (config: TolgeeEnvConfig) => void;
|
|
22
29
|
readonly setLanguage: (locale: Locale) => Promise<void>;
|
|
23
30
|
private readonly persistLocale;
|
|
31
|
+
private readonly getTolgeeConfig;
|
|
24
32
|
private readonly ensureInitialized;
|
|
25
33
|
private readonly init;
|
|
26
34
|
private readonly createBaseTolgeeInstance;
|
|
@@ -8,19 +8,27 @@ type TolgeeConfig = {
|
|
|
8
8
|
apiUrl?: string;
|
|
9
9
|
apiKey?: string;
|
|
10
10
|
};
|
|
11
|
+
type TolgeeEnvConfig = {
|
|
12
|
+
cdnHost: string;
|
|
13
|
+
apiUrl?: string;
|
|
14
|
+
apiKey?: string;
|
|
15
|
+
};
|
|
11
16
|
type TranslationManagerOptions = {
|
|
12
|
-
tolgee: TolgeeConfig
|
|
17
|
+
tolgee: Omit<TolgeeConfig, 'cdnHost' | 'apiUrl' | 'apiKey'>;
|
|
13
18
|
i18nOptions?: InitOptions;
|
|
14
19
|
localStorageKey?: string;
|
|
15
20
|
};
|
|
16
21
|
declare class TranslationManager {
|
|
17
|
-
private readonly
|
|
22
|
+
private readonly tolgeeBase;
|
|
23
|
+
private tolgee;
|
|
18
24
|
private readonly i18nOptions;
|
|
19
25
|
private readonly localStorageKey?;
|
|
20
26
|
private initPromise;
|
|
21
27
|
constructor({ tolgee, i18nOptions, localStorageKey }: TranslationManagerOptions);
|
|
28
|
+
readonly setEnvConfig: (config: TolgeeEnvConfig) => void;
|
|
22
29
|
readonly setLanguage: (locale: Locale) => Promise<void>;
|
|
23
30
|
private readonly persistLocale;
|
|
31
|
+
private readonly getTolgeeConfig;
|
|
24
32
|
private readonly ensureInitialized;
|
|
25
33
|
private readonly init;
|
|
26
34
|
private readonly createBaseTolgeeInstance;
|
|
@@ -18,15 +18,19 @@ var DEFAULT_I18N_OPTIONS = {
|
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
var TranslationManager = class {
|
|
21
|
-
|
|
21
|
+
tolgeeBase;
|
|
22
|
+
tolgee = null;
|
|
22
23
|
i18nOptions;
|
|
23
24
|
localStorageKey;
|
|
24
25
|
initPromise = null;
|
|
25
26
|
constructor({ tolgee, i18nOptions = {}, localStorageKey }) {
|
|
26
|
-
this.
|
|
27
|
+
this.tolgeeBase = tolgee;
|
|
27
28
|
this.i18nOptions = i18nOptions;
|
|
28
29
|
this.localStorageKey = localStorageKey;
|
|
29
30
|
}
|
|
31
|
+
setEnvConfig = (config) => {
|
|
32
|
+
this.tolgee = { ...this.tolgeeBase, ...config };
|
|
33
|
+
};
|
|
30
34
|
setLanguage = async (locale) => {
|
|
31
35
|
this.persistLocale(locale);
|
|
32
36
|
await this.ensureInitialized(locale);
|
|
@@ -38,6 +42,12 @@ var TranslationManager = class {
|
|
|
38
42
|
if (!this.localStorageKey) return;
|
|
39
43
|
localStorage.setItem(this.localStorageKey, locale);
|
|
40
44
|
};
|
|
45
|
+
getTolgeeConfig = () => {
|
|
46
|
+
if (!this.tolgee) {
|
|
47
|
+
throw new Error("TranslationManager: setEnvConfig must be called before setLanguage");
|
|
48
|
+
}
|
|
49
|
+
return this.tolgee;
|
|
50
|
+
};
|
|
41
51
|
ensureInitialized = async (locale) => {
|
|
42
52
|
if (!this.initPromise) {
|
|
43
53
|
this.initPromise = this.init(locale).catch((error) => {
|
|
@@ -48,7 +58,8 @@ var TranslationManager = class {
|
|
|
48
58
|
await this.initPromise;
|
|
49
59
|
};
|
|
50
60
|
init = async (locale) => {
|
|
51
|
-
const
|
|
61
|
+
const config = this.getTolgeeConfig();
|
|
62
|
+
const tolgee = config.isDev ? await this.initTolgeeDevTools() : this.initTolgeeCDN();
|
|
52
63
|
await i18next.withTolgee(i18n__default.default, tolgee).use(reactI18next.initReactI18next).init({
|
|
53
64
|
...DEFAULT_I18N_OPTIONS,
|
|
54
65
|
...this.i18nOptions,
|
|
@@ -56,9 +67,10 @@ var TranslationManager = class {
|
|
|
56
67
|
});
|
|
57
68
|
};
|
|
58
69
|
createBaseTolgeeInstance = () => {
|
|
70
|
+
const config = this.getTolgeeConfig();
|
|
59
71
|
return i18next.Tolgee().use(i18next.I18nextPlugin()).use(
|
|
60
72
|
i18next.BackendFetch({
|
|
61
|
-
prefix: `${
|
|
73
|
+
prefix: `${config.cdnHost}/${config.projectId}`
|
|
62
74
|
})
|
|
63
75
|
);
|
|
64
76
|
};
|
|
@@ -70,9 +82,10 @@ var TranslationManager = class {
|
|
|
70
82
|
import('@tolgee/web/tools'),
|
|
71
83
|
import('@tolgee/i18next')
|
|
72
84
|
]);
|
|
85
|
+
const config = this.getTolgeeConfig();
|
|
73
86
|
return this.createBaseTolgeeInstance().use(DevBackend()).use(InContextTools()).init({
|
|
74
|
-
apiUrl:
|
|
75
|
-
apiKey:
|
|
87
|
+
apiUrl: config.apiUrl,
|
|
88
|
+
apiKey: config.apiKey,
|
|
76
89
|
fetch: (input, init) => {
|
|
77
90
|
return fetch(input, { ...init, signal: AbortSignal.timeout(TOLGEE_DEV_TIMEOUT_MS) });
|
|
78
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/translation/TranslationManager.ts","../../src/translation/translation.constants.ts"],"names":["i18n","withTolgee","initReactI18next","Tolgee","I18nextPlugin","BackendFetch","TranslationNamespace"],"mappings":";;;;;;;;;;;AAMA,IAAM,qBAAwB,GAAA,GAAA;AAE9B,IAAM,oBAAoC,GAAA;AAAA,EACxC,WAAa,EAAA,MAAA;AAAA,EACb,IAAM,EAAA,aAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,WAAa,EAAA;AAAA;AAEjB,CAAA;
|
|
1
|
+
{"version":3,"sources":["../../src/translation/TranslationManager.ts","../../src/translation/translation.constants.ts"],"names":["i18n","withTolgee","initReactI18next","Tolgee","I18nextPlugin","BackendFetch","TranslationNamespace"],"mappings":"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","file":"index.js","sourcesContent":["import i18n, { InitOptions } from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport type { TolgeeInstance } from '@tolgee/i18next'\nimport { BackendFetch, I18nextPlugin, Tolgee, withTolgee } from '@tolgee/i18next'\nimport { Locale } from '../shared/constants/common.constants'\n\nconst TOLGEE_DEV_TIMEOUT_MS = 3000\n\nconst DEFAULT_I18N_OPTIONS: InitOptions = {\n fallbackLng: undefined,\n load: 'currentOnly',\n react: {\n useSuspense: false,\n },\n}\n\ntype TolgeeConfig = {\n isDev: boolean\n cdnHost: string\n projectId: string\n apiUrl?: string\n apiKey?: string\n}\n\ntype TolgeeEnvConfig = {\n cdnHost: string\n apiUrl?: string\n apiKey?: string\n}\n\ntype TranslationManagerOptions = {\n tolgee: Omit<TolgeeConfig, 'cdnHost' | 'apiUrl' | 'apiKey'>\n i18nOptions?: InitOptions\n localStorageKey?: string\n}\n\nexport class TranslationManager {\n private readonly tolgeeBase: Omit<TolgeeConfig, 'cdnHost' | 'apiUrl' | 'apiKey'>\n private tolgee: TolgeeConfig | null = null\n private readonly i18nOptions: InitOptions\n private readonly localStorageKey?: string\n private initPromise: Promise<void> | null = null\n\n constructor({ tolgee, i18nOptions = {}, localStorageKey }: TranslationManagerOptions) {\n this.tolgeeBase = tolgee\n this.i18nOptions = i18nOptions\n this.localStorageKey = localStorageKey\n }\n\n public readonly setEnvConfig = (config: TolgeeEnvConfig) => {\n this.tolgee = { ...this.tolgeeBase, ...config }\n }\n\n public readonly setLanguage = async (locale: Locale) => {\n this.persistLocale(locale)\n await this.ensureInitialized(locale)\n\n if (i18n.language !== locale) {\n await i18n.changeLanguage(locale)\n }\n }\n\n private readonly persistLocale = (locale: Locale) => {\n if (!this.localStorageKey) return\n localStorage.setItem(this.localStorageKey, locale)\n }\n\n private readonly getTolgeeConfig = (): TolgeeConfig => {\n if (!this.tolgee) {\n throw new Error('TranslationManager: setEnvConfig must be called before setLanguage')\n }\n return this.tolgee\n }\n\n private readonly ensureInitialized = async (locale: Locale) => {\n if (!this.initPromise) {\n this.initPromise = this.init(locale).catch((error) => {\n this.initPromise = null\n throw error\n })\n }\n await this.initPromise\n }\n\n private readonly init = async (locale: Locale) => {\n const config = this.getTolgeeConfig()\n const tolgee = config.isDev ? await this.initTolgeeDevTools() : this.initTolgeeCDN()\n\n await withTolgee(i18n, tolgee)\n .use(initReactI18next)\n .init({\n ...DEFAULT_I18N_OPTIONS,\n ...this.i18nOptions,\n lng: locale,\n })\n }\n\n private readonly createBaseTolgeeInstance = () => {\n const config = this.getTolgeeConfig()\n return Tolgee()\n .use(I18nextPlugin())\n .use(\n BackendFetch({\n prefix: `${config.cdnHost}/${config.projectId}`,\n })\n )\n }\n\n private readonly initTolgeeCDN = () => {\n return this.createBaseTolgeeInstance().init()\n }\n\n private readonly initTolgeeDevTools = async (): Promise<TolgeeInstance> => {\n const [{ InContextTools }, { DevBackend }] = await Promise.all([\n import('@tolgee/web/tools'),\n import('@tolgee/i18next'),\n ])\n\n const config = this.getTolgeeConfig()\n return this.createBaseTolgeeInstance()\n .use(DevBackend())\n .use(InContextTools())\n .init({\n apiUrl: config.apiUrl,\n apiKey: config.apiKey,\n fetch: (input, init) => {\n return fetch(input, { ...init, signal: AbortSignal.timeout(TOLGEE_DEV_TIMEOUT_MS) })\n },\n })\n }\n}\n","export enum TranslationNamespace {\n STUDENTS_WEB = 'students-web',\n TEACHERS_WEB = 'teachers-web',\n DISTRICT_DASH = 'district-dash',\n AUTH_WEB = 'auth-web',\n MAGMAMATH_FEATURES = 'magmamath-features',\n DRAW_BOARD = 'drawboard',\n STUDENTS_FEATURES = 'students-features',\n}\n"]}
|
|
@@ -12,15 +12,19 @@ var DEFAULT_I18N_OPTIONS = {
|
|
|
12
12
|
}
|
|
13
13
|
};
|
|
14
14
|
var TranslationManager = class {
|
|
15
|
-
|
|
15
|
+
tolgeeBase;
|
|
16
|
+
tolgee = null;
|
|
16
17
|
i18nOptions;
|
|
17
18
|
localStorageKey;
|
|
18
19
|
initPromise = null;
|
|
19
20
|
constructor({ tolgee, i18nOptions = {}, localStorageKey }) {
|
|
20
|
-
this.
|
|
21
|
+
this.tolgeeBase = tolgee;
|
|
21
22
|
this.i18nOptions = i18nOptions;
|
|
22
23
|
this.localStorageKey = localStorageKey;
|
|
23
24
|
}
|
|
25
|
+
setEnvConfig = (config) => {
|
|
26
|
+
this.tolgee = { ...this.tolgeeBase, ...config };
|
|
27
|
+
};
|
|
24
28
|
setLanguage = async (locale) => {
|
|
25
29
|
this.persistLocale(locale);
|
|
26
30
|
await this.ensureInitialized(locale);
|
|
@@ -32,6 +36,12 @@ var TranslationManager = class {
|
|
|
32
36
|
if (!this.localStorageKey) return;
|
|
33
37
|
localStorage.setItem(this.localStorageKey, locale);
|
|
34
38
|
};
|
|
39
|
+
getTolgeeConfig = () => {
|
|
40
|
+
if (!this.tolgee) {
|
|
41
|
+
throw new Error("TranslationManager: setEnvConfig must be called before setLanguage");
|
|
42
|
+
}
|
|
43
|
+
return this.tolgee;
|
|
44
|
+
};
|
|
35
45
|
ensureInitialized = async (locale) => {
|
|
36
46
|
if (!this.initPromise) {
|
|
37
47
|
this.initPromise = this.init(locale).catch((error) => {
|
|
@@ -42,7 +52,8 @@ var TranslationManager = class {
|
|
|
42
52
|
await this.initPromise;
|
|
43
53
|
};
|
|
44
54
|
init = async (locale) => {
|
|
45
|
-
const
|
|
55
|
+
const config = this.getTolgeeConfig();
|
|
56
|
+
const tolgee = config.isDev ? await this.initTolgeeDevTools() : this.initTolgeeCDN();
|
|
46
57
|
await withTolgee(i18n, tolgee).use(initReactI18next).init({
|
|
47
58
|
...DEFAULT_I18N_OPTIONS,
|
|
48
59
|
...this.i18nOptions,
|
|
@@ -50,9 +61,10 @@ var TranslationManager = class {
|
|
|
50
61
|
});
|
|
51
62
|
};
|
|
52
63
|
createBaseTolgeeInstance = () => {
|
|
64
|
+
const config = this.getTolgeeConfig();
|
|
53
65
|
return Tolgee().use(I18nextPlugin()).use(
|
|
54
66
|
BackendFetch({
|
|
55
|
-
prefix: `${
|
|
67
|
+
prefix: `${config.cdnHost}/${config.projectId}`
|
|
56
68
|
})
|
|
57
69
|
);
|
|
58
70
|
};
|
|
@@ -64,9 +76,10 @@ var TranslationManager = class {
|
|
|
64
76
|
import('@tolgee/web/tools'),
|
|
65
77
|
import('@tolgee/i18next')
|
|
66
78
|
]);
|
|
79
|
+
const config = this.getTolgeeConfig();
|
|
67
80
|
return this.createBaseTolgeeInstance().use(DevBackend()).use(InContextTools()).init({
|
|
68
|
-
apiUrl:
|
|
69
|
-
apiKey:
|
|
81
|
+
apiUrl: config.apiUrl,
|
|
82
|
+
apiKey: config.apiKey,
|
|
70
83
|
fetch: (input, init) => {
|
|
71
84
|
return fetch(input, { ...init, signal: AbortSignal.timeout(TOLGEE_DEV_TIMEOUT_MS) });
|
|
72
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/translation/TranslationManager.ts","../../src/translation/translation.constants.ts"],"names":["TranslationNamespace"],"mappings":";;;;;AAMA,IAAM,qBAAwB,GAAA,GAAA;AAE9B,IAAM,oBAAoC,GAAA;AAAA,EACxC,WAAa,EAAA,MAAA;AAAA,EACb,IAAM,EAAA,aAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,WAAa,EAAA;AAAA;AAEjB,CAAA;
|
|
1
|
+
{"version":3,"sources":["../../src/translation/TranslationManager.ts","../../src/translation/translation.constants.ts"],"names":["TranslationNamespace"],"mappings":"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","file":"index.mjs","sourcesContent":["import i18n, { InitOptions } from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport type { TolgeeInstance } from '@tolgee/i18next'\nimport { BackendFetch, I18nextPlugin, Tolgee, withTolgee } from '@tolgee/i18next'\nimport { Locale } from '../shared/constants/common.constants'\n\nconst TOLGEE_DEV_TIMEOUT_MS = 3000\n\nconst DEFAULT_I18N_OPTIONS: InitOptions = {\n fallbackLng: undefined,\n load: 'currentOnly',\n react: {\n useSuspense: false,\n },\n}\n\ntype TolgeeConfig = {\n isDev: boolean\n cdnHost: string\n projectId: string\n apiUrl?: string\n apiKey?: string\n}\n\ntype TolgeeEnvConfig = {\n cdnHost: string\n apiUrl?: string\n apiKey?: string\n}\n\ntype TranslationManagerOptions = {\n tolgee: Omit<TolgeeConfig, 'cdnHost' | 'apiUrl' | 'apiKey'>\n i18nOptions?: InitOptions\n localStorageKey?: string\n}\n\nexport class TranslationManager {\n private readonly tolgeeBase: Omit<TolgeeConfig, 'cdnHost' | 'apiUrl' | 'apiKey'>\n private tolgee: TolgeeConfig | null = null\n private readonly i18nOptions: InitOptions\n private readonly localStorageKey?: string\n private initPromise: Promise<void> | null = null\n\n constructor({ tolgee, i18nOptions = {}, localStorageKey }: TranslationManagerOptions) {\n this.tolgeeBase = tolgee\n this.i18nOptions = i18nOptions\n this.localStorageKey = localStorageKey\n }\n\n public readonly setEnvConfig = (config: TolgeeEnvConfig) => {\n this.tolgee = { ...this.tolgeeBase, ...config }\n }\n\n public readonly setLanguage = async (locale: Locale) => {\n this.persistLocale(locale)\n await this.ensureInitialized(locale)\n\n if (i18n.language !== locale) {\n await i18n.changeLanguage(locale)\n }\n }\n\n private readonly persistLocale = (locale: Locale) => {\n if (!this.localStorageKey) return\n localStorage.setItem(this.localStorageKey, locale)\n }\n\n private readonly getTolgeeConfig = (): TolgeeConfig => {\n if (!this.tolgee) {\n throw new Error('TranslationManager: setEnvConfig must be called before setLanguage')\n }\n return this.tolgee\n }\n\n private readonly ensureInitialized = async (locale: Locale) => {\n if (!this.initPromise) {\n this.initPromise = this.init(locale).catch((error) => {\n this.initPromise = null\n throw error\n })\n }\n await this.initPromise\n }\n\n private readonly init = async (locale: Locale) => {\n const config = this.getTolgeeConfig()\n const tolgee = config.isDev ? await this.initTolgeeDevTools() : this.initTolgeeCDN()\n\n await withTolgee(i18n, tolgee)\n .use(initReactI18next)\n .init({\n ...DEFAULT_I18N_OPTIONS,\n ...this.i18nOptions,\n lng: locale,\n })\n }\n\n private readonly createBaseTolgeeInstance = () => {\n const config = this.getTolgeeConfig()\n return Tolgee()\n .use(I18nextPlugin())\n .use(\n BackendFetch({\n prefix: `${config.cdnHost}/${config.projectId}`,\n })\n )\n }\n\n private readonly initTolgeeCDN = () => {\n return this.createBaseTolgeeInstance().init()\n }\n\n private readonly initTolgeeDevTools = async (): Promise<TolgeeInstance> => {\n const [{ InContextTools }, { DevBackend }] = await Promise.all([\n import('@tolgee/web/tools'),\n import('@tolgee/i18next'),\n ])\n\n const config = this.getTolgeeConfig()\n return this.createBaseTolgeeInstance()\n .use(DevBackend())\n .use(InContextTools())\n .init({\n apiUrl: config.apiUrl,\n apiKey: config.apiKey,\n fetch: (input, init) => {\n return fetch(input, { ...init, signal: AbortSignal.timeout(TOLGEE_DEV_TIMEOUT_MS) })\n },\n })\n }\n}\n","export enum TranslationNamespace {\n STUDENTS_WEB = 'students-web',\n TEACHERS_WEB = 'teachers-web',\n DISTRICT_DASH = 'district-dash',\n AUTH_WEB = 'auth-web',\n MAGMAMATH_FEATURES = 'magmamath-features',\n DRAW_BOARD = 'drawboard',\n STUDENTS_FEATURES = 'students-features',\n}\n"]}
|