@tolgee/core 5.0.0-rc.9be0f0e.0 → 5.0.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 (96) hide show
  1. package/README.md +174 -0
  2. package/README.njk.md +61 -0
  3. package/dist/tolgee.cjs.js +723 -351
  4. package/dist/tolgee.cjs.js.map +1 -1
  5. package/dist/tolgee.cjs.min.js +1 -1
  6. package/dist/tolgee.cjs.min.js.map +1 -1
  7. package/dist/{tolgee.esm.mjs → tolgee.esm.js} +722 -346
  8. package/dist/tolgee.esm.js.map +1 -0
  9. package/dist/tolgee.esm.min.mjs +1 -1
  10. package/dist/tolgee.esm.min.mjs.map +1 -1
  11. package/dist/tolgee.umd.js +723 -351
  12. package/dist/tolgee.umd.js.map +1 -1
  13. package/dist/tolgee.umd.min.js +1 -1
  14. package/dist/tolgee.umd.min.js.map +1 -1
  15. package/lib/Controller/Cache/Cache.d.ts +10 -9
  16. package/lib/Controller/Controller.d.ts +104 -45
  17. package/lib/Controller/Events/EventEmitter.d.ts +6 -0
  18. package/lib/Controller/Events/EventEmitterSelective.d.ts +7 -0
  19. package/lib/Controller/Events/Events.d.ts +14 -0
  20. package/lib/Controller/Plugins/Plugins.d.ts +12 -25
  21. package/lib/Controller/State/State.d.ts +27 -9
  22. package/lib/Controller/State/initState.d.ts +46 -15
  23. package/lib/Controller/State/observerOptions.d.ts +41 -0
  24. package/lib/Controller/ValueObserver.d.ts +5 -5
  25. package/lib/FormatSimple/FormatError.d.ts +7 -0
  26. package/lib/FormatSimple/FormatSimple.d.ts +2 -0
  27. package/lib/FormatSimple/formatParser.d.ts +1 -0
  28. package/lib/FormatSimple/formatter.d.ts +2 -0
  29. package/lib/TolgeeCore.d.ts +204 -0
  30. package/lib/TranslateParams.d.ts +1 -1
  31. package/lib/helpers.d.ts +8 -0
  32. package/lib/index.d.ts +4 -4
  33. package/lib/types/cache.d.ts +25 -0
  34. package/lib/types/events.d.ts +66 -0
  35. package/lib/types/general.d.ts +34 -0
  36. package/lib/types/index.d.ts +7 -0
  37. package/lib/types/plugin.d.ts +127 -0
  38. package/package.json +5 -4
  39. package/src/Controller/Cache/Cache.ts +31 -31
  40. package/src/Controller/Cache/helpers.ts +6 -6
  41. package/src/Controller/Controller.ts +78 -50
  42. package/src/Controller/Events/EventEmitter.ts +34 -0
  43. package/src/Controller/Events/EventEmitterSelective.test.ts +110 -0
  44. package/src/Controller/Events/EventEmitterSelective.ts +132 -0
  45. package/src/Controller/Events/Events.ts +69 -0
  46. package/src/Controller/Plugins/Plugins.ts +182 -133
  47. package/src/Controller/State/State.ts +43 -26
  48. package/src/Controller/State/initState.ts +97 -25
  49. package/src/Controller/State/observerOptions.ts +66 -0
  50. package/src/Controller/ValueObserver.ts +5 -2
  51. package/src/FormatSimple/FormatError.ts +26 -0
  52. package/src/FormatSimple/FormatSimple.ts +13 -0
  53. package/src/FormatSimple/formatParser.ts +133 -0
  54. package/src/FormatSimple/formatter.test.ts +190 -0
  55. package/src/FormatSimple/formatter.ts +19 -0
  56. package/src/TolgeeCore.ts +267 -0
  57. package/src/TranslateParams.test.ts +9 -12
  58. package/src/TranslateParams.ts +6 -5
  59. package/src/__test/backend.test.ts +6 -6
  60. package/src/__test/cache.test.ts +190 -0
  61. package/src/__test/client.test.ts +2 -2
  62. package/src/__test/events.test.ts +32 -7
  63. package/src/__test/format.simple.test.ts +14 -0
  64. package/src/__test/formatError.test.ts +61 -0
  65. package/src/__test/initialization.test.ts +15 -3
  66. package/src/__test/languageDetection.test.ts +14 -8
  67. package/src/__test/languageStorage.test.ts +10 -11
  68. package/src/__test/languages.test.ts +30 -6
  69. package/src/__test/loading.test.ts +2 -2
  70. package/src/__test/{namespacesFallback.test.ts → namespaces.fallback.test.ts} +10 -8
  71. package/src/__test/namespaces.test.ts +30 -7
  72. package/src/__test/options.test.ts +64 -0
  73. package/src/__test/plugins.test.ts +29 -18
  74. package/src/helpers.ts +53 -0
  75. package/src/index.ts +4 -10
  76. package/src/types/cache.ts +37 -0
  77. package/src/types/events.ts +85 -0
  78. package/src/types/general.ts +50 -0
  79. package/src/types/index.ts +19 -0
  80. package/src/types/plugin.ts +181 -0
  81. package/dist/tolgee.esm.mjs.map +0 -1
  82. package/lib/Controller/State/helpers.d.ts +0 -6
  83. package/lib/Events/EventEmitter.d.ts +0 -6
  84. package/lib/Events/EventEmitterSelective.d.ts +0 -15
  85. package/lib/Events/Events.d.ts +0 -50
  86. package/lib/Tolgee.d.ts +0 -2
  87. package/lib/constants.d.ts +0 -5
  88. package/lib/types.d.ts +0 -274
  89. package/src/Controller/State/helpers.ts +0 -41
  90. package/src/Events/EventEmitter.ts +0 -27
  91. package/src/Events/EventEmitterSelective.test.ts +0 -108
  92. package/src/Events/EventEmitterSelective.ts +0 -160
  93. package/src/Events/Events.ts +0 -66
  94. package/src/Tolgee.ts +0 -77
  95. package/src/constants.ts +0 -7
  96. package/src/types.ts +0 -380
