@envive-ai/react-hooks 0.3.45 → 0.3.47

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 (293) hide show
  1. package/dist/application/commerce-api.cjs +73 -3
  2. package/dist/application/commerce-api.d.cts +16 -1
  3. package/dist/application/commerce-api.d.ts +16 -1
  4. package/dist/application/commerce-api.js +73 -3
  5. package/dist/application/models/api/userEvent.d.cts +9 -2
  6. package/dist/application/models/api/userEvent.d.ts +9 -2
  7. package/dist/application/models/api/widgetText.d.cts +2 -1
  8. package/dist/application/models/api/widgetText.d.ts +2 -1
  9. package/dist/application/models/featureGates.cjs +2 -1
  10. package/dist/application/models/featureGates.d.cts +2 -1
  11. package/dist/application/models/featureGates.d.ts +2 -1
  12. package/dist/application/models/featureGates.js +2 -1
  13. package/dist/application/models/graphql/queries/getProductOptionsQuery.cjs +33 -0
  14. package/dist/application/models/graphql/queries/getProductOptionsQuery.d.cts +28 -0
  15. package/dist/application/models/graphql/queries/getProductOptionsQuery.d.ts +28 -0
  16. package/dist/application/models/graphql/queries/getProductOptionsQuery.js +32 -0
  17. package/dist/application/models/index.cjs +1 -1
  18. package/dist/application/models/index.js +1 -1
  19. package/dist/application/models/validators/validateGraphQLFrontendConfig.cjs +1 -1
  20. package/dist/application/models/validators/validateGraphQLFrontendConfig.js +1 -1
  21. package/dist/application/models/validators/validateResponse.cjs +2 -1
  22. package/dist/application/models/validators/validateResponse.js +2 -1
  23. package/dist/application/models/validators/validateUserEvent.cjs +3 -3
  24. package/dist/application/models/validators/validateUserEvent.js +3 -3
  25. package/dist/application/utils/elementObserver.d.cts +2 -2
  26. package/dist/application/utils/elementObserver.d.ts +2 -2
  27. package/dist/application/utils/index.cjs +2 -0
  28. package/dist/application/utils/index.d.cts +2 -1
  29. package/dist/application/utils/index.d.ts +2 -1
  30. package/dist/application/utils/index.js +2 -1
  31. package/dist/application/utils/messageFromAddToCartEvent.cjs +32 -0
  32. package/dist/application/utils/messageFromAddToCartEvent.d.cts +19 -0
  33. package/dist/application/utils/messageFromAddToCartEvent.d.ts +19 -0
  34. package/dist/application/utils/messageFromAddToCartEvent.js +31 -0
  35. package/dist/application/utils/widgetTextFromApiWidgetTextResponse.cjs +3 -2
  36. package/dist/application/utils/widgetTextFromApiWidgetTextResponse.js +3 -2
  37. package/dist/atoms/app/index.cjs +1 -1
  38. package/dist/atoms/app/index.d.cts +7 -7
  39. package/dist/atoms/app/index.d.ts +7 -7
  40. package/dist/atoms/app/index.js +1 -1
  41. package/dist/atoms/app/variant.cjs +2 -2
  42. package/dist/atoms/app/variant.d.cts +7 -7
  43. package/dist/atoms/app/variant.d.ts +7 -7
  44. package/dist/atoms/app/variant.js +2 -2
  45. package/dist/atoms/chat/chatState.d.cts +19 -19
  46. package/dist/atoms/chat/chatState.d.ts +19 -19
  47. package/dist/atoms/chat/form.d.cts +2 -2
  48. package/dist/atoms/chat/form.d.ts +2 -2
  49. package/dist/atoms/chat/index.cjs +1 -1
  50. package/dist/atoms/chat/index.d.cts +2 -2
  51. package/dist/atoms/chat/index.d.ts +2 -2
  52. package/dist/atoms/chat/index.js +1 -1
  53. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  54. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  55. package/dist/atoms/chat/messageQueue.d.cts +6 -6
  56. package/dist/atoms/chat/messageQueue.d.ts +6 -6
  57. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  58. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  59. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  60. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  61. package/dist/atoms/chat/replies.d.cts +3 -3
  62. package/dist/atoms/chat/replies.d.ts +2 -2
  63. package/dist/atoms/chat/suggestions.d.cts +2 -2
  64. package/dist/atoms/chat/suggestions.d.ts +2 -2
  65. package/dist/atoms/envive/enviveConfig.cjs +7 -4
  66. package/dist/atoms/envive/enviveConfig.d.cts +16 -14
  67. package/dist/atoms/envive/enviveConfig.d.ts +16 -14
  68. package/dist/atoms/envive/enviveConfig.js +6 -4
  69. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  70. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  71. package/dist/atoms/org/customerService.d.cts +6 -6
  72. package/dist/atoms/org/customerService.d.ts +6 -6
  73. package/dist/atoms/org/graphqlConfig.cjs +1 -1
  74. package/dist/atoms/org/graphqlConfig.d.cts +6 -6
  75. package/dist/atoms/org/graphqlConfig.d.ts +6 -6
  76. package/dist/atoms/org/graphqlConfig.js +1 -1
  77. package/dist/atoms/org/index.cjs +1 -1
  78. package/dist/atoms/org/index.js +1 -1
  79. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  80. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  81. package/dist/atoms/org/orgAnalyticsConfig.d.cts +4 -4
  82. package/dist/atoms/org/orgAnalyticsConfig.d.ts +4 -4
  83. package/dist/atoms/search/chatSearch.cjs +1 -1
  84. package/dist/atoms/search/chatSearch.d.cts +17 -17
  85. package/dist/atoms/search/chatSearch.d.ts +17 -17
  86. package/dist/atoms/search/chatSearch.js +1 -1
  87. package/dist/atoms/search/searchAPI.cjs +1 -1
  88. package/dist/atoms/search/searchAPI.d.cts +13 -13
  89. package/dist/atoms/search/searchAPI.d.ts +13 -13
  90. package/dist/atoms/search/searchAPI.js +1 -1
  91. package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
  92. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  93. package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +6 -4
  94. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.cts +3 -1
  95. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.ts +3 -1
  96. package/dist/contexts/enviveConfigContext/enviveConfigContext.js +6 -4
  97. package/dist/contexts/enviveContext/enviveContext.cjs +7 -3
  98. package/dist/contexts/enviveContext/enviveContext.d.cts +5 -1
  99. package/dist/contexts/enviveContext/enviveContext.d.ts +5 -1
  100. package/dist/contexts/enviveContext/enviveContext.js +7 -3
  101. package/dist/contexts/enviveContext/types.d.cts +1 -1
  102. package/dist/contexts/enviveContext/types.d.ts +1 -1
  103. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +2 -97
  104. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.cts +3 -25
  105. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +3 -25
  106. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +3 -97
  107. package/dist/contexts/featureFlagServiceContext/index.cjs +2 -1
  108. package/dist/contexts/featureFlagServiceContext/index.d.cts +2 -1
  109. package/dist/contexts/featureFlagServiceContext/index.d.ts +2 -1
  110. package/dist/contexts/featureFlagServiceContext/index.js +2 -1
  111. package/dist/contexts/graphqlContext/mockV3Config.cjs +1 -1
  112. package/dist/contexts/graphqlContext/mockV3Config.js +1 -1
  113. package/dist/contexts/localStorageContext/index.cjs +2 -1
  114. package/dist/contexts/localStorageContext/index.d.cts +2 -1
  115. package/dist/contexts/localStorageContext/index.d.ts +2 -1
  116. package/dist/contexts/localStorageContext/index.js +2 -1
  117. package/dist/contexts/localStorageContext/localStorageContext.cjs +5 -11
  118. package/dist/contexts/localStorageContext/localStorageContext.d.cts +3 -7
  119. package/dist/contexts/localStorageContext/localStorageContext.d.ts +3 -7
  120. package/dist/contexts/localStorageContext/localStorageContext.js +3 -8
  121. package/dist/contexts/localStorageContext/localStorageKeys.cjs +12 -0
  122. package/dist/contexts/localStorageContext/localStorageKeys.d.cts +9 -0
  123. package/dist/contexts/localStorageContext/localStorageKeys.d.ts +9 -0
  124. package/dist/contexts/localStorageContext/localStorageKeys.js +11 -0
  125. package/dist/contexts/pageContext/pageContext.cjs +2 -2
  126. package/dist/contexts/pageContext/pageContext.js +2 -2
  127. package/dist/contexts/salesAgentContext/chatAPI.cjs +15 -4
  128. package/dist/contexts/salesAgentContext/chatAPI.d.cts +4 -1
  129. package/dist/contexts/salesAgentContext/chatAPI.d.ts +4 -1
  130. package/dist/contexts/salesAgentContext/chatAPI.js +16 -5
  131. package/dist/contexts/salesAgentContext/salesAgentContext.cjs +15 -4
  132. package/dist/contexts/salesAgentContext/salesAgentContext.d.cts +2 -1
  133. package/dist/contexts/salesAgentContext/salesAgentContext.d.ts +2 -1
  134. package/dist/contexts/salesAgentContext/salesAgentContext.js +16 -5
  135. package/dist/contexts/salesAgentContext/salesAgentService.cjs +12 -4
  136. package/dist/contexts/salesAgentContext/salesAgentService.js +12 -4
  137. package/dist/contexts/searchContext/searchContext.cjs +1 -1
  138. package/dist/contexts/searchContext/searchContext.js +1 -1
  139. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  140. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.ts +2 -2
  141. package/dist/contexts/types.cjs +1 -1
  142. package/dist/contexts/types.d.cts +3 -1
  143. package/dist/contexts/types.d.ts +3 -1
  144. package/dist/contexts/types.js +1 -1
  145. package/dist/contexts/typesV3.cjs +1 -1
  146. package/dist/contexts/typesV3.d.cts +11 -2
  147. package/dist/contexts/typesV3.d.ts +12 -3
  148. package/dist/contexts/typesV3.js +1 -1
  149. package/dist/contexts/widgetConfigContext/widgetConfigContext.cjs +1 -1
  150. package/dist/contexts/widgetConfigContext/widgetConfigContext.js +1 -1
  151. package/dist/hooks/AddToCart/addToCartErrorMessage.cjs +7 -0
  152. package/dist/hooks/AddToCart/addToCartErrorMessage.d.cts +5 -0
  153. package/dist/hooks/AddToCart/addToCartErrorMessage.d.ts +5 -0
  154. package/dist/hooks/AddToCart/addToCartErrorMessage.js +6 -0
  155. package/dist/hooks/AddToCart/createAddToCartUserEvent.cjs +20 -0
  156. package/dist/hooks/AddToCart/createAddToCartUserEvent.d.cts +17 -0
  157. package/dist/hooks/AddToCart/createAddToCartUserEvent.d.ts +17 -0
  158. package/dist/hooks/AddToCart/createAddToCartUserEvent.js +19 -0
  159. package/dist/hooks/AddToCart/index.cjs +9 -0
  160. package/dist/hooks/AddToCart/index.d.cts +5 -0
  161. package/dist/hooks/AddToCart/index.d.ts +5 -0
  162. package/dist/hooks/AddToCart/index.js +6 -0
  163. package/dist/hooks/AddToCart/parseAddToCartFunction.cjs +27 -0
  164. package/dist/hooks/AddToCart/parseAddToCartFunction.d.cts +13 -0
  165. package/dist/hooks/AddToCart/parseAddToCartFunction.d.ts +13 -0
  166. package/dist/hooks/AddToCart/parseAddToCartFunction.js +27 -0
  167. package/dist/hooks/AddToCart/useAddToCart.cjs +24 -0
  168. package/dist/hooks/AddToCart/useAddToCart.d.cts +14 -0
  169. package/dist/hooks/AddToCart/useAddToCart.d.ts +14 -0
  170. package/dist/hooks/AddToCart/useAddToCart.js +23 -0
  171. package/dist/hooks/ChatToggle/useChatToggle.cjs +1 -1
  172. package/dist/hooks/ChatToggle/useChatToggle.js +1 -1
  173. package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.cjs +6 -5
  174. package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.js +3 -2
  175. package/dist/hooks/PageViewedEvent/usePageViewedEvent.cjs +6 -3
  176. package/dist/hooks/PageViewedEvent/usePageViewedEvent.js +6 -3
  177. package/dist/hooks/ProductDetails/index.cjs +9 -0
  178. package/dist/hooks/ProductDetails/index.d.cts +4 -0
  179. package/dist/hooks/ProductDetails/index.d.ts +4 -0
  180. package/dist/hooks/ProductDetails/index.js +4 -0
  181. package/dist/hooks/ProductDetails/useProductDetails.cjs +53 -0
  182. package/dist/hooks/ProductDetails/useProductDetails.d.cts +20 -0
  183. package/dist/hooks/ProductDetails/useProductDetails.d.ts +20 -0
  184. package/dist/hooks/ProductDetails/useProductDetails.js +52 -0
  185. package/dist/hooks/ProductDetails/variantSelection.cjs +42 -0
  186. package/dist/hooks/ProductDetails/variantSelection.d.cts +35 -0
  187. package/dist/hooks/ProductDetails/variantSelection.d.ts +35 -0
  188. package/dist/hooks/ProductDetails/variantSelection.js +38 -0
  189. package/dist/hooks/Search/useSearch.cjs +3 -3
  190. package/dist/hooks/Search/useSearch.d.cts +1 -1
  191. package/dist/hooks/Search/useSearch.d.ts +1 -1
  192. package/dist/hooks/Search/useSearch.js +3 -3
  193. package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.d.cts +2 -2
  194. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +11 -2
  195. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.cts +1 -10
  196. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts +1 -10
  197. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +11 -2
  198. package/dist/hooks/WidgetInteraction/types.cjs +13 -3
  199. package/dist/hooks/WidgetInteraction/types.d.cts +29 -4
  200. package/dist/hooks/WidgetInteraction/types.d.ts +29 -4
  201. package/dist/hooks/WidgetInteraction/types.js +13 -3
  202. package/dist/hooks/WidgetInteraction/utils.cjs +2 -2
  203. package/dist/hooks/WidgetInteraction/utils.js +2 -2
  204. package/dist/hooks/utils.d.cts +1 -1
  205. package/dist/hooks/utils.d.ts +1 -1
  206. package/dist/services/amplitudeService/amplitudeService.cjs +18 -11
  207. package/dist/services/amplitudeService/amplitudeService.d.cts +5 -2
  208. package/dist/services/amplitudeService/amplitudeService.d.ts +5 -2
  209. package/dist/services/amplitudeService/amplitudeService.js +16 -8
  210. package/dist/services/enviveConfigService/enviveConfigService.cjs +36 -4
  211. package/dist/services/enviveConfigService/enviveConfigService.d.cts +4 -1
  212. package/dist/services/enviveConfigService/enviveConfigService.d.ts +4 -1
  213. package/dist/services/enviveConfigService/enviveConfigService.js +35 -3
  214. package/dist/services/enviveConfigService/fetchGraphQLConfig.cjs +9 -8
  215. package/dist/services/enviveConfigService/fetchGraphQLConfig.js +9 -7
  216. package/dist/services/featureFlagService/index.cjs +101 -0
  217. package/dist/services/featureFlagService/index.d.cts +28 -0
  218. package/dist/services/featureFlagService/index.d.ts +28 -0
  219. package/dist/services/featureFlagService/index.js +101 -0
  220. package/dist/services/ga4ProjectionService/ga4EventSchema.cjs +8 -2
  221. package/dist/services/ga4ProjectionService/ga4EventSchema.js +8 -2
  222. package/dist/services/hardcopyService/hardcopyService.cjs +4 -3
  223. package/dist/services/hardcopyService/hardcopyService.d.cts +1 -1
  224. package/dist/services/hardcopyService/hardcopyService.d.ts +1 -1
  225. package/dist/services/hardcopyService/hardcopyService.js +4 -3
  226. package/dist/services/urlResolverWarmupService/index.cjs +54 -0
  227. package/dist/services/urlResolverWarmupService/index.d.cts +40 -0
  228. package/dist/services/urlResolverWarmupService/index.d.ts +40 -0
  229. package/dist/services/urlResolverWarmupService/index.js +54 -0
  230. package/dist/types/enviveConfig.d.cts +6 -2
  231. package/dist/types/enviveConfig.d.ts +6 -2
  232. package/dist/types/index.d.cts +2 -2
  233. package/dist/types/index.d.ts +2 -2
  234. package/package.json +18 -2
  235. package/src/application/__tests__/commerceApiAddToCartRehydration.test.ts +126 -0
  236. package/src/application/commerce-api.ts +142 -23
  237. package/src/application/models/api/userEvent.ts +8 -1
  238. package/src/application/models/api/widgetText.ts +3 -0
  239. package/src/application/models/featureGates.ts +5 -0
  240. package/src/application/models/graphql/queries/getProductOptionsQuery.ts +59 -0
  241. package/src/application/models/validators/__tests__/validateUserEvent.test.ts +41 -0
  242. package/src/application/models/validators/validateResponse.ts +1 -0
  243. package/src/application/models/validators/validateUserEvent.ts +7 -2
  244. package/src/application/utils/__tests__/messageFromAddToCartEvent.test.ts +109 -0
  245. package/src/application/utils/index.ts +1 -0
  246. package/src/application/utils/messageFromAddToCartEvent.ts +32 -0
  247. package/src/application/utils/widgetTextFromApiWidgetTextResponse.ts +1 -0
  248. package/src/atoms/app/index.ts +1 -1
  249. package/src/atoms/app/variant.ts +1 -1
  250. package/src/atoms/envive/enviveConfig.ts +6 -1
  251. package/src/atoms/org/graphqlConfig.ts +1 -1
  252. package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +5 -0
  253. package/src/contexts/enviveContext/enviveContext.tsx +10 -0
  254. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +6 -173
  255. package/src/contexts/localStorageContext/localStorageContext.tsx +2 -5
  256. package/src/contexts/localStorageContext/localStorageKeys.ts +8 -0
  257. package/src/contexts/pageContext/pageContext.tsx +1 -1
  258. package/src/contexts/salesAgentContext/__tests__/chatAPI.test.tsx +63 -0
  259. package/src/contexts/salesAgentContext/chatAPI.ts +20 -1
  260. package/src/contexts/salesAgentContext/salesAgentContext.tsx +17 -0
  261. package/src/contexts/salesAgentContext/salesAgentService.ts +12 -3
  262. package/src/contexts/types.ts +2 -0
  263. package/src/contexts/typesV3.ts +14 -0
  264. package/src/hooks/AddToCart/__tests__/parseAddToCartFunction.test.ts +31 -0
  265. package/src/hooks/AddToCart/__tests__/useAddToCart.test.tsx +204 -0
  266. package/src/hooks/AddToCart/addToCartErrorMessage.ts +2 -0
  267. package/src/hooks/AddToCart/createAddToCartUserEvent.ts +25 -0
  268. package/src/hooks/AddToCart/index.ts +4 -0
  269. package/src/hooks/AddToCart/parseAddToCartFunction.ts +31 -0
  270. package/src/hooks/AddToCart/useAddToCart.ts +35 -0
  271. package/src/hooks/PageViewedEvent/__tests__/usePageViewedEvent.test.ts +4 -4
  272. package/src/hooks/PageViewedEvent/usePageViewedEvent.ts +5 -1
  273. package/src/hooks/ProductDetails/__tests__/useProductDetails.test.tsx +129 -0
  274. package/src/hooks/ProductDetails/__tests__/variantSelection.test.ts +145 -0
  275. package/src/hooks/ProductDetails/index.ts +2 -0
  276. package/src/hooks/ProductDetails/useProductDetails.ts +62 -0
  277. package/src/hooks/ProductDetails/variantSelection.ts +61 -0
  278. package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +15 -0
  279. package/src/hooks/WidgetInteraction/types.ts +43 -2
  280. package/src/hooks/WidgetInteraction/utils.ts +1 -1
  281. package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +8 -8
  282. package/src/services/amplitudeService/amplitudeService.ts +43 -23
  283. package/src/services/enviveConfigService/__tests__/enviveConfigService.test.ts +208 -0
  284. package/src/services/enviveConfigService/enviveConfigService.ts +62 -2
  285. package/src/services/enviveConfigService/fetchGraphQLConfig.ts +17 -6
  286. package/src/services/featureFlagService/index.ts +176 -0
  287. package/src/services/ga4ProjectionService/__tests__/ga4ProjectionService.test.ts +36 -0
  288. package/src/services/ga4ProjectionService/ga4EventSchema.ts +7 -0
  289. package/src/services/hardcopyService/__tests__/hardcopyService.test.ts +47 -1
  290. package/src/services/hardcopyService/hardcopyService.ts +5 -0
  291. package/src/services/urlResolverWarmupService/__tests__/urlResolverWarmupService.test.ts +85 -0
  292. package/src/services/urlResolverWarmupService/index.ts +89 -0
  293. package/src/types/enviveConfig.ts +3 -0
