starta.microservice 0.1.12764 → 0.1.12787

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.
@@ -17,6 +17,11 @@ export declare class TranslationHelper {
17
17
  constructor(translationsDir: string, defaultLanguage?: LanguageEnum);
18
18
  private loadTranslations;
19
19
  private replaceParameters;
20
+ /**
21
+ * Finds multiline keys (key__1, key__2, ...) and joins them with newlines.
22
+ * Returns null if no multiline keys found.
23
+ */
24
+ private getMultilineTranslation;
20
25
  getTranslation(language: LanguageEnum | undefined | null, key: string, params?: Record<string, string | number>): string;
21
26
  getAvailableLanguages(): LanguageEnum[];
22
27
  getAvailableKeys(): string[];
@@ -128,22 +128,45 @@ class TranslationHelper {
128
128
  return params[key] !== undefined ? String(params[key]) : match;
129
129
  });
130
130
  }
131
+ /**
132
+ * Finds multiline keys (key__1, key__2, ...) and joins them with newlines.
133
+ * Returns null if no multiline keys found.
134
+ */
135
+ getMultilineTranslation(dict, key) {
136
+ if (!dict)
137
+ return null;
138
+ const lines = [];
139
+ let lineNum = 1;
140
+ while (`${key}__${lineNum}` in dict) {
141
+ lines.push(dict[`${key}__${lineNum}`]);
142
+ lineNum++;
143
+ }
144
+ return lines.length > 0 ? lines.join('\n') : null;
145
+ }
131
146
  getTranslation(language, key, params) {
132
147
  const normalizedLang = language ?? this.defaultLanguage;
133
148
  const dict = this.dictionaries[normalizedLang] ??
134
149
  this.dictionaries[this.defaultLanguage];
135
- let translation;
150
+ const fallbackDict = this.dictionaries[this.defaultLanguage];
151
+ let translation = null;
152
+ // 1. Try exact key in current language
136
153
  if (dict && key in dict) {
137
154
  translation = dict[key];
138
155
  }
139
- else if (
140
- // Fallback to default language if key missing in selected language
141
- this.dictionaries[this.defaultLanguage] &&
142
- key in this.dictionaries[this.defaultLanguage]) {
143
- translation = this.dictionaries[this.defaultLanguage][key];
156
+ // 2. Try multiline keys in current language (key__1, key__2, etc.)
157
+ if (translation === null) {
158
+ translation = this.getMultilineTranslation(dict, key);
159
+ }
160
+ // 3. Try exact key in fallback language
161
+ if (translation === null && fallbackDict && key in fallbackDict) {
162
+ translation = fallbackDict[key];
163
+ }
164
+ // 4. Try multiline in fallback language
165
+ if (translation === null) {
166
+ translation = this.getMultilineTranslation(fallbackDict, key);
144
167
  }
145
- else {
146
- // As a last resort, return the key itself
168
+ // 5. Last resort: return the key itself
169
+ if (translation === null) {
147
170
  translation = key;
148
171
  }
149
172
  return this.replaceParameters(translation, params);
@@ -1 +1 @@
1
- {"version":3,"file":"TranslationHelper.js","sourceRoot":"","sources":["../../src/helpers/TranslationHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TranslationHelper.js","sourceRoot":"","sources":["../../src/helpers/TranslationHelper.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "starta.microservice",
3
- "version": "0.1.12764",
3
+ "version": "0.1.12787",
4
4
  "main": "./lib/index.js",
5
5
  "description": "Core library for Starta.one microservice",
6
6
  "author": "Collaboracia OÜ",
@@ -11,7 +11,10 @@
11
11
  "format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"",
12
12
  "prepare": "yarn build",
13
13
  "lint": "eslint 'src/**/*.{js,ts}' --quiet",
14
- "lint:fix": "eslint 'src/**/*.{js,ts}' --fix"
14
+ "lint:fix": "eslint 'src/**/*.{js,ts}' --fix",
15
+ "test": "jest",
16
+ "test:watch": "jest --watch",
17
+ "test:coverage": "jest --coverage"
15
18
  },
16
19
  "files": [
17
20
  "lib/**/*"
@@ -50,6 +53,7 @@
50
53
  "devDependencies": {
51
54
  "@types/aws-sdk": "^2.7.0",
52
55
  "@types/express": "^4.17.15",
56
+ "@types/jest": "^29.5.12",
53
57
  "@types/multer": "^1.4.7",
54
58
  "@types/node": "^22.13.10",
55
59
  "@typescript-eslint/eslint-plugin": "^6.19.1",
@@ -59,7 +63,9 @@
59
63
  "eslint-config-prettier": "^9.1.0",
60
64
  "eslint-plugin-import": "^2.29.1",
61
65
  "eslint-plugin-prettier": "^5.1.3",
66
+ "jest": "^29.7.0",
62
67
  "prettier": "^3.2.4",
68
+ "ts-jest": "^29.1.2",
63
69
  "typescript": "^5.0.4"
64
70
  }
65
71
  }