@magmamath/frontend-config 1.1.2-rc.17 → 1.1.2-rc.19

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.
@@ -94,10 +94,13 @@ var TranslationManager = class {
94
94
  return this.createBaseTolgeeInstance().init();
95
95
  };
96
96
  initTolgeeDevTools = async () => {
97
+ console.log("pre backend");
97
98
  const { DevBackend } = await import('@tolgee/i18next');
99
+ console.log("post");
98
100
  const config = this.tolgee;
99
101
  const instance = this.createBaseTolgeeInstance().use(DevBackend());
100
102
  if (!config.isMobile) {
103
+ console.log("context tools");
101
104
  const { InContextTools } = await import('@tolgee/web/tools');
102
105
  instance.use(InContextTools());
103
106
  }
@@ -105,9 +108,10 @@ var TranslationManager = class {
105
108
  apiUrl: config.apiUrl,
106
109
  apiKey: config.apiKey,
107
110
  fetch: (input, init) => {
111
+ const url = typeof input === "string" ? input.replace(/\/\?/, "?") : input;
108
112
  const controller = new AbortController();
109
113
  setTimeout(() => controller.abort(), TOLGEE_DEV_TIMEOUT_MS);
110
- return fetch(input, { ...init, signal: controller.signal });
114
+ return fetch(url, { ...init, signal: controller.signal });
111
115
  }
112
116
  });
