@envive-ai/react-hooks 0.2.3 → 0.2.4

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 (441) hide show
  1. package/README.md +35 -0
  2. package/dist/AmplitudeOperations-CEwp7tPJ.cjs +0 -0
  3. package/dist/AmplitudeOperations-uF2zIi_1.js +1 -0
  4. package/dist/NewOrgConfig-B_1A1d9q.cjs +15 -0
  5. package/dist/NewOrgConfig-xNlcpcF_.js +10 -0
  6. package/dist/SystemSettingsContext-CCuS3kWH.js +13 -0
  7. package/dist/SystemSettingsContext-Dh_35fES.cjs +20 -0
  8. package/dist/TrackComponentVisibleEvent-B828giM-.js +52 -0
  9. package/dist/TrackComponentVisibleEvent-DsTIH7Yt.cjs +59 -0
  10. package/dist/amplitudeContext-B73xamNe.d.cts +52 -0
  11. package/dist/amplitudeContext-BfRDG5CX.d.ts +52 -0
  12. package/dist/api-Bc3_julZ.cjs +239 -0
  13. package/dist/api-D9gmGNAV.js +166 -0
  14. package/dist/application/models/graphql/index.cjs +5 -0
  15. package/dist/application/models/graphql/index.d.cts +2 -0
  16. package/dist/application/models/graphql/index.d.ts +2 -0
  17. package/dist/application/models/graphql/index.js +4 -0
  18. package/dist/application/models/guards/api/index.cjs +16 -0
  19. package/dist/application/models/guards/api/index.d.cts +3 -0
  20. package/dist/application/models/guards/api/index.d.ts +3 -0
  21. package/dist/application/models/guards/api/index.js +5 -0
  22. package/dist/application/models/guards/utils.cjs +3 -0
  23. package/dist/application/models/guards/utils.d.cts +2 -0
  24. package/dist/application/models/guards/utils.d.ts +2 -0
  25. package/dist/application/models/guards/utils.js +3 -0
  26. package/dist/application/models/index.cjs +70 -0
  27. package/dist/application/models/index.d.cts +12 -0
  28. package/dist/application/models/index.d.ts +12 -0
  29. package/dist/application/models/index.js +12 -0
  30. package/dist/application/models/utilityTypes/index.cjs +1 -0
  31. package/dist/application/models/utilityTypes/index.d.cts +2 -0
  32. package/dist/application/models/utilityTypes/index.d.ts +2 -0
  33. package/dist/application/models/utilityTypes/index.js +3 -0
  34. package/dist/application/models/variantInfo/index.cjs +3 -0
  35. package/dist/application/models/variantInfo/index.d.cts +2 -0
  36. package/dist/application/models/variantInfo/index.d.ts +2 -0
  37. package/dist/application/models/variantInfo/index.js +3 -0
  38. package/dist/application/utils/index.cjs +47 -0
  39. package/dist/application/utils/index.d.cts +263 -0
  40. package/dist/application/utils/index.d.ts +263 -0
  41. package/dist/application/utils/index.js +21 -0
  42. package/dist/atomStore-8ppNkJ_n.cjs +58 -0
  43. package/dist/atomStore-BLYJ2ZoQ.js +32 -0
  44. package/dist/atoms/app/index.cjs +25 -0
  45. package/dist/atoms/app/index.d.cts +39 -0
  46. package/dist/atoms/app/index.d.ts +39 -0
  47. package/dist/atoms/app/index.js +21 -0
  48. package/dist/atoms/atomStore/index.cjs +6 -0
  49. package/dist/atoms/atomStore/index.d.cts +24 -0
  50. package/dist/atoms/atomStore/index.d.ts +24 -0
  51. package/dist/atoms/atomStore/index.js +3 -0
  52. package/dist/atoms/chat/index.cjs +52 -0
  53. package/dist/atoms/chat/index.d.cts +163 -0
  54. package/dist/atoms/chat/index.d.ts +163 -0
  55. package/dist/atoms/chat/index.js +23 -0
  56. package/dist/atoms/globalSearch/index.cjs +6 -0
  57. package/dist/atoms/globalSearch/index.d.cts +24 -0
  58. package/dist/atoms/globalSearch/index.d.ts +24 -0
  59. package/dist/atoms/globalSearch/index.js +3 -0
  60. package/dist/atoms/org/index.cjs +18 -0
  61. package/dist/atoms/org/index.d.cts +59 -0
  62. package/dist/atoms/org/index.d.ts +59 -0
  63. package/dist/atoms/org/index.js +5 -0
  64. package/dist/atoms/search/index.cjs +60 -0
  65. package/dist/atoms/search/index.d.cts +14 -0
  66. package/dist/atoms/search/index.d.ts +14 -0
  67. package/dist/atoms/search/index.js +30 -0
  68. package/dist/atoms/search/types.cjs +5 -0
  69. package/dist/atoms/search/types.d.cts +2 -0
  70. package/dist/atoms/search/types.d.ts +2 -0
  71. package/dist/atoms/search/types.js +3 -0
  72. package/dist/atoms/search/utils.cjs +3 -0
  73. package/dist/atoms/search/utils.d.cts +5 -0
  74. package/dist/atoms/search/utils.d.ts +5 -0
  75. package/dist/atoms/search/utils.js +3 -0
  76. package/dist/cdnContext-BlRI74F-.cjs +53 -0
  77. package/dist/cdnContext-D26C8Y4H.js +38 -0
  78. package/dist/chat-2NGrmU_Z.cjs +393 -0
  79. package/dist/chat-Bg3wEfNd.js +257 -0
  80. package/dist/chat-pXCsesuS.js +25 -0
  81. package/dist/chat-sCX7aTrz.cjs +145 -0
  82. package/dist/chatElementDisplayLocation-D6oLuQS4.d.ts +25 -0
  83. package/dist/chatElementDisplayLocation-DWmfNX_u.d.cts +25 -0
  84. package/dist/chatSearch-B4dsxGth.cjs +418 -0
  85. package/dist/chatSearch-Cvc_eBFV.js +295 -0
  86. package/dist/chatState-2bMtvPgG.js +34 -0
  87. package/dist/chatState-fP1r34CN.cjs +120 -0
  88. package/dist/chunk-CUT6urMc.cjs +30 -0
  89. package/dist/common-4xhjcUbt.cjs +189 -0
  90. package/dist/common-DhKoZ6jN.js +39 -0
  91. package/dist/components-BUisjl4v.js +11 -0
  92. package/dist/components-DVaYBroL.cjs +29 -0
  93. package/dist/config/locators/components/chat/index.cjs +22 -0
  94. package/dist/config/locators/components/chat/index.d.cts +2 -0
  95. package/dist/config/locators/components/chat/index.d.ts +2 -0
  96. package/dist/config/locators/components/chat/index.js +3 -0
  97. package/dist/config/locators/components/chat/variants/index.cjs +29 -0
  98. package/dist/config/locators/components/chat/variants/index.d.cts +16 -0
  99. package/dist/config/locators/components/chat/variants/index.d.ts +16 -0
  100. package/dist/config/locators/components/chat/variants/index.js +17 -0
  101. package/dist/config/locators/components/common/index.cjs +27 -0
  102. package/dist/config/locators/components/common/index.d.cts +2 -0
  103. package/dist/config/locators/components/common/index.d.ts +2 -0
  104. package/dist/config/locators/components/common/index.js +3 -0
  105. package/dist/config/locators/components/index.cjs +5 -0
  106. package/dist/config/locators/components/index.d.cts +2 -0
  107. package/dist/config/locators/components/index.d.ts +2 -0
  108. package/dist/config/locators/components/index.js +3 -0
  109. package/dist/config/locators/components/search/index.cjs +13 -0
  110. package/dist/config/locators/components/search/index.d.cts +8 -0
  111. package/dist/config/locators/components/search/index.d.ts +8 -0
  112. package/dist/config/locators/components/search/index.js +9 -0
  113. package/dist/config/locators/index.cjs +92 -0
  114. package/dist/config/locators/index.d.cts +26 -0
  115. package/dist/config/locators/index.d.ts +26 -0
  116. package/dist/config/locators/index.js +27 -0
  117. package/dist/contexts/amplitudeContext/index.cjs +23 -0
  118. package/dist/contexts/amplitudeContext/index.d.cts +2 -0
  119. package/dist/contexts/amplitudeContext/index.d.ts +2 -0
  120. package/dist/contexts/amplitudeContext/index.js +21 -0
  121. package/dist/contexts/cdnContext/index.cjs +7 -0
  122. package/dist/contexts/cdnContext/index.d.cts +15 -0
  123. package/dist/contexts/cdnContext/index.d.ts +15 -0
  124. package/dist/contexts/cdnContext/index.js +6 -0
  125. package/dist/contexts/chatContext/index.cjs +326 -0
  126. package/dist/contexts/chatContext/index.d.cts +15 -0
  127. package/dist/contexts/chatContext/index.d.ts +15 -0
  128. package/dist/contexts/chatContext/index.js +319 -0
  129. package/dist/contexts/enviveConfigContext/index.cjs +7 -0
  130. package/dist/contexts/enviveConfigContext/index.d.cts +30 -0
  131. package/dist/contexts/enviveConfigContext/index.d.ts +30 -0
  132. package/dist/contexts/enviveConfigContext/index.js +6 -0
  133. package/dist/contexts/enviveCssContext/index.cjs +66 -0
  134. package/dist/contexts/enviveCssContext/index.d.cts +10 -0
  135. package/dist/contexts/enviveCssContext/index.d.ts +10 -0
  136. package/dist/contexts/enviveCssContext/index.js +63 -0
  137. package/dist/contexts/featureFlagContext/index.cjs +107 -0
  138. package/dist/contexts/featureFlagContext/index.d.cts +20 -0
  139. package/dist/contexts/featureFlagContext/index.d.ts +20 -0
  140. package/dist/contexts/featureFlagContext/index.js +103 -0
  141. package/dist/contexts/featureFlagServiceContext/index.cjs +7 -0
  142. package/dist/contexts/featureFlagServiceContext/index.d.cts +5 -0
  143. package/dist/contexts/featureFlagServiceContext/index.d.ts +5 -0
  144. package/dist/contexts/featureFlagServiceContext/index.js +5 -0
  145. package/dist/contexts/graphqlContext/index.cjs +16 -0
  146. package/dist/contexts/graphqlContext/index.d.cts +14 -0
  147. package/dist/contexts/graphqlContext/index.d.ts +14 -0
  148. package/dist/contexts/graphqlContext/index.js +15 -0
  149. package/dist/contexts/localStorageContext/index.cjs +6 -0
  150. package/dist/contexts/localStorageContext/index.d.cts +30 -0
  151. package/dist/contexts/localStorageContext/index.d.ts +30 -0
  152. package/dist/contexts/localStorageContext/index.js +4 -0
  153. package/dist/contexts/newOrgConfigContext/index.cjs +20 -0
  154. package/dist/contexts/newOrgConfigContext/index.d.cts +15 -0
  155. package/dist/contexts/newOrgConfigContext/index.d.ts +15 -0
  156. package/dist/contexts/newOrgConfigContext/index.js +19 -0
  157. package/dist/contexts/searchContext/index.cjs +27 -0
  158. package/dist/contexts/searchContext/index.d.cts +16 -0
  159. package/dist/contexts/searchContext/index.d.ts +16 -0
  160. package/dist/contexts/searchContext/index.js +26 -0
  161. package/dist/contexts/sessionStorageContext/index.cjs +5 -0
  162. package/dist/contexts/sessionStorageContext/index.d.cts +15 -0
  163. package/dist/contexts/sessionStorageContext/index.d.ts +15 -0
  164. package/dist/contexts/sessionStorageContext/index.js +4 -0
  165. package/dist/contexts/shopifyUrlContext/index.cjs +5 -0
  166. package/dist/contexts/shopifyUrlContext/index.d.cts +20 -0
  167. package/dist/contexts/shopifyUrlContext/index.d.ts +20 -0
  168. package/dist/contexts/shopifyUrlContext/index.js +4 -0
  169. package/dist/contexts/systemSettingsContext/index.cjs +8 -0
  170. package/dist/contexts/systemSettingsContext/index.d.cts +37 -0
  171. package/dist/contexts/systemSettingsContext/index.d.ts +37 -0
  172. package/dist/contexts/systemSettingsContext/index.js +6 -0
  173. package/dist/contexts/types.cjs +7 -0
  174. package/dist/contexts/types.d.cts +4 -0
  175. package/dist/contexts/types.d.ts +4 -0
  176. package/dist/contexts/types.js +3 -0
  177. package/dist/contexts/userIdentityContext/index.cjs +22 -0
  178. package/dist/contexts/userIdentityContext/index.d.cts +2 -0
  179. package/dist/contexts/userIdentityContext/index.d.ts +2 -0
  180. package/dist/contexts/userIdentityContext/index.js +21 -0
  181. package/dist/domObserver-DKcas6tl.js +285 -0
  182. package/dist/domObserver-Do6RAJdf.cjs +304 -0
  183. package/dist/enviveConfig-BSfyz_pm.js +62 -0
  184. package/dist/enviveConfig-D8vcVPWD.cjs +130 -0
  185. package/dist/enviveConfigContext-C8cCcdKU.cjs +60 -0
  186. package/dist/enviveConfigContext-CJqpRSKu.js +45 -0
  187. package/dist/events/index.cjs +4 -0
  188. package/dist/events/index.d.cts +46 -0
  189. package/dist/events/index.d.ts +46 -0
  190. package/dist/events/index.js +3 -0
  191. package/dist/events-BHJJjPDN.js +78 -0
  192. package/dist/events-B_fJZf9E.cjs +90 -0
  193. package/dist/featureFlagServiceContext-C2Yj-Uyh.d.ts +23 -0
  194. package/dist/featureFlagServiceContext-CiKWV306.d.cts +23 -0
  195. package/dist/featureFlagServiceContext-DFb-uLHN.cjs +62 -0
  196. package/dist/featureFlagServiceContext-Dd_Hbq6e.js +42 -0
  197. package/dist/featureGates-BdvOVv8N.cjs +32 -0
  198. package/dist/featureGates-DhoJq4io.js +26 -0
  199. package/dist/frontendConfig-CbyjUXZW.d.ts +856 -0
  200. package/dist/frontendConfig-tVg0hsWZ.d.cts +856 -0
  201. package/dist/globalSearch-B_v9qfCT.js +14 -0
  202. package/dist/globalSearch-OiF96VLG.cjs +39 -0
  203. package/dist/graphql-B9HhDXYt.cjs +53 -0
  204. package/dist/graphql-W7GMIHUu.js +36 -0
  205. package/dist/graphqlConfig-DZHeFKDY.cjs +73 -0
  206. package/dist/graphqlConfig-Xk--JbPl.js +24 -0
  207. package/dist/graphqlContext-BotK7KCg.d.ts +28 -0
  208. package/dist/graphqlContext-CMav2igl.d.cts +28 -0
  209. package/dist/graphqlContext-CSVwhCnP.js +96 -0
  210. package/dist/graphqlContext-aaOOb79d.cjs +111 -0
  211. package/dist/hooks/AmplitudeOperations/index.cjs +23 -0
  212. package/dist/hooks/AmplitudeOperations/index.d.cts +12 -0
  213. package/dist/hooks/AmplitudeOperations/index.d.ts +12 -0
  214. package/dist/hooks/AmplitudeOperations/index.js +23 -0
  215. package/dist/hooks/AppDetails/index.cjs +24 -0
  216. package/dist/hooks/AppDetails/index.d.cts +27 -0
  217. package/dist/hooks/AppDetails/index.d.ts +27 -0
  218. package/dist/hooks/AppDetails/index.js +24 -0
  219. package/dist/hooks/BlockBackButton/index.cjs +29 -0
  220. package/dist/hooks/BlockBackButton/index.d.cts +5 -0
  221. package/dist/hooks/BlockBackButton/index.d.ts +5 -0
  222. package/dist/hooks/BlockBackButton/index.js +27 -0
  223. package/dist/hooks/CdnOperations/index.cjs +24 -0
  224. package/dist/hooks/CdnOperations/index.d.cts +7 -0
  225. package/dist/hooks/CdnOperations/index.d.ts +7 -0
  226. package/dist/hooks/CdnOperations/index.js +22 -0
  227. package/dist/hooks/ChatToggle/index.cjs +64 -0
  228. package/dist/hooks/ChatToggle/index.d.cts +12 -0
  229. package/dist/hooks/ChatToggle/index.d.ts +12 -0
  230. package/dist/hooks/ChatToggle/index.js +62 -0
  231. package/dist/hooks/ChatToggleAnalytics/index.cjs +39 -0
  232. package/dist/hooks/ChatToggleAnalytics/index.d.cts +9 -0
  233. package/dist/hooks/ChatToggleAnalytics/index.d.ts +9 -0
  234. package/dist/hooks/ChatToggleAnalytics/index.js +37 -0
  235. package/dist/hooks/CustomerSupportHandoff/index.cjs +36 -0
  236. package/dist/hooks/CustomerSupportHandoff/index.d.cts +16 -0
  237. package/dist/hooks/CustomerSupportHandoff/index.d.ts +16 -0
  238. package/dist/hooks/CustomerSupportHandoff/index.js +34 -0
  239. package/dist/hooks/Debounce/index.cjs +3 -0
  240. package/dist/hooks/Debounce/index.d.cts +5 -0
  241. package/dist/hooks/Debounce/index.d.ts +5 -0
  242. package/dist/hooks/Debounce/index.js +3 -0
  243. package/dist/hooks/ElementObserver/index.cjs +179 -0
  244. package/dist/hooks/ElementObserver/index.d.cts +29 -0
  245. package/dist/hooks/ElementObserver/index.d.ts +29 -0
  246. package/dist/hooks/ElementObserver/index.js +177 -0
  247. package/dist/hooks/GrabAndScroll/index.cjs +99 -0
  248. package/dist/hooks/GrabAndScroll/index.d.cts +14 -0
  249. package/dist/hooks/GrabAndScroll/index.d.ts +14 -0
  250. package/dist/hooks/GrabAndScroll/index.js +97 -0
  251. package/dist/hooks/GraphQLConfig/index.cjs +17 -0
  252. package/dist/hooks/GraphQLConfig/index.d.cts +28 -0
  253. package/dist/hooks/GraphQLConfig/index.d.ts +28 -0
  254. package/dist/hooks/GraphQLConfig/index.js +16 -0
  255. package/dist/hooks/IdentifyUser/index.cjs +55 -0
  256. package/dist/hooks/IdentifyUser/index.d.cts +10 -0
  257. package/dist/hooks/IdentifyUser/index.d.ts +10 -0
  258. package/dist/hooks/IdentifyUser/index.js +53 -0
  259. package/dist/hooks/ImageResolver/index.cjs +55 -0
  260. package/dist/hooks/ImageResolver/index.d.cts +7 -0
  261. package/dist/hooks/ImageResolver/index.d.ts +7 -0
  262. package/dist/hooks/ImageResolver/index.js +53 -0
  263. package/dist/hooks/Intersection/index.cjs +3 -0
  264. package/dist/hooks/Intersection/index.d.cts +7 -0
  265. package/dist/hooks/Intersection/index.d.ts +7 -0
  266. package/dist/hooks/Intersection/index.js +3 -0
  267. package/dist/hooks/IsSmallScreen/index.cjs +22 -0
  268. package/dist/hooks/IsSmallScreen/index.d.cts +5 -0
  269. package/dist/hooks/IsSmallScreen/index.d.ts +5 -0
  270. package/dist/hooks/IsSmallScreen/index.js +20 -0
  271. package/dist/hooks/LocalStorageOperations/index.cjs +79 -0
  272. package/dist/hooks/LocalStorageOperations/index.d.cts +17 -0
  273. package/dist/hooks/LocalStorageOperations/index.d.ts +17 -0
  274. package/dist/hooks/LocalStorageOperations/index.js +74 -0
  275. package/dist/hooks/MessageFilter/index.cjs +54 -0
  276. package/dist/hooks/MessageFilter/index.d.cts +30 -0
  277. package/dist/hooks/MessageFilter/index.d.ts +30 -0
  278. package/dist/hooks/MessageFilter/index.js +54 -0
  279. package/dist/hooks/MessageScrollObserver/index.cjs +36 -0
  280. package/dist/hooks/MessageScrollObserver/index.d.cts +5 -0
  281. package/dist/hooks/MessageScrollObserver/index.d.ts +5 -0
  282. package/dist/hooks/MessageScrollObserver/index.js +34 -0
  283. package/dist/hooks/NewOrgConfig/index.cjs +20 -0
  284. package/dist/hooks/NewOrgConfig/index.d.cts +20 -0
  285. package/dist/hooks/NewOrgConfig/index.d.ts +20 -0
  286. package/dist/hooks/NewOrgConfig/index.js +20 -0
  287. package/dist/hooks/Search/index.cjs +325 -0
  288. package/dist/hooks/Search/index.d.cts +61 -0
  289. package/dist/hooks/Search/index.d.ts +61 -0
  290. package/dist/hooks/Search/index.js +322 -0
  291. package/dist/hooks/SearchOperations/index.cjs +105 -0
  292. package/dist/hooks/SearchOperations/index.d.cts +22 -0
  293. package/dist/hooks/SearchOperations/index.d.ts +22 -0
  294. package/dist/hooks/SearchOperations/index.js +102 -0
  295. package/dist/hooks/SessionStorageOperations/index.cjs +30 -0
  296. package/dist/hooks/SessionStorageOperations/index.d.cts +8 -0
  297. package/dist/hooks/SessionStorageOperations/index.d.ts +8 -0
  298. package/dist/hooks/SessionStorageOperations/index.js +28 -0
  299. package/dist/hooks/ShopifyUrlOperations/index.cjs +53 -0
  300. package/dist/hooks/ShopifyUrlOperations/index.d.cts +23 -0
  301. package/dist/hooks/ShopifyUrlOperations/index.d.ts +23 -0
  302. package/dist/hooks/ShopifyUrlOperations/index.js +49 -0
  303. package/dist/hooks/SnapCalculator/index.cjs +29 -0
  304. package/dist/hooks/SnapCalculator/index.d.cts +12 -0
  305. package/dist/hooks/SnapCalculator/index.d.ts +12 -0
  306. package/dist/hooks/SnapCalculator/index.js +27 -0
  307. package/dist/hooks/SystemSettingsContext/index.cjs +7 -0
  308. package/dist/hooks/SystemSettingsContext/index.d.cts +23 -0
  309. package/dist/hooks/SystemSettingsContext/index.d.ts +23 -0
  310. package/dist/hooks/SystemSettingsContext/index.js +7 -0
  311. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +23 -0
  312. package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +18 -0
  313. package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +18 -0
  314. package/dist/hooks/TrackComponentVisibleEvent/index.js +23 -0
  315. package/dist/hooks/UpdateAnalyticsProps/index.cjs +63 -0
  316. package/dist/hooks/UpdateAnalyticsProps/index.d.cts +9 -0
  317. package/dist/hooks/UpdateAnalyticsProps/index.d.ts +9 -0
  318. package/dist/hooks/UpdateAnalyticsProps/index.js +60 -0
  319. package/dist/hooks/utils.cjs +8 -0
  320. package/dist/hooks/utils.d.cts +13 -0
  321. package/dist/hooks/utils.d.ts +13 -0
  322. package/dist/hooks/utils.js +3 -0
  323. package/dist/index-7VOYQNo5.d.ts +184 -0
  324. package/dist/index-9NE86em3.d.cts +35 -0
  325. package/dist/index-Bmub8e38.d.cts +98 -0
  326. package/dist/index-C1nwLU6Q.d.ts +35 -0
  327. package/dist/index-CESxqFso.d.cts +228 -0
  328. package/dist/index-CG3P8xE1.d.cts +676 -0
  329. package/dist/index-CalyvQj_.d.ts +1 -0
  330. package/dist/index-CiWEYzXl.d.cts +184 -0
  331. package/dist/index-Cyq5HiC0.d.cts +44 -0
  332. package/dist/index-D9SzePCE.d.cts +186 -0
  333. package/dist/index-DDZmV951.d.ts +186 -0
  334. package/dist/index-Da1s8h5C.d.cts +9 -0
  335. package/dist/index-Dy22w7kg.d.ts +24 -0
  336. package/dist/index-DzbkQtaK.d.cts +24 -0
  337. package/dist/index-DzzKdrcZ.d.ts +9 -0
  338. package/dist/index-L7SEpDLz.d.ts +228 -0
  339. package/dist/index-RcVcRKH7.d.cts +1 -0
  340. package/dist/index-YrhxAGtH.d.ts +676 -0
  341. package/dist/index-exSzn3SP.d.ts +44 -0
  342. package/dist/index-hebsV7fc.d.ts +98 -0
  343. package/dist/interceptors/index.cjs +4 -0
  344. package/dist/interceptors/index.d.cts +20 -0
  345. package/dist/interceptors/index.d.ts +20 -0
  346. package/dist/interceptors/index.js +4 -0
  347. package/dist/interceptors/types.cjs +1 -0
  348. package/dist/interceptors/types.d.cts +13 -0
  349. package/dist/interceptors/types.d.ts +13 -0
  350. package/dist/interceptors/types.js +3 -0
  351. package/dist/localStorageContext-Dwgto93_.js +95 -0
  352. package/dist/localStorageContext-cnMYDllE.cjs +115 -0
  353. package/dist/logger-Cp7J4YJT.cjs +26 -0
  354. package/dist/logger-oAgZx2-m.js +20 -0
  355. package/dist/models-B1P-dSCW.cjs +1537 -0
  356. package/dist/models-CgvSM2fW.js +1296 -0
  357. package/dist/newOrgConfigAtom-B9FW3fDc.cjs +15 -0
  358. package/dist/newOrgConfigAtom-CMeY5c6t.js +8 -0
  359. package/dist/newOrgConfigContext-1uwWWCPa.js +53 -0
  360. package/dist/newOrgConfigContext-B0v1q3dk.cjs +68 -0
  361. package/dist/newOrgConfigContext-C8wBmK3q.d.cts +16 -0
  362. package/dist/newOrgConfigContext-D180PO0t.d.ts +16 -0
  363. package/dist/nodeSelector-B3bPtEjX.d.cts +31 -0
  364. package/dist/nodeSelector-DQicm08Y.d.ts +31 -0
  365. package/dist/org-DU3Wck0R.cjs +43 -0
  366. package/dist/org-DptftvB6.js +12 -0
  367. package/dist/search-BtYKpiNB.js +126 -0
  368. package/dist/search-DYVQuYti.d.ts +20 -0
  369. package/dist/search-Du6HZpO6.cjs +205 -0
  370. package/dist/search-filter-types-B5xcaEit.d.ts +102 -0
  371. package/dist/search-filter-types-DZPTzUK9.d.cts +102 -0
  372. package/dist/search-y-ioX5Mz.d.cts +20 -0
  373. package/dist/searchContext-BK43ArCs.cjs +145 -0
  374. package/dist/searchContext-JjZZhDCe.js +129 -0
  375. package/dist/searchServiceAdapter-BSPZOg1r.js +16 -0
  376. package/dist/searchServiceAdapter-DrjFCiw8.cjs +34 -0
  377. package/dist/sessionStorageContext-BQY9r8zz.js +52 -0
  378. package/dist/sessionStorageContext-R2yUAkd9.cjs +66 -0
  379. package/dist/shopifyUrlContext-Bon8_SUJ.js +61 -0
  380. package/dist/shopifyUrlContext-DUdw1xUH.cjs +75 -0
  381. package/dist/spiffyWidgets-BuS00VaQ.d.cts +20 -0
  382. package/dist/spiffyWidgets-DZqG5plz.d.ts +20 -0
  383. package/dist/systemSettingsContext-BjbhIz6y.js +39 -0
  384. package/dist/systemSettingsContext-Dv9EmjmZ.cjs +60 -0
  385. package/dist/test-types-Dl5puRHC.d.ts +40 -0
  386. package/dist/test-types-ThQiO_cc.d.cts +40 -0
  387. package/dist/types/index.cjs +34 -0
  388. package/dist/types/index.d.cts +3 -0
  389. package/dist/types/index.d.ts +3 -0
  390. package/dist/types/index.js +31 -0
  391. package/dist/types-BwNrLPSZ.cjs +106 -0
  392. package/dist/types-CKMMb_gX.d.cts +51 -0
  393. package/dist/types-Csgpt7EV.d.ts +51 -0
  394. package/dist/types-D3uOF0Oy.js +76 -0
  395. package/dist/types-DIk0FLwd.js +30 -0
  396. package/dist/types-DNLkuGWZ.cjs +48 -0
  397. package/dist/types-DSW9XODe.d.cts +10 -0
  398. package/dist/types-DtTnp0o0.js +1 -0
  399. package/dist/types-a8gm_IaQ.cjs +0 -0
  400. package/dist/types-oSg-AkO5.d.ts +10 -0
  401. package/dist/types.cjs +0 -0
  402. package/dist/types.d.cts +15 -0
  403. package/dist/types.d.ts +15 -0
  404. package/dist/types.js +1 -0
  405. package/dist/urlsParser-BV5yF8sa.cjs +78 -0
  406. package/dist/urlsParser-DUgV_Qy9.js +42 -0
  407. package/dist/useAmplitudeOperations-C9o_wDU6.cjs +41 -0
  408. package/dist/useAmplitudeOperations-COq3L1no.js +34 -0
  409. package/dist/useAppDetails-C4GTLEIR.cjs +38 -0
  410. package/dist/useAppDetails-CEksA88Q.js +30 -0
  411. package/dist/useDebounce--rPGMuE7.js +19 -0
  412. package/dist/useDebounce-DECHWSTn.cjs +26 -0
  413. package/dist/useGraphQLConfig-DQoMmpNM.js +63 -0
  414. package/dist/useGraphQLConfig-DzH1nVBh.cjs +76 -0
  415. package/dist/useIntersection-UEO0Cezc.js +21 -0
  416. package/dist/useIntersection-rV0Q8mBH.cjs +28 -0
  417. package/dist/useMessageInterceptor-CstX10ih.cjs +33 -0
  418. package/dist/useMessageInterceptor-D5oAekXn.js +25 -0
  419. package/dist/userIdentityContext-8kfKQRFx.d.ts +20 -0
  420. package/dist/userIdentityContext-D2oFVFzo.d.cts +20 -0
  421. package/dist/utilityTypes-DynzxjK3.js +1 -0
  422. package/dist/utilityTypes-xb8SjKSV.cjs +0 -0
  423. package/dist/utils-ARmpTh1O.js +27 -0
  424. package/dist/utils-B3x_9JTY.d.cts +15 -0
  425. package/dist/utils-B8rATLoc.d.ts +22 -0
  426. package/dist/utils-BLe5oreh.d.ts +15 -0
  427. package/dist/utils-Bcz5kAgP.js +92 -0
  428. package/dist/utils-CMqFfqZx.cjs +130 -0
  429. package/dist/utils-Cavu4XiM.cjs +33 -0
  430. package/dist/utils-CqVRbvfN.cjs +29 -0
  431. package/dist/utils-DQhbbAnt.js +23 -0
  432. package/dist/utils-EDgzCG3Q.d.cts +22 -0
  433. package/dist/utils-V1YTUQng.js +1385 -0
  434. package/dist/utils-VI19AC8S.cjs +1591 -0
  435. package/dist/variantInfo-BRmDpamJ.cjs +17 -0
  436. package/dist/variantInfo-BwBBEWSA.js +11 -0
  437. package/package.json +3 -2
  438. package/src/config/locators/components/chat/index.ts +0 -1
  439. package/src/config/locators/components/chat/preview.ts +0 -1
  440. package/src/config/locators/components/common/index.ts +4 -0
  441. package/src/config/locators/index.ts +1 -0
