@tolgee/core 4.9.2 → 4.10.0-rc.14ca700.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.
- package/dist/tolgee.cjs.js +1075 -7022
- 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.min.mjs +1 -1
- package/dist/tolgee.esm.min.mjs.map +1 -1
- package/dist/tolgee.esm.mjs +1073 -7017
- package/dist/tolgee.esm.mjs.map +1 -1
- package/dist/tolgee.umd.js +1075 -7022
- 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/lib/Controller/Cache/Cache.d.ts +22 -0
- package/lib/Controller/Cache/helpers.d.ts +4 -0
- package/lib/Controller/Controller.d.ts +137 -0
- package/lib/Controller/Events/EventEmitter.d.ts +6 -0
- package/lib/Controller/Events/EventEmitterSelective.d.ts +15 -0
- package/lib/Controller/Events/Events.d.ts +50 -0
- package/lib/Controller/Plugins/Plugins.d.ts +43 -0
- package/lib/Controller/State/State.d.ts +21 -0
- package/lib/Controller/State/helpers.d.ts +6 -0
- package/lib/Controller/State/initState.d.ts +55 -0
- package/lib/Controller/ValueObserver.d.ts +5 -0
- package/lib/Tolgee.d.ts +2 -68
- package/lib/TranslateParams.d.ts +2 -0
- package/lib/{Constants/Global.d.ts → constants.d.ts} +1 -2
- package/lib/helpers.d.ts +3 -0
- package/lib/index.d.ts +3 -8
- package/lib/types.d.ts +235 -84
- package/package.json +20 -29
- package/src/Controller/Cache/Cache.ts +293 -0
- package/src/Controller/Cache/helpers.ts +37 -0
- package/src/Controller/Controller.ts +307 -0
- package/src/Controller/Events/EventEmitter.ts +27 -0
- package/src/Controller/Events/EventEmitterSelective.test.ts +125 -0
- package/src/Controller/Events/EventEmitterSelective.ts +179 -0
- package/src/Controller/Events/Events.ts +66 -0
- package/src/Controller/Plugins/Plugins.ts +305 -0
- package/src/Controller/State/State.ts +156 -0
- package/src/Controller/State/helpers.ts +41 -0
- package/src/Controller/State/initState.ts +90 -0
- package/src/Controller/ValueObserver.ts +23 -0
- package/src/Tolgee.ts +72 -333
- package/src/TranslateParams.test.ts +41 -0
- package/src/TranslateParams.ts +51 -0
- package/src/__test/backend.test.ts +48 -0
- package/src/__test/cache.test.ts +148 -0
- package/src/__test/client.test.ts +48 -0
- package/src/__test/events.test.ts +33 -0
- package/src/__test/initialization.test.ts +73 -0
- package/src/__test/jest-setup.ts +2 -0
- package/src/__test/languageDetection.test.ts +129 -0
- package/src/__test/languageStorage.test.ts +145 -0
- package/src/__test/languages.test.ts +112 -0
- package/src/__test/loading.test.ts +39 -0
- package/src/__test/namespaces.test.ts +99 -0
- package/src/__test/namespacesFallback.test.ts +74 -0
- package/src/__test/plugins.test.ts +98 -0
- package/src/__test/testTools.ts +7 -0
- package/src/{Constants/Global.ts → constants.ts} +1 -3
- package/src/helpers.ts +17 -0
- package/src/index.ts +9 -8
- package/src/types.ts +322 -90
- package/README.md +0 -45
- package/dist/Constants/Global.d.ts +0 -6
- package/dist/Constants/ModifierKey.d.ts +0 -6
- package/dist/Errors/ApiHttpError.d.ts +0 -5
- package/dist/Observer.d.ts +0 -14
- package/dist/Observer.test.d.ts +0 -2
- package/dist/Properties.d.ts +0 -17
- package/dist/Properties.test.d.ts +0 -1
- package/dist/Tolgee.d.ts +0 -68
- package/dist/Tolgee.test.d.ts +0 -1
- package/dist/TolgeeConfig.d.ts +0 -69
- package/dist/TolgeeConfig.test.d.ts +0 -1
- package/dist/__integration/FormatterIcu.test.d.ts +0 -1
- package/dist/__integration/FormatterMissing.d.ts +0 -1
- package/dist/__integration/Tolgee.test.d.ts +0 -1
- package/dist/__integration/TolgeeInvisible.test.d.ts +0 -1
- package/dist/__integration/mockTranslations.d.ts +0 -7
- package/dist/__integration/testConfig.d.ts +0 -9
- package/dist/__testFixtures/classMock.d.ts +0 -3
- package/dist/__testFixtures/createElement.d.ts +0 -2
- package/dist/__testFixtures/createTestDom.d.ts +0 -9
- package/dist/__testFixtures/mocked.d.ts +0 -20
- package/dist/__testFixtures/setupAfterEnv.d.ts +0 -8
- package/dist/helpers/NodeHelper.d.ts +0 -14
- package/dist/helpers/TextHelper.d.ts +0 -5
- package/dist/helpers/TextHelper.test.d.ts +0 -1
- package/dist/helpers/commonTypes.d.ts +0 -2
- package/dist/helpers/encoderPolyfill.d.ts +0 -8
- package/dist/helpers/secret.d.ts +0 -6
- package/dist/helpers/secret.test.d.ts +0 -1
- package/dist/helpers/sleep.d.ts +0 -1
- package/dist/highlighter/HighlightFunctionsInitializer.d.ts +0 -10
- package/dist/highlighter/HighlightFunctionsInitializer.test.d.ts +0 -1
- package/dist/highlighter/MouseEventHandler.d.ts +0 -29
- package/dist/highlighter/MouseEventHandler.test.d.ts +0 -1
- package/dist/highlighter/TranslationHighlighter.d.ts +0 -14
- package/dist/highlighter/TranslationHighlighter.test.d.ts +0 -1
- package/dist/index.d.ts +0 -10
- package/dist/internal.d.ts +0 -2
- package/dist/modules/IcuFormatter.d.ts +0 -2
- package/dist/modules/IcuFormatter.test.d.ts +0 -1
- package/dist/modules/index.d.ts +0 -1
- package/dist/services/ApiHttpService.d.ts +0 -15
- package/dist/services/CoreService.d.ts +0 -18
- package/dist/services/CoreService.test.d.ts +0 -1
- package/dist/services/DependencyService.d.ts +0 -39
- package/dist/services/DependencyService.test.d.ts +0 -1
- package/dist/services/ElementRegistrar.d.ts +0 -19
- package/dist/services/ElementRegistrar.test.d.ts +0 -1
- package/dist/services/EventEmitter.d.ts +0 -13
- package/dist/services/EventService.d.ts +0 -9
- package/dist/services/ModuleService.d.ts +0 -5
- package/dist/services/ScreenshotService.d.ts +0 -15
- package/dist/services/Subscription.d.ts +0 -5
- package/dist/services/TextService.d.ts +0 -14
- package/dist/services/TextService.test.d.ts +0 -1
- package/dist/services/TranslationService.d.ts +0 -75
- package/dist/services/TranslationService.test.d.ts +0 -1
- package/dist/services/__mocks__/CoreService.d.ts +0 -2
- package/dist/toolsManager/Messages.d.ts +0 -8
- package/dist/toolsManager/Messages.test.d.ts +0 -1
- package/dist/toolsManager/PluginManager.d.ts +0 -21
- package/dist/toolsManager/PluginManager.test.d.ts +0 -1
- package/dist/types/DTOs.d.ts +0 -20
- package/dist/types/apiSchema.generated.d.ts +0 -6185
- package/dist/types.d.ts +0 -123
- package/dist/wrappers/AbstractWrapper.d.ts +0 -8
- package/dist/wrappers/NodeHandler.d.ts +0 -18
- package/dist/wrappers/WrappedHandler.d.ts +0 -8
- package/dist/wrappers/invisible/AttributeHandler.d.ts +0 -8
- package/dist/wrappers/invisible/Coder.d.ts +0 -7
- package/dist/wrappers/invisible/ContentHandler.d.ts +0 -6
- package/dist/wrappers/invisible/CoreHandler.d.ts +0 -10
- package/dist/wrappers/invisible/InvisibleWrapper.d.ts +0 -18
- package/dist/wrappers/invisible/ValueMemory.d.ts +0 -5
- package/dist/wrappers/invisible/ValueMemory.test.d.ts +0 -1
- package/dist/wrappers/text/AttributeHandler.d.ts +0 -8
- package/dist/wrappers/text/AttributeHandler.test.d.ts +0 -1
- package/dist/wrappers/text/Coder.d.ts +0 -15
- package/dist/wrappers/text/Coder.test.d.ts +0 -1
- package/dist/wrappers/text/ContentHandler.d.ts +0 -8
- package/dist/wrappers/text/ContentHandler.test.d.ts +0 -1
- package/dist/wrappers/text/CoreHandler.d.ts +0 -17
- package/dist/wrappers/text/CoreHandler.test.d.ts +0 -1
- package/dist/wrappers/text/TextWrapper.d.ts +0 -20
- package/index.js +0 -7
- package/lib/Constants/ModifierKey.d.ts +0 -6
- package/lib/Errors/ApiHttpError.d.ts +0 -5
- package/lib/Observer.d.ts +0 -14
- package/lib/Properties.d.ts +0 -17
- package/lib/TolgeeConfig.d.ts +0 -69
- package/lib/helpers/NodeHelper.d.ts +0 -14
- package/lib/helpers/TextHelper.d.ts +0 -5
- package/lib/helpers/commonTypes.d.ts +0 -2
- package/lib/helpers/encoderPolyfill.d.ts +0 -8
- package/lib/helpers/secret.d.ts +0 -6
- package/lib/helpers/sleep.d.ts +0 -1
- package/lib/highlighter/HighlightFunctionsInitializer.d.ts +0 -10
- package/lib/highlighter/MouseEventHandler.d.ts +0 -29
- package/lib/highlighter/TranslationHighlighter.d.ts +0 -14
- package/lib/modules/IcuFormatter.d.ts +0 -2
- package/lib/modules/index.d.ts +0 -1
- package/lib/services/ApiHttpService.d.ts +0 -15
- package/lib/services/CoreService.d.ts +0 -18
- package/lib/services/DependencyService.d.ts +0 -39
- package/lib/services/ElementRegistrar.d.ts +0 -19
- package/lib/services/EventEmitter.d.ts +0 -13
- package/lib/services/EventService.d.ts +0 -9
- package/lib/services/ModuleService.d.ts +0 -5
- package/lib/services/ScreenshotService.d.ts +0 -15
- package/lib/services/Subscription.d.ts +0 -5
- package/lib/services/TextService.d.ts +0 -14
- package/lib/services/TranslationService.d.ts +0 -75
- package/lib/toolsManager/Messages.d.ts +0 -8
- package/lib/toolsManager/PluginManager.d.ts +0 -21
- package/lib/types/DTOs.d.ts +0 -20
- package/lib/types/apiSchema.generated.d.ts +0 -6185
- package/lib/wrappers/AbstractWrapper.d.ts +0 -8
- package/lib/wrappers/NodeHandler.d.ts +0 -18
- package/lib/wrappers/WrappedHandler.d.ts +0 -8
- package/lib/wrappers/invisible/AttributeHandler.d.ts +0 -8
- package/lib/wrappers/invisible/Coder.d.ts +0 -7
- package/lib/wrappers/invisible/ContentHandler.d.ts +0 -6
- package/lib/wrappers/invisible/CoreHandler.d.ts +0 -10
- package/lib/wrappers/invisible/InvisibleWrapper.d.ts +0 -18
- package/lib/wrappers/invisible/ValueMemory.d.ts +0 -5
- package/lib/wrappers/text/AttributeHandler.d.ts +0 -8
- package/lib/wrappers/text/Coder.d.ts +0 -15
- package/lib/wrappers/text/ContentHandler.d.ts +0 -8
- package/lib/wrappers/text/CoreHandler.d.ts +0 -17
- package/lib/wrappers/text/TextWrapper.d.ts +0 -20
- package/src/Constants/ModifierKey.ts +0 -6
- package/src/Errors/ApiHttpError.ts +0 -8
- package/src/Observer.test.ts +0 -119
- package/src/Observer.ts +0 -68
- package/src/Properties.test.ts +0 -150
- package/src/Properties.ts +0 -112
- package/src/Tolgee.test.ts +0 -473
- package/src/TolgeeConfig.test.ts +0 -21
- package/src/TolgeeConfig.ts +0 -134
- package/src/__integration/FormatterIcu.test.ts +0 -80
- package/src/__integration/FormatterMissing.ts +0 -54
- package/src/__integration/Tolgee.test.ts +0 -90
- package/src/__integration/TolgeeInvisible.test.ts +0 -145
- package/src/__integration/mockTranslations.ts +0 -6
- package/src/__integration/testConfig.ts +0 -16
- package/src/__testFixtures/classMock.ts +0 -11
- package/src/__testFixtures/createElement.ts +0 -43
- package/src/__testFixtures/createTestDom.ts +0 -26
- package/src/__testFixtures/mocked.ts +0 -25
- package/src/__testFixtures/setupAfterEnv.ts +0 -34
- package/src/helpers/NodeHelper.ts +0 -90
- package/src/helpers/TextHelper.test.ts +0 -62
- package/src/helpers/TextHelper.ts +0 -58
- package/src/helpers/commonTypes.ts +0 -8
- package/src/helpers/encoderPolyfill.ts +0 -96
- package/src/helpers/secret.test.ts +0 -61
- package/src/helpers/secret.ts +0 -68
- package/src/helpers/sleep.ts +0 -2
- package/src/highlighter/HighlightFunctionsInitializer.test.ts +0 -40
- package/src/highlighter/HighlightFunctionsInitializer.ts +0 -61
- package/src/highlighter/MouseEventHandler.test.ts +0 -151
- package/src/highlighter/MouseEventHandler.ts +0 -191
- package/src/highlighter/TranslationHighlighter.test.ts +0 -177
- package/src/highlighter/TranslationHighlighter.ts +0 -113
- package/src/internal.ts +0 -2
- package/src/modules/IcuFormatter.test.ts +0 -21
- package/src/modules/IcuFormatter.ts +0 -39
- package/src/modules/index.ts +0 -1
- package/src/services/ApiHttpService.ts +0 -85
- package/src/services/CoreService.test.ts +0 -141
- package/src/services/CoreService.ts +0 -76
- package/src/services/DependencyService.test.ts +0 -51
- package/src/services/DependencyService.ts +0 -116
- package/src/services/ElementRegistrar.test.ts +0 -131
- package/src/services/ElementRegistrar.ts +0 -108
- package/src/services/EventEmitter.ts +0 -52
- package/src/services/EventService.ts +0 -14
- package/src/services/ModuleService.ts +0 -14
- package/src/services/ScreenshotService.ts +0 -31
- package/src/services/Subscription.ts +0 -7
- package/src/services/TextService.test.ts +0 -88
- package/src/services/TextService.ts +0 -82
- package/src/services/TranslationService.test.ts +0 -358
- package/src/services/TranslationService.ts +0 -417
- package/src/services/__mocks__/CoreService.ts +0 -17
- package/src/toolsManager/Messages.test.ts +0 -79
- package/src/toolsManager/Messages.ts +0 -60
- package/src/toolsManager/PluginManager.test.ts +0 -108
- package/src/toolsManager/PluginManager.ts +0 -129
- package/src/types/DTOs.ts +0 -25
- package/src/types/apiSchema.generated.ts +0 -6208
- package/src/wrappers/AbstractWrapper.ts +0 -14
- package/src/wrappers/NodeHandler.ts +0 -143
- package/src/wrappers/WrappedHandler.ts +0 -28
- package/src/wrappers/invisible/AttributeHandler.ts +0 -23
- package/src/wrappers/invisible/Coder.ts +0 -65
- package/src/wrappers/invisible/ContentHandler.ts +0 -15
- package/src/wrappers/invisible/CoreHandler.ts +0 -17
- package/src/wrappers/invisible/InvisibleWrapper.ts +0 -59
- package/src/wrappers/invisible/ValueMemory.test.ts +0 -25
- package/src/wrappers/invisible/ValueMemory.ts +0 -16
- package/src/wrappers/text/AttributeHandler.test.ts +0 -118
- package/src/wrappers/text/AttributeHandler.ts +0 -25
- package/src/wrappers/text/Coder.test.ts +0 -298
- package/src/wrappers/text/Coder.ts +0 -202
- package/src/wrappers/text/ContentHandler.test.ts +0 -185
- package/src/wrappers/text/ContentHandler.ts +0 -21
- package/src/wrappers/text/CoreHandler.test.ts +0 -106
- package/src/wrappers/text/CoreHandler.ts +0 -45
- package/src/wrappers/text/TextWrapper.ts +0 -69
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Tolgee } from '../Tolgee';
|
|
2
|
+
|
|
3
|
+
describe('namespaces fallback', () => {
|
|
4
|
+
test('works with multiple and default', () => {
|
|
5
|
+
const tolgee = Tolgee({
|
|
6
|
+
language: 'en',
|
|
7
|
+
staticData: {
|
|
8
|
+
en: { '0': 'noNamespace' },
|
|
9
|
+
'en:first': { '1': 'first' },
|
|
10
|
+
'en:second': { '2': 'second' },
|
|
11
|
+
},
|
|
12
|
+
fallbackNs: ['first', 'second'],
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
expect(tolgee.t({ key: '0' })).toEqual('noNamespace');
|
|
16
|
+
expect(tolgee.t({ key: '1' })).toEqual('first');
|
|
17
|
+
expect(tolgee.t({ key: '2' })).toEqual('second');
|
|
18
|
+
expect(tolgee.t({ key: '4' })).toEqual('4');
|
|
19
|
+
expect(tolgee.t({ key: '4', orEmpty: true })).toEqual('');
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('works when no fallback specified', () => {
|
|
23
|
+
const tolgee = Tolgee({
|
|
24
|
+
language: 'en',
|
|
25
|
+
staticData: {
|
|
26
|
+
en: { '0': 'noNamespace' },
|
|
27
|
+
'en:second': { '2': 'second' },
|
|
28
|
+
},
|
|
29
|
+
fallbackNs: ['first', 'second'],
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
expect(tolgee.t({ key: '0' })).toEqual('noNamespace');
|
|
33
|
+
expect(tolgee.t({ key: '1' })).toEqual('1');
|
|
34
|
+
expect(tolgee.t({ key: '2' })).toEqual('second');
|
|
35
|
+
expect(tolgee.t({ key: '4' })).toEqual('4');
|
|
36
|
+
expect(tolgee.t({ key: '4', orEmpty: true })).toEqual('');
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test('works when data present but no fallback', () => {
|
|
40
|
+
const tolgee = Tolgee({
|
|
41
|
+
language: 'en',
|
|
42
|
+
staticData: {
|
|
43
|
+
en: { '0': 'noNamespace' },
|
|
44
|
+
'en:first': { '1': 'first' },
|
|
45
|
+
'en:second': { '2': 'second' },
|
|
46
|
+
},
|
|
47
|
+
fallbackNs: ['second'],
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
expect(tolgee.t({ key: '0' })).toEqual('noNamespace');
|
|
51
|
+
expect(tolgee.t({ key: '1' })).toEqual('1');
|
|
52
|
+
expect(tolgee.t({ key: '2' })).toEqual('second');
|
|
53
|
+
expect(tolgee.t({ key: '4' })).toEqual('4');
|
|
54
|
+
expect(tolgee.t({ key: '4', orEmpty: true })).toEqual('');
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
test('works with override', () => {
|
|
58
|
+
const tolgee = Tolgee({
|
|
59
|
+
language: 'en',
|
|
60
|
+
staticData: {
|
|
61
|
+
en: { '0': 'noNamespace' },
|
|
62
|
+
'en:first': { '1': 'first' },
|
|
63
|
+
'en:second': { '2': 'second' },
|
|
64
|
+
},
|
|
65
|
+
fallbackNs: ['second'],
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
expect(tolgee.t({ key: '1' })).toEqual('1');
|
|
69
|
+
expect(tolgee.t({ key: '1', ns: 'first' })).toEqual('first');
|
|
70
|
+
expect(tolgee.t({ key: '0', ns: 'first' })).toEqual('0');
|
|
71
|
+
expect(tolgee.t({ key: '2', ns: 'first' })).toEqual('2');
|
|
72
|
+
expect(tolgee.t({ key: '2', ns: 'second' })).toEqual('second');
|
|
73
|
+
});
|
|
74
|
+
});
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Tolgee } from '../Tolgee';
|
|
2
|
+
import {
|
|
3
|
+
FinalFormatterInterface,
|
|
4
|
+
FormatterInterface,
|
|
5
|
+
FormatterInterfaceFormatParams,
|
|
6
|
+
ObserverInterface,
|
|
7
|
+
TolgeePlugin,
|
|
8
|
+
WrapperWrapFunction,
|
|
9
|
+
} from '../types';
|
|
10
|
+
|
|
11
|
+
const testObserver =
|
|
12
|
+
(outputNotFormattable: boolean): ObserverInterface =>
|
|
13
|
+
() => {
|
|
14
|
+
const wrap: WrapperWrapFunction = ({ key, translation }) => {
|
|
15
|
+
return `${key}|${translation}`;
|
|
16
|
+
};
|
|
17
|
+
const unwrap = (input: string) => {
|
|
18
|
+
const [key, text] = input.split('|');
|
|
19
|
+
return { text, keys: [{ key }] };
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const stop = () => {};
|
|
23
|
+
const run = () => {};
|
|
24
|
+
|
|
25
|
+
const retranslate = () => {};
|
|
26
|
+
|
|
27
|
+
return Object.freeze({
|
|
28
|
+
wrap,
|
|
29
|
+
unwrap,
|
|
30
|
+
run,
|
|
31
|
+
stop,
|
|
32
|
+
retranslate,
|
|
33
|
+
highlight: () => ({ unhighlight: () => {} }),
|
|
34
|
+
outputNotFormattable,
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const testFormatter1: FormatterInterface = {
|
|
39
|
+
format: ({ translation }: FormatterInterfaceFormatParams) => {
|
|
40
|
+
return `(1${translation})`;
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const testFormatter2: FormatterInterface = {
|
|
45
|
+
format: ({ translation }: FormatterInterfaceFormatParams) => {
|
|
46
|
+
return `(2${translation})`;
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const testFinalFormatter: FinalFormatterInterface = {
|
|
51
|
+
format: ({ translation }: FormatterInterfaceFormatParams) => {
|
|
52
|
+
return { final: translation };
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const observerPlugin =
|
|
57
|
+
(outputNotFormattable: boolean): TolgeePlugin =>
|
|
58
|
+
(tolgee, tools) => {
|
|
59
|
+
tools.setObserver(testObserver(outputNotFormattable));
|
|
60
|
+
return tolgee;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const formattersPlugin: TolgeePlugin = (tolgee, tools) => {
|
|
64
|
+
tools.addFormatter(testFormatter1);
|
|
65
|
+
tools.addFormatter(testFormatter2);
|
|
66
|
+
tools.setFinalFormatter(testFinalFormatter);
|
|
67
|
+
return tolgee;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
describe('plugins', () => {
|
|
71
|
+
it('wraps and formats translation', () => {
|
|
72
|
+
const tolgee = Tolgee({
|
|
73
|
+
language: 'en',
|
|
74
|
+
staticData: { en: { hello: 'world' } },
|
|
75
|
+
});
|
|
76
|
+
tolgee.use(observerPlugin(false));
|
|
77
|
+
tolgee.run();
|
|
78
|
+
expect(tolgee.t({ key: 'hello' })).toEqual('hello|world');
|
|
79
|
+
|
|
80
|
+
tolgee.use(formattersPlugin);
|
|
81
|
+
expect(tolgee.t({ key: 'hello' })).toEqual({ final: '(2(1hello|world))' });
|
|
82
|
+
tolgee.stop();
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it("won't format when observer doesn't return formattable text", () => {
|
|
86
|
+
const tolgee = Tolgee({
|
|
87
|
+
language: 'en',
|
|
88
|
+
staticData: { en: { hello: 'world' } },
|
|
89
|
+
});
|
|
90
|
+
tolgee.use(observerPlugin(true));
|
|
91
|
+
tolgee.run();
|
|
92
|
+
expect(tolgee.t({ key: 'hello' })).toEqual('hello|world');
|
|
93
|
+
|
|
94
|
+
tolgee.use(formattersPlugin);
|
|
95
|
+
expect(tolgee.t({ key: 'hello' })).toEqual('hello|world');
|
|
96
|
+
tolgee.stop();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
export const RESTRICTED_ASCENDANT_ATTRIBUTE = 'data-tolgee-restricted';
|
|
2
|
-
|
|
3
2
|
export const TOLGEE_ATTRIBUTE_NAME = '_tolgee';
|
|
4
|
-
export const TOLGEE_TARGET_ATTRIBUTE = '_tolgee-target';
|
|
5
|
-
export const TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE = 'data-tolgee-key-only';
|
|
6
3
|
export const TOLGEE_HIGHLIGHTER_CLASS = '_tolgee-highlighter';
|
|
4
|
+
export const TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE = 'data-tolgee-key-only';
|
|
7
5
|
|
|
8
6
|
// needs to be same as in @tolgee/ui package
|
|
9
7
|
export const DEVTOOLS_ID = '__tolgee_dev_tools';
|
package/src/helpers.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function isPromise(value: any) {
|
|
2
|
+
return Boolean(value && typeof value.then === 'function');
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export const valueOrPromise = <T, R>(
|
|
6
|
+
value: T | Promise<T>,
|
|
7
|
+
callback: (value: T) => R
|
|
8
|
+
) => {
|
|
9
|
+
if (isPromise(value)) {
|
|
10
|
+
return Promise.resolve(value).then(callback);
|
|
11
|
+
} else {
|
|
12
|
+
return callback(value as T);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const missingOptionError = (option: string) =>
|
|
17
|
+
`Tolgee: You need to specify '${option}' option`;
|
package/src/index.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export { Tolgee } from './Tolgee';
|
|
2
|
-
export {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
export {
|
|
3
|
+
RESTRICTED_ASCENDANT_ATTRIBUTE,
|
|
4
|
+
DEVTOOLS_ID,
|
|
5
|
+
TOLGEE_ATTRIBUTE_NAME,
|
|
6
|
+
TOLGEE_HIGHLIGHTER_CLASS,
|
|
7
|
+
TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE,
|
|
8
|
+
} from './constants';
|
|
7
9
|
export * from './types';
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export * from './helpers/TextHelper';
|
|
10
|
+
export { getTranslateParams } from './TranslateParams';
|
|
11
|
+
export { getFallback, getFallbackArray } from './Controller/State/helpers';
|
package/src/types.ts
CHANGED
|
@@ -1,96 +1,279 @@
|
|
|
1
|
-
|
|
2
|
-
oldValue: string;
|
|
3
|
-
valueInputs: string[];
|
|
4
|
-
touched: boolean;
|
|
5
|
-
oldPlaceholder: string;
|
|
6
|
-
placeholderInputs: string[];
|
|
7
|
-
}
|
|
1
|
+
import type { Options } from './Controller/State/initState';
|
|
8
2
|
|
|
9
|
-
export type
|
|
10
|
-
|
|
11
|
-
};
|
|
3
|
+
export type { State, Options } from './Controller/State/initState';
|
|
4
|
+
export type { EventEmitterType } from './Controller/Events/EventEmitter';
|
|
5
|
+
export type { EventEmitterSelectiveType } from './Controller/Events/EventEmitterSelective';
|
|
12
6
|
|
|
13
|
-
export type
|
|
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
|
-
};
|
|
7
|
+
export type FallbackGeneral = undefined | false | string | string[];
|
|
20
8
|
|
|
21
|
-
export type
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
9
|
+
export type FallbackNS = FallbackGeneral;
|
|
10
|
+
|
|
11
|
+
export type NsType = string;
|
|
12
|
+
|
|
13
|
+
export type KeyType = string;
|
|
14
|
+
|
|
15
|
+
export type FallbackNSTranslation = undefined | NsType | NsType[];
|
|
16
|
+
|
|
17
|
+
export type FallbackLanguage = FallbackGeneral;
|
|
18
|
+
|
|
19
|
+
export type FallbackLanguageObject = Record<string, FallbackLanguage>;
|
|
20
|
+
|
|
21
|
+
export type FallbackLanguageOption = FallbackLanguage | FallbackLanguageObject;
|
|
22
|
+
|
|
23
|
+
export type TranslateOptions<T> = {
|
|
24
|
+
ns?: FallbackNSTranslation;
|
|
25
25
|
noWrap?: boolean;
|
|
26
26
|
orEmpty?: boolean;
|
|
27
|
+
params?: TranslateParams<T>;
|
|
27
28
|
};
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
|
|
30
|
+
export type TranslateProps<T = DefaultParamType> = {
|
|
31
|
+
key: KeyType;
|
|
30
32
|
defaultValue?: string;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
} & TranslateOptions<T>;
|
|
34
|
+
|
|
35
|
+
export type TranslatePropsInternal = TranslateProps & {
|
|
36
|
+
translation?: string;
|
|
34
37
|
};
|
|
35
38
|
|
|
36
|
-
export type
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
export type TranslationValue = string | undefined | null;
|
|
40
|
+
|
|
41
|
+
export type TranslationsFlat = Map<string, TranslationValue>;
|
|
42
|
+
|
|
43
|
+
export type TreeTranslationsData = {
|
|
44
|
+
[key: string]: TranslationValue | TreeTranslationsData;
|
|
42
45
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
|
|
47
|
+
export type CacheAsyncRequests = Map<
|
|
48
|
+
string,
|
|
49
|
+
Promise<TreeTranslationsData | undefined> | undefined
|
|
50
|
+
>;
|
|
51
|
+
|
|
52
|
+
export type CacheDescriptor = {
|
|
53
|
+
language: string;
|
|
54
|
+
namespace?: string;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export type CacheDescriptorInternal = {
|
|
58
|
+
language: string;
|
|
59
|
+
namespace: string;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export type CacheDescriptorWithKey = CacheDescriptorInternal & {
|
|
63
|
+
key?: string;
|
|
49
64
|
};
|
|
50
65
|
|
|
51
66
|
export type KeyAndParams = {
|
|
52
67
|
key: string;
|
|
53
|
-
params
|
|
68
|
+
params?: TranslateParams;
|
|
54
69
|
defaultValue?: string;
|
|
70
|
+
ns?: FallbackNSTranslation;
|
|
55
71
|
};
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
72
|
+
|
|
73
|
+
export type Unwrapped = { text: string; keys: KeyAndParams[] };
|
|
74
|
+
|
|
75
|
+
type PropType<TObj> = TObj[keyof TObj];
|
|
76
|
+
|
|
77
|
+
export type DefaultParamType = string | number | bigint;
|
|
78
|
+
|
|
79
|
+
export type TranslateParams<T = DefaultParamType> = {
|
|
80
|
+
[key: string]: T;
|
|
60
81
|
};
|
|
61
82
|
|
|
62
|
-
export type
|
|
63
|
-
|
|
64
|
-
key: string;
|
|
65
|
-
params: TranslationParams;
|
|
66
|
-
defaultValue: string | undefined;
|
|
83
|
+
export type CombinedOptions<T> = TranslateOptions<T> & {
|
|
84
|
+
[key: string]: T | PropType<TranslateOptions<T>>;
|
|
67
85
|
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
key: string;
|
|
71
|
-
|
|
72
|
-
|
|
86
|
+
|
|
87
|
+
export type TFnType<T = DefaultParamType, R = string> = {
|
|
88
|
+
(key: string, defaultValue?: string, options?: CombinedOptions<T>): R;
|
|
89
|
+
(key: string, options?: CombinedOptions<T>): R;
|
|
90
|
+
(props: TranslateProps<T>): R;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export type WrapperWrapProps = Pick<
|
|
94
|
+
TranslatePropsInternal,
|
|
95
|
+
'key' | 'params' | 'defaultValue' | 'ns' | 'translation'
|
|
96
|
+
>;
|
|
97
|
+
export type WrapperWrapFunction = (props: WrapperWrapProps) => string;
|
|
98
|
+
export type WrapperUnwrapFunction = (text: string) => Unwrapped;
|
|
99
|
+
|
|
100
|
+
export type WrapperAttributeXPathGetter = (props: {
|
|
101
|
+
tag: string;
|
|
102
|
+
attribute: string;
|
|
103
|
+
}) => string;
|
|
104
|
+
|
|
105
|
+
export type WrapperInterface = {
|
|
106
|
+
unwrap: WrapperUnwrapFunction;
|
|
107
|
+
wrap: WrapperWrapFunction;
|
|
108
|
+
getTextXPath: () => string;
|
|
109
|
+
getAttributeXPath: WrapperAttributeXPathGetter;
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
export type FormatterInterfaceFormatParams = {
|
|
113
|
+
translation: string;
|
|
114
|
+
language: string;
|
|
115
|
+
params: Record<string, any> | undefined;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
export type FormatterInterface = {
|
|
119
|
+
format: (props: FormatterInterfaceFormatParams) => string;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
export type FinalFormatterInterface = {
|
|
123
|
+
format: (props: FormatterInterfaceFormatParams) => any;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
export type ObserverProps = {
|
|
127
|
+
translate: (params: TranslatePropsInternal) => string;
|
|
128
|
+
onClick: TranslationOnClick;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
export type HighlightInterface = (
|
|
132
|
+
key?: string,
|
|
133
|
+
ns?: FallbackNSTranslation
|
|
134
|
+
) => {
|
|
135
|
+
unhighlight(): void;
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
export type ObserverRunProps = {
|
|
139
|
+
mouseHighlight: boolean;
|
|
73
140
|
};
|
|
74
141
|
|
|
75
|
-
export type
|
|
142
|
+
export type ObserverInterface = (props: ObserverProps) => {
|
|
143
|
+
unwrap: (text: string) => Unwrapped;
|
|
144
|
+
wrap: WrapperWrapFunction;
|
|
145
|
+
retranslate: () => void;
|
|
146
|
+
stop: () => void;
|
|
147
|
+
run: (props: ObserverRunProps) => void;
|
|
148
|
+
highlight: HighlightInterface;
|
|
149
|
+
outputNotFormattable: boolean;
|
|
150
|
+
};
|
|
76
151
|
|
|
77
|
-
export type
|
|
78
|
-
|
|
152
|
+
export type LanguageDetectorProps = {
|
|
153
|
+
availableLanguages: string[];
|
|
79
154
|
};
|
|
80
155
|
|
|
81
|
-
export type
|
|
82
|
-
|
|
156
|
+
export type LanguageDetectorInterface = {
|
|
157
|
+
getLanguage: (
|
|
158
|
+
props: LanguageDetectorProps
|
|
159
|
+
) => string | undefined | Promise<string | undefined>;
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
export type LanguageStorageInterface = {
|
|
163
|
+
getLanguage: () => string | undefined | Promise<string | undefined>;
|
|
164
|
+
setLanguage: (language: string) => void | Promise<void>;
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
export type BackendDevProps = {
|
|
168
|
+
apiUrl?: string;
|
|
169
|
+
apiKey?: string;
|
|
170
|
+
projectId?: number;
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
export type BackendGetRecordProps = {
|
|
174
|
+
language: string;
|
|
175
|
+
namespace?: string;
|
|
83
176
|
};
|
|
84
177
|
|
|
85
|
-
export type
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
178
|
+
export type BackendGetRecord = (
|
|
179
|
+
data: BackendGetRecordProps
|
|
180
|
+
) => Promise<TreeTranslationsData | undefined> | undefined;
|
|
181
|
+
|
|
182
|
+
export interface BackendInterface {
|
|
183
|
+
getRecord: BackendGetRecord;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
export type BackendGetDevRecord = (
|
|
187
|
+
data: BackendGetRecordProps & BackendDevProps
|
|
188
|
+
) => Promise<TreeTranslationsData | undefined> | undefined;
|
|
189
|
+
|
|
190
|
+
export type BackendDevInterface = {
|
|
191
|
+
getRecord: BackendGetDevRecord;
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
export type TolgeeEvent =
|
|
195
|
+
| 'pendingLanguage'
|
|
196
|
+
| 'language'
|
|
197
|
+
| 'key'
|
|
198
|
+
| 'loading'
|
|
199
|
+
| 'fetching'
|
|
200
|
+
| 'initialLoad'
|
|
201
|
+
| 'running'
|
|
202
|
+
| 'cache'
|
|
203
|
+
| 'keyUpdate';
|
|
204
|
+
|
|
205
|
+
export type TolgeeOn = {
|
|
206
|
+
(event: 'pendingLanguage', handler: ListenerHandler<string>): Listener;
|
|
207
|
+
(event: 'language', handler: ListenerHandler<string>): Listener;
|
|
208
|
+
(event: 'key', handler: ListenerHandler<string>): Listener;
|
|
209
|
+
(event: 'loading', handler: ListenerHandler<boolean>): Listener;
|
|
210
|
+
(event: 'fetching', handler: ListenerHandler<boolean>): Listener;
|
|
211
|
+
(event: 'initialLoad', handler: ListenerHandler<void>): Listener;
|
|
212
|
+
(event: 'running', handler: ListenerHandler<boolean>): Listener;
|
|
213
|
+
(event: 'keyUpdate', handler: ListenerHandler<void>): Listener;
|
|
214
|
+
(event: TolgeeEvent, handler: ListenerHandler<any>): Listener;
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
export type TolgeeInstance = Readonly<{
|
|
218
|
+
on: TolgeeOn;
|
|
219
|
+
onKeyUpdate: (handler: ListenerHandler<void>) => ListenerSelective;
|
|
220
|
+
|
|
221
|
+
use: (plugin: TolgeePlugin | undefined) => TolgeeInstance;
|
|
222
|
+
|
|
223
|
+
getLanguage: () => string | undefined;
|
|
224
|
+
getPendingLanguage: () => string | undefined;
|
|
225
|
+
changeLanguage: (language: string) => Promise<void>;
|
|
226
|
+
changeTranslation: ChangeTranslationInterface;
|
|
227
|
+
addActiveNs: (ns: FallbackNSTranslation, forget?: boolean) => Promise<void>;
|
|
228
|
+
removeActiveNs: (ns: FallbackNSTranslation) => void;
|
|
229
|
+
loadRecords: (descriptors: CacheDescriptor[]) => Promise<TranslationsFlat[]>;
|
|
230
|
+
loadRecord: (descriptors: CacheDescriptor) => Promise<TranslationsFlat>;
|
|
231
|
+
addStaticData: (data: Options['staticData']) => void;
|
|
232
|
+
getRecord: (descriptor: CacheDescriptor) => TranslationsFlat | undefined;
|
|
233
|
+
getAllRecords: () => CachePublicRecord[];
|
|
234
|
+
isInitialLoading: () => boolean;
|
|
235
|
+
isLoading: (ns?: FallbackNSTranslation) => boolean;
|
|
236
|
+
isLoaded: (ns?: FallbackNSTranslation) => boolean;
|
|
237
|
+
isFetching: (ns?: FallbackNSTranslation) => boolean;
|
|
238
|
+
isRunning: () => boolean;
|
|
239
|
+
highlight: HighlightInterface;
|
|
240
|
+
getInitialOptions: () => Options;
|
|
241
|
+
isDev: () => boolean;
|
|
242
|
+
init: (options: Partial<Options>) => TolgeeInstance;
|
|
243
|
+
run: () => Promise<void>;
|
|
244
|
+
stop: () => void;
|
|
245
|
+
t: TFnType;
|
|
246
|
+
wrap: (params: TranslatePropsInternal) => string | undefined;
|
|
247
|
+
unwrap: (text: string) => Unwrapped;
|
|
248
|
+
}>;
|
|
249
|
+
|
|
250
|
+
export type PluginServicePublic = Readonly<{
|
|
251
|
+
setFinalFormatter: (formatter: FinalFormatterInterface | undefined) => void;
|
|
252
|
+
addFormatter: (formatter: FormatterInterface | undefined) => void;
|
|
253
|
+
setObserver: (observer: ObserverInterface | undefined) => void;
|
|
254
|
+
getObserver: () => ReturnType<ObserverInterface> | undefined;
|
|
255
|
+
setUi: (ui: UiLibInterface | undefined) => void;
|
|
256
|
+
getUi: () => UiConstructor | undefined;
|
|
257
|
+
addBackend: (backend: BackendInterface | undefined) => void;
|
|
258
|
+
setDevBackend: (backend: BackendInterface | undefined) => void;
|
|
259
|
+
setLanguageDetector: (
|
|
260
|
+
languageDetector: LanguageDetectorInterface | undefined
|
|
261
|
+
) => void;
|
|
262
|
+
setLanguageStorage: (
|
|
263
|
+
languageStorage: LanguageStorageInterface | undefined
|
|
264
|
+
) => void;
|
|
265
|
+
}>;
|
|
266
|
+
|
|
267
|
+
export type NodeMeta = {
|
|
268
|
+
oldTextContent: string;
|
|
269
|
+
keys: KeyAndParams[];
|
|
270
|
+
keyAttributeOnly?: boolean;
|
|
271
|
+
};
|
|
89
272
|
|
|
90
273
|
export type ElementMeta = {
|
|
91
274
|
wrappedWithElementOnlyKey?: string;
|
|
92
275
|
wrappedWithElementOnlyDefaultHtml?: string;
|
|
93
|
-
nodes:
|
|
276
|
+
nodes: Map<Node, NodeMeta>;
|
|
94
277
|
highlightEl?: HTMLDivElement;
|
|
95
278
|
highlight?: () => void;
|
|
96
279
|
unhighlight?: () => void;
|
|
@@ -104,43 +287,92 @@ export type ElementMeta = {
|
|
|
104
287
|
* Triggering highlight needs the metadata stored on element, so
|
|
105
288
|
* we need the ability to prevent clean.
|
|
106
289
|
*/
|
|
290
|
+
|
|
107
291
|
preventClean?: boolean;
|
|
108
292
|
};
|
|
109
293
|
|
|
110
|
-
export type
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
294
|
+
export type ChangeTranslationInterface = (
|
|
295
|
+
descriptor: CacheDescriptor,
|
|
296
|
+
key: string,
|
|
297
|
+
value: string
|
|
298
|
+
) => { revert: () => void };
|
|
114
299
|
|
|
115
|
-
export type
|
|
116
|
-
|
|
300
|
+
export type UiProps = {
|
|
301
|
+
apiUrl: string;
|
|
302
|
+
apiKey: string;
|
|
303
|
+
highlight: HighlightInterface;
|
|
304
|
+
changeTranslation: ChangeTranslationInterface;
|
|
117
305
|
};
|
|
118
306
|
|
|
119
|
-
export
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
| 'screenshots.delete';
|
|
307
|
+
export interface UiInterface {
|
|
308
|
+
handleElementClick(
|
|
309
|
+
event: MouseEvent,
|
|
310
|
+
keysAndDefaults: UiKeyOption[]
|
|
311
|
+
): Promise<void>;
|
|
312
|
+
}
|
|
126
313
|
|
|
127
|
-
export type
|
|
314
|
+
export type UiConstructor = new (props: UiProps) => UiInterface;
|
|
128
315
|
|
|
129
|
-
export type
|
|
316
|
+
export type UiLibInterface = {
|
|
317
|
+
UI: UiConstructor;
|
|
318
|
+
};
|
|
130
319
|
|
|
131
|
-
export
|
|
132
|
-
format: FormatFunction;
|
|
133
|
-
}
|
|
320
|
+
export type UiType = UiConstructor | UiLibInterface;
|
|
134
321
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
322
|
+
export type UiKeyOption = {
|
|
323
|
+
key: string;
|
|
324
|
+
defaultValue?: string;
|
|
325
|
+
ns: FallbackNSTranslation;
|
|
326
|
+
translation: string | undefined;
|
|
327
|
+
};
|
|
139
328
|
|
|
140
|
-
export type
|
|
329
|
+
export type KeyWithDefault = {
|
|
330
|
+
key: string;
|
|
331
|
+
defaultValue?: string;
|
|
332
|
+
ns: FallbackNSTranslation;
|
|
333
|
+
};
|
|
141
334
|
|
|
142
|
-
export type
|
|
143
|
-
|
|
144
|
-
|
|
335
|
+
export type TranslationOnClick = (
|
|
336
|
+
event: MouseEvent,
|
|
337
|
+
data: {
|
|
338
|
+
keysAndDefaults: KeyWithDefault[];
|
|
339
|
+
el: Element;
|
|
340
|
+
meta: ElementMeta;
|
|
341
|
+
}
|
|
342
|
+
) => void;
|
|
343
|
+
|
|
344
|
+
export type Listener = {
|
|
345
|
+
unsubscribe: () => void;
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
export type KeyDescriptorInternal = {
|
|
349
|
+
key?: string;
|
|
350
|
+
ns?: string[] | undefined;
|
|
351
|
+
};
|
|
352
|
+
|
|
353
|
+
export type KeyDescriptor = {
|
|
354
|
+
key: string;
|
|
355
|
+
ns?: string | string[];
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
export type ListenerSelective = {
|
|
359
|
+
unsubscribe: () => void;
|
|
360
|
+
subscribeNs: (ns: FallbackNSTranslation) => ListenerSelective;
|
|
361
|
+
unsubscribeNs: (ns: FallbackNSTranslation) => ListenerSelective;
|
|
362
|
+
subscribeKey: (descriptor: KeyDescriptor) => ListenerSelective;
|
|
363
|
+
unsubscribeKey: (descriptor: KeyDescriptor) => ListenerSelective;
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
export type ListenerHandlerEvent<T> = { value: T };
|
|
367
|
+
export type ListenerHandler<T> = (e: ListenerHandlerEvent<T>) => void;
|
|
368
|
+
|
|
369
|
+
export type TolgeePlugin = (
|
|
370
|
+
tolgee: TolgeeInstance,
|
|
371
|
+
tools: PluginServicePublic
|
|
372
|
+
) => TolgeeInstance;
|
|
373
|
+
|
|
374
|
+
export type CachePublicRecord = {
|
|
375
|
+
data: TranslationsFlat;
|
|
145
376
|
language: string;
|
|
146
|
-
|
|
377
|
+
namespace: string;
|
|
378
|
+
};
|