@envive-ai/react-hooks 0.2.6-alpha-arthur-2 → 0.2.6-alpha.11

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 (673) hide show
  1. package/dist/{NewOrgConfig-C_1T1iOt.js → NewOrgConfig-BZCP9E7v.js} +2 -2
  2. package/dist/{NewOrgConfig-D2Kvqa1z.cjs → NewOrgConfig-DWLMI1ga.cjs} +2 -2
  3. package/dist/SystemSettingsContext-CO5c1L62.cjs +20 -0
  4. package/dist/SystemSettingsContext-CXmUlH8i.js +13 -0
  5. package/dist/TrackComponentVisibleEvent-BJgNOypY.js +52 -0
  6. package/dist/TrackComponentVisibleEvent-BRC2FTp-.cjs +59 -0
  7. package/dist/amplitudeContext-CCVyp5RU.d.cts +52 -0
  8. package/dist/amplitudeContext-DFYBDc0h.d.ts +52 -0
  9. package/dist/api-BWSsazAG.js +166 -0
  10. package/dist/api-DeW6rHj3.cjs +239 -0
  11. package/dist/application/models/graphql/index.cjs +3 -3
  12. package/dist/application/models/graphql/index.d.cts +2 -2
  13. package/dist/application/models/graphql/index.d.ts +2 -2
  14. package/dist/application/models/graphql/index.js +3 -2
  15. package/dist/application/models/guards/api/index.cjs +3 -3
  16. package/dist/application/models/guards/api/index.d.cts +2 -2
  17. package/dist/application/models/guards/api/index.d.ts +2 -2
  18. package/dist/application/models/guards/api/index.js +3 -3
  19. package/dist/application/models/guards/utils.cjs +1 -1
  20. package/dist/application/models/guards/utils.d.ts +1 -1
  21. package/dist/application/models/guards/utils.js +1 -1
  22. package/dist/application/models/index.cjs +23 -7
  23. package/dist/application/models/index.d.cts +12 -167
  24. package/dist/application/models/index.d.ts +13 -168
  25. package/dist/application/models/index.js +11 -7
  26. package/dist/application/models/utilityTypes/index.cjs +1 -0
  27. package/dist/application/models/utilityTypes/index.d.cts +2 -0
  28. package/dist/application/models/utilityTypes/index.d.ts +2 -0
  29. package/dist/application/models/utilityTypes/index.js +3 -0
  30. package/dist/application/models/variantInfo/index.cjs +3 -0
  31. package/dist/application/models/variantInfo/index.d.cts +2 -0
  32. package/dist/application/models/variantInfo/index.d.ts +2 -0
  33. package/dist/application/models/variantInfo/index.js +3 -0
  34. package/dist/application/utils/index.cjs +19 -10
  35. package/dist/application/utils/index.d.cts +62 -11
  36. package/dist/application/utils/index.d.ts +64 -13
  37. package/dist/application/utils/index.js +19 -10
  38. package/dist/{atomStore-BQVO5haU.cjs → atomStore-DNji91Im.cjs} +1 -1
  39. package/dist/{atomStore-CfzCqWB9.js → atomStore-DXTVqiKc.js} +1 -1
  40. package/dist/atoms/app/index.cjs +24 -22
  41. package/dist/atoms/app/index.d.cts +21 -9
  42. package/dist/atoms/app/index.d.ts +20 -8
  43. package/dist/atoms/app/index.js +19 -17
  44. package/dist/atoms/atomStore/index.cjs +1 -1
  45. package/dist/atoms/atomStore/index.js +1 -1
  46. package/dist/atoms/chat/index.cjs +21 -20
  47. package/dist/atoms/chat/index.d.cts +46 -36
  48. package/dist/atoms/chat/index.d.ts +44 -34
  49. package/dist/atoms/chat/index.js +21 -20
  50. package/dist/atoms/globalSearch/index.cjs +2 -1
  51. package/dist/atoms/globalSearch/index.d.cts +6 -6
  52. package/dist/atoms/globalSearch/index.d.ts +1 -1
  53. package/dist/atoms/globalSearch/index.js +2 -1
  54. package/dist/atoms/org/index.cjs +11 -10
  55. package/dist/atoms/org/index.d.cts +32 -19
  56. package/dist/atoms/org/index.d.ts +32 -19
  57. package/dist/atoms/org/index.js +3 -2
  58. package/dist/atoms/search/index.cjs +47 -7
  59. package/dist/atoms/search/index.d.cts +15 -76
  60. package/dist/atoms/search/index.d.ts +15 -76
  61. package/dist/atoms/search/index.js +29 -7
  62. package/dist/atoms/search/types.cjs +5 -0
  63. package/dist/atoms/search/types.d.cts +2 -0
  64. package/dist/atoms/search/types.d.ts +2 -0
  65. package/dist/atoms/search/types.js +3 -0
  66. package/dist/atoms/search/utils.cjs +1 -1
  67. package/dist/atoms/search/utils.d.cts +1 -1
  68. package/dist/atoms/search/utils.d.ts +1 -1
  69. package/dist/atoms/search/utils.js +1 -1
  70. package/dist/cdnContext-BnqmnEvR.js +38 -0
  71. package/dist/cdnContext-CnYcBOr9.cjs +53 -0
  72. package/dist/chat-CqPuT9_V.cjs +393 -0
  73. package/dist/chat-DH70QqJp.js +257 -0
  74. package/dist/chatElementDisplayLocation-CpgV2wR1.d.ts +25 -0
  75. package/dist/chatElementDisplayLocation-DWmfNX_u.d.cts +25 -0
  76. package/dist/chatSearch-ChyGuHbu.js +295 -0
  77. package/dist/chatSearch-DpnpRWAW.cjs +418 -0
  78. package/dist/chatState-CcFtSqJT.cjs +120 -0
  79. package/dist/chatState-DKnNHmwe.js +34 -0
  80. package/dist/config/index.d.cts +4 -4
  81. package/dist/config/index.d.ts +4 -4
  82. package/dist/config/locators/components/chat/index.d.cts +1 -1
  83. package/dist/config/locators/components/chat/index.d.ts +1 -1
  84. package/dist/config/locators/components/chat/variants/index.d.cts +1 -1
  85. package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
  86. package/dist/config/locators/components/common/index.d.cts +1 -1
  87. package/dist/config/locators/components/common/index.d.ts +1 -1
  88. package/dist/config/locators/components/index.d.cts +1 -1
  89. package/dist/config/locators/components/index.d.ts +1 -1
  90. package/dist/config/locators/components/search/index.d.cts +1 -1
  91. package/dist/config/locators/components/search/index.d.ts +1 -1
  92. package/dist/config/locators/index.d.cts +4 -4
  93. package/dist/config/locators/index.d.ts +4 -4
  94. package/dist/contexts/amplitudeContext/index.cjs +22 -23
  95. package/dist/contexts/amplitudeContext/index.d.cts +2 -11
  96. package/dist/contexts/amplitudeContext/index.d.ts +2 -11
  97. package/dist/contexts/amplitudeContext/index.js +20 -22
  98. package/dist/contexts/cdnContext/index.cjs +4 -4
  99. package/dist/contexts/cdnContext/index.d.cts +6 -2
  100. package/dist/contexts/cdnContext/index.d.ts +6 -2
  101. package/dist/contexts/cdnContext/index.js +4 -4
  102. package/dist/contexts/chatContext/index.cjs +326 -0
  103. package/dist/contexts/chatContext/index.d.cts +15 -0
  104. package/dist/contexts/chatContext/index.d.ts +15 -0
  105. package/dist/contexts/chatContext/index.js +319 -0
  106. package/dist/contexts/enviveConfigContext/index.cjs +4 -4
  107. package/dist/contexts/enviveConfigContext/index.d.cts +25 -3
  108. package/dist/contexts/enviveConfigContext/index.d.ts +25 -3
  109. package/dist/contexts/enviveConfigContext/index.js +4 -4
  110. package/dist/contexts/enviveCssContext/index.cjs +19 -15
  111. package/dist/contexts/enviveCssContext/index.d.cts +5 -3
  112. package/dist/contexts/enviveCssContext/index.d.ts +5 -3
  113. package/dist/contexts/enviveCssContext/index.js +19 -15
  114. package/dist/contexts/featureFlagContext/index.cjs +10 -9
  115. package/dist/contexts/featureFlagContext/index.d.cts +12 -3
  116. package/dist/contexts/featureFlagContext/index.d.ts +12 -3
  117. package/dist/contexts/featureFlagContext/index.js +7 -6
  118. package/dist/contexts/featureFlagServiceContext/index.cjs +3 -4
  119. package/dist/contexts/featureFlagServiceContext/index.d.cts +5 -1
  120. package/dist/contexts/featureFlagServiceContext/index.d.ts +5 -1
  121. package/dist/contexts/featureFlagServiceContext/index.js +3 -4
  122. package/dist/contexts/graphqlContext/index.cjs +13 -8
  123. package/dist/contexts/graphqlContext/index.d.cts +15 -11
  124. package/dist/contexts/graphqlContext/index.d.ts +15 -11
  125. package/dist/contexts/graphqlContext/index.js +13 -8
  126. package/dist/contexts/localStorageContext/index.cjs +3 -3
  127. package/dist/contexts/localStorageContext/index.d.cts +22 -3
  128. package/dist/contexts/localStorageContext/index.d.ts +22 -3
  129. package/dist/contexts/localStorageContext/index.js +3 -4
  130. package/dist/contexts/newOrgConfigContext/index.cjs +17 -13
  131. package/dist/contexts/newOrgConfigContext/index.d.cts +16 -12
  132. package/dist/contexts/newOrgConfigContext/index.d.ts +16 -12
  133. package/dist/contexts/newOrgConfigContext/index.js +17 -13
  134. package/dist/contexts/searchContext/index.cjs +24 -23
  135. package/dist/contexts/searchContext/index.d.cts +7 -2
  136. package/dist/contexts/searchContext/index.d.ts +7 -2
  137. package/dist/contexts/searchContext/index.js +24 -23
  138. package/dist/contexts/sessionStorageContext/index.cjs +2 -2
  139. package/dist/contexts/sessionStorageContext/index.d.cts +6 -2
  140. package/dist/contexts/sessionStorageContext/index.d.ts +6 -2
  141. package/dist/contexts/sessionStorageContext/index.js +2 -2
  142. package/dist/contexts/shopifyUrlContext/index.cjs +2 -2
  143. package/dist/contexts/shopifyUrlContext/index.d.cts +12 -2
  144. package/dist/contexts/shopifyUrlContext/index.d.ts +12 -2
  145. package/dist/contexts/shopifyUrlContext/index.js +2 -2
  146. package/dist/contexts/systemSettingsContext/index.cjs +4 -4
  147. package/dist/contexts/systemSettingsContext/index.d.cts +13 -2
  148. package/dist/contexts/systemSettingsContext/index.d.ts +15 -4
  149. package/dist/contexts/systemSettingsContext/index.js +4 -4
  150. package/dist/contexts/types.cjs +7 -0
  151. package/dist/contexts/types.d.cts +5 -0
  152. package/dist/contexts/types.d.ts +5 -0
  153. package/dist/contexts/types.js +3 -0
  154. package/dist/contexts/userIdentityContext/index.cjs +21 -19
  155. package/dist/contexts/userIdentityContext/index.d.cts +2 -11
  156. package/dist/contexts/userIdentityContext/index.d.ts +2 -11
  157. package/dist/contexts/userIdentityContext/index.js +19 -17
  158. package/dist/custservice-types-CcPnAJ5k.d.ts +29 -0
  159. package/dist/custservice-types-_Dnz4sMy.d.cts +29 -0
  160. package/dist/domObserver-Bqf3ooj8.cjs +304 -0
  161. package/dist/{domObserver-C2oQO8vi.cjs → domObserver-v9ODTyfT.js} +4 -23
  162. package/dist/enviveConfig-DZBohDpc.js +62 -0
  163. package/dist/enviveConfig-Dv9-esGV.cjs +130 -0
  164. package/dist/enviveConfigContext-D2OELZDR.cjs +60 -0
  165. package/dist/enviveConfigContext-DrDjCems.js +45 -0
  166. package/dist/events/index.cjs +3 -2
  167. package/dist/events/index.d.cts +15 -2
  168. package/dist/events/index.d.ts +15 -2
  169. package/dist/events/index.js +2 -2
  170. package/dist/events-DYY4l817.cjs +90 -0
  171. package/dist/events-DyUix-Bn.js +78 -0
  172. package/dist/featureFlagServiceContext-B01ZkIwj.d.cts +23 -0
  173. package/dist/featureFlagServiceContext-CJyYItqu.cjs +62 -0
  174. package/dist/featureFlagServiceContext-FBM6DdMJ.js +42 -0
  175. package/dist/featureFlagServiceContext-jZzoym5C.d.ts +23 -0
  176. package/dist/featureGates-KEwAL8p_.js +26 -0
  177. package/dist/featureGates-qU_ulhpC.cjs +32 -0
  178. package/dist/frontendConfig-BIq8r6nC.d.cts +858 -0
  179. package/dist/frontendConfig-CixANNjw.d.ts +858 -0
  180. package/dist/{globalSearch-Cpc8egsM.cjs → globalSearch-Ba342VVG.cjs} +1 -1
  181. package/dist/globalSearch-DQCMamhv.js +1 -0
  182. package/dist/globalSearch-DYxPE02f.cjs +0 -0
  183. package/dist/{globalSearch-nmrfGLOn.js → globalSearch-eGx-9JQz.js} +1 -1
  184. package/dist/graphql-3PxNRFOc.js +36 -0
  185. package/dist/graphql-DGYfelZp.cjs +53 -0
  186. package/dist/graphqlConfig-GHZ1UgCw.cjs +73 -0
  187. package/dist/graphqlConfig-mDg6J44N.js +24 -0
  188. package/dist/graphqlContext-B4twVCqw.d.ts +28 -0
  189. package/dist/graphqlContext-BZPEAFSR.cjs +111 -0
  190. package/dist/graphqlContext-W6iEyEkv.d.cts +28 -0
  191. package/dist/graphqlContext-eaZPxgRE.js +96 -0
  192. package/dist/hooks/AmplitudeOperations/index.cjs +22 -23
  193. package/dist/hooks/AmplitudeOperations/index.d.cts +2 -2
  194. package/dist/hooks/AmplitudeOperations/index.d.ts +2 -2
  195. package/dist/hooks/AmplitudeOperations/index.js +21 -22
  196. package/dist/hooks/AppDetails/index.cjs +22 -20
  197. package/dist/hooks/AppDetails/index.d.cts +24 -3
  198. package/dist/hooks/AppDetails/index.d.ts +24 -3
  199. package/dist/hooks/AppDetails/index.js +22 -20
  200. package/dist/hooks/CdnOperations/index.cjs +4 -4
  201. package/dist/hooks/CdnOperations/index.js +4 -4
  202. package/dist/hooks/ChatToggle/index.cjs +25 -28
  203. package/dist/hooks/ChatToggle/index.d.cts +2 -2
  204. package/dist/hooks/ChatToggle/index.d.ts +2 -2
  205. package/dist/hooks/ChatToggle/index.js +22 -25
  206. package/dist/hooks/ChatToggleAnalytics/index.cjs +24 -25
  207. package/dist/hooks/ChatToggleAnalytics/index.d.cts +2 -2
  208. package/dist/hooks/ChatToggleAnalytics/index.d.ts +2 -2
  209. package/dist/hooks/ChatToggleAnalytics/index.js +23 -24
  210. package/dist/hooks/CustomerSupportHandoff/index.cjs +2 -2
  211. package/dist/hooks/CustomerSupportHandoff/index.js +2 -2
  212. package/dist/hooks/Debounce/index.cjs +2 -20
  213. package/dist/hooks/Debounce/index.js +2 -18
  214. package/dist/hooks/ElementObserver/index.cjs +6 -4
  215. package/dist/hooks/ElementObserver/index.d.cts +25 -4
  216. package/dist/hooks/ElementObserver/index.d.ts +25 -4
  217. package/dist/hooks/ElementObserver/index.js +6 -4
  218. package/dist/hooks/FloatingButtonVisibility/index.cjs +73 -0
  219. package/dist/hooks/FloatingButtonVisibility/index.d.cts +7 -0
  220. package/dist/hooks/FloatingButtonVisibility/index.d.ts +7 -0
  221. package/dist/hooks/FloatingButtonVisibility/index.js +69 -0
  222. package/dist/hooks/GrabAndScroll/index.cjs +1 -1
  223. package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
  224. package/dist/hooks/GrabAndScroll/index.d.ts +2 -2
  225. package/dist/hooks/GrabAndScroll/index.js +1 -1
  226. package/dist/hooks/GraphQLConfig/index.cjs +14 -9
  227. package/dist/hooks/GraphQLConfig/index.d.cts +14 -2
  228. package/dist/hooks/GraphQLConfig/index.d.ts +14 -2
  229. package/dist/hooks/GraphQLConfig/index.js +14 -9
  230. package/dist/hooks/IdentifyUser/index.cjs +21 -19
  231. package/dist/hooks/IdentifyUser/index.js +20 -18
  232. package/dist/hooks/ImageResolver/index.cjs +29 -20
  233. package/dist/hooks/ImageResolver/index.js +29 -20
  234. package/dist/hooks/Intersection/index.cjs +1 -1
  235. package/dist/hooks/Intersection/index.d.cts +1 -1
  236. package/dist/hooks/Intersection/index.js +1 -1
  237. package/dist/hooks/LastInteraction/index.cjs +34 -0
  238. package/dist/hooks/LastInteraction/index.d.cts +7 -0
  239. package/dist/hooks/LastInteraction/index.d.ts +7 -0
  240. package/dist/hooks/LastInteraction/index.js +32 -0
  241. package/dist/hooks/LocalStorageOperations/index.cjs +7 -8
  242. package/dist/hooks/LocalStorageOperations/index.js +3 -4
  243. package/dist/hooks/MessageFilter/index.cjs +12 -3
  244. package/dist/hooks/MessageFilter/index.d.cts +18 -2
  245. package/dist/hooks/MessageFilter/index.d.ts +18 -2
  246. package/dist/hooks/MessageFilter/index.js +11 -2
  247. package/dist/hooks/NewOrgConfig/index.cjs +18 -14
  248. package/dist/hooks/NewOrgConfig/index.d.cts +17 -3
  249. package/dist/hooks/NewOrgConfig/index.d.ts +17 -3
  250. package/dist/hooks/NewOrgConfig/index.js +18 -14
  251. package/dist/hooks/Search/index.cjs +173 -314
  252. package/dist/hooks/Search/index.d.cts +58 -3
  253. package/dist/hooks/Search/index.d.ts +58 -3
  254. package/dist/hooks/Search/index.js +162 -302
  255. package/dist/hooks/SearchOperations/index.cjs +25 -24
  256. package/dist/hooks/SearchOperations/index.d.cts +3 -2
  257. package/dist/hooks/SearchOperations/index.d.ts +3 -2
  258. package/dist/hooks/SearchOperations/index.js +25 -24
  259. package/dist/hooks/SessionStorageOperations/index.cjs +2 -2
  260. package/dist/hooks/SessionStorageOperations/index.js +2 -2
  261. package/dist/hooks/ShopifyUrlOperations/index.cjs +3 -3
  262. package/dist/hooks/ShopifyUrlOperations/index.d.cts +5 -2
  263. package/dist/hooks/ShopifyUrlOperations/index.d.ts +5 -2
  264. package/dist/hooks/ShopifyUrlOperations/index.js +3 -3
  265. package/dist/hooks/SnapCalculator/index.cjs +1 -1
  266. package/dist/hooks/SnapCalculator/index.d.cts +3 -4
  267. package/dist/hooks/SnapCalculator/index.d.ts +3 -4
  268. package/dist/hooks/SnapCalculator/index.js +1 -1
  269. package/dist/hooks/SystemSettingsContext/index.cjs +6 -17
  270. package/dist/hooks/SystemSettingsContext/index.d.cts +16 -5
  271. package/dist/hooks/SystemSettingsContext/index.d.ts +16 -5
  272. package/dist/hooks/SystemSettingsContext/index.js +6 -15
  273. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +21 -23
  274. package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +3 -2
  275. package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +3 -2
  276. package/dist/hooks/TrackComponentVisibleEvent/index.js +21 -23
  277. package/dist/hooks/UpdateAnalyticsProps/index.cjs +24 -26
  278. package/dist/hooks/UpdateAnalyticsProps/index.js +20 -22
  279. package/dist/hooks/utils.cjs +1 -1
  280. package/dist/hooks/utils.d.cts +14 -20
  281. package/dist/hooks/utils.d.ts +14 -20
  282. package/dist/hooks/utils.js +1 -1
  283. package/dist/index-9oqgeOVC.d.cts +186 -0
  284. package/dist/index-A0HvA68Y.d.cts +1 -0
  285. package/dist/index-BC93l5Th.d.ts +1 -0
  286. package/dist/index-BEzmil_W.d.ts +44 -0
  287. package/dist/{index-DtzPIcQp.d.ts → index-BdjH4aRG.d.ts} +1 -1
  288. package/dist/{index-CsmO1rDH.d.ts → index-BfM7zKRO.d.ts} +1 -1
  289. package/dist/index-Bmub8e38.d.cts +98 -0
  290. package/dist/{index-mv7KvWDq.d.ts → index-CA1Eo7DA.d.ts} +1 -1
  291. package/dist/index-CCa4tZuO.d.ts +184 -0
  292. package/dist/{index-ChiZg0yw.d.cts → index-CCboEuTO.d.cts} +1 -1
  293. package/dist/index-CESxqFso.d.cts +228 -0
  294. package/dist/{index-BbqT4BQv.d.cts → index-COXkY78t.d.cts} +1 -1
  295. package/dist/index-CboygwjO.d.ts +676 -0
  296. package/dist/index-CiWEYzXl.d.cts +184 -0
  297. package/dist/{index-jFQefHda.d.ts → index-Cw9oYJnq.d.ts} +1 -1
  298. package/dist/index-D5lw0cMx.d.ts +186 -0
  299. package/dist/{index-CAJq_8bO.d.cts → index-DZtnHhlr.d.cts} +1 -1
  300. package/dist/index-Dfwnna1j.d.ts +228 -0
  301. package/dist/index-Dt_C-I-2.d.cts +676 -0
  302. package/dist/index-OkKEOL6H.d.cts +44 -0
  303. package/dist/index-bjMvkcBF.d.ts +98 -0
  304. package/dist/{index-npqPeJ1g.d.cts → index-hAqp0oYb.d.cts} +1 -1
  305. package/dist/interceptors/index.cjs +3 -28
  306. package/dist/interceptors/index.d.cts +16 -4
  307. package/dist/interceptors/index.d.ts +16 -4
  308. package/dist/interceptors/index.js +3 -25
  309. package/dist/interceptors/types.cjs +1 -0
  310. package/dist/interceptors/types.d.cts +14 -0
  311. package/dist/interceptors/types.d.ts +14 -0
  312. package/dist/interceptors/types.js +3 -0
  313. package/dist/localStorageContext-BPZ82q-G.js +95 -0
  314. package/dist/localStorageContext-NRP-CdmF.cjs +115 -0
  315. package/dist/{logger-BqHq67zN.cjs → logger-TBIl4uIH.cjs} +1 -1
  316. package/dist/{logger-BMVdhQOV.js → logger-W3lqg-4b.js} +1 -1
  317. package/dist/models-D-4db7XW.cjs +1537 -0
  318. package/dist/models-c86hYW-F.js +1296 -0
  319. package/dist/{newOrgConfigAtom-rrYHmp1b.cjs → newOrgConfigAtom-D6R-7HCk.cjs} +1 -1
  320. package/dist/newOrgConfigAtom-bn1lnljf.js +8 -0
  321. package/dist/newOrgConfigContext-BC79qoiV.d.ts +16 -0
  322. package/dist/newOrgConfigContext-BqZwD8-B.cjs +68 -0
  323. package/dist/newOrgConfigContext-DbcDClwd.js +53 -0
  324. package/dist/newOrgConfigContext-eS4ZLo58.d.cts +16 -0
  325. package/dist/nodeSelector-DybpVr-i.d.ts +31 -0
  326. package/dist/nodeSelector-vKB44CDB.d.cts +31 -0
  327. package/dist/org-CIhjzxWr.cjs +43 -0
  328. package/dist/org-CeWXnpwF.js +12 -0
  329. package/dist/search-6RrxBXD6.d.cts +20 -0
  330. package/dist/search-BBu5YeQa.js +126 -0
  331. package/dist/search-D23INSNg.cjs +205 -0
  332. package/dist/search-filter-types-BItKtezf.d.cts +102 -0
  333. package/dist/search-filter-types-fZf91Pdw.d.ts +102 -0
  334. package/dist/search-nuWWnRRV.d.ts +20 -0
  335. package/dist/searchContext-BPT44uk-.js +129 -0
  336. package/dist/searchContext-CwRRiXQ3.cjs +145 -0
  337. package/dist/searchServiceAdapter-DEv1tTn0.cjs +34 -0
  338. package/dist/searchServiceAdapter-WyCU55NV.js +16 -0
  339. package/dist/sessionStorageContext-1Ks_d4Z0.cjs +66 -0
  340. package/dist/sessionStorageContext-CDcl7NVl.js +52 -0
  341. package/dist/shopifyUrlContext-CejRZfj7.js +61 -0
  342. package/dist/shopifyUrlContext-lnHoAOEf.cjs +75 -0
  343. package/dist/spiffyWidgets-CdxRcXhW.d.ts +20 -0
  344. package/dist/spiffyWidgets-eNbU1gMc.d.cts +20 -0
  345. package/dist/systemSettingsContext-Ba-wi2NZ.cjs +60 -0
  346. package/dist/systemSettingsContext-DumUaV0m.js +39 -0
  347. package/dist/test-types-B3YQpECG.d.cts +13 -0
  348. package/dist/test-types-C8NHqaUS.d.ts +13 -0
  349. package/dist/types/index.cjs +48 -3
  350. package/dist/types/index.d.cts +18 -2
  351. package/dist/types/index.d.ts +18 -2
  352. package/dist/types/index.js +44 -2
  353. package/dist/types-BGqrvAsw.d.ts +10 -0
  354. package/dist/types-CKPddlfS.cjs +0 -0
  355. package/dist/types-CS0Hrzja.js +30 -0
  356. package/dist/types-CtUb63bt.js +76 -0
  357. package/dist/types-CxObxLKs.cjs +48 -0
  358. package/dist/types-DIiH_5gL.d.cts +10 -0
  359. package/dist/types-Dc6hx6ei.js +1 -0
  360. package/dist/types-UUvB6h05.cjs +106 -0
  361. package/dist/types-aQTzSrH1.d.cts +51 -0
  362. package/dist/types-kAjmR2du.d.ts +51 -0
  363. package/dist/types.cjs +0 -0
  364. package/dist/types.d.cts +16 -0
  365. package/dist/types.d.ts +16 -0
  366. package/dist/types.js +1 -0
  367. package/dist/urlsParser-COzMdJaX.cjs +78 -0
  368. package/dist/urlsParser-DxjoLj98.js +42 -0
  369. package/dist/useAmplitudeOperations-Cv0fi3uj.cjs +41 -0
  370. package/dist/useAmplitudeOperations-Ti6phPPq.js +34 -0
  371. package/dist/useAppDetails-CsXHPAh1.cjs +38 -0
  372. package/dist/useAppDetails-PUfYwCjK.js +30 -0
  373. package/dist/useDebounce-DZ8Cgiwc.cjs +26 -0
  374. package/dist/useDebounce-v9cezyjn.js +19 -0
  375. package/dist/useGraphQLConfig-BizpCw23.cjs +76 -0
  376. package/dist/useGraphQLConfig-DFWl9Z89.js +63 -0
  377. package/dist/{useIntersection-BkMkuJcZ.js → useIntersection-Cncgxdmy.js} +1 -1
  378. package/dist/{useIntersection-BcBCa890.cjs → useIntersection-m4PEpvG7.cjs} +1 -1
  379. package/dist/useMessageInterceptor-BjGP_uXm.js +25 -0
  380. package/dist/useMessageInterceptor-arAqUq1Q.cjs +33 -0
  381. package/dist/userIdentityContext-W1OWF3cG.d.ts +20 -0
  382. package/dist/userIdentityContext-kU1PIo8K.d.cts +20 -0
  383. package/dist/utilityTypes-B2KuRn37.js +1 -0
  384. package/dist/utilityTypes-BGbL2WTP.cjs +0 -0
  385. package/dist/{utils-CqVRbvfN.cjs → utils-2SWrJ12w.cjs} +1 -1
  386. package/dist/utils-BewguHW0.d.cts +22 -0
  387. package/dist/{utils-CiJLDPjY.cjs → utils-CDw74BCO.cjs} +1 -1
  388. package/dist/utils-CLGXsOwE.cjs +1591 -0
  389. package/dist/{utils-DQhbbAnt.js → utils-CqBxIpEV.js} +1 -1
  390. package/dist/{utils-B1LVzQYK.js → utils-DIvMgPe8.js} +1 -1
  391. package/dist/utils-D_kATUj6.js +92 -0
  392. package/dist/{utils-BitIIghf.d.ts → utils-DpneNSJf.d.ts} +1 -1
  393. package/dist/utils-hKYwSBo9.d.ts +22 -0
  394. package/dist/utils-hYTjy7hJ.cjs +130 -0
  395. package/dist/utils-jYtD3hmA.js +1385 -0
  396. package/dist/variantInfo-BfKlkaWU.js +11 -0
  397. package/dist/variantInfo-DpLn4nHz.cjs +17 -0
  398. package/package.json +36 -9
  399. package/src/application/commerce-api.ts +37 -40
  400. package/src/application/models/api/context.ts +4 -0
  401. package/src/application/models/api/generationParams.ts +4 -0
  402. package/src/application/models/api/nextMessageRequest.ts +11 -0
  403. package/src/application/models/api/orgAnalyticsConfig.ts +19 -0
  404. package/src/application/models/api/orgConfigResults.ts +44 -0
  405. package/src/application/models/api/organizationConfig.ts +12 -0
  406. package/src/{types/ApiResponse.ts → application/models/api/response.ts} +29 -35
  407. package/src/application/models/api/responseGenerics.ts +67 -0
  408. package/src/application/models/api/search.ts +26 -0
  409. package/src/application/models/api/suggestion.ts +4 -0
  410. package/src/application/models/api/supportedEventRequest.ts +8 -0
  411. package/src/application/models/api/userEvent.ts +101 -0
  412. package/src/application/models/cachedValue.ts +8 -0
  413. package/src/application/models/chatElementDisplayLocation.ts +22 -0
  414. package/src/application/models/clientDetails.ts +18 -0
  415. package/src/application/models/colorsConfig.ts +28 -0
  416. package/src/application/models/conversationalSearchIds.ts +5 -0
  417. package/src/application/models/dataLayer.ts +45 -0
  418. package/src/application/models/events.ts +5 -0
  419. package/src/application/models/featureGates.ts +21 -0
  420. package/src/application/models/frontendConfig.ts +14 -0
  421. package/src/application/models/googleAnalyticsEvents.ts +8 -0
  422. package/src/application/models/graphql/index.ts +0 -1
  423. package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +23 -1
  424. package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +89 -1
  425. package/src/application/models/guards/api/isApiFormResponse.ts +4 -4
  426. package/src/application/models/guards/api/isApiFormSubmittedResponseAttributes.ts +2 -2
  427. package/src/application/models/guards/api/isApiOrderResponseAttributes.ts +20 -2
  428. package/src/application/models/guards/api/isApiOrgConfigResults.ts +9 -3
  429. package/src/application/models/guards/api/isApiOrganizationConfig.ts +32 -8
  430. package/src/application/models/guards/api/isApiPDPEventAttributes.ts +5 -8
  431. package/src/application/models/guards/api/isApiPLPEventAttributes.ts +10 -14
  432. package/src/application/models/guards/api/isApiPageResponseAttributes.ts +1 -1
  433. package/src/application/models/guards/api/isApiProductResponseAttributes.ts +4 -2
  434. package/src/application/models/guards/api/isApiProductSearchAttributes.ts +6 -9
  435. package/src/application/models/guards/api/isApiProductSearchFilterAttributes.ts +4 -7
  436. package/src/application/models/guards/api/isApiQueryTypedEventAttributes.ts +3 -8
  437. package/src/application/models/guards/api/isApiResponse.ts +15 -22
  438. package/src/application/models/guards/api/isApiReviewResponseAttributes.ts +1 -1
  439. package/src/application/models/guards/api/isApiReviewRichInformation.ts +1 -1
  440. package/src/application/models/guards/api/isApiTextResponseAttributes.ts +1 -1
  441. package/src/application/models/guards/graphQL/isGraphQLColorsConfig.ts +1 -1
  442. package/src/application/models/guards/isBaseEcommerceEvent.ts +2 -1
  443. package/src/application/models/guards/isGA4EcommerceEvent.ts +1 -1
  444. package/src/application/models/guards/isLegacyUAEcommerceEvent.ts +1 -1
  445. package/src/application/models/guards/isMobilePLPChatPlacementParameter.ts +3 -1
  446. package/src/application/models/guards/isSpanxTakeAQuizCtaParameter.ts +3 -5
  447. package/src/application/models/guards/isVariantInfo.ts +1 -6
  448. package/src/application/models/index.ts +95 -30
  449. package/src/application/models/localStorageEventListener.ts +4 -0
  450. package/src/{types/Message.ts → application/models/message.ts} +34 -38
  451. package/src/application/models/mobilePLPChatPlacementParameter.ts +3 -0
  452. package/src/application/models/orgsEnum.ts +36 -0
  453. package/src/application/models/productExperiment.ts +5 -0
  454. package/src/application/models/spanxTakeAQuizCtaParameter.ts +4 -0
  455. package/src/application/models/spiffyWidgets.ts +16 -0
  456. package/src/application/models/utilityTypes/camelCase.ts +87 -0
  457. package/src/application/models/utilityTypes/camelCasedPropertiesDeep.ts +80 -0
  458. package/src/application/models/utilityTypes/delimiterCase.ts +121 -0
  459. package/src/application/models/utilityTypes/delimiterCasedPropertiesDeep.ts +98 -0
  460. package/src/application/models/utilityTypes/index.ts +1 -0
  461. package/src/application/models/utilityTypes/internal.ts +93 -0
  462. package/src/application/models/utilityTypes/primitive.ts +8 -0
  463. package/src/application/models/utilityTypes/snakeCasedPropertiesDeep.ts +49 -0
  464. package/src/application/models/utilityTypes/splitWords.ts +76 -0
  465. package/src/application/models/utilityTypes/trim.ts +28 -0
  466. package/src/application/models/utilityTypes/unknownArray.ts +25 -0
  467. package/src/application/models/utils/snakeToCamelTransformer.ts +8 -8
  468. package/src/application/models/validators/validateGraphQLColorsConfig.ts +2 -6
  469. package/src/application/models/validators/validateGraphQLFrontendConfig.ts +6 -6
  470. package/src/application/models/validators/validateMobilePLPChatPlacementParameter.ts +3 -5
  471. package/src/application/models/validators/validateOrgConfigResults.ts +5 -6
  472. package/src/application/models/validators/validateOrganizationConfig.ts +8 -11
  473. package/src/application/models/validators/validateResponse.ts +44 -66
  474. package/src/application/models/validators/validateSuggestion.ts +1 -1
  475. package/src/application/models/validators/validateUserEvent.ts +12 -23
  476. package/src/application/models/variantInfo/index.ts +1 -0
  477. package/src/application/models/variantInfo/pageVisitInfo.ts +6 -0
  478. package/src/application/models/variantInfo/plpInfo.ts +3 -0
  479. package/src/application/models/variantInfo/productInfo.ts +5 -0
  480. package/src/application/models/variantInfo/variantInfo.ts +29 -0
  481. package/src/application/utils/__tests__/divideArrays.test.ts +14 -0
  482. package/src/application/utils/analyticsUtils.ts +8 -1
  483. package/src/application/utils/cdnUtils.ts +11 -0
  484. package/src/application/utils/coreContextToApiContext.ts +1 -3
  485. package/src/application/utils/coreUserEventToApiUserEvent.ts +2 -2
  486. package/src/application/utils/elementObserver.ts +1 -1
  487. package/src/application/utils/imageFilter.ts +2 -5
  488. package/src/application/utils/index.ts +21 -20
  489. package/src/application/utils/messageFromFormSubmittedEvent.ts +1 -1
  490. package/src/application/utils/messageFromQueryEvent.ts +1 -1
  491. package/src/application/utils/messageFromResponse.ts +10 -14
  492. package/src/application/utils/messageFromSuggestionEvent.ts +4 -6
  493. package/src/application/utils/mouseEventTypes.ts +1 -1
  494. package/src/application/utils/nextMessageRequestToApiRequest.ts +1 -1
  495. package/src/application/utils/overrides.ts +49 -1
  496. package/src/application/utils/supportedEventRequestToApiRequest.ts +1 -3
  497. package/src/application/utils/urlsParser.ts +7 -1
  498. package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +1 -1
  499. package/src/atoms/app/index.ts +25 -15
  500. package/src/atoms/app/variant.ts +1 -1
  501. package/src/atoms/chat/chatState.ts +4 -4
  502. package/src/atoms/chat/form.ts +1 -1
  503. package/src/atoms/chat/messageQueue.ts +50 -25
  504. package/src/atoms/chat/replies.ts +2 -1
  505. package/src/atoms/chat/suggestions.ts +29 -34
  506. package/src/atoms/envive/enviveConfig.ts +20 -14
  507. package/src/atoms/org/customerService.ts +8 -4
  508. package/src/atoms/org/graphqlConfig.ts +15 -7
  509. package/src/atoms/org/index.ts +6 -4
  510. package/src/atoms/org/newOrgConfigAtom.ts +2 -2
  511. package/src/atoms/org/orgAnalyticsConfig.ts +1 -1
  512. package/src/atoms/search/chatSearch.ts +317 -0
  513. package/src/atoms/search/index.ts +1 -0
  514. package/src/atoms/search/productFilters.ts +52 -72
  515. package/src/atoms/search/productSorter.ts +2 -2
  516. package/src/atoms/search/searchAPI.ts +60 -42
  517. package/src/atoms/search/searchServiceAdapter.ts +1 -1
  518. package/src/atoms/search/types.ts +55 -0
  519. package/src/config/divIds.ts +27 -0
  520. package/src/config/socialProofClasses.ts +17 -0
  521. package/src/contexts/amplitudeContext/amplitudeContext.tsx +57 -19
  522. package/src/contexts/cdnContext/cdnContext.tsx +6 -1
  523. package/src/contexts/chatContext/chatContext.tsx +509 -0
  524. package/src/contexts/chatContext/index.ts +1 -0
  525. package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +26 -12
  526. package/src/contexts/enviveCssContext/enviveCssContext.tsx +12 -5
  527. package/src/contexts/featureFlagContext/featureFlagContext.tsx +48 -27
  528. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +3 -11
  529. package/src/contexts/graphqlContext/graphqlContext.tsx +95 -40
  530. package/src/contexts/localStorageContext/localStorageContext.tsx +60 -26
  531. package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +22 -10
  532. package/src/contexts/searchContext/searchContext.tsx +49 -29
  533. package/src/contexts/sessionStorageContext/sessionStorageContext.tsx +33 -12
  534. package/src/contexts/shopifyUrlContext/shopifyUrlContext.tsx +37 -20
  535. package/src/contexts/systemSettingsContext/systemSettingsContext.tsx +21 -8
  536. package/src/contexts/types.ts +1067 -0
  537. package/src/contexts/userIdentityContext/userIdentityContext.tsx +77 -33
  538. package/src/events/event-types.ts +11 -0
  539. package/src/events/index.ts +5 -8
  540. package/src/events/registerAnalyticsListeners.ts +13 -10
  541. package/src/hooks/AmplitudeOperations/useAmplitudeOperations.ts +11 -6
  542. package/src/hooks/AppDetails/useAppDetails.ts +24 -10
  543. package/src/hooks/ChatToggle/useChatToggle.ts +19 -7
  544. package/src/hooks/ChatToggleAnalytics/useChatToggleAnalytics.ts +4 -4
  545. package/src/hooks/CustomerSupportHandoff/useCustomerSupportHandoff.ts +1 -1
  546. package/src/hooks/ElementObserver/useElementObserver.ts +32 -14
  547. package/src/hooks/FloatingButtonVisibility/index.ts +1 -0
  548. package/src/hooks/FloatingButtonVisibility/useFloatingButtonVisibility.ts +99 -0
  549. package/src/hooks/GrabAndScroll/useGrabAndScroll.ts +124 -125
  550. package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +7 -5
  551. package/src/hooks/ImageResolver/useImageResolver.ts +31 -24
  552. package/src/hooks/LastInteraction/index.ts +1 -0
  553. package/src/hooks/LastInteraction/useLastInteraction.ts +42 -0
  554. package/src/hooks/LocalStorageOperations/useLocalStorageOperations.ts +19 -12
  555. package/src/hooks/MessageFilter/useMessageFilter.ts +7 -1
  556. package/src/hooks/Search/useSearch.tsx +217 -87
  557. package/src/hooks/SearchOperations/useSearchOperations.ts +12 -8
  558. package/src/hooks/ShopifyUrlOperations/useShopifyUrlOperations.ts +14 -8
  559. package/src/hooks/SnapCalculator/useSnapCalculator.ts +2 -1
  560. package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +11 -8
  561. package/src/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.ts +25 -11
  562. package/src/hooks/utils.ts +29 -19
  563. package/src/interceptors/index.ts +2 -1
  564. package/src/interceptors/types.ts +6 -0
  565. package/src/interceptors/useMessageInterceptor.ts +6 -10
  566. package/src/merchants/domInsertion.ts +30 -0
  567. package/src/merchants/gridInsertion.ts +19 -0
  568. package/src/types/config-versions.ts +6 -0
  569. package/src/types/customerService.ts +31 -0
  570. package/src/types/custservice-types.ts +28 -0
  571. package/src/{exceptions → types/exceptions}/unsupportedProductExceptions.ts +2 -2
  572. package/src/types/floatingbuttonoverrides-types.ts +10 -0
  573. package/src/types/index.ts +5 -4
  574. package/src/types/search-filter-types.ts +111 -0
  575. package/src/types/suggestionBarV2-types.ts +4 -0
  576. package/src/types/test-types.ts +3 -0
  577. package/src/types.ts +11 -0
  578. package/dist/AmplitudeOperations-6Y7GejD-.cjs +0 -41
  579. package/dist/AmplitudeOperations-DOEgdx-a.js +0 -34
  580. package/dist/TrackComponentVisibleEvent-BvDOoSsc.js +0 -53
  581. package/dist/TrackComponentVisibleEvent-CcZ6l_cs.cjs +0 -60
  582. package/dist/amplitudeContext-CH-Rtn8y.js +0 -236
  583. package/dist/amplitudeContext-CZXdr3HG.cjs +0 -252
  584. package/dist/amplitudeTrackEventAtom-D66l5oFp.js +0 -8
  585. package/dist/amplitudeTrackEventAtom-f22P2U0u.cjs +0 -15
  586. package/dist/api-D4HaU2Gf.js +0 -166
  587. package/dist/api-D4Xoibs9.cjs +0 -239
  588. package/dist/app-DEnOfim0.js +0 -515
  589. package/dist/app-DOEeLKrt.cjs +0 -570
  590. package/dist/cdnContext-CJ2BNLAD.js +0 -38
  591. package/dist/cdnContext-lkC-AE6A.cjs +0 -53
  592. package/dist/chat-ChbwDr7k.js +0 -226
  593. package/dist/chat-FCaaEJvJ.cjs +0 -326
  594. package/dist/chatState-BbI93m6r.js +0 -33
  595. package/dist/chatState-DlJpHAsW.cjs +0 -119
  596. package/dist/dist-C38adNK1.js +0 -5923
  597. package/dist/dist-VxRI6eQv.cjs +0 -6019
  598. package/dist/domObserver-DNeeSh1F.js +0 -285
  599. package/dist/enviveConfig-Ciq4ASoV.js +0 -62
  600. package/dist/enviveConfig-Dp80h9yu.cjs +0 -130
  601. package/dist/enviveConfigContext-0PQkfMQ6.cjs +0 -62
  602. package/dist/enviveConfigContext-CMDiVsln.js +0 -47
  603. package/dist/events-CgFGtanE.cjs +0 -69
  604. package/dist/events-WOOrnUAx.js +0 -63
  605. package/dist/exceptions/index.cjs +0 -4
  606. package/dist/exceptions/index.d.cts +0 -12
  607. package/dist/exceptions/index.d.ts +0 -12
  608. package/dist/exceptions/index.js +0 -3
  609. package/dist/exceptions-BjDgLzGi.cjs +0 -32
  610. package/dist/exceptions-CUGY31Ua.js +0 -20
  611. package/dist/featureFlagServiceContext-ClnlCJV5.d.cts +0 -24
  612. package/dist/featureFlagServiceContext-Cvp7NlpC.js +0 -46
  613. package/dist/featureFlagServiceContext-CyPGEe2d.d.ts +0 -24
  614. package/dist/featureFlagServiceContext-DHtkQAtq.cjs +0 -66
  615. package/dist/graphql-CvAHWmel.js +0 -46
  616. package/dist/graphql-JaGqsToc.cjs +0 -70
  617. package/dist/graphqlContext-0cg9fEUw.js +0 -96
  618. package/dist/graphqlContext-ChXlE8Ul.cjs +0 -111
  619. package/dist/index-5li6ZMDu.d.ts +0 -11
  620. package/dist/index-BVZbvpx_.d.cts +0 -11
  621. package/dist/index-CMZcE7pk.d.cts +0 -224
  622. package/dist/index-CuihhoIF.d.ts +0 -42
  623. package/dist/index-bEjLKG_Q.d.ts +0 -224
  624. package/dist/index-qOBU4GEh.d.cts +0 -42
  625. package/dist/localStorageContext-BFwvuEcf.js +0 -90
  626. package/dist/localStorageContext-CWc5xJ6U.cjs +0 -104
  627. package/dist/models-Cw0QcbQv.js +0 -1118
  628. package/dist/models-Dl0_Ujgj.cjs +0 -1305
  629. package/dist/newOrgConfigAtom-BuQE_zPK.js +0 -8
  630. package/dist/newOrgConfigContext-D-gU5ppl.js +0 -53
  631. package/dist/newOrgConfigContext-d3RHl430.cjs +0 -68
  632. package/dist/nodeSelector-BAKg1h_y.d.ts +0 -28
  633. package/dist/nodeSelector-BYEAyrsj.d.cts +0 -28
  634. package/dist/org-15F128Ah.js +0 -32
  635. package/dist/org-CIFgIcO4.cjs +0 -111
  636. package/dist/search--80x6CfL.js +0 -233
  637. package/dist/search-Ch6LKNh4.cjs +0 -312
  638. package/dist/searchContext-CSmiMhhs.js +0 -129
  639. package/dist/searchContext-DuB2drQx.cjs +0 -145
  640. package/dist/searchServiceAdapter-B0h7psvh.js +0 -16
  641. package/dist/searchServiceAdapter-BclWy4fE.cjs +0 -34
  642. package/dist/sessionStorageContext-BuWrJQwc.cjs +0 -66
  643. package/dist/sessionStorageContext-DvFHbk81.js +0 -52
  644. package/dist/shopifyUrlContext-Bw1kAZ2P.cjs +0 -75
  645. package/dist/shopifyUrlContext-DnJiUmMA.js +0 -61
  646. package/dist/systemSettingsContext-CyanI1pd.js +0 -39
  647. package/dist/systemSettingsContext-sM46G65r.cjs +0 -60
  648. package/dist/types-1iJ_FnQQ.cjs +0 -39
  649. package/dist/types-D5du68Vp.js +0 -27
  650. package/dist/urlsParser-bb8ciRFg.cjs +0 -78
  651. package/dist/urlsParser-v_1DKvyf.js +0 -42
  652. package/dist/useAppDetails-Ce_siNC2.js +0 -30
  653. package/dist/useAppDetails-Dyn-dAJJ.cjs +0 -38
  654. package/dist/useGraphQLConfig-Btszi6cG.js +0 -63
  655. package/dist/useGraphQLConfig-v9veUbvJ.cjs +0 -76
  656. package/dist/utils-BZT_oZ3n.js +0 -92
  657. package/dist/utils-BzR9AjY0.js +0 -607
  658. package/dist/utils-CLANMl4P.cjs +0 -716
  659. package/dist/utils-qtHPLFby.cjs +0 -130
  660. package/src/atoms/search/productRetrievalAPI.ts +0 -72
  661. package/src/atoms/search/productRetrievalAdapter.ts +0 -28
  662. package/src/exceptions/index.ts +0 -2
  663. package/src/global.d.ts +0 -8
  664. package/src/hooks/Search/useRecommendedProducts.ts +0 -50
  665. package/src/hooks/Search/useSearchInput.ts +0 -237
  666. package/src/types/FilterAttribute.ts +0 -35
  667. package/src/types/Suggestion.ts +0 -6
  668. package/src/util/colorVar.ts +0 -4
  669. package/src/util/configVersion.ts +0 -4
  670. package/src/util/domInsertion.ts +0 -17
  671. /package/dist/{featureFlagServiceContext-Csgo-MUv.cjs → AmplitudeOperations-DxQnurSG.cjs} +0 -0
  672. /package/dist/{featureFlagServiceContext-CISyb90N.js → AmplitudeOperations-ni7wVevx.js} +0 -0
  673. /package/src/{exceptions → types/exceptions}/sessionExceptions.ts +0 -0