@@ -1,104 +1,10 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
- const require_logger = require('../../application/logging/logger.cjs');
3
- const require_featureGates = require('../../application/models/featureGates.cjs');
2
+ const require_services_featureFlagService_index = require('../../services/featureFlagService/index.cjs');
4
3
  let react = require("react");
5
4
  react = require_rolldown_runtime.__toESM(react);
6
5
  let react_jsx_runtime = require("react/jsx-runtime");
7
6
 
8
7
  //#region src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx
9
- const FEATURE_FLAGS_STORAGE_KEY = "spiffy-feature-flags";
10
- const logger = new require_logger.default("featureFlagServiceContext");
11
- var FeatureFlagService = class FeatureFlagService {
12
- constructor(featureGates) {
13
- this.isFeatureGateEnabled = (featureGate) => {
14
- const gateValue = this.featureGates.find((gate) => gate.name === featureGate);
15
- const featureFlagOverride = FeatureFlagService.getFeatureFlagOverride(featureGate);
16
- if (featureFlagOverride !== void 0) return featureFlagOverride;
17
- if (gateValue == null || gateValue.value == null) {
18
- logger.logDebug(`isFeatureGateEnabled featureGate:${featureGate} value is undefined - returning false`);
19
- return false;
20
- }
21
- return gateValue.value;
22
- };
23
- this.isClientSessionEnabled = () => this.isFeatureGateEnabled(require_featureGates.FeatureGates.IsClientSessionEnabled);
24
- this.getFeatureFlags = () => {
25
- return Object.fromEntries(Object.values(require_featureGates.FeatureGates).map((featureGate) => [featureGate, this.isFeatureGateEnabled(featureGate)]));
26
- };
27
- this.getFullFlagValue = (featureGate) => {
28
- const gateValue = this.featureGates.find((gate) => gate.name === featureGate);
29
- return {
30
- resolved: this.isFeatureGateEnabled(featureGate),
31
- initial: gateValue?.value,
32
- query_param_override: FeatureFlagService.getQueryParamFeatureGateOverrides(featureGate),
33
- window_param_override: FeatureFlagService.getWindowFeatureGateOverrides(featureGate),
34
- stored_override: FeatureFlagService.getStoredFeatureGateOverrides(featureGate)
35
- };
36
- };
37
- this.getFullFlagValues = () => {
38
- const featureGates$1 = Object.values(require_featureGates.FeatureGates).map((featureGate) => [featureGate, this.getFullFlagValue(featureGate)]);
39
- return featureGates$1.length > 0 ? featureGates$1.reduce((acc, entry) => {
40
- const [name, value] = entry;
41
- if (name && value != null) return {
42
- ...acc,
43
- [`feature_gate.${name}`]: value
44
- };
45
- return acc;
46
- }, {}) : {};
47
- };
48
- this.featureGates = featureGates;
49
- }
50
- static getQueryParamFeatureGateOverrides(featureGate) {
51
- const url = window.location?.href ?? "";
52
- if (url.includes("?")) {
53
- const urlObj = new URL(url);
54
- const params = new URLSearchParams(urlObj.search);
55
- const value = Object.fromEntries(params.entries())[featureGate];
56
- if (value != null) return value === "true";
57
- }
58
- }
59
- static getWindowFeatureGateOverrides(featureGate) {
60
- if (typeof window === "undefined") return;
61
- const windowOverride = window;
62
- const value = (windowOverride?._envive?.featureOverrides ?? windowOverride?._spiffy?.featureOverrides)?.[String(featureGate)];
63
- if (value != null) return value;
64
- }
65
- static getStoredFeatureGateOverrides(featureGate) {
66
- if (typeof window === "undefined" || typeof window.localStorage === "undefined") return;
67
- try {
68
- const featureFlags = window.localStorage.getItem(FEATURE_FLAGS_STORAGE_KEY);
69
- if (!featureFlags) return;
70
- return JSON.parse(featureFlags)[featureGate];
71
- } catch (err) {
72
- logger.logError("getStoredFeatureGateOverrides: error parsing feature flags", err);
73
- return;
74
- }
75
- }
76
- static getFeatureFlagOverride(featureGate) {
77
- const queryOverride = FeatureFlagService.getQueryParamFeatureGateOverrides(featureGate);
78
- if (queryOverride != null) {
79
- logger.logDebug(`isFeatureGateEnabled featureGate:${featureGate} overridden by URL param. New value: ${queryOverride}`);
80
- return queryOverride;
81
- }
82
- const windowOverride = FeatureFlagService.getWindowFeatureGateOverrides(featureGate);
83
- if (windowOverride != null) {
84
- logger.logDebug(`isFeatureGateEnabled featureGate:${featureGate} overridden by window param. New value: ${windowOverride}`);
85
- return windowOverride;
86
- }
87
- const storedOverride = FeatureFlagService.getStoredFeatureGateOverrides(featureGate);
88
- if (storedOverride != null) {
89
- logger.logDebug(`isFeatureGateEnabled featureGate:${featureGate} overridden by stored value. New value: ${storedOverride}`);
90
- return storedOverride;
91
- }
92
- }
93
- static persistFeatureGateOverrides() {
94
- if (typeof window === "undefined" || typeof window.localStorage === "undefined") return;
95
- const overrides = Object.values(require_featureGates.FeatureGates).map((featureGate) => [featureGate, FeatureFlagService.getFeatureFlagOverride(featureGate)]).filter(([, value]) => value !== void 0).reduce((acc, [key, value]) => ({
96
- ...acc,
97
- [key]: value
98
- }), {});
99
- window.localStorage.setItem(FEATURE_FLAGS_STORAGE_KEY, JSON.stringify(overrides));
100
- }
101
- };
102
8
  const FeatureFlagServiceContext = (0, react.createContext)(void 0);
