@envive-ai/react-hooks 0.3.17 → 0.3.19

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 (193) hide show
  1. package/dist/application/commerce-api.cjs +14 -13
  2. package/dist/application/commerce-api.js +14 -13
  3. package/dist/application/logging/logger.cjs +16 -10
  4. package/dist/application/logging/logger.js +16 -10
  5. package/dist/application/models/guards/api/isApiFormResponse.cjs +9 -8
  6. package/dist/application/models/guards/api/isApiFormResponse.js +9 -8
  7. package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.cjs +6 -5
  8. package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.js +6 -5
  9. package/dist/application/models/guards/api/isApiOrderResponseAttributes.cjs +19 -18
  10. package/dist/application/models/guards/api/isApiOrderResponseAttributes.js +19 -18
  11. package/dist/application/models/guards/api/isApiOrgConfigResults.cjs +27 -26
  12. package/dist/application/models/guards/api/isApiOrgConfigResults.js +27 -26
  13. package/dist/application/models/guards/api/isApiOrganizationConfig.cjs +23 -22
  14. package/dist/application/models/guards/api/isApiOrganizationConfig.js +23 -22
  15. package/dist/application/models/guards/api/isApiProductResponseAttributes.cjs +12 -11
  16. package/dist/application/models/guards/api/isApiProductResponseAttributes.js +12 -11
  17. package/dist/application/models/guards/api/isApiResponse.cjs +7 -6
  18. package/dist/application/models/guards/api/isApiResponse.js +7 -6
  19. package/dist/application/models/guards/graphQL/isGraphQLColorsConfig.cjs +5 -4
  20. package/dist/application/models/guards/graphQL/isGraphQLColorsConfig.js +5 -4
  21. package/dist/application/models/validators/validateGraphQLFrontendConfig.cjs +15 -14
  22. package/dist/application/models/validators/validateGraphQLFrontendConfig.js +15 -14
  23. package/dist/application/utils/analyticsUtils.cjs +4 -3
  24. package/dist/application/utils/analyticsUtils.js +4 -3
  25. package/dist/application/utils/nextMessageRequestToApiRequest.cjs +3 -1
  26. package/dist/application/utils/nextMessageRequestToApiRequest.js +3 -1
  27. package/dist/application/utils/widgetTextRequestToApiRequest.cjs +2 -2
  28. package/dist/application/utils/widgetTextRequestToApiRequest.js +2 -2
  29. package/dist/atoms/app/index.d.cts +7 -7
  30. package/dist/atoms/app/variant.cjs +3 -2
  31. package/dist/atoms/app/variant.js +3 -2
  32. package/dist/atoms/chat/chatState.d.cts +18 -18
  33. package/dist/atoms/chat/chatState.d.ts +18 -18
  34. package/dist/atoms/chat/form.d.cts +2 -2
  35. package/dist/atoms/chat/form.d.ts +2 -2
  36. package/dist/atoms/chat/index.d.cts +2 -2
  37. package/dist/atoms/chat/index.d.ts +2 -2
  38. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  39. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  40. package/dist/atoms/chat/messageQueue.d.cts +6 -6
  41. package/dist/atoms/chat/messageQueue.d.ts +6 -6
  42. package/dist/atoms/chat/performanceMetrics.cjs +3 -2
  43. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  44. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  45. package/dist/atoms/chat/performanceMetrics.js +3 -2
  46. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  47. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  48. package/dist/atoms/chat/replies.d.cts +2 -2
  49. package/dist/atoms/chat/replies.d.ts +3 -3
  50. package/dist/atoms/chat/suggestions.d.cts +2 -2
  51. package/dist/atoms/chat/suggestions.d.ts +2 -2
  52. package/dist/atoms/envive/enviveConfig.cjs +5 -4
  53. package/dist/atoms/envive/enviveConfig.d.cts +13 -13
  54. package/dist/atoms/envive/enviveConfig.d.ts +13 -13
  55. package/dist/atoms/envive/enviveConfig.js +5 -4
  56. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  57. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  58. package/dist/atoms/org/customerService.d.cts +6 -6
  59. package/dist/atoms/org/customerService.d.ts +6 -6
  60. package/dist/atoms/org/graphqlConfig.d.cts +4 -4
  61. package/dist/atoms/org/graphqlConfig.d.ts +4 -4
  62. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  63. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  64. package/dist/atoms/org/orgAnalyticsConfig.d.cts +5 -5
  65. package/dist/atoms/org/orgAnalyticsConfig.d.ts +5 -5
  66. package/dist/atoms/search/chatSearch.d.cts +17 -17
  67. package/dist/atoms/search/chatSearch.d.ts +17 -17
  68. package/dist/atoms/search/searchAPI.d.cts +13 -13
  69. package/dist/atoms/search/searchAPI.d.ts +13 -13
  70. package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
  71. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  72. package/dist/contexts/amplitudeContext/amplitudeContext.cjs +4 -3
  73. package/dist/contexts/amplitudeContext/amplitudeContext.js +3 -2
  74. package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +26 -15
  75. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.cts +2 -4
  76. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.ts +2 -4
  77. package/dist/contexts/enviveConfigContext/enviveConfigContext.js +29 -16
  78. package/dist/contexts/enviveConfigContext/index.cjs +2 -1
  79. package/dist/contexts/enviveConfigContext/index.d.cts +2 -1
  80. package/dist/contexts/enviveConfigContext/index.d.ts +2 -1
  81. package/dist/contexts/enviveConfigContext/index.js +2 -1
  82. package/dist/contexts/enviveConfigContext/useEnviveConfig.cjs +12 -0
  83. package/dist/contexts/enviveConfigContext/useEnviveConfig.d.cts +7 -0
  84. package/dist/contexts/enviveConfigContext/useEnviveConfig.d.ts +7 -0
  85. package/dist/contexts/enviveConfigContext/useEnviveConfig.js +11 -0
  86. package/dist/contexts/enviveContext/WindowChatToggleBinder.cjs +7 -5
  87. package/dist/contexts/enviveContext/WindowChatToggleBinder.js +6 -4
  88. package/dist/contexts/enviveContext/enviveContext.cjs +34 -39
  89. package/dist/contexts/enviveContext/enviveContext.js +35 -40
  90. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +7 -6
  91. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +7 -6
  92. package/dist/contexts/graphqlContext/graphqlContext.cjs +8 -7
  93. package/dist/contexts/graphqlContext/graphqlContext.js +8 -7
  94. package/dist/contexts/hardcopyContext/hardcopyContext.cjs +9 -8
  95. package/dist/contexts/hardcopyContext/hardcopyContext.js +9 -8
  96. package/dist/contexts/localStorageContext/localStorageContext.cjs +4 -3
  97. package/dist/contexts/localStorageContext/localStorageContext.js +4 -3
  98. package/dist/contexts/pageContext/pageContext.cjs +3 -2
  99. package/dist/contexts/pageContext/pageContext.js +3 -2
  100. package/dist/contexts/salesAgentContext/chatAPI.cjs +3 -2
  101. package/dist/contexts/salesAgentContext/chatAPI.js +3 -2
  102. package/dist/contexts/salesAgentContext/salesAgentContext.cjs +4 -3
  103. package/dist/contexts/salesAgentContext/salesAgentContext.js +4 -3
  104. package/dist/contexts/salesAgentContext/salesAgentService.cjs +3 -2
  105. package/dist/contexts/salesAgentContext/salesAgentService.js +3 -2
  106. package/dist/contexts/searchContext/searchContext.cjs +8 -6
  107. package/dist/contexts/searchContext/searchContext.js +7 -5
  108. package/dist/contexts/sessionStorageContext/sessionStorageContext.cjs +3 -2
  109. package/dist/contexts/sessionStorageContext/sessionStorageContext.js +3 -2
  110. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  111. package/dist/contexts/types.d.cts +1 -1
  112. package/dist/contexts/types.d.ts +1 -1
  113. package/dist/contexts/typesV3.d.cts +1 -1
  114. package/dist/contexts/typesV3.d.ts +1 -1
  115. package/dist/contexts/uiConfigContext/index.cjs +0 -1
  116. package/dist/contexts/uiConfigContext/index.d.cts +2 -2
  117. package/dist/contexts/uiConfigContext/index.d.ts +2 -2
  118. package/dist/contexts/uiConfigContext/index.js +2 -2
  119. package/dist/contexts/uiConfigContext/uiConfigContext.cjs +13 -30
  120. package/dist/contexts/uiConfigContext/uiConfigContext.d.cts +5 -9
  121. package/dist/contexts/uiConfigContext/uiConfigContext.d.ts +5 -9
  122. package/dist/contexts/uiConfigContext/uiConfigContext.js +14 -29
  123. package/dist/contexts/userIdentityContext/userIdentityContext.cjs +7 -7
  124. package/dist/contexts/userIdentityContext/userIdentityContext.js +7 -7
  125. package/dist/contexts/widgetConfigContext/widgetConfigContext.cjs +4 -3
  126. package/dist/contexts/widgetConfigContext/widgetConfigContext.js +4 -3
  127. package/dist/hooks/CustomerSupportHandoff/useCustomerSupportHandoff.cjs +4 -3
  128. package/dist/hooks/CustomerSupportHandoff/useCustomerSupportHandoff.js +4 -3
  129. package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.d.cts +2 -2
  130. package/dist/hooks/WidgetInteraction/useWidgetInteraction.cjs +2 -2
  131. package/dist/hooks/WidgetInteraction/useWidgetInteraction.js +2 -2
  132. package/dist/hooks/WidgetInteraction/utils.cjs +2 -1
  133. package/dist/hooks/WidgetInteraction/utils.js +2 -1
  134. package/dist/hooks/utils.d.ts +1 -1
  135. package/dist/services/amplitudeService/amplitudeService.cjs +8 -7
  136. package/dist/services/amplitudeService/amplitudeService.js +8 -7
  137. package/dist/services/ga4ProjectionService/ga4ProjectionService.cjs +3 -2
  138. package/dist/services/ga4ProjectionService/ga4ProjectionService.js +3 -2
  139. package/dist/services/userIdentityService/userIdentityService.cjs +8 -7
  140. package/dist/services/userIdentityService/userIdentityService.js +8 -7
  141. package/package.json +2 -2
  142. package/src/application/commerce-api.ts +14 -12
  143. package/src/application/logging/logger.ts +33 -8
  144. package/src/application/models/guards/api/isApiFormResponse.ts +9 -7
  145. package/src/application/models/guards/api/isApiFormSubmittedResponseAttributes.ts +6 -4
  146. package/src/application/models/guards/api/isApiOrderResponseAttributes.ts +19 -17
  147. package/src/application/models/guards/api/isApiOrgConfigResults.ts +40 -48
  148. package/src/application/models/guards/api/isApiOrganizationConfig.ts +25 -38
  149. package/src/application/models/guards/api/isApiProductResponseAttributes.ts +12 -10
  150. package/src/application/models/guards/api/isApiResponse.ts +7 -5
  151. package/src/application/models/guards/graphQL/isGraphQLColorsConfig.ts +5 -3
  152. package/src/application/models/validators/validateGraphQLFrontendConfig.ts +15 -13
  153. package/src/application/utils/analyticsUtils.ts +4 -4
  154. package/src/application/utils/nextMessageRequestToApiRequest.ts +2 -0
  155. package/src/application/utils/widgetTextRequestToApiRequest.ts +1 -2
  156. package/src/atoms/app/variant.ts +3 -1
  157. package/src/atoms/chat/performanceMetrics.ts +3 -1
  158. package/src/atoms/envive/enviveConfig.ts +5 -3
  159. package/src/contexts/amplitudeContext/amplitudeContext.tsx +1 -1
  160. package/src/contexts/enviveConfigContext/__tests__/enviveConfigContext.test.tsx +4 -3
  161. package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +50 -35
  162. package/src/contexts/enviveConfigContext/index.ts +1 -0
  163. package/src/contexts/enviveConfigContext/useEnviveConfig.ts +9 -0
  164. package/src/contexts/enviveContext/WindowChatToggleBinder.tsx +6 -4
  165. package/src/contexts/enviveContext/enviveContext.tsx +40 -45
  166. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +11 -12
  167. package/src/contexts/graphqlContext/__tests__/graphqlContext.test.tsx +4 -4
  168. package/src/contexts/graphqlContext/graphqlContext.tsx +8 -6
  169. package/src/contexts/hardcopyContext/hardcopyContext.tsx +9 -7
  170. package/src/contexts/localStorageContext/__tests__/localStorageContext.test.tsx +6 -6
  171. package/src/contexts/localStorageContext/localStorageContext.tsx +4 -2
  172. package/src/contexts/pageContext/__tests__/pageContext.test.tsx +5 -5
  173. package/src/contexts/pageContext/pageContext.tsx +3 -1
  174. package/src/contexts/salesAgentContext/chatAPI.ts +5 -5
  175. package/src/contexts/salesAgentContext/salesAgentContext.tsx +4 -2
  176. package/src/contexts/salesAgentContext/salesAgentService.ts +4 -2
  177. package/src/contexts/searchContext/__tests__/searchContext.test.tsx +15 -12
  178. package/src/contexts/searchContext/searchContext.tsx +6 -4
  179. package/src/contexts/sessionStorageContext/sessionStorageContext.tsx +3 -1
  180. package/src/contexts/uiConfigContext/__tests__/uiConfigContext.test.tsx +7 -32
  181. package/src/contexts/uiConfigContext/uiConfigContext.tsx +17 -29
  182. package/src/contexts/userIdentityContext/__tests__/userIdentityContext.test.tsx +5 -5
  183. package/src/contexts/userIdentityContext/userIdentityContext.tsx +7 -6
  184. package/src/contexts/widgetConfigContext/__tests__/widgetConfigContext.test.tsx +7 -7
  185. package/src/contexts/widgetConfigContext/widgetConfigContext.tsx +4 -2
  186. package/src/hooks/CustomerSupportHandoff/useCustomerSupportHandoff.ts +4 -2
  187. package/src/hooks/Search/__tests__/useSearch.test.tsx +14 -8
  188. package/src/hooks/WidgetInteraction/useWidgetInteraction.ts +3 -2
  189. package/src/hooks/WidgetInteraction/utils.ts +3 -1
  190. package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +3 -3
  191. package/src/services/amplitudeService/amplitudeService.ts +8 -6
  192. package/src/services/ga4ProjectionService/ga4ProjectionService.ts +3 -1
  193. package/src/services/userIdentityService/userIdentityService.ts +8 -8
