@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,345 @@
|
|
|
1
|
+
import { LogLevel } from '../config/logger.config.js';
|
|
2
|
+
// Build-time constants for dead code elimination
|
|
3
|
+
const IS_PRODUCTION = process.env.NODE_ENV === 'production';
|
|
4
|
+
const IS_DEVELOPMENT = process.env.NODE_ENV === 'development';
|
|
5
|
+
const IS_CI = process.env.CI === 'true';
|
|
6
|
+
const LIONRAPID_DEV = process.env.LIONRAPID_DEV === 'true';
|
|
7
|
+
const PERFORMANCE_TRACKING = process.env.LIONRAPID_PERFORMANCE_TRACKING === 'true';
|
|
8
|
+
// Environment-specific configuration
|
|
9
|
+
const LOG_LEVEL_ENV = process.env.LOG_LEVEL || (IS_PRODUCTION ? 'ERROR' : 'DEBUG');
|
|
10
|
+
/**
|
|
11
|
+
* ANSI color codes for terminal output
|
|
12
|
+
*/
|
|
13
|
+
export const Colors = {
|
|
14
|
+
// Reset
|
|
15
|
+
RESET: '\x1b[0m',
|
|
16
|
+
// Foreground colors
|
|
17
|
+
BLACK: '\x1b[30m',
|
|
18
|
+
RED: '\x1b[31m',
|
|
19
|
+
GREEN: '\x1b[32m',
|
|
20
|
+
YELLOW: '\x1b[33m',
|
|
21
|
+
BLUE: '\x1b[34m',
|
|
22
|
+
MAGENTA: '\x1b[35m',
|
|
23
|
+
CYAN: '\x1b[36m',
|
|
24
|
+
WHITE: '\x1b[37m',
|
|
25
|
+
ORANGE: '\x1b[38;5;208m',
|
|
26
|
+
// Bright foreground colors
|
|
27
|
+
BRIGHT_BLACK: '\x1b[90m',
|
|
28
|
+
BRIGHT_RED: '\x1b[91m',
|
|
29
|
+
BRIGHT_GREEN: '\x1b[92m',
|
|
30
|
+
BRIGHT_YELLOW: '\x1b[93m',
|
|
31
|
+
BRIGHT_BLUE: '\x1b[94m',
|
|
32
|
+
BRIGHT_MAGENTA: '\x1b[95m',
|
|
33
|
+
BRIGHT_CYAN: '\x1b[96m',
|
|
34
|
+
BRIGHT_WHITE: '\x1b[97m',
|
|
35
|
+
// Styles
|
|
36
|
+
BOLD: '\x1b[1m',
|
|
37
|
+
DIM: '\x1b[2m',
|
|
38
|
+
UNDERLINE: '\x1b[4m',
|
|
39
|
+
};
|
|
40
|
+
// Development logger class - completely eliminated in production
|
|
41
|
+
class DevelopmentLogger {
|
|
42
|
+
config;
|
|
43
|
+
constructor(config = {}) {
|
|
44
|
+
this.config = {
|
|
45
|
+
level: this.getLogLevelFromEnv(),
|
|
46
|
+
enabled: this.shouldEnableLogging(),
|
|
47
|
+
prefix: `${config.packageEmoji || '📦'} ${config.packageName || 'LionRapid'}`,
|
|
48
|
+
showLineNumbers: LIONRAPID_DEV && !IS_CI,
|
|
49
|
+
useColors: this.shouldUseColors(),
|
|
50
|
+
...config,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
configure(config) {
|
|
54
|
+
this.config = { ...this.config, ...config };
|
|
55
|
+
}
|
|
56
|
+
debug(message, data) {
|
|
57
|
+
if (!this.config.enabled || this.config.level > LogLevel.DEBUG)
|
|
58
|
+
return;
|
|
59
|
+
this.log(LogLevel.DEBUG, message, data);
|
|
60
|
+
}
|
|
61
|
+
info(message, data) {
|
|
62
|
+
if (this.config.level > LogLevel.INFO)
|
|
63
|
+
return;
|
|
64
|
+
this.log(LogLevel.INFO, message, data);
|
|
65
|
+
}
|
|
66
|
+
warn(message, data) {
|
|
67
|
+
this.log(LogLevel.WARN, message, data);
|
|
68
|
+
}
|
|
69
|
+
error(message, data) {
|
|
70
|
+
this.log(LogLevel.ERROR, message, data);
|
|
71
|
+
}
|
|
72
|
+
time(label) {
|
|
73
|
+
if (!PERFORMANCE_TRACKING || IS_PRODUCTION)
|
|
74
|
+
return () => { };
|
|
75
|
+
const start = IS_DEVELOPMENT ? performance.now() : 0;
|
|
76
|
+
return () => {
|
|
77
|
+
if (IS_DEVELOPMENT) {
|
|
78
|
+
const duration = performance.now() - start;
|
|
79
|
+
this.debug(`⏱️ ${label}: ${duration.toFixed(2)}ms`, { duration });
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
log(level, message, data) {
|
|
84
|
+
if (!this.config.enabled || level < this.config.level)
|
|
85
|
+
return;
|
|
86
|
+
const levelName = LogLevel[level];
|
|
87
|
+
const levelEmoji = this.getLevelEmoji(level);
|
|
88
|
+
const callSite = this.config.showLineNumbers ? this.getCallSite() : null;
|
|
89
|
+
const logMessage = this.buildColoredMessage(level, levelEmoji, levelName, message, callSite, data);
|
|
90
|
+
switch (level) {
|
|
91
|
+
case LogLevel.ERROR:
|
|
92
|
+
console.error(logMessage);
|
|
93
|
+
break;
|
|
94
|
+
case LogLevel.WARN:
|
|
95
|
+
console.warn(logMessage);
|
|
96
|
+
break;
|
|
97
|
+
case LogLevel.INFO:
|
|
98
|
+
console.info(logMessage);
|
|
99
|
+
break;
|
|
100
|
+
default:
|
|
101
|
+
console.log(logMessage);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
buildColoredMessage(level, emoji, levelName, message, callSite, data) {
|
|
105
|
+
if (!this.config.useColors) {
|
|
106
|
+
const locationInfo = callSite
|
|
107
|
+
? ` (${callSite.fileName}:${callSite.lineNumber})`
|
|
108
|
+
: '';
|
|
109
|
+
let logMessage = `${this.config.prefix} ${emoji} ${levelName} ${message}${locationInfo}`;
|
|
110
|
+
if (data !== undefined) {
|
|
111
|
+
logMessage += ` ${JSON.stringify(data)}`;
|
|
112
|
+
}
|
|
113
|
+
return logMessage;
|
|
114
|
+
}
|
|
115
|
+
const levelColor = this.getLevelColor(level);
|
|
116
|
+
const reset = Colors.RESET;
|
|
117
|
+
const coloredPrefix = `${Colors.BOLD}${Colors.ORANGE}${this.config.prefix}${reset}`;
|
|
118
|
+
const coloredEmoji = emoji;
|
|
119
|
+
const coloredLevel = `${levelColor}${Colors.BOLD}${levelName}${reset}`;
|
|
120
|
+
const coloredMessage = `${levelColor}${message}${reset}`;
|
|
121
|
+
const locationInfo = callSite
|
|
122
|
+
? `${Colors.DIM}${Colors.BRIGHT_BLACK} (${callSite.fileName}:${callSite.lineNumber})${reset}`
|
|
123
|
+
: '';
|
|
124
|
+
const dataInfo = data !== undefined
|
|
125
|
+
? `${Colors.DIM}${Colors.CYAN} ${JSON.stringify(data)}${reset}`
|
|
126
|
+
: '';
|
|
127
|
+
return `${coloredPrefix} ${coloredEmoji} ${coloredLevel} ${coloredMessage}${locationInfo}${dataInfo}`;
|
|
128
|
+
}
|
|
129
|
+
getLevelColor(level) {
|
|
130
|
+
switch (level) {
|
|
131
|
+
case LogLevel.DEBUG:
|
|
132
|
+
return Colors.BRIGHT_GREEN;
|
|
133
|
+
case LogLevel.INFO:
|
|
134
|
+
return Colors.BRIGHT_CYAN;
|
|
135
|
+
case LogLevel.WARN:
|
|
136
|
+
return Colors.BRIGHT_YELLOW;
|
|
137
|
+
case LogLevel.ERROR:
|
|
138
|
+
return Colors.BRIGHT_RED;
|
|
139
|
+
default:
|
|
140
|
+
return Colors.BRIGHT_BLACK;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
getLevelEmoji(level) {
|
|
144
|
+
switch (level) {
|
|
145
|
+
case LogLevel.DEBUG:
|
|
146
|
+
return '🔍';
|
|
147
|
+
case LogLevel.INFO:
|
|
148
|
+
return 'ℹ️';
|
|
149
|
+
case LogLevel.WARN:
|
|
150
|
+
return '⚠️';
|
|
151
|
+
case LogLevel.ERROR:
|
|
152
|
+
return '❌';
|
|
153
|
+
default:
|
|
154
|
+
return '📝';
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
getCallSite() {
|
|
158
|
+
try {
|
|
159
|
+
const stack = new Error().stack;
|
|
160
|
+
if (!stack)
|
|
161
|
+
return null;
|
|
162
|
+
const lines = stack.split('\n');
|
|
163
|
+
for (let i = 3; i < lines.length; i++) {
|
|
164
|
+
const line = lines[i];
|
|
165
|
+
if (line && !line.includes('logger.ts') && !line.includes('Logger')) {
|
|
166
|
+
return this.parseStackLine(line);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
// Ignore errors
|
|
172
|
+
}
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
parseStackLine(line) {
|
|
176
|
+
let match = line.match(/at\s+(.+?)\s+\((.+):(\d+):(\d+)\)/);
|
|
177
|
+
if (match) {
|
|
178
|
+
return {
|
|
179
|
+
functionName: match[1],
|
|
180
|
+
fileName: this.extractFileName(match[2]),
|
|
181
|
+
lineNumber: parseInt(match[3], 10),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
match = line.match(/at\s+(.+):(\d+):(\d+)/);
|
|
185
|
+
if (match) {
|
|
186
|
+
return {
|
|
187
|
+
fileName: this.extractFileName(match[1]),
|
|
188
|
+
lineNumber: parseInt(match[2], 10),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
extractFileName(filePath) {
|
|
194
|
+
const parts = filePath.split('/');
|
|
195
|
+
return parts[parts.length - 1] || filePath;
|
|
196
|
+
}
|
|
197
|
+
colorize(text, color) {
|
|
198
|
+
if (!this.config.useColors)
|
|
199
|
+
return text;
|
|
200
|
+
return `${Colors[color]}${text}${Colors.RESET}`;
|
|
201
|
+
}
|
|
202
|
+
getColors() {
|
|
203
|
+
return Colors;
|
|
204
|
+
}
|
|
205
|
+
createPackageLogger(packageName, packageEmoji) {
|
|
206
|
+
return new DevelopmentLogger({
|
|
207
|
+
...this.config,
|
|
208
|
+
packageName,
|
|
209
|
+
packageEmoji: packageEmoji || '📦',
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
getLogLevelFromEnv() {
|
|
213
|
+
switch (LOG_LEVEL_ENV.toUpperCase()) {
|
|
214
|
+
case 'DEBUG':
|
|
215
|
+
return LogLevel.DEBUG;
|
|
216
|
+
case 'INFO':
|
|
217
|
+
return LogLevel.INFO;
|
|
218
|
+
case 'WARN':
|
|
219
|
+
return LogLevel.WARN;
|
|
220
|
+
case 'ERROR':
|
|
221
|
+
return LogLevel.ERROR;
|
|
222
|
+
case 'NONE':
|
|
223
|
+
return LogLevel.NONE;
|
|
224
|
+
default:
|
|
225
|
+
return LogLevel.DEBUG;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
shouldEnableLogging() {
|
|
229
|
+
if (LOG_LEVEL_ENV === 'NONE')
|
|
230
|
+
return false;
|
|
231
|
+
return true;
|
|
232
|
+
}
|
|
233
|
+
shouldUseColors() {
|
|
234
|
+
if (IS_CI)
|
|
235
|
+
return false;
|
|
236
|
+
// Check if we're in a browser environment
|
|
237
|
+
if (typeof window !== 'undefined') {
|
|
238
|
+
return true; // Browsers support console colors
|
|
239
|
+
}
|
|
240
|
+
// Node.js environment
|
|
241
|
+
if (typeof process !== 'undefined' &&
|
|
242
|
+
process.stdout &&
|
|
243
|
+
!process.stdout.isTTY) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
return IS_DEVELOPMENT;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// Production no-op functions - these create completely eliminatable calls
|
|
250
|
+
const noop = () => { };
|
|
251
|
+
const noopWithReturn = () => () => { };
|
|
252
|
+
// Export logger with build-time method elimination
|
|
253
|
+
export const logger = IS_PRODUCTION
|
|
254
|
+
? {
|
|
255
|
+
configure: noop,
|
|
256
|
+
debug: noop, // ← This eliminates the call completely
|
|
257
|
+
info: noop, // ← This eliminates the call completely
|
|
258
|
+
warn: (message, data) => {
|
|
259
|
+
console.warn(`🦁 LionRapid Core ⚠️ ${message}`, data || '');
|
|
260
|
+
},
|
|
261
|
+
error: (message, data) => {
|
|
262
|
+
console.error(`🦁 LionRapid Core ❌ ${message}`, data || '');
|
|
263
|
+
},
|
|
264
|
+
time: noopWithReturn,
|
|
265
|
+
colorize: (text) => text,
|
|
266
|
+
getColors: () => Colors,
|
|
267
|
+
createPackageLogger: (packageName, packageEmoji) => ({
|
|
268
|
+
configure: noop,
|
|
269
|
+
debug: noop, // ← Package logger debug also eliminated
|
|
270
|
+
info: noop, // ← Package logger info also eliminated
|
|
271
|
+
warn: (message, data) => {
|
|
272
|
+
const prefix = `${packageEmoji || '📦'} ${packageName}`;
|
|
273
|
+
console.warn(`${prefix} ⚠️ ${message}`, data || '');
|
|
274
|
+
},
|
|
275
|
+
error: (message, data) => {
|
|
276
|
+
const prefix = `${packageEmoji || '📦'} ${packageName}`;
|
|
277
|
+
console.error(`${prefix} ❌ ${message}`, data || '');
|
|
278
|
+
},
|
|
279
|
+
time: noopWithReturn,
|
|
280
|
+
colorize: (text) => text,
|
|
281
|
+
getColors: () => Colors,
|
|
282
|
+
createPackageLogger: noop,
|
|
283
|
+
}),
|
|
284
|
+
}
|
|
285
|
+
: new DevelopmentLogger({
|
|
286
|
+
packageName: 'LionRapid Core',
|
|
287
|
+
packageEmoji: '🦁',
|
|
288
|
+
});
|
|
289
|
+
// Export Logger class for type compatibility
|
|
290
|
+
export const Logger = IS_PRODUCTION
|
|
291
|
+
? function Logger() {
|
|
292
|
+
return logger;
|
|
293
|
+
}
|
|
294
|
+
: DevelopmentLogger;
|
|
295
|
+
// Factory function with build-time elimination
|
|
296
|
+
export const createPackageLogger = (config) => {
|
|
297
|
+
if (IS_PRODUCTION) {
|
|
298
|
+
const prefix = `${config.packageEmoji || '📦'} ${config.packageName || 'LionRapid'}`;
|
|
299
|
+
return {
|
|
300
|
+
configure: noop,
|
|
301
|
+
debug: noop, // ← All debug calls eliminated
|
|
302
|
+
info: noop, // ← All info calls eliminated
|
|
303
|
+
warn: (message, data) => {
|
|
304
|
+
console.warn(`${prefix} ⚠️ ${message}`, data || '');
|
|
305
|
+
},
|
|
306
|
+
error: (message, data) => {
|
|
307
|
+
console.error(`${prefix} ❌ ${message}`, data || '');
|
|
308
|
+
},
|
|
309
|
+
time: noopWithReturn,
|
|
310
|
+
colorize: (text) => text,
|
|
311
|
+
getColors: () => Colors,
|
|
312
|
+
createPackageLogger: noop,
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
return new DevelopmentLogger(config);
|
|
316
|
+
};
|
|
317
|
+
// Performance measurement helper - eliminated in production
|
|
318
|
+
export const measure = (name) => {
|
|
319
|
+
if (IS_PRODUCTION) {
|
|
320
|
+
return {
|
|
321
|
+
start: noop,
|
|
322
|
+
end: noop,
|
|
323
|
+
elapsed: () => 0,
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
let startTime;
|
|
327
|
+
return {
|
|
328
|
+
start: () => {
|
|
329
|
+
if (IS_DEVELOPMENT) {
|
|
330
|
+
startTime = performance.now();
|
|
331
|
+
logger.debug(`⏱️ ${name} - started`);
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
end: () => {
|
|
335
|
+
if (IS_DEVELOPMENT) {
|
|
336
|
+
const duration = performance.now() - startTime;
|
|
337
|
+
logger.debug(`⏱️ ${name} - completed in ${duration.toFixed(2)}ms`);
|
|
338
|
+
return duration;
|
|
339
|
+
}
|
|
340
|
+
return 0;
|
|
341
|
+
},
|
|
342
|
+
elapsed: () => (IS_DEVELOPMENT ? performance.now() - startTime : 0),
|
|
343
|
+
};
|
|
344
|
+
};
|
|
345
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ParsedNamespaceKey } from '../types/translation.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Namespace parsing utilities for translation keys
|
|
4
|
+
* Supports patterns like: 'common:welcome', 'user.profile.name', 'errors:validation.required'
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Parse namespace from translation key
|
|
8
|
+
* Supports: 'namespace:key' pattern
|
|
9
|
+
* Future: Could support other patterns like 'namespace.key' or 'namespace/key'
|
|
10
|
+
*
|
|
11
|
+
* @param key - Translation key (e.g., 'common:welcome' or 'welcome')
|
|
12
|
+
* @returns Parsed namespace information
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseNamespaceKey(key: string): ParsedNamespaceKey;
|
|
15
|
+
/**
|
|
16
|
+
* Create a full namespaced key
|
|
17
|
+
*
|
|
18
|
+
* @param key - Clean translation key
|
|
19
|
+
* @param namespace - Namespace to prepend
|
|
20
|
+
* @returns Namespaced key (e.g., 'common:welcome')
|
|
21
|
+
*/
|
|
22
|
+
export declare function createNamespacedKey(key: string, namespace?: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Validate namespace format
|
|
25
|
+
*
|
|
26
|
+
* @param namespace - Namespace to validate
|
|
27
|
+
* @returns Whether namespace is valid
|
|
28
|
+
*/
|
|
29
|
+
export declare function isValidNamespace(namespace: string): boolean;
|
|
30
|
+
//# sourceMappingURL=namespace-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace-utils.d.ts","sourceRoot":"","sources":["../../src/utils/namespace-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE;;;GAGG;AAGH;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAuBjE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAG3E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAG3D"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Namespace parsing utilities for translation keys
|
|
3
|
+
* Supports patterns like: 'common:welcome', 'user.profile.name', 'errors:validation.required'
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Parse namespace from translation key
|
|
7
|
+
* Supports: 'namespace:key' pattern
|
|
8
|
+
* Future: Could support other patterns like 'namespace.key' or 'namespace/key'
|
|
9
|
+
*
|
|
10
|
+
* @param key - Translation key (e.g., 'common:welcome' or 'welcome')
|
|
11
|
+
* @returns Parsed namespace information
|
|
12
|
+
*/
|
|
13
|
+
export function parseNamespaceKey(key) {
|
|
14
|
+
// Simple namespace pattern: 'namespace:key'
|
|
15
|
+
const colonIndex = key.indexOf(':');
|
|
16
|
+
if (colonIndex > 0 && colonIndex < key.length - 1) {
|
|
17
|
+
// Has explicit namespace
|
|
18
|
+
const namespace = key.substring(0, colonIndex);
|
|
19
|
+
const cleanKey = key.substring(colonIndex + 1);
|
|
20
|
+
return {
|
|
21
|
+
originalKey: key,
|
|
22
|
+
namespace,
|
|
23
|
+
cleanKey,
|
|
24
|
+
hasExplicitNamespace: true
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// No namespace found
|
|
28
|
+
return {
|
|
29
|
+
originalKey: key,
|
|
30
|
+
cleanKey: key,
|
|
31
|
+
hasExplicitNamespace: false
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a full namespaced key
|
|
36
|
+
*
|
|
37
|
+
* @param key - Clean translation key
|
|
38
|
+
* @param namespace - Namespace to prepend
|
|
39
|
+
* @returns Namespaced key (e.g., 'common:welcome')
|
|
40
|
+
*/
|
|
41
|
+
export function createNamespacedKey(key, namespace) {
|
|
42
|
+
if (!namespace)
|
|
43
|
+
return key;
|
|
44
|
+
return `${namespace}:${key}`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validate namespace format
|
|
48
|
+
*
|
|
49
|
+
* @param namespace - Namespace to validate
|
|
50
|
+
* @returns Whether namespace is valid
|
|
51
|
+
*/
|
|
52
|
+
export function isValidNamespace(namespace) {
|
|
53
|
+
// Simple validation: alphanumeric, underscore, hyphen
|
|
54
|
+
return /^[a-zA-Z0-9_-]+$/.test(namespace);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=namespace-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace-utils.js","sourceRoot":"","sources":["../../src/utils/namespace-utils.ts"],"names":[],"mappings":"AACA;;;GAGG;AAGH;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,4CAA4C;IAC5C,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEpC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,yBAAyB;QACzB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAE/C,OAAO;YACL,WAAW,EAAE,GAAG;YAChB,SAAS;YACT,QAAQ;YACR,oBAAoB,EAAE,IAAI;SAC3B,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,OAAO;QACL,WAAW,EAAE,GAAG;QAChB,QAAQ,EAAE,GAAG;QACb,oBAAoB,EAAE,KAAK;KAC5B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,SAAkB;IACjE,IAAI,CAAC,SAAS;QAAE,OAAO,GAAG,CAAC;IAC3B,OAAO,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,sDAAsD;IACtD,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced translation process flow utilities
|
|
3
|
+
* Organizes the step-by-step translation resolution process with i18n features
|
|
4
|
+
*/
|
|
5
|
+
import type { TranslationRequest } from '../types/translation.types.js';
|
|
6
|
+
/**
|
|
7
|
+
* ✅ Enhanced: Parse and prepare translation request with cache keys
|
|
8
|
+
* This is the entry point that organizes all the parsing logic
|
|
9
|
+
*/
|
|
10
|
+
export declare function prepareTranslationRequest(key: string, currentLocale: string, defaultValueOrParams?: string | Record<string, unknown>, paramsOrDefaultValue?: Record<string, unknown> | string, defaultNamespace?: string, fallbackLocale?: string): TranslationRequest;
|
|
11
|
+
/**
|
|
12
|
+
* Parse flexible translation parameters
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseTranslationParams(secondParam?: string | Record<string, unknown>, thirdParam?: Record<string, unknown> | string): {
|
|
15
|
+
defaultValue?: string;
|
|
16
|
+
params?: Record<string, unknown>;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=translation-flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation-flow.d.ts","sourceRoot":"","sources":["../../src/utils/translation-flow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAQxE;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvD,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EACvD,gBAAgB,CAAC,EAAE,MAAM,EACzB,cAAc,CAAC,EAAE,MAAM,GACtB,kBAAkB,CAkDpB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAC5C;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAgC7D"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced translation process flow utilities
|
|
3
|
+
* Organizes the step-by-step translation resolution process with i18n features
|
|
4
|
+
*/
|
|
5
|
+
import { createTranslationContext } from './context-utils.js';
|
|
6
|
+
import { parseNamespaceKey } from './namespace-utils.js';
|
|
7
|
+
import { createIndividualCacheKey, createNamespaceCacheKey, } from './translation-value-utils.js';
|
|
8
|
+
/**
|
|
9
|
+
* ✅ Enhanced: Parse and prepare translation request with cache keys
|
|
10
|
+
* This is the entry point that organizes all the parsing logic
|
|
11
|
+
*/
|
|
12
|
+
export function prepareTranslationRequest(key, currentLocale, defaultValueOrParams, paramsOrDefaultValue, defaultNamespace, fallbackLocale) {
|
|
13
|
+
const startTime = performance.now();
|
|
14
|
+
// Parse flexible parameters
|
|
15
|
+
const { defaultValue, params } = parseTranslationParams(defaultValueOrParams, paramsOrDefaultValue);
|
|
16
|
+
// Parse namespace from key
|
|
17
|
+
const parsedKey = parseNamespaceKey(key);
|
|
18
|
+
// Create translation context
|
|
19
|
+
const context = createTranslationContext(parsedKey, currentLocale, defaultNamespace, fallbackLocale);
|
|
20
|
+
// ✅ Generate cache keys using unified pattern
|
|
21
|
+
const individualCacheKey = createIndividualCacheKey(context.locale, context.namespace, parsedKey.cleanKey);
|
|
22
|
+
const namespaceCacheKey = context.namespace
|
|
23
|
+
? createNamespaceCacheKey(context.locale, context.namespace)
|
|
24
|
+
: undefined;
|
|
25
|
+
// Generate unique ID for the request (could be a hash or UUID)
|
|
26
|
+
const id = `${individualCacheKey}-${startTime}`;
|
|
27
|
+
return {
|
|
28
|
+
id, // Unique request ID
|
|
29
|
+
originalKey: key,
|
|
30
|
+
originalParams: defaultValueOrParams,
|
|
31
|
+
originalDefaultValue: paramsOrDefaultValue,
|
|
32
|
+
cleanKey: parsedKey.cleanKey,
|
|
33
|
+
hasExplicitNamespace: parsedKey.hasExplicitNamespace,
|
|
34
|
+
parsedParams: params,
|
|
35
|
+
parsedDefaultValue: defaultValue,
|
|
36
|
+
locale: currentLocale,
|
|
37
|
+
namespace: context.namespace, // ✅ Use effective namespace (explicit or default)
|
|
38
|
+
fallbackLocale,
|
|
39
|
+
individualCacheKey, // ✅ Ready-to-use cache key
|
|
40
|
+
namespaceCacheKey, // ✅ Ready-to-use namespace key
|
|
41
|
+
startTime,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Parse flexible translation parameters
|
|
46
|
+
*/
|
|
47
|
+
export function parseTranslationParams(secondParam, thirdParam) {
|
|
48
|
+
let defaultValue;
|
|
49
|
+
let params;
|
|
50
|
+
// Runtime validation: Warn if both params are objects (likely misuse)
|
|
51
|
+
if (typeof secondParam === 'object' &&
|
|
52
|
+
typeof thirdParam === 'object' &&
|
|
53
|
+
process.env.NODE_ENV !== 'production') {
|
|
54
|
+
console.warn('[LionRapid] Warning: Both secondParam and thirdParam are objects. ' +
|
|
55
|
+
'Expected pattern: t(key, params, defaultValue) or t(key, defaultValue, params). ' +
|
|
56
|
+
'Second object will be ignored as it cannot be a defaultValue.');
|
|
57
|
+
}
|
|
58
|
+
if (typeof secondParam === 'string') {
|
|
59
|
+
// t(key, defaultValue) or t(key, defaultValue, params)
|
|
60
|
+
defaultValue = secondParam;
|
|
61
|
+
if (typeof thirdParam === 'object') {
|
|
62
|
+
params = thirdParam;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else if (typeof secondParam === 'object') {
|
|
66
|
+
// t(key, params) or t(key, params, defaultValue)
|
|
67
|
+
params = secondParam;
|
|
68
|
+
if (typeof thirdParam === 'string') {
|
|
69
|
+
defaultValue = thirdParam;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return { defaultValue, params };
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=translation-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation-flow.js","sourceRoot":"","sources":["../../src/utils/translation-flow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,GAAW,EACX,aAAqB,EACrB,oBAAuD,EACvD,oBAAuD,EACvD,gBAAyB,EACzB,cAAuB;IAEvB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEpC,4BAA4B;IAC5B,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,sBAAsB,CACrD,oBAAoB,EACpB,oBAAoB,CACrB,CAAC;IAEF,2BAA2B;IAC3B,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAEzC,6BAA6B;IAC7B,MAAM,OAAO,GAAG,wBAAwB,CACtC,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,cAAc,CACf,CAAC;IAEF,8CAA8C;IAC9C,MAAM,kBAAkB,GAAG,wBAAwB,CACjD,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,EACjB,SAAS,CAAC,QAAQ,CACnB,CAAC;IAEF,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS;QACzC,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;QAC5D,CAAC,CAAC,SAAS,CAAC;IAEd,+DAA+D;IAC/D,MAAM,EAAE,GAAG,GAAG,kBAAkB,IAAI,SAAS,EAAE,CAAC;IAEhD,OAAO;QACL,EAAE,EAAE,oBAAoB;QACxB,WAAW,EAAE,GAAG;QAChB,cAAc,EAAE,oBAAoB;QACpC,oBAAoB,EAAE,oBAAoB;QAC1C,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,oBAAoB,EAAE,SAAS,CAAC,oBAAoB;QACpD,YAAY,EAAE,MAAM;QACpB,kBAAkB,EAAE,YAAY;QAChC,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,kDAAkD;QAChF,cAAc;QACd,kBAAkB,EAAE,2BAA2B;QAC/C,iBAAiB,EAAE,+BAA+B;QAClD,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAA8C,EAC9C,UAA6C;IAE7C,IAAI,YAAgC,CAAC;IACrC,IAAI,MAA2C,CAAC;IAEhD,sEAAsE;IACtE,IACE,OAAO,WAAW,KAAK,QAAQ;QAC/B,OAAO,UAAU,KAAK,QAAQ;QAC9B,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EACrC,CAAC;QACD,OAAO,CAAC,IAAI,CACV,oEAAoE;YAClE,kFAAkF;YAClF,+DAA+D,CAClE,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,uDAAuD;QACvD,YAAY,GAAG,WAAW,CAAC;QAC3B,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,GAAG,UAAU,CAAC;QACtB,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC3C,iDAAiD;QACjD,MAAM,GAAG,WAAW,CAAC;QACrB,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,YAAY,GAAG,UAAU,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Translation value processing utilities
|
|
3
|
+
* Handles simple strings, nested objects, pluralization, and context
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* ✅ Resolve nested key path in translation object
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* ✅ Resolve nested key from namespace object
|
|
10
|
+
* Examples:
|
|
11
|
+
* - resolveNestedKey({user: {profile: {name: "John"}}}, "user.profile.name") → "John"
|
|
12
|
+
* - resolveNestedKey({items: [{name: "Apple"}]}, "items[0].name") → "Apple"
|
|
13
|
+
* - resolveNestedKey({welcome: "Hello"}, "welcome") → "Hello"
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveNestedKey(namespace: Record<string, unknown>, keyPath: string): unknown;
|
|
16
|
+
/**
|
|
17
|
+
* ✅ Parse key path into array of keys/indices
|
|
18
|
+
* Examples:
|
|
19
|
+
* - "user.profile.name" → ["user", "profile", "name"]
|
|
20
|
+
* - "items[0].name" → ["items", 0, "name"]
|
|
21
|
+
* - "settings.ui.theme" → ["settings", "ui", "theme"]
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseKeyPath(keyPath: string): (string | number)[];
|
|
24
|
+
/**
|
|
25
|
+
* ✅ Create individual cache key: locale:namespace:key
|
|
26
|
+
*/
|
|
27
|
+
export declare function createIndividualCacheKey(locale: string, namespace: string | undefined, key: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* ✅ Create namespace cache key: @locale:namespace
|
|
30
|
+
*/
|
|
31
|
+
export declare function createNamespaceCacheKey(locale: string, namespace: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* ✅ Check if key is namespace cache entry
|
|
34
|
+
*/
|
|
35
|
+
export declare function isNamespaceCacheKey(key: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* ✅ Parse namespace cache key
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseNamespaceCacheKey(key: string): {
|
|
40
|
+
locale: string;
|
|
41
|
+
namespace: string;
|
|
42
|
+
} | null;
|
|
43
|
+
/**
|
|
44
|
+
* ✅ Parse individual cache key
|
|
45
|
+
*/
|
|
46
|
+
export declare function parseIndividualCacheKey(key: string): {
|
|
47
|
+
locale: string;
|
|
48
|
+
namespace?: string;
|
|
49
|
+
translationKey: string;
|
|
50
|
+
} | null;
|
|
51
|
+
/**
|
|
52
|
+
* ✅ Flatten nested translations for caching individual keys
|
|
53
|
+
* Handles both ICU MessageFormat strings and structured objects
|
|
54
|
+
* Stores full ContentUnit as JSON - includes both text and styles
|
|
55
|
+
*/
|
|
56
|
+
export declare function flattenTranslations(translations: Record<string, unknown>, prefix: string | undefined, locale: string, namespace: string): Record<string, string>;
|
|
57
|
+
//# sourceMappingURL=translation-value-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation-value-utils.d.ts","sourceRoot":"","sources":["../../src/utils/translation-value-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,EAAE,MAAM,GACd,OAAO,CAoDT;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CA8CjE;AAGD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,GAAG,EAAE,MAAM,GACV,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,GACV;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQ9C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,GACV;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiBvE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,MAAM,oBAAK,EACX,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBxB"}
|