@tolgee/core 4.7.0 → 4.7.2

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 (97) hide show
  1. package/dist/tolgee.cjs.js +2 -4
  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 → tolgee.esm.min.mjs} +2 -2
  6. package/dist/tolgee.esm.min.mjs.map +1 -0
  7. package/dist/tolgee.esm.mjs +5690 -0
  8. package/dist/tolgee.esm.mjs.map +1 -0
  9. package/dist/tolgee.umd.js +2 -4
  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/package.json +10 -9
  14. package/src/Constants/Global.ts +9 -0
  15. package/src/Constants/ModifierKey.ts +6 -0
  16. package/src/Errors/ApiHttpError.ts +8 -0
  17. package/src/Observer.test.ts +119 -0
  18. package/src/Observer.ts +68 -0
  19. package/src/Properties.test.ts +150 -0
  20. package/src/Properties.ts +112 -0
  21. package/src/Tolgee.test.ts +473 -0
  22. package/src/Tolgee.ts +335 -0
  23. package/src/TolgeeConfig.test.ts +21 -0
  24. package/src/TolgeeConfig.ts +134 -0
  25. package/src/__integration/FormatterIcu.test.ts +80 -0
  26. package/src/__integration/FormatterMissing.ts +54 -0
  27. package/src/__integration/Tolgee.test.ts +90 -0
  28. package/src/__integration/TolgeeInvisible.test.ts +145 -0
  29. package/src/__integration/mockTranslations.ts +6 -0
  30. package/src/__integration/testConfig.ts +16 -0
  31. package/src/__testFixtures/classMock.ts +11 -0
  32. package/src/__testFixtures/createElement.ts +43 -0
  33. package/src/__testFixtures/createTestDom.ts +25 -0
  34. package/src/__testFixtures/mocked.ts +25 -0
  35. package/src/__testFixtures/setupAfterEnv.ts +34 -0
  36. package/src/helpers/NodeHelper.ts +90 -0
  37. package/src/helpers/TextHelper.test.ts +62 -0
  38. package/src/helpers/TextHelper.ts +58 -0
  39. package/src/helpers/commonTypes.ts +8 -0
  40. package/src/helpers/encoderPolyfill.ts +96 -0
  41. package/src/helpers/secret.test.ts +61 -0
  42. package/src/helpers/secret.ts +68 -0
  43. package/src/helpers/sleep.ts +2 -0
  44. package/src/highlighter/HighlightFunctionsInitializer.test.ts +40 -0
  45. package/src/highlighter/HighlightFunctionsInitializer.ts +61 -0
  46. package/src/highlighter/MouseEventHandler.test.ts +151 -0
  47. package/src/highlighter/MouseEventHandler.ts +191 -0
  48. package/src/highlighter/TranslationHighlighter.test.ts +177 -0
  49. package/src/highlighter/TranslationHighlighter.ts +113 -0
  50. package/src/index.ts +10 -0
  51. package/src/internal.ts +2 -0
  52. package/src/modules/IcuFormatter.ts +17 -0
  53. package/src/modules/index.ts +1 -0
  54. package/src/services/ApiHttpService.ts +85 -0
  55. package/src/services/CoreService.test.ts +142 -0
  56. package/src/services/CoreService.ts +76 -0
  57. package/src/services/DependencyService.test.ts +51 -0
  58. package/src/services/DependencyService.ts +116 -0
  59. package/src/services/ElementRegistrar.test.ts +131 -0
  60. package/src/services/ElementRegistrar.ts +108 -0
  61. package/src/services/EventEmitter.ts +52 -0
  62. package/src/services/EventService.ts +14 -0
  63. package/src/services/ModuleService.ts +14 -0
  64. package/src/services/ScreenshotService.ts +31 -0
  65. package/src/services/Subscription.ts +7 -0
  66. package/src/services/TextService.test.ts +88 -0
  67. package/src/services/TextService.ts +82 -0
  68. package/src/services/TranslationService.test.ts +358 -0
  69. package/src/services/TranslationService.ts +417 -0
  70. package/src/services/__mocks__/CoreService.ts +17 -0
  71. package/src/toolsManager/Messages.test.ts +79 -0
  72. package/src/toolsManager/Messages.ts +60 -0
  73. package/src/toolsManager/PluginManager.test.ts +108 -0
  74. package/src/toolsManager/PluginManager.ts +129 -0
  75. package/src/types/DTOs.ts +25 -0
  76. package/src/types/apiSchema.generated.ts +6208 -0
  77. package/src/types.ts +146 -0
  78. package/src/wrappers/AbstractWrapper.ts +14 -0
  79. package/src/wrappers/NodeHandler.ts +143 -0
  80. package/src/wrappers/WrappedHandler.ts +28 -0
  81. package/src/wrappers/invisible/AttributeHandler.ts +23 -0
  82. package/src/wrappers/invisible/Coder.ts +65 -0
  83. package/src/wrappers/invisible/ContentHandler.ts +15 -0
  84. package/src/wrappers/invisible/CoreHandler.ts +17 -0
  85. package/src/wrappers/invisible/InvisibleWrapper.ts +59 -0
  86. package/src/wrappers/invisible/ValueMemory.test.ts +25 -0
  87. package/src/wrappers/invisible/ValueMemory.ts +16 -0
  88. package/src/wrappers/text/AttributeHandler.test.ts +117 -0
  89. package/src/wrappers/text/AttributeHandler.ts +25 -0
  90. package/src/wrappers/text/Coder.test.ts +298 -0
  91. package/src/wrappers/text/Coder.ts +202 -0
  92. package/src/wrappers/text/ContentHandler.test.ts +185 -0
  93. package/src/wrappers/text/ContentHandler.ts +21 -0
  94. package/src/wrappers/text/CoreHandler.test.ts +106 -0
  95. package/src/wrappers/text/CoreHandler.ts +45 -0
  96. package/src/wrappers/text/TextWrapper.ts +69 -0
  97. package/dist/tolgee.esm.js.map +0 -1
