@magmamath/frontend-config 1.1.2-rc.9 → 1.1.2

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/package.json CHANGED
@@ -1,21 +1,9 @@
1
1
  {
2
2
  "name": "@magmamath/frontend-config",
3
- "version": "1.1.2-rc.9",
3
+ "version": "1.1.2",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",
7
- "exports": {
8
- ".": {
9
- "types": "./dist/index.d.ts",
10
- "import": "./dist/index.mjs",
11
- "require": "./dist/index.js"
12
- },
13
- "./translation": {
14
- "types": "./dist/translation/index.d.ts",
15
- "import": "./dist/translation/index.mjs",
16
- "require": "./dist/translation/index.js"
17
- }
18
- },
19
7
  "license": "ISC",
20
8
  "files": [
21
9
  "dist/**"
@@ -33,25 +21,17 @@
33
21
  },
34
22
  "peerDependencies": {
35
23
  "effector": "^23.4.4",
36
- "i18next": ">=23",
37
24
  "react": "^18",
38
25
  "react-dom": "^18",
39
- "react-i18next": ">=14",
40
- "react-native-svg": "15.13.0",
41
- "@tolgee/i18next": ">=5",
42
- "@tolgee/web": ">=5"
26
+ "react-native-svg": "15.13.0"
43
27
  },
44
28
  "dependencies": {},
45
29
  "devDependencies": {
46
- "@tolgee/i18next": "^5.0.0",
47
- "@tolgee/web": "^5.0.0",
48
30
  "@types/node": "^18.0.0",
49
31
  "@types/react": "^19.2.2",
50
32
  "effector": "^23.4.4",
51
33
  "eslint": "^8.57.0",
52
- "i18next": "^23.0.0",
53
34
  "react": "^18",
54
- "react-i18next": "^14.0.0",
55
35
  "react-native-svg": "15.13.0",
56
36
  "rimraf": "^5.0.0",
57
37
  "tsup": "^8.0.0",
@@ -1,81 +0,0 @@
1
- declare enum Platform {
2
- STUDENTS_WEB = "STUDENTS",
3
- TEACHERS_WEB = "TEACHERS",
4
- DISTRICT_DASHBOARD = "DISTRICT",
5
- AUTH_WEB = "AUTH_WEB",
6
- WEB_ADMIN = "WEB_ADMIN",
7
- MOBILE = "MOBILE"
8
- }
9
- declare enum Environment {
10
- MARS = "MARS",
11
- VENUS = "VENUS",
12
- PROD = "PROD"
13
- }
14
- declare enum PlatformBuildTarget {
15
- PLUTO = "pluto",
16
- MARS = "mars",
17
- VENUS = "pre-release",
18
- PROD = "production"
19
- }
20
- declare enum Locale {
21
- US = "en-SE",
22
- SE = "sv-SE",
23
- GB = "en-GB",
24
- CA = "en-CA",
25
- SCT = "en-SCT",
26
- DE = "de-DE"
27
- }
28
- declare enum Source {
29
- MATTEAPPEN = 0,
30
- SKOLON = 1,
31
- SKOLFEDERATION = 2,
32
- GOOGLE = 3,
33
- MICROSOFT = 4,
34
- CLEVER = 5,
35
- APPLE = 6,
36
- MATHSYNC = 7,
37
- CLASSLINK = 8,
38
- EDUCLOUD = 9,
39
- EGIL = 10,
40
- WONDE = 12,
41
- SCHOOLOGY = 13,
42
- SEEMIS = 14,
43
- IMPORT = 15,
44
- CANVAS = 16
45
- }
46
- declare enum LoginSource {
47
- MAGMA = 0,
48
- CLEVER = 1,
49
- CLASS_LINK = 2,
50
- SKOLON = 3,
51
- SKOLFEDERATION = 4,
52
- GOOGLE = 5,
53
- MICROSOFT = 6,
54
- APPLE = 7,
55
- SCHOOLOGY = 8,
56
- MY_LOGIN = 9
57
- }
58
- declare enum SSO {
59
- APPLE = "APPLE",
60
- GOOGLE = "GOOGLE",
61
- MICROSOFT = "MICROSOFT",
62
- CLEVER = "CLEVER",
63
- SCHOOLOGY = "SCHOOLOGY",
64
- CLASS_LINK = "CLASS_LINK",
65
- SKOLFEDERATION = "SKOLFEDERATION",
66
- SKOLON = "SKOLON",
67
- WONDE = "WONDE",
68
- CANVAS = "CANVAS",
69
- QR_CODE = "QR_CODE"
70
- }
71
- declare enum ApiRegion {
72
- MAIN = "MAIN",
73
- CANADA = "CANADA"
74
- }
75
- declare enum QRCodeSize {
76
- DEFAULT = "default",
77
- MEDIUM = "medium",
78
- LARGE = "large"
79
- }
80
-
81
- export { ApiRegion as A, Environment as E, LoginSource as L, Platform as P, QRCodeSize as Q, SSO as S, Locale as a, PlatformBuildTarget as b, Source as c };
@@ -1,81 +0,0 @@
1
- declare enum Platform {
2
- STUDENTS_WEB = "STUDENTS",
3
- TEACHERS_WEB = "TEACHERS",
4
- DISTRICT_DASHBOARD = "DISTRICT",
5
- AUTH_WEB = "AUTH_WEB",
6
- WEB_ADMIN = "WEB_ADMIN",
7
- MOBILE = "MOBILE"
8
- }
9
- declare enum Environment {
10
- MARS = "MARS",
11
- VENUS = "VENUS",
12
- PROD = "PROD"
13
- }
14
- declare enum PlatformBuildTarget {
15
- PLUTO = "pluto",
16
- MARS = "mars",
17
- VENUS = "pre-release",
18
- PROD = "production"
19
- }
20
- declare enum Locale {
21
- US = "en-SE",
22
- SE = "sv-SE",
23
- GB = "en-GB",
24
- CA = "en-CA",
25
- SCT = "en-SCT",
26
- DE = "de-DE"
27
- }
28
- declare enum Source {
29
- MATTEAPPEN = 0,
30
- SKOLON = 1,
31
- SKOLFEDERATION = 2,
32
- GOOGLE = 3,
33
- MICROSOFT = 4,
34
- CLEVER = 5,
35
- APPLE = 6,
36
- MATHSYNC = 7,
37
- CLASSLINK = 8,
38
- EDUCLOUD = 9,
39
- EGIL = 10,
40
- WONDE = 12,
41
- SCHOOLOGY = 13,
42
- SEEMIS = 14,
43
- IMPORT = 15,
44
- CANVAS = 16
45
- }
46
- declare enum LoginSource {
47
- MAGMA = 0,
48
- CLEVER = 1,
49
- CLASS_LINK = 2,
50
- SKOLON = 3,
51
- SKOLFEDERATION = 4,
52
- GOOGLE = 5,
53
- MICROSOFT = 6,
54
- APPLE = 7,
55
- SCHOOLOGY = 8,
56
- MY_LOGIN = 9
57
- }
58
- declare enum SSO {
59
- APPLE = "APPLE",
60
- GOOGLE = "GOOGLE",
61
- MICROSOFT = "MICROSOFT",
62
- CLEVER = "CLEVER",
63
- SCHOOLOGY = "SCHOOLOGY",
64
- CLASS_LINK = "CLASS_LINK",
65
- SKOLFEDERATION = "SKOLFEDERATION",
66
- SKOLON = "SKOLON",
67
- WONDE = "WONDE",
68
- CANVAS = "CANVAS",
69
- QR_CODE = "QR_CODE"
70
- }
71
- declare enum ApiRegion {
72
- MAIN = "MAIN",
73
- CANADA = "CANADA"
74
- }
75
- declare enum QRCodeSize {
76
- DEFAULT = "default",
77
- MEDIUM = "medium",
78
- LARGE = "large"
79
- }
80
-
81
- export { ApiRegion as A, Environment as E, LoginSource as L, Platform as P, QRCodeSize as Q, SSO as S, Locale as a, PlatformBuildTarget as b, Source as c };
@@ -1,49 +0,0 @@
1
- import { InitOptions } from 'i18next';
2
- import { a as Locale } from '../common.constants-ClvjFWRr.mjs';
3
-
4
- type TolgeeConfig = {
5
- isDev: boolean;
6
- cdnHost: string;
7
- projectId: string;
8
- apiUrl?: string;
9
- apiKey?: string;
10
- };
11
- type TolgeeEnvConfig = {
12
- cdnHost: string;
13
- apiUrl?: string;
14
- apiKey?: string;
15
- };
16
- type TranslationManagerOptions = {
17
- tolgee: Omit<TolgeeConfig, 'cdnHost' | 'apiUrl' | 'apiKey'>;
18
- i18nOptions?: InitOptions;
19
- localStorageKey?: string;
20
- };
21
- declare class TranslationManager {
22
- private readonly tolgeeBase;
23
- private tolgee;
24
- private readonly i18nOptions;
25
- private readonly localStorageKey?;
26
- private initPromise;
27
- constructor({ tolgee, i18nOptions, localStorageKey }: TranslationManagerOptions);
28
- readonly setEnvConfig: (config: TolgeeEnvConfig) => void;
29
- readonly setLanguage: (locale: Locale) => Promise<void>;
30
- private readonly persistLocale;
31
- private readonly getTolgeeConfig;
32
- private readonly ensureInitialized;
33
- private readonly init;
34
- private readonly createBaseTolgeeInstance;
35
- private readonly initTolgeeCDN;
36
- private readonly initTolgeeDevTools;
37
- }
38
-
39
- declare enum TranslationNamespace {
40
- STUDENTS_WEB = "students-web",
41
- TEACHERS_WEB = "teachers-web",
42
- DISTRICT_DASH = "district-dash",
43
- AUTH_WEB = "auth-web",
44
- MAGMAMATH_FEATURES = "magmamath-features",
45
- DRAW_BOARD = "drawboard",
46
- STUDENTS_FEATURES = "students-features"
47
- }
48
-
49
- export { TranslationManager, TranslationNamespace };
@@ -1,49 +0,0 @@
1
- import { InitOptions } from 'i18next';
2
- import { a as Locale } from '../common.constants-ClvjFWRr.js';
3
-
4
- type TolgeeConfig = {
5
- isDev: boolean;
6
- cdnHost: string;
7
- projectId: string;
8
- apiUrl?: string;
9
- apiKey?: string;
10
- };
11
- type TolgeeEnvConfig = {
12
- cdnHost: string;
13
- apiUrl?: string;
14
- apiKey?: string;
15
- };
16
- type TranslationManagerOptions = {
17
- tolgee: Omit<TolgeeConfig, 'cdnHost' | 'apiUrl' | 'apiKey'>;
18
- i18nOptions?: InitOptions;
19
- localStorageKey?: string;
20
- };
21
- declare class TranslationManager {
22
- private readonly tolgeeBase;
23
- private tolgee;
24
- private readonly i18nOptions;
25
- private readonly localStorageKey?;
26
- private initPromise;
27
- constructor({ tolgee, i18nOptions, localStorageKey }: TranslationManagerOptions);
28
- readonly setEnvConfig: (config: TolgeeEnvConfig) => void;
29
- readonly setLanguage: (locale: Locale) => Promise<void>;
30
- private readonly persistLocale;
31
- private readonly getTolgeeConfig;
32
- private readonly ensureInitialized;
33
- private readonly init;
34
- private readonly createBaseTolgeeInstance;
35
- private readonly initTolgeeCDN;
36
- private readonly initTolgeeDevTools;
37
- }
38
-
39
- declare enum TranslationNamespace {
40
- STUDENTS_WEB = "students-web",
41
- TEACHERS_WEB = "teachers-web",
42
- DISTRICT_DASH = "district-dash",
43
- AUTH_WEB = "auth-web",
44
- MAGMAMATH_FEATURES = "magmamath-features",
45
- DRAW_BOARD = "drawboard",
46
- STUDENTS_FEATURES = "students-features"
47
- }
48
-
49
- export { TranslationManager, TranslationNamespace };
@@ -1,111 +0,0 @@
1
- 'use strict';
2
-
3
- var i18n = require('i18next');
4
- var reactI18next = require('react-i18next');
5
- var i18next = require('@tolgee/i18next');
6
-
7
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
-
9
- var i18n__default = /*#__PURE__*/_interopDefault(i18n);
10
-
11
- // src/translation/TranslationManager.ts
12
- var TOLGEE_DEV_TIMEOUT_MS = 3e3;
13
- var DEFAULT_I18N_OPTIONS = {
14
- fallbackLng: void 0,
15
- load: "currentOnly",
16
- react: {
17
- useSuspense: false
18
- }
19
- };
20
- var TranslationManager = class {
21
- tolgeeBase;
22
- tolgee = null;
23
- i18nOptions;
24
- localStorageKey;
25
- initPromise = null;
26
- constructor({ tolgee, i18nOptions = {}, localStorageKey }) {
27
- this.tolgeeBase = tolgee;
28
- this.i18nOptions = i18nOptions;
29
- this.localStorageKey = localStorageKey;
30
- }
31
- setEnvConfig = (config) => {
32
- this.tolgee = { ...this.tolgeeBase, ...config };
33
- };
34
- setLanguage = async (locale) => {
35
- this.persistLocale(locale);
36
- await this.ensureInitialized(locale);
37
- if (i18n__default.default.language !== locale) {
38
- await i18n__default.default.changeLanguage(locale);
39
- }
40
- };
41
- persistLocale = (locale) => {
42
- if (!this.localStorageKey) return;
43
- localStorage.setItem(this.localStorageKey, locale);
44
- };
45
- getTolgeeConfig = () => {
46
- if (!this.tolgee) {
47
- throw new Error("TranslationManager: setEnvConfig must be called before setLanguage");
48
- }
49
- return this.tolgee;
50
- };
51
- ensureInitialized = async (locale) => {
52
- if (!this.initPromise) {
53
- this.initPromise = this.init(locale).catch((error) => {
54
- this.initPromise = null;
55
- throw error;
56
- });
57
- }
58
- await this.initPromise;
59
- };
60
- init = async (locale) => {
61
- const config = this.getTolgeeConfig();
62
- const tolgee = config.isDev ? await this.initTolgeeDevTools() : this.initTolgeeCDN();
63
- await i18next.withTolgee(i18n__default.default, tolgee).use(reactI18next.initReactI18next).init({
64
- ...DEFAULT_I18N_OPTIONS,
65
- ...this.i18nOptions,
66
- lng: locale
67
- });
68
- };
69
- createBaseTolgeeInstance = () => {
70
- const config = this.getTolgeeConfig();
71
- return i18next.Tolgee().use(i18next.I18nextPlugin()).use(
72
- i18next.BackendFetch({
73
- prefix: `${config.cdnHost}/${config.projectId}`
74
- })
75
- );
76
- };
77
- initTolgeeCDN = () => {
78
- return this.createBaseTolgeeInstance().init();
79
- };
80
- initTolgeeDevTools = async () => {
81
- const [{ InContextTools }, { DevBackend }] = await Promise.all([
82
- import('@tolgee/web/tools'),
83
- import('@tolgee/i18next')
84
- ]);
85
- const config = this.getTolgeeConfig();
86
- return this.createBaseTolgeeInstance().use(DevBackend()).use(InContextTools()).init({
87
- apiUrl: config.apiUrl,
88
- apiKey: config.apiKey,
89
- fetch: (input, init) => {
90
- return fetch(input, { ...init, signal: AbortSignal.timeout(TOLGEE_DEV_TIMEOUT_MS) });
91
- }
92
- });
93
- };
94
- };
95
-
96
- // src/translation/translation.constants.ts
97
- var TranslationNamespace = /* @__PURE__ */ ((TranslationNamespace2) => {
98
- TranslationNamespace2["STUDENTS_WEB"] = "students-web";
99
- TranslationNamespace2["TEACHERS_WEB"] = "teachers-web";
100
- TranslationNamespace2["DISTRICT_DASH"] = "district-dash";
101
- TranslationNamespace2["AUTH_WEB"] = "auth-web";
102
- TranslationNamespace2["MAGMAMATH_FEATURES"] = "magmamath-features";
103
- TranslationNamespace2["DRAW_BOARD"] = "drawboard";
104
- TranslationNamespace2["STUDENTS_FEATURES"] = "students-features";
105
- return TranslationNamespace2;
106
- })(TranslationNamespace || {});
107
-
108
- exports.TranslationManager = TranslationManager;
109
- exports.TranslationNamespace = TranslationNamespace;
110
- //# sourceMappingURL=index.js.map
111
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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"]}
@@ -1,104 +0,0 @@
1
- import i18n from 'i18next';
2
- import { initReactI18next } from 'react-i18next';
3
- import { withTolgee, Tolgee, I18nextPlugin, BackendFetch } from '@tolgee/i18next';
4
-
5
- // src/translation/TranslationManager.ts
6
- var TOLGEE_DEV_TIMEOUT_MS = 3e3;
7
- var DEFAULT_I18N_OPTIONS = {
8
- fallbackLng: void 0,
9
- load: "currentOnly",
10
- react: {
11
- useSuspense: false
12
- }
13
- };
14
- var TranslationManager = class {
15
- tolgeeBase;
16
- tolgee = null;
17
- i18nOptions;
18
- localStorageKey;
19
- initPromise = null;
20
- constructor({ tolgee, i18nOptions = {}, localStorageKey }) {
21
- this.tolgeeBase = tolgee;
22
- this.i18nOptions = i18nOptions;
23
- this.localStorageKey = localStorageKey;
24
- }
25
- setEnvConfig = (config) => {
26
- this.tolgee = { ...this.tolgeeBase, ...config };
27
- };
28
- setLanguage = async (locale) => {
29
- this.persistLocale(locale);
30
- await this.ensureInitialized(locale);
31
- if (i18n.language !== locale) {
32
- await i18n.changeLanguage(locale);
33
- }
34
- };
35
- persistLocale = (locale) => {
36
- if (!this.localStorageKey) return;
37
- localStorage.setItem(this.localStorageKey, locale);
38
- };
39
- getTolgeeConfig = () => {
40
- if (!this.tolgee) {
41
- throw new Error("TranslationManager: setEnvConfig must be called before setLanguage");
42
- }
43
- return this.tolgee;
44
- };
45
- ensureInitialized = async (locale) => {
46
- if (!this.initPromise) {
47
- this.initPromise = this.init(locale).catch((error) => {
48
- this.initPromise = null;
49
- throw error;
50
- });
51
- }
52
- await this.initPromise;
53
- };
54
- init = async (locale) => {
55
- const config = this.getTolgeeConfig();
56
- const tolgee = config.isDev ? await this.initTolgeeDevTools() : this.initTolgeeCDN();
57
- await withTolgee(i18n, tolgee).use(initReactI18next).init({
58
- ...DEFAULT_I18N_OPTIONS,
59
- ...this.i18nOptions,
60
- lng: locale
61
- });
62
- };
63
- createBaseTolgeeInstance = () => {
64
- const config = this.getTolgeeConfig();
65
- return Tolgee().use(I18nextPlugin()).use(
66
- BackendFetch({
67
- prefix: `${config.cdnHost}/${config.projectId}`
68
- })
69
- );
70
- };
71
- initTolgeeCDN = () => {
72
- return this.createBaseTolgeeInstance().init();
73
- };
74
- initTolgeeDevTools = async () => {
75
- const [{ InContextTools }, { DevBackend }] = await Promise.all([
76
- import('@tolgee/web/tools'),
77
- import('@tolgee/i18next')
78
- ]);
79
- const config = this.getTolgeeConfig();
80
- return this.createBaseTolgeeInstance().use(DevBackend()).use(InContextTools()).init({
81
- apiUrl: config.apiUrl,
82
- apiKey: config.apiKey,
83
- fetch: (input, init) => {
84
- return fetch(input, { ...init, signal: AbortSignal.timeout(TOLGEE_DEV_TIMEOUT_MS) });
85
- }
86
- });
87
- };
88
- };
89
-
90
- // src/translation/translation.constants.ts
91
- var TranslationNamespace = /* @__PURE__ */ ((TranslationNamespace2) => {
92
- TranslationNamespace2["STUDENTS_WEB"] = "students-web";
93
- TranslationNamespace2["TEACHERS_WEB"] = "teachers-web";
94
- TranslationNamespace2["DISTRICT_DASH"] = "district-dash";
95
- TranslationNamespace2["AUTH_WEB"] = "auth-web";
96
- TranslationNamespace2["MAGMAMATH_FEATURES"] = "magmamath-features";
97
- TranslationNamespace2["DRAW_BOARD"] = "drawboard";
98
- TranslationNamespace2["STUDENTS_FEATURES"] = "students-features";
99
- return TranslationNamespace2;
100
- })(TranslationNamespace || {});
101
-
102
- export { TranslationManager, TranslationNamespace };
103
- //# sourceMappingURL=index.mjs.map
104
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
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"]}