@envive-ai/react-hooks 0.2.7-arthur-1 → 0.2.7-arthur-2

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 (176) hide show
  1. package/dist/{NewOrgConfig-yptI2imS.js → NewOrgConfig-BVByiYPp.js} +2 -2
  2. package/dist/{NewOrgConfig-Bo1seKr6.cjs → NewOrgConfig-CInGtTV6.cjs} +2 -2
  3. package/dist/{SystemSettingsContext-EDpRMMt2.cjs → SystemSettingsContext-150LTxIk.cjs} +2 -2
  4. package/dist/{SystemSettingsContext-BY1BFgAQ.js → SystemSettingsContext-ei5B0dxO.js} +2 -2
  5. package/dist/{TrackComponentVisibleEvent-CgxCqrIt.cjs → TrackComponentVisibleEvent-C7-nnBks.cjs} +2 -2
  6. package/dist/{TrackComponentVisibleEvent-CXhKOwKQ.js → TrackComponentVisibleEvent-CuwSLbug.js} +2 -2
  7. package/dist/amplitudeContext-BBQ1ATA3.js +265 -0
  8. package/dist/amplitudeContext-C-0-DDk3.cjs +287 -0
  9. package/dist/{app-CflxT_xI.js → app-C_Y-57U5.js} +3 -4
  10. package/dist/{app-BbPSHefQ.cjs → app-XEFPotoH.cjs} +3 -4
  11. package/dist/application/utils/index.cjs +8 -8
  12. package/dist/application/utils/index.d.cts +2 -2
  13. package/dist/application/utils/index.d.ts +2 -2
  14. package/dist/application/utils/index.js +8 -8
  15. package/dist/{atomStore-CmZbgQHc.cjs → atomStore-8ppNkJ_n.cjs} +1 -1
  16. package/dist/{atomStore-DEcDhiLp.js → atomStore-BLYJ2ZoQ.js} +1 -1
  17. package/dist/atoms/app/index.cjs +4 -4
  18. package/dist/atoms/app/index.d.cts +7 -7
  19. package/dist/atoms/app/index.d.ts +7 -7
  20. package/dist/atoms/app/index.js +4 -4
  21. package/dist/atoms/atomStore/index.cjs +1 -1
  22. package/dist/atoms/atomStore/index.js +1 -1
  23. package/dist/atoms/chat/index.cjs +9 -9
  24. package/dist/atoms/chat/index.d.cts +26 -26
  25. package/dist/atoms/chat/index.d.ts +27 -27
  26. package/dist/atoms/chat/index.js +9 -9
  27. package/dist/atoms/globalSearch/index.d.cts +5 -5
  28. package/dist/atoms/globalSearch/index.d.ts +6 -6
  29. package/dist/atoms/org/index.cjs +1 -1
  30. package/dist/atoms/org/index.d.cts +16 -16
  31. package/dist/atoms/org/index.d.ts +16 -16
  32. package/dist/atoms/org/index.js +1 -1
  33. package/dist/atoms/search/index.cjs +11 -11
  34. package/dist/atoms/search/index.d.cts +1 -1
  35. package/dist/atoms/search/index.d.ts +1 -1
  36. package/dist/atoms/search/index.js +11 -11
  37. package/dist/atoms/search/utils.d.ts +1 -1
  38. package/dist/{cdnContext-CaDyQ_5p.cjs → cdnContext-Bzqk0s2M.cjs} +2 -2
  39. package/dist/{cdnContext-CtrIlAqX.js → cdnContext-CTC-zBtx.js} +2 -2
  40. package/dist/{chat-BjhQCyW_.js → chat-Bzay7QnI.js} +6 -6
  41. package/dist/{chat-BkPax29G.cjs → chat-Ckd1b_z_.cjs} +6 -6
  42. package/dist/{chatSearch-C3N3iIxu.cjs → chatSearch-Bev4ZI8Z.cjs} +3 -3
  43. package/dist/{chatSearch-BsYlFvpv.js → chatSearch-DNaGtQyx.js} +3 -3
  44. package/dist/{chatState-CXA1vF16.js → chatState-CcCvgmSM.js} +2 -2
  45. package/dist/{chatState-CJ52Ag_7.cjs → chatState-OkYPVghN.cjs} +2 -2
  46. package/dist/{commerce-api-rgj30eEp.js → commerce-api-ml5fkEuk.js} +6 -6
  47. package/dist/{commerce-api-DA1QGGMK.cjs → commerce-api-sQtLuwTh.cjs} +6 -6
  48. package/dist/contexts/amplitudeContext/index.cjs +7 -7
  49. package/dist/contexts/amplitudeContext/index.js +7 -7
  50. package/dist/contexts/cdnContext/index.cjs +3 -3
  51. package/dist/contexts/cdnContext/index.js +3 -3
  52. package/dist/contexts/chatContext/index.cjs +16 -16
  53. package/dist/contexts/chatContext/index.d.cts +2 -2
  54. package/dist/contexts/chatContext/index.d.ts +4 -4
  55. package/dist/contexts/chatContext/index.js +16 -16
  56. package/dist/contexts/enviveConfigContext/index.cjs +3 -3
  57. package/dist/contexts/enviveConfigContext/index.js +3 -3
  58. package/dist/contexts/enviveCssContext/index.cjs +6 -6
  59. package/dist/contexts/enviveCssContext/index.js +6 -6
  60. package/dist/contexts/featureFlagContext/index.cjs +4 -4
  61. package/dist/contexts/featureFlagContext/index.js +4 -4
  62. package/dist/contexts/graphqlContext/index.cjs +3 -3
  63. package/dist/contexts/graphqlContext/index.d.ts +1 -1
  64. package/dist/contexts/graphqlContext/index.js +3 -3
  65. package/dist/contexts/localStorageContext/index.cjs +1 -1
  66. package/dist/contexts/localStorageContext/index.js +1 -1
  67. package/dist/contexts/newOrgConfigContext/index.cjs +5 -5
  68. package/dist/contexts/newOrgConfigContext/index.d.ts +2 -2
  69. package/dist/contexts/newOrgConfigContext/index.js +5 -5
  70. package/dist/contexts/searchContext/index.cjs +10 -10
  71. package/dist/contexts/searchContext/index.js +10 -10
  72. package/dist/contexts/sessionStorageContext/index.cjs +1 -1
  73. package/dist/contexts/sessionStorageContext/index.js +1 -1
  74. package/dist/contexts/shopifyUrlContext/index.cjs +1 -1
  75. package/dist/contexts/shopifyUrlContext/index.js +1 -1
  76. package/dist/contexts/systemSettingsContext/index.cjs +3 -3
  77. package/dist/contexts/systemSettingsContext/index.d.cts +2 -2
  78. package/dist/contexts/systemSettingsContext/index.d.ts +2 -2
  79. package/dist/contexts/systemSettingsContext/index.js +3 -3
  80. package/dist/contexts/userIdentityContext/index.cjs +11 -11
  81. package/dist/contexts/userIdentityContext/index.js +11 -11
  82. package/dist/{enviveConfig-DZBohDpc.js → enviveConfig-DV8F12B9.js} +2 -2
  83. package/dist/{enviveConfig-Dv9-esGV.cjs → enviveConfig-DZHdtLsQ.cjs} +2 -2
  84. package/dist/{enviveConfigContext-DrDjCems.js → enviveConfigContext-BS7aNop5.js} +2 -2
  85. package/dist/{enviveConfigContext-D2OELZDR.cjs → enviveConfigContext-CTcHUIFP.cjs} +2 -2
  86. package/dist/frontendConfig-Cawh5iqv.d.ts +1 -1
  87. package/dist/frontendConfig-iZipB5FG.d.cts +1 -1
  88. package/dist/{graphqlContext-DP8T3-Kd.cjs → graphqlContext-CVbYIftg.cjs} +2 -2
  89. package/dist/{graphqlContext-CXQl0hq2.d.ts → graphqlContext-DgkS-UX1.d.ts} +3 -3
  90. package/dist/{graphqlContext-czH0kIZg.js → graphqlContext-DouNZbYo.js} +2 -2
  91. package/dist/hooks/AmplitudeOperations/index.cjs +9 -9
  92. package/dist/hooks/AmplitudeOperations/index.js +9 -9
  93. package/dist/hooks/AppDetails/index.cjs +7 -7
  94. package/dist/hooks/AppDetails/index.js +7 -7
  95. package/dist/hooks/CdnOperations/index.cjs +3 -3
  96. package/dist/hooks/CdnOperations/index.js +3 -3
  97. package/dist/hooks/ChatToggle/index.cjs +9 -9
  98. package/dist/hooks/ChatToggle/index.js +9 -9
  99. package/dist/hooks/ChatToggleAnalytics/index.cjs +10 -10
  100. package/dist/hooks/ChatToggleAnalytics/index.js +10 -10
  101. package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
  102. package/dist/hooks/GrabAndScroll/index.d.ts +2 -2
  103. package/dist/hooks/GraphQLConfig/index.cjs +4 -4
  104. package/dist/hooks/GraphQLConfig/index.d.ts +1 -1
  105. package/dist/hooks/GraphQLConfig/index.js +4 -4
  106. package/dist/hooks/IdentifyUser/index.cjs +11 -11
  107. package/dist/hooks/IdentifyUser/index.js +11 -11
  108. package/dist/hooks/ImageResolver/index.cjs +2 -2
  109. package/dist/hooks/ImageResolver/index.js +2 -2
  110. package/dist/hooks/LocalStorageOperations/index.cjs +1 -1
  111. package/dist/hooks/LocalStorageOperations/index.js +1 -1
  112. package/dist/hooks/NewOrgConfig/index.cjs +6 -6
  113. package/dist/hooks/NewOrgConfig/index.d.ts +2 -2
  114. package/dist/hooks/NewOrgConfig/index.js +6 -6
  115. package/dist/hooks/Search/index.cjs +28 -1166
  116. package/dist/hooks/Search/index.d.cts +1 -1
  117. package/dist/hooks/Search/index.d.ts +1 -1
  118. package/dist/hooks/Search/index.js +26 -1165
  119. package/dist/hooks/SearchOperations/index.cjs +10 -10
  120. package/dist/hooks/SearchOperations/index.js +10 -10
  121. package/dist/hooks/SessionStorageOperations/index.cjs +1 -1
  122. package/dist/hooks/SessionStorageOperations/index.js +1 -1
  123. package/dist/hooks/ShopifyUrlOperations/index.cjs +1 -1
  124. package/dist/hooks/ShopifyUrlOperations/index.js +1 -1
  125. package/dist/hooks/SystemSettingsContext/index.cjs +4 -4
  126. package/dist/hooks/SystemSettingsContext/index.d.cts +2 -2
  127. package/dist/hooks/SystemSettingsContext/index.d.ts +2 -2
  128. package/dist/hooks/SystemSettingsContext/index.js +4 -4
  129. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +8 -8
  130. package/dist/hooks/TrackComponentVisibleEvent/index.js +8 -8
  131. package/dist/hooks/UpdateAnalyticsProps/index.cjs +7 -7
  132. package/dist/hooks/UpdateAnalyticsProps/index.js +7 -7
  133. package/dist/{index-CUO68KG3.d.ts → index-CMJM-3zV.d.ts} +30 -30
  134. package/dist/{index-BSd8767K.d.cts → index-DpJzjjpi.d.cts} +30 -30
  135. package/dist/{localStorageContext-BPZ82q-G.js → localStorageContext-CqcSvg2H.js} +1 -1
  136. package/dist/{localStorageContext-NRP-CdmF.cjs → localStorageContext-DiLfSsqL.cjs} +1 -1
  137. package/dist/{newOrgConfigContext-Bet9CgKP.cjs → newOrgConfigContext-BIDz4ZuO.cjs} +3 -3
  138. package/dist/{newOrgConfigContext-I2qceBB4.d.ts → newOrgConfigContext-CKn7B2rj.d.ts} +2 -2
  139. package/dist/{newOrgConfigContext-Bi_dBNe5.js → newOrgConfigContext-u_9UPNcX.js} +3 -3
  140. package/dist/{orgAnalyticsConfig-Bm23fw4s.cjs → orgAnalyticsConfig-CGEQtAFs.cjs} +1 -1
  141. package/dist/{orgAnalyticsConfig-CpBmga08.js → orgAnalyticsConfig-i4jozLBB.js} +1 -1
  142. package/dist/{search-Csh2n66W.cjs → search-CTVX9gC6.cjs} +2 -2
  143. package/dist/{search-DkiqkogN.js → search-NgNrXNS9.js} +2 -2
  144. package/dist/{searchContext-DksJfC1s.cjs → searchContext-CnDXkawZ.cjs} +5 -5
  145. package/dist/{searchContext-BmgoAFMF.js → searchContext-DtRmshTA.js} +5 -5
  146. package/dist/{sessionStorageContext-B6FsNKjj.cjs → sessionStorageContext-1Ks_d4Z0.cjs} +1 -1
  147. package/dist/{sessionStorageContext-CLYCm83p.js → sessionStorageContext-CDcl7NVl.js} +1 -1
  148. package/dist/{shopifyUrlContext-ZOcARiMR.cjs → shopifyUrlContext-CxjV3qvH.cjs} +1 -1
  149. package/dist/{shopifyUrlContext-C-PkSgNC.js → shopifyUrlContext-D2btP_lY.js} +1 -1
  150. package/dist/{systemSettingsContext-dmE1v6w8.cjs → systemSettingsContext-BejoGzzB.cjs} +2 -2
  151. package/dist/{systemSettingsContext-DF0jSq9m.js → systemSettingsContext-C4dtZ0uZ.js} +2 -2
  152. package/dist/types-BegmH0S1.d.ts +1 -1
  153. package/dist/{unsupportedProductExceptions-DGENUnEA.cjs → unsupportedProductExceptions-B0yx2bHK.cjs} +1 -1
  154. package/dist/{unsupportedProductExceptions-uQuuelOs.js → unsupportedProductExceptions-Cs66ngs3.js} +1 -1
  155. package/dist/{useAmplitudeOperations-Bo6YNbTV.cjs → useAmplitudeOperations-BJXD9v2u.cjs} +2 -2
  156. package/dist/{useAmplitudeOperations-zIRSqmMW.js → useAmplitudeOperations-Dym0Ker8.js} +2 -2
  157. package/dist/{useAppDetails-B584gkCs.js → useAppDetails-Dmh16bWE.js} +4 -4
  158. package/dist/{useAppDetails-DczgqeLG.cjs → useAppDetails-DsAZ1xQn.cjs} +4 -4
  159. package/dist/{useGraphQLConfig-D_rF2Sun.cjs → useGraphQLConfig-B3DlwmGg.cjs} +2 -2
  160. package/dist/{useGraphQLConfig-7UxACM4n.js → useGraphQLConfig-DSRaDTdT.js} +2 -2
  161. package/dist/userIdentityContext-DF3atBFE.js +119 -0
  162. package/dist/userIdentityContext-DpQTduhF.cjs +136 -0
  163. package/dist/{utils-C1ErYSoW.js → utils-B7KTAEmV.js} +2 -2
  164. package/dist/utils-CBD4g2Nc.d.cts +1 -1
  165. package/dist/{utils-mqfncrhI.cjs → utils-CcC2jZRi.cjs} +2 -2
  166. package/package.json +3 -2
  167. package/src/atoms/app/index.ts +1 -1
  168. package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +525 -0
  169. package/src/contexts/amplitudeContext/amplitudeContext.tsx +5 -2
  170. package/src/contexts/userIdentityContext/userIdentityContext.tsx +7 -5
  171. package/dist/amplitudeContext-C8tT74Mi.cjs +0 -286
  172. package/dist/amplitudeContext-DCk6Va-j.js +0 -264
  173. package/dist/userIdentityContext-BqbNu7xu.cjs +0 -132
  174. package/dist/userIdentityContext-BxFH9FNQ.js +0 -115
  175. /package/dist/{AmplitudeOperations-ChZWcSsc.js → AmplitudeOperations-C-ieCm9m.js} +0 -0
  176. /package/dist/{AmplitudeOperations-JggIc1zD.cjs → AmplitudeOperations-p7APchq9.cjs} +0 -0
