@mapvx/web-js 1.0.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 (397) hide show
  1. package/LICENSE.md +19 -0
  2. package/README.md +257 -0
  3. package/dist/cjs/assets/icons.js +87 -0
  4. package/dist/cjs/assets/icons.js.map +1 -0
  5. package/dist/cjs/assets/route_animation_icon.svg +15 -0
  6. package/dist/cjs/assets/user-dot-icon.svg +3 -0
  7. package/dist/cjs/config/sdkConfig.js +3 -0
  8. package/dist/cjs/config/sdkConfig.js.map +1 -0
  9. package/dist/cjs/controllers/routeController.js +1054 -0
  10. package/dist/cjs/controllers/routeController.js.map +1 -0
  11. package/dist/cjs/domain/models/_internal.js +15 -0
  12. package/dist/cjs/domain/models/_internal.js.map +1 -0
  13. package/dist/cjs/domain/models/_rtl.js +10 -0
  14. package/dist/cjs/domain/models/_rtl.js.map +1 -0
  15. package/dist/cjs/domain/models/animation.js +63 -0
  16. package/dist/cjs/domain/models/animation.js.map +1 -0
  17. package/dist/cjs/domain/models/banner.js +24 -0
  18. package/dist/cjs/domain/models/banner.js.map +1 -0
  19. package/dist/cjs/domain/models/categories.js +25 -0
  20. package/dist/cjs/domain/models/categories.js.map +1 -0
  21. package/dist/cjs/domain/models/cityFilterOption.js +3 -0
  22. package/dist/cjs/domain/models/cityFilterOption.js.map +1 -0
  23. package/dist/cjs/domain/models/configuration.js +3 -0
  24. package/dist/cjs/domain/models/configuration.js.map +1 -0
  25. package/dist/cjs/domain/models/cssCustomization.js +3 -0
  26. package/dist/cjs/domain/models/cssCustomization.js.map +1 -0
  27. package/dist/cjs/domain/models/fitOptions.js +3 -0
  28. package/dist/cjs/domain/models/fitOptions.js.map +1 -0
  29. package/dist/cjs/domain/models/innerFloors.js +3 -0
  30. package/dist/cjs/domain/models/innerFloors.js.map +1 -0
  31. package/dist/cjs/domain/models/institution.js +44 -0
  32. package/dist/cjs/domain/models/institution.js.map +1 -0
  33. package/dist/cjs/domain/models/latLng.js +3 -0
  34. package/dist/cjs/domain/models/latLng.js.map +1 -0
  35. package/dist/cjs/domain/models/location.js +3 -0
  36. package/dist/cjs/domain/models/location.js.map +1 -0
  37. package/dist/cjs/domain/models/loggeable.js +52 -0
  38. package/dist/cjs/domain/models/loggeable.js.map +1 -0
  39. package/dist/cjs/domain/models/mapCamera.js +3 -0
  40. package/dist/cjs/domain/models/mapCamera.js.map +1 -0
  41. package/dist/cjs/domain/models/mapConfig.js +15 -0
  42. package/dist/cjs/domain/models/mapConfig.js.map +1 -0
  43. package/dist/cjs/domain/models/marker.js +400 -0
  44. package/dist/cjs/domain/models/marker.js.map +1 -0
  45. package/dist/cjs/domain/models/multilanguage.js +18 -0
  46. package/dist/cjs/domain/models/multilanguage.js.map +1 -0
  47. package/dist/cjs/domain/models/openingHours.js +3 -0
  48. package/dist/cjs/domain/models/openingHours.js.map +1 -0
  49. package/dist/cjs/domain/models/place.js +101 -0
  50. package/dist/cjs/domain/models/place.js.map +1 -0
  51. package/dist/cjs/domain/models/platform.js +3 -0
  52. package/dist/cjs/domain/models/platform.js.map +1 -0
  53. package/dist/cjs/domain/models/popover.js +3 -0
  54. package/dist/cjs/domain/models/popover.js.map +1 -0
  55. package/dist/cjs/domain/models/product.js +3 -0
  56. package/dist/cjs/domain/models/product.js.map +1 -0
  57. package/dist/cjs/domain/models/property.js +104 -0
  58. package/dist/cjs/domain/models/property.js.map +1 -0
  59. package/dist/cjs/domain/models/route.js +166 -0
  60. package/dist/cjs/domain/models/route.js.map +1 -0
  61. package/dist/cjs/domain/models/routeConfiguration.js +80 -0
  62. package/dist/cjs/domain/models/routeConfiguration.js.map +1 -0
  63. package/dist/cjs/domain/models/routeInstance.js +30 -0
  64. package/dist/cjs/domain/models/routeInstance.js.map +1 -0
  65. package/dist/cjs/domain/models/routeStyle.js +3 -0
  66. package/dist/cjs/domain/models/routeStyle.js.map +1 -0
  67. package/dist/cjs/domain/models/transport.js +22 -0
  68. package/dist/cjs/domain/models/transport.js.map +1 -0
  69. package/dist/cjs/domain/ports/ICache.js +3 -0
  70. package/dist/cjs/domain/ports/ICache.js.map +1 -0
  71. package/dist/cjs/domain/ports/IHttpClient.js +3 -0
  72. package/dist/cjs/domain/ports/IHttpClient.js.map +1 -0
  73. package/dist/cjs/domain/ports/ILogger.js +23 -0
  74. package/dist/cjs/domain/ports/ILogger.js.map +1 -0
  75. package/dist/cjs/domain/ports/index.js +10 -0
  76. package/dist/cjs/domain/ports/index.js.map +1 -0
  77. package/dist/cjs/index.js +76 -0
  78. package/dist/cjs/index.js.map +1 -0
  79. package/dist/cjs/infrastructure/cache/CacheManager.js +236 -0
  80. package/dist/cjs/infrastructure/cache/CacheManager.js.map +1 -0
  81. package/dist/cjs/infrastructure/cache/LRUCache.js +153 -0
  82. package/dist/cjs/infrastructure/cache/LRUCache.js.map +1 -0
  83. package/dist/cjs/infrastructure/cache/PersistentCache.js +160 -0
  84. package/dist/cjs/infrastructure/cache/PersistentCache.js.map +1 -0
  85. package/dist/cjs/infrastructure/cache/cacheConfig.js +70 -0
  86. package/dist/cjs/infrastructure/cache/cacheConfig.js.map +1 -0
  87. package/dist/cjs/infrastructure/http/FetchHttpClient.js +75 -0
  88. package/dist/cjs/infrastructure/http/FetchHttpClient.js.map +1 -0
  89. package/dist/cjs/infrastructure/logging/CountlyLogger.js +78 -0
  90. package/dist/cjs/infrastructure/logging/CountlyLogger.js.map +1 -0
  91. package/dist/cjs/interfaces/cache.js +3 -0
  92. package/dist/cjs/interfaces/cache.js.map +1 -0
  93. package/dist/cjs/interfaces/healthResponse.js +3 -0
  94. package/dist/cjs/interfaces/healthResponse.js.map +1 -0
  95. package/dist/cjs/interfaces/institutionResponse.js +3 -0
  96. package/dist/cjs/interfaces/institutionResponse.js.map +1 -0
  97. package/dist/cjs/interfaces/metadata.js +3 -0
  98. package/dist/cjs/interfaces/metadata.js.map +1 -0
  99. package/dist/cjs/interfaces/placeResponse.js +3 -0
  100. package/dist/cjs/interfaces/placeResponse.js.map +1 -0
  101. package/dist/cjs/interfaces/routeCacheResponse.js +3 -0
  102. package/dist/cjs/interfaces/routeCacheResponse.js.map +1 -0
  103. package/dist/cjs/interfaces/routeResponse.js +3 -0
  104. package/dist/cjs/interfaces/routeResponse.js.map +1 -0
  105. package/dist/cjs/interfaces/styleResponse.js +3 -0
  106. package/dist/cjs/interfaces/styleResponse.js.map +1 -0
  107. package/dist/cjs/logger/logger.js +91 -0
  108. package/dist/cjs/logger/logger.js.map +1 -0
  109. package/dist/cjs/logger/rollbar.js +24 -0
  110. package/dist/cjs/logger/rollbar.js.map +1 -0
  111. package/dist/cjs/map/map.js +1457 -0
  112. package/dist/cjs/map/map.js.map +1 -0
  113. package/dist/cjs/repository/repository.js +574 -0
  114. package/dist/cjs/repository/repository.js.map +1 -0
  115. package/dist/cjs/repository/requester.js +590 -0
  116. package/dist/cjs/repository/requester.js.map +1 -0
  117. package/dist/cjs/sdk.js +351 -0
  118. package/dist/cjs/sdk.js.map +1 -0
  119. package/dist/cjs/utils/error.js +20 -0
  120. package/dist/cjs/utils/error.js.map +1 -0
  121. package/dist/cjs/utils/images.js +26 -0
  122. package/dist/cjs/utils/images.js.map +1 -0
  123. package/dist/cjs/utils/nav-functions.js +150 -0
  124. package/dist/cjs/utils/nav-functions.js.map +1 -0
  125. package/dist/cjs/utils/opening-hours-helper.js +911 -0
  126. package/dist/cjs/utils/opening-hours-helper.js.map +1 -0
  127. package/dist/cjs/utils/route-utils.js +58 -0
  128. package/dist/cjs/utils/route-utils.js.map +1 -0
  129. package/dist/cjs/utils/update-css.js +77 -0
  130. package/dist/cjs/utils/update-css.js.map +1 -0
  131. package/dist/cjs/utils/utils.js +105 -0
  132. package/dist/cjs/utils/utils.js.map +1 -0
  133. package/dist/es/assets/icons.d.ts +86 -0
  134. package/dist/es/assets/icons.d.ts.map +1 -0
  135. package/dist/es/assets/icons.js +83 -0
  136. package/dist/es/assets/icons.js.map +1 -0
  137. package/dist/es/assets/route_animation_icon.svg +15 -0
  138. package/dist/es/assets/user-dot-icon.svg +3 -0
  139. package/dist/es/config/sdkConfig.d.ts +105 -0
  140. package/dist/es/config/sdkConfig.d.ts.map +1 -0
  141. package/dist/es/config/sdkConfig.js +2 -0
  142. package/dist/es/config/sdkConfig.js.map +1 -0
  143. package/dist/es/controllers/routeController.d.ts +161 -0
  144. package/dist/es/controllers/routeController.d.ts.map +1 -0
  145. package/dist/es/controllers/routeController.js +1050 -0
  146. package/dist/es/controllers/routeController.js.map +1 -0
  147. package/dist/es/domain/models/_internal.d.ts +21 -0
  148. package/dist/es/domain/models/_internal.d.ts.map +1 -0
  149. package/dist/es/domain/models/_internal.js +11 -0
  150. package/dist/es/domain/models/_internal.js.map +1 -0
  151. package/dist/es/domain/models/_rtl.d.ts +7 -0
  152. package/dist/es/domain/models/_rtl.d.ts.map +1 -0
  153. package/dist/es/domain/models/_rtl.js +7 -0
  154. package/dist/es/domain/models/_rtl.js.map +1 -0
  155. package/dist/es/domain/models/animation.d.ts +161 -0
  156. package/dist/es/domain/models/animation.d.ts.map +1 -0
  157. package/dist/es/domain/models/animation.js +58 -0
  158. package/dist/es/domain/models/animation.js.map +1 -0
  159. package/dist/es/domain/models/banner.d.ts +64 -0
  160. package/dist/es/domain/models/banner.d.ts.map +1 -0
  161. package/dist/es/domain/models/banner.js +20 -0
  162. package/dist/es/domain/models/banner.js.map +1 -0
  163. package/dist/es/domain/models/categories.d.ts +157 -0
  164. package/dist/es/domain/models/categories.d.ts.map +1 -0
  165. package/dist/es/domain/models/categories.js +20 -0
  166. package/dist/es/domain/models/categories.js.map +1 -0
  167. package/dist/es/domain/models/cityFilterOption.d.ts +15 -0
  168. package/dist/es/domain/models/cityFilterOption.d.ts.map +1 -0
  169. package/dist/es/domain/models/cityFilterOption.js +2 -0
  170. package/dist/es/domain/models/cityFilterOption.js.map +1 -0
  171. package/dist/es/domain/models/configuration.d.ts +523 -0
  172. package/dist/es/domain/models/configuration.d.ts.map +1 -0
  173. package/dist/es/domain/models/configuration.js +2 -0
  174. package/dist/es/domain/models/configuration.js.map +1 -0
  175. package/dist/es/domain/models/cssCustomization.d.ts +63 -0
  176. package/dist/es/domain/models/cssCustomization.d.ts.map +1 -0
  177. package/dist/es/domain/models/cssCustomization.js +2 -0
  178. package/dist/es/domain/models/cssCustomization.js.map +1 -0
  179. package/dist/es/domain/models/fitOptions.d.ts +175 -0
  180. package/dist/es/domain/models/fitOptions.d.ts.map +1 -0
  181. package/dist/es/domain/models/fitOptions.js +2 -0
  182. package/dist/es/domain/models/fitOptions.js.map +1 -0
  183. package/dist/es/domain/models/innerFloors.d.ts +42 -0
  184. package/dist/es/domain/models/innerFloors.d.ts.map +1 -0
  185. package/dist/es/domain/models/innerFloors.js +2 -0
  186. package/dist/es/domain/models/innerFloors.js.map +1 -0
  187. package/dist/es/domain/models/institution.d.ts +64 -0
  188. package/dist/es/domain/models/institution.d.ts.map +1 -0
  189. package/dist/es/domain/models/institution.js +40 -0
  190. package/dist/es/domain/models/institution.js.map +1 -0
  191. package/dist/es/domain/models/latLng.d.ts +14 -0
  192. package/dist/es/domain/models/latLng.d.ts.map +1 -0
  193. package/dist/es/domain/models/latLng.js +2 -0
  194. package/dist/es/domain/models/latLng.js.map +1 -0
  195. package/dist/es/domain/models/location.d.ts +10 -0
  196. package/dist/es/domain/models/location.d.ts.map +1 -0
  197. package/dist/es/domain/models/location.js +2 -0
  198. package/dist/es/domain/models/location.js.map +1 -0
  199. package/dist/es/domain/models/loggeable.d.ts +43 -0
  200. package/dist/es/domain/models/loggeable.d.ts.map +1 -0
  201. package/dist/es/domain/models/loggeable.js +48 -0
  202. package/dist/es/domain/models/loggeable.js.map +1 -0
  203. package/dist/es/domain/models/mapCamera.d.ts +109 -0
  204. package/dist/es/domain/models/mapCamera.d.ts.map +1 -0
  205. package/dist/es/domain/models/mapCamera.js +2 -0
  206. package/dist/es/domain/models/mapCamera.js.map +1 -0
  207. package/dist/es/domain/models/mapConfig.d.ts +238 -0
  208. package/dist/es/domain/models/mapConfig.d.ts.map +1 -0
  209. package/dist/es/domain/models/mapConfig.js +12 -0
  210. package/dist/es/domain/models/mapConfig.js.map +1 -0
  211. package/dist/es/domain/models/marker.d.ts +301 -0
  212. package/dist/es/domain/models/marker.d.ts.map +1 -0
  213. package/dist/es/domain/models/marker.js +396 -0
  214. package/dist/es/domain/models/marker.js.map +1 -0
  215. package/dist/es/domain/models/multilanguage.d.ts +27 -0
  216. package/dist/es/domain/models/multilanguage.d.ts.map +1 -0
  217. package/dist/es/domain/models/multilanguage.js +14 -0
  218. package/dist/es/domain/models/multilanguage.js.map +1 -0
  219. package/dist/es/domain/models/openingHours.d.ts +30 -0
  220. package/dist/es/domain/models/openingHours.d.ts.map +1 -0
  221. package/dist/es/domain/models/openingHours.js +2 -0
  222. package/dist/es/domain/models/openingHours.js.map +1 -0
  223. package/dist/es/domain/models/place.d.ts +167 -0
  224. package/dist/es/domain/models/place.d.ts.map +1 -0
  225. package/dist/es/domain/models/place.js +97 -0
  226. package/dist/es/domain/models/place.js.map +1 -0
  227. package/dist/es/domain/models/platform.d.ts +6 -0
  228. package/dist/es/domain/models/platform.d.ts.map +1 -0
  229. package/dist/es/domain/models/platform.js +2 -0
  230. package/dist/es/domain/models/platform.js.map +1 -0
  231. package/dist/es/domain/models/popover.d.ts +14 -0
  232. package/dist/es/domain/models/popover.d.ts.map +1 -0
  233. package/dist/es/domain/models/popover.js +2 -0
  234. package/dist/es/domain/models/popover.js.map +1 -0
  235. package/dist/es/domain/models/product.d.ts +36 -0
  236. package/dist/es/domain/models/product.d.ts.map +1 -0
  237. package/dist/es/domain/models/product.js +2 -0
  238. package/dist/es/domain/models/product.js.map +1 -0
  239. package/dist/es/domain/models/property.d.ts +172 -0
  240. package/dist/es/domain/models/property.d.ts.map +1 -0
  241. package/dist/es/domain/models/property.js +100 -0
  242. package/dist/es/domain/models/property.js.map +1 -0
  243. package/dist/es/domain/models/route.d.ts +199 -0
  244. package/dist/es/domain/models/route.d.ts.map +1 -0
  245. package/dist/es/domain/models/route.js +160 -0
  246. package/dist/es/domain/models/route.js.map +1 -0
  247. package/dist/es/domain/models/routeConfiguration.d.ts +140 -0
  248. package/dist/es/domain/models/routeConfiguration.d.ts.map +1 -0
  249. package/dist/es/domain/models/routeConfiguration.js +75 -0
  250. package/dist/es/domain/models/routeConfiguration.js.map +1 -0
  251. package/dist/es/domain/models/routeInstance.d.ts +52 -0
  252. package/dist/es/domain/models/routeInstance.d.ts.map +1 -0
  253. package/dist/es/domain/models/routeInstance.js +26 -0
  254. package/dist/es/domain/models/routeInstance.js.map +1 -0
  255. package/dist/es/domain/models/routeStyle.d.ts +47 -0
  256. package/dist/es/domain/models/routeStyle.d.ts.map +1 -0
  257. package/dist/es/domain/models/routeStyle.js +2 -0
  258. package/dist/es/domain/models/routeStyle.js.map +1 -0
  259. package/dist/es/domain/models/transport.d.ts +176 -0
  260. package/dist/es/domain/models/transport.d.ts.map +1 -0
  261. package/dist/es/domain/models/transport.js +18 -0
  262. package/dist/es/domain/models/transport.js.map +1 -0
  263. package/dist/es/domain/ports/ICache.d.ts +70 -0
  264. package/dist/es/domain/ports/ICache.d.ts.map +1 -0
  265. package/dist/es/domain/ports/ICache.js +2 -0
  266. package/dist/es/domain/ports/ICache.js.map +1 -0
  267. package/dist/es/domain/ports/IHttpClient.d.ts +77 -0
  268. package/dist/es/domain/ports/IHttpClient.d.ts.map +1 -0
  269. package/dist/es/domain/ports/IHttpClient.js +2 -0
  270. package/dist/es/domain/ports/IHttpClient.js.map +1 -0
  271. package/dist/es/domain/ports/ILogger.d.ts +61 -0
  272. package/dist/es/domain/ports/ILogger.d.ts.map +1 -0
  273. package/dist/es/domain/ports/ILogger.js +19 -0
  274. package/dist/es/domain/ports/ILogger.js.map +1 -0
  275. package/dist/es/domain/ports/index.d.ts +9 -0
  276. package/dist/es/domain/ports/index.d.ts.map +1 -0
  277. package/dist/es/domain/ports/index.js +6 -0
  278. package/dist/es/domain/ports/index.js.map +1 -0
  279. package/dist/es/index.d.ts +58 -0
  280. package/dist/es/index.d.ts.map +1 -0
  281. package/dist/es/index.js +48 -0
  282. package/dist/es/index.js.map +1 -0
  283. package/dist/es/infrastructure/cache/CacheManager.d.ts +106 -0
  284. package/dist/es/infrastructure/cache/CacheManager.d.ts.map +1 -0
  285. package/dist/es/infrastructure/cache/CacheManager.js +232 -0
  286. package/dist/es/infrastructure/cache/CacheManager.js.map +1 -0
  287. package/dist/es/infrastructure/cache/LRUCache.d.ts +70 -0
  288. package/dist/es/infrastructure/cache/LRUCache.d.ts.map +1 -0
  289. package/dist/es/infrastructure/cache/LRUCache.js +149 -0
  290. package/dist/es/infrastructure/cache/LRUCache.js.map +1 -0
  291. package/dist/es/infrastructure/cache/PersistentCache.d.ts +58 -0
  292. package/dist/es/infrastructure/cache/PersistentCache.d.ts.map +1 -0
  293. package/dist/es/infrastructure/cache/PersistentCache.js +156 -0
  294. package/dist/es/infrastructure/cache/PersistentCache.js.map +1 -0
  295. package/dist/es/infrastructure/cache/cacheConfig.d.ts +51 -0
  296. package/dist/es/infrastructure/cache/cacheConfig.d.ts.map +1 -0
  297. package/dist/es/infrastructure/cache/cacheConfig.js +66 -0
  298. package/dist/es/infrastructure/cache/cacheConfig.js.map +1 -0
  299. package/dist/es/infrastructure/http/FetchHttpClient.d.ts +41 -0
  300. package/dist/es/infrastructure/http/FetchHttpClient.d.ts.map +1 -0
  301. package/dist/es/infrastructure/http/FetchHttpClient.js +71 -0
  302. package/dist/es/infrastructure/http/FetchHttpClient.js.map +1 -0
  303. package/dist/es/infrastructure/logging/CountlyLogger.d.ts +47 -0
  304. package/dist/es/infrastructure/logging/CountlyLogger.d.ts.map +1 -0
  305. package/dist/es/infrastructure/logging/CountlyLogger.js +74 -0
  306. package/dist/es/infrastructure/logging/CountlyLogger.js.map +1 -0
  307. package/dist/es/interfaces/cache.d.ts +5 -0
  308. package/dist/es/interfaces/cache.d.ts.map +1 -0
  309. package/dist/es/interfaces/cache.js +2 -0
  310. package/dist/es/interfaces/cache.js.map +1 -0
  311. package/dist/es/interfaces/healthResponse.d.ts +17 -0
  312. package/dist/es/interfaces/healthResponse.d.ts.map +1 -0
  313. package/dist/es/interfaces/healthResponse.js +2 -0
  314. package/dist/es/interfaces/healthResponse.js.map +1 -0
  315. package/dist/es/interfaces/institutionResponse.d.ts +12 -0
  316. package/dist/es/interfaces/institutionResponse.d.ts.map +1 -0
  317. package/dist/es/interfaces/institutionResponse.js +2 -0
  318. package/dist/es/interfaces/institutionResponse.js.map +1 -0
  319. package/dist/es/interfaces/metadata.d.ts +7 -0
  320. package/dist/es/interfaces/metadata.d.ts.map +1 -0
  321. package/dist/es/interfaces/metadata.js +2 -0
  322. package/dist/es/interfaces/metadata.js.map +1 -0
  323. package/dist/es/interfaces/placeResponse.d.ts +50 -0
  324. package/dist/es/interfaces/placeResponse.d.ts.map +1 -0
  325. package/dist/es/interfaces/placeResponse.js +2 -0
  326. package/dist/es/interfaces/placeResponse.js.map +1 -0
  327. package/dist/es/interfaces/routeCacheResponse.d.ts +13 -0
  328. package/dist/es/interfaces/routeCacheResponse.d.ts.map +1 -0
  329. package/dist/es/interfaces/routeCacheResponse.js +2 -0
  330. package/dist/es/interfaces/routeCacheResponse.js.map +1 -0
  331. package/dist/es/interfaces/routeResponse.d.ts +42 -0
  332. package/dist/es/interfaces/routeResponse.d.ts.map +1 -0
  333. package/dist/es/interfaces/routeResponse.js +2 -0
  334. package/dist/es/interfaces/routeResponse.js.map +1 -0
  335. package/dist/es/interfaces/styleResponse.d.ts +5 -0
  336. package/dist/es/interfaces/styleResponse.d.ts.map +1 -0
  337. package/dist/es/interfaces/styleResponse.js +2 -0
  338. package/dist/es/interfaces/styleResponse.js.map +1 -0
  339. package/dist/es/logger/logger.d.ts +14 -0
  340. package/dist/es/logger/logger.d.ts.map +1 -0
  341. package/dist/es/logger/logger.js +84 -0
  342. package/dist/es/logger/logger.js.map +1 -0
  343. package/dist/es/logger/rollbar.d.ts +4 -0
  344. package/dist/es/logger/rollbar.d.ts.map +1 -0
  345. package/dist/es/logger/rollbar.js +20 -0
  346. package/dist/es/logger/rollbar.js.map +1 -0
  347. package/dist/es/map/map.d.ts +598 -0
  348. package/dist/es/map/map.d.ts.map +1 -0
  349. package/dist/es/map/map.js +1430 -0
  350. package/dist/es/map/map.js.map +1 -0
  351. package/dist/es/repository/repository.d.ts +65 -0
  352. package/dist/es/repository/repository.d.ts.map +1 -0
  353. package/dist/es/repository/repository.js +570 -0
  354. package/dist/es/repository/repository.js.map +1 -0
  355. package/dist/es/repository/requester.d.ts +169 -0
  356. package/dist/es/repository/requester.d.ts.map +1 -0
  357. package/dist/es/repository/requester.js +586 -0
  358. package/dist/es/repository/requester.js.map +1 -0
  359. package/dist/es/sdk.d.ts +279 -0
  360. package/dist/es/sdk.d.ts.map +1 -0
  361. package/dist/es/sdk.js +346 -0
  362. package/dist/es/sdk.js.map +1 -0
  363. package/dist/es/utils/error.d.ts +8 -0
  364. package/dist/es/utils/error.d.ts.map +1 -0
  365. package/dist/es/utils/error.js +16 -0
  366. package/dist/es/utils/error.js.map +1 -0
  367. package/dist/es/utils/images.d.ts +8 -0
  368. package/dist/es/utils/images.d.ts.map +1 -0
  369. package/dist/es/utils/images.js +22 -0
  370. package/dist/es/utils/images.js.map +1 -0
  371. package/dist/es/utils/nav-functions.d.ts +85 -0
  372. package/dist/es/utils/nav-functions.d.ts.map +1 -0
  373. package/dist/es/utils/nav-functions.js +143 -0
  374. package/dist/es/utils/nav-functions.js.map +1 -0
  375. package/dist/es/utils/opening-hours-helper.d.ts +395 -0
  376. package/dist/es/utils/opening-hours-helper.d.ts.map +1 -0
  377. package/dist/es/utils/opening-hours-helper.js +906 -0
  378. package/dist/es/utils/opening-hours-helper.js.map +1 -0
  379. package/dist/es/utils/route-utils.d.ts +28 -0
  380. package/dist/es/utils/route-utils.d.ts.map +1 -0
  381. package/dist/es/utils/route-utils.js +54 -0
  382. package/dist/es/utils/route-utils.js.map +1 -0
  383. package/dist/es/utils/update-css.d.ts +12 -0
  384. package/dist/es/utils/update-css.d.ts.map +1 -0
  385. package/dist/es/utils/update-css.js +73 -0
  386. package/dist/es/utils/update-css.js.map +1 -0
  387. package/dist/es/utils/utils.d.ts +39 -0
  388. package/dist/es/utils/utils.d.ts.map +1 -0
  389. package/dist/es/utils/utils.js +97 -0
  390. package/dist/es/utils/utils.js.map +1 -0
  391. package/dist/umd/index.js +16874 -0
  392. package/dist/umd/index.js.map +1 -0
  393. package/dist/umd/styles.css +107 -0
  394. package/dist/umd/styles.css.map +1 -0
  395. package/dist/umd/styles.js +37 -0
  396. package/dist/umd/styles.js.map +1 -0
  397. package/package.json +198 -0