113
117
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/translation/translation.constants.ts","../../src/translation/TranslationManager.ts"],"names":["TranslationNamespace","i18n","withTolgee","initReactI18next","Tolgee","I18nextPlugin","BackendFetch"],"mappings":"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","file":"index.js","sourcesContent":["import { InitOptions } from 'i18next'\n\nexport enum TranslationNamespace {\n STUDENTS_WEB = 'students-web',\n TEACHERS_WEB = 'teachers-web',\n DISTRICT_DASH = 'district-dash',\n AUTH_WEB = 'auth-web',\n MOBILE = 'mobile',\n MAGMAMATH_FEATURES = 'magmamath-features',\n DRAW_BOARD = 'drawboard',\n STUDENTS_FEATURES = 'students-features',\n SHARED = 'shared',\n}\n\nexport const TOLGEE_DEV_TIMEOUT_MS = 3000\n\nexport const DEFAULT_I18N_OPTIONS: InitOptions = {\n fallbackLng: undefined,\n load: 'currentOnly',\n react: {\n useSuspense: false,\n },\n interpolation: {\n escapeValue: false,\n },\n}\n","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'\nimport { TolgeeBaseConfig, TolgeeConfig, TolgeeEnvConfig, TranslationManagerOptions } from './translation.types'\nimport { DEFAULT_I18N_OPTIONS, TOLGEE_DEV_TIMEOUT_MS } from './translation.constants'\n\nexport type OnInitCallback = (locale: Locale) => void\n\nexport class TranslationManager {\n private readonly tolgeeBase: TolgeeBaseConfig\n private tolgee: TolgeeConfig | null = null\n private readonly i18nOptions: InitOptions\n private readonly localStorageKey?: string\n private readonly onInitCallbacks: OnInitCallback[] = []\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 onInit = (callback: OnInitCallback) => {\n this.onInitCallbacks.push(callback)\n }\n\n public readonly init = async (locale: Locale, envConfig: TolgeeEnvConfig) => {\n this.tolgee = { ...this.tolgeeBase, ...envConfig }\n\n if (!this.initPromise) {\n this.initPromise = this.initI18n(locale).catch((error) => {\n this.initPromise = null\n throw error\n })\n }\n await this.initPromise\n }\n\n public readonly setLanguage = async (locale: Locale) => {\n if (!i18n.isInitialized) return\n\n this.persistLocale(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 || typeof localStorage === 'undefined') return\n localStorage.setItem(this.localStorageKey, locale)\n }\n\n private readonly initI18n = async (locale: Locale) => {\n const config = this.tolgee!\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 this.onInitCallbacks.forEach((callback) => callback(locale))\n }\n\n private readonly createBaseTolgeeInstance = () => {\n const config = this.tolgee!\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 { DevBackend } = await import('@tolgee/i18next')\n\n const config = this.tolgee!\n const instance = this.createBaseTolgeeInstance().use(DevBackend())\n\n if (!config.isMobile) {\n const { InContextTools } = await import('@tolgee/web/tools')\n instance.use(InContextTools())\n }\n\n return instance.init({\n apiUrl: config.apiUrl,\n apiKey: config.apiKey,\n fetch: (input, init) => {\n const controller = new AbortController()\n setTimeout(() => controller.abort(), TOLGEE_DEV_TIMEOUT_MS)\n return fetch(input, { ...init, signal: controller.signal })\n },\n })\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/translation/translation.constants.ts","../../src/translation/TranslationManager.ts"],"names":["TranslationNamespace","i18n","withTolgee","initReactI18next","Tolgee","I18nextPlugin","BackendFetch"],"mappings":"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","file":"index.js","sourcesContent":["import { InitOptions } from 'i18next'\n\nexport enum TranslationNamespace {\n STUDENTS_WEB = 'students-web',\n TEACHERS_WEB = 'teachers-web',\n DISTRICT_DASH = 'district-dash',\n AUTH_WEB = 'auth-web',\n MOBILE = 'mobile',\n MAGMAMATH_FEATURES = 'magmamath-features',\n DRAW_BOARD = 'drawboard',\n STUDENTS_FEATURES = 'students-features',\n SHARED = 'shared',\n}\n\nexport const TOLGEE_DEV_TIMEOUT_MS = 3000\n\nexport const DEFAULT_I18N_OPTIONS: InitOptions = {\n fallbackLng: undefined,\n load: 'currentOnly',\n react: {\n useSuspense: false,\n },\n interpolation: {\n escapeValue: false,\n },\n}\n","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'\nimport { TolgeeBaseConfig, TolgeeConfig, TolgeeEnvConfig, TranslationManagerOptions } from './translation.types'\nimport { DEFAULT_I18N_OPTIONS, TOLGEE_DEV_TIMEOUT_MS } from './translation.constants'\n\nexport type OnInitCallback = (locale: Locale) => void\n\nexport class TranslationManager {\n private readonly tolgeeBase: TolgeeBaseConfig\n private tolgee: TolgeeConfig | null = null\n private readonly i18nOptions: InitOptions\n private readonly localStorageKey?: string\n private readonly onInitCallbacks: OnInitCallback[] = []\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 onInit = (callback: OnInitCallback) => {\n this.onInitCallbacks.push(callback)\n }\n\n public readonly init = async (locale: Locale, envConfig: TolgeeEnvConfig) => {\n this.tolgee = { ...this.tolgeeBase, ...envConfig }\n\n if (!this.initPromise) {\n this.initPromise = this.initI18n(locale).catch((error) => {\n this.initPromise = null\n throw error\n })\n }\n await this.initPromise\n }\n\n public readonly setLanguage = async (locale: Locale) => {\n if (!i18n.isInitialized) return\n\n this.persistLocale(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 || typeof localStorage === 'undefined') return\n localStorage.setItem(this.localStorageKey, locale)\n }\n\n private readonly initI18n = async (locale: Locale) => {\n const config = this.tolgee!\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 this.onInitCallbacks.forEach((callback) => callback(locale))\n }\n\n private readonly createBaseTolgeeInstance = () => {\n const config = this.tolgee!\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 console.log('pre backend')\n const { DevBackend } = await import('@tolgee/i18next')\n console.log('post')\n\n const config = this.tolgee!\n const instance = this.createBaseTolgeeInstance().use(DevBackend())\n\n if (!config.isMobile) {\n console.log('context tools')\n const { InContextTools } = await import('@tolgee/web/tools')\n instance.use(InContextTools())\n }\n\n return instance.init({\n apiUrl: config.apiUrl,\n apiKey: config.apiKey,\n fetch: (input, init) => {\n const url = typeof input === 'string' ? input.replace(/\\/\\?/, '?') : input\n const controller = new AbortController()\n setTimeout(() => controller.abort(), TOLGEE_DEV_TIMEOUT_MS)\n return fetch(url, { ...init, signal: controller.signal })\n },\n })\n }\n}\n"]}
@@ -88,10 +88,13 @@ var TranslationManager = class {
88
88
  return this.createBaseTolgeeInstance().init();
89
89
  };
