@lionrapid/core 0.1.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/README.md +106 -0
- package/dist/base/event-emitter.d.ts +91 -0
- package/dist/base/event-emitter.d.ts.map +1 -0
- package/dist/base/event-emitter.js +330 -0
- package/dist/base/event-emitter.js.map +1 -0
- package/dist/base/index.d.ts +5 -0
- package/dist/base/index.d.ts.map +1 -0
- package/dist/base/index.js +5 -0
- package/dist/base/index.js.map +1 -0
- package/dist/browser/auto-init.d.ts +57 -0
- package/dist/browser/auto-init.d.ts.map +1 -0
- package/dist/browser/auto-init.js +304 -0
- package/dist/browser/auto-init.js.map +1 -0
- package/dist/browser/auto-translator.d.ts +98 -0
- package/dist/browser/auto-translator.d.ts.map +1 -0
- package/dist/browser/auto-translator.js +218 -0
- package/dist/browser/auto-translator.js.map +1 -0
- package/dist/browser/block-extractor.d.ts +26 -0
- package/dist/browser/block-extractor.d.ts.map +1 -0
- package/dist/browser/block-extractor.js +143 -0
- package/dist/browser/block-extractor.js.map +1 -0
- package/dist/browser/dom-observer.d.ts +42 -0
- package/dist/browser/dom-observer.d.ts.map +1 -0
- package/dist/browser/dom-observer.js +109 -0
- package/dist/browser/dom-observer.js.map +1 -0
- package/dist/browser/editor/editor-api.d.ts +67 -0
- package/dist/browser/editor/editor-api.d.ts.map +1 -0
- package/dist/browser/editor/editor-api.js +233 -0
- package/dist/browser/editor/editor-api.js.map +1 -0
- package/dist/browser/editor/editor-init.d.ts +11 -0
- package/dist/browser/editor/editor-init.d.ts.map +1 -0
- package/dist/browser/editor/editor-init.js +181 -0
- package/dist/browser/editor/editor-init.js.map +1 -0
- package/dist/browser/editor/editor-styles.d.ts +6 -0
- package/dist/browser/editor/editor-styles.d.ts.map +1 -0
- package/dist/browser/editor/editor-styles.js +419 -0
- package/dist/browser/editor/editor-styles.js.map +1 -0
- package/dist/browser/editor/inspector.d.ts +22 -0
- package/dist/browser/editor/inspector.d.ts.map +1 -0
- package/dist/browser/editor/inspector.js +125 -0
- package/dist/browser/editor/inspector.js.map +1 -0
- package/dist/browser/editor/key-resolver.d.ts +19 -0
- package/dist/browser/editor/key-resolver.d.ts.map +1 -0
- package/dist/browser/editor/key-resolver.js +49 -0
- package/dist/browser/editor/key-resolver.js.map +1 -0
- package/dist/browser/editor/live-preview.d.ts +10 -0
- package/dist/browser/editor/live-preview.d.ts.map +1 -0
- package/dist/browser/editor/live-preview.js +57 -0
- package/dist/browser/editor/live-preview.js.map +1 -0
- package/dist/browser/editor/sidebar.d.ts +50 -0
- package/dist/browser/editor/sidebar.d.ts.map +1 -0
- package/dist/browser/editor/sidebar.js +353 -0
- package/dist/browser/editor/sidebar.js.map +1 -0
- package/dist/browser/editor/toolbar.d.ts +29 -0
- package/dist/browser/editor/toolbar.d.ts.map +1 -0
- package/dist/browser/editor/toolbar.js +131 -0
- package/dist/browser/editor/toolbar.js.map +1 -0
- package/dist/browser/exclude-filter.d.ts +21 -0
- package/dist/browser/exclude-filter.d.ts.map +1 -0
- package/dist/browser/exclude-filter.js +51 -0
- package/dist/browser/exclude-filter.js.map +1 -0
- package/dist/browser/index.d.ts +32 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +28 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/language-switcher.d.ts +70 -0
- package/dist/browser/language-switcher.d.ts.map +1 -0
- package/dist/browser/language-switcher.js +339 -0
- package/dist/browser/language-switcher.js.map +1 -0
- package/dist/browser/lionrapid.auto.dev.js +5757 -0
- package/dist/browser/lionrapid.auto.dev.js.map +7 -0
- package/dist/browser/lionrapid.auto.js +5757 -0
- package/dist/browser/lionrapid.auto.js.map +7 -0
- package/dist/browser/lionrapid.auto.min.js +80 -0
- package/dist/browser/lionrapid.auto.min.js.map +7 -0
- package/dist/browser/lionrapid.editor.js +1869 -0
- package/dist/browser/lionrapid.editor.js.map +7 -0
- package/dist/browser/lionrapid.editor.min.js +415 -0
- package/dist/browser/lionrapid.editor.min.js.map +7 -0
- package/dist/browser/lionrapid.esm.js +4786 -0
- package/dist/browser/lionrapid.esm.js.map +7 -0
- package/dist/browser/lionrapid.esm.min.js +3 -0
- package/dist/browser/lionrapid.esm.min.js.map +7 -0
- package/dist/browser/lionrapid.iife.dev.js +4809 -0
- package/dist/browser/lionrapid.iife.dev.js.map +7 -0
- package/dist/browser/lionrapid.iife.js +4809 -0
- package/dist/browser/lionrapid.iife.js.map +7 -0
- package/dist/browser/lionrapid.iife.min.js +3 -0
- package/dist/browser/lionrapid.iife.min.js.map +7 -0
- package/dist/browser/lionrapid.umd.js +4822 -0
- package/dist/browser/lionrapid.umd.js.map +7 -0
- package/dist/browser/lionrapid.umd.min.js +18 -0
- package/dist/browser/lionrapid.umd.min.js.map +7 -0
- package/dist/browser/markup-parser.d.ts +13 -0
- package/dist/browser/markup-parser.d.ts.map +1 -0
- package/dist/browser/markup-parser.js +56 -0
- package/dist/browser/markup-parser.js.map +1 -0
- package/dist/browser/md5.d.ts +16 -0
- package/dist/browser/md5.d.ts.map +1 -0
- package/dist/browser/md5.js +145 -0
- package/dist/browser/md5.js.map +1 -0
- package/dist/browser/storage/cache-storage-repository.d.ts +44 -0
- package/dist/browser/storage/cache-storage-repository.d.ts.map +1 -0
- package/dist/browser/storage/cache-storage-repository.js +186 -0
- package/dist/browser/storage/cache-storage-repository.js.map +1 -0
- package/dist/browser/storage/localstorage-repository.d.ts +51 -0
- package/dist/browser/storage/localstorage-repository.d.ts.map +1 -0
- package/dist/browser/storage/localstorage-repository.js +270 -0
- package/dist/browser/storage/localstorage-repository.js.map +1 -0
- package/dist/builder.d.ts +24 -0
- package/dist/builder.d.ts.map +1 -0
- package/dist/builder.js +169 -0
- package/dist/builder.js.map +1 -0
- package/dist/cache/CacheManager.d.ts +132 -0
- package/dist/cache/CacheManager.d.ts.map +1 -0
- package/dist/cache/CacheManager.js +277 -0
- package/dist/cache/CacheManager.js.map +1 -0
- package/dist/cache/index.d.ts +6 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +5 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/lionrapid.config.d.ts +12 -0
- package/dist/config/lionrapid.config.d.ts.map +1 -0
- package/dist/config/lionrapid.config.js +2 -0
- package/dist/config/lionrapid.config.js.map +1 -0
- package/dist/config/logger.config.d.ts +19 -0
- package/dist/config/logger.config.d.ts.map +1 -0
- package/dist/config/logger.config.js +9 -0
- package/dist/config/logger.config.js.map +1 -0
- package/dist/config/repository.config.d.ts +87 -0
- package/dist/config/repository.config.d.ts.map +1 -0
- package/dist/config/repository.config.js +5 -0
- package/dist/config/repository.config.js.map +1 -0
- package/dist/content/index.d.ts +20 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +13 -0
- package/dist/content/index.js.map +1 -0
- package/dist/content/parser/IParser.d.ts +33 -0
- package/dist/content/parser/IParser.d.ts.map +1 -0
- package/dist/content/parser/IParser.js +6 -0
- package/dist/content/parser/IParser.js.map +1 -0
- package/dist/content/parser/MarkupParser.d.ts +67 -0
- package/dist/content/parser/MarkupParser.d.ts.map +1 -0
- package/dist/content/parser/MarkupParser.js +231 -0
- package/dist/content/parser/MarkupParser.js.map +1 -0
- package/dist/content/serializer/HTMLSerializer.d.ts +61 -0
- package/dist/content/serializer/HTMLSerializer.d.ts.map +1 -0
- package/dist/content/serializer/HTMLSerializer.js +100 -0
- package/dist/content/serializer/HTMLSerializer.js.map +1 -0
- package/dist/content/serializer/ISerializer.d.ts +33 -0
- package/dist/content/serializer/ISerializer.d.ts.map +1 -0
- package/dist/content/serializer/ISerializer.js +6 -0
- package/dist/content/serializer/ISerializer.js.map +1 -0
- package/dist/content/style-mapper/DefaultStyleMapper.d.ts +59 -0
- package/dist/content/style-mapper/DefaultStyleMapper.d.ts.map +1 -0
- package/dist/content/style-mapper/DefaultStyleMapper.js +128 -0
- package/dist/content/style-mapper/DefaultStyleMapper.js.map +1 -0
- package/dist/content/style-mapper/IStyleMapper.d.ts +50 -0
- package/dist/content/style-mapper/IStyleMapper.d.ts.map +1 -0
- package/dist/content/style-mapper/IStyleMapper.js +6 -0
- package/dist/content/style-mapper/IStyleMapper.js.map +1 -0
- package/dist/content/types.d.ts +39 -0
- package/dist/content/types.d.ts.map +1 -0
- package/dist/content/types.js +6 -0
- package/dist/content/types.js.map +1 -0
- package/dist/content/validator/ContentValidator.d.ts +57 -0
- package/dist/content/validator/ContentValidator.d.ts.map +1 -0
- package/dist/content/validator/ContentValidator.js +215 -0
- package/dist/content/validator/ContentValidator.js.map +1 -0
- package/dist/content/validator/IValidator.d.ts +82 -0
- package/dist/content/validator/IValidator.d.ts.map +1 -0
- package/dist/content/validator/IValidator.js +6 -0
- package/dist/content/validator/IValidator.js.map +1 -0
- package/dist/errors/translation-errors.d.ts +55 -0
- package/dist/errors/translation-errors.d.ts.map +1 -0
- package/dist/errors/translation-errors.js +85 -0
- package/dist/errors/translation-errors.js.map +1 -0
- package/dist/handlers/async-storage-handler.d.ts +77 -0
- package/dist/handlers/async-storage-handler.d.ts.map +1 -0
- package/dist/handlers/async-storage-handler.js +239 -0
- package/dist/handlers/async-storage-handler.js.map +1 -0
- package/dist/handlers/handler-chain.d.ts +79 -0
- package/dist/handlers/handler-chain.d.ts.map +1 -0
- package/dist/handlers/handler-chain.js +366 -0
- package/dist/handlers/handler-chain.js.map +1 -0
- package/dist/handlers/index.d.ts +7 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +7 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/network-handler.d.ts +90 -0
- package/dist/handlers/network-handler.d.ts.map +1 -0
- package/dist/handlers/network-handler.js +283 -0
- package/dist/handlers/network-handler.js.map +1 -0
- package/dist/handlers/sync-storage-handler.d.ts +88 -0
- package/dist/handlers/sync-storage-handler.d.ts.map +1 -0
- package/dist/handlers/sync-storage-handler.js +270 -0
- package/dist/handlers/sync-storage-handler.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/emitter.interface.d.ts +33 -0
- package/dist/interfaces/emitter.interface.d.ts.map +1 -0
- package/dist/interfaces/emitter.interface.js +2 -0
- package/dist/interfaces/emitter.interface.js.map +1 -0
- package/dist/interfaces/handler.interface.d.ts +50 -0
- package/dist/interfaces/handler.interface.d.ts.map +1 -0
- package/dist/interfaces/handler.interface.js +5 -0
- package/dist/interfaces/handler.interface.js.map +1 -0
- package/dist/interfaces/index.d.ts +8 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +8 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/plugin.interface.d.ts +49 -0
- package/dist/interfaces/plugin.interface.d.ts.map +1 -0
- package/dist/interfaces/plugin.interface.js +6 -0
- package/dist/interfaces/plugin.interface.js.map +1 -0
- package/dist/interfaces/repository.interface.d.ts +56 -0
- package/dist/interfaces/repository.interface.d.ts.map +1 -0
- package/dist/interfaces/repository.interface.js +2 -0
- package/dist/interfaces/repository.interface.js.map +1 -0
- package/dist/lionRapid.d.ts +225 -0
- package/dist/lionRapid.d.ts.map +1 -0
- package/dist/lionRapid.js +596 -0
- package/dist/lionRapid.js.map +1 -0
- package/dist/repositories/index.d.ts +3 -0
- package/dist/repositories/index.d.ts.map +1 -0
- package/dist/repositories/index.js +3 -0
- package/dist/repositories/index.js.map +1 -0
- package/dist/repositories/memory-repository.d.ts +30 -0
- package/dist/repositories/memory-repository.d.ts.map +1 -0
- package/dist/repositories/memory-repository.js +100 -0
- package/dist/repositories/memory-repository.js.map +1 -0
- package/dist/repositories/network-repository.d.ts +138 -0
- package/dist/repositories/network-repository.d.ts.map +1 -0
- package/dist/repositories/network-repository.js +516 -0
- package/dist/repositories/network-repository.js.map +1 -0
- package/dist/sync/missing-translation-queue.d.ts +64 -0
- package/dist/sync/missing-translation-queue.d.ts.map +1 -0
- package/dist/sync/missing-translation-queue.js +184 -0
- package/dist/sync/missing-translation-queue.js.map +1 -0
- package/dist/types/cache.types.d.ts +62 -0
- package/dist/types/cache.types.d.ts.map +1 -0
- package/dist/types/cache.types.js +6 -0
- package/dist/types/cache.types.js.map +1 -0
- package/dist/types/event-payloads.types.d.ts +46 -0
- package/dist/types/event-payloads.types.d.ts.map +1 -0
- package/dist/types/event-payloads.types.js +6 -0
- package/dist/types/event-payloads.types.js.map +1 -0
- package/dist/types/generated.types.d.ts +31 -0
- package/dist/types/generated.types.d.ts.map +1 -0
- package/dist/types/generated.types.js +6 -0
- package/dist/types/generated.types.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/lionRapid.types.d.ts +169 -0
- package/dist/types/lionRapid.types.d.ts.map +1 -0
- package/dist/types/lionRapid.types.js +8 -0
- package/dist/types/lionRapid.types.js.map +1 -0
- package/dist/types/parameters.types.d.ts +36 -0
- package/dist/types/parameters.types.d.ts.map +1 -0
- package/dist/types/parameters.types.js +6 -0
- package/dist/types/parameters.types.js.map +1 -0
- package/dist/types/translation-data.types.d.ts +54 -0
- package/dist/types/translation-data.types.d.ts.map +1 -0
- package/dist/types/translation-data.types.js +6 -0
- package/dist/types/translation-data.types.js.map +1 -0
- package/dist/types/translation.types.d.ts +94 -0
- package/dist/types/translation.types.d.ts.map +1 -0
- package/dist/types/translation.types.js +5 -0
- package/dist/types/translation.types.js.map +1 -0
- package/dist/utils/context-utils.d.ts +23 -0
- package/dist/utils/context-utils.d.ts.map +1 -0
- package/dist/utils/context-utils.js +36 -0
- package/dist/utils/context-utils.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +19 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +229 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +345 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/namespace-utils.d.ts +30 -0
- package/dist/utils/namespace-utils.d.ts.map +1 -0
- package/dist/utils/namespace-utils.js +56 -0
- package/dist/utils/namespace-utils.js.map +1 -0
- package/dist/utils/translation-flow.d.ts +18 -0
- package/dist/utils/translation-flow.d.ts.map +1 -0
- package/dist/utils/translation-flow.js +74 -0
- package/dist/utils/translation-flow.js.map +1 -0
- package/dist/utils/translation-value-utils.d.ts +57 -0
- package/dist/utils/translation-value-utils.d.ts.map +1 -0
- package/dist/utils/translation-value-utils.js +194 -0
- package/dist/utils/translation-value-utils.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { createNamespaceCacheKey } from '../utils/index.js';
|
|
2
|
+
export class MemoryRepository {
|
|
3
|
+
name = 'MemoryRepository';
|
|
4
|
+
type = 'memory';
|
|
5
|
+
config = {};
|
|
6
|
+
cache = new Map();
|
|
7
|
+
accessOrder = new Map();
|
|
8
|
+
maxSize = 1000;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.config = config;
|
|
11
|
+
this.maxSize = this.config.options?.maxSize || 1000;
|
|
12
|
+
}
|
|
13
|
+
get(key) {
|
|
14
|
+
const value = this.cache.get(key);
|
|
15
|
+
if (value !== undefined) {
|
|
16
|
+
// Update access time for LRU
|
|
17
|
+
this.accessOrder.set(key, Date.now());
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
set(key, value) {
|
|
23
|
+
if (this.cache.size >= this.maxSize && !this.cache.has(key)) {
|
|
24
|
+
this.evictOldest();
|
|
25
|
+
}
|
|
26
|
+
this.cache.set(key, value);
|
|
27
|
+
this.accessOrder.set(key, Date.now());
|
|
28
|
+
}
|
|
29
|
+
remove(key) {
|
|
30
|
+
this.cache.delete(key);
|
|
31
|
+
this.accessOrder.delete(key);
|
|
32
|
+
}
|
|
33
|
+
clear() {
|
|
34
|
+
this.cache.clear();
|
|
35
|
+
this.accessOrder.clear();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Clear all entries for a specific namespace
|
|
39
|
+
* Removes both the namespace cache entry and all individual translation keys
|
|
40
|
+
*/
|
|
41
|
+
clearNamespace(locale, namespace) {
|
|
42
|
+
const namespaceCacheKey = createNamespaceCacheKey(locale, namespace);
|
|
43
|
+
const keyPrefix = `${locale}:${namespace}:`;
|
|
44
|
+
// Remove namespace cache entry
|
|
45
|
+
this.cache.delete(namespaceCacheKey);
|
|
46
|
+
this.accessOrder.delete(namespaceCacheKey);
|
|
47
|
+
// Remove individual translation keys
|
|
48
|
+
for (const key of this.cache.keys()) {
|
|
49
|
+
if (key.startsWith(keyPrefix)) {
|
|
50
|
+
this.cache.delete(key);
|
|
51
|
+
this.accessOrder.delete(key);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
getNamespace(locale, namespace) {
|
|
56
|
+
const namespaceCacheKey = createNamespaceCacheKey(locale, namespace);
|
|
57
|
+
const namespaceData = this.cache.get(namespaceCacheKey);
|
|
58
|
+
if (!namespaceData)
|
|
59
|
+
return null;
|
|
60
|
+
try {
|
|
61
|
+
return JSON.parse(namespaceData);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
this.cache.delete(namespaceCacheKey);
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
setNamespace(locale, namespace, translations) {
|
|
69
|
+
const namespaceCacheKey = createNamespaceCacheKey(locale, namespace);
|
|
70
|
+
this.cache.set(namespaceCacheKey, JSON.stringify(translations));
|
|
71
|
+
}
|
|
72
|
+
evictOldest() {
|
|
73
|
+
let oldestKey = '';
|
|
74
|
+
let oldestTime = Date.now();
|
|
75
|
+
for (const [key, time] of this.accessOrder.entries()) {
|
|
76
|
+
if (time < oldestTime) {
|
|
77
|
+
oldestTime = time;
|
|
78
|
+
oldestKey = key;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (oldestKey) {
|
|
82
|
+
this.cache.delete(oldestKey);
|
|
83
|
+
this.accessOrder.delete(oldestKey);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get all cache entries for debugging
|
|
88
|
+
*/
|
|
89
|
+
getEntries() {
|
|
90
|
+
const entries = {};
|
|
91
|
+
for (const [key, value] of this.cache.entries()) {
|
|
92
|
+
entries[key] = value;
|
|
93
|
+
}
|
|
94
|
+
return entries;
|
|
95
|
+
}
|
|
96
|
+
getConfig() {
|
|
97
|
+
return this.config;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=memory-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-repository.js","sourceRoot":"","sources":["../../src/repositories/memory-repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API repository - Simple HTTP data access layer
|
|
3
|
+
* No business logic - just GET/POST operations
|
|
4
|
+
*
|
|
5
|
+
* Server always returns ContentUnit format: { text, styles }
|
|
6
|
+
*/
|
|
7
|
+
import type { NetworkRepositoryConfig } from '../config/repository.config.js';
|
|
8
|
+
import type { ContentUnit } from '../content/types.js';
|
|
9
|
+
import type { IAsyncRepository } from '../interfaces/repository.interface.js';
|
|
10
|
+
import type { ContentUnitData, TranslationData } from '../types/translation-data.types.js';
|
|
11
|
+
/**
|
|
12
|
+
* API repository implementation
|
|
13
|
+
* Pure data access - no caching, no business logic
|
|
14
|
+
*/
|
|
15
|
+
export declare class NetworkRepository implements IAsyncRepository<NetworkRepositoryConfig> {
|
|
16
|
+
readonly name = "NetworkRepository";
|
|
17
|
+
readonly type = "network";
|
|
18
|
+
readonly config: NetworkRepositoryConfig;
|
|
19
|
+
/** Cached version (opaque string from server) per namespace key "locale:namespace" */
|
|
20
|
+
private namespaceVersions;
|
|
21
|
+
/** localStorage key prefix for persisted versions */
|
|
22
|
+
private static readonly VERSION_PREFIX;
|
|
23
|
+
/**
|
|
24
|
+
* Default endpoint templates with placeholder support
|
|
25
|
+
* Placeholders: :key, :locale, :namespace
|
|
26
|
+
*/
|
|
27
|
+
private readonly DEFAULT_ENDPOINTS;
|
|
28
|
+
constructor(config?: NetworkRepositoryConfig);
|
|
29
|
+
/**
|
|
30
|
+
* Get single translation from API
|
|
31
|
+
* Uses platform-specific integration endpoint
|
|
32
|
+
* @throws {TranslationNotFoundError} When translation doesn't exist (404)
|
|
33
|
+
* @throws {TranslationLockedError} When translation is locked/not ready (423)
|
|
34
|
+
* @throws {ServerError} When server returns 5xx error
|
|
35
|
+
* @throws {NetworkError} When network request fails
|
|
36
|
+
*/
|
|
37
|
+
get(key: string): Promise<string>;
|
|
38
|
+
/**
|
|
39
|
+
* Get single translation as full ContentUnit (with styles)
|
|
40
|
+
* Used by NetworkHandler for individual key lookups that need styles
|
|
41
|
+
* @throws {TranslationNotFoundError} When translation doesn't exist (404)
|
|
42
|
+
* @throws {TranslationLockedError} When translation is locked/not ready (423)
|
|
43
|
+
* @throws {ServerError} When server returns 5xx error
|
|
44
|
+
* @throws {NetworkError} When network request fails
|
|
45
|
+
*/
|
|
46
|
+
getContentUnit(key: string): Promise<ContentUnit>;
|
|
47
|
+
/**
|
|
48
|
+
* Get namespace with all translations
|
|
49
|
+
* @throws {TranslationNotFoundError} When namespace doesn't exist (404)
|
|
50
|
+
* @throws {TranslationLockedError} When namespace is locked/not ready (423)
|
|
51
|
+
* @throws {ServerError} When server returns 5xx error
|
|
52
|
+
* @throws {NetworkError} When network request fails
|
|
53
|
+
*/
|
|
54
|
+
getNamespace(locale: string, namespace: string): Promise<TranslationData | null>;
|
|
55
|
+
/**
|
|
56
|
+
* Save translation to API (if supported)
|
|
57
|
+
*/
|
|
58
|
+
set(key: string, value: string): Promise<void>;
|
|
59
|
+
setNamespace(locale: string, namespace: string, translations: TranslationData): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Batch sync multiple missing translations
|
|
62
|
+
* Uses new batch endpoint for efficiency
|
|
63
|
+
*/
|
|
64
|
+
setBatch(items: Array<{
|
|
65
|
+
key: string;
|
|
66
|
+
value: string;
|
|
67
|
+
}>): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Get namespace with all translations as ContentUnit data
|
|
70
|
+
*
|
|
71
|
+
* @returns ContentUnitData (Record<string, ContentUnit>)
|
|
72
|
+
* @throws {TranslationNotFoundError} When namespace doesn't exist (404)
|
|
73
|
+
* @throws {TranslationLockedError} When namespace is locked/not ready (423)
|
|
74
|
+
* @throws {ServerError} When server returns 5xx error
|
|
75
|
+
* @throws {NetworkError} When network request fails
|
|
76
|
+
*/
|
|
77
|
+
getNamespaceContentUnits(locale: string, namespace: string): Promise<ContentUnitData | null>;
|
|
78
|
+
/**
|
|
79
|
+
* Save ContentUnit to API
|
|
80
|
+
*
|
|
81
|
+
* Sends the ContentUnit format to server for storage.
|
|
82
|
+
* Server should store in ContentUnit format for efficient retrieval.
|
|
83
|
+
*
|
|
84
|
+
* @param key - Translation key
|
|
85
|
+
* @param unit - ContentUnit to save
|
|
86
|
+
*/
|
|
87
|
+
setContentUnit(key: string, unit: ContentUnit): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Batch sync multiple ContentUnits
|
|
90
|
+
*
|
|
91
|
+
* Sends ContentUnit format to server for batch storage.
|
|
92
|
+
*
|
|
93
|
+
* @param items - Array of key-ContentUnit pairs
|
|
94
|
+
*/
|
|
95
|
+
setBatchContentUnits(items: Array<{
|
|
96
|
+
key: string;
|
|
97
|
+
value: ContentUnit;
|
|
98
|
+
}>): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Remove translation from API (if supported)
|
|
101
|
+
*/
|
|
102
|
+
remove(key: string): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Clear all translations (if supported)
|
|
105
|
+
*/
|
|
106
|
+
clear(): Promise<void>;
|
|
107
|
+
getConfig(): NetworkRepositoryConfig;
|
|
108
|
+
/** Read persisted version from localStorage, falling back to in-memory map */
|
|
109
|
+
private getVersion;
|
|
110
|
+
/** Persist version to both in-memory map and localStorage */
|
|
111
|
+
private setVersion;
|
|
112
|
+
/**
|
|
113
|
+
* Handle HTTP error responses by mapping to domain errors
|
|
114
|
+
* @throws {TranslationNotFoundError} When status is 404
|
|
115
|
+
* @throws {TranslationLockedError} When status is 423
|
|
116
|
+
* @throws {ServerError} When status is 5xx
|
|
117
|
+
* @throws {NetworkError} For other client errors
|
|
118
|
+
*/
|
|
119
|
+
private handleHttpError;
|
|
120
|
+
/**
|
|
121
|
+
* Handle caught errors by wrapping non-domain errors
|
|
122
|
+
* @throws {TranslationError} Always throws - propagates domain errors or wraps unexpected ones
|
|
123
|
+
*/
|
|
124
|
+
private handleCaughtError;
|
|
125
|
+
/**
|
|
126
|
+
* Build URL from endpoint template and parameters
|
|
127
|
+
* Supports placeholders: :key, :locale, :namespace
|
|
128
|
+
* @param endpoint - Endpoint key from DEFAULT_ENDPOINTS
|
|
129
|
+
* @param params - Parameters to replace placeholders with
|
|
130
|
+
* @returns Complete URL with baseUrl + endpoint path
|
|
131
|
+
*/
|
|
132
|
+
private buildUrl;
|
|
133
|
+
/**
|
|
134
|
+
* Make HTTP request with timeout and headers
|
|
135
|
+
*/
|
|
136
|
+
private makeRequest;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=network-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-repository.d.ts","sourceRoot":"","sources":["../../src/repositories/network-repository.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAOvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EAChB,MAAM,oCAAoC,CAAC;AAG5C;;;GAGG;AACH,qBAAa,iBACX,YAAW,gBAAgB,CAAC,uBAAuB,CAAC;IAEpD,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAM;IAE9C,sFAAsF;IACtF,OAAO,CAAC,iBAAiB,CAA6B;IAEtD,qDAAqD;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAkB;IAExD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAQvB;gBAEC,MAAM,GAAE,uBAA4B;IAWhD;;;;;;;OAOG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyCvC;;;;;;;OAOG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiDvD;;;;;;OAMG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAkDlC;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB9C,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,eAAe,GAC5B,OAAO,CAAC,IAAI,CAAC;IAuBhB;;;OAGG;IACG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B3E;;;;;;;;OAQG;IACG,wBAAwB,CAC5B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAmDlC;;;;;;;;OAQG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBnE;;;;;;OAMG;IACG,oBAAoB,CACxB,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,CAAC,GAChD,OAAO,CAAC,IAAI,CAAC;IA+BhB;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B,SAAS,IAAI,uBAAuB;IAIpC,8EAA8E;IAC9E,OAAO,CAAC,UAAU;IAalB,6DAA6D;IAC7D,OAAO,CAAC,UAAU;IAOlB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAuBvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAezB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;IA2BhB;;OAEG;YACW,WAAW;CAoC1B"}
|