@swisspost/internet-header 1.8.3 → 1.9.1

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 (265) hide show
  1. package/dist/cjs/index-87874f19.js +50 -1
  2. package/dist/cjs/{klp-widget.controller-d86525e1.js → klp-widget.controller-7908f551.js} +39 -27
  3. package/dist/cjs/klp-widget.controller-7908f551.js.map +1 -0
  4. package/dist/cjs/{language.service-516d1809.js → language.service-9334ca5d.js} +7 -2
  5. package/dist/cjs/language.service-9334ca5d.js.map +1 -0
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/post-klp-login-widget.cjs.entry.js +3 -3
  8. package/dist/cjs/post-klp-login-widget.cjs.entry.js.map +1 -1
  9. package/dist/cjs/post-language-switch.cjs.entry.js +3 -3
  10. package/dist/cjs/post-language-switch.cjs.entry.js.map +1 -1
  11. package/dist/cjs/post-logo.cjs.entry.js +2 -29
  12. package/dist/cjs/post-logo.cjs.entry.js.map +1 -1
  13. package/dist/cjs/post-main-navigation.cjs.entry.js +3 -3
  14. package/dist/cjs/post-main-navigation.cjs.entry.js.map +1 -1
  15. package/dist/cjs/post-meta-navigation.cjs.entry.js +2 -2
  16. package/dist/cjs/post-meta-navigation.cjs.entry.js.map +1 -1
  17. package/dist/cjs/post-search.cjs.entry.js +2 -2
  18. package/dist/cjs/post-search.cjs.entry.js.map +1 -1
  19. package/dist/cjs/post-skiplinks.cjs.entry.js +2 -2
  20. package/dist/cjs/{store-915e0360.js → store-b99affc1.js} +2 -1
  21. package/dist/cjs/store-b99affc1.js.map +1 -0
  22. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js +3 -3
  23. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js.map +1 -1
  24. package/dist/cjs/swisspost-internet-footer.cjs.entry.js +20 -5
  25. package/dist/cjs/swisspost-internet-footer.cjs.entry.js.map +1 -1
  26. package/dist/cjs/swisspost-internet-header.cjs.entry.js +75 -22
  27. package/dist/cjs/swisspost-internet-header.cjs.entry.js.map +1 -1
  28. package/dist/cjs/swisspost-internet-header.cjs.js +1 -1
  29. package/dist/collection/assets/config/test-configuration.json +12 -12
  30. package/dist/collection/assets/i18n/translations.js +5 -0
  31. package/dist/collection/assets/i18n/translations.js.map +1 -1
  32. package/dist/collection/assets/js/klp-login-widget.js +8 -8
  33. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.css +61 -126
  34. package/dist/collection/components/post-internet-footer/post-internet-footer.css +26 -22
  35. package/dist/collection/components/post-internet-footer/post-internet-footer.js +20 -4
  36. package/dist/collection/components/post-internet-footer/post-internet-footer.js.map +1 -1
  37. package/dist/collection/components/post-internet-header/logo-animation/logo-animation.js +46 -0
  38. package/dist/collection/components/post-internet-header/logo-animation/logo-animation.js.map +1 -0
  39. package/dist/collection/components/post-internet-header/post-internet-header.css +27 -2
  40. package/dist/collection/components/post-internet-header/post-internet-header.js +13 -1
  41. package/dist/collection/components/post-internet-header/post-internet-header.js.map +1 -1
  42. package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.css +23 -22
  43. package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.js +1 -1
  44. package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.js.map +1 -1
  45. package/dist/collection/components/post-language-switch/post-language-switch.css +5 -3
  46. package/dist/collection/components/post-logo/post-logo.css +6 -4
  47. package/dist/collection/components/post-logo/post-logo.js +0 -34
  48. package/dist/collection/components/post-logo/post-logo.js.map +1 -1
  49. package/dist/collection/components/post-main-navigation/post-main-navigation.css +6 -2
  50. package/dist/collection/components/post-meta-navigation/post-meta-navigation.css +15 -3
  51. package/dist/collection/components/post-search/post-search.css +6 -3
  52. package/dist/collection/data/store.js +1 -0
  53. package/dist/collection/data/store.js.map +1 -1
  54. package/dist/components/klp-widget.controller.js +38 -26
  55. package/dist/components/klp-widget.controller.js.map +1 -1
  56. package/dist/components/language.service.js +5 -0
  57. package/dist/components/language.service.js.map +1 -1
  58. package/dist/components/post-klp-login-widget2.js +1 -1
  59. package/dist/components/post-klp-login-widget2.js.map +1 -1
  60. package/dist/components/post-language-switch2.js +1 -1
  61. package/dist/components/post-language-switch2.js.map +1 -1
  62. package/dist/components/post-logo2.js +2 -31
  63. package/dist/components/post-logo2.js.map +1 -1
  64. package/dist/components/post-main-navigation2.js +1 -1
  65. package/dist/components/post-main-navigation2.js.map +1 -1
  66. package/dist/components/post-meta-navigation2.js +1 -1
  67. package/dist/components/post-meta-navigation2.js.map +1 -1
  68. package/dist/components/post-search2.js +1 -1
  69. package/dist/components/post-search2.js.map +1 -1
  70. package/dist/components/store.js +1 -0
  71. package/dist/components/store.js.map +1 -1
  72. package/dist/components/swisspost-internet-breadcrumbs.js +1 -1
  73. package/dist/components/swisspost-internet-breadcrumbs.js.map +1 -1
  74. package/dist/components/swisspost-internet-footer.js +21 -5
  75. package/dist/components/swisspost-internet-footer.js.map +1 -1
  76. package/dist/components/swisspost-internet-header.js +67 -14
  77. package/dist/components/swisspost-internet-header.js.map +1 -1
  78. package/dist/docs.d.ts +322 -0
  79. package/dist/docs.json +884 -0
  80. package/dist/esm/index-82f4f02c.js +50 -1
  81. package/dist/esm/{klp-widget.controller-91f5dd0b.js → klp-widget.controller-30d47ff4.js} +39 -27
  82. package/dist/esm/klp-widget.controller-30d47ff4.js.map +1 -0
  83. package/dist/esm/{language.service-faf591b3.js → language.service-bd0f3b6f.js} +7 -2
  84. package/dist/esm/language.service-bd0f3b6f.js.map +1 -0
  85. package/dist/esm/loader.js +1 -1
  86. package/dist/esm/post-klp-login-widget.entry.js +3 -3
  87. package/dist/esm/post-klp-login-widget.entry.js.map +1 -1
  88. package/dist/esm/post-language-switch.entry.js +3 -3
  89. package/dist/esm/post-language-switch.entry.js.map +1 -1
  90. package/dist/esm/post-logo.entry.js +2 -29
  91. package/dist/esm/post-logo.entry.js.map +1 -1
  92. package/dist/esm/post-main-navigation.entry.js +3 -3
  93. package/dist/esm/post-main-navigation.entry.js.map +1 -1
  94. package/dist/esm/post-meta-navigation.entry.js +2 -2
  95. package/dist/esm/post-meta-navigation.entry.js.map +1 -1
  96. package/dist/esm/post-search.entry.js +2 -2
  97. package/dist/esm/post-search.entry.js.map +1 -1
  98. package/dist/esm/post-skiplinks.entry.js +2 -2
  99. package/dist/esm/{store-79377f91.js → store-44830922.js} +2 -1
  100. package/dist/esm/store-44830922.js.map +1 -0
  101. package/dist/esm/swisspost-internet-breadcrumbs.entry.js +3 -3
  102. package/dist/esm/swisspost-internet-breadcrumbs.entry.js.map +1 -1
  103. package/dist/esm/swisspost-internet-footer.entry.js +20 -5
  104. package/dist/esm/swisspost-internet-footer.entry.js.map +1 -1
  105. package/dist/esm/swisspost-internet-header.entry.js +69 -16
  106. package/dist/esm/swisspost-internet-header.entry.js.map +1 -1
  107. package/dist/esm/swisspost-internet-header.js +1 -1
  108. package/dist/esm-es5/index-82f4f02c.js +1 -2
  109. package/dist/esm-es5/index-82f4f02c.js.map +1 -1
  110. package/dist/esm-es5/klp-widget.controller-30d47ff4.js +13 -0
  111. package/dist/esm-es5/klp-widget.controller-30d47ff4.js.map +1 -0
  112. package/dist/esm-es5/language.service-bd0f3b6f.js +2 -0
  113. package/dist/{swisspost-internet-header/p-3e6e0272.system.js.map → esm-es5/language.service-bd0f3b6f.js.map} +1 -1
  114. package/dist/esm-es5/loader.js +1 -1
  115. package/dist/esm-es5/loader.js.map +1 -1
  116. package/dist/esm-es5/post-klp-login-widget.entry.js +1 -1
  117. package/dist/esm-es5/post-klp-login-widget.entry.js.map +1 -1
  118. package/dist/esm-es5/post-language-switch.entry.js +1 -1
  119. package/dist/esm-es5/post-language-switch.entry.js.map +1 -1
  120. package/dist/esm-es5/post-logo.entry.js +1 -1
  121. package/dist/esm-es5/post-logo.entry.js.map +1 -1
  122. package/dist/esm-es5/post-main-navigation.entry.js +1 -1
  123. package/dist/esm-es5/post-main-navigation.entry.js.map +1 -1
  124. package/dist/esm-es5/post-meta-navigation.entry.js +1 -1
  125. package/dist/esm-es5/post-meta-navigation.entry.js.map +1 -1
  126. package/dist/esm-es5/post-search.entry.js +1 -1
  127. package/dist/esm-es5/post-search.entry.js.map +1 -1
  128. package/dist/esm-es5/post-skiplinks.entry.js +1 -1
  129. package/dist/esm-es5/{store-79377f91.js → store-44830922.js} +2 -2
  130. package/dist/esm-es5/store-44830922.js.map +1 -0
  131. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js +2 -2
  132. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js.map +1 -1
  133. package/dist/esm-es5/swisspost-internet-footer.entry.js +1 -1
  134. package/dist/esm-es5/swisspost-internet-footer.entry.js.map +1 -1
  135. package/dist/esm-es5/swisspost-internet-header.entry.js +1 -1
  136. package/dist/esm-es5/swisspost-internet-header.entry.js.map +1 -1
  137. package/dist/esm-es5/swisspost-internet-header.js +1 -1
  138. package/dist/esm-es5/swisspost-internet-header.js.map +1 -1
  139. package/dist/swisspost-internet-header/assets/config/test-configuration.json +12 -12
  140. package/dist/swisspost-internet-header/p-06d32a28.entry.js +7 -0
  141. package/dist/swisspost-internet-header/{p-1055564a.entry.js.map → p-06d32a28.entry.js.map} +1 -1
  142. package/dist/swisspost-internet-header/p-0bfadd54.system.entry.js +2 -0
  143. package/dist/swisspost-internet-header/{p-4bd302a5.system.entry.js.map → p-0bfadd54.system.entry.js.map} +1 -1
  144. package/dist/swisspost-internet-header/p-0dd2de97.entry.js +2 -0
  145. package/dist/swisspost-internet-header/p-0dd2de97.entry.js.map +1 -0
  146. package/dist/swisspost-internet-header/p-1078e964.system.entry.js +2 -0
  147. package/dist/swisspost-internet-header/{p-b8ea3c0a.system.entry.js.map → p-1078e964.system.entry.js.map} +1 -1
  148. package/dist/swisspost-internet-header/p-131078ce.system.entry.js +2 -0
  149. package/dist/swisspost-internet-header/p-131078ce.system.entry.js.map +1 -0
  150. package/dist/swisspost-internet-header/p-1ec4e0ee.system.js +2 -0
  151. package/dist/swisspost-internet-header/p-1ec4e0ee.system.js.map +1 -0
  152. package/dist/swisspost-internet-header/p-262611f7.entry.js +2 -0
  153. package/dist/swisspost-internet-header/{p-df51fa24.entry.js.map → p-262611f7.entry.js.map} +1 -1
  154. package/dist/swisspost-internet-header/p-273fd39b.entry.js +2 -0
  155. package/dist/swisspost-internet-header/{p-bab5139b.entry.js.map → p-273fd39b.entry.js.map} +1 -1
  156. package/dist/swisspost-internet-header/p-3c8504b4.system.entry.js +2 -0
  157. package/dist/swisspost-internet-header/p-3c8504b4.system.entry.js.map +1 -0
  158. package/dist/swisspost-internet-header/p-4099b274.system.js +2 -0
  159. package/dist/swisspost-internet-header/p-4099b274.system.js.map +1 -0
  160. package/dist/swisspost-internet-header/{p-8eb05d18.js → p-459c3983.js} +2 -2
  161. package/dist/swisspost-internet-header/p-459c3983.js.map +1 -0
  162. package/dist/swisspost-internet-header/p-51c15273.entry.js +2 -0
  163. package/dist/swisspost-internet-header/p-51c15273.entry.js.map +1 -0
  164. package/dist/swisspost-internet-header/p-5baac371.system.entry.js +2 -0
  165. package/dist/swisspost-internet-header/p-5baac371.system.entry.js.map +1 -0
  166. package/dist/swisspost-internet-header/p-5d893017.system.js +1 -1
  167. package/dist/swisspost-internet-header/p-5d893017.system.js.map +1 -1
  168. package/dist/swisspost-internet-header/p-64e1182b.entry.js +2 -0
  169. package/dist/swisspost-internet-header/{p-4ae35141.entry.js.map → p-64e1182b.entry.js.map} +1 -1
  170. package/dist/swisspost-internet-header/p-66d1bf9a.js +13 -0
  171. package/dist/swisspost-internet-header/p-66d1bf9a.js.map +1 -0
  172. package/dist/swisspost-internet-header/p-6bb07a80.entry.js +2 -0
  173. package/dist/swisspost-internet-header/p-6bb07a80.entry.js.map +1 -0
  174. package/dist/swisspost-internet-header/{p-bedb8e58.system.entry.js → p-6f69aff4.system.entry.js} +2 -2
  175. package/dist/swisspost-internet-header/p-7bed0797.js +2 -0
  176. package/dist/swisspost-internet-header/p-7bed0797.js.map +1 -0
  177. package/dist/swisspost-internet-header/p-97c90e22.system.entry.js +7 -0
  178. package/dist/swisspost-internet-header/{p-b7d03cb1.system.entry.js.map → p-97c90e22.system.entry.js.map} +1 -1
  179. package/dist/swisspost-internet-header/p-9ab24fb3.entry.js +2 -0
  180. package/dist/swisspost-internet-header/p-9ab24fb3.entry.js.map +1 -0
  181. package/dist/swisspost-internet-header/{p-ed043df2.entry.js → p-9ec1f474.entry.js} +2 -2
  182. package/dist/swisspost-internet-header/p-a366648c.system.entry.js +2 -0
  183. package/dist/swisspost-internet-header/{p-eccdad3c.system.entry.js.map → p-a366648c.system.entry.js.map} +1 -1
  184. package/dist/swisspost-internet-header/p-b4c0cb5a.system.js +13 -0
  185. package/dist/swisspost-internet-header/p-b4c0cb5a.system.js.map +1 -0
  186. package/dist/swisspost-internet-header/p-e2df6e93.system.entry.js +2 -0
  187. package/dist/swisspost-internet-header/p-e2df6e93.system.entry.js.map +1 -0
  188. package/dist/swisspost-internet-header/p-f531c1ea.entry.js +2 -0
  189. package/dist/swisspost-internet-header/p-f531c1ea.entry.js.map +1 -0
  190. package/dist/swisspost-internet-header/p-fed8d74d.system.entry.js +2 -0
  191. package/dist/swisspost-internet-header/p-fed8d74d.system.entry.js.map +1 -0
  192. package/dist/swisspost-internet-header/swisspost-internet-header.css +3 -1
  193. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js +1 -1
  194. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js.map +1 -1
  195. package/dist/types/assets/i18n/translations.d.ts +5 -0
  196. package/dist/types/components/post-internet-footer/post-internet-footer.d.ts +3 -0
  197. package/dist/types/components/post-internet-header/logo-animation/logo-animation.d.ts +1 -0
  198. package/dist/types/components/post-internet-header/post-internet-header.d.ts +4 -1
  199. package/dist/types/components/post-logo/post-logo.d.ts +0 -7
  200. package/dist/types/data/store.d.ts +2 -0
  201. package/dist/types/services/language.service.d.ts +5 -0
  202. package/package.json +10 -10
  203. package/readme.md +45 -10
  204. package/dist/cjs/klp-widget.controller-d86525e1.js.map +0 -1
  205. package/dist/cjs/language.service-516d1809.js.map +0 -1
  206. package/dist/cjs/store-915e0360.js.map +0 -1
  207. package/dist/collection/services/config.service.spec.js +0 -274
  208. package/dist/collection/services/config.service.spec.js.map +0 -1
  209. package/dist/collection/services/route.service.spec.js +0 -109
  210. package/dist/collection/services/route.service.spec.js.map +0 -1
  211. package/dist/collection/services/search/search.service.spec.js +0 -49
  212. package/dist/collection/services/search/search.service.spec.js.map +0 -1
  213. package/dist/collection/tests/setup-tests.js +0 -14
  214. package/dist/collection/tests/setup-tests.js.map +0 -1
  215. package/dist/collection/utils/utils.spec.js +0 -11
  216. package/dist/collection/utils/utils.spec.js.map +0 -1
  217. package/dist/esm/klp-widget.controller-91f5dd0b.js.map +0 -1
  218. package/dist/esm/language.service-faf591b3.js.map +0 -1
  219. package/dist/esm/store-79377f91.js.map +0 -1
  220. package/dist/esm-es5/klp-widget.controller-91f5dd0b.js +0 -13
  221. package/dist/esm-es5/klp-widget.controller-91f5dd0b.js.map +0 -1
  222. package/dist/esm-es5/language.service-faf591b3.js +0 -2
  223. package/dist/esm-es5/language.service-faf591b3.js.map +0 -1
  224. package/dist/esm-es5/store-79377f91.js.map +0 -1
  225. package/dist/swisspost-internet-header/p-011353de.entry.js +0 -2
  226. package/dist/swisspost-internet-header/p-011353de.entry.js.map +0 -1
  227. package/dist/swisspost-internet-header/p-1055564a.entry.js +0 -7
  228. package/dist/swisspost-internet-header/p-24aba4ed.system.js +0 -13
  229. package/dist/swisspost-internet-header/p-24aba4ed.system.js.map +0 -1
  230. package/dist/swisspost-internet-header/p-30669cd6.entry.js +0 -2
  231. package/dist/swisspost-internet-header/p-30669cd6.entry.js.map +0 -1
  232. package/dist/swisspost-internet-header/p-36d624d3.entry.js +0 -2
  233. package/dist/swisspost-internet-header/p-36d624d3.entry.js.map +0 -1
  234. package/dist/swisspost-internet-header/p-3e6e0272.system.js +0 -2
  235. package/dist/swisspost-internet-header/p-41e08c10.system.entry.js +0 -2
  236. package/dist/swisspost-internet-header/p-41e08c10.system.entry.js.map +0 -1
  237. package/dist/swisspost-internet-header/p-4ae35141.entry.js +0 -2
  238. package/dist/swisspost-internet-header/p-4bd302a5.system.entry.js +0 -2
  239. package/dist/swisspost-internet-header/p-541c204b.entry.js +0 -2
  240. package/dist/swisspost-internet-header/p-541c204b.entry.js.map +0 -1
  241. package/dist/swisspost-internet-header/p-77f72b8d.js +0 -13
  242. package/dist/swisspost-internet-header/p-77f72b8d.js.map +0 -1
  243. package/dist/swisspost-internet-header/p-8d12fe0c.system.entry.js +0 -2
  244. package/dist/swisspost-internet-header/p-8d12fe0c.system.entry.js.map +0 -1
  245. package/dist/swisspost-internet-header/p-8d5f4d78.entry.js +0 -2
  246. package/dist/swisspost-internet-header/p-8d5f4d78.entry.js.map +0 -1
  247. package/dist/swisspost-internet-header/p-8eb05d18.js.map +0 -1
  248. package/dist/swisspost-internet-header/p-a02140c3.system.entry.js +0 -2
  249. package/dist/swisspost-internet-header/p-a02140c3.system.entry.js.map +0 -1
  250. package/dist/swisspost-internet-header/p-b6f237a1.system.entry.js +0 -2
  251. package/dist/swisspost-internet-header/p-b6f237a1.system.entry.js.map +0 -1
  252. package/dist/swisspost-internet-header/p-b7d03cb1.system.entry.js +0 -7
  253. package/dist/swisspost-internet-header/p-b8ea3c0a.system.entry.js +0 -2
  254. package/dist/swisspost-internet-header/p-bab5139b.entry.js +0 -2
  255. package/dist/swisspost-internet-header/p-df51fa24.entry.js +0 -2
  256. package/dist/swisspost-internet-header/p-e057071d.js +0 -2
  257. package/dist/swisspost-internet-header/p-e057071d.js.map +0 -1
  258. package/dist/swisspost-internet-header/p-eccdad3c.system.entry.js +0 -2
  259. package/dist/swisspost-internet-header/p-f445483f.system.entry.js +0 -2
  260. package/dist/swisspost-internet-header/p-f445483f.system.entry.js.map +0 -1
  261. package/dist/swisspost-internet-header/p-fa230c6b.system.js +0 -2
  262. package/dist/swisspost-internet-header/p-fa230c6b.system.js.map +0 -1
  263. package/dist/types/tests/setup-tests.d.ts +0 -0
  264. /package/dist/swisspost-internet-header/{p-bedb8e58.system.entry.js.map → p-6f69aff4.system.entry.js.map} +0 -0
  265. /package/dist/swisspost-internet-header/{p-ed043df2.entry.js.map → p-9ec1f474.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"file":"language.service-516d1809.js","mappings":"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","names":["state"],"sources":["./src/assets/i18n/translations.ts","./src/services/language.service.ts"],"sourcesContent":["export const translations = {\n 'Active navigation element': {\n de: 'Aktives Navigationselement',\n fr: 'Élément de navigation actif',\n it: 'Elemento di navigazione attivo',\n },\n 'Close overlay': {\n de: 'Overlay Schliessen',\n fr: 'Fermer la superposition',\n it: 'Chiudi sovrapposizione',\n },\n 'Current language is English': {\n de: 'Die aktuelle Sprache ist Deutsch',\n fr: 'La langue actuelle est le français',\n it: \"La lingua corrente è l'italiano\",\n },\n 'Change language': {\n de: 'Sprache wechseln',\n fr: 'Changer de langue',\n it: 'Cambia lingua',\n },\n 'Go to main content': {\n de: 'Zum Hauptinhalt springen',\n fr: 'Aller au contenu principal',\n it: 'Vai al contenuto principale',\n },\n 'Go to search': {\n de: 'Zur Suche springen',\n fr: 'Aller à la recherche',\n it: 'Vai alla ricerca',\n },\n 'Go to login': {\n de: 'Zum Login springen',\n fr: 'Aller au login',\n it: 'Vai al login',\n },\n 'Open menu': {\n de: 'Menü öffnen',\n fr: 'Ouvrir le menu',\n it: 'Apri il menu',\n },\n 'Navigate on post.ch': {\n de: 'Navigieren auf post.ch',\n fr: 'Naviguer sur post.ch',\n it: 'Navigate su post.ch',\n },\n 'Skip Links': {\n de: 'Sprung Links',\n fr: 'Sauter les liens',\n it: 'Salta i link',\n },\n 'Intermediary links': {\n de: 'Intermediäre Links',\n fr: 'Liens intermédiaires',\n it: 'Collegamenti intermedi',\n },\n};\n","import { translations } from '../assets/i18n/translations';\nimport { state } from '../data/store';\n\nexport const getUserLang = (\n supportedLanguages: string[],\n implementorPreferredLanguage?: string,\n localStorageKey?: string,\n cookieKey?: string,\n) => {\n // If there are no supported languages, well...\n if (supportedLanguages.length === 0) {\n return undefined;\n }\n\n // If there is only one language in the config, use this\n if (supportedLanguages.length === 1) {\n return supportedLanguages[0];\n }\n\n const url = new URL(window.location.href);\n\n /**\n * Build array of possible language definitions in order of importance.\n * At the end is a filter function that will weed out any undefined or null entries.\n */\n let languagesSet: Array<string> = [\n // Check if implementor overrides lang config\n implementorPreferredLanguage,\n\n // Check query string param\n url.searchParams.get('lang'),\n\n // Check url pathname\n url.pathname.split('/').find(segment => supportedLanguages.includes(segment)),\n\n // Check local storage with the key provided\n localStorageKey !== undefined ? window.localStorage.getItem(localStorageKey) : null,\n\n // Check cookies\n getCookie('language'),\n getCookie('lang'),\n cookieKey !== undefined ? getCookie(cookieKey) : null,\n\n // Check document language\n document.documentElement.lang,\n\n // Check browser preferred language\n getPreferredLanguageFromBrowser(supportedLanguages),\n\n // Check the state\n state.currentLanguage,\n ].filter((lang): lang is string => !!lang);\n\n // Check the set of languages to see if it matches\n // any of the supported languages. Return the first\n // supported language if there is none set\n const lang =\n languagesSet.find(language => supportedLanguages.includes(language)) || supportedLanguages[0];\n\n if (!lang || lang.length !== 2) {\n throw new Error(\n `Current language could not be determined from settings or the language provided (${lang}) is not supported by the Header API.`,\n );\n }\n\n return lang;\n};\n\n/**\n * Persist chosen language to local storage\n * @param lang Currently chose language, two char string\n */\nexport const persistLanguageChoice = (\n lang: string,\n cookieKey?: string,\n localStorageKey?: string,\n) => {\n if (localStorageKey !== undefined) {\n window.localStorage.setItem(localStorageKey, lang);\n }\n\n if (cookieKey !== undefined) {\n setCookie(cookieKey, lang);\n }\n\n state.currentLanguage = lang;\n};\n\n/**\n * Read a cookie by name\n * https://stackoverflow.com/questions/5639346/what-is-the-shortest-function-for-reading-a-cookie-by-name-in-javascript?rq=1\n * @param name Cookie name\n * @returns Cookie value or an empty string\n */\nexport const getCookie = (name: string) => {\n return document.cookie.match('(^|;)\\\\s*' + name + '\\\\s*=\\\\s*([^;]+)')?.pop() || '';\n};\n\n/**\n * Write a new cookie\n * https://developer.mozilla.org/en-US/docs/Web/API/document/cookie#A_little_framework.3A_a_complete_cookies_reader.2Fwriter_with_full_unicode_support\n * @param key\n * @param value\n */\nexport const setCookie = (key: string, value: string) => {\n document.cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n};\n\nconst getPreferredLanguageFromBrowser = (supportedLanguages: string[]): string | null => {\n // IE & Chrome\n if (navigator.language) {\n const lang = extractLanguage(navigator.language);\n if (supportedLanguages.indexOf(lang) !== -1) {\n return lang;\n }\n }\n\n // Chrome supports a list of preferred languages: if the preferred is not supported, we go down the list.\n if (navigator.languages) {\n for (const l of navigator.languages) {\n const lang = extractLanguage(l);\n if (supportedLanguages.indexOf(lang) !== -1) {\n return lang;\n }\n }\n }\n\n return null;\n};\n\nconst extractLanguage = (language: string): string => language.substring(0, 2).toLowerCase();\n\n/**\n * Simple translate function for general header UI strings\n *\n * @param key Translation key\n * @param lang Force a language\n * @param translationObject Optionally provide translations\n * @returns Translated string or the key\n */\nexport const translate = (key: string, lang?: string, translationObject = translations) =>\n translationObject[key]?.[lang ?? state.currentLanguage ?? ''] ?? key;\n"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"store-915e0360.js","mappings":"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","names":["getRenderingRef","forceUpdate"],"sources":["../../node_modules/.pnpm/@stencil+store@2.0.9_@stencil+core@3.4.2/node_modules/@stencil/store/dist/index.mjs","./src/data/store.ts"],"sourcesContent":["import { getRenderingRef, forceUpdate } from '@stencil/core';\n\nconst appendToMap = (map, propName, value) => {\n const items = map.get(propName);\n if (!items) {\n map.set(propName, [value]);\n }\n else if (!items.includes(value)) {\n items.push(value);\n }\n};\nconst debounce = (fn, ms) => {\n let timeoutId;\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = 0;\n fn(...args);\n }, ms);\n };\n};\n\n/**\n * Check if a possible element isConnected.\n * The property might not be there, so we check for it.\n *\n * We want it to return true if isConnected is not a property,\n * otherwise we would remove these elements and would not update.\n *\n * Better leak in Edge than to be useless.\n */\nconst isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;\nconst cleanupElements = debounce((map) => {\n for (let key of map.keys()) {\n map.set(key, map.get(key).filter(isConnected));\n }\n}, 2000);\nconst stencilSubscription = () => {\n if (typeof getRenderingRef !== 'function') {\n // If we are not in a stencil project, we do nothing.\n // This function is not really exported by @stencil/core.\n return {};\n }\n const elmsToUpdate = new Map();\n return {\n dispose: () => elmsToUpdate.clear(),\n get: (propName) => {\n const elm = getRenderingRef();\n if (elm) {\n appendToMap(elmsToUpdate, propName, elm);\n }\n },\n set: (propName) => {\n const elements = elmsToUpdate.get(propName);\n if (elements) {\n elmsToUpdate.set(propName, elements.filter(forceUpdate));\n }\n cleanupElements(elmsToUpdate);\n },\n reset: () => {\n elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));\n cleanupElements(elmsToUpdate);\n },\n };\n};\n\nconst unwrap = (val) => (typeof val === 'function' ? val() : val);\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n const unwrappedState = unwrap(defaultState);\n let states = new Map(Object.entries(unwrappedState !== null && unwrappedState !== void 0 ? unwrappedState : {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n const reset = () => {\n var _a;\n // When resetting the state, the default state may be a function - unwrap it to invoke it.\n // otherwise, the state won't be properly reset\n states = new Map(Object.entries((_a = unwrap(defaultState)) !== null && _a !== void 0 ? _a : {}));\n handlers.reset.forEach((cb) => cb());\n };\n const dispose = () => {\n // Call first dispose as resetting the state would\n // cause less updates ;)\n handlers.dispose.forEach((cb) => cb());\n reset();\n };\n const get = (propName) => {\n handlers.get.forEach((cb) => cb(propName));\n return states.get(propName);\n };\n const set = (propName, value) => {\n const oldValue = states.get(propName);\n if (shouldUpdate(value, oldValue, propName)) {\n states.set(propName, value);\n handlers.set.forEach((cb) => cb(propName, value, oldValue));\n }\n };\n const state = (typeof Proxy === 'undefined'\n ? {}\n : new Proxy(unwrappedState, {\n get(_, propName) {\n return get(propName);\n },\n ownKeys(_) {\n return Array.from(states.keys());\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n };\n },\n has(_, propName) {\n return states.has(propName);\n },\n set(_, propName, value) {\n set(propName, value);\n return true;\n },\n }));\n const on = (eventName, callback) => {\n handlers[eventName].push(callback);\n return () => {\n removeFromArray(handlers[eventName], callback);\n };\n };\n const onChange = (propName, cb) => {\n const unSet = on('set', (key, newValue) => {\n if (key === propName) {\n cb(newValue);\n }\n });\n // We need to unwrap the defaultState because it might be a function.\n // Otherwise we might not be sending the right reset value.\n const unReset = on('reset', () => cb(unwrap(defaultState)[propName]));\n return () => {\n unSet();\n unReset();\n };\n };\n const use = (...subscriptions) => {\n const unsubs = subscriptions.reduce((unsubs, subscription) => {\n if (subscription.set) {\n unsubs.push(on('set', subscription.set));\n }\n if (subscription.get) {\n unsubs.push(on('get', subscription.get));\n }\n if (subscription.reset) {\n unsubs.push(on('reset', subscription.reset));\n }\n if (subscription.dispose) {\n unsubs.push(on('dispose', subscription.dispose));\n }\n return unsubs;\n }, []);\n return () => unsubs.forEach((unsub) => unsub());\n };\n const forceUpdate = (key) => {\n const oldValue = states.get(key);\n handlers.set.forEach((cb) => cb(key, oldValue, oldValue));\n };\n return {\n state,\n get,\n set,\n on,\n onChange,\n use,\n dispose,\n reset,\n forceUpdate,\n };\n};\nconst removeFromArray = (array, item) => {\n const index = array.indexOf(item);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.length--;\n }\n};\n\nconst createStore = (defaultState, shouldUpdate) => {\n const map = createObservableMap(defaultState, shouldUpdate);\n map.use(stencilSubscription());\n return map;\n};\n\nexport { createObservableMap, createStore };\n","import { createStore } from '@stencil/store';\nimport { Environment, ILocalizedConfig, ILocalizedCustomConfig } from '../models/general.model';\nimport { NavMainEntity } from '../models/header.model';\nimport { IAvailableLanguage } from '../models/language.model';\n\nexport interface HeaderState {\n localizedConfig: ILocalizedConfig | null;\n currentLanguage: string | null;\n projectId: string | null;\n environment: Environment;\n search: boolean;\n login: boolean;\n meta: boolean;\n languageSwitchOverrides?: IAvailableLanguage[];\n localizedCustomConfig?: ILocalizedCustomConfig;\n osFlyoutOverrides?: NavMainEntity;\n}\n\nexport const { state, reset, dispose } = createStore<HeaderState>({\n projectId: null,\n currentLanguage: null,\n localizedConfig: null,\n environment: 'prod',\n search: true,\n login: true,\n meta: true,\n});\n"],"version":3}
@@ -1,274 +0,0 @@
1
- import * as testConfigRaw from '../assets/config/test-configuration.json';
2
- import { fetchConfig, generateConfigUrl, getLocalizedConfig, getLocalizedCustomConfig, isMobile, isValidProjectId, mergeOsFlyoutOverrides, setMainNavigationIds, } from './config.service';
3
- const testConfig = testConfigRaw;
4
- const customConfig = {
5
- de: {
6
- header: {
7
- navMain: [
8
- {
9
- title: 'Meine Links (custom config)',
10
- text: 'Meine Links',
11
- flyout: [
12
- {
13
- title: 'Google',
14
- linkList: [
15
- { url: window.location.href, title: 'Google Maps', target: '_blank' },
16
- { url: 'http://localhost:3333', title: 'Google Translate' },
17
- { url: 'http://localhost:3333/aaa/bbb/ccc', title: 'Google Translate' },
18
- ],
19
- },
20
- ],
21
- },
22
- ],
23
- },
24
- footer: {
25
- block: {
26
- title: 'Eigene Footer-Konfiguration',
27
- links: [
28
- { url: 'https://fireship.io', text: 'Fireship.io', target: '_blank' },
29
- { url: 'https://css-tricks.com', text: 'CSS-Tricks', target: '_blank' },
30
- { url: 'https://web.dev', text: 'web.dev', target: '_blank' },
31
- { url: 'https://developer.mozilla.org', text: 'MDN Web Docs', target: '_blank' },
32
- { url: 'https://getbootstrap.com', text: 'Bootstrap', target: '_blank' },
33
- { url: 'https://google.com', text: 'Google', target: '_blank' },
34
- { url: 'https://microsoft.com', text: 'Microsoft', target: '_blank' },
35
- ],
36
- },
37
- },
38
- },
39
- en: {
40
- footer: {
41
- block: {
42
- title: 'Custom footer config',
43
- links: [
44
- { url: 'https://fireship.io', text: 'Fireship.io', target: '_blank' },
45
- { url: 'https://css-tricks.com', text: 'CSS-Tricks', target: '_blank' },
46
- ],
47
- },
48
- },
49
- },
50
- };
51
- const stringCustomConfig = JSON.stringify(customConfig);
52
- describe('config.service.ts', () => {
53
- global.fetch = jest.fn(() => {
54
- return Promise.resolve({
55
- json: () => Promise.resolve(testConfig),
56
- });
57
- });
58
- describe('isMobile', () => {
59
- it('checks the window width', () => {
60
- global.innerWidth = 500;
61
- expect(isMobile()).toBe(true);
62
- global.innerWidth = 1500;
63
- expect(isMobile()).toBe(false);
64
- });
65
- });
66
- describe('isValidProjectId', () => {
67
- it('Check if project id is valid', () => {
68
- expect(isValidProjectId('test')).toBe(true);
69
- expect(isValidProjectId('test123')).toBe(true);
70
- expect(isValidProjectId('test-1')).toBe(true);
71
- expect(isValidProjectId('test_1')).toBe(true);
72
- expect(isValidProjectId('1test')).toBe(false);
73
- expect(isValidProjectId(' test')).toBe(false);
74
- expect(isValidProjectId('-test')).toBe(false);
75
- expect(isValidProjectId('test-')).toBe(false);
76
- expect(isValidProjectId('tes!t')).toBe(false);
77
- expect(isValidProjectId('test.bla')).toBe(false);
78
- expect(isValidProjectId('test,xy')).toBe(false);
79
- expect(isValidProjectId('')).toBe(false);
80
- });
81
- });
82
- describe('setMainNavigationIds', () => {
83
- it('should replace all main nav ids with browser compatible ids and keep flyout_os', () => {
84
- const base = [
85
- { id: 123 },
86
- { id: 'flyout_os' },
87
- { id: '-11' },
88
- { id: '%' },
89
- ];
90
- setMainNavigationIds(base);
91
- expect(base).toEqual(expect.arrayContaining([
92
- expect.objectContaining({
93
- id: expect.stringMatching(/^main-nav-.+|^flyout_os$/gi),
94
- }),
95
- ]));
96
- });
97
- });
98
- describe('getLocalizedCustomConfig', () => {
99
- it('should parse the correct config', () => {
100
- expect(typeof getLocalizedCustomConfig(stringCustomConfig, 'de')).toBe('object');
101
- });
102
- it('should return object if config lang is found', () => {
103
- expect(typeof getLocalizedCustomConfig(customConfig, 'de')).toBe('object');
104
- });
105
- it('should return null if lang is not found in config', () => {
106
- expect(getLocalizedCustomConfig(stringCustomConfig, 'kz')).toBe(undefined);
107
- });
108
- });
109
- describe('generateConfigUrl', () => {
110
- it('should return a test URL', () => {
111
- expect(generateConfigUrl('test', 'int01')).toEqual('assets/config/test-configuration.json');
112
- });
113
- it('should return an int URL', () => {
114
- expect(generateConfigUrl('topos', 'int01')).toEqual('https://int.post.ch/api/headerjs/Json?serviceid=topos&environment=int01');
115
- });
116
- it('should return prod by default', () => {
117
- expect(generateConfigUrl('topos', 'prod')).toEqual('https://www.post.ch/api/headerjs/Json?serviceid=topos');
118
- });
119
- it('should reduce XSS risk', () => {
120
- expect(generateConfigUrl('<script>alert()</script>', 'prod')).toEqual('https://www.post.ch/api/headerjs/Json?serviceid=%3Cscript%3Ealert()%3C%2Fscript%3E');
121
- });
122
- it('should work with upper case env', () => {
123
- /* @ts-expect-error */
124
- expect(generateConfigUrl('whatever', 'INT01')).toEqual('https://int.post.ch/api/headerjs/Json?serviceid=whatever&environment=int01');
125
- });
126
- });
127
- describe('fetchConfig', () => {
128
- it('should fetch config', async () => {
129
- const res = await fetchConfig('test', 'int01');
130
- expect(res).toEqual(testConfig);
131
- expect(fetch).toHaveBeenCalledTimes(1);
132
- });
133
- });
134
- describe('mergeOsFlyoutOverrides', () => {
135
- it('should merge configs correctly', () => {
136
- const newConfig = mergeOsFlyoutOverrides(testConfig.de, {
137
- title: 'Test',
138
- });
139
- const osFlyout = newConfig.find(nav => nav.id === 'flyout_os');
140
- if (!osFlyout)
141
- fail('osFlyout is undefined');
142
- expect(osFlyout.title).toBe('Test');
143
- });
144
- it('should not overwrite function parameter', () => {
145
- const newConfig = mergeOsFlyoutOverrides(testConfig.de, {
146
- title: 'Test',
147
- flyout: [
148
- {
149
- linkList: [
150
- {
151
- title: 'Additional link',
152
- url: '/',
153
- },
154
- ],
155
- },
156
- ],
157
- });
158
- const osFlyout = newConfig.find(nav => nav.id === 'flyout_os');
159
- if (!osFlyout)
160
- fail('osFlyout is undefined');
161
- expect(osFlyout.flyout[0].linkList.length).toBe(2);
162
- const newConfig2 = mergeOsFlyoutOverrides(testConfig.de, {
163
- title: 'Test',
164
- flyout: [
165
- {
166
- linkList: [
167
- {
168
- title: 'Additional link',
169
- url: '/',
170
- },
171
- ],
172
- },
173
- ],
174
- });
175
- const osFlyout2 = newConfig2.find(nav => nav.id === 'flyout_os');
176
- if (!osFlyout2)
177
- fail('osFlyout is undefined');
178
- expect(osFlyout2.flyout[0].linkList.length).toBe(2);
179
- });
180
- it('should extend os flyout with additional columns', () => {
181
- const newConfig = mergeOsFlyoutOverrides(testConfig.de, {
182
- title: 'Test',
183
- flyout: [
184
- {
185
- linkList: [
186
- {
187
- title: 'Additional link',
188
- url: '/',
189
- },
190
- ],
191
- },
192
- {
193
- title: 'New column',
194
- linkList: [
195
- {
196
- title: 'Link in new column',
197
- url: '/',
198
- },
199
- ],
200
- },
201
- ],
202
- });
203
- const osFlyout = newConfig.find(nav => nav.id === 'flyout_os');
204
- if (!osFlyout)
205
- fail('osFlyout is undefined');
206
- expect(osFlyout.flyout.length).toBe(2);
207
- });
208
- });
209
- describe('getLocalizedConfig', () => {
210
- it('should get correct local config', async () => {
211
- const config = await getLocalizedConfig({
212
- projectId: 'test',
213
- environment: 'int01',
214
- language: 'de',
215
- });
216
- expect(config).toEqual(testConfig.de);
217
- });
218
- it('should modify the config correctly', async () => {
219
- const config = await getLocalizedConfig({
220
- projectId: 'test',
221
- environment: 'int01',
222
- language: 'de',
223
- localizedCustomConfig: {
224
- header: {
225
- navMain: [
226
- {
227
- title: 'New Navmain',
228
- flyout: [
229
- {
230
- title: 'New Navcol',
231
- linkList: [
232
- {
233
- title: 'New Navlink',
234
- url: '/',
235
- },
236
- ],
237
- },
238
- ],
239
- },
240
- ],
241
- },
242
- },
243
- });
244
- const [lastMainNav] = config.header.navMain.slice(-1);
245
- expect(lastMainNav.title).toBe('New Navmain');
246
- expect(lastMainNav.flyout.length).toBe(1);
247
- });
248
- it('should extend flyout_os', async () => {
249
- const config = await getLocalizedConfig({
250
- projectId: 'test',
251
- environment: 'int01',
252
- language: 'de',
253
- osFlyoutOverrides: {
254
- flyout: [
255
- {
256
- title: 'OS Extender',
257
- linkList: [
258
- {
259
- title: 'Added link',
260
- url: '/',
261
- },
262
- ],
263
- },
264
- ],
265
- },
266
- });
267
- const osFlyout = config.header.navMain.find(nav => nav.id === 'flyout_os');
268
- if (!osFlyout)
269
- fail('osFlyout is undefined');
270
- expect(osFlyout.flyout[0].linkList.length).toBe(2);
271
- });
272
- });
273
- });
274
- //# sourceMappingURL=config.service.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.service.spec.js","sourceRoot":"","sources":["../../../src/services/config.service.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { ICustomConfig, ILocalizedCustomConfig, IPortalConfig } from '../models/general.model';\nimport { NavMainEntity } from '../models/header.model';\nimport * as testConfigRaw from '../assets/config/test-configuration.json';\nimport {\n fetchConfig,\n generateConfigUrl,\n getLocalizedConfig,\n getLocalizedCustomConfig,\n isMobile,\n isValidProjectId,\n mergeOsFlyoutOverrides,\n setMainNavigationIds,\n} from './config.service';\n\nconst testConfig: IPortalConfig = testConfigRaw as IPortalConfig;\n\nconst customConfig = {\n de: {\n header: {\n navMain: [\n {\n title: 'Meine Links (custom config)',\n text: 'Meine Links',\n flyout: [\n {\n title: 'Google',\n linkList: [\n { url: window.location.href, title: 'Google Maps', target: '_blank' },\n { url: 'http://localhost:3333', title: 'Google Translate' },\n { url: 'http://localhost:3333/aaa/bbb/ccc', title: 'Google Translate' },\n ],\n },\n ],\n },\n ],\n },\n footer: {\n block: {\n title: 'Eigene Footer-Konfiguration',\n links: [\n { url: 'https://fireship.io', text: 'Fireship.io', target: '_blank' },\n { url: 'https://css-tricks.com', text: 'CSS-Tricks', target: '_blank' },\n { url: 'https://web.dev', text: 'web.dev', target: '_blank' },\n { url: 'https://developer.mozilla.org', text: 'MDN Web Docs', target: '_blank' },\n { url: 'https://getbootstrap.com', text: 'Bootstrap', target: '_blank' },\n { url: 'https://google.com', text: 'Google', target: '_blank' },\n { url: 'https://microsoft.com', text: 'Microsoft', target: '_blank' },\n ],\n },\n },\n },\n en: {\n footer: {\n block: {\n title: 'Custom footer config',\n links: [\n { url: 'https://fireship.io', text: 'Fireship.io', target: '_blank' },\n { url: 'https://css-tricks.com', text: 'CSS-Tricks', target: '_blank' },\n ],\n },\n },\n },\n};\nconst stringCustomConfig = JSON.stringify(customConfig);\n\ndescribe('config.service.ts', () => {\n global.fetch = jest.fn(() => {\n return Promise.resolve({\n json: () => Promise.resolve(testConfig),\n }) as Promise<Response>;\n });\n\n describe('isMobile', () => {\n it('checks the window width', () => {\n global.innerWidth = 500;\n expect(isMobile()).toBe(true);\n global.innerWidth = 1500;\n expect(isMobile()).toBe(false);\n });\n });\n\n describe('isValidProjectId', () => {\n it('Check if project id is valid', () => {\n expect(isValidProjectId('test')).toBe(true);\n expect(isValidProjectId('test123')).toBe(true);\n expect(isValidProjectId('test-1')).toBe(true);\n expect(isValidProjectId('test_1')).toBe(true);\n\n expect(isValidProjectId('1test')).toBe(false);\n\n expect(isValidProjectId(' test')).toBe(false);\n expect(isValidProjectId('-test')).toBe(false);\n expect(isValidProjectId('test-')).toBe(false);\n expect(isValidProjectId('tes!t')).toBe(false);\n expect(isValidProjectId('test.bla')).toBe(false);\n expect(isValidProjectId('test,xy')).toBe(false);\n expect(isValidProjectId('')).toBe(false);\n });\n });\n\n describe('setMainNavigationIds', () => {\n it('should replace all main nav ids with browser compatible ids and keep flyout_os', () => {\n const base = [\n { id: 123 },\n { id: 'flyout_os' },\n { id: '-11' },\n { id: '%' },\n ] as NavMainEntity[];\n setMainNavigationIds(base);\n expect(base).toEqual(\n expect.arrayContaining([\n expect.objectContaining({\n id: expect.stringMatching(/^main-nav-.+|^flyout_os$/gi),\n }),\n ]),\n );\n });\n });\n\n describe('getLocalizedCustomConfig', () => {\n it('should parse the correct config', () => {\n expect(typeof getLocalizedCustomConfig(stringCustomConfig, 'de')).toBe('object');\n });\n\n it('should return object if config lang is found', () => {\n expect(typeof getLocalizedCustomConfig(customConfig as ICustomConfig, 'de')).toBe('object');\n });\n\n it('should return null if lang is not found in config', () => {\n expect(getLocalizedCustomConfig(stringCustomConfig, 'kz')).toBe(undefined);\n });\n });\n\n describe('generateConfigUrl', () => {\n it('should return a test URL', () => {\n expect(generateConfigUrl('test', 'int01')).toEqual('assets/config/test-configuration.json');\n });\n\n it('should return an int URL', () => {\n expect(generateConfigUrl('topos', 'int01')).toEqual(\n 'https://int.post.ch/api/headerjs/Json?serviceid=topos&environment=int01',\n );\n });\n\n it('should return prod by default', () => {\n expect(generateConfigUrl('topos', 'prod')).toEqual(\n 'https://www.post.ch/api/headerjs/Json?serviceid=topos',\n );\n });\n\n it('should reduce XSS risk', () => {\n expect(generateConfigUrl('<script>alert()</script>', 'prod')).toEqual(\n 'https://www.post.ch/api/headerjs/Json?serviceid=%3Cscript%3Ealert()%3C%2Fscript%3E',\n );\n });\n\n it('should work with upper case env', () => {\n /* @ts-expect-error */\n expect(generateConfigUrl('whatever', 'INT01')).toEqual(\n 'https://int.post.ch/api/headerjs/Json?serviceid=whatever&environment=int01',\n );\n });\n });\n\n describe('fetchConfig', () => {\n it('should fetch config', async () => {\n const res = await fetchConfig('test', 'int01');\n expect(res).toEqual(testConfig);\n expect(fetch).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('mergeOsFlyoutOverrides', () => {\n it('should merge configs correctly', () => {\n const newConfig = mergeOsFlyoutOverrides(testConfig.de!, {\n title: 'Test',\n } as NavMainEntity);\n\n const osFlyout = newConfig.find(nav => nav.id === 'flyout_os');\n if (!osFlyout) fail('osFlyout is undefined');\n expect(osFlyout.title).toBe('Test');\n });\n\n it('should not overwrite function parameter', () => {\n const newConfig = mergeOsFlyoutOverrides(testConfig.de!, {\n title: 'Test',\n flyout: [\n {\n linkList: [\n {\n title: 'Additional link',\n url: '/',\n },\n ],\n },\n ],\n } as NavMainEntity);\n\n const osFlyout = newConfig.find(nav => nav.id === 'flyout_os');\n if (!osFlyout) fail('osFlyout is undefined');\n expect(osFlyout.flyout[0].linkList.length).toBe(2);\n\n const newConfig2 = mergeOsFlyoutOverrides(testConfig.de!, {\n title: 'Test',\n flyout: [\n {\n linkList: [\n {\n title: 'Additional link',\n url: '/',\n },\n ],\n },\n ],\n } as NavMainEntity);\n const osFlyout2 = newConfig2.find(nav => nav.id === 'flyout_os');\n if (!osFlyout2) fail('osFlyout is undefined');\n expect(osFlyout2.flyout[0].linkList.length).toBe(2);\n });\n\n it('should extend os flyout with additional columns', () => {\n const newConfig = mergeOsFlyoutOverrides(testConfig.de!, {\n title: 'Test',\n flyout: [\n {\n linkList: [\n {\n title: 'Additional link',\n url: '/',\n },\n ],\n },\n {\n title: 'New column',\n linkList: [\n {\n title: 'Link in new column',\n url: '/',\n },\n ],\n },\n ],\n } as NavMainEntity);\n\n const osFlyout = newConfig.find(nav => nav.id === 'flyout_os');\n if (!osFlyout) fail('osFlyout is undefined');\n expect(osFlyout.flyout.length).toBe(2);\n });\n });\n\n describe('getLocalizedConfig', () => {\n it('should get correct local config', async () => {\n const config = await getLocalizedConfig({\n projectId: 'test',\n environment: 'int01',\n language: 'de',\n });\n expect(config).toEqual(testConfig.de);\n });\n\n it('should modify the config correctly', async () => {\n const config = await getLocalizedConfig({\n projectId: 'test',\n environment: 'int01',\n language: 'de',\n localizedCustomConfig: {\n header: {\n navMain: [\n {\n title: 'New Navmain',\n flyout: [\n {\n title: 'New Navcol',\n linkList: [\n {\n title: 'New Navlink',\n url: '/',\n },\n ],\n },\n ],\n },\n ],\n },\n } as ILocalizedCustomConfig,\n });\n\n const [lastMainNav] = config.header.navMain.slice(-1);\n\n expect(lastMainNav.title).toBe('New Navmain');\n expect(lastMainNav.flyout.length).toBe(1);\n });\n\n it('should extend flyout_os', async () => {\n const config = await getLocalizedConfig({\n projectId: 'test',\n environment: 'int01',\n language: 'de',\n osFlyoutOverrides: {\n flyout: [\n {\n title: 'OS Extender',\n linkList: [\n {\n title: 'Added link',\n url: '/',\n },\n ],\n },\n ],\n } as NavMainEntity,\n });\n const osFlyout = config.header.navMain.find(nav => nav.id === 'flyout_os');\n if (!osFlyout) fail('osFlyout is undefined');\n expect(osFlyout.flyout[0].linkList.length).toBe(2);\n });\n });\n});\n"]}
@@ -1,109 +0,0 @@
1
- import { compareRoutes, compileScoreList, getSimilarityScore, markActiveRoute, } from './route.service';
2
- import * as testConfig from '../assets/config/test-configuration.json';
3
- describe('route.service.ts', () => {
4
- describe('getSimilarityScore', () => {
5
- it('Computes the correct score', () => {
6
- const score = getSimilarityScore(['a', 'b'], ['a', 'b', 'e']);
7
- expect(score).toBe(2);
8
- });
9
- it('Returns infinite on an exact match', () => {
10
- const score = getSimilarityScore(['a'], ['a']);
11
- expect(score).toBe(1);
12
- });
13
- it('Returns 0 when nothing matches', () => {
14
- const scores = [
15
- getSimilarityScore(['a'], ['b']),
16
- getSimilarityScore(['a', 'c'], ['b', 'c']),
17
- getSimilarityScore([], ['a']),
18
- getSimilarityScore(['a'], []),
19
- // @ts-expect-error
20
- getSimilarityScore(null, ['a']),
21
- // @ts-expect-error
22
- getSimilarityScore(undefined, ['a']),
23
- getSimilarityScore([], []),
24
- getSimilarityScore(['https://post.ch', 'wherever123'], ['https://post.ch', 'de', 'kundencenter', 'kundencenter']),
25
- ];
26
- expect(getSimilarityScore(['https://post.ch', 'wherever123'], ['https://post.ch', 'de', 'kundencenter', 'kundencenter'])).toBe(0);
27
- for (let score of scores) {
28
- expect(score).toBe(0);
29
- }
30
- });
31
- });
32
- describe('compareRoutes', () => {
33
- const post = new URL('https://post.ch');
34
- const letters = new URL('https://post.ch/briefe');
35
- const deep = new URL('https://post.ch/briefe/inland');
36
- const search = new URL('https://post.ch/briefe?q=search');
37
- const hash = new URL('https://post.ch/briefe#hash');
38
- const nope = new URL('https://post.de/briefe');
39
- const upper = new URL('https://post.ch/Briefe');
40
- it('Correctly scores routes in auto mode', () => {
41
- // Left: current browser URL, right: URL in Nav
42
- expect(compareRoutes(letters, post, 'auto')).toBe(1);
43
- expect(compareRoutes(deep, letters, 'auto')).toBe(2);
44
- expect(compareRoutes(search, letters, 'auto')).toBe(Infinity);
45
- expect(compareRoutes(search, hash, 'auto')).toBe(Infinity);
46
- expect(compareRoutes(letters, deep, 'auto')).toBe(0);
47
- expect(compareRoutes(nope, letters, 'auto')).toBe(0);
48
- expect(compareRoutes(letters, upper, 'auto')).toBe(Infinity);
49
- expect(compareRoutes(deep, upper, 'auto')).toBe(2);
50
- });
51
- it('Correctly scores routes in exact mode', () => {
52
- // Left: current browser URL, right: URL in Nav
53
- expect(compareRoutes(post, letters)).toBe(0);
54
- expect(compareRoutes(letters, deep)).toBe(0);
55
- expect(compareRoutes(letters, search)).toBe(Infinity);
56
- expect(compareRoutes(hash, search)).toBe(Infinity);
57
- expect(compareRoutes(deep, letters)).toBe(0);
58
- expect(compareRoutes(letters, nope)).toBe(0);
59
- expect(compareRoutes(nope, letters)).toBe(0);
60
- expect(compareRoutes(letters, nope, 'exact')).toBe(0);
61
- expect(compareRoutes(letters, upper, 'exact')).toBe(Infinity);
62
- });
63
- it('Does not fail on invalid arguments', () => {
64
- // @ts-expect-error
65
- expect(compareRoutes(null, nope, 'auto')).toBe(0);
66
- // @ts-expect-error
67
- expect(compareRoutes(null, undefined, 'auto')).toBe(0);
68
- // @ts-expect-error
69
- expect(compareRoutes(post, nope, null)).toBe(0);
70
- });
71
- });
72
- describe('compileScoreList', () => {
73
- let config;
74
- const fullMatch = new URL('https://post.ch/de/briefe-versenden/briefe-inland');
75
- const noMatch = new URL('https://post.ch/wherever123');
76
- const upper = new URL('https://post.ch/de/Briefe-versenden/BRIEFE-INLAND');
77
- beforeEach(() => {
78
- config = [...testConfig.de.header.navMain];
79
- });
80
- it('Returns a full match', () => {
81
- const scorelist = compileScoreList(config, fullMatch, 'auto');
82
- expect(scorelist[0].score).toBe(Infinity);
83
- expect(scorelist[0].sub.title).toBe('Briefe Inland');
84
- const scorelistUpper = compileScoreList(config, upper, 'auto');
85
- expect(scorelistUpper[0].score).toBe(Infinity);
86
- });
87
- it('Returns a full match and only one entry', () => {
88
- const scorelist = compileScoreList(config, fullMatch, 'exact');
89
- expect(scorelist[0].score).toBe(Infinity);
90
- expect(scorelist.length).toBe(1);
91
- });
92
- it('Returns no match', () => {
93
- const scorelist = compileScoreList(config, noMatch, 'auto');
94
- expect(scorelist.length).toBe(0);
95
- });
96
- });
97
- describe('markActiveRoute', () => {
98
- let config;
99
- beforeEach(() => {
100
- config = [...testConfig.de.header.navMain];
101
- });
102
- it('Correctly marks the active route', () => {
103
- const markedConfig = markActiveRoute(config, 'https://post.ch/de/briefe-versenden/briefe-inland');
104
- expect(markedConfig[0].isActiveOverride).toBe(true);
105
- expect(markedConfig[0].flyout[0].linkList[0].isActiveOverride).toBe(true);
106
- });
107
- });
108
- });
109
- //# sourceMappingURL=route.service.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route.service.spec.js","sourceRoot":"","sources":["../../../src/services/route.service.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,UAAU,MAAM,0CAA0C,CAAC;AAGvE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;EAChC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;MACpC,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;MAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;MAC5C,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;MAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;MACxC,MAAM,MAAM,GAAG;QACb,kBAAkB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAChC,kBAAkB,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1C,kBAAkB,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAC7B,kBAAkB,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAC7B,mBAAmB;QACnB,kBAAkB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QAC/B,mBAAmB;QACnB,kBAAkB,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;QACpC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC;QAC1B,kBAAkB,CAChB,CAAC,iBAAiB,EAAE,aAAa,CAAC,EAClC,CAAC,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAC1D;OACF,CAAC;MAEF,MAAM,CACJ,kBAAkB,CAChB,CAAC,iBAAiB,EAAE,aAAa,CAAC,EAClC,CAAC,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAC1D,CACF,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAEV,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;QACxB,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;OACvB;IACH,CAAC,CAAC,CAAC;EACL,CAAC,CAAC,CAAC;EAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,6BAA6B,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAEhD,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;MAC9C,+CAA+C;MAC/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACrD,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACrD,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;MAC9D,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;MAC3D,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACrD,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACrD,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;MAC7D,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;MAC/C,+CAA+C;MAC/C,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAC7C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAC7C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;MACtD,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;MACnD,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAC7C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAC7C,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAC7C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtD,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;MAC5C,mBAAmB;MACnB,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClD,mBAAmB;MACnB,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACvD,mBAAmB;MACnB,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;EACL,CAAC,CAAC,CAAC;EAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,MAAuB,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,mDAAmD,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,6BAA6B,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,mDAAmD,CAAC,CAAC;IAE3E,UAAU,CAAC,GAAG,EAAE;MACd,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAoB,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;MAC9B,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;MAC9D,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;MAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;MAEtD,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;MAC/D,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;MACjD,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;MAC/D,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;MAC1C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;MAC1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;MAC5D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;EACL,CAAC,CAAC,CAAC;EAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,MAAuB,CAAC;IAE5B,UAAU,CAAC,GAAG,EAAE;MACd,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAoB,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;MAC1C,MAAM,YAAY,GAAG,eAAe,CAClC,MAAM,EACN,mDAAmD,CACpD,CAAC;MACF,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;MACpD,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;EACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import {\n compareRoutes,\n compileScoreList,\n getSimilarityScore,\n markActiveRoute,\n} from './route.service';\nimport * as testConfig from '../assets/config/test-configuration.json';\nimport { NavMainEntity } from '../models/header.model';\n\ndescribe('route.service.ts', () => {\n describe('getSimilarityScore', () => {\n it('Computes the correct score', () => {\n const score = getSimilarityScore(['a', 'b'], ['a', 'b', 'e']);\n expect(score).toBe(2);\n });\n\n it('Returns infinite on an exact match', () => {\n const score = getSimilarityScore(['a'], ['a']);\n expect(score).toBe(1);\n });\n\n it('Returns 0 when nothing matches', () => {\n const scores = [\n getSimilarityScore(['a'], ['b']),\n getSimilarityScore(['a', 'c'], ['b', 'c']),\n getSimilarityScore([], ['a']),\n getSimilarityScore(['a'], []),\n // @ts-expect-error\n getSimilarityScore(null, ['a']),\n // @ts-expect-error\n getSimilarityScore(undefined, ['a']),\n getSimilarityScore([], []),\n getSimilarityScore(\n ['https://post.ch', 'wherever123'],\n ['https://post.ch', 'de', 'kundencenter', 'kundencenter'],\n ),\n ];\n\n expect(\n getSimilarityScore(\n ['https://post.ch', 'wherever123'],\n ['https://post.ch', 'de', 'kundencenter', 'kundencenter'],\n ),\n ).toBe(0);\n\n for (let score of scores) {\n expect(score).toBe(0);\n }\n });\n });\n\n describe('compareRoutes', () => {\n const post = new URL('https://post.ch');\n const letters = new URL('https://post.ch/briefe');\n const deep = new URL('https://post.ch/briefe/inland');\n const search = new URL('https://post.ch/briefe?q=search');\n const hash = new URL('https://post.ch/briefe#hash');\n const nope = new URL('https://post.de/briefe');\n const upper = new URL('https://post.ch/Briefe');\n\n it('Correctly scores routes in auto mode', () => {\n // Left: current browser URL, right: URL in Nav\n expect(compareRoutes(letters, post, 'auto')).toBe(1);\n expect(compareRoutes(deep, letters, 'auto')).toBe(2);\n expect(compareRoutes(search, letters, 'auto')).toBe(Infinity);\n expect(compareRoutes(search, hash, 'auto')).toBe(Infinity);\n expect(compareRoutes(letters, deep, 'auto')).toBe(0);\n expect(compareRoutes(nope, letters, 'auto')).toBe(0);\n expect(compareRoutes(letters, upper, 'auto')).toBe(Infinity);\n expect(compareRoutes(deep, upper, 'auto')).toBe(2);\n });\n\n it('Correctly scores routes in exact mode', () => {\n // Left: current browser URL, right: URL in Nav\n expect(compareRoutes(post, letters)).toBe(0);\n expect(compareRoutes(letters, deep)).toBe(0);\n expect(compareRoutes(letters, search)).toBe(Infinity);\n expect(compareRoutes(hash, search)).toBe(Infinity);\n expect(compareRoutes(deep, letters)).toBe(0);\n expect(compareRoutes(letters, nope)).toBe(0);\n expect(compareRoutes(nope, letters)).toBe(0);\n expect(compareRoutes(letters, nope, 'exact')).toBe(0);\n expect(compareRoutes(letters, upper, 'exact')).toBe(Infinity);\n });\n\n it('Does not fail on invalid arguments', () => {\n // @ts-expect-error\n expect(compareRoutes(null, nope, 'auto')).toBe(0);\n // @ts-expect-error\n expect(compareRoutes(null, undefined, 'auto')).toBe(0);\n // @ts-expect-error\n expect(compareRoutes(post, nope, null)).toBe(0);\n });\n });\n\n describe('compileScoreList', () => {\n let config: NavMainEntity[];\n const fullMatch = new URL('https://post.ch/de/briefe-versenden/briefe-inland');\n const noMatch = new URL('https://post.ch/wherever123');\n const upper = new URL('https://post.ch/de/Briefe-versenden/BRIEFE-INLAND');\n\n beforeEach(() => {\n config = [...testConfig.de.header.navMain] as NavMainEntity[];\n });\n\n it('Returns a full match', () => {\n const scorelist = compileScoreList(config, fullMatch, 'auto');\n expect(scorelist[0].score).toBe(Infinity);\n expect(scorelist[0].sub!.title).toBe('Briefe Inland');\n\n const scorelistUpper = compileScoreList(config, upper, 'auto');\n expect(scorelistUpper[0].score).toBe(Infinity);\n });\n\n it('Returns a full match and only one entry', () => {\n const scorelist = compileScoreList(config, fullMatch, 'exact');\n expect(scorelist[0].score).toBe(Infinity);\n expect(scorelist.length).toBe(1);\n });\n\n it('Returns no match', () => {\n const scorelist = compileScoreList(config, noMatch, 'auto');\n expect(scorelist.length).toBe(0);\n });\n });\n\n describe('markActiveRoute', () => {\n let config: NavMainEntity[];\n\n beforeEach(() => {\n config = [...testConfig.de.header.navMain] as NavMainEntity[];\n });\n\n it('Correctly marks the active route', () => {\n const markedConfig = markActiveRoute(\n config,\n 'https://post.ch/de/briefe-versenden/briefe-inland',\n );\n expect(markedConfig[0].isActiveOverride).toBe(true);\n expect(markedConfig[0].flyout[0].linkList[0].isActiveOverride).toBe(true);\n });\n });\n});\n"]}
@@ -1,49 +0,0 @@
1
- import { equalizeArrays } from './search.service';
2
- describe('search.service.ts', () => {
3
- it('proportionally fills the suggestions array with max. 7 items', () => {
4
- const a1 = [1, 2, 3];
5
- const a2 = ['a', 'b', 'c', 'd'];
6
- const r = equalizeArrays(a1, a2);
7
- expect(r).toStrictEqual([
8
- [1, 2, 3],
9
- ['a', 'b', 'c', 'd'],
10
- ]);
11
- });
12
- it('proportionally fills the suggestions array with max. 7 items when there are more than four per array', () => {
13
- const a1 = [1, 2, 3, 4, 5, 6, 7, 8];
14
- const a2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
15
- const r = equalizeArrays(a1, a2);
16
- expect(r).toStrictEqual([
17
- [1, 2, 3],
18
- ['a', 'b', 'c', 'd'],
19
- ]);
20
- });
21
- it('proportionally fills the suggestions array with items from arr 2', () => {
22
- const a1 = [1, 2];
23
- const a2 = ['a', 'b', 'c', 'd', 'e'];
24
- const r = equalizeArrays(a1, a2);
25
- expect(r).toStrictEqual([
26
- [1, 2],
27
- ['a', 'b', 'c', 'd', 'e'],
28
- ]);
29
- });
30
- it('proportionally fills the suggestions array with items from arr1', () => {
31
- const a1 = [1, 2, 3, 4, 5];
32
- const a2 = ['a', 'b'];
33
- const r = equalizeArrays(a1, a2);
34
- expect(r).toStrictEqual([
35
- [1, 2, 3, 4, 5],
36
- ['a', 'b'],
37
- ]);
38
- });
39
- it('does not slice if there are not enough items', () => {
40
- const a1 = [1, 2];
41
- const a2 = ['a', 'b'];
42
- const r = equalizeArrays(a1, a2);
43
- expect(r).toStrictEqual([
44
- [1, 2],
45
- ['a', 'b'],
46
- ]);
47
- });
48
- });
49
- //# sourceMappingURL=search.service.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.service.spec.js","sourceRoot":"","sources":["../../../../src/services/search/search.service.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { equalizeArrays } from './search.service';\n\ndescribe('search.service.ts', () => {\n it('proportionally fills the suggestions array with max. 7 items', () => {\n const a1 = [1, 2, 3];\n const a2 = ['a', 'b', 'c', 'd'];\n const r = equalizeArrays(a1, a2);\n expect(r).toStrictEqual([\n [1, 2, 3],\n ['a', 'b', 'c', 'd'],\n ]);\n });\n\n it('proportionally fills the suggestions array with max. 7 items when there are more than four per array', () => {\n const a1 = [1, 2, 3, 4, 5, 6, 7, 8];\n const a2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];\n const r = equalizeArrays(a1, a2);\n expect(r).toStrictEqual([\n [1, 2, 3],\n ['a', 'b', 'c', 'd'],\n ]);\n });\n\n it('proportionally fills the suggestions array with items from arr 2', () => {\n const a1 = [1, 2];\n const a2 = ['a', 'b', 'c', 'd', 'e'];\n const r = equalizeArrays(a1, a2);\n expect(r).toStrictEqual([\n [1, 2],\n ['a', 'b', 'c', 'd', 'e'],\n ]);\n });\n\n it('proportionally fills the suggestions array with items from arr1', () => {\n const a1 = [1, 2, 3, 4, 5];\n const a2 = ['a', 'b'];\n const r = equalizeArrays(a1, a2);\n expect(r).toStrictEqual([\n [1, 2, 3, 4, 5],\n ['a', 'b'],\n ]);\n });\n\n it('does not slice if there are not enough items', () => {\n const a1 = [1, 2];\n const a2 = ['a', 'b'];\n const r = equalizeArrays(a1, a2);\n expect(r).toStrictEqual([\n [1, 2],\n ['a', 'b'],\n ]);\n });\n});\n"]}
@@ -1,14 +0,0 @@
1
- Object.defineProperty(window, 'matchMedia', {
2
- writable: true,
3
- value: jest.fn().mockImplementation(query => ({
4
- matches: false,
5
- media: query,
6
- onchange: null,
7
- addListener: jest.fn(),
8
- removeListener: jest.fn(),
9
- addEventListener: jest.fn(),
10
- removeEventListener: jest.fn(),
11
- dispatchEvent: jest.fn(),
12
- })),
13
- });
14
- //# sourceMappingURL=setup-tests.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup-tests.js","sourceRoot":"","sources":["../../../src/tests/setup-tests.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE;EAC1C,QAAQ,EAAE,IAAI;EACd,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5C,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;IACtB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;IACzB,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;IAC3B,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;IAC9B,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;GACzB,CAAC,CAAC;CACJ,CAAC,CAAC","sourcesContent":["Object.defineProperty(window, 'matchMedia', {\n writable: true,\n value: jest.fn().mockImplementation(query => ({\n matches: false,\n media: query,\n onchange: null,\n addListener: jest.fn(), // deprecated\n removeListener: jest.fn(), // deprecated\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n })),\n});\n"]}
@@ -1,11 +0,0 @@
1
- import { uniqueId } from './utils';
2
- describe('utils', () => {
3
- describe('uniqueId', () => {
4
- it('generates a (sequential) unique id', () => {
5
- expect(uniqueId()).toEqual('1');
6
- expect(uniqueId('prefix-')).toEqual('prefix-2');
7
- expect(uniqueId()).toEqual('3');
8
- });
9
- });
10
- });
11
- //# sourceMappingURL=utils.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../../../src/utils/utils.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;EACrB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;MAC5C,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;MAChC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;MAChD,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;EACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { uniqueId } from './utils';\n\ndescribe('utils', () => {\n describe('uniqueId', () => {\n it('generates a (sequential) unique id', () => {\n expect(uniqueId()).toEqual('1');\n expect(uniqueId('prefix-')).toEqual('prefix-2');\n expect(uniqueId()).toEqual('3');\n });\n });\n});\n"]}