@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.
- package/dist/tolgee.cjs.js +2 -4
- package/dist/tolgee.cjs.js.map +1 -1
- package/dist/tolgee.cjs.min.js +1 -1
- package/dist/tolgee.cjs.min.js.map +1 -1
- package/dist/{tolgee.esm.js → tolgee.esm.min.mjs} +2 -2
- package/dist/tolgee.esm.min.mjs.map +1 -0
- package/dist/tolgee.esm.mjs +5690 -0
- package/dist/tolgee.esm.mjs.map +1 -0
- package/dist/tolgee.umd.js +2 -4
- package/dist/tolgee.umd.js.map +1 -1
- package/dist/tolgee.umd.min.js +1 -1
- package/dist/tolgee.umd.min.js.map +1 -1
- package/package.json +10 -9
- package/src/Constants/Global.ts +9 -0
- package/src/Constants/ModifierKey.ts +6 -0
- package/src/Errors/ApiHttpError.ts +8 -0
- package/src/Observer.test.ts +119 -0
- package/src/Observer.ts +68 -0
- package/src/Properties.test.ts +150 -0
- package/src/Properties.ts +112 -0
- package/src/Tolgee.test.ts +473 -0
- package/src/Tolgee.ts +335 -0
- package/src/TolgeeConfig.test.ts +21 -0
- package/src/TolgeeConfig.ts +134 -0
- package/src/__integration/FormatterIcu.test.ts +80 -0
- package/src/__integration/FormatterMissing.ts +54 -0
- package/src/__integration/Tolgee.test.ts +90 -0
- package/src/__integration/TolgeeInvisible.test.ts +145 -0
- package/src/__integration/mockTranslations.ts +6 -0
- package/src/__integration/testConfig.ts +16 -0
- package/src/__testFixtures/classMock.ts +11 -0
- package/src/__testFixtures/createElement.ts +43 -0
- package/src/__testFixtures/createTestDom.ts +25 -0
- package/src/__testFixtures/mocked.ts +25 -0
- package/src/__testFixtures/setupAfterEnv.ts +34 -0
- package/src/helpers/NodeHelper.ts +90 -0
- package/src/helpers/TextHelper.test.ts +62 -0
- package/src/helpers/TextHelper.ts +58 -0
- package/src/helpers/commonTypes.ts +8 -0
- package/src/helpers/encoderPolyfill.ts +96 -0
- package/src/helpers/secret.test.ts +61 -0
- package/src/helpers/secret.ts +68 -0
- package/src/helpers/sleep.ts +2 -0
- package/src/highlighter/HighlightFunctionsInitializer.test.ts +40 -0
- package/src/highlighter/HighlightFunctionsInitializer.ts +61 -0
- package/src/highlighter/MouseEventHandler.test.ts +151 -0
- package/src/highlighter/MouseEventHandler.ts +191 -0
- package/src/highlighter/TranslationHighlighter.test.ts +177 -0
- package/src/highlighter/TranslationHighlighter.ts +113 -0
- package/src/index.ts +10 -0
- package/src/internal.ts +2 -0
- package/src/modules/IcuFormatter.ts +17 -0
- package/src/modules/index.ts +1 -0
- package/src/services/ApiHttpService.ts +85 -0
- package/src/services/CoreService.test.ts +142 -0
- package/src/services/CoreService.ts +76 -0
- package/src/services/DependencyService.test.ts +51 -0
- package/src/services/DependencyService.ts +116 -0
- package/src/services/ElementRegistrar.test.ts +131 -0
- package/src/services/ElementRegistrar.ts +108 -0
- package/src/services/EventEmitter.ts +52 -0
- package/src/services/EventService.ts +14 -0
- package/src/services/ModuleService.ts +14 -0
- package/src/services/ScreenshotService.ts +31 -0
- package/src/services/Subscription.ts +7 -0
- package/src/services/TextService.test.ts +88 -0
- package/src/services/TextService.ts +82 -0
- package/src/services/TranslationService.test.ts +358 -0
- package/src/services/TranslationService.ts +417 -0
- package/src/services/__mocks__/CoreService.ts +17 -0
- package/src/toolsManager/Messages.test.ts +79 -0
- package/src/toolsManager/Messages.ts +60 -0
- package/src/toolsManager/PluginManager.test.ts +108 -0
- package/src/toolsManager/PluginManager.ts +129 -0
- package/src/types/DTOs.ts +25 -0
- package/src/types/apiSchema.generated.ts +6208 -0
- package/src/types.ts +146 -0
- package/src/wrappers/AbstractWrapper.ts +14 -0
- package/src/wrappers/NodeHandler.ts +143 -0
- package/src/wrappers/WrappedHandler.ts +28 -0
- package/src/wrappers/invisible/AttributeHandler.ts +23 -0
- package/src/wrappers/invisible/Coder.ts +65 -0
- package/src/wrappers/invisible/ContentHandler.ts +15 -0
- package/src/wrappers/invisible/CoreHandler.ts +17 -0
- package/src/wrappers/invisible/InvisibleWrapper.ts +59 -0
- package/src/wrappers/invisible/ValueMemory.test.ts +25 -0
- package/src/wrappers/invisible/ValueMemory.ts +16 -0
- package/src/wrappers/text/AttributeHandler.test.ts +117 -0
- package/src/wrappers/text/AttributeHandler.ts +25 -0
- package/src/wrappers/text/Coder.test.ts +298 -0
- package/src/wrappers/text/Coder.ts +202 -0
- package/src/wrappers/text/ContentHandler.test.ts +185 -0
- package/src/wrappers/text/ContentHandler.ts +21 -0
- package/src/wrappers/text/CoreHandler.test.ts +106 -0
- package/src/wrappers/text/CoreHandler.ts +45 -0
- package/src/wrappers/text/TextWrapper.ts +69 -0
- 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'];
|