@tolgee/core 2.8.2 → 3.0.0

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.
Files changed (182) hide show
  1. package/README.md +3 -3
  2. package/dist/tolgee.cjs.js +4506 -4023
  3. package/dist/tolgee.cjs.js.map +1 -1
  4. package/dist/tolgee.cjs.min.js +1 -1
  5. package/dist/tolgee.cjs.min.js.map +1 -1
  6. package/dist/tolgee.esm.js +1 -1
  7. package/dist/tolgee.esm.js.map +1 -1
  8. package/dist/tolgee.umd.js +4506 -4023
  9. package/dist/tolgee.umd.js.map +1 -1
  10. package/dist/tolgee.umd.min.js +1 -1
  11. package/dist/tolgee.umd.min.js.map +1 -1
  12. package/lib/Observer.d.ts +3 -7
  13. package/lib/Observer.js +5 -7
  14. package/lib/Observer.js.map +1 -1
  15. package/lib/Properties.js +8 -2
  16. package/lib/Properties.js.map +1 -1
  17. package/lib/Tolgee.d.ts +8 -4
  18. package/lib/Tolgee.js +48 -26
  19. package/lib/Tolgee.js.map +1 -1
  20. package/lib/TolgeeConfig.d.ts +1 -0
  21. package/lib/TolgeeConfig.js +1 -0
  22. package/lib/TolgeeConfig.js.map +1 -1
  23. package/lib/helpers/NodeHelper.d.ts +2 -0
  24. package/lib/helpers/NodeHelper.js +6 -0
  25. package/lib/helpers/NodeHelper.js.map +1 -1
  26. package/lib/helpers/encoderPolyfill.d.ts +8 -0
  27. package/lib/helpers/encoderPolyfill.js +96 -0
  28. package/lib/helpers/encoderPolyfill.js.map +1 -0
  29. package/lib/helpers/secret.d.ts +6 -0
  30. package/lib/helpers/secret.js +73 -0
  31. package/lib/helpers/secret.js.map +1 -0
  32. package/lib/highlighter/MouseEventHandler.d.ts +6 -5
  33. package/lib/highlighter/MouseEventHandler.js +32 -29
  34. package/lib/highlighter/MouseEventHandler.js.map +1 -1
  35. package/lib/highlighter/TranslationHighlighter.d.ts +2 -2
  36. package/lib/highlighter/TranslationHighlighter.js.map +1 -1
  37. package/lib/index.d.ts +1 -0
  38. package/lib/index.js +1 -0
  39. package/lib/index.js.map +1 -1
  40. package/lib/modules/IcuFormatter.d.ts +2 -0
  41. package/lib/modules/IcuFormatter.js +14 -0
  42. package/lib/modules/IcuFormatter.js.map +1 -0
  43. package/lib/modules/index.d.ts +1 -0
  44. package/lib/modules/index.js +2 -0
  45. package/lib/modules/index.js.map +1 -0
  46. package/lib/services/{DependencyStore.d.ts → DependencyService.d.ts} +10 -11
  47. package/lib/services/{DependencyStore.js → DependencyService.js} +34 -18
  48. package/lib/services/DependencyService.js.map +1 -0
  49. package/lib/services/ModuleService.d.ts +5 -0
  50. package/lib/services/ModuleService.js +18 -0
  51. package/lib/services/ModuleService.js.map +1 -0
  52. package/lib/services/TextService.d.ts +6 -14
  53. package/lib/services/TextService.js +29 -223
  54. package/lib/services/TextService.js.map +1 -1
  55. package/lib/services/TranslationService.d.ts +4 -2
  56. package/lib/services/TranslationService.js +9 -11
  57. package/lib/services/TranslationService.js.map +1 -1
  58. package/lib/types.d.ts +18 -0
  59. package/lib/wrappers/AbstractWrapper.d.ts +8 -0
  60. package/lib/wrappers/AbstractWrapper.js +2 -0
  61. package/lib/wrappers/AbstractWrapper.js.map +1 -0
  62. package/lib/wrappers/NodeHandler.d.ts +18 -0
  63. package/lib/{handlers/AbstractHandler.js → wrappers/NodeHandler.js} +18 -19
  64. package/lib/wrappers/NodeHandler.js.map +1 -0
  65. package/lib/wrappers/WrappedHandler.d.ts +8 -0
  66. package/lib/{handlers → wrappers}/WrappedHandler.js +8 -28
  67. package/lib/wrappers/WrappedHandler.js.map +1 -0
  68. package/lib/wrappers/invisible/AttributeHandler.d.ts +8 -0
  69. package/lib/wrappers/invisible/AttributeHandler.js +134 -0
  70. package/lib/wrappers/invisible/AttributeHandler.js.map +1 -0
  71. package/lib/wrappers/invisible/Coder.d.ts +7 -0
  72. package/lib/wrappers/invisible/Coder.js +110 -0
  73. package/lib/wrappers/invisible/Coder.js.map +1 -0
  74. package/lib/wrappers/invisible/ContentHandler.d.ts +6 -0
  75. package/lib/{services/DependencyStore.test.js → wrappers/invisible/ContentHandler.js} +26 -30
  76. package/lib/wrappers/invisible/ContentHandler.js.map +1 -0
  77. package/lib/wrappers/invisible/CoreHandler.d.ts +10 -0
  78. package/lib/{services/__mocks__/CoreService.js → wrappers/invisible/CoreHandler.js} +27 -12
  79. package/lib/wrappers/invisible/CoreHandler.js.map +1 -0
  80. package/lib/wrappers/invisible/InvisibleWrapper.d.ts +18 -0
  81. package/lib/wrappers/invisible/InvisibleWrapper.js +37 -0
  82. package/lib/wrappers/invisible/InvisibleWrapper.js.map +1 -0
  83. package/lib/wrappers/invisible/ValueMemory.d.ts +5 -0
  84. package/lib/wrappers/invisible/ValueMemory.js +19 -0
  85. package/lib/wrappers/invisible/ValueMemory.js.map +1 -0
  86. package/lib/wrappers/text/AttributeHandler.d.ts +8 -0
  87. package/lib/{handlers → wrappers/text}/AttributeHandler.js +7 -28
  88. package/lib/wrappers/text/AttributeHandler.js.map +1 -0
  89. package/lib/wrappers/text/Coder.d.ts +15 -0
  90. package/lib/wrappers/text/Coder.js +248 -0
  91. package/lib/wrappers/text/Coder.js.map +1 -0
  92. package/lib/wrappers/text/ContentHandler.d.ts +8 -0
  93. package/lib/{handlers/TextHandler.js → wrappers/text/ContentHandler.js} +12 -33
  94. package/lib/wrappers/text/ContentHandler.js.map +1 -0
  95. package/lib/wrappers/text/CoreHandler.d.ts +17 -0
  96. package/lib/{handlers → wrappers/text}/CoreHandler.js +5 -6
  97. package/lib/wrappers/text/CoreHandler.js.map +1 -0
  98. package/lib/wrappers/text/TextWrapper.d.ts +20 -0
  99. package/lib/wrappers/text/TextWrapper.js +36 -0
  100. package/lib/wrappers/text/TextWrapper.js.map +1 -0
  101. package/package.json +6 -5
  102. package/lib/Observer.test.d.ts +0 -2
  103. package/lib/Observer.test.js +0 -190
  104. package/lib/Observer.test.js.map +0 -1
  105. package/lib/Properties.test.d.ts +0 -1
  106. package/lib/Properties.test.js +0 -77
  107. package/lib/Properties.test.js.map +0 -1
  108. package/lib/Tolgee.test.d.ts +0 -1
  109. package/lib/Tolgee.test.js +0 -482
  110. package/lib/Tolgee.test.js.map +0 -1
  111. package/lib/TolgeeConfig.test.d.ts +0 -1
  112. package/lib/TolgeeConfig.test.js +0 -18
  113. package/lib/TolgeeConfig.test.js.map +0 -1
  114. package/lib/__testFixtures/classMock.d.ts +0 -3
  115. package/lib/__testFixtures/classMock.js +0 -8
  116. package/lib/__testFixtures/classMock.js.map +0 -1
  117. package/lib/__testFixtures/createElement.d.ts +0 -2
  118. package/lib/__testFixtures/createElement.js +0 -58
  119. package/lib/__testFixtures/createElement.js.map +0 -1
  120. package/lib/__testFixtures/createTestDom.d.ts +0 -9
  121. package/lib/__testFixtures/createTestDom.js +0 -18
  122. package/lib/__testFixtures/createTestDom.js.map +0 -1
  123. package/lib/__testFixtures/mocked.d.ts +0 -20
  124. package/lib/__testFixtures/mocked.js +0 -24
  125. package/lib/__testFixtures/mocked.js.map +0 -1
  126. package/lib/__testFixtures/setupAfterEnv.d.ts +0 -8
  127. package/lib/__testFixtures/setupAfterEnv.js +0 -23
  128. package/lib/__testFixtures/setupAfterEnv.js.map +0 -1
  129. package/lib/handlers/AbstractHandler.d.ts +0 -21
  130. package/lib/handlers/AbstractHandler.js.map +0 -1
  131. package/lib/handlers/AttributeHandler.d.ts +0 -13
  132. package/lib/handlers/AttributeHandler.js.map +0 -1
  133. package/lib/handlers/AttributeHandler.test.d.ts +0 -1
  134. package/lib/handlers/AttributeHandler.test.js +0 -177
  135. package/lib/handlers/AttributeHandler.test.js.map +0 -1
  136. package/lib/handlers/CoreHandler.d.ts +0 -19
  137. package/lib/handlers/CoreHandler.js.map +0 -1
  138. package/lib/handlers/CoreHandler.test.d.ts +0 -1
  139. package/lib/handlers/CoreHandler.test.js +0 -148
  140. package/lib/handlers/CoreHandler.test.js.map +0 -1
  141. package/lib/handlers/TextHandler.d.ts +0 -13
  142. package/lib/handlers/TextHandler.js.map +0 -1
  143. package/lib/handlers/TextHandler.test.d.ts +0 -1
  144. package/lib/handlers/TextHandler.test.js +0 -270
  145. package/lib/handlers/TextHandler.test.js.map +0 -1
  146. package/lib/handlers/WrappedHandler.d.ts +0 -13
  147. package/lib/handlers/WrappedHandler.js.map +0 -1
  148. package/lib/helpers/TextHelper.test.d.ts +0 -1
  149. package/lib/helpers/TextHelper.test.js +0 -107
  150. package/lib/helpers/TextHelper.test.js.map +0 -1
  151. package/lib/highlighter/HighlightFunctionsInitializer.test.d.ts +0 -1
  152. package/lib/highlighter/HighlightFunctionsInitializer.test.js +0 -81
  153. package/lib/highlighter/HighlightFunctionsInitializer.test.js.map +0 -1
  154. package/lib/highlighter/MouseEventHandler.test.d.ts +0 -1
  155. package/lib/highlighter/MouseEventHandler.test.js +0 -215
  156. package/lib/highlighter/MouseEventHandler.test.js.map +0 -1
  157. package/lib/highlighter/TranslationHighlighter.test.d.ts +0 -1
  158. package/lib/highlighter/TranslationHighlighter.test.js +0 -287
  159. package/lib/highlighter/TranslationHighlighter.test.js.map +0 -1
  160. package/lib/services/CoreService.test.d.ts +0 -1
  161. package/lib/services/CoreService.test.js +0 -178
  162. package/lib/services/CoreService.test.js.map +0 -1
  163. package/lib/services/DependencyStore.js.map +0 -1
  164. package/lib/services/DependencyStore.test.d.ts +0 -1
  165. package/lib/services/DependencyStore.test.js.map +0 -1
  166. package/lib/services/ElementRegistrar.test.d.ts +0 -1
  167. package/lib/services/ElementRegistrar.test.js +0 -215
  168. package/lib/services/ElementRegistrar.test.js.map +0 -1
  169. package/lib/services/TextService.test.d.ts +0 -1
  170. package/lib/services/TextService.test.js +0 -430
  171. package/lib/services/TextService.test.js.map +0 -1
  172. package/lib/services/TranslationService.test.d.ts +0 -1
  173. package/lib/services/TranslationService.test.js +0 -649
  174. package/lib/services/TranslationService.test.js.map +0 -1
  175. package/lib/services/__mocks__/CoreService.d.ts +0 -2
  176. package/lib/services/__mocks__/CoreService.js.map +0 -1
  177. package/lib/toolsManager/Messages.test.d.ts +0 -1
  178. package/lib/toolsManager/Messages.test.js +0 -114
  179. package/lib/toolsManager/Messages.test.js.map +0 -1
  180. package/lib/toolsManager/PluginManager.test.d.ts +0 -1
  181. package/lib/toolsManager/PluginManager.test.js +0 -120
  182. package/lib/toolsManager/PluginManager.test.js.map +0 -1