@@ -0,0 +1,48 @@
1
+ // ─── Infrastructure: Cache ───────────────────────────────────────────────────
2
+ export { LRUCache } from "./infrastructure/cache/LRUCache";
3
+ export { PersistentCache } from "./infrastructure/cache/PersistentCache";
4
+ export { CacheManager } from "./infrastructure/cache/CacheManager";
5
+ export { DEFAULT_CACHE_CONFIGS, DEFAULT_MAX_STORAGE_BYTES, } from "./infrastructure/cache/cacheConfig";
6
+ // ─── Infrastructure: HTTP ────────────────────────────────────────────────────
7
+ export { FetchHttpClient } from "./infrastructure/http/FetchHttpClient";
8
+ // ─── Infrastructure: Logging ─────────────────────────────────────────────────
9
+ export { CountlyLogger } from "./infrastructure/logging/CountlyLogger";
10
+ // ─── SDK ─────────────────────────────────────────────────────────────────────
11
+ export { initializeSDK } from "./sdk";
12
+ // ─── Domain Models: Assets / Icons ───────────────────────────────────────────
13
+ export { createRouteAnimationIconDataUrl } from "./assets/icons";
14
+ // ─── Domain Models: Banner ───────────────────────────────────────────────────
15
+ export { Banner } from "./domain/models/banner";
16
+ // ─── Domain Models: Categories ───────────────────────────────────────────────
17
+ export { isBasicWithIcon, isBasicWithLogo } from "./domain/models/categories";
18
+ // ─── Domain Models: Institution ──────────────────────────────────────────────
19
+ export { Institution } from "./domain/models/institution";
20
+ // ─── Domain Models: Marker ───────────────────────────────────────────────────
21
+ export { TextPosition } from "./domain/models/marker";
22
+ // ─── Domain Models: Place ────────────────────────────────────────────────────
23
+ export { MVXPlace } from "./domain/models/place";
24
+ // ─── Domain Models: Route ────────────────────────────────────────────────────
25
+ export { MVXRoute, MVXRouteLeg, MVXRouteStep } from "./domain/models/route";
26
+ // ─── Domain Models: Route Configuration ──────────────────────────────────────
27
+ export { AnnounceFormat, TransportationMode, UnitSystem } from "./domain/models/routeConfiguration";
28
+ // ─── Domain Models: Transport ────────────────────────────────────────────────
29
+ export { MVXTransport } from "./domain/models/transport";
30
+ // ─── Utils ───────────────────────────────────────────────────────────────────
31
+ export { loadCustomization } from "./utils/update-css";
32
+ export { OpeningHoursHelper } from "./utils/opening-hours-helper";
33
+ /**
34
+ * Function to load default styles
35
+ * @group Utils
36
+ */
37
+ export const loadStyles = () => {
38
+ // Check if styles are already loaded
39
+ if (document.querySelector("link[data-mapvx-styles]")) {
40
+ return;
41
+ }
42
+ const link = document.createElement("link");
43
+ link.rel = "stylesheet";
44
+ link.href = "./styles.css"; // Adjust path as needed
45
+ link.setAttribute("data-mapvx-styles", "true");
46
+ document.head.appendChild(link);
47
+ };
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,gFAAgF;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAElE,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,oCAAoC,CAAA;AAE3C,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAEvE,gFAAgF;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAKtE,gFAAgF;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AASrC,gFAAgF;AAChF,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAA;AAGhE,gFAAgF;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAgD7E,gFAAgF;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAYzD,gFAAgF;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AASrD,gFAAgF;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAKhD,gFAAgF;AAChF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAE3E,gFAAgF;AAChF,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAWnG,gFAAgF;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAQxD,gFAAgF;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,GAAS,EAAE;IACnC,qCAAqC;IACrC,IAAI,QAAQ,CAAC,aAAa,CAAC,yBAAyB,CAAC,EAAE;QACrD,OAAM;KACP;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3C,IAAI,CAAC,GAAG,GAAG,YAAY,CAAA;IACvB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA,CAAC,wBAAwB;IACnD,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAA;IAC9C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC,CAAA"}
@@ -0,0 +1,106 @@
1
+ import type { CacheStats } from "../../domain/ports/ICache";
2
+ import { type CacheManagerConfig, type CacheType } from "./cacheConfig";
3
+ /**
4
+ * CacheManager - Facade for managing multiple typed caches
5
+ *
6
+ * Replaces the old Cache singleton with a more flexible, configurable system.
7
+ * Supports:
8
+ * - Multiple cache types (places, routes, configurations, etc.)
9
+ * - Language-aware caching
10
+ * - Optional localStorage persistence
11
+ * - Configurable limits and TTL per cache type
12
+ *
13
+ * @group Configuration
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const cacheManager = new CacheManager({
18
+ * persistent: true,
19
+ * maxStorageBytes: 5 * 1024 * 1024,
20
+ * configs: {
21
+ * places: { maxItems: 1000, ttlMs: 60000 }
22
+ * }
23
+ * })
24
+ *
25
+ * cacheManager.setPlace("place-1", "en", placeData)
26
+ * const place = cacheManager.getPlace("place-1", "en")
27
+ * ```
28
+ */
29
+ export declare class CacheManager {
30
+ private readonly caches;
31
+ private readonly persistent;
32
+ private readonly maxStorageBytes;
33
+ constructor(config?: CacheManagerConfig);
34
+ /**
35
+ * Creates a cache instance based on persistence configuration
36
+ */
37
+ private createCache;
38
+ /**
39
+ * Generates a language-aware cache key
40
+ */
41
+ private makeKey;
42
+ /**
43
+ * Generates a composite key for configurations
44
+ */
45
+ private makeConfigKey;
46
+ getPlace<T>(id: string, lang: string): T | undefined;
47
+ /**
48
+ * Stores a place in cache
49
+ * @param id - Place ID
50
+ * @param value - Place data
51
+ * @param lang - Language code
52
+ */
53
+ setPlace<T>(id: string, value: T, lang: string): void;
54
+ hasPlace(id: string, lang: string): boolean;
55
+ getRoute<T>(destinationId: string): T | undefined;
56
+ setRoute<T>(destinationId: string, value: T): void;
57
+ cleanRoutesCache(): void;
58
+ getAccessibleRoute<T>(destinationId: string): T | undefined;
59
+ setAccessibleRoute<T>(destinationId: string, value: T): void;
60
+ cleanAccessibleRoutesCache(): void;
61
+ getConfiguration<T>(placeId: string, product: string, lang: string): T | undefined;
62
+ setConfiguration<T>(placeId: string, product: string, lang: string, value: T): void;
63
+ getCategories<T>(placeId: string, lang: string): T | undefined;
64
+ setCategories<T>(placeId: string, lang: string, value: T): void;
65
+ getVehicle<T>(id: string, lang: string): T | undefined;
66
+ /**
67
+ * Stores a vehicle in cache
68
+ * @param id - Stop ID
69
+ * @param value - Vehicle data (can be DataSnapshot for backward compatibility)
70
+ * @param lang - Language code
71
+ */
72
+ setVehicle<T>(id: string, value: T, lang: string): void;
73
+ getStops<T>(id: string, lang: string): T | undefined;
74
+ /**
75
+ * Stores stops in cache
76
+ * @param id - Combined stop+vehicle ID
77
+ * @param value - Stops data (can be DataSnapshot for backward compatibility)
78
+ * @param lang - Language code
79
+ */
80
+ setStops<T>(id: string, value: T, lang: string): void;
81
+ getSubPlaces<T>(parentPlaceId: string, lang: string): T | undefined;
82
+ /**
83
+ * Stores subplaces in cache
84
+ * @param parentPlaceId - Parent place ID
85
+ * @param lang - Language code
86
+ * @param value - SubPlaces data (can be DataSnapshot for backward compatibility)
87
+ */
88
+ setSubPlaces<T>(parentPlaceId: string, lang: string, value: T): void;
89
+ /**
90
+ * Clears all caches
91
+ */
92
+ cleanAllCache(): void;
93
+ /**
94
+ * Clears all entries for a specific language across all language-aware caches
95
+ */
96
+ cleanLanguageCache(lang: string): void;
97
+ /**
98
+ * Gets statistics for a specific cache type
99
+ */
100
+ getCacheStats(cacheType: CacheType): CacheStats;
101
+ /**
102
+ * Gets statistics for all caches
103
+ */
104
+ getAllCacheStats(): Record<CacheType, CacheStats>;
105
+ }
106
+ //# sourceMappingURL=CacheManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/cache/CacheManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ import { DEFAULT_MAX_STORAGE_BYTES, getCacheConfig, } from "./cacheConfig";
2
+ import { LRUCache } from "./LRUCache";
3
+ import { PersistentCache } from "./PersistentCache";
4
+ /**
5
+ * CacheManager - Facade for managing multiple typed caches
6
+ *
7
+ * Replaces the old Cache singleton with a more flexible, configurable system.
8
+ * Supports:
9
+ * - Multiple cache types (places, routes, configurations, etc.)
10
+ * - Language-aware caching
11
+ * - Optional localStorage persistence
12
+ * - Configurable limits and TTL per cache type
13
+ *
14
+ * @group Configuration
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const cacheManager = new CacheManager({
19
+ * persistent: true,
20
+ * maxStorageBytes: 5 * 1024 * 1024,
21
+ * configs: {
22
+ * places: { maxItems: 1000, ttlMs: 60000 }
23
+ * }
24
+ * })
25
+ *
26
+ * cacheManager.setPlace("place-1", "en", placeData)
27
+ * const place = cacheManager.getPlace("place-1", "en")
28
+ * ```
29
+ */
30
+ export class CacheManager {
31
+ constructor(config) {
32
+ var _a, _b, _c;
33
+ this.caches = new Map();
34
+ this.persistent = (_a = config === null || config === void 0 ? void 0 : config.persistent) !== null && _a !== void 0 ? _a : false;
35
+ this.maxStorageBytes = (_b = config === null || config === void 0 ? void 0 : config.maxStorageBytes) !== null && _b !== void 0 ? _b : DEFAULT_MAX_STORAGE_BYTES;
36
+ // Initialize all cache types
37
+ const cacheTypes = [
38
+ "places",
39
+ "routes",
40
+ "accessibleRoutes",
41
+ "configurations",
42
+ "categories",
43
+ "vehicles",
44
+ "stops",
45
+ "subPlaces",
46
+ ];
47
+ for (const cacheType of cacheTypes) {
48
+ const cacheConfig = getCacheConfig(cacheType, (_c = config === null || config === void 0 ? void 0 : config.configs) === null || _c === void 0 ? void 0 : _c[cacheType]);
49
+ this.caches.set(cacheType, this.createCache(cacheConfig));
50
+ }
51
+ }
52
+ /**
53
+ * Creates a cache instance based on persistence configuration
54
+ */
55
+ createCache(config) {
56
+ if (this.persistent && config.persistenceKey) {
57
+ return new PersistentCache(config, this.maxStorageBytes);
58
+ }
59
+ return new LRUCache(config);
60
+ }
61
+ /**
62
+ * Generates a language-aware cache key
63
+ */
64
+ makeKey(id, lang) {
65
+ return `${id}_${lang}`;
66
+ }
67
+ /**
68
+ * Generates a composite key for configurations
69
+ */
70
+ makeConfigKey(placeId, product, lang) {
71
+ return `${placeId || "default"}_${product || "default"}_${lang}`;
72
+ }
73
+ // ==================== Places ====================
74
+ getPlace(id, lang) {
75
+ const cache = this.caches.get("places");
76
+ return cache.get(this.makeKey(id, lang));
77
+ }
78
+ /**
79
+ * Stores a place in cache
80
+ * @param id - Place ID
81
+ * @param value - Place data
82
+ * @param lang - Language code
83
+ */
84
+ setPlace(id, value, lang) {
85
+ const cache = this.caches.get("places");
86
+ cache.set(this.makeKey(id, lang), value);
87
+ }
88
+ hasPlace(id, lang) {
89
+ const cache = this.caches.get("places");
90
+ return cache.has(this.makeKey(id, lang));
91
+ }
92
+ // ==================== Routes ====================
93
+ getRoute(destinationId) {
94
+ const cache = this.caches.get("routes");
95
+ return cache.get(destinationId);
96
+ }
97
+ setRoute(destinationId, value) {
98
+ const cache = this.caches.get("routes");
99
+ cache.set(destinationId, value);
100
+ }
101
+ cleanRoutesCache() {
102
+ this.caches.get("routes").clear();
103
+ }
104
+ // ==================== Accessible Routes ====================
105
+ getAccessibleRoute(destinationId) {
106
+ const cache = this.caches.get("accessibleRoutes");
107
+ return cache.get(destinationId);
108
+ }
109
+ setAccessibleRoute(destinationId, value) {
110
+ const cache = this.caches.get("accessibleRoutes");
111
+ cache.set(destinationId, value);
112
+ }
113
+ cleanAccessibleRoutesCache() {
114
+ this.caches.get("accessibleRoutes").clear();
115
+ }
116
+ // ==================== Configurations ====================
117
+ getConfiguration(placeId, product, lang) {
118
+ const cache = this.caches.get("configurations");
119
+ return cache.get(this.makeConfigKey(placeId, product, lang));
120
+ }
121
+ setConfiguration(placeId, product, lang, value) {
122
+ const cache = this.caches.get("configurations");
123
+ cache.set(this.makeConfigKey(placeId, product, lang), value);
124
+ }
125
+ // ==================== Categories ====================
126
+ getCategories(placeId, lang) {
127
+ const cache = this.caches.get("categories");
128
+ return cache.get(this.makeKey(placeId || "default", lang));
129
+ }
130
+ setCategories(placeId, lang, value) {
131
+ const cache = this.caches.get("categories");
132
+ cache.set(this.makeKey(placeId || "default", lang), value);
133
+ }
134
+ // ==================== Vehicles ====================
135
+ getVehicle(id, lang) {
136
+ const cache = this.caches.get("vehicles");
137
+ return cache.get(this.makeKey(id, lang));
138
+ }
139
+ /**
140
+ * Stores a vehicle in cache
141
+ * @param id - Stop ID
142
+ * @param value - Vehicle data (can be DataSnapshot for backward compatibility)
143
+ * @param lang - Language code
144
+ */
145
+ setVehicle(id, value, lang) {
146
+ const cache = this.caches.get("vehicles");
147
+ cache.set(this.makeKey(id, lang), value);
148
+ }
149
+ // ==================== Stops ====================
150
+ getStops(id, lang) {
151
+ const cache = this.caches.get("stops");
152
+ return cache.get(this.makeKey(id, lang));
153
+ }
154
+ /**
155
+ * Stores stops in cache
156
+ * @param id - Combined stop+vehicle ID
157
+ * @param value - Stops data (can be DataSnapshot for backward compatibility)
158
+ * @param lang - Language code
159
+ */
160
+ setStops(id, value, lang) {
161
+ const cache = this.caches.get("stops");
162
+ cache.set(this.makeKey(id, lang), value);
163
+ }
164
+ // ==================== SubPlaces ====================
165
+ getSubPlaces(parentPlaceId, lang) {
166
+ const cache = this.caches.get("subPlaces");
167
+ return cache.get(this.makeKey(parentPlaceId, lang));
168
+ }
169
+ /**
170
+ * Stores subplaces in cache
171
+ * @param parentPlaceId - Parent place ID
172
+ * @param lang - Language code
173
+ * @param value - SubPlaces data (can be DataSnapshot for backward compatibility)
174
+ */
175
+ setSubPlaces(parentPlaceId, lang, value) {
176
+ const cache = this.caches.get("subPlaces");
177
+ cache.set(this.makeKey(parentPlaceId, lang), value);
178
+ }
179
+ // ==================== Global Operations ====================
180
+ /**
181
+ * Clears all caches
182
+ */
183
+ cleanAllCache() {
184
+ for (const cache of this.caches.values()) {
185
+ cache.clear();
186
+ }
187
+ }
188
+ /**
189
+ * Clears all entries for a specific language across all language-aware caches
190
+ */
191
+ cleanLanguageCache(lang) {
192
+ const languageAwareCaches = [
193
+ "places",
194
+ "configurations",
195
+ "categories",
196
+ "vehicles",
197
+ "stops",
198
+ "subPlaces",
199
+ ];
200
+ const suffix = `_${lang}`;
201
+ for (const cacheType of languageAwareCaches) {
202
+ const cache = this.caches.get(cacheType);
203
+ const keys = cache.keys();
204
+ for (const key of keys) {
205
+ if (key.endsWith(suffix)) {
206
+ cache.delete(key);
207
+ }
208
+ }
209
+ }
210
+ }
211
+ /**
212
+ * Gets statistics for a specific cache type
213
+ */
214
+ getCacheStats(cacheType) {
215
+ const cache = this.caches.get(cacheType);
216
+ if (!cache) {
217
+ return { size: 0, maxItems: 0 };
218
+ }
219
+ return cache.getStats();
220
+ }
221
+ /**
222
+ * Gets statistics for all caches
223
+ */
224
+ getAllCacheStats() {
225
+ const stats = {};
226
+ for (const [cacheType, cache] of this.caches) {
227
+ stats[cacheType] = cache.getStats();
228
+ }
229
+ return stats;
230
+ }
231
+ }
232
+ //# sourceMappingURL=CacheManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../../../../src/infrastructure/cache/CacheManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import type { ICache, CacheStats } from "../../domain/ports/ICache";
2
+ import type { CacheConfig } from "./cacheConfig";
3
+ /**
4
+ * LRU (Least Recently Used) Cache implementation
5
+ * Implements the ICache interface with:
6
+ * - Configurable capacity limits
7
+ * - TTL-based expiration
8
+ * - LRU eviction policy
9
+ * - Hit rate tracking
10
+ *
11
+ * @typeParam T - The type of values stored in the cache
12
+ * @group Configuration
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const cache = new LRUCache<string>({ maxItems: 100, ttlMs: 60000 })
17
+ * cache.set("key1", "value1")
18
+ * const value = cache.get("key1") // "value1"
19
+ * ```
20
+ */
21
+ export declare class LRUCache<T> implements ICache<T> {
22
+ private readonly cache;
23
+ private readonly maxItems;
24
+ private readonly ttlMs;
25
+ private hits;
26
+ private misses;
27
+ private accessCounter;
28
+ constructor(config: CacheConfig);
29
+ /**
30
+ * Retrieves a value from the cache
31
+ * Updates access time for LRU tracking
32
+ * Returns undefined if key doesn't exist or is expired
33
+ */
34
+ get(key: string): T | undefined;
35
+ /**
36
+ * Stores a value in the cache
37
+ * Evicts LRU item if at capacity
38
+ * Refreshes TTL for existing keys
39
+ */
40
+ set(key: string, value: T): void;
41
+ /**
42
+ * Checks if a key exists and is not expired
43
+ */
44
+ has(key: string): boolean;
45
+ /**
46
+ * Removes a specific key from the cache
47
+ */
48
+ delete(key: string): boolean;
49
+ /**
50
+ * Removes all entries from the cache
51
+ */
52
+ clear(): void;
53
+ /**
54
+ * Returns all keys in the cache
55
+ */
56
+ keys(): string[];
57
+ /**
58
+ * Returns cache statistics
59
+ */
60
+ getStats(): CacheStats;
61
+ /**
62
+ * Checks if an entry has expired based on TTL
63
+ */
64
+ private isExpired;
65
+ /**
66
+ * Evicts the least recently used item from the cache
67
+ */
68
+ private evictLRU;
69
+ }
70
+ //# sourceMappingURL=LRUCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LRUCache.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/cache/LRUCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAWhD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,QAAQ,CAAC,CAAC,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAG9B,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,MAAM,CAAI;IAGlB,OAAO,CAAC,aAAa,CAAI;gBAEb,MAAM,EAAE,WAAW;IAM/B;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAsB/B;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IA0BhC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAgBzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,QAAQ,IAAI,UAAU;IAWtB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAejB"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * LRU (Least Recently Used) Cache implementation
3
+ * Implements the ICache interface with:
4
+ * - Configurable capacity limits
5
+ * - TTL-based expiration
6
+ * - LRU eviction policy
7
+ * - Hit rate tracking
8
+ *
9
+ * @typeParam T - The type of values stored in the cache
10
+ * @group Configuration
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const cache = new LRUCache<string>({ maxItems: 100, ttlMs: 60000 })
15
+ * cache.set("key1", "value1")
16
+ * const value = cache.get("key1") // "value1"
17
+ * ```
18
+ */
19
+ export class LRUCache {
20
+ constructor(config) {
21
+ // Hit rate tracking
22
+ this.hits = 0;
23
+ this.misses = 0;
24
+ // Monotonic counter for LRU ordering (avoids issues with same-millisecond operations)
25
+ this.accessCounter = 0;
26
+ this.cache = new Map();
27
+ this.maxItems = config.maxItems;
28
+ this.ttlMs = config.ttlMs;
29
+ }
30
+ /**
31
+ * Retrieves a value from the cache
32
+ * Updates access time for LRU tracking
33
+ * Returns undefined if key doesn't exist or is expired
34
+ */
35
+ get(key) {
36
+ const entry = this.cache.get(key);
37
+ if (!entry) {
38
+ this.misses++;
39
+ return undefined;
40
+ }
41
+ // Check TTL expiration (skip if ttlMs is 0)
42
+ if (this.ttlMs > 0 && this.isExpired(entry)) {
43
+ this.cache.delete(key);
44
+ this.misses++;
45
+ return undefined;
46
+ }
47
+ // Update access time for LRU (using monotonic counter)
48
+ entry.accessTime = ++this.accessCounter;
49
+ this.hits++;
50
+ return entry.value;
51
+ }
52
+ /**
53
+ * Stores a value in the cache
54
+ * Evicts LRU item if at capacity
55
+ * Refreshes TTL for existing keys
56
+ */
57
+ set(key, value) {
58
+ const now = Date.now();
59
+ const accessTime = ++this.accessCounter;
60
+ // If key already exists, update it (no eviction needed)
61
+ if (this.cache.has(key)) {
62
+ this.cache.set(key, {
63
+ value,
64
+ timestamp: now,
65
+ accessTime,
66
+ });
67
+ return;
68
+ }
69
+ // Evict if at capacity
70
+ if (this.cache.size >= this.maxItems) {
71
+ this.evictLRU();
72
+ }
73
+ this.cache.set(key, {
74
+ value,
75
+ timestamp: now,
76
+ accessTime,
77
+ });
78
+ }
79
+ /**
80
+ * Checks if a key exists and is not expired
81
+ */
82
+ has(key) {
83
+ const entry = this.cache.get(key);
84
+ if (!entry) {
85
+ return false;
86
+ }
87
+ // Check TTL expiration
88
+ if (this.ttlMs > 0 && this.isExpired(entry)) {
89
+ this.cache.delete(key);
90
+ return false;
91
+ }
92
+ return true;
93
+ }
94
+ /**
95
+ * Removes a specific key from the cache
96
+ */
97
+ delete(key) {
98
+ return this.cache.delete(key);
99
+ }
100
+ /**
101
+ * Removes all entries from the cache
102
+ */
103
+ clear() {
104
+ this.cache.clear();
105
+ this.hits = 0;
106
+ this.misses = 0;
107
+ }
108
+ /**
109
+ * Returns all keys in the cache
110
+ */
111
+ keys() {
112
+ return Array.from(this.cache.keys());
113
+ }
114
+ /**
115
+ * Returns cache statistics
116
+ */
117
+ getStats() {
118
+ const totalRequests = this.hits + this.misses;
119
+ const hitRate = totalRequests > 0 ? (this.hits / totalRequests) * 100 : undefined;
120
+ return {
121
+ size: this.cache.size,
122
+ maxItems: this.maxItems,
123
+ hitRate,
124
+ };
125
+ }
126
+ /**
127
+ * Checks if an entry has expired based on TTL
128
+ */
129
+ isExpired(entry) {
130
+ return Date.now() - entry.timestamp > this.ttlMs;
131
+ }
132
+ /**
133
+ * Evicts the least recently used item from the cache
134
+ */
135
+ evictLRU() {
136
+ let oldestKey = null;
137
+ let oldestAccessTime = Infinity;
138
+ for (const [key, entry] of this.cache) {
139
+ if (entry.accessTime < oldestAccessTime) {
140
+ oldestAccessTime = entry.accessTime;
141
+ oldestKey = key;
142
+ }
143
+ }
144
+ if (oldestKey !== null) {
145
+ this.cache.delete(oldestKey);
146
+ }
147
+ }
148
+ }
149
+ //# sourceMappingURL=LRUCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LRUCache.js","sourceRoot":"","sources":["../../../../src/infrastructure/cache/LRUCache.ts"],"names":[],"mappings":"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"}