package/README.md CHANGED
@@ -1,2 +1,37 @@
1
+
1
2
  # envive-react-hooks
3
+
2
4
  State and data providers for intergrating with Envive.
5
+
6
+ ## Local Development
7
+
8
+ In order to develop packages in tandem, we use npm link. Due to a limitation around react hooks and link, you will receive an error unless you follow these steps.
9
+
10
+ The following example assumes a file system where all your repos share a top level directory. If you organize your code differently, you will need to change the paths accordingly.
11
+
12
+ ```md
13
+ my-code/
14
+ ├── envive-app-blocks/
15
+ ├── envive-react-hooks/
16
+ ├── envive-react-toolkit/
17
+ │ ├──packages/
18
+ │ ├── components/
19
+ │ ├── icons/
20
+ │ ├── storybook/
21
+ ```
22
+
23
+ For the hooks library:
24
+
25
+ 1. Starting from /envive-app-blocks `npm i`
26
+ 2. `cd ../envive-react-hooks`
27
+ 3. `npm link ../envive-app-blocks/node_modules/react`
28
+ 4. `npm run build:watch`
29
+ 5. `cd ../envive-app-blocks`
30
+ 6. `npm link ../envive-react-hooks`
31
+ 7. `npm run dev:local`
32
+
33
+ ### Troubleshooting link
34
+
35
+ * If you see an error such as this, something may have not been linked correctly.
36
+ `Hooks can only be called inside the body of a function component.`, there is likely nothing wrong with your code.
37
+ * If you run `npm i` in either package, you will get unlinked, if you are doing a lot of testing around your dependencies, you can use `npm link --save`. This will add a file reference to your package.json that you will need to correct before merge.
File without changes
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,15 @@
1
+ const require_newOrgConfigContext = require('./newOrgConfigContext-B0v1q3dk.cjs');
2
+
3
+ //#region src/hooks/NewOrgConfig/useNewOrgConfig.ts
4
+ const useNewOrgConfig = () => {
5
+ return require_newOrgConfigContext.useNewOrgConfigContext();
6
+ };
7
+
8
+ //#endregion
9
+ Object.defineProperty(exports, 'useNewOrgConfig', {
10
+ enumerable: true,
11
+ get: function () {
12
+ return useNewOrgConfig;
13
+ }
14
+ });
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV3T3JnQ29uZmlnLUJfMUExZDlxLmNqcyIsIm5hbWVzIjpbInVzZU5ld09yZ0NvbmZpZ0NvbnRleHQiXSwic291cmNlcyI6WyIuLi9zcmMvaG9va3MvTmV3T3JnQ29uZmlnL3VzZU5ld09yZ0NvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VOZXdPcmdDb25maWdDb250ZXh0IH0gZnJvbSBcInNyYy9jb250ZXh0cy9uZXdPcmdDb25maWdDb250ZXh0L25ld09yZ0NvbmZpZ0NvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZU5ld09yZ0NvbmZpZyA9ICgpID0+IHtcbiAgY29uc3QgY29uZmlnID0gdXNlTmV3T3JnQ29uZmlnQ29udGV4dCgpO1xuXG4gIHJldHVybiBjb25maWc7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFFQSxNQUFhLHdCQUF3QjtBQUduQyxRQUZlQSxvREFBd0IifQ==
@@ -0,0 +1,10 @@
1
+ import { useNewOrgConfigContext } from "./newOrgConfigContext-1uwWWCPa.js";
2
+
3
+ //#region src/hooks/NewOrgConfig/useNewOrgConfig.ts
4
+ const useNewOrgConfig = () => {
5
+ return useNewOrgConfigContext();
6
+ };
7
+
8
+ //#endregion
9
+ export { useNewOrgConfig };
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV3T3JnQ29uZmlnLXhObGNwY0ZfLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9ob29rcy9OZXdPcmdDb25maWcvdXNlTmV3T3JnQ29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU5ld09yZ0NvbmZpZ0NvbnRleHQgfSBmcm9tIFwic3JjL2NvbnRleHRzL25ld09yZ0NvbmZpZ0NvbnRleHQvbmV3T3JnQ29uZmlnQ29udGV4dFwiO1xuXG5leHBvcnQgY29uc3QgdXNlTmV3T3JnQ29uZmlnID0gKCkgPT4ge1xuICBjb25zdCBjb25maWcgPSB1c2VOZXdPcmdDb25maWdDb250ZXh0KCk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn07XG4iXSwibWFwcGluZ3MiOiI7OztBQUVBLE1BQWEsd0JBQXdCO0FBR25DLFFBRmUsd0JBQXdCIn0=
@@ -0,0 +1,13 @@
1
+ import { SystemSettingsContext } from "./systemSettingsContext-BjbhIz6y.js";
2
+ import { useContext } from "react";
3
+
4
+ //#region src/hooks/SystemSettingsContext/useSystemSettingsContext.ts
5
+ const useSystemSettingsContext = () => {
6
+ const context = useContext(SystemSettingsContext);
7
+ if (!context) throw new Error("useSystemSettingsContext must be used within a SystemSettingsContextProvider");
8
+ return { ...context };
9
+ };
10
+
11
+ //#endregion
12
+ export { useSystemSettingsContext };
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3lzdGVtU2V0dGluZ3NDb250ZXh0LUNDdVMza1dILmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9ob29rcy9TeXN0ZW1TZXR0aW5nc0NvbnRleHQvdXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFN5c3RlbVNldHRpbmdzQ29udGV4dCB9IGZyb20gXCJzcmMvY29udGV4dHMvc3lzdGVtU2V0dGluZ3NDb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCB1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFN5c3RlbVNldHRpbmdzQ29udGV4dCk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJ1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIFN5c3RlbVNldHRpbmdzQ29udGV4dFByb3ZpZGVyXCJcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHsgLi4uY29udGV4dCB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUdBLE1BQWEsaUNBQWlDO0NBQzVDLE1BQU0sVUFBVSxXQUFXLHNCQUFzQjtBQUVqRCxLQUFJLENBQUMsUUFDSCxPQUFNLElBQUksTUFDUiwrRUFDRDtBQUdILFFBQU8sRUFBRSxHQUFHLFNBQVMifQ==
@@ -0,0 +1,20 @@
1
+ const require_chunk = require('./chunk-CUT6urMc.cjs');
2
+ const require_systemSettingsContext = require('./systemSettingsContext-Dv9EmjmZ.cjs');
3
+ let react = require("react");
4
+ react = require_chunk.__toESM(react);
5
+
6
+ //#region src/hooks/SystemSettingsContext/useSystemSettingsContext.ts
7
+ const useSystemSettingsContext = () => {
8
+ const context = (0, react.useContext)(require_systemSettingsContext.SystemSettingsContext);
9
+ if (!context) throw new Error("useSystemSettingsContext must be used within a SystemSettingsContextProvider");
10
+ return { ...context };
11
+ };
12
+
13
+ //#endregion
14
+ Object.defineProperty(exports, 'useSystemSettingsContext', {
15
+ enumerable: true,
16
+ get: function () {
17
+ return useSystemSettingsContext;
18
+ }
19
+ });
20
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3lzdGVtU2V0dGluZ3NDb250ZXh0LURoXzM1ZkVTLmNqcyIsIm5hbWVzIjpbIlN5c3RlbVNldHRpbmdzQ29udGV4dCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ob29rcy9TeXN0ZW1TZXR0aW5nc0NvbnRleHQvdXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFN5c3RlbVNldHRpbmdzQ29udGV4dCB9IGZyb20gXCJzcmMvY29udGV4dHMvc3lzdGVtU2V0dGluZ3NDb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCB1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFN5c3RlbVNldHRpbmdzQ29udGV4dCk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJ1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIFN5c3RlbVNldHRpbmdzQ29udGV4dFByb3ZpZGVyXCJcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHsgLi4uY29udGV4dCB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EsTUFBYSxpQ0FBaUM7Q0FDNUMsTUFBTSxnQ0FBcUJBLG9EQUFzQjtBQUVqRCxLQUFJLENBQUMsUUFDSCxPQUFNLElBQUksTUFDUiwrRUFDRDtBQUdILFFBQU8sRUFBRSxHQUFHLFNBQVMifQ==
@@ -0,0 +1,52 @@
1
+ import { SpiffyMetricsEventName, useAmplitude } from "./utils-V1YTUQng.js";
2
+ import { useIntersection } from "./useIntersection-UEO0Cezc.js";
3
+ import { useEffect, useRef } from "react";
4
+
5
+ //#region src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts
6
+ /**
7
+ * Tracks a component and logs an event to Amplitude when the component is visible.
8
+ *
9
+ * @param component - The component to track.
10
+ * @param element - The element to track visibility of.
11
+ * @param eventProps - Additional properties to include with the event.
12
+ * @param eventName - The Amplitude event name to track (defaults to ChatComponentVisible).
13
+ */
14
+ const useTrackComponentVisibleEvent = (component, element, eventProps, eventName = SpiffyMetricsEventName.ChatComponentVisible) => {
15
+ const isVisible = useIntersection(element, "0px");
16
+ const hasTrackedEvent = useRef(false);
17
+ const { trackEvent } = useAmplitude();
18
+ const componentProps = (() => {
19
+ if (eventName === SpiffyMetricsEventName.ChatComponentVisible) return {
20
+ chat_component: component,
21
+ ...eventProps
22
+ };
23
+ if (eventName === SpiffyMetricsEventName.SearchComponentVisible) return {
24
+ search_component: component,
25
+ ...eventProps
26
+ };
27
+ return {
28
+ component,
29
+ ...eventProps
30
+ };
31
+ })();
32
+ useEffect(() => {
33
+ if (isVisible && !hasTrackedEvent.current) {
34
+ trackEvent({
35
+ eventName,
36
+ eventProps: componentProps
37
+ });
38
+ hasTrackedEvent.current = true;
39
+ }
40
+ }, [
41
+ isVisible,
42
+ component,
43
+ eventProps,
44
+ eventName,
45
+ componentProps,
46
+ trackEvent
47
+ ]);
48
+ };
49
+
50
+ //#endregion
51
+ export { useTrackComponentVisibleEvent };
52
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQtQjgyOGdpTS0uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2hvb2tzL1RyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50L3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZk9iamVjdCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFNwaWZmeVdpZGdldHMgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVscy9zcGlmZnlXaWRnZXRzXCI7XG5pbXBvcnQgeyB1c2VJbnRlcnNlY3Rpb24gfSBmcm9tIFwic3JjL2hvb2tzL0ludGVyc2VjdGlvbi91c2VJbnRlcnNlY3Rpb25cIjtcbmltcG9ydCB7XG4gIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUsXG4gIHVzZUFtcGxpdHVkZSxcbn0gZnJvbSBcInNyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHRcIjtcblxuLyoqXG4gKiBUcmFja3MgYSBjb21wb25lbnQgYW5kIGxvZ3MgYW4gZXZlbnQgdG8gQW1wbGl0dWRlIHdoZW4gdGhlIGNvbXBvbmVudCBpcyB2aXNpYmxlLlxuICpcbiAqIEBwYXJhbSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRvIHRyYWNrLlxuICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgZWxlbWVudCB0byB0cmFjayB2aXNpYmlsaXR5IG9mLlxuICogQHBhcmFtIGV2ZW50UHJvcHMgLSBBZGRpdGlvbmFsIHByb3BlcnRpZXMgdG8gaW5jbHVkZSB3aXRoIHRoZSBldmVudC5cbiAqIEBwYXJhbSBldmVudE5hbWUgLSBUaGUgQW1wbGl0dWRlIGV2ZW50IG5hbWUgdG8gdHJhY2sgKGRlZmF1bHRzIHRvIENoYXRDb21wb25lbnRWaXNpYmxlKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50ID0gKFxuICBjb21wb25lbnQ6IFNwaWZmeVdpZGdldHMsXG4gIGVsZW1lbnQ6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sXG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lID0gU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50VmlzaWJsZVxuKSA9PiB7XG4gIGNvbnN0IGlzVmlzaWJsZSA9IHVzZUludGVyc2VjdGlvbihlbGVtZW50LCBcIjBweFwiKTtcbiAgY29uc3QgaGFzVHJhY2tlZEV2ZW50ID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgeyB0cmFja0V2ZW50IH0gPSB1c2VBbXBsaXR1ZGUoKTtcblxuICBjb25zdCBjb21wb25lbnRQcm9wcyA9ICgoKSA9PiB7XG4gICAgaWYgKGV2ZW50TmFtZSA9PT0gU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50VmlzaWJsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2hhdF9jb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChldmVudE5hbWUgPT09IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuU2VhcmNoQ29tcG9uZW50VmlzaWJsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VhcmNoX2NvbXBvbmVudDogY29tcG9uZW50LFxuICAgICAgICAuLi5ldmVudFByb3BzLFxuICAgICAgfTtcbiAgICB9XG4gICAgLy8gRGVmYXVsdCBjYXNlIGZvciBvdGhlciBldmVudCB0eXBlc1xuICAgIHJldHVybiB7XG4gICAgICBjb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgfTtcbiAgfSkoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1Zpc2libGUgJiYgIWhhc1RyYWNrZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICB0cmFja0V2ZW50KHtcbiAgICAgICAgZXZlbnROYW1lOiBldmVudE5hbWUsXG4gICAgICAgIGV2ZW50UHJvcHM6IGNvbXBvbmVudFByb3BzLFxuICAgICAgfSk7XG4gICAgICBoYXNUcmFja2VkRXZlbnQuY3VycmVudCA9IHRydWU7XG4gICAgfVxuICB9LCBbaXNWaXNpYmxlLCBjb21wb25lbnQsIGV2ZW50UHJvcHMsIGV2ZW50TmFtZSwgY29tcG9uZW50UHJvcHMsIHRyYWNrRXZlbnRdKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFnQkEsTUFBYSxpQ0FDWCxXQUNBLFNBQ0EsWUFDQSxZQUFvQyx1QkFBdUIseUJBQ3hEO0NBQ0gsTUFBTSxZQUFZLGdCQUFnQixTQUFTLE1BQU07Q0FDakQsTUFBTSxrQkFBa0IsT0FBTyxNQUFNO0NBQ3JDLE1BQU0sRUFBRSxlQUFlLGNBQWM7Q0FFckMsTUFBTSx3QkFBd0I7QUFDNUIsTUFBSSxjQUFjLHVCQUF1QixxQkFDdkMsUUFBTztHQUNMLGdCQUFnQjtHQUNoQixHQUFHO0dBQ0o7QUFFSCxNQUFJLGNBQWMsdUJBQXVCLHVCQUN2QyxRQUFPO0dBQ0wsa0JBQWtCO0dBQ2xCLEdBQUc7R0FDSjtBQUdILFNBQU87R0FDTTtHQUNYLEdBQUc7R0FDSjtLQUNDO0FBRUosaUJBQWdCO0FBQ2QsTUFBSSxhQUFhLENBQUMsZ0JBQWdCLFNBQVM7QUFDekMsY0FBVztJQUNFO0lBQ1gsWUFBWTtJQUNiLENBQUM7QUFDRixtQkFBZ0IsVUFBVTs7SUFFM0I7RUFBQztFQUFXO0VBQVc7RUFBWTtFQUFXO0VBQWdCO0VBQVcsQ0FBQyJ9
@@ -0,0 +1,59 @@
1
+ const require_chunk = require('./chunk-CUT6urMc.cjs');
2
+ const require_utils = require('./utils-VI19AC8S.cjs');
3
+ const require_useIntersection = require('./useIntersection-rV0Q8mBH.cjs');
4
+ let react = require("react");
5
+ react = require_chunk.__toESM(react);
6
+
7
+ //#region src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts
8
+ /**
9
+ * Tracks a component and logs an event to Amplitude when the component is visible.
10
+ *
11
+ * @param component - The component to track.
12
+ * @param element - The element to track visibility of.
13
+ * @param eventProps - Additional properties to include with the event.
14
+ * @param eventName - The Amplitude event name to track (defaults to ChatComponentVisible).
15
+ */
16
+ const useTrackComponentVisibleEvent = (component, element, eventProps, eventName = require_utils.SpiffyMetricsEventName.ChatComponentVisible) => {
17
+ const isVisible = require_useIntersection.useIntersection(element, "0px");
18
+ const hasTrackedEvent = (0, react.useRef)(false);
19
+ const { trackEvent } = require_utils.useAmplitude();
20
+ const componentProps = (() => {
21
+ if (eventName === require_utils.SpiffyMetricsEventName.ChatComponentVisible) return {
22
+ chat_component: component,
23
+ ...eventProps
24
+ };
25
+ if (eventName === require_utils.SpiffyMetricsEventName.SearchComponentVisible) return {
26
+ search_component: component,
27
+ ...eventProps
28
+ };
29
+ return {
30
+ component,
31
+ ...eventProps
32
+ };
33
+ })();
34
+ (0, react.useEffect)(() => {
35
+ if (isVisible && !hasTrackedEvent.current) {
36
+ trackEvent({
37
+ eventName,
38
+ eventProps: componentProps
39
+ });
40
+ hasTrackedEvent.current = true;
41
+ }
42
+ }, [
43
+ isVisible,
44
+ component,
45
+ eventProps,
46
+ eventName,
47
+ componentProps,
48
+ trackEvent
49
+ ]);
50
+ };
51
+
52
+ //#endregion
53
+ Object.defineProperty(exports, 'useTrackComponentVisibleEvent', {
54
+ enumerable: true,
55
+ get: function () {
56
+ return useTrackComponentVisibleEvent;
57
+ }
58
+ });
59
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQtRHNUSUg3WXQuY2pzIiwibmFtZXMiOlsiU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSIsInVzZUludGVyc2VjdGlvbiIsInVzZUFtcGxpdHVkZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ob29rcy9UcmFja0NvbXBvbmVudFZpc2libGVFdmVudC91c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWZPYmplY3QsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBTcGlmZnlXaWRnZXRzIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvc3BpZmZ5V2lkZ2V0c1wiO1xuaW1wb3J0IHsgdXNlSW50ZXJzZWN0aW9uIH0gZnJvbSBcInNyYy9ob29rcy9JbnRlcnNlY3Rpb24vdXNlSW50ZXJzZWN0aW9uXCI7XG5pbXBvcnQge1xuICBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLFxuICB1c2VBbXBsaXR1ZGUsXG59IGZyb20gXCJzcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dC9hbXBsaXR1ZGVDb250ZXh0XCI7XG5cbi8qKlxuICogVHJhY2tzIGEgY29tcG9uZW50IGFuZCBsb2dzIGFuIGV2ZW50IHRvIEFtcGxpdHVkZSB3aGVuIHRoZSBjb21wb25lbnQgaXMgdmlzaWJsZS5cbiAqXG4gKiBAcGFyYW0gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0byB0cmFjay5cbiAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgdG8gdHJhY2sgdmlzaWJpbGl0eSBvZi5cbiAqIEBwYXJhbSBldmVudFByb3BzIC0gQWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRvIGluY2x1ZGUgd2l0aCB0aGUgZXZlbnQuXG4gKiBAcGFyYW0gZXZlbnROYW1lIC0gVGhlIEFtcGxpdHVkZSBldmVudCBuYW1lIHRvIHRyYWNrIChkZWZhdWx0cyB0byBDaGF0Q29tcG9uZW50VmlzaWJsZSkuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudCA9IChcbiAgY29tcG9uZW50OiBTcGlmZnlXaWRnZXRzLFxuICBlbGVtZW50OiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+LFxuICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSA9IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudFZpc2libGVcbikgPT4ge1xuICBjb25zdCBpc1Zpc2libGUgPSB1c2VJbnRlcnNlY3Rpb24oZWxlbWVudCwgXCIwcHhcIik7XG4gIGNvbnN0IGhhc1RyYWNrZWRFdmVudCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHsgdHJhY2tFdmVudCB9ID0gdXNlQW1wbGl0dWRlKCk7XG5cbiAgY29uc3QgY29tcG9uZW50UHJvcHMgPSAoKCkgPT4ge1xuICAgIGlmIChldmVudE5hbWUgPT09IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudFZpc2libGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNoYXRfY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoZXZlbnROYW1lID09PSBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLlNlYXJjaENvbXBvbmVudFZpc2libGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNlYXJjaF9jb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgIH07XG4gICAgfVxuICAgIC8vIERlZmF1bHQgY2FzZSBmb3Igb3RoZXIgZXZlbnQgdHlwZXNcbiAgICByZXR1cm4ge1xuICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICAuLi5ldmVudFByb3BzLFxuICAgIH07XG4gIH0pKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWaXNpYmxlICYmICFoYXNUcmFja2VkRXZlbnQuY3VycmVudCkge1xuICAgICAgdHJhY2tFdmVudCh7XG4gICAgICAgIGV2ZW50TmFtZTogZXZlbnROYW1lLFxuICAgICAgICBldmVudFByb3BzOiBjb21wb25lbnRQcm9wcyxcbiAgICAgIH0pO1xuICAgICAgaGFzVHJhY2tlZEV2ZW50LmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cbiAgfSwgW2lzVmlzaWJsZSwgY29tcG9uZW50LCBldmVudFByb3BzLCBldmVudE5hbWUsIGNvbXBvbmVudFByb3BzLCB0cmFja0V2ZW50XSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsTUFBYSxpQ0FDWCxXQUNBLFNBQ0EsWUFDQSxZQUFvQ0EscUNBQXVCLHlCQUN4RDtDQUNILE1BQU0sWUFBWUMsd0NBQWdCLFNBQVMsTUFBTTtDQUNqRCxNQUFNLG9DQUF5QixNQUFNO0NBQ3JDLE1BQU0sRUFBRSxlQUFlQyw0QkFBYztDQUVyQyxNQUFNLHdCQUF3QjtBQUM1QixNQUFJLGNBQWNGLHFDQUF1QixxQkFDdkMsUUFBTztHQUNMLGdCQUFnQjtHQUNoQixHQUFHO0dBQ0o7QUFFSCxNQUFJLGNBQWNBLHFDQUF1Qix1QkFDdkMsUUFBTztHQUNMLGtCQUFrQjtHQUNsQixHQUFHO0dBQ0o7QUFHSCxTQUFPO0dBQ007R0FDWCxHQUFHO0dBQ0o7S0FDQztBQUVKLDRCQUFnQjtBQUNkLE1BQUksYUFBYSxDQUFDLGdCQUFnQixTQUFTO0FBQ3pDLGNBQVc7SUFDRTtJQUNYLFlBQVk7SUFDYixDQUFDO0FBQ0YsbUJBQWdCLFVBQVU7O0lBRTNCO0VBQUM7RUFBVztFQUFXO0VBQVk7RUFBVztFQUFnQjtFQUFXLENBQUMifQ==
@@ -0,0 +1,52 @@
1
+ import React from "react";
2
+
3
+ //#region src/contexts/amplitudeContext/amplitudeContext.d.ts
4
+ declare enum SpiffyMetricsEventName {
5
+ BundleLoaded = "Bundle Loaded",
6
+ ChatLiveAgentBtnClick = "Chat Live Agent Btn Click",
7
+ ChatFloatingButtonVisible = "Chat Floating Button Visible",
8
+ ChatComponentVisible = "Chat Component Visible",
9
+ ChatComponentExpanded = "Chat Component Expanded",
10
+ ChatComponentCollapsed = "Chat Component Collapsed",
11
+ ChatUserMessageInput = "Chat User Message Input",
12
+ ChatSuggestionClicked = "Chat Suggestion Clicked",
13
+ ChatAssistantResponse = "Chat Assistant Response",
14
+ ProductCardClicked = "Product Card Clicked",
15
+ ProductReviewCardClicked = "Product Review Card Clicked",
16
+ AddToCartClicked = "Add to Cart Clicked",
17
+ PromptCardClicked = "Prompt Card Clicked",
18
+ SupportedEvent = "Supported Event",
19
+ SearchBackToResponseClicked = "Search Back to Response Clicked",
20
+ PerformanceMetrics = "Performance Metrics",
21
+ SearchBarClicked = "Search Bar Clicked",
22
+ OrderLookupStarted = "Order Lookup Started",
23
+ OrderLookupFormSubmitted = "Order Lookup Form Submitted",
24
+ SearchComponentVisible = "Search Component Visible",
25
+ SearchZeroStateSuggestionClicked = "Search Zero State Suggestion Clicked",
26
+ // This is the scrolling list of suggestion buttons in global search
27
+ SearchInputStarted = "Search Input Started",
28
+ SearchQuerySubmitted = "Search Query Submitted",
29
+ SearchResultsViewed = "Search Results Viewed",
30
+ SearchTimeToFirstClick = "Search Time to First Click",
31
+ SearchZeroResultsRate = "Search Zero Results Rate",
32
+ SearchFilterClicked = "Search Filter Clicked",
33
+ SearchSortClicked = "Search Sort Clicked",
34
+ }
35
+ interface TrackEventParams {
36
+ eventName: SpiffyMetricsEventName;
37
+ eventProps?: Record<string, unknown>;
38
+ eventGroups?: Record<string, unknown>;
39
+ alsoSendToGoogleAnalytics?: boolean;
40
+ }
41
+ interface AmplitudeContextType {
42
+ trackEvent: (params: TrackEventParams) => Promise<void>;
43
+ isReady: boolean;
44
+ setSupplementalDefaultProps: (props: Record<string, unknown>) => void;
45
+ }
46
+ declare const AmplitudeProvider: React.FC<{
47
+ children: React.ReactNode;
48
+ }>;
49
+ declare const useAmplitude: () => AmplitudeContextType;
50
+ //#endregion
51
+ export { AmplitudeProvider, SpiffyMetricsEventName, useAmplitude };
52
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlQ29udGV4dC1CNzN4YW1OZS5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dC9hbXBsaXR1ZGVDb250ZXh0LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGRlY2xhcmUgZW51bSBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHtcbiAgICBCdW5kbGVMb2FkZWQgPSBcIkJ1bmRsZSBMb2FkZWRcIixcbiAgICBDaGF0TGl2ZUFnZW50QnRuQ2xpY2sgPSBcIkNoYXQgTGl2ZSBBZ2VudCBCdG4gQ2xpY2tcIixcbiAgICBDaGF0RmxvYXRpbmdCdXR0b25WaXNpYmxlID0gXCJDaGF0IEZsb2F0aW5nIEJ1dHRvbiBWaXNpYmxlXCIsXG4gICAgQ2hhdENvbXBvbmVudFZpc2libGUgPSBcIkNoYXQgQ29tcG9uZW50IFZpc2libGVcIixcbiAgICBDaGF0Q29tcG9uZW50RXhwYW5kZWQgPSBcIkNoYXQgQ29tcG9uZW50IEV4cGFuZGVkXCIsXG4gICAgQ2hhdENvbXBvbmVudENvbGxhcHNlZCA9IFwiQ2hhdCBDb21wb25lbnQgQ29sbGFwc2VkXCIsXG4gICAgQ2hhdFVzZXJNZXNzYWdlSW5wdXQgPSBcIkNoYXQgVXNlciBNZXNzYWdlIElucHV0XCIsXG4gICAgQ2hhdFN1Z2dlc3Rpb25DbGlja2VkID0gXCJDaGF0IFN1Z2dlc3Rpb24gQ2xpY2tlZFwiLFxuICAgIENoYXRBc3Npc3RhbnRSZXNwb25zZSA9IFwiQ2hhdCBBc3Npc3RhbnQgUmVzcG9uc2VcIixcbiAgICBQcm9kdWN0Q2FyZENsaWNrZWQgPSBcIlByb2R1Y3QgQ2FyZCBDbGlja2VkXCIsXG4gICAgUHJvZHVjdFJldmlld0NhcmRDbGlja2VkID0gXCJQcm9kdWN0IFJldmlldyBDYXJkIENsaWNrZWRcIixcbiAgICBBZGRUb0NhcnRDbGlja2VkID0gXCJBZGQgdG8gQ2FydCBDbGlja2VkXCIsXG4gICAgUHJvbXB0Q2FyZENsaWNrZWQgPSBcIlByb21wdCBDYXJkIENsaWNrZWRcIixcbiAgICBTdXBwb3J0ZWRFdmVudCA9IFwiU3VwcG9ydGVkIEV2ZW50XCIsXG4gICAgU2VhcmNoQmFja1RvUmVzcG9uc2VDbGlja2VkID0gXCJTZWFyY2ggQmFjayB0byBSZXNwb25zZSBDbGlja2VkXCIsXG4gICAgUGVyZm9ybWFuY2VNZXRyaWNzID0gXCJQZXJmb3JtYW5jZSBNZXRyaWNzXCIsXG4gICAgU2VhcmNoQmFyQ2xpY2tlZCA9IFwiU2VhcmNoIEJhciBDbGlja2VkXCIsXG4gICAgT3JkZXJMb29rdXBTdGFydGVkID0gXCJPcmRlciBMb29rdXAgU3RhcnRlZFwiLFxuICAgIE9yZGVyTG9va3VwRm9ybVN1Ym1pdHRlZCA9IFwiT3JkZXIgTG9va3VwIEZvcm0gU3VibWl0dGVkXCIsXG4gICAgU2VhcmNoQ29tcG9uZW50VmlzaWJsZSA9IFwiU2VhcmNoIENvbXBvbmVudCBWaXNpYmxlXCIsXG4gICAgU2VhcmNoWmVyb1N0YXRlU3VnZ2VzdGlvbkNsaWNrZWQgPSBcIlNlYXJjaCBaZXJvIFN0YXRlIFN1Z2dlc3Rpb24gQ2xpY2tlZFwiLC8vIFRoaXMgaXMgdGhlIHNjcm9sbGluZyBsaXN0IG9mIHN1Z2dlc3Rpb24gYnV0dG9ucyBpbiBnbG9iYWwgc2VhcmNoXG4gICAgU2VhcmNoSW5wdXRTdGFydGVkID0gXCJTZWFyY2ggSW5wdXQgU3RhcnRlZFwiLFxuICAgIFNlYXJjaFF1ZXJ5U3VibWl0dGVkID0gXCJTZWFyY2ggUXVlcnkgU3VibWl0dGVkXCIsXG4gICAgU2VhcmNoUmVzdWx0c1ZpZXdlZCA9IFwiU2VhcmNoIFJlc3VsdHMgVmlld2VkXCIsXG4gICAgU2VhcmNoVGltZVRvRmlyc3RDbGljayA9IFwiU2VhcmNoIFRpbWUgdG8gRmlyc3QgQ2xpY2tcIixcbiAgICBTZWFyY2haZXJvUmVzdWx0c1JhdGUgPSBcIlNlYXJjaCBaZXJvIFJlc3VsdHMgUmF0ZVwiLFxuICAgIFNlYXJjaEZpbHRlckNsaWNrZWQgPSBcIlNlYXJjaCBGaWx0ZXIgQ2xpY2tlZFwiLFxuICAgIFNlYXJjaFNvcnRDbGlja2VkID0gXCJTZWFyY2ggU29ydCBDbGlja2VkXCJcbn1cbmludGVyZmFjZSBUcmFja0V2ZW50UGFyYW1zIHtcbiAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWU7XG4gICAgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGV2ZW50R3JvdXBzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcz86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgQW1wbGl0dWRlQ29udGV4dFR5cGUge1xuICAgIHRyYWNrRXZlbnQ6IChwYXJhbXM6IFRyYWNrRXZlbnRQYXJhbXMpID0+IFByb21pc2U8dm9pZD47XG4gICAgaXNSZWFkeTogYm9vbGVhbjtcbiAgICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHM6IChwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWQ7XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBBbXBsaXR1ZGVQcm92aWRlcjogUmVhY3QuRkM8e1xuICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59PjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVzZUFtcGxpdHVkZTogKCkgPT4gQW1wbGl0dWRlQ29udGV4dFR5cGU7XG5leHBvcnQge307XG4iXSwibWFwcGluZ3MiOiI7OztBQUNBLElBQVcseUJBQXlCLENBQUMsSUFBSTtBQUN6QyxJQUFJLG1CQUFtQjtDQUFDO09BQVU7T0FBQTtPQUFBO0NBQUE7QUFDbEMsSUFBSSx1QkFBdUI7Q0FBQztPQUFXO09BQWdCO09BQUE7Q0FBQTtBQUN2RCxJQUFXLG9CQUFvQjtDQUFDO09BQVcsTUFBTTtPQUFhLE1BQUE7Q0FBQTtBQUM5RCxJQUFXLGVBQWUsQ0FBQyxXQUFXLHFCQUFhIn0=
@@ -0,0 +1,52 @@
1
+ import React from "react";
2
+
3
+ //#region src/contexts/amplitudeContext/amplitudeContext.d.ts
4
+ declare enum SpiffyMetricsEventName {
5
+ BundleLoaded = "Bundle Loaded",
6
+ ChatLiveAgentBtnClick = "Chat Live Agent Btn Click",
7
+ ChatFloatingButtonVisible = "Chat Floating Button Visible",
8
+ ChatComponentVisible = "Chat Component Visible",
9
+ ChatComponentExpanded = "Chat Component Expanded",
10
+ ChatComponentCollapsed = "Chat Component Collapsed",
11
+ ChatUserMessageInput = "Chat User Message Input",
12
+ ChatSuggestionClicked = "Chat Suggestion Clicked",
13
+ ChatAssistantResponse = "Chat Assistant Response",
14
+ ProductCardClicked = "Product Card Clicked",
15
+ ProductReviewCardClicked = "Product Review Card Clicked",
16
+ AddToCartClicked = "Add to Cart Clicked",
17
+ PromptCardClicked = "Prompt Card Clicked",
18
+ SupportedEvent = "Supported Event",
19
+ SearchBackToResponseClicked = "Search Back to Response Clicked",
20
+ PerformanceMetrics = "Performance Metrics",
21
+ SearchBarClicked = "Search Bar Clicked",
22
+ OrderLookupStarted = "Order Lookup Started",
23
+ OrderLookupFormSubmitted = "Order Lookup Form Submitted",
24
+ SearchComponentVisible = "Search Component Visible",
25
+ SearchZeroStateSuggestionClicked = "Search Zero State Suggestion Clicked",
26
+ // This is the scrolling list of suggestion buttons in global search
27
+ SearchInputStarted = "Search Input Started",
28
+ SearchQuerySubmitted = "Search Query Submitted",
29
+ SearchResultsViewed = "Search Results Viewed",
30
+ SearchTimeToFirstClick = "Search Time to First Click",
31
+ SearchZeroResultsRate = "Search Zero Results Rate",
32
+ SearchFilterClicked = "Search Filter Clicked",
33
+ SearchSortClicked = "Search Sort Clicked",
34
+ }
35
+ interface TrackEventParams {
36
+ eventName: SpiffyMetricsEventName;
37
+ eventProps?: Record<string, unknown>;
38
+ eventGroups?: Record<string, unknown>;
39
+ alsoSendToGoogleAnalytics?: boolean;
40
+ }
41
+ interface AmplitudeContextType {
42
+ trackEvent: (params: TrackEventParams) => Promise<void>;
43
+ isReady: boolean;
44
+ setSupplementalDefaultProps: (props: Record<string, unknown>) => void;
45
+ }
46
+ declare const AmplitudeProvider: React.FC<{
47
+ children: React.ReactNode;
48
+ }>;
49
+ declare const useAmplitude: () => AmplitudeContextType;
50
+ //#endregion
51
+ export { AmplitudeProvider, SpiffyMetricsEventName, useAmplitude };
52
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlQ29udGV4dC1CZlJERzVDWC5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgZGVjbGFyZSBlbnVtIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUge1xuICAgIEJ1bmRsZUxvYWRlZCA9IFwiQnVuZGxlIExvYWRlZFwiLFxuICAgIENoYXRMaXZlQWdlbnRCdG5DbGljayA9IFwiQ2hhdCBMaXZlIEFnZW50IEJ0biBDbGlja1wiLFxuICAgIENoYXRGbG9hdGluZ0J1dHRvblZpc2libGUgPSBcIkNoYXQgRmxvYXRpbmcgQnV0dG9uIFZpc2libGVcIixcbiAgICBDaGF0Q29tcG9uZW50VmlzaWJsZSA9IFwiQ2hhdCBDb21wb25lbnQgVmlzaWJsZVwiLFxuICAgIENoYXRDb21wb25lbnRFeHBhbmRlZCA9IFwiQ2hhdCBDb21wb25lbnQgRXhwYW5kZWRcIixcbiAgICBDaGF0Q29tcG9uZW50Q29sbGFwc2VkID0gXCJDaGF0IENvbXBvbmVudCBDb2xsYXBzZWRcIixcbiAgICBDaGF0VXNlck1lc3NhZ2VJbnB1dCA9IFwiQ2hhdCBVc2VyIE1lc3NhZ2UgSW5wdXRcIixcbiAgICBDaGF0U3VnZ2VzdGlvbkNsaWNrZWQgPSBcIkNoYXQgU3VnZ2VzdGlvbiBDbGlja2VkXCIsXG4gICAgQ2hhdEFzc2lzdGFudFJlc3BvbnNlID0gXCJDaGF0IEFzc2lzdGFudCBSZXNwb25zZVwiLFxuICAgIFByb2R1Y3RDYXJkQ2xpY2tlZCA9IFwiUHJvZHVjdCBDYXJkIENsaWNrZWRcIixcbiAgICBQcm9kdWN0UmV2aWV3Q2FyZENsaWNrZWQgPSBcIlByb2R1Y3QgUmV2aWV3IENhcmQgQ2xpY2tlZFwiLFxuICAgIEFkZFRvQ2FydENsaWNrZWQgPSBcIkFkZCB0byBDYXJ0IENsaWNrZWRcIixcbiAgICBQcm9tcHRDYXJkQ2xpY2tlZCA9IFwiUHJvbXB0IENhcmQgQ2xpY2tlZFwiLFxuICAgIFN1cHBvcnRlZEV2ZW50ID0gXCJTdXBwb3J0ZWQgRXZlbnRcIixcbiAgICBTZWFyY2hCYWNrVG9SZXNwb25zZUNsaWNrZWQgPSBcIlNlYXJjaCBCYWNrIHRvIFJlc3BvbnNlIENsaWNrZWRcIixcbiAgICBQZXJmb3JtYW5jZU1ldHJpY3MgPSBcIlBlcmZvcm1hbmNlIE1ldHJpY3NcIixcbiAgICBTZWFyY2hCYXJDbGlja2VkID0gXCJTZWFyY2ggQmFyIENsaWNrZWRcIixcbiAgICBPcmRlckxvb2t1cFN0YXJ0ZWQgPSBcIk9yZGVyIExvb2t1cCBTdGFydGVkXCIsXG4gICAgT3JkZXJMb29rdXBGb3JtU3VibWl0dGVkID0gXCJPcmRlciBMb29rdXAgRm9ybSBTdWJtaXR0ZWRcIixcbiAgICBTZWFyY2hDb21wb25lbnRWaXNpYmxlID0gXCJTZWFyY2ggQ29tcG9uZW50IFZpc2libGVcIixcbiAgICBTZWFyY2haZXJvU3RhdGVTdWdnZXN0aW9uQ2xpY2tlZCA9IFwiU2VhcmNoIFplcm8gU3RhdGUgU3VnZ2VzdGlvbiBDbGlja2VkXCIsLy8gVGhpcyBpcyB0aGUgc2Nyb2xsaW5nIGxpc3Qgb2Ygc3VnZ2VzdGlvbiBidXR0b25zIGluIGdsb2JhbCBzZWFyY2hcbiAgICBTZWFyY2hJbnB1dFN0YXJ0ZWQgPSBcIlNlYXJjaCBJbnB1dCBTdGFydGVkXCIsXG4gICAgU2VhcmNoUXVlcnlTdWJtaXR0ZWQgPSBcIlNlYXJjaCBRdWVyeSBTdWJtaXR0ZWRcIixcbiAgICBTZWFyY2hSZXN1bHRzVmlld2VkID0gXCJTZWFyY2ggUmVzdWx0cyBWaWV3ZWRcIixcbiAgICBTZWFyY2hUaW1lVG9GaXJzdENsaWNrID0gXCJTZWFyY2ggVGltZSB0byBGaXJzdCBDbGlja1wiLFxuICAgIFNlYXJjaFplcm9SZXN1bHRzUmF0ZSA9IFwiU2VhcmNoIFplcm8gUmVzdWx0cyBSYXRlXCIsXG4gICAgU2VhcmNoRmlsdGVyQ2xpY2tlZCA9IFwiU2VhcmNoIEZpbHRlciBDbGlja2VkXCIsXG4gICAgU2VhcmNoU29ydENsaWNrZWQgPSBcIlNlYXJjaCBTb3J0IENsaWNrZWRcIlxufVxuaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZTtcbiAgICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZXZlbnRHcm91cHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzPzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBBbXBsaXR1ZGVDb250ZXh0VHlwZSB7XG4gICAgdHJhY2tFdmVudDogKHBhcmFtczogVHJhY2tFdmVudFBhcmFtcykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICBpc1JlYWR5OiBib29sZWFuO1xuICAgIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wczogKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gdm9pZDtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IEFtcGxpdHVkZVByb3ZpZGVyOiBSZWFjdC5GQzx7XG4gICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlQW1wbGl0dWRlOiAoKSA9PiBBbXBsaXR1ZGVDb250ZXh0VHlwZTtcbmV4cG9ydCB7fTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBVyx5QkFBeUIsQ0FBQyxJQUFJO0FBQ3pDLElBQUksbUJBQW1CO0NBQUM7T0FBVTtPQUFBO09BQUE7Q0FBQTtBQUNsQyxJQUFJLHVCQUF1QjtDQUFDO09BQVc7T0FBZ0I7T0FBQTtDQUFBO0FBQ3ZELElBQVcsb0JBQW9CO0NBQUM7T0FBVyxNQUFNO09BQWEsTUFBQTtDQUFBO0FBQzlELElBQVcsZUFBZSxDQUFDLFdBQVcscUJBQWEifQ==
@@ -0,0 +1,239 @@
1
+ const require_chunk = require('./chunk-CUT6urMc.cjs');
2
+ const require_utils = require('./utils-Cavu4XiM.cjs');
3
+ const require_logger = require('./logger-Cp7J4YJT.cjs');
4
+ let __spiffy_ai_commerce_api_client = require("@spiffy-ai/commerce-api-client");
5
+ __spiffy_ai_commerce_api_client = require_chunk.__toESM(__spiffy_ai_commerce_api_client);
6
+
7
+ //#region src/application/models/guards/api/isApiPDPEventAttributes.ts
8
+ const isApiPDPAttributes = (data) => {
9
+ if (data == null || typeof data !== "object") return false;
10
+ if (!("product_id" in data) || typeof data.product_id !== "string") return false;
11
+ if ("parent_product_id" in data && typeof data.parent_product_id !== "string") return false;
12
+ if ("url" in data && data.url != null && typeof data.url !== "string") return false;
13
+ return true;
14
+ };
15
+
16
+ //#endregion
17
+ //#region src/application/models/guards/api/isApiQueryTypedEventAttributes.ts
18
+ const isApiQueryTypedAttributes = (data) => data != null && typeof data === "object" && "query" in data && typeof data.query === "string";
19
+
20
+ //#endregion
21
+ //#region src/application/models/guards/api/isApiResponse.ts
22
+ const isApiResponse = (data) => {
23
+ if (data == null || typeof data !== "object") {
24
+ require_logger.logger_default.logError("isApiResponse: data is null or not an object", void 0, { data });
25
+ return false;
26
+ }
27
+ if (!require_utils.hasPropertyOfType(data, "id", "string")) {
28
+ require_logger.logger_default.logError("isApiResponse: id is not a string", void 0, { data });
29
+ return false;
30
+ }
31
+ if (!require_utils.hasPropertyOfType(data, "category", "string") || !Object.values(__spiffy_ai_commerce_api_client.ResponseCategory).includes(data.category)) {
32
+ require_logger.logger_default.logError("isApiResponse: category is not a string or not a valid response category", void 0, { data });
33
+ return false;
34
+ }
35
+ if (!require_utils.hasPropertyOfType(data, "created_at", "string")) {
36
+ require_logger.logger_default.logError("isApiResponse: created_at is not a string", void 0, { data });
37
+ return false;
38
+ }
39
+ if (!require_utils.hasPropertyOfType(data, "attributes", "object", true)) {
40
+ require_logger.logger_default.logError("isApiResponse: attributes is not an object", void 0, { data });
41
+ return false;
42
+ }
43
+ return true;
44
+ };
45
+
46
+ //#endregion
47
+ //#region src/application/models/guards/api/isApiProductResponseAttributes.ts
48
+ const isApiProductResponseAttributes = (attributes) => {
49
+ if (attributes == null || typeof attributes !== "object") {
50
+ require_logger.logger_default.logError("isApiProductResponseAttributes: attributes is null or not an object", void 0, { attributes });
51
+ return false;
52
+ }
53
+ if (!require_utils.hasPropertyOfType(attributes, "description", "string", true)) {
54
+ require_logger.logger_default.logError("isApiProductResponseAttributes: description is not a string", void 0, { attributes });
55
+ return false;
56
+ }
57
+ if (!require_utils.hasPropertyOfType(attributes, "image_url", "string", true)) {
58
+ require_logger.logger_default.logError("isApiProductResponseAttributes: image_url is not a string", void 0, { attributes });
59
+ return false;
60
+ }
61
+ if (!require_utils.hasPropertyOfType(attributes, "title", "string")) {
62
+ require_logger.logger_default.logError("isApiProductResponseAttributes: title is not a string", void 0, { attributes });
63
+ return false;
64
+ }
65
+ if (!require_utils.hasPropertyOfType(attributes, "url", "string")) {
66
+ require_logger.logger_default.logError("isApiProductResponseAttributes: url is not a string", void 0, { attributes });
67
+ return false;
68
+ }
69
+ if (!require_utils.hasPropertyOfType(attributes, "original_price", "number", true)) {
70
+ require_logger.logger_default.logError("isApiProductResponseAttributes: original_price is not a number", void 0, { attributes });
71
+ return false;
72
+ }
73
+ if (!require_utils.hasPropertyOfType(attributes, "sale_price", "number", true)) {
74
+ require_logger.logger_default.logError("isApiProductResponseAttributes: sale_price is not a number", void 0, { attributes });
75
+ return false;
76
+ }
77
+ if (!require_utils.hasPropertyOfType(attributes, "average_rating", "number", true)) {
78
+ require_logger.logger_default.logError("isApiProductResponseAttributes: average_rating is not a number", void 0, { attributes });
79
+ return false;
80
+ }
81
+ if (!require_utils.hasPropertyOfType(attributes, "number_reviews", "number", true)) {
82
+ require_logger.logger_default.logError("isApiProductResponseAttributes: number_reviews is not a number", void 0, { attributes });
83
+ return false;
84
+ }
85
+ if (!require_utils.hasPropertyOfType(attributes, "metadata", "array", true)) {
86
+ require_logger.logger_default.logError("isApiProductResponseAttributes: metadata is not an array", void 0, { attributes });
87
+ return false;
88
+ }
89
+ return true;
90
+ };
91
+
92
+ //#endregion
93
+ //#region src/application/models/guards/api/isApiReviewRichInformation.ts
94
+ const isApiReviewRichInformation = (richInfo) => {
95
+ if (richInfo == null || typeof richInfo !== "object") return false;
96
+ if ("cons" in richInfo && (!Array.isArray(richInfo.cons) || richInfo.cons.some((con) => typeof con !== "string"))) return false;
97
+ if ("pros" in richInfo && (!Array.isArray(richInfo.pros) || richInfo.pros.some((pro) => typeof pro !== "string"))) return false;
98
+ if ("review_date" in richInfo && typeof richInfo.review_date !== "string") return false;
99
+ if ("reviewer_title" in richInfo && typeof richInfo.reviewer_title !== "string") return false;
100
+ if ("product_familiarity" in richInfo && typeof richInfo.product_familiarity !== "string") return false;
101
+ return true;
102
+ };
103
+
104
+ //#endregion
105
+ //#region src/application/models/guards/api/isApiReviewResponseAttributes.ts
106
+ const isApiReviewResponseAttributes = (obj) => {
107
+ if (obj == null || typeof obj !== "object") return false;
108
+ if ("title" in obj && obj.title != null && typeof obj.title !== "string") return false;
109
+ if ("review" in obj && typeof obj.review !== "string") return false;
110
+ if ("reviewer" in obj && typeof obj.reviewer !== "string") return false;
111
+ if ("stars" in obj && typeof obj.stars !== "number") return false;
112
+ if ("rich_information" in obj && !isApiReviewRichInformation(obj.rich_information)) return false;
113
+ return true;
114
+ };
115
+
116
+ //#endregion
117
+ //#region src/application/models/guards/api/isApiSearchEventAttributes.ts
118
+ const isApiSearchAttributes = (data) => {
119
+ if (data == null || typeof data !== "object") return false;
120
+ if (!("search_term" in data) || typeof data.search_term !== "string") return false;
121
+ if ("selected_filters" in data && !Array.isArray(data.selected_filters)) return false;
122
+ if (!!data.search_term) return true;
123
+ if (!("search_results" in data) || !Array.isArray(data.search_results) || !data.search_results.every((v) => typeof v === "string")) return false;
124
+ return true;
125
+ };
126
+
127
+ //#endregion
128
+ //#region src/application/models/guards/api/isApiSuggestion.ts
129
+ const isSuggestion = (data) => {
130
+ if (data == null || typeof data !== "object") return false;
131
+ if (!("id" in data) || typeof data.id !== "string") return false;
132
+ if (!("category" in data) || typeof data.category !== "string" || !Object.values(__spiffy_ai_commerce_api_client.SuggestionCategory).includes(data.category)) return false;
133
+ if (!("created_at" in data) || typeof data.created_at !== "string") return false;
134
+ if (!("content" in data) || typeof data.content !== "string") return false;
135
+ if ("is_answer" in data && data.is_answer != null && typeof data.is_answer !== "boolean") return false;
136
+ return true;
137
+ };
138
+
139
+ //#endregion
140
+ //#region src/application/models/guards/api/isApiSuggestionClickedEventAttributes.ts
141
+ const isApiSuggestionClickedAttributes = (data) => data != null && typeof data === "object" && "suggestion_id" in data && typeof data.suggestion_id === "string";
142
+
143
+ //#endregion
144
+ //#region src/application/models/guards/api/isApiTextResponseAttributes.ts
145
+ const isApiTextResponseAttributes = (attributes) => typeof attributes === "object" && attributes != null && "content" in attributes && typeof attributes.content === "string";
146
+
147
+ //#endregion
148
+ //#region src/application/models/guards/api/isApiUserEvent.ts
149
+ const isApiUserEvent = (data) => {
150
+ if (data == null || typeof data !== "object") return false;
151
+ if (!("event_id" in data) || typeof data.event_id !== "string") return false;
152
+ if (!("created_at" in data) || typeof data.created_at !== "string") return false;
153
+ if (!("category" in data) || typeof data.category !== "string" || !Object.values(__spiffy_ai_commerce_api_client.UserEventCategory).includes(data.category)) return false;
154
+ return true;
155
+ };
156
+
157
+ //#endregion
158
+ //#region src/application/models/guards/api/isApiProductSearchAttributes.ts
159
+ const isApiProductSearchResponseAttributes = (attributes) => {
160
+ if (attributes == null || typeof attributes !== "object") return false;
161
+ if ("generated_query" in attributes && typeof attributes.generated_query !== "string") return false;
162
+ if ("product_count" in attributes && attributes.product_count != null && typeof attributes.product_count !== "number") return false;
163
+ return true;
164
+ };
165
+
166
+ //#endregion
167
+ Object.defineProperty(exports, 'isApiPDPAttributes', {
168
+ enumerable: true,
169
+ get: function () {
170
+ return isApiPDPAttributes;
171
+ }
172
+ });
173
+ Object.defineProperty(exports, 'isApiProductResponseAttributes', {
174
+ enumerable: true,
175
+ get: function () {
176
+ return isApiProductResponseAttributes;
177
+ }
178
+ });
179
+ Object.defineProperty(exports, 'isApiProductSearchResponseAttributes', {
180
+ enumerable: true,
181
+ get: function () {
182
+ return isApiProductSearchResponseAttributes;
183
+ }
184
+ });
185
+ Object.defineProperty(exports, 'isApiQueryTypedAttributes', {
186
+ enumerable: true,
187
+ get: function () {
188
+ return isApiQueryTypedAttributes;
189
+ }
190
+ });
191
+ Object.defineProperty(exports, 'isApiResponse', {
192
+ enumerable: true,
193
+ get: function () {
194
+ return isApiResponse;
195
+ }
196
+ });
197
+ Object.defineProperty(exports, 'isApiReviewResponseAttributes', {
198
+ enumerable: true,
199
+ get: function () {
200
+ return isApiReviewResponseAttributes;
201
+ }
202
+ });
203
+ Object.defineProperty(exports, 'isApiReviewRichInformation', {
204
+ enumerable: true,
205
+ get: function () {
206
+ return isApiReviewRichInformation;
207
+ }
208
+ });
209
+ Object.defineProperty(exports, 'isApiSearchAttributes', {
210
+ enumerable: true,
211
+ get: function () {
212
+ return isApiSearchAttributes;
213
+ }
214
+ });
215
+ Object.defineProperty(exports, 'isApiSuggestionClickedAttributes', {
216
+ enumerable: true,
217
+ get: function () {
218
+ return isApiSuggestionClickedAttributes;
219
+ }
220
+ });
221
+ Object.defineProperty(exports, 'isApiTextResponseAttributes', {
222
+ enumerable: true,
223
+ get: function () {
224
+ return isApiTextResponseAttributes;
225
+ }
226
+ });
227
+ Object.defineProperty(exports, 'isApiUserEvent', {
228
+ enumerable: true,
229
+ get: function () {
230
+ return isApiUserEvent;
231
+ }
232
+ });
233
+ Object.defineProperty(exports, 'isSuggestion', {
234
+ enumerable: true,
235
+ get: function () {
236
+ return isSuggestion;
237
+ }
238
+ });
239
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLUJjM19qdWxaLmNqcyIsIm5hbWVzIjpbImhhc1Byb3BlcnR5T2ZUeXBlIiwiUmVzcG9uc2VDYXRlZ29yeSIsImhhc1Byb3BlcnR5T2ZUeXBlIiwiU3VnZ2VzdGlvbkNhdGVnb3J5IiwiVXNlckV2ZW50Q2F0ZWdvcnkiXSwic291cmNlcyI6WyIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlQRFBFdmVudEF0dHJpYnV0ZXMudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlRdWVyeVR5cGVkRXZlbnRBdHRyaWJ1dGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUmVzcG9uc2UudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUmV2aWV3UmljaEluZm9ybWF0aW9uLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUmV2aWV3UmVzcG9uc2VBdHRyaWJ1dGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpU2VhcmNoRXZlbnRBdHRyaWJ1dGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpU3VnZ2VzdGlvbi50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVN1Z2dlc3Rpb25DbGlja2VkRXZlbnRBdHRyaWJ1dGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpVGV4dFJlc3BvbnNlQXR0cmlidXRlcy50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVVzZXJFdmVudC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVByb2R1Y3RTZWFyY2hBdHRyaWJ1dGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBEUEF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlQRFBBdHRyaWJ1dGVzID0gKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFBEUEF0dHJpYnV0ZXMgPT4ge1xuICBpZiAoZGF0YSA9PSBudWxsIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdwcm9kdWN0X2lkJyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5wcm9kdWN0X2lkICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgncGFyZW50X3Byb2R1Y3RfaWQnIGluIGRhdGEgJiYgdHlwZW9mIGRhdGEucGFyZW50X3Byb2R1Y3RfaWQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCd1cmwnIGluIGRhdGEgJiYgZGF0YS51cmwgIT0gbnVsbCAmJiB0eXBlb2YgZGF0YS51cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgUXVlcnlUeXBlZEF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlRdWVyeVR5cGVkQXR0cmlidXRlcyA9IChkYXRhOiB1bmtub3duKTogZGF0YSBpcyBRdWVyeVR5cGVkQXR0cmlidXRlcyA9PlxuICBkYXRhICE9IG51bGwgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICdxdWVyeScgaW4gZGF0YSAmJiB0eXBlb2YgZGF0YS5xdWVyeSA9PT0gJ3N0cmluZyc7XG4iLCJpbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBSZXNwb25zZSwgUmVzcG9uc2VDYXRlZ29yeSB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBoYXNQcm9wZXJ0eU9mVHlwZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IGlzQXBpUmVzcG9uc2UgPSAoZGF0YTogdW5rbm93bik6IGRhdGEgaXMgUmVzcG9uc2UgPT4ge1xuICBpZiAoZGF0YSA9PSBudWxsIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlSZXNwb25zZTogZGF0YSBpcyBudWxsIG9yIG5vdCBhbiBvYmplY3QnLCB1bmRlZmluZWQsIHsgZGF0YSB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGRhdGEsICdpZCcsICdzdHJpbmcnKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlSZXNwb25zZTogaWQgaXMgbm90IGEgc3RyaW5nJywgdW5kZWZpbmVkLCB7IGRhdGEgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICFoYXNQcm9wZXJ0eU9mVHlwZShkYXRhLCAnY2F0ZWdvcnknLCAnc3RyaW5nJykgfHxcbiAgICAhT2JqZWN0LnZhbHVlcyhSZXNwb25zZUNhdGVnb3J5KS5pbmNsdWRlcyhkYXRhLmNhdGVnb3J5IGFzIFJlc3BvbnNlQ2F0ZWdvcnkpXG4gICkge1xuICAgIExvZ2dlci5sb2dFcnJvcihcbiAgICAgICdpc0FwaVJlc3BvbnNlOiBjYXRlZ29yeSBpcyBub3QgYSBzdHJpbmcgb3Igbm90IGEgdmFsaWQgcmVzcG9uc2UgY2F0ZWdvcnknLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgeyBkYXRhIH0sXG4gICAgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGRhdGEsICdjcmVhdGVkX2F0JywgJ3N0cmluZycpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVJlc3BvbnNlOiBjcmVhdGVkX2F0IGlzIG5vdCBhIHN0cmluZycsIHVuZGVmaW5lZCwgeyBkYXRhIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoZGF0YSwgJ2F0dHJpYnV0ZXMnLCAnb2JqZWN0JywgdHJ1ZSkpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUmVzcG9uc2U6IGF0dHJpYnV0ZXMgaXMgbm90IGFuIG9iamVjdCcsIHVuZGVmaW5lZCwgeyBkYXRhIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiIsImltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IFJlc3BvbnNlUHJvZHVjdEF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgaGFzUHJvcGVydHlPZlR5cGUgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXMgPSAoXG4gIGF0dHJpYnV0ZXM6IHVua25vd24sXG4pOiBhdHRyaWJ1dGVzIGlzIFJlc3BvbnNlUHJvZHVjdEF0dHJpYnV0ZXMgPT4ge1xuICBpZiAoYXR0cmlidXRlcyA9PSBudWxsIHx8IHR5cGVvZiBhdHRyaWJ1dGVzICE9PSAnb2JqZWN0Jykge1xuICAgIExvZ2dlci5sb2dFcnJvcihcbiAgICAgICdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXMgaXMgbnVsbCBvciBub3QgYW4gb2JqZWN0JyxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHtcbiAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdkZXNjcmlwdGlvbicsICdzdHJpbmcnLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBkZXNjcmlwdGlvbiBpcyBub3QgYSBzdHJpbmcnLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICFoYXNQcm9wZXJ0eU9mVHlwZShhdHRyaWJ1dGVzLCAnaW1hZ2VfdXJsJywgJ3N0cmluZycsIHRydWUpXG4gICkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBpbWFnZV91cmwgaXMgbm90IGEgc3RyaW5nJywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ3RpdGxlJywgJ3N0cmluZycpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IHRpdGxlIGlzIG5vdCBhIHN0cmluZycsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICd1cmwnLCAnc3RyaW5nJykpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlczogdXJsIGlzIG5vdCBhIHN0cmluZycsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdvcmlnaW5hbF9wcmljZScsICdudW1iZXInLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBvcmlnaW5hbF9wcmljZSBpcyBub3QgYSBudW1iZXInLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFoYXNQcm9wZXJ0eU9mVHlwZShhdHRyaWJ1dGVzLCAnc2FsZV9wcmljZScsICdudW1iZXInLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBzYWxlX3ByaWNlIGlzIG5vdCBhIG51bWJlcicsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdhdmVyYWdlX3JhdGluZycsICdudW1iZXInLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBhdmVyYWdlX3JhdGluZyBpcyBub3QgYSBudW1iZXInLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFoYXNQcm9wZXJ0eU9mVHlwZShhdHRyaWJ1dGVzLCAnbnVtYmVyX3Jldmlld3MnLCAnbnVtYmVyJywgdHJ1ZSkpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlczogbnVtYmVyX3Jldmlld3MgaXMgbm90IGEgbnVtYmVyJywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ21ldGFkYXRhJywgJ2FycmF5JywgdHJ1ZSkpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlczogbWV0YWRhdGEgaXMgbm90IGFuIGFycmF5JywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiIsImltcG9ydCB7IEFwaVJldmlld1JpY2hJbmZvcm1hdGlvbiB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3Jlc3BvbnNlR2VuZXJpY3MnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlSZXZpZXdSaWNoSW5mb3JtYXRpb24gPSAoXG4gIHJpY2hJbmZvOiB1bmtub3duLFxuKTogcmljaEluZm8gaXMgQXBpUmV2aWV3UmljaEluZm9ybWF0aW9uID0+IHtcbiAgaWYgKHJpY2hJbmZvID09IG51bGwgfHwgdHlwZW9mIHJpY2hJbmZvICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChcbiAgICAnY29ucycgaW4gcmljaEluZm8gJiZcbiAgICAoIUFycmF5LmlzQXJyYXkocmljaEluZm8uY29ucykgfHwgcmljaEluZm8uY29ucy5zb21lKChjb24pID0+IHR5cGVvZiBjb24gIT09ICdzdHJpbmcnKSlcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICdwcm9zJyBpbiByaWNoSW5mbyAmJlxuICAgICghQXJyYXkuaXNBcnJheShyaWNoSW5mby5wcm9zKSB8fCByaWNoSW5mby5wcm9zLnNvbWUoKHBybykgPT4gdHlwZW9mIHBybyAhPT0gJ3N0cmluZycpKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3Jldmlld19kYXRlJyBpbiByaWNoSW5mbyAmJiB0eXBlb2YgcmljaEluZm8ucmV2aWV3X2RhdGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdyZXZpZXdlcl90aXRsZScgaW4gcmljaEluZm8gJiYgdHlwZW9mIHJpY2hJbmZvLnJldmlld2VyX3RpdGxlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgncHJvZHVjdF9mYW1pbGlhcml0eScgaW4gcmljaEluZm8gJiYgdHlwZW9mIHJpY2hJbmZvLnByb2R1Y3RfZmFtaWxpYXJpdHkgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgQXBpUmV2aWV3UmVzcG9uc2VBdHRyaWJ1dGVzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvcmVzcG9uc2VHZW5lcmljcyc7XG5pbXBvcnQgeyBpc0FwaVJldmlld1JpY2hJbmZvcm1hdGlvbiB9IGZyb20gJy4vaXNBcGlSZXZpZXdSaWNoSW5mb3JtYXRpb24nO1xuXG5leHBvcnQgY29uc3QgaXNBcGlSZXZpZXdSZXNwb25zZUF0dHJpYnV0ZXMgPSAob2JqOiB1bmtub3duKTogb2JqIGlzIEFwaVJldmlld1Jlc3BvbnNlQXR0cmlidXRlcyA9PiB7XG4gIGlmIChvYmogPT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgndGl0bGUnIGluIG9iaiAmJiBvYmoudGl0bGUgIT0gbnVsbCAmJiB0eXBlb2Ygb2JqLnRpdGxlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgncmV2aWV3JyBpbiBvYmogJiYgdHlwZW9mIG9iai5yZXZpZXcgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdyZXZpZXdlcicgaW4gb2JqICYmIHR5cGVvZiBvYmoucmV2aWV3ZXIgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdzdGFycycgaW4gb2JqICYmIHR5cGVvZiBvYmouc3RhcnMgIT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdyaWNoX2luZm9ybWF0aW9uJyBpbiBvYmogJiYgIWlzQXBpUmV2aWV3UmljaEluZm9ybWF0aW9uKG9iai5yaWNoX2luZm9ybWF0aW9uKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiIsImltcG9ydCB7IFNlYXJjaEF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlTZWFyY2hBdHRyaWJ1dGVzID0gKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFNlYXJjaEF0dHJpYnV0ZXMgPT4ge1xuICBpZiAoZGF0YSA9PSBudWxsIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdzZWFyY2hfdGVybScgaW4gZGF0YSkgfHwgdHlwZW9mIGRhdGEuc2VhcmNoX3Rlcm0gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICgnc2VsZWN0ZWRfZmlsdGVycycgaW4gZGF0YSAmJiAhQXJyYXkuaXNBcnJheShkYXRhLnNlbGVjdGVkX2ZpbHRlcnMpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEhZGF0YS5zZWFyY2hfdGVybSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKFxuICAgICEoJ3NlYXJjaF9yZXN1bHRzJyBpbiBkYXRhKSB8fFxuICAgICFBcnJheS5pc0FycmF5KGRhdGEuc2VhcmNoX3Jlc3VsdHMpIHx8XG4gICAgIWRhdGEuc2VhcmNoX3Jlc3VsdHMuZXZlcnkoKHYpID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJylcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHtcbiAgU3VnZ2VzdGlvbiBhcyBDb21tZXJjZVN1Z2dlc3Rpb24sXG4gIFN1Z2dlc3Rpb25DYXRlZ29yeSxcbn0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcblxuZXhwb3J0IGNvbnN0IGlzU3VnZ2VzdGlvbiA9IChkYXRhOiB1bmtub3duKTogZGF0YSBpcyBDb21tZXJjZVN1Z2dlc3Rpb24gPT4ge1xuICBpZiAoZGF0YSA9PSBudWxsIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdpZCcgaW4gZGF0YSkgfHwgdHlwZW9mIGRhdGEuaWQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICEoJ2NhdGVnb3J5JyBpbiBkYXRhKSB8fFxuICAgIHR5cGVvZiBkYXRhLmNhdGVnb3J5ICE9PSAnc3RyaW5nJyB8fFxuICAgICFPYmplY3QudmFsdWVzKFN1Z2dlc3Rpb25DYXRlZ29yeSkuaW5jbHVkZXMoZGF0YS5jYXRlZ29yeSBhcyBTdWdnZXN0aW9uQ2F0ZWdvcnkpXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdjcmVhdGVkX2F0JyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5jcmVhdGVkX2F0ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdjb250ZW50JyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5jb250ZW50ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgnaXNfYW5zd2VyJyBpbiBkYXRhICYmIGRhdGEuaXNfYW5zd2VyICE9IG51bGwgJiYgdHlwZW9mIGRhdGEuaXNfYW5zd2VyICE9PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCJpbXBvcnQgeyBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMgPSAoXG4gIGRhdGE6IHVua25vd24sXG4pOiBkYXRhIGlzIFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyA9PlxuICBkYXRhICE9IG51bGwgJiZcbiAgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmXG4gICdzdWdnZXN0aW9uX2lkJyBpbiBkYXRhICYmXG4gIHR5cGVvZiBkYXRhLnN1Z2dlc3Rpb25faWQgPT09ICdzdHJpbmcnO1xuIiwiaW1wb3J0IHsgQXBpVGV4dFJlc3BvbnNlQXR0cmlidXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3Jlc3BvbnNlR2VuZXJpY3MnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlUZXh0UmVzcG9uc2VBdHRyaWJ1dGVzID0gKFxuICBhdHRyaWJ1dGVzOiB1bmtub3duLFxuKTogYXR0cmlidXRlcyBpcyBBcGlUZXh0UmVzcG9uc2VBdHRyaWJ1dGVzID0+XG4gIHR5cGVvZiBhdHRyaWJ1dGVzID09PSAnb2JqZWN0JyAmJlxuICBhdHRyaWJ1dGVzICE9IG51bGwgJiZcbiAgJ2NvbnRlbnQnIGluIGF0dHJpYnV0ZXMgJiZcbiAgdHlwZW9mIGF0dHJpYnV0ZXMuY29udGVudCA9PT0gJ3N0cmluZyc7XG4iLCJpbXBvcnQgeyBVc2VyRXZlbnQsIFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcblxuZXhwb3J0IGNvbnN0IGlzQXBpVXNlckV2ZW50ID0gKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFVzZXJFdmVudCA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ2V2ZW50X2lkJyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5ldmVudF9pZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoISgnY3JlYXRlZF9hdCcgaW4gZGF0YSkgfHwgdHlwZW9mIGRhdGEuY3JlYXRlZF9hdCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgISgnY2F0ZWdvcnknIGluIGRhdGEpIHx8XG4gICAgdHlwZW9mIGRhdGEuY2F0ZWdvcnkgIT09ICdzdHJpbmcnIHx8XG4gICAgIU9iamVjdC52YWx1ZXMoVXNlckV2ZW50Q2F0ZWdvcnkpLmluY2x1ZGVzKGRhdGEuY2F0ZWdvcnkgYXMgVXNlckV2ZW50Q2F0ZWdvcnkpXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiIsImltcG9ydCB7IFByb2R1Y3RTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlQcm9kdWN0U2VhcmNoUmVzcG9uc2VBdHRyaWJ1dGVzID0gKFxuICBhdHRyaWJ1dGVzOiB1bmtub3duLFxuKTogYXR0cmlidXRlcyBpcyBQcm9kdWN0U2VhcmNoUmVzcG9uc2VBdHRyaWJ1dGVzID0+IHtcbiAgaWYgKGF0dHJpYnV0ZXMgPT0gbnVsbCB8fCB0eXBlb2YgYXR0cmlidXRlcyAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ2dlbmVyYXRlZF9xdWVyeScgaW4gYXR0cmlidXRlcyAmJiB0eXBlb2YgYXR0cmlidXRlcy5nZW5lcmF0ZWRfcXVlcnkgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICdwcm9kdWN0X2NvdW50JyBpbiBhdHRyaWJ1dGVzICYmXG4gICAgYXR0cmlidXRlcy5wcm9kdWN0X2NvdW50ICE9IG51bGwgJiZcbiAgICB0eXBlb2YgYXR0cmlidXRlcy5wcm9kdWN0X2NvdW50ICE9PSAnbnVtYmVyJ1xuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQSxNQUFhLHNCQUFzQixTQUF5QztBQUMxRSxLQUFJLFFBQVEsUUFBUSxPQUFPLFNBQVMsU0FDbEMsUUFBTztBQUdULEtBQUksRUFBRSxnQkFBZ0IsU0FBUyxPQUFPLEtBQUssZUFBZSxTQUN4RCxRQUFPO0FBR1QsS0FBSSx1QkFBdUIsUUFBUSxPQUFPLEtBQUssc0JBQXNCLFNBQ25FLFFBQU87QUFHVCxLQUFJLFNBQVMsUUFBUSxLQUFLLE9BQU8sUUFBUSxPQUFPLEtBQUssUUFBUSxTQUMzRCxRQUFPO0FBR1QsUUFBTzs7Ozs7QUNqQlQsTUFBYSw2QkFBNkIsU0FDeEMsUUFBUSxRQUFRLE9BQU8sU0FBUyxZQUFZLFdBQVcsUUFBUSxPQUFPLEtBQUssVUFBVTs7OztBQ0N2RixNQUFhLGlCQUFpQixTQUFvQztBQUNoRSxLQUFJLFFBQVEsUUFBUSxPQUFPLFNBQVMsVUFBVTtBQUM1QyxnQ0FBTyxTQUFTLGdEQUFnRCxRQUFXLEVBQUUsTUFBTSxDQUFDO0FBQ3BGLFNBQU87O0FBR1QsS0FBSSxDQUFDQSxnQ0FBa0IsTUFBTSxNQUFNLFNBQVMsRUFBRTtBQUM1QyxnQ0FBTyxTQUFTLHFDQUFxQyxRQUFXLEVBQUUsTUFBTSxDQUFDO0FBQ3pFLFNBQU87O0FBR1QsS0FDRSxDQUFDQSxnQ0FBa0IsTUFBTSxZQUFZLFNBQVMsSUFDOUMsQ0FBQyxPQUFPLE9BQU9DLGlEQUFpQixDQUFDLFNBQVMsS0FBSyxTQUE2QixFQUM1RTtBQUNBLGdDQUFPLFNBQ0wsNEVBQ0EsUUFDQSxFQUFFLE1B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