@@ -2,6 +2,7 @@ const require_logger = require('../../application/logging/logger.cjs');
2
2
  const require_ga4EventSchema = require('./ga4EventSchema.cjs');
3
3
 
4
4
  //#region src/services/ga4ProjectionService/ga4ProjectionService.ts
5
+ const logger = new require_logger.default("ga4ProjectionService");
5
6
  const filterToSchema = (eventProps, allowedFields) => {
6
7
  const result = {};
7
8
  for (const field of allowedFields) if (field in eventProps) result[field] = eventProps[field];
@@ -62,10 +63,10 @@ const projectToGA4 = (eventName, eventProps) => {
62
63
  ...truncatedParams
63
64
  });
64
65
  } catch (err) {
65
- require_logger.default.logError("[envive-ai] Error projecting event to GA4", err, { eventName });
66
+ logger.logError("Error projecting event to GA4", err, { eventName });
66
67
  }
67
68
  };
68
69
 
69
70
  //#endregion
70
71
  exports.projectToGA4 = projectToGA4;
71
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2E0UHJvamVjdGlvblNlcnZpY2UuY2pzIiwibmFtZXMiOlsicmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiIsIkdBNF9FVkVOVF9TQ0hFTUEiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZ2E0UHJvamVjdGlvblNlcnZpY2UvZ2E0UHJvamVjdGlvblNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgRW52aXZlTWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJy4uL2FtcGxpdHVkZVNlcnZpY2UvZXZlbnROYW1lcyc7XG5pbXBvcnQgeyBHQTRQcm9qZWN0ZWRFdmVudENvbmZpZywgR0E0X0VWRU5UX1NDSEVNQSB9IGZyb20gJy4vZ2E0RXZlbnRTY2hlbWEnO1xuXG5jb25zdCBmaWx0ZXJUb1NjaGVtYSA9IChcbiAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGFsbG93ZWRGaWVsZHM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgZmllbGQgb2YgYWxsb3dlZEZpZWxkcykge1xuICAgIGlmIChmaWVsZCBpbiBldmVudFByb3BzKSB7XG4gICAgICByZXN1bHRbZmllbGRdID0gZXZlbnRQcm9wc1tmaWVsZF07XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBcImNvbnRleHQucGFnZV90eXBlXCIg4oaSIFwiY29udGV4dF9wYWdlX3R5cGVcIlxuY29uc3QgZmxhdHRlbkRvdEtleXMgPSAob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgcmVzdWx0W2tleS5yZXBsYWNlKC9cXC4vZywgJ18nKV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gT21pdCBjb250ZXh0LnBhZ2VfaWQgZm9yIG5vbi1wZHAvcGxwIHBhZ2UgdHlwZXMuIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGZvciBjb250ZXh0LnBhZ2VfaWQgaXM6XG4vLyBQRFA6IHByb2R1Y3RfaWRcbi8vIFBMUDogcGxwX2lkXG4vLyBTZWFyY2g6IHNlYXJjaCBxdWVyeVxuLy8gT3RoZXI6IHBhZ2UgdXJsXG4vLyBXZSB3YW50IHRvIG9taXQgYWxsIGJ1dCBwZHAgYW5kIHBscCBwYWdlIHR5cGVzIHRvIHByb3ZpZGUgYSBjbGVhciwgY29uc2lzdGVudCBpbnRlcmZhY2UgZm9yIG1lcmNoYW50cy5cbmNvbnN0IHNhbml0aXplUGFnZUlkID0gKGZpbHRlcmVkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcGFnZVR5cGUgPSBmaWx0ZXJlZFsnY29udGV4dC5wYWdlX3R5cGUnXTtcbiAgaWYgKHBhZ2VUeXBlID09PSAncGRwJyB8fCBwYWdlVHlwZSA9PT0gJ3BscCcpIHtcbiAgICByZXR1cm4gZmlsdGVyZWQ7XG4gIH1cbiAgY29uc3QgcmVzdCA9IHsgLi4uZmlsdGVyZWQgfTtcbiAgZGVsZXRlIHJlc3RbJ2NvbnRleHQucGFnZV9pZCddO1xuICByZXR1cm4gcmVzdDtcbn07XG5cbi8vIEV4dHJhY3Qgd2hpdGVsaXN0ZWQgc3ViLWZpZWxkcyBmcm9tIHRyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uX2RhdGFcbmNvbnN0IHByb2plY3RXaWRnZXRJbnRlcmFjdGlvbkRhdGEgPSAoXG4gIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBjb25maWc6IEdBNFByb2plY3RlZEV2ZW50Q29uZmlnLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBpZiAoIWNvbmZpZy53aWRnZXRJbnRlcmFjdGlvbkRhdGFQcm9qZWN0aW9ucykge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGludGVyYWN0aW9uID0gZXZlbnRQcm9wc1sndHJpZ2dlci53aWRnZXRfaW50ZXJhY3Rpb24nXTtcbiAgaWYgKHR5cGVvZiBpbnRlcmFjdGlvbiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBwcm9qZWN0aW9uTWFwID0gY29uZmlnLndpZGdldEludGVyYWN0aW9uRGF0YVByb2plY3Rpb25zW2ludGVyYWN0aW9uXTtcbiAgaWYgKCFwcm9qZWN0aW9uTWFwKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgaW50ZXJhY3Rpb25EYXRhID0gZXZlbnRQcm9wc1sndHJpZ2dlci53aWRnZXRfaW50ZXJhY3Rpb25fZGF0YSddO1xuICBpZiAoXG4gICAgaW50ZXJhY3Rpb25EYXRhID09PSBudWxsIHx8XG4gICAgaW50ZXJhY3Rpb25EYXRhID09PSB1bmRlZmluZWQgfHxcbiAgICB0eXBlb2YgaW50ZXJhY3Rpb25EYXRhICE9PSAnb2JqZWN0J1xuICApIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBkYXRhID0gaW50ZXJhY3Rpb25EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2dhS2V5LCBzb3VyY2VGaWVsZF0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdGlvbk1hcCkpIHtcbiAgICBpZiAoc291cmNlRmllbGQgaW4gZGF0YSkge1xuICAgICAgcmVzdWx0W2dhS2V5XSA9IGRhdGFbc291cmNlRmllbGRdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgdHJ1bmNhdGVTdHJpbmcgPSAodmFsdWU6IHVua25vd24pOiB1bmtub3duID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gMTAwKSB7XG4gICAgcmV0dXJuIGAke3ZhbHVlLnN1YnN0cmluZygwLCA5Nyl9Li4uYDtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59O1xuXG5jb25zdCB0cnVuY2F0ZVZhbHVlcyA9IChvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICByZXN1bHRba2V5XSA9IHRydW5jYXRlU3RyaW5nKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgcHVzaFRvRGF0YUxheWVyID0gKGdhRXZlbnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCA9PiB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGF0YUxheWVyKSB7XG4gICAgd2luZG93LmRhdGFMYXllci5wdXNoKGdhRXZlbnQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcHJvamVjdFRvR0E0ID0gKFxuICBldmVudE5hbWU6IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IHZvaWQgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHNjaGVtYUVudHJ5ID0gR0E0X0VWRU5UX1NDSEVNQVtldmVudE5hbWVdO1xuXG4gICAgaWYgKHNjaGVtYUVudHJ5LmdhRXZlbnROYW1lID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnID0gc2NoZW1hRW50cnk7XG4gICAgY29uc3QgcHJvcHMgPSBldmVudFByb3BzID8/IHt9O1xuXG4gICAgbGV0IGZpbHRlcmVkID0gZmlsdGVyVG9TY2hlbWEocHJvcHMsIGNvbmZpZy5hbGxvd2VkRmllbGRzKTtcbiAgICBmaWx0ZXJlZCA9IHNhbml0aXplUGFnZUlkKGZpbHRlcmVkKTtcblxuICAgIGNvbnN0IGludGVyYWN0aW9uRmllbGRzID0gcHJvamVjdFdpZGdldEludGVyYWN0aW9uRGF0YShwcm9wcywgY29uZmlnKTtcblxuICAgIGNvbnN0IGZsYXRQYXJhbXMgPSB7XG4gICAgICAuLi5mbGF0dGVuRG90S2V5cyhmaWx0ZXJlZCksXG4gICAgICAuLi5pbnRlcmFjdGlvbkZpZWxkcyxcbiAgICB9O1xuXG4gICAgY29uc3QgdHJ1bmNhdGVkUGFyYW1zID0gdHJ1bmNhdGVWYWx1ZXMoZmxhdFBhcmFtcyk7XG5cbiAgICBwdXNoVG9EYXRhTGF5ZXIoe1xuICAgICAgZXZlbnQ6IGNvbmZpZy5nYUV2ZW50TmFtZSxcbiAgICAgIC4uLnRydW5jYXRlZFBhcmFtcyxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdbZW52aXZlLWFpXSBFcnJvciBwcm9qZWN0aW5nIGV2ZW50IHRvIEdBNCcsIGVyciwge1xuICAgICAgZXZlbnROYW1lLFxuICAgIH0pO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBSUEsTUFBTSxrQkFDSixZQUNBLGtCQUM0QjtDQUM1QixNQUFNQSxTQUFrQyxFQUFFO0FBQzFDLE1BQUssTUFBTSxTQUFTLGNBQ2xCLEtBQUksU0FBUyxXQUNYLFFBQU8sU0FBUyxXQUFXO0FBRy9CLFFBQU87O0FBSVQsTUFBTSxrQkFBa0IsUUFBMEQ7Q0FDaEYsTUFBTUEsU0FBa0MsRUFBRTtBQUMxQyxNQUFLLE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxRQUFRLElBQUksQ0FDNUMsUUFBTyxJQUFJLFFBQVEsT0FBTyxJQUFJLElBQUk7QUFFcEMsUUFBTzs7QUFTVCxNQUFNLGtCQUFrQixhQUErRDtDQUNyRixNQUFNLFdBQVcsU0FBUztBQUMxQixLQUFJLGFBQWEsU0FBUyxhQUFhLE1BQ3JDLFFBQU87Q0FFVCxNQUFNLE9BQU8sRUFBRSxHQUFHLFVBQVU7QUFDNUIsUUFBTyxLQUFLO0FBQ1osUUFBTzs7QUFJVCxNQUFNLGdDQUNKLFlBQ0EsV0FDNEI7QUFDNUIsS0FBSSxDQUFDLE9BQU8saUNBQ1YsUUFBTyxFQUFFO0NBR1gsTUFBTSxjQUFjLFdBQVc7QUFDL0IsS0FBSSxPQUFPLGdCQUFnQixTQUN6QixRQUFPLEVBQUU7Q0FHWCxNQUFNLGdCQUFnQixPQUFPLGlDQUFpQztBQUM5RCxLQUFJLENBQUMsY0FDSCxRQUFPLEVBQUU7Q0FHWCxNQUFNLGtCQUFrQixXQUFXO0FBQ25DLEtBQ0Usb0JBQW9CLFFBQ3BCLG9CQUFvQixVQUNwQixPQUFPLG9CQUFvQixTQUUzQixRQUFPLEVBQUU7Q0FHWCxNQUFNLE9BQU87Q0FDYixNQUFNQSxTQUFrQyxFQUFFO0FBQzFDLE1BQUssTUFBTSxDQUFDLE9BQU8sZ0JBQWdCLE9BQU8sUUFBUSxjQUFjLENBQzlELEtBQUksZUFBZSxLQUNqQixRQUFPLFNBQVMsS0FBSztBQUd6QixRQUFPOztBQUdULE1BQU0sa0JBQWtCLFVBQTRCO0FBQ2xELEtBQUksT0FBTyxVQUFVLFlBQVksTUFBTSxTQUFTLElBQzlDLFFBQU8sR0FBRyxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUM7QUFFbkMsUUFBTzs7QUFHVCxNQUFNLGtCQUFrQixRQUEwRDtDQUNoRixNQUFNQSxTQUFrQyxFQUFFO0FBQzFDLE1BQUssTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLFFBQVEsSUFBSSxDQUM1QyxRQUFPLE9BQU8sZUFBZSxNQUFNO0FBRXJDLFFBQU87O0FBR1QsTUFBTSxtQkFBbUIsWUFBMkM7QUFDbEUsS0FBSSxPQUFPLFdBQVcsZUFBZSxPQUFPLFVBQzFDLFFBQU8sVUFBVSxLQUFLLFFBQVE7O0FBSWxDLE1BQWEsZ0JBQ1gsV0FDQSxlQUNTO0FBQ1QsS0FBSTtFQUNGLE1BQU0sY0FBY0Msd0NBQWlCO0FBRXJDLE1BQUksWUFBWSxnQkFBZ0IsS0FDOUI7RUFHRixNQUFNLFNBQVM7RUFDZixNQUFNLFFBQVEsY0FBYyxFQUFFO0VBRTlCLElBQUksV0FBVyxlQUFlLE9BQU8sT0FBTyxjQUFjO0FBQzFELGFBQVcsZUFBZSxTQUFTO0VBRW5DLE1BQU0sb0JBQW9CLDZCQUE2QixPQUFPLE9BQU87RUFPckUsTUFBTSxrQkFBa0IsZUFMTDtHQUNqQixHQUFHLGVBQWUsU0FBUztHQUMzQixHQUFHO0dBQ0osQ0FFaUQ7QUFFbEQsa0JBQWdCO0dBQ2QsT0FBTyxPQUFPO0dBQ2QsR0FBRztHQUNKLENBQUM7VUFDSyxLQUFLO0FBQ1oseUJBQU8sU0FBUyw2Q0FBNkMsS0FBSyxFQUNoRSxXQUNELENBQUMifQ==
72
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2E0UHJvamVjdGlvblNlcnZpY2UuY2pzIiwibmFtZXMiOlsiTG9nZ2VyIiwicmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiIsIkdBNF9FVkVOVF9TQ0hFTUEiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZ2E0UHJvamVjdGlvblNlcnZpY2UvZ2E0UHJvamVjdGlvblNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgRW52aXZlTWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJy4uL2FtcGxpdHVkZVNlcnZpY2UvZXZlbnROYW1lcyc7XG5pbXBvcnQgeyBHQTRQcm9qZWN0ZWRFdmVudENvbmZpZywgR0E0X0VWRU5UX1NDSEVNQSB9IGZyb20gJy4vZ2E0RXZlbnRTY2hlbWEnO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCdnYTRQcm9qZWN0aW9uU2VydmljZScpO1xuXG5jb25zdCBmaWx0ZXJUb1NjaGVtYSA9IChcbiAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGFsbG93ZWRGaWVsZHM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgZmllbGQgb2YgYWxsb3dlZEZpZWxkcykge1xuICAgIGlmIChmaWVsZCBpbiBldmVudFByb3BzKSB7XG4gICAgICByZXN1bHRbZmllbGRdID0gZXZlbnRQcm9wc1tmaWVsZF07XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBcImNvbnRleHQucGFnZV90eXBlXCIg4oaSIFwiY29udGV4dF9wYWdlX3R5cGVcIlxuY29uc3QgZmxhdHRlbkRvdEtleXMgPSAob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgcmVzdWx0W2tleS5yZXBsYWNlKC9cXC4vZywgJ18nKV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gT21pdCBjb250ZXh0LnBhZ2VfaWQgZm9yIG5vbi1wZHAvcGxwIHBhZ2UgdHlwZXMuIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGZvciBjb250ZXh0LnBhZ2VfaWQgaXM6XG4vLyBQRFA6IHByb2R1Y3RfaWRcbi8vIFBMUDogcGxwX2lkXG4vLyBTZWFyY2g6IHNlYXJjaCBxdWVyeVxuLy8gT3RoZXI6IHBhZ2UgdXJsXG4vLyBXZSB3YW50IHRvIG9taXQgYWxsIGJ1dCBwZHAgYW5kIHBscCBwYWdlIHR5cGVzIHRvIHByb3ZpZGUgYSBjbGVhciwgY29uc2lzdGVudCBpbnRlcmZhY2UgZm9yIG1lcmNoYW50cy5cbmNvbnN0IHNhbml0aXplUGFnZUlkID0gKGZpbHRlcmVkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcGFnZVR5cGUgPSBmaWx0ZXJlZFsnY29udGV4dC5wYWdlX3R5cGUnXTtcbiAgaWYgKHBhZ2VUeXBlID09PSAncGRwJyB8fCBwYWdlVHlwZSA9PT0gJ3BscCcpIHtcbiAgICByZXR1cm4gZmlsdGVyZWQ7XG4gIH1cbiAgY29uc3QgcmVzdCA9IHsgLi4uZmlsdGVyZWQgfTtcbiAgZGVsZXRlIHJlc3RbJ2NvbnRleHQucGFnZV9pZCddO1xuICByZXR1cm4gcmVzdDtcbn07XG5cbi8vIEV4dHJhY3Qgd2hpdGVsaXN0ZWQgc3ViLWZpZWxkcyBmcm9tIHRyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uX2RhdGFcbmNvbnN0IHByb2plY3RXaWRnZXRJbnRlcmFjdGlvbkRhdGEgPSAoXG4gIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBjb25maWc6IEdBNFByb2plY3RlZEV2ZW50Q29uZmlnLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBpZiAoIWNvbmZpZy53aWRnZXRJbnRlcmFjdGlvbkRhdGFQcm9qZWN0aW9ucykge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGludGVyYWN0aW9uID0gZXZlbnRQcm9wc1sndHJpZ2dlci53aWRnZXRfaW50ZXJhY3Rpb24nXTtcbiAgaWYgKHR5cGVvZiBpbnRlcmFjdGlvbiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBwcm9qZWN0aW9uTWFwID0gY29uZmlnLndpZGdldEludGVyYWN0aW9uRGF0YVByb2plY3Rpb25zW2ludGVyYWN0aW9uXTtcbiAgaWYgKCFwcm9qZWN0aW9uTWFwKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgaW50ZXJhY3Rpb25EYXRhID0gZXZlbnRQcm9wc1sndHJpZ2dlci53aWRnZXRfaW50ZXJhY3Rpb25fZGF0YSddO1xuICBpZiAoXG4gICAgaW50ZXJhY3Rpb25EYXRhID09PSBudWxsIHx8XG4gICAgaW50ZXJhY3Rpb25EYXRhID09PSB1bmRlZmluZWQgfHxcbiAgICB0eXBlb2YgaW50ZXJhY3Rpb25EYXRhICE9PSAnb2JqZWN0J1xuICApIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBkYXRhID0gaW50ZXJhY3Rpb25EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2dhS2V5LCBzb3VyY2VGaWVsZF0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdGlvbk1hcCkpIHtcbiAgICBpZiAoc291cmNlRmllbGQgaW4gZGF0YSkge1xuICAgICAgcmVzdWx0W2dhS2V5XSA9IGRhdGFbc291cmNlRmllbGRdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgdHJ1bmNhdGVTdHJpbmcgPSAodmFsdWU6IHVua25vd24pOiB1bmtub3duID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gMTAwKSB7XG4gICAgcmV0dXJuIGAke3ZhbHVlLnN1YnN0cmluZygwLCA5Nyl9Li4uYDtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59O1xuXG5jb25zdCB0cnVuY2F0ZVZhbHVlcyA9IChvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICByZXN1bHRba2V5XSA9IHRydW5jYXRlU3RyaW5nKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgcHVzaFRvRGF0YUxheWVyID0gKGdhRXZlbnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCA9PiB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGF0YUxheWVyKSB7XG4gICAgd2luZG93LmRhdGFMYXllci5wdXNoKGdhRXZlbnQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcHJvamVjdFRvR0E0ID0gKFxuICBldmVudE5hbWU6IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IHZvaWQgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHNjaGVtYUVudHJ5ID0gR0E0X0VWRU5UX1NDSEVNQVtldmVudE5hbWVdO1xuXG4gICAgaWYgKHNjaGVtYUVudHJ5LmdhRXZlbnROYW1lID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnID0gc2NoZW1hRW50cnk7XG4gICAgY29uc3QgcHJvcHMgPSBldmVudFByb3BzID8/IHt9O1xuXG4gICAgbGV0IGZpbHRlcmVkID0gZmlsdGVyVG9TY2hlbWEocHJvcHMsIGNvbmZpZy5hbGxvd2VkRmllbGRzKTtcbiAgICBmaWx0ZXJlZCA9IHNhbml0aXplUGFnZUlkKGZpbHRlcmVkKTtcblxuICAgIGNvbnN0IGludGVyYWN0aW9uRmllbGRzID0gcHJvamVjdFdpZGdldEludGVyYWN0aW9uRGF0YShwcm9wcywgY29uZmlnKTtcblxuICAgIGNvbnN0IGZsYXRQYXJhbXMgPSB7XG4gICAgICAuLi5mbGF0dGVuRG90S2V5cyhmaWx0ZXJlZCksXG4gICAgICAuLi5pbnRlcmFjdGlvbkZpZWxkcyxcbiAgICB9O1xuXG4gICAgY29uc3QgdHJ1bmNhdGVkUGFyYW1zID0gdHJ1bmNhdGVWYWx1ZXMoZmxhdFBhcmFtcyk7XG5cbiAgICBwdXNoVG9EYXRhTGF5ZXIoe1xuICAgICAgZXZlbnQ6IGNvbmZpZy5nYUV2ZW50TmFtZSxcbiAgICAgIC4uLnRydW5jYXRlZFBhcmFtcyxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmxvZ0Vycm9yKCdFcnJvciBwcm9qZWN0aW5nIGV2ZW50IHRvIEdBNCcsIGVyciwge1xuICAgICAgZXZlbnROYW1lLFxuICAgIH0pO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBSUEsTUFBTSxTQUFTLElBQUlBLHVCQUFPLHVCQUF1QjtBQUVqRCxNQUFNLGtCQUNKLFlBQ0Esa0JBQzRCO0NBQzVCLE1BQU1DLFNBQWtDLEVBQUU7QUFDMUMsTUFBSyxNQUFNLFNBQVMsY0FDbEIsS0FBSSxTQUFTLFdBQ1gsUUFBTyxTQUFTLFdBQVc7QUFHL0IsUUFBTzs7QUFJVCxNQUFNLGtCQUFrQixRQUEwRDtDQUNoRixNQUFNQSxTQUFrQyxFQUFFO0FBQzFDLE1BQUssTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLFFBQVEsSUFBSSxDQUM1QyxRQUFPLElBQUksUUFBUSxPQUFPLElBQUksSUFBSTtBQUVwQyxRQUFPOztBQVNULE1BQU0sa0JBQWtCLGFBQStEO0NBQ3JGLE1BQU0sV0FBVyxTQUFTO0FBQzFCLEtBQUksYUFBYSxTQUFTLGFBQWEsTUFDckMsUUFBTztDQUVULE1BQU0sT0FBTyxFQUFFLEdBQUcsVUFBVTtBQUM1QixRQUFPLEtBQUs7QUFDWixRQUFPOztBQUlULE1BQU0sZ0NBQ0osWUFDQSxXQUM0QjtBQUM1QixLQUFJLENBQUMsT0FBTyxpQ0FDVixRQUFPLEVBQUU7Q0FHWCxNQUFNLGNBQWMsV0FBVztBQUMvQixLQUFJLE9BQU8sZ0JBQWdCLFNBQ3pCLFFBQU8sRUFBRTtDQUdYLE1BQU0sZ0JBQWdCLE9BQU8saUNBQWlDO0FBQzlELEtBQUksQ0FBQyxjQUNILFFBQU8sRUFBRTtDQUdYLE1BQU0sa0JBQWtCLFdBQVc7QUFDbkMsS0FDRSxvQkFBb0IsUUFDcEIsb0JBQW9CLFVBQ3BCLE9BQU8sb0JBQW9CLFNBRTNCLFFBQU8sRUFBRTtDQUdYLE1BQU0sT0FBTztDQUNiLE1BQU1BLFNBQWtDLEVBQUU7QUFDMUMsTUFBSyxNQUFNLENBQUMsT0FBTyxnQkFBZ0IsT0FBTyxRQUFRLGNBQWMsQ0FDOUQsS0FBSSxlQUFlLEtBQ2pCLFFBQU8sU0FBUyxLQUFLO0FBR3pCLFFBQU87O0FBR1QsTUFBTSxrQkFBa0IsVUFBNEI7QUFDbEQsS0FBSSxPQUFPLFVBQVUsWUFBWSxNQUFNLFNBQVMsSUFDOUMsUUFBTyxHQUFHLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQztBQUVuQyxRQUFPOztBQUdULE1BQU0sa0JBQWtCLFFBQTBEO0NBQ2hGLE1BQU1BLFNBQWtDLEVBQUU7QUFDMUMsTUFBSyxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sUUFBUSxJQUFJLENBQzVDLFFBQU8sT0FBTyxlQUFlLE1BQU07QUFFckMsUUFBTzs7QUFHVCxNQUFNLG1CQUFtQixZQUEyQztBQUNsRSxLQUFJLE9BQU8sV0FBVyxlQUFlLE9BQU8sVUFDMUMsUUFBTyxVQUFVLEtBQUssUUFBUTs7QUFJbEMsTUFBYSxnQkFDWCxXQUNBLGVBQ1M7QUFDVCxLQUFJO0VBQ0YsTUFBTSxjQUFjQyx3Q0FBaUI7QUFFckMsTUFBSSxZQUFZLGdCQUFnQixLQUM5QjtFQUdGLE1BQU0sU0FBUztFQUNmLE1BQU0sUUFBUSxjQUFjLEVBQUU7RUFFOUIsSUFBSSxXQUFXLGVBQWUsT0FBTyxPQUFPLGNBQWM7QUFDMUQsYUFBVyxlQUFlLFNBQVM7RUFFbkMsTUFBTSxvQkFBb0IsNkJBQTZCLE9BQU8sT0FBTztFQU9yRSxNQUFNLGtCQUFrQixlQUxMO0dBQ2pCLEdBQUcsZUFBZSxTQUFTO0dBQzNCLEdBQUc7R0FDSixDQUVpRDtBQUVsRCxrQkFBZ0I7R0FDZCxPQUFPLE9BQU87R0FDZCxHQUFHO0dBQ0osQ0FBQztVQUNLLEtBQUs7QUFDWixTQUFPLFNBQVMsaUNBQWlDLEtBQUssRUFDcEQsV0FDRCxDQUFDIn0=
@@ -2,6 +2,7 @@ import logger_default from "../../application/logging/logger.js";
2
2
  import { GA4_EVENT_SCHEMA } from "./ga4EventSchema.js";