90
90
  initTolgeeDevTools = async () => {
91
+ console.log("pre backend");
91
92
  const { DevBackend } = await import('@tolgee/i18next');
93
+ console.log("post");
92
94
  const config = this.tolgee;
93
95
  const instance = this.createBaseTolgeeInstance().use(DevBackend());
94
96
  if (!config.isMobile) {
97
+ console.log("context tools");
95
98
  const { InContextTools } = await import('@tolgee/web/tools');
96
99
  instance.use(InContextTools());
97
100
  }
@@ -99,9 +102,10 @@ var TranslationManager = class {
99
102
  apiUrl: config.apiUrl,
100
103
  apiKey: config.apiKey,
101
104
  fetch: (input, init) => {
105
+ const url = typeof input === "string" ? input.replace(/\/\?/, "?") : input;
102
106
  const controller = new AbortController();
103
107
  setTimeout(() => controller.abort(), TOLGEE_DEV_TIMEOUT_MS);
104
- return fetch(input, { ...init, signal: controller.signal });
108
+ return fetch(url, { ...init, signal: controller.signal });
105
109
  }
106
110
  });
107
111
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/translation/translation.constants.ts","../../src/translation/TranslationManager.ts"],"names":["TranslationNamespace"],"mappings":";;;;;;;AAEY,IAAA,oBAAA,qBAAAA,qBAAL,KAAA;AACL,EAAAA,sBAAA,cAAe,CAAA,GAAA,cAAA;AACf,EAAAA,sBAAA,cAAe,CAAA,GAAA,cAAA;AACf,EAAAA,sBAAA,eAAgB,CAAA,GAAA,eAAA;AAChB,EAAAA,sBAAA,UAAW,CAAA,GAAA,UAAA;AACX,EAAAA,sBAAA,QAAS,CAAA,GAAA,QAAA;AACT,EAAAA,sBAAA,oBAAqB,CAAA,GAAA,oBAAA;AACrB,EAAAA,sBAAA,YAAa,CAAA,GAAA,WAAA;AACb,EAAAA,sBAAA,mBAAoB,CAAA,GAAA,mBAAA;AACpB,EAAAA,sBAAA,QAAS,CAAA,GAAA,QAAA;AATC,EAAAA,OAAAA,qBAAAA;AAAA,CAAA,EAAA,oBAAA,IAAA,EAAA;AAYL,IAAM,qBAAwB,GAAA,GAAA;AAE9B,IAAM,oBAAoC,GAAA;AAAA,EAC/C,WAAa,EAAA,MAAA;AAAA,EACb,IAAM,EAAA,aAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,WAAa,EAAA;AAAA,GACf;AAAA,EACA,aAAe,EAAA;AAAA,IACb,WAAa,EAAA;AAAA;AAEjB,CAAA;;;ACfO,IAAM,qBAAN,MAAyB;AAAA,EACb,UAAA;AAAA,EACT,MAA8B,GAAA,IAAA;AAAA,EACrB,WAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAoC,EAAC;AAAA,EAC9C,WAAoC,GAAA,IAAA;AAAA,EAE5C,YAAY,EAAE,MAAA,EAAQ,cAAc,EAAC,EAAG,iBAA8C,EAAA;AACpF,IAAA,IAAA,CAAK,UAAa,GAAA,MAAA;AAClB,IAAA,IAAA,CAAK,WAAc,GAAA,WAAA;AACnB,IAAA,IAAA,CAAK,eAAkB,GAAA,eAAA;AAAA;AACzB,EAEgB,MAAA,GAAS,CAAC,QAA6B,KAAA;AACrD,IAAK,IAAA,CAAA,eAAA,CAAgB,KAAK,QAAQ,CAAA;AAAA,GACpC;AAAA,EAEgB,IAAA,GAAO,OAAO,MAAA,EAAgB,SAA+B,KAAA;AAC3E,IAAA,IAAA,CAAK,SAAS,EAAE,GAAG,IAAK,CAAA,UAAA,EAAY,GAAG,SAAU,EAAA;AAEjD,IAAI,IAAA,CAAC,KAAK,WAAa,EAAA;AACrB,MAAA,IAAA,CAAK,cAAc,IAAK,CAAA,QAAA,CAAS,MAAM,CAAE,CAAA,KAAA,CAAM,CAAC,KAAU,KAAA;AACxD,QAAA,IAAA,CAAK,WAAc,GAAA,IAAA;AACnB,QAAM,MAAA,KAAA;AAAA,OACP,CAAA;AAAA;AAEH,IAAA,MAAM,IAAK,CAAA,WAAA;AAAA,GACb;AAAA,EAEgB,WAAA,GAAc,OAAO,MAAmB,KAAA;AACtD,IAAI,IAAA,CAAC,KAAK,aAAe,EAAA;AAEzB,IAAA,IAAA,CAAK,cAAc,MAAM,CAAA;AAEzB,IAAI,IAAA,IAAA,CAAK,aAAa,MAAQ,EAAA;AAC5B,MAAM,MAAA,IAAA,CAAK,eAAe,MAAM,CAAA;AAAA;AAClC,GACF;AAAA,EAEiB,aAAA,GAAgB,CAAC,MAAmB,KAAA;AACnD,IAAA,IAAI,CAAC,IAAA,CAAK,eAAmB,IAAA,OAAO,iBAAiB,WAAa,EAAA;AAClE,IAAa,YAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,eAAA,EAAiB,MAAM,CAAA;AAAA,GACnD;AAAA,EAEiB,QAAA,GAAW,OAAO,MAAmB,KAAA;AACpD,IAAA,MAAM,SAAS,IAAK,CAAA,MAAA;AACpB,IAAM,MAAA,MAAA,GAAS,OAAO,KAAQ,GAAA,MAAM,KAAK,kBAAmB,EAAA,GAAI,KAAK,aAAc,EAAA;AAEnF,IAAA,MAAM,WAAW,IAAM,EAAA,MAAM,EAC1B,GAAI,CAAA,gBAAgB,EACpB,IAAK,CAAA;AAAA,MACJ,GAAG,oBAAA;AAAA,MACH,GAAG,IAAK,CAAA,WAAA;AAAA,MACR,GAAK,EAAA;AAAA,KACN,CAAA;AAEH,IAAA,IAAA,CAAK,gBAAgB,OAAQ,CAAA,CAAC,QAAa,KAAA,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA,GAC7D;AAAA,EAEiB,2BAA2B,MAAM;AAChD,IAAA,MAAM,SAAS,IAAK,CAAA,MAAA;AACpB,IAAA,OAAO,MAAO,EAAA,CACX,GAAI,CAAA,aAAA,EAAe,CACnB,CAAA,GAAA;AAAA,MACC,YAAa,CAAA;AAAA,QACX,QAAQ,CAAG,EAAA,MAAA,CAAO,OAAO,CAAA,CAAA,EAAI,OAAO,SAAS,CAAA;AAAA,OAC9C;AAAA,KACH;AAAA,GACJ;AAAA,EAEiB,gBAAgB,MAAM;AACrC,IAAO,OAAA,IAAA,CAAK,wBAAyB,EAAA,CAAE,IAAK,EAAA;AAAA,GAC9C;AAAA,EAEiB,qBAAqB,YAAqC;AACzE,IAAA,MAAM,EAAE,UAAA,EAAe,GAAA,MAAM,OAAO,iBAAiB,CAAA;AAErD,IAAA,MAAM,SAAS,IAAK,CAAA,MAAA;AACpB,IAAA,MAAM,WAAW,IAAK,CAAA,wBAAA,EAA2B,CAAA,GAAA,CAAI,YAAY,CAAA;AAEjE,IAAI,IAAA,CAAC,OAAO,QAAU,EAAA;AACpB,MAAA,MAAM,EAAE,cAAA,EAAmB,GAAA,MAAM,OAAO,mBAAmB,CAAA;AAC3D,MAAS,QAAA,CAAA,GAAA,CAAI,gBAAgB,CAAA;AAAA;AAG/B,IAAA,OAAO,SAAS,IAAK,CAAA;AAAA,MACnB,QAAQ,MAAO,CAAA,MAAA;AAAA,MACf,QAAQ,MAAO,CAAA,MAAA;AAAA,MACf,KAAA,EAAO,CAAC,KAAA,EAAO,IAAS,KAAA;AACtB,QAAM,MAAA,UAAA,GAAa,IAAI,eAAgB,EAAA;AACvC,QAAA,UAAA,CAAW,MAAM,UAAA,CAAW,KAAM,EAAA,EAAG,qBAAqB,CAAA;AAC1D,QAAO,OAAA,KAAA,CAAM,OAAO,EAAE,GAAG,MAAM,MAAQ,EAAA,UAAA,CAAW,QAAQ,CAAA;AAAA;AAC5D,KACD,CAAA;AAAA,GACH;AACF","file":"index.mjs","sourcesContent":["import { InitOptions } from 'i18next'\n\nexport enum TranslationNamespace {\n STUDENTS_WEB = 'students-web',\n TEACHERS_WEB = 'teachers-web',\n DISTRICT_DASH = 'district-dash',\n AUTH_WEB = 'auth-web',\n MOBILE = 'mobile',\n MAGMAMATH_FEATURES = 'magmamath-features',\n DRAW_BOARD = 'drawboard',\n STUDENTS_FEATURES = 'students-features',\n SHARED = 'shared',\n}\n\nexport const TOLGEE_DEV_TIMEOUT_MS = 3000\n\nexport const DEFAULT_I18N_OPTIONS: InitOptions = {\n fallbackLng: undefined,\n load: 'currentOnly',\n react: {\n useSuspense: false,\n },\n interpolation: {\n escapeValue: false,\n },\n}\n","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'\nimport { TolgeeBaseConfig, TolgeeConfig, TolgeeEnvConfig, TranslationManagerOptions } from './translation.types'\nimport { DEFAULT_I18N_OPTIONS, TOLGEE_DEV_TIMEOUT_MS } from './translation.constants'\n\nexport type OnInitCallback = (locale: Locale) => void\n\nexport class TranslationManager {\n private readonly tolgeeBase: TolgeeBaseConfig\n private tolgee: TolgeeConfig | null = null\n private readonly i18nOptions: InitOptions\n private readonly localStorageKey?: string\n private readonly onInitCallbacks: OnInitCallback[] = []\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 onInit = (callback: OnInitCallback) => {\n this.onInitCallbacks.push(callback)\n }\n\n public readonly init = async (locale: Locale, envConfig: TolgeeEnvConfig) => {\n this.tolgee = { ...this.tolgeeBase, ...envConfig }\n\n if (!this.initPromise) {\n this.initPromise = this.initI18n(locale).catch((error) => {\n this.initPromise = null\n throw error\n })\n }\n await this.initPromise\n }\n\n public readonly setLanguage = async (locale: Locale) => {\n if (!i18n.isInitialized) return\n\n this.persistLocale(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 || typeof localStorage === 'undefined') return\n localStorage.setItem(this.localStorageKey, locale)\n }\n\n private readonly initI18n = async (locale: Locale) => {\n const config = this.tolgee!\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 this.onInitCallbacks.forEach((callback) => callback(locale))\n }\n\n private readonly createBaseTolgeeInstance = () => {\n const config = this.tolgee!\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 { DevBackend } = await import('@tolgee/i18next')\n\n const config = this.tolgee!\n const instance = this.createBaseTolgeeInstance().use(DevBackend())\n\n if (!config.isMobile) {\n const { InContextTools } = await import('@tolgee/web/tools')\n instance.use(InContextTools())\n }\n\n return instance.init({\n apiUrl: config.apiUrl,\n apiKey: config.apiKey,\n fetch: (input, init) => {\n const controller = new AbortController()\n setTimeout(() => controller.abort(), TOLGEE_DEV_TIMEOUT_MS)\n return fetch(input, { ...init, signal: controller.signal })\n },\n })\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/translation/translation.constants.ts","../../src/translation/TranslationManager.ts"],"names":["TranslationNamespace"],"mappings":"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","file":"index.mjs","sourcesContent":["import { InitOptions } from 'i18next'\n\nexport enum TranslationNamespace {\n STUDENTS_WEB = 'students-web',\n TEACHERS_WEB = 'teachers-web',\n DISTRICT_DASH = 'district-dash',\n AUTH_WEB = 'auth-web',\n MOBILE = 'mobile',\n MAGMAMATH_FEATURES = 'magmamath-features',\n DRAW_BOARD = 'drawboard',\n STUDENTS_FEATURES = 'students-features',\n SHARED = 'shared',\n}\n\nexport const TOLGEE_DEV_TIMEOUT_MS = 3000\n\nexport const DEFAULT_I18N_OPTIONS: InitOptions = {\n fallbackLng: undefined,\n load: 'currentOnly',\n react: {\n useSuspense: false,\n },\n interpolation: {\n escapeValue: false,\n },\n}\n","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'\nimport { TolgeeBaseConfig, TolgeeConfig, TolgeeEnvConfig, TranslationManagerOptions } from './translation.types'\nimport { DEFAULT_I18N_OPTIONS, TOLGEE_DEV_TIMEOUT_MS } from './translation.constants'\n\nexport type OnInitCallback = (locale: Locale) => void\n\nexport class TranslationManager {\n private readonly tolgeeBase: TolgeeBaseConfig\n private tolgee: TolgeeConfig | null = null\n private readonly i18nOptions: InitOptions\n private readonly localStorageKey?: string\n private readonly onInitCallbacks: OnInitCallback[] = []\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 onInit = (callback: OnInitCallback) => {\n this.onInitCallbacks.push(callback)\n }\n\n public readonly init = async (locale: Locale, envConfig: TolgeeEnvConfig) => {\n this.tolgee = { ...this.tolgeeBase, ...envConfig }\n\n if (!this.initPromise) {\n this.initPromise = this.initI18n(locale).catch((error) => {\n this.initPromise = null\n throw error\n })\n }\n await this.initPromise\n }\n\n public readonly setLanguage = async (locale: Locale) => {\n if (!i18n.isInitialized) return\n\n this.persistLocale(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 || typeof localStorage === 'undefined') return\n localStorage.setItem(this.localStorageKey, locale)\n }\n\n private readonly initI18n = async (locale: Locale) => {\n const config = this.tolgee!\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 this.onInitCallbacks.forEach((callback) => callback(locale))\n }\n\n private readonly createBaseTolgeeInstance = () => {\n const config = this.tolgee!\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 console.log('pre backend')\n const { DevBackend } = await import('@tolgee/i18next')\n console.log('post')\n\n const config = this.tolgee!\n const instance = this.createBaseTolgeeInstance().use(DevBackend())\n\n if (!config.isMobile) {\n console.log('context tools')\n const { InContextTools } = await import('@tolgee/web/tools')\n instance.use(InContextTools())\n }\n\n return instance.init({\n apiUrl: config.apiUrl,\n apiKey: config.apiKey,\n fetch: (input, init) => {\n const url = typeof input === 'string' ? input.replace(/\\/\\?/, '?') : input\n const controller = new AbortController()\n setTimeout(() => controller.abort(), TOLGEE_DEV_TIMEOUT_MS)\n return fetch(url, { ...init, signal: controller.signal })\n },\n })\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magmamath/frontend-config",
3
- "version": "1.1.2-rc.17",
3
+ "version": "1.1.2-rc.19",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",