103
9
  const FeatureFlagServiceProvider = ({ featureFlagService: inputService, children }) => {
104
10
  const contextValue = (0, react.useMemo)(() => ({ featureFlagService: inputService }), [inputService]);
@@ -114,7 +20,6 @@ const useFeatureFlagService = () => {
114
20
  };
115
21
 
116
22
  //#endregion
117
- exports.FeatureFlagService = FeatureFlagService;
118
23
  exports.FeatureFlagServiceProvider = FeatureFlagServiceProvider;
119
24
  exports.useFeatureFlagService = useFeatureFlagService;
120
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5janMiLCJuYW1lcyI6WyJMb2dnZXIiLCJGZWF0dXJlR2F0ZXMiLCJmZWF0dXJlR2F0ZXMiLCJGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlcjogUmVhY3QuRkM8RmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXJQcm9wcz4iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlLCBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgT3JnQ29uZmlnRmVhdHVyZUdhdGUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdDb25maWdSZXN1bHRzJztcbmltcG9ydCB7IEZlYXR1cmVHYXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzJztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcblxuY29uc3QgRkVBVFVSRV9GTEFHU19TVE9SQUdFX0tFWSA9ICdzcGlmZnktZmVhdHVyZS1mbGFncyc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBGdWxsRmxhZ1ZhbHVlIHtcbiAgcmVzb2x2ZWQ6IGJvb2xlYW47XG4gIGluaXRpYWw6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHF1ZXJ5X3BhcmFtX292ZXJyaWRlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICB3aW5kb3dfcGFyYW1fb3ZlcnJpZGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHN0b3JlZF9vdmVycmlkZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLy8gVGhpcyBpcyB0aGUgY2xhc3MgdGhhdCB3YXMgcHJldmlvdXNseSBpbXBsaWNpdGx5IHVzZWQgb3IgZGVmaW5lZCBlbHNld2hlcmVcbmV4cG9ydCBjbGFzcyBGZWF0dXJlRmxhZ1NlcnZpY2Uge1xuICBwcml2YXRlIGZlYXR1cmVHYXRlczogT3JnQ29uZmlnRmVhdHVyZUdhdGVbXTtcblxuICBjb25zdHJ1Y3RvcihmZWF0dXJlR2F0ZXM6IE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlW10pIHtcbiAgICB0aGlzLmZlYXR1cmVHYXRlcyA9IGZlYXR1cmVHYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXRRdWVyeVBhcmFtRmVhdHVyZUdhdGVPdmVycmlkZXMoZmVhdHVyZUdhdGU6IEZlYXR1cmVHYXRlcyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbj8uaHJlZiA/PyAnJztcbiAgICBpZiAodXJsLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgIGNvbnN0IHVybE9iaiA9IG5ldyBVUkwodXJsKTtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXModXJsT2JqLnNlYXJjaCk7XG4gICAgICBjb25zdCBwYXJhbXNPYmogPSBPYmplY3QuZnJvbUVudHJpZXMocGFyYW1zLmVudHJpZXMoKSk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtc09ialtmZWF0dXJlR2F0ZV07XG5cbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gJ3RydWUnO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0V2luZG93RmVhdHVyZUdhdGVPdmVycmlkZXMoZmVhdHVyZUdhdGU6IEZlYXR1cmVHYXRlcyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3Qgd2luZG93T3ZlcnJpZGUgPSB3aW5kb3cgYXMgV2luZG93ICYge1xuICAgICAgX2Vudml2ZT86IHsgZmVhdHVyZU92ZXJyaWRlcz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+IH07XG4gICAgICBfc3BpZmZ5PzogeyBmZWF0dXJlT3ZlcnJpZGVzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gfTtcbiAgICB9O1xuICAgIGNvbnN0IGZlYXR1cmVPdmVycmlkZXMgPVxuICAgICAgd2luZG93T3ZlcnJpZGU/Ll9lbnZpdmU/LmZlYXR1cmVPdmVycmlkZXMgPz8gd2luZG93T3ZlcnJpZGU/Ll9zcGlmZnk/LmZlYXR1cmVPdmVycmlkZXM7XG4gICAgY29uc3QgdmFsdWUgPSBmZWF0dXJlT3ZlcnJpZGVzPy5bU3RyaW5nKGZlYXR1cmVHYXRlKV07XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdG9yZWRGZWF0dXJlR2F0ZU92ZXJyaWRlcyhmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiB3aW5kb3cubG9jYWxTdG9yYWdlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZlYXR1cmVGbGFncyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShGRUFUVVJFX0ZMQUdTX1NUT1JBR0VfS0VZKTtcbiAgICAgIGlmICghZmVhdHVyZUZsYWdzKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBjb25zdCBmZWF0dXJlRmxhZ3NPYmogPSBKU09OLnBhcnNlKGZlYXR1cmVGbGFncykgYXMgUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gICAgICByZXR1cm4gZmVhdHVyZUZsYWdzT2JqW2ZlYXR1cmVHYXRlXTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5sb2dFcnJvcignZ2V0U3RvcmVkRmVhdHVyZUdhdGVPdmVycmlkZXM6IGVycm9yIHBhcnNpbmcgZmVhdHVyZSBmbGFncycsIGVycik7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRGZWF0dXJlRmxhZ092ZXJyaWRlKGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZXMpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBxdWVyeU92ZXJyaWRlID0gRmVhdHVyZUZsYWdTZXJ2aWNlLmdldFF1ZXJ5UGFyYW1GZWF0dXJlR2F0ZU92ZXJyaWRlcyhmZWF0dXJlR2F0ZSk7XG4gICAgaWYgKHF1ZXJ5T3ZlcnJpZGUgIT0gbnVsbCkge1xuICAgICAgbG9nZ2VyLmxvZ0RlYnVnKFxuICAgICAgICBgaXNGZWF0dXJlR2F0ZUVuYWJsZWQgZmVhdHVyZUdhdGU6JHtmZWF0dXJlR2F0ZX0gb3ZlcnJpZGRlbiBieSBVUkwgcGFyYW0uIE5ldyB2YWx1ZTogJHtxdWVyeU92ZXJyaWRlfWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIHF1ZXJ5T3ZlcnJpZGU7XG4gICAgfVxuXG4gICAgY29uc3Qgd2luZG93T3ZlcnJpZGUgPSBGZWF0dXJlRmxhZ1NlcnZpY2UuZ2V0V2luZG93RmVhdHVyZUdhdGVPdmVycmlkZXMoZmVhdHVyZUdhdGUpO1xuICAgIGlmICh3aW5kb3dPdmVycmlkZSAhPSBudWxsKSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBpc0ZlYXR1cmVHYXRlRW5hYmxlZCBmZWF0dXJlR2F0ZToke2ZlYXR1cmVHYXRlfSBvdmVycmlkZGVuIGJ5IHdpbmRvdyBwYXJhbS4gTmV3IHZhbHVlOiAke3dpbmRvd092ZXJyaWRlfWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIHdpbmRvd092ZXJyaWRlO1xuICAgIH1cblxuICAgIGNvbnN0IHN0b3JlZE92ZXJyaWRlID0gRmVhdHVyZUZsYWdTZXJ2aWNlLmdldFN0b3JlZEZlYXR1cmVHYXRlT3ZlcnJpZGVzKGZlYXR1cmVHYXRlKTtcbiAgICBpZiAoc3RvcmVkT3ZlcnJpZGUgIT0gbnVsbCkge1xuICAgICAgbG9nZ2VyLmxvZ0RlYnVnKFxuICAgICAgICBgaXNGZWF0dXJlR2F0ZUVuYWJsZWQgZmVhdHVyZUdhdGU6JHtmZWF0dXJlR2F0ZX0gb3ZlcnJpZGRlbiBieSBzdG9yZWQgdmFsdWUuIE5ldyB2YWx1ZTogJHtzdG9yZWRPdmVycmlkZX1gLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBzdG9yZWRPdmVycmlkZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaXNGZWF0dXJlR2F0ZUVuYWJsZWQgPSAoZmVhdHVyZUdhdGU6IEZlYXR1cmVHYXRlcyk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGdhdGVWYWx1ZSA9IHRoaXMuZmVhdHVyZUdhdGVzLmZpbmQoZ2F0ZSA9PiBnYXRlLm5hbWUgPT09IGZlYXR1cmVHYXRlKTtcblxuICAgIGNvbnN0IGZlYXR1cmVGbGFnT3ZlcnJpZGUgPSBGZWF0dXJlRmxhZ1NlcnZpY2UuZ2V0RmVhdHVyZUZsYWdPdmVycmlkZShmZWF0dXJlR2F0ZSk7XG4gICAgaWYgKGZlYXR1cmVGbGFnT3ZlcnJpZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZlYXR1cmVGbGFnT3ZlcnJpZGU7XG4gICAgfVxuXG4gICAgaWYgKGdhdGVWYWx1ZSA9PSBudWxsIHx8IGdhdGVWYWx1ZS52YWx1ZSA9PSBudWxsKSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBpc0ZlYXR1cmVHYXRlRW5hYmxlZCBmZWF0dXJlR2F0ZToke2ZlYXR1cmVHYXRlfSB2YWx1ZSBpcyB1bmRlZmluZWQgLSByZXR1cm5pbmcgZmFsc2VgLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGdhdGVWYWx1ZS52YWx1ZTtcbiAgfTtcblxuICAvLyBFbnN1cmUgdGhhdCBzdGFuZGFyZCBvdmVycmlkZXMgd29yayBhcyBleHBlY3RlZFxuICBpc0NsaWVudFNlc3Npb25FbmFibGVkID0gKCk6IGJvb2xlYW4gPT5cbiAgICB0aGlzLmlzRmVhdHVyZUdhdGVFbmFibGVkKEZlYXR1cmVHYXRlcy5Jc0NsaWVudFNlc3Npb25FbmFibGVkKTtcblxuICBnZXRGZWF0dXJlRmxhZ3MgPSAoKTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPT4ge1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QudmFsdWVzKEZlYXR1cmVHYXRlcykubWFwKChmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzKSA9PiBbXG4gICAgICAgIGZlYXR1cmVHYXRlLFxuICAgICAgICB0aGlzLmlzRmVhdHVyZUdhdGVFbmFibGVkKGZlYXR1cmVHYXRlKSxcbiAgICAgIF0pLFxuICAgICk7XG4gIH07XG5cbiAgZ2V0RnVsbEZsYWdWYWx1ZSA9IChmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzKTogRnVsbEZsYWdWYWx1ZSA9PiB7XG4gICAgY29uc3QgZ2F0ZVZhbHVlID0gdGhpcy5mZWF0dXJlR2F0ZXMuZmluZChnYXRlID0+IGdhdGUubmFtZSA9PT0gZmVhdHVyZUdhdGUpO1xuICAgIHJldHVybiB7XG4gICAgICByZXNvbHZlZDogdGhpcy5pc0ZlYXR1cmVHYXRlRW5hYmxlZChmZWF0dXJlR2F0ZSksXG4gICAgICBpbml0aWFsOiBnYXRlVmFsdWU/LnZhbHVlLFxuICAgICAgcXVlcnlfcGFyYW1fb3ZlcnJpZGU6IEZlYXR1cmVGbGFnU2VydmljZS5nZXRRdWVyeVBhcmFtRmVhdHVyZUdhdGVPdmVycmlkZXMoZmVhdHVyZUdhdGUpLFxuICAgICAgd2luZG93X3BhcmFtX292ZXJyaWRlOiBGZWF0dXJlRmxhZ1NlcnZpY2UuZ2V0V2luZG93RmVhdHVyZUdhdGVPdmVycmlkZXMoZmVhdHVyZUdhdGUpLFxuICAgICAgc3RvcmVkX292ZXJyaWRlOiBGZWF0dXJlRmxhZ1NlcnZpY2UuZ2V0U3RvcmVkRmVhdHVyZUdhdGVPdmVycmlkZXMoZmVhdHVyZUdhdGUpLFxuICAgIH07XG4gIH07XG5cbiAgZ2V0RnVsbEZsYWdWYWx1ZXMgPSAoKTogUmVjb3JkPHN0cmluZywgRnVsbEZsYWdWYWx1ZT4gPT4ge1xuICAgIGNvbnN0IGZlYXR1cmVHYXRlcyA9IE9iamVjdC52YWx1ZXMoRmVhdHVyZUdhdGVzKS5tYXAoKGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZXMpID0+IFtcbiAgICAgIGZlYXR1cmVHYXRlLFxuICAgICAgdGhpcy5nZXRGdWxsRmxhZ1ZhbHVlKGZlYXR1cmVHYXRlKSxcbiAgICBdKTtcblxuICAgIHJldHVybiBmZWF0dXJlR2F0ZXMubGVuZ3RoID4gMFxuICAgICAgPyBmZWF0dXJlR2F0ZXMucmVkdWNlPFJlY29yZDxzdHJpbmcsIEZ1bGxGbGFnVmFsdWU+PigoYWNjLCBlbnRyeSkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtuYW1lLCB2YWx1ZV0gPSBlbnRyeSBhcyBbRmVhdHVyZUdhdGVzLCBGdWxsRmxhZ1ZhbHVlXTtcbiAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtgZmVhdHVyZV9nYXRlLiR7bmFtZX1gXTogdmFsdWUgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pXG4gICAgICA6IHt9O1xuICB9O1xuXG4gIHN0YXRpYyBwZXJzaXN0RmVhdHVyZUdhdGVPdmVycmlkZXMoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiB3aW5kb3cubG9jYWxTdG9yYWdlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvdmVycmlkZXMgPSBPYmplY3QudmFsdWVzKEZlYXR1cmVHYXRlcylcbiAgICAgIC5tYXAoXG4gICAgICAgIGZlYXR1cmVHYXRlID0+XG4gICAgICAgICAgW2ZlYXR1cmVHYXRlLCBGZWF0dXJlRmxhZ1NlcnZpY2UuZ2V0RmVhdHVyZUZsYWdPdmVycmlkZShmZWF0dXJlR2F0ZSldIGFzIGNvbnN0LFxuICAgICAgKVxuICAgICAgLmZpbHRlcigoWywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oKGFjYywgW2tleSwgdmFsdWVdKSA9PiAoeyAuLi5hY2MsIFtrZXldOiB2YWx1ZSEgfSksIHt9KTtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oRkVBVFVSRV9GTEFHU19TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkob3ZlcnJpZGVzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRmxhZ0NvbnRleHRUeXBlIHtcbiAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBGZWF0dXJlRmxhZ1NlcnZpY2UgfCB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IEZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0PEZlYXR1cmVGbGFnQ29udGV4dFR5cGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmludGVyZmFjZSBGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlclByb3BzIHtcbiAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBGZWF0dXJlRmxhZ1NlcnZpY2U7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBjb25zdCBGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlcjogUmVhY3QuRkM8RmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXJQcm9wcz4gPSAoe1xuICBmZWF0dXJlRmxhZ1NlcnZpY2U6IGlucHV0U2VydmljZSxcbiAgY2hpbGRyZW4sXG59KSA9PiB7XG4gIGNvbnN0IGNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGZlYXR1cmVGbGFnU2VydmljZTogaW5wdXRTZXJ2aWNlLFxuICAgIH0pLFxuICAgIFtpbnB1dFNlcnZpY2VdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHRWYWx1ZX0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9GZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUZlYXR1cmVGbGFnU2VydmljZSA9ICgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dCk7XG4gIGlmIChjb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUZlYXR1cmVGbGFnU2VydmljZSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgRmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXInKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBS0EsTUFBTSw0QkFBNEI7QUFFbEMsTUFBTSxTQUFTLElBQUlBLHVCQUFPLDRCQUE0QjtBQVd0RCxJQUFhLHFCQUFiLE1BQWEsbUJBQW1CO0NBRzlCLFlBQVksY0FBc0M7K0JBa0YxQixnQkFBdUM7R0FDN0QsTUFBTSxZQUFZLEtBQUssYUFBYSxNQUFLLFNBQVEsS0FBSyxTQUFTLFlBQVk7R0FFM0UsTUFBTSxzQkFBc0IsbUJBQW1CLHVCQUF1QixZQUFZO0FBQ2xGLE9BQUksd0JBQXdCLE9BQzFCLFFBQU87QUFHVCxPQUFJLGFBQWEsUUFBUSxVQUFVLFNBQVMsTUFBTTtBQUNoRCxXQUFPLFNBQ0wsb0NBQW9DLFlBQVksdUNBQ2pEO0FBQ0QsV0FBTzs7QUFFVCxVQUFPLFVBQVU7O3NDQUtqQixLQUFL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
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5janMiLCJuYW1lcyI6WyJGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlcjogUmVhY3QuRkM8RmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXJQcm9wcz4iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlLCBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlLCBGdWxsRmxhZ1ZhbHVlIH0gZnJvbSAnc3JjL3NlcnZpY2VzL2ZlYXR1cmVGbGFnU2VydmljZSc7XG5cbi8vIFRoZSBzZXJ2aWNlIGNsYXNzIGxpdmVzIGluIHNyYy9zZXJ2aWNlcy9mZWF0dXJlRmxhZ1NlcnZpY2UgKGEgUmVhY3QtZnJlZVxuLy8gbW9kdWxlIHRoZSBpbmplY3Rpb24gYnVuZGxlIGNhbiBpbXBvcnQgcHJlLWNvbmZpZyk7IHJlLWV4cG9ydCBpdCBoZXJlIHNvXG4vLyBleGlzdGluZyBpbXBvcnRzIGtlZXAgd29ya2luZy5cbmV4cG9ydCB7IEZlYXR1cmVGbGFnU2VydmljZSB9O1xuZXhwb3J0IHR5cGUgeyBGdWxsRmxhZ1ZhbHVlIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUZsYWdDb250ZXh0VHlwZSB7XG4gIGZlYXR1cmVGbGFnU2VydmljZTogRmVhdHVyZUZsYWdTZXJ2aWNlIHwgdW5kZWZpbmVkO1xufVxuXG5jb25zdCBGZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxGZWF0dXJlRmxhZ0NvbnRleHRUeXBlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5pbnRlcmZhY2UgRmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXJQcm9wcyB7XG4gIGZlYXR1cmVGbGFnU2VydmljZTogRmVhdHVyZUZsYWdTZXJ2aWNlO1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgY29uc3QgRmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXI6IFJlYWN0LkZDPEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyUHJvcHM+ID0gKHtcbiAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBpbnB1dFNlcnZpY2UsXG4gIGNoaWxkcmVuLFxufSkgPT4ge1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBmZWF0dXJlRmxhZ1NlcnZpY2U6IGlucHV0U2VydmljZSxcbiAgICB9KSxcbiAgICBbaW5wdXRTZXJ2aWNlXSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxGZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0VmFsdWV9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvRmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VGZWF0dXJlRmxhZ1NlcnZpY2UgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQpO1xuICBpZiAoY29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VGZWF0dXJlRmxhZ1NlcnZpY2UgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyJyk7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBYUEsTUFBTSxxREFBOEUsT0FBVTtBQU85RixNQUFhQSw4QkFBeUUsRUFDcEYsb0JBQW9CLGNBQ3BCLGVBQ0k7Q0FDSixNQUFNLHlDQUNHLEVBQ0wsb0JBQW9CLGNBQ3JCLEdBQ0QsQ0FBQyxhQUFhLENBQ2Y7QUFFRCxRQUNFLDJDQUFDLDBCQUEwQjtFQUFTLE9BQU87RUFDeEM7R0FDa0M7O0FBSXpDLE1BQWEsOEJBQThCO0NBQ3pDLE1BQU0sZ0NBQXFCLDBCQUEwQjtBQUNyRCxLQUFJLFlBQVksT0FDZCxPQUFNLElBQUksTUFBTSx5RUFBeUU7QUFFM0YsUUFBTyJ9
@@ -1,29 +1,7 @@
1
- import { FeatureGates } from "../../application/models/featureGates.cjs";
2
- import { OrgConfigFeatureGate } from "../../application/models/api/orgConfigResults.cjs";
1
+ import { FeatureFlagService, FullFlagValue } from "../../services/featureFlagService/index.cjs";
3
2
  import React, { ReactNode } from "react";
4
3
 
5
4
  //#region src/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts
6
- interface FullFlagValue {
7
- resolved: boolean;
8
- initial: boolean | undefined;
9
- query_param_override: boolean | undefined;
10
- window_param_override: boolean | undefined;
11
- stored_override: boolean | undefined;
12
- }
13
- declare class FeatureFlagService {
14
- private featureGates;
15
- constructor(featureGates: OrgConfigFeatureGate[]);
16
- static getQueryParamFeatureGateOverrides(featureGate: FeatureGates): boolean | undefined;
17
- static getWindowFeatureGateOverrides(featureGate: FeatureGates): boolean | undefined;
18
- static getStoredFeatureGateOverrides(featureGate: FeatureGates): boolean | undefined;
19
- static getFeatureFlagOverride(featureGate: FeatureGates): boolean | undefined;
20
- isFeatureGateEnabled: (featureGate: FeatureGates) => boolean;
21
- isClientSessionEnabled: () => boolean;
22
- getFeatureFlags: () => Record<string, boolean>;
23
- getFullFlagValue: (featureGate: FeatureGates) => FullFlagValue;
24
- getFullFlagValues: () => Record<string, FullFlagValue>;
25
- static persistFeatureGateOverrides(): void;
26
- }
27
5
  interface FeatureFlagContextType {
28
6
  featureFlagService: FeatureFlagService | undefined;
29
7
  }
@@ -34,5 +12,5 @@ interface FeatureFlagServiceProviderProps {
34
12
  declare const FeatureFlagServiceProvider: React.FC<FeatureFlagServiceProviderProps>;
35
13
  declare const useFeatureFlagService: () => FeatureFlagContextType;
36
14
  //#endregion
37
- export { FeatureFlagContextType, FeatureFlagService, FeatureFlagServiceProvider, FullFlagValue, useFeatureFlagService };
38
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0cyc7XG5pbXBvcnQgeyBGZWF0dXJlR2F0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2ZlYXR1cmVHYXRlcyc7XG5leHBvcnQgaW50ZXJmYWNlIEZ1bGxGbGFnVmFsdWUge1xuICAgIHJlc29sdmVkOiBib29sZWFuO1xuICAgIGluaXRpYWw6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgcXVlcnlfcGFyYW1fb3ZlcnJpZGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgd2luZG93X3BhcmFtX292ZXJyaWRlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIHN0b3JlZF9vdmVycmlkZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIEZlYXR1cmVGbGFnU2VydmljZSB7XG4gICAgcHJpdmF0ZSBmZWF0dXJlR2F0ZXM7XG4gICAgY29uc3RydWN0b3IoZmVhdHVyZUdhdGVzOiBPcmdDb25maWdGZWF0dXJlR2F0ZVtdKTtcbiAgICBzdGF0aWMgZ2V0UXVlcnlQYXJhbUZlYXR1cmVHYXRlT3ZlcnJpZGVzKGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZXMpOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIHN0YXRpYyBnZXRXaW5kb3dGZWF0dXJlR2F0ZU92ZXJyaWRlcyhmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzKTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICBzdGF0aWMgZ2V0U3RvcmVkRmVhdHVyZUdhdGVPdmVycmlkZXMoZmVhdHVyZUdhdGU6IEZlYXR1cmVHYXRlcyk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgc3RhdGljIGdldEZlYXR1cmVGbGFnT3ZlcnJpZGUoZmVhdHVyZUdhdGU6IEZlYXR1cmVHYXRlcyk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgaXNGZWF0dXJlR2F0ZUVuYWJsZWQ6IChmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzKSA9PiBib29sZWFuO1xuICAgIGlzQ2xpZW50U2Vzc2lvbkVuYWJsZWQ6ICgpID0+IGJvb2xlYW47XG4gICAgZ2V0RmVhdHVyZUZsYWdzOiAoKSA9PiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgICBnZXRGdWxsRmxhZ1ZhbHVlOiAoZmVhdHVyZUdhdGU6IEZlYXR1cmVHYXRlcykgPT4gRnVsbEZsYWdWYWx1ZTtcbiAgICBnZXRGdWxsRmxhZ1ZhbHVlczogKCkgPT4gUmVjb3JkPHN0cmluZywgRnVsbEZsYWdWYWx1ZT47XG4gICAgc3RhdGljIHBlcnNpc3RGZWF0dXJlR2F0ZU92ZXJyaWRlcygpOiB2b2lkO1xufVxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRmxhZ0NvbnRleHRUeXBlIHtcbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZSB8IHVuZGVmaW5lZDtcbn1cbmludGVyZmFjZSBGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlclByb3BzIHtcbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZTtcbiAgICBjaGlsZHJlbjogUmVhY3ROb2RlO1xufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgRmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXI6IFJlYWN0LkZDPEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyUHJvcHM+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlRmVhdHVyZUZsYWdTZXJ2aWNlOiAoKSA9PiBGZWF0dXJlRmxhZ0NvbnRleHRUeXBlO1xuZXhwb3J0IHt9O1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUdBLElBQVcsZ0JBQWdCLENBQUMsSUFBRztBQUMvQixJQUFXLHFCQUFVO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUE7QUFDckIsSUFBVyx5QkFBcUIsQ0FBQSxXQUFBLG1CQUFBO0FBQ2hDLElBQUksa0NBQWtDO0NBQUM7T0FBTTtPQUFBO0NBQUE7QUFDN0MsSUFBVyw2QkFBNkI7Q0FBQztPQUFLO09BQUEsTUFBQTtDQUFBO0FBQzlDLElBQVcsd0JBQXdCLENBQUMsV0FBSSx1QkFBQSJ9
15
+ export { FeatureFlagContextType, FeatureFlagServiceProvider, useFeatureFlagService };
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZlYXR1cmVGbGFnU2VydmljZSwgRnVsbEZsYWdWYWx1ZSB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9mZWF0dXJlRmxhZ1NlcnZpY2UnO1xuZXhwb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH07XG5leHBvcnQgdHlwZSB7IEZ1bGxGbGFnVmFsdWUgfTtcbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUZsYWdDb250ZXh0VHlwZSB7XG4gICAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBGZWF0dXJlRmxhZ1NlcnZpY2UgfCB1bmRlZmluZWQ7XG59XG5pbnRlcmZhY2UgRmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXJQcm9wcyB7XG4gICAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBGZWF0dXJlRmxhZ1NlcnZpY2U7XG4gICAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyOiBSZWFjdC5GQzxGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlclByb3BzPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVzZUZlYXR1cmVGbGFnU2VydmljZTogKCkgPT4gRmVhdHVyZUZsYWdDb250ZXh0VHlwZTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUlBLElBQVcseUJBQXlCLENBQUMsV0FBRyxtQkFBQTtBQUN4QyxJQUFJLGtDQUFrQztDQUFDO09BQVc7T0FBSTtDQUFBO0FBQ3RELElBQUEsNkJBQUE7Q0FBQTtPQUFBO09BQUEsTUFBQTtDQUFBO0FBQ0EsSUFBVyx3QkFBd0IsQ0FBQyxXQUFNLHVCQUFBIn0=
@@ -1,29 +1,7 @@
1
- import { FeatureGates } from "../../application/models/featureGates.js";
2
- import { OrgConfigFeatureGate } from "../../application/models/api/orgConfigResults.js";
1
+ import { FeatureFlagService, FullFlagValue } from "../../services/featureFlagService/index.js";
3
2
  import React, { ReactNode } from "react";
4
3
 
5
4
  //#region src/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts
6
- interface FullFlagValue {
7
- resolved: boolean;
8
- initial: boolean | undefined;
9
- query_param_override: boolean | undefined;
10
- window_param_override: boolean | undefined;
11
- stored_override: boolean | undefined;
12
- }
13
- declare class FeatureFlagService {
14
- private featureGates;
15
- constructor(featureGates: OrgConfigFeatureGate[]);
16
- static getQueryParamFeatureGateOverrides(featureGate: FeatureGates): boolean | undefined;
17
- static getWindowFeatureGateOverrides(featureGate: FeatureGates): boolean | undefined;
18
- static getStoredFeatureGateOverrides(featureGate: FeatureGates): boolean | undefined;
19
- static getFeatureFlagOverride(featureGate: FeatureGates): boolean | undefined;
20
- isFeatureGateEnabled: (featureGate: FeatureGates) => boolean;
21
- isClientSessionEnabled: () => boolean;
22
- getFeatureFlags: () => Record<string, boolean>;
23
- getFullFlagValue: (featureGate: FeatureGates) => FullFlagValue;
24
- getFullFlagValues: () => Record<string, FullFlagValue>;
25
- static persistFeatureGateOverrides(): void;
26
- }
27
5
  interface FeatureFlagContextType {
28
6
  featureFlagService: FeatureFlagService | undefined;
29
7
  }
@@ -34,5 +12,5 @@ interface FeatureFlagServiceProviderProps {
34
12
  declare const FeatureFlagServiceProvider: React.FC<FeatureFlagServiceProviderProps>;
35
13
  declare const useFeatureFlagService: () => FeatureFlagContextType;
36
14
  //#endregion
37
- export { FeatureFlagContextType, FeatureFlagService, FeatureFlagServiceProvider, FullFlagValue, useFeatureFlagService };
38
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0L2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgT3JnQ29uZmlnRmVhdHVyZUdhdGUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdDb25maWdSZXN1bHRzJztcbmltcG9ydCB7IEZlYXR1cmVHYXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzJztcbmV4cG9ydCBpbnRlcmZhY2UgRnVsbEZsYWdWYWx1ZSB7XG4gICAgcmVzb2x2ZWQ6IGJvb2xlYW47XG4gICAgaW5pdGlhbDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICBxdWVyeV9wYXJhbV9vdmVycmlkZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICB3aW5kb3dfcGFyYW1fb3ZlcnJpZGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgc3RvcmVkX292ZXJyaWRlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgRmVhdHVyZUZsYWdTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGZlYXR1cmVHYXRlcztcbiAgICBjb25zdHJ1Y3RvcihmZWF0dXJlR2F0ZXM6IE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlW10pO1xuICAgIHN0YXRpYyBnZXRRdWVyeVBhcmFtRmVhdHVyZUdhdGVPdmVycmlkZXMoZmVhdHVyZUdhdGU6IEZlYXR1cmVHYXRlcyk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgc3RhdGljIGdldFdpbmRvd0ZlYXR1cmVHYXRlT3ZlcnJpZGVzKGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZXMpOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIHN0YXRpYyBnZXRTdG9yZWRGZWF0dXJlR2F0ZU92ZXJyaWRlcyhmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzKTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICBzdGF0aWMgZ2V0RmVhdHVyZUZsYWdPdmVycmlkZShmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzKTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICBpc0ZlYXR1cmVHYXRlRW5hYmxlZDogKGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZXMpID0+IGJvb2xlYW47XG4gICAgaXNDbGllbnRTZXNzaW9uRW5hYmxlZDogKCkgPT4gYm9vbGVhbjtcbiAgICBnZXRGZWF0dXJlRmxhZ3M6ICgpID0+IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuICAgIGdldEZ1bGxGbGFnVmFsdWU6IChmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzKSA9PiBGdWxsRmxhZ1ZhbHVlO1xuICAgIGdldEZ1bGxGbGFnVmFsdWVzOiAoKSA9PiBSZWNvcmQ8c3RyaW5nLCBGdWxsRmxhZ1ZhbHVlPjtcbiAgICBzdGF0aWMgcGVyc2lzdEZlYXR1cmVHYXRlT3ZlcnJpZGVzKCk6IHZvaWQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVGbGFnQ29udGV4dFR5cGUge1xuICAgIGZlYXR1cmVGbGFnU2VydmljZTogRmVhdHVyZUZsYWdTZXJ2aWNlIHwgdW5kZWZpbmVkO1xufVxuaW50ZXJmYWNlIEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyUHJvcHMge1xuICAgIGZlYXR1cmVGbGFnU2VydmljZTogRmVhdHVyZUZsYWdTZXJ2aWNlO1xuICAgIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlcjogUmVhY3QuRkM8RmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXJQcm9wcz47XG5leHBvcnQgZGVjbGFyZSBjb25zdCB1c2VGZWF0dXJlRmxhZ1NlcnZpY2U6ICgpID0+IEZlYXR1cmVGbGFnQ29udGV4dFR5cGU7XG5leHBvcnQge307XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsSUFBVyxnQkFBZ0IsQ0FBQyxJQUFHO0FBQy9CLElBQVcscUJBQVU7Q0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNyQixJQUFXLHlCQUFxQixDQUFBLFdBQUEsbUJBQUE7QUFDaEMsSUFBSSxrQ0FBa0M7Q0FBQztPQUFNO09BQUE7Q0FBQTtBQUM3QyxJQUFXLDZCQUE2QjtDQUFDO09BQUs7T0FBQSxNQUFBO0NBQUE7QUFDOUMsSUFBVyx3QkFBd0IsQ0FBQyxXQUFJLHVCQUFBIn0=
15
+ export { FeatureFlagContextType, FeatureFlagServiceProvider, useFeatureFlagService };
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0L2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlLCBGdWxsRmxhZ1ZhbHVlIH0gZnJvbSAnc3JjL3NlcnZpY2VzL2ZlYXR1cmVGbGFnU2VydmljZSc7XG5leHBvcnQgeyBGZWF0dXJlRmxhZ1NlcnZpY2UgfTtcbmV4cG9ydCB0eXBlIHsgRnVsbEZsYWdWYWx1ZSB9O1xuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRmxhZ0NvbnRleHRUeXBlIHtcbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZSB8IHVuZGVmaW5lZDtcbn1cbmludGVyZmFjZSBGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlclByb3BzIHtcbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZTtcbiAgICBjaGlsZHJlbjogUmVhY3ROb2RlO1xufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgRmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXI6IFJlYWN0LkZDPEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyUHJvcHM+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlRmVhdHVyZUZsYWdTZXJ2aWNlOiAoKSA9PiBGZWF0dXJlRmxhZ0NvbnRleHRUeXBlO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBSUEsSUFBVyx5QkFBeUIsQ0FBQyxXQUFHLG1CQUFBO0FBQ3hDLElBQUksa0NBQWtDO0NBQUM7T0FBVztPQUFJO0NBQUE7QUFDdEQsSUFBQSw2QkFBQTtDQUFBO09BQUE7T0FBQSxNQUFBO0NBQUE7QUFDQSxJQUFXLHdCQUF3QixDQUFDLFdBQU0sdUJBQUEifQ==
@@ -1,102 +1,8 @@
1
- import logger_default from "../../application/logging/logger.js";
2
- import { FeatureGates } from "../../application/models/featureGates.js";
1
+ import { FeatureFlagService } from "../../services/featureFlagService/index.js";
3
2
  import React, { createContext, useContext, useMemo } from "react";
4
3
  import { jsx } from "react/jsx-runtime";
5
4
 
6
5
  //#region src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx
7
- const FEATURE_FLAGS_STORAGE_KEY = "spiffy-feature-flags";
8
- const logger = new logger_default("featureFlagServiceContext");
9
- var FeatureFlagService = class FeatureFlagService {
10
- constructor(featureGates) {
11
- this.isFeatureGateEnabled = (featureGate) => {
12
- const gateValue = this.featureGates.find((gate) => gate.name === featureGate);
13
- const featureFlagOverride = FeatureFlagService.getFeatureFlagOverride(featureGate);
14
- if (featureFlagOverride !== void 0) return featureFlagOverride;
15
- if (gateValue == null || gateValue.value == null) {
16
- logger.logDebug(`isFeatureGateEnabled featureGate:${featureGate} value is undefined - returning false`);
17
- return false;
18
- }
19
- return gateValue.value;
20
- };
21
- this.isClientSessionEnabled = () => this.isFeatureGateEnabled(FeatureGates.IsClientSessionEnabled);
22
- this.getFeatureFlags = () => {
23
- return Object.fromEntries(Object.values(FeatureGates).map((featureGate) => [featureGate, this.isFeatureGateEnabled(featureGate)]));
24
- };
25
- this.getFullFlagValue = (featureGate) => {
26
- const gateValue = this.featureGates.find((gate) => gate.name === featureGate);
27
- return {
28
- resolved: this.isFeatureGateEnabled(featureGate),
29
- initial: gateValue?.value,
30
- query_param_override: FeatureFlagService.getQueryParamFeatureGateOverrides(featureGate),
31
- window_param_override: FeatureFlagService.getWindowFeatureGateOverrides(featureGate),
32
- stored_override: FeatureFlagService.getStoredFeatureGateOverrides(featureGate)
33
- };
34
- };
35
- this.getFullFlagValues = () => {
36
- const featureGates$1 = Object.values(FeatureGates).map((featureGate) => [featureGate, this.getFullFlagValue(featureGate)]);
37
- return featureGates$1.length > 0 ? featureGates$1.reduce((acc, entry) => {
38
- const [name, value] = entry;
39
- if (name && value != null) return {
40
- ...acc,
41
- [`feature_gate.${name}`]: value
42
- };
43
- return acc;
44
- }, {}) : {};
45
- };
46
- this.featureGates = featureGates;
47
- }
48
- static getQueryParamFeatureGateOverrides(featureGate) {
49
- const url = window.location?.href ?? "";
50
- if (url.includes("?")) {
51
- const urlObj = new URL(url);
52
- const params = new URLSearchParams(urlObj.search);
53
- const value = Object.fromEntries(params.entries())[featureGate];
54
- if (value != null) return value === "true";
55
- }
56
- }
57
- static getWindowFeatureGateOverrides(featureGate) {
58
- if (typeof window === "undefined") return;
59
- const windowOverride = window;
60
- const value = (windowOverride?._envive?.featureOverrides ?? windowOverride?._spiffy?.featureOverrides)?.[String(featureGate)];
61
- if (value != null) return value;
62
- }
63
- static getStoredFeatureGateOverrides(featureGate) {
64
- if (typeof window === "undefined" || typeof window.localStorage === "undefined") return;
65
- try {
66
- const featureFlags = window.localStorage.getItem(FEATURE_FLAGS_STORAGE_KEY);
67
- if (!featureFlags) return;
68
- return JSON.parse(featureFlags)[featureGate];
69
- } catch (err) {
70
- logger.logError("getStoredFeatureGateOverrides: error parsing feature flags", err);
71
- return;
72
- }
73
- }
74
- static getFeatureFlagOverride(featureGate) {
75
- const queryOverride = FeatureFlagService.getQueryParamFeatureGateOverrides(featureGate);
76
- if (queryOverride != null) {
77
- logger.logDebug(`isFeatureGateEnabled featureGate:${featureGate} overridden by URL param. New value: ${queryOverride}`);
78
- return queryOverride;
79
- }
80
- const windowOverride = FeatureFlagService.getWindowFeatureGateOverrides(featureGate);
81
- if (windowOverride != null) {
82
- logger.logDebug(`isFeatureGateEnabled featureGate:${featureGate} overridden by window param. New value: ${windowOverride}`);
83
- return windowOverride;
84
- }
85
- const storedOverride = FeatureFlagService.getStoredFeatureGateOverrides(featureGate);
86
- if (storedOverride != null) {
87
- logger.logDebug(`isFeatureGateEnabled featureGate:${featureGate} overridden by stored value. New value: ${storedOverride}`);
88
- return storedOverride;
89
- }
90
- }
91
- static persistFeatureGateOverrides() {
92
- if (typeof window === "undefined" || typeof window.localStorage === "undefined") return;
93
- const overrides = Object.values(FeatureGates).map((featureGate) => [featureGate, FeatureFlagService.getFeatureFlagOverride(featureGate)]).filter(([, value]) => value !== void 0).reduce((acc, [key, value]) => ({
94
- ...acc,
95
- [key]: value
96
- }), {});
97
- window.localStorage.setItem(FEATURE_FLAGS_STORAGE_KEY, JSON.stringify(overrides));
98
- }
99
- };
100
6
  const FeatureFlagServiceContext = createContext(void 0);
101
7
  const FeatureFlagServiceProvider = ({ featureFlagService: inputService, children }) => {
102
8
  const contextValue = useMemo(() => ({ featureFlagService: inputService }), [inputService]);
@@ -112,5 +18,5 @@ const useFeatureFlagService = () => {
112
18
  };
113
19
 
114
20
  //#endregion
115
- export { FeatureFlagService, FeatureFlagServiceProvider, useFeatureFlagService };
116
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5qcyIsIm5hbWVzIjpbIkxvZ2dlciIsImZlYXR1cmVHYXRlcyIsIkZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyOiBSZWFjdC5GQzxGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlclByb3BzPiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0L2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBPcmdDb25maWdGZWF0dXJlR2F0ZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL29yZ0NvbmZpZ1Jlc3VsdHMnO1xuaW1wb3J0IHsgRmVhdHVyZUdhdGVzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9mZWF0dXJlR2F0ZXMnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuXG5jb25zdCBGRUFUVVJFX0ZMQUdTX1NUT1JBR0VfS0VZID0gJ3NwaWZmeS1mZWF0dXJlLWZsYWdzJztcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcignZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bGxGbGFnVmFsdWUge1xuICByZXNvbHZlZDogYm9vbGVhbjtcbiAgaW5pdGlhbDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcXVlcnlfcGFyYW1fb3ZlcnJpZGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHdpbmRvd19wYXJhbV9vdmVycmlkZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgc3RvcmVkX292ZXJyaWRlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vLyBUaGlzIGlzIHRoZSBjbGFzcyB0aGF0IHdhcyBwcmV2aW91c2x5IGltcGxpY2l0bHkgdXNlZCBvciBkZWZpbmVkIGVsc2V3aGVyZVxuZXhwb3J0IGNsYXNzIEZlYXR1cmVGbGFnU2VydmljZSB7XG4gIHByaXZhdGUgZmVhdHVyZUdhdGVzOiBPcmdDb25maWdGZWF0dXJlR2F0ZVtdO1xuXG4gIGNvbnN0cnVjdG9yKGZlYXR1cmVHYXRlczogT3JnQ29uZmlnRmVhdHVyZUdhdGVbXSkge1xuICAgIHRoaXMuZmVhdHVyZUdhdGVzID0gZmVhdHVyZUdhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldFF1ZXJ5UGFyYW1GZWF0dXJlR2F0ZU92ZXJyaWRlcyhmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uPy5ocmVmID8/ICcnO1xuICAgIGlmICh1cmwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgY29uc3QgdXJsT2JqID0gbmV3IFVSTCh1cmwpO1xuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh1cmxPYmouc2VhcmNoKTtcbiAgICAgIGNvbnN0IHBhcmFtc09iaiA9IE9iamVjdC5mcm9tRW50cmllcyhwYXJhbXMuZW50cmllcygpKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zT2JqW2ZlYXR1cmVHYXRlXTtcblxuICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSAndHJ1ZSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRXaW5kb3dGZWF0dXJlR2F0ZU92ZXJyaWRlcyhmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCB3aW5kb3dPdmVycmlkZSA9IHdpbmRvdyBhcyBXaW5kb3cgJiB7XG4gICAgICBfZW52aXZlPzogeyBmZWF0dXJlT3ZlcnJpZGVzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gfTtcbiAgICAgIF9zcGlmZnk/OiB7IGZlYXR1cmVPdmVycmlkZXM/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiB9O1xuICAgIH07XG4gICAgY29uc3QgZmVhdHVyZU92ZXJyaWRlcyA9XG4gICAgICB3aW5kb3dPdmVycmlkZT8uX2Vudml2ZT8uZmVhdHVyZU92ZXJyaWRlcyA/PyB3aW5kb3dPdmVycmlkZT8uX3NwaWZmeT8uZmVhdHVyZU92ZXJyaWRlcztcbiAgICBjb25zdCB2YWx1ZSA9IGZlYXR1cmVPdmVycmlkZXM/LltTdHJpbmcoZmVhdHVyZUdhdGUpXTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3RhdGljIGdldFN0b3JlZEZlYXR1cmVHYXRlT3ZlcnJpZGVzKGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZXMpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHdpbmRvdy5sb2NhbFN0b3JhZ2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZUZsYWdzID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKEZFQVRVUkVfRkxBR1NfU1RPUkFHRV9LRVkpO1xuICAgICAgaWYgKCFmZWF0dXJlRmxhZ3MpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZlYXR1cmVGbGFnc09iaiA9IEpTT04ucGFyc2UoZmVhdHVyZUZsYWdzKSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgICAgIHJldHVybiBmZWF0dXJlRmxhZ3NPYmpbZmVhdHVyZUdhdGVdO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmxvZ0Vycm9yKCdnZXRTdG9yZWRGZWF0dXJlR2F0ZU92ZXJyaWRlczogZXJyb3IgcGFyc2luZyBmZWF0dXJlIGZsYWdzJywgZXJyKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEZlYXR1cmVGbGFnT3ZlcnJpZGUoZmVhdHVyZUdhdGU6IEZlYXR1cmVHYXRlcyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHF1ZXJ5T3ZlcnJpZGUgPSBGZWF0dXJlRmxhZ1NlcnZpY2UuZ2V0UXVlcnlQYXJhbUZlYXR1cmVHYXRlT3ZlcnJpZGVzKGZlYXR1cmVHYXRlKTtcbiAgICBpZiAocXVlcnlPdmVycmlkZSAhPSBudWxsKSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBpc0ZlYXR1cmVHYXRlRW5hYmxlZCBmZWF0dXJlR2F0ZToke2ZlYXR1cmVHYXRlfSBvdmVycmlkZGVuIGJ5IFVSTCBwYXJhbS4gTmV3IHZhbHVlOiAke3F1ZXJ5T3ZlcnJpZGV9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gcXVlcnlPdmVycmlkZTtcbiAgICB9XG5cbiAgICBjb25zdCB3aW5kb3dPdmVycmlkZSA9IEZlYXR1cmVGbGFnU2VydmljZS5nZXRXaW5kb3dGZWF0dXJlR2F0ZU92ZXJyaWRlcyhmZWF0dXJlR2F0ZSk7XG4gICAgaWYgKHdpbmRvd092ZXJyaWRlICE9IG51bGwpIHtcbiAgICAgIGxvZ2dlci5sb2dEZWJ1ZyhcbiAgICAgICAgYGlzRmVhdHVyZUdhdGVFbmFibGVkIGZlYXR1cmVHYXRlOiR7ZmVhdHVyZUdhdGV9IG92ZXJyaWRkZW4gYnkgd2luZG93IHBhcmFtLiBOZXcgdmFsdWU6ICR7d2luZG93T3ZlcnJpZGV9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gd2luZG93T3ZlcnJpZGU7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RvcmVkT3ZlcnJpZGUgPSBGZWF0dXJlRmxhZ1NlcnZpY2UuZ2V0U3RvcmVkRmVhdHVyZUdhdGVPdmVycmlkZXMoZmVhdHVyZUdhdGUpO1xuICAgIGlmIChzdG9yZWRPdmVycmlkZSAhPSBudWxsKSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBpc0ZlYXR1cmVHYXRlRW5hYmxlZCBmZWF0dXJlR2F0ZToke2ZlYXR1cmVHYXRlfSBvdmVycmlkZGVuIGJ5IHN0b3JlZCB2YWx1ZS4gTmV3IHZhbHVlOiAke3N0b3JlZE92ZXJyaWRlfWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIHN0b3JlZE92ZXJyaWRlO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpc0ZlYXR1cmVHYXRlRW5hYmxlZCA9IChmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgZ2F0ZVZhbHVlID0gdGhpcy5mZWF0dXJlR2F0ZXMuZmluZChnYXRlID0+IGdhdGUubmFtZSA9PT0gZmVhdHVyZUdhdGUpO1xuXG4gICAgY29uc3QgZmVhdHVyZUZsYWdPdmVycmlkZSA9IEZlYXR1cmVGbGFnU2VydmljZS5nZXRGZWF0dXJlRmxhZ092ZXJyaWRlKGZlYXR1cmVHYXRlKTtcbiAgICBpZiAoZmVhdHVyZUZsYWdPdmVycmlkZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmVhdHVyZUZsYWdPdmVycmlkZTtcbiAgICB9XG5cbiAgICBpZiAoZ2F0ZVZhbHVlID09IG51bGwgfHwgZ2F0ZVZhbHVlLnZhbHVlID09IG51bGwpIHtcbiAgICAgIGxvZ2dlci5sb2dEZWJ1ZyhcbiAgICAgICAgYGlzRmVhdHVyZUdhdGVFbmFibGVkIGZlYXR1cmVHYXRlOiR7ZmVhdHVyZUdhdGV9IHZhbHVlIGlzIHVuZGVmaW5lZCAtIHJldHVybmluZyBmYWxzZWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZ2F0ZVZhbHVlLnZhbHVlO1xuICB9O1xuXG4gIC8vIEVuc3VyZSB0aGF0IHN0YW5kYXJkIG92ZXJyaWRlcyB3b3JrIGFzIGV4cGVjdGVkXG4gIGlzQ2xpZW50U2Vzc2lvbkVuYWJsZWQgPSAoKTogYm9vbGVhbiA9PlxuICAgIHRoaXMuaXNGZWF0dXJlR2F0ZUVuYWJsZWQoRmVhdHVyZUdhdGVzLklzQ2xpZW50U2Vzc2lvbkVuYWJsZWQpO1xuXG4gIGdldEZlYXR1cmVGbGFncyA9ICgpOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC52YWx1ZXMoRmVhdHVyZUdhdGVzKS5tYXAoKGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZXMpID0+IFtcbiAgICAgICAgZmVhdHVyZUdhdGUsXG4gICAgICAgIHRoaXMuaXNGZWF0dXJlR2F0ZUVuYWJsZWQoZmVhdHVyZUdhdGUpLFxuICAgICAgXSksXG4gICAgKTtcbiAgfTtcblxuICBnZXRGdWxsRmxhZ1ZhbHVlID0gKGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZXMpOiBGdWxsRmxhZ1ZhbHVlID0+IHtcbiAgICBjb25zdCBnYXRlVmFsdWUgPSB0aGlzLmZlYXR1cmVHYXRlcy5maW5kKGdhdGUgPT4gZ2F0ZS5uYW1lID09PSBmZWF0dXJlR2F0ZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc29sdmVkOiB0aGlzLmlzRmVhdHVyZUdhdGVFbmFibGVkKGZlYXR1cmVHYXRlKSxcbiAgICAgIGluaXRpYWw6IGdhdGVWYWx1ZT8udmFsdWUsXG4gICAgICBxdWVyeV9wYXJhbV9vdmVycmlkZTogRmVhdHVyZUZsYWdTZXJ2aWNlLmdldFF1ZXJ5UGFyYW1GZWF0dXJlR2F0ZU92ZXJyaWRlcyhmZWF0dXJlR2F0ZSksXG4gICAgICB3aW5kb3dfcGFyYW1fb3ZlcnJpZGU6IEZlYXR1cmVGbGFnU2VydmljZS5nZXRXaW5kb3dGZWF0dXJlR2F0ZU92ZXJyaWRlcyhmZWF0dXJlR2F0ZSksXG4gICAgICBzdG9yZWRfb3ZlcnJpZGU6IEZlYXR1cmVGbGFnU2VydmljZS5nZXRTdG9yZWRGZWF0dXJlR2F0ZU92ZXJyaWRlcyhmZWF0dXJlR2F0ZSksXG4gICAgfTtcbiAgfTtcblxuICBnZXRGdWxsRmxhZ1ZhbHVlcyA9ICgpOiBSZWNvcmQ8c3RyaW5nLCBGdWxsRmxhZ1ZhbHVlPiA9PiB7XG4gICAgY29uc3QgZmVhdHVyZUdhdGVzID0gT2JqZWN0LnZhbHVlcyhGZWF0dXJlR2F0ZXMpLm1hcCgoZmVhdHVyZUdhdGU6IEZlYXR1cmVHYXRlcykgPT4gW1xuICAgICAgZmVhdHVyZUdhdGUsXG4gICAgICB0aGlzLmdldEZ1bGxGbGFnVmFsdWUoZmVhdHVyZUdhdGUpLFxuICAgIF0pO1xuXG4gICAgcmV0dXJuIGZlYXR1cmVHYXRlcy5sZW5ndGggPiAwXG4gICAgICA/IGZlYXR1cmVHYXRlcy5yZWR1Y2U8UmVjb3JkPHN0cmluZywgRnVsbEZsYWdWYWx1ZT4+KChhY2MsIGVudHJ5KSA9PiB7XG4gICAgICAgICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IGVudHJ5IGFzIFtGZWF0dXJlR2F0ZXMsIEZ1bGxGbGFnVmFsdWVdO1xuICAgICAgICAgIGlmIChuYW1lICYmIHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmFjYywgW2BmZWF0dXJlX2dhdGUuJHtuYW1lfWBdOiB2YWx1ZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSlcbiAgICAgIDoge307XG4gIH07XG5cbiAgc3RhdGljIHBlcnNpc3RGZWF0dXJlR2F0ZU92ZXJyaWRlcygpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHdpbmRvdy5sb2NhbFN0b3JhZ2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG92ZXJyaWRlcyA9IE9iamVjdC52YWx1ZXMoRmVhdHVyZUdhdGVzKVxuICAgICAgLm1hcChcbiAgICAgICAgZmVhdHVyZUdhdGUgPT5cbiAgICAgICAgICBbZmVhdHVyZUdhdGUsIEZlYXR1cmVGbGFnU2VydmljZS5nZXRGZWF0dXJlRmxhZ092ZXJyaWRlKGZlYXR1cmVHYXRlKV0gYXMgY29uc3QsXG4gICAgICApXG4gICAgICAuZmlsdGVyKChbLCB2YWx1ZV0pID0+IHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAucmVkdWNlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+PigoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7IC4uLmFjYywgW2tleV06IHZhbHVlISB9KSwge30pO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShGRUFUVVJFX0ZMQUdTX1NUT1JBR0VfS0VZLCBKU09OLnN0cmluZ2lmeShvdmVycmlkZXMpKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVGbGFnQ29udGV4dFR5cGUge1xuICBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZSB8IHVuZGVmaW5lZDtcbn1cblxuY29uc3QgRmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8RmVhdHVyZUZsYWdDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuaW50ZXJmYWNlIEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyUHJvcHMge1xuICBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZTtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGNvbnN0IEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyOiBSZWFjdC5GQzxGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlclByb3BzPiA9ICh7XG4gIGZlYXR1cmVGbGFnU2VydmljZTogaW5wdXRTZXJ2aWNlLFxuICBjaGlsZHJlbixcbn0pID0+IHtcbiAgY29uc3QgY29udGV4dFZhbHVlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBpbnB1dFNlcnZpY2UsXG4gICAgfSksXG4gICAgW2lucHV0U2VydmljZV0sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8RmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29udGV4dFZhbHVlfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRmVhdHVyZUZsYWdTZXJ2aWNlID0gKCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChGZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0KTtcbiAgaWYgKGNvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlRmVhdHVyZUZsYWdTZXJ2aWNlIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlcicpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBS0EsTUFBTSw0QkFBNEI7QUFFbEMsTUFBTSxTQUFTLElBQUlBLGVBQU8sNEJBQTRCO0FBV3RELElBQWEscUJBQWIsTUFBYSxtQkFBbUI7Q0FHOUIsWUFBWSxjQUFzQzsrQkFrRjFCLGdCQUF1QztHQUM3RCxNQUFNLFlBQVksS0FBSyxhQUFhLE1BQUssU0FBUSxLQUFLLFNBQVMsWUFBWTtHQUUzRSxNQUFNLHNCQUFzQixtQkFBbUIsdUJBQXVCLFlBQVk7QUFDbEYsT0FBSSx3QkFBd0IsT0FDMUIsUUFBTztBQUdULE9BQUksYUFBYSxRQUFRLFVBQVUsU0FBUyxNQUFNO0FBQ2hELFdBQU8sU0FDTCxvQ0FBb0MsWUFBWSx1Q0FDakQ7QUFDRCxXQUFPOztBQUVULFVBQU8sVUFBVTs7c0NBS2pCLEtBQUsscUJBQXFCLGFBQWEsdUJBQXVC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
21
+ export { FeatureFlagServiceProvider, useFeatureFlagService };
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5qcyIsIm5hbWVzIjpbIkZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyOiBSZWFjdC5GQzxGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlclByb3BzPiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0L2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ1NlcnZpY2UsIEZ1bGxGbGFnVmFsdWUgfSBmcm9tICdzcmMvc2VydmljZXMvZmVhdHVyZUZsYWdTZXJ2aWNlJztcblxuLy8gVGhlIHNlcnZpY2UgY2xhc3MgbGl2ZXMgaW4gc3JjL3NlcnZpY2VzL2ZlYXR1cmVGbGFnU2VydmljZSAoYSBSZWFjdC1mcmVlXG4vLyBtb2R1bGUgdGhlIGluamVjdGlvbiBidW5kbGUgY2FuIGltcG9ydCBwcmUtY29uZmlnKTsgcmUtZXhwb3J0IGl0IGhlcmUgc29cbi8vIGV4aXN0aW5nIGltcG9ydHMga2VlcCB3b3JraW5nLlxuZXhwb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH07XG5leHBvcnQgdHlwZSB7IEZ1bGxGbGFnVmFsdWUgfTtcblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRmxhZ0NvbnRleHRUeXBlIHtcbiAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBGZWF0dXJlRmxhZ1NlcnZpY2UgfCB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IEZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0PEZlYXR1cmVGbGFnQ29udGV4dFR5cGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmludGVyZmFjZSBGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlclByb3BzIHtcbiAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBGZWF0dXJlRmxhZ1NlcnZpY2U7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBjb25zdCBGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlcjogUmVhY3QuRkM8RmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXJQcm9wcz4gPSAoe1xuICBmZWF0dXJlRmxhZ1NlcnZpY2U6IGlucHV0U2VydmljZSxcbiAgY2hpbGRyZW4sXG59KSA9PiB7XG4gIGNvbnN0IGNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGZlYXR1cmVGbGFnU2VydmljZTogaW5wdXRTZXJ2aWNlLFxuICAgIH0pLFxuICAgIFtpbnB1dFNlcnZpY2VdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHRWYWx1ZX0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9GZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUZlYXR1cmVGbGFnU2VydmljZSA9ICgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dCk7XG4gIGlmIChjb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUZlYXR1cmVGbGFnU2VydmljZSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgRmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXInKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBYUEsTUFBTSw0QkFBNEIsY0FBa0QsT0FBVTtBQU85RixNQUFhQSw4QkFBeUUsRUFDcEYsb0JBQW9CLGNBQ3BCLGVBQ0k7Q0FDSixNQUFNLGVBQWUsZUFDWixFQUNMLG9CQUFvQixjQUNyQixHQUNELENBQUMsYUFBYSxDQUNmO0FBRUQsUUFDRSxvQkFBQywwQkFBMEI7RUFBUyxPQUFPO0VBQ3hDO0dBQ2tDOztBQUl6QyxNQUFhLDhCQUE4QjtDQUN6QyxNQUFNLFVBQVUsV0FBVywwQkFBMEI7QUFDckQsS0FBSSxZQUFZLE9BQ2QsT0FBTSxJQUFJLE1BQU0seUVBQXlFO0FBRTNGLFFBQU8ifQ==
@@ -1,5 +1,6 @@
1
+ const require_services_featureFlagService_index = require('../../services/featureFlagService/index.cjs');
1
2
  const require_featureFlagServiceContext = require('./featureFlagServiceContext.cjs');
2
3
 
3
- exports.FeatureFlagService = require_featureFlagServiceContext.FeatureFlagService;
4
+ exports.FeatureFlagService = require_services_featureFlagService_index.FeatureFlagService;
4
5
  exports.FeatureFlagServiceProvider = require_featureFlagServiceContext.FeatureFlagServiceProvider;
5
6
  exports.useFeatureFlagService = require_featureFlagServiceContext.useFeatureFlagService;
@@ -1,2 +1,3 @@
1
- import { FeatureFlagContextType, FeatureFlagService, FeatureFlagServiceProvider, FullFlagValue, useFeatureFlagService } from "./featureFlagServiceContext.cjs";
1
+ import { FeatureFlagService, FullFlagValue } from "../../services/featureFlagService/index.cjs";
2
+ import { FeatureFlagContextType, FeatureFlagServiceProvider, useFeatureFlagService } from "./featureFlagServiceContext.cjs";
2
3
  export { FeatureFlagContextType, FeatureFlagService, FeatureFlagServiceProvider, FullFlagValue, useFeatureFlagService };
@@ -1,2 +1,3 @@
1
- import { FeatureFlagContextType, FeatureFlagService, FeatureFlagServiceProvider, FullFlagValue, useFeatureFlagService } from "./featureFlagServiceContext.js";
1
+ import { FeatureFlagService, FullFlagValue } from "../../services/featureFlagService/index.js";
2
+ import { FeatureFlagContextType, FeatureFlagServiceProvider, useFeatureFlagService } from "./featureFlagServiceContext.js";
2
3
  export { FeatureFlagContextType, FeatureFlagService, FeatureFlagServiceProvider, FullFlagValue, useFeatureFlagService };
@@ -1,3 +1,4 @@
1
- import { FeatureFlagService, FeatureFlagServiceProvider, useFeatureFlagService } from "./featureFlagServiceContext.js";
1
+ import { FeatureFlagService } from "../../services/featureFlagService/index.js";
2
+ import { FeatureFlagServiceProvider, useFeatureFlagService } from "./featureFlagServiceContext.js";
2
3
 
3
4
  export { FeatureFlagService, FeatureFlagServiceProvider, useFeatureFlagService };
@@ -2,7 +2,6 @@ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_colorsConfigV3 = require('../../application/models/colorsConfigV3.cjs');
3
3
  const require_contexts_typesV3 = require('../typesV3.cjs');
4
4
  const require_customerService = require('../../types/customerService.cjs');
5
- let __envive_ai_react_toolkit_v3_FloatingButton = require("@envive-ai/react-toolkit-v3/FloatingButton");
6
5
  let __envive_ai_react_toolkit_v3_ChatHeader = require("@envive-ai/react-toolkit-v3/ChatHeader");
7
6
  let __envive_ai_react_toolkit_v3_ImageGallery = require("@envive-ai/react-toolkit-v3/ImageGallery");
8
7
  let __envive_ai_react_toolkit_v3_PromptButton = require("@envive-ai/react-toolkit-v3/PromptButton");
@@ -11,6 +10,7 @@ let __envive_ai_react_toolkit_v3_SocialProof = require("@envive-ai/react-toolkit
11
10
  let __envive_ai_react_toolkit_v3_Tokens = require("@envive-ai/react-toolkit-v3/Tokens");
12
11
  let __envive_ai_react_toolkit_v3_WelcomeMessage = require("@envive-ai/react-toolkit-v3/WelcomeMessage");
13
12
  let __envive_ai_react_toolkit_v3_WidgetWrapper = require("@envive-ai/react-toolkit-v3/WidgetWrapper");
13
+ let __envive_ai_react_toolkit_v3_FloatingButton = require("@envive-ai/react-toolkit-v3/FloatingButton");
14
14
 
15
15
  //#region src/contexts/graphqlContext/mockV3Config.ts
16
16
  const mockImages = [
@@ -1,7 +1,6 @@
1
1
  import { ColorNames, colorVar } from "../../application/models/colorsConfigV3.js";
2
2
  import { ConfigVersionEnum, WidgetTypeV3 } from "../typesV3.js";
3
3
  import { CustomerServiceType } from "../../types/customerService.js";
4
- import { FloatingButtonLocation } from "@envive-ai/react-toolkit-v3/FloatingButton";
5
4
  import { ChatHeaderVariant } from "@envive-ai/react-toolkit-v3/ChatHeader";
6
5
  import { ImageGalleryLayout } from "@envive-ai/react-toolkit-v3/ImageGallery";
7
6
  import { PromptButtonVariant } from "@envive-ai/react-toolkit-v3/PromptButton";
@@ -10,6 +9,7 @@ import { WidgetKind } from "@envive-ai/react-toolkit-v3/SocialProof";
10
9
  import { Theme } from "@envive-ai/react-toolkit-v3/Tokens";
11
10
  import { SparkleIconColor } from "@envive-ai/react-toolkit-v3/WelcomeMessage";
12
11
  import { WidgetWrapperVariant } from "@envive-ai/react-toolkit-v3/WidgetWrapper";
12
+ import { FloatingButtonLocation } from "@envive-ai/react-toolkit-v3/FloatingButton";
13
13
 
14
14
  //#region src/contexts/graphqlContext/mockV3Config.ts
15
15
  const mockImages = [
@@ -1,5 +1,6 @@
1
+ const require_localStorageKeys = require('./localStorageKeys.cjs');
1
2
  const require_localStorageContext = require('./localStorageContext.cjs');
2
3
 
3
- exports.LocalStorageKeys = require_localStorageContext.LocalStorageKeys;
4
+ exports.LocalStorageKeys = require_localStorageKeys.LocalStorageKeys;
4
5
  exports.LocalStorageProvider = require_localStorageContext.LocalStorageProvider;
5
6
  exports.useLocalStorage = require_localStorageContext.useLocalStorage;
@@ -1,2 +1,3 @@
1
- import { LocalStorageKeys, LocalStorageProvider, useLocalStorage } from "./localStorageContext.cjs";
1
+ import { LocalStorageKeys } from "./localStorageKeys.cjs";
2
+ import { LocalStorageProvider, useLocalStorage } from "./localStorageContext.cjs";
2
3
  export { LocalStorageKeys, LocalStorageProvider, useLocalStorage };
@@ -1,2 +1,3 @@
1
- import { LocalStorageKeys, LocalStorageProvider, useLocalStorage } from "./localStorageContext.js";
1
+ import { LocalStorageKeys } from "./localStorageKeys.js";
2
+ import { LocalStorageProvider, useLocalStorage } from "./localStorageContext.js";
2
3
  export { LocalStorageKeys, LocalStorageProvider, useLocalStorage };
@@ -1,3 +1,4 @@
1
- import { LocalStorageKeys, LocalStorageProvider, useLocalStorage } from "./localStorageContext.js";
1
+ import { LocalStorageKeys } from "./localStorageKeys.js";
2
+ import { LocalStorageProvider, useLocalStorage } from "./localStorageContext.js";
2
3
 
3
4
  export { LocalStorageKeys, LocalStorageProvider, useLocalStorage };
@@ -1,16 +1,11 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_logger = require('../../application/logging/logger.cjs');
3
+ const require_localStorageKeys = require('./localStorageKeys.cjs');
3
4
  let react = require("react");
4
5
  react = require_rolldown_runtime.__toESM(react);
5
6
  let react_jsx_runtime = require("react/jsx-runtime");
6
7
 
7
8
  //#region src/contexts/localStorageContext/localStorageContext.tsx
8
- let LocalStorageKeys = /* @__PURE__ */ function(LocalStorageKeys$1) {
9
- LocalStorageKeys$1["ChatId"] = "v1-spiffy-chat-session-id";
10
- LocalStorageKeys$1["SpiffyOnOverride"] = "spiffy_on";
11
- LocalStorageKeys$1["EnviveOnOverride"] = "envive_on";
12
- return LocalStorageKeys$1;
13
- }({});
14
9
  const LocalStorageContext = (0, react.createContext)(null);
15
10
  const logger = new require_logger.default("localStorageContext");
16
11
  const LocalStorageProvider = ({ children }) => {
@@ -38,12 +33,12 @@ const LocalStorageProvider = ({ children }) => {
38
33
  }, [isAvailable]);
39
34
  const setSpiffyOnFeatureFlag = (0, react.useCallback)((value$1) => {
40
35
  if (!isAvailable) return;
41
- if (value$1 === true) localStorage.setItem(LocalStorageKeys.SpiffyOnOverride, "true");
42
- else if (value$1 === false) localStorage.setItem(LocalStorageKeys.SpiffyOnOverride, "false");
36
+ if (value$1 === true) localStorage.setItem(require_localStorageKeys.LocalStorageKeys.SpiffyOnOverride, "true");
37
+ else if (value$1 === false) localStorage.setItem(require_localStorageKeys.LocalStorageKeys.SpiffyOnOverride, "false");
43
38
  }, [isAvailable]);
44
39
  const getSpiffyOnFeatureFlag = (0, react.useCallback)(() => {
45
40
  if (!isAvailable) return null;
46
- return localStorage.getItem(LocalStorageKeys.SpiffyOnOverride);
41
+ return localStorage.getItem(require_localStorageKeys.LocalStorageKeys.SpiffyOnOverride);
47
42
  }, [isAvailable]);
48
43
  const listenersCache = (0, react.useMemo)(() => /* @__PURE__ */ new Map(), []);
49
44
  const listenerForKey = (0, react.useCallback)((listener) => {
@@ -94,7 +89,6 @@ const useLocalStorage = () => {
94
89
  };
95
90
 
96
91
  //#endregion
97
- exports.LocalStorageKeys = LocalStorageKeys;
98
92
  exports.LocalStorageProvider = LocalStorageProvider;
99
93
  exports.useLocalStorage = useLocalStorage;
100
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxTdG9yYWdlQ29udGV4dC5janMiLCJuYW1lcyI6WyJMb2dnZXIiLCJMb2NhbFN0b3JhZ2VQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+IiwidmFsdWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvbG9jYWxTdG9yYWdlQ29udGV4dC9sb2NhbFN0b3JhZ2VDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXIgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2xvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXInO1xuXG5leHBvcnQgZW51bSBMb2NhbFN0b3JhZ2VLZXlzIHtcbiAgQ2hhdElkID0gJ3YxLXNwaWZmeS1jaGF0LXNlc3Npb24taWQnLFxuICBTcGlmZnlPbk92ZXJyaWRlID0gJ3NwaWZmeV9vbicsXG4gIEVudml2ZU9uT3ZlcnJpZGUgPSAnZW52aXZlX29uJyxcbn1cblxuaW50ZXJmYWNlIExvY2FsU3RvcmFnZUNvbnRleHRUeXBlIHtcbiAgc2V0SXRlbTogKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBnZXRJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGw7XG4gIHNldFNwaWZmeU9uRmVhdHVyZUZsYWc6ICh2YWx1ZTogYm9vbGVhbiB8IG51bGwpID0+IHZvaWQ7XG4gIGdldFNwaWZmeU9uRmVhdHVyZUZsYWc6ICgpID0+IHN0cmluZyB8IG51bGw7XG4gIGF0dGFjaExpc3RlbmVyOiAobGlzdGVuZXI6IExvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXIpID0+IHZvaWQ7XG4gIGRldGFjaExpc3RlbmVyOiAobGlzdGVuZXI6IExvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXIpID0+IHZvaWQ7XG4gIGlzQXZhaWxhYmxlOiBib29sZWFuO1xufVxuXG5jb25zdCBMb2NhbFN0b3JhZ2VDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxMb2NhbFN0b3JhZ2VDb250ZXh0VHlwZSB8IG51bGw+KG51bGwpO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCdsb2NhbFN0b3JhZ2VDb250ZXh0Jyk7XG5cbmV4cG9ydCBjb25zdCBMb2NhbFN0b3JhZ2VQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCBpc0F2YWlsYWJsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgISF3aW5kb3cubG9jYWxTdG9yYWdlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0F2YWlsYWJsZSkge1xuICAgICAgbG9nZ2VyLmxvZ0Vycm9yKCdsb2NhbFN0b3JhZ2UgaXMgbm90IGF2YWlsYWJsZScsIHVuZGVmaW5lZCk7XG4gICAgfVxuICB9LCBbaXNBdmFpbGFibGVdKTtcblxuICBjb25zdCBzZXRJdGVtID0gdXNlQ2FsbGJhY2soXG4gICAgKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIWlzQXZhaWxhYmxlKSByZXR1cm47XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcbiAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBTdG9yYWdlRXZlbnQoJ3N0b3JhZ2UnLCB7IGtleSwgbmV3VmFsdWU6IHZhbHVlIH0pKTtcbiAgICB9LFxuICAgIFtpc0F2YWlsYWJsZV0sXG4gICk7XG5cbiAgY29uc3QgZ2V0SXRlbSA9IHVzZUNhbGxiYWNrKFxuICAgIChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCFpc0F2YWlsYWJsZSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICB9LFxuICAgIFtpc0F2YWlsYWJsZV0sXG4gICk7XG5cbiAgY29uc3Qgc2V0U3BpZmZ5T25GZWF0dXJlRmxhZyA9IHVzZUNhbGxiYWNrKFxuICAgICh2YWx1ZTogYm9vbGVhbiB8IG51bGwpOiB2b2lkID0+IHtcbiAgICAgIGlmICghaXNBdmFpbGFibGUpIHJldHVybjtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VLZXlzLlNwaWZmeU9uT3ZlcnJpZGUsICd0cnVlJyk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VLZXlzLlNwaWZmeU9uT3ZlcnJpZGUsICdmYWxzZScpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2lzQXZhaWxhYmxlXSxcbiAgKTtcblxuICBjb25zdCBnZXRTcGlmZnlPbkZlYXR1cmVGbGFnID0gdXNlQ2FsbGJhY2soKCk6IHN0cmluZyB8IG51bGwgPT4ge1xuICAgIGlmICghaXNBdmFpbGFibGUpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VLZXlzLlNwaWZmeU9uT3ZlcnJpZGUpO1xuICB9LCBbaXNBdmFpbGFibGVdKTtcblxuICBjb25zdCBsaXN0ZW5lcnNDYWNoZSA9IHVzZU1lbW8oKCkgPT4gbmV3IE1hcDxzdHJpbmcsIChldmVudDogU3RvcmFnZUV2ZW50KSA9PiB2b2lkPigpLCBbXSk7XG5cbiAgY29uc3QgbGlzdGVuZXJGb3JLZXkgPSB1c2VDYWxsYmFjayhcbiAgICAobGlzdGVuZXI6IExvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXIpOiAoKGV2ZW50OiBTdG9yYWdlRXZlbnQpID0+IHZvaWQpID0+IHtcbiAgICAgIGlmICghbGlzdGVuZXJzQ2FjaGUuaGFzKGxpc3RlbmVyLnN0b3JhZ2VLZXkpKSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQ6IFN0b3JhZ2VFdmVudCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudC5rZXkgIT09IGxpc3RlbmVyLnN0b3JhZ2VLZXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nZ2VyLmxvZ0RlYnVnKGBTdG9yYWdlIGV2ZW50IGtleT0ke2V2ZW50LmtleX0sIHZhbHVlPWAsIGV2ZW50Lm5ld1ZhbHVlKTtcbiAgICAgICAgICBsaXN0ZW5lci5saXN0ZW5lcihldmVudCk7XG4gICAgICAgIH07XG4gICAgICAgIGxpc3RlbmVyc0NhY2hlLnNldChsaXN0ZW5lci5zdG9yYWdlS2V5LCBoYW5kbGVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsaXN0ZW5lcnNDYWNoZS5nZXQobGlzdGVuZXIuc3RvcmFnZUtleSkhO1xuICAgIH0sXG4gICAgW2xpc3RlbmVyc0NhY2hlXSxcbiAgKTtcblxuICBjb25zdCBhdHRhY2hMaXN0ZW5lciA9IHVzZUNhbGxiYWNrKFxuICAgIChsaXN0ZW5lcjogTG9jYWxTdG9yYWdlRXZlbnRMaXN0ZW5lcik6IHZvaWQgPT4ge1xuICAgICAgaWYgKCFpc0F2YWlsYWJsZSkgcmV0dXJuO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCBsaXN0ZW5lckZvcktleShsaXN0ZW5lcikpO1xuICAgIH0sXG4gICAgW2lzQXZhaWxhYmxlLCBsaXN0ZW5lckZvcktleV0sXG4gICk7XG5cbiAgY29uc3QgZGV0YWNoTGlzdGVuZXIgPSB1c2VDYWxsYmFjayhcbiAgICAobGlzdGVuZXI6IExvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXIpOiB2b2lkID0+IHtcbiAgICAgIGlmICghaXNBdmFpbGFibGUpIHJldHVybjtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzdG9yYWdlJywgbGlzdGVuZXJGb3JLZXkobGlzdGVuZXIpKTtcbiAgICB9LFxuICAgIFtpc0F2YWlsYWJsZSwgbGlzdGVuZXJGb3JLZXldLFxuICApO1xuXG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgc2V0SXRlbSxcbiAgICAgIGdldEl0ZW0sXG4gICAgICBzZXRTcGlmZnlPbkZlYXR1cmVGbGFnLFxuICAgICAgZ2V0U3BpZmZ5T25GZWF0dXJlRmxhZyxcbiAgICAgIGF0dGFjaExpc3RlbmVyLFxuICAgICAgZGV0YWNoTGlzdGVuZXIsXG4gICAgICBpc0F2YWlsYWJsZSxcbiAgICB9KSxcbiAgICBbXG4gICAgICBzZXRJdGVtLFxuICAgICAgZ2V0SXRlbSxcbiAgICAgIHNldFNwaWZmeU9uRmVhdHVyZUZsYWcsXG4gICAgICBnZXRTcGlmZnlPbkZlYXR1cmVGbGFnLFxuICAgICAgYXR0YWNoTGlzdGVuZXIsXG4gICAgICBkZXRhY2hMaXN0ZW5lcixcbiAgICAgIGlzQXZhaWxhYmxlLFxuICAgIF0sXG4gICk7XG5cbiAgcmV0dXJuIDxMb2NhbFN0b3JhZ2VDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvTG9jYWxTdG9yYWdlQ29udGV4dC5Qcm92aWRlcj47XG59O1xuXG5leHBvcnQgY29uc3QgdXNlTG9jYWxTdG9yYWdlID0gKCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChMb2NhbFN0b3JhZ2VDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VMb2NhbFN0b3JhZ2UgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIExvY2FsU3RvcmFnZVByb3ZpZGVyJyk7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsSUFBWSxnRUFBTDtBQUNMO0FBQ0E7QUFDQTs7O0FBYUYsTUFBTSwrQ0FBb0UsS0FBSztBQUUvRSxNQUFNLFNBQVMsSUFBSUEsdUJBQU8sc0JBQXNCO0FBRWhELE1BQWFDLHdCQUFpRSxFQUFFLGVBQWU7Q0FDN0YsTUFBTSx1Q0FBNEI7QUFDaEMsTUFBSTtBQUNGLFVBQU8sT0FBTyxXQUFXLGVBQWUsQ0FBQyxDQUFDLE9BQU87VUFDM0M7QUFDTixVQUFPOztJQUVSLEVBQUUsQ0FBQztBQUVOLDRCQUFnQjtBQUNkLE1BQUksQ0FBQyxZQUNILFFBQU8sU0FBUyxpQ0FBaUMsT0FBVTtJQUU1RCxDQUFDLFlBQVksQ0FBQztDQUVqQixNQUFNLGtDQUNILEtBQWEsWUFBa0I7QUFDOUIsTUFBSSxDQUFDLFlBQWE7QUFDbEIsZUFBYSxRQUFRLEtBQUtDLFFBQU07QUFDaEMsU0FBTyxjQUFjLElBQUksYUFBYSxXQUFXO0dBQUU7R0FBSyxVQUFVQTtHQUFPLENBQUMsQ0FBQztJQUU3RSxDQUFDLFlBQVksQ0FDZDtDQUVELE1BQU0sa0NBQ0gsUUFBZ0I7QUFDZixNQUFJLENBQUMsWUFBYSxRQUFPO0FBQ3pCLFNBQU8sYUFBYSxRQUFRLElBQUk7SUFFbEMsQ0FBQyxZQUFZLENBQ2Q7Q0FFRCxNQUFNLGlEQUNILFlBQWdDO0FBQy9CLE1BQUksQ0FBQyxZQUFhO0FBQ2xCLE1BQUlBLFlBQVUsS0FDWixjQUFhLFFBQVEsaUJBQWlCLGtCQUFrQixPQUFPO1dBQ3REQSxZQUFVLE1BQ25CLGNBQWEsUUFBUSxpQkFBaUIsa0JBQWtCLFFBQVE7SUFHcEUsQ0FBQyxZQUFZLENBQ2Q7Q0FFRCxNQUFNLHNEQUEwRDtBQUM5RCxNQUFJLENBQUMsWUFBYSxRQUFPO0FBQ3pCLFNBQU8sYUFBYSxRQUFRLGlCQUFpQixpQkFBaUI7SUFDN0QsQ0FBQyxZQUFZLENBQUM7Q0FFakIsTUFBTSwwREFBK0IsSUFBSSxLQUE0QyxFQUFFLEVBQUUsQ0FBQztDQUUxRixNQUFNLHlDQUNILGFBQXlFO0FBQ3hFLE1BQUksQ0FBQyxlQUFlLElBQUksU0FBUyxXQUFXLEVBQUU7R0FDNUMsTUFBTSxXQUFXLFVBQXdCO0FBQ3ZDLFFBQUksTUFBTSxRQUFRLFNBQVMsV0FDekI7QUFFRixXQUFPLFNBQVMscUJBQXFCLE1BQU0sSUFBSSxXQUFXLE1BQU0sU0FBUztBQUN6RSxhQUFTLFNBQVMsTUFBTTs7QUFFMUIsa0JBQWUsSUFBSSxTQUFTLFlBQVksUUFBUTs7QUFFbEQsU0FBTyxlQUFlLElBQUksU0FBUyxXQUFXO0lBRWhELENBQUMsZUFBZSxDQUNqQjtDQUVELE1BQU0seUNBQ0gsYUFBOEM7QUFDN0MsTUFBSSxDQUFDLFlBQWE7QUFDbEIsU0FBTyxpQkFBaUIsV0FBVyxlQUFlLFNBQVMsQ0FBQztJQUU5RCxDQUFDLGFBQWEsZUFBZSxDQUM5QjtDQUVELE1BQU0seUNBQ0gsYUFBOEM7QUFDN0MsTUFBSSxDQUFDLFlBQWE7QUFDbEIsU0FBTyxvQkFBb0IsV0FBVyxlQUFlLFNBQVMsQ0FBQztJQUVqRSxDQUFDLGFBQWEsZUFBZSxDQUM5QjtDQUVELE1BQU0sa0NBQ0c7RUFDTDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNELEdBQ0Q7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNELENBQ0Y7QUFFRCxRQUFPLDJDQUFDLG9CQUFvQjtFQUFnQjtFQUFRO0dBQXdDOztBQUc5RixNQUFhLHdCQUF3QjtDQUNuQyxNQUFNLGdDQUFxQixvQkFBb0I7QUFDL0MsS0FBSSxDQUFDLFFBQ0gsT0FBTSxJQUFJLE1BQU0sNkRBQTZEO0FBRS9FLFFBQU8ifQ==
94
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxTdG9yYWdlQ29udGV4dC5janMiLCJuYW1lcyI6WyJMb2dnZXIiLCJMb2NhbFN0b3JhZ2VQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+IiwidmFsdWUiLCJMb2NhbFN0b3JhZ2VLZXlzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRleHRzL2xvY2FsU3RvcmFnZUNvbnRleHQvbG9jYWxTdG9yYWdlQ29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VFdmVudExpc3RlbmVyIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9sb2NhbFN0b3JhZ2VFdmVudExpc3RlbmVyJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZUtleXMgfSBmcm9tICcuL2xvY2FsU3RvcmFnZUtleXMnO1xuXG5leHBvcnQgeyBMb2NhbFN0b3JhZ2VLZXlzIH07XG5cbmludGVyZmFjZSBMb2NhbFN0b3JhZ2VDb250ZXh0VHlwZSB7XG4gIHNldEl0ZW06IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsO1xuICBzZXRTcGlmZnlPbkZlYXR1cmVGbGFnOiAodmFsdWU6IGJvb2xlYW4gfCBudWxsKSA9PiB2b2lkO1xuICBnZXRTcGlmZnlPbkZlYXR1cmVGbGFnOiAoKSA9PiBzdHJpbmcgfCBudWxsO1xuICBhdHRhY2hMaXN0ZW5lcjogKGxpc3RlbmVyOiBMb2NhbFN0b3JhZ2VFdmVudExpc3RlbmVyKSA9PiB2b2lkO1xuICBkZXRhY2hMaXN0ZW5lcjogKGxpc3RlbmVyOiBMb2NhbFN0b3JhZ2VFdmVudExpc3RlbmVyKSA9PiB2b2lkO1xuICBpc0F2YWlsYWJsZTogYm9vbGVhbjtcbn1cblxuY29uc3QgTG9jYWxTdG9yYWdlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8TG9jYWxTdG9yYWdlQ29udGV4dFR5cGUgfCBudWxsPihudWxsKTtcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcignbG9jYWxTdG9yYWdlQ29udGV4dCcpO1xuXG5leHBvcnQgY29uc3QgTG9jYWxTdG9yYWdlUHJvdmlkZXI6IFJlYWN0LkZDPHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9PiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgaXNBdmFpbGFibGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICEhd2luZG93LmxvY2FsU3RvcmFnZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNBdmFpbGFibGUpIHtcbiAgICAgIGxvZ2dlci5sb2dFcnJvcignbG9jYWxTdG9yYWdlIGlzIG5vdCBhdmFpbGFibGUnLCB1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW2lzQXZhaWxhYmxlXSk7XG5cbiAgY29uc3Qgc2V0SXRlbSA9IHVzZUNhbGxiYWNrKFxuICAgIChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCFpc0F2YWlsYWJsZSkgcmV0dXJuO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgU3RvcmFnZUV2ZW50KCdzdG9yYWdlJywgeyBrZXksIG5ld1ZhbHVlOiB2YWx1ZSB9KSk7XG4gICAgfSxcbiAgICBbaXNBdmFpbGFibGVdLFxuICApO1xuXG4gIGNvbnN0IGdldEl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghaXNBdmFpbGFibGUpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgfSxcbiAgICBbaXNBdmFpbGFibGVdLFxuICApO1xuXG4gIGNvbnN0IHNldFNwaWZmeU9uRmVhdHVyZUZsYWcgPSB1c2VDYWxsYmFjayhcbiAgICAodmFsdWU6IGJvb2xlYW4gfCBudWxsKTogdm9pZCA9PiB7XG4gICAgICBpZiAoIWlzQXZhaWxhYmxlKSByZXR1cm47XG4gICAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlS2V5cy5TcGlmZnlPbk92ZXJyaWRlLCAndHJ1ZScpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlS2V5cy5TcGlmZnlPbk92ZXJyaWRlLCAnZmFsc2UnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtpc0F2YWlsYWJsZV0sXG4gICk7XG5cbiAgY29uc3QgZ2V0U3BpZmZ5T25GZWF0dXJlRmxhZyA9IHVzZUNhbGxiYWNrKCgpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgICBpZiAoIWlzQXZhaWxhYmxlKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlS2V5cy5TcGlmZnlPbk92ZXJyaWRlKTtcbiAgfSwgW2lzQXZhaWxhYmxlXSk7XG5cbiAgY29uc3QgbGlzdGVuZXJzQ2FjaGUgPSB1c2VNZW1vKCgpID0+IG5ldyBNYXA8c3RyaW5nLCAoZXZlbnQ6IFN0b3JhZ2VFdmVudCkgPT4gdm9pZD4oKSwgW10pO1xuXG4gIGNvbnN0IGxpc3RlbmVyRm9yS2V5ID0gdXNlQ2FsbGJhY2soXG4gICAgKGxpc3RlbmVyOiBMb2NhbFN0b3JhZ2VFdmVudExpc3RlbmVyKTogKChldmVudDogU3RvcmFnZUV2ZW50KSA9PiB2b2lkKSA9PiB7XG4gICAgICBpZiAoIWxpc3RlbmVyc0NhY2hlLmhhcyhsaXN0ZW5lci5zdG9yYWdlS2V5KSkge1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gKGV2ZW50OiBTdG9yYWdlRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ICE9PSBsaXN0ZW5lci5zdG9yYWdlS2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZ2dlci5sb2dEZWJ1ZyhgU3RvcmFnZSBldmVudCBrZXk9JHtldmVudC5rZXl9LCB2YWx1ZT1gLCBldmVudC5uZXdWYWx1ZSk7XG4gICAgICAgICAgbGlzdGVuZXIubGlzdGVuZXIoZXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICBsaXN0ZW5lcnNDYWNoZS5zZXQobGlzdGVuZXIuc3RvcmFnZUtleSwgaGFuZGxlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGlzdGVuZXJzQ2FjaGUuZ2V0KGxpc3RlbmVyLnN0b3JhZ2VLZXkpITtcbiAgICB9LFxuICAgIFtsaXN0ZW5lcnNDYWNoZV0sXG4gICk7XG5cbiAgY29uc3QgYXR0YWNoTGlzdGVuZXIgPSB1c2VDYWxsYmFjayhcbiAgICAobGlzdGVuZXI6IExvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXIpOiB2b2lkID0+IHtcbiAgICAgIGlmICghaXNBdmFpbGFibGUpIHJldHVybjtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzdG9yYWdlJywgbGlzdGVuZXJGb3JLZXkobGlzdGVuZXIpKTtcbiAgICB9LFxuICAgIFtpc0F2YWlsYWJsZSwgbGlzdGVuZXJGb3JLZXldLFxuICApO1xuXG4gIGNvbnN0IGRldGFjaExpc3RlbmVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGxpc3RlbmVyOiBMb2NhbFN0b3JhZ2VFdmVudExpc3RlbmVyKTogdm9pZCA9PiB7XG4gICAgICBpZiAoIWlzQXZhaWxhYmxlKSByZXR1cm47XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIGxpc3RlbmVyRm9yS2V5KGxpc3RlbmVyKSk7XG4gICAgfSxcbiAgICBbaXNBdmFpbGFibGUsIGxpc3RlbmVyRm9yS2V5XSxcbiAgKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHNldEl0ZW0sXG4gICAgICBnZXRJdGVtLFxuICAgICAgc2V0U3BpZmZ5T25GZWF0dXJlRmxhZyxcbiAgICAgIGdldFNwaWZmeU9uRmVhdHVyZUZsYWcsXG4gICAgICBhdHRhY2hMaXN0ZW5lcixcbiAgICAgIGRldGFjaExpc3RlbmVyLFxuICAgICAgaXNBdmFpbGFibGUsXG4gICAgfSksXG4gICAgW1xuICAgICAgc2V0SXRlbSxcbiAgICAgIGdldEl0ZW0sXG4gICAgICBzZXRTcGlmZnlPbkZlYXR1cmVGbGFnLFxuICAgICAgZ2V0U3BpZmZ5T25GZWF0dXJlRmxhZyxcbiAgICAgIGF0dGFjaExpc3RlbmVyLFxuICAgICAgZGV0YWNoTGlzdGVuZXIsXG4gICAgICBpc0F2YWlsYWJsZSxcbiAgICBdLFxuICApO1xuXG4gIHJldHVybiA8TG9jYWxTdG9yYWdlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PntjaGlsZHJlbn08L0xvY2FsU3RvcmFnZUNvbnRleHQuUHJvdmlkZXI+O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUxvY2FsU3RvcmFnZSA9ICgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTG9jYWxTdG9yYWdlQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlTG9jYWxTdG9yYWdlIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBMb2NhbFN0b3JhZ2VQcm92aWRlcicpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7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
@@ -1,12 +1,8 @@
1
1
  import { LocalStorageEventListener } from "../../application/models/localStorageEventListener.cjs";
2
+ import { LocalStorageKeys } from "./localStorageKeys.cjs";
2
3
  import React from "react";
3
4
 
4
5
  //#region src/contexts/localStorageContext/localStorageContext.d.ts
5
- declare enum LocalStorageKeys {
6
- ChatId = "v1-spiffy-chat-session-id",
7
- SpiffyOnOverride = "spiffy_on",
8
- EnviveOnOverride = "envive_on",
9
- }
10
6
  interface LocalStorageContextType {
11
7
  setItem: (key: string, value: string) => void;
12
8
  getItem: (key: string) => string | null;
@@ -21,5 +17,5 @@ declare const LocalStorageProvider: React.FC<{
21
17
  }>;
22
18
  declare const useLocalStorage: () => LocalStorageContextType;
23
19
  //#endregion
24
- export { LocalStorageKeys, LocalStorageProvider, useLocalStorage };
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxTdG9yYWdlQ29udGV4dC5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvbG9jYWxTdG9yYWdlQ29udGV4dC9sb2NhbFN0b3JhZ2VDb250ZXh0LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IExvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXIgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2xvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXInO1xuZXhwb3J0IGRlY2xhcmUgZW51bSBMb2NhbFN0b3JhZ2VLZXlzIHtcbiAgICBDaGF0SWQgPSBcInYxLXNwaWZmeS1jaGF0LXNlc3Npb24taWRcIixcbiAgICBTcGlmZnlPbk92ZXJyaWRlID0gXCJzcGlmZnlfb25cIixcbiAgICBFbnZpdmVPbk92ZXJyaWRlID0gXCJlbnZpdmVfb25cIlxufVxuaW50ZXJmYWNlIExvY2FsU3RvcmFnZUNvbnRleHRUeXBlIHtcbiAgICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsO1xuICAgIHNldFNwaWZmeU9uRmVhdHVyZUZsYWc6ICh2YWx1ZTogYm9vbGVhbiB8IG51bGwpID0+IHZvaWQ7XG4gICAgZ2V0U3BpZmZ5T25GZWF0dXJlRmxhZzogKCkgPT4gc3RyaW5nIHwgbnVsbDtcbiAgICBhdHRhY2hMaXN0ZW5lcjogKGxpc3RlbmVyOiBMb2NhbFN0b3JhZ2VFdmVudExpc3RlbmVyKSA9PiB2b2lkO1xuICAgIGRldGFjaExpc3RlbmVyOiAobGlzdGVuZXI6IExvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXIpID0+IHZvaWQ7XG4gICAgaXNBdmFpbGFibGU6IGJvb2xlYW47XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBMb2NhbFN0b3JhZ2VQcm92aWRlcjogUmVhY3QuRkM8e1xuICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59PjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVzZUxvY2FsU3RvcmFnZTogKCkgPT4gTG9jYWxTdG9yYWdlQ29udGV4dFR5cGU7XG5leHBvcnQge307XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxJQUFXLG1CQUFtQixDQUFDLElBQUk7QUFDbkMsSUFBSSwwQkFBMEI7Q0FBQztPQUFTO09BQUE7Q0FBQTtBQUN4QyxJQUFXLHVCQUF1QjtDQUFBO09BQUEsTUFBQTtPQUFBLE1BQUE7Q0FBQTtBQUNsQyxJQUFXLGtCQUFrQixDQUFDLFdBQUcsd0JBQUEifQ==
20
+ export { LocalStorageProvider, useLocalStorage };
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxTdG9yYWdlQ29udGV4dC5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvbG9jYWxTdG9yYWdlQ29udGV4dC9sb2NhbFN0b3JhZ2VDb250ZXh0LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IExvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXIgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2xvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXInO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlS2V5cyB9IGZyb20gJy4vbG9jYWxTdG9yYWdlS2V5cyc7XG5leHBvcnQgeyBMb2NhbFN0b3JhZ2VLZXlzIH07XG5pbnRlcmZhY2UgTG9jYWxTdG9yYWdlQ29udGV4dFR5cGUge1xuICAgIHNldEl0ZW06IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgICBnZXRJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGw7XG4gICAgc2V0U3BpZmZ5T25GZWF0dXJlRmxhZzogKHZhbHVlOiBib29sZWFuIHwgbnVsbCkgPT4gdm9pZDtcbiAgICBnZXRTcGlmZnlPbkZlYXR1cmVGbGFnOiAoKSA9PiBzdHJpbmcgfCBudWxsO1xuICAgIGF0dGFjaExpc3RlbmVyOiAobGlzdGVuZXI6IExvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXIpID0+IHZvaWQ7XG4gICAgZGV0YWNoTGlzdGVuZXI6IChsaXN0ZW5lcjogTG9jYWxTdG9yYWdlRXZlbnRMaXN0ZW5lcikgPT4gdm9pZDtcbiAgICBpc0F2YWlsYWJsZTogYm9vbGVhbjtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IExvY2FsU3RvcmFnZVByb3ZpZGVyOiBSZWFjdC5GQzx7XG4gICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlTG9jYWxTdG9yYWdlOiAoKSA9PiBMb2NhbFN0b3JhZ2VDb250ZXh0VHlwZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxJQUFJLDBCQUEwQjtDQUFDO09BQUc7T0FBQTtDQUFBO0FBQ2xDLElBQVcsdUJBQXVCO0NBQUM7T0FBVyxNQUFHO09BQUEsTUFBQTtDQUFBO0FBQ2pELElBQVcsa0JBQWtCLENBQUMsV0FBVyx3QkFBRSJ9
@@ -1,12 +1,8 @@
1
1
  import { LocalStorageEventListener } from "../../application/models/localStorageEventListener.js";
2
+ import { LocalStorageKeys } from "./localStorageKeys.js";
2
3
  import React from "react";
3
4
 
4
5
  //#region src/contexts/localStorageContext/localStorageContext.d.ts
5
- declare enum LocalStorageKeys {
6
- ChatId = "v1-spiffy-chat-session-id",
7
- SpiffyOnOverride = "spiffy_on",
8
- EnviveOnOverride = "envive_on",
9
- }
10
6
  interface LocalStorageContextType {
11
7
  setItem: (key: string, value: string) => void;
12
8
  getItem: (key: string) => string | null;
@@ -21,5 +17,5 @@ declare const LocalStorageProvider: React.FC<{
21
17
  }>;
22
18
  declare const useLocalStorage: () => LocalStorageContextType;
23
19
  //#endregion
24
- export { LocalStorageKeys, LocalStorageProvider, useLocalStorage };
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxTdG9yYWdlQ29udGV4dC5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9sb2NhbFN0b3JhZ2VDb250ZXh0L2xvY2FsU3RvcmFnZUNvbnRleHQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlRXZlbnRMaXN0ZW5lciB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvbG9jYWxTdG9yYWdlRXZlbnRMaXN0ZW5lcic7XG5leHBvcnQgZGVjbGFyZSBlbnVtIExvY2FsU3RvcmFnZUtleXMge1xuICAgIENoYXRJZCA9IFwidjEtc3BpZmZ5LWNoYXQtc2Vzc2lvbi1pZFwiLFxuICAgIFNwaWZmeU9uT3ZlcnJpZGUgPSBcInNwaWZmeV9vblwiLFxuICAgIEVudml2ZU9uT3ZlcnJpZGUgPSBcImVudml2ZV9vblwiXG59XG5pbnRlcmZhY2UgTG9jYWxTdG9yYWdlQ29udGV4dFR5cGUge1xuICAgIHNldEl0ZW06IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgICBnZXRJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGw7XG4gICAgc2V0U3BpZmZ5T25GZWF0dXJlRmxhZzogKHZhbHVlOiBib29sZWFuIHwgbnVsbCkgPT4gdm9pZDtcbiAgICBnZXRTcGlmZnlPbkZlYXR1cmVGbGFnOiAoKSA9PiBzdHJpbmcgfCBudWxsO1xuICAgIGF0dGFjaExpc3RlbmVyOiAobGlzdGVuZXI6IExvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXIpID0+IHZvaWQ7XG4gICAgZGV0YWNoTGlzdGVuZXI6IChsaXN0ZW5lcjogTG9jYWxTdG9yYWdlRXZlbnRMaXN0ZW5lcikgPT4gdm9pZDtcbiAgICBpc0F2YWlsYWJsZTogYm9vbGVhbjtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IExvY2FsU3RvcmFnZVByb3ZpZGVyOiBSZWFjdC5GQzx7XG4gICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlTG9jYWxTdG9yYWdlOiAoKSA9PiBMb2NhbFN0b3JhZ2VDb250ZXh0VHlwZTtcbmV4cG9ydCB7fTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLElBQVcsbUJBQW1CLENBQUMsSUFBSTtBQUNuQyxJQUFJLDBCQUEwQjtDQUFDO09BQVM7T0FBQTtDQUFBO0FBQ3hDLElBQVcsdUJBQXVCO0NBQUE7T0FBQSxNQUFBO09BQUEsTUFBQTtDQUFBO0FBQ2xDLElBQVcsa0JBQWtCLENBQUMsV0FBRyx3QkFBQSJ9
20
+ export { LocalStorageProvider, useLocalStorage };
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxTdG9yYWdlQ29udGV4dC5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9sb2NhbFN0b3JhZ2VDb250ZXh0L2xvY2FsU3RvcmFnZUNvbnRleHQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlRXZlbnRMaXN0ZW5lciB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvbG9jYWxTdG9yYWdlRXZlbnRMaXN0ZW5lcic7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VLZXlzIH0gZnJvbSAnLi9sb2NhbFN0b3JhZ2VLZXlzJztcbmV4cG9ydCB7IExvY2FsU3RvcmFnZUtleXMgfTtcbmludGVyZmFjZSBMb2NhbFN0b3JhZ2VDb250ZXh0VHlwZSB7XG4gICAgc2V0SXRlbTogKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICAgIGdldEl0ZW06IChrZXk6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbDtcbiAgICBzZXRTcGlmZnlPbkZlYXR1cmVGbGFnOiAodmFsdWU6IGJvb2xlYW4gfCBudWxsKSA9PiB2b2lkO1xuICAgIGdldFNwaWZmeU9uRmVhdHVyZUZsYWc6ICgpID0+IHN0cmluZyB8IG51bGw7XG4gICAgYXR0YWNoTGlzdGVuZXI6IChsaXN0ZW5lcjogTG9jYWxTdG9yYWdlRXZlbnRMaXN0ZW5lcikgPT4gdm9pZDtcbiAgICBkZXRhY2hMaXN0ZW5lcjogKGxpc3RlbmVyOiBMb2NhbFN0b3JhZ2VFdmVudExpc3RlbmVyKSA9PiB2b2lkO1xuICAgIGlzQXZhaWxhYmxlOiBib29sZWFuO1xufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgTG9jYWxTdG9yYWdlUHJvdmlkZXI6IFJlYWN0LkZDPHtcbiAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCB1c2VMb2NhbFN0b3JhZ2U6ICgpID0+IExvY2FsU3RvcmFnZUNvbnRleHRUeXBlO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUlBLElBQUksMEJBQTBCO0NBQUM7T0FBRztPQUFBO0NBQUE7QUFDbEMsSUFBVyx1QkFBdUI7Q0FBQztPQUFXLE1BQUc7T0FBQSxNQUFBO0NBQUE7QUFDakQsSUFBVyxrQkFBa0IsQ0FBQyxXQUFXLHdCQUFFIn0=