@tolgee/core 4.9.2 → 4.9.3-rc.128edeb.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 (288) hide show
  1. package/dist/tolgee.cjs.js +1275 -7024
  2. package/dist/tolgee.cjs.js.map +1 -1
  3. package/dist/tolgee.cjs.min.js +1 -1
  4. package/dist/tolgee.cjs.min.js.map +1 -1
  5. package/dist/tolgee.esm.js +1404 -0
  6. package/dist/tolgee.esm.js.map +1 -0
  7. package/dist/tolgee.esm.min.mjs +1 -1
  8. package/dist/tolgee.esm.min.mjs.map +1 -1
  9. package/dist/tolgee.umd.js +1275 -7024
  10. package/dist/tolgee.umd.js.map +1 -1
  11. package/dist/tolgee.umd.min.js +1 -1
  12. package/dist/tolgee.umd.min.js.map +1 -1
  13. package/lib/Controller/Cache/Cache.d.ts +22 -0
  14. package/lib/Controller/Cache/helpers.d.ts +4 -0
  15. package/lib/Controller/Controller.d.ts +110 -0
  16. package/lib/Controller/Events/EventEmitter.d.ts +6 -0
  17. package/lib/Controller/Events/EventEmitterSelective.d.ts +7 -0
  18. package/lib/Controller/Events/Events.d.ts +14 -0
  19. package/lib/Controller/Plugins/Plugins.d.ts +36 -0
  20. package/lib/Controller/State/State.d.ts +39 -0
  21. package/lib/Controller/State/helpers.d.ts +6 -0
  22. package/lib/Controller/State/initObserverOptions.d.ts +13 -0
  23. package/lib/Controller/State/initState.d.ts +47 -0
  24. package/lib/Controller/ValueObserver.d.ts +5 -0
  25. package/lib/FormatSimple/FormatError.d.ts +7 -0
  26. package/lib/FormatSimple/FormatSimple.d.ts +3 -0
  27. package/lib/FormatSimple/formatParser.d.ts +1 -0
  28. package/lib/FormatSimple/formatter.d.ts +2 -0
  29. package/lib/Tolgee.d.ts +2 -68
  30. package/lib/TranslateParams.d.ts +2 -0
  31. package/lib/{Constants/Global.d.ts → constants.d.ts} +1 -3
  32. package/lib/helpers.d.ts +3 -0
  33. package/lib/index.d.ts +4 -8
  34. package/lib/types.d.ts +244 -84
  35. package/package.json +21 -29
  36. package/src/Controller/Cache/Cache.ts +293 -0
  37. package/src/Controller/Cache/helpers.ts +37 -0
  38. package/src/Controller/Controller.ts +310 -0
  39. package/src/Controller/Events/EventEmitter.ts +30 -0
  40. package/src/Controller/Events/EventEmitterSelective.test.ts +125 -0
  41. package/src/Controller/Events/EventEmitterSelective.ts +188 -0
  42. package/src/Controller/Events/Events.ts +66 -0
  43. package/src/Controller/Plugins/Plugins.ts +315 -0
  44. package/src/Controller/State/State.ts +175 -0
  45. package/src/Controller/State/helpers.ts +41 -0
  46. package/src/Controller/State/initObserverOptions.ts +38 -0
  47. package/src/Controller/State/initState.ts +81 -0
  48. package/src/Controller/ValueObserver.ts +26 -0
  49. package/src/FormatSimple/FormatError.ts +26 -0
  50. package/src/FormatSimple/FormatSimple.ts +13 -0
  51. package/src/FormatSimple/formatParser.ts +133 -0
  52. package/src/FormatSimple/formatter.test.ts +190 -0
  53. package/src/FormatSimple/formatter.ts +19 -0
  54. package/src/Tolgee.ts +79 -330
  55. package/src/TranslateParams.test.ts +41 -0
  56. package/src/TranslateParams.ts +51 -0
  57. package/src/__test/backend.test.ts +48 -0
  58. package/src/__test/cache.test.ts +148 -0
  59. package/src/__test/client.test.ts +48 -0
  60. package/src/__test/events.test.ts +33 -0
  61. package/src/__test/format.simple.test.ts +26 -0
  62. package/src/__test/initialization.test.ts +85 -0
  63. package/src/__test/jest-setup.ts +2 -0
  64. package/src/__test/languageDetection.test.ts +129 -0
  65. package/src/__test/languageStorage.test.ts +145 -0
  66. package/src/__test/languages.test.ts +112 -0
  67. package/src/__test/loading.test.ts +39 -0
  68. package/src/__test/namespaces.test.ts +99 -0
  69. package/src/__test/namespacesFallback.test.ts +74 -0
  70. package/src/__test/plugins.test.ts +136 -0
  71. package/src/__test/testTools.ts +7 -0
  72. package/src/{Constants/Global.ts → constants.ts} +1 -6
  73. package/src/helpers.ts +17 -0
  74. package/src/index.ts +9 -8
  75. package/src/types.ts +338 -90
  76. package/README.md +0 -45
  77. package/dist/Constants/Global.d.ts +0 -6
  78. package/dist/Constants/ModifierKey.d.ts +0 -6
  79. package/dist/Errors/ApiHttpError.d.ts +0 -5
  80. package/dist/Observer.d.ts +0 -14
  81. package/dist/Observer.test.d.ts +0 -2
  82. package/dist/Properties.d.ts +0 -17
  83. package/dist/Properties.test.d.ts +0 -1
  84. package/dist/Tolgee.d.ts +0 -68
  85. package/dist/Tolgee.test.d.ts +0 -1
  86. package/dist/TolgeeConfig.d.ts +0 -69
  87. package/dist/TolgeeConfig.test.d.ts +0 -1
  88. package/dist/__integration/FormatterIcu.test.d.ts +0 -1
  89. package/dist/__integration/FormatterMissing.d.ts +0 -1
  90. package/dist/__integration/Tolgee.test.d.ts +0 -1
  91. package/dist/__integration/TolgeeInvisible.test.d.ts +0 -1
  92. package/dist/__integration/mockTranslations.d.ts +0 -7
  93. package/dist/__integration/testConfig.d.ts +0 -9
  94. package/dist/__testFixtures/classMock.d.ts +0 -3
  95. package/dist/__testFixtures/createElement.d.ts +0 -2
  96. package/dist/__testFixtures/createTestDom.d.ts +0 -9
  97. package/dist/__testFixtures/mocked.d.ts +0 -20
  98. package/dist/__testFixtures/setupAfterEnv.d.ts +0 -8
  99. package/dist/helpers/NodeHelper.d.ts +0 -14
  100. package/dist/helpers/TextHelper.d.ts +0 -5
  101. package/dist/helpers/TextHelper.test.d.ts +0 -1
  102. package/dist/helpers/commonTypes.d.ts +0 -2
  103. package/dist/helpers/encoderPolyfill.d.ts +0 -8
  104. package/dist/helpers/secret.d.ts +0 -6
  105. package/dist/helpers/secret.test.d.ts +0 -1
  106. package/dist/helpers/sleep.d.ts +0 -1
  107. package/dist/highlighter/HighlightFunctionsInitializer.d.ts +0 -10
  108. package/dist/highlighter/HighlightFunctionsInitializer.test.d.ts +0 -1
  109. package/dist/highlighter/MouseEventHandler.d.ts +0 -29
  110. package/dist/highlighter/MouseEventHandler.test.d.ts +0 -1
  111. package/dist/highlighter/TranslationHighlighter.d.ts +0 -14
  112. package/dist/highlighter/TranslationHighlighter.test.d.ts +0 -1
  113. package/dist/index.d.ts +0 -10
  114. package/dist/internal.d.ts +0 -2
  115. package/dist/modules/IcuFormatter.d.ts +0 -2
  116. package/dist/modules/IcuFormatter.test.d.ts +0 -1
  117. package/dist/modules/index.d.ts +0 -1
  118. package/dist/services/ApiHttpService.d.ts +0 -15
  119. package/dist/services/CoreService.d.ts +0 -18
  120. package/dist/services/CoreService.test.d.ts +0 -1
  121. package/dist/services/DependencyService.d.ts +0 -39
  122. package/dist/services/DependencyService.test.d.ts +0 -1
  123. package/dist/services/ElementRegistrar.d.ts +0 -19
  124. package/dist/services/ElementRegistrar.test.d.ts +0 -1
  125. package/dist/services/EventEmitter.d.ts +0 -13
  126. package/dist/services/EventService.d.ts +0 -9
  127. package/dist/services/ModuleService.d.ts +0 -5
  128. package/dist/services/ScreenshotService.d.ts +0 -15
  129. package/dist/services/Subscription.d.ts +0 -5
  130. package/dist/services/TextService.d.ts +0 -14
  131. package/dist/services/TextService.test.d.ts +0 -1
  132. package/dist/services/TranslationService.d.ts +0 -75
  133. package/dist/services/TranslationService.test.d.ts +0 -1
  134. package/dist/services/__mocks__/CoreService.d.ts +0 -2
  135. package/dist/tolgee.esm.mjs +0 -7150
  136. package/dist/tolgee.esm.mjs.map +0 -1
  137. package/dist/toolsManager/Messages.d.ts +0 -8
  138. package/dist/toolsManager/Messages.test.d.ts +0 -1
  139. package/dist/toolsManager/PluginManager.d.ts +0 -21
  140. package/dist/toolsManager/PluginManager.test.d.ts +0 -1
  141. package/dist/types/DTOs.d.ts +0 -20
  142. package/dist/types/apiSchema.generated.d.ts +0 -6185
  143. package/dist/types.d.ts +0 -123
  144. package/dist/wrappers/AbstractWrapper.d.ts +0 -8
  145. package/dist/wrappers/NodeHandler.d.ts +0 -18
  146. package/dist/wrappers/WrappedHandler.d.ts +0 -8
  147. package/dist/wrappers/invisible/AttributeHandler.d.ts +0 -8
  148. package/dist/wrappers/invisible/Coder.d.ts +0 -7
  149. package/dist/wrappers/invisible/ContentHandler.d.ts +0 -6
  150. package/dist/wrappers/invisible/CoreHandler.d.ts +0 -10
  151. package/dist/wrappers/invisible/InvisibleWrapper.d.ts +0 -18
  152. package/dist/wrappers/invisible/ValueMemory.d.ts +0 -5
  153. package/dist/wrappers/invisible/ValueMemory.test.d.ts +0 -1
  154. package/dist/wrappers/text/AttributeHandler.d.ts +0 -8
  155. package/dist/wrappers/text/AttributeHandler.test.d.ts +0 -1
  156. package/dist/wrappers/text/Coder.d.ts +0 -15
  157. package/dist/wrappers/text/Coder.test.d.ts +0 -1
  158. package/dist/wrappers/text/ContentHandler.d.ts +0 -8
  159. package/dist/wrappers/text/ContentHandler.test.d.ts +0 -1
  160. package/dist/wrappers/text/CoreHandler.d.ts +0 -17
  161. package/dist/wrappers/text/CoreHandler.test.d.ts +0 -1
  162. package/dist/wrappers/text/TextWrapper.d.ts +0 -20
  163. package/index.js +0 -7
  164. package/lib/Constants/ModifierKey.d.ts +0 -6
  165. package/lib/Errors/ApiHttpError.d.ts +0 -5
  166. package/lib/Observer.d.ts +0 -14
  167. package/lib/Properties.d.ts +0 -17
  168. package/lib/TolgeeConfig.d.ts +0 -69
  169. package/lib/helpers/NodeHelper.d.ts +0 -14
  170. package/lib/helpers/TextHelper.d.ts +0 -5
  171. package/lib/helpers/commonTypes.d.ts +0 -2
  172. package/lib/helpers/encoderPolyfill.d.ts +0 -8
  173. package/lib/helpers/secret.d.ts +0 -6
  174. package/lib/helpers/sleep.d.ts +0 -1
  175. package/lib/highlighter/HighlightFunctionsInitializer.d.ts +0 -10
  176. package/lib/highlighter/MouseEventHandler.d.ts +0 -29
  177. package/lib/highlighter/TranslationHighlighter.d.ts +0 -14
  178. package/lib/modules/IcuFormatter.d.ts +0 -2
  179. package/lib/modules/index.d.ts +0 -1
  180. package/lib/services/ApiHttpService.d.ts +0 -15
  181. package/lib/services/CoreService.d.ts +0 -18
  182. package/lib/services/DependencyService.d.ts +0 -39
  183. package/lib/services/ElementRegistrar.d.ts +0 -19
  184. package/lib/services/EventEmitter.d.ts +0 -13
  185. package/lib/services/EventService.d.ts +0 -9
  186. package/lib/services/ModuleService.d.ts +0 -5
  187. package/lib/services/ScreenshotService.d.ts +0 -15
  188. package/lib/services/Subscription.d.ts +0 -5
  189. package/lib/services/TextService.d.ts +0 -14
  190. package/lib/services/TranslationService.d.ts +0 -75
  191. package/lib/toolsManager/Messages.d.ts +0 -8
  192. package/lib/toolsManager/PluginManager.d.ts +0 -21
  193. package/lib/types/DTOs.d.ts +0 -20
  194. package/lib/types/apiSchema.generated.d.ts +0 -6185
  195. package/lib/wrappers/AbstractWrapper.d.ts +0 -8
  196. package/lib/wrappers/NodeHandler.d.ts +0 -18
  197. package/lib/wrappers/WrappedHandler.d.ts +0 -8
  198. package/lib/wrappers/invisible/AttributeHandler.d.ts +0 -8
  199. package/lib/wrappers/invisible/Coder.d.ts +0 -7
  200. package/lib/wrappers/invisible/ContentHandler.d.ts +0 -6
  201. package/lib/wrappers/invisible/CoreHandler.d.ts +0 -10
  202. package/lib/wrappers/invisible/InvisibleWrapper.d.ts +0 -18
  203. package/lib/wrappers/invisible/ValueMemory.d.ts +0 -5
  204. package/lib/wrappers/text/AttributeHandler.d.ts +0 -8
  205. package/lib/wrappers/text/Coder.d.ts +0 -15
  206. package/lib/wrappers/text/ContentHandler.d.ts +0 -8
  207. package/lib/wrappers/text/CoreHandler.d.ts +0 -17
  208. package/lib/wrappers/text/TextWrapper.d.ts +0 -20
  209. package/src/Constants/ModifierKey.ts +0 -6
  210. package/src/Errors/ApiHttpError.ts +0 -8
  211. package/src/Observer.test.ts +0 -119
  212. package/src/Observer.ts +0 -68
  213. package/src/Properties.test.ts +0 -150
  214. package/src/Properties.ts +0 -112
  215. package/src/Tolgee.test.ts +0 -473
  216. package/src/TolgeeConfig.test.ts +0 -21
  217. package/src/TolgeeConfig.ts +0 -134
  218. package/src/__integration/FormatterIcu.test.ts +0 -80
  219. package/src/__integration/FormatterMissing.ts +0 -54
  220. package/src/__integration/Tolgee.test.ts +0 -90
  221. package/src/__integration/TolgeeInvisible.test.ts +0 -145
  222. package/src/__integration/mockTranslations.ts +0 -6
  223. package/src/__integration/testConfig.ts +0 -16
  224. package/src/__testFixtures/classMock.ts +0 -11
  225. package/src/__testFixtures/createElement.ts +0 -43
  226. package/src/__testFixtures/createTestDom.ts +0 -26
  227. package/src/__testFixtures/mocked.ts +0 -25
  228. package/src/__testFixtures/setupAfterEnv.ts +0 -34
  229. package/src/helpers/NodeHelper.ts +0 -90
  230. package/src/helpers/TextHelper.test.ts +0 -62
  231. package/src/helpers/TextHelper.ts +0 -58
  232. package/src/helpers/commonTypes.ts +0 -8
  233. package/src/helpers/encoderPolyfill.ts +0 -96
  234. package/src/helpers/secret.test.ts +0 -61
  235. package/src/helpers/secret.ts +0 -68
  236. package/src/helpers/sleep.ts +0 -2
  237. package/src/highlighter/HighlightFunctionsInitializer.test.ts +0 -40
  238. package/src/highlighter/HighlightFunctionsInitializer.ts +0 -61
  239. package/src/highlighter/MouseEventHandler.test.ts +0 -151
  240. package/src/highlighter/MouseEventHandler.ts +0 -191
  241. package/src/highlighter/TranslationHighlighter.test.ts +0 -177
  242. package/src/highlighter/TranslationHighlighter.ts +0 -113
  243. package/src/internal.ts +0 -2
  244. package/src/modules/IcuFormatter.test.ts +0 -21
  245. package/src/modules/IcuFormatter.ts +0 -39
  246. package/src/modules/index.ts +0 -1
  247. package/src/services/ApiHttpService.ts +0 -85
  248. package/src/services/CoreService.test.ts +0 -141
  249. package/src/services/CoreService.ts +0 -76
  250. package/src/services/DependencyService.test.ts +0 -51
  251. package/src/services/DependencyService.ts +0 -116
  252. package/src/services/ElementRegistrar.test.ts +0 -131
  253. package/src/services/ElementRegistrar.ts +0 -108
  254. package/src/services/EventEmitter.ts +0 -52
  255. package/src/services/EventService.ts +0 -14
  256. package/src/services/ModuleService.ts +0 -14
  257. package/src/services/ScreenshotService.ts +0 -31
  258. package/src/services/Subscription.ts +0 -7
  259. package/src/services/TextService.test.ts +0 -88
  260. package/src/services/TextService.ts +0 -82
  261. package/src/services/TranslationService.test.ts +0 -358
  262. package/src/services/TranslationService.ts +0 -417
  263. package/src/services/__mocks__/CoreService.ts +0 -17
  264. package/src/toolsManager/Messages.test.ts +0 -79
  265. package/src/toolsManager/Messages.ts +0 -60
  266. package/src/toolsManager/PluginManager.test.ts +0 -108
  267. package/src/toolsManager/PluginManager.ts +0 -129
  268. package/src/types/DTOs.ts +0 -25
  269. package/src/types/apiSchema.generated.ts +0 -6208
  270. package/src/wrappers/AbstractWrapper.ts +0 -14
  271. package/src/wrappers/NodeHandler.ts +0 -143
  272. package/src/wrappers/WrappedHandler.ts +0 -28
  273. package/src/wrappers/invisible/AttributeHandler.ts +0 -23
  274. package/src/wrappers/invisible/Coder.ts +0 -65
  275. package/src/wrappers/invisible/ContentHandler.ts +0 -15
  276. package/src/wrappers/invisible/CoreHandler.ts +0 -17
  277. package/src/wrappers/invisible/InvisibleWrapper.ts +0 -59
  278. package/src/wrappers/invisible/ValueMemory.test.ts +0 -25
  279. package/src/wrappers/invisible/ValueMemory.ts +0 -16
  280. package/src/wrappers/text/AttributeHandler.test.ts +0 -118
  281. package/src/wrappers/text/AttributeHandler.ts +0 -25
  282. package/src/wrappers/text/Coder.test.ts +0 -298
  283. package/src/wrappers/text/Coder.ts +0 -202
  284. package/src/wrappers/text/ContentHandler.test.ts +0 -185
  285. package/src/wrappers/text/ContentHandler.ts +0 -21
  286. package/src/wrappers/text/CoreHandler.test.ts +0 -106
  287. package/src/wrappers/text/CoreHandler.ts +0 -45
  288. package/src/wrappers/text/TextWrapper.ts +0 -69
