@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,184 @@
1
+ /**
2
+ * Queue for batching and syncing missing translations to the backend
3
+ * Uses debouncing (500ms default) and batching (50 items default)
4
+ */
5
+ import { logger } from '../utils/logger.js';
6
+ const COOLDOWN_MS = 60_000; // 60s cooldown before re-syncing same key
7
+ export class MissingTranslationQueue {
8
+ queue = new Map();
9
+ debounceTimer = null;
10
+ repository;
11
+ config;
12
+ eventEmitter;
13
+ recentlySynced = new Map();
14
+ constructor(repository, config, eventEmitter) {
15
+ this.repository = repository;
16
+ this.config = config;
17
+ this.eventEmitter = eventEmitter ?? null;
18
+ if (!config.enabled) {
19
+ logger.debug('MissingTranslationQueue is disabled');
20
+ }
21
+ else {
22
+ logger.debug(`MissingTranslationQueue: debounce=${config.debounceMs}ms, batchSize=${config.batchSize}`);
23
+ }
24
+ }
25
+ /**
26
+ * Add a missing translation to the queue
27
+ * Triggers debounce timer or immediate flush if batch size reached
28
+ */
29
+ add(item) {
30
+ if (!this.config.enabled)
31
+ return;
32
+ // Use individual cache key format: locale:namespace:key
33
+ const cacheKey = `${item.locale}:${item.namespace}:${item.key}`;
34
+ // Skip keys synced within cooldown period (prevents re-sync loops)
35
+ const syncedAt = this.recentlySynced.get(cacheKey);
36
+ if (syncedAt && Date.now() - syncedAt < COOLDOWN_MS) {
37
+ logger.debug(`Skipping recently synced key: ${cacheKey}`);
38
+ return;
39
+ }
40
+ // Add to queue (overwrites if already exists)
41
+ this.queue.set(cacheKey, item);
42
+ logger.debug(`Missing translation queued: ${cacheKey} (queue size: ${this.queue.size})`);
43
+ // Clear existing timer
44
+ if (this.debounceTimer) {
45
+ clearTimeout(this.debounceTimer);
46
+ this.debounceTimer = null;
47
+ }
48
+ // Check if batch size limit reached
49
+ if (this.queue.size >= this.config.batchSize) {
50
+ logger.debug(`Batch size reached (${this.config.batchSize}), flushing`);
51
+ this.flush();
52
+ return;
53
+ }
54
+ // Start new debounce timer
55
+ this.debounceTimer = setTimeout(() => {
56
+ this.flush();
57
+ }, this.config.debounceMs);
58
+ }
59
+ /**
60
+ * Flush the queue - send all queued items to the backend
61
+ * Fire-and-forget pattern (async but not awaited)
62
+ */
63
+ flush() {
64
+ if (this.queue.size === 0)
65
+ return;
66
+ // Clean up expired cooldown entries
67
+ const now = Date.now();
68
+ for (const [key, ts] of this.recentlySynced) {
69
+ if (now - ts >= COOLDOWN_MS)
70
+ this.recentlySynced.delete(key);
71
+ }
72
+ // Convert queue to array, preserving styles
73
+ const batch = Array.from(this.queue.entries()).map(([cacheKey, item]) => ({
74
+ key: cacheKey,
75
+ value: item.fallbackValue,
76
+ styles: item.styles,
77
+ }));
78
+ const batchSize = batch.length;
79
+ // Clear queue
80
+ this.queue.clear();
81
+ // Clear timer
82
+ if (this.debounceTimer) {
83
+ clearTimeout(this.debounceTimer);
84
+ this.debounceTimer = null;
85
+ }
86
+ logger.debug(`Flushing ${batchSize} missing translations`);
87
+ // Fire-and-forget sync (no await)
88
+ this.syncBatch(batch).catch(error => {
89
+ logger.warn(`Failed to sync ${batchSize} missing translations:`, error);
90
+ });
91
+ }
92
+ /**
93
+ * Send batch to backend via repository
94
+ * Uses repository's retry logic from makeRequest()
95
+ */
96
+ async syncBatch(batch) {
97
+ try {
98
+ // Use setBatchContentUnits when any item has styles
99
+ const hasStyles = batch.some(item => item.styles && Object.keys(item.styles).length > 0);
100
+ if (hasStyles && 'setBatchContentUnits' in this.repository) {
101
+ const contentUnitBatch = batch.map(item => ({
102
+ key: item.key,
103
+ value: { text: item.value, styles: item.styles ?? {} },
104
+ }));
105
+ await this.repository.setBatchContentUnits(contentUnitBatch);
106
+ logger.debug(`Synced ${batch.length} missing translations (ContentUnit)`);
107
+ }
108
+ else if ('setBatch' in this.repository) {
109
+ // Plain string batch (no styles)
110
+ const plainBatch = batch.map(item => ({ key: item.key, value: item.value }));
111
+ await this.repository.setBatch(plainBatch);
112
+ logger.debug(`Synced ${batch.length} missing translations`);
113
+ }
114
+ else {
115
+ // Fallback: sync individually (parallel)
116
+ logger.warn('Repository does not support setBatch, syncing individually');
117
+ await this.syncIndividually(batch);
118
+ }
119
+ // Record synced keys for cooldown
120
+ const now = Date.now();
121
+ const syncedKeys = [];
122
+ for (const item of batch) {
123
+ this.recentlySynced.set(item.key, now);
124
+ syncedKeys.push(item.key);
125
+ }
126
+ // Emit sync:batch:complete event
127
+ if (this.eventEmitter) {
128
+ this.eventEmitter.emit('sync:batch:complete', {
129
+ payload: { count: batch.length, keys: syncedKeys },
130
+ });
131
+ }
132
+ }
133
+ catch (error) {
134
+ logger.error('Batch sync failed:', error);
135
+ throw error;
136
+ }
137
+ }
138
+ /**
139
+ * Fallback: sync items individually in parallel
140
+ */
141
+ async syncIndividually(batch) {
142
+ const syncPromises = batch.map(async (item) => {
143
+ try {
144
+ await this.repository.set(item.key, item.value);
145
+ logger.debug(`Synced: ${item.key}`);
146
+ }
147
+ catch (error) {
148
+ logger.warn(`Failed to sync ${item.key}:`, error);
149
+ }
150
+ });
151
+ await Promise.allSettled(syncPromises);
152
+ }
153
+ /**
154
+ * Get current queue size (for debugging)
155
+ */
156
+ getQueueSize() {
157
+ return this.queue.size;
158
+ }
159
+ /**
160
+ * Get queue stats (for debugging)
161
+ */
162
+ getStats() {
163
+ return {
164
+ queueSize: this.queue.size,
165
+ enabled: this.config.enabled,
166
+ debounceMs: this.config.debounceMs,
167
+ batchSize: this.config.batchSize,
168
+ };
169
+ }
170
+ /**
171
+ * Cleanup - clear timer and queue
172
+ */
173
+ destroy() {
174
+ if (this.debounceTimer) {
175
+ clearTimeout(this.debounceTimer);
176
+ this.debounceTimer = null;
177
+ }
178
+ // Discard to avoid blocking during shutdown
179
+ this.queue.clear();
180
+ this.recentlySynced.clear();
181
+ logger.debug('MissingTranslationQueue destroyed');
182
+ }
183
+ }
184
+ //# sourceMappingURL=missing-translation-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"missing-translation-queue.js","sourceRoot":"","sources":["../../src/sync/missing-translation-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Cache and statistics type definitions
3
+ * filepath: /home/janrau/tm-integration/packages/core/src/types/cache.types.ts
4
+ */
5
+ import type { TranslationData } from './translation-data.types.js';
6
+ /**
7
+ * Interface for cache statistics
8
+ * Used by cache debugging and monitoring methods
9
+ */
10
+ export interface CacheStats {
11
+ totalEntries: number;
12
+ hitRate: number;
13
+ missRate: number;
14
+ lastAccessed?: Date;
15
+ memoryUsage?: number;
16
+ averageAccessTime?: number;
17
+ oldestEntry?: Date;
18
+ newestEntry?: Date;
19
+ }
20
+ /**
21
+ * Interface for individual cache entries
22
+ * Contains the cached data plus metadata
23
+ */
24
+ export interface CacheEntry {
25
+ value: TranslationData;
26
+ timestamp: number;
27
+ accessCount: number;
28
+ ttl?: number;
29
+ size?: number;
30
+ locale: string;
31
+ namespace: string;
32
+ }
33
+ /**
34
+ * Type for complete cache entries collection
35
+ * Maps cache keys to their entries
36
+ */
37
+ export type CacheEntries = Record<string, CacheEntry>;
38
+ /**
39
+ * Interface for handler chain information
40
+ * Used for debugging and monitoring the handler chain
41
+ */
42
+ export interface HandlerChainInfo {
43
+ handlers: HandlerInfo[];
44
+ totalHandlers: number;
45
+ activeHandlers: number;
46
+ lastExecution?: Date;
47
+ averageExecutionTime?: number;
48
+ }
49
+ /**
50
+ * Interface for individual handler information
51
+ * Contains metadata about a specific handler
52
+ */
53
+ export interface HandlerInfo {
54
+ name: string;
55
+ type: 'sync' | 'async' | 'network';
56
+ enabled: boolean;
57
+ executionCount: number;
58
+ averageExecutionTime?: number;
59
+ lastExecution?: Date;
60
+ errorCount?: number;
61
+ }
62
+ //# sourceMappingURL=cache.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.types.d.ts","sourceRoot":"","sources":["../../src/types/cache.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Cache and statistics type definitions
3
+ * filepath: /home/janrau/tm-integration/packages/core/src/types/cache.types.ts
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=cache.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.types.js","sourceRoot":"","sources":["../../src/types/cache.types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Event payload type definitions
3
+ * filepath: /home/janrau/tm-integration/packages/core/src/types/event-payloads.types.ts
4
+ */
5
+ import type { TranslationData } from './translation-data.types.js';
6
+ /**
7
+ * Base interface for handler event data
8
+ * Contains common fields present in all handler events
9
+ */
10
+ export interface HandlerEventData {
11
+ handlerName: string;
12
+ locale?: string;
13
+ namespace?: string;
14
+ key?: string;
15
+ timestamp: number;
16
+ requestId?: string;
17
+ }
18
+ /**
19
+ * Payload for handler:before events
20
+ * Fired before a handler processes a request
21
+ */
22
+ export interface HandlerBeforePayload extends HandlerEventData {
23
+ data: TranslationData | null;
24
+ operation: 'get' | 'set' | 'preload';
25
+ }
26
+ /**
27
+ * Payload for handler:after events
28
+ * Fired after a handler completes processing
29
+ */
30
+ export interface HandlerAfterPayload extends HandlerEventData {
31
+ result: TranslationData | null;
32
+ success: boolean;
33
+ errorMessage?: string;
34
+ duration?: number;
35
+ operation: 'get' | 'set' | 'preload';
36
+ }
37
+ /**
38
+ * Payload for language change events
39
+ * Used by plugins to track locale transitions
40
+ */
41
+ /**
42
+ * Generic event payload type
43
+ * Can be extended for custom event types
44
+ */
45
+ export type GenericEventPayload = Record<string, unknown>;
46
+ //# sourceMappingURL=event-payloads.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-payloads.types.d.ts","sourceRoot":"","sources":["../../src/types/event-payloads.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;CACtC;AAED;;;GAGG;AAEH;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Event payload type definitions
3
+ * filepath: /home/janrau/tm-integration/packages/core/src/types/event-payloads.types.ts
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=event-payloads.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-payloads.types.js","sourceRoot":"","sources":["../../src/types/event-payloads.types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * LionRapid Type System - Clean Implementation
3
+ * Only includes types that are actually used in the current implementation
4
+ */
5
+ /**
6
+ * Core interface that gets augmented by generated type files
7
+ * When no types are generated, this remains empty and type checking is minimal
8
+ * When types are generated, this interface gets populated via module augmentation
9
+ *
10
+ * Example:
11
+ * declare module '@lionrapid/core' {
12
+ * interface TranslationKeys {
13
+ * 'app.title': Record<string, never>; // Zero-parameter key
14
+ * 'welcome': { name: string }; // Required-parameter key
15
+ * 'items.count': { count: number }; // ICU number type
16
+ * }
17
+ * }
18
+ */
19
+ export interface TranslationKeys {
20
+ }
21
+ /**
22
+ * Union Type Helpers for Strict Type Safety
23
+ * These types split TranslationKeys into two categories for the ts() method
24
+ */
25
+ export type ZeroParamKeys<T = TranslationKeys> = {
26
+ [K in keyof T]: T[K] extends Record<string, never> ? K : never;
27
+ }[keyof T];
28
+ export type RequiredParamKeys<T = TranslationKeys> = {
29
+ [K in keyof T]: T[K] extends Record<string, never> ? never : K;
30
+ }[keyof T];
31
+ //# sourceMappingURL=generated.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated.types.d.ts","sourceRoot":"","sources":["../../src/types/generated.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,eAAe;CAE/B;AAED;;;GAGG;AAGH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,eAAe,IAAI;KAC9C,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK;CAC/D,CAAC,MAAM,CAAC,CAAC,CAAC;AAGX,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,eAAe,IAAI;KAClD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC;CAC/D,CAAC,MAAM,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * LionRapid Type System - Clean Implementation
3
+ * Only includes types that are actually used in the current implementation
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=generated.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated.types.js","sourceRoot":"","sources":["../../src/types/generated.types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * All types exports
3
+ */
4
+ export * from './generated.types.js';
5
+ export * from './lionRapid.types.js';
6
+ export * from './translation.types.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * All types exports
3
+ */
4
+ export * from './generated.types.js';
5
+ export * from './lionRapid.types.js';
6
+ export * from './translation.types.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Use domain:action[:phase].
3
+ Phases: start, success, miss, error, end.
4
+ Always include a traceId and timestamp in payloads so plugins can correlate events.
5
+ Always include context: lng, ns, key when relevant, and handler when the event is handler-specific.
6
+ */
7
+ import type { InvalidateOptions } from '../cache/CacheManager.js';
8
+ import type { TranslationData } from './translation-data.types.js';
9
+ import type { TranslationRequest } from './translation.types.js';
10
+ export interface LionRapidContext {
11
+ requestId: string;
12
+ timestamp: number;
13
+ trace: string[];
14
+ [key: string]: unknown;
15
+ }
16
+ interface CoreEventPayloads {
17
+ 'builder:use': {
18
+ type: 'plugin' | 'sync' | 'async' | 'network';
19
+ };
20
+ 'builder:build:start': {
21
+ locale: string;
22
+ namespace: string;
23
+ };
24
+ 'builder:build:done': {
25
+ repositories: string[];
26
+ plugins: string[];
27
+ };
28
+ 'cache:invalidate': {
29
+ filter: InvalidateOptions;
30
+ keysCleared: number;
31
+ refetch: boolean;
32
+ };
33
+ 'cache:set': {
34
+ key: string;
35
+ value: string;
36
+ styles?: Record<string, string[]>;
37
+ optimistic: boolean;
38
+ };
39
+ 'cache:rollback': {
40
+ key: string;
41
+ reason: string;
42
+ };
43
+ 'translation:request': {
44
+ key: string;
45
+ request?: TranslationRequest;
46
+ };
47
+ 'translation:success': {
48
+ key: string;
49
+ value: string;
50
+ };
51
+ 'translation:fallback': {
52
+ key: string;
53
+ value: string;
54
+ };
55
+ 'translation:missing': {
56
+ key: string;
57
+ fallbackValue: string;
58
+ locale: string;
59
+ namespace: string;
60
+ };
61
+ 'translation:not-found': {
62
+ key: string;
63
+ fallbackValue: string;
64
+ locale: string;
65
+ namespace: string;
66
+ status: 404;
67
+ styles?: Record<string, string[]>;
68
+ };
69
+ 'translation:locked': {
70
+ key: string;
71
+ fallbackValue: string;
72
+ locale: string;
73
+ namespace: string;
74
+ status: 423;
75
+ };
76
+ 'repo:get:start': {
77
+ key: string;
78
+ source: string;
79
+ };
80
+ 'repo:get:success': {
81
+ key: string;
82
+ value: string;
83
+ source: string;
84
+ };
85
+ 'repo:get:miss': {
86
+ key: string;
87
+ source: string;
88
+ };
89
+ 'repo:set:start': {
90
+ key: string;
91
+ value: string;
92
+ source: string;
93
+ };
94
+ 'repo:set:success': {
95
+ key: string;
96
+ value: string;
97
+ source: string;
98
+ };
99
+ 'repo:error': {
100
+ key: string;
101
+ source: string;
102
+ error: Error;
103
+ };
104
+ 'network:request:start': {
105
+ key: string;
106
+ };
107
+ 'network:request:success': {
108
+ key: string;
109
+ value: string;
110
+ method: string;
111
+ };
112
+ 'network:request:error': {
113
+ key: string;
114
+ method: string;
115
+ error: unknown;
116
+ status?: number;
117
+ };
118
+ 'network:retry': {
119
+ key: string;
120
+ attempt: number;
121
+ delayMs: number;
122
+ reason?: string;
123
+ };
124
+ 'language:change:start': {
125
+ oldLocale: string;
126
+ newLocale: string;
127
+ };
128
+ 'language:change:success': {
129
+ oldLocale: string;
130
+ newLocale: string;
131
+ };
132
+ 'language:change:error': {
133
+ oldLocale: string;
134
+ newLocale: string;
135
+ error: Error;
136
+ };
137
+ 'handler:before': {
138
+ handlerName: string;
139
+ data: TranslationData | null;
140
+ };
141
+ 'handler:after': {
142
+ handlerName: string;
143
+ result: TranslationData | null;
144
+ success: boolean;
145
+ };
146
+ 'sync:batch:complete': {
147
+ count: number;
148
+ keys: string[];
149
+ };
150
+ 'system:init': {
151
+ version: string;
152
+ };
153
+ 'system:shutdown': {
154
+ reason?: string;
155
+ };
156
+ }
157
+ export type LionRapidEventPayloads = CoreEventPayloads & Record<string, unknown>;
158
+ export interface LionRapidEventEnvelope<T extends Record<string, unknown> = LionRapidEventPayloads, E extends keyof T = keyof T> {
159
+ context?: LionRapidContext;
160
+ payload: T[E];
161
+ }
162
+ export interface LanguageChangePayload {
163
+ oldLocale: string;
164
+ newLocale: string;
165
+ timestamp: number;
166
+ reason?: 'user' | 'auto' | 'fallback';
167
+ }
168
+ export {};
169
+ //# sourceMappingURL=lionRapid.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lionRapid.types.d.ts","sourceRoot":"","sources":["../../src/types/lionRapid.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Use domain:action[:phase].
3
+ Phases: start, success, miss, error, end.
4
+ Always include a traceId and timestamp in payloads so plugins can correlate events.
5
+ Always include context: lng, ns, key when relevant, and handler when the event is handler-specific.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=lionRapid.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lionRapid.types.js","sourceRoot":"","sources":["../../src/types/lionRapid.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Parameter type definitions for formatters and processors
3
+ * filepath: /home/janrau/tm-integration/packages/core/src/types/parameters.types.ts
4
+ */
5
+ /**
6
+ * Type-safe parameter union for formatter functions
7
+ * Covers all known parameter patterns used by formatters
8
+ */
9
+ export type FormatterParams = {
10
+ count?: number;
11
+ [key: string]: unknown;
12
+ } | {
13
+ context?: string;
14
+ [key: string]: unknown;
15
+ } | {
16
+ currency?: string;
17
+ style?: string;
18
+ [key: string]: unknown;
19
+ } | {
20
+ style?: string;
21
+ [key: string]: unknown;
22
+ } | {
23
+ type?: 'and' | 'or';
24
+ [key: string]: unknown;
25
+ } | Record<string, unknown>;
26
+ /**
27
+ * Type-safe parameter type for value processors
28
+ * Processors typically work with generic key-value pairs
29
+ */
30
+ export type ProcessorParams = Record<string, unknown>;
31
+ /**
32
+ * Generic parameter type for translation functions
33
+ * Used in the main t() function signature
34
+ */
35
+ export type TranslationParams = Record<string, unknown>;
36
+ //# sourceMappingURL=parameters.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameters.types.d.ts","sourceRoot":"","sources":["../../src/types/parameters.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAC1C;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAC5C;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAC7D;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAC1C;IAAE,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAC/C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Parameter type definitions for formatters and processors
3
+ * filepath: /home/janrau/tm-integration/packages/core/src/types/parameters.types.ts
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=parameters.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameters.types.js","sourceRoot":"","sources":["../../src/types/parameters.types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}