@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.
Files changed (302) hide show
  1. package/README.md +106 -0
  2. package/dist/base/event-emitter.d.ts +91 -0
  3. package/dist/base/event-emitter.d.ts.map +1 -0
  4. package/dist/base/event-emitter.js +330 -0
  5. package/dist/base/event-emitter.js.map +1 -0
  6. package/dist/base/index.d.ts +5 -0
  7. package/dist/base/index.d.ts.map +1 -0
  8. package/dist/base/index.js +5 -0
  9. package/dist/base/index.js.map +1 -0
  10. package/dist/browser/auto-init.d.ts +57 -0
  11. package/dist/browser/auto-init.d.ts.map +1 -0
  12. package/dist/browser/auto-init.js +304 -0
  13. package/dist/browser/auto-init.js.map +1 -0
  14. package/dist/browser/auto-translator.d.ts +98 -0
  15. package/dist/browser/auto-translator.d.ts.map +1 -0
  16. package/dist/browser/auto-translator.js +218 -0
  17. package/dist/browser/auto-translator.js.map +1 -0
  18. package/dist/browser/block-extractor.d.ts +26 -0
  19. package/dist/browser/block-extractor.d.ts.map +1 -0
  20. package/dist/browser/block-extractor.js +143 -0
  21. package/dist/browser/block-extractor.js.map +1 -0
  22. package/dist/browser/dom-observer.d.ts +42 -0
  23. package/dist/browser/dom-observer.d.ts.map +1 -0
  24. package/dist/browser/dom-observer.js +109 -0
  25. package/dist/browser/dom-observer.js.map +1 -0
  26. package/dist/browser/editor/editor-api.d.ts +67 -0
  27. package/dist/browser/editor/editor-api.d.ts.map +1 -0
  28. package/dist/browser/editor/editor-api.js +233 -0
  29. package/dist/browser/editor/editor-api.js.map +1 -0
  30. package/dist/browser/editor/editor-init.d.ts +11 -0
  31. package/dist/browser/editor/editor-init.d.ts.map +1 -0
  32. package/dist/browser/editor/editor-init.js +181 -0
  33. package/dist/browser/editor/editor-init.js.map +1 -0
  34. package/dist/browser/editor/editor-styles.d.ts +6 -0
  35. package/dist/browser/editor/editor-styles.d.ts.map +1 -0
  36. package/dist/browser/editor/editor-styles.js +419 -0
  37. package/dist/browser/editor/editor-styles.js.map +1 -0
  38. package/dist/browser/editor/inspector.d.ts +22 -0
  39. package/dist/browser/editor/inspector.d.ts.map +1 -0
  40. package/dist/browser/editor/inspector.js +125 -0
  41. package/dist/browser/editor/inspector.js.map +1 -0
  42. package/dist/browser/editor/key-resolver.d.ts +19 -0
  43. package/dist/browser/editor/key-resolver.d.ts.map +1 -0
  44. package/dist/browser/editor/key-resolver.js +49 -0
  45. package/dist/browser/editor/key-resolver.js.map +1 -0
  46. package/dist/browser/editor/live-preview.d.ts +10 -0
  47. package/dist/browser/editor/live-preview.d.ts.map +1 -0
  48. package/dist/browser/editor/live-preview.js +57 -0
  49. package/dist/browser/editor/live-preview.js.map +1 -0
  50. package/dist/browser/editor/sidebar.d.ts +50 -0
  51. package/dist/browser/editor/sidebar.d.ts.map +1 -0
  52. package/dist/browser/editor/sidebar.js +353 -0
  53. package/dist/browser/editor/sidebar.js.map +1 -0
  54. package/dist/browser/editor/toolbar.d.ts +29 -0
  55. package/dist/browser/editor/toolbar.d.ts.map +1 -0
  56. package/dist/browser/editor/toolbar.js +131 -0
  57. package/dist/browser/editor/toolbar.js.map +1 -0
  58. package/dist/browser/exclude-filter.d.ts +21 -0
  59. package/dist/browser/exclude-filter.d.ts.map +1 -0
  60. package/dist/browser/exclude-filter.js +51 -0
  61. package/dist/browser/exclude-filter.js.map +1 -0
  62. package/dist/browser/index.d.ts +32 -0
  63. package/dist/browser/index.d.ts.map +1 -0
  64. package/dist/browser/index.js +28 -0
  65. package/dist/browser/index.js.map +1 -0
  66. package/dist/browser/language-switcher.d.ts +70 -0
  67. package/dist/browser/language-switcher.d.ts.map +1 -0
  68. package/dist/browser/language-switcher.js +339 -0
  69. package/dist/browser/language-switcher.js.map +1 -0
  70. package/dist/browser/lionrapid.auto.dev.js +5757 -0
  71. package/dist/browser/lionrapid.auto.dev.js.map +7 -0
  72. package/dist/browser/lionrapid.auto.js +5757 -0
  73. package/dist/browser/lionrapid.auto.js.map +7 -0
  74. package/dist/browser/lionrapid.auto.min.js +80 -0
  75. package/dist/browser/lionrapid.auto.min.js.map +7 -0
  76. package/dist/browser/lionrapid.editor.js +1869 -0
  77. package/dist/browser/lionrapid.editor.js.map +7 -0
  78. package/dist/browser/lionrapid.editor.min.js +415 -0
  79. package/dist/browser/lionrapid.editor.min.js.map +7 -0
  80. package/dist/browser/lionrapid.esm.js +4786 -0
  81. package/dist/browser/lionrapid.esm.js.map +7 -0
  82. package/dist/browser/lionrapid.esm.min.js +3 -0
  83. package/dist/browser/lionrapid.esm.min.js.map +7 -0
  84. package/dist/browser/lionrapid.iife.dev.js +4809 -0
  85. package/dist/browser/lionrapid.iife.dev.js.map +7 -0
  86. package/dist/browser/lionrapid.iife.js +4809 -0
  87. package/dist/browser/lionrapid.iife.js.map +7 -0
  88. package/dist/browser/lionrapid.iife.min.js +3 -0
  89. package/dist/browser/lionrapid.iife.min.js.map +7 -0
  90. package/dist/browser/lionrapid.umd.js +4822 -0
  91. package/dist/browser/lionrapid.umd.js.map +7 -0
  92. package/dist/browser/lionrapid.umd.min.js +18 -0
  93. package/dist/browser/lionrapid.umd.min.js.map +7 -0
  94. package/dist/browser/markup-parser.d.ts +13 -0
  95. package/dist/browser/markup-parser.d.ts.map +1 -0
  96. package/dist/browser/markup-parser.js +56 -0
  97. package/dist/browser/markup-parser.js.map +1 -0
  98. package/dist/browser/md5.d.ts +16 -0
  99. package/dist/browser/md5.d.ts.map +1 -0
  100. package/dist/browser/md5.js +145 -0
  101. package/dist/browser/md5.js.map +1 -0
  102. package/dist/browser/storage/cache-storage-repository.d.ts +44 -0
  103. package/dist/browser/storage/cache-storage-repository.d.ts.map +1 -0
  104. package/dist/browser/storage/cache-storage-repository.js +186 -0
  105. package/dist/browser/storage/cache-storage-repository.js.map +1 -0
  106. package/dist/browser/storage/localstorage-repository.d.ts +51 -0
  107. package/dist/browser/storage/localstorage-repository.d.ts.map +1 -0
  108. package/dist/browser/storage/localstorage-repository.js +270 -0
  109. package/dist/browser/storage/localstorage-repository.js.map +1 -0
  110. package/dist/builder.d.ts +24 -0
  111. package/dist/builder.d.ts.map +1 -0
  112. package/dist/builder.js +169 -0
  113. package/dist/builder.js.map +1 -0
  114. package/dist/cache/CacheManager.d.ts +132 -0
  115. package/dist/cache/CacheManager.d.ts.map +1 -0
  116. package/dist/cache/CacheManager.js +277 -0
  117. package/dist/cache/CacheManager.js.map +1 -0
  118. package/dist/cache/index.d.ts +6 -0
  119. package/dist/cache/index.d.ts.map +1 -0
  120. package/dist/cache/index.js +5 -0
  121. package/dist/cache/index.js.map +1 -0
  122. package/dist/config/index.d.ts +6 -0
  123. package/dist/config/index.d.ts.map +1 -0
  124. package/dist/config/index.js +6 -0
  125. package/dist/config/index.js.map +1 -0
  126. package/dist/config/lionrapid.config.d.ts +12 -0
  127. package/dist/config/lionrapid.config.d.ts.map +1 -0
  128. package/dist/config/lionrapid.config.js +2 -0
  129. package/dist/config/lionrapid.config.js.map +1 -0
  130. package/dist/config/logger.config.d.ts +19 -0
  131. package/dist/config/logger.config.d.ts.map +1 -0
  132. package/dist/config/logger.config.js +9 -0
  133. package/dist/config/logger.config.js.map +1 -0
  134. package/dist/config/repository.config.d.ts +87 -0
  135. package/dist/config/repository.config.d.ts.map +1 -0
  136. package/dist/config/repository.config.js +5 -0
  137. package/dist/config/repository.config.js.map +1 -0
  138. package/dist/content/index.d.ts +20 -0
  139. package/dist/content/index.d.ts.map +1 -0
  140. package/dist/content/index.js +13 -0
  141. package/dist/content/index.js.map +1 -0
  142. package/dist/content/parser/IParser.d.ts +33 -0
  143. package/dist/content/parser/IParser.d.ts.map +1 -0
  144. package/dist/content/parser/IParser.js +6 -0
  145. package/dist/content/parser/IParser.js.map +1 -0
  146. package/dist/content/parser/MarkupParser.d.ts +67 -0
  147. package/dist/content/parser/MarkupParser.d.ts.map +1 -0
  148. package/dist/content/parser/MarkupParser.js +231 -0
  149. package/dist/content/parser/MarkupParser.js.map +1 -0
  150. package/dist/content/serializer/HTMLSerializer.d.ts +61 -0
  151. package/dist/content/serializer/HTMLSerializer.d.ts.map +1 -0
  152. package/dist/content/serializer/HTMLSerializer.js +100 -0
  153. package/dist/content/serializer/HTMLSerializer.js.map +1 -0
  154. package/dist/content/serializer/ISerializer.d.ts +33 -0
  155. package/dist/content/serializer/ISerializer.d.ts.map +1 -0
  156. package/dist/content/serializer/ISerializer.js +6 -0
  157. package/dist/content/serializer/ISerializer.js.map +1 -0
  158. package/dist/content/style-mapper/DefaultStyleMapper.d.ts +59 -0
  159. package/dist/content/style-mapper/DefaultStyleMapper.d.ts.map +1 -0
  160. package/dist/content/style-mapper/DefaultStyleMapper.js +128 -0
  161. package/dist/content/style-mapper/DefaultStyleMapper.js.map +1 -0
  162. package/dist/content/style-mapper/IStyleMapper.d.ts +50 -0
  163. package/dist/content/style-mapper/IStyleMapper.d.ts.map +1 -0
  164. package/dist/content/style-mapper/IStyleMapper.js +6 -0
  165. package/dist/content/style-mapper/IStyleMapper.js.map +1 -0
  166. package/dist/content/types.d.ts +39 -0
  167. package/dist/content/types.d.ts.map +1 -0
  168. package/dist/content/types.js +6 -0
  169. package/dist/content/types.js.map +1 -0
  170. package/dist/content/validator/ContentValidator.d.ts +57 -0
  171. package/dist/content/validator/ContentValidator.d.ts.map +1 -0
  172. package/dist/content/validator/ContentValidator.js +215 -0
  173. package/dist/content/validator/ContentValidator.js.map +1 -0
  174. package/dist/content/validator/IValidator.d.ts +82 -0
  175. package/dist/content/validator/IValidator.d.ts.map +1 -0
  176. package/dist/content/validator/IValidator.js +6 -0
  177. package/dist/content/validator/IValidator.js.map +1 -0
  178. package/dist/errors/translation-errors.d.ts +55 -0
  179. package/dist/errors/translation-errors.d.ts.map +1 -0
  180. package/dist/errors/translation-errors.js +85 -0
  181. package/dist/errors/translation-errors.js.map +1 -0
  182. package/dist/handlers/async-storage-handler.d.ts +77 -0
  183. package/dist/handlers/async-storage-handler.d.ts.map +1 -0
  184. package/dist/handlers/async-storage-handler.js +239 -0
  185. package/dist/handlers/async-storage-handler.js.map +1 -0
  186. package/dist/handlers/handler-chain.d.ts +79 -0
  187. package/dist/handlers/handler-chain.d.ts.map +1 -0
  188. package/dist/handlers/handler-chain.js +366 -0
  189. package/dist/handlers/handler-chain.js.map +1 -0
  190. package/dist/handlers/index.d.ts +7 -0
  191. package/dist/handlers/index.d.ts.map +1 -0
  192. package/dist/handlers/index.js +7 -0
  193. package/dist/handlers/index.js.map +1 -0
  194. package/dist/handlers/network-handler.d.ts +90 -0
  195. package/dist/handlers/network-handler.d.ts.map +1 -0
  196. package/dist/handlers/network-handler.js +283 -0
  197. package/dist/handlers/network-handler.js.map +1 -0
  198. package/dist/handlers/sync-storage-handler.d.ts +88 -0
  199. package/dist/handlers/sync-storage-handler.d.ts.map +1 -0
  200. package/dist/handlers/sync-storage-handler.js +270 -0
  201. package/dist/handlers/sync-storage-handler.js.map +1 -0
  202. package/dist/index.d.ts +37 -0
  203. package/dist/index.d.ts.map +1 -0
  204. package/dist/index.js +30 -0
  205. package/dist/index.js.map +1 -0
  206. package/dist/interfaces/emitter.interface.d.ts +33 -0
  207. package/dist/interfaces/emitter.interface.d.ts.map +1 -0
  208. package/dist/interfaces/emitter.interface.js +2 -0
  209. package/dist/interfaces/emitter.interface.js.map +1 -0
  210. package/dist/interfaces/handler.interface.d.ts +50 -0
  211. package/dist/interfaces/handler.interface.d.ts.map +1 -0
  212. package/dist/interfaces/handler.interface.js +5 -0
  213. package/dist/interfaces/handler.interface.js.map +1 -0
  214. package/dist/interfaces/index.d.ts +8 -0
  215. package/dist/interfaces/index.d.ts.map +1 -0
  216. package/dist/interfaces/index.js +8 -0
  217. package/dist/interfaces/index.js.map +1 -0
  218. package/dist/interfaces/plugin.interface.d.ts +49 -0
  219. package/dist/interfaces/plugin.interface.d.ts.map +1 -0
  220. package/dist/interfaces/plugin.interface.js +6 -0
  221. package/dist/interfaces/plugin.interface.js.map +1 -0
  222. package/dist/interfaces/repository.interface.d.ts +56 -0
  223. package/dist/interfaces/repository.interface.d.ts.map +1 -0
  224. package/dist/interfaces/repository.interface.js +2 -0
  225. package/dist/interfaces/repository.interface.js.map +1 -0
  226. package/dist/lionRapid.d.ts +225 -0
  227. package/dist/lionRapid.d.ts.map +1 -0
  228. package/dist/lionRapid.js +596 -0
  229. package/dist/lionRapid.js.map +1 -0
  230. package/dist/repositories/index.d.ts +3 -0
  231. package/dist/repositories/index.d.ts.map +1 -0
  232. package/dist/repositories/index.js +3 -0
  233. package/dist/repositories/index.js.map +1 -0
  234. package/dist/repositories/memory-repository.d.ts +30 -0
  235. package/dist/repositories/memory-repository.d.ts.map +1 -0
  236. package/dist/repositories/memory-repository.js +100 -0
  237. package/dist/repositories/memory-repository.js.map +1 -0
  238. package/dist/repositories/network-repository.d.ts +138 -0
  239. package/dist/repositories/network-repository.d.ts.map +1 -0
  240. package/dist/repositories/network-repository.js +516 -0
  241. package/dist/repositories/network-repository.js.map +1 -0
  242. package/dist/sync/missing-translation-queue.d.ts +64 -0
  243. package/dist/sync/missing-translation-queue.d.ts.map +1 -0
  244. package/dist/sync/missing-translation-queue.js +184 -0
  245. package/dist/sync/missing-translation-queue.js.map +1 -0
  246. package/dist/types/cache.types.d.ts +62 -0
  247. package/dist/types/cache.types.d.ts.map +1 -0
  248. package/dist/types/cache.types.js +6 -0
  249. package/dist/types/cache.types.js.map +1 -0
  250. package/dist/types/event-payloads.types.d.ts +46 -0
  251. package/dist/types/event-payloads.types.d.ts.map +1 -0
  252. package/dist/types/event-payloads.types.js +6 -0
  253. package/dist/types/event-payloads.types.js.map +1 -0
  254. package/dist/types/generated.types.d.ts +31 -0
  255. package/dist/types/generated.types.d.ts.map +1 -0
  256. package/dist/types/generated.types.js +6 -0
  257. package/dist/types/generated.types.js.map +1 -0
  258. package/dist/types/index.d.ts +7 -0
  259. package/dist/types/index.d.ts.map +1 -0
  260. package/dist/types/index.js +7 -0
  261. package/dist/types/index.js.map +1 -0
  262. package/dist/types/lionRapid.types.d.ts +169 -0
  263. package/dist/types/lionRapid.types.d.ts.map +1 -0
  264. package/dist/types/lionRapid.types.js +8 -0
  265. package/dist/types/lionRapid.types.js.map +1 -0
  266. package/dist/types/parameters.types.d.ts +36 -0
  267. package/dist/types/parameters.types.d.ts.map +1 -0
  268. package/dist/types/parameters.types.js +6 -0
  269. package/dist/types/parameters.types.js.map +1 -0
  270. package/dist/types/translation-data.types.d.ts +54 -0
  271. package/dist/types/translation-data.types.d.ts.map +1 -0
  272. package/dist/types/translation-data.types.js +6 -0
  273. package/dist/types/translation-data.types.js.map +1 -0
  274. package/dist/types/translation.types.d.ts +94 -0
  275. package/dist/types/translation.types.d.ts.map +1 -0
  276. package/dist/types/translation.types.js +5 -0
  277. package/dist/types/translation.types.js.map +1 -0
  278. package/dist/utils/context-utils.d.ts +23 -0
  279. package/dist/utils/context-utils.d.ts.map +1 -0
  280. package/dist/utils/context-utils.js +36 -0
  281. package/dist/utils/context-utils.js.map +1 -0
  282. package/dist/utils/index.d.ts +10 -0
  283. package/dist/utils/index.d.ts.map +1 -0
  284. package/dist/utils/index.js +19 -0
  285. package/dist/utils/index.js.map +1 -0
  286. package/dist/utils/logger.d.ts +229 -0
  287. package/dist/utils/logger.d.ts.map +1 -0
  288. package/dist/utils/logger.js +345 -0
  289. package/dist/utils/logger.js.map +1 -0
  290. package/dist/utils/namespace-utils.d.ts +30 -0
  291. package/dist/utils/namespace-utils.d.ts.map +1 -0
  292. package/dist/utils/namespace-utils.js +56 -0
  293. package/dist/utils/namespace-utils.js.map +1 -0
  294. package/dist/utils/translation-flow.d.ts +18 -0
  295. package/dist/utils/translation-flow.d.ts.map +1 -0
  296. package/dist/utils/translation-flow.js +74 -0
  297. package/dist/utils/translation-flow.js.map +1 -0
  298. package/dist/utils/translation-value-utils.d.ts +57 -0
  299. package/dist/utils/translation-value-utils.d.ts.map +1 -0
  300. package/dist/utils/translation-value-utils.js +194 -0
  301. package/dist/utils/translation-value-utils.js.map +1 -0
  302. package/package.json +76 -0
