@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,13 @@
1
+ /**
2
+ * DOM-based Markup Parser
3
+ *
4
+ * Converts a block element's childNodes into ContentUnit.
5
+ * Uses the browser's DOM rather than regex (unlike edge/PHP which parse raw HTML strings).
6
+ * Mirrors WordPress TS MarkupParser.
7
+ */
8
+ import type { ContentUnit } from '../content/types.js';
9
+ /**
10
+ * Parse a block element into ContentUnit using DOM walking
11
+ */
12
+ export declare function parseBlockElement(element: Element): ContentUnit;
13
+ //# sourceMappingURL=markup-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markup-parser.d.ts","sourceRoot":"","sources":["../../src/browser/markup-parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKvD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAqD/D"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * DOM-based Markup Parser
3
+ *
4
+ * Converts a block element's childNodes into ContentUnit.
5
+ * Uses the browser's DOM rather than regex (unlike edge/PHP which parse raw HTML strings).
6
+ * Mirrors WordPress TS MarkupParser.
7
+ */
8
+ import { DefaultStyleMapper } from '../content/style-mapper/DefaultStyleMapper.js';
9
+ const styleMapper = new DefaultStyleMapper();
10
+ /**
11
+ * Parse a block element into ContentUnit using DOM walking
12
+ */
13
+ export function parseBlockElement(element) {
14
+ const styles = {};
15
+ let tagIndex = 0;
16
+ function walk(node) {
17
+ if (node.nodeType === Node.TEXT_NODE) {
18
+ return node.nodeValue ?? '';
19
+ }
20
+ if (node.nodeType !== Node.ELEMENT_NODE) {
21
+ return '';
22
+ }
23
+ const el = node;
24
+ const tag = el.tagName.toLowerCase();
25
+ // Collect attributes
26
+ const attrs = {};
27
+ for (let i = 0; i < el.attributes.length; i++) {
28
+ const attr = el.attributes[i];
29
+ attrs[attr.name.toLowerCase()] = attr.value;
30
+ }
31
+ const styleList = styleMapper.mapElementToStyles(tag, attrs);
32
+ if (styleList.length > 0) {
33
+ // Known styled element — assign indexed tag
34
+ tagIndex++;
35
+ const idx = tagIndex;
36
+ styles[String(idx)] = styleList;
37
+ let inner = '';
38
+ for (let i = 0; i < node.childNodes.length; i++) {
39
+ inner += walk(node.childNodes[i]);
40
+ }
41
+ return `<${idx}>${inner}</${idx}>`;
42
+ }
43
+ // Unknown element — strip tag, recurse children
44
+ let result = '';
45
+ for (let i = 0; i < node.childNodes.length; i++) {
46
+ result += walk(node.childNodes[i]);
47
+ }
48
+ return result;
49
+ }
50
+ let text = '';
51
+ for (let i = 0; i < element.childNodes.length; i++) {
52
+ text += walk(element.childNodes[i]);
53
+ }
54
+ return { text, styles };
55
+ }
56
+ //# sourceMappingURL=markup-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markup-parser.js","sourceRoot":"","sources":["../../src/browser/markup-parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AAEnF,MAAM,WAAW,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,MAAM,MAAM,GAA6B,EAAE,CAAC;IAC5C,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,SAAS,IAAI,CAAC,IAAU;QACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;YACxC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,EAAE,GAAG,IAAe,CAAC;QAC3B,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAErC,qBAAqB;QACrB,MAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9C,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE7D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,4CAA4C;YAC5C,QAAQ,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,QAAQ,CAAC;YACrB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;YAEhC,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChD,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;YAED,OAAO,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,gDAAgD;QAChD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * MD5 Hash Implementation
3
+ * Minimal implementation to match PHP's md5() function
4
+ * Used for generating auto_* keys that match server-side
5
+ */
6
+ /**
7
+ * Generate MD5 hash of a string
8
+ * Matches PHP's md5() function output
9
+ */
10
+ export declare function md5(str: string): string;
11
+ /**
12
+ * Generate auto key matching PHP's TranslationStateManager::generateKey()
13
+ * Format: auto_ + first 12 chars of md5 hash
14
+ */
15
+ export declare function generateAutoKey(text: string): string;
16
+ //# sourceMappingURL=md5.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5.d.ts","sourceRoot":"","sources":["../../src/browser/md5.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwLH;;;GAGG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * MD5 Hash Implementation
3
+ * Minimal implementation to match PHP's md5() function
4
+ * Used for generating auto_* keys that match server-side
5
+ */
6
+ /* eslint-disable no-bitwise */
7
+ function safeAdd(x, y) {
8
+ const lsw = (x & 0xffff) + (y & 0xffff);
9
+ const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
10
+ return (msw << 16) | (lsw & 0xffff);
11
+ }
12
+ function bitRotateLeft(num, cnt) {
13
+ return (num << cnt) | (num >>> (32 - cnt));
14
+ }
15
+ function md5cmn(q, a, b, x, s, t) {
16
+ return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
17
+ }
18
+ function md5ff(a, b, c, d, x, s, t) {
19
+ return md5cmn((b & c) | (~b & d), a, b, x, s, t);
20
+ }
21
+ function md5gg(a, b, c, d, x, s, t) {
22
+ return md5cmn((b & d) | (c & ~d), a, b, x, s, t);
23
+ }
24
+ function md5hh(a, b, c, d, x, s, t) {
25
+ return md5cmn(b ^ c ^ d, a, b, x, s, t);
26
+ }
27
+ function md5ii(a, b, c, d, x, s, t) {
28
+ return md5cmn(c ^ (b | ~d), a, b, x, s, t);
29
+ }
30
+ function binlMD5(x, len) {
31
+ x[len >> 5] |= 0x80 << len % 32;
32
+ x[(((len + 64) >>> 9) << 4) + 14] = len;
33
+ let a = 1732584193;
34
+ let b = -271733879;
35
+ let c = -1732584194;
36
+ let d = 271733878;
37
+ for (let i = 0; i < x.length; i += 16) {
38
+ const olda = a;
39
+ const oldb = b;
40
+ const oldc = c;
41
+ const oldd = d;
42
+ a = md5ff(a, b, c, d, x[i], 7, -680876936);
43
+ d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
44
+ c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
45
+ b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
46
+ a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
47
+ d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
48
+ c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
49
+ b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
50
+ a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
51
+ d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
52
+ c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
53
+ b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
54
+ a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
55
+ d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
56
+ c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
57
+ b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
58
+ a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
59
+ d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
60
+ c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
61
+ b = md5gg(b, c, d, a, x[i], 20, -373897302);
62
+ a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
63
+ d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
64
+ c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
65
+ b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
66
+ a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
67
+ d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
68
+ c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
69
+ b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
70
+ a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
71
+ d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
72
+ c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
73
+ b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
74
+ a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
75
+ d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
76
+ c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
77
+ b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
78
+ a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
79
+ d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
80
+ c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
81
+ b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
82
+ a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
83
+ d = md5hh(d, a, b, c, x[i + 0], 11, -358537222);
84
+ c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
85
+ b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
86
+ a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
87
+ d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
88
+ c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
89
+ b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
90
+ a = md5ii(a, b, c, d, x[i], 6, -198630844);
91
+ d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
92
+ c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
93
+ b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
94
+ a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
95
+ d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
96
+ c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
97
+ b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
98
+ a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
99
+ d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
100
+ c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
101
+ b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
102
+ a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
103
+ d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
104
+ c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
105
+ b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
106
+ a = safeAdd(a, olda);
107
+ b = safeAdd(b, oldb);
108
+ c = safeAdd(c, oldc);
109
+ d = safeAdd(d, oldd);
110
+ }
111
+ return [a, b, c, d];
112
+ }
113
+ function binl2hex(binarray) {
114
+ const hexTab = '0123456789abcdef';
115
+ let str = '';
116
+ for (let i = 0; i < binarray.length * 4; i++) {
117
+ str +=
118
+ hexTab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 0xf) +
119
+ hexTab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 0xf);
120
+ }
121
+ return str;
122
+ }
123
+ function str2binl(str) {
124
+ const bin = [];
125
+ for (let i = 0; i < str.length * 8; i += 8) {
126
+ bin[i >> 5] |= (str.charCodeAt(i / 8) & 0xff) << i % 32;
127
+ }
128
+ return bin;
129
+ }
130
+ /**
131
+ * Generate MD5 hash of a string
132
+ * Matches PHP's md5() function output
133
+ */
134
+ export function md5(str) {
135
+ return binl2hex(binlMD5(str2binl(str), str.length * 8));
136
+ }
137
+ /**
138
+ * Generate auto key matching PHP's TranslationStateManager::generateKey()
139
+ * Format: auto_ + first 12 chars of md5 hash
140
+ */
141
+ export function generateAutoKey(text) {
142
+ const trimmed = text.trim();
143
+ return 'auto_' + md5(trimmed).substring(0, 12);
144
+ }
145
+ //# sourceMappingURL=md5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5.js","sourceRoot":"","sources":["../../src/browser/md5.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * CacheStorageRepository - Cache API-based persistent storage (Browser Bundle Version)
3
+ * Implements IAsyncRepository for asynchronous access to Cache API
4
+ */
5
+ import type { IAsyncRepository } from '../../interfaces/repository.interface.js';
6
+ import type { StorageRepositoryConfig } from '../../config/repository.config.js';
7
+ import type { TranslationData } from '../../types/translation-data.types.js';
8
+ /**
9
+ * Configuration options for CacheStorageRepository
10
+ */
11
+ export interface CacheStorageRepositoryConfig extends StorageRepositoryConfig {
12
+ options?: StorageRepositoryConfig['options'] & {
13
+ cacheName?: string;
14
+ ttl?: number;
15
+ };
16
+ }
17
+ /**
18
+ * Cache API-based repository for persistent translation caching
19
+ */
20
+ export declare class CacheStorageRepository implements IAsyncRepository<CacheStorageRepositoryConfig> {
21
+ readonly name = "CacheStorageRepository";
22
+ readonly type: "storage";
23
+ readonly config: CacheStorageRepositoryConfig;
24
+ private cacheName;
25
+ private defaultTTL;
26
+ private available;
27
+ constructor(config?: CacheStorageRepositoryConfig);
28
+ private checkAvailability;
29
+ get(key: string): Promise<string>;
30
+ set(key: string, value: string): Promise<void>;
31
+ remove(key: string): Promise<void>;
32
+ clear(): Promise<void>;
33
+ clearNamespace(locale: string, namespace: string): Promise<void>;
34
+ getNamespace(locale: string, namespace: string): Promise<TranslationData>;
35
+ setNamespace(locale: string, namespace: string, translations: TranslationData): Promise<void>;
36
+ getConfig(): CacheStorageRepositoryConfig;
37
+ isAvailable(): boolean;
38
+ getEntries(): Promise<Record<string, string>>;
39
+ getCacheStats(): Promise<{
40
+ size: number;
41
+ cacheName: string;
42
+ }>;
43
+ }
44
+ //# sourceMappingURL=cache-storage-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-storage-repository.d.ts","sourceRoot":"","sources":["../../../src/browser/storage/cache-storage-repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAe7E;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,uBAAuB;IAC3E,OAAO,CAAC,EAAE,uBAAuB,CAAC,SAAS,CAAC,GAAG;QAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,sBACX,YAAW,gBAAgB,CAAC,4BAA4B,CAAC;IAEzD,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,IAAI,YAAsB;IACnC,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAE9C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAU;gBAEf,MAAM,GAAE,4BAAiC;IAgBrD,OAAO,CAAC,iBAAiB;IAInB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBtB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BhE,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC;IAYrB,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,eAAe,GAC5B,OAAO,CAAC,IAAI,CAAC;IAKhB,SAAS,IAAI,4BAA4B;IAIzC,WAAW,IAAI,OAAO;IAIhB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA6B7C,aAAa,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAepE"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * CacheStorageRepository - Cache API-based persistent storage (Browser Bundle Version)
3
+ * Implements IAsyncRepository for asynchronous access to Cache API
4
+ */
5
+ import { TranslationNotFoundError } from '../../errors/translation-errors.js';
6
+ const CACHE_NAME = 'lionrapid-v1';
7
+ const CACHE_PREFIX = 'lionrapid:';
8
+ /**
9
+ * Cache API-based repository for persistent translation caching
10
+ */
11
+ export class CacheStorageRepository {
12
+ name = 'CacheStorageRepository';
13
+ type = 'storage';
14
+ config;
15
+ cacheName;
16
+ defaultTTL;
17
+ available;
18
+ constructor(config = {}) {
19
+ this.config = {
20
+ enabled: config.enabled ?? true,
21
+ priority: config.priority ?? 0,
22
+ options: {
23
+ cacheName: config.options?.cacheName ?? CACHE_NAME,
24
+ ttl: config.options?.ttl ?? 7 * 24 * 60 * 60 * 1000,
25
+ ...config.options,
26
+ },
27
+ };
28
+ this.cacheName = this.config.options?.cacheName ?? CACHE_NAME;
29
+ this.defaultTTL = this.config.options?.ttl ?? 7 * 24 * 60 * 60 * 1000;
30
+ this.available = this.checkAvailability();
31
+ }
32
+ checkAvailability() {
33
+ return typeof caches !== 'undefined';
34
+ }
35
+ async get(key) {
36
+ if (!this.available) {
37
+ throw new TranslationNotFoundError(key);
38
+ }
39
+ try {
40
+ const cache = await caches.open(this.cacheName);
41
+ const response = await cache.match(CACHE_PREFIX + key);
42
+ if (!response) {
43
+ throw new TranslationNotFoundError(key);
44
+ }
45
+ const data = await response.json();
46
+ if (data.expiry !== null && Date.now() > data.expiry) {
47
+ await cache.delete(CACHE_PREFIX + key);
48
+ throw new TranslationNotFoundError(key);
49
+ }
50
+ return data.value;
51
+ }
52
+ catch (error) {
53
+ if (error instanceof TranslationNotFoundError) {
54
+ throw error;
55
+ }
56
+ throw new TranslationNotFoundError(key);
57
+ }
58
+ }
59
+ async set(key, value) {
60
+ if (!this.available)
61
+ return;
62
+ try {
63
+ const cache = await caches.open(this.cacheName);
64
+ const data = {
65
+ value,
66
+ expiry: this.defaultTTL ? Date.now() + this.defaultTTL : null,
67
+ timestamp: Date.now(),
68
+ };
69
+ await cache.put(CACHE_PREFIX + key, new Response(JSON.stringify(data), {
70
+ headers: { 'Content-Type': 'application/json' },
71
+ }));
72
+ }
73
+ catch {
74
+ // Silently fail - cache is non-critical
75
+ }
76
+ }
77
+ async remove(key) {
78
+ if (!this.available)
79
+ return;
80
+ try {
81
+ const cache = await caches.open(this.cacheName);
82
+ await cache.delete(CACHE_PREFIX + key);
83
+ }
84
+ catch {
85
+ // Silently fail
86
+ }
87
+ }
88
+ async clear() {
89
+ if (!this.available)
90
+ return;
91
+ try {
92
+ const cache = await caches.open(this.cacheName);
93
+ const keys = await cache.keys();
94
+ await Promise.all(keys
95
+ .filter((request) => request.url.includes(CACHE_PREFIX))
96
+ .map((request) => cache.delete(request)));
97
+ }
98
+ catch {
99
+ // Silently fail
100
+ }
101
+ }
102
+ async clearNamespace(locale, namespace) {
103
+ if (!this.available)
104
+ return;
105
+ const namespaceCacheKey = `@${locale}:${namespace}`;
106
+ const keyPrefix = `${locale}:${namespace}:`;
107
+ try {
108
+ const cache = await caches.open(this.cacheName);
109
+ const keys = await cache.keys();
110
+ await Promise.all(keys
111
+ .filter((request) => {
112
+ const url = request.url;
113
+ const key = url.includes(CACHE_PREFIX)
114
+ ? url.substring(url.indexOf(CACHE_PREFIX) + CACHE_PREFIX.length)
115
+ : '';
116
+ return key === namespaceCacheKey || key.startsWith(keyPrefix);
117
+ })
118
+ .map((request) => cache.delete(request)));
119
+ }
120
+ catch {
121
+ // Silently fail
122
+ }
123
+ }
124
+ async getNamespace(locale, namespace) {
125
+ const namespaceCacheKey = `@${locale}:${namespace}`;
126
+ const value = await this.get(namespaceCacheKey);
127
+ try {
128
+ return JSON.parse(value);
129
+ }
130
+ catch {
131
+ await this.remove(namespaceCacheKey);
132
+ throw new TranslationNotFoundError(namespaceCacheKey);
133
+ }
134
+ }
135
+ async setNamespace(locale, namespace, translations) {
136
+ const namespaceCacheKey = `@${locale}:${namespace}`;
137
+ await this.set(namespaceCacheKey, JSON.stringify(translations));
138
+ }
139
+ getConfig() {
140
+ return this.config;
141
+ }
142
+ isAvailable() {
143
+ return this.available;
144
+ }
145
+ async getEntries() {
146
+ const entries = {};
147
+ if (!this.available)
148
+ return entries;
149
+ try {
150
+ const cache = await caches.open(this.cacheName);
151
+ const keys = await cache.keys();
152
+ for (const request of keys) {
153
+ const url = request.url;
154
+ if (!url.includes(CACHE_PREFIX))
155
+ continue;
156
+ const key = url.substring(url.indexOf(CACHE_PREFIX) + CACHE_PREFIX.length);
157
+ try {
158
+ const value = await this.get(key);
159
+ entries[key] = value;
160
+ }
161
+ catch {
162
+ // Skip expired or invalid entries
163
+ }
164
+ }
165
+ }
166
+ catch {
167
+ // Silently fail
168
+ }
169
+ return entries;
170
+ }
171
+ async getCacheStats() {
172
+ if (!this.available) {
173
+ return { size: 0, cacheName: this.cacheName };
174
+ }
175
+ try {
176
+ const cache = await caches.open(this.cacheName);
177
+ const keys = await cache.keys();
178
+ const size = keys.filter((r) => r.url.includes(CACHE_PREFIX)).length;
179
+ return { size, cacheName: this.cacheName };
180
+ }
181
+ catch {
182
+ return { size: 0, cacheName: this.cacheName };
183
+ }
184
+ }
185
+ }
186
+ //# sourceMappingURL=cache-storage-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-storage-repository.js","sourceRoot":"","sources":["../../../src/browser/storage/cache-storage-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * LocalStorage Repository for persistent cache (Browser Bundle Version)
3
+ * Implements ISyncRepository for synchronous access to localStorage
4
+ */
5
+ import type { ISyncRepository, IStatsProvider } from '../../interfaces/repository.interface.js';
6
+ import type { MemoryRepositoryConfig } from '../../config/repository.config.js';
7
+ import type { TranslationData } from '../../types/translation-data.types.js';
8
+ /**
9
+ * Configuration options for LocalStorageRepository
10
+ */
11
+ export interface LocalStorageRepositoryConfig extends MemoryRepositoryConfig {
12
+ options?: MemoryRepositoryConfig['options'] & {
13
+ prefix?: string;
14
+ ttl?: number;
15
+ maxSize?: number;
16
+ };
17
+ }
18
+ /**
19
+ * LocalStorage-based repository for persistent translation caching
20
+ */
21
+ export declare class LocalStorageRepository implements ISyncRepository<LocalStorageRepositoryConfig>, IStatsProvider {
22
+ readonly name = "LocalStorageRepository";
23
+ readonly type: "memory";
24
+ readonly config: LocalStorageRepositoryConfig;
25
+ private available;
26
+ private prefix;
27
+ private defaultTTL;
28
+ private maxSize;
29
+ constructor(config?: LocalStorageRepositoryConfig);
30
+ private checkAvailability;
31
+ private migrateIfNeeded;
32
+ get(key: string): string | null;
33
+ set(key: string, value: string): void;
34
+ remove(key: string): void;
35
+ clear(): void;
36
+ clearNamespace(locale: string, namespace: string): void;
37
+ getNamespace(locale: string, namespace: string): TranslationData | null;
38
+ setNamespace(locale: string, namespace: string, translations: TranslationData): void;
39
+ getEntries(): Record<string, string>;
40
+ getConfig(): LocalStorageRepositoryConfig;
41
+ isAvailable(): boolean;
42
+ private getEntryCount;
43
+ private isQuotaError;
44
+ private evictOldest;
45
+ getCacheStats(): {
46
+ size: number;
47
+ maxSize: number;
48
+ usage: string;
49
+ };
50
+ }
51
+ //# sourceMappingURL=localstorage-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localstorage-repository.d.ts","sourceRoot":"","sources":["../../../src/browser/storage/localstorage-repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACf,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAe7E;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,sBAAsB;IAC1E,OAAO,CAAC,EAAE,sBAAsB,CAAC,SAAS,CAAC,GAAG;QAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,sBACX,YAAW,eAAe,CAAC,4BAA4B,CAAC,EAAE,cAAc;IAExE,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,IAAI,WAAqB;IAClC,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAE9C,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,GAAE,4BAAiC;IAsBrD,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,eAAe;IAYvB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAqB/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IA6BrC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAUzB,KAAK,IAAI,IAAI;IAiBb,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAuBvD,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,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAwBpC,SAAS,IAAI,4BAA4B;IAIzC,WAAW,IAAI,OAAO;IAItB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,WAAW;IAkCnB,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAWlE"}