@@ -0,0 +1,129 @@
1
+ import { Properties } from '../Properties';
2
+ import { Messages } from './Messages';
3
+ import { EventService } from '../services/EventService';
4
+ import { ElementRegistrar } from '../services/ElementRegistrar';
5
+ import { TolgeeConfig } from '../TolgeeConfig';
6
+ import { TranslationService } from '../services/TranslationService';
7
+ import { TranslationData } from '../types/DTOs';
8
+ import { sleep } from '../helpers/sleep';
9
+
10
+ export class PluginManager {
11
+ public handshakeSucceed = false;
12
+
13
+ constructor(
14
+ private messages: Messages,
15
+ private properties: Properties,
16
+ private eventService: EventService,
17
+ private elementRegistrar: ElementRegistrar,
18
+ private translationService: TranslationService
19
+ ) {}
20
+
21
+ run() {
22
+ try {
23
+ this.messages.startListening();
24
+ this.handshake();
25
+ } catch (e) {
26
+ // eslint-disable-next-line no-console
27
+ console.warn(e);
28
+ // eslint-disable-next-line no-console
29
+ console.warn(
30
+ 'Can not start communication with browser plugin. Check waning above.'
31
+ );
32
+ }
33
+ }
34
+
35
+ stop() {
36
+ this.messages.stopListening();
37
+ }
38
+
39
+ public readonly takeScreenshot = (
40
+ translationData: TranslationData
41
+ ): Promise<string> => {
42
+ return new Promise((resolve, reject) => {
43
+ this.translationService
44
+ .changeTranslations(translationData)
45
+ .then(async (revertChange) => {
46
+ try {
47
+ this.highlightAllByKey(translationData.key);
48
+ await sleep(100);
49
+ this.messages.send('TOLGEE_TAKE_SCREENSHOT');
50
+ const cancel = this.messages.listen(
51
+ 'TOLGEE_SCREENSHOT_TAKEN',
52
+ (data) => {
53
+ this.unhighlightAllByKey(translationData.key);
54
+ resolve(data);
55
+ revertChange();
56
+ cancel();
57
+ }
58
+ );
59
+ } catch (e) {
60
+ revertChange();
61
+ reject(e);
62
+ }
63
+ })
64
+ .catch((e) => {
65
+ reject(e);
66
+ });
67
+ });
68
+ };
69
+
70
+ private highlightAllByKey(key: string) {
71
+ this.elementRegistrar
72
+ .findAllByKey(key)
73
+ .forEach((el) => el._tolgee.highlight());
74
+ }
75
+
76
+ private unhighlightAllByKey(key: string) {
77
+ this.elementRegistrar
78
+ .findAllByKey(key)
79
+ .forEach((el) => el._tolgee.unhighlight());
80
+ }
81
+
82
+ private readonly handshake = () => {
83
+ const sharedConfiguration: Partial<Properties> & {
84
+ config: Partial<TolgeeConfig>;
85
+ uiPresent: boolean;
86
+ uiVersion: string | undefined;
87
+ } = {
88
+ ...this.properties,
89
+ config: {
90
+ ...this.properties.config,
91
+ //remove properties, which cannot be sent by window.postMessage
92
+ staticData: undefined,
93
+ targetElement: undefined,
94
+ _targetElement: undefined,
95
+ ui: undefined,
96
+ } as any as TolgeeConfig,
97
+ uiPresent: Boolean(this.properties.config.ui),
98
+ uiVersion: process.env.TOLGEE_UI_VERSION,
99
+ };
100
+
101
+ let timer: NodeJS.Timer = null;
102
+
103
+ const ping = () => {
104
+ this.messages.send('TOLGEE_READY', sharedConfiguration);
105
+ };
106
+ const finish = () => {
107
+ clearInterval(timer);
108
+ };
109
+
110
+ this.messages.listen('TOLGEE_PLUGIN_READY', () => {
111
+ this.handshakeSucceed = true;
112
+ this.messages.send('TOLGEE_READY', sharedConfiguration);
113
+ finish();
114
+ });
115
+
116
+ ping();
117
+
118
+ // try ping 5 times as sometimes extension doesn't respond right away
119
+ let counter = 0;
120
+ timer = setInterval(() => {
121
+ if (!this.handshakeSucceed && counter < 5) {
122
+ ping();
123
+ counter += 1;
124
+ } else {
125
+ finish();
126
+ }
127
+ }, 200);
128
+ };
129
+ }
@@ -0,0 +1,25 @@
1
+ import { components } from './apiSchema.generated';
2
+
3
+ export class TranslationData {
4
+ constructor(
5
+ public key: string,
6
+ public translations: { [key: string]: string },
7
+ public id?: number
8
+ ) {}
9
+ }
10
+
11
+ export type ComplexEditKeyDto = components['schemas']['ComplexEditKeyDto'];
12
+ export type KeyWithDataModel = components['schemas']['KeyWithDataModel'];
13
+ export type CreateKeyDto = components['schemas']['CreateKeyDto'];
14
+ export type SetTranslationsWithKeyDto =
15
+ components['schemas']['SetTranslationsWithKeyDto'];
16
+ export type SetTranslationsResponseModel =
17
+ components['schemas']['SetTranslationsResponseModel'];
18
+ export type KeyWithTranslationsModel =
19
+ components['schemas']['KeyWithTranslationsModel'];
20
+
21
+ export type UploadedImageModel = components['schemas']['UploadedImageModel'];
22
+
23
+ export type PagedModelLanguageModel =
24
+ components['schemas']['PagedModelLanguageModel'];
25
+ export type LanguageModel = components['schemas']['LanguageModel'];