@@ -0,0 +1,596 @@
1
+ import { logger, resolveNestedKey } from './utils/index.js';
2
+ import { prepareTranslationRequest } from './utils/translation-flow.js';
3
+ import { createNamespaceCacheKey } from './utils/translation-value-utils.js';
4
+ import { MarkupParser } from './content/parser/MarkupParser.js';
5
+ import { HTMLSerializer } from './content/serializer/HTMLSerializer.js';
6
+ // Cache module
7
+ import { CacheManager } from './cache/CacheManager.js';
8
+ /**
9
+ * Regex to detect indexed tags in a string (from server ContentUnit)
10
+ * Matches patterns like <1>, </1>, <2>, </2>, etc.
11
+ */
12
+ const INDEXED_TAG_REGEX = /<\/?[0-9]+>/;
13
+ /**
14
+ * Regex to detect HTML tags in a string
15
+ * Matches patterns like <b>, <a href="...">, <em>, etc.
16
+ */
17
+ const HTML_TAG_REGEX = /<[a-z][a-z0-9]*(?:\s+[^>]*)?\/?>/i;
18
+ export class LionRapidCore {
19
+ handlerChain;
20
+ currentLocale;
21
+ fallbackLocale;
22
+ defaultNamespace;
23
+ pendingTranslations = new Map();
24
+ bus;
25
+ plugins = new Map();
26
+ // 🔥 EMBEDDED: Core integration maps
27
+ formatters = new Map();
28
+ processors = new Map();
29
+ // 📡 EVENT-DRIVEN: Just track for cleanup
30
+ eventPlugins = new Set();
31
+ // 📦 CONTENT: Parser and serializer for ContentUnit processing
32
+ markupParser = new MarkupParser();
33
+ htmlSerializer = new HTMLSerializer();
34
+ // 🔄 CACHE: TanStack Query-inspired cache management
35
+ cache;
36
+ constructor(eventEmitter, handlerChain, defaultLocale = 'en', fallbackLocale = 'en', defaultNamespace) {
37
+ this.bus = eventEmitter;
38
+ this.handlerChain = handlerChain;
39
+ this.currentLocale = defaultLocale;
40
+ this.fallbackLocale = fallbackLocale;
41
+ this.defaultNamespace = defaultNamespace;
42
+ // Initialize cache manager with dependencies
43
+ this.cache = new CacheManager(this.handlerChain, this.bus, () => this.currentLocale, (locale, namespaces) => this.loadNamespaces(locale, namespaces));
44
+ }
45
+ /**
46
+ * ✅ Register plugin (called by builder)
47
+ */
48
+ registerPlugin(plugin) {
49
+ this.plugins.set(plugin.name, plugin);
50
+ // 🔥 EMBEDDED PLUGINS: Extract functionality for core integration
51
+ if (this.isEmbeddedPlugin(plugin)) {
52
+ this.integrateEmbeddedPlugin(plugin);
53
+ }
54
+ // 📡 EVENT-DRIVEN PLUGINS: Just track for cleanup
55
+ if (this.isEventPlugin(plugin)) {
56
+ this.eventPlugins.add(plugin);
57
+ }
58
+ }
59
+ /**
60
+ * 🔥 EMBEDDED: Integrate plugin functionality into core
61
+ */
62
+ integrateEmbeddedPlugin(plugin) {
63
+ // Extract formatters
64
+ if (plugin.getFormatters) {
65
+ const pluginFormatters = plugin.getFormatters();
66
+ Object.entries(pluginFormatters).forEach(([name, formatter]) => {
67
+ this.formatters.set(name, formatter);
68
+ logger.debug(`Embedded formatter: ${name} from ${plugin.name}`);
69
+ });
70
+ }
71
+ // Extract processors
72
+ if (plugin.getProcessors) {
73
+ const pluginProcessors = plugin.getProcessors();
74
+ Object.entries(pluginProcessors).forEach(([name, processor]) => {
75
+ this.processors.set(name, processor);
76
+ logger.debug(`Embedded processor: ${name} from ${plugin.name}`);
77
+ });
78
+ }
79
+ }
80
+ /**
81
+ * 📦 TRANSLATION API - Returns PLAIN TEXT
82
+ *
83
+ * Strips indexed tags and returns safe plain text output.
84
+ * For HTML output with styles, use tHtml() instead.
85
+ *
86
+ * @param key - Translation key
87
+ * @param params - Optional interpolation parameters
88
+ * @param defaultValue - Optional default value
89
+ * @returns Plain text string (safe, no XSS risk)
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * t('welcome') // → "Hello World"
94
+ * t('greeting', { name: 'John' }) // → "Hello John"
95
+ * t('missing', 'Default text') // → "Default text" (if key missing)
96
+ * ```
97
+ */
98
+ t(key, ...args) {
99
+ const [firstArg, secondArg] = args;
100
+ const request = prepareTranslationRequest(key, this.currentLocale, firstArg, secondArg, this.defaultNamespace, this.fallbackLocale);
101
+ // Emit request event
102
+ logger.debug(`Translation requested: ${request.cleanKey}`);
103
+ const translateBus = this.bus.translation(request);
104
+ translateBus.request();
105
+ // Try memory cache (sync)
106
+ const syncResult = this.handlerChain.handleSync(request);
107
+ if (syncResult && syncResult.status === 200) {
108
+ const result = this.processValue(syncResult.value, request);
109
+ logger.debug(`Translation found: ${request.cleanKey} from ${syncResult.source} (${syncResult.duration}ms)`);
110
+ translateBus.success(result);
111
+ return result;
112
+ }
113
+ // Cache miss - trigger background load
114
+ this.triggerBackgroundLoad(request);
115
+ // Return fallback immediately
116
+ const fallbackValue = request.parsedDefaultValue || request.cleanKey;
117
+ const fallbackResult = this.processValue(fallbackValue, request);
118
+ logger.debug(`Translation fallback: ${request.cleanKey}`);
119
+ translateBus.fallback(fallbackResult);
120
+ return fallbackResult;
121
+ }
122
+ /**
123
+ * 📦 HTML TRANSLATION API
124
+ * Returns translation as HTML string with styles applied.
125
+ *
126
+ * Use for innerHTML, dangerouslySetInnerHTML, or server-side rendering.
127
+ * For React components, prefer using <Trans> instead.
128
+ *
129
+ * @param key - Translation key
130
+ * @param params - Optional interpolation parameters
131
+ * @param defaultValue - Optional default value (can contain HTML)
132
+ * @returns HTML string with styles applied
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * // Vanilla JS
137
+ * element.innerHTML = i18n.tHtml('welcome');
138
+ * // → "Hello <b>World</b>"
139
+ *
140
+ * // React (use sparingly)
141
+ * <span dangerouslySetInnerHTML={{ __html: tHtml('welcome') }} />
142
+ * ```
143
+ */
144
+ tHtml(key, ...args) {
145
+ // Pass arguments directly to prepareTranslationRequest
146
+ // which handles the flexible parameter parsing
147
+ const [firstArg, secondArg] = args;
148
+ const request = prepareTranslationRequest(key, this.currentLocale, firstArg, secondArg, this.defaultNamespace, this.fallbackLocale);
149
+ // Emit request event
150
+ logger.debug(`HTML translation requested: ${request.cleanKey}`);
151
+ const translateBus = this.bus.translation(request);
152
+ translateBus.request();
153
+ // Try memory cache (sync) - result now includes styles
154
+ const syncResult = this.handlerChain.handleSync(request);
155
+ if (syncResult && syncResult.status === 200) {
156
+ const result = this.processValueAsHtml(syncResult.value, request, syncResult.styles);
157
+ logger.debug(`HTML translation found: ${request.cleanKey} from ${syncResult.source}`);
158
+ translateBus.success(result);
159
+ return result;
160
+ }
161
+ // Cache miss - trigger background load
162
+ this.triggerBackgroundLoad(request);
163
+ // Return fallback immediately (processed as HTML, no styles)
164
+ const fallbackValue = request.parsedDefaultValue || request.cleanKey;
165
+ const fallbackResult = this.processValueAsHtml(fallbackValue, request);
166
+ logger.debug(`HTML translation fallback: ${request.cleanKey}`);
167
+ translateBus.fallback(fallbackResult);
168
+ return fallbackResult;
169
+ }
170
+ /**
171
+ * 📦 Process value as HTML (for tHtml)
172
+ *
173
+ * Converts indexed tags to HTML using styles from result or namespace cache.
174
+ *
175
+ * @internal
176
+ */
177
+ processValueAsHtml(value, request, resultStyles) {
178
+ // Process ICU first
179
+ const processedText = this.processTranslationValue(value, request);
180
+ // Check for indexed tags (from server ContentUnit)
181
+ if (this.containsIndexedTags(processedText)) {
182
+ // Use styles from result, or fall back to namespace lookup
183
+ const styles = resultStyles || this.getStylesFromNamespace(request);
184
+ const unit = {
185
+ text: processedText,
186
+ styles,
187
+ };
188
+ return this.htmlSerializer.serialize(unit);
189
+ }
190
+ // Check for HTML in defaultValue
191
+ if (this.containsHtml(processedText)) {
192
+ const unit = this.markupParser.parse(processedText);
193
+ return this.htmlSerializer.serialize(unit);
194
+ }
195
+ // Plain text - return as-is
196
+ return processedText;
197
+ }
198
+ /**
199
+ * 📦 Process a value through ContentUnit or ICU pipeline
200
+ *
201
+ * Processing priority:
202
+ * 1. Indexed tags (<1>...</1>) from server ContentUnit → convert to HTML at render time
203
+ * 2. HTML tags (from defaultValue or legacy) → MarkupParser → ContentUnit → HTML
204
+ * 3. Plain text → standard ICU processing
205
+ *
206
+ * @internal
207
+ */
208
+ processValue(value, request) {
209
+ // Priority 1: Check for indexed tags (from server ContentUnit)
210
+ // These need to be converted to HTML using the stored styles
211
+ if (this.containsIndexedTags(value)) {
212
+ return this.processIndexedValue(value, request);
213
+ }
214
+ // Priority 2: Auto-detect HTML and process through ContentUnit if found
215
+ if (this.containsHtml(value)) {
216
+ return this.processHtmlValue(value, request);
217
+ }
218
+ // Priority 3: Standard ICU processing for plain text
219
+ return this.processTranslationValue(value, request);
220
+ }
221
+ /**
222
+ * 📦 Check if a string contains indexed tags
223
+ *
224
+ * Used for auto-detection of server ContentUnit format.
225
+ *
226
+ * @param value - String to check
227
+ * @returns true if indexed tags are detected
228
+ */
229
+ containsIndexedTags(value) {
230
+ return INDEXED_TAG_REGEX.test(value);
231
+ }
232
+ /**
233
+ * 📦 Process indexed value - returns PLAIN TEXT
234
+ *
235
+ * Strips indexed tags (<1>text</1>) → "text"
236
+ * For HTML output, use tHtml() instead.
237
+ *
238
+ * @internal
239
+ */
240
+ processIndexedValue(value, request) {
241
+ // 1. Process ICU first (with indexed tags intact)
242
+ const processedText = this.processTranslationValue(value, request);
243
+ // 2. Strip indexed tags - t() returns plain text
244
+ return processedText.replace(/<\/?[0-9]+>/g, '');
245
+ }
246
+ /**
247
+ * 📦 Get styles for a translation key from namespace cache (fallback)
248
+ *
249
+ * Used when styles are not available in the result (e.g., for fallback values).
250
+ * Looks up the full ContentUnit from the namespace cache to get styles.
251
+ *
252
+ * @internal
253
+ */
254
+ getStylesFromNamespace(request) {
255
+ if (!request.namespace) {
256
+ return {};
257
+ }
258
+ try {
259
+ // Get namespace cache key: @locale:namespace
260
+ const namespaceCacheKey = createNamespaceCacheKey(request.locale, request.namespace);
261
+ // Get namespace data from handler chain
262
+ const namespaceData = this.handlerChain.getNamespaceData(namespaceCacheKey);
263
+ if (!namespaceData) {
264
+ return {};
265
+ }
266
+ // Resolve the content unit for this key (server always returns ContentUnit format)
267
+ const resolved = resolveNestedKey(namespaceData, request.cleanKey);
268
+ if (resolved && typeof resolved === 'object' && 'styles' in resolved) {
269
+ const contentUnit = resolved;
270
+ return contentUnit.styles;
271
+ }
272
+ return {};
273
+ }
274
+ catch (error) {
275
+ logger.debug(`Error getting styles for key ${request.cleanKey}:`, error);
276
+ return {};
277
+ }
278
+ }
279
+ /**
280
+ * 📦 Process HTML value - returns PLAIN TEXT
281
+ *
282
+ * Parses HTML to ContentUnit, processes ICU, strips indexed tags.
283
+ * For HTML output, use tHtml() instead.
284
+ *
285
+ * @internal
286
+ */
287
+ processHtmlValue(value, request) {
288
+ try {
289
+ // 1. Parse HTML to ContentUnit (converts HTML tags to indexed format)
290
+ const unit = this.markupParser.parse(value);
291
+ // 2. Process ICU expressions in the text
292
+ const processedText = this.processTranslationValue(unit.text, request);
293
+ // 3. Strip indexed tags - t() returns plain text
294
+ return processedText.replace(/<\/?[0-9]+>/g, '');
295
+ }
296
+ catch (error) {
297
+ logger.warn(`ContentUnit processing failed for "${value}":`, error);
298
+ // Fallback to standard processing
299
+ return this.processTranslationValue(value, request);
300
+ }
301
+ }
302
+ /**
303
+ * Implementation (handles both overloads)
304
+ */
305
+ processTranslationValue(value, paramsOrRequest, locale, key) {
306
+ // Determine which overload was called
307
+ let params;
308
+ let resolvedLocale;
309
+ let resolvedKey;
310
+ if (paramsOrRequest && 'cleanKey' in paramsOrRequest) {
311
+ // Internal overload: TranslationRequest
312
+ const request = paramsOrRequest;
313
+ params = request.parsedParams;
314
+ resolvedLocale = request.locale;
315
+ resolvedKey = request.cleanKey;
316
+ }
317
+ else {
318
+ // Public overload: simple parameters
319
+ params = paramsOrRequest;
320
+ resolvedLocale = locale || this.currentLocale;
321
+ resolvedKey = key;
322
+ }
323
+ let processedValue = value;
324
+ try {
325
+ // ✅ Step 1: Handle structured translation data (plurals, context variations)
326
+ processedValue = this.applyStructuralFormatters(processedValue, params, resolvedKey);
327
+ // ✅ Step 2: Apply interpolation through embedded formatter plugin
328
+ // ICU messages need processing even without params (for 'other' defaults)
329
+ if (this.formatters.has('interpolate')) {
330
+ const interpolateFormatter = this.formatters.get('interpolate');
331
+ processedValue = interpolateFormatter(processedValue, params, resolvedLocale, resolvedKey);
332
+ }
333
+ // ✅ Step 3: Apply value processors (escaping, sanitization, etc.)
334
+ if (this.processors.size > 0) {
335
+ for (const [name, processor] of this.processors.entries()) {
336
+ try {
337
+ processedValue = processor(processedValue, params, resolvedKey);
338
+ }
339
+ catch (error) {
340
+ logger.warn(`Processor ${name} failed:`, error);
341
+ }
342
+ }
343
+ }
344
+ return processedValue;
345
+ }
346
+ catch (error) {
347
+ logger.warn(`Translation processing failed for "${value}":`, error);
348
+ return value;
349
+ }
350
+ }
351
+ /**
352
+ * 📦 CONTENT UNIT API
353
+ * Returns translation as ContentUnit for JSX rendering (Trans component)
354
+ *
355
+ * This is the preferred method for components that need to render
356
+ * styled content with JSX interpolation.
357
+ *
358
+ * @param key - Translation key
359
+ * @param params - Optional interpolation parameters
360
+ * @param defaultValue - Optional default value (can contain HTML)
361
+ * @returns ContentUnit with indexed tags and styles
362
+ *
363
+ * @example
364
+ * ```typescript
365
+ * const unit = i18n.getContentUnit('terms', {}, 'Read our <b>Terms</b>.');
366
+ * // → { text: "Read our <1>Terms</1>.", styles: {"1": ["bold"]} }
367
+ * ```
368
+ */
369
+ getContentUnit(key, params, defaultValue) {
370
+ // Get translation value (ICU processing done separately per segment)
371
+ const request = prepareTranslationRequest(key, this.currentLocale, params, defaultValue, this.defaultNamespace, this.fallbackLocale);
372
+ // Try memory cache
373
+ const syncResult = this.handlerChain.handleSync(request);
374
+ const rawValue = syncResult && syncResult.status === 200
375
+ ? syncResult.value
376
+ : request.parsedDefaultValue || request.cleanKey;
377
+ // If no translation found, trigger background load
378
+ if (!syncResult || syncResult.status !== 200) {
379
+ this.triggerBackgroundLoad(request);
380
+ }
381
+ // Parse HTML to ContentUnit
382
+ return this.markupParser.parse(rawValue);
383
+ }
384
+ /**
385
+ * 📦 Process ContentUnit text through ICU formatters
386
+ *
387
+ * Used by JSX serializers to process individual text segments.
388
+ *
389
+ * @param text - Text segment (may contain ICU expressions like {name})
390
+ * @param params - Interpolation parameters
391
+ * @returns Processed text with ICU expressions resolved
392
+ */
393
+ processContentText(text, params) {
394
+ return this.processTranslationValue(text, params, this.currentLocale);
395
+ }
396
+ /**
397
+ * 📦 Check if a string contains HTML tags
398
+ *
399
+ * Used for auto-detection of HTML in default values.
400
+ *
401
+ * @param value - String to check
402
+ * @returns true if HTML tags are detected
403
+ */
404
+ containsHtml(value) {
405
+ return HTML_TAG_REGEX.test(value);
406
+ }
407
+ /**
408
+ * ✅ Handle structured formatters (plural, context) - embedded in core
409
+ */
410
+ applyStructuralFormatters(value, params, translationKey) {
411
+ const translationData = value;
412
+ // Type guard for params having a count property
413
+ const hasCount = (p) => typeof p?.count === 'number';
414
+ // Type guard for params having a context property
415
+ const hasContext = (p) => typeof p?.context === 'string';
416
+ // Apply plural formatter if available and applicable
417
+ if (this.formatters.has('plural') && hasCount(params)) {
418
+ const pluralFormatter = this.formatters.get('plural');
419
+ try {
420
+ const pluralResult = pluralFormatter(translationData, params, this.currentLocale, translationKey);
421
+ if (pluralResult !== String(translationData)) {
422
+ return pluralResult;
423
+ }
424
+ }
425
+ catch (error) {
426
+ logger.warn('Plural formatting failed:', error);
427
+ }
428
+ }
429
+ // Apply context formatter if available and applicable
430
+ if (this.formatters.has('context') && hasContext(params)) {
431
+ const contextFormatter = this.formatters.get('context');
432
+ try {
433
+ const contextResult = contextFormatter(translationData, params, this.currentLocale, translationKey);
434
+ if (contextResult !== String(translationData)) {
435
+ return contextResult;
436
+ }
437
+ }
438
+ catch (error) {
439
+ logger.warn('Context formatting failed:', error);
440
+ }
441
+ }
442
+ return String(translationData);
443
+ }
444
+ /**
445
+ * Trigger background load via handler chain
446
+ */
447
+ triggerBackgroundLoad(request) {
448
+ logger.debug(`Background load: ${request.cleanKey}`);
449
+ const cacheKey = request.individualCacheKey;
450
+ if (!this.pendingTranslations.has(cacheKey)) {
451
+ const promise = this.handlerChain
452
+ .handleAsync(request)
453
+ .then(result => {
454
+ if (result && result.value) {
455
+ logger.debug(`Cached: ${request.cleanKey} = "${result.value}"`);
456
+ }
457
+ else {
458
+ logger.debug(`Not found: ${request.cleanKey}`);
459
+ }
460
+ })
461
+ .catch(error => {
462
+ logger.warn(`Background load failed: ${request.cleanKey}`, error);
463
+ });
464
+ this.pendingTranslations.set(cacheKey, promise);
465
+ promise.finally(() => this.pendingTranslations.delete(cacheKey));
466
+ }
467
+ }
468
+ /**
469
+ * Get the current locale
470
+ */
471
+ getCurrentLocale() {
472
+ return this.currentLocale;
473
+ }
474
+ /**
475
+ * Set default namespace (useful for scoped translations)
476
+ */
477
+ setDefaultNamespace(namespace) {
478
+ this.defaultNamespace = namespace;
479
+ }
480
+ /**
481
+ * Get current default namespace
482
+ */
483
+ getDefaultNamespace() {
484
+ return this.defaultNamespace;
485
+ }
486
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
487
+ getEntries() {
488
+ return this.handlerChain.getEntries();
489
+ }
490
+ isCached(key) {
491
+ const request = prepareTranslationRequest(key, this.currentLocale, undefined, undefined, this.defaultNamespace, this.fallbackLocale);
492
+ return this.handlerChain.isCached(request);
493
+ }
494
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
495
+ getHandlerChainInfo() {
496
+ return this.handlerChain.getChainInfo();
497
+ }
498
+ /**
499
+ * ✅ Smart language change with selective cache clearing
500
+ */
501
+ async changeLanguage(newLocale, options) {
502
+ const oldLocale = this.currentLocale;
503
+ if (oldLocale === newLocale) {
504
+ logger.debug(`Language already set to ${newLocale}`);
505
+ return;
506
+ }
507
+ const clear = options?.clear || false;
508
+ const languageBus = this.bus.language(oldLocale, newLocale);
509
+ try {
510
+ logger.info(`Language change: ${oldLocale} → ${newLocale}`);
511
+ logger.debug('Language change options', {
512
+ clear,
513
+ preloadNamespaces: options?.preloadNamespaces,
514
+ });
515
+ languageBus.start();
516
+ this.currentLocale = newLocale;
517
+ if (clear) {
518
+ await this.clearCache();
519
+ this.clearOldLocalePendingTranslations(oldLocale);
520
+ }
521
+ if (options?.preloadNamespaces?.length) {
522
+ await this.loadNamespaces(newLocale, options.preloadNamespaces);
523
+ }
524
+ languageBus.complete();
525
+ logger.info(`Language changed: ${newLocale}`);
526
+ }
527
+ catch (error) {
528
+ logger.error('Language change failed:', error);
529
+ languageBus.error(error);
530
+ throw error;
531
+ }
532
+ }
533
+ async clearCache() {
534
+ this.handlerChain.clearCache();
535
+ logger.debug(`Cache cleared for locale: ${this.currentLocale}`);
536
+ }
537
+ clearOldLocalePendingTranslations(oldLocale) {
538
+ let clearedCount = 0;
539
+ for (const key of this.pendingTranslations.keys()) {
540
+ if (key.includes(`${oldLocale}:`)) {
541
+ this.pendingTranslations.delete(key);
542
+ clearedCount++;
543
+ }
544
+ }
545
+ if (clearedCount > 0) {
546
+ logger.debug(`Cleared ${clearedCount} pending translations for ${oldLocale}`);
547
+ }
548
+ }
549
+ async loadNamespaces(locale, namespaces) {
550
+ logger.debug(`Preloading ${namespaces.length} namespaces for ${locale}`);
551
+ const preloadPromises = namespaces.map(async (namespace) => {
552
+ try {
553
+ await this.handlerChain.loadNamespace?.(locale, namespace);
554
+ logger.debug(`Preloaded: ${locale}:${namespace}`);
555
+ }
556
+ catch (error) {
557
+ logger.warn(`Failed to preload ${locale}:${namespace}:`, error);
558
+ }
559
+ });
560
+ await Promise.allSettled(preloadPromises);
561
+ }
562
+ /**
563
+ * Reload a namespace by clearing cache and fetching fresh data from server
564
+ * Useful after syncing new translations to ensure fresh data
565
+ *
566
+ * @param namespace - The namespace to reload
567
+ * @param locale - Optional locale (defaults to current locale)
568
+ * @deprecated Use cache.invalidate({ namespace, refetch: true }) instead
569
+ */
570
+ async reloadNamespace(namespace, locale) {
571
+ const targetLocale = locale || this.currentLocale;
572
+ logger.debug(`Reloading namespace: ${targetLocale}:${namespace}`);
573
+ // Delegate to cache manager
574
+ await this.cache.invalidate({
575
+ namespace,
576
+ locale: targetLocale,
577
+ refetch: true,
578
+ });
579
+ logger.info(`Namespace reloaded: ${targetLocale}:${namespace}`);
580
+ }
581
+ // Helper methods
582
+ isEmbeddedPlugin(plugin) {
583
+ return plugin.capabilities.some(cap => ['formatters', 'processors', 'pluralization', 'context'].includes(cap));
584
+ }
585
+ isEventPlugin(plugin) {
586
+ return plugin.capabilities.some(cap => [
587
+ 'analytics',
588
+ 'logging',
589
+ 'react',
590
+ 'validation',
591
+ 'dev-tools',
592
+ 'monitoring',
593
+ ].includes(cap));
594
+ }
595
+ }
596
+ //# sourceMappingURL=lionRapid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lionRapid.js","sourceRoot":"","sources":["../src/lionRapid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './network-repository.js';
2
+ export * from './memory-repository.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './network-repository.js';
2
+ export * from './memory-repository.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { MemoryRepositoryConfig } from '../config/repository.config.js';
2
+ import type { IStatsProvider, ISyncRepository } from '../interfaces/repository.interface.js';
3
+ import type { TranslationData } from '../types/translation-data.types.js';
4
+ export declare class MemoryRepository implements ISyncRepository<MemoryRepositoryConfig>, IStatsProvider {
5
+ readonly name = "MemoryRepository";
6
+ readonly type = "memory";
7
+ readonly config: MemoryRepositoryConfig;
8
+ private cache;
9
+ private accessOrder;
10
+ private maxSize;
11
+ constructor(config: MemoryRepositoryConfig);
12
+ get(key: string): string | null;
13
+ set(key: string, value: string): void;
14
+ remove(key: string): void;
15
+ clear(): void;
16
+ /**
17
+ * Clear all entries for a specific namespace
18
+ * Removes both the namespace cache entry and all individual translation keys
19
+ */
20
+ clearNamespace(locale: string, namespace: string): void;
21
+ getNamespace(locale: string, namespace: string): TranslationData | null;
22
+ setNamespace(locale: string, namespace: string, translations: TranslationData): void;
23
+ private evictOldest;
24
+ /**
25
+ * Get all cache entries for debugging
26
+ */
27
+ getEntries(): Record<string, string>;
28
+ getConfig(): MemoryRepositoryConfig;
29
+ }
30
+ //# sourceMappingURL=memory-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-repository.d.ts","sourceRoot":"","sources":["../../src/repositories/memory-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EAChB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAG1E,qBAAa,gBACX,YAAW,eAAe,CAAC,sBAAsB,CAAC,EAAE,cAAc;IAElE,QAAQ,CAAC,IAAI,sBAAsB;IACnC,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAM;IAC7C,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,OAAO,CAAgB;gBAEnB,MAAM,EAAE,sBAAsB;IAK1C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAU/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IASrC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKzB,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAiBvD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAavE,YAAY,CACV,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,eAAe,GAC5B,IAAI;IAKP,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQpC,SAAS,IAAI,sBAAsB;CAGpC"}