@@ -1,23 +1,24 @@
1
- import { CacheDescriptor, CacheDescriptorInternal, CacheDescriptorWithKey, EventEmitterType, FallbackNSTranslation, Options, TranslationsFlat, TranslationValue, TreeTranslationsData, BackendGetRecord, BackendGetDevRecord } from '../../types';
1
+ import { CacheDescriptor, CacheDescriptorInternal, CacheDescriptorWithKey, NsFallback, TranslationsFlat, TranslationValue, TreeTranslationsData, BackendGetRecord, BackendGetDevRecord } from '../../types';
2
+ import { EventEmitterInstance } from '../Events/EventEmitter';
3
+ import { TolgeeStaticData } from '../State/initState';
2
4
  import { ValueObserverInstance } from '../ValueObserver';
3
- export declare const Cache: (onCacheChange: EventEmitterType<CacheDescriptorWithKey>, backendGetRecord: BackendGetRecord, backendGetDevRecord: BackendGetDevRecord, withDefaultNs: (descriptor: CacheDescriptor) => CacheDescriptorInternal, isInitialLoading: () => boolean, fetchingObserver: ValueObserverInstance<boolean>, loadingObserver: ValueObserverInstance<boolean>) => Readonly<{
4
- addStaticData: (data: Options['staticData']) => void;
5
+ export declare const Cache: (onCacheChange: EventEmitterInstance<CacheDescriptorWithKey>, backendGetRecord: BackendGetRecord, backendGetDevRecord: BackendGetDevRecord, withDefaultNs: (descriptor: CacheDescriptor) => CacheDescriptorInternal, isInitialLoading: () => boolean, fetchingObserver: ValueObserverInstance<boolean>, loadingObserver: ValueObserverInstance<boolean>) => Readonly<{
6
+ addStaticData: (data: TolgeeStaticData | undefined) => void;
5
7
  invalidate: () => void;
6
8
  addRecord: (descriptor: CacheDescriptorInternal, data: TreeTranslationsData) => void;
7
9
  exists: (descriptor: CacheDescriptorInternal, strict?: boolean) => boolean;
8
- getRecord: (descriptor: CacheDescriptorInternal) => TranslationsFlat | undefined;
10
+ getRecord: (descriptor: CacheDescriptor) => TranslationsFlat | undefined;
9
11
  getTranslation: (descriptor: CacheDescriptorInternal, key: string) => TranslationValue;
10
- getTranslationNs: (namespaces: string[], languages: string[], key: string) => string | string[];
12
+ getTranslationNs: (namespaces: string[], languages: string[], key: string) => string[];
11
13
  getTranslationFallback: (namespaces: string[], languages: string[], key: string) => string | undefined;
12
14
  changeTranslation: (descriptor: CacheDescriptorInternal, key: string, value: TranslationValue) => void;
13
- isFetching: (ns?: FallbackNSTranslation) => boolean;
14
- isLoading: (language: string | undefined, ns?: FallbackNSTranslation) => boolean;
15
+ isFetching: (ns?: NsFallback) => boolean;
16
+ isLoading: (language: string | undefined, ns?: NsFallback) => boolean;
15
17
  loadRecords: (descriptors: CacheDescriptor[], isDev: boolean) => Promise<TranslationsFlat[]>;
16
- clear: () => void;
17
18
  getAllRecords: () => {
18
19
  data: TranslationsFlat;
19
20
  language: string;
20
21
  namespace: string;
21
22
  }[];
22
23
  }>;
23
- export declare type CacheType = ReturnType<typeof Cache>;
24
+ export declare type CacheInstance = ReturnType<typeof Cache>;
@@ -1,93 +1,152 @@
1
- import type { EventServiceType } from '../Events/Events';
2
- import { CacheDescriptor, FallbackNSTranslation, Options, TFnType, TranslatePropsInternal } from '../types';
1
+ import { CacheDescriptor, NsFallback, TolgeeOptions, TFnType, KeyAndNamespacesInternal } from '../types';
3
2
  declare type StateServiceProps = {
4
- events: EventServiceType;
5
- options?: Partial<Options>;
3
+ options?: Partial<TolgeeOptions>;
6
4
  };
7
- export declare const Controller: ({ events, options }: StateServiceProps) => Readonly<{
8
- init: (options: Partial<Options>) => void;
5
+ export declare const Controller: ({ options }: StateServiceProps) => Readonly<{
6
+ init: (options: Partial<TolgeeOptions>) => void;
9
7
  changeLanguage: (language: string) => Promise<void>;
10
- getTranslation: ({ key, ns, }: Pick<TranslatePropsInternal, 'key' | 'ns'>) => string | undefined;
8
+ getTranslation: ({ key, ns }: KeyAndNamespacesInternal) => string | undefined;
11
9
  changeTranslation: (descriptor: CacheDescriptor, key: string, value: string) => {
12
10
  revert: () => void;
13
11
  };
14
- addActiveNs: (ns: FallbackNSTranslation, forget?: boolean) => Promise<void>;
15
- loadRequiredRecords: (lang?: string, ns?: FallbackNSTranslation) => void | Promise<void>;
12
+ addActiveNs: (ns: NsFallback, forget?: boolean) => Promise<void>;
16
13
  loadRecords: (descriptors: CacheDescriptor[]) => Promise<import("../types").TranslationsFlat[]>;
17
14
  loadRecord: (descriptor: CacheDescriptor) => Promise<import("../types").TranslationsFlat>;
18
- isLoading: (ns?: FallbackNSTranslation) => boolean;
19
- isLoaded: (ns?: FallbackNSTranslation) => boolean;
15
+ isLoading: (ns?: NsFallback) => boolean;
16
+ isLoaded: (ns?: NsFallback) => boolean;
20
17
  t: TFnType<import("../types").DefaultParamType, string>;
21
18
  isDev: () => boolean;
22
19
  run: () => Promise<void | undefined>;
23
20
  stop: () => void;
24
- addStaticData: (data: {
25
- [key: string]: import("../types").TreeTranslationsData | (() => Promise<import("../types").TreeTranslationsData>);
26
- } | undefined) => void;
21
+ addStaticData: (data: import("./State/initState").TolgeeStaticData | undefined) => void;
27
22
  invalidate: () => void;
28
23
  addRecord: (descriptor: import("../types").CacheDescriptorInternal, data: import("../types").TreeTranslationsData) => void;
29
24
  exists: (descriptor: import("../types").CacheDescriptorInternal, strict?: boolean) => boolean;
30
- getRecord: (descriptor: import("../types").CacheDescriptorInternal) => import("../types").TranslationsFlat | undefined;
31
- getTranslationNs: (namespaces: string[], languages: string[], key: string) => string | string[];
25
+ getRecord: (descriptor: CacheDescriptor) => import("../types").TranslationsFlat | undefined;
26
+ getTranslationNs: (namespaces: string[], languages: string[], key: string) => string[];
32
27
  getTranslationFallback: (namespaces: string[], languages: string[], key: string) => string | undefined;
33
- isFetching: (ns?: FallbackNSTranslation) => boolean;
34
- clear: () => void;
28
+ isFetching: (ns?: NsFallback) => boolean;
35
29
  getAllRecords: () => {
36
30
  data: import("../types").TranslationsFlat;
37
31
  language: string;
38
32
  namespace: string;
39
33
  }[];
40
- setFinalFormatter: (formatter: import("../types").FinalFormatterInterface | undefined) => void;
41
- addFormatter: (formatter: import("../types").FormatterInterface | undefined) => void;
42
- formatTranslation: ({ key, translation, defaultValue, noWrap, params, orEmpty, ns, formatEnabled, }: {
34
+ addPlugin: (tolgeeInstance: Readonly<{
35
+ on: import("../types").TolgeeOn<keyof import("../types").EventType>;
36
+ onNsUpdate: (handler: import("../types").Listener<undefined>) => import("../types").SubscriptionSelective;
37
+ setEmmiterActive: (active: boolean) => void;
38
+ getLanguage: () => string | undefined;
39
+ getPendingLanguage: () => string | undefined;
40
+ changeLanguage: (language: string) => Promise<void>;
41
+ changeTranslation: (descriptor: CacheDescriptor, key: string, value: string) => {
42
+ revert: () => void;
43
+ };
44
+ addActiveNs: (ns: NsFallback, forget?: boolean) => Promise<void>;
45
+ removeActiveNs: (ns: NsFallback) => void;
46
+ loadRecords: (descriptors: CacheDescriptor[]) => Promise<import("../types").TranslationsFlat[]>;
47
+ loadRecord: (descriptor: CacheDescriptor) => Promise<import("../types").TranslationsFlat>;
48
+ addStaticData: (data: import("./State/initState").TolgeeStaticData | undefined) => void;
49
+ getRecord: (descriptor: CacheDescriptor) => import("../types").TranslationsFlat | undefined;
50
+ getAllRecords: () => {
51
+ data: import("../types").TranslationsFlat;
52
+ language: string;
53
+ namespace: string;
54
+ }[];
55
+ isLoaded: (ns?: NsFallback) => boolean;
56
+ isInitialLoading: () => boolean;
57
+ isLoading: (ns?: NsFallback) => boolean;
58
+ isFetching: (ns?: NsFallback) => boolean;
59
+ isRunning: () => boolean;
60
+ run: () => Promise<void | undefined>;
61
+ stop: () => void;
62
+ t: TFnType<import("../types").DefaultParamType, string>;
63
+ highlight: import("../types").HighlightInterface;
64
+ getInitialOptions: () => {
65
+ apiUrl?: string | undefined;
66
+ apiKey?: string | undefined;
67
+ projectId?: string | number | undefined;
68
+ language?: string | undefined;
69
+ defaultLanguage?: string | undefined;
70
+ availableLanguages?: string[] | undefined;
71
+ fallbackLanguage?: import("../types").FallbackLanguageOption;
72
+ ns?: string[] | undefined;
73
+ fallbackNs?: import("../types").FallbackGeneral;
74
+ defaultNs: string;
75
+ staticData?: import("./State/initState").TolgeeStaticData | undefined;
76
+ observerType: "invisible" | "text";
77
+ observerOptions: import("./State/observerOptions").ObserverOptionsInternal;
78
+ onFormatError: import("../types").OnFormatError;
79
+ };
80
+ isDev: () => boolean;
81
+ wrap: (params: import("../types").WrapperWrapProps) => string | undefined;
82
+ unwrap: (text: string) => import("../types").Unwrapped;
83
+ overrideCredentials(credentials: import("../types").DevCredentials): void;
84
+ addPlugin(plugin: import("../types").TolgeePlugin | undefined): void;
85
+ updateOptions(options?: TolgeeOptions | undefined): void;
86
+ }>, plugin: import("../types").TolgeePlugin) => void;
87
+ formatTranslation: ({ formatEnabled, ...props }: {
43
88
  key: string;
44
89
  defaultValue?: string | undefined;
45
- } & import("../types").TranslateOptions<import("../types").DefaultParamType> & {
90
+ params?: import("../types").TranslateParams<import("../types").DefaultParamType> | undefined;
91
+ } & import("../types").TranslateOptions & {
46
92
  translation?: string | undefined;
47
93
  } & {
48
94
  formatEnabled?: boolean | undefined;
49
95
  }) => string;
50
- setObserver: (observer: import("../types").ObserverInterface | undefined) => void;
51
- getObserver: () => {
52
- unwrap: (text: string) => import("../types").Unwrapped;
53
- wrap: import("../types").WrapperWrapFunction;
54
- retranslate: () => void;
55
- stop: () => void;
56
- run: (props: import("../types").ObserverRunProps) => void;
57
- highlight: import("../types").HighlightInterface;
58
- outputNotFormattable: boolean;
59
- } | undefined;
60
- setUi: (ui: import("../types").UiType | undefined) => void;
61
- getUi: () => import("../types").UiConstructor | undefined;
62
- addBackend: (backend: import("../types").BackendInterface | undefined) => void;
63
- setDevBackend: (backend: import("../types").BackendDevInterface | undefined) => void;
64
- getDevBackend: () => import("../types").BackendDevInterface | undefined;
96
+ getDevBackend: () => import("../types").BackendDevMiddleware | undefined;
65
97
  getBackendRecord: import("../types").BackendGetRecord;
66
98
  getBackendDevRecord: import("../types").BackendGetRecord;
67
- setLanguageDetector: (detector: import("../types").LanguageDetectorInterface | undefined) => void;
68
- setLanguageStorage: (storage: import("../types").LanguageStorageInterface | undefined) => void;
99
+ getLanguageDetector: () => import("../types").LanguageDetectorMiddleware | undefined;
100
+ getLanguageStorage: () => import("../types").LanguageStorageMiddleware | undefined;
69
101
  getInitialLanguage: () => string | Promise<string | undefined> | Promise<string | Promise<string | undefined> | undefined> | undefined;
70
102
  setStoredLanguage: (language: string) => void;
71
103
  retranslate: () => void;
72
104
  highlight: import("../types").HighlightInterface;
73
- wrap: (params: import("../types").WrapperWrapProps) => string | undefined;
74
105
  unwrap: (text: string) => import("../types").Unwrapped;
106
+ wrap: (params: import("../types").WrapperWrapProps) => string | undefined;
107
+ hasDevBackend: () => boolean;
75
108
  isRunning: () => boolean;
76
109
  setRunning: (value: boolean) => void;
77
110
  isInitialLoading: () => boolean;
78
111
  setInitialLoading: (value: boolean) => void;
79
112
  getLanguage: () => string | undefined;
80
- getLanguageOrFail: () => string;
81
113
  setLanguage: (language: string) => void;
82
114
  getPendingLanguage: () => string | undefined;
83
115
  setPendingLanguage: (language: string) => void;
84
- getInitialOptions: () => Options;
85
- removeActiveNs: (ns: FallbackNSTranslation) => void;
116
+ getInitialOptions: () => {
117
+ apiUrl?: string | undefined;
118
+ apiKey?: string | undefined;
119
+ projectId?: string | number | undefined;
120
+ language?: string | undefined;
121
+ defaultLanguage?: string | undefined;
122
+ availableLanguages?: string[] | undefined;
123
+ fallbackLanguage?: import("../types").FallbackLanguageOption;
124
+ ns?: string[] | undefined;
125
+ fallbackNs?: import("../types").FallbackGeneral;
126
+ defaultNs: string;
127
+ staticData?: import("./State/initState").TolgeeStaticData | undefined;
128
+ observerType: "invisible" | "text";
129
+ observerOptions: import("./State/observerOptions").ObserverOptionsInternal;
130
+ onFormatError: import("../types").OnFormatError;
131
+ };
132
+ removeActiveNs: (ns: NsFallback) => void;
86
133
  getRequiredNamespaces: () => string[];
87
134
  getFallbackLangs: (lang?: string | undefined) => string[];
88
- getFallbackNamespaces: () => string[];
135
+ getFallbackNs: () => string[];
136
+ getDefaultNs: (ns?: string | undefined) => string;
89
137
  getAvailableLanguages: () => string[] | undefined;
90
138
  withDefaultNs: (descriptor: CacheDescriptor) => import("../types").CacheDescriptorInternal;
139
+ overrideCredentials: (credentials: import("../types").DevCredentials) => void;
140
+ onPendingLanguageChange: import("./Events/EventEmitter").EventEmitterInstance<string>;
141
+ onLanguageChange: import("./Events/EventEmitter").EventEmitterInstance<string>;
142
+ onLoadingChange: import("./Events/EventEmitter").EventEmitterInstance<boolean>;
143
+ onFetchingChange: import("./Events/EventEmitter").EventEmitterInstance<boolean>;
144
+ onInitialLoaded: import("./Events/EventEmitter").EventEmitterInstance<void>;
145
+ onRunningChange: import("./Events/EventEmitter").EventEmitterInstance<boolean>;
146
+ onCacheChange: import("./Events/EventEmitter").EventEmitterInstance<import("../types").CacheDescriptorWithKey>;
147
+ onUpdate: import("./Events/EventEmitterSelective").EventEmitterSelectiveInstance;
148
+ setEmmiterActive: (active: boolean) => void;
149
+ on: import("../types").TolgeeOn<keyof import("../types").EventType>;
91
150
  }>;
92
- export declare type StateServiceType = ReturnType<typeof Controller>;
151
+ export declare type ControllerInstance = ReturnType<typeof Controller>;
93
152
  export {};
@@ -0,0 +1,6 @@
1
+ import { Subscription, Listener } from '../../types';
2
+ export declare const EventEmitter: <T>(isActive: () => boolean) => EventEmitterInstance<T>;
3
+ export declare type EventEmitterInstance<T> = {
4
+ readonly listen: (handler: Listener<T>) => Subscription;
5
+ readonly emit: (data: T) => void;
6
+ };
@@ -0,0 +1,7 @@
1
+ import { Subscription, Listener, SubscriptionSelective } from '../../types';
2
+ export declare const EventEmitterSelective: (isActive: () => boolean, getFallbackNs: () => string[], getDefaultNs: () => string) => EventEmitterSelectiveInstance;
3
+ export declare type EventEmitterSelectiveInstance = {
4
+ readonly listenSome: (handler: Listener<undefined>) => SubscriptionSelective;
5
+ readonly listen: (handler: Listener<undefined>) => Subscription;
6
+ readonly emit: (ns?: string[], delayed?: boolean) => void;
7
+ };
@@ -0,0 +1,14 @@
1
+ import { CacheDescriptorWithKey, TolgeeOn } from '../../types';
2
+ export declare const Events: (getFallbackNs: () => string[], getDefaultNs: () => string) => Readonly<{
3
+ onPendingLanguageChange: import("./EventEmitter").EventEmitterInstance<string>;
4
+ onLanguageChange: import("./EventEmitter").EventEmitterInstance<string>;
5
+ onLoadingChange: import("./EventEmitter").EventEmitterInstance<boolean>;
6
+ onFetchingChange: import("./EventEmitter").EventEmitterInstance<boolean>;
7
+ onInitialLoaded: import("./EventEmitter").EventEmitterInstance<void>;
8
+ onRunningChange: import("./EventEmitter").EventEmitterInstance<boolean>;
9
+ onCacheChange: import("./EventEmitter").EventEmitterInstance<CacheDescriptorWithKey>;
10
+ onUpdate: import("./EventEmitterSelective").EventEmitterSelectiveInstance;
11
+ setEmmiterActive: (active: boolean) => void;
12
+ on: TolgeeOn<keyof import("../../types").EventType>;
13
+ }>;
14
+ export declare type EventsInstance = ReturnType<typeof Events>;
@@ -1,41 +1,28 @@
1
- import { BackendDevInterface, BackendGetRecord, BackendInterface, FormatterInterface, ObserverInterface, TranslatePropsInternal, UiType, FinalFormatterInterface, HighlightInterface, UiConstructor, LanguageDetectorInterface, LanguageStorageInterface, Options, ChangeTranslationInterface, WrapperWrapProps, Unwrapped } from '../../types';
2
- export declare const PluginService: (getLanguage: () => string | undefined, getInitialOptions: () => Options, getAvailableLanguages: () => string[] | undefined, getTranslationNs: (props: TranslatePropsInternal) => string[] | string, getTranslation: (props: TranslatePropsInternal) => string | undefined, changeTranslation: ChangeTranslationInterface) => Readonly<{
3
- setFinalFormatter: (formatter: FinalFormatterInterface | undefined) => void;
4
- addFormatter: (formatter: FormatterInterface | undefined) => void;
5
- formatTranslation: ({ key, translation, defaultValue, noWrap, params, orEmpty, ns, formatEnabled, }: {
1
+ import { BackendDevMiddleware, BackendGetRecord, TranslatePropsInternal, HighlightInterface, LanguageDetectorMiddleware, LanguageStorageMiddleware, ChangeTranslationInterface, WrapperWrapProps, Unwrapped, KeyAndNamespacesInternal, TolgeePlugin, TolgeeInstance, TolgeeOptionsInternal } from '../../types';
2
+ export declare const Plugins: (getLanguage: () => string | undefined, getInitialOptions: () => TolgeeOptionsInternal, getAvailableLanguages: () => string[] | undefined, getTranslationNs: (props: KeyAndNamespacesInternal) => string[], getTranslation: (props: KeyAndNamespacesInternal) => string | undefined, changeTranslation: ChangeTranslationInterface) => Readonly<{
3
+ addPlugin: (tolgeeInstance: TolgeeInstance, plugin: TolgeePlugin) => void;
4
+ formatTranslation: ({ formatEnabled, ...props }: {
6
5
  key: string;
7
6
  defaultValue?: string | undefined;
8
- } & import("../../types").TranslateOptions<import("../../types").DefaultParamType> & {
7
+ params?: import("../../types").TranslateParams<import("../../types").DefaultParamType> | undefined;
8
+ } & import("../../types").TranslateOptions & {
9
9
  translation?: string | undefined;
10
10
  } & {
11
11
  formatEnabled?: boolean | undefined;
12
12
  }) => string;
13
- setObserver: (observer: ObserverInterface | undefined) => void;
14
- getObserver: () => {
15
- unwrap: (text: string) => Unwrapped;
16
- wrap: import("../../types").WrapperWrapFunction;
17
- retranslate: () => void;
18
- stop: () => void;
19
- run: (props: import("../../types").ObserverRunProps) => void;
20
- highlight: HighlightInterface;
21
- outputNotFormattable: boolean;
22
- } | undefined;
23
- setUi: (ui: UiType | undefined) => void;
24
- getUi: () => UiConstructor | undefined;
25
- addBackend: (backend: BackendInterface | undefined) => void;
26
- setDevBackend: (backend: BackendDevInterface | undefined) => void;
27
- getDevBackend: () => BackendDevInterface | undefined;
13
+ getDevBackend: () => BackendDevMiddleware | undefined;
28
14
  getBackendRecord: BackendGetRecord;
29
15
  getBackendDevRecord: BackendGetRecord;
30
- setLanguageDetector: (detector: LanguageDetectorInterface | undefined) => void;
31
- setLanguageStorage: (storage: LanguageStorageInterface | undefined) => void;
16
+ getLanguageDetector: () => LanguageDetectorMiddleware | undefined;
17
+ getLanguageStorage: () => LanguageStorageMiddleware | undefined;
32
18
  getInitialLanguage: () => string | Promise<string | undefined> | Promise<string | Promise<string | undefined> | undefined> | undefined;
33
19
  setStoredLanguage: (language: string) => void;
34
20
  run: () => void;
35
21
  stop: () => void;
36
22
  retranslate: () => void;
37
23
  highlight: HighlightInterface;
38
- wrap: (params: WrapperWrapProps) => string | undefined;
39
24
  unwrap: (text: string) => Unwrapped;
25
+ wrap: (params: WrapperWrapProps) => string | undefined;
26
+ hasDevBackend: () => boolean;
40
27
  }>;
41
- export declare type PluginServiceType = ReturnType<typeof PluginService>;
28
+ export declare type PluginsInstance = ReturnType<typeof Plugins>;
@@ -1,22 +1,40 @@
1
- import { CacheDescriptor, CacheDescriptorInternal, EventEmitterType, FallbackNSTranslation } from '../../types';
2
- import { Options } from './initState';
3
- export declare const State: (onLanguageChange: EventEmitterType<string>, onPendingLanguageChange: EventEmitterType<string>, onRunningChange: EventEmitterType<boolean>) => Readonly<{
4
- init: (options?: Partial<Options>) => void;
1
+ import { CacheDescriptor, CacheDescriptorInternal, DevCredentials, NsFallback, NsType } from '../../types';
2
+ import { EventEmitterInstance } from '../Events/EventEmitter';
3
+ import { TolgeeOptions } from './initState';
4
+ export declare const State: (onLanguageChange: EventEmitterInstance<string>, onPendingLanguageChange: EventEmitterInstance<string>, onRunningChange: EventEmitterInstance<boolean>) => Readonly<{
5
+ init: (options?: Partial<TolgeeOptions>) => void;
5
6
  isRunning: () => boolean;
6
7
  setRunning: (value: boolean) => void;
7
8
  isInitialLoading: () => boolean;
8
9
  setInitialLoading: (value: boolean) => void;
9
10
  getLanguage: () => string | undefined;
10
- getLanguageOrFail: () => string;
11
11
  setLanguage: (language: string) => void;
12
12
  getPendingLanguage: () => string | undefined;
13
13
  setPendingLanguage: (language: string) => void;
14
- getInitialOptions: () => Options;
15
- addActiveNs: (ns: FallbackNSTranslation) => void;
16
- removeActiveNs: (ns: FallbackNSTranslation) => void;
14
+ getInitialOptions: () => {
15
+ apiUrl?: string | undefined;
16
+ apiKey?: string | undefined;
17
+ projectId?: string | number | undefined;
18
+ language?: string | undefined;
19
+ defaultLanguage?: string | undefined;
20
+ availableLanguages?: string[] | undefined;
21
+ fallbackLanguage?: import("../../types").FallbackLanguageOption;
22
+ ns?: string[] | undefined;
23
+ fallbackNs?: import("../../types").FallbackGeneral;
24
+ defaultNs: string;
25
+ staticData?: import("./initState").TolgeeStaticData | undefined;
26
+ observerType: "invisible" | "text";
27
+ observerOptions: import("./observerOptions").ObserverOptionsInternal;
28
+ onFormatError: import("../../types").OnFormatError;
29
+ };
30
+ addActiveNs: (ns: NsFallback) => void;
31
+ removeActiveNs: (ns: NsFallback) => void;
17
32
  getRequiredNamespaces: () => string[];
18
33
  getFallbackLangs: (lang?: string) => string[];
19
- getFallbackNamespaces: () => string[];
34
+ getFallbackNs: () => string[];
35
+ getDefaultNs: (ns?: NsType) => string;
20
36
  getAvailableLanguages: () => string[] | undefined;
21
37
  withDefaultNs: (descriptor: CacheDescriptor) => CacheDescriptorInternal;
38
+ overrideCredentials: (credentials: DevCredentials) => void;
22
39
  }>;
40
+ export declare type StateInstance = ReturnType<typeof State>;
@@ -1,12 +1,26 @@
1
- import { FallbackLanguageOption, FallbackNS, TreeTranslationsData } from '../../types';
2
- export declare type Options = {
1
+ import { FallbackGeneral, FallbackLanguageOption, TreeTranslationsData, OnFormatError } from '../../types';
2
+ import { ObserverOptions, ObserverOptionsInternal } from './observerOptions';
3
+ export declare const DEFAULT_FORMAT_ERROR = "invalid";
4
+ export declare type TolgeeStaticData = {
5
+ [key: string]: TreeTranslationsData | (() => Promise<TreeTranslationsData>);
6
+ };
7
+ export declare type TolgeeOptionsInternal = {
3
8
  /**
4
9
  * Initial language
5
10
  */
6
11
  language?: string;
12
+ /**
13
+ * Tolgee instance url (e.g. https://app.tolgee.io)
14
+ */
7
15
  apiUrl?: string;
16
+ /**
17
+ * Project API key (PAK) or Personal Access Token (PAT)
18
+ */
8
19
  apiKey?: string;
9
- projectId?: number;
20
+ /**
21
+ * Project id is necessary if you are using PAT
22
+ */
23
+ projectId?: number | string;
10
24
  /**
11
25
  * Used when auto detection is not available or is turned off
12
26
  */
@@ -20,10 +34,6 @@ export declare type Options = {
20
34
  * Language which is used when no translation is available for current one
21
35
  */
22
36
  fallbackLanguage?: FallbackLanguageOption;
23
- /**
24
- * Store user language in localStorage (default: true)
25
- */
26
- enableLanguageStore?: boolean;
27
37
  /**
28
38
  * Namespaces which should be always fetched
29
39
  */
@@ -31,25 +41,46 @@ export declare type Options = {
31
41
  /**
32
42
  * Namespaces to be used to find translation when no explicit namespace set.
33
43
  */
34
- fallbackNs?: FallbackNS;
44
+ fallbackNs?: FallbackGeneral;
35
45
  /**
36
46
  * Default namespace when no namespace defined (default: '')
37
47
  */
38
48
  defaultNs: string;
39
49
  /**
40
- * Prefix used for fetching languages (default: 'i18n/')
50
+ * These data go directly to cache or you can specify async
51
+ * function which will be used to get the data. Use `:` to add namespace:
52
+ *
53
+ * ```ts
54
+ * {
55
+ * 'locale': <translations | async function>
56
+ * 'locale:namespace': <translations | async function>
57
+ * }
58
+ * ```
59
+ */
60
+ staticData?: TolgeeStaticData;
61
+ /**
62
+ * Switches between invisible and text observer. (Default: invisible)
63
+ */
64
+ observerType: 'invisible' | 'text';
65
+ /**
66
+ * Observer options object.
67
+ */
68
+ observerOptions: ObserverOptionsInternal;
69
+ /**
70
+ * Define what to display in case of formatting error. (Default: 'invalid')
41
71
  */
42
- filesUrlPrefix: string;
43
- staticData?: {
44
- [key: string]: TreeTranslationsData | (() => Promise<TreeTranslationsData>);
45
- };
72
+ onFormatError: OnFormatError;
73
+ };
74
+ export declare type TolgeeOptions = Partial<Omit<TolgeeOptionsInternal, 'observerOptions'>> & {
75
+ observerOptions?: ObserverOptions;
46
76
  };
47
77
  export declare type State = {
48
- initialOptions: Options;
78
+ initialOptions: TolgeeOptionsInternal;
49
79
  activeNamespaces: Map<string, number>;
50
80
  language: string | undefined;
51
81
  pendingLanguage: string | undefined;
52
82
  isInitialLoading: boolean;
53
83
  isRunning: boolean;
54
84
  };
55
- export declare const initState: (options?: Partial<Options>, previousState?: State) => State;
85
+ export declare const combineOptions: <T extends TolgeeOptions>(...states: (T | undefined)[]) => T;
86
+ export declare const initState: (options?: Partial<TolgeeOptions>, previousState?: State) => State;
@@ -0,0 +1,41 @@
1
+ export declare type ObserverOptionsInternal = {
2
+ /**
3
+ * Attributes that are observed on html elements
4
+ */
5
+ tagAttributes: Record<string, string[]>;
6
+ /**
7
+ * Key(s) which trigger in-context translating (default: ['Alt'])
8
+ */
9
+ highlightKeys: ModifierKey[];
10
+ /**
11
+ * Color used for key highlighting (default: 'rgb(255, 0, 0)')
12
+ */
13
+ highlightColor: string;
14
+ /**
15
+ * Highliter border width (default: 5)
16
+ */
17
+ highlightWidth: number;
18
+ /**
19
+ * Root element which will be observed (default: document.body)
20
+ */
21
+ targetElement?: HTMLElement;
22
+ /**
23
+ * Elements which are not observed (default: ['script', 'style'])
24
+ */
25
+ restrictedElements: string[];
26
+ /**
27
+ * Text observer prefix (default: '%-%tolgee:')
28
+ */
29
+ inputPrefix: string;
30
+ /**
31
+ * Text observer suffix (default: '%-%')
32
+ */
33
+ inputSuffix: string;
34
+ /**
35
+ * Html elements which will pass click listener to their parent (default: ['option', 'optgroup'])
36
+ */
37
+ passToParent: (keyof HTMLElementTagNameMap)[] | ((node: Element) => boolean);
38
+ };
39
+ export declare type ObserverOptions = Partial<ObserverOptionsInternal>;
40
+ export declare type ModifierKey = 'Alt' | 'Control' | 'Shift' | 'Meta';
41
+ export declare const defaultObserverOptions: ObserverOptionsInternal;
@@ -1,5 +1,5 @@
1
- export declare const ValueObserver: <T = any>(initialValue: T, valueGetter: () => T, handler: (value: T) => void) => Readonly<{
2
- init: (value: T) => void;
3
- notify: () => void;
4
- }>;
5
- export declare type ValueObserverInstance<T> = ReturnType<typeof ValueObserver<T>>;
1
+ export declare const ValueObserver: <T = any>(initialValue: T, valueGetter: () => T, handler: (value: T) => void) => ValueObserverInstance<T>;
2
+ export declare type ValueObserverInstance<T> = {
3
+ readonly init: (value: T) => void;
4
+ readonly notify: () => void;
5
+ };
@@ -0,0 +1,7 @@
1
+ export declare const ERROR_PARAM_EMPTY = 0, ERROR_UNEXPECTED_CHAR = 1, ERROR_UNEXPECTED_END = 2;
2
+ export declare type ErrorCode = typeof ERROR_PARAM_EMPTY | typeof ERROR_UNEXPECTED_CHAR | typeof ERROR_UNEXPECTED_END;
3
+ export declare class FormatError extends Error {
4
+ readonly code: ErrorCode;
5
+ readonly index: number;
6
+ constructor(code: ErrorCode, index: number, text: string);
7
+ }
@@ -0,0 +1,2 @@
1
+ import { TolgeePlugin } from '../types';
2
+ export declare const FormatSimple: () => TolgeePlugin;
@@ -0,0 +1 @@
1
+ export declare function formatParser(translation: string): string[][];
@@ -0,0 +1,2 @@
1
+ import { DefaultParamType, TranslateParams } from '../types';
2
+ export declare function formatter(translation: string, params?: TranslateParams<DefaultParamType>): string;