@itwin/core-i18n 4.3.0-dev.4 → 4.3.0-dev.6

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/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # Change Log - @itwin/core-i18n
2
2
 
3
- This log was last generated on Fri, 06 Oct 2023 04:02:58 GMT and should not be manually modified.
3
+ This log was last generated on Tue, 10 Oct 2023 20:02:00 GMT and should not be manually modified.
4
+
5
+ ## 4.1.9
6
+ Tue, 10 Oct 2023 18:48:12 GMT
7
+
8
+ _Version update only_
4
9
 
5
10
  ## 4.1.8
6
11
  Fri, 06 Oct 2023 04:00:18 GMT
@@ -91,6 +96,11 @@ Mon, 22 May 2023 15:34:14 GMT
91
96
 
92
97
  - Update to eslint@8
93
98
 
99
+ ## 3.7.15
100
+ Tue, 10 Oct 2023 19:58:35 GMT
101
+
102
+ _Version update only_
103
+
94
104
  ## 3.7.14
95
105
  Fri, 29 Sep 2023 16:57:16 GMT
96
106
 
@@ -17,13 +17,13 @@
17
17
  /** @packageDocumentation
18
18
  * @module Localization
19
19
  */
20
- function cov_y5gyss7rk() {
21
- var path = "D:\\vsts_b\\6\\s\\core\\i18n\\lib\\cjs\\ITwinLocalization.js";
22
- var hash = "1e90d9a5aa7ed8423325c3ddef81cc83cd485cb3";
20
+ function cov_167rpsgqx8() {
21
+ var path = "D:\\vsts_b\\121\\s\\core\\i18n\\lib\\cjs\\ITwinLocalization.js";
22
+ var hash = "d628153cd90f80389e08ee045f0ab7245a6d07a6";
23
23
  var global = new Function("return this")();
24
24
  var gcv = "__coverage__";
25
25
  var coverageData = {
26
- path: "D:\\vsts_b\\6\\s\\core\\i18n\\lib\\cjs\\ITwinLocalization.js",
26
+ path: "D:\\vsts_b\\121\\s\\core\\i18n\\lib\\cjs\\ITwinLocalization.js",
27
27
  statementMap: {
28
28
  "0": {
29
29
  start: {
@@ -2270,13 +2270,13 @@ function cov_y5gyss7rk() {
2270
2270
  inputSourceMap: {
2271
2271
  version: 3,
2272
2272
  file: "ITwinLocalization.js",
2273
- sources: ["D:\\vsts_b\\6\\s\\core\\i18n\\src\\ITwinLocalization.ts"],
2273
+ sources: ["D:\\vsts_b\\121\\s\\core\\i18n\\src\\ITwinLocalization.ts"],
2274
2274
  names: [],
2275
2275
  mappings: "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",
2276
2276
  sourcesContent: ["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Localization\r\n */\r\n\r\nimport i18next, { i18n, InitOptions, Module, TOptionsBase } from \"i18next\";\r\nimport i18nextBrowserLanguageDetector, { DetectorOptions } from \"i18next-browser-languagedetector\";\r\nimport Backend, { BackendOptions } from \"i18next-http-backend\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport type { Localization } from \"@itwin/core-common\";\r\n\r\nconst DEFAULT_MAX_RETRIES: number = 1; // a low number prevents wasted time and potential timeouts when requesting localization files throws an error\r\n\r\n/** Options for ITwinLocalization\r\n * @public\r\n */\r\nexport interface LocalizationOptions {\r\n urlTemplate?: string;\r\n backendPlugin?: Module;\r\n detectorPlugin?: Module;\r\n initOptions?: InitOptions;\r\n backendHttpOptions?: BackendOptions;\r\n detectorOptions?: DetectorOptions;\r\n}\r\n\r\n/** Supplies localizations for iTwin.js\r\n * @note this class uses the [i18next](https://www.i18next.com/) package.\r\n * @public\r\n */\r\nexport class ITwinLocalization implements Localization {\r\n public i18next: i18n;\r\n private readonly _initOptions: InitOptions;\r\n private readonly _backendOptions: BackendOptions;\r\n private readonly _detectionOptions: DetectorOptions;\r\n private readonly _namespaces = new Map<string, Promise<void>>();\r\n\r\n public constructor(options?: LocalizationOptions) {\r\n this.i18next = i18next.createInstance();\r\n\r\n this._backendOptions = {\r\n loadPath: options?.urlTemplate ?? \"locales/{{lng}}/{{ns}}.json\",\r\n crossDomain: true,\r\n ...options?.backendHttpOptions,\r\n };\r\n\r\n this._detectionOptions = {\r\n order: [\"querystring\", \"navigator\", \"htmlTag\"],\r\n lookupQuerystring: \"lng\",\r\n caches: [],\r\n ...options?.detectorOptions,\r\n };\r\n\r\n this._initOptions = {\r\n interpolation: { escapeValue: true },\r\n fallbackLng: \"en\",\r\n maxRetries: DEFAULT_MAX_RETRIES,\r\n backend: this._backendOptions,\r\n detection: this._detectionOptions,\r\n ...options?.initOptions,\r\n };\r\n\r\n this.i18next\r\n .use(options?.detectorPlugin ?? i18nextBrowserLanguageDetector)\r\n .use(options?.backendPlugin ?? Backend)\r\n .use(TranslationLogger);\r\n }\r\n\r\n public async initialize(namespaces: string[]): Promise<void> {\r\n\r\n // Also consider namespaces passed into constructor\r\n const initNamespaces: string[] = [this._initOptions.ns || []].flat();\r\n const combinedNamespaces: Set<string> = new Set([...namespaces, ...initNamespaces]); // without duplicates\r\n\r\n const defaultNamespace: string | false | readonly string[] = this._initOptions.defaultNS ?? namespaces[0];\r\n if (defaultNamespace)\r\n combinedNamespaces.add(defaultNamespace as string); // Make sure default namespace is in namespaces list\r\n\r\n const initOptions: InitOptions = {\r\n ...this._initOptions,\r\n defaultNS: defaultNamespace,\r\n ns: [...combinedNamespaces],\r\n };\r\n\r\n // if in a development environment, set debugging\r\n if (process.env.NODE_ENV === \"development\")\r\n initOptions.debug = true;\r\n\r\n const initPromise = this.i18next.init(initOptions) as unknown as Promise<void>;\r\n\r\n for (const ns of namespaces)\r\n this._namespaces.set(ns, initPromise);\r\n\r\n return initPromise;\r\n }\r\n\r\n /** Replace all instances of `%{key}` within a string with the translations of those keys.\r\n * For example:\r\n * ``` ts\r\n * \"MyKeys\": {\r\n * \"Key1\": \"First value\",\r\n * \"Key2\": \"Second value\"\r\n * }\r\n * ```\r\n *\r\n * ``` ts\r\n * i18.translateKeys(\"string with %{MyKeys.Key1} followed by %{MyKeys.Key2}!\"\") // returns \"string with First Value followed by Second Value!\"\r\n * ```\r\n * @param line The input line, potentially containing %{keys}.\r\n * @returns The line with all %{keys} translated\r\n * @public\r\n */\r\n public getLocalizedKeys(line: string): string {\r\n return line.replace(/\\%\\{(.+?)\\}/g, (_match, tag) => this.getLocalizedString(tag));\r\n }\r\n\r\n /** Return the translated value of a key.\r\n * @param key - the key that matches a property in the JSON localization file.\r\n * @note The key includes the namespace, which identifies the particular localization file that contains the property,\r\n * followed by a colon, followed by the property in the JSON file.\r\n * For example:\r\n * ``` ts\r\n * const dataString: string = IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.BingDataAttribution\");\r\n * ```\r\n * assigns to dataString the string with property BackgroundMap.BingDataAttribution from the iModelJs.json localization file.\r\n * @returns The string corresponding to the first key that resolves.\r\n * @throws Error if no keys resolve to a string.\r\n * @public\r\n */\r\n public getLocalizedString(key: string | string[], options?: TOptionsBase): string {\r\n if (options?.returnDetails || options?.returnObjects) {\r\n throw new Error(\"Translation key must map to a string, but the given options will result in an object\");\r\n }\r\n\r\n const value = this.i18next.t(key, options);\r\n\r\n if (typeof value !== \"string\") {\r\n throw new Error(\"Translation key(s) string not found\");\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /** Similar to `getLocalizedString` but the default namespace is a separate parameter and the key does not need\r\n * to include a namespace. If a key includes a namespace, that namespace will be used for interpolating that key.\r\n * @param namespace - the namespace that identifies the particular localization file that contains the property.\r\n * @param key - the key that matches a property in the JSON localization file.\r\n * @returns The string corresponding to the first key that resolves.\r\n * @throws Error if no keys resolve to a string.\r\n * @internal\r\n */\r\n public getLocalizedStringWithNamespace(namespace: string, key: string | string[], options?: TOptionsBase): string {\r\n let fullKey: string | string[] = \"\";\r\n\r\n if (typeof key === \"string\") {\r\n fullKey = `${namespace}:${key}`;\r\n } else {\r\n fullKey = key.map((subKey: string) => {\r\n return `${namespace}:${subKey}`;\r\n });\r\n }\r\n\r\n return this.getLocalizedString(fullKey, options);\r\n }\r\n\r\n /** Gets the English translation.\r\n * @param namespace - the namespace that identifies the particular localization file that contains the property.\r\n * @param key - the key that matches a property in the JSON localization file.\r\n * @returns The string corresponding to the first key that resolves.\r\n * @throws Error if no keys resolve to a string.\r\n * @internal\r\n */\r\n public getEnglishString(namespace: string, key: string | string[], options?: TOptionsBase): string {\r\n if (options?.returnDetails || options?.returnObjects) {\r\n throw new Error(\"Translation key must map to a string, but the given options will result in an object\");\r\n }\r\n\r\n options = {\r\n ...options,\r\n ns: namespace, // ensure namespace argument is used\r\n };\r\n\r\n const en = this.i18next.getFixedT(\"en\", namespace);\r\n const str = en(key, options);\r\n if (typeof str !== \"string\")\r\n throw new Error(\"Translation key(s) not found\");\r\n\r\n return str;\r\n }\r\n\r\n /** Get the promise for an already registered Namespace.\r\n * @param name - the name of the namespace\r\n * @public\r\n */\r\n public getNamespacePromise(name: string): Promise<void> | undefined {\r\n return this._namespaces.get(name);\r\n }\r\n\r\n /** @internal */\r\n public getLanguageList(): readonly string[] {\r\n return this.i18next.languages;\r\n }\r\n\r\n /** override the language detected in the browser */\r\n public async changeLanguage(language: string) {\r\n return this.i18next.changeLanguage(language) as unknown as Promise<void>;\r\n }\r\n\r\n /** Register a new Namespace and return it. If the namespace is already registered, it will be returned.\r\n * @param name - the name of the namespace, which is the base name of the JSON file that contains the localization properties.\r\n * @note - The registerNamespace method starts fetching the appropriate version of the JSON localization file from the server,\r\n * based on the current locale. To make sure that fetch is complete before performing translations from this namespace, await\r\n * fulfillment of the readPromise Promise property of the returned LocalizationNamespace.\r\n * @see [Localization in iTwin.js]($docs/learning/frontend/Localization.md)\r\n * @public\r\n */\r\n public async registerNamespace(name: string): Promise<void> {\r\n const existing = this._namespaces.get(name);\r\n if (existing !== undefined)\r\n return existing;\r\n\r\n const theReadPromise = new Promise<void>((resolve) => {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.i18next.loadNamespaces(name, (err) => {\r\n if (!err)\r\n return resolve();\r\n\r\n // Here we got a non-null err object.\r\n // This method is called when the system has attempted to load the resources for the namespaces for each possible locale.\r\n // For example 'fr-ca' might be the most specific locale, in which case 'fr' and 'en' are fallback locales.\r\n // Using Backend from i18next-http-backend, err will be an array of strings of each namespace it tried to read and its locale.\r\n // There might be errs for some other namespaces as well as this one. We resolve the promise unless there's an error for each possible locale.\r\n let locales = this.getLanguageList().map((thisLocale: any) => `/${thisLocale}/`);\r\n\r\n try {\r\n for (const thisError of err) {\r\n if (typeof thisError === \"string\")\r\n locales = locales.filter((thisLocale) => !thisError.includes(thisLocale));\r\n }\r\n } catch (e) {\r\n locales = [];\r\n }\r\n // if we removed every locale from the array, it wasn't loaded.\r\n if (locales.length === 0)\r\n Logger.logError(\"i18n\", `No resources for namespace ${name} could be loaded`);\r\n\r\n resolve();\r\n });\r\n });\r\n this._namespaces.set(name, theReadPromise);\r\n return theReadPromise;\r\n }\r\n\r\n /** @internal */\r\n public unregisterNamespace(name: string): void {\r\n this._namespaces.delete(name);\r\n }\r\n}\r\n\r\nclass TranslationLogger {\r\n public static readonly type = \"logger\";\r\n public log(args: string[]) { Logger.logInfo(\"i18n\", this.createLogMessage(args)); }\r\n public warn(args: string[]) { Logger.logWarning(\"i18n\", this.createLogMessage(args)); }\r\n public error(args: string[]) { Logger.logError(\"i18n\", this.createLogMessage(args)); }\r\n private createLogMessage(args: string[]) {\r\n let message = args[0];\r\n for (let i = 1; i < args.length; ++i) {\r\n if (typeof args[i] === \"string\")\r\n message += `\\n ${args[i]}`;\r\n }\r\n return message;\r\n }\r\n}\r\n"]
2277
2277
  },
2278
2278
  _coverageSchema: "1a1c01bbd47fc00a2c39e90264f33305004495a9",
2279
- hash: "1e90d9a5aa7ed8423325c3ddef81cc83cd485cb3"
2279
+ hash: "d628153cd90f80389e08ee045f0ab7245a6d07a6"
2280
2280
  };
2281
2281
  var coverage = global[gcv] || (global[gcv] = {});
2282
2282
  if (!coverage[path] || coverage[path].hash !== hash) {
@@ -2285,56 +2285,56 @@ function cov_y5gyss7rk() {
2285
2285
  var actualCoverage = coverage[path];
2286
2286
  {
2287
2287
  // @ts-ignore
2288
- cov_y5gyss7rk = function () {
2288
+ cov_167rpsgqx8 = function () {
2289
2289
  return actualCoverage;
2290
2290
  };
2291
2291
  }
2292
2292
  return actualCoverage;
2293
2293
  }
2294
- cov_y5gyss7rk();
2295
- var __importDefault = (cov_y5gyss7rk().s[0]++, (cov_y5gyss7rk().b[0][0]++, this) && (cov_y5gyss7rk().b[0][1]++, this.__importDefault) || (cov_y5gyss7rk().b[0][2]++, function (mod) {
2296
- cov_y5gyss7rk().f[0]++;
2297
- cov_y5gyss7rk().s[1]++;
2298
- return (cov_y5gyss7rk().b[2][0]++, mod) && (cov_y5gyss7rk().b[2][1]++, mod.__esModule) ? (cov_y5gyss7rk().b[1][0]++, mod) : (cov_y5gyss7rk().b[1][1]++, {
2294
+ cov_167rpsgqx8();
2295
+ var __importDefault = (cov_167rpsgqx8().s[0]++, (cov_167rpsgqx8().b[0][0]++, this) && (cov_167rpsgqx8().b[0][1]++, this.__importDefault) || (cov_167rpsgqx8().b[0][2]++, function (mod) {
2296
+ cov_167rpsgqx8().f[0]++;
2297
+ cov_167rpsgqx8().s[1]++;
2298
+ return (cov_167rpsgqx8().b[2][0]++, mod) && (cov_167rpsgqx8().b[2][1]++, mod.__esModule) ? (cov_167rpsgqx8().b[1][0]++, mod) : (cov_167rpsgqx8().b[1][1]++, {
2299
2299
  "default": mod
2300
2300
  });
2301
2301
  }));
2302
- cov_y5gyss7rk().s[2]++;
2302
+ cov_167rpsgqx8().s[2]++;
2303
2303
  Object.defineProperty(exports, "__esModule", ({
2304
2304
  value: true
2305
2305
  }));
2306
- cov_y5gyss7rk().s[3]++;
2306
+ cov_167rpsgqx8().s[3]++;
2307
2307
  exports.ITwinLocalization = void 0;
2308
- const i18next_1 = (cov_y5gyss7rk().s[4]++, __importDefault(__webpack_require__(/*! i18next */ "../../common/temp/node_modules/.pnpm/i18next@21.10.0/node_modules/i18next/dist/cjs/i18next.js")));
2309
- const i18next_browser_languagedetector_1 = (cov_y5gyss7rk().s[5]++, __importDefault(__webpack_require__(/*! i18next-browser-languagedetector */ "../../common/temp/node_modules/.pnpm/i18next-browser-languagedetector@6.1.8/node_modules/i18next-browser-languagedetector/dist/cjs/i18nextBrowserLanguageDetector.js")));
2310
- const i18next_http_backend_1 = (cov_y5gyss7rk().s[6]++, __importDefault(__webpack_require__(/*! i18next-http-backend */ "../../common/temp/node_modules/.pnpm/i18next-http-backend@1.4.5/node_modules/i18next-http-backend/cjs/index.js")));
2311
- const core_bentley_1 = (cov_y5gyss7rk().s[7]++, __webpack_require__(/*! @itwin/core-bentley */ "../bentley/lib/esm/core-bentley.js"));
2312
- const DEFAULT_MAX_RETRIES = (cov_y5gyss7rk().s[8]++, 1); // a low number prevents wasted time and potential timeouts when requesting localization files throws an error
2308
+ const i18next_1 = (cov_167rpsgqx8().s[4]++, __importDefault(__webpack_require__(/*! i18next */ "../../common/temp/node_modules/.pnpm/i18next@21.10.0/node_modules/i18next/dist/cjs/i18next.js")));
2309
+ const i18next_browser_languagedetector_1 = (cov_167rpsgqx8().s[5]++, __importDefault(__webpack_require__(/*! i18next-browser-languagedetector */ "../../common/temp/node_modules/.pnpm/i18next-browser-languagedetector@6.1.8/node_modules/i18next-browser-languagedetector/dist/cjs/i18nextBrowserLanguageDetector.js")));
2310
+ const i18next_http_backend_1 = (cov_167rpsgqx8().s[6]++, __importDefault(__webpack_require__(/*! i18next-http-backend */ "../../common/temp/node_modules/.pnpm/i18next-http-backend@1.4.5/node_modules/i18next-http-backend/cjs/index.js")));
2311
+ const core_bentley_1 = (cov_167rpsgqx8().s[7]++, __webpack_require__(/*! @itwin/core-bentley */ "../bentley/lib/esm/core-bentley.js"));
2312
+ const DEFAULT_MAX_RETRIES = (cov_167rpsgqx8().s[8]++, 1); // a low number prevents wasted time and potential timeouts when requesting localization files throws an error
2313
2313
  /** Supplies localizations for iTwin.js
2314
2314
  * @note this class uses the [i18next](https://www.i18next.com/) package.
2315
2315
  * @public
2316
2316
  */
2317
2317
  class ITwinLocalization {
2318
2318
  constructor(options) {
2319
- cov_y5gyss7rk().f[1]++;
2320
- cov_y5gyss7rk().s[9]++;
2319
+ cov_167rpsgqx8().f[1]++;
2320
+ cov_167rpsgqx8().s[9]++;
2321
2321
  this._namespaces = new Map();
2322
- cov_y5gyss7rk().s[10]++;
2322
+ cov_167rpsgqx8().s[10]++;
2323
2323
  this.i18next = i18next_1.default.createInstance();
2324
- cov_y5gyss7rk().s[11]++;
2324
+ cov_167rpsgqx8().s[11]++;
2325
2325
  this._backendOptions = {
2326
- loadPath: (cov_y5gyss7rk().b[3][0]++, options?.urlTemplate) ?? (cov_y5gyss7rk().b[3][1]++, "locales/{{lng}}/{{ns}}.json"),
2326
+ loadPath: (cov_167rpsgqx8().b[3][0]++, options?.urlTemplate) ?? (cov_167rpsgqx8().b[3][1]++, "locales/{{lng}}/{{ns}}.json"),
2327
2327
  crossDomain: true,
2328
2328
  ...options?.backendHttpOptions
2329
2329
  };
2330
- cov_y5gyss7rk().s[12]++;
2330
+ cov_167rpsgqx8().s[12]++;
2331
2331
  this._detectionOptions = {
2332
2332
  order: ["querystring", "navigator", "htmlTag"],
2333
2333
  lookupQuerystring: "lng",
2334
2334
  caches: [],
2335
2335
  ...options?.detectorOptions
2336
2336
  };
2337
- cov_y5gyss7rk().s[13]++;
2337
+ cov_167rpsgqx8().s[13]++;
2338
2338
  this._initOptions = {
2339
2339
  interpolation: {
2340
2340
  escapeValue: true
@@ -2345,40 +2345,40 @@ class ITwinLocalization {
2345
2345
  detection: this._detectionOptions,
2346
2346
  ...options?.initOptions
2347
2347
  };
2348
- cov_y5gyss7rk().s[14]++;
2349
- this.i18next.use((cov_y5gyss7rk().b[4][0]++, options?.detectorPlugin) ?? (cov_y5gyss7rk().b[4][1]++, i18next_browser_languagedetector_1.default)).use((cov_y5gyss7rk().b[5][0]++, options?.backendPlugin) ?? (cov_y5gyss7rk().b[5][1]++, i18next_http_backend_1.default)).use(TranslationLogger);
2348
+ cov_167rpsgqx8().s[14]++;
2349
+ this.i18next.use((cov_167rpsgqx8().b[4][0]++, options?.detectorPlugin) ?? (cov_167rpsgqx8().b[4][1]++, i18next_browser_languagedetector_1.default)).use((cov_167rpsgqx8().b[5][0]++, options?.backendPlugin) ?? (cov_167rpsgqx8().b[5][1]++, i18next_http_backend_1.default)).use(TranslationLogger);
2350
2350
  }
2351
2351
  async initialize(namespaces) {
2352
- cov_y5gyss7rk().f[2]++;
2352
+ cov_167rpsgqx8().f[2]++;
2353
2353
  // Also consider namespaces passed into constructor
2354
- const initNamespaces = (cov_y5gyss7rk().s[15]++, [(cov_y5gyss7rk().b[6][0]++, this._initOptions.ns) || (cov_y5gyss7rk().b[6][1]++, [])].flat());
2355
- const combinedNamespaces = (cov_y5gyss7rk().s[16]++, new Set([...namespaces, ...initNamespaces])); // without duplicates
2356
- const defaultNamespace = (cov_y5gyss7rk().s[17]++, (cov_y5gyss7rk().b[7][0]++, this._initOptions.defaultNS) ?? (cov_y5gyss7rk().b[7][1]++, namespaces[0]));
2357
- cov_y5gyss7rk().s[18]++;
2354
+ const initNamespaces = (cov_167rpsgqx8().s[15]++, [(cov_167rpsgqx8().b[6][0]++, this._initOptions.ns) || (cov_167rpsgqx8().b[6][1]++, [])].flat());
2355
+ const combinedNamespaces = (cov_167rpsgqx8().s[16]++, new Set([...namespaces, ...initNamespaces])); // without duplicates
2356
+ const defaultNamespace = (cov_167rpsgqx8().s[17]++, (cov_167rpsgqx8().b[7][0]++, this._initOptions.defaultNS) ?? (cov_167rpsgqx8().b[7][1]++, namespaces[0]));
2357
+ cov_167rpsgqx8().s[18]++;
2358
2358
  if (defaultNamespace) {
2359
- cov_y5gyss7rk().b[8][0]++;
2360
- cov_y5gyss7rk().s[19]++;
2359
+ cov_167rpsgqx8().b[8][0]++;
2360
+ cov_167rpsgqx8().s[19]++;
2361
2361
  combinedNamespaces.add(defaultNamespace);
2362
2362
  } else {
2363
- cov_y5gyss7rk().b[8][1]++;
2363
+ cov_167rpsgqx8().b[8][1]++;
2364
2364
  } // Make sure default namespace is in namespaces list
2365
- const initOptions = (cov_y5gyss7rk().s[20]++, {
2365
+ const initOptions = (cov_167rpsgqx8().s[20]++, {
2366
2366
  ...this._initOptions,
2367
2367
  defaultNS: defaultNamespace,
2368
2368
  ns: [...combinedNamespaces]
2369
2369
  });
2370
2370
  // if in a development environment, set debugging
2371
- cov_y5gyss7rk().s[21]++;
2371
+ cov_167rpsgqx8().s[21]++;
2372
2372
  if (false) {} else {
2373
- cov_y5gyss7rk().b[9][1]++;
2373
+ cov_167rpsgqx8().b[9][1]++;
2374
2374
  }
2375
- const initPromise = (cov_y5gyss7rk().s[23]++, this.i18next.init(initOptions));
2376
- cov_y5gyss7rk().s[24]++;
2375
+ const initPromise = (cov_167rpsgqx8().s[23]++, this.i18next.init(initOptions));
2376
+ cov_167rpsgqx8().s[24]++;
2377
2377
  for (const ns of namespaces) {
2378
- cov_y5gyss7rk().s[25]++;
2378
+ cov_167rpsgqx8().s[25]++;
2379
2379
  this._namespaces.set(ns, initPromise);
2380
2380
  }
2381
- cov_y5gyss7rk().s[26]++;
2381
+ cov_167rpsgqx8().s[26]++;
2382
2382
  return initPromise;
2383
2383
  }
2384
2384
  /** Replace all instances of `%{key}` within a string with the translations of those keys.
@@ -2398,11 +2398,11 @@ class ITwinLocalization {
2398
2398
  * @public
2399
2399
  */
2400
2400
  getLocalizedKeys(line) {
2401
- cov_y5gyss7rk().f[3]++;
2402
- cov_y5gyss7rk().s[27]++;
2401
+ cov_167rpsgqx8().f[3]++;
2402
+ cov_167rpsgqx8().s[27]++;
2403
2403
  return line.replace(/\%\{(.+?)\}/g, (_match, tag) => {
2404
- cov_y5gyss7rk().f[4]++;
2405
- cov_y5gyss7rk().s[28]++;
2404
+ cov_167rpsgqx8().f[4]++;
2405
+ cov_167rpsgqx8().s[28]++;
2406
2406
  return this.getLocalizedString(tag);
2407
2407
  });
2408
2408
  }
@@ -2420,25 +2420,25 @@ class ITwinLocalization {
2420
2420
  * @public
2421
2421
  */
2422
2422
  getLocalizedString(key, options) {
2423
- cov_y5gyss7rk().f[5]++;
2424
- cov_y5gyss7rk().s[29]++;
2425
- if ((cov_y5gyss7rk().b[11][0]++, options?.returnDetails) || (cov_y5gyss7rk().b[11][1]++, options?.returnObjects)) {
2426
- cov_y5gyss7rk().b[10][0]++;
2427
- cov_y5gyss7rk().s[30]++;
2423
+ cov_167rpsgqx8().f[5]++;
2424
+ cov_167rpsgqx8().s[29]++;
2425
+ if ((cov_167rpsgqx8().b[11][0]++, options?.returnDetails) || (cov_167rpsgqx8().b[11][1]++, options?.returnObjects)) {
2426
+ cov_167rpsgqx8().b[10][0]++;
2427
+ cov_167rpsgqx8().s[30]++;
2428
2428
  throw new Error("Translation key must map to a string, but the given options will result in an object");
2429
2429
  } else {
2430
- cov_y5gyss7rk().b[10][1]++;
2430
+ cov_167rpsgqx8().b[10][1]++;
2431
2431
  }
2432
- const value = (cov_y5gyss7rk().s[31]++, this.i18next.t(key, options));
2433
- cov_y5gyss7rk().s[32]++;
2432
+ const value = (cov_167rpsgqx8().s[31]++, this.i18next.t(key, options));
2433
+ cov_167rpsgqx8().s[32]++;
2434
2434
  if (typeof value !== "string") {
2435
- cov_y5gyss7rk().b[12][0]++;
2436
- cov_y5gyss7rk().s[33]++;
2435
+ cov_167rpsgqx8().b[12][0]++;
2436
+ cov_167rpsgqx8().s[33]++;
2437
2437
  throw new Error("Translation key(s) string not found");
2438
2438
  } else {
2439
- cov_y5gyss7rk().b[12][1]++;
2439
+ cov_167rpsgqx8().b[12][1]++;
2440
2440
  }
2441
- cov_y5gyss7rk().s[34]++;
2441
+ cov_167rpsgqx8().s[34]++;
2442
2442
  return value;
2443
2443
  }
2444
2444
  /** Similar to `getLocalizedString` but the default namespace is a separate parameter and the key does not need
@@ -2450,23 +2450,23 @@ class ITwinLocalization {
2450
2450
  * @internal
2451
2451
  */
2452
2452
  getLocalizedStringWithNamespace(namespace, key, options) {
2453
- cov_y5gyss7rk().f[6]++;
2454
- let fullKey = (cov_y5gyss7rk().s[35]++, "");
2455
- cov_y5gyss7rk().s[36]++;
2453
+ cov_167rpsgqx8().f[6]++;
2454
+ let fullKey = (cov_167rpsgqx8().s[35]++, "");
2455
+ cov_167rpsgqx8().s[36]++;
2456
2456
  if (typeof key === "string") {
2457
- cov_y5gyss7rk().b[13][0]++;
2458
- cov_y5gyss7rk().s[37]++;
2457
+ cov_167rpsgqx8().b[13][0]++;
2458
+ cov_167rpsgqx8().s[37]++;
2459
2459
  fullKey = `${namespace}:${key}`;
2460
2460
  } else {
2461
- cov_y5gyss7rk().b[13][1]++;
2462
- cov_y5gyss7rk().s[38]++;
2461
+ cov_167rpsgqx8().b[13][1]++;
2462
+ cov_167rpsgqx8().s[38]++;
2463
2463
  fullKey = key.map(subKey => {
2464
- cov_y5gyss7rk().f[7]++;
2465
- cov_y5gyss7rk().s[39]++;
2464
+ cov_167rpsgqx8().f[7]++;
2465
+ cov_167rpsgqx8().s[39]++;
2466
2466
  return `${namespace}:${subKey}`;
2467
2467
  });
2468
2468
  }
2469
- cov_y5gyss7rk().s[40]++;
2469
+ cov_167rpsgqx8().s[40]++;
2470
2470
  return this.getLocalizedString(fullKey, options);
2471
2471
  }
2472
2472
  /** Gets the English translation.
@@ -2477,32 +2477,32 @@ class ITwinLocalization {
2477
2477
  * @internal
2478
2478
  */
2479
2479
  getEnglishString(namespace, key, options) {
2480
- cov_y5gyss7rk().f[8]++;
2481
- cov_y5gyss7rk().s[41]++;
2482
- if ((cov_y5gyss7rk().b[15][0]++, options?.returnDetails) || (cov_y5gyss7rk().b[15][1]++, options?.returnObjects)) {
2483
- cov_y5gyss7rk().b[14][0]++;
2484
- cov_y5gyss7rk().s[42]++;
2480
+ cov_167rpsgqx8().f[8]++;
2481
+ cov_167rpsgqx8().s[41]++;
2482
+ if ((cov_167rpsgqx8().b[15][0]++, options?.returnDetails) || (cov_167rpsgqx8().b[15][1]++, options?.returnObjects)) {
2483
+ cov_167rpsgqx8().b[14][0]++;
2484
+ cov_167rpsgqx8().s[42]++;
2485
2485
  throw new Error("Translation key must map to a string, but the given options will result in an object");
2486
2486
  } else {
2487
- cov_y5gyss7rk().b[14][1]++;
2487
+ cov_167rpsgqx8().b[14][1]++;
2488
2488
  }
2489
- cov_y5gyss7rk().s[43]++;
2489
+ cov_167rpsgqx8().s[43]++;
2490
2490
  options = {
2491
2491
  ...options,
2492
2492
  ns: namespace // ensure namespace argument is used
2493
2493
  };
2494
2494
 
2495
- const en = (cov_y5gyss7rk().s[44]++, this.i18next.getFixedT("en", namespace));
2496
- const str = (cov_y5gyss7rk().s[45]++, en(key, options));
2497
- cov_y5gyss7rk().s[46]++;
2495
+ const en = (cov_167rpsgqx8().s[44]++, this.i18next.getFixedT("en", namespace));
2496
+ const str = (cov_167rpsgqx8().s[45]++, en(key, options));
2497
+ cov_167rpsgqx8().s[46]++;
2498
2498
  if (typeof str !== "string") {
2499
- cov_y5gyss7rk().b[16][0]++;
2500
- cov_y5gyss7rk().s[47]++;
2499
+ cov_167rpsgqx8().b[16][0]++;
2500
+ cov_167rpsgqx8().s[47]++;
2501
2501
  throw new Error("Translation key(s) not found");
2502
2502
  } else {
2503
- cov_y5gyss7rk().b[16][1]++;
2503
+ cov_167rpsgqx8().b[16][1]++;
2504
2504
  }
2505
- cov_y5gyss7rk().s[48]++;
2505
+ cov_167rpsgqx8().s[48]++;
2506
2506
  return str;
2507
2507
  }
2508
2508
  /** Get the promise for an already registered Namespace.
@@ -2510,20 +2510,20 @@ class ITwinLocalization {
2510
2510
  * @public
2511
2511
  */
2512
2512
  getNamespacePromise(name) {
2513
- cov_y5gyss7rk().f[9]++;
2514
- cov_y5gyss7rk().s[49]++;
2513
+ cov_167rpsgqx8().f[9]++;
2514
+ cov_167rpsgqx8().s[49]++;
2515
2515
  return this._namespaces.get(name);
2516
2516
  }
2517
2517
  /** @internal */
2518
2518
  getLanguageList() {
2519
- cov_y5gyss7rk().f[10]++;
2520
- cov_y5gyss7rk().s[50]++;
2519
+ cov_167rpsgqx8().f[10]++;
2520
+ cov_167rpsgqx8().s[50]++;
2521
2521
  return this.i18next.languages;
2522
2522
  }
2523
2523
  /** override the language detected in the browser */
2524
2524
  async changeLanguage(language) {
2525
- cov_y5gyss7rk().f[11]++;
2526
- cov_y5gyss7rk().s[51]++;
2525
+ cov_167rpsgqx8().f[11]++;
2526
+ cov_167rpsgqx8().s[51]++;
2527
2527
  return this.i18next.changeLanguage(language);
2528
2528
  }
2529
2529
  /** Register a new Namespace and return it. If the namespace is already registered, it will be returned.
@@ -2535,123 +2535,123 @@ class ITwinLocalization {
2535
2535
  * @public
2536
2536
  */
2537
2537
  async registerNamespace(name) {
2538
- cov_y5gyss7rk().f[12]++;
2539
- const existing = (cov_y5gyss7rk().s[52]++, this._namespaces.get(name));
2540
- cov_y5gyss7rk().s[53]++;
2538
+ cov_167rpsgqx8().f[12]++;
2539
+ const existing = (cov_167rpsgqx8().s[52]++, this._namespaces.get(name));
2540
+ cov_167rpsgqx8().s[53]++;
2541
2541
  if (existing !== undefined) {
2542
- cov_y5gyss7rk().b[17][0]++;
2543
- cov_y5gyss7rk().s[54]++;
2542
+ cov_167rpsgqx8().b[17][0]++;
2543
+ cov_167rpsgqx8().s[54]++;
2544
2544
  return existing;
2545
2545
  } else {
2546
- cov_y5gyss7rk().b[17][1]++;
2546
+ cov_167rpsgqx8().b[17][1]++;
2547
2547
  }
2548
- const theReadPromise = (cov_y5gyss7rk().s[55]++, new Promise(resolve => {
2549
- cov_y5gyss7rk().f[13]++;
2550
- cov_y5gyss7rk().s[56]++;
2548
+ const theReadPromise = (cov_167rpsgqx8().s[55]++, new Promise(resolve => {
2549
+ cov_167rpsgqx8().f[13]++;
2550
+ cov_167rpsgqx8().s[56]++;
2551
2551
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
2552
2552
  this.i18next.loadNamespaces(name, err => {
2553
- cov_y5gyss7rk().f[14]++;
2554
- cov_y5gyss7rk().s[57]++;
2553
+ cov_167rpsgqx8().f[14]++;
2554
+ cov_167rpsgqx8().s[57]++;
2555
2555
  if (!err) {
2556
- cov_y5gyss7rk().b[18][0]++;
2557
- cov_y5gyss7rk().s[58]++;
2556
+ cov_167rpsgqx8().b[18][0]++;
2557
+ cov_167rpsgqx8().s[58]++;
2558
2558
  return resolve();
2559
2559
  } else {
2560
- cov_y5gyss7rk().b[18][1]++;
2560
+ cov_167rpsgqx8().b[18][1]++;
2561
2561
  }
2562
2562
  // Here we got a non-null err object.
2563
2563
  // This method is called when the system has attempted to load the resources for the namespaces for each possible locale.
2564
2564
  // For example 'fr-ca' might be the most specific locale, in which case 'fr' and 'en' are fallback locales.
2565
2565
  // Using Backend from i18next-http-backend, err will be an array of strings of each namespace it tried to read and its locale.
2566
2566
  // There might be errs for some other namespaces as well as this one. We resolve the promise unless there's an error for each possible locale.
2567
- let locales = (cov_y5gyss7rk().s[59]++, this.getLanguageList().map(thisLocale => {
2568
- cov_y5gyss7rk().f[15]++;
2569
- cov_y5gyss7rk().s[60]++;
2567
+ let locales = (cov_167rpsgqx8().s[59]++, this.getLanguageList().map(thisLocale => {
2568
+ cov_167rpsgqx8().f[15]++;
2569
+ cov_167rpsgqx8().s[60]++;
2570
2570
  return `/${thisLocale}/`;
2571
2571
  }));
2572
- cov_y5gyss7rk().s[61]++;
2572
+ cov_167rpsgqx8().s[61]++;
2573
2573
  try {
2574
- cov_y5gyss7rk().s[62]++;
2574
+ cov_167rpsgqx8().s[62]++;
2575
2575
  for (const thisError of err) {
2576
- cov_y5gyss7rk().s[63]++;
2576
+ cov_167rpsgqx8().s[63]++;
2577
2577
  if (typeof thisError === "string") {
2578
- cov_y5gyss7rk().b[19][0]++;
2579
- cov_y5gyss7rk().s[64]++;
2578
+ cov_167rpsgqx8().b[19][0]++;
2579
+ cov_167rpsgqx8().s[64]++;
2580
2580
  locales = locales.filter(thisLocale => {
2581
- cov_y5gyss7rk().f[16]++;
2582
- cov_y5gyss7rk().s[65]++;
2581
+ cov_167rpsgqx8().f[16]++;
2582
+ cov_167rpsgqx8().s[65]++;
2583
2583
  return !thisError.includes(thisLocale);
2584
2584
  });
2585
2585
  } else {
2586
- cov_y5gyss7rk().b[19][1]++;
2586
+ cov_167rpsgqx8().b[19][1]++;
2587
2587
  }
2588
2588
  }
2589
2589
  } catch (e) {
2590
- cov_y5gyss7rk().s[66]++;
2590
+ cov_167rpsgqx8().s[66]++;
2591
2591
  locales = [];
2592
2592
  }
2593
2593
  // if we removed every locale from the array, it wasn't loaded.
2594
- cov_y5gyss7rk().s[67]++;
2594
+ cov_167rpsgqx8().s[67]++;
2595
2595
  if (locales.length === 0) {
2596
- cov_y5gyss7rk().b[20][0]++;
2597
- cov_y5gyss7rk().s[68]++;
2596
+ cov_167rpsgqx8().b[20][0]++;
2597
+ cov_167rpsgqx8().s[68]++;
2598
2598
  core_bentley_1.Logger.logError("i18n", `No resources for namespace ${name} could be loaded`);
2599
2599
  } else {
2600
- cov_y5gyss7rk().b[20][1]++;
2600
+ cov_167rpsgqx8().b[20][1]++;
2601
2601
  }
2602
- cov_y5gyss7rk().s[69]++;
2602
+ cov_167rpsgqx8().s[69]++;
2603
2603
  resolve();
2604
2604
  });
2605
2605
  }));
2606
- cov_y5gyss7rk().s[70]++;
2606
+ cov_167rpsgqx8().s[70]++;
2607
2607
  this._namespaces.set(name, theReadPromise);
2608
- cov_y5gyss7rk().s[71]++;
2608
+ cov_167rpsgqx8().s[71]++;
2609
2609
  return theReadPromise;
2610
2610
  }
2611
2611
  /** @internal */
2612
2612
  unregisterNamespace(name) {
2613
- cov_y5gyss7rk().f[17]++;
2614
- cov_y5gyss7rk().s[72]++;
2613
+ cov_167rpsgqx8().f[17]++;
2614
+ cov_167rpsgqx8().s[72]++;
2615
2615
  this._namespaces.delete(name);
2616
2616
  }
2617
2617
  }
2618
- cov_y5gyss7rk().s[73]++;
2618
+ cov_167rpsgqx8().s[73]++;
2619
2619
  exports.ITwinLocalization = ITwinLocalization;
2620
2620
  class TranslationLogger {
2621
2621
  log(args) {
2622
- cov_y5gyss7rk().f[18]++;
2623
- cov_y5gyss7rk().s[74]++;
2622
+ cov_167rpsgqx8().f[18]++;
2623
+ cov_167rpsgqx8().s[74]++;
2624
2624
  core_bentley_1.Logger.logInfo("i18n", this.createLogMessage(args));
2625
2625
  }
2626
2626
  warn(args) {
2627
- cov_y5gyss7rk().f[19]++;
2628
- cov_y5gyss7rk().s[75]++;
2627
+ cov_167rpsgqx8().f[19]++;
2628
+ cov_167rpsgqx8().s[75]++;
2629
2629
  core_bentley_1.Logger.logWarning("i18n", this.createLogMessage(args));
2630
2630
  }
2631
2631
  error(args) {
2632
- cov_y5gyss7rk().f[20]++;
2633
- cov_y5gyss7rk().s[76]++;
2632
+ cov_167rpsgqx8().f[20]++;
2633
+ cov_167rpsgqx8().s[76]++;
2634
2634
  core_bentley_1.Logger.logError("i18n", this.createLogMessage(args));
2635
2635
  }
2636
2636
  createLogMessage(args) {
2637
- cov_y5gyss7rk().f[21]++;
2638
- let message = (cov_y5gyss7rk().s[77]++, args[0]);
2639
- cov_y5gyss7rk().s[78]++;
2640
- for (let i = (cov_y5gyss7rk().s[79]++, 1); i < args.length; ++i) {
2641
- cov_y5gyss7rk().s[80]++;
2637
+ cov_167rpsgqx8().f[21]++;
2638
+ let message = (cov_167rpsgqx8().s[77]++, args[0]);
2639
+ cov_167rpsgqx8().s[78]++;
2640
+ for (let i = (cov_167rpsgqx8().s[79]++, 1); i < args.length; ++i) {
2641
+ cov_167rpsgqx8().s[80]++;
2642
2642
  if (typeof args[i] === "string") {
2643
- cov_y5gyss7rk().b[21][0]++;
2644
- cov_y5gyss7rk().s[81]++;
2643
+ cov_167rpsgqx8().b[21][0]++;
2644
+ cov_167rpsgqx8().s[81]++;
2645
2645
  message += `\n ${args[i]}`;
2646
2646
  } else {
2647
- cov_y5gyss7rk().b[21][1]++;
2647
+ cov_167rpsgqx8().b[21][1]++;
2648
2648
  }
2649
2649
  }
2650
- cov_y5gyss7rk().s[82]++;
2650
+ cov_167rpsgqx8().s[82]++;
2651
2651
  return message;
2652
2652
  }
2653
2653
  }
2654
- cov_y5gyss7rk().s[83]++;
2654
+ cov_167rpsgqx8().s[83]++;
2655
2655
  TranslationLogger.type = "logger";
2656
2656
 
2657
2657
  /***/ }),