@tolgee/core 5.10.2 → 5.11.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 +24 -12
- 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 +24 -12
- package/dist/tolgee.esm.js.map +1 -1
- package/dist/tolgee.esm.min.js +1 -1
- package/dist/tolgee.esm.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 +24 -12
- package/dist/tolgee.esm.mjs.map +1 -1
- package/dist/tolgee.umd.js +24 -12
- 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 +2 -2
- package/lib/Controller/Controller.d.ts +5 -3
- package/lib/Controller/Events/Events.d.ts +2 -1
- package/lib/Controller/Plugins/Plugins.d.ts +4 -4
- package/lib/Controller/State/State.d.ts +1 -0
- package/lib/Controller/State/initState.d.ts +5 -1
- package/lib/Controller/State/observerOptions.d.ts +4 -0
- package/lib/TolgeeCore.d.ts +2 -3
- package/lib/types/events.d.ts +10 -1
- package/lib/types/general.d.ts +1 -0
- package/lib/types/plugin.d.ts +12 -5
- package/package.json +2 -2
- package/src/Controller/Cache/Cache.ts +3 -4
- package/src/Controller/Controller.ts +10 -1
- package/src/Controller/Events/Events.ts +8 -1
- package/src/Controller/Plugins/Plugins.ts +22 -7
- package/src/Controller/State/initState.ts +7 -0
- package/src/Controller/State/observerOptions.ts +6 -0
- package/src/types/events.ts +17 -1
- package/src/types/general.ts +5 -0
- package/src/types/plugin.ts +17 -3
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { CacheDescriptor, CacheDescriptorInternal, CacheDescriptorWithKey, NsFallback, TranslationsFlat, TranslationValue, TreeTranslationsData,
|
|
1
|
+
import { CacheDescriptor, CacheDescriptorInternal, CacheDescriptorWithKey, NsFallback, TranslationsFlat, TranslationValue, TreeTranslationsData, BackendGetRecordInternal } from '../../types';
|
|
2
2
|
import { EventEmitterInstance } from '../Events/EventEmitter';
|
|
3
3
|
import { TolgeeStaticData } from '../State/initState';
|
|
4
4
|
import { ValueObserverInstance } from '../ValueObserver';
|
|
5
|
-
export declare function Cache(onCacheChange: EventEmitterInstance<CacheDescriptorWithKey>, backendGetRecord:
|
|
5
|
+
export declare function Cache(onCacheChange: EventEmitterInstance<CacheDescriptorWithKey>, backendGetRecord: BackendGetRecordInternal, backendGetDevRecord: BackendGetRecordInternal, withDefaultNs: (descriptor: CacheDescriptor) => CacheDescriptorInternal, isInitialLoading: () => boolean, fetchingObserver: ValueObserverInstance<boolean>, loadingObserver: ValueObserverInstance<boolean>): Readonly<{
|
|
6
6
|
addStaticData(data: TolgeeStaticData | undefined): void;
|
|
7
7
|
invalidate(): void;
|
|
8
8
|
addRecord(descriptor: CacheDescriptorInternal, data: TreeTranslationsData): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CacheDescriptor, NsFallback, TolgeeOptions, TFnType, KeyAndNamespacesInternal } from '../types';
|
|
1
|
+
import { CacheDescriptor, NsFallback, TolgeeOptions, TFnType, KeyAndNamespacesInternal, TranslationDescriptor } from '../types';
|
|
2
2
|
declare type StateServiceProps = {
|
|
3
3
|
options?: Partial<TolgeeOptions>;
|
|
4
4
|
};
|
|
@@ -36,8 +36,8 @@ export declare function Controller({ options }: StateServiceProps): Readonly<{
|
|
|
36
36
|
getInitialLanguage: () => string | Promise<string | undefined> | Promise<string | Promise<string | undefined> | undefined> | undefined;
|
|
37
37
|
setStoredLanguage: (language: string) => void;
|
|
38
38
|
getDevBackend: () => import("../types").BackendDevMiddleware | undefined;
|
|
39
|
-
getBackendRecord: import("../types").
|
|
40
|
-
getBackendDevRecord: import("../types").
|
|
39
|
+
getBackendRecord: import("../types").BackendGetRecordInternal;
|
|
40
|
+
getBackendDevRecord: import("../types").BackendGetRecordInternal;
|
|
41
41
|
getLanguageDetector: () => import("../types").LanguageDetectorMiddleware | undefined;
|
|
42
42
|
retranslate: () => void;
|
|
43
43
|
highlight: import("../types").HighlightInterface;
|
|
@@ -76,6 +76,7 @@ export declare function Controller({ options }: StateServiceProps): Readonly<{
|
|
|
76
76
|
observerType: "invisible" | "text";
|
|
77
77
|
observerOptions: import("./State/observerOptions").ObserverOptionsInternal;
|
|
78
78
|
onFormatError: import("../types").OnFormatError;
|
|
79
|
+
fetch: import("../types").FetchFn;
|
|
79
80
|
};
|
|
80
81
|
removeActiveNs: (ns: NsFallback) => void;
|
|
81
82
|
getRequiredNamespaces: () => string[];
|
|
@@ -93,6 +94,7 @@ export declare function Controller({ options }: StateServiceProps): Readonly<{
|
|
|
93
94
|
onRunningChange: import("./Events/EventEmitter").EventEmitterInstance<boolean>;
|
|
94
95
|
onCacheChange: import("./Events/EventEmitter").EventEmitterInstance<import("../types").CacheDescriptorWithKey>;
|
|
95
96
|
onUpdate: import("./Events/EventEmitterSelective").EventEmitterSelectiveInstance;
|
|
97
|
+
onPermanentChange: import("./Events/EventEmitter").EventEmitterInstance<TranslationDescriptor>;
|
|
96
98
|
setEmitterActive: (active: boolean) => void;
|
|
97
99
|
on: import("../types").TolgeeOn<keyof import("../types").EventType>;
|
|
98
100
|
}>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CacheDescriptorWithKey, TolgeeOn } from '../../types';
|
|
1
|
+
import { CacheDescriptorWithKey, TolgeeOn, TranslationDescriptor } from '../../types';
|
|
2
2
|
export declare function Events(getFallbackNs: () => string[], getDefaultNs: () => string): Readonly<{
|
|
3
3
|
onPendingLanguageChange: import("./EventEmitter").EventEmitterInstance<string>;
|
|
4
4
|
onLanguageChange: import("./EventEmitter").EventEmitterInstance<string>;
|
|
@@ -8,6 +8,7 @@ export declare function Events(getFallbackNs: () => string[], getDefaultNs: () =
|
|
|
8
8
|
onRunningChange: import("./EventEmitter").EventEmitterInstance<boolean>;
|
|
9
9
|
onCacheChange: import("./EventEmitter").EventEmitterInstance<CacheDescriptorWithKey>;
|
|
10
10
|
onUpdate: import("./EventEmitterSelective").EventEmitterSelectiveInstance;
|
|
11
|
+
onPermanentChange: import("./EventEmitter").EventEmitterInstance<TranslationDescriptor>;
|
|
11
12
|
setEmitterActive(active: boolean): void;
|
|
12
13
|
on: TolgeeOn<keyof import("../../types").EventType>;
|
|
13
14
|
}>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BackendDevMiddleware,
|
|
2
|
-
export declare function Plugins(getLanguage: () => string | undefined, getInitialOptions: () => TolgeeOptionsInternal, getAvailableLanguages: () => string[] | undefined, getTranslationNs: (props: KeyAndNamespacesInternal) => string[], getTranslation: (props: KeyAndNamespacesInternal) => string | undefined, changeTranslation: ChangeTranslationInterface): Readonly<{
|
|
1
|
+
import { BackendDevMiddleware, TranslatePropsInternal, HighlightInterface, LanguageDetectorMiddleware, LanguageStorageMiddleware, ChangeTranslationInterface, WrapperWrapProps, Unwrapped, KeyAndNamespacesInternal, TolgeePlugin, TolgeeInstance, TolgeeOptionsInternal, BackendGetRecordInternal, TranslationDescriptor } from '../../types';
|
|
2
|
+
export declare function Plugins(getLanguage: () => string | undefined, getInitialOptions: () => TolgeeOptionsInternal, getAvailableLanguages: () => string[] | undefined, getTranslationNs: (props: KeyAndNamespacesInternal) => string[], getTranslation: (props: KeyAndNamespacesInternal) => string | undefined, changeTranslation: ChangeTranslationInterface, onPermanentChange: (props: TranslationDescriptor) => void): Readonly<{
|
|
3
3
|
addPlugin: (tolgeeInstance: TolgeeInstance, plugin: TolgeePlugin) => void;
|
|
4
4
|
run(): void;
|
|
5
5
|
stop(): void;
|
|
@@ -7,8 +7,8 @@ export declare function Plugins(getLanguage: () => string | undefined, getInitia
|
|
|
7
7
|
getInitialLanguage(): string | Promise<string | undefined> | Promise<string | Promise<string | undefined> | undefined> | undefined;
|
|
8
8
|
setStoredLanguage(language: string): void;
|
|
9
9
|
getDevBackend(): BackendDevMiddleware | undefined;
|
|
10
|
-
getBackendRecord:
|
|
11
|
-
getBackendDevRecord:
|
|
10
|
+
getBackendRecord: BackendGetRecordInternal;
|
|
11
|
+
getBackendDevRecord: BackendGetRecordInternal;
|
|
12
12
|
getLanguageDetector(): LanguageDetectorMiddleware | undefined;
|
|
13
13
|
retranslate(): void;
|
|
14
14
|
highlight: HighlightInterface;
|
|
@@ -26,6 +26,7 @@ export declare function State(onLanguageChange: EventEmitterInstance<string>, on
|
|
|
26
26
|
observerType: "invisible" | "text";
|
|
27
27
|
observerOptions: import("./observerOptions").ObserverOptionsInternal;
|
|
28
28
|
onFormatError: import("../../types").OnFormatError;
|
|
29
|
+
fetch: import("../../types").FetchFn;
|
|
29
30
|
};
|
|
30
31
|
addActiveNs(ns: NsFallback): void;
|
|
31
32
|
removeActiveNs(ns: NsFallback): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FallbackGeneral, FallbackLanguageOption, TreeTranslationsData, OnFormatError } from '../../types';
|
|
1
|
+
import { FallbackGeneral, FallbackLanguageOption, TreeTranslationsData, OnFormatError, FetchFn } from '../../types';
|
|
2
2
|
import { ObserverOptions, ObserverOptionsInternal } from './observerOptions';
|
|
3
3
|
export declare const DEFAULT_FORMAT_ERROR = "invalid";
|
|
4
4
|
export declare const DEFAULT_API_URL = "https://app.tolgee.io";
|
|
@@ -71,6 +71,10 @@ export declare type TolgeeOptionsInternal = {
|
|
|
71
71
|
* Define what to display in case of formatting error. (Default: 'invalid')
|
|
72
72
|
*/
|
|
73
73
|
onFormatError: OnFormatError;
|
|
74
|
+
/**
|
|
75
|
+
* Define custom fetch function, used for fetching the translations
|
|
76
|
+
*/
|
|
77
|
+
fetch: FetchFn;
|
|
74
78
|
};
|
|
75
79
|
export declare type TolgeeOptions = Partial<Omit<TolgeeOptionsInternal, 'observerOptions'>> & {
|
|
76
80
|
observerOptions?: ObserverOptions;
|
|
@@ -35,6 +35,10 @@ export declare type ObserverOptionsInternal = {
|
|
|
35
35
|
* Html elements which will pass click listener to their parent (default: ['option', 'optgroup'])
|
|
36
36
|
*/
|
|
37
37
|
passToParent: (keyof HTMLElementTagNameMap)[] | ((node: Element) => boolean);
|
|
38
|
+
/**
|
|
39
|
+
* Encodes full key info into the invisble characters (default: false)
|
|
40
|
+
*/
|
|
41
|
+
fullKeyEncode: boolean;
|
|
38
42
|
};
|
|
39
43
|
export declare type ObserverOptions = Partial<ObserverOptionsInternal>;
|
|
40
44
|
export declare type ModifierKey = 'Alt' | 'Control' | 'Shift' | 'Meta';
|
package/lib/TolgeeCore.d.ts
CHANGED
|
@@ -134,9 +134,7 @@ declare function createTolgee(options: TolgeeOptions): Readonly<{
|
|
|
134
134
|
language?: string | undefined;
|
|
135
135
|
defaultLanguage?: string | undefined;
|
|
136
136
|
availableLanguages?: string[] | undefined;
|
|
137
|
-
fallbackLanguage?: import("./types").FallbackLanguageOption;
|
|
138
|
-
* Turn off/on events emitting. Is on by default.
|
|
139
|
-
*/
|
|
137
|
+
fallbackLanguage?: import("./types").FallbackLanguageOption;
|
|
140
138
|
ns?: string[] | undefined;
|
|
141
139
|
fallbackNs?: import("./types").FallbackGeneral;
|
|
142
140
|
defaultNs: string;
|
|
@@ -144,6 +142,7 @@ declare function createTolgee(options: TolgeeOptions): Readonly<{
|
|
|
144
142
|
observerType: "invisible" | "text";
|
|
145
143
|
observerOptions: import("./types").ObserverOptionsInternal;
|
|
146
144
|
onFormatError: import("./types").OnFormatError;
|
|
145
|
+
fetch: import("./types").FetchFn;
|
|
147
146
|
};
|
|
148
147
|
/**
|
|
149
148
|
* Tolgee is in dev mode if `DevTools` plugin is used and `apiKey` + `apiUrl` are specified.
|
package/lib/types/events.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export declare type ListenerEvent<T> = {
|
|
|
17
17
|
value: T;
|
|
18
18
|
};
|
|
19
19
|
export declare type Listener<T> = (e: ListenerEvent<T>) => void;
|
|
20
|
-
export declare type TolgeeEvent = 'language' | 'pendingLanguage' | 'loading' | 'fetching' | 'initialLoad' | 'running' | 'cache' | 'update';
|
|
20
|
+
export declare type TolgeeEvent = 'language' | 'pendingLanguage' | 'loading' | 'fetching' | 'initialLoad' | 'running' | 'cache' | 'update' | 'permanentChange';
|
|
21
21
|
export interface EventType {
|
|
22
22
|
language: string;
|
|
23
23
|
pendingLanguage: string;
|
|
@@ -27,6 +27,7 @@ export interface EventType {
|
|
|
27
27
|
running: boolean;
|
|
28
28
|
cache: CacheDescriptorWithKey;
|
|
29
29
|
update: void;
|
|
30
|
+
permanentChange: CacheDescriptorWithKey;
|
|
30
31
|
}
|
|
31
32
|
export declare type TolgeeOn<E extends keyof EventType = keyof EventType> = {
|
|
32
33
|
/**
|
|
@@ -62,5 +63,13 @@ export declare type TolgeeOn<E extends keyof EventType = keyof EventType> = {
|
|
|
62
63
|
* Emitted when cache changes.
|
|
63
64
|
*/
|
|
64
65
|
(event: 'cache', handler: Listener<CacheDescriptorWithKey>): Subscription;
|
|
66
|
+
/**
|
|
67
|
+
* Translation was changed or created via dev tools
|
|
68
|
+
*/
|
|
69
|
+
(event: 'permanentChange', handler: Listener<CacheDescriptorWithKey>): Subscription;
|
|
65
70
|
(event: E, handler: unknown): Subscription;
|
|
66
71
|
};
|
|
72
|
+
export declare type TranslationDescriptor = {
|
|
73
|
+
key: string;
|
|
74
|
+
namespace: string | undefined;
|
|
75
|
+
};
|
package/lib/types/general.d.ts
CHANGED
|
@@ -32,4 +32,5 @@ export declare type TFnType<T = DefaultParamType, R = string, K extends string =
|
|
|
32
32
|
(props: TranslateProps<T, K>): R;
|
|
33
33
|
};
|
|
34
34
|
export declare type KeyAndNamespacesInternal = Pick<TranslatePropsInternal, 'key' | 'ns' | 'language'>;
|
|
35
|
+
export declare type FetchFn = (input: string | URL, init?: RequestInit | undefined) => Promise<Response>;
|
|
35
36
|
export {};
|
package/lib/types/plugin.d.ts
CHANGED
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
import { ChangeTranslationInterface, TreeTranslationsData } from './cache';
|
|
2
|
-
import { NsFallback, NsType, TranslateParams, TranslatePropsInternal } from './general';
|
|
2
|
+
import { FetchFn, NsFallback, NsType, TranslateParams, TranslatePropsInternal } from './general';
|
|
3
3
|
import type { ObserverOptionsInternal } from '../Controller/State/observerOptions';
|
|
4
4
|
import { TolgeeInstance } from '../TolgeeCore';
|
|
5
|
+
import { TranslationDescriptor } from './events';
|
|
5
6
|
export declare type BackendDevProps = {
|
|
6
7
|
apiUrl?: string;
|
|
7
8
|
apiKey?: string;
|
|
8
9
|
projectId?: number | string;
|
|
9
10
|
};
|
|
11
|
+
export declare type CommonProps = {
|
|
12
|
+
fetch: FetchFn;
|
|
13
|
+
};
|
|
10
14
|
export declare type BackendGetRecordProps = {
|
|
11
15
|
language: string;
|
|
12
16
|
namespace?: string;
|
|
13
17
|
};
|
|
14
|
-
export declare type BackendGetRecord = (data: BackendGetRecordProps) => Promise<TreeTranslationsData | undefined> | undefined;
|
|
18
|
+
export declare type BackendGetRecord = (data: BackendGetRecordProps & CommonProps) => Promise<TreeTranslationsData | undefined> | undefined;
|
|
15
19
|
export interface BackendMiddleware {
|
|
16
20
|
getRecord: BackendGetRecord;
|
|
17
21
|
}
|
|
18
|
-
export declare type BackendGetDevRecord = (data: BackendGetRecordProps & BackendDevProps) => Promise<TreeTranslationsData | undefined> | undefined;
|
|
22
|
+
export declare type BackendGetDevRecord = (data: BackendGetRecordProps & CommonProps & BackendDevProps) => Promise<TreeTranslationsData | undefined> | undefined;
|
|
23
|
+
export declare type BackendGetRecordInternal = (data: BackendGetRecordProps & BackendDevProps) => Promise<TreeTranslationsData | undefined> | undefined;
|
|
19
24
|
export declare type BackendDevMiddleware = {
|
|
20
25
|
getRecord: BackendGetDevRecord;
|
|
21
26
|
};
|
|
@@ -56,13 +61,14 @@ export declare type ObserverMiddleware = () => {
|
|
|
56
61
|
};
|
|
57
62
|
export declare type LanguageDetectorProps = {
|
|
58
63
|
availableLanguages: string[];
|
|
64
|
+
fetch: FetchFn;
|
|
59
65
|
};
|
|
60
66
|
export declare type LanguageDetectorMiddleware = {
|
|
61
67
|
getLanguage: (props: LanguageDetectorProps) => string | undefined | Promise<string | undefined>;
|
|
62
68
|
};
|
|
63
69
|
export declare type LanguageStorageMiddleware = {
|
|
64
|
-
getLanguage: () => string | undefined | Promise<string | undefined>;
|
|
65
|
-
setLanguage: (language: string) => void | Promise<void>;
|
|
70
|
+
getLanguage: (props: CommonProps) => string | undefined | Promise<string | undefined>;
|
|
71
|
+
setLanguage: (language: string, props: CommonProps) => void | Promise<void>;
|
|
66
72
|
};
|
|
67
73
|
export declare type DevCredentials = undefined | {
|
|
68
74
|
apiUrl?: string;
|
|
@@ -110,6 +116,7 @@ export declare type UiProps = {
|
|
|
110
116
|
highlight: HighlightInterface;
|
|
111
117
|
findPositions: (key?: string | undefined, ns?: NsFallback) => KeyPosition[];
|
|
112
118
|
changeTranslation: ChangeTranslationInterface;
|
|
119
|
+
onPermanentChange: (props: TranslationDescriptor) => void;
|
|
113
120
|
};
|
|
114
121
|
export declare type UiKeyOption = {
|
|
115
122
|
key: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tolgee/core",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.11.0",
|
|
4
4
|
"description": "Library providing ability to translate messages directly in context of developed application.",
|
|
5
5
|
"main": "./dist/tolgee.cjs.js",
|
|
6
6
|
"module": "./dist/tolgee.esm.js",
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
"access": "public"
|
|
69
69
|
},
|
|
70
70
|
"sideEffects": false,
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "66aec0547ab6d28c0be0958f0dede3e4fde230fa"
|
|
72
72
|
}
|
|
@@ -6,8 +6,7 @@ import {
|
|
|
6
6
|
TranslationsFlat,
|
|
7
7
|
TranslationValue,
|
|
8
8
|
TreeTranslationsData,
|
|
9
|
-
|
|
10
|
-
BackendGetDevRecord,
|
|
9
|
+
BackendGetRecordInternal,
|
|
11
10
|
} from '../../types';
|
|
12
11
|
import { getFallbackArray, unique } from '../../helpers';
|
|
13
12
|
import { EventEmitterInstance } from '../Events/EventEmitter';
|
|
@@ -30,8 +29,8 @@ type StateCache = Map<string, CacheRecord>;
|
|
|
30
29
|
|
|
31
30
|
export function Cache(
|
|
32
31
|
onCacheChange: EventEmitterInstance<CacheDescriptorWithKey>,
|
|
33
|
-
backendGetRecord:
|
|
34
|
-
backendGetDevRecord:
|
|
32
|
+
backendGetRecord: BackendGetRecordInternal,
|
|
33
|
+
backendGetDevRecord: BackendGetRecordInternal,
|
|
35
34
|
withDefaultNs: (descriptor: CacheDescriptor) => CacheDescriptorInternal,
|
|
36
35
|
isInitialLoading: () => boolean,
|
|
37
36
|
fetchingObserver: ValueObserverInstance<boolean>,
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
TFnType,
|
|
7
7
|
NsType,
|
|
8
8
|
KeyAndNamespacesInternal,
|
|
9
|
+
TranslationDescriptor,
|
|
9
10
|
} from '../types';
|
|
10
11
|
import { Cache } from './Cache/Cache';
|
|
11
12
|
import { getFallbackArray } from '../helpers';
|
|
@@ -44,7 +45,8 @@ export function Controller({ options }: StateServiceProps) {
|
|
|
44
45
|
state.getAvailableLanguages,
|
|
45
46
|
getTranslationNs,
|
|
46
47
|
getTranslation,
|
|
47
|
-
changeTranslation
|
|
48
|
+
changeTranslation,
|
|
49
|
+
onPermanentChange
|
|
48
50
|
);
|
|
49
51
|
|
|
50
52
|
const cache = Cache(
|
|
@@ -105,6 +107,13 @@ export function Controller({ options }: StateServiceProps) {
|
|
|
105
107
|
};
|
|
106
108
|
}
|
|
107
109
|
|
|
110
|
+
function onPermanentChange(props: TranslationDescriptor) {
|
|
111
|
+
events.onPermanentChange.emit({
|
|
112
|
+
key: props.key,
|
|
113
|
+
namespace: props.namespace,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
108
117
|
function init(options: Partial<TolgeeOptions>) {
|
|
109
118
|
state.init(options);
|
|
110
119
|
cache.addStaticData(state.getInitialOptions().staticData);
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { EventEmitter } from './EventEmitter';
|
|
2
2
|
import { EventEmitterSelective } from './EventEmitterSelective';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
CacheDescriptorWithKey,
|
|
5
|
+
TolgeeOn,
|
|
6
|
+
TranslationDescriptor,
|
|
7
|
+
} from '../../types';
|
|
4
8
|
|
|
5
9
|
export function Events(
|
|
6
10
|
getFallbackNs: () => string[],
|
|
@@ -21,6 +25,7 @@ export function Events(
|
|
|
21
25
|
onRunningChange: EventEmitter<boolean>(isActive),
|
|
22
26
|
onCacheChange: EventEmitter<CacheDescriptorWithKey>(isActive),
|
|
23
27
|
onUpdate: EventEmitterSelective(isActive, getFallbackNs, getDefaultNs),
|
|
28
|
+
onPermanentChange: EventEmitter<TranslationDescriptor>(isActive),
|
|
24
29
|
setEmitterActive(active: boolean) {
|
|
25
30
|
emitterActive = active;
|
|
26
31
|
},
|
|
@@ -42,6 +47,8 @@ export function Events(
|
|
|
42
47
|
return self.onCacheChange.listen(handler as any);
|
|
43
48
|
case 'update':
|
|
44
49
|
return self.onUpdate.listen(handler as any);
|
|
50
|
+
case 'permanentChange':
|
|
51
|
+
return self.onPermanentChange.listen(handler as any);
|
|
45
52
|
}
|
|
46
53
|
}) as TolgeeOn,
|
|
47
54
|
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { getErrorMessage, isPromise, valueOrPromise } from '../../helpers';
|
|
2
2
|
import {
|
|
3
3
|
BackendDevMiddleware,
|
|
4
|
-
BackendGetRecord,
|
|
5
4
|
BackendMiddleware,
|
|
6
5
|
FormatterMiddleware,
|
|
7
6
|
ObserverMiddleware,
|
|
@@ -22,6 +21,8 @@ import {
|
|
|
22
21
|
TolgeeOptionsInternal,
|
|
23
22
|
FormatErrorHandler,
|
|
24
23
|
FindPositionsInterface,
|
|
24
|
+
BackendGetRecordInternal,
|
|
25
|
+
TranslationDescriptor,
|
|
25
26
|
} from '../../types';
|
|
26
27
|
import { DEFAULT_FORMAT_ERROR } from '../State/initState';
|
|
27
28
|
|
|
@@ -31,7 +32,8 @@ export function Plugins(
|
|
|
31
32
|
getAvailableLanguages: () => string[] | undefined,
|
|
32
33
|
getTranslationNs: (props: KeyAndNamespacesInternal) => string[],
|
|
33
34
|
getTranslation: (props: KeyAndNamespacesInternal) => string | undefined,
|
|
34
|
-
changeTranslation: ChangeTranslationInterface
|
|
35
|
+
changeTranslation: ChangeTranslationInterface,
|
|
36
|
+
onPermanentChange: (props: TranslationDescriptor) => void
|
|
35
37
|
) {
|
|
36
38
|
const plugins = {
|
|
37
39
|
ui: undefined as UiMiddleware | undefined,
|
|
@@ -81,6 +83,10 @@ export function Plugins(
|
|
|
81
83
|
});
|
|
82
84
|
}
|
|
83
85
|
|
|
86
|
+
function getCommonProps() {
|
|
87
|
+
return { fetch: getInitialOptions().fetch };
|
|
88
|
+
}
|
|
89
|
+
|
|
84
90
|
function setObserver(observer: ObserverMiddleware | undefined) {
|
|
85
91
|
instances.observer = observer?.();
|
|
86
92
|
}
|
|
@@ -126,6 +132,7 @@ export function Plugins(
|
|
|
126
132
|
|
|
127
133
|
return instances.languageDetector.getLanguage({
|
|
128
134
|
availableLanguages,
|
|
135
|
+
...getCommonProps(),
|
|
129
136
|
});
|
|
130
137
|
}
|
|
131
138
|
|
|
@@ -168,6 +175,7 @@ export function Plugins(
|
|
|
168
175
|
highlight: self.highlight,
|
|
169
176
|
changeTranslation,
|
|
170
177
|
findPositions,
|
|
178
|
+
onPermanentChange,
|
|
171
179
|
});
|
|
172
180
|
|
|
173
181
|
instances.observer?.run({
|
|
@@ -189,7 +197,9 @@ export function Plugins(
|
|
|
189
197
|
|
|
190
198
|
getInitialLanguage() {
|
|
191
199
|
const availableLanguages = getAvailableLanguages();
|
|
192
|
-
const languageOrPromise = instances.languageStorage?.getLanguage(
|
|
200
|
+
const languageOrPromise = instances.languageStorage?.getLanguage(
|
|
201
|
+
getCommonProps()
|
|
202
|
+
);
|
|
193
203
|
|
|
194
204
|
return valueOrPromise(languageOrPromise, (language) => {
|
|
195
205
|
if (
|
|
@@ -203,7 +213,7 @@ export function Plugins(
|
|
|
203
213
|
},
|
|
204
214
|
|
|
205
215
|
setStoredLanguage(language: string) {
|
|
206
|
-
instances.languageStorage?.setLanguage(language);
|
|
216
|
+
instances.languageStorage?.setLanguage(language, getCommonProps());
|
|
207
217
|
},
|
|
208
218
|
|
|
209
219
|
getDevBackend() {
|
|
@@ -212,7 +222,11 @@ export function Plugins(
|
|
|
212
222
|
|
|
213
223
|
getBackendRecord: (({ language, namespace }) => {
|
|
214
224
|
for (const backend of instances.backends) {
|
|
215
|
-
const data = backend.getRecord({
|
|
225
|
+
const data = backend.getRecord({
|
|
226
|
+
language,
|
|
227
|
+
namespace,
|
|
228
|
+
...getCommonProps(),
|
|
229
|
+
});
|
|
216
230
|
if (isPromise(data)) {
|
|
217
231
|
return data?.catch((e) => {
|
|
218
232
|
// eslint-disable-next-line no-console
|
|
@@ -225,7 +239,7 @@ export function Plugins(
|
|
|
225
239
|
}
|
|
226
240
|
}
|
|
227
241
|
return undefined;
|
|
228
|
-
}) as
|
|
242
|
+
}) as BackendGetRecordInternal,
|
|
229
243
|
|
|
230
244
|
getBackendDevRecord: (({ language, namespace }) => {
|
|
231
245
|
const { apiKey, apiUrl, projectId } = getInitialOptions();
|
|
@@ -235,8 +249,9 @@ export function Plugins(
|
|
|
235
249
|
projectId,
|
|
236
250
|
language,
|
|
237
251
|
namespace,
|
|
252
|
+
...getCommonProps(),
|
|
238
253
|
});
|
|
239
|
-
}) as
|
|
254
|
+
}) as BackendGetRecordInternal,
|
|
240
255
|
|
|
241
256
|
getLanguageDetector() {
|
|
242
257
|
return instances.languageDetector;
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
FallbackLanguageOption,
|
|
4
4
|
TreeTranslationsData,
|
|
5
5
|
OnFormatError,
|
|
6
|
+
FetchFn,
|
|
6
7
|
} from '../../types';
|
|
7
8
|
import { sanitizeUrl } from '../../helpers';
|
|
8
9
|
import {
|
|
@@ -97,6 +98,11 @@ export type TolgeeOptionsInternal = {
|
|
|
97
98
|
* Define what to display in case of formatting error. (Default: 'invalid')
|
|
98
99
|
*/
|
|
99
100
|
onFormatError: OnFormatError;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Define custom fetch function, used for fetching the translations
|
|
104
|
+
*/
|
|
105
|
+
fetch: FetchFn;
|
|
100
106
|
};
|
|
101
107
|
|
|
102
108
|
export type TolgeeOptions = Partial<
|
|
@@ -120,6 +126,7 @@ const defaultValues: TolgeeOptionsInternal = {
|
|
|
120
126
|
observerType: 'invisible',
|
|
121
127
|
onFormatError: DEFAULT_FORMAT_ERROR,
|
|
122
128
|
apiUrl: DEFAULT_API_URL,
|
|
129
|
+
fetch: (input, options) => fetch(input, options),
|
|
123
130
|
};
|
|
124
131
|
|
|
125
132
|
export const combineOptions = <T extends TolgeeOptions>(
|
|
@@ -43,6 +43,11 @@ export type ObserverOptionsInternal = {
|
|
|
43
43
|
* Html elements which will pass click listener to their parent (default: ['option', 'optgroup'])
|
|
44
44
|
*/
|
|
45
45
|
passToParent: (keyof HTMLElementTagNameMap)[] | ((node: Element) => boolean);
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Encodes full key info into the invisble characters (default: false)
|
|
49
|
+
*/
|
|
50
|
+
fullKeyEncode: boolean;
|
|
46
51
|
};
|
|
47
52
|
|
|
48
53
|
export type ObserverOptions = Partial<ObserverOptionsInternal>;
|
|
@@ -63,4 +68,5 @@ export const defaultObserverOptions: ObserverOptionsInternal = {
|
|
|
63
68
|
inputPrefix: '%-%tolgee:',
|
|
64
69
|
inputSuffix: '%-%',
|
|
65
70
|
passToParent: ['option', 'optgroup'],
|
|
71
|
+
fullKeyEncode: false,
|
|
66
72
|
};
|
package/src/types/events.ts
CHANGED
|
@@ -27,7 +27,8 @@ export type TolgeeEvent =
|
|
|
27
27
|
| 'initialLoad'
|
|
28
28
|
| 'running'
|
|
29
29
|
| 'cache'
|
|
30
|
-
| 'update'
|
|
30
|
+
| 'update'
|
|
31
|
+
| 'permanentChange';
|
|
31
32
|
|
|
32
33
|
export interface EventType {
|
|
33
34
|
language: string;
|
|
@@ -38,6 +39,7 @@ export interface EventType {
|
|
|
38
39
|
running: boolean;
|
|
39
40
|
cache: CacheDescriptorWithKey;
|
|
40
41
|
update: void;
|
|
42
|
+
permanentChange: CacheDescriptorWithKey;
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
export type TolgeeOn<E extends keyof EventType = keyof EventType> = {
|
|
@@ -81,5 +83,19 @@ export type TolgeeOn<E extends keyof EventType = keyof EventType> = {
|
|
|
81
83
|
* Emitted when cache changes.
|
|
82
84
|
*/
|
|
83
85
|
(event: 'cache', handler: Listener<CacheDescriptorWithKey>): Subscription;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Translation was changed or created via dev tools
|
|
89
|
+
*/
|
|
90
|
+
(
|
|
91
|
+
event: 'permanentChange',
|
|
92
|
+
handler: Listener<CacheDescriptorWithKey>
|
|
93
|
+
): Subscription;
|
|
94
|
+
|
|
84
95
|
(event: E, handler: unknown): Subscription;
|
|
85
96
|
};
|
|
97
|
+
|
|
98
|
+
export type TranslationDescriptor = {
|
|
99
|
+
key: string;
|
|
100
|
+
namespace: string | undefined;
|
|
101
|
+
};
|
package/src/types/general.ts
CHANGED
package/src/types/plugin.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ChangeTranslationInterface, TreeTranslationsData } from './cache';
|
|
2
2
|
import {
|
|
3
|
+
FetchFn,
|
|
3
4
|
NsFallback,
|
|
4
5
|
NsType,
|
|
5
6
|
TranslateParams,
|
|
@@ -7,6 +8,7 @@ import {
|
|
|
7
8
|
} from './general';
|
|
8
9
|
import type { ObserverOptionsInternal } from '../Controller/State/observerOptions';
|
|
9
10
|
import { TolgeeInstance } from '../TolgeeCore';
|
|
11
|
+
import { TranslationDescriptor } from './events';
|
|
10
12
|
|
|
11
13
|
export type BackendDevProps = {
|
|
12
14
|
apiUrl?: string;
|
|
@@ -14,13 +16,17 @@ export type BackendDevProps = {
|
|
|
14
16
|
projectId?: number | string;
|
|
15
17
|
};
|
|
16
18
|
|
|
19
|
+
export type CommonProps = {
|
|
20
|
+
fetch: FetchFn;
|
|
21
|
+
};
|
|
22
|
+
|
|
17
23
|
export type BackendGetRecordProps = {
|
|
18
24
|
language: string;
|
|
19
25
|
namespace?: string;
|
|
20
26
|
};
|
|
21
27
|
|
|
22
28
|
export type BackendGetRecord = (
|
|
23
|
-
data: BackendGetRecordProps
|
|
29
|
+
data: BackendGetRecordProps & CommonProps
|
|
24
30
|
) => Promise<TreeTranslationsData | undefined> | undefined;
|
|
25
31
|
|
|
26
32
|
export interface BackendMiddleware {
|
|
@@ -28,6 +34,10 @@ export interface BackendMiddleware {
|
|
|
28
34
|
}
|
|
29
35
|
|
|
30
36
|
export type BackendGetDevRecord = (
|
|
37
|
+
data: BackendGetRecordProps & CommonProps & BackendDevProps
|
|
38
|
+
) => Promise<TreeTranslationsData | undefined> | undefined;
|
|
39
|
+
|
|
40
|
+
export type BackendGetRecordInternal = (
|
|
31
41
|
data: BackendGetRecordProps & BackendDevProps
|
|
32
42
|
) => Promise<TreeTranslationsData | undefined> | undefined;
|
|
33
43
|
|
|
@@ -82,6 +92,7 @@ export type ObserverMiddleware = () => {
|
|
|
82
92
|
|
|
83
93
|
export type LanguageDetectorProps = {
|
|
84
94
|
availableLanguages: string[];
|
|
95
|
+
fetch: FetchFn;
|
|
85
96
|
};
|
|
86
97
|
|
|
87
98
|
export type LanguageDetectorMiddleware = {
|
|
@@ -91,8 +102,10 @@ export type LanguageDetectorMiddleware = {
|
|
|
91
102
|
};
|
|
92
103
|
|
|
93
104
|
export type LanguageStorageMiddleware = {
|
|
94
|
-
getLanguage: (
|
|
95
|
-
|
|
105
|
+
getLanguage: (
|
|
106
|
+
props: CommonProps
|
|
107
|
+
) => string | undefined | Promise<string | undefined>;
|
|
108
|
+
setLanguage: (language: string, props: CommonProps) => void | Promise<void>;
|
|
96
109
|
};
|
|
97
110
|
|
|
98
111
|
export type DevCredentials =
|
|
@@ -150,6 +163,7 @@ export type UiProps = {
|
|
|
150
163
|
highlight: HighlightInterface;
|
|
151
164
|
findPositions: (key?: string | undefined, ns?: NsFallback) => KeyPosition[];
|
|
152
165
|
changeTranslation: ChangeTranslationInterface;
|
|
166
|
+
onPermanentChange: (props: TranslationDescriptor) => void;
|
|
153
167
|
};
|
|
154
168
|
|
|
155
169
|
export type UiKeyOption = {
|