package/src/types.ts CHANGED
@@ -1,96 +1,295 @@
1
- export interface TextInputElementData {
2
- oldValue: string;
3
- valueInputs: string[];
4
- touched: boolean;
5
- oldPlaceholder: string;
6
- placeholderInputs: string[];
7
- }
1
+ import type { Options } from './Controller/State/initState';
2
+ import type { ObserverOptions } from './Controller/State/initObserverOptions';
8
3
 
9
- export type TreeTranslationsData = {
10
- [key: string]: string | TreeTranslationsData;
11
- };
4
+ export type { State, Options } from './Controller/State/initState';
5
+ export type {
6
+ ObserverOptions,
7
+ ModifierKey,
8
+ } from './Controller/State/initObserverOptions';
12
9
 
13
- export type Translations = Record<string, string>;
14
- export type TranslationParams = {
15
- [key: string]: string | number | bigint;
16
- };
17
- export type TranslationParamsTags<T> = {
18
- [key: string]: string | number | bigint | ((value: T | T[]) => T);
19
- };
10
+ export type { EventEmitterInstance } from './Controller/Events/EventEmitter';
11
+ export type { EventEmitterSelectiveInstance } from './Controller/Events/EventEmitterSelective';
20
12
 
21
- export type TranslateProps = {
22
- key: string;
23
- defaultValue?: string;
24
- params?: TranslationParams;
13
+ export type FallbackGeneral = undefined | false | string | string[];
14
+
15
+ export type FallbackNS = FallbackGeneral;
16
+
17
+ export type NsType = string;
18
+
19
+ export type KeyType = string;
20
+
21
+ export type FallbackNSTranslation = undefined | NsType | NsType[];
22
+
23
+ export type FallbackLanguage = FallbackGeneral;
24
+
25
+ export type FallbackLanguageObject = Record<string, FallbackLanguage>;
26
+
27
+ export type FallbackLanguageOption = FallbackLanguage | FallbackLanguageObject;
28
+
29
+ export type TranslateOptions<T> = {
30
+ ns?: FallbackNSTranslation;
25
31
  noWrap?: boolean;
26
32
  orEmpty?: boolean;
33
+ params?: TranslateParams<T>;
27
34
  };
28
- export type TranslatePropsTags<T> = {
29
- key: string;
35
+
36
+ export type TranslateProps<T = DefaultParamType> = {
37
+ key: KeyType;
30
38
  defaultValue?: string;
31
- params?: TranslationParamsTags<T>;
32
- noWrap?: boolean;
33
- orEmpty?: boolean;
39
+ } & TranslateOptions<T>;
40
+
41
+ export type TranslatePropsInternal = TranslateProps & {
42
+ translation?: string;
34
43
  };
35
44
 
36
- export type InstantProps = {
37
- key: string;
38
- defaultValue?: string;
39
- params?: TranslationParams;
40
- noWrap?: boolean;
41
- orEmpty?: boolean;
45
+ export type TranslationValue = string | undefined | null;
46
+
47
+ export type TranslationsFlat = Map<string, TranslationValue>;
48
+
49
+ export type TreeTranslationsData = {
50
+ [key: string]: TranslationValue | TreeTranslationsData;
42
51
  };
43
- export type InstantPropsTags<T> = {
44
- key: string;
45
- defaultValue?: string;
46
- params?: TranslationParamsTags<T>;
47
- noWrap?: boolean;
48
- orEmpty?: boolean;
52
+
53
+ export type CacheAsyncRequests = Map<
54
+ string,
55
+ Promise<TreeTranslationsData | undefined> | undefined
56
+ >;
57
+
58
+ export type CacheDescriptor = {
59
+ language: string;
60
+ namespace?: string;
61
+ };
62
+
63
+ export type CacheDescriptorInternal = {
64
+ language: string;
65
+ namespace: string;
66
+ };
67
+
68
+ export type CacheDescriptorWithKey = CacheDescriptorInternal & {
69
+ key?: string;
49
70
  };
50
71
 
51
72
  export type KeyAndParams = {
52
73
  key: string;
53
- params: TranslationParams;
74
+ params?: TranslateParams;
54
75
  defaultValue?: string;
76
+ ns?: FallbackNSTranslation;
55
77
  };
56
- export type KeyAndParamsTags<T> = {
57
- key: string;
58
- params: TranslationParamsTags<T>;
59
- defaultValue?: string;
78
+
79
+ export type Unwrapped = { text: string; keys: KeyAndParams[] };
80
+
81
+ type PropType<TObj> = TObj[keyof TObj];
82
+
83
+ export type DefaultParamType = string | number | bigint;
84
+
85
+ export type TranslateParams<T = DefaultParamType> = {
86
+ [key: string]: T;
60
87
  };
61
88
 
62
- export type TranslatedWithMetadata = {
63
- translated: string;
64
- key: string;
65
- params: TranslationParams;
66
- defaultValue: string | undefined;
89
+ export type CombinedOptions<T> = TranslateOptions<T> & {
90
+ [key: string]: T | PropType<TranslateOptions<T>>;
67
91
  };
68
- export type TranslatedWithMetadataTags<T> = {
69
- translated: TranslationTags<T>;
70
- key: string;
71
- params: TranslationParamsTags<T>;
72
- defaultValue: string | undefined;
92
+
93
+ export type TFnType<T = DefaultParamType, R = string> = {
94
+ (key: string, defaultValue?: string, options?: CombinedOptions<T>): R;
95
+ (key: string, options?: CombinedOptions<T>): R;
96
+ (props: TranslateProps<T>): R;
97
+ };
98
+
99
+ export type WrapperWrapProps = Pick<
100
+ TranslatePropsInternal,
101
+ 'key' | 'params' | 'defaultValue' | 'ns' | 'translation'
102
+ >;
103
+ export type WrapperWrapFunction = (props: WrapperWrapProps) => string;
104
+ export type WrapperUnwrapFunction = (text: string) => Unwrapped;
105
+
106
+ export type WrapperAttributeXPathGetter = (props: {
107
+ tag: string;
108
+ attribute: string;
109
+ }) => string;
110
+
111
+ export type WrapperInterface = {
112
+ unwrap: WrapperUnwrapFunction;
113
+ wrap: WrapperWrapFunction;
114
+ getTextXPath: () => string;
115
+ getAttributeXPath: WrapperAttributeXPathGetter;
116
+ };
117
+
118
+ export type FormatterInterfaceFormatParams = {
119
+ translation: string;
120
+ language: string;
121
+ params: Record<string, any> | undefined;
122
+ };
123
+
124
+ export type FormatterInterface = {
125
+ format: (props: FormatterInterfaceFormatParams) => string;
126
+ };
127
+
128
+ export type FinalFormatterInterface = {
129
+ format: (props: FormatterInterfaceFormatParams) => any;
130
+ };
131
+
132
+ export type ObserverProps = {
133
+ translate: (params: TranslatePropsInternal) => string;
134
+ onClick: TranslationOnClick;
135
+ options: ObserverOptions;
136
+ };
137
+
138
+ export type HighlightInterface = (
139
+ key?: string,
140
+ ns?: FallbackNSTranslation
141
+ ) => {
142
+ unhighlight(): void;
143
+ };
144
+
145
+ export type ObserverRunProps = {
146
+ mouseHighlight: boolean;
147
+ };
148
+
149
+ export type ObserverInterface = (props: ObserverProps) => {
150
+ unwrap: (text: string) => Unwrapped;
151
+ wrap: WrapperWrapFunction;
152
+ retranslate: () => void;
153
+ stop: () => void;
154
+ run: (props: ObserverRunProps) => void;
155
+ highlight: HighlightInterface;
156
+ outputNotFormattable: boolean;
157
+ };
158
+
159
+ export type LanguageDetectorProps = {
160
+ availableLanguages: string[];
161
+ };
162
+
163
+ export type LanguageDetectorInterface = {
164
+ getLanguage: (
165
+ props: LanguageDetectorProps
166
+ ) => string | undefined | Promise<string | undefined>;
167
+ };
168
+
169
+ export type LanguageStorageInterface = {
170
+ getLanguage: () => string | undefined | Promise<string | undefined>;
171
+ setLanguage: (language: string) => void | Promise<void>;
73
172
  };
74
173
 
75
- export type TranslationTags<T> = string | T[];
174
+ export type DevCredentials =
175
+ | undefined
176
+ | {
177
+ apiUrl?: string;
178
+ apiKey?: string;
179
+ };
76
180
 
77
- export type NodeWithMeta = Node & {
78
- _tolgee: NodeMeta;
181
+ export type BackendDevProps = {
182
+ apiUrl?: string;
183
+ apiKey?: string;
184
+ projectId?: number;
79
185
  };
80
186
 
81
- export type NodeWithLock = Node & {
82
- _tolgee: NodeLock;
187
+ export type BackendGetRecordProps = {
188
+ language: string;
189
+ namespace?: string;
190
+ };
191
+
192
+ export type BackendGetRecord = (
193
+ data: BackendGetRecordProps
194
+ ) => Promise<TreeTranslationsData | undefined> | undefined;
195
+
196
+ export interface BackendInterface {
197
+ getRecord: BackendGetRecord;
198
+ }
199
+
200
+ export type BackendGetDevRecord = (
201
+ data: BackendGetRecordProps & BackendDevProps
202
+ ) => Promise<TreeTranslationsData | undefined> | undefined;
203
+
204
+ export type BackendDevInterface = {
205
+ getRecord: BackendGetDevRecord;
83
206
  };
84
207
 
85
- export type ElementWithMeta = Element &
86
- ElementCSSInlineStyle & {
87
- _tolgee: ElementMeta;
88
- };
208
+ export type TolgeeEvent =
209
+ | 'pendingLanguage'
210
+ | 'language'
211
+ | 'key'
212
+ | 'loading'
213
+ | 'fetching'
214
+ | 'initialLoad'
215
+ | 'running'
216
+ | 'cache'
217
+ | 'keyUpdate';
218
+
219
+ export type TolgeeOn = {
220
+ (event: 'pendingLanguage', handler: ListenerHandler<string>): Listener;
221
+ (event: 'language', handler: ListenerHandler<string>): Listener;
222
+ (event: 'key', handler: ListenerHandler<string>): Listener;
223
+ (event: 'loading', handler: ListenerHandler<boolean>): Listener;
224
+ (event: 'fetching', handler: ListenerHandler<boolean>): Listener;
225
+ (event: 'initialLoad', handler: ListenerHandler<void>): Listener;
226
+ (event: 'running', handler: ListenerHandler<boolean>): Listener;
227
+ (event: 'keyUpdate', handler: ListenerHandler<void>): Listener;
228
+ (event: TolgeeEvent, handler: ListenerHandler<any>): Listener;
229
+ };
230
+
231
+ export type TolgeeInstance = Readonly<{
232
+ on: TolgeeOn;
233
+ onKeyUpdate: (handler: ListenerHandler<void>) => ListenerSelective;
234
+
235
+ use: (plugin: TolgeePlugin | undefined) => TolgeeInstance;
236
+
237
+ getLanguage: () => string | undefined;
238
+ getPendingLanguage: () => string | undefined;
239
+ changeLanguage: (language: string) => Promise<void>;
240
+ changeTranslation: ChangeTranslationInterface;
241
+ addActiveNs: (ns: FallbackNSTranslation, forget?: boolean) => Promise<void>;
242
+ removeActiveNs: (ns: FallbackNSTranslation) => void;
243
+ loadRecords: (descriptors: CacheDescriptor[]) => Promise<TranslationsFlat[]>;
244
+ loadRecord: (descriptors: CacheDescriptor) => Promise<TranslationsFlat>;
245
+ addStaticData: (data: Options['staticData']) => void;
246
+ getRecord: (descriptor: CacheDescriptor) => TranslationsFlat | undefined;
247
+ getAllRecords: () => CachePublicRecord[];
248
+ isInitialLoading: () => boolean;
249
+ isLoading: (ns?: FallbackNSTranslation) => boolean;
250
+ isLoaded: (ns?: FallbackNSTranslation) => boolean;
251
+ isFetching: (ns?: FallbackNSTranslation) => boolean;
252
+ isRunning: () => boolean;
253
+ highlight: HighlightInterface;
254
+ getInitialOptions: () => Options;
255
+ isDev: () => boolean;
256
+ init: (options: Partial<Options>) => TolgeeInstance;
257
+ run: () => Promise<void>;
258
+ stop: () => void;
259
+ t: TFnType;
260
+ wrap: (params: TranslatePropsInternal) => string | undefined;
261
+ unwrap: (text: string) => Unwrapped;
262
+ setObserverOptions: (options: Partial<ObserverOptions>) => TolgeeInstance;
263
+ }>;
264
+
265
+ export type PluginServicePublic = Readonly<{
266
+ setFinalFormatter: (formatter: FinalFormatterInterface | undefined) => void;
267
+ addFormatter: (formatter: FormatterInterface | undefined) => void;
268
+ setObserver: (observer: ObserverInterface | undefined) => void;
269
+ hasObserver: () => boolean;
270
+ setUi: (ui: UiLibInterface | undefined) => void;
271
+ hasUi: () => boolean;
272
+ addBackend: (backend: BackendInterface | undefined) => void;
273
+ setDevBackend: (backend: BackendInterface | undefined) => void;
274
+ setLanguageDetector: (
275
+ languageDetector: LanguageDetectorInterface | undefined
276
+ ) => void;
277
+ setLanguageStorage: (
278
+ languageStorage: LanguageStorageInterface | undefined
279
+ ) => void;
280
+ overrideCredentials: (credentials: DevCredentials) => void;
281
+ }>;
282
+
283
+ export type NodeMeta = {
284
+ oldTextContent: string;
285
+ keys: KeyAndParams[];
286
+ keyAttributeOnly?: boolean;
287
+ };
89
288
 
90
289
  export type ElementMeta = {
91
290
  wrappedWithElementOnlyKey?: string;
92
291
  wrappedWithElementOnlyDefaultHtml?: string;
93
- nodes: Set<NodeWithMeta>;
292
+ nodes: Map<Node, NodeMeta>;
94
293
  highlightEl?: HTMLDivElement;
95
294
  highlight?: () => void;
96
295
  unhighlight?: () => void;
@@ -104,43 +303,92 @@ export type ElementMeta = {
104
303
  * Triggering highlight needs the metadata stored on element, so
105
304
  * we need the ability to prevent clean.
106
305
  */
306
+
107
307
  preventClean?: boolean;
108
308
  };
109
309
 
110
- export type NodeMeta = {
111
- oldTextContent: string;
112
- keys: KeyAndParamsTags<any>[];
113
- } & NodeLock;
310
+ export type ChangeTranslationInterface = (
311
+ descriptor: CacheDescriptor,
312
+ key: string,
313
+ value: string
314
+ ) => { revert: () => void };
114
315
 
115
- export type NodeLock = {
116
- locked?: boolean;
316
+ export type UiProps = {
317
+ apiUrl: string;
318
+ apiKey: string;
319
+ highlight: HighlightInterface;
320
+ changeTranslation: ChangeTranslationInterface;
117
321
  };
118
322
 
119
- export type Scope =
120
- | 'translations.edit'
121
- | 'translations.view'
122
- | 'keys.edit'
123
- | 'screenshots.upload'
124
- | 'screenshots.view'
125
- | 'screenshots.delete';
323
+ export interface UiInterface {
324
+ handleElementClick(
325
+ event: MouseEvent,
326
+ keysAndDefaults: UiKeyOption[]
327
+ ): Promise<void>;
328
+ }
126
329
 
127
- export type Mode = 'development' | 'production';
330
+ export type UiConstructor = new (props: UiProps) => UiInterface;
128
331
 
129
- export type Unwrapped = { text: string; keys: KeyAndParamsTags<any>[] };
332
+ export type UiLibInterface = {
333
+ UI: UiConstructor;
334
+ };
130
335
 
131
- export interface Formatter {
132
- format: FormatFunction;
133
- }
336
+ export type UiType = UiConstructor | UiLibInterface;
134
337
 
135
- interface FormatterStatic {
136
- type: 'formatter';
137
- new (): Formatter;
138
- }
338
+ export type UiKeyOption = {
339
+ key: string;
340
+ defaultValue?: string;
341
+ ns: FallbackNSTranslation;
342
+ translation: string | undefined;
343
+ };
139
344
 
140
- export type TolgeeModule = FormatterStatic;
345
+ export type KeyWithDefault = {
346
+ key: string;
347
+ defaultValue?: string;
348
+ ns: FallbackNSTranslation;
349
+ };
141
350
 
142
- export type FormatFunction = (props: {
143
- translation: string;
144
- params: Record<string, any>;
351
+ export type TranslationOnClick = (
352
+ event: MouseEvent,
353
+ data: {
354
+ keysAndDefaults: KeyWithDefault[];
355
+ el: Element;
356
+ meta: ElementMeta;
357
+ }
358
+ ) => void;
359
+
360
+ export type Listener = {
361
+ unsubscribe: () => void;
362
+ };
363
+
364
+ export type KeyDescriptorInternal = {
365
+ key?: string;
366
+ ns?: string[] | undefined;
367
+ };
368
+
369
+ export type KeyDescriptor = {
370
+ key: string;
371
+ ns?: string | string[];
372
+ };
373
+
374
+ export type ListenerSelective = {
375
+ unsubscribe: () => void;
376
+ subscribeNs: (ns: FallbackNSTranslation) => ListenerSelective;
377
+ unsubscribeNs: (ns: FallbackNSTranslation) => ListenerSelective;
378
+ subscribeKey: (descriptor: KeyDescriptor) => ListenerSelective;
379
+ unsubscribeKey: (descriptor: KeyDescriptor) => ListenerSelective;
380
+ };
381
+
382
+ export type ListenerHandlerEvent<T> = { value: T };
383
+ export type ListenerHandler<T> = (e: ListenerHandlerEvent<T>) => void;
384
+
385
+ export type TolgeePlugin = (
386
+ tolgee: TolgeeInstance,
387
+ tools: PluginServicePublic
388
+ ) => TolgeeInstance;
389
+
390
+ export type CachePublicRecord = {
391
+ data: TranslationsFlat;
145
392
  language: string;
146
- }) => string | any[];
393
+ namespace: string;
394
+ };
package/README.md DELETED
@@ -1,45 +0,0 @@
1
- # Tolgee core library
2
-
3
- ![test workflow](https://github.com/tolgee/tolgee-js/actions/workflows/test.yml/badge.svg)
4
- ![@tolgee/core version](https://img.shields.io/npm/v/@tolgee/core?label=%40tolgee%2Fcore)
5
- ![types typescript](https://img.shields.io/badge/Types-Typescript-blue)
6
- [![twitter](https://img.shields.io/twitter/follow/Tolgee_i18n?style=social)](https://twitter.com/Tolgee_i18n)
7
- [![github stars](https://img.shields.io/github/stars/tolgee/tolgee-js?style=social)](https://github.com/tolgee/tolgee-js)
8
-
9
- [<img src="https://raw.githubusercontent.com/tolgee/documentation/main/tolgee_logo_text.svg" alt="Tolgee" width="200" />](https://tolgee.io)
10
-
11
- Core library of Tolgee localization toolkit. For more information about Tolgee Toolkit, visit our documentation website
12
- [toolkit.tolgee.io](https://toolkit.tolgee.io).
13
-
14
- ## Installation
15
-
16
- npm install @tolgee/core --save
17
-
18
- ## Usage
19
-
20
- First, create a Tolgee instance and run it.
21
-
22
- import {Tolgee} from "@tolgee/core";
23
-
24
- const tg = Tolgee.init({
25
- apiKey: "your_api_key",
26
- apiUrl: "https://app.tolgee.io",
27
- })
28
-
29
- tg.run();
30
-
31
- Then, use it to translate your strings.
32
-
33
- tg.onLangLoaded.subscribe(() => {
34
- document.title = tg.translate("hello_world");
35
- });
36
-
37
- ## Features
38
-
39
- - All in One localization solution for your JS application 🙌
40
- - Out of box in-context localization 🎉
41
- - Automated screenshot generation 📷
42
- - Translation management platform 🎈
43
- - Open-source 🔥
44
-
45
- To learn more, check [Hello World example](https://toolkit.tolgee.io/docs/web/get_started/hello_world).
@@ -1,6 +0,0 @@
1
- export declare const RESTRICTED_ASCENDANT_ATTRIBUTE = "data-tolgee-restricted";
2
- export declare const TOLGEE_ATTRIBUTE_NAME = "_tolgee";
3
- export declare const TOLGEE_TARGET_ATTRIBUTE = "_tolgee-target";
4
- export declare const TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE = "data-tolgee-key-only";
5
- export declare const TOLGEE_HIGHLIGHTER_CLASS = "_tolgee-highlighter";
6
- export declare const DEVTOOLS_ID = "__tolgee_dev_tools";
@@ -1,6 +0,0 @@
1
- export declare enum ModifierKey {
2
- Alt = 0,
3
- Control = 1,
4
- Shift = 2,
5
- Meta = 3
6
- }
@@ -1,5 +0,0 @@
1
- export declare class ApiHttpError extends Error {
2
- response: Response;
3
- code?: string;
4
- constructor(response: Response, code?: string);
5
- }
@@ -1,14 +0,0 @@
1
- import { Properties } from './Properties';
2
- import { ElementRegistrar } from './services/ElementRegistrar';
3
- import { AbstractWrapper } from './wrappers/AbstractWrapper';
4
- export declare class Observer {
5
- private properties;
6
- private textWrapper;
7
- private nodeRegistrar;
8
- constructor(properties: Properties, textWrapper: AbstractWrapper, nodeRegistrar: ElementRegistrar);
9
- private _observer;
10
- private _observing;
11
- private get observer();
12
- observe(): void;
13
- stopObserving(): void;
14
- }
@@ -1,2 +0,0 @@
1
- import '@testing-library/jest-dom/extend-expect';
2
- import 'regenerator-runtime/runtime.js';
@@ -1,17 +0,0 @@
1
- import { TolgeeConfig } from './TolgeeConfig';
2
- import { Mode, Scope } from './types';
3
- export declare class Properties {
4
- config: TolgeeConfig;
5
- scopes?: Scope[];
6
- projectId?: number;
7
- permittedLanguageIds?: number[];
8
- mode?: Mode;
9
- _currentLanguage?: string;
10
- get currentLanguage(): string;
11
- set currentLanguage(language: string);
12
- get preferredLanguages(): Set<string>;
13
- set preferredLanguages(languages: Set<string>);
14
- private getInitialLanguage;
15
- private getStoredLanguage;
16
- private getLanguageByNavigator;
17
- }
@@ -1 +0,0 @@
1
- import '@testing-library/jest-dom/extend-expect';
package/dist/Tolgee.d.ts DELETED
@@ -1,68 +0,0 @@
1
- import { TolgeeConfig } from './TolgeeConfig';
2
- import { InstantProps, InstantPropsTags, TolgeeModule, TranslateProps, TranslatePropsTags, TranslationTags, TranslationParams, TranslationParamsTags } from './types';
3
- export declare class Tolgee {
4
- private dependencyService;
5
- private constructor();
6
- get properties(): import("./Properties").Properties;
7
- get lang(): string;
8
- /**
9
- * This sets a new language.
10
- *
11
- * Using this setter can behave buggy when you change languages
12
- * too fast, since it changes the language property before
13
- * translations are actually loaded.
14
- * @deprecated use asynchronous changeLanguage method.
15
- */
16
- set lang(newLanguage: string);
17
- get defaultLanguage(): string;
18
- get onLangChange(): import("./services/EventEmitter").EventEmitter<string>;
19
- get onTranslationChange(): import("./services/EventEmitter").EventEmitter<import(".").TranslationData>;
20
- /**
21
- * Is emitted when language is loaded for the first time
22
- */
23
- get onLangLoaded(): import("./services/EventEmitter").EventEmitter<string>;
24
- /**
25
- * True if loading is needed to wait for Tolgee init.
26
- * When translation data are provided statically (using import
27
- * as staticData config property) then there is no need for translation
28
- * fetching so initial loading is not needed at all.
29
- */
30
- get initialLoading(): boolean;
31
- private get coreService();
32
- static use(module: TolgeeModule): Tolgee;
33
- static init(config: TolgeeConfig): Tolgee;
34
- /**
35
- * Sets the new language.
36
- *
37
- * Emits the onLangChange and onLangChangeAndLoad events after
38
- * the translations are loaded.
39
- *
40
- * @return Promise<void> Resolves when translations are loaded
41
- */
42
- changeLanguage(newLanguage: string): Promise<void>;
43
- use(module: TolgeeModule): this;
44
- init(config: TolgeeConfig): this;
45
- run(): Promise<void>;
46
- refresh(): Promise<void>;
47
- translate(props: TranslateProps): Promise<string>;
48
- translate<T>(props: TranslatePropsTags<T>): Promise<TranslationTags<T>>;
49
- translate(key: string, params?: TranslationParams, noWrap?: boolean, defaultValue?: string): Promise<string>;
50
- translate<T>(key: string, params?: TranslationParamsTags<T>, noWrap?: boolean, defaultValue?: string): Promise<TranslationTags<T>>;
51
- wrap(key: string, params?: TranslationParams, defaultValue?: string | undefined, translation?: string): string;
52
- wrap<T>(key: string, params?: TranslationTags<T>, defaultValue?: string | undefined, translation?: TranslationTags<T>): TranslationTags<T>;
53
- instant(key: string, params?: TranslationParams, noWrap?: boolean, orEmpty?: boolean, defaultValue?: string): string;
54
- instant<T>(key: string, params?: TranslationParamsTags<T>, noWrap?: boolean, orEmpty?: boolean, defaultValue?: string): TranslationTags<T>;
55
- instant(props: InstantProps): string;
56
- instant<T>(props: InstantPropsTags<T>): TranslationTags<T>;
57
- /**
58
- * Get currently cached translations for all languages
59
- */
60
- getCachedTranslations(): Map<string, import("./types").Translations>;
61
- /**
62
- * Loads translations for given language or returns them from cache
63
- * @returns Loaded translations
64
- */
65
- loadTranslations(lang: string): Promise<import("./types").Translations>;
66
- stop: () => void;
67
- private emitLangChangeEvent;
68
- }
@@ -1 +0,0 @@
1
- import '@testing-library/jest-dom/extend-expect';