@@ -1,233 +0,0 @@
1
- import { ProductSorting } from "./dist-C38adNK1.js";
2
- import { newOrgConfigAtom } from "./newOrgConfigAtom-BuQE_zPK.js";
3
- import { formatFilterDisplayName } from "./utils-DQhbbAnt.js";
4
- import { getSearchServiceFunction } from "./searchServiceAdapter-B0h7psvh.js";
5
- import { atom } from "jotai";
6
-
7
- //#region src/atoms/search/productFilters.ts
8
- const getPriceBucket = (price, bucketSize) => {
9
- return Math.floor(price / bucketSize) * bucketSize;
10
- };
11
- const isStringArray = (value) => {
12
- if (!Array.isArray(value)) return false;
13
- return value.every((item) => typeof item === "string");
14
- };
15
- const sortFilter = (filterConfig) => {
16
- if (filterConfig.type === "price") return (a, b) => Number(a.filterItemId) - Number(b.filterItemId);
17
- if (filterConfig.type === "dynamic") {
18
- if (filterConfig.sorting.type === "alphabetic") return (a, b) => a.displayName.localeCompare(b.displayName);
19
- if (filterConfig.sorting.type === "productCount") return (a, b) => a.productCount === b.productCount ? a.displayName.localeCompare(b.displayName) : b.productCount - a.productCount;
20
- if (filterConfig.sorting.type === "custom") {
21
- const sortedKeys = filterConfig.sorting.map;
22
- return (a, b) => {
23
- if (sortedKeys[a.displayName] && sortedKeys[b.displayName]) return sortedKeys[a.displayName] - sortedKeys[b.displayName];
24
- if (sortedKeys[a.displayName]) return -1;
25
- if (sortedKeys[b.displayName]) return 1;
26
- return b.productCount - a.productCount;
27
- };
28
- }
29
- }
30
- throw new Error("Invaalid search filter configuration");
31
- };
32
- var ProductFilters = class {
33
- static getFiltersForProducts(products, filterConfigs, selectedFilterOptions) {
34
- if (!products || products.length === 0) return [];
35
- return [...filterConfigs.map((filterConfig) => products.reduce((acc, product) => {
36
- if (filterConfig.type === "price") {
37
- const priceBucket = getPriceBucket(product.salePrice ?? product.originalPrice ?? 0, filterConfig.bucketSize);
38
- const current = acc.map[priceBucket] ?? {
39
- filterItemId: priceBucket,
40
- displayName: `$${priceBucket}-$${priceBucket + filterConfig.bucketSize}`,
41
- productCount: 0
42
- };
43
- acc.map[priceBucket] = {
44
- ...current,
45
- productCount: current.productCount + 1
46
- };
47
- return acc;
48
- }
49
- const attributeValues = (product.filters && product.filters?.[filterConfig.attribute]) ?? [];
50
- if (isStringArray(attributeValues)) attributeValues.forEach((val) => {
51
- const normalizedVal = val.toLowerCase();
52
- const current = acc.map[normalizedVal] ?? {
53
- filterItemId: normalizedVal,
54
- displayName: formatFilterDisplayName(val),
55
- productCount: 0
56
- };
57
- acc.map[normalizedVal] = {
58
- ...current,
59
- productCount: current.productCount + 1
60
- };
61
- });
62
- return acc;
63
- }, {
64
- filterConfig,
65
- map: {}
66
- })).map(({ filterConfig, map }) => ({
67
- filterId: filterConfig.filterId,
68
- displayName: filterConfig.displayName,
69
- items: Object.values(map).map((filter) => ({
70
- filterItemId: filter.filterItemId,
71
- displayName: filter.displayName,
72
- productCount: filter.productCount,
73
- isSelected: selectedFilterOptions.some((option) => option.id === `${filterConfig.filterId}:${filter.filterItemId}`) ?? false
74
- })).sort(sortFilter(filterConfig))
75
- }))];
76
- }
77
- static filterProducts(products, filterConfigs, selectedFilterOptions, additiveDynamicFilters = false) {
78
- const selectedFilters = filterConfigs.map((filterConfig) => ({
79
- filterConfig,
80
- hasSelectedOptions: selectedFilterOptions.some((option) => option.filterId === filterConfig.filterId)
81
- })).filter(({ hasSelectedOptions }) => hasSelectedOptions);
82
- return selectedFilterOptions.length === 0 ? products : products.filter((product) => selectedFilters.reduce((acc, selectedFilter) => {
83
- if (!acc) return acc;
84
- if (selectedFilter.filterConfig.type === "price") {
85
- const priceBucket = getPriceBucket(product.salePrice ?? product.originalPrice ?? 0, selectedFilter.filterConfig.bucketSize);
86
- if (!selectedFilterOptions.some((option) => option.id === `price:${priceBucket}`)) return false;
87
- }
88
- if (selectedFilter.filterConfig.type === "dynamic") {
89
- const { filterId, attribute } = selectedFilter.filterConfig;
90
- const attributeValues = product.filters?.[attribute];
91
- if (!isStringArray(attributeValues)) return false;
92
- if (selectedFilter.filterConfig.attribute === "dynamic" && !additiveDynamicFilters) {
93
- if (!selectedFilterOptions.filter((option) => option.filterId === filterId).map((option) => option.filterItemId.toLowerCase()).every((selectedValue) => attributeValues.some((val) => val.toLowerCase() === selectedValue))) return false;
94
- } else if (!attributeValues.some((val) => selectedFilterOptions.some((option) => option.id === `${filterId}:${val.toLowerCase()}`))) return false;
95
- }
96
- return true;
97
- }, true));
98
- }
99
- };
100
-
101
- //#endregion
102
- //#region src/atoms/search/productSorter.ts
103
- var ProductSorter = class {
104
- static sort(products, sorting) {
105
- switch (sorting) {
106
- case ProductSorting.PRICE_ASC: return [...products].sort((p1, p2) => (p1.salePrice ?? p1.originalPrice ?? 0) - (p2.salePrice ?? p2.originalPrice ?? 0));
107
- case ProductSorting.PRICE_DESC: return [...products].sort((p1, p2) => (p2.salePrice ?? p2.originalPrice ?? 0) - (p1.salePrice ?? p1.originalPrice ?? 0));
108
- default: return products;
109
- }
110
- }
111
- };
112
-
113
- //#endregion
114
- //#region src/atoms/search/searchAPI.ts
115
- const searchAtom = atom({
116
- data: null,
117
- loading: false,
118
- error: null,
119
- lastQuery: null
120
- });
121
- const searchProductSortingAtom = atom(ProductSorting.FEATURED);
122
- const searchSelectedFiltersAtom = atom([]);
123
- const createFilterOption = (filterId, filterItemId, displayName) => ({
124
- id: `${filterId}:${filterItemId}`,
125
- displayName,
126
- filterId,
127
- filterItemId
128
- });
129
- const internalSearchParamsAtom = atom({
130
- id: null,
131
- query: null
132
- });
133
- const searchParamsAtom = atom((get) => get(internalSearchParamsAtom), (_, set, value) => {
134
- set(internalSearchParamsAtom, value);
135
- });
136
- const internalSearchSystemStateAtom = atom(false);
137
- const searchSystemAtom = atom((get) => get(internalSearchSystemStateAtom), (get, set, value) => {
138
- if (value === get(internalSearchSystemStateAtom)) return;
139
- const stateChangeHandler = () => {
140
- const params = new URLSearchParams(window.location.search);
141
- if (params.get("es") === "true") {
142
- const id = params.get("esi");
143
- const query = params.get("esq");
144
- set(searchParamsAtom, {
145
- id,
146
- query
147
- });
148
- } else set(searchParamsAtom, {
149
- id: null,
150
- query: null
151
- });
152
- };
153
- if (value) {
154
- set(internalSearchSystemStateAtom, true);
155
- window.addEventListener("popstate", stateChangeHandler);
156
- stateChangeHandler();
157
- } else {
158
- set(internalSearchSystemStateAtom, false);
159
- window.removeEventListener("popstate", stateChangeHandler);
160
- }
161
- });
162
- const filteredSearchProductsAtom = atom((get) => {
163
- const searchData = get(searchAtom).data;
164
- const sorting = get(searchProductSortingAtom);
165
- const selectedFilters = get(searchSelectedFiltersAtom);
166
- const newOrgConfig = get(newOrgConfigAtom);
167
- if (!searchData?.products || !newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig) return [];
168
- const filteredProducts = ProductFilters.filterProducts(searchData.products, newOrgConfig.frontendConfig.uiConfigs.searchConfig.searchFilterConfig, selectedFilters, newOrgConfig.frontendConfig.uiConfigs.searchConfig.additiveDynamicFilters);
169
- return ProductSorter.sort(filteredProducts, sorting);
170
- });
171
- const searchFiltersAtom = atom((get) => {
172
- const searchData = get(searchAtom).data;
173
- const selectedFilters = get(searchSelectedFiltersAtom);
174
- const newOrgConfig = get(newOrgConfigAtom);
175
- if (!searchData?.products || !newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig) return [];
176
- return ProductFilters.getFiltersForProducts(searchData.products, newOrgConfig.frontendConfig.uiConfigs.searchConfig.searchFilterConfig, selectedFilters);
177
- });
178
- const addSearchFilterAtom = atom(null, (get, set, filter) => {
179
- const current = get(searchSelectedFiltersAtom);
180
- if (!current.some((f) => f.id === filter.id)) set(searchSelectedFiltersAtom, [...current, filter]);
181
- });
182
- const removeSearchFilterAtom = atom(null, (get, set, filterId) => {
183
- const current = get(searchSelectedFiltersAtom);
184
- set(searchSelectedFiltersAtom, current.filter((f) => f.id !== filterId));
185
- });
186
- const clearSearchFiltersAtom = atom(null, (_, set) => {
187
- set(searchSelectedFiltersAtom, []);
188
- });
189
- const performSearchAtom = atom(null, async (get, set, params, allowRedirect = false) => {
190
- const currentState = get(searchAtom);
191
- const redirectSearchResultsUrl = get(newOrgConfigAtom)?.frontendConfig?.uiConfigs?.searchConfig?.redirectSearchResultsUrl;
192
- if (allowRedirect && redirectSearchResultsUrl) {
193
- const redirectUrl = new URL(redirectSearchResultsUrl);
194
- redirectUrl.searchParams.set("es", "true");
195
- redirectUrl.searchParams.set("esq", params.query);
196
- window.location.href = redirectUrl.toString();
197
- } else {
198
- const url = new URL(window.location.href);
199
- url.searchParams.set("es", "true");
200
- url.searchParams.set("esq", params.query);
201
- window.history.pushState({}, "", url);
202
- window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
203
- }
204
- window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
205
- if (currentState.loading) return;
206
- set(searchAtom, {
207
- data: null,
208
- loading: true,
209
- error: null,
210
- lastQuery: params.query
211
- });
212
- try {
213
- const result = await getSearchServiceFunction()(params);
214
- set(searchAtom, {
215
- data: result,
216
- loading: false,
217
- error: null,
218
- lastQuery: params.query
219
- });
220
- } catch (error) {
221
- const errorMessage = error instanceof Error ? error.message : "An unknown error occurred";
222
- set(searchAtom, {
223
- data: null,
224
- loading: false,
225
- error: errorMessage,
226
- lastQuery: params.query
227
- });
228
- }
229
- });
230
-
231
- //#endregion
232
- export { addSearchFilterAtom, clearSearchFiltersAtom, createFilterOption, filteredSearchProductsAtom, internalSearchSystemStateAtom, performSearchAtom, removeSearchFilterAtom, searchAtom, searchFiltersAtom, searchParamsAtom, searchProductSortingAtom, searchSelectedFiltersAtom, searchSystemAtom };
233
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLS04MHg2Q2ZMLmpzIiwibmFtZXMiOlsiZXJyb3I6IHVua25vd24iXSwic291cmNlcyI6WyIuLi9zcmMvYXRvbXMvc2VhcmNoL3Byb2R1Y3RGaWx0ZXJzLnRzIiwiLi4vc3JjL2F0b21zL3NlYXJjaC9wcm9kdWN0U29ydGVyLnRzIiwiLi4vc3JjL2F0b21zL3NlYXJjaC9zZWFyY2hBUEkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhdFNlYXJjaEZpbHRlciwgQ2hhdFNlYXJjaEZpbHRlckl0ZW0gfSBmcm9tIFwiQGVudml2ZS1haS90eXBlc1wiO1xuaW1wb3J0IHsgRmlsdGVyQXR0cmlidXRlLCBQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzIH0gZnJvbSBcInNyYy90eXBlc1wiO1xuaW1wb3J0IHsgU2VsZWN0ZWRGaWx0ZXJPcHRpb24gfSBmcm9tIFwic3JjL2F0b21zL3NlYXJjaC9zZWFyY2hBUElcIjtcbmltcG9ydCB7IGZvcm1hdEZpbHRlckRpc3BsYXlOYW1lIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgZ2V0UHJpY2VCdWNrZXQgPSAocHJpY2U6IG51bWJlciwgYnVja2V0U2l6ZTogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IGJ1Y2tldCA9IE1hdGguZmxvb3IocHJpY2UgLyBidWNrZXRTaXplKTtcbiAgcmV0dXJuIGJ1Y2tldCAqIGJ1Y2tldFNpemU7XG59O1xuXG5jb25zdCBpc1N0cmluZ0FycmF5ID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nW10gPT4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZS5ldmVyeSgoaXRlbSkgPT4gdHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIpO1xufTtcblxudHlwZSBGaWx0ZXJTb3J0RnVuY3Rpb24gPSAoXG4gIGE6IENoYXRTZWFyY2hGaWx0ZXJJdGVtLFxuICBiOiBDaGF0U2VhcmNoRmlsdGVySXRlbVxuKSA9PiBudW1iZXI7XG5cbmNvbnN0IHNvcnRGaWx0ZXIgPSAoZmlsdGVyQ29uZmlnOiBGaWx0ZXJBdHRyaWJ1dGUpOiBGaWx0ZXJTb3J0RnVuY3Rpb24gPT4ge1xuICBpZiAoZmlsdGVyQ29uZmlnLnR5cGUgPT09IFwicHJpY2VcIikge1xuICAgIHJldHVybiAoYSwgYikgPT4gTnVtYmVyKGEuZmlsdGVySXRlbUlkKSAtIE51bWJlcihiLmZpbHRlckl0ZW1JZCk7XG4gIH1cbiAgaWYgKGZpbHRlckNvbmZpZy50eXBlID09PSBcImR5bmFtaWNcIikge1xuICAgIGlmIChmaWx0ZXJDb25maWcuc29ydGluZy50eXBlID09PSBcImFscGhhYmV0aWNcIikge1xuICAgICAgcmV0dXJuIChhLCBiKSA9PiBhLmRpc3BsYXlOYW1lLmxvY2FsZUNvbXBhcmUoYi5kaXNwbGF5TmFtZSk7XG4gICAgfVxuICAgIC8vIFNvcnQgYnkgdGhlIG51bWJlciBvZiBwcm9kdWN0cywgaWYgdGhleSBtYXRjaCwgc29ydCBieSBhbHBoYWJldGljYWxcbiAgICBpZiAoZmlsdGVyQ29uZmlnLnNvcnRpbmcudHlwZSA9PT0gXCJwcm9kdWN0Q291bnRcIikge1xuICAgICAgcmV0dXJuIChhLCBiKSA9PlxuICAgICAgICBhLnByb2R1Y3RDb3VudCA9PT0gYi5wcm9kdWN0Q291bnRcbiAgICAgICAgICA/IGEuZGlzcGxheU5hbWUubG9jYWxlQ29tcGFyZShiLmRpc3BsYXlOYW1lKVxuICAgICAgICAgIDogYi5wcm9kdWN0Q291bnQgLSBhLnByb2R1Y3RDb3VudDtcbiAgICB9XG4gICAgaWYgKGZpbHRlckNvbmZpZy5zb3J0aW5nLnR5cGUgPT09IFwiY3VzdG9tXCIpIHtcbiAgICAgIGNvbnN0IHNvcnRlZEtleXMgPSBmaWx0ZXJDb25maWcuc29ydGluZy5tYXA7XG4gICAgICByZXR1cm4gKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKHNvcnRlZEtleXNbYS5kaXNwbGF5TmFtZV0gJiYgc29ydGVkS2V5c1tiLmRpc3BsYXlOYW1lXSkge1xuICAgICAgICAgIC8vIElmIGJvdGggYXJlIGluIHRoZSBzb3J0ZWRLZXlzLCBzb3J0IGJ5IHRoZSBpbmRleFxuICAgICAgICAgIHJldHVybiBzb3J0ZWRLZXlzW2EuZGlzcGxheU5hbWVdIC0gc29ydGVkS2V5c1tiLmRpc3BsYXlOYW1lXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBvbmx5ICdhJyBpcyBpbiB0aGUgc29ydGVkS2V5cywgcHV0IGl0IGJlZm9yZSB0aGUgb3RoZXJcbiAgICAgICAgaWYgKHNvcnRlZEtleXNbYS5kaXNwbGF5TmFtZV0pIHtcbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgb25seSAnYicgaXMgaW4gdGhlIHNvcnRlZEtleXMsIHB1dCBpdCBiZWZvcmUgdGhlIG90aGVyXG4gICAgICAgIGlmIChzb3J0ZWRLZXlzW2IuZGlzcGxheU5hbWVdKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgbmVpdGhlciBhcmUgaW4gdGhlIHNvcnRlZEtleXMsIHNvcnQgYnkgcHJvZHVjdENvdW50XG4gICAgICAgIHJldHVybiBiLnByb2R1Y3RDb3VudCAtIGEucHJvZHVjdENvdW50O1xuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWFsaWQgc2VhcmNoIGZpbHRlciBjb25maWd1cmF0aW9uXCIpO1xufTtcblxuZXhwb3J0IGNsYXNzIFByb2R1Y3RGaWx0ZXJzIHtcbiAgc3RhdGljIGdldEZpbHRlcnNGb3JQcm9kdWN0cyhcbiAgICBwcm9kdWN0czogUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1tcImF0dHJpYnV0ZXNcIl1bXSxcbiAgICBmaWx0ZXJDb25maWdzOiBGaWx0ZXJBdHRyaWJ1dGVbXSxcbiAgICBzZWxlY3RlZEZpbHRlck9wdGlvbnM6IFNlbGVjdGVkRmlsdGVyT3B0aW9uW11cbiAgKTogQ2hhdFNlYXJjaEZpbHRlcltdIHtcbiAgICBpZiAoIXByb2R1Y3RzIHx8IHByb2R1Y3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlcnMgPSBmaWx0ZXJDb25maWdzLm1hcCgoZmlsdGVyQ29uZmlnKSA9PlxuICAgICAgcHJvZHVjdHMucmVkdWNlKFxuICAgICAgICAoYWNjLCBwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgLy8gUHJpY2UgaGFzIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZSBmaWx0ZXJzXG4gICAgICAgICAgaWYgKGZpbHRlckNvbmZpZy50eXBlID09PSBcInByaWNlXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHByaWNlQnVja2V0ID0gZ2V0UHJpY2VCdWNrZXQoXG4gICAgICAgICAgICAgIHByb2R1Y3Quc2FsZVByaWNlID8/IHByb2R1Y3Qub3JpZ2luYWxQcmljZSA/PyAwLFxuICAgICAgICAgICAgICBmaWx0ZXJDb25maWcuYnVja2V0U2l6ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhY2MubWFwW3ByaWNlQnVja2V0XSA/PyB7XG4gICAgICAgICAgICAgIGZpbHRlckl0ZW1JZDogcHJpY2VCdWNrZXQsXG4gICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBgJCR7cHJpY2VCdWNrZXR9LSQke1xuICAgICAgICAgICAgICAgIHByaWNlQnVja2V0ICsgZmlsdGVyQ29uZmlnLmJ1Y2tldFNpemVcbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgIHByb2R1Y3RDb3VudDogMCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhY2MubWFwW3ByaWNlQnVja2V0XSA9IHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAgICAgcHJvZHVjdENvdW50OiBjdXJyZW50LnByb2R1Y3RDb3VudCArIDEsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBc3N1bWUgdGhhdCB0aGUgXCJhdHRyaWJ1dGVcIiBpcyBhbiBhcnJheSBvZiB2YWx1ZXNcbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZXMgPVxuICAgICAgICAgICAgKHByb2R1Y3QuZmlsdGVycyAmJiBwcm9kdWN0LmZpbHRlcnM/LltmaWx0ZXJDb25maWcuYXR0cmlidXRlXSkgPz9cbiAgICAgICAgICAgIFtdO1xuICAgICAgICAgIGlmIChpc1N0cmluZ0FycmF5KGF0dHJpYnV0ZVZhbHVlcykpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlcy5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbCA9IHZhbC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gYWNjLm1hcFtub3JtYWxpemVkVmFsXSA/PyB7XG4gICAgICAgICAgICAgICAgZmlsdGVySXRlbUlkOiBub3JtYWxpemVkVmFsLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBmb3JtYXRGaWx0ZXJEaXNwbGF5TmFtZSh2YWwpLCAvLyBLZWVwIG9yaWdpbmFsIGNhc2UgZm9yIGRpc3BsYXlcbiAgICAgICAgICAgICAgICBwcm9kdWN0Q291bnQ6IDAsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGFjYy5tYXBbbm9ybWFsaXplZFZhbF0gPSB7XG4gICAgICAgICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAgICAgICBwcm9kdWN0Q291bnQ6IGN1cnJlbnQucHJvZHVjdENvdW50ICsgMSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaWx0ZXJDb25maWcsXG4gICAgICAgICAgbWFwOiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBDaGF0U2VhcmNoRmlsdGVySXRlbT4sXG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuXG4gICAgY29uc3QgdHJhbnNmb3JtZWRGaWx0ZXJzOiBDaGF0U2VhcmNoRmlsdGVyW10gPSBmaWx0ZXJzLm1hcChcbiAgICAgICh7IGZpbHRlckNvbmZpZywgbWFwIH0pID0+ICh7XG4gICAgICAgIGZpbHRlcklkOiBmaWx0ZXJDb25maWcuZmlsdGVySWQsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBmaWx0ZXJDb25maWcuZGlzcGxheU5hbWUsXG4gICAgICAgIGl0ZW1zOiBPYmplY3QudmFsdWVzKG1hcClcbiAgICAgICAgICAubWFwKChmaWx0ZXIpID0+ICh7XG4gICAgICAgICAgICBmaWx0ZXJJdGVtSWQ6IGZpbHRlci5maWx0ZXJJdGVtSWQsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogZmlsdGVyLmRpc3BsYXlOYW1lLFxuICAgICAgICAgICAgcHJvZHVjdENvdW50OiBmaWx0ZXIucHJvZHVjdENvdW50LFxuICAgICAgICAgICAgaXNTZWxlY3RlZDpcbiAgICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLnNvbWUoXG4gICAgICAgICAgICAgICAgKG9wdGlvbikgPT5cbiAgICAgICAgICAgICAgICAgIG9wdGlvbi5pZCA9PT1cbiAgICAgICAgICAgICAgICAgIGAke2ZpbHRlckNvbmZpZy5maWx0ZXJJZH06JHtmaWx0ZXIuZmlsdGVySXRlbUlkfWBcbiAgICAgICAgICAgICAgKSA/PyBmYWxzZSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgICAuc29ydChzb3J0RmlsdGVyKGZpbHRlckNvbmZpZykpLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIFsuLi50cmFuc2Zvcm1lZEZpbHRlcnNdO1xuICB9XG5cbiAgc3RhdGljIGZpbHRlclByb2R1Y3RzKFxuICAgIHByb2R1Y3RzOiBQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzW1wiYXR0cmlidXRlc1wiXVtdLFxuICAgIGZpbHRlckNvbmZpZ3M6IEZpbHRlckF0dHJpYnV0ZVtdLFxuICAgIHNlbGVjdGVkRmlsdGVyT3B0aW9uczogU2VsZWN0ZWRGaWx0ZXJPcHRpb25bXSxcbiAgICBhZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzID0gZmFsc2UgLy8gU2V0IHRoaXMgdG8gdHJ1ZSB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBiZWhhdmlvciB3aGVyZSBzdGFja2luZyBmaWx0ZXJzIGhhcyBPUiBsb2dpYy5cbiAgKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJzID0gZmlsdGVyQ29uZmlnc1xuICAgICAgLm1hcCgoZmlsdGVyQ29uZmlnKSA9PiAoe1xuICAgICAgICBmaWx0ZXJDb25maWcsXG4gICAgICAgIGhhc1NlbGVjdGVkT3B0aW9uczogc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLmZpbHRlcklkID09PSBmaWx0ZXJDb25maWcuZmlsdGVySWRcbiAgICAgICAgKSxcbiAgICAgIH0pKVxuICAgICAgLmZpbHRlcigoeyBoYXNTZWxlY3RlZE9wdGlvbnMgfSkgPT4gaGFzU2VsZWN0ZWRPcHRpb25zKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgICAgPyBwcm9kdWN0c1xuICAgICAgOiBwcm9kdWN0cy5maWx0ZXIoKHByb2R1Y3QpID0+XG4gICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJzLnJlZHVjZSgoYWNjLCBzZWxlY3RlZEZpbHRlcikgPT4ge1xuICAgICAgICAgICAgLy8gRmluZGluZyBvbmUgZmFsc2UgcmVtb3ZlcyB0aGUgcHJvZHVjdFxuICAgICAgICAgICAgaWYgKCFhY2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFByaWNlIGlzIHNwZWNpYWxcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEZpbHRlci5maWx0ZXJDb25maWcudHlwZSA9PT0gXCJwcmljZVwiKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHByaWNlQnVja2V0ID0gZ2V0UHJpY2VCdWNrZXQoXG4gICAgICAgICAgICAgICAgcHJvZHVjdC5zYWxlUHJpY2UgPz8gcHJvZHVjdC5vcmlnaW5hbFByaWNlID8/IDAsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXIuZmlsdGVyQ29uZmlnLmJ1Y2tldFNpemVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlc1ByaWNlRmlsdGVyID0gc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLnNvbWUoXG4gICAgICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLmlkID09PSBgcHJpY2U6JHtwcmljZUJ1Y2tldH1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmICghbWF0Y2hlc1ByaWNlRmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEZpbHRlci5maWx0ZXJDb25maWcudHlwZSA9PT0gXCJkeW5hbWljXCIpIHtcbiAgICAgICAgICAgICAgLy8gZHluYW1pYyBpcyBtaXNsZWFkaW5nIGhlcmUuIEl0cyBub3QganVzdCBkeW5hbWljIGZpbHRlcnMsIGJ1dCBzdGF0aWMgZmlsdGVycyBiZWNhdXNlIHRoZSBjb25maWcgY291bnRzIHN0YXRpYyBmaWx0ZXJzIGFzIHR5cGU6IGR5bmFtaWMuXG4gICAgICAgICAgICAgIGNvbnN0IHsgZmlsdGVySWQsIGF0dHJpYnV0ZSB9ID0gc2VsZWN0ZWRGaWx0ZXIuZmlsdGVyQ29uZmlnO1xuICAgICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZXMgPSBwcm9kdWN0LmZpbHRlcnM/LlthdHRyaWJ1dGVdO1xuXG4gICAgICAgICAgICAgIGlmICghaXNTdHJpbmdBcnJheShhdHRyaWJ1dGVWYWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgaXNEeW5hbWljRmlsdGVyID1cbiAgICAgICAgICAgICAgICBzZWxlY3RlZEZpbHRlci5maWx0ZXJDb25maWcuYXR0cmlidXRlID09PSBcImR5bmFtaWNcIjsgLy8gVHJ1ZSBkeW5hbWljIGZpbHRlcnMgKHRoZSBvbmVzIHRoYXQgYXBwZWFyIGJlbmVhdGggdGhlIHNlYXJjaCBpbnB1dClcbiAgICAgICAgICAgICAgY29uc3QgaXNTdWJ0cmFjdGl2ZUxvZ2ljID1cbiAgICAgICAgICAgICAgICBpc0R5bmFtaWNGaWx0ZXIgJiYgIWFkZGl0aXZlRHluYW1pY0ZpbHRlcnM7XG5cbiAgICAgICAgICAgICAgaWYgKGlzU3VidHJhY3RpdmVMb2dpYykge1xuICAgICAgICAgICAgICAgIC8vIEFORCBsb2dpYyBmb3Igc3VidHJhY3RpdmUgZHluYW1pYyBmaWx0ZXJzIGFuZCBiZXR3ZWVuIHN0YXRpYyBmaWx0ZXIgY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uc0ZvclRoaXNGaWx0ZXIgPSBzZWxlY3RlZEZpbHRlck9wdGlvbnNcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLmZpbHRlcklkID09PSBmaWx0ZXJJZClcbiAgICAgICAgICAgICAgICAgIC5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLmZpbHRlckl0ZW1JZC50b0xvd2VyQ2FzZSgpKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0FsbFNlbGVjdGVkVmFsdWVzID0gc2VsZWN0ZWRPcHRpb25zRm9yVGhpc0ZpbHRlci5ldmVyeShcbiAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFZhbHVlKSA9PlxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZXMuc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAodmFsKSA9PiB2YWwudG9Mb3dlckNhc2UoKSA9PT0gc2VsZWN0ZWRWYWx1ZVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmICghaGFzQWxsU2VsZWN0ZWRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gT1IgbG9naWMgZm9yIHN0YXRpYyBmaWx0ZXJzIGluIHRoZSBzaWRlYmFyIHdpdGhpbiBhIGNhdGVnb3J5LlxuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSBhdHRyaWJ1dGVWYWx1ZXMuc29tZSgodmFsKSA9PlxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLnNvbWUoXG4gICAgICAgICAgICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbi5pZCA9PT0gYCR7ZmlsdGVySWR9OiR7dmFsLnRvTG93ZXJDYXNlKCl9YFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9LCB0cnVlKVxuICAgICAgICApO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzIH0gZnJvbSAnQGVudml2ZS1haS90eXBlcyc7XG5pbXBvcnQgeyBQcm9kdWN0U29ydGluZyB9IGZyb20gJ0BlbnZpdmUtYWkvdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgUHJvZHVjdFNvcnRlciB7XG4gIHN0YXRpYyBzb3J0KHByb2R1Y3RzOiBQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ11bXSwgc29ydGluZzogUHJvZHVjdFNvcnRpbmcpIHtcbiAgICBzd2l0Y2ggKHNvcnRpbmcpIHtcbiAgICAgIGNhc2UgUHJvZHVjdFNvcnRpbmcuUFJJQ0VfQVNDOlxuICAgICAgICByZXR1cm4gWy4uLnByb2R1Y3RzXS5zb3J0KFxuICAgICAgICAgIChwMSwgcDIpID0+XG4gICAgICAgICAgICAocDEuc2FsZVByaWNlID8/IHAxLm9yaWdpbmFsUHJpY2UgPz8gMCkgLSAocDIuc2FsZVByaWNlID8/IHAyLm9yaWdpbmFsUHJpY2UgPz8gMCksXG4gICAgICAgICk7XG5cbiAgICAgIGNhc2UgUHJvZHVjdFNvcnRpbmcuUFJJQ0VfREVTQzpcbiAgICAgICAgcmV0dXJuIFsuLi5wcm9kdWN0c10uc29ydChcbiAgICAgICAgICAocDEsIHAyKSA9PlxuICAgICAgICAgICAgKHAyLnNhbGVQcmljZSA/PyBwMi5vcmlnaW5hbFByaWNlID8/IDApIC0gKHAxLnNhbGVQcmljZSA/PyBwMS5vcmlnaW5hbFByaWNlID8/IDApLFxuICAgICAgICApO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcHJvZHVjdHM7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgUHJvZHVjdFNvcnRpbmcgfSBmcm9tICdAZW52aXZlLWFpL3R5cGVzJztcbmltcG9ydCB7IFByb2R1Y3RGaWx0ZXJzIH0gZnJvbSAnLi9wcm9kdWN0RmlsdGVycyc7XG5pbXBvcnQgeyBQcm9kdWN0U29ydGVyIH0gZnJvbSAnLi9wcm9kdWN0U29ydGVyJztcbmltcG9ydCB7IG5ld09yZ0NvbmZpZ0F0b20gfSBmcm9tICcuLi9vcmcnO1xuaW1wb3J0IHsgZ2V0U2VhcmNoU2VydmljZUZ1bmN0aW9uIH0gZnJvbSAnLi9zZWFyY2hTZXJ2aWNlQWRhcHRlcic7XG5pbXBvcnQgeyBTZWFyY2hQYXJhbXMsIFNlYXJjaFJlc3VsdCB9IGZyb20gJ0BlbnZpdmUtYWkvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBTZWxlY3RlZEZpbHRlck9wdGlvbiA9IHtcbiAgaWQ6IHN0cmluZzsgLy8gXCJmaWx0ZXJJZDpmaWx0ZXJJdGVtSWRcIiAtIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvciBjb21wYXJpc29uc1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICBmaWx0ZXJJZDogc3RyaW5nOyAvLyBGaWx0ZXIgY2F0ZWdvcnlcbiAgZmlsdGVySXRlbUlkOiBzdHJpbmc7IC8vIEZpbHRlciB2YWx1ZVxufTtcblxuaW50ZXJmYWNlIFNlYXJjaFN0YXRlIHtcbiAgZGF0YTogU2VhcmNoUmVzdWx0IHwgbnVsbDtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIGxhc3RRdWVyeTogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNvbnN0IHNlYXJjaEF0b20gPSBhdG9tPFNlYXJjaFN0YXRlPih7XG4gIGRhdGE6IG51bGwsXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBlcnJvcjogbnVsbCxcbiAgbGFzdFF1ZXJ5OiBudWxsLFxufSk7XG5cbmV4cG9ydCBjb25zdCBzZWFyY2hQcm9kdWN0U29ydGluZ0F0b20gPSBhdG9tPFByb2R1Y3RTb3J0aW5nPihQcm9kdWN0U29ydGluZy5GRUFUVVJFRCk7XG5leHBvcnQgY29uc3Qgc2VhcmNoU2VsZWN0ZWRGaWx0ZXJzQXRvbSA9IGF0b208U2VsZWN0ZWRGaWx0ZXJPcHRpb25bXT4oW10pO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRmlsdGVyT3B0aW9uID0gKFxuICBmaWx0ZXJJZDogc3RyaW5nLFxuICBmaWx0ZXJJdGVtSWQ6IHN0cmluZyxcbiAgZGlzcGxheU5hbWU6IHN0cmluZyxcbik6IFNlbGVjdGVkRmlsdGVyT3B0aW9uID0+ICh7XG4gIGlkOiBgJHtmaWx0ZXJJZH06JHtmaWx0ZXJJdGVtSWR9YCxcbiAgZGlzcGxheU5hbWUsXG4gIGZpbHRlcklkLFxuICBmaWx0ZXJJdGVtSWQsXG59KTtcblxuY29uc3QgaW50ZXJuYWxTZWFyY2hQYXJhbXNBdG9tID0gYXRvbTx7XG4gIGlkOiBzdHJpbmcgfCBudWxsO1xuICBxdWVyeTogc3RyaW5nIHwgbnVsbDtcbn0+KHtcbiAgaWQ6IG51bGwsXG4gIHF1ZXJ5OiBudWxsLFxufSk7XG5cbmV4cG9ydCBjb25zdCBzZWFyY2hQYXJhbXNBdG9tID0gYXRvbShcbiAgKGdldCkgPT4gZ2V0KGludGVybmFsU2VhcmNoUGFyYW1zQXRvbSksXG4gIChfLCBzZXQsIHZhbHVlOiB7IGlkOiBzdHJpbmcgfCBudWxsOyBxdWVyeTogc3RyaW5nIHwgbnVsbCB9KSA9PiB7XG4gICAgc2V0KGludGVybmFsU2VhcmNoUGFyYW1zQXRvbSwgdmFsdWUpO1xuICB9LFxuKTtcbmV4cG9ydCBjb25zdCBpbnRlcm5hbFNlYXJjaFN5c3RlbVN0YXRlQXRvbSA9IGF0b208Ym9vbGVhbj4oZmFsc2UpO1xuXG5leHBvcnQgY29uc3Qgc2VhcmNoU3lzdGVtQXRvbSA9IGF0b20oXG4gIChnZXQpID0+IGdldChpbnRlcm5hbFNlYXJjaFN5c3RlbVN0YXRlQXRvbSksXG4gIChnZXQsIHNldCwgdmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAodmFsdWUgPT09IGdldChpbnRlcm5hbFNlYXJjaFN5c3RlbVN0YXRlQXRvbSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc3RhdGVDaGFuZ2VIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICAgIGlmIChwYXJhbXMuZ2V0KCdlcycpID09PSAndHJ1ZScpIHtcbiAgICAgICAgY29uc3QgaWQgPSBwYXJhbXMuZ2V0KCdlc2knKTtcbiAgICAgICAgY29uc3QgcXVlcnkgPSBwYXJhbXMuZ2V0KCdlc3EnKTtcbiAgICAgICAgc2V0KHNlYXJjaFBhcmFtc0F0b20sIHsgaWQsIHF1ZXJ5IH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0KHNlYXJjaFBhcmFtc0F0b20sIHsgaWQ6IG51bGwsIHF1ZXJ5OiBudWxsIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBzZXQoaW50ZXJuYWxTZWFyY2hTeXN0ZW1TdGF0ZUF0b20sIHRydWUpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvcHN0YXRlJywgc3RhdGVDaGFuZ2VIYW5kbGVyKTtcbiAgICAgIC8vIEFsc28gdHJpZ2dlciB0aGUgaGFzaCBjaGFuZ2UgaGFuZGxlciB0byBzZXQgdGhlIGluaXRpYWwgc3RhdGVcbiAgICAgIHN0YXRlQ2hhbmdlSGFuZGxlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXQoaW50ZXJuYWxTZWFyY2hTeXN0ZW1TdGF0ZUF0b20sIGZhbHNlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIHN0YXRlQ2hhbmdlSGFuZGxlcik7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IGZpbHRlcmVkU2VhcmNoUHJvZHVjdHNBdG9tID0gYXRvbSgoZ2V0KSA9PiB7XG4gIGNvbnN0IHNlYXJjaERhdGEgPSBnZXQoc2VhcmNoQXRvbSkuZGF0YTtcbiAgY29uc3Qgc29ydGluZyA9IGdldChzZWFyY2hQcm9kdWN0U29ydGluZ0F0b20pO1xuICBjb25zdCBzZWxlY3RlZEZpbHRlcnMgPSBnZXQoc2VhcmNoU2VsZWN0ZWRGaWx0ZXJzQXRvbSk7XG4gIGNvbnN0IG5ld09yZ0NvbmZpZyA9IGdldChuZXdPcmdDb25maWdBdG9tKTtcblxuICBpZiAoIXNlYXJjaERhdGE/LnByb2R1Y3RzIHx8ICFuZXdPcmdDb25maWc/LmZyb250ZW5kQ29uZmlnPy51aUNvbmZpZ3M/LnNlYXJjaENvbmZpZykgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IGZpbHRlcmVkUHJvZHVjdHMgPSBQcm9kdWN0RmlsdGVycy5maWx0ZXJQcm9kdWN0cyhcbiAgICBzZWFyY2hEYXRhLnByb2R1Y3RzLFxuICAgIG5ld09yZ0NvbmZpZy5mcm9udGVuZENvbmZpZy51aUNvbmZpZ3Muc2VhcmNoQ29uZmlnLnNlYXJjaEZpbHRlckNvbmZpZyxcbiAgICBzZWxlY3RlZEZpbHRlcnMsXG4gICAgbmV3T3JnQ29uZmlnLmZyb250ZW5kQ29uZmlnLnVpQ29uZmlncy5zZWFyY2hDb25maWcuYWRkaXRpdmVEeW5hbWljRmlsdGVycyxcbiAgKTtcblxuICByZXR1cm4gUHJvZHVjdFNvcnRlci5zb3J0KGZpbHRlcmVkUHJvZHVjdHMsIHNvcnRpbmcpO1xufSk7XG5cbmV4cG9ydCBjb25zdCBzZWFyY2hGaWx0ZXJzQXRvbSA9IGF0b20oKGdldCkgPT4ge1xuICBjb25zdCBzZWFyY2hEYXRhID0gZ2V0KHNlYXJjaEF0b20pLmRhdGE7XG4gIGNvbnN0IHNlbGVjdGVkRmlsdGVycyA9IGdldChzZWFyY2hTZWxlY3RlZEZpbHRlcnNBdG9tKTtcbiAgY29uc3QgbmV3T3JnQ29uZmlnID0gZ2V0KG5ld09yZ0NvbmZpZ0F0b20pO1xuXG4gIGlmICghc2VhcmNoRGF0YT8ucHJvZHVjdHMgfHwgIW5ld09yZ0NvbmZpZz8uZnJvbnRlbmRDb25maWc/LnVpQ29uZmlncz8uc2VhcmNoQ29uZmlnKSByZXR1cm4gW107XG5cbiAgcmV0dXJuIFByb2R1Y3RGaWx0ZXJzLmdldEZpbHRlcnNGb3JQcm9kdWN0cyhcbiAgICBzZWFyY2hEYXRhLnByb2R1Y3RzLFxuICAgIG5ld09yZ0NvbmZpZy5mcm9udGVuZENvbmZpZy51aUNvbmZpZ3Muc2VhcmNoQ29uZmlnLnNlYXJjaEZpbHRlckNvbmZpZyxcbiAgICBzZWxlY3RlZEZpbHRlcnMsXG4gICk7XG59KTtcblxuZXhwb3J0IGNvbnN0IGFkZFNlYXJjaEZpbHRlckF0b20gPSBhdG9tKG51bGwsIChnZXQsIHNldCwgZmlsdGVyOiBTZWxlY3RlZEZpbHRlck9wdGlvbikgPT4ge1xuICBjb25zdCBjdXJyZW50ID0gZ2V0KHNlYXJjaFNlbGVjdGVkRmlsdGVyc0F0b20pO1xuICBpZiAoIWN1cnJlbnQuc29tZSgoZikgPT4gZi5pZCA9PT0gZmlsdGVyLmlkKSkge1xuICAgIHNldChzZWFyY2hTZWxlY3RlZEZpbHRlcnNBdG9tLCBbLi4uY3VycmVudCwgZmlsdGVyXSk7XG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlU2VhcmNoRmlsdGVyQXRvbSA9IGF0b20obnVsbCwgKGdldCwgc2V0LCBmaWx0ZXJJZDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnQgPSBnZXQoc2VhcmNoU2VsZWN0ZWRGaWx0ZXJzQXRvbSk7XG4gIHNldChcbiAgICBzZWFyY2hTZWxlY3RlZEZpbHRlcnNBdG9tLFxuICAgIGN1cnJlbnQuZmlsdGVyKChmKSA9PiBmLmlkICE9PSBmaWx0ZXJJZCksXG4gICk7XG59KTtcblxuZXhwb3J0IGNvbnN0IGNsZWFyU2VhcmNoRmlsdGVyc0F0b20gPSBhdG9tKG51bGwsIChfLCBzZXQpID0+IHtcbiAgc2V0KHNlYXJjaFNlbGVjdGVkRmlsdGVyc0F0b20sIFtdKTtcbn0pO1xuXG5leHBvcnQgY29uc3QgcGVyZm9ybVNlYXJjaEF0b20gPSBhdG9tKFxuICBudWxsLFxuICBhc3luYyAoZ2V0LCBzZXQsIHBhcmFtczogU2VhcmNoUGFyYW1zLCBhbGxvd1JlZGlyZWN0ID0gZmFsc2UpID0+IHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSBnZXQoc2VhcmNoQXRvbSk7XG4gICAgY29uc3QgbmV3T3JnQ29uZmlnID0gZ2V0KG5ld09yZ0NvbmZpZ0F0b20pO1xuICAgIGNvbnN0IHJlZGlyZWN0U2VhcmNoUmVzdWx0c1VybCA9XG4gICAgICBuZXdPcmdDb25maWc/LmZyb250ZW5kQ29uZmlnPy51aUNvbmZpZ3M/LnNlYXJjaENvbmZpZz8ucmVkaXJlY3RTZWFyY2hSZXN1bHRzVXJsO1xuXG4gICAgaWYgKGFsbG93UmVkaXJlY3QgJiYgcmVkaXJlY3RTZWFyY2hSZXN1bHRzVXJsKSB7XG4gICAgICBjb25zdCByZWRpcmVjdFVybCA9IG5ldyBVUkwocmVkaXJlY3RTZWFyY2hSZXN1bHRzVXJsKTtcbiAgICAgIHJlZGlyZWN0VXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2VzJywgJ3RydWUnKTtcbiAgICAgIHJlZGlyZWN0VXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2VzcScsIHBhcmFtcy5xdWVyeSk7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJlZGlyZWN0VXJsLnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVwZGF0ZSBVUkwgYW5kIG1hbnVhbGx5IHRyaWdnZXIgc3RhdGUgY2hhbmdlIChzaW5jZSBwdXNoU3RhdGUgZG9lc24ndCB0cmlnZ2VyIHBvcHN0YXRlKVxuICAgICAgY29uc3QgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnZXMnLCAndHJ1ZScpO1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2VzcScsIHBhcmFtcy5xdWVyeSk7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sICcnLCB1cmwpO1xuXG4gICAgICAvLyBNYW51YWxseSB0cmlnZ2VyIHBhZ2UgdmFyaWFudCByZS1ldmFsdWF0aW9uIGJ5IGRpc3BhdGNoaW5nIGEgcG9wc3RhdGUgZXZlbnRcbiAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGUgcGFnZSB2YXJpYW50IHN5c3RlbSBkZXRlY3RzIHRoZSBVUkwgY2hhbmdlIGFuZCBtb3VudHMgc2VhcmNoIHJlc3VsdHNcbiAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBQb3BTdGF0ZUV2ZW50KCdwb3BzdGF0ZScsIHsgc3RhdGU6IHt9IH0pKTtcbiAgICB9XG5cbiAgICAvLyBNYW51YWxseSB0cmlnZ2VyIHBhZ2UgdmFyaWFudCByZS1ldmFsdWF0aW9uIGJ5IGRpc3BhdGNoaW5nIGEgcG9wc3RhdGUgZXZlbnRcbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhlIHBhZ2UgdmFyaWFudCBzeXN0ZW0gZGV0ZWN0cyB0aGUgVVJMIGNoYW5nZSBhbmQgbW91bnRzIHNlYXJjaCByZXN1bHRzXG4gICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IFBvcFN0YXRlRXZlbnQoJ3BvcHN0YXRlJywgeyBzdGF0ZToge30gfSkpO1xuICAgIGlmIChjdXJyZW50U3RhdGUubG9hZGluZykge1xuICAgICAgcmV0dXJuOyAvLyBQcmV2ZW50IGNvbmN1cnJlbnQgc2VhcmNoZXNcbiAgICB9XG5cbiAgICBzZXQoc2VhcmNoQXRvbSwge1xuICAgICAgZGF0YTogbnVsbCxcbiAgICAgIGxvYWRpbmc6IHRydWUsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIGxhc3RRdWVyeTogcGFyYW1zLnF1ZXJ5LFxuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZWFyY2hTZXJ2aWNlRnVuY3Rpb24gPSBnZXRTZWFyY2hTZXJ2aWNlRnVuY3Rpb24oKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNlYXJjaFNlcnZpY2VGdW5jdGlvbihwYXJhbXMpO1xuICAgICAgc2V0KHNlYXJjaEF0b20sIHtcbiAgICAgICAgZGF0YTogcmVzdWx0LFxuICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgIGxhc3RRdWVyeTogcGFyYW1zLnF1ZXJ5LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnO1xuICAgICAgc2V0KHNlYXJjaEF0b20sIHtcbiAgICAgICAgZGF0YTogbnVsbCxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UsXG4gICAgICAgIGxhc3RRdWVyeTogcGFyYW1zLnF1ZXJ5LFxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUtBLE1BQU0sa0JBQWtCLE9BQWUsZUFBdUI7QUFFNUQsUUFEZSxL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