@@ -1,649 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (_) try {
17
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
36
- };
37
- var __read = (this && this.__read) || function (o, n) {
38
- var m = typeof Symbol === "function" && o[Symbol.iterator];
39
- if (!m) return o;
40
- var i = m.call(o), r, ar = [], e;
41
- try {
42
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
43
- }
44
- catch (error) { e = { error: error }; }
45
- finally {
46
- try {
47
- if (r && !r.done && (m = i["return"])) m.call(i);
48
- }
49
- finally { if (e) throw e.error; }
50
- }
51
- return ar;
52
- };
53
- jest.dontMock('./TranslationService');
54
- jest.dontMock('../helpers/TextHelper');
55
- jest.dontMock('../types/DTOs');
56
- jest.dontMock('../Errors/ApiHttpError');
57
- jest.dontMock('./DependencyStore');
58
- import { getMockedInstance } from '@testFixtures/mocked';
59
- import { ApiHttpService } from './ApiHttpService';
60
- import { Properties } from '../Properties';
61
- import { CoreService } from './CoreService';
62
- import { ApiHttpError } from '../Errors/ApiHttpError';
63
- import { EventService } from './EventService';
64
- import { DependencyStore } from './DependencyStore';
65
- var mockedTranslations = {
66
- en: {
67
- key: 'translated',
68
- 'translation.with.dots': 'Translation with dots',
69
- structured: {
70
- subtree: {
71
- translation: 'Structured subtree translation',
72
- },
73
- },
74
- 'key with: \\\\': {
75
- t: 'Key with strange escapes',
76
- },
77
- just_en: 'Just en.',
78
- },
79
- de: {
80
- key: 'übersetzen',
81
- just_en: '',
82
- },
83
- };
84
- global.fetch = jest.fn(function (url) { return __awaiter(void 0, void 0, void 0, function () {
85
- var isEn, isDe;
86
- return __generator(this, function (_a) {
87
- isEn = url.indexOf('en.json') > -1;
88
- isDe = url.indexOf('de.json') > -1;
89
- return [2 /*return*/, {
90
- json: jest.fn(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
91
- return [2 /*return*/, isEn ? mockedTranslations.en : isDe ? mockedTranslations.de : {}];
92
- }); }); }),
93
- }];
94
- });
95
- }); });
96
- describe('TranslationService', function () {
97
- var translationService;
98
- var languageLoadedEmitMock = jest.fn();
99
- var translationChangedEmitMock = jest.fn();
100
- beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
101
- return __generator(this, function (_a) {
102
- translationService = new DependencyStore().translationService;
103
- getMockedInstance(EventService).LANGUAGE_LOADED = {
104
- emit: languageLoadedEmitMock,
105
- };
106
- getMockedInstance(EventService).TRANSLATION_CHANGED = {
107
- emit: translationChangedEmitMock,
108
- };
109
- getMockedInstance(ApiHttpService).fetchJson = jest.fn(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
110
- return [2 /*return*/, mockedTranslations];
111
- }); }); });
112
- getMockedInstance(Properties).currentLanguage = 'en';
113
- return [2 /*return*/];
114
- });
115
- }); });
116
- afterEach(function () { return __awaiter(void 0, void 0, void 0, function () {
117
- return __generator(this, function (_a) {
118
- jest.clearAllMocks();
119
- return [2 /*return*/];
120
- });
121
- }); });
122
- describe('(translation loading and retrieval)', function () {
123
- test('will load translations in production mode', function () { return __awaiter(void 0, void 0, void 0, function () {
124
- return __generator(this, function (_a) {
125
- switch (_a.label) {
126
- case 0: return [4 /*yield*/, translationService.loadTranslations('en')];
127
- case 1:
128
- _a.sent();
129
- expect(translationService.getFromCacheOrFallback('key', 'en')).toEqual('translated');
130
- return [2 /*return*/];
131
- }
132
- });
133
- }); });
134
- test('will load translations in development mode', function () { return __awaiter(void 0, void 0, void 0, function () {
135
- return __generator(this, function (_a) {
136
- switch (_a.label) {
137
- case 0:
138
- getMockedInstance(Properties).config.mode = 'development';
139
- return [4 /*yield*/, translationService.loadTranslations('en')];
140
- case 1:
141
- _a.sent();
142
- expect(translationService.getFromCacheOrFallback('key', 'en')).toEqual('translated');
143
- return [2 /*return*/];
144
- }
145
- });
146
- }); });
147
- test('will try to load the languages only single time', function () { return __awaiter(void 0, void 0, void 0, function () {
148
- return __generator(this, function (_a) {
149
- switch (_a.label) {
150
- case 0: return [4 /*yield*/, translationService.loadTranslations('en')];
151
- case 1:
152
- _a.sent();
153
- return [4 /*yield*/, translationService.loadTranslations('en')];
154
- case 2:
155
- _a.sent();
156
- expect(fetch).toBeCalledTimes(1);
157
- return [2 /*return*/];
158
- }
159
- });
160
- }); });
161
- test('will get proper translation', function () { return __awaiter(void 0, void 0, void 0, function () {
162
- var _a;
163
- return __generator(this, function (_b) {
164
- switch (_b.label) {
165
- case 0:
166
- _a = expect;
167
- return [4 /*yield*/, translationService.getTranslation('key', 'en')];
168
- case 1:
169
- _a.apply(void 0, [_b.sent()]).toEqual('translated');
170
- return [2 /*return*/];
171
- }
172
- });
173
- }); });
174
- test('will get proper translation containing .', function () { return __awaiter(void 0, void 0, void 0, function () {
175
- var _a;
176
- return __generator(this, function (_b) {
177
- switch (_b.label) {
178
- case 0:
179
- _a = expect;
180
- return [4 /*yield*/, translationService.getTranslation('translation.with.dots')];
181
- case 1:
182
- _a.apply(void 0, [_b.sent()]).toEqual('Translation with dots');
183
- return [2 /*return*/];
184
- }
185
- });
186
- }); });
187
- test('will get proper structured subtree translation', function () { return __awaiter(void 0, void 0, void 0, function () {
188
- var _a;
189
- return __generator(this, function (_b) {
190
- switch (_b.label) {
191
- case 0:
192
- _a = expect;
193
- return [4 /*yield*/, translationService.getTranslation('structured.subtree.translation')];
194
- case 1:
195
- _a.apply(void 0, [_b.sent()]).toEqual('Structured subtree translation');
196
- return [2 /*return*/];
197
- }
198
- });
199
- }); });
200
- test('will get proper translation on strange key', function () { return __awaiter(void 0, void 0, void 0, function () {
201
- var _a;
202
- return __generator(this, function (_b) {
203
- switch (_b.label) {
204
- case 0:
205
- _a = expect;
206
- return [4 /*yield*/, translationService.getTranslation('key with: \\\\.t')];
207
- case 1:
208
- _a.apply(void 0, [_b.sent()]).toEqual('Key with strange escapes');
209
- return [2 /*return*/];
210
- }
211
- });
212
- }); });
213
- test('will return fallback lang translation', function () { return __awaiter(void 0, void 0, void 0, function () {
214
- var _a;
215
- return __generator(this, function (_b) {
216
- switch (_b.label) {
217
- case 0:
218
- _a = expect;
219
- return [4 /*yield*/, translationService.getTranslation('key', 'cz')];
220
- case 1:
221
- _a.apply(void 0, [_b.sent()]).toEqual('translated');
222
- return [2 /*return*/];
223
- }
224
- });
225
- }); });
226
- test('will get translations of key', function () { return __awaiter(void 0, void 0, void 0, function () {
227
- var _a, translationData;
228
- return __generator(this, function (_b) {
229
- switch (_b.label) {
230
- case 0:
231
- getMockedInstance(ApiHttpService).fetchJson = jest.fn(function () { return __awaiter(void 0, void 0, void 0, function () {
232
- return __generator(this, function (_a) {
233
- return [2 /*return*/, ({
234
- _embedded: {
235
- keys: [
236
- {
237
- translations: {
238
- en: { text: 'translated' },
239
- de: { text: 'übersetzen' },
240
- },
241
- },
242
- ],
243
- },
244
- })];
245
- });
246
- }); });
247
- return [4 /*yield*/, translationService.getTranslationsOfKey('key', new Set(['en', 'de']))];
248
- case 1:
249
- _a = __read.apply(void 0, [_b.sent(), 1]), translationData = _a[0];
250
- expect(translationData).toEqual({
251
- translations: {
252
- en: { text: 'translated' },
253
- de: { text: 'übersetzen' },
254
- },
255
- });
256
- return [2 /*return*/];
257
- }
258
- });
259
- }); });
260
- test('will reset preferred languages when language is not found', function () { return __awaiter(void 0, void 0, void 0, function () {
261
- return __generator(this, function (_a) {
262
- switch (_a.label) {
263
- case 0:
264
- global['apierror'] = ApiHttpError;
265
- getMockedInstance(ApiHttpService).fetchJson = jest.fn(function () { return __awaiter(void 0, void 0, void 0, function () {
266
- return __generator(this, function (_a) {
267
- throw new ApiHttpError({ status: 404 }, 'language_not_found');
268
- });
269
- }); });
270
- delete global.location;
271
- global.location = { reload: jest.fn() };
272
- global.console.error = jest.fn();
273
- getMockedInstance(CoreService).getLanguages = jest.fn(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
274
- return [2 /*return*/, new Set(['dummyLang'])];
275
- }); }); });
276
- return [4 /*yield*/, translationService.getTranslationsOfKey('aaa', new Set())];
277
- case 1:
278
- _a.sent();
279
- expect(getMockedInstance(Properties).preferredLanguages).toEqual(new Set(['dummyLang']));
280
- // eslint-disable-next-line no-console
281
- expect(console.error).toBeCalledTimes(1);
282
- expect(location.reload).toBeCalledTimes(1);
283
- return [2 /*return*/];
284
- }
285
- });
286
- }); });
287
- test('will emit on translations load', function () { return __awaiter(void 0, void 0, void 0, function () {
288
- return __generator(this, function (_a) {
289
- switch (_a.label) {
290
- case 0: return [4 /*yield*/, translationService.loadTranslations('en')];
291
- case 1:
292
- _a.sent();
293
- return [4 /*yield*/, translationService.loadTranslations('de')];
294
- case 2:
295
- _a.sent();
296
- return [4 /*yield*/, translationService.loadTranslations('en')];
297
- case 3:
298
- _a.sent();
299
- expect(languageLoadedEmitMock).toBeCalledTimes(2);
300
- expect(languageLoadedEmitMock).toHaveBeenNthCalledWith(1, 'en');
301
- expect(languageLoadedEmitMock).toHaveBeenNthCalledWith(2, 'de');
302
- return [2 /*return*/];
303
- }
304
- });
305
- }); });
306
- test("won't throw exception when there is null in translation data", function () { return __awaiter(void 0, void 0, void 0, function () {
307
- return __generator(this, function (_a) {
308
- switch (_a.label) {
309
- case 0:
310
- getMockedInstance(Properties).config.mode = 'development';
311
- getMockedInstance(ApiHttpService).fetchJson = jest.fn(function () { return __awaiter(void 0, void 0, void 0, function () {
312
- return __generator(this, function (_a) {
313
- return [2 /*return*/, ({
314
- en: {
315
- hello: null,
316
- yep: 'Load was successfull.',
317
- },
318
- })];
319
- });
320
- }); });
321
- window.console.error = jest.fn();
322
- return [4 /*yield*/, translationService.loadTranslations('en')];
323
- case 1:
324
- _a.sent();
325
- expect(window.console.error).toHaveBeenCalledTimes(0);
326
- expect(translationService.getFromCacheOrFallback('yep')).toEqual('Load was successfull.');
327
- return [2 /*return*/];
328
- }
329
- });
330
- }); });
331
- describe('set translation', function () {
332
- var dummyTranslationData = {
333
- key: 'test key',
334
- translations: { en: 'translation' },
335
- };
336
- beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
337
- return __generator(this, function (_a) {
338
- switch (_a.label) {
339
- case 0:
340
- getMockedInstance(ApiHttpService).postJson = jest.fn(function () { return __awaiter(void 0, void 0, void 0, function () {
341
- return __generator(this, function (_a) {
342
- return [2 /*return*/, {
343
- keyId: undefined,
344
- keyName: 'test key',
345
- translations: {
346
- en: {
347
- text: 'translation',
348
- },
349
- },
350
- }];
351
- });
352
- }); });
353
- return [4 /*yield*/, translationService.setTranslations(dummyTranslationData)];
354
- case 1:
355
- _a.sent();
356
- return [2 /*return*/];
357
- }
358
- });
359
- }); });
360
- test('will call the api http service', function () { return __awaiter(void 0, void 0, void 0, function () {
361
- return __generator(this, function (_a) {
362
- expect(getMockedInstance(ApiHttpService).postJson).toBeCalledTimes(1);
363
- expect(getMockedInstance(ApiHttpService).postJson).toBeCalledWith('v2/projects/translations', dummyTranslationData);
364
- return [2 /*return*/];
365
- });
366
- }); });
367
- test('will check the scopes', function () { return __awaiter(void 0, void 0, void 0, function () {
368
- return __generator(this, function (_a) {
369
- expect(getMockedInstance(CoreService).checkScope).toBeCalledTimes(1);
370
- return [2 /*return*/];
371
- });
372
- }); });
373
- test('emits translation changed event', function () { return __awaiter(void 0, void 0, void 0, function () {
374
- return __generator(this, function (_a) {
375
- expect(translationChangedEmitMock).toBeCalledTimes(1);
376
- expect(translationChangedEmitMock).toBeCalledWith(dummyTranslationData);
377
- return [2 /*return*/];
378
- });
379
- }); });
380
- test('will update the data', function () { return __awaiter(void 0, void 0, void 0, function () {
381
- var _a;
382
- return __generator(this, function (_b) {
383
- switch (_b.label) {
384
- case 0: return [4 /*yield*/, translationService.loadTranslations('en')];
385
- case 1:
386
- _b.sent();
387
- return [4 /*yield*/, translationService.setTranslations(dummyTranslationData)];
388
- case 2:
389
- _b.sent();
390
- _a = expect;
391
- return [4 /*yield*/, translationService.getTranslation(dummyTranslationData.key, 'en')];
392
- case 3:
393
- _a.apply(void 0, [_b.sent()]).toEqual(dummyTranslationData.translations.en);
394
- return [2 /*return*/];
395
- }
396
- });
397
- }); });
398
- });
399
- test('will update the data when the key contains .', function () { return __awaiter(void 0, void 0, void 0, function () {
400
- var dummyTranslationData, _a;
401
- return __generator(this, function (_b) {
402
- switch (_b.label) {
403
- case 0:
404
- dummyTranslationData = {
405
- key: 'test.key',
406
- translations: { en: 'translation' },
407
- };
408
- getMockedInstance(ApiHttpService).postJson = jest.fn(function () { return __awaiter(void 0, void 0, void 0, function () {
409
- return __generator(this, function (_a) {
410
- return [2 /*return*/, {
411
- keyId: undefined,
412
- keyName: 'test.key',
413
- translations: {
414
- en: {
415
- text: 'translation',
416
- },
417
- },
418
- }];
419
- });
420
- }); });
421
- return [4 /*yield*/, translationService.loadTranslations('en')];
422
- case 1:
423
- _b.sent();
424
- return [4 /*yield*/, translationService.setTranslations(dummyTranslationData)];
425
- case 2:
426
- _b.sent();
427
- _a = expect;
428
- return [4 /*yield*/, translationService.getTranslation(dummyTranslationData.key, 'en')];
429
- case 3:
430
- _a.apply(void 0, [_b.sent()]).toEqual(dummyTranslationData.translations.en);
431
- return [2 /*return*/];
432
- }
433
- });
434
- }); });
435
- test('will update the data when the key contains \\.', function () { return __awaiter(void 0, void 0, void 0, function () {
436
- var dummyTranslationData, _a;
437
- return __generator(this, function (_b) {
438
- switch (_b.label) {
439
- case 0:
440
- dummyTranslationData = {
441
- key: 'test\\.key',
442
- translations: { en: 'translation' },
443
- };
444
- getMockedInstance(ApiHttpService).postJson = jest.fn(function () { return __awaiter(void 0, void 0, void 0, function () {
445
- return __generator(this, function (_a) {
446
- return [2 /*return*/, {
447
- keyId: undefined,
448
- keyName: 'test\\.key',
449
- translations: {
450
- en: {
451
- text: 'translation',
452
- },
453
- },
454
- }];
455
- });
456
- }); });
457
- return [4 /*yield*/, translationService.loadTranslations('en')];
458
- case 1:
459
- _b.sent();
460
- return [4 /*yield*/, translationService.setTranslations(dummyTranslationData)];
461
- case 2:
462
- _b.sent();
463
- _a = expect;
464
- return [4 /*yield*/, translationService.getTranslation(dummyTranslationData.key, 'en')];
465
- case 3:
466
- _a.apply(void 0, [_b.sent()]).toEqual(dummyTranslationData.translations.en);
467
- return [2 /*return*/];
468
- }
469
- });
470
- }); });
471
- test('will call load of fallback language on missing translation', function () { return __awaiter(void 0, void 0, void 0, function () {
472
- var _a;
473
- return __generator(this, function (_b) {
474
- switch (_b.label) {
475
- case 0:
476
- translationService.loadTranslations = jest.fn();
477
- getMockedInstance(Properties).config.fallbackLanguage = 'en';
478
- _a = expect;
479
- return [4 /*yield*/, translationService.getTranslation('aaa', 'cs')];
480
- case 1:
481
- _a.apply(void 0, [_b.sent()]);
482
- expect(translationService.loadTranslations).toBeCalledTimes(2);
483
- expect(translationService.loadTranslations).toBeCalledWith('cs');
484
- expect(translationService.loadTranslations).toBeCalledWith('en');
485
- return [2 /*return*/];
486
- }
487
- });
488
- }); });
489
- test('will use fallback language on missing translation', function () { return __awaiter(void 0, void 0, void 0, function () {
490
- var _a;
491
- return __generator(this, function (_b) {
492
- switch (_b.label) {
493
- case 0:
494
- getMockedInstance(Properties).config.fallbackLanguage = 'en';
495
- _a = expect;
496
- return [4 /*yield*/, translationService.getTranslation('translation.with.dots', 'de')];
497
- case 1:
498
- _a.apply(void 0, [_b.sent()]).toEqual('Translation with dots');
499
- return [2 /*return*/];
500
- }
501
- });
502
- }); });
503
- test('getTranslation will return fallback when message is empty string', function () { return __awaiter(void 0, void 0, void 0, function () {
504
- var _a;
505
- return __generator(this, function (_b) {
506
- switch (_b.label) {
507
- case 0:
508
- getMockedInstance(Properties).config.fallbackLanguage = 'en';
509
- _a = expect;
510
- return [4 /*yield*/, translationService.getTranslation('just_en', 'de')];
511
- case 1:
512
- _a.apply(void 0, [_b.sent()]).toEqual('Just en.');
513
- return [2 /*return*/];
514
- }
515
- });
516
- }); });
517
- test('getFromCacheOrCallback will return fallback when message is empty string', function () { return __awaiter(void 0, void 0, void 0, function () {
518
- var _a;
519
- return __generator(this, function (_b) {
520
- switch (_b.label) {
521
- case 0:
522
- getMockedInstance(Properties).config.fallbackLanguage = 'en';
523
- translationService.setLanguageData('en', mockedTranslations.en);
524
- translationService.setLanguageData('de', mockedTranslations.de);
525
- _a = expect;
526
- return [4 /*yield*/, translationService.getFromCacheOrFallback('just_en', 'de')];
527
- case 1:
528
- _a.apply(void 0, [_b.sent()]).toEqual('Just en.');
529
- return [2 /*return*/];
530
- }
531
- });
532
- }); });
533
- test('getFromCacheOrCallback will return default when provided', function () { return __awaiter(void 0, void 0, void 0, function () {
534
- var _a;
535
- return __generator(this, function (_b) {
536
- switch (_b.label) {
537
- case 0:
538
- _a = expect;
539
- return [4 /*yield*/, translationService.getFromCacheOrFallback('this_key_is_not_in_cache', 'de', false, 'Default')];
540
- case 1:
541
- _a.apply(void 0, [_b.sent()]).toEqual('Default');
542
- return [2 /*return*/];
543
- }
544
- });
545
- }); });
546
- test('getFromCacheOrCallback will return empty when onEmpty is true', function () { return __awaiter(void 0, void 0, void 0, function () {
547
- var _a;
548
- return __generator(this, function (_b) {
549
- switch (_b.label) {
550
- case 0:
551
- _a = expect;
552
- return [4 /*yield*/, translationService.getFromCacheOrFallback('this_key_is_not_in_cache', 'de', true)];
553
- case 1:
554
- _a.apply(void 0, [_b.sent()]).toEqual('');
555
- return [2 /*return*/];
556
- }
557
- });
558
- }); });
559
- test('will return key when no translation found', function () { return __awaiter(void 0, void 0, void 0, function () {
560
- var _a;
561
- return __generator(this, function (_b) {
562
- switch (_b.label) {
563
- case 0:
564
- _a = expect;
565
- return [4 /*yield*/, translationService.getTranslation('test\\.key.this\\.is\\.it', 'en')];
566
- case 1:
567
- _a.apply(void 0, [_b.sent()]).toEqual('test\\.key.this\\.is\\.it');
568
- return [2 /*return*/];
569
- }
570
- });
571
- }); });
572
- test('returns default when provided', function () { return __awaiter(void 0, void 0, void 0, function () {
573
- var _a;
574
- return __generator(this, function (_b) {
575
- switch (_b.label) {
576
- case 0:
577
- _a = expect;
578
- return [4 /*yield*/, translationService.getTranslation('youaaaahihahihh', 'en', undefined, 'This is default')];
579
- case 1:
580
- _a.apply(void 0, [_b.sent()]).toEqual('This is default');
581
- return [2 /*return*/];
582
- }
583
- });
584
- }); });
585
- test('will return proper text without any dot', function () { return __awaiter(void 0, void 0, void 0, function () {
586
- var _a;
587
- return __generator(this, function (_b) {
588
- switch (_b.label) {
589
- case 0:
590
- _a = expect;
591
- return [4 /*yield*/, translationService.getTranslation('text without any dot', 'en')];
592
- case 1:
593
- _a.apply(void 0, [_b.sent()]).toEqual('text without any dot');
594
- return [2 /*return*/];
595
- }
596
- });
597
- }); });
598
- test('uses provided static data', function () { return __awaiter(void 0, void 0, void 0, function () {
599
- var _a;
600
- return __generator(this, function (_b) {
601
- switch (_b.label) {
602
- case 0:
603
- getMockedInstance(Properties).config.staticData = {
604
- en: { test: 'Test test' },
605
- };
606
- translationService.initStatic();
607
- _a = expect;
608
- return [4 /*yield*/, translationService.getTranslation('test', 'en')];
609
- case 1:
610
- _a.apply(void 0, [_b.sent()]).toEqual('Test test');
611
- return [2 /*return*/];
612
- }
613
- });
614
- }); });
615
- test('uses provided promise data', function () { return __awaiter(void 0, void 0, void 0, function () {
616
- var _a;
617
- return __generator(this, function (_b) {
618
- switch (_b.label) {
619
- case 0:
620
- getMockedInstance(Properties).config.staticData = {
621
- en: function () { return new Promise(function (resolve) { return resolve({ test: 'Test test' }); }); },
622
- };
623
- _a = expect;
624
- return [4 /*yield*/, translationService.getTranslation('test', 'en')];
625
- case 1:
626
- _a.apply(void 0, [_b.sent()]).toEqual('Test test');
627
- return [2 /*return*/];
628
- }
629
- });
630
- }); });
631
- test('uses provided data without init static (when mode is changed dynamically)', function () { return __awaiter(void 0, void 0, void 0, function () {
632
- var _a;
633
- return __generator(this, function (_b) {
634
- switch (_b.label) {
635
- case 0:
636
- getMockedInstance(Properties).config.staticData = {
637
- en: { test: 'Test test' },
638
- };
639
- _a = expect;
640
- return [4 /*yield*/, translationService.getTranslation('test', 'en')];
641
- case 1:
642
- _a.apply(void 0, [_b.sent()]).toEqual('Test test');
643
- return [2 /*return*/];
644
- }
645
- });
646
- }); });
647
- });
648
- });
649
- //# sourceMappingURL=TranslationService.test.js.map