3
3
 
4
4
  //#region src/services/ga4ProjectionService/ga4ProjectionService.ts
5
+ const logger = new logger_default("ga4ProjectionService");
5
6
  const filterToSchema = (eventProps, allowedFields) => {
6
7
  const result = {};
7
8
  for (const field of allowedFields) if (field in eventProps) result[field] = eventProps[field];
@@ -62,10 +63,10 @@ const projectToGA4 = (eventName, eventProps) => {
62
63
  ...truncatedParams
63
64
  });
64
65
  } catch (err) {
65
- logger_default.logError("[envive-ai] Error projecting event to GA4", err, { eventName });
66
+ logger.logError("Error projecting event to GA4", err, { eventName });
66
67
  }
67
68
  };
68
69
 
69
70
  //#endregion
70
71
  export { projectToGA4 };
71
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2E0UHJvamVjdGlvblNlcnZpY2UuanMiLCJuYW1lcyI6WyJyZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2dhNFByb2plY3Rpb25TZXJ2aWNlL2dhNFByb2plY3Rpb25TZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUgfSBmcm9tICcuLi9hbXBsaXR1ZGVTZXJ2aWNlL2V2ZW50TmFtZXMnO1xuaW1wb3J0IHsgR0E0UHJvamVjdGVkRXZlbnRDb25maWcsIEdBNF9FVkVOVF9TQ0hFTUEgfSBmcm9tICcuL2dhNEV2ZW50U2NoZW1hJztcblxuY29uc3QgZmlsdGVyVG9TY2hlbWEgPSAoXG4gIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBhbGxvd2VkRmllbGRzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGFsbG93ZWRGaWVsZHMpIHtcbiAgICBpZiAoZmllbGQgaW4gZXZlbnRQcm9wcykge1xuICAgICAgcmVzdWx0W2ZpZWxkXSA9IGV2ZW50UHJvcHNbZmllbGRdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gXCJjb250ZXh0LnBhZ2VfdHlwZVwiIOKGkiBcImNvbnRleHRfcGFnZV90eXBlXCJcbmNvbnN0IGZsYXR0ZW5Eb3RLZXlzID0gKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIHJlc3VsdFtrZXkucmVwbGFjZSgvXFwuL2csICdfJyldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIE9taXQgY29udGV4dC5wYWdlX2lkIGZvciBub24tcGRwL3BscCBwYWdlIHR5cGVzLiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBmb3IgY29udGV4dC5wYWdlX2lkIGlzOlxuLy8gUERQOiBwcm9kdWN0X2lkXG4vLyBQTFA6IHBscF9pZFxuLy8gU2VhcmNoOiBzZWFyY2ggcXVlcnlcbi8vIE90aGVyOiBwYWdlIHVybFxuLy8gV2Ugd2FudCB0byBvbWl0IGFsbCBidXQgcGRwIGFuZCBwbHAgcGFnZSB0eXBlcyB0byBwcm92aWRlIGEgY2xlYXIsIGNvbnNpc3RlbnQgaW50ZXJmYWNlIGZvciBtZXJjaGFudHMuXG5jb25zdCBzYW5pdGl6ZVBhZ2VJZCA9IChmaWx0ZXJlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHBhZ2VUeXBlID0gZmlsdGVyZWRbJ2NvbnRleHQucGFnZV90eXBlJ107XG4gIGlmIChwYWdlVHlwZSA9PT0gJ3BkcCcgfHwgcGFnZVR5cGUgPT09ICdwbHAnKSB7XG4gICAgcmV0dXJuIGZpbHRlcmVkO1xuICB9XG4gIGNvbnN0IHJlc3QgPSB7IC4uLmZpbHRlcmVkIH07XG4gIGRlbGV0ZSByZXN0Wydjb250ZXh0LnBhZ2VfaWQnXTtcbiAgcmV0dXJuIHJlc3Q7XG59O1xuXG4vLyBFeHRyYWN0IHdoaXRlbGlzdGVkIHN1Yi1maWVsZHMgZnJvbSB0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbl9kYXRhXG5jb25zdCBwcm9qZWN0V2lkZ2V0SW50ZXJhY3Rpb25EYXRhID0gKFxuICBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgY29uZmlnOiBHQTRQcm9qZWN0ZWRFdmVudENvbmZpZyxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgaWYgKCFjb25maWcud2lkZ2V0SW50ZXJhY3Rpb25EYXRhUHJvamVjdGlvbnMpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBpbnRlcmFjdGlvbiA9IGV2ZW50UHJvcHNbJ3RyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uJ107XG4gIGlmICh0eXBlb2YgaW50ZXJhY3Rpb24gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgcHJvamVjdGlvbk1hcCA9IGNvbmZpZy53aWRnZXRJbnRlcmFjdGlvbkRhdGFQcm9qZWN0aW9uc1tpbnRlcmFjdGlvbl07XG4gIGlmICghcHJvamVjdGlvbk1hcCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGludGVyYWN0aW9uRGF0YSA9IGV2ZW50UHJvcHNbJ3RyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uX2RhdGEnXTtcbiAgaWYgKFxuICAgIGludGVyYWN0aW9uRGF0YSA9PT0gbnVsbCB8fFxuICAgIGludGVyYWN0aW9uRGF0YSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgdHlwZW9mIGludGVyYWN0aW9uRGF0YSAhPT0gJ29iamVjdCdcbiAgKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGludGVyYWN0aW9uRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtnYUtleSwgc291cmNlRmllbGRdIG9mIE9iamVjdC5lbnRyaWVzKHByb2plY3Rpb25NYXApKSB7XG4gICAgaWYgKHNvdXJjZUZpZWxkIGluIGRhdGEpIHtcbiAgICAgIHJlc3VsdFtnYUtleV0gPSBkYXRhW3NvdXJjZUZpZWxkXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHRydW5jYXRlU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogdW5rbm93biA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IDEwMCkge1xuICAgIHJldHVybiBgJHt2YWx1ZS5zdWJzdHJpbmcoMCwgOTcpfS4uLmA7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuY29uc3QgdHJ1bmNhdGVWYWx1ZXMgPSAob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgcmVzdWx0W2tleV0gPSB0cnVuY2F0ZVN0cmluZyh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHB1c2hUb0RhdGFMYXllciA9IChnYUV2ZW50OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRhdGFMYXllcikge1xuICAgIHdpbmRvdy5kYXRhTGF5ZXIucHVzaChnYUV2ZW50KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHByb2plY3RUb0dBNCA9IChcbiAgZXZlbnROYW1lOiBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLFxuICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiB2b2lkID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzY2hlbWFFbnRyeSA9IEdBNF9FVkVOVF9TQ0hFTUFbZXZlbnROYW1lXTtcblxuICAgIGlmIChzY2hlbWFFbnRyeS5nYUV2ZW50TmFtZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHNjaGVtYUVudHJ5O1xuICAgIGNvbnN0IHByb3BzID0gZXZlbnRQcm9wcyA/PyB7fTtcblxuICAgIGxldCBmaWx0ZXJlZCA9IGZpbHRlclRvU2NoZW1hKHByb3BzLCBjb25maWcuYWxsb3dlZEZpZWxkcyk7XG4gICAgZmlsdGVyZWQgPSBzYW5pdGl6ZVBhZ2VJZChmaWx0ZXJlZCk7XG5cbiAgICBjb25zdCBpbnRlcmFjdGlvbkZpZWxkcyA9IHByb2plY3RXaWRnZXRJbnRlcmFjdGlvbkRhdGEocHJvcHMsIGNvbmZpZyk7XG5cbiAgICBjb25zdCBmbGF0UGFyYW1zID0ge1xuICAgICAgLi4uZmxhdHRlbkRvdEtleXMoZmlsdGVyZWQpLFxuICAgICAgLi4uaW50ZXJhY3Rpb25GaWVsZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IHRydW5jYXRlZFBhcmFtcyA9IHRydW5jYXRlVmFsdWVzKGZsYXRQYXJhbXMpO1xuXG4gICAgcHVzaFRvRGF0YUxheWVyKHtcbiAgICAgIGV2ZW50OiBjb25maWcuZ2FFdmVudE5hbWUsXG4gICAgICAuLi50cnVuY2F0ZWRQYXJhbXMsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIExvZ2dlci5sb2dFcnJvcignW2Vudml2ZS1haV0gRXJyb3IgcHJvamVjdGluZyBldmVudCB0byBHQTQnLCBlcnIsIHtcbiAgICAgIGV2ZW50TmFtZSxcbiAgICB9KTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUlBLE1BQU0sa0JBQ0osWUFDQSxrQkFDNEI7Q0FDNUIsTUFBTUEsU0FBa0MsRUFBRTtBQUMxQyxNQUFLLE1BQU0sU0FBUyxjQUNsQixLQUFJLFNBQVMsV0FDWCxRQUFPLFNBQVMsV0FBVztBQUcvQixRQUFPOztBQUlULE1BQU0sa0JBQWtCLFFBQTBEO0NBQ2hGLE1BQU1BLFNBQWtDLEVBQUU7QUFDMUMsTUFBSyxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sUUFBUSxJQUFJLENBQzVDLFFBQU8sSUFBSSxRQUFRLE9BQU8sSUFBSSxJQUFJO0FBRXBDLFFBQU87O0FBU1QsTUFBTSxrQkFBa0IsYUFBK0Q7Q0FDckYsTUFBTSxXQUFXLFNBQVM7QUFDMUIsS0FBSSxhQUFhLFNBQVMsYUFBYSxNQUNyQyxRQUFPO0NBRVQsTUFBTSxPQUFPLEVBQUUsR0FBRyxVQUFVO0FBQzVCLFFBQU8sS0FBSztBQUNaLFFBQU87O0FBSVQsTUFBTSxnQ0FDSixZQUNBLFdBQzRCO0FBQzVCLEtBQUksQ0FBQyxPQUFPLGlDQUNWLFFBQU8sRUFBRTtDQUdYLE1BQU0sY0FBYyxXQUFXO0FBQy9CLEtBQUksT0FBTyxnQkFBZ0IsU0FDekIsUUFBTyxFQUFFO0NBR1gsTUFBTSxnQkFBZ0IsT0FBTyxpQ0FBaUM7QUFDOUQsS0FBSSxDQUFDLGNBQ0gsUUFBTyxFQUFFO0NBR1gsTUFBTSxrQkFBa0IsV0FBVztBQUNuQyxLQUNFLG9CQUFvQixRQUNwQixvQkFBb0IsVUFDcEIsT0FBTyxvQkFBb0IsU0FFM0IsUUFBTyxFQUFFO0NBR1gsTUFBTSxPQUFPO0NBQ2IsTUFBTUEsU0FBa0MsRUFBRTtBQUMxQyxNQUFLLE1BQU0sQ0FBQyxPQUFPLGdCQUFnQixPQUFPLFFBQVEsY0FBYyxDQUM5RCxLQUFJLGVBQWUsS0FDakIsUUFBTyxTQUFTLEtBQUs7QUFHekIsUUFBTzs7QUFHVCxNQUFNLGtCQUFrQixVQUE0QjtBQUNsRCxLQUFJLE9BQU8sVUFBVSxZQUFZLE1BQU0sU0FBUyxJQUM5QyxRQUFPLEdBQUcsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBRW5DLFFBQU87O0FBR1QsTUFBTSxrQkFBa0IsUUFBMEQ7Q0FDaEYsTUFBTUEsU0FBa0MsRUFBRTtBQUMxQyxNQUFLLE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxRQUFRLElBQUksQ0FDNUMsUUFBTyxPQUFPLGVBQWUsTUFBTTtBQUVyQyxRQUFPOztBQUdULE1BQU0sbUJBQW1CLFlBQTJDO0FBQ2xFLEtBQUksT0FBTyxXQUFXLGVBQWUsT0FBTyxVQUMxQyxRQUFPLFVBQVUsS0FBSyxRQUFROztBQUlsQyxNQUFhLGdCQUNYLFdBQ0EsZUFDUztBQUNULEtBQUk7RUFDRixNQUFNLGNBQWMsaUJBQWlCO0FBRXJDLE1BQUksWUFBWSxnQkFBZ0IsS0FDOUI7RUFHRixNQUFNLFNBQVM7RUFDZixNQUFNLFFBQVEsY0FBYyxFQUFFO0VBRTlCLElBQUksV0FBVyxlQUFlLE9BQU8sT0FBTyxjQUFjO0FBQzFELGFBQVcsZUFBZSxTQUFTO0VBRW5DLE1BQU0sb0JBQW9CLDZCQUE2QixPQUFPLE9BQU87RUFPckUsTUFBTSxrQkFBa0IsZUFMTDtHQUNqQixHQUFHLGVBQWUsU0FBUztHQUMzQixHQUFHO0dBQ0osQ0FFaUQ7QUFFbEQsa0JBQWdCO0dBQ2QsT0FBTyxPQUFPO0dBQ2QsR0FBRztHQUNKLENBQUM7VUFDSyxLQUFLO0FBQ1osaUJBQU8sU0FBUyw2Q0FBNkMsS0FBSyxFQUNoRSxXQUNELENBQUMifQ==
72
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2E0UHJvamVjdGlvblNlcnZpY2UuanMiLCJuYW1lcyI6WyJMb2dnZXIiLCJyZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2dhNFByb2plY3Rpb25TZXJ2aWNlL2dhNFByb2plY3Rpb25TZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUgfSBmcm9tICcuLi9hbXBsaXR1ZGVTZXJ2aWNlL2V2ZW50TmFtZXMnO1xuaW1wb3J0IHsgR0E0UHJvamVjdGVkRXZlbnRDb25maWcsIEdBNF9FVkVOVF9TQ0hFTUEgfSBmcm9tICcuL2dhNEV2ZW50U2NoZW1hJztcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcignZ2E0UHJvamVjdGlvblNlcnZpY2UnKTtcblxuY29uc3QgZmlsdGVyVG9TY2hlbWEgPSAoXG4gIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBhbGxvd2VkRmllbGRzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGFsbG93ZWRGaWVsZHMpIHtcbiAgICBpZiAoZmllbGQgaW4gZXZlbnRQcm9wcykge1xuICAgICAgcmVzdWx0W2ZpZWxkXSA9IGV2ZW50UHJvcHNbZmllbGRdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gXCJjb250ZXh0LnBhZ2VfdHlwZVwiIOKGkiBcImNvbnRleHRfcGFnZV90eXBlXCJcbmNvbnN0IGZsYXR0ZW5Eb3RLZXlzID0gKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIHJlc3VsdFtrZXkucmVwbGFjZSgvXFwuL2csICdfJyldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIE9taXQgY29udGV4dC5wYWdlX2lkIGZvciBub24tcGRwL3BscCBwYWdlIHR5cGVzLiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBmb3IgY29udGV4dC5wYWdlX2lkIGlzOlxuLy8gUERQOiBwcm9kdWN0X2lkXG4vLyBQTFA6IHBscF9pZFxuLy8gU2VhcmNoOiBzZWFyY2ggcXVlcnlcbi8vIE90aGVyOiBwYWdlIHVybFxuLy8gV2Ugd2FudCB0byBvbWl0IGFsbCBidXQgcGRwIGFuZCBwbHAgcGFnZSB0eXBlcyB0byBwcm92aWRlIGEgY2xlYXIsIGNvbnNpc3RlbnQgaW50ZXJmYWNlIGZvciBtZXJjaGFudHMuXG5jb25zdCBzYW5pdGl6ZVBhZ2VJZCA9IChmaWx0ZXJlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHBhZ2VUeXBlID0gZmlsdGVyZWRbJ2NvbnRleHQucGFnZV90eXBlJ107XG4gIGlmIChwYWdlVHlwZSA9PT0gJ3BkcCcgfHwgcGFnZVR5cGUgPT09ICdwbHAnKSB7XG4gICAgcmV0dXJuIGZpbHRlcmVkO1xuICB9XG4gIGNvbnN0IHJlc3QgPSB7IC4uLmZpbHRlcmVkIH07XG4gIGRlbGV0ZSByZXN0Wydjb250ZXh0LnBhZ2VfaWQnXTtcbiAgcmV0dXJuIHJlc3Q7XG59O1xuXG4vLyBFeHRyYWN0IHdoaXRlbGlzdGVkIHN1Yi1maWVsZHMgZnJvbSB0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbl9kYXRhXG5jb25zdCBwcm9qZWN0V2lkZ2V0SW50ZXJhY3Rpb25EYXRhID0gKFxuICBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgY29uZmlnOiBHQTRQcm9qZWN0ZWRFdmVudENvbmZpZyxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgaWYgKCFjb25maWcud2lkZ2V0SW50ZXJhY3Rpb25EYXRhUHJvamVjdGlvbnMpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBpbnRlcmFjdGlvbiA9IGV2ZW50UHJvcHNbJ3RyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uJ107XG4gIGlmICh0eXBlb2YgaW50ZXJhY3Rpb24gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgcHJvamVjdGlvbk1hcCA9IGNvbmZpZy53aWRnZXRJbnRlcmFjdGlvbkRhdGFQcm9qZWN0aW9uc1tpbnRlcmFjdGlvbl07XG4gIGlmICghcHJvamVjdGlvbk1hcCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGludGVyYWN0aW9uRGF0YSA9IGV2ZW50UHJvcHNbJ3RyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uX2RhdGEnXTtcbiAgaWYgKFxuICAgIGludGVyYWN0aW9uRGF0YSA9PT0gbnVsbCB8fFxuICAgIGludGVyYWN0aW9uRGF0YSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgdHlwZW9mIGludGVyYWN0aW9uRGF0YSAhPT0gJ29iamVjdCdcbiAgKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGludGVyYWN0aW9uRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtnYUtleSwgc291cmNlRmllbGRdIG9mIE9iamVjdC5lbnRyaWVzKHByb2plY3Rpb25NYXApKSB7XG4gICAgaWYgKHNvdXJjZUZpZWxkIGluIGRhdGEpIHtcbiAgICAgIHJlc3VsdFtnYUtleV0gPSBkYXRhW3NvdXJjZUZpZWxkXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHRydW5jYXRlU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogdW5rbm93biA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IDEwMCkge1xuICAgIHJldHVybiBgJHt2YWx1ZS5zdWJzdHJpbmcoMCwgOTcpfS4uLmA7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuY29uc3QgdHJ1bmNhdGVWYWx1ZXMgPSAob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgcmVzdWx0W2tleV0gPSB0cnVuY2F0ZVN0cmluZyh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHB1c2hUb0RhdGFMYXllciA9IChnYUV2ZW50OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRhdGFMYXllcikge1xuICAgIHdpbmRvdy5kYXRhTGF5ZXIucHVzaChnYUV2ZW50KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHByb2plY3RUb0dBNCA9IChcbiAgZXZlbnROYW1lOiBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLFxuICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiB2b2lkID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzY2hlbWFFbnRyeSA9IEdBNF9FVkVOVF9TQ0hFTUFbZXZlbnROYW1lXTtcblxuICAgIGlmIChzY2hlbWFFbnRyeS5nYUV2ZW50TmFtZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHNjaGVtYUVudHJ5O1xuICAgIGNvbnN0IHByb3BzID0gZXZlbnRQcm9wcyA/PyB7fTtcblxuICAgIGxldCBmaWx0ZXJlZCA9IGZpbHRlclRvU2NoZW1hKHByb3BzLCBjb25maWcuYWxsb3dlZEZpZWxkcyk7XG4gICAgZmlsdGVyZWQgPSBzYW5pdGl6ZVBhZ2VJZChmaWx0ZXJlZCk7XG5cbiAgICBjb25zdCBpbnRlcmFjdGlvbkZpZWxkcyA9IHByb2plY3RXaWRnZXRJbnRlcmFjdGlvbkRhdGEocHJvcHMsIGNvbmZpZyk7XG5cbiAgICBjb25zdCBmbGF0UGFyYW1zID0ge1xuICAgICAgLi4uZmxhdHRlbkRvdEtleXMoZmlsdGVyZWQpLFxuICAgICAgLi4uaW50ZXJhY3Rpb25GaWVsZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IHRydW5jYXRlZFBhcmFtcyA9IHRydW5jYXRlVmFsdWVzKGZsYXRQYXJhbXMpO1xuXG4gICAgcHVzaFRvRGF0YUxheWVyKHtcbiAgICAgIGV2ZW50OiBjb25maWcuZ2FFdmVudE5hbWUsXG4gICAgICAuLi50cnVuY2F0ZWRQYXJhbXMsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5sb2dFcnJvcignRXJyb3IgcHJvamVjdGluZyBldmVudCB0byBHQTQnLCBlcnIsIHtcbiAgICAgIGV2ZW50TmFtZSxcbiAgICB9KTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUlBLE1BQU0sU0FBUyxJQUFJQSxlQUFPLHVCQUF1QjtBQUVqRCxNQUFNLGtCQUNKLFlBQ0Esa0JBQzRCO0NBQzVCLE1BQU1DLFNBQWtDLEVBQUU7QUFDMUMsTUFBSyxNQUFNLFNBQVMsY0FDbEIsS0FBSSxTQUFTLFdBQ1gsUUFBTyxTQUFTLFdBQVc7QUFHL0IsUUFBTzs7QUFJVCxNQUFNLGtCQUFrQixRQUEwRDtDQUNoRixNQUFNQSxTQUFrQyxFQUFFO0FBQzFDLE1BQUssTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLFFBQVEsSUFBSSxDQUM1QyxRQUFPLElBQUksUUFBUSxPQUFPLElBQUksSUFBSTtBQUVwQyxRQUFPOztBQVNULE1BQU0sa0JBQWtCLGFBQStEO0NBQ3JGLE1BQU0sV0FBVyxTQUFTO0FBQzFCLEtBQUksYUFBYSxTQUFTLGFBQWEsTUFDckMsUUFBTztDQUVULE1BQU0sT0FBTyxFQUFFLEdBQUcsVUFBVTtBQUM1QixRQUFPLEtBQUs7QUFDWixRQUFPOztBQUlULE1BQU0sZ0NBQ0osWUFDQSxXQUM0QjtBQUM1QixLQUFJLENBQUMsT0FBTyxpQ0FDVixRQUFPLEVBQUU7Q0FHWCxNQUFNLGNBQWMsV0FBVztBQUMvQixLQUFJLE9BQU8sZ0JBQWdCLFNBQ3pCLFFBQU8sRUFBRTtDQUdYLE1BQU0sZ0JBQWdCLE9BQU8saUNBQWlDO0FBQzlELEtBQUksQ0FBQyxjQUNILFFBQU8sRUFBRTtDQUdYLE1BQU0sa0JBQWtCLFdBQVc7QUFDbkMsS0FDRSxvQkFBb0IsUUFDcEIsb0JBQW9CLFVBQ3BCLE9BQU8sb0JBQW9CLFNBRTNCLFFBQU8sRUFBRTtDQUdYLE1BQU0sT0FBTztDQUNiLE1BQU1BLFNBQWtDLEVBQUU7QUFDMUMsTUFBSyxNQUFNLENBQUMsT0FBTyxnQkFBZ0IsT0FBTyxRQUFRLGNBQWMsQ0FDOUQsS0FBSSxlQUFlLEtBQ2pCLFFBQU8sU0FBUyxLQUFLO0FBR3pCLFFBQU87O0FBR1QsTUFBTSxrQkFBa0IsVUFBNEI7QUFDbEQsS0FBSSxPQUFPLFVBQVUsWUFBWSxNQUFNLFNBQVMsSUFDOUMsUUFBTyxHQUFHLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQztBQUVuQyxRQUFPOztBQUdULE1BQU0sa0JBQWtCLFFBQTBEO0NBQ2hGLE1BQU1BLFNBQWtDLEVBQUU7QUFDMUMsTUFBSyxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sUUFBUSxJQUFJLENBQzVDLFFBQU8sT0FBTyxlQUFlLE1BQU07QUFFckMsUUFBTzs7QUFHVCxNQUFNLG1CQUFtQixZQUEyQztBQUNsRSxLQUFJLE9BQU8sV0FBVyxlQUFlLE9BQU8sVUFDMUMsUUFBTyxVQUFVLEtBQUssUUFBUTs7QUFJbEMsTUFBYSxnQkFDWCxXQUNBLGVBQ1M7QUFDVCxLQUFJO0VBQ0YsTUFBTSxjQUFjLGlCQUFpQjtBQUVyQyxNQUFJLFlBQVksZ0JBQWdCLEtBQzlCO0VBR0YsTUFBTSxTQUFTO0VBQ2YsTUFBTSxRQUFRLGNBQWMsRUFBRTtFQUU5QixJQUFJLFdBQVcsZUFBZSxPQUFPLE9BQU8sY0FBYztBQUMxRCxhQUFXLGVBQWUsU0FBUztFQUVuQyxNQUFNLG9CQUFvQiw2QkFBNkIsT0FBTyxPQUFPO0VBT3JFLE1BQU0sa0JBQWtCLGVBTEw7R0FDakIsR0FBRyxlQUFlLFNBQVM7R0FDM0IsR0FBRztHQUNKLENBRWlEO0FBRWxELGtCQUFnQjtHQUNkLE9BQU8sT0FBTztHQUNkLEdBQUc7R0FDSixDQUFDO1VBQ0ssS0FBSztBQUNaLFNBQU8sU0FBUyxpQ0FBaUMsS0FBSyxFQUNwRCxXQUNELENBQUMifQ==
@@ -7,30 +7,31 @@ let __envive_ai_analytics = require("@envive-ai/analytics");
7
7
  let __envive_ai_analytics_dist_analytics_EnviveAnalytics = require("@envive-ai/analytics/dist/analytics/EnviveAnalytics");
