@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,911 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.is24Hours = exports.OpeningHoursHelper = void 0;
4
+ const sdk_1 = require("../sdk");
5
+ /**
6
+ * Helper class for opening hours.
7
+ */
8
+ class OpeningHoursHelper {
9
+ /**
10
+ * Gets the day of the week as a two-character string indicator.
11
+ *
12
+ * @param date The Date object to extract the day from.
13
+ * @returns A `DaysOfTheWeek` string representing the day of the week.
14
+ * @example
15
+ * ```typescript
16
+ * const date = new Date(2024, 0, 1); // Monday
17
+ * const day = OpeningHoursHelper.getDay(date);
18
+ * console.log(day); // "mo"
19
+ * ```
20
+ * @default Returns null if an error occurs or invalid date is provided.
21
+ */
22
+ static getDay(date) {
23
+ try {
24
+ const dayNumber = date.getDay(); // JavaScript getDay() returns 0-6 (Sun-Sat)
25
+ switch (dayNumber) {
26
+ case 0:
27
+ return "su";
28
+ case 1:
29
+ return "mo";
30
+ case 2:
31
+ return "tu";
32
+ case 3:
33
+ return "we";
34
+ case 4:
35
+ return "th";
36
+ case 5:
37
+ return "fr";
38
+ case 6:
39
+ return "sa";
40
+ default:
41
+ // This default shouldn't happen. I'll add it just for completeness.
42
+ return null;
43
+ }
44
+ }
45
+ catch (_a) {
46
+ return null;
47
+ }
48
+ }
49
+ /**
50
+ * Converts a 24-hour time format to 12-hour format with AM/PM.
51
+ *
52
+ * @param time24h The time string in 24-hour format (HH:mm).
53
+ * @returns Time formatted in 12-hour format with AM/PM.
54
+ * @example
55
+ * ```typescript
56
+ * const time12h = OpeningHoursHelper.convertSingleTimeTo12Hour("14:30");
57
+ * console.log(time12h); // "2:30 p.m."
58
+ *
59
+ * const morningTime = OpeningHoursHelper.convertSingleTimeTo12Hour("09:00");
60
+ * console.log(morningTime); // "9:00 a.m."
61
+ * ```
62
+ * @default Returns empty string "" if an error occurs or invalid time is provided.
63
+ */
64
+ static convertSingleTimeTo12Hour(time24h) {
65
+ var _a;
66
+ try {
67
+ if (!time24h || typeof time24h !== "string") {
68
+ return "";
69
+ }
70
+ const [hourStr, minuteStr] = (_a = time24h.split(":")) !== null && _a !== void 0 ? _a : [];
71
+ if (!hourStr || !minuteStr) {
72
+ return "";
73
+ }
74
+ const hour = parseInt(hourStr, 10);
75
+ const minute = parseInt(minuteStr, 10);
76
+ if (isNaN(hour) || isNaN(minute) || hour < 0 || hour > 23 || minute < 0 || minute > 59) {
77
+ return "";
78
+ }
79
+ let displayHour = hour % 24;
80
+ let period;
81
+ if (displayHour < 12) {
82
+ period = "a.m.";
83
+ if (displayHour === 0) {
84
+ displayHour = 12;
85
+ }
86
+ }
87
+ else {
88
+ period = "p.m.";
89
+ if (displayHour !== 12) {
90
+ displayHour -= 12;
91
+ }
92
+ }
93
+ return `${displayHour}:${minute < 10 ? "0" : ""}${minute} ${period}`;
94
+ }
95
+ catch (_b) {
96
+ return "";
97
+ }
98
+ }
99
+ /**
100
+ * Formats an opening time schedule into a readable string.
101
+ *
102
+ * @param openingTime The opening time object containing open and close times.
103
+ * @returns Formatted time schedule string.
104
+ * @example
105
+ * ```typescript
106
+ * const schedule = { open: "09:00", close: "17:00" };
107
+ * const formatted = OpeningHoursHelper.formatTimeSchedule(schedule);
108
+ * console.log(formatted); // "9:00 a.m. - 5:00 p.m."
109
+ * ```
110
+ * @default Returns empty string "" if an error occurs or invalid opening time is provided.
111
+ */
112
+ static formatTimeSchedule(openingTime) {
113
+ try {
114
+ if (!openingTime || !openingTime.open || !openingTime.close) {
115
+ return "";
116
+ }
117
+ // Check if it's a 24-hour schedule
118
+ if (is24Hours(openingTime)) {
119
+ return "24 hrs";
120
+ }
121
+ const openTime = OpeningHoursHelper.convertSingleTimeTo12Hour(openingTime.open);
122
+ const closeTime = OpeningHoursHelper.convertSingleTimeTo12Hour(openingTime.close);
123
+ // Check if conversion failed (returned empty string)
124
+ if (openTime === "" || closeTime === "") {
125
+ return "";
126
+ }
127
+ return `${openTime} - ${closeTime}`;
128
+ }
129
+ catch (_a) {
130
+ return "";
131
+ }
132
+ }
133
+ /**
134
+ * Gets the day number (1-7) for a given day string.
135
+ *
136
+ * @param day The two-character day string (e.g., "mo", "tu").
137
+ * @returns The day number (1-7), or -1 if the day is invalid.
138
+ * @example
139
+ * ```typescript
140
+ * const dayNumber = OpeningHoursHelper.getDayNumber("mo");
141
+ * console.log(dayNumber); // 1
142
+ *
143
+ * const invalidDay = OpeningHoursHelper.getDayNumber("invalid");
144
+ * console.log(invalidDay); // -1
145
+ * ```
146
+ * @default Returns -1 if an error occurs or invalid day string is provided.
147
+ */
148
+ static getDayNumber(day) {
149
+ try {
150
+ switch (day) {
151
+ case "mo":
152
+ return 1;
153
+ case "tu":
154
+ return 2;
155
+ case "we":
156
+ return 3;
157
+ case "th":
158
+ return 4;
159
+ case "fr":
160
+ return 5;
161
+ case "sa":
162
+ return 6;
163
+ case "su":
164
+ return 7;
165
+ default:
166
+ return -1;
167
+ }
168
+ }
169
+ catch (_a) {
170
+ return -1;
171
+ }
172
+ }
173
+ /**
174
+ * Gets the full day name (localized) for a given day string.
175
+ *
176
+ * @param day The two-character day string (e.g., "mo", "tu").
177
+ * @returns The localized day name, or an empty string if the day is invalid.
178
+ * @example
179
+ * ```typescript
180
+ * const dayName = OpeningHoursHelper.getDayName("mo");
181
+ * console.log(dayName); // "Monday" (or localized equivalent)
182
+ *
183
+ * const invalidDay = OpeningHoursHelper.getDayName("invalid");
184
+ * console.log(invalidDay); // ""
185
+ * ```
186
+ * @default Returns empty string "" if an error occurs or invalid day string is provided.
187
+ */
188
+ static getDayName(day) {
189
+ try {
190
+ const dayNumber = OpeningHoursHelper.getDayNumber(day);
191
+ if (dayNumber === -1) {
192
+ return "";
193
+ }
194
+ const date = new Date(2024, 0, dayNumber);
195
+ try {
196
+ const currentLang = sdk_1.InternalMapVXSDK.getLang();
197
+ return date.toLocaleDateString(currentLang, { weekday: "long" });
198
+ }
199
+ catch (error) {
200
+ // Fallback to English if the language is not valid
201
+ return date.toLocaleDateString("en", { weekday: "long" });
202
+ }
203
+ }
204
+ catch (_a) {
205
+ return "";
206
+ }
207
+ }
208
+ /**
209
+ * Sorts the opening hours object by day of the week.
210
+ *
211
+ * @param openingHours The opening hours object to sort.
212
+ * @returns A new object with the opening hours sorted by day of the week.
213
+ * @example
214
+ * ```typescript
215
+ * const unsortedHours = { fr: [...], mo: [...], we: [...] };
216
+ * const sortedHours = OpeningHoursHelper.sortDays(unsortedHours);
217
+ * console.log(Object.keys(sortedHours)); // ["mo", "we", "fr"]
218
+ * ```
219
+ * @default Returns the original openingHours object if an error occurs.
220
+ */
221
+ static sortDays(openingHours) {
222
+ try {
223
+ return Object.fromEntries(Object.entries(openingHours).sort(([keyA], [keyB]) => {
224
+ const dayNumberA = OpeningHoursHelper.getDayNumber(keyA);
225
+ const dayNumberB = OpeningHoursHelper.getDayNumber(keyB);
226
+ return dayNumberA - dayNumberB;
227
+ }));
228
+ }
229
+ catch (_a) {
230
+ return openingHours;
231
+ }
232
+ }
233
+ /**
234
+ * Checks if a store is open from the previous day (for overnight hours).
235
+ *
236
+ * @param openingHours The opening hours of the store.
237
+ * @param currentDate Optional date to check against. If not provided, uses the current date.
238
+ * @returns `true` if the store is open from the previous day, `false` otherwise.
239
+ * @example
240
+ * ```typescript
241
+ * const overnightHours = { mo: [{ open: "22:00", close: "06:00" }] };
242
+ * const isOpen = OpeningHoursHelper.isOpenFromPreviousDay(overnightHours);
243
+ * console.log(isOpen); // true if current time is between 22:00 and 06:00
244
+ * ```
245
+ * @default Returns `false` if an error occurs or invalid opening hours are provided.
246
+ */
247
+ static isOpenFromPreviousDay(openingHours, currentDate) {
248
+ try {
249
+ if (!openingHours || typeof openingHours !== "object") {
250
+ return false;
251
+ }
252
+ const now = currentDate || new Date(); // Gets the current date
253
+ const yesterday = new Date(now); // Creates a copy of the current date
254
+ OpeningHoursHelper.previousDate(yesterday);
255
+ const yesterdayString = OpeningHoursHelper.getDay(yesterday);
256
+ if (yesterdayString == null) {
257
+ return false;
258
+ }
259
+ const intervals = openingHours[yesterdayString];
260
+ if (!intervals || !Array.isArray(intervals) || intervals.length === 0) {
261
+ return false;
262
+ }
263
+ for (const interval of intervals) {
264
+ // Check if it's a 24-hour schedule
265
+ if (is24Hours(interval)) {
266
+ return true;
267
+ }
268
+ if (interval &&
269
+ interval.open &&
270
+ interval.close &&
271
+ OpeningHoursHelper.isValidTime(interval.open) &&
272
+ OpeningHoursHelper.isValidTime(interval.close)) {
273
+ // Create the date object based on yesterday
274
+ const openTime = OpeningHoursHelper.parseTimeAsDate(interval.open, yesterday);
275
+ const closeTime = OpeningHoursHelper.parseTimeAsDate(interval.close, yesterday);
276
+ if (openTime > closeTime) {
277
+ OpeningHoursHelper.nextDate(closeTime);
278
+ }
279
+ if (now >= openTime && now <= closeTime) {
280
+ return true; // The current time is within this interval
281
+ }
282
+ }
283
+ }
284
+ return false;
285
+ }
286
+ catch (_a) {
287
+ return false;
288
+ }
289
+ }
290
+ /**
291
+ * Modifies the given Date object to represent the previous day.
292
+ *
293
+ * @param date The Date object to modify. This object will be mutated.
294
+ * @returns This function modifies the Date object in place and does not return a value.
295
+ * @example
296
+ * ```typescript
297
+ * const date = new Date(2024, 0, 15); // January 15, 2024
298
+ * OpeningHoursHelper.previousDate(date);
299
+ * console.log(date.getDate()); // 14
300
+ * ```
301
+ */
302
+ static previousDate(date) {
303
+ try {
304
+ const day = date.getDate();
305
+ date.setDate(day - 1);
306
+ }
307
+ catch (_a) { }
308
+ }
309
+ /**
310
+ * Modifies the given Date object to represent the next day.
311
+ *
312
+ * @param date The Date object to modify. This object will be mutated.
313
+ * @returns This function modifies the Date object in place and does not return a value.
314
+ * @example
315
+ * ```typescript
316
+ * const date = new Date(2024, 0, 15); // January 15, 2024
317
+ * OpeningHoursHelper.nextDate(date);
318
+ * console.log(date.getDate()); // 16
319
+ * ```
320
+ */
321
+ static nextDate(date) {
322
+ try {
323
+ const day = date.getDate();
324
+ date.setDate(day + 1);
325
+ }
326
+ catch (_a) { }
327
+ }
328
+ /**
329
+ * Checks if the current time is within the opening hours defined for the current day.
330
+ *
331
+ * @param openingHours An object containing the opening hours for each day of the week.
332
+ * @param currentDate Optional date to check against. If not provided, uses the current date.
333
+ * @returns `true` if the current time is within the opening hours, `false` otherwise.
334
+ * @example
335
+ * ```typescript
336
+ * const hours = { mo: [{ open: "09:00", close: "17:00" }] };
337
+ * const isOpen = OpeningHoursHelper.isWithinOpeningHours(hours);
338
+ * console.log(isOpen); // true if current time is between 09:00 and 17:00 on Monday
339
+ * ```
340
+ * @default Returns `false` if an error occurs or invalid opening hours are provided.
341
+ */
342
+ static isWithinOpeningHours(openingHours, currentDate) {
343
+ try {
344
+ if (!openingHours || typeof openingHours !== "object") {
345
+ return false;
346
+ }
347
+ const now = currentDate || new Date();
348
+ const dayOfWeek = OpeningHoursHelper.getDay(now);
349
+ if (dayOfWeek == null) {
350
+ return false;
351
+ }
352
+ if (OpeningHoursHelper.isOpenFromPreviousDay(openingHours, now)) {
353
+ return true;
354
+ }
355
+ const intervals = openingHours[dayOfWeek];
356
+ if (!intervals || !Array.isArray(intervals) || intervals.length === 0) {
357
+ return false;
358
+ }
359
+ for (const interval of intervals) {
360
+ // Check if it's a 24-hour schedule
361
+ if (is24Hours(interval)) {
362
+ return true;
363
+ }
364
+ if (interval &&
365
+ interval.open &&
366
+ interval.close &&
367
+ OpeningHoursHelper.isValidTime(interval.open) &&
368
+ OpeningHoursHelper.isValidTime(interval.close)) {
369
+ // Create Date objects based on today
370
+ const openTime = OpeningHoursHelper.parseTimeAsDate(interval.open, now);
371
+ const closeTime = OpeningHoursHelper.parseTimeAsDate(interval.close, now);
372
+ if (openTime >= closeTime) {
373
+ OpeningHoursHelper.nextDate(closeTime);
374
+ }
375
+ if (now >= openTime && now <= closeTime) {
376
+ return true;
377
+ }
378
+ }
379
+ }
380
+ return false; // The current time is not within any interval
381
+ }
382
+ catch (_a) {
383
+ return false;
384
+ }
385
+ }
386
+ /**
387
+ * Checks if there are opening times defined for today.
388
+ *
389
+ * @param openingHours The opening hours of a store.
390
+ * @returns `true` if there are opening times for today, `false` otherwise.
391
+ * @example
392
+ * ```typescript
393
+ * const hours = { mo: [{ open: "09:00", close: "17:00" }] };
394
+ * const hasHours = OpeningHoursHelper.hasOpeningHoursToday(hours);
395
+ * console.log(hasHours); // true if today is Monday
396
+ * ```
397
+ * @default Returns `false` if an error occurs or invalid opening hours are provided.
398
+ */
399
+ static hasOpeningHoursToday(openingHours) {
400
+ try {
401
+ if (!openingHours || typeof openingHours !== "object") {
402
+ return false;
403
+ }
404
+ const now = new Date();
405
+ const day = OpeningHoursHelper.getDay(now);
406
+ if (day == null) {
407
+ return false;
408
+ }
409
+ const intervals = openingHours[day];
410
+ return !!(intervals && intervals.length > 0);
411
+ }
412
+ catch (_a) {
413
+ return false;
414
+ }
415
+ }
416
+ /**
417
+ * Checks if a given string is a valid time in HH:mm format.
418
+ *
419
+ * @param time The string to validate.
420
+ * @returns `true` if the string is a valid time, `false` otherwise.
421
+ * @example
422
+ * ```typescript
423
+ * const isValid = OpeningHoursHelper.isValidTime("14:30");
424
+ * console.log(isValid); // true
425
+ *
426
+ * const isInvalid = OpeningHoursHelper.isValidTime("25:00");
427
+ * console.log(isInvalid); // false
428
+ * ```
429
+ * @default Returns `false` if an error occurs or invalid time format is provided.
430
+ */
431
+ static isValidTime(time) {
432
+ try {
433
+ if (!time || typeof time !== "string") {
434
+ return false;
435
+ }
436
+ const timeRegex = /^([01][0-9]|2[0-3]):[0-5][0-9]$/; // HH:mm format (requires leading zero)
437
+ return timeRegex.test(time);
438
+ }
439
+ catch (_a) {
440
+ return false;
441
+ }
442
+ }
443
+ /**
444
+ * Parses a time string (HH:mm) and combines it with a date to create a new Date object.
445
+ *
446
+ * @param time The time string in HH:mm format (e.g., "14:30").
447
+ * @param date An optional Date object to combine with the time. If not provided, the current date is used.
448
+ * @returns A new Date object representing the combined date and time.
449
+ * @example
450
+ * ```typescript
451
+ * const date = new Date(2024, 0, 15);
452
+ * const timeDate = OpeningHoursHelper.parseTimeAsDate("14:30", date);
453
+ * console.log(timeDate); // Date object for January 15, 2024 at 2:30 PM
454
+ * ```
455
+ * @default Returns current date if an error occurs or invalid time is provided.
456
+ */
457
+ static parseTimeAsDate(time, date) {
458
+ try {
459
+ const [hours, minutes] = time.split(":").map(Number);
460
+ const baseDate = date ? new Date(date) : new Date();
461
+ const newDate = new Date(baseDate.getFullYear(), baseDate.getMonth(), baseDate.getDate(), hours, minutes, 0, 0);
462
+ return newDate;
463
+ }
464
+ catch (_a) {
465
+ return new Date();
466
+ }
467
+ }
468
+ /**
469
+ * Flattens an array of OpeningTime objects into a single OpeningTime object,
470
+ * taking the earliest open time and the latest close time.
471
+ *
472
+ * @param openingTimes The array of OpeningTime objects to flatten.
473
+ * @returns A single OpeningTime object representing the flattened time range.
474
+ * @example
475
+ * ```typescript
476
+ * const times = [
477
+ * { open: "09:00", close: "12:00" },
478
+ * { open: "14:00", close: "18:00" }
479
+ * ];
480
+ * const flattened = OpeningHoursHelper.flattenOpeningTimes(times);
481
+ * console.log(flattened); // { open: "09:00", close: "18:00" }
482
+ * ```
483
+ * @default Returns `{ open: "00:00", close: "00:00" }` if an error occurs or invalid array is provided.
484
+ */
485
+ static flattenOpeningTimes(openingTimes) {
486
+ try {
487
+ if (!openingTimes || !Array.isArray(openingTimes) || openingTimes.length === 0) {
488
+ return { open: "00:00", close: "00:00" };
489
+ }
490
+ OpeningHoursHelper.sortOpeningTimesByOpen(openingTimes);
491
+ const first = openingTimes[0];
492
+ const last = openingTimes[openingTimes.length - 1];
493
+ if (!first || !last || !first.open || !last.close) {
494
+ return { open: "00:00", close: "00:00" };
495
+ }
496
+ return {
497
+ open: first.open,
498
+ close: last.close,
499
+ };
500
+ }
501
+ catch (_a) {
502
+ return { open: "00:00", close: "00:00" };
503
+ }
504
+ }
505
+ /**
506
+ * Sorts a list of OpeningTime objects in place, based on the 'open' property.
507
+ *
508
+ * This method mutates the array and returns a reference to the same array.
509
+ *
510
+ * @param openingTimes The array of OpeningTime objects to sort. This array will be mutated.
511
+ * @returns The sorted array of OpeningTime objects (mutated in place).
512
+ * @example
513
+ * ```typescript
514
+ * const times = [
515
+ * { open: "14:00", close: "18:00" },
516
+ * { open: "09:00", close: "12:00" }
517
+ * ];
518
+ * const sorted = OpeningHoursHelper.sortOpeningTimesByOpen(times);
519
+ * console.log(sorted[0].open); // "09:00"
520
+ * ```
521
+ * @default Returns the original array if an error occurs.
522
+ */
523
+ static sortOpeningTimesByOpen(openingTimes) {
524
+ try {
525
+ return openingTimes.sort((a, b) => {
526
+ // Compare the 'open' times as strings
527
+ return a.open.localeCompare(b.open);
528
+ });
529
+ }
530
+ catch (_a) {
531
+ return openingTimes;
532
+ }
533
+ }
534
+ /**
535
+ * Formats the opening hours for the current day into a string representation.
536
+ *
537
+ * @param openingHours The opening hours for the store.
538
+ * @returns A string representing the opening hours for the current day, or an empty string if there are no opening hours for today.
539
+ * @example
540
+ * ```typescript
541
+ * const hours = { mo: [{ open: "09:00", close: "17:00" }] };
542
+ * const schedule = OpeningHoursHelper.formatCurrentDaySchedule(hours);
543
+ * console.log(schedule); // "9:00 a.m. - 5:00 p.m." (if today is Monday)
544
+ * ```
545
+ * @default Returns empty string "" if an error occurs or no opening hours for today.
546
+ */
547
+ static formatCurrentDaySchedule(openingHours) {
548
+ try {
549
+ const now = new Date();
550
+ const day = OpeningHoursHelper.getDay(now);
551
+ if (day == null) {
552
+ return "";
553
+ }
554
+ const intervals = openingHours[day];
555
+ if (intervals && intervals.length > 0) {
556
+ const flattenedTime = OpeningHoursHelper.flattenOpeningTimes(intervals);
557
+ return OpeningHoursHelper.formatTimeSchedule(flattenedTime);
558
+ }
559
+ else {
560
+ return "";
561
+ }
562
+ }
563
+ catch (_a) {
564
+ return "";
565
+ }
566
+ }
567
+ /**
568
+ * Formats the opening hours for the previous day into a string representation.
569
+ *
570
+ * @param openingHours The opening hours for the store.
571
+ * @returns A string representing the opening hours for the previous day, or an empty string if there are no opening hours for yesterday.
572
+ * @example
573
+ * ```typescript
574
+ * const hours = { su: [{ open: "10:00", close: "15:00" }] };
575
+ * const schedule = OpeningHoursHelper.formatPreviousDaySchedule(hours);
576
+ * console.log(schedule); // "10:00 a.m. - 3:00 p.m." (if yesterday was Sunday)
577
+ * ```
578
+ * @default Returns empty string "" if an error occurs or no opening hours for yesterday.
579
+ */
580
+ static formatPreviousDaySchedule(openingHours) {
581
+ try {
582
+ const yesterday = new Date();
583
+ OpeningHoursHelper.previousDate(yesterday);
584
+ const day = OpeningHoursHelper.getDay(yesterday);
585
+ if (day == null) {
586
+ return "";
587
+ }
588
+ const intervals = openingHours[day];
589
+ if (intervals && intervals.length > 0) {
590
+ const flattenedTime = OpeningHoursHelper.flattenOpeningTimes(intervals);
591
+ return OpeningHoursHelper.formatTimeSchedule(flattenedTime);
592
+ }
593
+ else {
594
+ return "";
595
+ }
596
+ }
597
+ catch (_a) {
598
+ return "";
599
+ }
600
+ }
601
+ /**
602
+ * Checks if the current time is within the specified opening hours.
603
+ *
604
+ * @param openHour The opening time in HH:mm format (e.g., "09:00").
605
+ * @param closeHour The closing time in HH:mm format (e.g., "18:00").
606
+ * @param currentHour The current time in HH:mm format (e.g., "14:30").
607
+ * @returns `true` if the current time is within the opening hours, `false` otherwise.
608
+ * @example
609
+ * ```typescript
610
+ * const isWithinHours = OpeningHoursHelper.isValidSchedule("09:00", "17:00", "14:30");
611
+ * console.log(isWithinHours); // true
612
+ *
613
+ * const isOutsideHours = OpeningHoursHelper.isValidSchedule("09:00", "17:00", "20:00");
614
+ * console.log(isOutsideHours); // false
615
+ * ```
616
+ * @default Returns `false` if an error occurs or invalid time format is provided.
617
+ */
618
+ static isValidSchedule(openHour, closeHour, currentHour) {
619
+ try {
620
+ if (!OpeningHoursHelper.isValidTime(openHour) ||
621
+ !OpeningHoursHelper.isValidTime(closeHour) ||
622
+ !OpeningHoursHelper.isValidTime(currentHour)) {
623
+ return false;
624
+ }
625
+ const minutesOpen = OpeningHoursHelper.toMinutes(openHour);
626
+ const minutesClose = OpeningHoursHelper.toMinutes(closeHour);
627
+ const minutesCurrent = OpeningHoursHelper.toMinutes(currentHour);
628
+ return minutesCurrent >= minutesOpen && minutesCurrent <= minutesClose;
629
+ }
630
+ catch (_a) {
631
+ return false;
632
+ }
633
+ }
634
+ /**
635
+ * Parses a time string (HH:mm) and creates a Date object for today with that time.
636
+ *
637
+ * @param time The time string in HH:mm format (e.g., "14:30").
638
+ * @param baseDate Optional base date to use. If not provided, uses the current date.
639
+ * @returns A Date object representing the date with the specified time.
640
+ * @example
641
+ * ```typescript
642
+ * const timeDate = OpeningHoursHelper.parseTimeToDate("14:30");
643
+ * console.log(timeDate); // Date object for today at 2:30 PM
644
+ * ```
645
+ * @default Returns current date if an error occurs or invalid time is provided.
646
+ */
647
+ static parseTimeToDate(time, baseDate) {
648
+ try {
649
+ if (!time || typeof time !== "string") {
650
+ return new Date();
651
+ }
652
+ const [hoursStr, minutesStr] = time.split(":");
653
+ if (!hoursStr || !minutesStr) {
654
+ return new Date();
655
+ }
656
+ const hours = parseInt(hoursStr, 10);
657
+ const minutes = parseInt(minutesStr, 10);
658
+ if (isNaN(hours) || isNaN(minutes)) {
659
+ return new Date();
660
+ }
661
+ const date = baseDate ? new Date(baseDate) : new Date();
662
+ date.setHours(hours, minutes, 0, 0);
663
+ return date;
664
+ }
665
+ catch (_a) {
666
+ return new Date();
667
+ }
668
+ }
669
+ /**
670
+ * Converts an array of day abbreviations to a readable day range string.
671
+ *
672
+ * @param days An array of day abbreviations (e.g., ["Mo", "Tu", "We"]).
673
+ * @returns A string representing the day range (e.g., "Monday - Wednesday" for consecutive days, or just "Monday" for a single day).
674
+ * @example
675
+ * ```typescript
676
+ * const range = OpeningHoursHelper.getDaysRange(["Mo", "Tu", "We"]);
677
+ * console.log(range); // "Monday - Wednesday"
678
+ *
679
+ * const singleDay = OpeningHoursHelper.getDaysRange(["Mo"]);
680
+ * console.log(singleDay); // "Monday"
681
+ * ```
682
+ * @default Returns empty string "" if an error occurs or empty array is provided.
683
+ */
684
+ static getDaysRange(days) {
685
+ try {
686
+ const dayMap = {
687
+ Mo: "Monday",
688
+ Tu: "Tuesday",
689
+ We: "Wednesday",
690
+ Th: "Thursday",
691
+ Fr: "Friday",
692
+ Sa: "Saturday",
693
+ Su: "Sunday",
694
+ };
695
+ if (days.length === 0) {
696
+ return "";
697
+ }
698
+ const firstDay = dayMap[days[0]] || "Invalid day";
699
+ const lastDay = dayMap[days[days.length - 1]] || "Invalid day";
700
+ if (days.length === 1) {
701
+ return firstDay;
702
+ }
703
+ return `${firstDay} - ${lastDay}`;
704
+ }
705
+ catch (_a) {
706
+ return "";
707
+ }
708
+ }
709
+ /**
710
+ * Finds the next closest time from an array of time strings relative to the current date.
711
+ *
712
+ * @param times An array of time strings in HH:mm format (e.g., ["09:00", "14:30", "18:00"]).
713
+ * @param currentDate The current date and time to compare against.
714
+ * @returns The closest upcoming time string, or empty string if no times are provided.
715
+ * @example
716
+ * ```typescript
717
+ * const times = ["09:00", "12:00", "18:00"];
718
+ * const currentTime = new Date(); // Assume it's 10:30 AM
719
+ * const nextTime = OpeningHoursHelper.getNextClosestTime(times, currentTime);
720
+ * console.log(nextTime); // "12:00"
721
+ * ```
722
+ * @default Returns empty string "" if an error occurs or no times are provided.
723
+ */
724
+ static getNextClosestTime(times, currentDate) {
725
+ try {
726
+ const nowMinutes = currentDate.getHours() * 60 + currentDate.getMinutes();
727
+ const timesWithDiffs = times.map((time) => {
728
+ const timeMinutes = OpeningHoursHelper.toMinutes(time);
729
+ const diff = timeMinutes - nowMinutes + (timeMinutes < nowMinutes ? 24 * 60 : 0);
730
+ return { time, diff };
731
+ });
732
+ timesWithDiffs.sort((a, b) => a.diff - b.diff);
733
+ return timesWithDiffs.length > 0 ? timesWithDiffs[0].time : "";
734
+ }
735
+ catch (_a) {
736
+ return "";
737
+ }
738
+ }
739
+ /**
740
+ * Checks if a place is currently open based on its opening hours.
741
+ *
742
+ * @param openingHours An object containing the opening hours for each day of the week.
743
+ * @param currentDate Optional date to check against. If not provided, uses the current date.
744
+ * @returns `true` if the place is currently open, `false` otherwise.
745
+ * @example
746
+ * ```typescript
747
+ * const hours = { mo: [{ open: "09:00", close: "17:00" }] };
748
+ * const isOpen = OpeningHoursHelper.isPlaceOpen(hours);
749
+ * console.log(isOpen); // true if current time is between 09:00 and 17:00 on Monday
750
+ * ```
751
+ * @default Returns `false` if an error occurs or invalid opening hours are provided.
752
+ */
753
+ static isPlaceOpen(openingHours, currentDate) {
754
+ try {
755
+ if (!openingHours || typeof openingHours !== "object") {
756
+ return false;
757
+ }
758
+ const date = currentDate || new Date();
759
+ const dayName = OpeningHoursHelper.getDay(date);
760
+ if (dayName == null ||
761
+ !openingHours[dayName] ||
762
+ !Array.isArray(openingHours[dayName]) ||
763
+ openingHours[dayName].length === 0) {
764
+ return false;
765
+ }
766
+ const daySchedule = openingHours[dayName][0];
767
+ if (!daySchedule || !daySchedule.open || !daySchedule.close) {
768
+ return false;
769
+ }
770
+ const startTime = daySchedule.open;
771
+ const endTime = daySchedule.close;
772
+ if (!OpeningHoursHelper.isValidTime(startTime) || !OpeningHoursHelper.isValidTime(endTime)) {
773
+ return false;
774
+ }
775
+ const startDate = OpeningHoursHelper.parseTimeToDate(startTime, date);
776
+ const endDate = OpeningHoursHelper.parseTimeToDate(endTime, date);
777
+ if (endDate < startDate) {
778
+ endDate.setDate(endDate.getDate() + 1);
779
+ }
780
+ const time = new Date(date);
781
+ time.setSeconds(0, 0);
782
+ return time >= startDate && time <= endDate;
783
+ }
784
+ catch (_a) {
785
+ return false;
786
+ }
787
+ }
788
+ /**
789
+ * Gets the next schedule time (opening or closing) for a place in 12-hour format.
790
+ *
791
+ * @param openingHours An object containing the opening hours for each day of the week.
792
+ * @param currentDate Optional date to check against. If not provided, uses the current date.
793
+ * @returns The next schedule time in 12-hour format (e.g., "9:00 a.m." or "6:00 p.m.").
794
+ * @example
795
+ * ```typescript
796
+ * const hours = { mo: [{ open: "09:00", close: "17:00" }] };
797
+ * const nextSchedule = OpeningHoursHelper.getNextSchedule(hours);
798
+ * console.log(nextSchedule); // "9:00 a.m." if closed, "5:00 p.m." if open
799
+ * ```
800
+ * @default Returns "" if an error occurs or invalid opening hours are provided.
801
+ */
802
+ static getNextSchedule(openingHours, currentDate) {
803
+ try {
804
+ if (!openingHours || typeof openingHours !== "object") {
805
+ return "";
806
+ }
807
+ const date = currentDate || new Date();
808
+ const dayName = OpeningHoursHelper.getDay(date);
809
+ if (dayName == null ||
810
+ !openingHours[dayName] ||
811
+ !Array.isArray(openingHours[dayName]) ||
812
+ openingHours[dayName].length === 0) {
813
+ return "";
814
+ }
815
+ const daySchedule = openingHours[dayName][0];
816
+ if (!daySchedule || !daySchedule.open || !daySchedule.close) {
817
+ return "";
818
+ }
819
+ const isOpen = OpeningHoursHelper.isPlaceOpen(openingHours, date);
820
+ const time = isOpen ? daySchedule.close : daySchedule.open;
821
+ if (!time) {
822
+ return "";
823
+ }
824
+ return OpeningHoursHelper.convertSingleTimeTo12Hour(time);
825
+ }
826
+ catch (_a) {
827
+ return "";
828
+ }
829
+ }
830
+ /**
831
+ * Checks if a specific day has a schedule defined in the opening hours.
832
+ *
833
+ * @param openingHours An object containing the opening hours for each day of the week.
834
+ * @param currentDate Optional date to check against. If not provided, uses the current date.
835
+ * @returns `true` if the day has a schedule defined, `false` otherwise.
836
+ * @example
837
+ * ```typescript
838
+ * const hours = { mo: [{ open: "09:00", close: "17:00" }] };
839
+ * const hasSchedule = OpeningHoursHelper.checkDayHasSchedule(hours);
840
+ * console.log(hasSchedule); // true if today is Monday
841
+ * ```
842
+ * @default Returns `false` if an error occurs or invalid opening hours are provided.
843
+ */
844
+ static checkDayHasSchedule(openingHours, currentDate) {
845
+ try {
846
+ const date = currentDate || new Date();
847
+ const dayName = OpeningHoursHelper.getDay(date);
848
+ if (dayName == null) {
849
+ return false;
850
+ }
851
+ return !!(openingHours && openingHours[dayName]);
852
+ }
853
+ catch (_a) {
854
+ return false;
855
+ }
856
+ }
857
+ /**
858
+ * Converts a time string (HH:mm) to total minutes since midnight.
859
+ *
860
+ * @param time The time string in HH:mm format (e.g., "14:30").
861
+ * @returns The total number of minutes since midnight (e.g., 870 for "14:30").
862
+ * @example
863
+ * ```typescript
864
+ * const minutes = OpeningHoursHelper.toMinutes("14:30");
865
+ * console.log(minutes); // 870
866
+ *
867
+ * const morningMinutes = OpeningHoursHelper.toMinutes("09:00");
868
+ * console.log(morningMinutes); // 540
869
+ * ```
870
+ * @default Returns 0 if an error occurs or invalid time format is provided.
871
+ */
872
+ static toMinutes(time) {
873
+ try {
874
+ if (!time || typeof time !== "string") {
875
+ return 0;
876
+ }
877
+ const [hoursStr, minutesStr] = time.split(":");
878
+ if (!hoursStr || !minutesStr) {
879
+ return 0;
880
+ }
881
+ const hours = parseInt(hoursStr, 10);
882
+ const minutes = parseInt(minutesStr, 10);
883
+ if (isNaN(hours) || isNaN(minutes)) {
884
+ return 0;
885
+ }
886
+ return hours * 60 + minutes;
887
+ }
888
+ catch (_a) {
889
+ return 0;
890
+ }
891
+ }
892
+ }
893
+ exports.OpeningHoursHelper = OpeningHoursHelper;
894
+ /**
895
+ * Checks if an OpeningTime represents a 24-hour schedule (open all day).
896
+ *
897
+ * @param openingTime The OpeningTime to check.
898
+ * @returns `true` if the schedule represents 24 hours, `false` otherwise.
899
+ */
900
+ function is24Hours(openingTime) {
901
+ var _a, _b, _c, _d;
902
+ if (!(openingTime === null || openingTime === void 0 ? void 0 : openingTime.open) || !(openingTime === null || openingTime === void 0 ? void 0 : openingTime.close)) {
903
+ return false;
904
+ }
905
+ const open = (_b = (_a = openingTime === null || openingTime === void 0 ? void 0 : openingTime.open) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : "";
906
+ const close = (_d = (_c = openingTime === null || openingTime === void 0 ? void 0 : openingTime.close) === null || _c === void 0 ? void 0 : _c.trim()) !== null && _d !== void 0 ? _d : "";
907
+ // Check if open is "00:00" and close is "24:00" or "00:00"
908
+ return (open === "00:00" && close === "24:00") || (open === "00:00" && close === "00:00");
909
+ }
910
+ exports.is24Hours = is24Hours;
911
+ //# sourceMappingURL=opening-hours-helper.js.map