@@ -1,132 +0,0 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_logger = require('./logger-TBIl4uIH.cjs');
3
- const require_localStorageContext = require('./localStorageContext-NRP-CdmF.cjs');
4
- const require_app = require('./app-BbPSHefQ.cjs');
5
- const require_commerce_api = require('./commerce-api-DA1QGGMK.cjs');
6
- let uuid = require("uuid");
7
- uuid = require_chunk.__toESM(uuid);
8
- let react = require("react");
9
- react = require_chunk.__toESM(react);
10
- let jotai = require("jotai");
11
- jotai = require_chunk.__toESM(jotai);
12
- let react_jsx_runtime = require("react/jsx-runtime");
13
- react_jsx_runtime = require_chunk.__toESM(react_jsx_runtime);
14
- let ua_parser_js = require("ua-parser-js");
15
- ua_parser_js = require_chunk.__toESM(ua_parser_js);
16
-
17
- //#region src/contexts/userIdentityContext/userIdentityContext.tsx
18
- const getUserAgentDetails = () => {
19
- const result = new ua_parser_js.default().getResult();
20
- return {
21
- os: result?.os?.name,
22
- osVersion: result?.os?.version,
23
- deviceBrand: result?.device?.vendor,
24
- deviceManufacturer: result?.device?.vendor,
25
- deviceModel: result?.device?.model,
26
- browser: result?.browser?.name,
27
- browserVersion: result?.browser?.version,
28
- userAgent: result?.ua
29
- };
30
- };
31
- const UserIdentityContext = (0, react.createContext)(void 0);
32
- const UserIdentityProvider = ({ children }) => {
33
- const { getItem, setItem, isAvailable: localStorageIsReady } = require_localStorageContext.useLocalStorage();
34
- const [isReady, setIsReady] = (0, react.useState)(false);
35
- (0, react.useEffect)(() => {
36
- setIsReady(localStorageIsReady);
37
- }, [localStorageIsReady]);
38
- const USER_ID_OVERRIDE_KEY = "v1-spiffy-user-id-override";
39
- const USER_ID_DEFAULT_KEY = "v1-spiffy-user-id-default";
40
- const getUserIdOverrideFromLocalStorage = (0, react.useCallback)(() => {
41
- return getItem(USER_ID_OVERRIDE_KEY) ?? void 0;
42
- }, [getItem]);
43
- const getUserIdDefaultFromLocalStorage = (0, react.useCallback)(() => {
44
- return getItem(USER_ID_DEFAULT_KEY) ?? void 0;
45
- }, [getItem]);
46
- const setUserIdDefaultInLocalStorage = (0, react.useCallback)((userId) => {
47
- require_logger.logger_default.logInfo(`setUserIdDefaultInLocalStorage - Setting user_id=${userId}`);
48
- setItem(USER_ID_DEFAULT_KEY, userId);
49
- return userId;
50
- }, [setItem, USER_ID_DEFAULT_KEY]);
51
- const setUserIdOverrideInLocalStorage = (0, react.useCallback)((userId) => {
52
- require_logger.logger_default.logInfo(`setUserIdOverrideInLocalStorage - Setting user_id=${userId}`);
53
- setItem(USER_ID_OVERRIDE_KEY, userId);
54
- return userId;
55
- }, [setItem, USER_ID_OVERRIDE_KEY]);
56
- const clearUserIdOverrideInLocalStorage = (0, react.useCallback)(() => {
57
- require_logger.logger_default.logInfo(`clearUserIdOverrideInLocalStorage - Clearing user_id`);
58
- setItem(USER_ID_OVERRIDE_KEY, "");
59
- }, [setItem, USER_ID_OVERRIDE_KEY]);
60
- const getUserIdOrDefault = (0, react.useCallback)(() => {
61
- const userIdOverride = getUserIdOverrideFromLocalStorage();
62
- if (userIdOverride) return userIdOverride;
63
- const defaultUserId = getUserIdDefaultFromLocalStorage();
64
- if (defaultUserId) return defaultUserId;
65
- return setUserIdDefaultInLocalStorage(`spiffy-user-id-${(0, uuid.v4)()}`);
66
- }, [
67
- getUserIdOverrideFromLocalStorage,
68
- getUserIdDefaultFromLocalStorage,
69
- setUserIdDefaultInLocalStorage
70
- ]);
71
- const identifyUser = (0, react.useCallback)(async () => {
72
- if (!isReady) {
73
- require_logger.logger_default.logWarn("[UserIdentityContext] Context not ready, skipping identifyUser", void 0);
74
- return;
75
- }
76
- try {
77
- const cdpUserId = "UNKNOWN_CDP_USER_ID";
78
- const userId = getUserIdOrDefault();
79
- const userAgentDetails = getUserAgentDetails();
80
- await require_commerce_api.commerce_api_default.identifyUser(userId, cdpUserId, userAgentDetails);
81
- } catch (error) {
82
- require_logger.logger_default.logError("[spiffy-ai] Error identifying user", error);
83
- }
84
- }, [isReady, getUserIdOrDefault]);
85
- const value = (0, react.useMemo)(() => ({
86
- identifyUser,
87
- getUserIdOrDefault,
88
- getUserIdOverrideFromLocalStorage,
89
- getUserIdDefaultFromLocalStorage,
90
- setUserIdDefaultInLocalStorage,
91
- setUserIdOverrideInLocalStorage,
92
- clearUserIdOverrideInLocalStorage,
93
- isReady
94
- }), [
95
- identifyUser,
96
- getUserIdOrDefault,
97
- getUserIdOverrideFromLocalStorage,
98
- getUserIdDefaultFromLocalStorage,
99
- setUserIdDefaultInLocalStorage,
100
- setUserIdOverrideInLocalStorage,
101
- clearUserIdOverrideInLocalStorage,
102
- isReady
103
- ]);
104
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(UserIdentityContext.Provider, {
105
- value,
106
- children
107
- });
108
- };
109
- const useUserIdentity = () => {
110
- const context = (0, react.useContext)(UserIdentityContext);
111
- const setUserId = (0, jotai.useSetAtom)(require_app.userIdAtom);
112
- (0, react.useEffect)(() => {
113
- setUserId(context?.getUserIdOrDefault() ?? "");
114
- }, [context, setUserId]);
115
- if (!context) throw new Error("useUserIdentity must be used within a UserIdentityProvider");
116
- return context;
117
- };
118
-
119
- //#endregion
120
- Object.defineProperty(exports, 'UserIdentityProvider', {
121
- enumerable: true,
122
- get: function () {
123
- return UserIdentityProvider;
124
- }
125
- });
126
- Object.defineProperty(exports, 'useUserIdentity', {
127
- enumerable: true,
128
- get: function () {
129
- return useUserIdentity;
130
- }
131
- });
132
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcklkZW50aXR5Q29udGV4dC1CcWJOdTd4dS5janMiLCJuYW1lcyI6WyJVQVBhcnNlciIsIlVzZXJJZGVudGl0eVByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4iLCJ1c2VMb2NhbFN0b3JhZ2UiLCJDb21tZXJjZUFwaUNsaWVudCIsInVzZXJJZEF0b20iXSwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dHMvdXNlcklkZW50aXR5Q29udGV4dC91c2VySWRlbnRpdHlDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUNvbnRleHQsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxuICB1c2VFZmZlY3QsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFVBUGFyc2VyIGZyb20gXCJ1YS1wYXJzZXItanNcIjtcbmltcG9ydCBMb2dnZXIgZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlclwiO1xuaW1wb3J0IENvbW1lcmNlQXBpQ2xpZW50IGZyb20gXCJzcmMvYXBwbGljYXRpb24vY29tbWVyY2UtYXBpXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcbmltcG9ydCB7IENsaWVudERldGFpbHMgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVscy9jbGllbnREZXRhaWxzXCI7XG5pbXBvcnQgeyB1c2VMb2NhbFN0b3JhZ2UgfSBmcm9tIFwic3JjL2NvbnRleHRzL2xvY2FsU3RvcmFnZUNvbnRleHRcIjtcbmltcG9ydCB7IHVzZVNldEF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IHVzZXJJZEF0b20gfSBmcm9tIFwic3JjL2F0b21zL2FwcFwiO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gZnJvbSB0aGUgb3JpZ2luYWwgc2VydmljZVxuY29uc3QgZ2V0VXNlckFnZW50RGV0YWlscyA9ICgpOiBDbGllbnREZXRhaWxzID0+IHtcbiAgY29uc3QgdWFQYXJzZXIgPSBuZXcgVUFQYXJzZXIoKTtcbiAgY29uc3QgcmVzdWx0ID0gdWFQYXJzZXIuZ2V0UmVzdWx0KCk7XG5cbiAgcmV0dXJuIHtcbiAgICBvczogcmVzdWx0Py5vcz8ubmFtZSxcbiAgICBvc1ZlcnNpb246IHJlc3VsdD8ub3M/LnZlcnNpb24sXG4gICAgZGV2aWNlQnJhbmQ6IHJlc3VsdD8uZGV2aWNlPy52ZW5kb3IsXG4gICAgZGV2aWNlTWFudWZhY3R1cmVyOiByZXN1bHQ/LmRldmljZT8udmVuZG9yLFxuICAgIGRldmljZU1vZGVsOiByZXN1bHQ/LmRldmljZT8ubW9kZWwsXG4gICAgYnJvd3NlcjogcmVzdWx0Py5icm93c2VyPy5uYW1lLFxuICAgIGJyb3dzZXJWZXJzaW9uOiByZXN1bHQ/LmJyb3dzZXI/LnZlcnNpb24sXG4gICAgdXNlckFnZW50OiByZXN1bHQ/LnVhLFxuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VySWRlbnRpdHlDb250ZXh0VHlwZSB7XG4gIGlkZW50aWZ5VXNlcjogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0VXNlcklkT3JEZWZhdWx0OiAoKSA9PiBzdHJpbmc7XG4gIGdldFVzZXJJZE92ZXJyaWRlRnJvbUxvY2FsU3RvcmFnZTogKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBnZXRVc2VySWREZWZhdWx0RnJvbUxvY2FsU3RvcmFnZTogKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzZXRVc2VySWREZWZhdWx0SW5Mb2NhbFN0b3JhZ2U6ICh1c2VySWQ6IHN0cmluZykgPT4gc3RyaW5nO1xuICBzZXRVc2VySWRPdmVycmlkZUluTG9jYWxTdG9yYWdlOiAodXNlcklkOiBzdHJpbmcpID0+IHN0cmluZztcbiAgY2xlYXJVc2VySWRPdmVycmlkZUluTG9jYWxTdG9yYWdlOiAoKSA9PiB2b2lkO1xuICBpc1JlYWR5OiBib29sZWFuO1xufVxuXG5jb25zdCBVc2VySWRlbnRpdHlDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxVc2VySWRlbnRpdHlDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4oXG4gIHVuZGVmaW5lZFxuKTtcblxuZXhwb3J0IGNvbnN0IFVzZXJJZGVudGl0eVByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4gPSAoe1xuICBjaGlsZHJlbixcbn0pID0+IHtcbiAgY29uc3Qge1xuICAgIGdldEl0ZW0sXG4gICAgc2V0SXRlbSxcbiAgICBpc0F2YWlsYWJsZTogbG9jYWxTdG9yYWdlSXNSZWFkeSxcbiAgfSA9IHVzZUxvY2FsU3RvcmFnZSgpO1xuXG4gIGNvbnN0IFtpc1JlYWR5LCBzZXRJc1JlYWR5XSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIEFzc3VtaW5nIENvbW1lcmNlQXBpQ2xpZW50IGFuZCBvdGhlciBkZXBlbmRlbmNpZXMgYXJlIHJlYWR5IGlmIGxvY2FsU3RvcmFnZSBpcy5cbiAgICAvLyBJbiBhIG1vcmUgY29tcGxleCBzY2VuYXJpbywgeW91IG1pZ2h0IGhhdmUgbW9yZSBjaGVja3MgaGVyZS5cbiAgICBzZXRJc1JlYWR5KGxvY2FsU3RvcmFnZUlzUmVhZHkpO1xuICB9LCBbbG9jYWxTdG9yYWdlSXNSZWFkeV0pO1xuXG4gIGNvbnN0IFVTRVJfSURfT1ZFUlJJREVfS0VZID0gXCJ2MS1zcGlmZnktdXNlci1pZC1vdmVycmlkZVwiO1xuICBjb25zdCBVU0VSX0lEX0RFRkFVTFRfS0VZID0gXCJ2MS1zcGlmZnktdXNlci1pZC1kZWZhdWx0XCI7XG5cbiAgY29uc3QgZ2V0VXNlcklkT3ZlcnJpZGVGcm9tTG9jYWxTdG9yYWdlID0gdXNlQ2FsbGJhY2soKCk6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZCA9PiB7XG4gICAgcmV0dXJuIGdldEl0ZW0oVVNFUl9JRF9PVkVSUklERV9LRVkpID8/IHVuZGVmaW5lZDtcbiAgfSwgW2dldEl0ZW1dKTtcblxuICBjb25zdCBnZXRVc2VySWREZWZhdWx0RnJvbUxvY2FsU3RvcmFnZSA9IHVzZUNhbGxiYWNrKCgpOlxuICAgIHwgc3RyaW5nXG4gICAgfCB1bmRlZmluZWQgPT4ge1xuICAgIHJldHVybiBnZXRJdGVtKFVTRVJfSURfREVGQVVMVF9LRVkpID8/IHVuZGVmaW5lZDtcbiAgfSwgW2dldEl0ZW1dKTtcblxuICBjb25zdCBzZXRVc2VySWREZWZhdWx0SW5Mb2NhbFN0b3JhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAodXNlcklkOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgTG9nZ2VyLmxvZ0luZm8oXG4gICAgICAgIGBzZXRVc2VySWREZWZhdWx0SW5Mb2NhbFN0b3JhZ2UgLSBTZXR0aW5nIHVzZXJfaWQ9JHt1c2VySWR9YFxuICAgICAgKTtcbiAgICAgIHNldEl0ZW0oVVNFUl9JRF9ERUZBVUxUX0tFWSwgdXNlcklkKTtcbiAgICAgIC8vIHdpbmRvdy5kaXNwYXRjaEV2ZW50IGlzIGhhbmRsZWQgYnkgdXNlTG9jYWxTdG9yYWdlIG5vd1xuICAgICAgcmV0dXJuIHVzZXJJZDtcbiAgICB9LFxuICAgIFtzZXRJdGVtLCBVU0VSX0lEX0RFRkFVTFRfS0VZXVxuICApO1xuXG4gIGNvbnN0IHNldFVzZXJJZE92ZXJyaWRlSW5Mb2NhbFN0b3JhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAodXNlcklkOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgTG9nZ2VyLmxvZ0luZm8oXG4gICAgICAgIGBzZXRVc2VySWRPdmVycmlkZUluTG9jYWxTdG9yYWdlIC0gU2V0dGluZyB1c2VyX2lkPSR7dXNlcklkfWBcbiAgICAgICk7XG4gICAgICBzZXRJdGVtKFVTRVJfSURfT1ZFUlJJREVfS0VZLCB1c2VySWQpO1xuICAgICAgLy8gd2luZG93LmRpc3BhdGNoRXZlbnQgaXMgaGFuZGxlZCBieSB1c2VMb2NhbFN0b3JhZ2Ugbm93XG4gICAgICByZXR1cm4gdXNlcklkO1xuICAgIH0sXG4gICAgW3NldEl0ZW0sIFVTRVJfSURfT1ZFUlJJREVfS0VZXVxuICApO1xuXG4gIGNvbnN0IGNsZWFyVXNlcklkT3ZlcnJpZGVJbkxvY2FsU3RvcmFnZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBMb2dnZXIubG9nSW5mbyhgY2xlYXJVc2VySWRPdmVycmlkZUluTG9jYWxTdG9yYWdlIC0gQ2xlYXJpbmcgdXNlcl9pZGApO1xuICAgIC8vIExvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0TG9jYWxTdG9yYWdlKCk/LnJlbW92ZUl0ZW0oVVNFUl9JRF9PVkVSUklERV9LRVkpO1xuICAgIC8vIHdpbmRvdy5kaXNwYXRjaEV2ZW50IGlzIGhhbmRsZWQgYnkgdXNlTG9jYWxTdG9yYWdlIG5vd1xuICAgIHNldEl0ZW0oVVNFUl9JRF9PVkVSUklERV9LRVksIFwiXCIpOyAvLyBTZXQgdG8gZW1wdHkgc3RyaW5nIHRvIGNsZWFyXG4gIH0sIFtzZXRJdGVtLCBVU0VSX0lEX09WRVJSSURFX0tFWV0pO1xuXG4gIGNvbnN0IGdldFVzZXJJZE9yRGVmYXVsdCA9IHVzZUNhbGxiYWNrKCgpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHVzZXJJZE92ZXJyaWRlID0gZ2V0VXNlcklkT3ZlcnJpZGVGcm9tTG9jYWxTdG9yYWdlKCk7XG4gICAgaWYgKHVzZXJJZE92ZXJyaWRlKSB7XG4gICAgICByZXR1cm4gdXNlcklkT3ZlcnJpZGU7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFVzZXJJZCA9IGdldFVzZXJJZERlZmF1bHRGcm9tTG9jYWxTdG9yYWdlKCk7XG4gICAgaWYgKGRlZmF1bHRVc2VySWQpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VXNlcklkO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRVc2VySWREZWZhdWx0SW5Mb2NhbFN0b3JhZ2UoYHNwaWZmeS11c2VyLWlkLSR7dXVpZCgpfWApO1xuICB9LCBbXG4gICAgZ2V0VXNlcklkT3ZlcnJpZGVGcm9tTG9jYWxTdG9yYWdlLFxuICAgIGdldFVzZXJJZERlZmF1bHRGcm9tTG9jYWxTdG9yYWdlLFxuICAgIHNldFVzZXJJZERlZmF1bHRJbkxvY2FsU3RvcmFnZSxcbiAgXSk7XG5cbiAgY29uc3QgaWRlbnRpZnlVc2VyID0gdXNlQ2FsbGJhY2soYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGlmICghaXNSZWFkeSkge1xuICAgICAgTG9nZ2VyLmxvZ1dhcm4oXG4gICAgICAgIFwiW1VzZXJJZGVudGl0eUNvbnRleHRdIENvbnRleHQgbm90IHJlYWR5LCBza2lwcGluZyBpZGVudGlmeVVzZXJcIixcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBUZW1wb3JhcmlseSBjb21tZW50ZWQgb3V0IHVudGlsIFdpbmRvd0RhdGFMYXllclNlcnZpY2UgaXMgcmVzb2x2ZWRcbiAgICAgIC8vIGNvbnN0IGNkcFVzZXJJZCA9IFdpbmRvd0RhdGFMYXllclNlcnZpY2UuZ2V0R29vZ2xlQW5hbHl0aWNzQ2xpZW50SWQoKTtcbiAgICAgIGNvbnN0IGNkcFVzZXJJZCA9IFwiVU5LTk9XTl9DRFBfVVNFUl9JRFwiOyAvLyBQbGFjZWhvbGRlclxuICAgICAgY29uc3QgdXNlcklkID0gZ2V0VXNlcklkT3JEZWZhdWx0KCk7XG4gICAgICBjb25zdCB1c2VyQWdlbnREZXRhaWxzID0gZ2V0VXNlckFnZW50RGV0YWlscygpO1xuXG4gICAgICBpZiAoIWNkcFVzZXJJZCkge1xuICAgICAgICBMb2dnZXIubG9nV2FybihcbiAgICAgICAgICBcIltzcGlmZnktYWldIE5vIEdBIENsaWVudCBJRCBmb3VuZCwgc2tpcHBpbmcgaWRlbnRpZnlVc2VyXCIsXG4gICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuaWRlbnRpZnlVc2VyKHVzZXJJZCwgY2RwVXNlcklkLCB1c2VyQWdlbnREZXRhaWxzKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKFwiW3NwaWZmeS1haV0gRXJyb3IgaWRlbnRpZnlpbmcgdXNlclwiLCBlcnJvcik7XG4gICAgfVxuICB9LCBbaXNSZWFkeSwgZ2V0VXNlcklkT3JEZWZhdWx0XSk7XG5cbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBpZGVudGlmeVVzZXIsXG4gICAgICBnZXRVc2VySWRPckRlZmF1bHQsXG4gICAgICBnZXRVc2VySWRPdmVycmlkZUZyb21Mb2NhbFN0b3JhZ2UsXG4gICAgICBnZXRVc2VySWREZWZhdWx0RnJvbUxvY2FsU3RvcmFnZSxcbiAgICAgIHNldFVzZXJJZERlZmF1bHRJbkxvY2FsU3RvcmFnZSxcbiAgICAgIHNldFVzZXJJZE92ZXJyaWRlSW5Mb2NhbFN0b3JhZ2UsXG4gICAgICBjbGVhclVzZXJJZE92ZXJyaWRlSW5Mb2NhbFN0b3JhZ2UsXG4gICAgICBpc1JlYWR5LFxuICAgIH0pLFxuICAgIFtcbiAgICAgIGlkZW50aWZ5VXNlcixcbiAgICAgIGdldFVzZXJJZE9yRGVmYXVsdCxcbiAgICAgIGdldFVzZXJJZE92ZXJyaWRlRnJvbUxvY2FsU3RvcmFnZSxcbiAgICAgIGdldFVzZXJJZERlZmF1bHRGcm9tTG9jYWxTdG9yYWdlLFxuICAgICAgc2V0VXNlcklkRGVmYXVsdEluTG9jYWxTdG9yYWdlLFxuICAgICAgc2V0VXNlcklkT3ZlcnJpZGVJbkxvY2FsU3RvcmFnZSxcbiAgICAgIGNsZWFyVXNlcklkT3ZlcnJpZGVJbkxvY2FsU3RvcmFnZSxcbiAgICAgIGlzUmVhZHksXG4gICAgXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPFVzZXJJZGVudGl0eUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1VzZXJJZGVudGl0eUNvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlVXNlcklkZW50aXR5ID0gKCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChVc2VySWRlbnRpdHlDb250ZXh0KTtcbiAgY29uc3Qgc2V0VXNlcklkID0gdXNlU2V0QXRvbSh1c2VySWRBdG9tKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRVc2VySWQoY29udGV4dD8uZ2V0VXNlcklkT3JEZWZhdWx0KCkgPz8gXCJcIik7XG4gIH0sIFtjb250ZXh0LCBzZXRVc2VySWRdKTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJ1c2VVc2VySWRlbnRpdHkgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIFVzZXJJZGVudGl0eVByb3ZpZGVyXCJcbiAgICApO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQkEsTUFBTSw0QkFBMkM7Q0FFL0MsTUFBTSxTQURXLElBQUlBLHNCQUFVLENBQ1AsV0FBVztBQUVuQyxRQUFPO0VBQ0wsSUFBSSxRQUFRLElBQUk7RUFDaEIsV0FBVyxRQUFRLElBQUk7RUFDdkIsYUFBYSxRQUFRLFFBQVE7RUFDN0Isb0JBQW9CLFFBQVEsUUFBUTtFQUNwQyxhQUFhLFFBQVEsUUFBUTtFQUM3QixTQUFTLFFBQVEsU0FBUztFQUMxQixnQkFBZ0IsUUFBUSxTQUFTO0VBQ2pDLFdBQVcsUUFBUTtFQUNwQjs7QUFjSCxNQUFNLCtDQUNKLE9BQ0Q7QUFFRCxNQUFhQyx3QkFBaUUsRUFDNUUsZUFDSTtDQUNKLE1BQU0sRUFDSixTQUNBLFNBQ0EsYUFBYSx3QkFDWEMsNkNBQWlCO0NBRXJCLE1BQU0sQ0FBQyxTQUFTLGtDQUF1QixNQUFNO0FBRTdDLDRCQUFnQjtBQUdkLGFBQVcsb0JBQW9CO0lBQzlCLENBQUMsb0JBQW9CLENBQUM7Q0FFekIsTUFBTSx1QkFBdUI7Q0FDN0IsTUFBTSxzQkFBc0I7Q0FFNUIsTUFBTSxpRUFFVztBQUNmLFNBQU8sUUFBUSxxQkFBcUIsSUFBSTtJQUN2QyxDQUFDLFFBQVEsQ0FBQztDQUViLE1BQU0sZ0VBRVc7QUFDZixTQUFPLFFBQVEsb0JBQW9CLElBQUk7SUFDdEMsQ0FBQyxRQUFRLENBQUM7Q0FFYixNQUFNLHlEQUNILFdBQTJCO0FBQzFCLGdDQUFPLFFBQ0wsb0RBQW9ELFNBQ3JEO0FBQ0QsVUFBUSxxQkFBcUIsT0FBTztBQUVwQyxTQUFPO0lBRVQsQ0FBQyxTQUFTLG9CQUFvQixDQUMvQjtDQUVELE1BQU0sMERBQ0gsV0FBMkI7QUFDMUIsZ0NBQU8sUUFDTCxxREFBcUQsU0FDdEQ7QUFDRCxVQUFRLHNCQUFzQixPQUFPO0FBRXJDLFNBQU87SUFFVCxDQUFDLFNBQVMscUJBQXFCLENBQ2hDO0NBRUQsTUFBTSxpRUFBc0Q7QUFDMUQsZ0NBQU8sUUFBUSx1REFBdUQ7QUFHdEUsVUFBUSxzQkFBc0IsR0FBRztJQUNoQyxDQUFDLFNBQVMscUJBQXFCLENBQUM7Q0FFbkMsTUFBTSxrREFBK0M7RUFDbkQsTUFBTSxpQkFBaUIsbUNBQW1DO0FBQzFELE1BQUksZUFDRixRQUFPO0VBR1QsTUFBTSxnQkFBZ0Isa0NBQWtDO0FBQ3hELE1BQUksY0FDRixRQUFPO0FBR1QsU0FBTywrQkFBK0IsZ0NBQXdCLEdBQUc7SUFDaEU7RUFDRDtFQUNBO0VBQ0E7RUFDRCxDQUFDO0NBRUYsTUFBTSxzQ0FBMkIsWUFBMkI7QUFDMUQsTUFBSSxDQUFDLFNBQVM7QUFDWixpQ0FBTyxRQUNMLGtFQUNBLE9BQ0Q7QUFDRDs7QUFHRixNQUFJO0dBR0YsTUFBTSxZQUFZO0dBQ2xCLE1BQU0sU0FBUyxvQkFBb0I7R0FDbkMsTUFBTSxtQkFBbUIscUJBQXFCO0FBVTlDLFNBQU1DLDBDQUFrQixhQUFhLFFBQVEsV0FBVyxpQkFBaUI7V0FDbEUsT0FBTztBQUNkLGlDQUFPLFNBQVMsc0NBQXNDLE1BQU07O0lBRTdELENBQUMsU0FBUyxtQkFBbUIsQ0FBQztDQUVqQyxNQUFNLGtDQUNHO0VBQ0w7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNELEdBQ0Q7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0QsQ0FDRjtBQUVELFFBQ0UsMkNBQUMsb0JBQW9CO0VBQWdCO0VBQ2xDO0dBQzRCOztBQUluQyxNQUFhLHdCQUF3QjtDQUNuQyxNQUFNLGdDQUFxQixvQkFBb0I7Q0FDL0MsTUFBTSxrQ0FBdUJDLHVCQUFXO0FBQ3hDLDRCQUFnQjtBQUNkLFlBQVUsU0FBUyxvQkFBb0IsSUFBSSxHQUFHO0lBQzdDLENBQUMsU0FBUyxVQUFVLENBQUM7QUFDeEIsS0FBSSxDQUFDLFFBQ0gsT0FBTSxJQUFJLE1BQ1IsNkRBQ0Q7QUFFSCxRQUFPIn0=
@@ -1,115 +0,0 @@
1
- import { logger_default } from "./logger-W3lqg-4b.js";
2
- import { useLocalStorage } from "./localStorageContext-BPZ82q-G.js";
3
- import { userIdAtom } from "./app-CflxT_xI.js";
4
- import { commerce_api_default } from "./commerce-api-rgj30eEp.js";
5
- import { v4 } from "uuid";
6
- import React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from "react";
7
- import { useSetAtom } from "jotai";
8
- import { jsx } from "react/jsx-runtime";
9
- import UAParser from "ua-parser-js";
10
-
11
- //#region src/contexts/userIdentityContext/userIdentityContext.tsx
12
- const getUserAgentDetails = () => {
13
- const result = new UAParser().getResult();
14
- return {
15
- os: result?.os?.name,
16
- osVersion: result?.os?.version,
17
- deviceBrand: result?.device?.vendor,
18
- deviceManufacturer: result?.device?.vendor,
19
- deviceModel: result?.device?.model,
20
- browser: result?.browser?.name,
21
- browserVersion: result?.browser?.version,
22
- userAgent: result?.ua
23
- };
24
- };
25
- const UserIdentityContext = createContext(void 0);
26
- const UserIdentityProvider = ({ children }) => {
27
- const { getItem, setItem, isAvailable: localStorageIsReady } = useLocalStorage();
28
- const [isReady, setIsReady] = useState(false);
29
- useEffect(() => {
30
- setIsReady(localStorageIsReady);
31
- }, [localStorageIsReady]);
32
- const USER_ID_OVERRIDE_KEY = "v1-spiffy-user-id-override";
33
- const USER_ID_DEFAULT_KEY = "v1-spiffy-user-id-default";
34
- const getUserIdOverrideFromLocalStorage = useCallback(() => {
35
- return getItem(USER_ID_OVERRIDE_KEY) ?? void 0;
36
- }, [getItem]);
37
- const getUserIdDefaultFromLocalStorage = useCallback(() => {
38
- return getItem(USER_ID_DEFAULT_KEY) ?? void 0;
39
- }, [getItem]);
40
- const setUserIdDefaultInLocalStorage = useCallback((userId) => {
41
- logger_default.logInfo(`setUserIdDefaultInLocalStorage - Setting user_id=${userId}`);
42
- setItem(USER_ID_DEFAULT_KEY, userId);
43
- return userId;
44
- }, [setItem, USER_ID_DEFAULT_KEY]);
45
- const setUserIdOverrideInLocalStorage = useCallback((userId) => {
46
- logger_default.logInfo(`setUserIdOverrideInLocalStorage - Setting user_id=${userId}`);
47
- setItem(USER_ID_OVERRIDE_KEY, userId);
48
- return userId;
49
- }, [setItem, USER_ID_OVERRIDE_KEY]);
50
- const clearUserIdOverrideInLocalStorage = useCallback(() => {
51
- logger_default.logInfo(`clearUserIdOverrideInLocalStorage - Clearing user_id`);
52
- setItem(USER_ID_OVERRIDE_KEY, "");
53
- }, [setItem, USER_ID_OVERRIDE_KEY]);
54
- const getUserIdOrDefault = useCallback(() => {
55
- const userIdOverride = getUserIdOverrideFromLocalStorage();
56
- if (userIdOverride) return userIdOverride;
57
- const defaultUserId = getUserIdDefaultFromLocalStorage();
58
- if (defaultUserId) return defaultUserId;
59
- return setUserIdDefaultInLocalStorage(`spiffy-user-id-${v4()}`);
60
- }, [
61
- getUserIdOverrideFromLocalStorage,
62
- getUserIdDefaultFromLocalStorage,
63
- setUserIdDefaultInLocalStorage
64
- ]);
65
- const identifyUser = useCallback(async () => {
66
- if (!isReady) {
67
- logger_default.logWarn("[UserIdentityContext] Context not ready, skipping identifyUser", void 0);
68
- return;
69
- }
70
- try {
71
- const cdpUserId = "UNKNOWN_CDP_USER_ID";
72
- const userId = getUserIdOrDefault();
73
- const userAgentDetails = getUserAgentDetails();
74
- await commerce_api_default.identifyUser(userId, cdpUserId, userAgentDetails);
75
- } catch (error) {
76
- logger_default.logError("[spiffy-ai] Error identifying user", error);
77
- }
78
- }, [isReady, getUserIdOrDefault]);
79
- const value = useMemo(() => ({
80
- identifyUser,
81
- getUserIdOrDefault,
82
- getUserIdOverrideFromLocalStorage,
83
- getUserIdDefaultFromLocalStorage,
84
- setUserIdDefaultInLocalStorage,
85
- setUserIdOverrideInLocalStorage,
86
- clearUserIdOverrideInLocalStorage,
87
- isReady
88
- }), [
89
- identifyUser,
90
- getUserIdOrDefault,
91
- getUserIdOverrideFromLocalStorage,
92
- getUserIdDefaultFromLocalStorage,
93
- setUserIdDefaultInLocalStorage,
94
- setUserIdOverrideInLocalStorage,
95
- clearUserIdOverrideInLocalStorage,
96
- isReady
97
- ]);
98
- return /* @__PURE__ */ jsx(UserIdentityContext.Provider, {
99
- value,
100
- children
101
- });
102
- };
103
- const useUserIdentity = () => {
104
- const context = useContext(UserIdentityContext);
105
- const setUserId = useSetAtom(userIdAtom);
106
- useEffect(() => {
107
- setUserId(context?.getUserIdOrDefault() ?? "");
108
- }, [context, setUserId]);
109
- if (!context) throw new Error("useUserIdentity must be used within a UserIdentityProvider");
110
- return context;
111
- };
112
-
113
- //#endregion
114
- export { UserIdentityProvider, useUserIdentity };
115
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcklkZW50aXR5Q29udGV4dC1CeEZIOUZOUS5qcyIsIm5hbWVzIjpbIlVzZXJJZGVudGl0eVByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4iLCJ1dWlkIiwiQ29tbWVyY2VBcGlDbGllbnQiXSwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dHMvdXNlcklkZW50aXR5Q29udGV4dC91c2VySWRlbnRpdHlDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUNvbnRleHQsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxuICB1c2VFZmZlY3QsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFVBUGFyc2VyIGZyb20gXCJ1YS1wYXJzZXItanNcIjtcbmltcG9ydCBMb2dnZXIgZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlclwiO1xuaW1wb3J0IENvbW1lcmNlQXBpQ2xpZW50IGZyb20gXCJzcmMvYXBwbGljYXRpb24vY29tbWVyY2UtYXBpXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcbmltcG9ydCB7IENsaWVudERldGFpbHMgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVscy9jbGllbnREZXRhaWxzXCI7XG5pbXBvcnQgeyB1c2VMb2NhbFN0b3JhZ2UgfSBmcm9tIFwic3JjL2NvbnRleHRzL2xvY2FsU3RvcmFnZUNvbnRleHRcIjtcbmltcG9ydCB7IHVzZVNldEF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IHVzZXJJZEF0b20gfSBmcm9tIFwic3JjL2F0b21zL2FwcFwiO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gZnJvbSB0aGUgb3JpZ2luYWwgc2VydmljZVxuY29uc3QgZ2V0VXNlckFnZW50RGV0YWlscyA9ICgpOiBDbGllbnREZXRhaWxzID0+IHtcbiAgY29uc3QgdWFQYXJzZXIgPSBuZXcgVUFQYXJzZXIoKTtcbiAgY29uc3QgcmVzdWx0ID0gdWFQYXJzZXIuZ2V0UmVzdWx0KCk7XG5cbiAgcmV0dXJuIHtcbiAgICBvczogcmVzdWx0Py5vcz8ubmFtZSxcbiAgICBvc1ZlcnNpb246IHJlc3VsdD8ub3M/LnZlcnNpb24sXG4gICAgZGV2aWNlQnJhbmQ6IHJlc3VsdD8uZGV2aWNlPy52ZW5kb3IsXG4gICAgZGV2aWNlTWFudWZhY3R1cmVyOiByZXN1bHQ/LmRldmljZT8udmVuZG9yLFxuICAgIGRldmljZU1vZGVsOiByZXN1bHQ/LmRldmljZT8ubW9kZWwsXG4gICAgYnJvd3NlcjogcmVzdWx0Py5icm93c2VyPy5uYW1lLFxuICAgIGJyb3dzZXJWZXJzaW9uOiByZXN1bHQ/LmJyb3dzZXI/LnZlcnNpb24sXG4gICAgdXNlckFnZW50OiByZXN1bHQ/LnVhLFxuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VySWRlbnRpdHlDb250ZXh0VHlwZSB7XG4gIGlkZW50aWZ5VXNlcjogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0VXNlcklkT3JEZWZhdWx0OiAoKSA9PiBzdHJpbmc7XG4gIGdldFVzZXJJZE92ZXJyaWRlRnJvbUxvY2FsU3RvcmFnZTogKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBnZXRVc2VySWREZWZhdWx0RnJvbUxvY2FsU3RvcmFnZTogKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzZXRVc2VySWREZWZhdWx0SW5Mb2NhbFN0b3JhZ2U6ICh1c2VySWQ6IHN0cmluZykgPT4gc3RyaW5nO1xuICBzZXRVc2VySWRPdmVycmlkZUluTG9jYWxTdG9yYWdlOiAodXNlcklkOiBzdHJpbmcpID0+IHN0cmluZztcbiAgY2xlYXJVc2VySWRPdmVycmlkZUluTG9jYWxTdG9yYWdlOiAoKSA9PiB2b2lkO1xuICBpc1JlYWR5OiBib29sZWFuO1xufVxuXG5jb25zdCBVc2VySWRlbnRpdHlDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxVc2VySWRlbnRpdHlDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4oXG4gIHVuZGVmaW5lZFxuKTtcblxuZXhwb3J0IGNvbnN0IFVzZXJJZGVudGl0eVByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4gPSAoe1xuICBjaGlsZHJlbixcbn0pID0+IHtcbiAgY29uc3Qge1xuICAgIGdldEl0ZW0sXG4gICAgc2V0SXRlbSxcbiAgICBpc0F2YWlsYWJsZTogbG9jYWxTdG9yYWdlSXNSZWFkeSxcbiAgfSA9IHVzZUxvY2FsU3RvcmFnZSgpO1xuXG4gIGNvbnN0IFtpc1JlYWR5LCBzZXRJc1JlYWR5XSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIEFzc3VtaW5nIENvbW1lcmNlQXBpQ2xpZW50IGFuZCBvdGhlciBkZXBlbmRlbmNpZXMgYXJlIHJlYWR5IGlmIGxvY2FsU3RvcmFnZSBpcy5cbiAgICAvLyBJbiBhIG1vcmUgY29tcGxleCBzY2VuYXJpbywgeW91IG1pZ2h0IGhhdmUgbW9yZSBjaGVja3MgaGVyZS5cbiAgICBzZXRJc1JlYWR5KGxvY2FsU3RvcmFnZUlzUmVhZHkpO1xuICB9LCBbbG9jYWxTdG9yYWdlSXNSZWFkeV0pO1xuXG4gIGNvbnN0IFVTRVJfSURfT1ZFUlJJREVfS0VZID0gXCJ2MS1zcGlmZnktdXNlci1pZC1vdmVycmlkZVwiO1xuICBjb25zdCBVU0VSX0lEX0RFRkFVTFRfS0VZID0gXCJ2MS1zcGlmZnktdXNlci1pZC1kZWZhdWx0XCI7XG5cbiAgY29uc3QgZ2V0VXNlcklkT3ZlcnJpZGVGcm9tTG9jYWxTdG9yYWdlID0gdXNlQ2FsbGJhY2soKCk6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZCA9PiB7XG4gICAgcmV0dXJuIGdldEl0ZW0oVVNFUl9JRF9PVkVSUklERV9LRVkpID8/IHVuZGVmaW5lZDtcbiAgfSwgW2dldEl0ZW1dKTtcblxuICBjb25zdCBnZXRVc2VySWREZWZhdWx0RnJvbUxvY2FsU3RvcmFnZSA9IHVzZUNhbGxiYWNrKCgpOlxuICAgIHwgc3RyaW5nXG4gICAgfCB1bmRlZmluZWQgPT4ge1xuICAgIHJldHVybiBnZXRJdGVtKFVTRVJfSURfREVGQVVMVF9LRVkpID8/IHVuZGVmaW5lZDtcbiAgfSwgW2dldEl0ZW1dKTtcblxuICBjb25zdCBzZXRVc2VySWREZWZhdWx0SW5Mb2NhbFN0b3JhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAodXNlcklkOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgTG9nZ2VyLmxvZ0luZm8oXG4gICAgICAgIGBzZXRVc2VySWREZWZhdWx0SW5Mb2NhbFN0b3JhZ2UgLSBTZXR0aW5nIHVzZXJfaWQ9JHt1c2VySWR9YFxuICAgICAgKTtcbiAgICAgIHNldEl0ZW0oVVNFUl9JRF9ERUZBVUxUX0tFWSwgdXNlcklkKTtcbiAgICAgIC8vIHdpbmRvdy5kaXNwYXRjaEV2ZW50IGlzIGhhbmRsZWQgYnkgdXNlTG9jYWxTdG9yYWdlIG5vd1xuICAgICAgcmV0dXJuIHVzZXJJZDtcbiAgICB9LFxuICAgIFtzZXRJdGVtLCBVU0VSX0lEX0RFRkFVTFRfS0VZXVxuICApO1xuXG4gIGNvbnN0IHNldFVzZXJJZE92ZXJyaWRlSW5Mb2NhbFN0b3JhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAodXNlcklkOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgTG9nZ2VyLmxvZ0luZm8oXG4gICAgICAgIGBzZXRVc2VySWRPdmVycmlkZUluTG9jYWxTdG9yYWdlIC0gU2V0dGluZyB1c2VyX2lkPSR7dXNlcklkfWBcbiAgICAgICk7XG4gICAgICBzZXRJdGVtKFVTRVJfSURfT1ZFUlJJREVfS0VZLCB1c2VySWQpO1xuICAgICAgLy8gd2luZG93LmRpc3BhdGNoRXZlbnQgaXMgaGFuZGxlZCBieSB1c2VMb2NhbFN0b3JhZ2Ugbm93XG4gICAgICByZXR1cm4gdXNlcklkO1xuICAgIH0sXG4gICAgW3NldEl0ZW0sIFVTRVJfSURfT1ZFUlJJREVfS0VZXVxuICApO1xuXG4gIGNvbnN0IGNsZWFyVXNlcklkT3ZlcnJpZGVJbkxvY2FsU3RvcmFnZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBMb2dnZXIubG9nSW5mbyhgY2xlYXJVc2VySWRPdmVycmlkZUluTG9jYWxTdG9yYWdlIC0gQ2xlYXJpbmcgdXNlcl9pZGApO1xuICAgIC8vIExvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0TG9jYWxTdG9yYWdlKCk/LnJlbW92ZUl0ZW0oVVNFUl9JRF9PVkVSUklERV9LRVkpO1xuICAgIC8vIHdpbmRvdy5kaXNwYXRjaEV2ZW50IGlzIGhhbmRsZWQgYnkgdXNlTG9jYWxTdG9yYWdlIG5vd1xuICAgIHNldEl0ZW0oVVNFUl9JRF9PVkVSUklERV9LRVksIFwiXCIpOyAvLyBTZXQgdG8gZW1wdHkgc3RyaW5nIHRvIGNsZWFyXG4gIH0sIFtzZXRJdGVtLCBVU0VSX0lEX09WRVJSSURFX0tFWV0pO1xuXG4gIGNvbnN0IGdldFVzZXJJZE9yRGVmYXVsdCA9IHVzZUNhbGxiYWNrKCgpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHVzZXJJZE92ZXJyaWRlID0gZ2V0VXNlcklkT3ZlcnJpZGVGcm9tTG9jYWxTdG9yYWdlKCk7XG4gICAgaWYgKHVzZXJJZE92ZXJyaWRlKSB7XG4gICAgICByZXR1cm4gdXNlcklkT3ZlcnJpZGU7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFVzZXJJZCA9IGdldFVzZXJJZERlZmF1bHRGcm9tTG9jYWxTdG9yYWdlKCk7XG4gICAgaWYgKGRlZmF1bHRVc2VySWQpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VXNlcklkO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRVc2VySWREZWZhdWx0SW5Mb2NhbFN0b3JhZ2UoYHNwaWZmeS11c2VyLWlkLSR7dXVpZCgpfWApO1xuICB9LCBbXG4gICAgZ2V0VXNlcklkT3ZlcnJpZGVGcm9tTG9jYWxTdG9yYWdlLFxuICAgIGdldFVzZXJJZERlZmF1bHRGcm9tTG9jYWxTdG9yYWdlLFxuICAgIHNldFVzZXJJZERlZmF1bHRJbkxvY2FsU3RvcmFnZSxcbiAgXSk7XG5cbiAgY29uc3QgaWRlbnRpZnlVc2VyID0gdXNlQ2FsbGJhY2soYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGlmICghaXNSZWFkeSkge1xuICAgICAgTG9nZ2VyLmxvZ1dhcm4oXG4gICAgICAgIFwiW1VzZXJJZGVudGl0eUNvbnRleHRdIENvbnRleHQgbm90IHJlYWR5LCBza2lwcGluZyBpZGVudGlmeVVzZXJcIixcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBUZW1wb3JhcmlseSBjb21tZW50ZWQgb3V0IHVudGlsIFdpbmRvd0RhdGFMYXllclNlcnZpY2UgaXMgcmVzb2x2ZWRcbiAgICAgIC8vIGNvbnN0IGNkcFVzZXJJZCA9IFdpbmRvd0RhdGFMYXllclNlcnZpY2UuZ2V0R29vZ2xlQW5hbHl0aWNzQ2xpZW50SWQoKTtcbiAgICAgIGNvbnN0IGNkcFVzZXJJZCA9IFwiVU5LTk9XTl9DRFBfVVNFUl9JRFwiOyAvLyBQbGFjZWhvbGRlclxuICAgICAgY29uc3QgdXNlcklkID0gZ2V0VXNlcklkT3JEZWZhdWx0KCk7XG4gICAgICBjb25zdCB1c2VyQWdlbnREZXRhaWxzID0gZ2V0VXNlckFnZW50RGV0YWlscygpO1xuXG4gICAgICBpZiAoIWNkcFVzZXJJZCkge1xuICAgICAgICBMb2dnZXIubG9nV2FybihcbiAgICAgICAgICBcIltzcGlmZnktYWldIE5vIEdBIENsaWVudCBJRCBmb3VuZCwgc2tpcHBpbmcgaWRlbnRpZnlVc2VyXCIsXG4gICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuaWRlbnRpZnlVc2VyKHVzZXJJZCwgY2RwVXNlcklkLCB1c2VyQWdlbnREZXRhaWxzKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKFwiW3NwaWZmeS1haV0gRXJyb3IgaWRlbnRpZnlpbmcgdXNlclwiLCBlcnJvcik7XG4gICAgfVxuICB9LCBbaXNSZWFkeSwgZ2V0VXNlcklkT3JEZWZhdWx0XSk7XG5cbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBpZGVudGlmeVVzZXIsXG4gICAgICBnZXRVc2VySWRPckRlZmF1bHQsXG4gICAgICBnZXRVc2VySWRPdmVycmlkZUZyb21Mb2NhbFN0b3JhZ2UsXG4gICAgICBnZXRVc2VySWREZWZhdWx0RnJvbUxvY2FsU3RvcmFnZSxcbiAgICAgIHNldFVzZXJJZERlZmF1bHRJbkxvY2FsU3RvcmFnZSxcbiAgICAgIHNldFVzZXJJZE92ZXJyaWRlSW5Mb2NhbFN0b3JhZ2UsXG4gICAgICBjbGVhclVzZXJJZE92ZXJyaWRlSW5Mb2NhbFN0b3JhZ2UsXG4gICAgICBpc1JlYWR5LFxuICAgIH0pLFxuICAgIFtcbiAgICAgIGlkZW50aWZ5VXNlcixcbiAgICAgIGdldFVzZXJJZE9yRGVmYXVsdCxcbiAgICAgIGdldFVzZXJJZE92ZXJyaWRlRnJvbUxvY2FsU3RvcmFnZSxcbiAgICAgIGdldFVzZXJJZERlZmF1bHRGcm9tTG9jYWxTdG9yYWdlLFxuICAgICAgc2V0VXNlcklkRGVmYXVsdEluTG9jYWxTdG9yYWdlLFxuICAgICAgc2V0VXNlcklkT3ZlcnJpZGVJbkxvY2FsU3RvcmFnZSxcbiAgICAgIGNsZWFyVXNlcklkT3ZlcnJpZGVJbkxvY2FsU3RvcmFnZSxcbiAgICAgIGlzUmVhZHksXG4gICAgXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPFVzZXJJZGVudGl0eUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1VzZXJJZGVudGl0eUNvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlVXNlcklkZW50aXR5ID0gKCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChVc2VySWRlbnRpdHlDb250ZXh0KTtcbiAgY29uc3Qgc2V0VXNlcklkID0gdXNlU2V0QXRvbSh1c2VySWRBdG9tKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRVc2VySWQoY29udGV4dD8uZ2V0VXNlcklkT3JEZWZhdWx0KCkgPz8gXCJcIik7XG4gIH0sIFtjb250ZXh0LCBzZXRVc2VySWRdKTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJ1c2VVc2VySWRlbnRpdHkgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIFVzZXJJZGVudGl0eVByb3ZpZGVyXCJcbiAgICApO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFrQkEsTUFBTSw0QkFBMkM7Q0FFL0MsTUFBTSxTQURXLElBQUksVUFBVSxDQUNQLFdBQVc7QUFFbkMsUUFBTztFQUNMLElBQUksUUFBUSxJQUFJO0VBQ2hCLFdBQVcsUUFBUSxJQUFJO0VBQ3ZCLGFBQWEsUUFBUSxRQUFRO0VBQzdCLG9CQUFvQixRQUFRLFFBQVE7RUFDcEMsYUFBYSxRQUFRLFFBQVE7RUFDN0IsU0FBUyxRQUFRLFNBQVM7RUFDMUIsZ0JBQWdCLFFBQVEsU0FBUztFQUNqQyxXQUFXLFFBQVE7RUFDcEI7O0FBY0gsTUFBTSxzQkFBc0IsY0FDMUIsT0FDRDtBQUVELE1BQWFBLHdCQUFpRSxFQUM1RSxlQUNJO0NBQ0osTUFBTSxFQUNKLFNBQ0EsU0FDQSxhQUFhLHdCQUNYLGlCQUFpQjtDQUVyQixNQUFNLENBQUMsU0FBUyxjQUFjLFNBQVMsTUFBTTtBQUU3QyxpQkFBZ0I7QUFHZCxhQUFXLG9CQUFvQjtJQUM5QixDQUFDLG9CQUFvQixDQUFDO0NBRXpCLE1BQU0sdUJBQXVCO0NBQzdCLE1BQU0sc0JBQXNCO0NBRTVCLE1BQU0sb0NBQW9DLGtCQUV6QjtBQUNmLFNBQU8sUUFBUSxxQkFBcUIsSUFBSTtJQUN2QyxDQUFDLFFBQVEsQ0FBQztDQUViLE1BQU0sbUNBQW1DLGtCQUV4QjtBQUNmLFNBQU8sUUFBUSxvQkFBb0IsSUFBSTtJQUN0QyxDQUFDLFFBQVEsQ0FBQztDQUViLE1BQU0saUNBQWlDLGFBQ3BDLFdBQTJCO0FBQzFCLGlCQUFPLFFBQ0wsb0RBQW9ELFNBQ3JEO0FBQ0QsVUFBUSxxQkFBcUIsT0FBTztBQUVwQyxTQUFPO0lBRVQsQ0FBQyxTQUFTLG9CQUFvQixDQUMvQjtDQUVELE1BQU0sa0NBQWtDLGFBQ3JDLFdBQTJCO0FBQzFCLGlCQUFPLFFBQ0wscURBQXFELFNBQ3REO0FBQ0QsVUFBUSxzQkFBc0IsT0FBTztBQUVyQyxTQUFPO0lBRVQsQ0FBQyxTQUFTLHFCQUFxQixDQUNoQztDQUVELE1BQU0sb0NBQW9DLGtCQUFrQjtBQUMxRCxpQkFBTyxRQUFRLHVEQUF1RDtBQUd0RSxVQUFRLHNCQUFzQixHQUFHO0lBQ2hDLENBQUMsU0FBUyxxQkFBcUIsQ0FBQztDQUVuQyxNQUFNLHFCQUFxQixrQkFBMEI7RUFDbkQsTUFBTSxpQkFBaUIsbUNBQW1DO0FBQzFELE1BQUksZUFDRixRQUFPO0VBR1QsTUFBTSxnQkFBZ0Isa0NBQWtDO0FBQ3hELE1BQUksY0FDRixRQUFPO0FBR1QsU0FBTywrQkFBK0Isa0JBQWtCQyxJQUFNLEdBQUc7SUFDaEU7RUFDRDtFQUNBO0VBQ0E7RUFDRCxDQUFDO0NBRUYsTUFBTSxlQUFlLFlBQVksWUFBMkI7QUFDMUQsTUFBSSxDQUFDLFNBQVM7QUFDWixrQkFBTyxRQUNMLGtFQUNBLE9BQ0Q7QUFDRDs7QUFHRixNQUFJO0dBR0YsTUFBTSxZQUFZO0dBQ2xCLE1BQU0sU0FBUyxvQkFBb0I7R0FDbkMsTUFBTSxtQkFBbUIscUJBQXFCO0FBVTlDLFNBQU1DLHFCQUFrQixhQUFhLFFBQVEsV0FBVyxpQkFBaUI7V0FDbEUsT0FBTztBQUNkLGtCQUFPLFNBQVMsc0NBQXNDLE1BQU07O0lBRTdELENBQUMsU0FBUyxtQkFBbUIsQ0FBQztDQUVqQyxNQUFNLFFBQVEsZUFDTDtFQUNMO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRCxHQUNEO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNELENBQ0Y7QUFFRCxRQUNFLG9CQUFDLG9CQUFvQjtFQUFnQjtFQUNsQztHQUM0Qjs7QUFJbkMsTUFBYSx3QkFBd0I7Q0FDbkMsTUFBTSxVQUFVLFdBQVcsb0JBQW9CO0NBQy9DLE1BQU0sWUFBWSxXQUFXLFdBQVc7QUFDeEMsaUJBQWdCO0FBQ2QsWUFBVSxTQUFTLG9CQUFvQixJQUFJLEdBQUc7SUFDN0MsQ0FBQyxTQUFTLFVBQVUsQ0FBQztBQUN4QixLQUFJLENBQUMsUUFDSCxPQUFNLElBQUksTUFDUiw2REFDRDtBQUVILFFBQU8ifQ==