8
8
 
9
9
  //#region src/services/userIdentityService/userIdentityService.ts
10
+ const logger = new require_logger.default("userIdentityService");
10
11
  var UserIdentityService = class {
11
12
  constructor({ apiKey }) {
12
13
  this.USER_ID_OVERRIDE_KEY = "v1-spiffy-user-id-override";
13
14
  this.apiKey = apiKey;
14
15
  }
15
16
  getUserIdOverrideFromLocalStorage() {
16
- require_logger.default.logDebug("[spiffy-ai] Getting userID from localStorage");
17
+ logger.logDebug("Getting userID from localStorage");
17
18
  return localStorage.getItem(this.USER_ID_OVERRIDE_KEY) ?? void 0;
18
19
  }
19
20
  async getUserIdOrDefault() {
20
21
  const userIdOverride = this.getUserIdOverrideFromLocalStorage();
21
22
  if (userIdOverride) return userIdOverride;
22
23
  try {
23
- require_logger.default.logDebug("Getting userID via EnviveAnalytics in UserIdentityService");
24
+ logger.logDebug("Getting userID via EnviveAnalytics in UserIdentityService");
24
25
  const enviveUserId = await new __envive_ai_analytics.EnviveAnalytics({
25
26
  apiKey: this.apiKey,
26
27
  environmentInfo: { executionContext: __envive_ai_analytics_dist_analytics_EnviveAnalytics.ExecutionContext.EnviveReactComponentsV3 }
27
28
  }).resolveEnviveUserId();
28
- if (!enviveUserId) throw new Error("[spiffy-ai] EnviveAnalytics.resolveEnviveUserId() returned null/undefined");
29
+ if (!enviveUserId) throw new Error("EnviveAnalytics.resolveEnviveUserId() returned null/undefined");
29
30
  return enviveUserId;
30
31
  } catch (error) {
31
- require_logger.default.logError("[spiffy-ai] CRITICAL: Failed to get user ID:", error);
32
+ logger.logError("CRITICAL: Failed to get user ID:", error);
32
33
  const errorMessage = error instanceof Error ? error.message : "Unknown error";
33
- throw new Error(`[spiffy-ai] CRITICAL: User ID resolution failed: ${errorMessage}`);
34
+ throw new Error(`CRITICAL: User ID resolution failed: ${errorMessage}`);
34
35
  }
35
36
  }
36
37
  async initializeUser(atomStore) {
@@ -38,7 +39,7 @@ var UserIdentityService = class {
38
39
  const userId = await this.getUserIdOrDefault();
39
40
  (atomStore || require_atomStore.getAtomStore()).set(require_atoms_app_index.userIdAtom, userId);
40
41
  } catch (error) {
41
- require_logger.default.logError("[spiffy-ai] CRITICAL: Failed to initialize user ID:", error);
42
+ logger.logError("CRITICAL: Failed to initialize user ID:", error);
42
43
  throw error;
43
44
  }
44
45
  }
@@ -46,4 +47,4 @@ var UserIdentityService = class {
46
47
 
47
48
  //#endregion
48
49
  exports.UserIdentityService = UserIdentityService;
49
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcklkZW50aXR5U2VydmljZS5janMiLCJuYW1lcyI6WyJFbnZpdmVBbmFseXRpY3MiLCJFeGVjdXRpb25Db250ZXh0IiwiZXJyb3I6IHVua25vd24iLCJnZXRBdG9tU3RvcmUiLCJ1c2VySWRBdG9tIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3VzZXJJZGVudGl0eVNlcnZpY2UvdXNlcklkZW50aXR5U2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpdmVBbmFseXRpY3MgfSBmcm9tICdAZW52aXZlLWFpL2FuYWx5dGljcyc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBnZXRBdG9tU3RvcmUgfSBmcm9tICdzcmMvYXRvbXMvYXRvbVN0b3JlJztcbmltcG9ydCB7IHVzZXJJZEF0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7IEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICdAZW52aXZlLWFpL2FuYWx5dGljcy9kaXN0L2FuYWx5dGljcy9FbnZpdmVBbmFseXRpY3MnO1xuXG50eXBlIFVzZXJJZGVudGl0eVNlcnZpY2VQcm9wcyA9IHtcbiAgYXBpS2V5OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY2xhc3MgVXNlcklkZW50aXR5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpS2V5OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBVU0VSX0lEX09WRVJSSURFX0tFWSA9ICd2MS1zcGlmZnktdXNlci1pZC1vdmVycmlkZSc7XG5cbiAgY29uc3RydWN0b3IoeyBhcGlLZXkgfTogVXNlcklkZW50aXR5U2VydmljZVByb3BzKSB7XG4gICAgdGhpcy5hcGlLZXkgPSBhcGlLZXk7XG4gIH1cblxuICBnZXRVc2VySWRPdmVycmlkZUZyb21Mb2NhbFN0b3JhZ2UoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBMb2dnZXIubG9nRGVidWcoJ1tzcGlmZnktYWldIEdldHRpbmcgdXNlcklEIGZyb20gbG9jYWxTdG9yYWdlJyk7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuVVNFUl9JRF9PVkVSUklERV9LRVkpID8/IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGFzeW5jIGdldFVzZXJJZE9yRGVmYXVsdCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHVzZXJJZE92ZXJyaWRlID0gdGhpcy5nZXRVc2VySWRPdmVycmlkZUZyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgICBpZiAodXNlcklkT3ZlcnJpZGUpIHtcbiAgICAgIHJldHVybiB1c2VySWRPdmVycmlkZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKCdHZXR0aW5nIHVzZXJJRCB2aWEgRW52aXZlQW5hbHl0aWNzIGluIFVzZXJJZGVudGl0eVNlcnZpY2UnKTtcbiAgICAgIGNvbnN0IGVudml2ZUFuYWx5dGljcyA9IG5ldyBFbnZpdmVBbmFseXRpY3Moe1xuICAgICAgICBhcGlLZXk6IHRoaXMuYXBpS2V5LFxuICAgICAgICBlbnZpcm9ubWVudEluZm86IHsgZXhlY3V0aW9uQ29udGV4dDogRXhlY3V0aW9uQ29udGV4dC5FbnZpdmVSZWFjdENvbXBvbmVudHNWMyB9LFxuICAgICAgfSk7XG4gICAgICBjb25zdCBlbnZpdmVVc2VySWQgPSBhd2FpdCBlbnZpdmVBbmFseXRpY3MucmVzb2x2ZUVudml2ZVVzZXJJZCgpO1xuXG4gICAgICBpZiAoIWVudml2ZVVzZXJJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1tzcGlmZnktYWldIEVudml2ZUFuYWx5dGljcy5yZXNvbHZlRW52aXZlVXNlcklkKCkgcmV0dXJuZWQgbnVsbC91bmRlZmluZWQnLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW52aXZlVXNlcklkO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIENSSVRJQ0FMOiBGYWlsZWQgdG8gZ2V0IHVzZXIgSUQ6JywgZXJyb3IpO1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcic7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFtzcGlmZnktYWldIENSSVRJQ0FMOiBVc2VyIElEIHJlc29sdXRpb24gZmFpbGVkOiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0aWFsaXplVXNlcihhdG9tU3RvcmU/OiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRBdG9tU3RvcmU+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzZXJJZCA9IGF3YWl0IHRoaXMuZ2V0VXNlcklkT3JEZWZhdWx0KCk7XG5cbiAgICAgIGNvbnN0IHN0b3JlID0gYXRvbVN0b3JlIHx8IGdldEF0b21TdG9yZSgpO1xuICAgICAgc3RvcmUuc2V0KHVzZXJJZEF0b20sIHVzZXJJZCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIExvZ2dlci5sb2dFcnJvcignW3NwaWZmeS1haV0gQ1JJVElDQUw6IEZhaWxlZCB0byBpbml0aWFsaXplIHVzZXIgSUQ6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVVBLElBQWEsc0JBQWIsTUFBaUM7Q0FLL0IsWUFBWSxFQUFFLFVBQW9DOzhCQUZWO0FBR3RDLE9BQUssU0FBUzs7Q0FHaEIsb0NBQXdEO0FBQ3RELHlCQUFPLFNBQVMsK0NBQStDO0FBQy9ELFNBQU8sYUFBYSxRQUFRLEtBQUsscUJBQXFCLElBQUk7O0NBRzVELE1BQU0scUJBQXNDO0VBQzFDLE1BQU0saUJBQWlCLEtBQUssbUNBQW1DO0FBQy9ELE1BQUksZUFDRixRQUFPO0FBR1QsTUFBSTtBQUNGLDBCQUFPLFNBQVMsNERBQTREO0dBSzVFLE1BQU0sZUFBZSxNQUpHLElBQUlBLHNDQUFnQjtJQUMxQyxRQUFRLEtBQUs7SUFDYixpQkFBaUIsRUFBRSxrQkFBa0JDLHNFQUFpQix5QkFBeUI7SUFDaEYsQ0FBQyxDQUN5QyxxQkFBcUI7QUFFaEUsT0FBSSxDQUFDLGFBQ0gsT0FBTSxJQUFJLE1BQ1IsNEVBQ0Q7QUFHSCxVQUFPO1dBQ0FDLE9BQWdCO0FBQ3ZCLDBCQUFPLFNBQVMsZ0RBQWdELE1BQU07R0FDdEUsTUFBTSxlQUFlLGlCQUFpQixRQUFRLE1BQU0sVUFBVTtBQUM5RCxTQUFNLElBQUksTUFBTSxvREFBb0QsZUFBZTs7O0NBSXZGLE1BQU0sZUFBZSxXQUE0RDtBQUMvRSxNQUFJO0dBQ0YsTUFBTSxTQUFTLE1BQU0sS0FBSyxvQkFBb0I7QUFHOUMsSUFEYyxhQUFhQyxnQ0FBYyxFQUNuQyxJQUFJQyxvQ0FBWSxPQUFPO1dBQ3RCLE9BQU87QUFDZCwwQkFBTyxTQUFTLHVEQUF1RCxNQUFNO0FBQzdFLFNBQU0ifQ==
50
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcklkZW50aXR5U2VydmljZS5janMiLCJuYW1lcyI6WyJMb2dnZXIiLCJFbnZpdmVBbmFseXRpY3MiLCJFeGVjdXRpb25Db250ZXh0IiwiZXJyb3I6IHVua25vd24iLCJnZXRBdG9tU3RvcmUiLCJ1c2VySWRBdG9tIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3VzZXJJZGVudGl0eVNlcnZpY2UvdXNlcklkZW50aXR5U2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpdmVBbmFseXRpY3MgfSBmcm9tICdAZW52aXZlLWFpL2FuYWx5dGljcyc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBnZXRBdG9tU3RvcmUgfSBmcm9tICdzcmMvYXRvbXMvYXRvbVN0b3JlJztcbmltcG9ydCB7IHVzZXJJZEF0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7IEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICdAZW52aXZlLWFpL2FuYWx5dGljcy9kaXN0L2FuYWx5dGljcy9FbnZpdmVBbmFseXRpY3MnO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCd1c2VySWRlbnRpdHlTZXJ2aWNlJyk7XG5cbnR5cGUgVXNlcklkZW50aXR5U2VydmljZVByb3BzID0ge1xuICBhcGlLZXk6IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBVc2VySWRlbnRpdHlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlLZXk6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IFVTRVJfSURfT1ZFUlJJREVfS0VZID0gJ3YxLXNwaWZmeS11c2VyLWlkLW92ZXJyaWRlJztcblxuICBjb25zdHJ1Y3Rvcih7IGFwaUtleSB9OiBVc2VySWRlbnRpdHlTZXJ2aWNlUHJvcHMpIHtcbiAgICB0aGlzLmFwaUtleSA9IGFwaUtleTtcbiAgfVxuXG4gIGdldFVzZXJJZE92ZXJyaWRlRnJvbUxvY2FsU3RvcmFnZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGxvZ2dlci5sb2dEZWJ1ZygnR2V0dGluZyB1c2VySUQgZnJvbSBsb2NhbFN0b3JhZ2UnKTtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5VU0VSX0lEX09WRVJSSURFX0tFWSkgPz8gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgZ2V0VXNlcklkT3JEZWZhdWx0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgdXNlcklkT3ZlcnJpZGUgPSB0aGlzLmdldFVzZXJJZE92ZXJyaWRlRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIGlmICh1c2VySWRPdmVycmlkZSkge1xuICAgICAgcmV0dXJuIHVzZXJJZE92ZXJyaWRlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoJ0dldHRpbmcgdXNlcklEIHZpYSBFbnZpdmVBbmFseXRpY3MgaW4gVXNlcklkZW50aXR5U2VydmljZScpO1xuICAgICAgY29uc3QgZW52aXZlQW5hbHl0aWNzID0gbmV3IEVudml2ZUFuYWx5dGljcyh7XG4gICAgICAgIGFwaUtleTogdGhpcy5hcGlLZXksXG4gICAgICAgIGVudmlyb25tZW50SW5mbzogeyBleGVjdXRpb25Db250ZXh0OiBFeGVjdXRpb25Db250ZXh0LkVudml2ZVJlYWN0Q29tcG9uZW50c1YzIH0sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGVudml2ZVVzZXJJZCA9IGF3YWl0IGVudml2ZUFuYWx5dGljcy5yZXNvbHZlRW52aXZlVXNlcklkKCk7XG5cbiAgICAgIGlmICghZW52aXZlVXNlcklkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRW52aXZlQW5hbHl0aWNzLnJlc29sdmVFbnZpdmVVc2VySWQoKSByZXR1cm5lZCBudWxsL3VuZGVmaW5lZCcpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW52aXZlVXNlcklkO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBsb2dnZXIubG9nRXJyb3IoJ0NSSVRJQ0FMOiBGYWlsZWQgdG8gZ2V0IHVzZXIgSUQ6JywgZXJyb3IpO1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcic7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENSSVRJQ0FMOiBVc2VyIElEIHJlc29sdXRpb24gZmFpbGVkOiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0aWFsaXplVXNlcihhdG9tU3RvcmU/OiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRBdG9tU3RvcmU+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzZXJJZCA9IGF3YWl0IHRoaXMuZ2V0VXNlcklkT3JEZWZhdWx0KCk7XG5cbiAgICAgIGNvbnN0IHN0b3JlID0gYXRvbVN0b3JlIHx8IGdldEF0b21TdG9yZSgpO1xuICAgICAgc3RvcmUuc2V0KHVzZXJJZEF0b20sIHVzZXJJZCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5sb2dFcnJvcignQ1JJVElDQUw6IEZhaWxlZCB0byBpbml0aWFsaXplIHVzZXIgSUQ6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU1BLE1BQU0sU0FBUyxJQUFJQSx1QkFBTyxzQkFBc0I7QUFNaEQsSUFBYSxzQkFBYixNQUFpQztDQUsvQixZQUFZLEVBQUUsVUFBb0M7OEJBRlY7QUFHdEMsT0FBSyxTQUFTOztDQUdoQixvQ0FBd0Q7QUFDdEQsU0FBTyxTQUFTLG1DQUFtQztBQUNuRCxTQUFPLGFBQWEsUUFBUSxLQUFLLHFCQUFxQixJQUFJOztDQUc1RCxNQUFNLHFCQUFzQztFQUMxQyxNQUFNLGlCQUFpQixLQUFLLG1DQUFtQztBQUMvRCxNQUFJLGVBQ0YsUUFBTztBQUdULE1BQUk7QUFDRixVQUFPLFNBQVMsNERBQTREO0dBSzVFLE1BQU0sZUFBZSxNQUpHLElBQUlDLHNDQUFnQjtJQUMxQyxRQUFRLEtBQUs7SUFDYixpQkFBaUIsRUFBRSxrQkFBa0JDLHNFQUFpQix5QkFBeUI7SUFDaEYsQ0FBQyxDQUN5QyxxQkFBcUI7QUFFaEUsT0FBSSxDQUFDLGFBQ0gsT0FBTSxJQUFJLE1BQU0sZ0VBQWdFO0FBR2xGLFVBQU87V0FDQUMsT0FBZ0I7QUFDdkIsVUFBTyxTQUFTLG9DQUFvQyxNQUFNO0dBQzFELE1BQU0sZUFBZSxpQkFBaUIsUUFBUSxNQUFNLFVBQVU7QUFDOUQsU0FBTSxJQUFJLE1BQU0sd0NBQXdDLGVBQWU7OztDQUkzRSxNQUFNLGVBQWUsV0FBNEQ7QUFDL0UsTUFBSTtHQUNGLE1BQU0sU0FBUyxNQUFNLEtBQUssb0JBQW9CO0FBRzlDLElBRGMsYUFBYUMsZ0NBQWMsRUFDbkMsSUFBSUMsb0NBQVksT0FBTztXQUN0QixPQUFPO0FBQ2QsVUFBTyxTQUFTLDJDQUEyQyxNQUFNO0FBQ2pFLFNBQU0ifQ==
@@ -6,30 +6,31 @@ import { EnviveAnalytics } from "@envive-ai/analytics";
6
6
  import { ExecutionContext } from "@envive-ai/analytics/dist/analytics/EnviveAnalytics";
7
7
 
8
8
  //#region src/services/userIdentityService/userIdentityService.ts
9
+ const logger = new logger_default("userIdentityService");
9
10
  var UserIdentityService = class {
10
11
  constructor({ apiKey }) {
11
12
  this.USER_ID_OVERRIDE_KEY = "v1-spiffy-user-id-override";
12
13
  this.apiKey = apiKey;
13
14
  }
14
15
  getUserIdOverrideFromLocalStorage() {
15
- logger_default.logDebug("[spiffy-ai] Getting userID from localStorage");
16
+ logger.logDebug("Getting userID from localStorage");
16
17
  return localStorage.getItem(this.USER_ID_OVERRIDE_KEY) ?? void 0;
17
18
  }
18
19
  async getUserIdOrDefault() {
19
20
  const userIdOverride = this.getUserIdOverrideFromLocalStorage();
20
21
  if (userIdOverride) return userIdOverride;
21
22
  try {
22
- logger_default.logDebug("Getting userID via EnviveAnalytics in UserIdentityService");
23
+ logger.logDebug("Getting userID via EnviveAnalytics in UserIdentityService");
23
24
  const enviveUserId = await new EnviveAnalytics({
24
25
  apiKey: this.apiKey,
25
26
  environmentInfo: { executionContext: ExecutionContext.EnviveReactComponentsV3 }
26
27
  }).resolveEnviveUserId();
27
- if (!enviveUserId) throw new Error("[spiffy-ai] EnviveAnalytics.resolveEnviveUserId() returned null/undefined");
28
+ if (!enviveUserId) throw new Error("EnviveAnalytics.resolveEnviveUserId() returned null/undefined");
28
29
  return enviveUserId;
29
30
  } catch (error) {
30
- logger_default.logError("[spiffy-ai] CRITICAL: Failed to get user ID:", error);
31
+ logger.logError("CRITICAL: Failed to get user ID:", error);
31
32
  const errorMessage = error instanceof Error ? error.message : "Unknown error";
32
- throw new Error(`[spiffy-ai] CRITICAL: User ID resolution failed: ${errorMessage}`);
33
+ throw new Error(`CRITICAL: User ID resolution failed: ${errorMessage}`);
33
34
  }
34
35
  }
35
36
  async initializeUser(atomStore) {
@@ -37,7 +38,7 @@ var UserIdentityService = class {
37
38
  const userId = await this.getUserIdOrDefault();
38
39
  (atomStore || getAtomStore()).set(userIdAtom, userId);
39
40
  } catch (error) {
40
- logger_default.logError("[spiffy-ai] CRITICAL: Failed to initialize user ID:", error);
41
+ logger.logError("CRITICAL: Failed to initialize user ID:", error);
41
42
  throw error;
42
43
  }
43
44
  }
@@ -45,4 +46,4 @@ var UserIdentityService = class {
45
46
 
46
47
  //#endregion
47
48
  export { UserIdentityService };
48
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcklkZW50aXR5U2VydmljZS5qcyIsIm5hbWVzIjpbImVycm9yOiB1bmtub3duIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3VzZXJJZGVudGl0eVNlcnZpY2UvdXNlcklkZW50aXR5U2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpdmVBbmFseXRpY3MgfSBmcm9tICdAZW52aXZlLWFpL2FuYWx5dGljcyc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBnZXRBdG9tU3RvcmUgfSBmcm9tICdzcmMvYXRvbXMvYXRvbVN0b3JlJztcbmltcG9ydCB7IHVzZXJJZEF0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7IEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICdAZW52aXZlLWFpL2FuYWx5dGljcy9kaXN0L2FuYWx5dGljcy9FbnZpdmVBbmFseXRpY3MnO1xuXG50eXBlIFVzZXJJZGVudGl0eVNlcnZpY2VQcm9wcyA9IHtcbiAgYXBpS2V5OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY2xhc3MgVXNlcklkZW50aXR5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpS2V5OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBVU0VSX0lEX09WRVJSSURFX0tFWSA9ICd2MS1zcGlmZnktdXNlci1pZC1vdmVycmlkZSc7XG5cbiAgY29uc3RydWN0b3IoeyBhcGlLZXkgfTogVXNlcklkZW50aXR5U2VydmljZVByb3BzKSB7XG4gICAgdGhpcy5hcGlLZXkgPSBhcGlLZXk7XG4gIH1cblxuICBnZXRVc2VySWRPdmVycmlkZUZyb21Mb2NhbFN0b3JhZ2UoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBMb2dnZXIubG9nRGVidWcoJ1tzcGlmZnktYWldIEdldHRpbmcgdXNlcklEIGZyb20gbG9jYWxTdG9yYWdlJyk7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuVVNFUl9JRF9PVkVSUklERV9LRVkpID8/IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGFzeW5jIGdldFVzZXJJZE9yRGVmYXVsdCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHVzZXJJZE92ZXJyaWRlID0gdGhpcy5nZXRVc2VySWRPdmVycmlkZUZyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgICBpZiAodXNlcklkT3ZlcnJpZGUpIHtcbiAgICAgIHJldHVybiB1c2VySWRPdmVycmlkZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKCdHZXR0aW5nIHVzZXJJRCB2aWEgRW52aXZlQW5hbHl0aWNzIGluIFVzZXJJZGVudGl0eVNlcnZpY2UnKTtcbiAgICAgIGNvbnN0IGVudml2ZUFuYWx5dGljcyA9IG5ldyBFbnZpdmVBbmFseXRpY3Moe1xuICAgICAgICBhcGlLZXk6IHRoaXMuYXBpS2V5LFxuICAgICAgICBlbnZpcm9ubWVudEluZm86IHsgZXhlY3V0aW9uQ29udGV4dDogRXhlY3V0aW9uQ29udGV4dC5FbnZpdmVSZWFjdENvbXBvbmVudHNWMyB9LFxuICAgICAgfSk7XG4gICAgICBjb25zdCBlbnZpdmVVc2VySWQgPSBhd2FpdCBlbnZpdmVBbmFseXRpY3MucmVzb2x2ZUVudml2ZVVzZXJJZCgpO1xuXG4gICAgICBpZiAoIWVudml2ZVVzZXJJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1tzcGlmZnktYWldIEVudml2ZUFuYWx5dGljcy5yZXNvbHZlRW52aXZlVXNlcklkKCkgcmV0dXJuZWQgbnVsbC91bmRlZmluZWQnLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW52aXZlVXNlcklkO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIENSSVRJQ0FMOiBGYWlsZWQgdG8gZ2V0IHVzZXIgSUQ6JywgZXJyb3IpO1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcic7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFtzcGlmZnktYWldIENSSVRJQ0FMOiBVc2VyIElEIHJlc29sdXRpb24gZmFpbGVkOiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0aWFsaXplVXNlcihhdG9tU3RvcmU/OiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRBdG9tU3RvcmU+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzZXJJZCA9IGF3YWl0IHRoaXMuZ2V0VXNlcklkT3JEZWZhdWx0KCk7XG5cbiAgICAgIGNvbnN0IHN0b3JlID0gYXRvbVN0b3JlIHx8IGdldEF0b21TdG9yZSgpO1xuICAgICAgc3RvcmUuc2V0KHVzZXJJZEF0b20sIHVzZXJJZCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIExvZ2dlci5sb2dFcnJvcignW3NwaWZmeS1haV0gQ1JJVElDQUw6IEZhaWxlZCB0byBpbml0aWFsaXplIHVzZXIgSUQ6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBVUEsSUFBYSxzQkFBYixNQUFpQztDQUsvQixZQUFZLEVBQUUsVUFBb0M7OEJBRlY7QUFHdEMsT0FBSyxTQUFTOztDQUdoQixvQ0FBd0Q7QUFDdEQsaUJBQU8sU0FBUywrQ0FBK0M7QUFDL0QsU0FBTyxhQUFhLFFBQVEsS0FBSyxxQkFBcUIsSUFBSTs7Q0FHNUQsTUFBTSxxQkFBc0M7RUFDMUMsTUFBTSxpQkFBaUIsS0FBSyxtQ0FBbUM7QUFDL0QsTUFBSSxlQUNGLFFBQU87QUFHVCxNQUFJO0FBQ0Ysa0JBQU8sU0FBUyw0REFBNEQ7R0FLNUUsTUFBTSxlQUFlLE1BSkcsSUFBSSxnQkFBZ0I7SUFDMUMsUUFBUSxLQUFLO0lBQ2IsaUJBQWlCLEVBQUUsa0JBQWtCLGlCQUFpQix5QkFBeUI7SUFDaEYsQ0FBQyxDQUN5QyxxQkFBcUI7QUFFaEUsT0FBSSxDQUFDLGFBQ0gsT0FBTSxJQUFJLE1BQ1IsNEVBQ0Q7QUFHSCxVQUFPO1dBQ0FBLE9BQWdCO0FBQ3ZCLGtCQUFPLFNBQVMsZ0RBQWdELE1BQU07R0FDdEUsTUFBTSxlQUFlLGlCQUFpQixRQUFRLE1BQU0sVUFBVTtBQUM5RCxTQUFNLElBQUksTUFBTSxvREFBb0QsZUFBZTs7O0NBSXZGLE1BQU0sZUFBZSxXQUE0RDtBQUMvRSxNQUFJO0dBQ0YsTUFBTSxTQUFTLE1BQU0sS0FBSyxvQkFBb0I7QUFHOUMsSUFEYyxhQUFhLGNBQWMsRUFDbkMsSUFBSSxZQUFZLE9BQU87V0FDdEIsT0FBTztBQUNkLGtCQUFPLFNBQVMsdURBQXVELE1BQU07QUFDN0UsU0FBTSJ9
49
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcklkZW50aXR5U2VydmljZS5qcyIsIm5hbWVzIjpbIkxvZ2dlciIsImVycm9yOiB1bmtub3duIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3VzZXJJZGVudGl0eVNlcnZpY2UvdXNlcklkZW50aXR5U2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpdmVBbmFseXRpY3MgfSBmcm9tICdAZW52aXZlLWFpL2FuYWx5dGljcyc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBnZXRBdG9tU3RvcmUgfSBmcm9tICdzcmMvYXRvbXMvYXRvbVN0b3JlJztcbmltcG9ydCB7IHVzZXJJZEF0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7IEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICdAZW52aXZlLWFpL2FuYWx5dGljcy9kaXN0L2FuYWx5dGljcy9FbnZpdmVBbmFseXRpY3MnO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCd1c2VySWRlbnRpdHlTZXJ2aWNlJyk7XG5cbnR5cGUgVXNlcklkZW50aXR5U2VydmljZVByb3BzID0ge1xuICBhcGlLZXk6IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBVc2VySWRlbnRpdHlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlLZXk6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IFVTRVJfSURfT1ZFUlJJREVfS0VZID0gJ3YxLXNwaWZmeS11c2VyLWlkLW92ZXJyaWRlJztcblxuICBjb25zdHJ1Y3Rvcih7IGFwaUtleSB9OiBVc2VySWRlbnRpdHlTZXJ2aWNlUHJvcHMpIHtcbiAgICB0aGlzLmFwaUtleSA9IGFwaUtleTtcbiAgfVxuXG4gIGdldFVzZXJJZE92ZXJyaWRlRnJvbUxvY2FsU3RvcmFnZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGxvZ2dlci5sb2dEZWJ1ZygnR2V0dGluZyB1c2VySUQgZnJvbSBsb2NhbFN0b3JhZ2UnKTtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5VU0VSX0lEX09WRVJSSURFX0tFWSkgPz8gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgZ2V0VXNlcklkT3JEZWZhdWx0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgdXNlcklkT3ZlcnJpZGUgPSB0aGlzLmdldFVzZXJJZE92ZXJyaWRlRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIGlmICh1c2VySWRPdmVycmlkZSkge1xuICAgICAgcmV0dXJuIHVzZXJJZE92ZXJyaWRlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoJ0dldHRpbmcgdXNlcklEIHZpYSBFbnZpdmVBbmFseXRpY3MgaW4gVXNlcklkZW50aXR5U2VydmljZScpO1xuICAgICAgY29uc3QgZW52aXZlQW5hbHl0aWNzID0gbmV3IEVudml2ZUFuYWx5dGljcyh7XG4gICAgICAgIGFwaUtleTogdGhpcy5hcGlLZXksXG4gICAgICAgIGVudmlyb25tZW50SW5mbzogeyBleGVjdXRpb25Db250ZXh0OiBFeGVjdXRpb25Db250ZXh0LkVudml2ZVJlYWN0Q29tcG9uZW50c1YzIH0sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGVudml2ZVVzZXJJZCA9IGF3YWl0IGVudml2ZUFuYWx5dGljcy5yZXNvbHZlRW52aXZlVXNlcklkKCk7XG5cbiAgICAgIGlmICghZW52aXZlVXNlcklkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRW52aXZlQW5hbHl0aWNzLnJlc29sdmVFbnZpdmVVc2VySWQoKSByZXR1cm5lZCBudWxsL3VuZGVmaW5lZCcpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW52aXZlVXNlcklkO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBsb2dnZXIubG9nRXJyb3IoJ0NSSVRJQ0FMOiBGYWlsZWQgdG8gZ2V0IHVzZXIgSUQ6JywgZXJyb3IpO1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcic7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENSSVRJQ0FMOiBVc2VyIElEIHJlc29sdXRpb24gZmFpbGVkOiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0aWFsaXplVXNlcihhdG9tU3RvcmU/OiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRBdG9tU3RvcmU+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzZXJJZCA9IGF3YWl0IHRoaXMuZ2V0VXNlcklkT3JEZWZhdWx0KCk7XG5cbiAgICAgIGNvbnN0IHN0b3JlID0gYXRvbVN0b3JlIHx8IGdldEF0b21TdG9yZSgpO1xuICAgICAgc3RvcmUuc2V0KHVzZXJJZEF0b20sIHVzZXJJZCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5sb2dFcnJvcignQ1JJVElDQUw6IEZhaWxlZCB0byBpbml0aWFsaXplIHVzZXIgSUQ6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBTUEsTUFBTSxTQUFTLElBQUlBLGVBQU8sc0JBQXNCO0FBTWhELElBQWEsc0JBQWIsTUFBaUM7Q0FLL0IsWUFBWSxFQUFFLFVBQW9DOzhCQUZWO0FBR3RDLE9BQUssU0FBUzs7Q0FHaEIsb0NBQXdEO0FBQ3RELFNBQU8sU0FBUyxtQ0FBbUM7QUFDbkQsU0FBTyxhQUFhLFFBQVEsS0FBSyxxQkFBcUIsSUFBSTs7Q0FHNUQsTUFBTSxxQkFBc0M7RUFDMUMsTUFBTSxpQkFBaUIsS0FBSyxtQ0FBbUM7QUFDL0QsTUFBSSxlQUNGLFFBQU87QUFHVCxNQUFJO0FBQ0YsVUFBTyxTQUFTLDREQUE0RDtHQUs1RSxNQUFNLGVBQWUsTUFKRyxJQUFJLGdCQUFnQjtJQUMxQyxRQUFRLEtBQUs7SUFDYixpQkFBaUIsRUFBRSxrQkFBa0IsaUJBQWlCLHlCQUF5QjtJQUNoRixDQUFDLENBQ3lDLHFCQUFxQjtBQUVoRSxPQUFJLENBQUMsYUFDSCxPQUFNLElBQUksTUFBTSxnRUFBZ0U7QUFHbEYsVUFBTztXQUNBQyxPQUFnQjtBQUN2QixVQUFPLFNBQVMsb0NBQW9DLE1BQU07R0FDMUQsTUFBTSxlQUFlLGlCQUFpQixRQUFRLE1BQU0sVUFBVTtBQUM5RCxTQUFNLElBQUksTUFBTSx3Q0FBd0MsZUFBZTs7O0NBSTNFLE1BQU0sZUFBZSxXQUE0RDtBQUMvRSxNQUFJO0dBQ0YsTUFBTSxTQUFTLE1BQU0sS0FBSyxvQkFBb0I7QUFHOUMsSUFEYyxhQUFhLGNBQWMsRUFDbkMsSUFBSSxZQUFZLE9BQU87V0FDdEIsT0FBTztBQUNkLFVBQU8sU0FBUywyQ0FBMkMsTUFBTTtBQUNqRSxTQUFNIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@envive-ai/react-hooks",
3
- "version": "0.3.17",
3
+ "version": "0.3.19",
4
4
  "description": "React hooks for connecting to Envive AI services.",
5
5
  "keywords": [
6
6
  "react",
@@ -38,7 +38,7 @@
38
38
  },
39
39
  "dependencies": {
40
40
  "@amplitude/analytics-browser": "2.23.7",
41
- "@spiffy-ai/commerce-api-client": "1.1.0-SNAPSHOT.202602261036",
41
+ "@spiffy-ai/commerce-api-client": "1.1.0-SNAPSHOT.202603181358",
42
42
  "@envive-ai/analytics": "1.0.28",
43
43
  "fuse.js": "^7.1.0",
44
44
  "jotai": "^2.14.0",
@@ -63,6 +63,8 @@ import { productRetrievalResponseToProductRetrievalResult } from './utils/produc
63
63
  import { apiWidgetTextResponseToCoreWidgetText } from './utils/widgetTextFromApiWidgetTextResponse';
64
64
  import { coreWidgetTextRequestToApiRequest } from './utils/widgetTextRequestToApiRequest';
65
65
 
66
+ const logger = new Logger('commerce-api');
67
+
66
68
  async function errorResponseBody(error: ResponseError) {
67
69
  try {
68
70
  return await error.response.json();
@@ -73,7 +75,7 @@ async function errorResponseBody(error: ResponseError) {
73
75
 
74
76
  async function throwSessionRestartRequiredIf(errorMsg: string, error: unknown) {
75
77
  if (!(error instanceof ResponseError)) {
76
- Logger.logInfo(errorMsg, error);
78
+ logger.logInfo(errorMsg, error);
77
79
  throw error;
78
80
  }
79
81
 
@@ -87,7 +89,7 @@ async function throwSessionRestartRequiredIf(errorMsg: string, error: unknown) {
87
89
  errorResponse?.app_code?.toUpperCase() === 'RESTART_SESSION' ||
88
90
  errorResponse?.sub_code?.toUpperCase() === 'NOT_FOUND' // for backward compatibility. new API responses will contain "app_code"
89
91
  ) {
90
- Logger.logInfo(
92
+ logger.logInfo(
91
93
  'Session does not exist. Re-start session',
92
94
  error,
93
95
  error.response,
@@ -96,7 +98,7 @@ async function throwSessionRestartRequiredIf(errorMsg: string, error: unknown) {
96
98
  throw new SessionRestartRequired();
97
99
  }
98
100
 
99
- Logger.logInfo(errorMsg, error);
101
+ logger.logInfo(errorMsg, error);
100
102
  throw error;
101
103
  }
102
104
 
@@ -200,7 +202,7 @@ class CommerceApiClient {
200
202
 
201
203
  return messages.filter((m): m is Message => m != null);
202
204
  } catch (err: unknown) {
203
- Logger.logInfo('Failed to get next responses', err, {
205
+ logger.logInfo('Failed to get next responses', err, {
204
206
  payloadContext: payload?.context,
205
207
  userEvents: payload?.userEvents,
206
208
  });
@@ -224,7 +226,7 @@ class CommerceApiClient {
224
226
 
225
227
  // Read the response as a stream of data
226
228
  if (!response.raw.body) {
227
- Logger.logError('[spiffy-ai] No body in the streamed response', undefined, {
229
+ logger.logError('No body in the streamed response', undefined, {
228
230
  response: response.raw,
229
231
  });
230
232
  return;
@@ -239,7 +241,7 @@ class CommerceApiClient {
239
241
  try {
240
242
  return JSON.parse(line); // Parse the JSON string
241
243
  } catch (err) {
242
- Logger.logError('[spiffy-ai] Error parsing streamed line', err, {
244
+ logger.logError('Error parsing streamed line', err, {
243
245
  line,
244
246
  partial,
245
247
  });
@@ -283,7 +285,7 @@ class CommerceApiClient {
283
285
  }
284
286
  }
285
287
  } catch (error: unknown) {
286
- Logger.logError('[spiffy-ai] Failed to get next streaming responses', error, {
288
+ logger.logError('Failed to get next streaming responses', error, {
287
289
  payloadContext: payload?.context,
288
290
  userEvents: payload?.userEvents,
289
291
  });
@@ -320,7 +322,7 @@ class CommerceApiClient {
320
322
 
321
323
  return suggestions;
322
324
  } catch (error: unknown) {
323
- Logger.logInfo('Failed to get suggestions', error, {
325
+ logger.logInfo('Failed to get suggestions', error, {
324
326
  payloadContext: payload?.context,
325
327
  userEvents: payload?.userEvents,
326
328
  });
@@ -510,7 +512,7 @@ class CommerceApiClient {
510
512
  merchant_tags: httpResponseJson.merchant_tags || [],
511
513
  };
512
514
  } catch (err) {
513
- Logger.logError('Failed to get response for v1SupportedEventPost', {
515
+ logger.logError('Failed to get response for v1SupportedEventPost', {
514
516
  err,
515
517
  });
516
518
  return {
@@ -569,7 +571,7 @@ class CommerceApiClient {
569
571
 
570
572
  return validateOrgConfigResults(response);
571
573
  } catch (err) {
572
- Logger.logError(`Failed to get org config`, err, { err });
574
+ logger.logError(`Failed to get org config`, err, { err });
573
575
  return undefined;
574
576
  }
575
577
  };
@@ -579,7 +581,7 @@ class CommerceApiClient {
579
581
  email: string,
580
582
  customerServiceProvider: CustomerServiceProvider,
581
583
  ) => {
582
- Logger.logInfo(
584
+ logger.logInfo(
583
585
  `addNoteToLatestConversation - user_id=${spiffyUserId} email=${email} customer_service_provider=${customerServiceProvider}`,
584
586
  );
585
587
  try {
@@ -593,7 +595,7 @@ class CommerceApiClient {
593
595
  },
594
596
  );
595
597
  } catch (err) {
596
- Logger.logError('Failed to add note to latest conversation', { err });
598
+ logger.logError('Failed to add note to latest conversation', { err });
597
599
  }
598
600
  };
599
601
 
@@ -1,20 +1,45 @@
1
1
  /* eslint-disable no-console */
2
2
 
3
3
  class Logger {
4
- static logInfo(message: string, ...args: unknown[]): void {
5
- console.info(`INFO: ${message}`, ...args);
4
+ private readonly caller: string;
5
+
6
+ /* Creates a new Logger instance.
7
+ * @param caller - The caller of the logger.
8
+ */
9
+ constructor(caller: string) {
10
+ this.caller = caller;
11
+ }
12
+
13
+ static getTimestamp(): string {
14
+ return new Date().toISOString();
15
+ }
16
+
17
+ logInfo(message: string, ...args: unknown[]): void {
18
+ console.info(
19
+ `INFO: [envive-ai] ${Logger.getTimestamp()} - ${this.caller} - ${message}`,
20
+ ...args,
21
+ );
6
22
  }
7
23
 
8
- static logDebug(message: string, ...args: unknown[]): void {
9
- console.debug(`DEBUG: ${message}`, ...args);
24
+ logDebug(message: string, ...args: unknown[]): void {
25
+ console.debug(
26
+ `DEBUG: [envive-ai] ${Logger.getTimestamp()} - ${this.caller} - ${message}`,
27
+ ...args,
28
+ );
10
29
  }
11
30
 
12
- static logError(message: string, error: unknown | undefined, ...args: unknown[]): void {
13
- console.error(`ERROR: ${message} error=${error}`, args);
31
+ logError(message: string, error: unknown | undefined, ...args: unknown[]): void {
32
+ console.error(
33
+ `ERROR: [envive-ai] ${Logger.getTimestamp()} - ${this.caller} - ${message} error=${error}`,
34
+ args,
35
+ );
14
36
  }
15
37
 
16
- static logWarn(message: string, error: unknown | undefined, ...args: unknown[]): void {
17
- console.warn(`WARN: ${message} error=${error}`, args);
38
+ logWarn(message: string, error: unknown | undefined, ...args: unknown[]): void {
39
+ console.warn(
40
+ `WARN: [envive-ai] ${Logger.getTimestamp()} - ${this.caller} - ${message} error=${error}`,
41
+ args,
42
+ );
18
43
  }
19
44
  }
20
45
 
@@ -3,6 +3,8 @@ import { FormType } from '@spiffy-ai/commerce-api-client';
3
3
  import { ApiFormResponseAttributes } from 'src/application/models/api/responseGenerics';
4
4
  import { hasPropertyOfType } from 'src/application/models/guards/utils';
5
5
 
6
+ const logger = new Logger('isApiFormResponse');
7
+
6
8
  /**
7
9
  * Type guard to check if the provided data has the all of the properties (with the correct types) of
8
10
  * a FormResponseAttribute
@@ -13,14 +15,14 @@ import { hasPropertyOfType } from 'src/application/models/guards/utils';
13
15
  */
14
16
  export const isApiFormResponseAttributes = (data: unknown): data is ApiFormResponseAttributes => {
15
17
  if (data == null || typeof data !== 'object') {
16
- Logger.logError('isApiFormResponseAttributes: data is null or not an object', undefined, {
18
+ logger.logError('isApiFormResponseAttributes: data is null or not an object', undefined, {
17
19
  data,
18
20
  });
19
21
  return false;
20
22
  }
21
23
 
22
24
  if ('form_category' in data && typeof data.form_category !== 'object') {
23
- Logger.logError('isApiFormResponseAttributes: form_category is not an object', undefined, {
25
+ logger.logError('isApiFormResponseAttributes: form_category is not an object', undefined, {
24
26
  data,
25
27
  });
26
28
  return false;
@@ -31,7 +33,7 @@ export const isApiFormResponseAttributes = (data: unknown): data is ApiFormRespo
31
33
  !hasPropertyOfType(data.form_category, 'form_type', 'string') ||
32
34
  !Object.values(FormType).includes(data.form_category.form_type as FormType)
33
35
  ) {
34
- Logger.logError(
36
+ logger.logError(
35
37
  'isApiFormResponseAttributes: form_type is missing or not a valid form type',
36
38
  undefined,
37
39
  {
@@ -43,7 +45,7 @@ export const isApiFormResponseAttributes = (data: unknown): data is ApiFormRespo
43
45
  }
44
46
 
45
47
  if (!hasPropertyOfType(data, 'schema', 'object')) {
46
- Logger.logError('isApiFormResponseAttributes: schema is missing or not an object', undefined, {
48
+ logger.logError('isApiFormResponseAttributes: schema is missing or not an object', undefined, {
47
49
  data,
48
50
  });
49
51
  return false;
@@ -52,7 +54,7 @@ export const isApiFormResponseAttributes = (data: unknown): data is ApiFormRespo
52
54
  // TODO: also wanna validate the fields of data.schema.properties but might wanna change the schema
53
55
  // to not have the property name as a key in the object
54
56
  if (!hasPropertyOfType(data.schema, 'properties', 'object')) {
55
- Logger.logError(
57
+ logger.logError(
56
58
  'isApiFormResponseAttributes: schema.properties is missing or not an object',
57
59
  undefined,
58
60
  {
@@ -63,7 +65,7 @@ export const isApiFormResponseAttributes = (data: unknown): data is ApiFormRespo
63
65
  }
64
66
 
65
67
  if (!hasPropertyOfType(data.schema, 'required', 'array')) {
66
- Logger.logError(
68
+ logger.logError(
67
69
  'isApiFormResponseAttributes: schema.required is missing or not an array',
68
70
  undefined,
69
71
  { data },
@@ -76,7 +78,7 @@ export const isApiFormResponseAttributes = (data: unknown): data is ApiFormRespo
76
78
  (key: unknown) => typeof key === 'string' && key in data.schema.properties,
77
79
  )
78
80
  ) {
79
- Logger.logError(
81
+ logger.logError(
80
82
  'isApiFormResponseAttributes: schema.required contains invalid property keys',
81
83
  undefined,
82
84
  {
@@ -2,21 +2,23 @@ import Logger from 'src/application/logging/logger';
2
2
  import { FormSubmittedAttributes, FormType } from '@spiffy-ai/commerce-api-client';
3
3
  import { hasPropertyOfType } from 'src/application/models/guards/utils';
4
4
 
5
+ const logger = new Logger('isApiFormSubmittedResponseAttributes');
6
+
5
7
  export const isApiFormSubmittedResponseAttributes = (
6
8
  data: unknown,
7
9
  ): data is FormSubmittedAttributes => {
8
10
  if (data == null || typeof data !== 'object') {
9
- Logger.logError('isApiFormSubmittedResponseAttributes', 'data is null or not an object', data);
11
+ logger.logError('isApiFormSubmittedResponseAttributes', 'data is null or not an object', data);
10
12
  return false;
11
13
  }
12
14
 
13
15
  if (!hasPropertyOfType(data, 'filled_schema', 'object')) {
14
- Logger.logError('isApiFormSubmittedResponseAttributes', 'filled_schema is not an object', data);
16
+ logger.logError('isApiFormSubmittedResponseAttributes', 'filled_schema is not an object', data);
15
17
  return false;
16
18
  }
17
19
 
18
20
  if (!hasPropertyOfType(data, 'form_response_id', 'string')) {
19
- Logger.logError(
21
+ logger.logError(
20
22
  'isApiFormSubmittedResponseAttributes',
21
23
  'form_response_id is not a string',
22
24
  data,
@@ -25,7 +27,7 @@ export const isApiFormSubmittedResponseAttributes = (
25
27
  }
26
28
 
27
29
  if (!('form_type' in data) || !Object.values(FormType).includes(data.form_type as FormType)) {
28
- Logger.logError(
30
+ logger.logError(
29
31
  'isApiFormSubmittedResponseAttributes',
30
32
  'form_type is not a valid form type enum',
31
33
  data,